@acorex/cdk 21.0.0-next.50 → 21.0.0-next.51
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.
|
@@ -604,9 +604,7 @@ class AXDragDirective {
|
|
|
604
604
|
this.setPosition(0, 0);
|
|
605
605
|
}
|
|
606
606
|
handlePointerMove(e) {
|
|
607
|
-
if (!this.isDragging() ||
|
|
608
|
-
!isPlatformBrowser(this.platformId) ||
|
|
609
|
-
e.pointerId !== this.activePointerId()) {
|
|
607
|
+
if (!this.isDragging() || !isPlatformBrowser(this.platformId) || e.pointerId !== this.activePointerId()) {
|
|
610
608
|
return;
|
|
611
609
|
}
|
|
612
610
|
e.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-drag-drop.mjs","sources":["../../../../packages/cdk/drag-drop/src/lib/drag-handle.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drop-list.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drag.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drop-zone.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drag-drop.module.ts","../../../../packages/cdk/drag-drop/src/lib/drag-drop.utils.ts","../../../../packages/cdk/drag-drop/src/acorex-cdk-drag-drop.ts"],"sourcesContent":["import { Directive, ElementRef, inject, signal } from '@angular/core';\n\n@Directive({\n selector: '[axDragHandle]',\n})\nexport class AXDragHandleDirective {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly element = signal(this.el.nativeElement);\n}\n","import { NXComponent, NXNativeEvent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { AXDragDirective } from './drag.directive';\n\n/** Describes the cached geometric data of a draggable item within the list. */\ninterface DropListItemData {\n item: AXDragDirective;\n element: HTMLElement;\n initialRect: DOMRect;\n width: number;\n height: number;\n margins: { top: number; bottom: number; left: number; right: number };\n}\n\n/** Event object emitted when an item is dropped into a drop list. */\nexport interface AXDropListDroppedEvent extends NXNativeEvent<AXDropListDirective, MouseEvent> {\n item: AXDragDirective;\n currentIndex: number;\n previousIndex: number;\n container: AXDropListDirective;\n previousContainer: AXDropListDirective;\n}\n\n/**\n * @Directive axDropList\n *\n * Manages a list of draggable items (`axDrag`), enabling sorting within the list\n * and transferring items between compatible lists. It handles the visual shifting\n * of items during a drag operation to provide a clear preview of the drop location.\n *\n * This directive automatically detects `gap` from flexbox/grid layouts and handles\n * items with variable sizes and margins.\n */\n@Directive({\n selector: '[axDropList]',\n exportAs: 'axDropList',\n})\nexport class AXDropListDirective extends NXComponent implements OnInit, AfterContentInit, OnDestroy {\n private readonly _zone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _hostEl = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // --- Public API: Inputs and Outputs ---\n\n /** Boolean input matching the directive selector name for conditional application. */\n axDropList = input(true, { transform: (value: boolean | string) => value === '' || value === true });\n /** Whether sorting within this list is disabled. */\n sortingDisabled = input(false);\n /** The group this drop list belongs to. Dragging is only allowed between lists of the same group. */\n dropListGroup = input<string>();\n /** The layout orientation of the list. */\n dropListOrientation = input<'horizontal' | 'vertical'>('vertical');\n /** Emits when an item is dropped into the list. */\n dropListDropped = output<AXDropListDroppedEvent>();\n\n /** The `axDrag` directives that are direct children of this list. */\n readonly _draggableItems = contentChildren(AXDragDirective, { descendants: false });\n\n // --- Internal State Management ---\n\n /** The native element of the drop list. */\n readonly element = this._hostEl.nativeElement;\n\n /** The draggable item currently being moved over this list. */\n private readonly _activeDragItem = signal<AXDragDirective | null>(null);\n /** The calculated index where the placeholder/item should be. */\n private readonly _placeholderIndex = signal(-1);\n /** A snapshot of the items' data and geometry at the start of the drag. */\n private readonly _cachedItems = signal<readonly DropListItemData[]>([]);\n /** The list's initial bounding box, used to calculate scroll delta. */\n private readonly _listInitialRect = signal<DOMRect | null>(null);\n /** The detected `gap` of the list for the current orientation. */\n private readonly _listGap = signal(0);\n\n /** A signal-based alias for the orientation input for internal use. */\n private readonly _orientation = this.dropListOrientation;\n\n /** DOM placeholder element for inter-list drags */\n private _placeholderElement: HTMLElement | null = null;\n\n ngOnInit(): void {\n if (isPlatformBrowser(this._platformId)) {\n this.element.dataset['axDropList'] = 'true';\n this.element.classList.add('ax-drop-list-sorting-transition');\n // Store reference to this directive instance on the element for drag directive access\n (this.element as HTMLElement & { __axContext__?: AXDropListDirective })['__axContext__'] = this;\n }\n }\n\n ngAfterContentInit(): void {\n this._cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n // Clean up placeholder element if directive destroyed during drag\n this._removePlaceholderElement();\n }\n\n // --- Public Methods (for internal library use) ---\n\n /** Checks if the given drag item is the one currently active in this list. */\n isDragActiveForThisList(dragItem: AXDragDirective): boolean {\n return this._activeDragItem() === dragItem;\n }\n\n /**\n * Prepares the list for sorting when a drag operation starts from within this list.\n * @param dragItem The item that is being dragged.\n */\n prepareSort(dragItem: AXDragDirective): void {\n if (!this.axDropList() || this.sortingDisabled() || this._activeDragItem() || dragItem.dragDisabled()) return;\n\n this._activeDragItem.set(dragItem);\n this.element.classList.add('ax-drop-list-sorting-active');\n\n requestAnimationFrame(() => {\n this._zone.run(() => {\n this._cacheGeometry();\n const placeholderIdx = this._cachedItems().findIndex((data) => data.item === dragItem);\n this._placeholderIndex.set(placeholderIdx);\n });\n });\n }\n\n /**\n * Prepares the list for receiving an item that started dragging from another list.\n * @param dragItem The item entering this list.\n */\n enter(dragItem: AXDragDirective): void {\n if (!this.axDropList() || this.sortingDisabled() || this.isDragActiveForThisList(dragItem)) return;\n\n // Clean up any existing placeholder from previous list\n this._removePlaceholderElement();\n\n this._activeDragItem.set(dragItem);\n this.element.classList.add('ax-drop-list-sorting-active');\n requestAnimationFrame(() => this._zone.run(() => this._cacheGeometry()));\n }\n\n /**\n * Calculates the new placeholder index based on the pointer's position and applies visual shifts.\n * @param event The pointer move event.\n * @param dragItem The item being dragged.\n */\n sort(event: PointerEvent, dragItem: AXDragDirective): void {\n if (\n !this.axDropList() ||\n !this.isDragActiveForThisList(dragItem) ||\n this.sortingDisabled() ||\n !this._listInitialRect()\n )\n return;\n\n const pointerPosition = this._orientation() === 'vertical' ? event.clientY : event.clientX;\n const newPlaceholderIndex = this._calculatePlaceholderIndex(pointerPosition);\n\n if (this._placeholderIndex() !== newPlaceholderIndex) {\n this._placeholderIndex.set(newPlaceholderIndex);\n this._applyVisualShifts();\n }\n }\n\n /**\n * Finalizes the drop, emits the drop event, and resets the list's state.\n * @param event The pointer up event.\n * @param droppedItem The item that was dropped.\n * @param sourceList The list where the drag originated.\n */\n finalizeSort(event: PointerEvent, droppedItem: AXDragDirective, sourceList: AXDropListDirective): void {\n if (!this.axDropList() || !this.isDragActiveForThisList(droppedItem) || this.sortingDisabled()) {\n this.resetSortStateAndStyles(sourceList);\n return;\n }\n\n const activeItem = this._activeDragItem();\n const targetSlotIndex = this._placeholderIndex();\n if (!activeItem || targetSlotIndex === -1) {\n this.resetSortStateAndStyles(sourceList);\n return;\n }\n\n const previousIndex = sourceList._cachedItems().findIndex((d) => d.item === activeItem);\n // Adjust the index for array mutation if moving an item to a later position in the same list.\n const currentIndex =\n sourceList === this && previousIndex !== -1 && targetSlotIndex > previousIndex\n ? targetSlotIndex - 1\n : targetSlotIndex;\n\n this.dropListDropped.emit({\n nativeEvent: event,\n sender: this,\n item: activeItem,\n previousIndex,\n currentIndex,\n container: this,\n previousContainer: sourceList,\n });\n\n this.resetSortStateAndStyles(sourceList);\n }\n\n /** Resets the transforms on all items and cancels the current sort operation. */\n cancelSort(dragItem?: AXDragDirective): void {\n if (dragItem && !this.isDragActiveForThisList(dragItem)) return;\n this._resetAllTransforms();\n this.resetSortState();\n }\n\n /** Resets transforms but keeps the active state, used when moving between lists. */\n cancelSortPreview(): void {\n if (!this._activeDragItem()) return;\n this._resetAllTransforms();\n const originalIndex = this._cachedItems().findIndex((d) => d.item === this._activeDragItem());\n this._placeholderIndex.set(originalIndex > -1 ? originalIndex : -1);\n }\n\n // --- Private Helper Methods ---\n\n /** Caches the geometry of the list and its items at the start of a drag. */\n private _cacheGeometry(): void {\n this._listInitialRect.set(this.element.getBoundingClientRect());\n this._detectAndCacheListGap();\n\n const items = this._draggableItems().map((itemDraggable) => {\n const el = itemDraggable.element();\n const style = window.getComputedStyle(el);\n const rect = el.getBoundingClientRect();\n return {\n item: itemDraggable,\n element: el,\n initialRect: rect,\n width: rect.width,\n height: rect.height,\n margins: {\n top: parseFloat(style.marginTop),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft),\n right: parseFloat(style.marginRight),\n },\n };\n });\n this._cachedItems.set(items);\n }\n\n /** Detects and caches the `gap` property from the list's computed styles. */\n private _detectAndCacheListGap(): void {\n const listStyle = window.getComputedStyle(this.element);\n const gapValue = listStyle.getPropertyValue('gap');\n if (gapValue && gapValue !== 'normal') {\n const gapParts = gapValue.split(' ');\n const rowGap = parseFloat(gapParts[0]);\n const columnGap = parseFloat(gapParts[1] || gapParts[0]);\n this._listGap.set(this._orientation() === 'vertical' ? rowGap : columnGap);\n } else {\n this._listGap.set(0);\n }\n }\n\n /**\n * Determines the new placeholder index by comparing the pointer position against the\n * midpoints of the other items in the list.\n * @param pointerPosition The clientX or clientY of the pointer.\n * @returns The calculated placeholder index.\n */\n private _calculatePlaceholderIndex(pointerPosition: number): number {\n const activeItem = this._activeDragItem();\n const listRect = this._listInitialRect();\n if (!activeItem || !listRect) return -1;\n\n const cachedItems = this._cachedItems();\n const originalIndex = cachedItems.findIndex((d) => d.item === activeItem);\n const siblings = cachedItems.filter((d) => d.item !== activeItem);\n const scrollDelta =\n this._orientation() === 'vertical'\n ? this.element.getBoundingClientRect().top - listRect.top\n : this.element.getBoundingClientRect().left - listRect.left;\n\n let newIndexInSiblings = -1;\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n const itemMidPoint =\n (this._orientation() === 'vertical' ? sibling.initialRect.top : sibling.initialRect.left) +\n scrollDelta +\n (this._orientation() === 'vertical' ? sibling.height : sibling.width) / 2;\n\n if (pointerPosition < itemMidPoint) {\n newIndexInSiblings = i;\n break;\n }\n }\n\n if (newIndexInSiblings === -1) {\n newIndexInSiblings = siblings.length;\n }\n\n // Map the index from the 'siblings' array back to the original `_cachedItems` array.\n const potentialPlaceholderIndex =\n originalIndex > -1 && newIndexInSiblings >= originalIndex ? newIndexInSiblings + 1 : newIndexInSiblings;\n\n // A drag starting from outside the list doesn't have an original index.\n if (originalIndex === -1) {\n return potentialPlaceholderIndex;\n }\n\n // --- New logic: Prevent crossing disabled items ---\n const start = Math.min(originalIndex, potentialPlaceholderIndex);\n const end = Math.max(originalIndex, potentialPlaceholderIndex);\n\n for (let i = start; i < end; i++) {\n const itemData = cachedItems[i];\n if (itemData.item !== activeItem && itemData.item.dragDisabled()) {\n // We've hit a disabled \"wall\". Stop the placeholder at the boundary.\n if (potentialPlaceholderIndex > originalIndex) {\n return i; // Dragging down/right: stop *before* the wall.\n } else {\n return i + 1; // Dragging up/left: stop *after* the wall.\n }\n }\n }\n return potentialPlaceholderIndex;\n }\n\n /** Applies visual shifts - uses placeholder for inter-list, transforms for intra-list. */\n private _applyVisualShifts(): void {\n const activeItem = this._activeDragItem();\n const originalIndex = this._cachedItems().findIndex((d) => d.item === activeItem);\n const isIntraListDrag = originalIndex > -1;\n const placeholderIndex = this._placeholderIndex();\n\n // Check if this is an \"onto-node\" drop list (no items, just a drop target)\n const isOntoNodeList = this.element.dataset['dropType'] === 'onto-node';\n\n if (!isIntraListDrag && activeItem && !isOntoNodeList && this._cachedItems().length > 0) {\n // --- INTER-LIST DRAG: Use DOM placeholder for reorder lists with items ---\n this._updatePlaceholderElement(activeItem, placeholderIndex);\n } else {\n // --- INTRA-LIST DRAG: Use transforms (works well for same-list reordering) ---\n this._removePlaceholderElement();\n\n const getItemSpace = (itemData: DropListItemData) =>\n this._orientation() === 'vertical'\n ? itemData.height + itemData.margins.top + itemData.margins.bottom\n : itemData.width + itemData.margins.left + itemData.margins.right;\n\n const draggedItemSize = isIntraListDrag ? getItemSpace(this._cachedItems()[originalIndex]) : 0;\n\n this._cachedItems().forEach((data, index) => {\n if (data.item.dragDisabled()) {\n this._renderer.removeStyle(data.element, 'transform');\n return;\n }\n const transform = this._calculateTransform(index, originalIndex, draggedItemSize, getItemSpace);\n this._renderer.setStyle(\n data.element,\n 'transform',\n transform ? `${this._orientation() === 'vertical' ? 'translateY' : 'translateX'}(${transform}px)` : '',\n );\n });\n }\n }\n\n /** Creates or moves the placeholder element for inter-list drags */\n private _updatePlaceholderElement(activeItem: AXDragDirective, targetIndex: number): void {\n const rect = activeItem.elementRect();\n if (!rect) return;\n\n // Create placeholder as a clone of the dragged element\n if (!this._placeholderElement) {\n // Clone the entire dragged element\n const sourceElement = activeItem.element();\n this._placeholderElement = sourceElement.cloneNode(true) as HTMLElement;\n \n // Mark it as a placeholder\n this._renderer.addClass(this._placeholderElement, 'ax-drop-placeholder');\n this._renderer.addClass(this._placeholderElement, 'ax-drag-placeholder');\n \n // Prevent interaction with cloned content\n this._renderer.setStyle(this._placeholderElement, 'pointerEvents', 'none');\n \n // Add faded styling to indicate it's a placeholder\n this._renderer.setStyle(this._placeholderElement, 'opacity', '0.4');\n this._renderer.setStyle(this._placeholderElement, 'transition', 'all 200ms ease');\n }\n\n // Insert/move placeholder at target index\n const items = this._cachedItems();\n if (targetIndex >= 0 && targetIndex < items.length) {\n const targetItem = items[targetIndex];\n if (targetItem && targetItem.element) {\n this._renderer.insertBefore(this.element, this._placeholderElement, targetItem.element);\n } else {\n // Fallback: append at end if target item invalid\n this._renderer.appendChild(this.element, this._placeholderElement);\n }\n } else {\n // Insert at end\n this._renderer.appendChild(this.element, this._placeholderElement);\n }\n }\n\n /** Removes the placeholder element if it exists */\n private _removePlaceholderElement(): void {\n if (this._placeholderElement) {\n this._renderer.removeChild(this.element, this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n\n /**\n * Calculates the required transform in pixels for a single item.\n * @param index The index of the item to transform.\n * @param originalIndex The original index of the dragged item (-1 if from another list).\n * @param draggedItemSize The size (including margins) of the item being dragged.\n * @param getItemSpace A helper function to get an item's size including margins.\n * @returns The transform value in pixels.\n */\n private _calculateTransform(\n index: number,\n originalIndex: number,\n draggedItemSize: number,\n getItemSpace: (item: DropListItemData) => number,\n ): number {\n const targetIndex = this._placeholderIndex();\n const listGap = this._listGap();\n\n if (originalIndex > -1) {\n // --- Intra-list Drag ---\n if (index === originalIndex) {\n // The dragged item moves by the sum of the sizes of the items it passes over, PLUS the gaps between them.\n let offset = 0;\n if (targetIndex > originalIndex) {\n // Dragging down/right\n for (let i = originalIndex + 1; i < targetIndex; i++) {\n offset += getItemSpace(this._cachedItems()[i]) + listGap;\n }\n } else {\n // Dragging up/left\n for (let i = targetIndex; i < originalIndex; i++) {\n offset -= getItemSpace(this._cachedItems()[i]) + listGap;\n }\n }\n return offset;\n } else {\n // It's a sibling item that needs to make space.\n // It moves by the size of the dragged item, plus ONE gap to fill the void.\n const shift = draggedItemSize + listGap;\n if (originalIndex < targetIndex && index > originalIndex && index < targetIndex) {\n return -shift;\n } else if (originalIndex > targetIndex && index >= targetIndex && index < originalIndex) {\n return shift;\n }\n }\n } else {\n // --- Inter-list Drag (from another list) ---\n if (index >= targetIndex) {\n // An item from another list enters. Siblings shift by its size plus ONE gap.\n return draggedItemSize + listGap;\n }\n }\n return 0;\n }\n\n /** Resets the state of this list and the source list after a drop. */\n private resetSortStateAndStyles(sourceList: AXDropListDirective): void {\n const listsToReset = new Set([this, sourceList]);\n listsToReset.forEach((list) => {\n if (list) {\n list._resetAllTransforms();\n list.resetSortState();\n }\n });\n }\n\n /** Removes all `transform` styles from the items in this list. */\n private _resetAllTransforms(): void {\n this._cachedItems().forEach((data) => this._renderer.setStyle(data.element, 'transform', ''));\n this._removePlaceholderElement(); // Clean up inter-list placeholder\n }\n\n /** Resets the internal state of the directive to its initial values. */\n resetSortState(): void {\n this.element.classList.remove('ax-drop-list-sorting-active');\n this._activeDragItem.set(null);\n this._cachedItems.set([]);\n this._placeholderIndex.set(-1);\n this._listInitialRect.set(null);\n this._listGap.set(0);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectorRef,\n DOCUMENT,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n RendererStyleFlags2,\n TemplateRef,\n ViewContainerRef,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n} from '@angular/core';\nimport { clamp } from 'lodash-es';\nimport { AXDragHandleDirective } from './drag-handle.directive';\nimport { AXDropListDirective } from './drop-list.directive';\nimport { AXDropZoneDirective } from './drop-zone.directive';\n\ntype AXPositionType = { x: number; y: number };\n\n// Zone detection constants for nested drop lists (tree nodes)\nconst ZONE_TOP_THRESHOLD = 0.3; // Top 30% triggers reorder BEFORE\nconst ZONE_BOTTOM_THRESHOLD = 0.7; // Bottom 30% triggers reorder AFTER\n// Middle 40% (between thresholds) triggers drop INTO\n\n@Directive({\n selector: '[axDrag]',\n})\nexport class AXDragDirective implements OnInit, OnDestroy {\n private zone = inject(NgZone);\n private document = inject(DOCUMENT);\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private handleDirective = contentChild(AXDragHandleDirective);\n\n axDrag = input(true, { transform: (value: boolean | string) => value === '' || value === true });\n dragData = input();\n dragDisabled = input(false);\n dragTransition = input(true);\n dragElementClone = input(false);\n dropZoneGroup = input<string>();\n dragStartDelay = input<number>();\n dragResetOnDblClick = input(true);\n dragLockAxis = input<'x' | 'y' | null>(null);\n dragClonedTemplate = input<TemplateRef<unknown>>();\n dragCursor = input<'move' | 'grab' | 'none'>('move');\n dragBoundary = input<string | ElementRef<HTMLElement> | HTMLElement>();\n dragTransitionDuration = input<number>(150);\n\n dragPositionChanged = output<AXPositionType>();\n\n isMoving = signal<boolean>(false);\n clonedElement = signal<HTMLElement | null>(null);\n currentAxis = signal<AXPositionType>({ x: 0, y: 0 });\n currentCloneAxis = signal<AXPositionType>({ x: 0, y: 0 });\n transitionDuration = linkedSignal(() => this.dragTransitionDuration());\n readonly element = signal<HTMLElement>(this.el.nativeElement);\n private dragStartTime = signal<number>(0);\n private isDragging = signal<boolean>(false);\n private elementOpacity = signal<string>('1');\n private movedAfterDelay = signal<boolean>(false);\n private activePointerId = signal<number | null>(null);\n private prevDropZone = signal<AXDropZoneDirective | null>(null);\n private dragStartOffset = signal<AXPositionType>({ x: 0, y: 0 });\n private clonePointerOffset = signal<AXPositionType>({ x: 0, y: 0 });\n private clonedElementViewRef = signal<EmbeddedViewRef<unknown> | null>(null);\n private rafId: number | null = null;\n private pendingPointerEvent: PointerEvent | null = null;\n\n private _parentDropList = inject(AXDropListDirective, { optional: true, skipSelf: true, host: false });\n private _currentDropList = signal<AXDropListDirective | null>(null);\n readonly createCloneElement = computed<boolean>(() => this.dragElementClone() || !!this._parentDropList);\n\n private boundaryElement = computed<HTMLElement | null>(() => {\n const boundary = this.dragBoundary();\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.document.querySelector<HTMLElement>(boundary);\n }\n return boundary instanceof ElementRef ? boundary.nativeElement : boundary;\n });\n\n readonly elementRect = computed(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return this.element().getBoundingClientRect();\n });\n\n private boundaryRect = computed(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return this.boundaryElement()?.getBoundingClientRect();\n });\n\n private handle = computed(() => this.handleDirective()?.element() ?? this.element());\n\n private boundHandleDblClick = this.handleDblClick.bind(this);\n private boundHandlePointerUp = this.handlePointerUp.bind(this);\n private boundHandlePointerDown = this.handlePointerDown.bind(this);\n private boundHandlePointerMove = this.handlePointerMove.bind(this);\n private listenersAttached = signal<HTMLElement | null>(null);\n\n #dragDisabledEffect = effect(() => {\n if (this.dragCursor() === 'none') {\n return;\n }\n if (!this.dragDisabled()) {\n this.renderer.setStyle(this.handle(), 'cursor', this.dragCursor());\n this.renderer.setStyle(this.handle(), 'touch-action', 'none');\n } else {\n this.renderer.removeStyle(this.handle(), 'cursor');\n this.renderer.removeStyle(this.handle(), 'touch-action');\n }\n });\n\n #handleChangeEffect = effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const currentHandle = this.handle();\n const previousHandle = this.listenersAttached();\n\n // Remove listeners from previous handle if it changed\n if (previousHandle && previousHandle !== currentHandle) {\n previousHandle.removeEventListener('dblclick', this.boundHandleDblClick);\n previousHandle.removeEventListener('pointerdown', this.boundHandlePointerDown);\n }\n\n // Attach listeners to new handle\n if (currentHandle && currentHandle !== previousHandle) {\n this.zone.runOutsideAngular(() => {\n currentHandle.addEventListener('dblclick', this.boundHandleDblClick);\n currentHandle.addEventListener('pointerdown', this.boundHandlePointerDown, { passive: false });\n });\n this.listenersAttached.set(currentHandle);\n }\n });\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this._parentDropList) {\n this.setElementTransition(this.element());\n }\n this.renderer.setStyle(this.element(), 'z-index', '1');\n this.elementOpacity.set(getComputedStyle(this.element()).opacity);\n }\n }\n\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n const handle = this.listenersAttached();\n if (handle) {\n handle.removeEventListener('dblclick', this.boundHandleDblClick);\n handle.removeEventListener('pointerdown', this.boundHandlePointerDown);\n }\n this.removeDocumentListeners();\n if (this.createCloneElement()) {\n this.removeCloneElement();\n }\n if (this._parentDropList && this.isDragging()) {\n this._parentDropList.cancelSort();\n }\n }\n }\n\n private setElementTransition(element: HTMLElement) {\n this.renderer.setStyle(element, 'transition-property', 'transform, opacity, translate');\n this.renderer.setStyle(\n element,\n 'transition-duration',\n `var(--ax-sys-transition-duration,${this.transitionDuration()}ms)`,\n );\n this.renderer.setStyle(element, 'transition-timing-function', 'var(--ax-sys-transition-timing-function)');\n }\n\n private removeElementTransition(element: HTMLElement) {\n this.renderer.setStyle(element, 'transition-property', 'opacity');\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (!isPlatformBrowser(this.platformId)) return;\n if (!this.axDrag() || this.dragDisabled() || e.button !== 0 || this._parentDropList?.sortingDisabled()) return;\n\n this.isDragging.set(true);\n this.movedAfterDelay.set(false);\n\n if (this.dragCursor() === 'move') {\n this.renderer.setStyle(this.handle(), 'cursor', 'move');\n } else if (this.dragCursor() === 'grab') {\n this.renderer.setStyle(this.handle(), 'cursor', 'grabbing');\n }\n\n this.dragStartOffset.set({ x: e.clientX - this.currentAxis().x, y: e.clientY - this.currentAxis().y });\n this.renderer.setStyle(this.handle(), 'userSelect', 'none');\n this.activePointerId.set(e.pointerId);\n this.addDocumentListeners();\n\n this.dragStartTime.set(Date.now());\n }\n\n private handleDblClick() {\n if (!this.dragResetOnDblClick() || this.dragDisabled()) return;\n this.setPosition(0, 0);\n }\n\n private handlePointerMove(e: PointerEvent) {\n if (\n !this.isDragging() ||\n !isPlatformBrowser(this.platformId) ||\n e.pointerId !== this.activePointerId()\n ) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.isMoving()) {\n const delay = this.dragStartDelay() ?? 0;\n // FIX: Delay logic was inverted\n if (Date.now() - this.dragStartTime() < delay) {\n return; // Still waiting for delay\n }\n\n this.isMoving.set(true);\n this.handle().setPointerCapture(e.pointerId);\n this.startDrag(e);\n }\n\n // Run position updates outside Angular zone for better performance\n this.zone.runOutsideAngular(() => {\n if (this.createCloneElement()) {\n const newCloneX = e.clientX - this.clonePointerOffset().x;\n const newCloneY = e.clientY - this.clonePointerOffset().y;\n this.setClonePosition(newCloneX, newCloneY);\n } else {\n const newX = e.clientX - this.dragStartOffset().x;\n const newY = e.clientY - this.dragStartOffset().y;\n this.setPosition(newX, newY);\n }\n });\n\n // Throttle drop list interactions using requestAnimationFrame\n if (this._parentDropList) {\n this.pendingPointerEvent = e;\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingPointerEvent) {\n this.handleDropListInteractions(this.pendingPointerEvent);\n this.pendingPointerEvent = null;\n }\n this.rafId = null;\n });\n }\n } else {\n this.dropZoneHoverHandler(e);\n }\n }\n\n private startDrag(e: PointerEvent) {\n // Add CDK-style classes\n this.renderer.addClass(this.element(), 'ax-dragging');\n this.renderer.addClass(this.element(), 'ax-drag-placeholder');\n\n if (this._parentDropList) {\n this._currentDropList.set(this._parentDropList);\n this._parentDropList.prepareSort(this);\n } else {\n this.dropZoneHoverHandler(e);\n }\n\n if (this.createCloneElement()) {\n const elementRect = this.element().getBoundingClientRect();\n this.clonePointerOffset.set({\n x: e.clientX - elementRect.left,\n y: e.clientY - elementRect.top,\n });\n const clone = this.createCloneElementHandler(this.element());\n if (clone) {\n this.renderer.addClass(clone, 'ax-drag-preview');\n this.renderer.addClass(clone, 'ax-dragging');\n }\n }\n }\n\n private handlePointerUp(e: PointerEvent) {\n if (e.pointerId !== this.activePointerId() || !isPlatformBrowser(this.platformId) || !this.isDragging()) {\n return;\n }\n\n if (this.dragCursor() === 'grab') {\n this.renderer.setStyle(this.handle(), 'cursor', 'grab');\n }\n\n const wasMoving = this.isMoving();\n this.isMoving.set(false);\n this.isDragging.set(false);\n\n // Remove CDK-style classes\n this.renderer.removeClass(this.element(), 'ax-dragging');\n this.renderer.removeClass(this.element(), 'ax-drag-placeholder');\n\n if (!wasMoving) {\n this.activePointerId.set(null);\n this.removeDocumentListeners();\n this._currentDropList.set(null);\n this.renderer.removeStyle(this.handle(), 'userSelect');\n return;\n }\n this.preventClicking();\n\n const transform = this.element().style.transform;\n let x = 0;\n let y = 0;\n if (transform) {\n x = Number(transform.split('translateX(')[1]?.split('px)')[0]);\n y = Number(transform.split('translateY(')[1]?.split('px)')[0]);\n }\n\n const droppedIntoList = this._currentDropList();\n if (droppedIntoList && this._parentDropList) {\n droppedIntoList.finalizeSort(e, this, this._parentDropList);\n } else if (this._parentDropList) {\n this._parentDropList.cancelSort(this);\n } else {\n this.dropZoneDropHandler(e);\n }\n\n // Cancel any pending RAF callbacks\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingPointerEvent = null;\n\n this.activePointerId.set(null);\n this.removeDocumentListeners();\n this._currentDropList.set(null);\n this.renderer.removeStyle(this.handle(), 'userSelect');\n\n if (this.createCloneElement()) {\n const listUnderPointer = this.getDropListFromPoint(e.clientX, e.clientY);\n this.removeCloneElementWithAnimation(x || 0, y || 0, listUnderPointer);\n } else {\n this.renderer.setStyle(this.element(), 'opacity', this.elementOpacity());\n }\n }\n\n private preventClicking() {\n const blockClick = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n this.document.addEventListener('click', blockClick, { capture: true, once: true });\n }\n\n private handleDropListInteractions(e: PointerEvent) {\n const listUnderPointer = this.getDropListFromPoint(e.clientX, e.clientY);\n const previousList = this._currentDropList();\n let targetList: AXDropListDirective | null = null;\n const canDrop = listUnderPointer && this.canDropInList(listUnderPointer);\n\n if (canDrop) {\n targetList = listUnderPointer;\n }\n\n // Update cursor based on whether drop is allowed\n if (listUnderPointer) {\n const cloneEl = this.clonedElement();\n const cursor = canDrop ? 'move' : 'not-allowed';\n if (cloneEl) {\n this.renderer.setStyle(cloneEl, 'cursor', cursor);\n } else {\n this.renderer.setStyle(this.element(), 'cursor', cursor);\n }\n }\n\n if (targetList !== previousList) {\n if (previousList) {\n previousList.cancelSortPreview();\n if (previousList !== this._parentDropList) {\n previousList.resetSortState();\n }\n }\n if (targetList) {\n targetList.enter(this);\n }\n this._currentDropList.set(targetList);\n }\n\n this._currentDropList()?.sort(e, this);\n }\n\n private canDropInList(list: AXDropListDirective): boolean {\n if (!list || list.sortingDisabled() || !this._parentDropList) {\n return false;\n }\n if (list === this._parentDropList) {\n return true;\n }\n const dragGroup = this._parentDropList.dropListGroup();\n const targetGroup = list.dropListGroup();\n\n if (!dragGroup || dragGroup !== targetGroup) {\n return false;\n }\n\n // Check for circular reference (tree-specific validation)\n const draggedNode = this.dragData();\n const targetNodeId = list.element.getAttribute('data-node-id');\n\n if (draggedNode && this.isCircularReference(targetNodeId, draggedNode)) {\n return false;\n }\n\n return true;\n }\n\n private isCircularReference(targetNodeId: string | null, draggedNode: unknown): boolean {\n if (!draggedNode || typeof draggedNode !== 'object') {\n return false;\n }\n\n const node = draggedNode as { id?: string; children?: unknown[] };\n\n // Check if dropping into itself\n if (targetNodeId === node.id) {\n return true;\n }\n\n // Check if targetNodeId is in draggedNode's descendants\n if (!node.children || !Array.isArray(node.children)) {\n return false;\n }\n\n for (const child of node.children) {\n const childNode = child as { id?: string };\n if (childNode.id === targetNodeId) {\n return true;\n }\n if (this.isCircularReference(targetNodeId, child)) {\n return true;\n }\n }\n\n return false;\n }\n\n private dropZoneHoverHandler(e: PointerEvent) {\n const dropZones = this.getDropZonesFromPoint(e.clientX, e.clientY);\n const dropZone = dropZones[0];\n\n if (!dropZone) {\n if (this.prevDropZone()) {\n this.leavePrevDropZone(e);\n }\n return;\n }\n\n if (this.prevDropZone() && this.prevDropZone() !== dropZone) {\n this.leavePrevDropZone(e);\n }\n\n if (this.dropZoneValidation(dropZone) && !dropZone.isHovered()) {\n this.prevDropZone.set(dropZone);\n dropZone.onElementHover.emit({ sender: dropZone, dropped: this, nativeEvent: e, state: 'enter' });\n dropZone.isHovered.set(true);\n }\n }\n\n private dropZoneDropHandler(e: PointerEvent) {\n const dropZones = this.getDropZonesFromPoint(e.clientX, e.clientY);\n const dropZone = dropZones[0];\n if (!this.dropZoneValidation(dropZone)) {\n return;\n }\n dropZone.isHovered.set(false);\n dropZone.onElementDrop.emit({ sender: dropZone, dropped: this, nativeEvent: e });\n }\n\n private getDropZonesFromPoint(x: number, y: number): AXDropZoneDirective[] {\n const elements = this.document.elementsFromPoint(x, y);\n\n return elements\n .filter((el): el is HTMLElement => el instanceof HTMLElement && el.dataset['axDropZone'] === 'true')\n .map((el) => el['__axContext__'] as AXDropZoneDirective);\n }\n\n private getDropListFromPoint(x: number, y: number): AXDropListDirective | null {\n const dropListElements = this.document\n .elementsFromPoint(x, y)\n .filter((el): el is HTMLElement => el instanceof HTMLElement && el.dataset['axDropList'] === 'true');\n\n if (dropListElements.length === 0) {\n return null;\n }\n\n // If only one drop list, use it\n if (dropListElements.length === 1) {\n return dropListElements[0]['__axContext__'] as AXDropListDirective;\n }\n\n // Multiple drop lists detected (nested scenario like tree2)\n // Prioritize based on pointer position and drop type\n const ontoNodeList = dropListElements.find((el) => el.dataset['dropType'] === 'onto-node');\n const reorderList = dropListElements.find((el) => el.dataset['dropType'] !== 'onto-node');\n\n // If no special handling needed, return first\n if (!ontoNodeList || !reorderList) {\n return dropListElements[0]['__axContext__'] as AXDropListDirective;\n }\n\n // Calculate pointer position relative to the \"onto-node\" element\n const ontoNodeRect = ontoNodeList.getBoundingClientRect();\n const relativeY = y - ontoNodeRect.top;\n const heightRatio = relativeY / ontoNodeRect.height;\n\n // Smart zone detection based on pointer position\n if (heightRatio < ZONE_TOP_THRESHOLD || heightRatio > ZONE_BOTTOM_THRESHOLD) {\n // Top or bottom zone: reorder (drop BEFORE/AFTER node)\n return reorderList['__axContext__'] as AXDropListDirective;\n } else {\n // Center zone: onto-node (drop INTO node as child)\n return ontoNodeList['__axContext__'] as AXDropListDirective;\n }\n }\n\n private dropZoneValidation(dropZone: AXDropZoneDirective): boolean {\n if (!dropZone) return false;\n const dragGroup = this.dropZoneGroup();\n const dropGroup = dropZone.dropZoneGroup();\n if (dropGroup && dragGroup !== dropGroup) {\n return false;\n }\n return true;\n }\n\n private leavePrevDropZone(e: PointerEvent) {\n if (this.prevDropZone()) {\n this.prevDropZone().onElementHover.emit({\n dropped: this,\n state: 'leave',\n nativeEvent: e,\n sender: this.prevDropZone(),\n });\n this.prevDropZone().isHovered.set(false);\n this.prevDropZone.set(null);\n }\n }\n\n setPosition(x: number, y: number) {\n let constrainedX = x;\n let constrainedY = y;\n\n const elementRect = this.elementRect();\n const boundaryRect = this.boundaryRect();\n\n if (boundaryRect && elementRect) {\n const minX = boundaryRect.left - elementRect.left;\n const minY = boundaryRect.top - elementRect.top;\n const maxX = minX + boundaryRect.width - elementRect.width;\n const maxY = minY + boundaryRect.height - elementRect.height;\n constrainedX = clamp(x, minX, maxX);\n constrainedY = clamp(y, minY, maxY);\n }\n\n if (this.dragLockAxis() === 'x') constrainedY = this.currentAxis().y;\n if (this.dragLockAxis() === 'y') constrainedX = this.currentAxis().x;\n\n // Direct DOM manipulation without triggering change detection\n this.renderer.setStyle(this.element(), 'translate', `${constrainedX}px ${constrainedY}px`);\n\n // Only update signal and emit if position actually changed significantly (throttle)\n const current = this.currentAxis();\n if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {\n this.currentAxis.set({ x: constrainedX, y: constrainedY });\n this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });\n }\n }\n\n setClonePosition(x: number, y: number) {\n let constrainedX = x;\n let constrainedY = y;\n\n const cloneEl = this.clonedElement();\n const boundaryRect = this.boundaryRect();\n\n if (boundaryRect && cloneEl) {\n const cloneWidth = cloneEl.offsetWidth;\n const cloneHeight = cloneEl.offsetHeight;\n\n constrainedX = clamp(x, boundaryRect.left, boundaryRect.right - cloneWidth);\n constrainedY = clamp(y, boundaryRect.top, boundaryRect.bottom - cloneHeight);\n }\n\n if (this.dragLockAxis() === 'x') constrainedY = this.currentCloneAxis().y;\n if (this.dragLockAxis() === 'y') constrainedX = this.currentCloneAxis().x;\n\n // Direct DOM manipulation without triggering change detection\n this.renderer.setStyle(cloneEl, 'translate', `${constrainedX}px ${constrainedY}px`);\n\n // Only update signal and emit if position actually changed significantly (throttle)\n const current = this.currentCloneAxis();\n if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {\n this.currentCloneAxis.set({ x: constrainedX, y: constrainedY });\n this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });\n }\n }\n\n private createCloneElementHandler(originalElement: HTMLElement): HTMLElement | null {\n if (!isPlatformBrowser(this.platformId)) {\n this.clonedElement.set(null);\n return null;\n }\n\n let clonedElement: HTMLElement;\n const customTemplate = this.dragClonedTemplate();\n\n const applyComputedStylesRecursive = (source: HTMLElement, target: HTMLElement) => {\n if (!isPlatformBrowser(this.platformId)) return;\n const computedStyles = window.getComputedStyle(source);\n\n if (computedStyles.cssText && target.style.cssText !== undefined) {\n let tempCssText = computedStyles.cssText;\n if (target === clonedElement) {\n tempCssText = tempCssText\n .replace(/position:[^;]+;/gi, '')\n .replace(/top:[^;]+;/gi, '')\n .replace(/left:[^;]+;/gi, '')\n .replace(/right:[^;]+;/gi, '')\n .replace(/bottom:[^;]+;/gi, '')\n .replace(/width:[^;]+;/gi, '')\n .replace(/height:[^;]+;/gi, '')\n .replace(/margin[^;]*:[^;]+;/gi, '')\n .replace(/transition[^;]*:[^;]+;/gi, '')\n .replace(/transform:[^;]+;/gi, '')\n .replace(/translate:[^;]+;/gi, '')\n .replace(/z-index:[^;]+;/gi, '')\n .replace(/opacity:[^;]+;/gi, '');\n }\n tempCssText = tempCssText.replace(/pointer-events:[^;]+;/gi, '');\n target.style.cssText = tempCssText;\n } else {\n for (let i = 0; i < computedStyles.length; i++) {\n const propName = computedStyles[i];\n if (propName === 'pointer-events') {\n continue;\n }\n if (\n target === clonedElement &&\n (propName === 'position' ||\n propName === 'top' ||\n propName === 'left' ||\n propName === 'right' ||\n propName === 'bottom' ||\n propName === 'width' ||\n propName === 'height' ||\n propName.startsWith('margin') ||\n propName.startsWith('transition') ||\n propName === 'transform' ||\n propName === 'translate' ||\n propName === 'z-index' ||\n propName === 'opacity')\n ) {\n continue;\n }\n try {\n target.style.setProperty(\n propName,\n computedStyles.getPropertyValue(propName),\n computedStyles.getPropertyPriority(propName),\n );\n } catch {\n // Some CSS properties cannot be set directly, skip silently\n }\n }\n }\n const sourceChildren = Array.from(source.children);\n const targetChildren = Array.from(target.children);\n for (let i = 0; i < sourceChildren.length; i++) {\n if (sourceChildren[i] instanceof HTMLElement && targetChildren[i] instanceof HTMLElement) {\n applyComputedStylesRecursive(sourceChildren[i] as HTMLElement, targetChildren[i] as HTMLElement);\n }\n }\n };\n\n if (customTemplate) {\n const viewRef = this.viewContainerRef.createEmbeddedView(customTemplate);\n this.clonedElementViewRef.set(viewRef);\n\n if (viewRef.rootNodes.length > 0 && viewRef.rootNodes[0] instanceof HTMLElement) {\n clonedElement = viewRef.rootNodes[0] as HTMLElement;\n\n const viewIndex = this.viewContainerRef.indexOf(viewRef);\n if (viewIndex !== -1) {\n this.viewContainerRef.detach(viewIndex);\n }\n } else {\n if (this.clonedElementViewRef()) {\n this.clonedElementViewRef().destroy();\n this.clonedElementViewRef.set(null);\n }\n console.warn(\n 'AXDragDirective: dragClonedTemplate did not produce a valid HTMLElement root node. Falling back to default cloning.',\n );\n clonedElement = originalElement.cloneNode(true) as HTMLElement;\n applyComputedStylesRecursive(originalElement, clonedElement);\n }\n } else {\n clonedElement = originalElement.cloneNode(true) as HTMLElement;\n applyComputedStylesRecursive(originalElement, clonedElement);\n }\n\n if (clonedElement.id) {\n this.renderer.removeAttribute(clonedElement, 'id');\n }\n this.renderer.setStyle(originalElement, 'opacity', '0.5');\n\n const originalRect = originalElement.getBoundingClientRect();\n this.renderer.setStyle(clonedElement, 'position', 'fixed', RendererStyleFlags2.Important);\n this.renderer.setStyle(clonedElement, 'left', '0px');\n this.renderer.setStyle(clonedElement, 'top', '0px');\n if (!customTemplate) {\n this.renderer.setStyle(clonedElement, 'width', `${originalRect.width}px`);\n this.renderer.setStyle(clonedElement, 'height', `${originalRect.height}px`);\n }\n this.renderer.setStyle(clonedElement, 'margin', '0');\n this.renderer.setStyle(clonedElement, 'box-sizing', 'border-box');\n this.renderer.setStyle(clonedElement, 'opacity', '0.75');\n this.renderer.setStyle(clonedElement, 'z-index', '10000');\n this.renderer.setStyle(clonedElement, 'pointer-events', 'none', RendererStyleFlags2.Important);\n this.renderer.setStyle(clonedElement, 'user-select', 'none');\n this.renderer.setStyle(clonedElement, 'touch-action', 'none');\n\n this.renderer.setStyle(clonedElement, 'translate', `${originalRect.left}px ${originalRect.top}px`);\n this.renderer.removeStyle(clonedElement, 'transition');\n this.renderer.removeStyle(clonedElement, 'transition-property');\n\n this.copyPseudoElementStyles(originalElement, clonedElement, '::before');\n this.copyPseudoElementStyles(originalElement, clonedElement, '::after');\n\n this.renderer.appendChild(this.document.body, clonedElement);\n this.clonedElement.set(clonedElement);\n this.setClonePosition(originalRect.left, originalRect.top);\n\n return clonedElement;\n }\n\n private copyPseudoElementStyles(source: HTMLElement, target: HTMLElement, pseudo: '::before' | '::after'): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const pseudoStyles = window.getComputedStyle(source, pseudo);\n const content = pseudoStyles.getPropertyValue('content');\n const display = pseudoStyles.getPropertyValue('display');\n if (!content || content === 'none' || display === 'none') {\n return;\n }\n const pseudoElement = this.renderer.createElement('span');\n for (let i = 0; i < pseudoStyles.length; i++) {\n const propName = pseudoStyles[i];\n try {\n pseudoElement.style.setProperty(\n propName,\n pseudoStyles.getPropertyValue(propName),\n pseudoStyles.getPropertyPriority(propName),\n );\n } catch (e) {\n // Some properties might fail to set, which is usually fine.\n }\n }\n if (content.startsWith('\"') && content.endsWith('\"')) {\n this.renderer.setProperty(pseudoElement, 'textContent', content.slice(1, -1));\n } else {\n this.renderer.setProperty(pseudoElement, 'textContent', content);\n }\n this.renderer.setStyle(pseudoElement, 'pointer-events', 'none');\n if (pseudo === '::before') {\n this.renderer.insertBefore(target, pseudoElement, target.firstChild);\n } else {\n this.renderer.appendChild(target, pseudoElement);\n }\n }\n\n private removeCloneElementWithAnimation(x: number, y: number, dropList?: AXDropListDirective) {\n dropList?._draggableItems().forEach((item) => {\n this.removeElementTransition(item.element());\n });\n const clone = this.clonedElement();\n if (!clone) return;\n\n this.renderer.setStyle(this.element(), 'opacity', this.elementOpacity());\n\n const elementRect = this.element().getBoundingClientRect();\n if (elementRect) {\n this.setElementTransition(clone);\n this.renderer.setStyle(clone, 'opacity', '0');\n this.setClonePosition(elementRect.left + x, elementRect.top + y);\n }\n\n if (!this.dragTransition()) {\n this.removeCloneElement();\n } else {\n setTimeout(() => {\n this.removeCloneElement();\n dropList?._draggableItems().forEach((item) => {\n this.setElementTransition(item.element());\n });\n }, this.transitionDuration());\n }\n }\n\n private removeCloneElement() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const clone = this.clonedElement();\n if (clone?.parentNode) {\n // Remove classes before removing element\n this.renderer.removeClass(clone, 'ax-drag-preview');\n this.renderer.removeClass(clone, 'ax-dragging');\n this.renderer.removeChild(clone.parentNode, clone);\n }\n this.clonedElement.set(null);\n\n if (this.clonedElementViewRef()) {\n this.clonedElementViewRef().destroy();\n this.clonedElementViewRef.set(null);\n }\n this.cdr.markForCheck();\n }\n\n private addDocumentListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n this.zone.runOutsideAngular(() => {\n this.document.addEventListener('pointermove', this.boundHandlePointerMove, { passive: false });\n this.document.addEventListener('pointerup', this.boundHandlePointerUp);\n this.document.addEventListener('pointercancel', this.boundHandlePointerUp);\n });\n }\n\n private removeDocumentListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n this.zone.runOutsideAngular(() => {\n this.document.removeEventListener('pointermove', this.boundHandlePointerMove);\n this.document.removeEventListener('pointerup', this.boundHandlePointerUp);\n this.document.removeEventListener('pointercancel', this.boundHandlePointerUp);\n });\n }\n}\n","import { NXComponent, NXNativeEvent } from '@acorex/cdk/common';\nimport { Directive, OnInit, input, output, signal } from '@angular/core';\nimport { AXDragDirective } from './drag.directive';\n\nexport interface AXDropZoneDropEvent extends NXNativeEvent<AXDropZoneDirective, MouseEvent> {\n dropped: AXDragDirective;\n}\nexport type AXDropZoneHoverEvent = AXDropZoneDropEvent & { state: 'enter' | 'leave' };\n\n@Directive({\n selector: '[axDropZone]',\n exportAs: 'axDropZone',\n})\nexport class AXDropZoneDirective extends NXComponent implements OnInit {\n dropZoneGroup = input<string>();\n\n isHovered = signal(false);\n readonly element = signal(this.nativeElement);\n\n onElementDrop = output<AXDropZoneDropEvent>();\n onElementHover = output<AXDropZoneHoverEvent>();\n\n ngOnInit(): void {\n this.element().dataset['axDropZone'] = 'true';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXDragHandleDirective } from './drag-handle.directive';\nimport { AXDragDirective } from './drag.directive';\nimport { AXDropListDirective } from './drop-list.directive';\nimport { AXDropZoneDirective } from './drop-zone.directive';\n\nconst COMPONENT = [AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective];\n\n@NgModule({\n imports: [...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDragDropModule {}\n","import { clamp } from 'lodash-es';\n\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nexport function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex: number): void {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n\n if (from === to) {\n return;\n }\n\n const target = array[from];\n const delta = to < from ? -1 : 1;\n\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n\n array[to] = target;\n}\n\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nexport function transferArrayItem<T = any>(\n currentArray: T[],\n targetArray: T[],\n currentIndex: number,\n targetIndex: number,\n): void {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-drag-drop.mjs","sources":["../../../../packages/cdk/drag-drop/src/lib/drag-handle.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drop-list.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drag.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drop-zone.directive.ts","../../../../packages/cdk/drag-drop/src/lib/drag-drop.module.ts","../../../../packages/cdk/drag-drop/src/lib/drag-drop.utils.ts","../../../../packages/cdk/drag-drop/src/acorex-cdk-drag-drop.ts"],"sourcesContent":["import { Directive, ElementRef, inject, signal } from '@angular/core';\n\n@Directive({\n selector: '[axDragHandle]',\n})\nexport class AXDragHandleDirective {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly element = signal(this.el.nativeElement);\n}\n","import { NXComponent, NXNativeEvent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { AXDragDirective } from './drag.directive';\n\n/** Describes the cached geometric data of a draggable item within the list. */\ninterface DropListItemData {\n item: AXDragDirective;\n element: HTMLElement;\n initialRect: DOMRect;\n width: number;\n height: number;\n margins: { top: number; bottom: number; left: number; right: number };\n}\n\n/** Event object emitted when an item is dropped into a drop list. */\nexport interface AXDropListDroppedEvent extends NXNativeEvent<AXDropListDirective, MouseEvent> {\n item: AXDragDirective;\n currentIndex: number;\n previousIndex: number;\n container: AXDropListDirective;\n previousContainer: AXDropListDirective;\n}\n\n/**\n * @Directive axDropList\n *\n * Manages a list of draggable items (`axDrag`), enabling sorting within the list\n * and transferring items between compatible lists. It handles the visual shifting\n * of items during a drag operation to provide a clear preview of the drop location.\n *\n * This directive automatically detects `gap` from flexbox/grid layouts and handles\n * items with variable sizes and margins.\n */\n@Directive({\n selector: '[axDropList]',\n exportAs: 'axDropList',\n})\nexport class AXDropListDirective extends NXComponent implements OnInit, AfterContentInit, OnDestroy {\n private readonly _zone = inject(NgZone);\n private readonly _renderer = inject(Renderer2);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _hostEl = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // --- Public API: Inputs and Outputs ---\n\n /** Boolean input matching the directive selector name for conditional application. */\n axDropList = input(true, { transform: (value: boolean | string) => value === '' || value === true });\n /** Whether sorting within this list is disabled. */\n sortingDisabled = input(false);\n /** The group this drop list belongs to. Dragging is only allowed between lists of the same group. */\n dropListGroup = input<string>();\n /** The layout orientation of the list. */\n dropListOrientation = input<'horizontal' | 'vertical'>('vertical');\n /** Emits when an item is dropped into the list. */\n dropListDropped = output<AXDropListDroppedEvent>();\n\n /** The `axDrag` directives that are direct children of this list. */\n readonly _draggableItems = contentChildren(AXDragDirective, { descendants: false });\n\n // --- Internal State Management ---\n\n /** The native element of the drop list. */\n readonly element = this._hostEl.nativeElement;\n\n /** The draggable item currently being moved over this list. */\n private readonly _activeDragItem = signal<AXDragDirective | null>(null);\n /** The calculated index where the placeholder/item should be. */\n private readonly _placeholderIndex = signal(-1);\n /** A snapshot of the items' data and geometry at the start of the drag. */\n private readonly _cachedItems = signal<readonly DropListItemData[]>([]);\n /** The list's initial bounding box, used to calculate scroll delta. */\n private readonly _listInitialRect = signal<DOMRect | null>(null);\n /** The detected `gap` of the list for the current orientation. */\n private readonly _listGap = signal(0);\n\n /** A signal-based alias for the orientation input for internal use. */\n private readonly _orientation = this.dropListOrientation;\n\n /** DOM placeholder element for inter-list drags */\n private _placeholderElement: HTMLElement | null = null;\n\n ngOnInit(): void {\n if (isPlatformBrowser(this._platformId)) {\n this.element.dataset['axDropList'] = 'true';\n this.element.classList.add('ax-drop-list-sorting-transition');\n // Store reference to this directive instance on the element for drag directive access\n (this.element as HTMLElement & { __axContext__?: AXDropListDirective })['__axContext__'] = this;\n }\n }\n\n ngAfterContentInit(): void {\n this._cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n // Clean up placeholder element if directive destroyed during drag\n this._removePlaceholderElement();\n }\n\n // --- Public Methods (for internal library use) ---\n\n /** Checks if the given drag item is the one currently active in this list. */\n isDragActiveForThisList(dragItem: AXDragDirective): boolean {\n return this._activeDragItem() === dragItem;\n }\n\n /**\n * Prepares the list for sorting when a drag operation starts from within this list.\n * @param dragItem The item that is being dragged.\n */\n prepareSort(dragItem: AXDragDirective): void {\n if (!this.axDropList() || this.sortingDisabled() || this._activeDragItem() || dragItem.dragDisabled()) return;\n\n this._activeDragItem.set(dragItem);\n this.element.classList.add('ax-drop-list-sorting-active');\n\n requestAnimationFrame(() => {\n this._zone.run(() => {\n this._cacheGeometry();\n const placeholderIdx = this._cachedItems().findIndex((data) => data.item === dragItem);\n this._placeholderIndex.set(placeholderIdx);\n });\n });\n }\n\n /**\n * Prepares the list for receiving an item that started dragging from another list.\n * @param dragItem The item entering this list.\n */\n enter(dragItem: AXDragDirective): void {\n if (!this.axDropList() || this.sortingDisabled() || this.isDragActiveForThisList(dragItem)) return;\n\n // Clean up any existing placeholder from previous list\n this._removePlaceholderElement();\n\n this._activeDragItem.set(dragItem);\n this.element.classList.add('ax-drop-list-sorting-active');\n requestAnimationFrame(() => this._zone.run(() => this._cacheGeometry()));\n }\n\n /**\n * Calculates the new placeholder index based on the pointer's position and applies visual shifts.\n * @param event The pointer move event.\n * @param dragItem The item being dragged.\n */\n sort(event: PointerEvent, dragItem: AXDragDirective): void {\n if (\n !this.axDropList() ||\n !this.isDragActiveForThisList(dragItem) ||\n this.sortingDisabled() ||\n !this._listInitialRect()\n )\n return;\n\n const pointerPosition = this._orientation() === 'vertical' ? event.clientY : event.clientX;\n const newPlaceholderIndex = this._calculatePlaceholderIndex(pointerPosition);\n\n if (this._placeholderIndex() !== newPlaceholderIndex) {\n this._placeholderIndex.set(newPlaceholderIndex);\n this._applyVisualShifts();\n }\n }\n\n /**\n * Finalizes the drop, emits the drop event, and resets the list's state.\n * @param event The pointer up event.\n * @param droppedItem The item that was dropped.\n * @param sourceList The list where the drag originated.\n */\n finalizeSort(event: PointerEvent, droppedItem: AXDragDirective, sourceList: AXDropListDirective): void {\n if (!this.axDropList() || !this.isDragActiveForThisList(droppedItem) || this.sortingDisabled()) {\n this.resetSortStateAndStyles(sourceList);\n return;\n }\n\n const activeItem = this._activeDragItem();\n const targetSlotIndex = this._placeholderIndex();\n if (!activeItem || targetSlotIndex === -1) {\n this.resetSortStateAndStyles(sourceList);\n return;\n }\n\n const previousIndex = sourceList._cachedItems().findIndex((d) => d.item === activeItem);\n // Adjust the index for array mutation if moving an item to a later position in the same list.\n const currentIndex =\n sourceList === this && previousIndex !== -1 && targetSlotIndex > previousIndex\n ? targetSlotIndex - 1\n : targetSlotIndex;\n\n this.dropListDropped.emit({\n nativeEvent: event,\n sender: this,\n item: activeItem,\n previousIndex,\n currentIndex,\n container: this,\n previousContainer: sourceList,\n });\n\n this.resetSortStateAndStyles(sourceList);\n }\n\n /** Resets the transforms on all items and cancels the current sort operation. */\n cancelSort(dragItem?: AXDragDirective): void {\n if (dragItem && !this.isDragActiveForThisList(dragItem)) return;\n this._resetAllTransforms();\n this.resetSortState();\n }\n\n /** Resets transforms but keeps the active state, used when moving between lists. */\n cancelSortPreview(): void {\n if (!this._activeDragItem()) return;\n this._resetAllTransforms();\n const originalIndex = this._cachedItems().findIndex((d) => d.item === this._activeDragItem());\n this._placeholderIndex.set(originalIndex > -1 ? originalIndex : -1);\n }\n\n // --- Private Helper Methods ---\n\n /** Caches the geometry of the list and its items at the start of a drag. */\n private _cacheGeometry(): void {\n this._listInitialRect.set(this.element.getBoundingClientRect());\n this._detectAndCacheListGap();\n\n const items = this._draggableItems().map((itemDraggable) => {\n const el = itemDraggable.element();\n const style = window.getComputedStyle(el);\n const rect = el.getBoundingClientRect();\n return {\n item: itemDraggable,\n element: el,\n initialRect: rect,\n width: rect.width,\n height: rect.height,\n margins: {\n top: parseFloat(style.marginTop),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft),\n right: parseFloat(style.marginRight),\n },\n };\n });\n this._cachedItems.set(items);\n }\n\n /** Detects and caches the `gap` property from the list's computed styles. */\n private _detectAndCacheListGap(): void {\n const listStyle = window.getComputedStyle(this.element);\n const gapValue = listStyle.getPropertyValue('gap');\n if (gapValue && gapValue !== 'normal') {\n const gapParts = gapValue.split(' ');\n const rowGap = parseFloat(gapParts[0]);\n const columnGap = parseFloat(gapParts[1] || gapParts[0]);\n this._listGap.set(this._orientation() === 'vertical' ? rowGap : columnGap);\n } else {\n this._listGap.set(0);\n }\n }\n\n /**\n * Determines the new placeholder index by comparing the pointer position against the\n * midpoints of the other items in the list.\n * @param pointerPosition The clientX or clientY of the pointer.\n * @returns The calculated placeholder index.\n */\n private _calculatePlaceholderIndex(pointerPosition: number): number {\n const activeItem = this._activeDragItem();\n const listRect = this._listInitialRect();\n if (!activeItem || !listRect) return -1;\n\n const cachedItems = this._cachedItems();\n const originalIndex = cachedItems.findIndex((d) => d.item === activeItem);\n const siblings = cachedItems.filter((d) => d.item !== activeItem);\n const scrollDelta =\n this._orientation() === 'vertical'\n ? this.element.getBoundingClientRect().top - listRect.top\n : this.element.getBoundingClientRect().left - listRect.left;\n\n let newIndexInSiblings = -1;\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n const itemMidPoint =\n (this._orientation() === 'vertical' ? sibling.initialRect.top : sibling.initialRect.left) +\n scrollDelta +\n (this._orientation() === 'vertical' ? sibling.height : sibling.width) / 2;\n\n if (pointerPosition < itemMidPoint) {\n newIndexInSiblings = i;\n break;\n }\n }\n\n if (newIndexInSiblings === -1) {\n newIndexInSiblings = siblings.length;\n }\n\n // Map the index from the 'siblings' array back to the original `_cachedItems` array.\n const potentialPlaceholderIndex =\n originalIndex > -1 && newIndexInSiblings >= originalIndex ? newIndexInSiblings + 1 : newIndexInSiblings;\n\n // A drag starting from outside the list doesn't have an original index.\n if (originalIndex === -1) {\n return potentialPlaceholderIndex;\n }\n\n // --- New logic: Prevent crossing disabled items ---\n const start = Math.min(originalIndex, potentialPlaceholderIndex);\n const end = Math.max(originalIndex, potentialPlaceholderIndex);\n\n for (let i = start; i < end; i++) {\n const itemData = cachedItems[i];\n if (itemData.item !== activeItem && itemData.item.dragDisabled()) {\n // We've hit a disabled \"wall\". Stop the placeholder at the boundary.\n if (potentialPlaceholderIndex > originalIndex) {\n return i; // Dragging down/right: stop *before* the wall.\n } else {\n return i + 1; // Dragging up/left: stop *after* the wall.\n }\n }\n }\n return potentialPlaceholderIndex;\n }\n\n /** Applies visual shifts - uses placeholder for inter-list, transforms for intra-list. */\n private _applyVisualShifts(): void {\n const activeItem = this._activeDragItem();\n const originalIndex = this._cachedItems().findIndex((d) => d.item === activeItem);\n const isIntraListDrag = originalIndex > -1;\n const placeholderIndex = this._placeholderIndex();\n\n // Check if this is an \"onto-node\" drop list (no items, just a drop target)\n const isOntoNodeList = this.element.dataset['dropType'] === 'onto-node';\n\n if (!isIntraListDrag && activeItem && !isOntoNodeList && this._cachedItems().length > 0) {\n // --- INTER-LIST DRAG: Use DOM placeholder for reorder lists with items ---\n this._updatePlaceholderElement(activeItem, placeholderIndex);\n } else {\n // --- INTRA-LIST DRAG: Use transforms (works well for same-list reordering) ---\n this._removePlaceholderElement();\n\n const getItemSpace = (itemData: DropListItemData) =>\n this._orientation() === 'vertical'\n ? itemData.height + itemData.margins.top + itemData.margins.bottom\n : itemData.width + itemData.margins.left + itemData.margins.right;\n\n const draggedItemSize = isIntraListDrag ? getItemSpace(this._cachedItems()[originalIndex]) : 0;\n\n this._cachedItems().forEach((data, index) => {\n if (data.item.dragDisabled()) {\n this._renderer.removeStyle(data.element, 'transform');\n return;\n }\n const transform = this._calculateTransform(index, originalIndex, draggedItemSize, getItemSpace);\n this._renderer.setStyle(\n data.element,\n 'transform',\n transform ? `${this._orientation() === 'vertical' ? 'translateY' : 'translateX'}(${transform}px)` : '',\n );\n });\n }\n }\n\n /** Creates or moves the placeholder element for inter-list drags */\n private _updatePlaceholderElement(activeItem: AXDragDirective, targetIndex: number): void {\n const rect = activeItem.elementRect();\n if (!rect) return;\n\n // Create placeholder as a clone of the dragged element\n if (!this._placeholderElement) {\n // Clone the entire dragged element\n const sourceElement = activeItem.element();\n this._placeholderElement = sourceElement.cloneNode(true) as HTMLElement;\n \n // Mark it as a placeholder\n this._renderer.addClass(this._placeholderElement, 'ax-drop-placeholder');\n this._renderer.addClass(this._placeholderElement, 'ax-drag-placeholder');\n \n // Prevent interaction with cloned content\n this._renderer.setStyle(this._placeholderElement, 'pointerEvents', 'none');\n \n // Add faded styling to indicate it's a placeholder\n this._renderer.setStyle(this._placeholderElement, 'opacity', '0.4');\n this._renderer.setStyle(this._placeholderElement, 'transition', 'all 200ms ease');\n }\n\n // Insert/move placeholder at target index\n const items = this._cachedItems();\n if (targetIndex >= 0 && targetIndex < items.length) {\n const targetItem = items[targetIndex];\n if (targetItem && targetItem.element) {\n this._renderer.insertBefore(this.element, this._placeholderElement, targetItem.element);\n } else {\n // Fallback: append at end if target item invalid\n this._renderer.appendChild(this.element, this._placeholderElement);\n }\n } else {\n // Insert at end\n this._renderer.appendChild(this.element, this._placeholderElement);\n }\n }\n\n /** Removes the placeholder element if it exists */\n private _removePlaceholderElement(): void {\n if (this._placeholderElement) {\n this._renderer.removeChild(this.element, this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n\n /**\n * Calculates the required transform in pixels for a single item.\n * @param index The index of the item to transform.\n * @param originalIndex The original index of the dragged item (-1 if from another list).\n * @param draggedItemSize The size (including margins) of the item being dragged.\n * @param getItemSpace A helper function to get an item's size including margins.\n * @returns The transform value in pixels.\n */\n private _calculateTransform(\n index: number,\n originalIndex: number,\n draggedItemSize: number,\n getItemSpace: (item: DropListItemData) => number,\n ): number {\n const targetIndex = this._placeholderIndex();\n const listGap = this._listGap();\n\n if (originalIndex > -1) {\n // --- Intra-list Drag ---\n if (index === originalIndex) {\n // The dragged item moves by the sum of the sizes of the items it passes over, PLUS the gaps between them.\n let offset = 0;\n if (targetIndex > originalIndex) {\n // Dragging down/right\n for (let i = originalIndex + 1; i < targetIndex; i++) {\n offset += getItemSpace(this._cachedItems()[i]) + listGap;\n }\n } else {\n // Dragging up/left\n for (let i = targetIndex; i < originalIndex; i++) {\n offset -= getItemSpace(this._cachedItems()[i]) + listGap;\n }\n }\n return offset;\n } else {\n // It's a sibling item that needs to make space.\n // It moves by the size of the dragged item, plus ONE gap to fill the void.\n const shift = draggedItemSize + listGap;\n if (originalIndex < targetIndex && index > originalIndex && index < targetIndex) {\n return -shift;\n } else if (originalIndex > targetIndex && index >= targetIndex && index < originalIndex) {\n return shift;\n }\n }\n } else {\n // --- Inter-list Drag (from another list) ---\n if (index >= targetIndex) {\n // An item from another list enters. Siblings shift by its size plus ONE gap.\n return draggedItemSize + listGap;\n }\n }\n return 0;\n }\n\n /** Resets the state of this list and the source list after a drop. */\n private resetSortStateAndStyles(sourceList: AXDropListDirective): void {\n const listsToReset = new Set([this, sourceList]);\n listsToReset.forEach((list) => {\n if (list) {\n list._resetAllTransforms();\n list.resetSortState();\n }\n });\n }\n\n /** Removes all `transform` styles from the items in this list. */\n private _resetAllTransforms(): void {\n this._cachedItems().forEach((data) => this._renderer.setStyle(data.element, 'transform', ''));\n this._removePlaceholderElement(); // Clean up inter-list placeholder\n }\n\n /** Resets the internal state of the directive to its initial values. */\n resetSortState(): void {\n this.element.classList.remove('ax-drop-list-sorting-active');\n this._activeDragItem.set(null);\n this._cachedItems.set([]);\n this._placeholderIndex.set(-1);\n this._listInitialRect.set(null);\n this._listGap.set(0);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectorRef,\n DOCUMENT,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n RendererStyleFlags2,\n TemplateRef,\n ViewContainerRef,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n} from '@angular/core';\nimport { clamp } from 'lodash-es';\nimport { AXDragHandleDirective } from './drag-handle.directive';\nimport { AXDropListDirective } from './drop-list.directive';\nimport { AXDropZoneDirective } from './drop-zone.directive';\n\ntype AXPositionType = { x: number; y: number };\n\n// Zone detection constants for nested drop lists (tree nodes)\nconst ZONE_TOP_THRESHOLD = 0.3; // Top 30% triggers reorder BEFORE\nconst ZONE_BOTTOM_THRESHOLD = 0.7; // Bottom 30% triggers reorder AFTER\n// Middle 40% (between thresholds) triggers drop INTO\n\n@Directive({\n selector: '[axDrag]',\n})\nexport class AXDragDirective implements OnInit, OnDestroy {\n private zone = inject(NgZone);\n private document = inject(DOCUMENT);\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private handleDirective = contentChild(AXDragHandleDirective);\n\n axDrag = input(true, { transform: (value: boolean | string) => value === '' || value === true });\n dragData = input();\n dragDisabled = input(false);\n dragTransition = input(true);\n dragElementClone = input(false);\n dropZoneGroup = input<string>();\n dragStartDelay = input<number>();\n dragResetOnDblClick = input(true);\n dragLockAxis = input<'x' | 'y' | null>(null);\n dragClonedTemplate = input<TemplateRef<unknown>>();\n dragCursor = input<'move' | 'grab' | 'none'>('move');\n dragBoundary = input<string | ElementRef<HTMLElement> | HTMLElement>();\n dragTransitionDuration = input<number>(150);\n\n dragPositionChanged = output<AXPositionType>();\n\n isMoving = signal<boolean>(false);\n clonedElement = signal<HTMLElement | null>(null);\n currentAxis = signal<AXPositionType>({ x: 0, y: 0 });\n currentCloneAxis = signal<AXPositionType>({ x: 0, y: 0 });\n transitionDuration = linkedSignal(() => this.dragTransitionDuration());\n readonly element = signal<HTMLElement>(this.el.nativeElement);\n private dragStartTime = signal<number>(0);\n private isDragging = signal<boolean>(false);\n private elementOpacity = signal<string>('1');\n private movedAfterDelay = signal<boolean>(false);\n private activePointerId = signal<number | null>(null);\n private prevDropZone = signal<AXDropZoneDirective | null>(null);\n private dragStartOffset = signal<AXPositionType>({ x: 0, y: 0 });\n private clonePointerOffset = signal<AXPositionType>({ x: 0, y: 0 });\n private clonedElementViewRef = signal<EmbeddedViewRef<unknown> | null>(null);\n private rafId: number | null = null;\n private pendingPointerEvent: PointerEvent | null = null;\n\n private _parentDropList = inject(AXDropListDirective, { optional: true, skipSelf: true, host: false });\n private _currentDropList = signal<AXDropListDirective | null>(null);\n readonly createCloneElement = computed<boolean>(() => this.dragElementClone() || !!this._parentDropList);\n\n private boundaryElement = computed<HTMLElement | null>(() => {\n const boundary = this.dragBoundary();\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.document.querySelector<HTMLElement>(boundary);\n }\n return boundary instanceof ElementRef ? boundary.nativeElement : boundary;\n });\n\n readonly elementRect = computed(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return this.element().getBoundingClientRect();\n });\n\n private boundaryRect = computed(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return this.boundaryElement()?.getBoundingClientRect();\n });\n\n private handle = computed(() => this.handleDirective()?.element() ?? this.element());\n\n private boundHandleDblClick = this.handleDblClick.bind(this);\n private boundHandlePointerUp = this.handlePointerUp.bind(this);\n private boundHandlePointerDown = this.handlePointerDown.bind(this);\n private boundHandlePointerMove = this.handlePointerMove.bind(this);\n private listenersAttached = signal<HTMLElement | null>(null);\n\n #dragDisabledEffect = effect(() => {\n if (this.dragCursor() === 'none') {\n return;\n }\n if (!this.dragDisabled()) {\n this.renderer.setStyle(this.handle(), 'cursor', this.dragCursor());\n this.renderer.setStyle(this.handle(), 'touch-action', 'none');\n } else {\n this.renderer.removeStyle(this.handle(), 'cursor');\n this.renderer.removeStyle(this.handle(), 'touch-action');\n }\n });\n\n #handleChangeEffect = effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const currentHandle = this.handle();\n const previousHandle = this.listenersAttached();\n\n // Remove listeners from previous handle if it changed\n if (previousHandle && previousHandle !== currentHandle) {\n previousHandle.removeEventListener('dblclick', this.boundHandleDblClick);\n previousHandle.removeEventListener('pointerdown', this.boundHandlePointerDown);\n }\n\n // Attach listeners to new handle\n if (currentHandle && currentHandle !== previousHandle) {\n this.zone.runOutsideAngular(() => {\n currentHandle.addEventListener('dblclick', this.boundHandleDblClick);\n currentHandle.addEventListener('pointerdown', this.boundHandlePointerDown, { passive: false });\n });\n this.listenersAttached.set(currentHandle);\n }\n });\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this._parentDropList) {\n this.setElementTransition(this.element());\n }\n this.renderer.setStyle(this.element(), 'z-index', '1');\n this.elementOpacity.set(getComputedStyle(this.element()).opacity);\n }\n }\n\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n const handle = this.listenersAttached();\n if (handle) {\n handle.removeEventListener('dblclick', this.boundHandleDblClick);\n handle.removeEventListener('pointerdown', this.boundHandlePointerDown);\n }\n this.removeDocumentListeners();\n if (this.createCloneElement()) {\n this.removeCloneElement();\n }\n if (this._parentDropList && this.isDragging()) {\n this._parentDropList.cancelSort();\n }\n }\n }\n\n private setElementTransition(element: HTMLElement) {\n this.renderer.setStyle(element, 'transition-property', 'transform, opacity, translate');\n this.renderer.setStyle(\n element,\n 'transition-duration',\n `var(--ax-sys-transition-duration,${this.transitionDuration()}ms)`,\n );\n this.renderer.setStyle(element, 'transition-timing-function', 'var(--ax-sys-transition-timing-function)');\n }\n\n private removeElementTransition(element: HTMLElement) {\n this.renderer.setStyle(element, 'transition-property', 'opacity');\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (!isPlatformBrowser(this.platformId)) return;\n if (!this.axDrag() || this.dragDisabled() || e.button !== 0 || this._parentDropList?.sortingDisabled()) return;\n\n this.isDragging.set(true);\n this.movedAfterDelay.set(false);\n\n if (this.dragCursor() === 'move') {\n this.renderer.setStyle(this.handle(), 'cursor', 'move');\n } else if (this.dragCursor() === 'grab') {\n this.renderer.setStyle(this.handle(), 'cursor', 'grabbing');\n }\n\n this.dragStartOffset.set({ x: e.clientX - this.currentAxis().x, y: e.clientY - this.currentAxis().y });\n this.renderer.setStyle(this.handle(), 'userSelect', 'none');\n this.activePointerId.set(e.pointerId);\n this.addDocumentListeners();\n\n this.dragStartTime.set(Date.now());\n }\n\n private handleDblClick() {\n if (!this.dragResetOnDblClick() || this.dragDisabled()) return;\n this.setPosition(0, 0);\n }\n\n private handlePointerMove(e: PointerEvent) {\n if (!this.isDragging() || !isPlatformBrowser(this.platformId) || e.pointerId !== this.activePointerId()) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.isMoving()) {\n const delay = this.dragStartDelay() ?? 0;\n // FIX: Delay logic was inverted\n if (Date.now() - this.dragStartTime() < delay) {\n return; // Still waiting for delay\n }\n\n this.isMoving.set(true);\n this.handle().setPointerCapture(e.pointerId);\n this.startDrag(e);\n }\n\n // Run position updates outside Angular zone for better performance\n this.zone.runOutsideAngular(() => {\n if (this.createCloneElement()) {\n const newCloneX = e.clientX - this.clonePointerOffset().x;\n const newCloneY = e.clientY - this.clonePointerOffset().y;\n this.setClonePosition(newCloneX, newCloneY);\n } else {\n const newX = e.clientX - this.dragStartOffset().x;\n const newY = e.clientY - this.dragStartOffset().y;\n this.setPosition(newX, newY);\n }\n });\n\n // Throttle drop list interactions using requestAnimationFrame\n if (this._parentDropList) {\n this.pendingPointerEvent = e;\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingPointerEvent) {\n this.handleDropListInteractions(this.pendingPointerEvent);\n this.pendingPointerEvent = null;\n }\n this.rafId = null;\n });\n }\n } else {\n this.dropZoneHoverHandler(e);\n }\n }\n\n private startDrag(e: PointerEvent) {\n // Add CDK-style classes\n this.renderer.addClass(this.element(), 'ax-dragging');\n this.renderer.addClass(this.element(), 'ax-drag-placeholder');\n\n if (this._parentDropList) {\n this._currentDropList.set(this._parentDropList);\n this._parentDropList.prepareSort(this);\n } else {\n this.dropZoneHoverHandler(e);\n }\n\n if (this.createCloneElement()) {\n const elementRect = this.element().getBoundingClientRect();\n this.clonePointerOffset.set({\n x: e.clientX - elementRect.left,\n y: e.clientY - elementRect.top,\n });\n const clone = this.createCloneElementHandler(this.element());\n if (clone) {\n this.renderer.addClass(clone, 'ax-drag-preview');\n this.renderer.addClass(clone, 'ax-dragging');\n }\n }\n }\n\n private handlePointerUp(e: PointerEvent) {\n if (e.pointerId !== this.activePointerId() || !isPlatformBrowser(this.platformId) || !this.isDragging()) {\n return;\n }\n\n if (this.dragCursor() === 'grab') {\n this.renderer.setStyle(this.handle(), 'cursor', 'grab');\n }\n\n const wasMoving = this.isMoving();\n this.isMoving.set(false);\n this.isDragging.set(false);\n\n // Remove CDK-style classes\n this.renderer.removeClass(this.element(), 'ax-dragging');\n this.renderer.removeClass(this.element(), 'ax-drag-placeholder');\n\n if (!wasMoving) {\n this.activePointerId.set(null);\n this.removeDocumentListeners();\n this._currentDropList.set(null);\n this.renderer.removeStyle(this.handle(), 'userSelect');\n return;\n }\n this.preventClicking();\n\n const transform = this.element().style.transform;\n let x = 0;\n let y = 0;\n if (transform) {\n x = Number(transform.split('translateX(')[1]?.split('px)')[0]);\n y = Number(transform.split('translateY(')[1]?.split('px)')[0]);\n }\n\n const droppedIntoList = this._currentDropList();\n if (droppedIntoList && this._parentDropList) {\n droppedIntoList.finalizeSort(e, this, this._parentDropList);\n } else if (this._parentDropList) {\n this._parentDropList.cancelSort(this);\n } else {\n this.dropZoneDropHandler(e);\n }\n\n // Cancel any pending RAF callbacks\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingPointerEvent = null;\n\n this.activePointerId.set(null);\n this.removeDocumentListeners();\n this._currentDropList.set(null);\n this.renderer.removeStyle(this.handle(), 'userSelect');\n\n if (this.createCloneElement()) {\n const listUnderPointer = this.getDropListFromPoint(e.clientX, e.clientY);\n this.removeCloneElementWithAnimation(x || 0, y || 0, listUnderPointer);\n } else {\n this.renderer.setStyle(this.element(), 'opacity', this.elementOpacity());\n }\n }\n\n private preventClicking() {\n const blockClick = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n this.document.addEventListener('click', blockClick, { capture: true, once: true });\n }\n\n private handleDropListInteractions(e: PointerEvent) {\n const listUnderPointer = this.getDropListFromPoint(e.clientX, e.clientY);\n const previousList = this._currentDropList();\n let targetList: AXDropListDirective | null = null;\n const canDrop = listUnderPointer && this.canDropInList(listUnderPointer);\n\n if (canDrop) {\n targetList = listUnderPointer;\n }\n\n // Update cursor based on whether drop is allowed\n if (listUnderPointer) {\n const cloneEl = this.clonedElement();\n const cursor = canDrop ? 'move' : 'not-allowed';\n if (cloneEl) {\n this.renderer.setStyle(cloneEl, 'cursor', cursor);\n } else {\n this.renderer.setStyle(this.element(), 'cursor', cursor);\n }\n }\n\n if (targetList !== previousList) {\n if (previousList) {\n previousList.cancelSortPreview();\n if (previousList !== this._parentDropList) {\n previousList.resetSortState();\n }\n }\n if (targetList) {\n targetList.enter(this);\n }\n this._currentDropList.set(targetList);\n }\n\n this._currentDropList()?.sort(e, this);\n }\n\n private canDropInList(list: AXDropListDirective): boolean {\n if (!list || list.sortingDisabled() || !this._parentDropList) {\n return false;\n }\n if (list === this._parentDropList) {\n return true;\n }\n const dragGroup = this._parentDropList.dropListGroup();\n const targetGroup = list.dropListGroup();\n\n if (!dragGroup || dragGroup !== targetGroup) {\n return false;\n }\n\n // Check for circular reference (tree-specific validation)\n const draggedNode = this.dragData();\n const targetNodeId = list.element.getAttribute('data-node-id');\n\n if (draggedNode && this.isCircularReference(targetNodeId, draggedNode)) {\n return false;\n }\n\n return true;\n }\n\n private isCircularReference(targetNodeId: string | null, draggedNode: unknown): boolean {\n if (!draggedNode || typeof draggedNode !== 'object') {\n return false;\n }\n\n const node = draggedNode as { id?: string; children?: unknown[] };\n\n // Check if dropping into itself\n if (targetNodeId === node.id) {\n return true;\n }\n\n // Check if targetNodeId is in draggedNode's descendants\n if (!node.children || !Array.isArray(node.children)) {\n return false;\n }\n\n for (const child of node.children) {\n const childNode = child as { id?: string };\n if (childNode.id === targetNodeId) {\n return true;\n }\n if (this.isCircularReference(targetNodeId, child)) {\n return true;\n }\n }\n\n return false;\n }\n\n private dropZoneHoverHandler(e: PointerEvent) {\n const dropZones = this.getDropZonesFromPoint(e.clientX, e.clientY);\n const dropZone = dropZones[0];\n\n if (!dropZone) {\n if (this.prevDropZone()) {\n this.leavePrevDropZone(e);\n }\n return;\n }\n\n if (this.prevDropZone() && this.prevDropZone() !== dropZone) {\n this.leavePrevDropZone(e);\n }\n\n if (this.dropZoneValidation(dropZone) && !dropZone.isHovered()) {\n this.prevDropZone.set(dropZone);\n dropZone.onElementHover.emit({ sender: dropZone, dropped: this, nativeEvent: e, state: 'enter' });\n dropZone.isHovered.set(true);\n }\n }\n\n private dropZoneDropHandler(e: PointerEvent) {\n const dropZones = this.getDropZonesFromPoint(e.clientX, e.clientY);\n const dropZone = dropZones[0];\n if (!this.dropZoneValidation(dropZone)) {\n return;\n }\n dropZone.isHovered.set(false);\n dropZone.onElementDrop.emit({ sender: dropZone, dropped: this, nativeEvent: e });\n }\n\n private getDropZonesFromPoint(x: number, y: number): AXDropZoneDirective[] {\n const elements = this.document.elementsFromPoint(x, y);\n\n return elements\n .filter((el): el is HTMLElement => el instanceof HTMLElement && el.dataset['axDropZone'] === 'true')\n .map((el) => el['__axContext__'] as AXDropZoneDirective);\n }\n\n private getDropListFromPoint(x: number, y: number): AXDropListDirective | null {\n const dropListElements = this.document\n .elementsFromPoint(x, y)\n .filter((el): el is HTMLElement => el instanceof HTMLElement && el.dataset['axDropList'] === 'true');\n\n if (dropListElements.length === 0) {\n return null;\n }\n\n // If only one drop list, use it\n if (dropListElements.length === 1) {\n return dropListElements[0]['__axContext__'] as AXDropListDirective;\n }\n\n // Multiple drop lists detected (nested scenario like tree2)\n // Prioritize based on pointer position and drop type\n const ontoNodeList = dropListElements.find((el) => el.dataset['dropType'] === 'onto-node');\n const reorderList = dropListElements.find((el) => el.dataset['dropType'] !== 'onto-node');\n\n // If no special handling needed, return first\n if (!ontoNodeList || !reorderList) {\n return dropListElements[0]['__axContext__'] as AXDropListDirective;\n }\n\n // Calculate pointer position relative to the \"onto-node\" element\n const ontoNodeRect = ontoNodeList.getBoundingClientRect();\n const relativeY = y - ontoNodeRect.top;\n const heightRatio = relativeY / ontoNodeRect.height;\n\n // Smart zone detection based on pointer position\n if (heightRatio < ZONE_TOP_THRESHOLD || heightRatio > ZONE_BOTTOM_THRESHOLD) {\n // Top or bottom zone: reorder (drop BEFORE/AFTER node)\n return reorderList['__axContext__'] as AXDropListDirective;\n } else {\n // Center zone: onto-node (drop INTO node as child)\n return ontoNodeList['__axContext__'] as AXDropListDirective;\n }\n }\n\n private dropZoneValidation(dropZone: AXDropZoneDirective): boolean {\n if (!dropZone) return false;\n const dragGroup = this.dropZoneGroup();\n const dropGroup = dropZone.dropZoneGroup();\n if (dropGroup && dragGroup !== dropGroup) {\n return false;\n }\n return true;\n }\n\n private leavePrevDropZone(e: PointerEvent) {\n if (this.prevDropZone()) {\n this.prevDropZone().onElementHover.emit({\n dropped: this,\n state: 'leave',\n nativeEvent: e,\n sender: this.prevDropZone(),\n });\n this.prevDropZone().isHovered.set(false);\n this.prevDropZone.set(null);\n }\n }\n\n setPosition(x: number, y: number) {\n let constrainedX = x;\n let constrainedY = y;\n\n const elementRect = this.elementRect();\n const boundaryRect = this.boundaryRect();\n\n if (boundaryRect && elementRect) {\n const minX = boundaryRect.left - elementRect.left;\n const minY = boundaryRect.top - elementRect.top;\n const maxX = minX + boundaryRect.width - elementRect.width;\n const maxY = minY + boundaryRect.height - elementRect.height;\n constrainedX = clamp(x, minX, maxX);\n constrainedY = clamp(y, minY, maxY);\n }\n\n if (this.dragLockAxis() === 'x') constrainedY = this.currentAxis().y;\n if (this.dragLockAxis() === 'y') constrainedX = this.currentAxis().x;\n\n // Direct DOM manipulation without triggering change detection\n this.renderer.setStyle(this.element(), 'translate', `${constrainedX}px ${constrainedY}px`);\n\n // Only update signal and emit if position actually changed significantly (throttle)\n const current = this.currentAxis();\n if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {\n this.currentAxis.set({ x: constrainedX, y: constrainedY });\n this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });\n }\n }\n\n setClonePosition(x: number, y: number) {\n let constrainedX = x;\n let constrainedY = y;\n\n const cloneEl = this.clonedElement();\n const boundaryRect = this.boundaryRect();\n\n if (boundaryRect && cloneEl) {\n const cloneWidth = cloneEl.offsetWidth;\n const cloneHeight = cloneEl.offsetHeight;\n\n constrainedX = clamp(x, boundaryRect.left, boundaryRect.right - cloneWidth);\n constrainedY = clamp(y, boundaryRect.top, boundaryRect.bottom - cloneHeight);\n }\n\n if (this.dragLockAxis() === 'x') constrainedY = this.currentCloneAxis().y;\n if (this.dragLockAxis() === 'y') constrainedX = this.currentCloneAxis().x;\n\n // Direct DOM manipulation without triggering change detection\n this.renderer.setStyle(cloneEl, 'translate', `${constrainedX}px ${constrainedY}px`);\n\n // Only update signal and emit if position actually changed significantly (throttle)\n const current = this.currentCloneAxis();\n if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {\n this.currentCloneAxis.set({ x: constrainedX, y: constrainedY });\n this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });\n }\n }\n\n private createCloneElementHandler(originalElement: HTMLElement): HTMLElement | null {\n if (!isPlatformBrowser(this.platformId)) {\n this.clonedElement.set(null);\n return null;\n }\n\n let clonedElement: HTMLElement;\n const customTemplate = this.dragClonedTemplate();\n\n const applyComputedStylesRecursive = (source: HTMLElement, target: HTMLElement) => {\n if (!isPlatformBrowser(this.platformId)) return;\n const computedStyles = window.getComputedStyle(source);\n\n if (computedStyles.cssText && target.style.cssText !== undefined) {\n let tempCssText = computedStyles.cssText;\n if (target === clonedElement) {\n tempCssText = tempCssText\n .replace(/position:[^;]+;/gi, '')\n .replace(/top:[^;]+;/gi, '')\n .replace(/left:[^;]+;/gi, '')\n .replace(/right:[^;]+;/gi, '')\n .replace(/bottom:[^;]+;/gi, '')\n .replace(/width:[^;]+;/gi, '')\n .replace(/height:[^;]+;/gi, '')\n .replace(/margin[^;]*:[^;]+;/gi, '')\n .replace(/transition[^;]*:[^;]+;/gi, '')\n .replace(/transform:[^;]+;/gi, '')\n .replace(/translate:[^;]+;/gi, '')\n .replace(/z-index:[^;]+;/gi, '')\n .replace(/opacity:[^;]+;/gi, '');\n }\n tempCssText = tempCssText.replace(/pointer-events:[^;]+;/gi, '');\n target.style.cssText = tempCssText;\n } else {\n for (let i = 0; i < computedStyles.length; i++) {\n const propName = computedStyles[i];\n if (propName === 'pointer-events') {\n continue;\n }\n if (\n target === clonedElement &&\n (propName === 'position' ||\n propName === 'top' ||\n propName === 'left' ||\n propName === 'right' ||\n propName === 'bottom' ||\n propName === 'width' ||\n propName === 'height' ||\n propName.startsWith('margin') ||\n propName.startsWith('transition') ||\n propName === 'transform' ||\n propName === 'translate' ||\n propName === 'z-index' ||\n propName === 'opacity')\n ) {\n continue;\n }\n try {\n target.style.setProperty(\n propName,\n computedStyles.getPropertyValue(propName),\n computedStyles.getPropertyPriority(propName),\n );\n } catch {\n // Some CSS properties cannot be set directly, skip silently\n }\n }\n }\n const sourceChildren = Array.from(source.children);\n const targetChildren = Array.from(target.children);\n for (let i = 0; i < sourceChildren.length; i++) {\n if (sourceChildren[i] instanceof HTMLElement && targetChildren[i] instanceof HTMLElement) {\n applyComputedStylesRecursive(sourceChildren[i] as HTMLElement, targetChildren[i] as HTMLElement);\n }\n }\n };\n\n if (customTemplate) {\n const viewRef = this.viewContainerRef.createEmbeddedView(customTemplate);\n this.clonedElementViewRef.set(viewRef);\n\n if (viewRef.rootNodes.length > 0 && viewRef.rootNodes[0] instanceof HTMLElement) {\n clonedElement = viewRef.rootNodes[0] as HTMLElement;\n\n const viewIndex = this.viewContainerRef.indexOf(viewRef);\n if (viewIndex !== -1) {\n this.viewContainerRef.detach(viewIndex);\n }\n } else {\n if (this.clonedElementViewRef()) {\n this.clonedElementViewRef().destroy();\n this.clonedElementViewRef.set(null);\n }\n console.warn(\n 'AXDragDirective: dragClonedTemplate did not produce a valid HTMLElement root node. Falling back to default cloning.',\n );\n clonedElement = originalElement.cloneNode(true) as HTMLElement;\n applyComputedStylesRecursive(originalElement, clonedElement);\n }\n } else {\n clonedElement = originalElement.cloneNode(true) as HTMLElement;\n applyComputedStylesRecursive(originalElement, clonedElement);\n }\n\n if (clonedElement.id) {\n this.renderer.removeAttribute(clonedElement, 'id');\n }\n this.renderer.setStyle(originalElement, 'opacity', '0.5');\n\n const originalRect = originalElement.getBoundingClientRect();\n this.renderer.setStyle(clonedElement, 'position', 'fixed', RendererStyleFlags2.Important);\n this.renderer.setStyle(clonedElement, 'left', '0px');\n this.renderer.setStyle(clonedElement, 'top', '0px');\n if (!customTemplate) {\n this.renderer.setStyle(clonedElement, 'width', `${originalRect.width}px`);\n this.renderer.setStyle(clonedElement, 'height', `${originalRect.height}px`);\n }\n this.renderer.setStyle(clonedElement, 'margin', '0');\n this.renderer.setStyle(clonedElement, 'box-sizing', 'border-box');\n this.renderer.setStyle(clonedElement, 'opacity', '0.75');\n this.renderer.setStyle(clonedElement, 'z-index', '10000');\n this.renderer.setStyle(clonedElement, 'pointer-events', 'none', RendererStyleFlags2.Important);\n this.renderer.setStyle(clonedElement, 'user-select', 'none');\n this.renderer.setStyle(clonedElement, 'touch-action', 'none');\n\n this.renderer.setStyle(clonedElement, 'translate', `${originalRect.left}px ${originalRect.top}px`);\n this.renderer.removeStyle(clonedElement, 'transition');\n this.renderer.removeStyle(clonedElement, 'transition-property');\n\n this.copyPseudoElementStyles(originalElement, clonedElement, '::before');\n this.copyPseudoElementStyles(originalElement, clonedElement, '::after');\n\n this.renderer.appendChild(this.document.body, clonedElement);\n this.clonedElement.set(clonedElement);\n this.setClonePosition(originalRect.left, originalRect.top);\n\n return clonedElement;\n }\n\n private copyPseudoElementStyles(source: HTMLElement, target: HTMLElement, pseudo: '::before' | '::after'): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const pseudoStyles = window.getComputedStyle(source, pseudo);\n const content = pseudoStyles.getPropertyValue('content');\n const display = pseudoStyles.getPropertyValue('display');\n if (!content || content === 'none' || display === 'none') {\n return;\n }\n const pseudoElement = this.renderer.createElement('span');\n for (let i = 0; i < pseudoStyles.length; i++) {\n const propName = pseudoStyles[i];\n try {\n pseudoElement.style.setProperty(\n propName,\n pseudoStyles.getPropertyValue(propName),\n pseudoStyles.getPropertyPriority(propName),\n );\n } catch (e) {\n // Some properties might fail to set, which is usually fine.\n }\n }\n if (content.startsWith('\"') && content.endsWith('\"')) {\n this.renderer.setProperty(pseudoElement, 'textContent', content.slice(1, -1));\n } else {\n this.renderer.setProperty(pseudoElement, 'textContent', content);\n }\n this.renderer.setStyle(pseudoElement, 'pointer-events', 'none');\n if (pseudo === '::before') {\n this.renderer.insertBefore(target, pseudoElement, target.firstChild);\n } else {\n this.renderer.appendChild(target, pseudoElement);\n }\n }\n\n private removeCloneElementWithAnimation(x: number, y: number, dropList?: AXDropListDirective) {\n dropList?._draggableItems().forEach((item) => {\n this.removeElementTransition(item.element());\n });\n const clone = this.clonedElement();\n if (!clone) return;\n\n this.renderer.setStyle(this.element(), 'opacity', this.elementOpacity());\n\n const elementRect = this.element().getBoundingClientRect();\n if (elementRect) {\n this.setElementTransition(clone);\n this.renderer.setStyle(clone, 'opacity', '0');\n this.setClonePosition(elementRect.left + x, elementRect.top + y);\n }\n\n if (!this.dragTransition()) {\n this.removeCloneElement();\n } else {\n setTimeout(() => {\n this.removeCloneElement();\n dropList?._draggableItems().forEach((item) => {\n this.setElementTransition(item.element());\n });\n }, this.transitionDuration());\n }\n }\n\n private removeCloneElement() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const clone = this.clonedElement();\n if (clone?.parentNode) {\n // Remove classes before removing element\n this.renderer.removeClass(clone, 'ax-drag-preview');\n this.renderer.removeClass(clone, 'ax-dragging');\n this.renderer.removeChild(clone.parentNode, clone);\n }\n this.clonedElement.set(null);\n\n if (this.clonedElementViewRef()) {\n this.clonedElementViewRef().destroy();\n this.clonedElementViewRef.set(null);\n }\n this.cdr.markForCheck();\n }\n\n private addDocumentListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n this.zone.runOutsideAngular(() => {\n this.document.addEventListener('pointermove', this.boundHandlePointerMove, { passive: false });\n this.document.addEventListener('pointerup', this.boundHandlePointerUp);\n this.document.addEventListener('pointercancel', this.boundHandlePointerUp);\n });\n }\n\n private removeDocumentListeners(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n this.zone.runOutsideAngular(() => {\n this.document.removeEventListener('pointermove', this.boundHandlePointerMove);\n this.document.removeEventListener('pointerup', this.boundHandlePointerUp);\n this.document.removeEventListener('pointercancel', this.boundHandlePointerUp);\n });\n }\n}\n","import { NXComponent, NXNativeEvent } from '@acorex/cdk/common';\nimport { Directive, OnInit, input, output, signal } from '@angular/core';\nimport { AXDragDirective } from './drag.directive';\n\nexport interface AXDropZoneDropEvent extends NXNativeEvent<AXDropZoneDirective, MouseEvent> {\n dropped: AXDragDirective;\n}\nexport type AXDropZoneHoverEvent = AXDropZoneDropEvent & { state: 'enter' | 'leave' };\n\n@Directive({\n selector: '[axDropZone]',\n exportAs: 'axDropZone',\n})\nexport class AXDropZoneDirective extends NXComponent implements OnInit {\n dropZoneGroup = input<string>();\n\n isHovered = signal(false);\n readonly element = signal(this.nativeElement);\n\n onElementDrop = output<AXDropZoneDropEvent>();\n onElementHover = output<AXDropZoneHoverEvent>();\n\n ngOnInit(): void {\n this.element().dataset['axDropZone'] = 'true';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXDragHandleDirective } from './drag-handle.directive';\nimport { AXDragDirective } from './drag.directive';\nimport { AXDropListDirective } from './drop-list.directive';\nimport { AXDropZoneDirective } from './drop-zone.directive';\n\nconst COMPONENT = [AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective];\n\n@NgModule({\n imports: [...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDragDropModule {}\n","import { clamp } from 'lodash-es';\n\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nexport function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex: number): void {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n\n if (from === to) {\n return;\n }\n\n const target = array[from];\n const delta = to < from ? -1 : 1;\n\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n\n array[to] = target;\n}\n\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nexport function transferArrayItem<T = any>(\n currentArray: T[],\n targetArray: T[],\n currentIndex: number,\n targetIndex: number,\n): void {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\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,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/cdk",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.51",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "21.0.0-next.
|
|
5
|
+
"@acorex/core": "21.0.0-next.51",
|
|
6
6
|
"@angular/common": "^20.0.0",
|
|
7
7
|
"@angular/core": "^20.0.0",
|
|
8
8
|
"quill": ">=2.0.2",
|