@ngstarter-ui/components 21.0.30 → 21.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +58 -14
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs → ngstarter-ui-components-content-editor-code-block.component-BZniTqu-.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs.map → ngstarter-ui-components-content-editor-code-block.component-BZniTqu-.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs → ngstarter-ui-components-content-editor-embed-block-QzDMzd3u.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs.map → ngstarter-ui-components-content-editor-embed-block-QzDMzd3u.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs → ngstarter-ui-components-content-editor-heading-block.component-CnYRnDBY.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-CnYRnDBY.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs → ngstarter-ui-components-content-editor-image-block.component-IP_eRCQ2.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs.map → ngstarter-ui-components-content-editor-image-block.component-IP_eRCQ2.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs → ngstarter-ui-components-content-editor-list-block.component-amyfzXOW.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs.map → ngstarter-ui-components-content-editor-list-block.component-amyfzXOW.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DA-VnRa_.mjs} +453 -36
- package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DA-VnRa_.mjs.map +1 -0
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DtophI4_.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DtophI4_.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs → ngstarter-ui-components-content-editor-quote-block.component-B20eHQdw.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B20eHQdw.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs → ngstarter-ui-components-content-editor-table-block.component-hJ4OxKRX.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs.map → ngstarter-ui-components-content-editor-table-block.component-hJ4OxKRX.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs → ngstarter-ui-components-content-editor-video-block.component-Cs7L1wwX.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs.map → ngstarter-ui-components-content-editor-video-block.component-Cs7L1wwX.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +65 -4
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-currency-select.mjs +65 -4
- package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-menu.mjs +10 -6
- package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-phone-input.mjs +113 -29
- package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-toolbar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/_global.scss +11 -0
- package/types/ngstarter-ui-components-content-editor.d.ts +226 -7
- package/types/ngstarter-ui-components-country-select.d.ts +12 -0
- package/types/ngstarter-ui-components-currency-select.d.ts +12 -0
- package/types/ngstarter-ui-components-menu.d.ts +3 -3
- package/types/ngstarter-ui-components-phone-input.d.ts +19 -2
- package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs","sources":["../../../projects/components/content-editor/src/table-columns-manager.directive.ts","../../../projects/components/content-editor/src/table-rows-manager.directive.ts","../../../projects/components/content-editor/src/resizable-table.directive.ts","../../../projects/components/content-editor/src/draggable-table/draggable-table.component.ts","../../../projects/components/content-editor/src/draggable-table/draggable-table.component.html","../../../projects/components/content-editor/src/_builder/table-block/table-block.component.ts","../../../projects/components/content-editor/src/_builder/table-block/table-block.component.html"],"sourcesContent":["import { afterNextRender, DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[ngsTableColumnsManager]',\n host: {\n '(contextmenu)': 'onContextMenu($event)',\n }\n})\nexport class TableColumnsManagerDirective {\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n\n private _dragging = false;\n private _elementPosition = 0;\n private _cellWidth = 90;\n\n readonly columnAdded = output();\n readonly columnDeleted = output();\n readonly columnManagingStart = output();\n readonly columnManagingEnd = output();\n\n constructor() {\n afterNextRender(() => {\n this._initResize();\n });\n }\n\n protected onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _initResize() {\n fromEvent(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n this._dragging = true;\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n this._elementPosition = elementRect.x + elementRect.width / 2;\n this.columnManagingStart.emit();\n });\n fromEvent(this._document, 'mousemove')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n const elementRightPosition = elementRect.x + elementRect.width;\n const elementLeftPosition = elementRect.x;\n\n if (event.clientX > (this._elementPosition + this._cellWidth) && event.clientX > (elementRightPosition + this._cellWidth)) {\n this._elementPosition = elementRightPosition + this._cellWidth;\n this.columnAdded.emit();\n } else if (event.clientX < (this._elementPosition - this._cellWidth) && event.clientX < (elementLeftPosition - this._cellWidth)) {\n this._elementPosition = elementLeftPosition - this._cellWidth;\n this.columnDeleted.emit();\n }\n }\n });\n fromEvent(this._document, 'mouseup')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n this._dragging = false;\n this.columnManagingEnd.emit();\n }\n });\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsTableRowsManager]',\n host: {\n '(contextmenu)': 'onContextMenu($event)',\n }\n})\nexport class TableRowsManagerDirective {\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n\n private _dragging = false;\n private _elementPosition = 0;\n private _cellHeight = 24;\n\n readonly rowManagingStart = output();\n readonly rowManagingEnd = output();\n readonly rowAdded = output();\n readonly rowDeleted = output();\n\n constructor() {\n afterNextRender(() => {\n this._initResize();\n });\n }\n\n protected onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _initResize() {\n fromEvent(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n this._dragging = true;\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n this._elementPosition = elementRect.y + elementRect.height / 2;\n this.rowManagingStart.emit();\n });\n fromEvent(this._document, 'mousemove')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n const elementBottomPosition = elementRect.y + elementRect.height;\n const elementTopPosition = elementRect.y;\n\n if (event.clientY > (this._elementPosition + this._cellHeight) && event.clientY > (elementBottomPosition + this._cellHeight)) {\n this._elementPosition = elementBottomPosition + this._cellHeight;\n this.rowAdded.emit();\n } else if (event.clientY < (this._elementPosition - this._cellHeight) && event.clientY < (elementTopPosition - this._cellHeight)) {\n this._elementPosition = elementTopPosition - this._cellHeight;\n this.rowDeleted.emit();\n }\n }\n });\n fromEvent(this._document, 'mouseup')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n this._dragging = false;\n this.rowManagingEnd.emit();\n }\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n OnInit,\n OnDestroy,\n Renderer2,\n NgZone,\n Input,\n AfterViewInit,\n output, inject, PLATFORM_ID\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { isPlatformServer } from '@angular/common';\n\nconst RESIZING_TABLE_CLASS = 'table-resizing';\nconst RESIZE_HANDLE_ACTIVE_CLASS = 'resize-handle--active';\n\n@Directive({\n selector: 'table[ngsResizableTable]'\n})\nexport class ResizableTableDirective implements OnInit, AfterViewInit, OnDestroy {\n private _platformId = inject(PLATFORM_ID);\n\n @Input() minColumnWidth = 120;\n @Input() resizeHandleWidth = 5;\n @Input() mutationObserverDebounceTime = 20;\n\n readonly columnWidthChange = output<{columnIndex: number, width: number}>();\n readonly columnWidthChangeStart = output<void>();\n readonly columnWidthChangeEnd = output<void>();\n\n private table: HTMLTableElement;\n private wrapper: HTMLDivElement | null = null;\n private resizeHandle: HTMLDivElement | null = null;\n private colgroup: HTMLTableColElement | null = null;\n private colElements: HTMLTableColElement[] = [];\n\n private isResizing = false;\n private resizingColumnIndex = -1;\n private resizingColElement: HTMLTableColElement | null = null;\n private startX = 0;\n private startWidth = 0;\n private startEdgeXRelative = 0;\n\n private activeHoverColumnIndex = -1;\n private isHandleVisible = false;\n\n private destroy$ = new Subject<void>();\n private hideHandleDebounced: () => void;\n private syncColumnsDebounced: () => void; // Debounce для синхронизации колонок\n\n private listeners: (() => void)[] = [];\n private observer: MutationObserver | null = null;\n\n constructor(\n private el: ElementRef<HTMLTableElement>,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n this.table = this.el.nativeElement;\n this.hideHandleDebounced = this.debounce(() => this.hideResizeHandle(), 50);\n this.syncColumnsDebounced = this.debounce(() => {\n this.syncColumnsAndColgroup();\n this.ensureColWidths();\n\n if (this.isHandleVisible) {\n this.hideResizeHandle();\n }\n }, this.mutationObserverDebounceTime);\n }\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this.checkTableLayout();\n this.createWrapperAndHandle();\n this.syncColumnsAndColgroup();\n\n if (!this.wrapper || !this.resizeHandle) {\n console.error('ResizableTableDirective: Wrapper or handle creation failed.');\n this.cleanupWrapperAndHandleOnError();\n return;\n }\n\n this.addWrapperListeners();\n this.setupGlobalResizeListeners();\n this.setupMutationObserver();\n this.ensureColWidths();\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n this.destroy$.next();\n this.destroy$.complete();\n this.listeners.forEach(unlisten => unlisten());\n this.cleanupWrapperAndHandle();\n }\n\n private checkTableLayout(): void { /* ... как раньше ... */\n if (getComputedStyle(this.table).tableLayout !== 'fixed') {\n console.warn('ResizableTableDirective: table-layout: fixed is highly recommended.');\n this.renderer.setStyle(this.table, 'table-layout', 'fixed');\n }\n }\n\n private syncColumnsAndColgroup(): void {\n let requiredColumnCount = 0;\n const firstDataRow = this.table.querySelector('tbody > tr:first-child') as HTMLTableRowElement | null;\n\n if (firstDataRow) {\n requiredColumnCount = firstDataRow.cells.length;\n } else {\n // Если tbody пуст, можно попробовать определить по thead, если он есть\n const firstHeadRow = this.table.querySelector('thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (firstHeadRow) {\n requiredColumnCount = firstHeadRow.cells.length;\n } else {\n if(this.colgroup) {\n this.colElements.forEach(col => this.renderer.removeChild(this.colgroup, col));\n }\n\n this.colElements = [];\n return;\n }\n }\n\n this.colgroup = this.table.querySelector('colgroup') as HTMLTableColElement;\n\n const currentColElements = Array.from(this.colgroup.querySelectorAll('col'));\n const currentColCount = currentColElements.length;\n\n if (requiredColumnCount > currentColCount) {\n for (let i = currentColCount; i < requiredColumnCount; i++) {\n const col = this.renderer.createElement('col');\n this.renderer.appendChild(this.colgroup, col);\n }\n }\n\n else if (requiredColumnCount < currentColCount) {\n for (let i = currentColCount - 1; i >= requiredColumnCount; i--) {\n this.renderer.removeChild(this.colgroup, currentColElements[i]);\n }\n }\n\n this.colElements = Array.from(this.colgroup.querySelectorAll('col'));\n }\n\n private ensureColWidths(): void {\n const referenceRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!referenceRow || this.colElements.length !== referenceRow.cells.length) {\n return;\n }\n\n this.colElements.forEach((col, index) => {\n if (!col.style.width && referenceRow.cells[index]) {\n const cellWidth = referenceRow.cells[index].getBoundingClientRect().width;\n\n if (cellWidth > 0) {\n this.renderer.setStyle(col, 'width', `${cellWidth}px`);\n }\n }\n });\n }\n\n private setupMutationObserver(): void {\n const targetNode = this.table.querySelector('tbody') ?? this.table;\n\n const config: MutationObserverInit = {\n childList: true,\n subtree: true\n };\n\n const callback: MutationCallback = (mutationsList, observer) => {\n this.ngZone.runOutsideAngular(() => {\n this.syncColumnsDebounced();\n });\n };\n this.observer = new MutationObserver(callback);\n this.observer.observe(targetNode, config);\n }\n\n private createWrapperAndHandle(): void {\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'resizable-table-wrapper');\n this.resizeHandle = this.renderer.createElement('div');\n this.renderer.addClass(this.resizeHandle, 'resizable-table-handle');\n this.renderer.setStyle(this.resizeHandle, 'width', `${this.resizeHandleWidth}px`);\n\n const parent = this.renderer.parentNode(this.table);\n\n if (parent) {\n this.renderer.insertBefore(parent, this.wrapper, this.table);\n this.renderer.appendChild(this.wrapper, this.table);\n this.renderer.appendChild(this.wrapper, this.resizeHandle);\n } else {\n console.error('ResizableTableDirective: Table has no parent node.');\n this.wrapper = null; this.resizeHandle = null;\n }\n }\n\n private cleanupWrapperAndHandle(): void {\n if (this.wrapper && this.wrapper.parentNode) {\n if (this.table.parentNode === this.wrapper) {\n this.renderer.insertBefore(this.wrapper.parentNode, this.table, this.wrapper);\n }\n this.renderer.removeChild(this.wrapper.parentNode, this.wrapper);\n } else if (this.resizeHandle && this.resizeHandle.parentNode) {\n this.renderer.removeChild(this.resizeHandle.parentNode, this.resizeHandle);\n }\n this.wrapper = null;\n this.resizeHandle = null;\n }\n\n private cleanupWrapperAndHandleOnError(): void { /* ... как раньше ... */\n if (this.wrapper && this.table.parentNode === this.wrapper) {\n const parent = this.wrapper.parentNode;\n if(parent) {\n this.renderer.insertBefore(parent, this.table, this.wrapper);\n this.renderer.removeChild(parent, this.wrapper);\n }\n }\n this.wrapper = null;\n this.resizeHandle = null;\n }\n\n private addWrapperListeners(): void {\n if (!this.wrapper) return;\n this.ngZone.runOutsideAngular(() => {\n const mm = this.renderer.listen(this.wrapper, 'mousemove', (e: MouseEvent) => this.handleMouseMoveWrapper(e));\n this.listeners.push(mm);\n });\n const md = this.renderer.listen(this.wrapper, 'mousedown', (e: MouseEvent) => this.handleMouseDownWrapper(e));\n const ml = this.renderer.listen(this.wrapper, 'mouseleave', (e: MouseEvent) => { if (!this.isResizing) this.hideResizeHandle(); });\n this.listeners.push(md, ml);\n }\n\n private handleMouseMoveWrapper(event: MouseEvent): void {\n if (this.isResizing || !this.wrapper) {\n return;\n }\n\n const wrapperRect = this.wrapper.getBoundingClientRect();\n const mouseXRelative = event.clientX - wrapperRect.left;\n let targetColumnIndex = -1;\n let edgeXPosition = 0;\n\n const firstRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!firstRow) {\n return;\n }\n\n if (this.colElements.length !== firstRow.cells.length) {\n return;\n }\n\n for (let i = 0; i < firstRow.cells.length; i++) {\n const cell = firstRow.cells[i];\n\n if (!cell) {\n continue;\n }\n\n const cellRect = cell.getBoundingClientRect();\n const cellEdgeX = cellRect.right - wrapperRect.left;\n\n if (Math.abs(mouseXRelative - cellEdgeX) <= this.resizeHandleWidth / 2) {\n if (this.colElements[i]) {\n targetColumnIndex = i;\n edgeXPosition = cellEdgeX;\n break;\n }\n }\n }\n\n if (targetColumnIndex !== -1) {\n this.showResizeHandle(edgeXPosition);\n this.activeHoverColumnIndex = targetColumnIndex;\n } else {\n this.hideHandleDebounced();\n }\n }\n\n private handleMouseDownWrapper(event: MouseEvent): void {\n if (this.activeHoverColumnIndex !== -1 && this.isHandleVisible && this.wrapper) {\n const targetCol = this.colElements[this.activeHoverColumnIndex];\n const firstRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!targetCol || !firstRow || !firstRow.cells[this.activeHoverColumnIndex]) {\n return;\n }\n\n this.isResizing = true;\n this.resizingColumnIndex = this.activeHoverColumnIndex;\n this.resizingColElement = targetCol;\n this.startX = event.clientX;\n\n const colStyleWidth = this.resizingColElement.style.width;\n this.startWidth = colStyleWidth && colStyleWidth.endsWith('px')\n ? parseFloat(colStyleWidth)\n : this.resizingColElement.getBoundingClientRect().width;\n\n if (this.startWidth <= 0 ) {\n this.startWidth = firstRow.cells[this.resizingColumnIndex].getBoundingClientRect().width;\n }\n\n const wrapperRect = this.wrapper.getBoundingClientRect();\n const cellRect = firstRow.cells[this.resizingColumnIndex].getBoundingClientRect();\n this.startEdgeXRelative = cellRect.right - wrapperRect.left;\n\n this.renderer.addClass(this.table, RESIZING_TABLE_CLASS);\n event.preventDefault();\n this.columnWidthChangeStart.emit();\n }\n }\n\n private showResizeHandle(edgeX: number): void {\n if (!this.resizeHandle || !this.wrapper) {\n return;\n }\n\n const handleLeft = edgeX - (this.resizeHandleWidth / 2);\n this.renderer.setStyle(this.resizeHandle, 'left', `${handleLeft}px`);\n this.renderer.setStyle(this.resizeHandle, 'top', `${this.table.offsetTop}px`);\n this.renderer.setStyle(this.resizeHandle, 'height', `${this.table.offsetHeight}px`);\n this.renderer.addClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = true;\n }\n\n private hideResizeHandle(): void {\n if (this.resizeHandle && this.isHandleVisible) {\n this.renderer.removeClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = false;\n this.activeHoverColumnIndex = -1;\n }\n }\n\n private debounce(func: (...args: any[]) => void, wait: number): (...args: any[]) => void {\n let timeout: any;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n }\n\n private setupGlobalResizeListeners(): void {\n this.ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (!this.isResizing || !this.resizingColElement || !this.wrapper || !this.resizeHandle) return;\n\n if (!this.resizingColElement.parentElement) {\n this.stopResizing();\n return;\n }\n\n const deltaX = event.clientX - this.startX;\n const newWidth = this.startWidth + deltaX;\n const finalWidth = Math.max(newWidth, this.minColumnWidth);\n this.renderer.setStyle(this.resizingColElement, 'width', `${finalWidth}px`);\n const actualDeltaX = finalWidth - this.startWidth;\n const newEdgeXRelative = this.startEdgeXRelative + actualDeltaX;\n const handleLeft = newEdgeXRelative - (this.resizeHandleWidth / 2);\n this.renderer.setStyle(this.resizeHandle, 'left', `${handleLeft}px`);\n\n if (!this.isHandleVisible) {\n this.renderer.addClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = true;\n }\n\n this.updateHandleHeight();\n });\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isResizing) {\n this.ngZone.run(() => {\n this.stopResizing();\n });\n }\n });\n });\n }\n\n private stopResizing(): void {\n this.columnWidthChange.emit({\n columnIndex: this.resizingColumnIndex,\n width: this.resizingColElement?.getBoundingClientRect().width as number\n });\n this.renderer.removeClass(this.table, RESIZING_TABLE_CLASS);\n this.hideResizeHandle();\n this.isResizing = false;\n this.resizingColumnIndex = -1;\n this.resizingColElement = null;\n this.columnWidthChangeEnd.emit();\n }\n\n private updateHandleHeight(): void {\n if (this.resizeHandle && this.isHandleVisible && this.wrapper) {\n requestAnimationFrame(() => {\n if(this.isHandleVisible && this.resizeHandle && this.table) {\n this.renderer.setStyle(this.resizeHandle, 'top', `${this.table.offsetTop}px`);\n this.renderer.setStyle(this.resizeHandle, 'height', `${this.table.offsetHeight}px`);\n }\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n AfterViewInit,\n NgZone,\n ChangeDetectionStrategy,\n inject,\n HostBinding,\n output,\n input,\n booleanAttribute,\n PLATFORM_ID,\n DestroyRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { CONTENT_BUILDER } from '../types';\nimport { ContentBuilderComponent } from '../content-builder/content-builder.component';\nimport { Subscription, Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst HIDE_DELAY_MS = 300;\n\ninterface ColumnInfo {\n index: number;\n left: number;\n width: number;\n center: number;\n}\n\ninterface RowInfo {\n index: number;\n element: HTMLTableRowElement;\n top: number;\n height: number;\n center: number;\n}\n\n@Component({\n selector: 'ngs-draggable-table',\n exportAs: 'ngsDraggableTable',\n imports: [],\n templateUrl: './draggable-table.component.html',\n styleUrl: './draggable-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'disabled() || null'\n }\n})\nexport class DraggableTableComponent implements OnInit, AfterViewInit, OnDestroy {\n private contentBuilder = inject<ContentBuilderComponent>(CONTENT_BUILDER);\n private _platformId = inject(PLATFORM_ID);\n private elRef = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n private destroyRef = inject(DestroyRef);\n private table: HTMLTableElement | null = null;\n private suppressInteractions = false;\n private columnHandler!: HTMLElement;\n private rowHandler!: HTMLElement;\n private dropIndicator!: HTMLElement;\n private hoveredCell: HTMLElement | null = null;\n private hoveredColumnIndex: number = -1;\n private hoveredRowIndex: number = -1;\n private isDragging = false;\n private dragMode: 'row' | 'column' | null = null;\n private startX = 0;\n private startY = 0;\n private handlerStartY = 0;\n private draggedElement: HTMLElement | null = null;\n private draggedElementSource: HTMLElement | null = null;\n private startElementIndex = -1;\n private currentDropIndex = -1;\n private hideTimeoutId: any = null;\n private columnInfo: ColumnInfo[] = [];\n private rowInfo: RowInfo[] = [];\n private listeners: {\n name: string;\n type: 'element' | 'document';\n target?: () => EventTarget | null;\n event: string;\n handler: (event: any) => void;\n cleanup?: () => void\n }[] = [];\n private boundOnDrag: (event: MouseEvent) => void;\n private boundEndDrag: (event: MouseEvent) => void;\n private handlerSize = 18;\n private handlerOffset = -9;\n private indicatorThickness = 3;\n private suppressResetTimeoutId: any = null;\n private scrollContainerRef: Element | Window | null = null; // оставлено для обратной совместимости, не используется напрямую\n private scrollSub: Subscription | null = null;\n @HostBinding('class.draggable-table-host') hostClass = true;\n\n disabled = input(false, {\n transform: booleanAttribute\n });\n\n readonly columnMoved = output<{ startElementIndex: number, finalTargetIndex: number }>();\n readonly rowMoved = output<{ startElementIndex: number, finalTargetIndex: number }>();\n readonly moveStart = output<void>();\n readonly moveEnd = output<void>();\n\n constructor() {\n this.boundOnDrag = this.onDrag.bind(this);\n this.boundEndDrag = this.endDrag.bind(this);\n }\n\n ngOnInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.createHandlers();\n this.createDropIndicator();\n this.prepareListeners();\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.table = this.elRef.nativeElement.querySelector('table');\n if (!this.table) {\n return;\n }\n if (getComputedStyle(this.table).position === 'static') {\n this.renderer.setStyle(this.table, 'position', 'relative');\n }\n this.renderer.appendChild(this.table, this.columnHandler);\n this.renderer.appendChild(this.table, this.rowHandler);\n this.renderer.appendChild(this.table, this.dropIndicator);\n this.attachListeners('element');\n this.bindScrollContainerListener();\n }\n\n ngOnDestroy(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.unbindScrollContainerListener();\n this.detachListeners('all');\n this.cancelHideTimer();\n if (this.suppressResetTimeoutId) {\n clearTimeout(this.suppressResetTimeoutId);\n this.suppressResetTimeoutId = null;\n }\n if (this.dropIndicator?.parentNode) {\n this.renderer.removeChild(this.dropIndicator.parentNode, this.dropIndicator);\n }\n if (this.columnHandler?.parentNode) {\n this.renderer.removeChild(this.columnHandler.parentNode, this.columnHandler);\n }\n if (this.rowHandler?.parentNode) {\n this.renderer.removeChild(this.rowHandler.parentNode, this.rowHandler);\n }\n if (this.table) {\n this.renderer.removeClass(this.table, 'dragging-column');\n this.renderer.removeClass(this.table, 'dragging-row');\n this.table.querySelectorAll('.dragging-source').forEach(el => this.renderer.removeClass(el, 'dragging-source'));\n this.table.querySelectorAll('.col-highlight').forEach(el => this.renderer.removeClass(el, 'col-highlight'));\n }\n document.body.style.cursor = '';\n this.columnInfo = [];\n this.rowInfo = [];\n this.currentDropIndex = -1;\n this.suppressInteractions = false;\n }\n\n private prepareListeners(): void {\n this.listeners = [\n {\n name: 'tableMouseOver',\n type: 'element',\n target: () => this.table,\n event: 'mouseover',\n handler: this.onTableMouseOver.bind(this)\n },\n {\n name: 'tableMouseLeave',\n type: 'element',\n target: () => this.table,\n event: 'mouseleave',\n handler: this.onTableMouseLeave.bind(this)\n },\n {\n name: 'colHandlerMouseDown',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mousedown',\n handler: (e: MouseEvent) => this.onHandlerMouseDown(e, 'column')\n },\n {\n name: 'colHandlerMouseEnter',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mouseenter',\n handler: this.onHandlerMouseEnter.bind(this)\n },\n {\n name: 'colHandlerMouseLeave',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mouseleave',\n handler: this.onHandlerMouseLeave.bind(this)\n },\n {\n name: 'rowHandlerMouseDown',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mousedown',\n handler: (e: MouseEvent) => this.onHandlerMouseDown(e, 'row')\n },\n {\n name: 'rowHandlerMouseEnter',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mouseenter',\n handler: this.onHandlerMouseEnter.bind(this)\n },\n {\n name: 'rowHandlerMouseLeave',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mouseleave',\n handler: this.onHandlerMouseLeave.bind(this)\n },\n {name: 'docMouseMove', type: 'document', target: () => document, event: 'mousemove', handler: this.boundOnDrag},\n {\n name: 'docMouseUp', type: 'document', target: () => document, event: 'mouseup', handler: (e: MouseEvent) => {\n this.suppressInteractions = false;\n this.boundEndDrag(e);\n }\n },\n {\n name: 'winBlur', type: 'document', target: () => window, event: 'blur', handler: () => {\n this.suppressInteractions = false;\n }\n },\n {\n name: 'visibilityChange', type: 'document', target: () => document, event: 'visibilitychange', handler: () => {\n if (document.visibilityState !== 'visible') {\n this.suppressInteractions = false;\n }\n }\n },\n ];\n }\n\n private attachListeners(type: 'element' | 'document' | 'all' = 'element'): void {\n this.ngZone.runOutsideAngular(() => {\n this.listeners.forEach(listener => {\n if (listener.type === 'document' && type !== 'document' && type !== 'all') return;\n if (listener.type === 'element' && type === 'document') return;\n if (listener.cleanup || !listener.target) return;\n const targetElement = listener.target();\n if (!targetElement) return;\n listener.cleanup = this.renderer.listen(targetElement, listener.event, listener.handler);\n });\n });\n }\n\n private detachListeners(type: 'element' | 'document' | 'all' = 'all'): void {\n this.listeners.forEach(listener => {\n if (listener.type === 'document' && type !== 'document' && type !== 'all') return;\n if (listener.type === 'element' && type === 'document') return;\n if (listener.cleanup) {\n listener.cleanup();\n listener.cleanup = undefined;\n }\n });\n }\n\n private onTableMouseOver(event: MouseEvent): void {\n this.cancelHideTimer();\n this.ensureScrollContainerListener();\n if (!this.table || this.isDragging) return;\n if (this.suppressInteractions) return;\n const anyButtonDown = typeof event.buttons === 'number' ? event.buttons !== 0 : false;\n if (anyButtonDown) return;\n const target = event.target as HTMLElement;\n const cell = target.closest('td, th') as HTMLTableCellElement | null;\n if (cell && this.table.contains(cell)) {\n const currentColumnIndex = cell.cellIndex;\n const currentRow = cell.closest('tr');\n const currentRowIndex = currentRow?.parentElement?.tagName === 'TBODY' ? Array.from(currentRow.parentElement.children).indexOf(currentRow) : -1;\n this.hoveredCell = cell;\n if (currentColumnIndex !== this.hoveredColumnIndex || this.columnHandler.style.visibility === 'hidden') {\n this.hoveredColumnIndex = currentColumnIndex;\n this.positionColumnHandler(cell);\n this.renderer.setStyle(this.columnHandler, 'visibility', 'visible');\n }\n if (currentRowIndex !== -1) {\n if (currentRowIndex !== this.hoveredRowIndex || this.rowHandler.style.visibility === 'hidden') {\n this.hoveredRowIndex = currentRowIndex;\n this.positionRowHandler(cell);\n this.renderer.setStyle(this.rowHandler, 'visibility', 'visible');\n }\n } else if (this.hoveredRowIndex !== -1) {\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.hoveredRowIndex = -1;\n }\n }\n }\n\n private onTableMouseLeave(event: MouseEvent): void {\n if (this.isDragging) return;\n if (this.suppressInteractions) return;\n const relatedTarget = event.relatedTarget as Node;\n if (relatedTarget !== this.columnHandler && relatedTarget !== this.rowHandler) {\n this.scheduleHideHandlers();\n }\n }\n\n private onHandlerMouseEnter(): void {\n this.cancelHideTimer();\n }\n\n private onHandlerMouseLeave(event: MouseEvent): void {\n if (this.isDragging) return;\n if (this.suppressInteractions) return;\n const relatedTarget = event.relatedTarget as Node;\n const isOverTable = relatedTarget && this.table && this.table.contains(relatedTarget);\n const isOverOtherHandler = (event.target === this.columnHandler && relatedTarget === this.rowHandler) || (event.target === this.rowHandler && relatedTarget === this.columnHandler);\n if (!isOverTable && !isOverOtherHandler) {\n this.scheduleHideHandlers();\n }\n }\n\n private onHandlerMouseDown(event: MouseEvent, mode: 'row' | 'column'): void {\n const isPrimary = (event.button === 0) && ((event.buttons & 1) === 1);\n if (!isPrimary || event.ctrlKey) {\n this.suppressInteractions = true;\n event.preventDefault();\n event.stopPropagation();\n this.cancelHideTimer();\n if (this.suppressResetTimeoutId) {\n clearTimeout(this.suppressResetTimeoutId);\n this.suppressResetTimeoutId = null;\n }\n this.suppressResetTimeoutId = setTimeout(() => {\n this.suppressInteractions = false;\n this.suppressResetTimeoutId = null;\n }, 1200);\n return;\n }\n this.startDrag(event, mode);\n }\n\n private createHandlers(): void {\n this.columnHandler = this.renderer.createElement('div');\n this.columnHandler.oncontextmenu = ((e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n this.renderer.addClass(this.columnHandler, 'drag-handler');\n this.renderer.addClass(this.columnHandler, 'column-handler');\n this.renderer.setStyle(this.columnHandler, 'position', 'fixed');\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.columnHandler, 'z-index', '1000');\n this.rowHandler = this.renderer.createElement('div');\n this.rowHandler.oncontextmenu = ((e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n this.renderer.addClass(this.rowHandler, 'drag-handler');\n this.renderer.addClass(this.rowHandler, 'row-handler');\n this.renderer.setStyle(this.rowHandler, 'position', 'fixed');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.rowHandler, 'z-index', '1000');\n }\n\n private createDropIndicator(): void {\n this.dropIndicator = this.renderer.createElement('div');\n this.renderer.addClass(this.dropIndicator, 'drop-indicator');\n }\n\n private positionColumnHandler(cellOrIndex: HTMLElement | number): void {\n if (!this.table) {\n return;\n }\n let targetCell: HTMLElement | null = null;\n if (typeof cellOrIndex === 'number') {\n targetCell = this.findFirstVisibleCellInColumn(cellOrIndex);\n if (!targetCell) return;\n } else {\n targetCell = cellOrIndex;\n }\n const tableRect = this.table.getBoundingClientRect();\n const cellRect = targetCell.getBoundingClientRect();\n const colHandlerLeft = cellRect.left + (cellRect.width / 2) - (this.handlerSize / 2);\n const colHandlerTop = tableRect.top - this.handlerSize - this.handlerOffset;\n this.renderer.setStyle(this.columnHandler, 'top', `${colHandlerTop}px`);\n this.renderer.setStyle(this.columnHandler, 'left', `${colHandlerLeft}px`);\n }\n\n private positionRowHandler(cell: HTMLElement): void {\n if (!this.table || this.isDragging) return;\n const tableRect = this.table.getBoundingClientRect();\n const cellRect = cell.getBoundingClientRect();\n const rowHandlerTop = cellRect.top + (cellRect.height / 2) - (this.handlerSize / 2);\n const rowHandlerLeft = tableRect.left - this.handlerSize - this.handlerOffset;\n this.renderer.setStyle(this.rowHandler, 'top', `${rowHandlerTop}px`);\n this.renderer.setStyle(this.rowHandler, 'left', `${rowHandlerLeft}px`);\n }\n\n private scheduleHideHandlers(): void {\n this.cancelHideTimer();\n this.hideTimeoutId = setTimeout(() => {\n this.hideHandlers();\n this.hideTimeoutId = null;\n }, HIDE_DELAY_MS);\n }\n\n private cancelHideTimer(): void {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = null;\n }\n }\n\n private hideHandlers(): void {\n if (!this.isDragging) {\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.hoveredCell = null;\n this.hoveredColumnIndex = -1;\n this.hoveredRowIndex = -1;\n }\n }\n\n private startDrag(event: MouseEvent, mode: 'row' | 'column'): void {\n const isPrimary = (event.button === 0) && ((event.buttons & 1) === 1);\n if (!isPrimary || event.ctrlKey) {\n return;\n }\n this.cancelHideTimer();\n const sourceRow = mode === 'row' ? this.hoveredCell?.closest('tr') : null;\n\n if (\n !this.table || (mode === 'row' && this.hoveredRowIndex < 0) ||\n (mode === 'column' && this.hoveredColumnIndex < 0) ||\n (mode === 'row' && sourceRow?.parentElement?.tagName !== 'TBODY')\n ) {\n return;\n }\n event.preventDefault();\n this.isDragging = true;\n this.dragMode = mode;\n this.startX = event.clientX;\n this.startY = event.clientY;\n this.currentDropIndex = -1;\n if (mode === 'column') {\n this.startElementIndex = this.hoveredColumnIndex;\n this.currentDropIndex = this.startElementIndex;\n this.draggedElement = this.columnHandler;\n this.draggedElementSource = null;\n this.renderer.addClass(this.table, 'dragging-column');\n this.styleColumnAsSource(this.startElementIndex, true);\n this.calculateColumnInfo();\n this.updateColumnHandlerPositionOnDrag(event.clientX);\n this.renderer.setStyle(this.columnHandler, 'visibility', 'visible');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n } else {\n this.startElementIndex = this.hoveredRowIndex;\n this.currentDropIndex = this.startElementIndex;\n this.draggedElement = this.rowHandler;\n this.draggedElementSource = sourceRow!;\n this.renderer.addClass(this.draggedElementSource, 'dragging-source');\n this.renderer.addClass(this.table, 'dragging-row');\n this.calculateRowInfo();\n this.handlerStartY = parseFloat(this.rowHandler.style.top || '0');\n this.updateRowHandlerPositionOnDrag(event.clientY);\n this.renderer.setStyle(this.rowHandler, 'visibility', 'visible');\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n }\n if (this.draggedElement) {\n this.renderer.addClass(this.draggedElement, 'dragging-active-handler');\n }\n this.attachListeners('document');\n }\n\n private onDrag(event: MouseEvent): void {\n if (!this.isDragging || !this.draggedElement || !this.table) return;\n if ((event.buttons & 1) !== 1) {\n this.endDrag(event);\n return;\n }\n event.preventDefault();\n this.moveStart.emit();\n const currentX = event.clientX;\n const currentY = event.clientY;\n document.body.style.cursor = 'grabbing';\n if (this.dragMode === 'row') {\n this.updateRowHandlerPositionOnDrag(currentY);\n const currentHandlerCenterY = parseFloat(this.rowHandler.style.top || '0') + this.handlerSize / 2;\n const newVisualTargetIndex = this.getVisualTargetRowIndex(currentHandlerCenterY);\n if (newVisualTargetIndex !== -1) {\n this.updateDropIndicator(newVisualTargetIndex, 'row');\n this.currentDropIndex = newVisualTargetIndex;\n } else {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.currentDropIndex = -1;\n }\n this.clearDropHighlights();\n } else if (this.dragMode === 'column') {\n this.updateColumnHandlerPositionOnDrag(currentX);\n const currentHandlerCenterX = parseFloat(this.columnHandler.style.left || '0') + this.handlerSize / 2;\n const newVisualTargetIndex = this.getVisualTargetColumnIndex(currentHandlerCenterX);\n if (newVisualTargetIndex !== -1) {\n this.updateDropIndicator(newVisualTargetIndex, 'column');\n this.currentDropIndex = newVisualTargetIndex;\n } else {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.currentDropIndex = -1;\n }\n this.clearDropHighlights();\n }\n }\n\n private getVisualTargetColumnIndex(currentHandlerCenterX: number): number {\n if (this.startElementIndex < 0 || !this.columnInfo?.length) return -1;\n let potentialTargetIndex = this.startElementIndex;\n const currentGeometry = this.columnInfo;\n for (const targetColumn of currentGeometry) {\n if (targetColumn.index === this.startElementIndex) continue;\n const targetCenter = targetColumn.center;\n const threshold = targetColumn.width * 0.5;\n if (targetColumn.index > this.startElementIndex && currentHandlerCenterX > targetCenter - threshold) {\n potentialTargetIndex = Math.max(potentialTargetIndex, targetColumn.index);\n } else if (targetColumn.index < this.startElementIndex && currentHandlerCenterX < targetCenter + threshold) {\n potentialTargetIndex = (potentialTargetIndex === this.startElementIndex) ? targetColumn.index : Math.min(potentialTargetIndex, targetColumn.index);\n }\n }\n return potentialTargetIndex;\n }\n\n private getVisualTargetRowIndex(currentHandlerCenterY: number): number {\n if (this.startElementIndex < 0 || !this.table?.tBodies[0] || !this.rowInfo?.length) return -1;\n let potentialTargetIndex = this.startElementIndex;\n const currentGeometry = this.rowInfo;\n for (const targetRow of currentGeometry) {\n if (targetRow.index === this.startElementIndex) continue;\n const targetCenter = targetRow.center;\n const threshold = targetRow.height * 0.5;\n if (targetRow.index > this.startElementIndex && currentHandlerCenterY > targetCenter - threshold) {\n potentialTargetIndex = Math.max(potentialTargetIndex, targetRow.index);\n } else if (targetRow.index < this.startElementIndex && currentHandlerCenterY < targetCenter + threshold) {\n potentialTargetIndex = (potentialTargetIndex === this.startElementIndex) ? targetRow.index : Math.min(potentialTargetIndex, targetRow.index);\n }\n }\n return potentialTargetIndex;\n }\n\n private updateColumnHandlerPositionOnDrag(currentX: number): void {\n if (!this.table || !this.columnHandler) return;\n const handlerLeft = currentX - (this.handlerSize / 2);\n this.renderer.setStyle(this.columnHandler, 'left', `${handlerLeft}px`);\n }\n\n private updateRowHandlerPositionOnDrag(currentY: number): void {\n if (!this.table || !this.rowHandler) return;\n const deltaY = currentY - this.startY;\n const handlerTop = this.handlerStartY + deltaY;\n this.renderer.setStyle(this.rowHandler, 'top', `${handlerTop}px`);\n }\n\n private endDrag(event: MouseEvent): void {\n if (!this.isDragging) return;\n this.detachListeners('document');\n event.preventDefault();\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n if (!this.table) {\n this.cleanupDragState();\n return;\n }\n const finalTargetIndex = this.currentDropIndex;\n if (this.startElementIndex !== -1 && finalTargetIndex !== -1 && finalTargetIndex !== this.startElementIndex) {\n if (this.dragMode === 'column') {\n this.moveColumn(this.startElementIndex, finalTargetIndex);\n this.columnMoved.emit({\n startElementIndex: this.startElementIndex,\n finalTargetIndex\n });\n } else if (this.dragMode === 'row') {\n this.moveRow(this.startElementIndex, finalTargetIndex);\n this.rowMoved.emit({\n startElementIndex: this.startElementIndex,\n finalTargetIndex\n });\n }\n }\n this.cleanupDragState();\n this.moveEnd.emit();\n this.table\n .querySelectorAll('td.dragging-source, th.dragging-source')\n .forEach(cell => {\n this.renderer.removeClass(cell, 'dragging-source');\n });\n }\n\n private cleanupDragState(): void {\n const draggedMode = this.dragMode;\n const startIndex = this.startElementIndex;\n const sourceElement = this.draggedElementSource;\n const activeHandler = this.draggedElement;\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.isDragging = false;\n this.dragMode = null;\n this.startElementIndex = -1;\n this.draggedElement = null;\n this.draggedElementSource = null;\n this.columnInfo = [];\n this.rowInfo = [];\n this.currentDropIndex = -1;\n this.handlerStartY = 0;\n this.suppressInteractions = false;\n this.clearDropHighlights();\n if (this.table) {\n if (draggedMode === 'column') {\n this.renderer.removeClass(this.table, 'dragging-column');\n if (startIndex >= 0) {\n this.styleColumnAsSource(startIndex, false);\n this.highlightColumn(startIndex, false);\n } else {\n this.table.querySelectorAll('td.dragging-source, th.dragging-source').forEach(cell => this.renderer.removeClass(cell, 'dragging-source'));\n this.table.querySelectorAll('.col-highlight').forEach(cell => this.renderer.removeClass(cell, 'col-highlight'));\n }\n } else if (draggedMode === 'row') {\n this.renderer.removeClass(this.table, 'dragging-row');\n if (sourceElement) this.renderer.removeClass(sourceElement, 'dragging-source');\n }\n }\n if (activeHandler) {\n this.renderer.removeClass(activeHandler, 'dragging-active-handler');\n }\n document.body.style.cursor = '';\n this.hideHandlers();\n this.cancelHideTimer();\n }\n\n private moveRow(fromIndex: number, toIndex: number): void {\n if (!this.table) {\n return;\n }\n const tbody = this.table.tBodies[0];\n if (!tbody) {\n return;\n }\n const visibleRows = Array.from(tbody.rows).filter(r => !r.classList.contains('dragging-source'));\n if (fromIndex < 0 || fromIndex >= visibleRows.length || toIndex < 0 || toIndex > visibleRows.length || fromIndex === toIndex) {\n const allRows = Array.from(tbody.rows);\n if (fromIndex < 0 || fromIndex >= allRows.length || toIndex < 0 || toIndex > allRows.length || fromIndex === toIndex) {\n return;\n }\n }\n const rowToMove = tbody.querySelector('tr.dragging-source') as HTMLTableRowElement | null;\n if (!rowToMove) {\n return;\n }\n const actualFromIndex = Array.from(tbody.rows).indexOf(rowToMove);\n const allRows = Array.from(tbody.rows);\n let referenceNode: Node | null = null;\n let currentVisibleIndex = 0;\n let actualInsertIndex = -1;\n for (let i = 0; i < allRows.length; i++) {\n if (!allRows[i].classList.contains('dragging-source')) {\n if (currentVisibleIndex === toIndex) {\n actualInsertIndex = i;\n break;\n }\n currentVisibleIndex++;\n }\n }\n if (actualInsertIndex === -1 && toIndex === visibleRows.length) {\n actualInsertIndex = allRows.length;\n }\n if (actualInsertIndex !== -1) {\n if (actualFromIndex < actualInsertIndex) {\n referenceNode = allRows[actualInsertIndex] ?? null;\n } else {\n referenceNode = allRows[actualInsertIndex];\n }\n } else {\n return;\n }\n try {\n this.renderer.insertBefore(tbody, rowToMove, referenceNode);\n } catch (error) {\n }\n this.hoveredRowIndex = -1;\n }\n\n private moveColumn(fromIndex: number, toIndex: number): void {\n if (!this.table || fromIndex === toIndex || fromIndex < 0 || toIndex < 0) {\n return;\n }\n let moved = false;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n const cells = Array.from(row.cells);\n if (fromIndex >= cells.length || toIndex > cells.length) {\n continue;\n }\n const cellToMove = cells[fromIndex] as HTMLElement | undefined;\n let referenceNode: Node | null = null;\n if (fromIndex < toIndex) {\n referenceNode = cells[toIndex + 1] ?? null;\n } else {\n referenceNode = cells[toIndex];\n }\n if (cellToMove) {\n try {\n this.renderer.insertBefore(row, cellToMove, referenceNode);\n moved = true;\n } catch (error) {\n }\n }\n }\n }\n\n private styleColumnAsSource(columnIndex: number, add: boolean): void {\n if (!this.table || columnIndex < 0) return;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n if (columnIndex < row.cells.length) {\n const cell = row.cells[columnIndex];\n if (cell) {\n if (add) {\n this.renderer.addClass(cell, 'dragging-source');\n } else {\n this.renderer.removeClass(cell, 'dragging-source');\n }\n }\n }\n }\n }\n\n private calculateColumnInfo(): void {\n this.columnInfo = [];\n if (!this.table || this.table.rows.length === 0) return;\n const referenceRow = this.table.tHead?.rows[0] ?? this.table.rows[0];\n if (!referenceRow) return;\n for (let i = 0; i < referenceRow.cells.length; i++) {\n const cell = referenceRow.cells[i] as HTMLElement;\n const rect = cell.getBoundingClientRect();\n this.columnInfo.push({index: i, left: rect.left, width: rect.width, center: rect.left + rect.width / 2});\n }\n }\n\n private calculateRowInfo(): void {\n this.rowInfo = [];\n if (!this.table || !this.table.tBodies[0]) return;\n const tbody = this.table.tBodies[0];\n let visibleIndex = 0;\n for (let i = 0; i < tbody.rows.length; i++) {\n const row = tbody.rows[i] as HTMLTableRowElement;\n const rect = row.getBoundingClientRect();\n this.rowInfo.push({\n index: visibleIndex,\n element: row,\n top: rect.top,\n height: rect.height,\n center: rect.top + rect.height / 2\n });\n visibleIndex++;\n }\n }\n\n private findFirstVisibleCellInColumn(columnIndex: number): HTMLElement | null {\n if (!this.table || columnIndex < 0) return null;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n if (columnIndex < row.cells.length) {\n const c = row.cells[columnIndex] as HTMLElement;\n if (c && c.offsetParent !== null) {\n return c;\n }\n }\n }\n return null;\n }\n\n private updateDropIndicator(targetVisualIndex: number, mode: 'row' | 'column'): void {\n if (!this.table || targetVisualIndex < 0 || this.startElementIndex < 0) {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n return;\n }\n const insertBeforeIndex = (targetVisualIndex <= this.startElementIndex) ? targetVisualIndex : targetVisualIndex + 1;\n if (insertBeforeIndex === this.startElementIndex || insertBeforeIndex === this.startElementIndex + 1) {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n return;\n }\n const tableRect = this.table.getBoundingClientRect();\n if (mode === 'column') {\n const referenceColumnInfo = this.columnInfo.find(c => c.index === insertBeforeIndex);\n let indicatorLeftTable = 0;\n if (referenceColumnInfo) {\n indicatorLeftTable = referenceColumnInfo.left - tableRect.left;\n } else {\n const lastColInfo = this.columnInfo[this.columnInfo.length - 1];\n indicatorLeftTable = lastColInfo ? (lastColInfo.left - tableRect.left + lastColInfo.width) : this.table.offsetWidth;\n }\n indicatorLeftTable -= Math.floor(this.indicatorThickness / 2);\n this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorLeftTable}px`);\n this.renderer.setStyle(this.dropIndicator, 'top', `0px`);\n this.renderer.setStyle(this.dropIndicator, 'height', `${this.table.offsetHeight}px`);\n this.renderer.setStyle(this.dropIndicator, 'width', `${this.indicatorThickness}px`);\n this.renderer.removeStyle(this.dropIndicator, 'right');\n this.renderer.removeStyle(this.dropIndicator, 'bottom');\n } else {\n const referenceRowInfo = this.rowInfo.find(r => r.index === insertBeforeIndex);\n let indicatorTopTable = 0;\n if (referenceRowInfo) {\n indicatorTopTable = referenceRowInfo.top - tableRect.top;\n } else {\n const lastRowInfo = this.rowInfo[this.rowInfo.length - 1];\n indicatorTopTable = lastRowInfo\n ? (lastRowInfo.top - tableRect.top + lastRowInfo.height)\n : (this.table.tBodies[0]?.offsetHeight ?? this.table.offsetHeight);\n }\n indicatorTopTable -= Math.floor(this.indicatorThickness / 2);\n this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorTopTable}px`);\n this.renderer.setStyle(this.dropIndicator, 'left', `0px`);\n this.renderer.setStyle(this.dropIndicator, 'width', `${this.table.offsetWidth}px`);\n this.renderer.setStyle(this.dropIndicator, 'height', `${this.indicatorThickness}px`);\n this.renderer.removeStyle(this.dropIndicator, 'bottom');\n this.renderer.removeStyle(this.dropIndicator, 'right');\n }\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'visible');\n }\n\n private highlightColumn(index: number, add: boolean): void {\n }\n\n private clearDropHighlights(): void {\n }\n\n private getCurrentScrollContainer(): Element | Window | null {\n if (isPlatformServer(this._platformId)) {\n return null;\n }\n try {\n const container = (this.contentBuilder as any)?.getScrollContainer?.();\n return (container as Element | Window) || null;\n } catch {\n return null;\n }\n }\n\n private bindScrollContainerListener(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n if (this.scrollSub) {\n return;\n }\n this.unbindScrollContainerListener();\n this.ngZone.runOutsideAngular(() => {\n const scroll$ = (this.contentBuilder as any)?.scrollContainerScrolled as Observable<number> | undefined;\n if (!scroll$) {\n return;\n }\n this.scrollSub = scroll$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onScrollContainerScrolled());\n });\n }\n\n private unbindScrollContainerListener(): void {\n if (this.scrollSub) {\n try { this.scrollSub.unsubscribe(); } catch {}\n this.scrollSub = null;\n }\n this.scrollContainerRef = null;\n }\n\n private ensureScrollContainerListener(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n if (!this.scrollSub) this.bindScrollContainerListener();\n }\n\n private onScrollContainerScrolled(): void {\n this.cancelHideTimer();\n this.hideHandlers();\n }\n}\n","<ng-content/>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input, OnInit, PLATFORM_ID, signal,\n viewChild\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n CONTENT_BUILDER,\n CONTENT_EDITOR_BLOCK,\n ContentEditorDataBlock,\n ContentEditorTableBlockSettings\n} from '../../types';\nimport { ContentEditorContentEditableDirective } from '../../content-editor-content-editable.directive';\nimport SelectionArea from '@viselect/vanilla';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { TableColumnsManagerDirective } from '../../table-columns-manager.directive';\nimport { TableRowsManagerDirective } from '../../table-rows-manager.directive';\nimport { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { ResizableTableDirective } from '../../resizable-table.directive';\nimport { DraggableTableComponent } from '../../draggable-table/draggable-table.component';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ContentBuilderStore } from '../../content-builder.store';\nimport { ContentBuilderComponent } from '../../content-builder/content-builder.component';\n\n@Component({\n selector: 'ngs-table-block',\n imports: [\n ContentEditorContentEditableDirective,\n Icon,\n TableColumnsManagerDirective,\n TableRowsManagerDirective,\n CdkMonitorFocus,\n ResizableTableDirective,\n DraggableTableComponent\n ],\n providers: [\n {\n provide: CONTENT_EDITOR_BLOCK,\n useExisting: TableBlockComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './table-block.component.html',\n styleUrl: './table-block.component.scss',\n host: {\n '[class.is-column-managing]': '_columnManaging()',\n '[class.is-row-managing]': '_rowManaging()',\n }\n})\nexport class TableBlockComponent implements OnInit, AfterViewInit, ContentEditorDataBlock {\n private _platformId = inject(PLATFORM_ID);\n private _contentBuilder = inject<ContentBuilderComponent>(CONTENT_BUILDER);\n private _store = inject(ContentBuilderStore);\n private _cdr = inject(ChangeDetectorRef);\n private _tableRef = viewChild.required<ElementRef>('table');\n\n id = input.required<string>();\n content = input.required<any[]>();\n settings = input.required<ContentEditorTableBlockSettings>();\n index = input.required<number>();\n\n _content = signal<any[]>([]);\n _columnManaging = signal(false);\n _rowManaging = signal(false);\n _tableManging = signal(false);\n _resizeManging = signal(false);\n readonly initialized = signal(false);\n\n ngOnInit() {\n this._content.set(this.content());\n }\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this._platformId)) {\n const selection = new SelectionArea({\n selectables: ['.table td'],\n boundaries: ['.table'],\n features: {\n touch: true,\n range: true,\n deselectOnBlur: true,\n singleTap: {\n allow: false,\n intersect: 'native'\n }\n }\n }).on('start', ({ store, event }: any) => {\n if (!event.ctrlKey && !event.metaKey) {\n store.stored.forEach((el: any) => el.classList.remove('selected'));\n selection.clearSelection();\n }\n })\n .on('move', ({ store: { changed: { added, removed } } }) => {\n if (this._tableManging() || this._columnManaging() || this._rowManaging()) {\n return;\n }\n\n added.forEach(el => el.classList.add('selected'));\n removed.forEach(el => el.classList.remove('selected'));\n });\n }\n this.initialized.set(true);\n }\n\n focus() {\n\n }\n\n onTableFocusChange(type: any) {\n if (type === null) {\n this.clearCellsSelection();\n }\n }\n\n clearCellsSelection() {\n this._tableRef().nativeElement.querySelectorAll('td')\n .forEach((el: any) => el.classList.remove('selected'))\n ;\n this.update();\n }\n\n onColAdded() {\n this._content.update((content: any[]) => {\n content.forEach((row: any) => {\n row.push({\n content: '',\n props: [],\n styles: {},\n options: {\n colspan: 1,\n rowspan: 1\n }\n });\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onColDeleted() {\n if (this._content().length > 0 && this._content()[0].length === 1) {\n return;\n }\n\n let isLastColEmpty = false;\n\n this._content().forEach((row: any) => {\n if (row[row.length - 1].content) {\n isLastColEmpty = true;\n }\n });\n\n if (isLastColEmpty) {\n return;\n }\n\n this._content.update((content: any[]) => {\n content.forEach((row: any) => {\n row.splice(row.length - 1, 1);\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowAdded() {\n this._content.update((content: any[]) => {\n const row: any[] = [];\n\n for (let i = 0; i < content[0].length; i++) {\n row.push({\n content: '',\n props: [],\n styles: {},\n options: {\n colspan: 1,\n rowspan: 1\n }\n });\n }\n\n content.push(row);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowDeleted() {\n if (this._content().length === 1) {\n return;\n }\n\n let isLastRowEmpty = false;\n\n this._content()[this._content().length - 1].forEach((cell: any) => {\n if (cell.content) {\n isLastRowEmpty = true;\n }\n });\n\n if (isLastRowEmpty) {\n return;\n }\n\n this._content.update((content: any[]) => {\n content.splice(content.length - 1, 1);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onColumnManagingStart() {\n this._columnManaging.set(true);\n }\n\n onColumnManagingEnd() {\n this._columnManaging.set(false);\n }\n\n onRowManagingStart() {\n this._rowManaging.set(true);\n }\n\n onRowManagingEnd() {\n this._rowManaging.set(false);\n }\n\n onColumnWidthChange(event: any) {\n this._content.update((content: any[]) => {\n content.forEach(row => {\n row[event.columnIndex].options['width'] = event.width;\n })\n return content;\n });\n this.update();\n }\n\n onColumnMoved(event: any) {\n this._content.update((content: any[]) => {\n content.forEach(row => {\n moveItemInArray(row, event.startElementIndex, event.finalTargetIndex);\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowMoved(event: any) {\n this._content.update((content: any[]) => {\n moveItemInArray(content, event.startElementIndex, event.finalTargetIndex);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onMoveStart() {\n this._tableManging.set(true);\n }\n\n onMoveEnd() {\n this._tableManging.set(false);\n }\n\n onColumnWidthChangeStart() {\n this._tableManging.set(true);\n this._resizeManging.set(true);\n }\n\n onColumnWidthChangeEnd() {\n this._tableManging.set(false);\n this._resizeManging.set(false);\n this._cdr.markForCheck();\n }\n\n getData(): any {\n return {\n content: this._content(),\n settings: {\n ...this.settings(),\n }\n };\n }\n\n isEmpty(): boolean {\n return false;\n }\n\n private update() {\n this._store.updateBlock(this.id(), {...this.getData(), isEmpty: this.isEmpty()});\n this._contentBuilder.emitContentChangeEvent();\n }\n}\n","<div class=\"table-overflow\">\n <div class=\"table-container\">\n <ngs-draggable-table [disabled]=\"_resizeManging() || _columnManaging() || _rowManaging()\"\n (columnMoved)=\"onColumnMoved($event)\"\n (rowMoved)=\"onRowMoved($event)\"\n (moveStart)=\"onMoveStart()\"\n (moveEnd)=\"onMoveEnd()\">\n <table #table class=\"table\"\n ngsResizableTable\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"onTableFocusChange($event)\"\n (columnWidthChangeStart)=\"onColumnWidthChangeStart()\"\n (columnWidthChangeEnd)=\"onColumnWidthChangeEnd()\"\n (columnWidthChange)=\"onColumnWidthChange($event)\">\n <colgroup>\n @for (cell of _content()[0]; track $index) {\n <col [style.width.px]=\"cell.options.width || null\">\n }\n </colgroup>\n <tbody>\n @for (row of _content(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td #cell\n [ngsContentEditorContentEditable]=\"cell.content\"\n [props]=\"cell.props\"\n (contentChanged)=\"cell.content = $event\"\n (blur)=\"clearCellsSelection()\"\n [rowSpan]=\"cell.options.rowspan\"\n [colSpan]=\"cell.options.colspan\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n <div class=\"resize-end\" ngsTableColumnsManager\n (columnManagingStart)=\"onColumnManagingStart()\"\n (columnManagingEnd)=\"onColumnManagingEnd()\"\n (columnAdded)=\"onColAdded()\"\n (columnDeleted)=\"onColDeleted()\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"resize-icon\" />\n </div>\n <div class=\"resize-bottom\" ngsTableRowsManager\n (rowManagingStart)=\"onRowManagingStart()\"\n (rowManagingEnd)=\"onRowManagingEnd()\"\n (rowAdded)=\"onRowAdded()\"\n (rowDeleted)=\"onRowDeleted()\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"resize-icon\" />\n </div>\n </ngs-draggable-table>\n </div>\n</div>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-content-editor-table-block.component-hJ4OxKRX.mjs","sources":["../../../projects/components/content-editor/src/table-columns-manager.directive.ts","../../../projects/components/content-editor/src/table-rows-manager.directive.ts","../../../projects/components/content-editor/src/resizable-table.directive.ts","../../../projects/components/content-editor/src/draggable-table/draggable-table.component.ts","../../../projects/components/content-editor/src/draggable-table/draggable-table.component.html","../../../projects/components/content-editor/src/_builder/table-block/table-block.component.ts","../../../projects/components/content-editor/src/_builder/table-block/table-block.component.html"],"sourcesContent":["import { afterNextRender, DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[ngsTableColumnsManager]',\n host: {\n '(contextmenu)': 'onContextMenu($event)',\n }\n})\nexport class TableColumnsManagerDirective {\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n\n private _dragging = false;\n private _elementPosition = 0;\n private _cellWidth = 90;\n\n readonly columnAdded = output();\n readonly columnDeleted = output();\n readonly columnManagingStart = output();\n readonly columnManagingEnd = output();\n\n constructor() {\n afterNextRender(() => {\n this._initResize();\n });\n }\n\n protected onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _initResize() {\n fromEvent(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n this._dragging = true;\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n this._elementPosition = elementRect.x + elementRect.width / 2;\n this.columnManagingStart.emit();\n });\n fromEvent(this._document, 'mousemove')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n const elementRightPosition = elementRect.x + elementRect.width;\n const elementLeftPosition = elementRect.x;\n\n if (event.clientX > (this._elementPosition + this._cellWidth) && event.clientX > (elementRightPosition + this._cellWidth)) {\n this._elementPosition = elementRightPosition + this._cellWidth;\n this.columnAdded.emit();\n } else if (event.clientX < (this._elementPosition - this._cellWidth) && event.clientX < (elementLeftPosition - this._cellWidth)) {\n this._elementPosition = elementLeftPosition - this._cellWidth;\n this.columnDeleted.emit();\n }\n }\n });\n fromEvent(this._document, 'mouseup')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n this._dragging = false;\n this.columnManagingEnd.emit();\n }\n });\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsTableRowsManager]',\n host: {\n '(contextmenu)': 'onContextMenu($event)',\n }\n})\nexport class TableRowsManagerDirective {\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n\n private _dragging = false;\n private _elementPosition = 0;\n private _cellHeight = 24;\n\n readonly rowManagingStart = output();\n readonly rowManagingEnd = output();\n readonly rowAdded = output();\n readonly rowDeleted = output();\n\n constructor() {\n afterNextRender(() => {\n this._initResize();\n });\n }\n\n protected onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _initResize() {\n fromEvent(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n this._dragging = true;\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n this._elementPosition = elementRect.y + elementRect.height / 2;\n this.rowManagingStart.emit();\n });\n fromEvent(this._document, 'mousemove')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n const elementRect = this._elementRef.nativeElement.getBoundingClientRect();\n const elementBottomPosition = elementRect.y + elementRect.height;\n const elementTopPosition = elementRect.y;\n\n if (event.clientY > (this._elementPosition + this._cellHeight) && event.clientY > (elementBottomPosition + this._cellHeight)) {\n this._elementPosition = elementBottomPosition + this._cellHeight;\n this.rowAdded.emit();\n } else if (event.clientY < (this._elementPosition - this._cellHeight) && event.clientY < (elementTopPosition - this._cellHeight)) {\n this._elementPosition = elementTopPosition - this._cellHeight;\n this.rowDeleted.emit();\n }\n }\n });\n fromEvent(this._document, 'mouseup')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: any) => {\n if (this._dragging) {\n this._dragging = false;\n this.rowManagingEnd.emit();\n }\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n OnInit,\n OnDestroy,\n Renderer2,\n NgZone,\n Input,\n AfterViewInit,\n output, inject, PLATFORM_ID\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { isPlatformServer } from '@angular/common';\n\nconst RESIZING_TABLE_CLASS = 'table-resizing';\nconst RESIZE_HANDLE_ACTIVE_CLASS = 'resize-handle--active';\n\n@Directive({\n selector: 'table[ngsResizableTable]'\n})\nexport class ResizableTableDirective implements OnInit, AfterViewInit, OnDestroy {\n private _platformId = inject(PLATFORM_ID);\n\n @Input() minColumnWidth = 120;\n @Input() resizeHandleWidth = 5;\n @Input() mutationObserverDebounceTime = 20;\n\n readonly columnWidthChange = output<{columnIndex: number, width: number}>();\n readonly columnWidthChangeStart = output<void>();\n readonly columnWidthChangeEnd = output<void>();\n\n private table: HTMLTableElement;\n private wrapper: HTMLDivElement | null = null;\n private resizeHandle: HTMLDivElement | null = null;\n private colgroup: HTMLTableColElement | null = null;\n private colElements: HTMLTableColElement[] = [];\n\n private isResizing = false;\n private resizingColumnIndex = -1;\n private resizingColElement: HTMLTableColElement | null = null;\n private startX = 0;\n private startWidth = 0;\n private startEdgeXRelative = 0;\n\n private activeHoverColumnIndex = -1;\n private isHandleVisible = false;\n\n private destroy$ = new Subject<void>();\n private hideHandleDebounced: () => void;\n private syncColumnsDebounced: () => void; // Debounce для синхронизации колонок\n\n private listeners: (() => void)[] = [];\n private observer: MutationObserver | null = null;\n\n constructor(\n private el: ElementRef<HTMLTableElement>,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n this.table = this.el.nativeElement;\n this.hideHandleDebounced = this.debounce(() => this.hideResizeHandle(), 50);\n this.syncColumnsDebounced = this.debounce(() => {\n this.syncColumnsAndColgroup();\n this.ensureColWidths();\n\n if (this.isHandleVisible) {\n this.hideResizeHandle();\n }\n }, this.mutationObserverDebounceTime);\n }\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this.checkTableLayout();\n this.createWrapperAndHandle();\n this.syncColumnsAndColgroup();\n\n if (!this.wrapper || !this.resizeHandle) {\n console.error('ResizableTableDirective: Wrapper or handle creation failed.');\n this.cleanupWrapperAndHandleOnError();\n return;\n }\n\n this.addWrapperListeners();\n this.setupGlobalResizeListeners();\n this.setupMutationObserver();\n this.ensureColWidths();\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n this.destroy$.next();\n this.destroy$.complete();\n this.listeners.forEach(unlisten => unlisten());\n this.cleanupWrapperAndHandle();\n }\n\n private checkTableLayout(): void { /* ... как раньше ... */\n if (getComputedStyle(this.table).tableLayout !== 'fixed') {\n console.warn('ResizableTableDirective: table-layout: fixed is highly recommended.');\n this.renderer.setStyle(this.table, 'table-layout', 'fixed');\n }\n }\n\n private syncColumnsAndColgroup(): void {\n let requiredColumnCount = 0;\n const firstDataRow = this.table.querySelector('tbody > tr:first-child') as HTMLTableRowElement | null;\n\n if (firstDataRow) {\n requiredColumnCount = firstDataRow.cells.length;\n } else {\n // Если tbody пуст, можно попробовать определить по thead, если он есть\n const firstHeadRow = this.table.querySelector('thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (firstHeadRow) {\n requiredColumnCount = firstHeadRow.cells.length;\n } else {\n if(this.colgroup) {\n this.colElements.forEach(col => this.renderer.removeChild(this.colgroup, col));\n }\n\n this.colElements = [];\n return;\n }\n }\n\n this.colgroup = this.table.querySelector('colgroup') as HTMLTableColElement;\n\n const currentColElements = Array.from(this.colgroup.querySelectorAll('col'));\n const currentColCount = currentColElements.length;\n\n if (requiredColumnCount > currentColCount) {\n for (let i = currentColCount; i < requiredColumnCount; i++) {\n const col = this.renderer.createElement('col');\n this.renderer.appendChild(this.colgroup, col);\n }\n }\n\n else if (requiredColumnCount < currentColCount) {\n for (let i = currentColCount - 1; i >= requiredColumnCount; i--) {\n this.renderer.removeChild(this.colgroup, currentColElements[i]);\n }\n }\n\n this.colElements = Array.from(this.colgroup.querySelectorAll('col'));\n }\n\n private ensureColWidths(): void {\n const referenceRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!referenceRow || this.colElements.length !== referenceRow.cells.length) {\n return;\n }\n\n this.colElements.forEach((col, index) => {\n if (!col.style.width && referenceRow.cells[index]) {\n const cellWidth = referenceRow.cells[index].getBoundingClientRect().width;\n\n if (cellWidth > 0) {\n this.renderer.setStyle(col, 'width', `${cellWidth}px`);\n }\n }\n });\n }\n\n private setupMutationObserver(): void {\n const targetNode = this.table.querySelector('tbody') ?? this.table;\n\n const config: MutationObserverInit = {\n childList: true,\n subtree: true\n };\n\n const callback: MutationCallback = (mutationsList, observer) => {\n this.ngZone.runOutsideAngular(() => {\n this.syncColumnsDebounced();\n });\n };\n this.observer = new MutationObserver(callback);\n this.observer.observe(targetNode, config);\n }\n\n private createWrapperAndHandle(): void {\n this.wrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.wrapper, 'resizable-table-wrapper');\n this.resizeHandle = this.renderer.createElement('div');\n this.renderer.addClass(this.resizeHandle, 'resizable-table-handle');\n this.renderer.setStyle(this.resizeHandle, 'width', `${this.resizeHandleWidth}px`);\n\n const parent = this.renderer.parentNode(this.table);\n\n if (parent) {\n this.renderer.insertBefore(parent, this.wrapper, this.table);\n this.renderer.appendChild(this.wrapper, this.table);\n this.renderer.appendChild(this.wrapper, this.resizeHandle);\n } else {\n console.error('ResizableTableDirective: Table has no parent node.');\n this.wrapper = null; this.resizeHandle = null;\n }\n }\n\n private cleanupWrapperAndHandle(): void {\n if (this.wrapper && this.wrapper.parentNode) {\n if (this.table.parentNode === this.wrapper) {\n this.renderer.insertBefore(this.wrapper.parentNode, this.table, this.wrapper);\n }\n this.renderer.removeChild(this.wrapper.parentNode, this.wrapper);\n } else if (this.resizeHandle && this.resizeHandle.parentNode) {\n this.renderer.removeChild(this.resizeHandle.parentNode, this.resizeHandle);\n }\n this.wrapper = null;\n this.resizeHandle = null;\n }\n\n private cleanupWrapperAndHandleOnError(): void { /* ... как раньше ... */\n if (this.wrapper && this.table.parentNode === this.wrapper) {\n const parent = this.wrapper.parentNode;\n if(parent) {\n this.renderer.insertBefore(parent, this.table, this.wrapper);\n this.renderer.removeChild(parent, this.wrapper);\n }\n }\n this.wrapper = null;\n this.resizeHandle = null;\n }\n\n private addWrapperListeners(): void {\n if (!this.wrapper) return;\n this.ngZone.runOutsideAngular(() => {\n const mm = this.renderer.listen(this.wrapper, 'mousemove', (e: MouseEvent) => this.handleMouseMoveWrapper(e));\n this.listeners.push(mm);\n });\n const md = this.renderer.listen(this.wrapper, 'mousedown', (e: MouseEvent) => this.handleMouseDownWrapper(e));\n const ml = this.renderer.listen(this.wrapper, 'mouseleave', (e: MouseEvent) => { if (!this.isResizing) this.hideResizeHandle(); });\n this.listeners.push(md, ml);\n }\n\n private handleMouseMoveWrapper(event: MouseEvent): void {\n if (this.isResizing || !this.wrapper) {\n return;\n }\n\n const wrapperRect = this.wrapper.getBoundingClientRect();\n const mouseXRelative = event.clientX - wrapperRect.left;\n let targetColumnIndex = -1;\n let edgeXPosition = 0;\n\n const firstRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!firstRow) {\n return;\n }\n\n if (this.colElements.length !== firstRow.cells.length) {\n return;\n }\n\n for (let i = 0; i < firstRow.cells.length; i++) {\n const cell = firstRow.cells[i];\n\n if (!cell) {\n continue;\n }\n\n const cellRect = cell.getBoundingClientRect();\n const cellEdgeX = cellRect.right - wrapperRect.left;\n\n if (Math.abs(mouseXRelative - cellEdgeX) <= this.resizeHandleWidth / 2) {\n if (this.colElements[i]) {\n targetColumnIndex = i;\n edgeXPosition = cellEdgeX;\n break;\n }\n }\n }\n\n if (targetColumnIndex !== -1) {\n this.showResizeHandle(edgeXPosition);\n this.activeHoverColumnIndex = targetColumnIndex;\n } else {\n this.hideHandleDebounced();\n }\n }\n\n private handleMouseDownWrapper(event: MouseEvent): void {\n if (this.activeHoverColumnIndex !== -1 && this.isHandleVisible && this.wrapper) {\n const targetCol = this.colElements[this.activeHoverColumnIndex];\n const firstRow = this.table.querySelector('tbody > tr:first-child, thead > tr:first-child') as HTMLTableRowElement | null;\n\n if (!targetCol || !firstRow || !firstRow.cells[this.activeHoverColumnIndex]) {\n return;\n }\n\n this.isResizing = true;\n this.resizingColumnIndex = this.activeHoverColumnIndex;\n this.resizingColElement = targetCol;\n this.startX = event.clientX;\n\n const colStyleWidth = this.resizingColElement.style.width;\n this.startWidth = colStyleWidth && colStyleWidth.endsWith('px')\n ? parseFloat(colStyleWidth)\n : this.resizingColElement.getBoundingClientRect().width;\n\n if (this.startWidth <= 0 ) {\n this.startWidth = firstRow.cells[this.resizingColumnIndex].getBoundingClientRect().width;\n }\n\n const wrapperRect = this.wrapper.getBoundingClientRect();\n const cellRect = firstRow.cells[this.resizingColumnIndex].getBoundingClientRect();\n this.startEdgeXRelative = cellRect.right - wrapperRect.left;\n\n this.renderer.addClass(this.table, RESIZING_TABLE_CLASS);\n event.preventDefault();\n this.columnWidthChangeStart.emit();\n }\n }\n\n private showResizeHandle(edgeX: number): void {\n if (!this.resizeHandle || !this.wrapper) {\n return;\n }\n\n const handleLeft = edgeX - (this.resizeHandleWidth / 2);\n this.renderer.setStyle(this.resizeHandle, 'left', `${handleLeft}px`);\n this.renderer.setStyle(this.resizeHandle, 'top', `${this.table.offsetTop}px`);\n this.renderer.setStyle(this.resizeHandle, 'height', `${this.table.offsetHeight}px`);\n this.renderer.addClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = true;\n }\n\n private hideResizeHandle(): void {\n if (this.resizeHandle && this.isHandleVisible) {\n this.renderer.removeClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = false;\n this.activeHoverColumnIndex = -1;\n }\n }\n\n private debounce(func: (...args: any[]) => void, wait: number): (...args: any[]) => void {\n let timeout: any;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n }\n\n private setupGlobalResizeListeners(): void {\n this.ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (!this.isResizing || !this.resizingColElement || !this.wrapper || !this.resizeHandle) return;\n\n if (!this.resizingColElement.parentElement) {\n this.stopResizing();\n return;\n }\n\n const deltaX = event.clientX - this.startX;\n const newWidth = this.startWidth + deltaX;\n const finalWidth = Math.max(newWidth, this.minColumnWidth);\n this.renderer.setStyle(this.resizingColElement, 'width', `${finalWidth}px`);\n const actualDeltaX = finalWidth - this.startWidth;\n const newEdgeXRelative = this.startEdgeXRelative + actualDeltaX;\n const handleLeft = newEdgeXRelative - (this.resizeHandleWidth / 2);\n this.renderer.setStyle(this.resizeHandle, 'left', `${handleLeft}px`);\n\n if (!this.isHandleVisible) {\n this.renderer.addClass(this.resizeHandle, RESIZE_HANDLE_ACTIVE_CLASS);\n this.isHandleVisible = true;\n }\n\n this.updateHandleHeight();\n });\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isResizing) {\n this.ngZone.run(() => {\n this.stopResizing();\n });\n }\n });\n });\n }\n\n private stopResizing(): void {\n this.columnWidthChange.emit({\n columnIndex: this.resizingColumnIndex,\n width: this.resizingColElement?.getBoundingClientRect().width as number\n });\n this.renderer.removeClass(this.table, RESIZING_TABLE_CLASS);\n this.hideResizeHandle();\n this.isResizing = false;\n this.resizingColumnIndex = -1;\n this.resizingColElement = null;\n this.columnWidthChangeEnd.emit();\n }\n\n private updateHandleHeight(): void {\n if (this.resizeHandle && this.isHandleVisible && this.wrapper) {\n requestAnimationFrame(() => {\n if(this.isHandleVisible && this.resizeHandle && this.table) {\n this.renderer.setStyle(this.resizeHandle, 'top', `${this.table.offsetTop}px`);\n this.renderer.setStyle(this.resizeHandle, 'height', `${this.table.offsetHeight}px`);\n }\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n AfterViewInit,\n NgZone,\n ChangeDetectionStrategy,\n inject,\n HostBinding,\n output,\n input,\n booleanAttribute,\n PLATFORM_ID,\n DestroyRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { CONTENT_BUILDER } from '../types';\nimport { ContentBuilderComponent } from '../content-builder/content-builder.component';\nimport { Subscription, Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst HIDE_DELAY_MS = 300;\n\ninterface ColumnInfo {\n index: number;\n left: number;\n width: number;\n center: number;\n}\n\ninterface RowInfo {\n index: number;\n element: HTMLTableRowElement;\n top: number;\n height: number;\n center: number;\n}\n\n@Component({\n selector: 'ngs-draggable-table',\n exportAs: 'ngsDraggableTable',\n imports: [],\n templateUrl: './draggable-table.component.html',\n styleUrl: './draggable-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'disabled() || null'\n }\n})\nexport class DraggableTableComponent implements OnInit, AfterViewInit, OnDestroy {\n private contentBuilder = inject<ContentBuilderComponent>(CONTENT_BUILDER);\n private _platformId = inject(PLATFORM_ID);\n private elRef = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n private destroyRef = inject(DestroyRef);\n private table: HTMLTableElement | null = null;\n private suppressInteractions = false;\n private columnHandler!: HTMLElement;\n private rowHandler!: HTMLElement;\n private dropIndicator!: HTMLElement;\n private hoveredCell: HTMLElement | null = null;\n private hoveredColumnIndex: number = -1;\n private hoveredRowIndex: number = -1;\n private isDragging = false;\n private dragMode: 'row' | 'column' | null = null;\n private startX = 0;\n private startY = 0;\n private handlerStartY = 0;\n private draggedElement: HTMLElement | null = null;\n private draggedElementSource: HTMLElement | null = null;\n private startElementIndex = -1;\n private currentDropIndex = -1;\n private hideTimeoutId: any = null;\n private columnInfo: ColumnInfo[] = [];\n private rowInfo: RowInfo[] = [];\n private listeners: {\n name: string;\n type: 'element' | 'document';\n target?: () => EventTarget | null;\n event: string;\n handler: (event: any) => void;\n cleanup?: () => void\n }[] = [];\n private boundOnDrag: (event: MouseEvent) => void;\n private boundEndDrag: (event: MouseEvent) => void;\n private handlerSize = 18;\n private handlerOffset = -9;\n private indicatorThickness = 3;\n private suppressResetTimeoutId: any = null;\n private scrollContainerRef: Element | Window | null = null; // оставлено для обратной совместимости, не используется напрямую\n private scrollSub: Subscription | null = null;\n @HostBinding('class.draggable-table-host') hostClass = true;\n\n disabled = input(false, {\n transform: booleanAttribute\n });\n\n readonly columnMoved = output<{ startElementIndex: number, finalTargetIndex: number }>();\n readonly rowMoved = output<{ startElementIndex: number, finalTargetIndex: number }>();\n readonly moveStart = output<void>();\n readonly moveEnd = output<void>();\n\n constructor() {\n this.boundOnDrag = this.onDrag.bind(this);\n this.boundEndDrag = this.endDrag.bind(this);\n }\n\n ngOnInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.createHandlers();\n this.createDropIndicator();\n this.prepareListeners();\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.table = this.elRef.nativeElement.querySelector('table');\n if (!this.table) {\n return;\n }\n if (getComputedStyle(this.table).position === 'static') {\n this.renderer.setStyle(this.table, 'position', 'relative');\n }\n this.renderer.appendChild(this.table, this.columnHandler);\n this.renderer.appendChild(this.table, this.rowHandler);\n this.renderer.appendChild(this.table, this.dropIndicator);\n this.attachListeners('element');\n this.bindScrollContainerListener();\n }\n\n ngOnDestroy(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n this.unbindScrollContainerListener();\n this.detachListeners('all');\n this.cancelHideTimer();\n if (this.suppressResetTimeoutId) {\n clearTimeout(this.suppressResetTimeoutId);\n this.suppressResetTimeoutId = null;\n }\n if (this.dropIndicator?.parentNode) {\n this.renderer.removeChild(this.dropIndicator.parentNode, this.dropIndicator);\n }\n if (this.columnHandler?.parentNode) {\n this.renderer.removeChild(this.columnHandler.parentNode, this.columnHandler);\n }\n if (this.rowHandler?.parentNode) {\n this.renderer.removeChild(this.rowHandler.parentNode, this.rowHandler);\n }\n if (this.table) {\n this.renderer.removeClass(this.table, 'dragging-column');\n this.renderer.removeClass(this.table, 'dragging-row');\n this.table.querySelectorAll('.dragging-source').forEach(el => this.renderer.removeClass(el, 'dragging-source'));\n this.table.querySelectorAll('.col-highlight').forEach(el => this.renderer.removeClass(el, 'col-highlight'));\n }\n document.body.style.cursor = '';\n this.columnInfo = [];\n this.rowInfo = [];\n this.currentDropIndex = -1;\n this.suppressInteractions = false;\n }\n\n private prepareListeners(): void {\n this.listeners = [\n {\n name: 'tableMouseOver',\n type: 'element',\n target: () => this.table,\n event: 'mouseover',\n handler: this.onTableMouseOver.bind(this)\n },\n {\n name: 'tableMouseLeave',\n type: 'element',\n target: () => this.table,\n event: 'mouseleave',\n handler: this.onTableMouseLeave.bind(this)\n },\n {\n name: 'colHandlerMouseDown',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mousedown',\n handler: (e: MouseEvent) => this.onHandlerMouseDown(e, 'column')\n },\n {\n name: 'colHandlerMouseEnter',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mouseenter',\n handler: this.onHandlerMouseEnter.bind(this)\n },\n {\n name: 'colHandlerMouseLeave',\n type: 'element',\n target: () => this.columnHandler,\n event: 'mouseleave',\n handler: this.onHandlerMouseLeave.bind(this)\n },\n {\n name: 'rowHandlerMouseDown',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mousedown',\n handler: (e: MouseEvent) => this.onHandlerMouseDown(e, 'row')\n },\n {\n name: 'rowHandlerMouseEnter',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mouseenter',\n handler: this.onHandlerMouseEnter.bind(this)\n },\n {\n name: 'rowHandlerMouseLeave',\n type: 'element',\n target: () => this.rowHandler,\n event: 'mouseleave',\n handler: this.onHandlerMouseLeave.bind(this)\n },\n {name: 'docMouseMove', type: 'document', target: () => document, event: 'mousemove', handler: this.boundOnDrag},\n {\n name: 'docMouseUp', type: 'document', target: () => document, event: 'mouseup', handler: (e: MouseEvent) => {\n this.suppressInteractions = false;\n this.boundEndDrag(e);\n }\n },\n {\n name: 'winBlur', type: 'document', target: () => window, event: 'blur', handler: () => {\n this.suppressInteractions = false;\n }\n },\n {\n name: 'visibilityChange', type: 'document', target: () => document, event: 'visibilitychange', handler: () => {\n if (document.visibilityState !== 'visible') {\n this.suppressInteractions = false;\n }\n }\n },\n ];\n }\n\n private attachListeners(type: 'element' | 'document' | 'all' = 'element'): void {\n this.ngZone.runOutsideAngular(() => {\n this.listeners.forEach(listener => {\n if (listener.type === 'document' && type !== 'document' && type !== 'all') return;\n if (listener.type === 'element' && type === 'document') return;\n if (listener.cleanup || !listener.target) return;\n const targetElement = listener.target();\n if (!targetElement) return;\n listener.cleanup = this.renderer.listen(targetElement, listener.event, listener.handler);\n });\n });\n }\n\n private detachListeners(type: 'element' | 'document' | 'all' = 'all'): void {\n this.listeners.forEach(listener => {\n if (listener.type === 'document' && type !== 'document' && type !== 'all') return;\n if (listener.type === 'element' && type === 'document') return;\n if (listener.cleanup) {\n listener.cleanup();\n listener.cleanup = undefined;\n }\n });\n }\n\n private onTableMouseOver(event: MouseEvent): void {\n this.cancelHideTimer();\n this.ensureScrollContainerListener();\n if (!this.table || this.isDragging) return;\n if (this.suppressInteractions) return;\n const anyButtonDown = typeof event.buttons === 'number' ? event.buttons !== 0 : false;\n if (anyButtonDown) return;\n const target = event.target as HTMLElement;\n const cell = target.closest('td, th') as HTMLTableCellElement | null;\n if (cell && this.table.contains(cell)) {\n const currentColumnIndex = cell.cellIndex;\n const currentRow = cell.closest('tr');\n const currentRowIndex = currentRow?.parentElement?.tagName === 'TBODY' ? Array.from(currentRow.parentElement.children).indexOf(currentRow) : -1;\n this.hoveredCell = cell;\n if (currentColumnIndex !== this.hoveredColumnIndex || this.columnHandler.style.visibility === 'hidden') {\n this.hoveredColumnIndex = currentColumnIndex;\n this.positionColumnHandler(cell);\n this.renderer.setStyle(this.columnHandler, 'visibility', 'visible');\n }\n if (currentRowIndex !== -1) {\n if (currentRowIndex !== this.hoveredRowIndex || this.rowHandler.style.visibility === 'hidden') {\n this.hoveredRowIndex = currentRowIndex;\n this.positionRowHandler(cell);\n this.renderer.setStyle(this.rowHandler, 'visibility', 'visible');\n }\n } else if (this.hoveredRowIndex !== -1) {\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.hoveredRowIndex = -1;\n }\n }\n }\n\n private onTableMouseLeave(event: MouseEvent): void {\n if (this.isDragging) return;\n if (this.suppressInteractions) return;\n const relatedTarget = event.relatedTarget as Node;\n if (relatedTarget !== this.columnHandler && relatedTarget !== this.rowHandler) {\n this.scheduleHideHandlers();\n }\n }\n\n private onHandlerMouseEnter(): void {\n this.cancelHideTimer();\n }\n\n private onHandlerMouseLeave(event: MouseEvent): void {\n if (this.isDragging) return;\n if (this.suppressInteractions) return;\n const relatedTarget = event.relatedTarget as Node;\n const isOverTable = relatedTarget && this.table && this.table.contains(relatedTarget);\n const isOverOtherHandler = (event.target === this.columnHandler && relatedTarget === this.rowHandler) || (event.target === this.rowHandler && relatedTarget === this.columnHandler);\n if (!isOverTable && !isOverOtherHandler) {\n this.scheduleHideHandlers();\n }\n }\n\n private onHandlerMouseDown(event: MouseEvent, mode: 'row' | 'column'): void {\n const isPrimary = (event.button === 0) && ((event.buttons & 1) === 1);\n if (!isPrimary || event.ctrlKey) {\n this.suppressInteractions = true;\n event.preventDefault();\n event.stopPropagation();\n this.cancelHideTimer();\n if (this.suppressResetTimeoutId) {\n clearTimeout(this.suppressResetTimeoutId);\n this.suppressResetTimeoutId = null;\n }\n this.suppressResetTimeoutId = setTimeout(() => {\n this.suppressInteractions = false;\n this.suppressResetTimeoutId = null;\n }, 1200);\n return;\n }\n this.startDrag(event, mode);\n }\n\n private createHandlers(): void {\n this.columnHandler = this.renderer.createElement('div');\n this.columnHandler.oncontextmenu = ((e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n this.renderer.addClass(this.columnHandler, 'drag-handler');\n this.renderer.addClass(this.columnHandler, 'column-handler');\n this.renderer.setStyle(this.columnHandler, 'position', 'fixed');\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.columnHandler, 'z-index', '1000');\n this.rowHandler = this.renderer.createElement('div');\n this.rowHandler.oncontextmenu = ((e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n this.renderer.addClass(this.rowHandler, 'drag-handler');\n this.renderer.addClass(this.rowHandler, 'row-handler');\n this.renderer.setStyle(this.rowHandler, 'position', 'fixed');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.rowHandler, 'z-index', '1000');\n }\n\n private createDropIndicator(): void {\n this.dropIndicator = this.renderer.createElement('div');\n this.renderer.addClass(this.dropIndicator, 'drop-indicator');\n }\n\n private positionColumnHandler(cellOrIndex: HTMLElement | number): void {\n if (!this.table) {\n return;\n }\n let targetCell: HTMLElement | null = null;\n if (typeof cellOrIndex === 'number') {\n targetCell = this.findFirstVisibleCellInColumn(cellOrIndex);\n if (!targetCell) return;\n } else {\n targetCell = cellOrIndex;\n }\n const tableRect = this.table.getBoundingClientRect();\n const cellRect = targetCell.getBoundingClientRect();\n const colHandlerLeft = cellRect.left + (cellRect.width / 2) - (this.handlerSize / 2);\n const colHandlerTop = tableRect.top - this.handlerSize - this.handlerOffset;\n this.renderer.setStyle(this.columnHandler, 'top', `${colHandlerTop}px`);\n this.renderer.setStyle(this.columnHandler, 'left', `${colHandlerLeft}px`);\n }\n\n private positionRowHandler(cell: HTMLElement): void {\n if (!this.table || this.isDragging) return;\n const tableRect = this.table.getBoundingClientRect();\n const cellRect = cell.getBoundingClientRect();\n const rowHandlerTop = cellRect.top + (cellRect.height / 2) - (this.handlerSize / 2);\n const rowHandlerLeft = tableRect.left - this.handlerSize - this.handlerOffset;\n this.renderer.setStyle(this.rowHandler, 'top', `${rowHandlerTop}px`);\n this.renderer.setStyle(this.rowHandler, 'left', `${rowHandlerLeft}px`);\n }\n\n private scheduleHideHandlers(): void {\n this.cancelHideTimer();\n this.hideTimeoutId = setTimeout(() => {\n this.hideHandlers();\n this.hideTimeoutId = null;\n }, HIDE_DELAY_MS);\n }\n\n private cancelHideTimer(): void {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = null;\n }\n }\n\n private hideHandlers(): void {\n if (!this.isDragging) {\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.hoveredCell = null;\n this.hoveredColumnIndex = -1;\n this.hoveredRowIndex = -1;\n }\n }\n\n private startDrag(event: MouseEvent, mode: 'row' | 'column'): void {\n const isPrimary = (event.button === 0) && ((event.buttons & 1) === 1);\n if (!isPrimary || event.ctrlKey) {\n return;\n }\n this.cancelHideTimer();\n const sourceRow = mode === 'row' ? this.hoveredCell?.closest('tr') : null;\n\n if (\n !this.table || (mode === 'row' && this.hoveredRowIndex < 0) ||\n (mode === 'column' && this.hoveredColumnIndex < 0) ||\n (mode === 'row' && sourceRow?.parentElement?.tagName !== 'TBODY')\n ) {\n return;\n }\n event.preventDefault();\n this.isDragging = true;\n this.dragMode = mode;\n this.startX = event.clientX;\n this.startY = event.clientY;\n this.currentDropIndex = -1;\n if (mode === 'column') {\n this.startElementIndex = this.hoveredColumnIndex;\n this.currentDropIndex = this.startElementIndex;\n this.draggedElement = this.columnHandler;\n this.draggedElementSource = null;\n this.renderer.addClass(this.table, 'dragging-column');\n this.styleColumnAsSource(this.startElementIndex, true);\n this.calculateColumnInfo();\n this.updateColumnHandlerPositionOnDrag(event.clientX);\n this.renderer.setStyle(this.columnHandler, 'visibility', 'visible');\n this.renderer.setStyle(this.rowHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n } else {\n this.startElementIndex = this.hoveredRowIndex;\n this.currentDropIndex = this.startElementIndex;\n this.draggedElement = this.rowHandler;\n this.draggedElementSource = sourceRow!;\n this.renderer.addClass(this.draggedElementSource, 'dragging-source');\n this.renderer.addClass(this.table, 'dragging-row');\n this.calculateRowInfo();\n this.handlerStartY = parseFloat(this.rowHandler.style.top || '0');\n this.updateRowHandlerPositionOnDrag(event.clientY);\n this.renderer.setStyle(this.rowHandler, 'visibility', 'visible');\n this.renderer.setStyle(this.columnHandler, 'visibility', 'hidden');\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n }\n if (this.draggedElement) {\n this.renderer.addClass(this.draggedElement, 'dragging-active-handler');\n }\n this.attachListeners('document');\n }\n\n private onDrag(event: MouseEvent): void {\n if (!this.isDragging || !this.draggedElement || !this.table) return;\n if ((event.buttons & 1) !== 1) {\n this.endDrag(event);\n return;\n }\n event.preventDefault();\n this.moveStart.emit();\n const currentX = event.clientX;\n const currentY = event.clientY;\n document.body.style.cursor = 'grabbing';\n if (this.dragMode === 'row') {\n this.updateRowHandlerPositionOnDrag(currentY);\n const currentHandlerCenterY = parseFloat(this.rowHandler.style.top || '0') + this.handlerSize / 2;\n const newVisualTargetIndex = this.getVisualTargetRowIndex(currentHandlerCenterY);\n if (newVisualTargetIndex !== -1) {\n this.updateDropIndicator(newVisualTargetIndex, 'row');\n this.currentDropIndex = newVisualTargetIndex;\n } else {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.currentDropIndex = -1;\n }\n this.clearDropHighlights();\n } else if (this.dragMode === 'column') {\n this.updateColumnHandlerPositionOnDrag(currentX);\n const currentHandlerCenterX = parseFloat(this.columnHandler.style.left || '0') + this.handlerSize / 2;\n const newVisualTargetIndex = this.getVisualTargetColumnIndex(currentHandlerCenterX);\n if (newVisualTargetIndex !== -1) {\n this.updateDropIndicator(newVisualTargetIndex, 'column');\n this.currentDropIndex = newVisualTargetIndex;\n } else {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.currentDropIndex = -1;\n }\n this.clearDropHighlights();\n }\n }\n\n private getVisualTargetColumnIndex(currentHandlerCenterX: number): number {\n if (this.startElementIndex < 0 || !this.columnInfo?.length) return -1;\n let potentialTargetIndex = this.startElementIndex;\n const currentGeometry = this.columnInfo;\n for (const targetColumn of currentGeometry) {\n if (targetColumn.index === this.startElementIndex) continue;\n const targetCenter = targetColumn.center;\n const threshold = targetColumn.width * 0.5;\n if (targetColumn.index > this.startElementIndex && currentHandlerCenterX > targetCenter - threshold) {\n potentialTargetIndex = Math.max(potentialTargetIndex, targetColumn.index);\n } else if (targetColumn.index < this.startElementIndex && currentHandlerCenterX < targetCenter + threshold) {\n potentialTargetIndex = (potentialTargetIndex === this.startElementIndex) ? targetColumn.index : Math.min(potentialTargetIndex, targetColumn.index);\n }\n }\n return potentialTargetIndex;\n }\n\n private getVisualTargetRowIndex(currentHandlerCenterY: number): number {\n if (this.startElementIndex < 0 || !this.table?.tBodies[0] || !this.rowInfo?.length) return -1;\n let potentialTargetIndex = this.startElementIndex;\n const currentGeometry = this.rowInfo;\n for (const targetRow of currentGeometry) {\n if (targetRow.index === this.startElementIndex) continue;\n const targetCenter = targetRow.center;\n const threshold = targetRow.height * 0.5;\n if (targetRow.index > this.startElementIndex && currentHandlerCenterY > targetCenter - threshold) {\n potentialTargetIndex = Math.max(potentialTargetIndex, targetRow.index);\n } else if (targetRow.index < this.startElementIndex && currentHandlerCenterY < targetCenter + threshold) {\n potentialTargetIndex = (potentialTargetIndex === this.startElementIndex) ? targetRow.index : Math.min(potentialTargetIndex, targetRow.index);\n }\n }\n return potentialTargetIndex;\n }\n\n private updateColumnHandlerPositionOnDrag(currentX: number): void {\n if (!this.table || !this.columnHandler) return;\n const handlerLeft = currentX - (this.handlerSize / 2);\n this.renderer.setStyle(this.columnHandler, 'left', `${handlerLeft}px`);\n }\n\n private updateRowHandlerPositionOnDrag(currentY: number): void {\n if (!this.table || !this.rowHandler) return;\n const deltaY = currentY - this.startY;\n const handlerTop = this.handlerStartY + deltaY;\n this.renderer.setStyle(this.rowHandler, 'top', `${handlerTop}px`);\n }\n\n private endDrag(event: MouseEvent): void {\n if (!this.isDragging) return;\n this.detachListeners('document');\n event.preventDefault();\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n if (!this.table) {\n this.cleanupDragState();\n return;\n }\n const finalTargetIndex = this.currentDropIndex;\n if (this.startElementIndex !== -1 && finalTargetIndex !== -1 && finalTargetIndex !== this.startElementIndex) {\n if (this.dragMode === 'column') {\n this.moveColumn(this.startElementIndex, finalTargetIndex);\n this.columnMoved.emit({\n startElementIndex: this.startElementIndex,\n finalTargetIndex\n });\n } else if (this.dragMode === 'row') {\n this.moveRow(this.startElementIndex, finalTargetIndex);\n this.rowMoved.emit({\n startElementIndex: this.startElementIndex,\n finalTargetIndex\n });\n }\n }\n this.cleanupDragState();\n this.moveEnd.emit();\n this.table\n .querySelectorAll('td.dragging-source, th.dragging-source')\n .forEach(cell => {\n this.renderer.removeClass(cell, 'dragging-source');\n });\n }\n\n private cleanupDragState(): void {\n const draggedMode = this.dragMode;\n const startIndex = this.startElementIndex;\n const sourceElement = this.draggedElementSource;\n const activeHandler = this.draggedElement;\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n this.isDragging = false;\n this.dragMode = null;\n this.startElementIndex = -1;\n this.draggedElement = null;\n this.draggedElementSource = null;\n this.columnInfo = [];\n this.rowInfo = [];\n this.currentDropIndex = -1;\n this.handlerStartY = 0;\n this.suppressInteractions = false;\n this.clearDropHighlights();\n if (this.table) {\n if (draggedMode === 'column') {\n this.renderer.removeClass(this.table, 'dragging-column');\n if (startIndex >= 0) {\n this.styleColumnAsSource(startIndex, false);\n this.highlightColumn(startIndex, false);\n } else {\n this.table.querySelectorAll('td.dragging-source, th.dragging-source').forEach(cell => this.renderer.removeClass(cell, 'dragging-source'));\n this.table.querySelectorAll('.col-highlight').forEach(cell => this.renderer.removeClass(cell, 'col-highlight'));\n }\n } else if (draggedMode === 'row') {\n this.renderer.removeClass(this.table, 'dragging-row');\n if (sourceElement) this.renderer.removeClass(sourceElement, 'dragging-source');\n }\n }\n if (activeHandler) {\n this.renderer.removeClass(activeHandler, 'dragging-active-handler');\n }\n document.body.style.cursor = '';\n this.hideHandlers();\n this.cancelHideTimer();\n }\n\n private moveRow(fromIndex: number, toIndex: number): void {\n if (!this.table) {\n return;\n }\n const tbody = this.table.tBodies[0];\n if (!tbody) {\n return;\n }\n const visibleRows = Array.from(tbody.rows).filter(r => !r.classList.contains('dragging-source'));\n if (fromIndex < 0 || fromIndex >= visibleRows.length || toIndex < 0 || toIndex > visibleRows.length || fromIndex === toIndex) {\n const allRows = Array.from(tbody.rows);\n if (fromIndex < 0 || fromIndex >= allRows.length || toIndex < 0 || toIndex > allRows.length || fromIndex === toIndex) {\n return;\n }\n }\n const rowToMove = tbody.querySelector('tr.dragging-source') as HTMLTableRowElement | null;\n if (!rowToMove) {\n return;\n }\n const actualFromIndex = Array.from(tbody.rows).indexOf(rowToMove);\n const allRows = Array.from(tbody.rows);\n let referenceNode: Node | null = null;\n let currentVisibleIndex = 0;\n let actualInsertIndex = -1;\n for (let i = 0; i < allRows.length; i++) {\n if (!allRows[i].classList.contains('dragging-source')) {\n if (currentVisibleIndex === toIndex) {\n actualInsertIndex = i;\n break;\n }\n currentVisibleIndex++;\n }\n }\n if (actualInsertIndex === -1 && toIndex === visibleRows.length) {\n actualInsertIndex = allRows.length;\n }\n if (actualInsertIndex !== -1) {\n if (actualFromIndex < actualInsertIndex) {\n referenceNode = allRows[actualInsertIndex] ?? null;\n } else {\n referenceNode = allRows[actualInsertIndex];\n }\n } else {\n return;\n }\n try {\n this.renderer.insertBefore(tbody, rowToMove, referenceNode);\n } catch (error) {\n }\n this.hoveredRowIndex = -1;\n }\n\n private moveColumn(fromIndex: number, toIndex: number): void {\n if (!this.table || fromIndex === toIndex || fromIndex < 0 || toIndex < 0) {\n return;\n }\n let moved = false;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n const cells = Array.from(row.cells);\n if (fromIndex >= cells.length || toIndex > cells.length) {\n continue;\n }\n const cellToMove = cells[fromIndex] as HTMLElement | undefined;\n let referenceNode: Node | null = null;\n if (fromIndex < toIndex) {\n referenceNode = cells[toIndex + 1] ?? null;\n } else {\n referenceNode = cells[toIndex];\n }\n if (cellToMove) {\n try {\n this.renderer.insertBefore(row, cellToMove, referenceNode);\n moved = true;\n } catch (error) {\n }\n }\n }\n }\n\n private styleColumnAsSource(columnIndex: number, add: boolean): void {\n if (!this.table || columnIndex < 0) return;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n if (columnIndex < row.cells.length) {\n const cell = row.cells[columnIndex];\n if (cell) {\n if (add) {\n this.renderer.addClass(cell, 'dragging-source');\n } else {\n this.renderer.removeClass(cell, 'dragging-source');\n }\n }\n }\n }\n }\n\n private calculateColumnInfo(): void {\n this.columnInfo = [];\n if (!this.table || this.table.rows.length === 0) return;\n const referenceRow = this.table.tHead?.rows[0] ?? this.table.rows[0];\n if (!referenceRow) return;\n for (let i = 0; i < referenceRow.cells.length; i++) {\n const cell = referenceRow.cells[i] as HTMLElement;\n const rect = cell.getBoundingClientRect();\n this.columnInfo.push({index: i, left: rect.left, width: rect.width, center: rect.left + rect.width / 2});\n }\n }\n\n private calculateRowInfo(): void {\n this.rowInfo = [];\n if (!this.table || !this.table.tBodies[0]) return;\n const tbody = this.table.tBodies[0];\n let visibleIndex = 0;\n for (let i = 0; i < tbody.rows.length; i++) {\n const row = tbody.rows[i] as HTMLTableRowElement;\n const rect = row.getBoundingClientRect();\n this.rowInfo.push({\n index: visibleIndex,\n element: row,\n top: rect.top,\n height: rect.height,\n center: rect.top + rect.height / 2\n });\n visibleIndex++;\n }\n }\n\n private findFirstVisibleCellInColumn(columnIndex: number): HTMLElement | null {\n if (!this.table || columnIndex < 0) return null;\n for (let i = 0; i < this.table.rows.length; i++) {\n const row = this.table.rows[i];\n if (columnIndex < row.cells.length) {\n const c = row.cells[columnIndex] as HTMLElement;\n if (c && c.offsetParent !== null) {\n return c;\n }\n }\n }\n return null;\n }\n\n private updateDropIndicator(targetVisualIndex: number, mode: 'row' | 'column'): void {\n if (!this.table || targetVisualIndex < 0 || this.startElementIndex < 0) {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n return;\n }\n const insertBeforeIndex = (targetVisualIndex <= this.startElementIndex) ? targetVisualIndex : targetVisualIndex + 1;\n if (insertBeforeIndex === this.startElementIndex || insertBeforeIndex === this.startElementIndex + 1) {\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'hidden');\n return;\n }\n const tableRect = this.table.getBoundingClientRect();\n if (mode === 'column') {\n const referenceColumnInfo = this.columnInfo.find(c => c.index === insertBeforeIndex);\n let indicatorLeftTable = 0;\n if (referenceColumnInfo) {\n indicatorLeftTable = referenceColumnInfo.left - tableRect.left;\n } else {\n const lastColInfo = this.columnInfo[this.columnInfo.length - 1];\n indicatorLeftTable = lastColInfo ? (lastColInfo.left - tableRect.left + lastColInfo.width) : this.table.offsetWidth;\n }\n indicatorLeftTable -= Math.floor(this.indicatorThickness / 2);\n this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorLeftTable}px`);\n this.renderer.setStyle(this.dropIndicator, 'top', `0px`);\n this.renderer.setStyle(this.dropIndicator, 'height', `${this.table.offsetHeight}px`);\n this.renderer.setStyle(this.dropIndicator, 'width', `${this.indicatorThickness}px`);\n this.renderer.removeStyle(this.dropIndicator, 'right');\n this.renderer.removeStyle(this.dropIndicator, 'bottom');\n } else {\n const referenceRowInfo = this.rowInfo.find(r => r.index === insertBeforeIndex);\n let indicatorTopTable = 0;\n if (referenceRowInfo) {\n indicatorTopTable = referenceRowInfo.top - tableRect.top;\n } else {\n const lastRowInfo = this.rowInfo[this.rowInfo.length - 1];\n indicatorTopTable = lastRowInfo\n ? (lastRowInfo.top - tableRect.top + lastRowInfo.height)\n : (this.table.tBodies[0]?.offsetHeight ?? this.table.offsetHeight);\n }\n indicatorTopTable -= Math.floor(this.indicatorThickness / 2);\n this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorTopTable}px`);\n this.renderer.setStyle(this.dropIndicator, 'left', `0px`);\n this.renderer.setStyle(this.dropIndicator, 'width', `${this.table.offsetWidth}px`);\n this.renderer.setStyle(this.dropIndicator, 'height', `${this.indicatorThickness}px`);\n this.renderer.removeStyle(this.dropIndicator, 'bottom');\n this.renderer.removeStyle(this.dropIndicator, 'right');\n }\n this.renderer.setStyle(this.dropIndicator, 'visibility', 'visible');\n }\n\n private highlightColumn(index: number, add: boolean): void {\n }\n\n private clearDropHighlights(): void {\n }\n\n private getCurrentScrollContainer(): Element | Window | null {\n if (isPlatformServer(this._platformId)) {\n return null;\n }\n try {\n const container = (this.contentBuilder as any)?.getScrollContainer?.();\n return (container as Element | Window) || null;\n } catch {\n return null;\n }\n }\n\n private bindScrollContainerListener(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n if (this.scrollSub) {\n return;\n }\n this.unbindScrollContainerListener();\n this.ngZone.runOutsideAngular(() => {\n const scroll$ = (this.contentBuilder as any)?.scrollContainerScrolled as Observable<number> | undefined;\n if (!scroll$) {\n return;\n }\n this.scrollSub = scroll$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onScrollContainerScrolled());\n });\n }\n\n private unbindScrollContainerListener(): void {\n if (this.scrollSub) {\n try { this.scrollSub.unsubscribe(); } catch {}\n this.scrollSub = null;\n }\n this.scrollContainerRef = null;\n }\n\n private ensureScrollContainerListener(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n if (!this.scrollSub) this.bindScrollContainerListener();\n }\n\n private onScrollContainerScrolled(): void {\n this.cancelHideTimer();\n this.hideHandlers();\n }\n}\n","<ng-content/>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input, OnInit, PLATFORM_ID, signal,\n viewChild\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n CONTENT_BUILDER,\n CONTENT_EDITOR_BLOCK,\n ContentEditorDataBlock,\n ContentEditorTableBlockSettings\n} from '../../types';\nimport { ContentEditorContentEditableDirective } from '../../content-editor-content-editable.directive';\nimport SelectionArea from '@viselect/vanilla';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { TableColumnsManagerDirective } from '../../table-columns-manager.directive';\nimport { TableRowsManagerDirective } from '../../table-rows-manager.directive';\nimport { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { ResizableTableDirective } from '../../resizable-table.directive';\nimport { DraggableTableComponent } from '../../draggable-table/draggable-table.component';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ContentBuilderStore } from '../../content-builder.store';\nimport { ContentBuilderComponent } from '../../content-builder/content-builder.component';\n\n@Component({\n selector: 'ngs-table-block',\n imports: [\n ContentEditorContentEditableDirective,\n Icon,\n TableColumnsManagerDirective,\n TableRowsManagerDirective,\n CdkMonitorFocus,\n ResizableTableDirective,\n DraggableTableComponent\n ],\n providers: [\n {\n provide: CONTENT_EDITOR_BLOCK,\n useExisting: TableBlockComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './table-block.component.html',\n styleUrl: './table-block.component.scss',\n host: {\n '[class.is-column-managing]': '_columnManaging()',\n '[class.is-row-managing]': '_rowManaging()',\n }\n})\nexport class TableBlockComponent implements OnInit, AfterViewInit, ContentEditorDataBlock {\n private _platformId = inject(PLATFORM_ID);\n private _contentBuilder = inject<ContentBuilderComponent>(CONTENT_BUILDER);\n private _store = inject(ContentBuilderStore);\n private _cdr = inject(ChangeDetectorRef);\n private _tableRef = viewChild.required<ElementRef>('table');\n\n id = input.required<string>();\n content = input.required<any[]>();\n settings = input.required<ContentEditorTableBlockSettings>();\n index = input.required<number>();\n\n _content = signal<any[]>([]);\n _columnManaging = signal(false);\n _rowManaging = signal(false);\n _tableManging = signal(false);\n _resizeManging = signal(false);\n readonly initialized = signal(false);\n\n ngOnInit() {\n this._content.set(this.content());\n }\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this._platformId)) {\n const selection = new SelectionArea({\n selectables: ['.table td'],\n boundaries: ['.table'],\n features: {\n touch: true,\n range: true,\n deselectOnBlur: true,\n singleTap: {\n allow: false,\n intersect: 'native'\n }\n }\n }).on('start', ({ store, event }: any) => {\n if (!event.ctrlKey && !event.metaKey) {\n store.stored.forEach((el: any) => el.classList.remove('selected'));\n selection.clearSelection();\n }\n })\n .on('move', ({ store: { changed: { added, removed } } }) => {\n if (this._tableManging() || this._columnManaging() || this._rowManaging()) {\n return;\n }\n\n added.forEach(el => el.classList.add('selected'));\n removed.forEach(el => el.classList.remove('selected'));\n });\n }\n this.initialized.set(true);\n }\n\n focus() {\n\n }\n\n onTableFocusChange(type: any) {\n if (type === null) {\n this.clearCellsSelection();\n }\n }\n\n clearCellsSelection() {\n this._tableRef().nativeElement.querySelectorAll('td')\n .forEach((el: any) => el.classList.remove('selected'))\n ;\n this.update();\n }\n\n onColAdded() {\n this._content.update((content: any[]) => {\n content.forEach((row: any) => {\n row.push({\n content: '',\n props: [],\n styles: {},\n options: {\n colspan: 1,\n rowspan: 1\n }\n });\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onColDeleted() {\n if (this._content().length > 0 && this._content()[0].length === 1) {\n return;\n }\n\n let isLastColEmpty = false;\n\n this._content().forEach((row: any) => {\n if (row[row.length - 1].content) {\n isLastColEmpty = true;\n }\n });\n\n if (isLastColEmpty) {\n return;\n }\n\n this._content.update((content: any[]) => {\n content.forEach((row: any) => {\n row.splice(row.length - 1, 1);\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowAdded() {\n this._content.update((content: any[]) => {\n const row: any[] = [];\n\n for (let i = 0; i < content[0].length; i++) {\n row.push({\n content: '',\n props: [],\n styles: {},\n options: {\n colspan: 1,\n rowspan: 1\n }\n });\n }\n\n content.push(row);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowDeleted() {\n if (this._content().length === 1) {\n return;\n }\n\n let isLastRowEmpty = false;\n\n this._content()[this._content().length - 1].forEach((cell: any) => {\n if (cell.content) {\n isLastRowEmpty = true;\n }\n });\n\n if (isLastRowEmpty) {\n return;\n }\n\n this._content.update((content: any[]) => {\n content.splice(content.length - 1, 1);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onColumnManagingStart() {\n this._columnManaging.set(true);\n }\n\n onColumnManagingEnd() {\n this._columnManaging.set(false);\n }\n\n onRowManagingStart() {\n this._rowManaging.set(true);\n }\n\n onRowManagingEnd() {\n this._rowManaging.set(false);\n }\n\n onColumnWidthChange(event: any) {\n this._content.update((content: any[]) => {\n content.forEach(row => {\n row[event.columnIndex].options['width'] = event.width;\n })\n return content;\n });\n this.update();\n }\n\n onColumnMoved(event: any) {\n this._content.update((content: any[]) => {\n content.forEach(row => {\n moveItemInArray(row, event.startElementIndex, event.finalTargetIndex);\n });\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onRowMoved(event: any) {\n this._content.update((content: any[]) => {\n moveItemInArray(content, event.startElementIndex, event.finalTargetIndex);\n return content;\n });\n this._cdr.markForCheck();\n this.update();\n }\n\n onMoveStart() {\n this._tableManging.set(true);\n }\n\n onMoveEnd() {\n this._tableManging.set(false);\n }\n\n onColumnWidthChangeStart() {\n this._tableManging.set(true);\n this._resizeManging.set(true);\n }\n\n onColumnWidthChangeEnd() {\n this._tableManging.set(false);\n this._resizeManging.set(false);\n this._cdr.markForCheck();\n }\n\n getData(): any {\n return {\n content: this._content(),\n settings: {\n ...this.settings(),\n }\n };\n }\n\n isEmpty(): boolean {\n return false;\n }\n\n private update() {\n this._store.updateBlock(this.id(), {...this.getData(), isEmpty: this.isEmpty()});\n this._contentBuilder.emitContentChangeEvent();\n }\n}\n","<div class=\"table-overflow\">\n <div class=\"table-container\">\n <ngs-draggable-table [disabled]=\"_resizeManging() || _columnManaging() || _rowManaging()\"\n (columnMoved)=\"onColumnMoved($event)\"\n (rowMoved)=\"onRowMoved($event)\"\n (moveStart)=\"onMoveStart()\"\n (moveEnd)=\"onMoveEnd()\">\n <table #table class=\"table\"\n ngsResizableTable\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"onTableFocusChange($event)\"\n (columnWidthChangeStart)=\"onColumnWidthChangeStart()\"\n (columnWidthChangeEnd)=\"onColumnWidthChangeEnd()\"\n (columnWidthChange)=\"onColumnWidthChange($event)\">\n <colgroup>\n @for (cell of _content()[0]; track $index) {\n <col [style.width.px]=\"cell.options.width || null\">\n }\n </colgroup>\n <tbody>\n @for (row of _content(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td #cell\n [ngsContentEditorContentEditable]=\"cell.content\"\n [props]=\"cell.props\"\n (contentChanged)=\"cell.content = $event\"\n (blur)=\"clearCellsSelection()\"\n [rowSpan]=\"cell.options.rowspan\"\n [colSpan]=\"cell.options.colspan\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n <div class=\"resize-end\" ngsTableColumnsManager\n (columnManagingStart)=\"onColumnManagingStart()\"\n (columnManagingEnd)=\"onColumnManagingEnd()\"\n (columnAdded)=\"onColAdded()\"\n (columnDeleted)=\"onColDeleted()\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"resize-icon\" />\n </div>\n <div class=\"resize-bottom\" ngsTableRowsManager\n (rowManagingStart)=\"onRowManagingStart()\"\n (rowManagingEnd)=\"onRowManagingEnd()\"\n (rowAdded)=\"onRowAdded()\"\n (rowDeleted)=\"onRowDeleted()\">\n <ngs-icon name=\"fluent:add-24-regular\" class=\"resize-icon\" />\n </div>\n </ngs-draggable-table>\n </div>\n</div>\n"],"names":[],"mappings":"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"}
|