{"version":3,"file":"tethys-pro-board.mjs","sources":["../../../../packages/components/board/header/header.component.ts","../../../../packages/components/board/header/header.component.html","../../../../packages/components/board/entities/board.entity.ts","../../../../packages/components/board/entities/board.type.ts","../../../../packages/components/board/entities/entry.entity.ts","../../../../packages/components/board/scroll/entry-virtual-scroll.ts","../../../../packages/components/board/entry/entry-drag-drop.ts","../../../../packages/components/board/entry/entry-base.ts","../../../../packages/components/board/board.pipe.ts","../../../../packages/components/board/entry/sortable/sortable.component.ts","../../../../packages/components/board/entry/sortable/sortable.component.html","../../../../packages/components/board/entry/movable/movable.component.ts","../../../../packages/components/board/entry/movable/movable.component.html","../../../../packages/components/board/entry/entry.component.ts","../../../../packages/components/board/entry/entry.component.html","../../../../packages/components/board/lane/lane.component.ts","../../../../packages/components/board/lane/lane.component.html","../../../../packages/components/board/scroll/board-body-scroll.ts","../../../../packages/components/board/constants/index.ts","../../../../packages/components/board/board.service.ts","../../../../packages/components/board/skeleton/skeleton.component.ts","../../../../packages/components/board/skeleton/skeleton.component.html","../../../../packages/components/board/scroll/drag-drop-registry.ts","../../../../packages/components/board/board.component.ts","../../../../packages/components/board/board.component.html","../../../../packages/components/board/module.ts","../../../../packages/components/board/tethys-pro-board.ts"],"sourcesContent":["import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    input,\n    model,\n    OnInit,\n    output,\n    TemplateRef\n} from '@angular/core';\nimport { injectLocale, ThyI18nPipe } from '@tethys/pro/i18n';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyBoardEntry } from '../entities';\n\n@Component({\n    selector: 'thy-board-header',\n    templateUrl: 'header.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ThyFlexibleText, ThyIcon, ThyTooltipDirective, NgTemplateOutlet, ThyAction, NgClass, NgStyle, ThyI18nPipe],\n    host: {\n        class: 'thy-board-header'\n    }\n})\nexport class ThyBoardHeaderComponent implements OnInit {\n    locale = injectLocale();\n\n    entries = input.required<ThyBoardEntry[]>();\n\n    hasLane = input(false, { transform: booleanAttribute });\n\n    readonly allLanesExpanded = model<boolean>(true);\n\n    headerTemplateRef = input<TemplateRef<SafeAny>>();\n\n    /**\n     * 是否支持栏的收起展开\n     * @default false\n     * @type boolean\n     */\n    entryCollapsible = input(false, { transform: booleanAttribute });\n\n    /**\n     * 是否有栏已收起\n     * @default false\n     * @type boolean\n     */\n    hasCollapsedEntry = input(false, { transform: booleanAttribute });\n\n    container = input.required<ElementRef>();\n\n    expandAllLanes = output<boolean>();\n\n    /**\n     * 展开收起栏事件\n     */\n    expandEntry = output<{ entry: ThyBoardEntry; expanded: boolean }>();\n\n    public isFullscreen = false;\n\n    public containerClientHeight = computed(() => {\n        return this.container().nativeElement.clientHeight;\n    });\n\n    constructor() {}\n\n    ngOnInit() {}\n\n    expandAllLane() {\n        this.allLanesExpanded.set(!this.allLanesExpanded());\n        this.expandAllLanes.emit(this.allLanesExpanded());\n    }\n\n    expandBoardEntry(event: ThyBoardEntry) {\n        this.expandEntry.emit({ entry: event, expanded: !event.expanded });\n    }\n}\n","<div class=\"entries\">\n  @if (hasLane()) {\n    <div class=\"entry\">\n      @if (!hasCollapsedEntry()) {\n        <a\n          href=\"javascript:;\"\n          class=\"link-muted pr-2\"\n          (click)=\"expandAllLane()\"\n          [thyTooltip]=\"allLanesExpanded() ? locale().foldUpAll : locale().expandedAll\"\n        >\n          <thy-icon [thyIconName]=\"allLanesExpanded() ? 'stow' : 'open'\"></thy-icon>\n        </a>\n      }\n\n      @if (headerTemplateRef()) {\n        <ng-template [ngTemplateOutlet]=\"headerTemplateRef()!\"></ng-template>\n      } @else {\n        <span>{{ locale().lane }}</span>\n      }\n    </div>\n  }\n  @for (entry of entries(); track entry._id) {\n    @if (entry.expanded) {\n      <div\n        class=\"entry justify-content-between\"\n        [ngClass]=\"{ 'entry-split': entry.split, 'entry-exceed-wip-limit': entry.wipLimit && (entry.cards?.length || 0) > entry.wipLimit }\"\n      >\n        @if (headerTemplateRef()) {\n          <ng-template\n            [ngTemplateOutlet]=\"headerTemplateRef()!\"\n            [ngTemplateOutletContext]=\"{ entry: entry, $implicit: entry }\"\n          ></ng-template>\n        } @else {\n          <div class=\"text-truncate\">\n            <span thyFlexibleText [thyTooltipContent]=\"entry.name\"> {{ entry.name }}</span>\n          </div>\n          <div class=\"flex-fill\">\n            @if (entry.wipLimit) {\n              <span [thyTooltip]=\"locale().wipLimitStatistics | thyI18n: { count: entry.cards?.length || 0, wipLimit: entry.wipLimit }\">\n                <span class=\"mx-1\">·</span>\n                <span [class.text-danger]=\"(entry.cards?.length || 0) > entry.wipLimit\">{{ entry.cards?.length || 0 }}</span>\n                / {{ entry.wipLimit }}\n              </span>\n            } @else {\n              <span [thyTooltip]=\"locale().countStatistics | thyI18n: { count: entry.cards?.length || 0 }\">\n                <span class=\"mx-1\">·</span>\n                <span>{{ entry.cards?.length || 0 }}</span>\n              </span>\n            }\n          </div>\n        }\n        @if (entryCollapsible()) {\n          <a\n            href=\"javascript:;\"\n            class=\"operator\"\n            thyAction\n            thyIcon=\"angle-left\"\n            [thyTooltip]=\"locale().foldUp\"\n            thyTooltipPlacement=\"top\"\n            (click)=\"expandBoardEntry(entry)\"\n          ></a>\n        }\n      </div>\n    } @else {\n      <div class=\"entry-collapsed\" [class.entry-exceed-wip-limit]=\"entry.wipLimit && (entry.cards?.length || 0) > entry.wipLimit\">\n        <div class=\"entry-collapsed-content\" #collapsedHeader [ngStyle]=\"{ height: containerClientHeight() + 'px' }\">\n          @if (headerTemplateRef()) {\n            <ng-template\n              [ngTemplateOutlet]=\"headerTemplateRef()!\"\n              [ngTemplateOutletContext]=\"{ entry: entry, $implicit: entry }\"\n            ></ng-template>\n          } @else {\n            <div class=\"title\" thyFlexibleText [thyTooltipContent]=\"entry.name\">{{ entry.name }}</div>\n            <span class=\"mx-auto\">·</span>\n            @let count = entry.cards?.length || 0;\n            @if (entry.wipLimit) {\n              <div class=\"count\" [thyTooltip]=\"locale().wipLimitStatistics | thyI18n: { count: count, wipLimit: entry.wipLimit }\">\n                <span class=\"count-num\">\n                  <span [ngClass]=\"{ 'count--wip-limit': count > entry.wipLimit }\">{{ count }}</span>\n                  /\n                  {{ entry.wipLimit }}\n                </span>\n              </div>\n            } @else {\n              <div class=\"count\" [thyTooltip]=\"locale().countStatistics | thyI18n: { count: count }\">\n                {{ count }}\n              </div>\n            }\n          }\n          <a\n            href=\"javascript:;\"\n            class=\"operator\"\n            thyAction\n            thyIcon=\"angle-right\"\n            [thyTooltip]=\"locale().expand\"\n            thyTooltipPlacement=\"top\"\n            (click)=\"expandBoardEntry(entry)\"\n          ></a>\n        </div>\n      </div>\n    }\n  }\n</div>\n<div class=\"entry-header-empty-zone\"></div>\n","import { ListRange } from '@angular/cdk/collections';\n\nexport interface ThyBoardLane {\n    _id: string;\n\n    name: string;\n\n    cards?: ThyBoardCard[];\n\n    entries?: ThyBoardEntry[];\n\n    // 设置泳道展开收起状态，true 为展开\n    expanded?: boolean;\n}\n\nexport interface ThyBoardEntry {\n    _id: string;\n\n    name: string;\n\n    wipLimit?: number;\n\n    split?: boolean;\n\n    cards?: ThyBoardCard[];\n\n    // 设置泳道展开收起状态，true 为展开\n    expanded?: boolean;\n\n    droppableZones?: ThyBoardZone[];\n}\n\nexport enum ThyBoardEntryStatus {\n    doing = 1,\n    done = 2\n}\n\nexport interface ThyBoardCard {\n    _id: string;\n\n    laneIds: string[];\n\n    entryIds: string[];\n\n    /**\n     * 添加 status，设置卡片是在进行中还是已完成栏\n     * 当卡片在不同的栏和泳道中状态相同时，支持直接设置 ThyBoardEntryStatus\n     * 当卡片在不同的泳道和栏中有不同的状态时，支持设置  {laneId?: string, entryId: string, state: ThyBoardEntryStatus}[]\n     */\n    status?: { laneId?: string; entryId: string; state: ThyBoardEntryStatus }[] | ThyBoardEntryStatus;\n\n    [key: string]: any;\n}\n\nexport interface ThyBoardVirtualScrolledIndexChangeEvent {\n    renderedRange: ListRange;\n    entry: ThyBoardEntry;\n    lane?: ThyBoardLane;\n    status?: ThyBoardEntryStatus;\n    nextLane?: ThyBoardLane;\n    expandedLanes?: ThyBoardLane[];\n}\n\nexport interface ThyBoardZone {\n    _id: string;\n\n    name: string;\n}\n","export enum ThyBoardDragScopeType {\n    entries = 'entries',\n    lanes = 'lanes',\n    all = 'all'\n}\n","import { InjectionToken, OutputEmitterRef, Signal, TemplateRef } from '@angular/core';\n\nimport {\n    ThyBoardCard,\n    ThyBoardDragPredicateEvent,\n    ThyBoardDragScopeType,\n    ThyBoardDropActionEvent,\n    ThyBoardEntry,\n    ThyBoardLane,\n    ThyBoardVirtualScrolledIndexChangeEvent,\n    ThyBoardZone\n} from '../entities';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Observable } from 'rxjs';\n\nexport const THY_BOARD_ENTRY = new InjectionToken<ThyBoardEntryAbstract>('ThyBoardEntryComponent');\n\nexport interface ThyBoardEntryAbstract {\n    entry: Signal<ThyBoardEntry>;\n\n    hasLane: Signal<boolean>;\n\n    lane: Signal<ThyBoardLane>;\n\n    laneHeight: Signal<number>;\n\n    virtualScroll: Signal<boolean>;\n\n    cardTemplateRef: Signal<TemplateRef<SafeAny>>;\n\n    container: Signal<HTMLElement>;\n\n    defaultCardSize: Signal<number>;\n\n    draggingCard: Signal<CdkDrag<ThyBoardCard>>;\n\n    hasDroppableZones: Signal<boolean>;\n\n    cardDroppableZones: Signal<\n        {\n            laneId?: string;\n            entryId: string;\n            droppableZones: ThyBoardZone[];\n        }[]\n    >;\n\n    topTemplateRef: Signal<TemplateRef<SafeAny>>;\n\n    bottomTemplateRef: Signal<TemplateRef<SafeAny>>;\n\n    sortable: Signal<ThyBoardDragScopeType>;\n\n    movable: Signal<ThyBoardDragScopeType>;\n\n    cardDraggablePredicate: Signal<(event: ThyBoardDragPredicateEvent) => boolean>;\n\n    cardDropEnterPredicate: Signal<(event: ThyBoardDragPredicateEvent) => boolean>;\n\n    cardDropAction: Signal<(event: ThyBoardDropActionEvent) => Observable<boolean>>;\n\n    cardDragStarted: OutputEmitterRef<CdkDrag<ThyBoardCard>>;\n\n    virtualScrolledIndexChange: OutputEmitterRef<ThyBoardVirtualScrolledIndexChangeEvent>;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { AutoSizeVirtualScrollStrategy, CdkAutoSizeVirtualScroll, ItemSizeAverager } from '@angular/cdk-experimental/scrolling';\nimport { CdkVirtualScrollViewport, VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\nimport {\n    contentChildren,\n    Directive,\n    effect,\n    forwardRef,\n    input,\n    Input,\n    numberAttribute,\n    OnChanges,\n    OnInit,\n    signal,\n    WritableSignal\n} from '@angular/core';\nimport { ThyBoardCard } from '../entities';\n\nexport class EntryItemSizeAverager extends ItemSizeAverager {\n    private averageItemSize: number;\n\n    public defaultItemSize: number;\n\n    constructor(defaultItemSize = 112) {\n        super(defaultItemSize);\n        this.defaultItemSize = defaultItemSize;\n        this.averageItemSize = defaultItemSize;\n    }\n\n    setAverageItemSize(value: number) {\n        return (this.averageItemSize = value || this.defaultItemSize);\n    }\n\n    getAverageItemSize(): number {\n        return this.averageItemSize || this.defaultItemSize;\n    }\n\n    reset() {\n        this.averageItemSize = this.defaultItemSize;\n    }\n}\n\nexport class ThyBoardEntryVirtualScrollStrategy extends AutoSizeVirtualScrollStrategy {\n    private readonly _scrolledIndexChange = new Subject<number>();\n\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    scrolledIndexChange: Observable<number> = this._scrolledIndexChange.pipe(distinctUntilChanged());\n\n    public entrySpacer: WritableSignal<number> = signal(0);\n\n    private cardsHeightMap: Record<string, { index: number; height: number }> = {};\n\n    constructor(\n        minBufferPx: number,\n        maxBufferPx: number,\n        public averager = new EntryItemSizeAverager(112)\n    ) {\n        super(minBufferPx, maxBufferPx, averager);\n    }\n\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onDataLengthChanged() {\n        if (this['_viewport']) {\n            this.updateCardsHeight();\n            this['_renderContentForCurrentOffset']();\n            this.updateTotalContentSize();\n        }\n    }\n\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onContentRendered() {\n        if (this['_viewport']) {\n            this.updateCardsHeight();\n            this.updateTotalContentSize();\n        }\n    }\n\n    onContentScrolled() {\n        if (this['_viewport']) {\n            super.onContentScrolled();\n            const renderedRange = this['_viewport'].getRenderedRange();\n            this._scrolledIndexChange.next(renderedRange.start);\n        }\n    }\n\n    checkEntrySpacer() {\n        const viewPort = this['_viewport'];\n        if (viewPort) {\n            viewPort.checkViewportSize();\n            this.entrySpacer.set(this.getTotalContentSize());\n        }\n    }\n\n    private getTotalContentSize(): number {\n        if (!this['_viewport']) {\n            return 0;\n        }\n        const viewport: CdkVirtualScrollViewport = this['_viewport'];\n\n        let totalSize = 0;\n        const keys = Object.keys(this.cardsHeightMap);\n        keys.forEach((item) => {\n            totalSize = totalSize + (this.cardsHeightMap[item].height || this.averager.defaultItemSize);\n        });\n        const averageSize = keys.length > 0 && totalSize > 0 ? totalSize / keys.length : this.averager.defaultItemSize;\n        totalSize = totalSize + (viewport.getDataLength() - (keys.length || 0)) * averageSize;\n        return totalSize;\n    }\n\n    private updateTotalContentSize() {\n        const contentSize = this.getTotalContentSize();\n        const viewport: CdkVirtualScrollViewport = this['_viewport'];\n        this['_lastRenderedContentSize'] = viewport.measureRenderedContentSize();\n        this['_averager'].setAverageItemSize(contentSize / viewport.getDataLength());\n        viewport?.setTotalContentSize(contentSize);\n        this.entrySpacer.set(contentSize);\n    }\n\n    public updateCards(cards: ThyBoardCard[]) {\n        const cardsHeightMap: Record<string, { index: number; height: number }> = {};\n        (cards || []).forEach((card, index) => {\n            if (this.cardsHeightMap[card._id]) {\n                cardsHeightMap[card._id] = { ...this.cardsHeightMap[card._id], index: index };\n            } else {\n                cardsHeightMap[card._id] = { height: this.averager.defaultItemSize, index: index };\n            }\n        });\n        this.cardsHeightMap = { ...cardsHeightMap };\n    }\n\n    private getCardHeight(cardElement: Element) {\n        let marginY =\n            parseFloat(window.getComputedStyle(cardElement).marginBottom) + parseFloat(window.getComputedStyle(cardElement).marginTop);\n        if (cardElement.firstChild) {\n            const childStyle = window.getComputedStyle(cardElement.firstElementChild!) || { marginBottom: '0', marginTop: '0' };\n            marginY = marginY + parseFloat(childStyle.marginBottom) + parseFloat(childStyle.marginTop);\n        }\n\n        return cardElement.getBoundingClientRect().height + marginY;\n    }\n\n    updateCardsHeight() {\n        if (!this['_viewport']) {\n            return;\n        }\n        const viewport: CdkVirtualScrollViewport = this['_viewport'];\n\n        let isChanged = false;\n        let childrenNodes: Element[] = Array.from(viewport.elementRef.nativeElement.firstElementChild?.children || []);\n        childrenNodes.forEach((child: Element) => {\n            const name = child?.getAttribute && child?.getAttribute('name');\n            if (name) {\n                const [cardId, cardIndex] = name.split('-');\n                const temp = this.cardsHeightMap[cardId];\n                const height = this.getCardHeight(child);\n                if (temp?.height !== height) {\n                    this.cardsHeightMap[cardId] = { index: Number(cardIndex), height: height };\n                    isChanged = true;\n                }\n            }\n        });\n        if (isChanged) {\n            this.updateTotalContentSize();\n        }\n        childrenNodes = [];\n    }\n\n    detach() {\n        super.detach();\n        this._scrolledIndexChange.complete();\n    }\n}\n\nexport function entryVirtualScrollStrategyFactory(autoSizeDir: ThyBoardEntryVirtualScroll) {\n    return autoSizeDir.scrollStrategy;\n}\n\n@Directive({\n    selector: 'cdk-virtual-scroll-viewport[entry]',\n    standalone: true,\n    providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useFactory: entryVirtualScrollStrategyFactory,\n            deps: [forwardRef(() => ThyBoardEntryVirtualScroll)]\n        }\n    ]\n})\nexport class ThyBoardEntryVirtualScroll extends CdkAutoSizeVirtualScroll implements OnInit, OnChanges {\n    _minBufferPx = 800;\n\n    @Input({ transform: numberAttribute, required: true }) set minBufferPx(value: number) {\n        this._minBufferPx = value;\n    }\n\n    get minBufferPx() {\n        return this._minBufferPx;\n    }\n\n    _maxBufferPx = 1500;\n\n    @Input({ transform: numberAttribute, required: true }) set maxBufferPx(value: number) {\n        this._maxBufferPx = value;\n    }\n\n    get maxBufferPx() {\n        return this._maxBufferPx;\n    }\n\n    @Input({ transform: numberAttribute }) defaultCardSize = 112;\n\n    cards = input.required<ThyBoardCard[]>();\n\n    renderCardComponents = contentChildren('card', { descendants: true });\n\n    public readonly scrollStrategy = new ThyBoardEntryVirtualScrollStrategy(\n        this.minBufferPx,\n        this.maxBufferPx,\n        new EntryItemSizeAverager(this.defaultCardSize)\n    );\n\n    constructor() {\n        super();\n\n        effect(() => {\n            this.scrollStrategy.updateCards(this.cards());\n        });\n\n        effect(\n            () => {\n                this.scrollStrategy.updateCardsHeight();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    ngOnInit() {}\n\n    ngOnChanges() {\n        this._scrollStrategy.updateBufferSize(this.minBufferPx, this.maxBufferPx);\n    }\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { Directive, ChangeDetectorRef, effect, viewChildren, inject, viewChild } from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyBoardCard, ThyBoardDragContainer } from '../entities';\nimport { CdkDrag, CdkDragDrop, CdkDragStart, CdkDropList, DropListRef, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { tap } from 'rxjs';\nimport { ThyBoardEntryAbstract } from '../entities';\n\n@Directive()\nexport abstract class ThyBoardEntryDragDrop {\n    currentViewport = viewChild(CdkVirtualScrollViewport);\n\n    cdkDropLists = viewChildren(CdkDropList);\n\n    public changeDetectorRef = inject(ChangeDetectorRef);\n\n    private preDraggingCard: CdkDrag<ThyBoardCard> | undefined;\n\n    private preCdkDropLists: CdkDropList[] = [];\n\n    constructor(public boardEntry: ThyBoardEntryAbstract) {\n        effect(() => {\n            if (this.boardEntry.sortable() || this.boardEntry.movable()) {\n                const draggingCard = this.boardEntry.draggingCard();\n                const cdkDropLists = this.cdkDropLists();\n                if (draggingCard && cdkDropLists?.length > 0 && this.preCdkDropLists.length < cdkDropLists.length) {\n                    const siblings: CdkDropList<any>[] = [];\n                    const group = draggingCard.dropContainer['_group'];\n                    if (group) {\n                        group._items.forEach((drop: any) => {\n                            if (siblings.indexOf(drop) === -1) {\n                                siblings.push(drop);\n                            }\n                        });\n                    }\n\n                    const refs = siblings\n                        .filter((drop) => drop && drop !== draggingCard.dropContainer)\n                        .map((list) => list._dropListRef)\n                        .filter((ref) => {\n                            const index = draggingCard.dropContainer._dropListRef['_siblings'].indexOf((sibling: DropListRef) => {\n                                return sibling === ref;\n                            });\n                            return index < 0;\n                        });\n                    if (refs.length > 0) {\n                        draggingCard.dropContainer._dropListRef.connectedTo([\n                            ...draggingCard.dropContainer._dropListRef['_siblings'],\n                            ...refs\n                        ]);\n                        (draggingCard.dropContainer._dropListRef['_notifyReceivingSiblings'] as any)();\n                        this.preDraggingCard = draggingCard;\n                        this.preCdkDropLists = [...cdkDropLists];\n                    }\n                }\n                if (!draggingCard && this.preDraggingCard) {\n                    this.preDraggingCard?.dropContainer._dropListRef['_reset']();\n                    this.preDraggingCard = draggingCard;\n                    this.preCdkDropLists = [];\n                }\n            }\n        });\n    }\n\n    cdkDragStarted(event: CdkDragStart) {\n        this.boardEntry.cardDragStarted.emit(event.source);\n    }\n\n    dragReleased(): void {}\n\n    checkCardDroppable(drag: CdkDrag<ThyBoardCard>, container: ThyBoardDragContainer): boolean {\n        return false;\n    }\n\n    private checkCardDropInLaneAndEntry(card: CdkDrag<ThyBoardCard>, container: ThyBoardDragContainer): boolean {\n        if (this.boardEntry.sortable() || this.boardEntry.movable()) {\n            return this.checkCardDroppable(card, container);\n        }\n        return false;\n    }\n\n    dropListEnterPredicate = (drag: CdkDrag<ThyBoardCard>, drop: CdkDropList<ThyBoardDragContainer>) => {\n        const container: ThyBoardDragContainer = {\n            entry: drop.data.entry,\n            lane: drop.data.lane,\n            cards: drop.data.cards,\n            status: drop.data.status,\n            zone: drop.data.zone\n        };\n        if (!this.checkCardDropInLaneAndEntry(drag, container)) {\n            return false;\n        } else {\n            const cardDropEnterPredicate = this.boardEntry.cardDropEnterPredicate();\n            if (cardDropEnterPredicate) {\n                return cardDropEnterPredicate({\n                    card: drag.data,\n                    container: container\n                });\n            } else {\n                return false;\n            }\n        }\n    };\n\n    drop(event: CdkDragDrop<ThyBoardDragContainer | SafeAny>) {\n        const previousIndex = (event.previousContainer.data?.cards || []).findIndex(\n            (card: ThyBoardCard) => card._id === event.item.data._id\n        );\n        const currentIndex = (event.container.data?.cards || []).findIndex((card: ThyBoardCard) => card._id === event.item.data._id);\n        transferArrayItem(event.previousContainer.data?.cards!, event.container.data?.cards!, previousIndex, currentIndex);\n        const cardDropAction = this.boardEntry.cardDropAction();\n        if (cardDropAction) {\n            cardDropAction({\n                card: event.item.data,\n                previousContainer: event.previousContainer.data!,\n                previousIndex: event.previousIndex,\n                container: event.container.data!,\n                currentIndex: event.currentIndex\n            })\n                .pipe(\n                    tap((result: boolean) => {\n                        if (!result) {\n                            transferArrayItem(\n                                event.container.data?.cards!,\n                                event.previousContainer.data?.cards!,\n                                currentIndex,\n                                previousIndex\n                            );\n                            event.previousContainer.data.changeDetectorRef.markForCheck();\n                            this.changeDetectorRef.markForCheck();\n                        }\n                    })\n                )\n                .subscribe();\n        }\n    }\n}\n","import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport {\n    afterNextRender,\n    computed,\n    Directive,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    NgZone,\n    Renderer2,\n    signal,\n    untracked,\n    viewChild,\n    WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { helpers } from 'ngx-tethys/util';\nimport { combineLatest, debounceTime, Observable } from 'rxjs';\nimport { ThyBoardCard, ThyBoardEntryAbstract, ThyBoardEntryStatus } from '../entities';\nimport { ThyBoardEntryVirtualScroll } from '../scroll/entry-virtual-scroll';\nimport { ThyBoardEntryDragDrop } from './entry-drag-drop';\n\n@Directive()\nexport abstract class ThyBoardEntryBase extends ThyBoardEntryDragDrop {\n    public renderer = inject(Renderer2);\n\n    public elementRef = inject(ElementRef);\n\n    public sharedResizeObserver = inject(SharedResizeObserver);\n\n    public ngZone = inject(NgZone);\n\n    entryVirtualScroll = viewChild(ThyBoardEntryVirtualScroll);\n\n    entryBody = viewChild<ElementRef>('entryBody');\n\n    bottom = viewChild<ElementRef>('bottom');\n\n    top = viewChild<ElementRef>('top');\n\n    entrySplitTitle = viewChild<ElementRef>('entrySplitTitle');\n\n    status = input<ThyBoardEntryStatus>();\n\n    public cards = computed(() => {\n        if (this.boardEntry.entry().split && this.boardEntry.entry().cards && this.status()) {\n            return untracked(() => {\n                return (this.boardEntry.entry().cards || []).filter((card) => {\n                    const cardStatus = this.getCardStatus(card);\n                    return cardStatus === this.status();\n                });\n            });\n        } else {\n            return this.boardEntry.entry().cards;\n        }\n    });\n\n    public entryBodyHeight = 0;\n\n    public entryDroppableZonesHeight = 0;\n\n    public entryRealHeight: WritableSignal<number> = signal(0);\n\n    public boardEntryStatus = ThyBoardEntryStatus;\n\n    private takeUntilDestroyed = takeUntilDestroyed();\n\n    constructor(public boardEntry: ThyBoardEntryAbstract) {\n        super(boardEntry);\n        effect(\n            () => {\n                this.setBodyHeight();\n            },\n            { allowSignalWrites: true }\n        );\n\n        afterNextRender(() => {\n            if (this.boardEntry.virtualScroll()) {\n                const elementsObserve: Observable<ResizeObserverEntry[]>[] = [\n                    this.sharedResizeObserver.observe(this.boardEntry.container(), { box: 'border-box' }).pipe(debounceTime(100))\n                ];\n                if (this.top()) {\n                    elementsObserve.push(this.sharedResizeObserver.observe(this.top()?.nativeElement, { box: 'border-box' }));\n                }\n                if (this.bottom()) {\n                    elementsObserve.push(this.sharedResizeObserver.observe(this.bottom()?.nativeElement, { box: 'border-box' }));\n                }\n                if (elementsObserve.length > 0) {\n                    // 修正虚拟滚动区域高度\n                    this.ngZone.runOutsideAngular(() => {\n                        combineLatest(elementsObserve)\n                            .pipe(this.takeUntilDestroyed)\n                            .subscribe(() => {\n                                this.setBodyHeight();\n                            });\n                    });\n                }\n            }\n        });\n    }\n\n    setBodyHeight() {\n        const virtualScroll = this.boardEntry.virtualScroll();\n        const containerHeight = this.boardEntry.container()?.clientHeight;\n        const laneHeight = this.boardEntry.laneHeight();\n        const draggingCard = this.boardEntry.draggingCard();\n\n        if (virtualScroll) {\n            if (draggingCard) {\n                this.entryBodyHeight = Math.min(laneHeight, containerHeight);\n            } else {\n                const realHeight = this._getRealHeight();\n                this.entryRealHeight.set(realHeight);\n                if (this.entryVirtualScroll()) {\n                    this.entryBodyHeight = Math.min(containerHeight, realHeight);\n                } else {\n                    this.entryBodyHeight = containerHeight;\n                }\n                this.entryDroppableZonesHeight = Math.min(laneHeight, containerHeight);\n            }\n        } else {\n            this.entryBodyHeight = containerHeight;\n            this.entryDroppableZonesHeight = Math.min(this.elementRef.nativeElement.parentElement.clientHeight, containerHeight);\n        }\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private getCardStatus(card: ThyBoardCard): ThyBoardEntryStatus {\n        if (helpers.isArray(card.status)) {\n            const status = card.status.find((status) => {\n                if (this.boardEntry.hasLane()) {\n                    return status.entryId === this.boardEntry.entry()._id && status.laneId === this.boardEntry.lane()._id;\n                } else {\n                    return status.entryId === this.boardEntry.entry()._id;\n                }\n            });\n            return status?.state!;\n        } else {\n            return card.status as ThyBoardEntryStatus;\n        }\n    }\n\n    _getRealHeight() {\n        return (\n            this.entryVirtualScroll()?.scrollStrategy?.entrySpacer() +\n            (this.bottom()?.nativeElement?.clientHeight || 0) +\n            (this.top()?.nativeElement?.clientHeight || 0) +\n            (this.entrySplitTitle()?.nativeElement?.clientHeight || 0)\n        );\n    }\n\n    scrolledIndexChange(event: number) {\n        this.boardEntry.virtualScrolledIndexChange.emit({\n            renderedRange: this.currentViewport()!.getRenderedRange(),\n            entry: this.boardEntry.entry(),\n            lane: this.boardEntry.lane()!,\n            status: this.status()\n        });\n    }\n\n    scrollToOffset(payload: { position: 'top' | 'middle' | 'bottom'; scrollTop: number; laneHight: number }) {\n        const realHeight = this._getRealHeight();\n\n        if (payload.position) {\n            if (payload.position === 'bottom') {\n                this.currentViewport()?.scrollTo({ bottom: 0 });\n                if (realHeight > 0 && payload.laneHight - payload.scrollTop > this.entryBodyHeight) {\n                    const offset = -(payload.scrollTop + this.entryBodyHeight - realHeight);\n                    const renderedContentTransform = `translateY(${Number(offset)}px)`;\n                    this.entryBody()!.nativeElement.style.transform = renderedContentTransform;\n                }\n            } else {\n                if (payload.scrollTop > 0 && payload.scrollTop > realHeight - this.entryBodyHeight) {\n                    this.currentViewport()!.scrollTo({ bottom: 0 });\n\n                    if (\n                        payload.scrollTop > 0 &&\n                        payload.scrollTop < realHeight &&\n                        payload.laneHight - payload.scrollTop > this.entryBodyHeight\n                    ) {\n                        const offset = -(payload.scrollTop + this.entryBodyHeight - realHeight);\n                        const renderedContentTransform = `translateY(${Number(offset)}px)`;\n                        this.entryBody()!.nativeElement.style.transform = renderedContentTransform;\n                    } else if (payload.scrollTop === 0) {\n                        this.entryBody()!.nativeElement.style.transform = '';\n                    }\n                } else {\n                    if (this.entryBody() && !!this.entryBody()!.nativeElement.style.transform) {\n                        this.entryBody()!.nativeElement.style.transform = '';\n                    }\n\n                    if (this.entryVirtualScroll()?.scrollStrategy?.entrySpacer()! > 0) {\n                        this.currentViewport()!.scrollToOffset(Math.max(0, payload.scrollTop));\n                    }\n                }\n            }\n        }\n    }\n\n    trackByFn(index: number, item: ThyBoardCard) {\n        return item._id || index;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ThyBoardCard, ThyBoardDragContainer, ThyBoardDragPredicateEvent } from './entities';\nimport { isFunction } from '@tethys/cdk';\n\n@Pipe({\n    name: 'thyBoardFunc',\n    standalone: true\n})\nexport class ThyBoardFuncPipe implements PipeTransform {\n    transform(\n        card: ThyBoardCard,\n        fn: ((event: ThyBoardDragPredicateEvent) => boolean) | undefined,\n        container: ThyBoardDragContainer\n    ): boolean {\n        if (isFunction(fn)) {\n            return fn({ card: card, container: container });\n        }\n        return true;\n    }\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\n\nimport { ThyBoardEntryVirtualScroll } from '../../scroll/entry-virtual-scroll';\nimport { CdkDrag, CdkDragDrop, DragDropModule, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { ThyBoardFuncPipe } from '../../board.pipe';\nimport { ThyBoardEntryBase } from '../entry-base';\nimport { THY_BOARD_ENTRY, ThyBoardCard, ThyBoardDragContainer, ThyBoardDragScopeType, ThyBoardEntryAbstract } from '../../entities';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { tap } from 'rxjs';\nimport { injectLocale } from '@tethys/pro/i18n';\n\n@Component({\n    selector: 'thy-board-sortable-entry',\n    templateUrl: 'sortable.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: ThyBoardEntryBase,\n            useExisting: ThyBoardSortableEntryComponent\n        }\n    ],\n    imports: [\n        NgStyle,\n        NgTemplateOutlet,\n        NgClass,\n        ScrollingModule,\n        DragDropModule,\n        ExperimentalScrollingModule,\n        ThyBoardEntryVirtualScroll,\n        ThyDragDropDirective,\n        ThyBoardFuncPipe\n    ],\n    host: {\n        class: 'thy-entry-sortable-container',\n        '[class.thy-entry-collapsed]': '!boardEntry?.entry()?.expanded'\n    }\n})\nexport class ThyBoardSortableEntryComponent extends ThyBoardEntryBase {\n    locale = injectLocale();\n\n    constructor(@Inject(THY_BOARD_ENTRY) public boardEntry: ThyBoardEntryAbstract) {\n        super(boardEntry);\n    }\n\n    checkCardDroppable(drag: CdkDrag<ThyBoardCard>, container: ThyBoardDragContainer) {\n        const originContainer = drag.dropContainer.data;\n        if (this.boardEntry.sortable()) {\n            if (this.boardEntry.sortable() === ThyBoardDragScopeType.entries) {\n                // 支持拖动变更栏，并且排序: 泳道相同\n                return this.boardEntry.hasLane() ? originContainer.lane._id === container.lane?._id : true;\n            }\n            if (this.boardEntry.sortable() === ThyBoardDragScopeType.lanes) {\n                // 支持拖动变更泳道，并且排序: 栏相同\n                return originContainer.entry._id === container.entry?._id;\n            }\n            if (this.boardEntry.sortable() === ThyBoardDragScopeType.all) {\n                // 支持拖动变更栏和泳道，并且排序: 任意栏\n                return true;\n            }\n        }\n        return false;\n    }\n\n    drop(event: CdkDragDrop<ThyBoardDragContainer | SafeAny>) {\n        const droppedList = event.container.data?.cards.filter((card: ThyBoardCard) => {\n            return card._id !== event.item.data._id;\n        });\n        const currentPreOrAfterCard = event.container.data.card;\n        const currentPreOrAfterCardIndex =\n            (droppedList || []).findIndex((card: ThyBoardCard) => {\n                return card._id === currentPreOrAfterCard?._id;\n            }) || 0;\n        const currentIndex = event.currentIndex ? currentPreOrAfterCardIndex + 1 : currentPreOrAfterCardIndex;\n\n        const previousIndex = (event.previousContainer.data?.cards || []).findIndex(\n            (card: ThyBoardCard) => card._id === event.item.data._id\n        );\n\n        transferArrayItem(event.previousContainer.data?.cards!, event.container.data?.cards!, previousIndex, currentIndex);\n        const cardDropAction = this.boardEntry.cardDropAction();\n        if (cardDropAction) {\n            cardDropAction({\n                card: event.item.data,\n                previousContainer: event.previousContainer.data!,\n                previousIndex: previousIndex,\n                container: event.container.data!,\n                currentIndex: currentIndex\n            })\n                .pipe(\n                    tap((result: boolean) => {\n                        if (!result) {\n                            transferArrayItem(\n                                event.container.data?.cards!,\n                                event.previousContainer.data?.cards!,\n                                currentIndex,\n                                previousIndex\n                            );\n                            event.previousContainer.data.changeDetectorRef.markForCheck();\n                            this.changeDetectorRef.markForCheck();\n                        }\n                    })\n                )\n                .subscribe();\n        }\n    }\n}\n","@if (!boardEntry.lane() || boardEntry.lane()!.expanded) {\n  <div\n    class=\"entry-body\"\n    #entryBody\n    [ngStyle]=\"{\n      height: boardEntry!.virtualScroll() && entryBodyHeight ? entryBodyHeight + 'px' : '100%'\n    }\"\n    [ngClass]=\"{ 'entry-collapsed': !boardEntry.entry().expanded }\"\n  >\n    <div class=\"entry-cards\">\n      @if (boardEntry.entry().split && status()) {\n        <div class=\"entry-split-title\" #entrySplitTitle>\n          @if (status() === boardEntryStatus.doing) {\n            {{ locale().inProgress }}\n          } @else {\n            {{ locale().completed }}\n          }\n        </div>\n      }\n      @if (boardEntry.topTemplateRef() && !boardEntry.draggingCard()) {\n        <div #top class=\"entry-top\">\n          <ng-template\n            [ngTemplateOutlet]=\"boardEntry!.topTemplateRef()!\"\n            [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), lane: boardEntry.lane(), status: status() }\"\n          ></ng-template>\n        </div>\n      }\n      @if (boardEntry.virtualScroll()) {\n        <cdk-virtual-scroll-viewport\n          entry\n          [minBufferPx]=\"500\"\n          [maxBufferPx]=\"1000\"\n          [cards]=\"cards()!\"\n          [defaultCardSize]=\"boardEntry.defaultCardSize()\"\n          (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n          [ngClass]=\"{ 'entry-viewport': boardEntry.hasLane(), 'flex-fill': cards()!.length > 0 }\"\n        >\n          <div\n            cdkDropList\n            [cdkDropListAutoScrollStep]=\"5\"\n            thyDragDrop\n            [cdkDropListData]=\"{\n              entry: boardEntry.entry(),\n              lane: boardEntry.lane(),\n              cards: cards(),\n              status: status(),\n              changeDetectorRef: changeDetectorRef,\n              card: card\n            }\"\n            (cdkDropListDropped)=\"drop($event)\"\n            [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n            *cdkVirtualFor=\"let card of cards(); let i = index; trackBy: trackByFn; last as isLast\"\n            #card\n            [attr.name]=\"card._id + '-' + i\"\n            class=\"entry-card-list\"\n          >\n            <div\n              class=\"entry-card\"\n              cdkDrag\n              [cdkDragData]=\"card\"\n              [cdkDragDisabled]=\"\n                !(\n                  card\n                  | thyBoardFunc\n                    : boardEntry.cardDraggablePredicate()\n                    : { entry: boardEntry.entry(), lane: boardEntry.lane(), cards: cards() }\n                )\n              \"\n              (cdkDragStarted)=\"cdkDragStarted($event)\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"boardEntry.cardTemplateRef()!\"\n                [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), $implicit: card }\"\n              ></ng-template>\n            </div>\n          </div>\n        </cdk-virtual-scroll-viewport>\n      } @else {\n        @for (card of cards(); track card._id) {\n          <div\n            cdkDropList\n            [cdkDropListAutoScrollStep]=\"5\"\n            thyDragDrop\n            [cdkDropListData]=\"{\n              entry: boardEntry.entry(),\n              lane: boardEntry.lane(),\n              cards: cards(),\n              status: status(),\n              changeDetectorRef: changeDetectorRef,\n              card: card\n            }\"\n            (cdkDropListDropped)=\"drop($event)\"\n            [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n            class=\"entry-card-list\"\n          >\n            <div\n              class=\"entry-card\"\n              cdkDrag\n              [cdkDragData]=\"card\"\n              [cdkDragDisabled]=\"\n                !(\n                  card\n                  | thyBoardFunc\n                    : boardEntry.cardDraggablePredicate()\n                    : { entry: boardEntry.entry(), lane: boardEntry.lane(), cards: cards(), status: status() }\n                )\n              \"\n              (cdkDragStarted)=\"cdkDragStarted($event)\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"boardEntry!.cardTemplateRef()!\"\n                [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), $implicit: card }\"\n              ></ng-template>\n            </div>\n          </div>\n        }\n      }\n\n      @if (cards()?.length === 0 && boardEntry.draggingCard()) {\n        <div\n          cdkDropList\n          [cdkDropListAutoScrollStep]=\"5\"\n          thyDragDrop\n          [cdkDropListData]=\"{\n            entry: boardEntry.entry(),\n            lane: boardEntry.lane(),\n            cards: cards(),\n            status: status(),\n            changeDetectorRef: changeDetectorRef\n          }\"\n          (cdkDropListDropped)=\"drop($event)\"\n          [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n          class=\"entry-card-list entry-empty\"\n        ></div>\n      }\n\n      @if (boardEntry.bottomTemplateRef() && !boardEntry.draggingCard()) {\n        <div #bottom class=\"entry-bottom\">\n          <ng-template\n            [ngTemplateOutlet]=\"boardEntry.bottomTemplateRef()!\"\n            [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), lane: boardEntry.lane(), status: status() }\"\n          ></ng-template>\n        </div>\n      }\n    </div>\n  </div>\n} @else {\n  @if (!boardEntry.entry().split || (boardEntry.entry().split && status() === boardEntryStatus.doing)) {\n    <div class=\"text-muted text-truncate board-lane-collapsed\">\n      <span class=\"text-secondary mr-1\">{{ boardEntry.entry().cards!.length }}</span\n      >{{ locale().count }}{{ boardEntry.entry().name }}\n    </div>\n  }\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Inject } from '@angular/core';\nimport { ThyFlexItem } from 'ngx-tethys/grid';\n\nimport { ThyBoardEntryVirtualScroll } from '../../scroll/entry-virtual-scroll';\nimport { CdkDrag, CdkDragStart, DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { ThyBoardFuncPipe } from '../../board.pipe';\nimport { ThyBoardEntryBase } from '../entry-base';\nimport { THY_BOARD_ENTRY, ThyBoardCard, ThyBoardDragContainer, ThyBoardDragScopeType, ThyBoardEntryAbstract } from '../../entities';\nimport { injectLocale } from '@tethys/pro/i18n';\n\n@Component({\n    selector: 'thy-board-movable-entry',\n    templateUrl: 'movable.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: ThyBoardEntryBase,\n            useExisting: ThyBoardMovableEntryComponent\n        }\n    ],\n    imports: [\n        NgStyle,\n        NgTemplateOutlet,\n        NgClass,\n        ScrollingModule,\n        DragDropModule,\n        ExperimentalScrollingModule,\n        ThyFlexItem,\n        ThyBoardEntryVirtualScroll,\n        ThyDragDropDirective,\n        ThyBoardFuncPipe\n    ],\n    host: {\n        class: 'thy-entry-movable-container',\n        '[class.thy-entry-collapsed]': '!boardEntry.entry()?.expanded'\n    }\n})\nexport class ThyBoardMovableEntryComponent extends ThyBoardEntryBase {\n    locale = injectLocale();\n\n    public isDraggingList = false;\n\n    public showBackDropWhenDragging = computed(() => {\n        const movable = this.boardEntry.movable();\n        const draggingCard = this.boardEntry.draggingCard();\n        if (draggingCard) {\n            if (movable) {\n                return this.checkCardDroppable(draggingCard, { entry: this.boardEntry.entry(), lane: this.boardEntry.lane() });\n            }\n        } else {\n            this.isDraggingList = false;\n        }\n        return false;\n    });\n\n    cardDroppableZone = computed(() => {\n        const cardDroppableZones = this.boardEntry.cardDroppableZones();\n        const hasDroppableZones = this.boardEntry.hasDroppableZones();\n        if (hasDroppableZones) {\n            const entry = this.boardEntry.entry();\n            const draggingCard = this.boardEntry.draggingCard();\n            if (draggingCard && cardDroppableZones) {\n                return this.boardEntry.hasLane()\n                    ? (cardDroppableZones &&\n                          cardDroppableZones?.find(\n                              (zone) => zone.entryId === this.boardEntry.entry()._id && zone.laneId === this.boardEntry.lane()?._id\n                          )?.droppableZones) ||\n                          null\n                    : (cardDroppableZones &&\n                          cardDroppableZones?.find((zone) => zone.entryId === this.boardEntry.entry()._id)?.droppableZones) ||\n                          null;\n            } else {\n                return entry.droppableZones || [];\n            }\n        }\n        return [];\n    });\n\n    dropReady = computed(() => {\n        const cardDroppableZones = this.boardEntry.cardDroppableZones();\n        const draggingCard = this.boardEntry.draggingCard();\n        const hasDroppableZones = this.boardEntry.hasDroppableZones();\n        if (hasDroppableZones) {\n            if (draggingCard && cardDroppableZones) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n        return true;\n    });\n\n    constructor(@Inject(THY_BOARD_ENTRY) public boardEntry: ThyBoardEntryAbstract) {\n        super(boardEntry);\n    }\n\n    cdkDragStarted(event: CdkDragStart) {\n        this.isDraggingList = true;\n        if (this.boardEntry.movable()) {\n            const cardHeight = event.source.dropContainer.element.nativeElement.clientHeight;\n            this.renderer.setStyle(event.source.dropContainer.element.nativeElement, 'height', cardHeight + 'px');\n        }\n        super.cdkDragStarted(event);\n    }\n\n    checkCardDroppable(drag: CdkDrag<ThyBoardCard>, container: ThyBoardDragContainer) {\n        const originContainer = drag.dropContainer.data;\n        if (this.boardEntry.movable()) {\n            if (this.boardEntry.movable() === ThyBoardDragScopeType.entries) {\n                // 支持变更栏 entry：泳道相同，且 不在原来的栏\n                return this.boardEntry.hasLane()\n                    ? originContainer.lane._id === container.lane?._id && originContainer.entry._id !== container.entry?._id\n                    : originContainer.entry._id !== container.entry?._id;\n            }\n            if (this.boardEntry.movable() === ThyBoardDragScopeType.lanes) {\n                // 支持变更泳道 lane: 栏相同 且 不在原来的泳道\n                return this.boardEntry.hasLane()\n                    ? originContainer.entry._id === container.entry?._id && originContainer.lane._id !== container.lane?._id\n                    : false;\n            }\n            if (this.boardEntry.movable() === ThyBoardDragScopeType.all) {\n                // 支持变更栏和泳道: 不在原来的栏或者不在原来的泳道\n                return this.boardEntry.hasLane()\n                    ? originContainer.entry._id !== container.entry?._id || originContainer.lane._id !== container.lane?._id\n                    : originContainer.entry._id !== container.entry?._id;\n            }\n        }\n        return false;\n    }\n}\n","@if (!boardEntry.lane() || boardEntry.lane()!.expanded) {\n  <div\n    class=\"entry-body\"\n    #entryBody\n    [ngStyle]=\"{\n      height: boardEntry.virtualScroll() && entryBodyHeight ? entryBodyHeight + 'px' : '100%'\n    }\"\n    [ngClass]=\"{ 'entry-collapsed': !boardEntry.entry().expanded }\"\n    [class.d-none]=\"boardEntry.hasDroppableZones() && !isDraggingList && showBackDropWhenDragging()\"\n  >\n    <div class=\"entry-cards\" [ngClass]=\"{ 'entry-cards-dragging': showBackDropWhenDragging() && !isDraggingList }\">\n      @if (boardEntry.entry().split && status()) {\n        <div class=\"entry-split-title\" #entrySplitTitle>\n          @if (status() === boardEntryStatus.doing) {\n            {{ locale().inProgress }}\n          } @else {\n            {{ locale().completed }}\n          }\n        </div>\n      }\n      @if (boardEntry.topTemplateRef()) {\n        <div #top class=\"entry-top\">\n          <ng-template\n            [ngTemplateOutlet]=\"boardEntry.topTemplateRef()!\"\n            [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), lane: boardEntry.lane(), status: status() }\"\n          ></ng-template>\n        </div>\n      }\n\n      @if (boardEntry.virtualScroll()) {\n        <!-- 开启虚拟滚动 -->\n        <cdk-virtual-scroll-viewport\n          entry\n          [minBufferPx]=\"500\"\n          [maxBufferPx]=\"1000\"\n          [cards]=\"cards()!\"\n          [defaultCardSize]=\"boardEntry.defaultCardSize()\"\n          (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n          thyFlexItem=\"auto\"\n          [ngClass]=\"{ 'entry-viewport flex-shrink-0': boardEntry.hasLane() }\"\n        >\n          <div\n            *cdkVirtualFor=\"let card of cards(); let i = index; trackBy: trackByFn; last as isLast\"\n            #card\n            [attr.name]=\"card._id + '-' + i\"\n            class=\"entry-card-list\"\n            cdkDropList\n            [cdkDropListAutoScrollStep]=\"5\"\n            thyDragDrop\n            [cdkDropListData]=\"{\n              entry: boardEntry.entry(),\n              lane: boardEntry.lane(),\n              cards: cards(),\n              status: status(),\n              changeDetectorRef: changeDetectorRef\n            }\"\n            (cdkDropListDropped)=\"drop($event)\"\n            [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n          >\n            <div\n              class=\"entry-card\"\n              cdkDrag\n              [cdkDragData]=\"card\"\n              [cdkDragDisabled]=\"\n                !(\n                  card\n                  | thyBoardFunc\n                    : boardEntry.cardDraggablePredicate()\n                    : { entry: boardEntry.entry(), lane: boardEntry.lane(), cards: cards() }\n                )\n              \"\n              (cdkDragStarted)=\"cdkDragStarted($event)\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"boardEntry.cardTemplateRef()!\"\n                [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), $implicit: card }\"\n              ></ng-template>\n            </div>\n          </div>\n        </cdk-virtual-scroll-viewport>\n      } @else {\n        <!-- 不开启虚拟滚动 -->\n\n        @for (card of cards(); track card._id) {\n          <div\n            class=\"entry-card-list\"\n            cdkDropList\n            [cdkDropListAutoScrollStep]=\"5\"\n            thyDragDrop\n            [cdkDropListData]=\"{\n              entry: boardEntry.entry(),\n              lane: boardEntry.lane(),\n              cards: cards(),\n              status: status(),\n              changeDetectorRef: changeDetectorRef\n            }\"\n            (cdkDropListDropped)=\"drop($event)\"\n            [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n          >\n            <div\n              class=\"entry-card\"\n              cdkDrag\n              [cdkDragData]=\"card\"\n              [cdkDragDisabled]=\"\n                !(\n                  card\n                  | thyBoardFunc\n                    : boardEntry.cardDraggablePredicate()\n                    : { entry: boardEntry.entry(), lane: boardEntry.lane(), cards: cards() }\n                )\n              \"\n              (cdkDragStarted)=\"cdkDragStarted($event)\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"boardEntry.cardTemplateRef()!\"\n                [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), $implicit: card }\"\n              ></ng-template>\n            </div>\n          </div>\n        }\n      }\n      @if (boardEntry.bottomTemplateRef()) {\n        <div #bottom class=\"entry-bottom\">\n          <ng-template\n            [ngTemplateOutlet]=\"boardEntry.bottomTemplateRef()!\"\n            [ngTemplateOutletContext]=\"{ entry: boardEntry.entry(), lane: boardEntry.lane() }\"\n          ></ng-template>\n        </div>\n      }\n    </div>\n  </div>\n  @if (boardEntry.hasDroppableZones()) {\n    <div\n      class=\"entry-drop-zones\"\n      [class.flex-row]=\"!showBackDropWhenDragging()\"\n      [class.invisible]=\"!dropReady() || !showBackDropWhenDragging() || (showBackDropWhenDragging() && isDraggingList)\"\n      [class.entry-dragging]=\"showBackDropWhenDragging() && !isDraggingList\"\n      [class.d-none]=\"showBackDropWhenDragging() && isDraggingList\"\n      [ngStyle]=\"{\n        height:\n          showBackDropWhenDragging() &&\n          !isDraggingList &&\n          boardEntry.virtualScroll() &&\n          boardEntry.hasLane() &&\n          entryDroppableZonesHeight &&\n          entryDroppableZonesHeight === boardEntry.container().clientHeight\n            ? entryDroppableZonesHeight + 'px'\n            : '100%'\n      }\"\n    >\n      @for (zone of cardDroppableZone(); track zone._id) {\n        <div\n          class=\"entry-drop-zone\"\n          id=\"{{ zone._id }}\"\n          cdkDropList\n          [cdkDropListAutoScrollStep]=\"5\"\n          thyDragDrop\n          [cdkDropListData]=\"{\n            entry: boardEntry.entry(),\n            lane: boardEntry.lane(),\n            cards: cards(),\n            status: status(),\n            changeDetectorRef: changeDetectorRef,\n            zone: zone\n          }\"\n          (cdkDropListDropped)=\"drop($event)\"\n          [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n        >\n          <span class=\"text-desc dragging-text-color\">{{ zone?.name }}</span>\n        </div>\n      } @empty {\n        <div class=\"empty-zone\">\n          <div class=\"empty-zone-tip\">{{ locale().forbidDropInEntry }}</div>\n        </div>\n      }\n    </div>\n  } @else {\n    <div\n      class=\"entry-drop\"\n      [class.flex-row]=\"!showBackDropWhenDragging()\"\n      [class.invisible]=\"!showBackDropWhenDragging() || (showBackDropWhenDragging() && isDraggingList)\"\n      [class.d-none]=\"showBackDropWhenDragging() && isDraggingList\"\n      cdkDropList\n      [cdkDropListAutoScrollStep]=\"5\"\n      thyDragDrop\n      [cdkDropListData]=\"{\n        entry: boardEntry.entry(),\n        lane: boardEntry.lane(),\n        cards: cards(),\n        status: status(),\n        changeDetectorRef: changeDetectorRef\n      }\"\n      (cdkDropListDropped)=\"drop($event)\"\n      [cdkDropListEnterPredicate]=\"dropListEnterPredicate\"\n    ></div>\n  }\n} @else {\n  @if (!boardEntry.entry().split || (boardEntry.entry().split && status() === boardEntryStatus.doing)) {\n    <div class=\"text-muted text-truncate board-lane-collapsed\">\n      <span class=\"text-secondary mr-1\">{{ boardEntry.entry().cards!.length }}</span\n      >{{ locale().count }}{{ boardEntry.entry().name }}\n    </div>\n  }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    TemplateRef,\n    booleanAttribute,\n    effect,\n    input,\n    numberAttribute,\n    output,\n    viewChildren,\n    untracked\n} from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\n\nimport {\n    ThyBoardCard,\n    ThyBoardDragScopeType,\n    ThyBoardDropActionEvent,\n    ThyBoardDragPredicateEvent,\n    ThyBoardEntry,\n    ThyBoardLane,\n    ThyBoardZone,\n    ThyBoardVirtualScrolledIndexChangeEvent,\n    ThyBoardEntryStatus\n} from '../entities';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Observable } from 'rxjs';\n\nimport { THY_BOARD_ENTRY } from '../entities';\nimport { ThyBoardEntryBase } from './entry-base';\nimport { ThyBoardSortableEntryComponent } from './sortable/sortable.component';\nimport { ThyBoardMovableEntryComponent } from './movable/movable.component';\nimport { helpers } from 'ngx-tethys/util';\n\n@Component({\n    selector: 'thy-board-entry',\n    templateUrl: 'entry.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: THY_BOARD_ENTRY,\n            useExisting: ThyBoardEntryComponent\n        }\n    ],\n    imports: [ThyBoardSortableEntryComponent, ThyBoardMovableEntryComponent],\n    host: {\n        class: 'thy-entry-container board-lane-body-entry',\n        '[class.thy-entry-collapsed]': '!entry()?.expanded',\n        '[class.thy-entry-split]': 'entry().split',\n        '[class.board-lane-body-entry-is-empty]': 'lane() && lane()!.expanded && lane()!.cards?.length === 0',\n        '[class.board-lane-body-entry-is-collapsed]': 'lane() && !lane()!.expanded',\n        '[class.thy-entry-exceed-wip-limit]': 'entryIsExceedWipLimit'\n    }\n})\nexport class ThyBoardEntryComponent {\n    entryComponent = viewChildren(ThyBoardEntryBase);\n\n    entry = input.required<ThyBoardEntry>();\n\n    entries = input.required<ThyBoardEntry[]>();\n\n    hasLane = input(false, { transform: booleanAttribute });\n\n    lane = input<ThyBoardLane>();\n\n    laneHeight = input(0, { transform: numberAttribute });\n\n    virtualScroll = input(false, { transform: booleanAttribute });\n\n    cardTemplateRef = input<TemplateRef<SafeAny>>();\n\n    container = input.required<HTMLElement>();\n\n    defaultCardSize = input(112, { transform: numberAttribute });\n\n    draggingCard = input<CdkDrag<ThyBoardCard>>();\n\n    hasDroppableZones = input<boolean>();\n\n    /**\n     * 获取卡片可放置的区域\n     */\n    cardDroppableZones = input<\n        {\n            laneId?: string;\n            entryId: string;\n            droppableZones: ThyBoardZone[];\n        }[]\n    >();\n\n    topTemplateRef = input<TemplateRef<SafeAny>>();\n\n    bottomTemplateRef = input<TemplateRef<SafeAny>>();\n\n    /**\n     * 是否支持排序,开启后支持同栏排序\n     * @default false\n     * @type boolean\n     */\n    sortable = input<ThyBoardDragScopeType>();\n\n    /**\n     * 是否支持拖动，变更栏和泳道\n     * @default false\n     * @type boolean\n     */\n    movable = input<ThyBoardDragScopeType>();\n\n    cardDraggablePredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    cardDropEnterPredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    cardDropAction = input<(event: ThyBoardDropActionEvent) => Observable<boolean>>();\n\n    cardDragStarted = output<CdkDrag<ThyBoardCard>>();\n\n    virtualScrolledIndexChange = output<ThyBoardVirtualScrolledIndexChangeEvent>();\n\n    boardEntryStatus = ThyBoardEntryStatus;\n\n    entryIsExceedWipLimit = false;\n\n    constructor() {\n        effect(() => {\n            const entriesMapById = helpers.keyBy(this.entries() || [], '_id');\n            untracked(() => {\n                if (this.entry()) {\n                    const entry = entriesMapById[this.entry()._id];\n                    this.entryIsExceedWipLimit = !!entry.wipLimit && (entry.cards?.length || 0) > entry.wipLimit!;\n                }\n            });\n        });\n    }\n\n    scrollToOffset(payload: { position: 'top' | 'middle' | 'bottom'; scrollTop: number; laneHight: number }) {\n        this.entryComponent().forEach((entryComponent) => {\n            entryComponent.scrollToOffset(payload);\n        });\n    }\n}\n","@if (movable()) {\n  @if (entry().split) {\n    <thy-board-movable-entry [status]=\"boardEntryStatus.doing\"></thy-board-movable-entry>\n    @if (!lane() || lane()!.expanded) {\n      <div class=\"entry-split-line\"></div>\n    }\n\n    <thy-board-movable-entry [status]=\"boardEntryStatus.done\"></thy-board-movable-entry>\n  } @else {\n    <thy-board-movable-entry></thy-board-movable-entry>\n  }\n} @else {\n  @if (entry().split) {\n    <thy-board-sortable-entry [status]=\"boardEntryStatus.doing\"></thy-board-sortable-entry>\n    @if (!lane() || lane()!.expanded) {\n      <div class=\"entry-split-line\"></div>\n    }\n\n    <thy-board-sortable-entry [status]=\"boardEntryStatus.done\"></thy-board-sortable-entry>\n  } @else {\n    <thy-board-sortable-entry></thy-board-sortable-entry>\n  }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    OnInit,\n    TemplateRef,\n    booleanAttribute,\n    effect,\n    input,\n    numberAttribute,\n    output,\n    viewChildren\n} from '@angular/core';\nimport { ThyBoardEntryComponent } from '../entry/entry.component';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport {\n    ThyBoardDragPredicateEvent,\n    ThyBoardEntry,\n    ThyBoardLane,\n    ThyBoardDragScopeType,\n    ThyBoardCard,\n    ThyBoardDropActionEvent,\n    ThyBoardZone,\n    ThyBoardVirtualScrolledIndexChangeEvent\n} from '../entities';\nimport { CdkDrag, DragDropModule } from '@angular/cdk/drag-drop';\nimport { Observable, of } from 'rxjs';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { injectLocale } from '@tethys/pro/i18n';\n\nconst emptyLaneHeight = 200;\n\n@Component({\n    selector: 'thy-board-lane',\n    templateUrl: 'lane.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgStyle, NgTemplateOutlet, DragDropModule, ThyIcon, ThyFlexibleText, ThyBoardEntryComponent],\n    host: {\n        class: 'thy-board-lane-container'\n    }\n})\nexport class ThyBoardLaneComponent implements OnInit {\n    locale = injectLocale();\n\n    entryComponents = viewChildren(ThyBoardEntryComponent);\n\n    public isBatchOperation = false;\n\n    public swimlaneLength = 0;\n\n    public laneHeight = 0;\n\n    lane = input<ThyBoardLane>();\n\n    entries = input.required<ThyBoardEntry[]>();\n\n    allLanesExpanded = input<boolean>(true);\n\n    hasLane = input(false, { transform: booleanAttribute });\n\n    virtualScroll = input(false, { transform: booleanAttribute });\n\n    laneTemplateRef = input<TemplateRef<SafeAny>>();\n\n    cardTemplateRef = input.required<TemplateRef<SafeAny>>();\n\n    container = input.required<HTMLDivElement>();\n\n    entryTopTemplateRef = input<TemplateRef<SafeAny>>();\n\n    entryBottomTemplateRef = input<TemplateRef<SafeAny>>();\n\n    defaultCardSize = input(112, { transform: numberAttribute });\n\n    /**\n     * 是否支持栏的收起展开\n     * @default false\n     * @type boolean\n     */\n    laneCollapsible = input(true, { transform: booleanAttribute });\n\n    /**\n     * 是否支持排序,开启后支持同栏排序\n     * @default false\n     * @type boolean\n     */\n    sortable = input<ThyBoardDragScopeType>();\n\n    /**\n     * 是否支持拖动，变更栏和泳道\n     * @default false\n     * @type boolean\n     */\n    movable = input<ThyBoardDragScopeType>();\n\n    draggingCard = input<CdkDrag<ThyBoardCard>>();\n\n    hasDroppableZones = input<boolean>();\n\n    /**\n     * 获取卡片可放置的区域\n     */\n    cardDroppableZones = input<\n        {\n            laneId?: string;\n            entryId: string;\n            droppableZones: ThyBoardZone[];\n        }[]\n    >();\n\n    cardDraggablePredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    cardDropEnterPredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    cardDropAction = input<(event: ThyBoardDropActionEvent) => Observable<boolean>>();\n\n    cardDragStarted = output<CdkDrag<ThyBoardCard>>();\n    /**\n     * 展开收起泳道事件\n     */\n    expandLane = output<{ lane: ThyBoardLane; expanded: boolean }>();\n\n    virtualScrolledIndexChange = output<ThyBoardVirtualScrolledIndexChangeEvent>();\n\n    constructor() {\n        effect(() => {\n            this.setLaneHeight();\n        });\n    }\n\n    ngOnInit() {}\n\n    private setLaneHeight() {\n        if (this.entryComponents()?.length > 0 && this.hasLane() && this.virtualScroll()) {\n            let laneHeight = 0;\n            this.entryComponents().forEach((entry, index) => {\n                let entrySpacer = 0;\n                entry.entryComponent().forEach((entryComponent) => {\n                    entrySpacer = Math.max(entrySpacer, entryComponent.entryRealHeight());\n                });\n\n                let entryBodyHeight = 0;\n                entry.entryComponent().forEach((entryComponent) => {\n                    entryBodyHeight = Math.max(entrySpacer, entryComponent.entryBodyHeight);\n                });\n\n                entrySpacer = entrySpacer < entryBodyHeight ? entryBodyHeight : entrySpacer;\n                laneHeight = Math.max(laneHeight, entrySpacer);\n            });\n            laneHeight = this.lane()?.expanded && this.lane()?.cards?.length === 0 ? emptyLaneHeight : laneHeight;\n            this.laneHeight = laneHeight;\n        }\n    }\n\n    public expand() {\n        const isExpanded = this.lane()?.expanded;\n        this.expandLane.emit({ lane: this.lane()!, expanded: !isExpanded });\n    }\n\n    dropListDropped = (event: ThyBoardDropActionEvent) => {\n        const cardDropAction = this.cardDropAction();\n        if (cardDropAction) {\n            return cardDropAction(event);\n        } else {\n            return of(true);\n        }\n    };\n}\n","@if (hasLane()) {\n  <div class=\"board-lane-header-container d-flex\" [class.board-lane-header-expanded]=\"lane()?.expanded\">\n    <div class=\"board-lane-header\">\n      @if (laneCollapsible()) {\n        <thy-icon\n          thyIconName=\"angle-down\"\n          class=\"lane-expand-icon mr-2\"\n          [class.lane-expand-icon-collapsed]=\"!lane()?.expanded\"\n          (click)=\"expand()\"\n        ></thy-icon>\n      }\n\n      @if (laneTemplateRef()) {\n        <ng-template\n          [ngTemplateOutlet]=\"laneTemplateRef()!\"\n          [ngTemplateOutletContext]=\"{ lane: lane(), $implicit: lane(), isExpanded: lane()?.expanded }\"\n        ></ng-template>\n      } @else {\n        <div class=\"d-flex justify-content-between text-secondary flex-grow-1 type-container\">\n          <span thyFlexibleText [thyTooltipContent]=\"lane()!.name\">\n            <span>{{ lane()?.name }}</span>\n          </span>\n          @if (lane()?.expanded) {\n            <span class=\"text-muted flex-shrink-0\"\n              ><span class=\"text-secondary mr-1\">{{ lane()?.cards?.length || 0 }}</span\n              >{{ locale().count }}</span\n            >\n          }\n        </div>\n      }\n    </div>\n  </div>\n}\n\n<div\n  class=\"board-lane-body\"\n  [class.board-no-lane-body]=\"!hasLane()\"\n  [ngStyle]=\"{ height: lane()?.expanded && hasLane() && laneHeight ? laneHeight + 'px' : 'unset' }\"\n>\n  @if (hasLane()) {\n    @for (entry of lane()?.entries; track entry._id) {\n      <thy-board-entry\n        [hasLane]=\"hasLane()\"\n        [virtualScroll]=\"virtualScroll()\"\n        [entry]=\"entry\"\n        [lane]=\"lane()\"\n        [entries]=\"entries()\"\n        [laneHeight]=\"laneHeight\"\n        [cardTemplateRef]=\"cardTemplateRef()\"\n        [container]=\"container()\"\n        [defaultCardSize]=\"defaultCardSize()\"\n        [draggingCard]=\"draggingCard()\"\n        [hasDroppableZones]=\"hasDroppableZones()\"\n        [cardDroppableZones]=\"cardDroppableZones()\"\n        [movable]=\"movable()\"\n        [sortable]=\"sortable()\"\n        (cardDragStarted)=\"cardDragStarted.emit($event)\"\n        [cardDraggablePredicate]=\"cardDraggablePredicate()\"\n        [cardDropEnterPredicate]=\"cardDropEnterPredicate()\"\n        [cardDropAction]=\"dropListDropped\"\n        [topTemplateRef]=\"entryTopTemplateRef()\"\n        [bottomTemplateRef]=\"entryBottomTemplateRef()\"\n        (virtualScrolledIndexChange)=\"virtualScrolledIndexChange.emit($event)\"\n      ></thy-board-entry>\n    }\n  } @else {\n    @for (entry of entries(); track entry._id) {\n      <thy-board-entry\n        [hasLane]=\"hasLane()\"\n        [virtualScroll]=\"virtualScroll()\"\n        [entry]=\"entry\"\n        [lane]=\"lane()\"\n        [entries]=\"entries()\"\n        [laneHeight]=\"laneHeight\"\n        [cardTemplateRef]=\"cardTemplateRef()\"\n        [container]=\"container()\"\n        [defaultCardSize]=\"defaultCardSize()\"\n        [draggingCard]=\"draggingCard()\"\n        [hasDroppableZones]=\"hasDroppableZones()\"\n        [cardDroppableZones]=\"cardDroppableZones()\"\n        [movable]=\"movable()\"\n        [sortable]=\"sortable()\"\n        [cardDraggablePredicate]=\"cardDraggablePredicate()\"\n        [cardDropEnterPredicate]=\"cardDropEnterPredicate()\"\n        (cardDragStarted)=\"cardDragStarted.emit($event)\"\n        [cardDropAction]=\"dropListDropped\"\n        [topTemplateRef]=\"entryTopTemplateRef()\"\n        [bottomTemplateRef]=\"entryBottomTemplateRef()\"\n        (virtualScrolledIndexChange)=\"virtualScrolledIndexChange.emit($event)\"\n      >\n      </thy-board-entry>\n    }\n  }\n</div>\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AfterViewInit, booleanAttribute, ContentChildren, Directive, input, QueryList } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { animationFrameScheduler, asapScheduler, auditTime } from 'rxjs';\nimport { ThyBoardLane } from '../entities';\nimport { ThyBoardLaneComponent } from '../lane/lane.component';\n\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n@Directive({\n    selector: '[thy-board-body-scrollable], [thyBoardBodyScrollable]',\n    standalone: true\n})\nexport class ThyBoardBodyScrollableDirective extends CdkScrollable implements AfterViewInit {\n    @ContentChildren(ThyBoardLaneComponent) lanes!: QueryList<ThyBoardLaneComponent>;\n\n    /**\n     * 是否禁用自定义滚动\n     * @default false\n     * @type boolean\n     */\n    readonly thyBoardBodyScrollable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n    /**\n     * 泳道列表\n     * @default []\n     * @type ThyBoardLane[]\n     */\n    thyLanes = input<ThyBoardLane[]>([]);\n\n    private takeUntilDestroyed = takeUntilDestroyed();\n\n    ngAfterViewInit(): void {\n        if (!this.thyBoardBodyScrollable()) {\n            this.ngZone.runOutsideAngular(() => {\n                this.elementScrolled()\n                    .pipe(auditTime(0, SCROLL_SCHEDULER), this.takeUntilDestroyed)\n                    .subscribe(() => {\n                        this.laneScrollToOffset();\n                    });\n            });\n        }\n    }\n\n    private laneIsInViewport(\n        preLanesTotalSize: number,\n        laneSpacerSize: number\n    ): { position: 'top' | 'middle' | 'bottom'; scrollTop: number; laneHight: number } | null {\n        const scrollOffset = this.measureScrollOffset('top');\n        const offsetHeight = this.elementRef.nativeElement.offsetHeight;\n\n        // 头\n        if (preLanesTotalSize <= scrollOffset + offsetHeight && preLanesTotalSize >= scrollOffset) {\n            const scrollTop = 0;\n            return {\n                position: 'top',\n                scrollTop: scrollTop,\n                laneHight: laneSpacerSize\n            };\n        } else if (preLanesTotalSize < scrollOffset && preLanesTotalSize + laneSpacerSize > scrollOffset + offsetHeight) {\n            const scrollTop = scrollOffset - preLanesTotalSize;\n\n            return {\n                position: 'middle',\n                scrollTop: scrollTop,\n                laneHight: laneSpacerSize\n            };\n        } else if (preLanesTotalSize + laneSpacerSize > scrollOffset && preLanesTotalSize + laneSpacerSize < scrollOffset + offsetHeight) {\n            // 尾\n            const scrollTop = scrollOffset - preLanesTotalSize;\n\n            return {\n                position: 'bottom',\n                scrollTop: scrollTop,\n                laneHight: laneSpacerSize\n            };\n        }\n\n        return null;\n    }\n\n    private buildLanesMapById() {\n        const laneComponentsMapById: Record<string, ThyBoardLaneComponent> = {};\n        const laneComponents = this.lanes.toArray();\n        (laneComponents || []).forEach((component) => {\n            laneComponentsMapById[component.lane()!._id] = component;\n        });\n        return laneComponentsMapById;\n    }\n\n    private laneScrollToOffset() {\n        let preLanesTotalSize = 0;\n        const laneComponentsMapById = this.buildLanesMapById();\n        const skeletonHeight = 255;\n        (this.thyLanes() || []).forEach((lane, index) => {\n            const laneComponent = laneComponentsMapById[lane._id];\n            let laneSpacerSize = skeletonHeight;\n            if (laneComponent) {\n                laneSpacerSize = laneComponent.lane()?.expanded ? laneComponent.laneHeight : 65;\n\n                /**\n                 *  触发 lane 滚动: 滚动当前视窗范围内的 lane\n                 * 1. laneSpacerSize 大于 看板内容高度\n                 * 2. preLanesTotalSize 大于 看板整体滚动  scrollOffset < preLanesTotalSize &&\n                 * 3. 看板整体滚动距离 + 当前视窗 小于 preLanesTotalSize  scrollOffset + this.viewport.elementRef.nativeElement.offsetHeight < preLanesTotalSize\n                 *  滚动距离：看板整体滚动距离 - preLanesTotalSize - 当前视窗\n                 */\n\n                const position = this.laneIsInViewport(preLanesTotalSize, laneSpacerSize);\n                if (position) {\n                    (laneComponent.entryComponents() || []).forEach((entry) => {\n                        entry.scrollToOffset(position);\n                    });\n                }\n            }\n\n            preLanesTotalSize = preLanesTotalSize + laneSpacerSize;\n        });\n    }\n}\n","export const EMPTY_OBJECT_ID_STR = `000000000000000000000000`;\n","import { computed, Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { ThyBoardCard, ThyBoardEntry, ThyBoardLane, ThyBoardSortEvent } from './entities';\nimport { EMPTY_OBJECT_ID_STR } from './constants';\nimport { helpers } from 'ngx-tethys/util';\nimport { produce } from '@tethys/cdk';\nimport { injectLocale } from '@tethys/pro/i18n';\n\n@Injectable()\nexport class ThyBoardService {\n    private locale = injectLocale();\n\n    private cards: WritableSignal<ThyBoardCard[]> = signal([]);\n\n    private entries: WritableSignal<ThyBoardEntry[]> = signal([]);\n\n    private lanes: WritableSignal<ThyBoardLane[]> = signal([]);\n\n    private innerAllLanesExpanded: WritableSignal<boolean> = signal(true);\n\n    private innerEntryCollapsible: WritableSignal<boolean> = signal(false);\n\n    private hasAutoEmptyLane: WritableSignal<boolean> = signal(true);\n\n    private sortCardsInEntry: WritableSignal<(event: ThyBoardSortEvent) => ThyBoardCard[]> = signal(\n        (event: ThyBoardSortEvent) => event.cards\n    );\n\n    private emptyLane: WritableSignal<ThyBoardLane> = signal({\n        _id: EMPTY_OBJECT_ID_STR,\n        name: this.locale().emptyGroup,\n        cards: []\n    });\n\n    private innerEmptyLane = computed(() => {\n        const allLanesExpanded = this.innerAllLanesExpanded();\n        const emptyLane = this.emptyLane();\n        return {\n            _id: EMPTY_OBJECT_ID_STR,\n            name: this.locale().emptyGroup,\n            cards: [],\n            expanded: helpers.isUndefinedOrNull(emptyLane.expanded) ? allLanesExpanded : emptyLane.expanded\n        };\n    });\n\n    private innerLanes = computed(() => {\n        const lanes = this.lanes();\n        const allLanesExpanded = this.innerAllLanesExpanded();\n        return lanes.map((lane) => {\n            return {\n                ...lane,\n                expanded: helpers.isUndefinedOrNull(lane.expanded) ? allLanesExpanded : lane.expanded\n            };\n        });\n    });\n\n    public lanesWithEntriesAndCards: Signal<ThyBoardLane[]> = computed(() => {\n        const entries = this.entries();\n        const cards = this.cards();\n        const lanes = this.innerLanes();\n        const innerEmptyLane = this.innerEmptyLane();\n\n        return this.buildLanesWithEntriesAndCards(lanes, entries, cards, innerEmptyLane);\n    });\n\n    public entriesWithCards: Signal<ThyBoardEntry[]> = computed(() => {\n        const lanesWithEntriesAndCards = this.lanesWithEntriesAndCards();\n        const entries = this.entries();\n        return this.buildEntriesWithCardsByLanes(lanesWithEntriesAndCards, entries);\n    });\n\n    public entryCollapsible = computed(() => {\n        const entryCollapsible = this.innerEntryCollapsible();\n        const lanes = this.innerLanes();\n        if (entryCollapsible) {\n            return lanes.length === 0 || lanes.every((lane) => lane.expanded);\n        } else {\n            return false;\n        }\n    });\n\n    public hasCollapsedEntry = computed(() => {\n        const entryCollapsible = this.innerEntryCollapsible();\n\n        if (entryCollapsible) {\n            const entries = this.entries();\n            return !!entries.find((entry) => !helpers.isUndefinedOrNull(entry.expanded) && !entry.expanded);\n        } else {\n            return false;\n        }\n    });\n\n    public laneCollapsible = computed(() => {\n        const entries = this.entries();\n        return entries.every((entry) => entry.expanded || helpers.isUndefinedOrNull(entry.expanded));\n    });\n\n    public allLanesExpanded = computed(() => {\n        const lanes = this.lanesWithEntriesAndCards();\n        const allLanesExpanded = (lanes || []).every((lane) => {\n            return lane?.expanded;\n        });\n        return allLanesExpanded;\n    });\n\n    constructor() {}\n\n    public setCards(cards: ThyBoardCard[]) {\n        this.cards.set([...(cards || [])]);\n    }\n\n    public setEntities(entries: ThyBoardEntry[]) {\n        this.entries.set([...(entries || [])]);\n    }\n\n    public setLanes(lanes: ThyBoardLane[]) {\n        this.lanes.set([...(lanes || [])]);\n    }\n\n    public setAllLanesExpanded(state: boolean) {\n        this.innerAllLanesExpanded.set(state);\n    }\n\n    public setInnerEntryCollapsible(state: boolean) {\n        this.innerEntryCollapsible.set(state);\n    }\n\n    public setHasAutoEmptyLane(state: boolean) {\n        this.hasAutoEmptyLane.set(state);\n    }\n\n    public setSortCardsInEntry(state: (event: ThyBoardSortEvent) => ThyBoardCard[]) {\n        this.sortCardsInEntry.set(state);\n    }\n\n    private buildCardsMap(cards: ThyBoardCard[]): Record<string, ThyBoardCard[]> {\n        const cardsMapByEntryId: Record<string, ThyBoardCard[]> = {};\n\n        (cards || []).forEach((card) => {\n            (card.entryIds || []).forEach((entryId) => {\n                cardsMapByEntryId[entryId] = cardsMapByEntryId[entryId] ? cardsMapByEntryId[entryId].concat([card]) : [card];\n            });\n        });\n        return cardsMapByEntryId;\n    }\n\n    private buildEntriesWithCards(cards: ThyBoardCard[], lane: ThyBoardLane, entries: ThyBoardEntry[]) {\n        const cardsMapByEntryId = this.buildCardsMap(cards);\n        const sortCardsInEntry = this.sortCardsInEntry();\n\n        return (entries || []).map((entry) => {\n            return {\n                ...entry,\n                expanded: !helpers.isUndefinedOrNull(entry.expanded) ? entry.expanded : true,\n                cards: cardsMapByEntryId[entry._id]\n                    ? sortCardsInEntry({ cards: cardsMapByEntryId[entry._id], lane: lane, entry: entry })\n                    : []\n            };\n        });\n    }\n\n    private buildLanesWithEntriesAndCards(\n        lanes: ThyBoardLane[],\n        entries: ThyBoardEntry[],\n        cards: ThyBoardCard[],\n        innerEmptyLane: ThyBoardLane\n    ) {\n        const unGroup: ThyBoardLane = {\n            ...innerEmptyLane,\n            cards: []\n        };\n\n        const lanesMapById: Record<string, ThyBoardLane> = {};\n        (lanes || []).forEach((lane) => {\n            lane.cards = [];\n            lanesMapById[lane._id] = lane;\n        });\n\n        (cards || []).forEach((card) => {\n            const cardLanes = [];\n            (card.laneIds || []).forEach((laneId) => {\n                let lane = lanesMapById[laneId];\n                if (lane) {\n                    cardLanes.push(lane);\n                    lane.cards = lane.cards?.concat(card);\n                }\n            });\n\n            if (cardLanes.length === 0) {\n                unGroup.cards = unGroup.cards?.concat(card);\n            }\n        });\n        lanes = this.hasAutoEmptyLane() && unGroup.cards!.length > 0 ? [...lanes, unGroup] : [...lanes];\n        return lanes.map((lane) => {\n            if (!lane.cards) {\n                lane.cards = [];\n            }\n\n            return {\n                ...lane,\n                entries: this.buildEntriesWithCards(lane.cards, lane, entries)\n            };\n        });\n    }\n\n    private buildEntriesWithCardsByLanes(lanes: ThyBoardLane[], entries: ThyBoardEntry[]) {\n        const entriesMapById: Record<string, ThyBoardEntry> = {};\n        (entries || []).forEach((entry) => {\n            entriesMapById[entry._id] = { ...entry };\n            entriesMapById[entry._id].cards = [];\n            entriesMapById[entry._id].expanded = !helpers.isUndefinedOrNull(entry.expanded) ? entry.expanded : true;\n        });\n        (lanes || []).forEach((lane) => {\n            lane.entries!.forEach((entry) => {\n                entriesMapById[entry._id].cards = (entriesMapById[entry._id].cards || []).concat(entry.cards || []);\n            });\n        });\n\n        return entries.map((entry) => {\n            return entriesMapById[entry._id];\n        });\n    }\n\n    public expandEntry(event: { entry: ThyBoardEntry; expanded: boolean }) {\n        const entries = produce(this.entries()).update(event.entry._id, { expanded: event.expanded });\n        this.entries.set([...entries]);\n    }\n\n    expandLane(event: { lane: ThyBoardLane; expanded: boolean }) {\n        const isUseDefaultEmpty = event.lane._id === EMPTY_OBJECT_ID_STR && !this.lanes().find((lane) => lane._id === EMPTY_OBJECT_ID_STR);\n        if (isUseDefaultEmpty) {\n            this.emptyLane.set({ ...this.emptyLane(), expanded: event.expanded });\n        } else {\n            const lanes = produce(this.lanes()).update(event.lane._id, { expanded: event.expanded });\n            this.lanes.set([...lanes]);\n        }\n    }\n\n    expandAllLanes(event: boolean) {\n        this.innerAllLanesExpanded.set(event);\n        const lanes = this.lanes().map((lane) => {\n            return { ...lane, expanded: event };\n        });\n        this.lanes.set(lanes);\n        this.emptyLane.set({ ...this.emptyLane(), expanded: event });\n    }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, input } from '@angular/core';\nimport { ThySkeletonRectangle } from 'ngx-tethys/skeleton';\nimport { ThyBoardEntry } from '../entities';\n\n@Component({\n    selector: 'thy-board-skeleton',\n    templateUrl: './skeleton.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ThySkeletonRectangle],\n    host: {\n        class: 'thy-board-lane-container thy-board-skeleton'\n    }\n})\nexport class ThyBoardSkeletonComponent {\n    hasLane = input<boolean>();\n\n    entries = input.required<ThyBoardEntry[]>();\n\n    constructor(public elementRef: ElementRef) {}\n}\n","@if (hasLane()) {\n  <div class=\"board-lane-header-container d-flex\">\n    <div class=\"board-lane-header\">\n      <div class=\"d-flex justify-content-between text-secondary flex-grow-1 type-container\">\n        <div class=\"header-box align-items-center\">\n          <thy-skeleton-rectangle thyRowWidth=\"100px\" thyRowHeight=\"20px\" thyBorderRadius=\"4px\"></thy-skeleton-rectangle>\n        </div>\n      </div>\n    </div>\n  </div>\n}\n\n<div class=\"board-lane-body\" [class.board-no-lane-body]=\"!hasLane()\">\n  @for (entry of entries(); track entry._id) {\n    <div class=\"thy-entry-container board-lane-body-entry\">\n      <div class=\"entry-body\">\n        <div class=\"entry-cards\">\n          <div class=\"entry-card\">\n            <thy-skeleton-rectangle thyRowWidth=\"304px\" thyRowHeight=\"115px\" thyBorderRadius=\"4px\"></thy-skeleton-rectangle>\n          </div>\n          <div class=\"entry-card\">\n            <thy-skeleton-rectangle thyRowWidth=\"304px\" thyRowHeight=\"115px\" thyBorderRadius=\"4px\"></thy-skeleton-rectangle>\n          </div>\n        </div>\n      </div>\n    </div>\n  }\n</div>\n","import { DragDropRegistry, DragRef } from '@angular/cdk/drag-drop';\nimport { CdkScrollable, ScrollDispatcher } from '@angular/cdk/scrolling';\n\nimport { Inject, Injectable, NgZone, OnDestroy, DOCUMENT } from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { Subscription } from 'rxjs';\n\n/**\n * Original service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document` in DragDropRegistry.\n * Now, When the scrollable is scrolled, the service need to emits the event\n * to drag item and drop container instances.\n */\n\n@Injectable()\nexport class ThyDragDropRegistry<I extends { previewClass?: string | string[] | undefined; isDragging(): boolean } & DragRef, C>\n    extends DragDropRegistry\n    implements OnDestroy\n{\n    private ngZone: NgZone;\n\n    private _scrollSubscription: Subscription | null = null;\n\n    constructor(\n        _ngZone: NgZone,\n        @Inject(DOCUMENT) _document: any,\n        private _scrollDispatcher: ScrollDispatcher\n    ) {\n        super(_ngZone, _document);\n        this.ngZone = _ngZone;\n    }\n\n    startDragging(drag: I, event: TouchEvent | MouseEvent) {\n        super.startDragging(drag, event);\n\n        // 订阅滚动\n        this.ngZone.runOutsideAngular(() => {\n            this._scrollSubscription = this._scrollDispatcher.scrolled().subscribe((event: void | CdkScrollable) => {\n                if (event) {\n                    this['_scroll'].next({ target: event.getElementRef().nativeElement } as SafeAny);\n                }\n            });\n        });\n    }\n\n    unsubscribeScrolled() {\n        if (this._scrollSubscription) {\n            this._scrollSubscription.unsubscribe();\n        }\n    }\n\n    stopDragging(drag: I) {\n        super.stopDragging(drag);\n        this.unsubscribeScrolled();\n    }\n\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        this.unsubscribeScrolled();\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnInit,\n    TemplateRef,\n    booleanAttribute,\n    contentChild,\n    effect,\n    input,\n    numberAttribute,\n    output\n} from '@angular/core';\nimport {\n    ThyBoardCard,\n    ThyBoardEntry,\n    ThyBoardLane,\n    ThyBoardDragScopeType,\n    ThyBoardDropActionEvent,\n    ThyBoardDragStartEvent,\n    ThyBoardDragPredicateEvent,\n    ThyBoardZone,\n    ThyBoardVirtualScrolledIndexChangeEvent,\n    ThyBoardSortEvent\n} from './entities';\nimport { ThyBoardHeaderComponent } from './header/header.component';\nimport { ThyBoardLaneComponent } from './lane/lane.component';\nimport { ThyBoardBodyScrollableDirective } from './scroll/board-body-scroll';\nimport { ThyBoardService } from './board.service';\nimport { CdkDrag, CdkDropListGroup, DragDropModule, DragDropRegistry } from '@angular/cdk/drag-drop';\nimport { Observable, of } from 'rxjs';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyBoardSkeletonComponent } from './skeleton/skeleton.component';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { ThyDragDropRegistry } from './scroll/drag-drop-registry';\n\n@Component({\n    selector: 'thy-board',\n    templateUrl: 'board.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        CdkDropListGroup,\n        DragDropModule,\n        ThyBoardHeaderComponent,\n        ThyBoardLaneComponent,\n        ThyBoardBodyScrollableDirective,\n        ThyBoardSkeletonComponent\n    ],\n    hostDirectives: [CdkScrollable],\n    host: {\n        class: 'thy-board'\n    },\n    providers: [\n        ThyBoardService,\n        {\n            provide: DragDropRegistry,\n            useClass: ThyDragDropRegistry\n        }\n    ]\n})\nexport class ThyBoardComponent implements OnInit {\n    /**\n     * 卡片展示模板\n     * @type TemplateRef\n     */\n\n    cardTemplateRef = contentChild.required<TemplateRef<SafeAny>>('card');\n\n    /**\n     * 栏展示模板\n     * @type TemplateRef\n     */\n    laneTemplateRef = contentChild<TemplateRef<SafeAny>>('lane');\n\n    /**\n     * header 展示模板\n     * @type TemplateRef\n     */\n    headerTemplateRef = contentChild<TemplateRef<SafeAny>>('header');\n\n    /**\n     * entry 顶部展示模板\n     * @type TemplateRef\n     */\n    entryTopTemplateRef = contentChild<TemplateRef<SafeAny>>('entryTop');\n\n    /**\n     * entry 底部展示模板\n     * @type TemplateRef\n     */\n    entryBottomTemplateRef = contentChild<TemplateRef<SafeAny>>('entryBottom');\n\n    /**\n     * 泳道列表\n     * @default []\n     * @type ThyBoardLane[]\n     */\n    thyLanes = input<ThyBoardLane[]>([]);\n\n    /**\n     * 是否自动将未在任何泳道的数据归类到“未分组”泳道中\n     * @default true\n     * @type boolean\n     */\n    thyHasAutoEmptyLane = input(true, { transform: booleanAttribute });\n\n    /**\n     * 栏列表\n     * @type ThyBoardEntry[]\n     */\n    thyEntries = input.required<ThyBoardEntry[]>();\n\n    /**\n     * 卡片列表\n     * @type ThyBoardCard[]\n     */\n    thyCards = input.required<ThyBoardCard[]>();\n\n    /**\n     * 是否展示泳道\n     * @default false\n     * @type boolean\n     */\n    thyShowLane = input<boolean>(false);\n\n    /**\n     * 是否开启虚拟滚动\n     * @default false\n     * @type boolean\n     */\n    thyVirtualScroll = input(false, { transform: booleanAttribute });\n\n    /**\n     * 卡片默认高度\n     * @default false\n     * @type boolean\n     */\n    thyDefaultCardSize = input(112, { transform: numberAttribute });\n\n    /**\n     * 是否支持排序,开启后支持同栏排序\n     * @type ThyBoardDragScopeType\n     */\n    thySortable = input<ThyBoardDragScopeType>();\n\n    /**\n     * 是否支持拖动，变更栏和泳道\n     * @type ThyBoardDragScopeType\n     */\n    thyMovable = input<ThyBoardDragScopeType>();\n\n    /**\n     * 是否展开所有泳道\n     * @default true\n     * @type boolean\n     */\n    thyAllLanesExpanded = input(true, { transform: booleanAttribute });\n\n    /**\n     * 是否支持栏的收起展开\n     * @default false\n     * @type boolean\n     */\n    thyEntryCollapsible = input(false, { transform: booleanAttribute });\n\n    /**\n     * 在构建数据时，对栏中数据进行排序\n     */\n    thySortCardsInEntry = input<(event: ThyBoardSortEvent) => ThyBoardCard[]>((event: ThyBoardSortEvent) => event.cards);\n\n    /**\n     * 获取卡片可放置的区域\n     * @type\n     */\n    thyCardDroppableZonesAction = input<\n        (event: ThyBoardDragStartEvent) => Observable<\n            {\n                laneId?: string;\n                entryId: string;\n                droppableZones: ThyBoardZone[];\n            }[]\n        >\n    >();\n\n    /**\n     * 判断是否允许卡片拖动\n     * @type (event: ThyBoardDragPredicateEvent) => boolean\n     */\n    thyCardDraggablePredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    /**\n     * 判断是否允许拖起的卡片放到另外位置\n     * @type (event: ThyBoardDragPredicateEvent) => boolean\n     */\n    thyCardDropEnterPredicate = input<(event: ThyBoardDragPredicateEvent) => boolean>();\n\n    /**\n     * 当把卡片拖动到另一个位置时触发\n     * @type (event: CdkDragDrop<ThyBoardCard[] | undefined>) => Observable<boolean>\n     */\n    thyCardDropAction = input<(event: ThyBoardDropActionEvent) => Observable<boolean>>();\n\n    /**\n     * 开启虚拟滚动后，滚动后触发时间，可用于加载数据\n     */\n    thyVirtualScrolledIndexChange = output<ThyBoardVirtualScrolledIndexChangeEvent>();\n\n    /**\n     * 展开收起泳道事件\n     * @type { lane: ThyBoardLane; expanded: boolean }\n     */\n    thyExpandLane = output<{ lane: ThyBoardLane; expanded: boolean }>();\n\n    /**\n     * 展开收起所有泳道事件\n     * @type { expanded: boolean }\n     */\n    thyExpandAllLanes = output<{ expanded: boolean }>();\n\n    /**\n     * 展开收起栏事件\n     * @type { entry: ThyBoardEntry; expanded: boolean }\n     */\n    thyExpandEntry = output<{ entry: ThyBoardEntry; expanded: boolean }>();\n\n    /**\n     * 拖起卡片后触发事件\n     * @type ThyBoardCard\n     */\n    thyCardDragStart = output<ThyBoardDragStartEvent>();\n\n    public cardDroppableZones:\n        | {\n              laneId?: string;\n              entryId: string;\n              droppableZones: ThyBoardZone[];\n          }[]\n        | undefined;\n\n    public draggingCard: CdkDrag<ThyBoardCard> | undefined;\n\n    constructor(\n        public elementRef: ElementRef,\n        public thyBoardService: ThyBoardService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        effect(() => {\n            if (this.thyMovable() && this.thySortable()) {\n                throw new Error(`thyMovable and thySortable cannot be set values simultaneously..`);\n            }\n        });\n\n        effect(\n            () => {\n                this.thyBoardService.setCards(this.thyCards());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setEntities(this.thyEntries());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setLanes(this.thyLanes());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setAllLanesExpanded(this.thyAllLanesExpanded());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setInnerEntryCollapsible(this.thyEntryCollapsible());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setHasAutoEmptyLane(this.thyHasAutoEmptyLane());\n            },\n            { allowSignalWrites: true }\n        );\n\n        effect(\n            () => {\n                this.thyBoardService.setSortCardsInEntry(this.thySortCardsInEntry());\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    ngOnInit() {}\n\n    expandAllLanes(event: boolean) {\n        this.thyBoardService.expandAllLanes(event);\n        this.thyExpandAllLanes.emit({ expanded: event });\n    }\n\n    expandLane(event: { lane: ThyBoardLane; expanded: boolean }) {\n        this.thyBoardService.expandLane(event);\n        this.thyExpandLane.emit({ lane: { ...event.lane, expanded: event.expanded }, expanded: event.expanded });\n    }\n\n    expandEntry(event: { entry: ThyBoardEntry; expanded: boolean }) {\n        this.thyBoardService.expandEntry(event);\n        this.thyExpandEntry.emit({ entry: { ...event.entry, expanded: event.expanded }, expanded: event.expanded });\n    }\n\n    dragCardStarted(event: CdkDrag<ThyBoardCard>) {\n        this.draggingCard = event;\n        this.thyCardDragStart.emit({ card: event.data });\n        const thyCardDroppableZonesAction = this.thyCardDroppableZonesAction();\n        if (thyCardDroppableZonesAction) {\n            thyCardDroppableZonesAction({ card: event.data })\n                .pipe()\n                .subscribe((data) => {\n                    this.cardDroppableZones = data;\n                    this.changeDetectorRef.markForCheck();\n                });\n        }\n    }\n\n    dropListDropped = (event: ThyBoardDropActionEvent) => {\n        this.cardDroppableZones = undefined;\n        this.draggingCard = undefined;\n        const thyCardDropAction = this.thyCardDropAction();\n        this.changeDetectorRef.markForCheck();\n        if (thyCardDropAction) {\n            return thyCardDropAction(event);\n        } else {\n            return of(true);\n        }\n    };\n}\n","<div class=\"thy-board-container\">\n  <thy-board-header\n    [hasLane]=\"thyShowLane()\"\n    [entries]=\"thyBoardService.entriesWithCards()\"\n    [headerTemplateRef]=\"headerTemplateRef()\"\n    [allLanesExpanded]=\"thyBoardService.allLanesExpanded()\"\n    [entryCollapsible]=\"thyBoardService.entryCollapsible()\"\n    [hasCollapsedEntry]=\"thyBoardService.hasCollapsedEntry()\"\n    [container]=\"elementRef\"\n    (expandAllLanes)=\"expandAllLanes($event)\"\n    (expandEntry)=\"expandEntry($event)\"\n  >\n  </thy-board-header>\n  <div\n    class=\"board-body\"\n    cdkDropListGroup\n    [cdkDropListGroupDisabled]=\"!thySortable() && !thyMovable()\"\n    [thyBoardBodyScrollable]=\"!thyShowLane() || !thyVirtualScroll()\"\n    [thyLanes]=\"thyBoardService.lanesWithEntriesAndCards()\"\n    #boardScrollElement\n    [class.board-single-swimlane]=\"!thyShowLane()\"\n  >\n    @if (thyShowLane()) {\n      @for (lane of thyBoardService.lanesWithEntriesAndCards(); track lane._id) {\n        @defer (on viewport) {\n          <thy-board-lane\n            [lane]=\"lane\"\n            [entries]=\"thyBoardService.entriesWithCards()\"\n            [hasLane]=\"thyShowLane()\"\n            [virtualScroll]=\"thyVirtualScroll()\"\n            [laneTemplateRef]=\"laneTemplateRef()\"\n            [cardTemplateRef]=\"cardTemplateRef()\"\n            [allLanesExpanded]=\"thyBoardService.allLanesExpanded()\"\n            [laneCollapsible]=\"thyBoardService.laneCollapsible()\"\n            [container]=\"boardScrollElement\"\n            [defaultCardSize]=\"thyDefaultCardSize()\"\n            [movable]=\"thyMovable()\"\n            [sortable]=\"thySortable()\"\n            (expandLane)=\"expandLane($event)\"\n            [cardDraggablePredicate]=\"thyCardDraggablePredicate()\"\n            [cardDropEnterPredicate]=\"thyCardDropEnterPredicate()\"\n            (cardDragStarted)=\"dragCardStarted($event)\"\n            [cardDropAction]=\"dropListDropped\"\n            [draggingCard]=\"draggingCard\"\n            [hasDroppableZones]=\"!!thyCardDroppableZonesAction()\"\n            [cardDroppableZones]=\"cardDroppableZones\"\n            [entryTopTemplateRef]=\"entryTopTemplateRef()\"\n            [entryBottomTemplateRef]=\"entryBottomTemplateRef()\"\n            (virtualScrolledIndexChange)=\"thyVirtualScrolledIndexChange.emit($event)\"\n          ></thy-board-lane>\n        } @placeholder {\n          <thy-board-skeleton [hasLane]=\"thyShowLane()\" [entries]=\"thyEntries()\"></thy-board-skeleton>\n        }\n      }\n    } @else {\n      <thy-board-lane\n        [entries]=\"thyBoardService.entriesWithCards()\"\n        [hasLane]=\"thyShowLane()\"\n        [virtualScroll]=\"thyVirtualScroll()\"\n        [laneTemplateRef]=\"laneTemplateRef()\"\n        [cardTemplateRef]=\"cardTemplateRef()\"\n        [container]=\"boardScrollElement\"\n        [defaultCardSize]=\"thyDefaultCardSize()\"\n        [movable]=\"thyMovable()\"\n        [sortable]=\"thySortable()\"\n        [cardDraggablePredicate]=\"thyCardDraggablePredicate()\"\n        [cardDropEnterPredicate]=\"thyCardDropEnterPredicate()\"\n        (cardDragStarted)=\"dragCardStarted($event)\"\n        [cardDropAction]=\"dropListDropped\"\n        [draggingCard]=\"draggingCard\"\n        [hasDroppableZones]=\"!!thyCardDroppableZonesAction()\"\n        [cardDroppableZones]=\"cardDroppableZones\"\n        [entryTopTemplateRef]=\"entryTopTemplateRef()\"\n        [entryBottomTemplateRef]=\"entryBottomTemplateRef()\"\n        (virtualScrolledIndexChange)=\"thyVirtualScrolledIndexChange.emit($event)\"\n      ></thy-board-lane>\n    }\n  </div>\n</div>\n","import { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyActionModule } from 'ngx-tethys/action';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyBoardComponent } from './board.component';\nimport { ThyBoardLaneComponent } from './lane/lane.component';\nimport { ThyBoardEntryComponent } from './entry/entry.component';\nimport { ThyBoardHeaderComponent } from './header/header.component';\nimport { ThyBoardEntryVirtualScroll } from './scroll/entry-virtual-scroll';\nimport { ThyBoardBodyScrollableDirective } from './scroll/board-body-scroll';\nimport { ThyBoardFuncPipe } from './board.pipe';\nimport { ThyBoardSkeletonComponent } from './skeleton/skeleton.component';\nimport { ThyBoardSortableEntryComponent } from './entry/sortable/sortable.component';\nimport { ThyBoardMovableEntryComponent } from './entry/movable/movable.component';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\nconst TETHYS_MODULES = [ThyTooltipModule, ThyIconModule, ThyActionModule, ThySharedModule];\n\n@NgModule({\n    imports: [\n        ...TETHYS_MODULES,\n        CommonModule,\n        CdkScrollableModule,\n        ThyBoardComponent,\n        ThyBoardBodyScrollableDirective,\n        ThyBoardLaneComponent,\n        ThyBoardEntryComponent,\n        ThyBoardSortableEntryComponent,\n        ThyBoardMovableEntryComponent,\n        ThyBoardHeaderComponent,\n        ThyBoardEntryVirtualScroll,\n        ThyBoardFuncPipe,\n        ThyBoardSkeletonComponent\n    ],\n    exports: [ThyBoardComponent],\n    providers: []\n})\nexport class ThyProBoardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ExperimentalScrollingModule","i1.ThyBoardService","i2"],"mappings":"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"}