@mintplayer/ng-bootstrap 21.27.0 → 21.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-tile-manager.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/components/tile.component.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/components/tile-manager.component.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/components/tile-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/types/grid-rect.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/utils/pack.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/web-components/mint-tile-manager.element.template.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/src/lib/web-components/mint-tile-manager.element.ts","../../../../libs/mintplayer-ng-bootstrap/tile-manager/mintplayer-ng-bootstrap-tile-manager.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { TilePosition } from '../types/tile-position';\n\n/**\n * One tile inside a `<bs-tile-manager>`.\n *\n * The component captures two `TemplateRef`s — one for the header (a child\n * `<bs-tile-header>`) and one for the body (everything else) — which the\n * manager projects into named slots on the underlying `<mp-tile-manager>`\n * web component (`${id}-header` and `${id}-content`).\n */\n@Component({\n selector: 'bs-tile',\n template: `\n <ng-template #headerTpl>\n <ng-content select=\"bs-tile-header\"></ng-content>\n </ng-template>\n <ng-template #contentTpl>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsTileComponent {\n readonly id = input.required<string>();\n readonly position = input.required<TilePosition>();\n readonly disableMove = input<boolean>(false);\n readonly disableResize = input<boolean>(false);\n readonly label = input<string | null>(null);\n\n readonly positionChange = output<TilePosition>();\n\n readonly headerTpl = viewChild.required<TemplateRef<unknown>>('headerTpl');\n readonly contentTpl = viewChild.required<TemplateRef<unknown>>('contentTpl');\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n computed,\n contentChildren,\n effect,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { BsTileComponent } from './tile.component';\nimport {\n MintTile,\n MintTileManagerElement,\n TileDragMode,\n TileResizeMode,\n} from '../web-components/mint-tile-manager.element';\nimport { TileLayoutSnapshot, TileGestureBlocked } from '../types/tile-layout-snapshot';\nimport { TilePosition } from '../types/tile-position';\n\n@Component({\n selector: 'bs-tile-manager',\n template: `\n <mp-tile-manager\n #manager\n class=\"bs-tile-manager\"\n [attr.column-count]=\"columnCountAttr()\"\n [attr.min-column-width]=\"minColumnWidth()\"\n [attr.min-row-height]=\"minRowHeight()\"\n [attr.gap]=\"gap()\"\n [attr.drag-mode]=\"dragMode()\"\n [attr.resize-mode]=\"resizeMode()\"\n [attr.animate-reflow]=\"animateReflow() ? '' : null\"\n [attr.label]=\"label()\"\n (tilelayoutchange)=\"onLayoutChange($event)\"\n (tilepositionchange)=\"onPositionChange($event)\"\n (tilegestureblocked)=\"onGestureBlocked($event)\"\n >\n @for (tile of tiles(); track tile.id()) {\n <div [attr.slot]=\"tile.id() + '-header'\" class=\"bs-tile-slot\">\n <ng-container *ngTemplateOutlet=\"tile.headerTpl()\"></ng-container>\n </div>\n <div [attr.slot]=\"tile.id() + '-content'\" class=\"bs-tile-slot\">\n <ng-container *ngTemplateOutlet=\"tile.contentTpl()\"></ng-container>\n </div>\n }\n </mp-tile-manager>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .bs-tile-manager {\n display: block;\n width: 100%;\n }\n .bs-tile-slot {\n display: contents;\n }\n `,\n ],\n imports: [NgTemplateOutlet],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsTileManagerComponent implements AfterViewInit {\n readonly columnCount = input<number | null>(null);\n readonly minColumnWidth = input<string>('200px');\n readonly minRowHeight = input<string>('8rem');\n readonly gap = input<string>('0.5rem');\n readonly dragMode = input<TileDragMode>('header');\n readonly resizeMode = input<TileResizeMode>('hover');\n readonly animateReflow = input<boolean>(true);\n readonly label = input<string | null>(null);\n\n readonly layoutChange = output<TileLayoutSnapshot>();\n readonly gestureBlocked = output<TileGestureBlocked>();\n\n readonly tiles = contentChildren(BsTileComponent);\n readonly managerRef = viewChild<ElementRef<MintTileManagerElement>>('manager');\n\n protected readonly columnCountAttr = computed(() => {\n const c = this.columnCount();\n return c && c > 0 ? String(c) : null;\n });\n\n // Snapshot of Angular tile state, derived from contentChildren signals.\n // Re-runs whenever any tile's id, position, disableMove, disableResize, or label changes.\n // contentChildren() can surface a child before Angular has finished binding its\n // required inputs; reading them then throws NG0950. flatMap-with-try lets us\n // skip the not-yet-bound entry — the effect re-runs once binding completes.\n private readonly tilesSnapshot = computed<MintTile[]>(() =>\n this.tiles().flatMap((t) => {\n try {\n return [{\n id: t.id(),\n position: t.position(),\n disableMove: t.disableMove(),\n disableResize: t.disableResize(),\n label: t.label(),\n }];\n } catch {\n return [];\n }\n }),\n );\n\n constructor() {\n effect(() => {\n const snapshot = this.tilesSnapshot();\n const ref = this.managerRef();\n if (!ref) return;\n ref.nativeElement.tiles = snapshot;\n });\n }\n\n ngAfterViewInit(): void {\n // First push happens via the constructor effect once the view is alive.\n }\n\n /** Returns the current layout. Mirrors `BsDockManagerComponent.captureLayout()`. */\n captureLayout(): TileLayoutSnapshot {\n const ref = this.managerRef();\n if (!ref) return [];\n return Array.from(ref.nativeElement.tiles ?? []).map((t) => ({\n id: t.id,\n position: { ...t.position },\n }));\n }\n\n protected onLayoutChange(event: Event): void {\n const detail = (event as CustomEvent<TileLayoutSnapshot>).detail;\n if (detail) this.layoutChange.emit(detail);\n }\n\n protected onPositionChange(event: Event): void {\n const detail = (event as CustomEvent<{ id: string; position: TilePosition }>).detail;\n if (!detail) return;\n const tile = this.tiles().find((t) => t.id() === detail.id);\n tile?.positionChange.emit(detail.position);\n }\n\n protected onGestureBlocked(event: Event): void {\n const detail = (event as CustomEvent<TileGestureBlocked>).detail;\n if (detail) this.gestureBlocked.emit(detail);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'bs-tile-header',\n template: `<ng-content></ng-content>`,\n styles: [\n `:host {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--bs-body-color, inherit);\n background: linear-gradient(to bottom, rgba(var(--bs-primary-rgb, 13, 110, 253), 0.10), rgba(var(--bs-primary-rgb, 13, 110, 253), 0.04));\n border-bottom: 1px solid var(--bs-border-color, #dee2e6);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n -webkit-touch-callout: none;\n }`,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsTileHeaderComponent {}\n","/**\n * Half-open rectangle in grid coordinates: `[colStart, colStart + colSpan) × [rowStart, rowStart + rowSpan)`.\n * Same shape as `TilePosition` but used internally for overlap math; kept\n * as its own type so call-sites read clearly.\n */\nexport interface GridRect {\n colStart: number;\n rowStart: number;\n colSpan: number;\n rowSpan: number;\n}\n\nexport function rectsOverlap(a: GridRect, b: GridRect): boolean {\n return (\n a.colStart < b.colStart + b.colSpan &&\n b.colStart < a.colStart + a.colSpan &&\n a.rowStart < b.rowStart + b.rowSpan &&\n b.rowStart < a.rowStart + a.rowSpan\n );\n}\n","import { TilePosition } from '../types/tile-position';\nimport { TileLayoutSnapshot } from '../types/tile-layout-snapshot';\nimport { GridRect, rectsOverlap } from '../types/grid-rect';\n\ninterface PackInputTile {\n id: string;\n position: TilePosition;\n locked: boolean;\n}\n\ninterface Placement {\n id: string;\n position: TilePosition;\n}\n\n/**\n * Vertical-compact packer. The pinned tile's rect is the user's gesture; all\n * other tiles flow around it (locked tiles stay put; movable tiles get pushed\n * out of the way and gravity-compacted upward).\n *\n * Returns `blocked: true` if the pinned rect overlaps a locked tile or no\n * valid layout exists; the caller should snap back and not commit.\n */\nexport function pack(\n tiles: ReadonlyArray<PackInputTile>,\n pinned: { id: string; rect: GridRect },\n columnCount: number,\n): { layout: TileLayoutSnapshot; blocked: boolean } {\n const pinnedTile = tiles.find((t) => t.id === pinned.id);\n if (!pinnedTile) {\n throw new Error(`pack: pinned tile \"${pinned.id}\" is not in the tiles array`);\n }\n\n const pinnedPlacement: Placement = { id: pinned.id, position: { ...pinned.rect } };\n\n const lockedPlacements: ReadonlyArray<Placement> = tiles\n .filter((t) => t.locked && t.id !== pinned.id)\n .map((t) => ({ id: t.id, position: { ...t.position } }));\n\n const lockedOverlap = lockedPlacements.some((l) =>\n rectsOverlap(l.position, pinnedPlacement.position),\n );\n if (lockedOverlap) {\n return { layout: snapshotFromInput(tiles), blocked: true };\n }\n\n const fixed: ReadonlyArray<Placement> = [pinnedPlacement, ...lockedPlacements];\n\n const movables = tiles\n .filter((t) => !t.locked && t.id !== pinned.id)\n .slice()\n .sort((a, b) => {\n const dRow = a.position.rowStart - b.position.rowStart;\n return dRow !== 0 ? dRow : a.position.colStart - b.position.colStart;\n });\n\n const placedMovables = movables.reduce<Placement[]>((acc, t) => {\n const all = [...fixed, ...acc];\n const placed = placeTile(t, all, columnCount);\n return placed ? [...acc, placed] : acc;\n }, []);\n\n if (placedMovables.length !== movables.length) {\n return { layout: snapshotFromInput(tiles), blocked: true };\n }\n\n const compacted = compactStable(placedMovables, fixed, columnCount);\n\n const placementById = new Map<string, TilePosition>(\n [pinnedPlacement, ...lockedPlacements, ...compacted].map((p) => [p.id, p.position]),\n );\n\n // Preserve the input tile order in the output snapshot — keeps layout\n // identity stable across pack() calls with the same input.\n const layout: TileLayoutSnapshot = tiles.map((t) => ({\n id: t.id,\n position: placementById.get(t.id) ?? { ...t.position },\n }));\n\n return { layout, blocked: false };\n}\n\nfunction snapshotFromInput(tiles: ReadonlyArray<PackInputTile>): TileLayoutSnapshot {\n return tiles.map((t) => ({ id: t.id, position: { ...t.position } }));\n}\n\nfunction placeTile(\n tile: PackInputTile,\n obstacles: ReadonlyArray<Placement>,\n columnCount: number,\n): Placement | null {\n const { colSpan, rowSpan } = tile.position;\n if (colSpan > columnCount) return null;\n\n const inPlaceFits = !obstacles.some((o) => rectsOverlap(tile.position, o.position));\n if (inPlaceFits) {\n return { id: tile.id, position: { ...tile.position } };\n }\n\n const candidate = firstFit({ colSpan, rowSpan }, obstacles, columnCount);\n return candidate ? { id: tile.id, position: candidate } : null;\n}\n\nfunction firstFit(\n size: { colSpan: number; rowSpan: number },\n obstacles: ReadonlyArray<Placement>,\n columnCount: number,\n): TilePosition | null {\n const lastRow = obstacles.reduce(\n (max, o) => Math.max(max, o.position.rowStart + o.position.rowSpan - 1),\n 0,\n );\n // Worst case: stack right after the bottommost obstacle.\n const rowsToTry = lastRow + size.rowSpan;\n const cols = columnCount - size.colSpan + 1;\n if (cols < 1) return null;\n\n // Imperative loops here are deliberate — this runs on every pointermove\n // during a drag (live reflow) and the array-allocation patterns previously\n // used here generated GC pressure visible as drag jank.\n for (let rowStart = 1; rowStart <= rowsToTry; rowStart++) {\n for (let c = 0; c < cols; c++) {\n const colStart = c + 1;\n let collides = false;\n for (let i = 0; i < obstacles.length; i++) {\n if (\n rectsOverlap(\n { rowStart, colStart, colSpan: size.colSpan, rowSpan: size.rowSpan },\n obstacles[i].position,\n )\n ) {\n collides = true;\n break;\n }\n }\n if (!collides) {\n return { rowStart, colStart, colSpan: size.colSpan, rowSpan: size.rowSpan };\n }\n }\n }\n return null;\n}\n\nfunction compactStable(\n placements: ReadonlyArray<Placement>,\n fixed: ReadonlyArray<Placement>,\n columnCount: number,\n): ReadonlyArray<Placement> {\n return iterate(placements, fixed, columnCount, 10);\n}\n\nfunction iterate(\n placements: ReadonlyArray<Placement>,\n fixed: ReadonlyArray<Placement>,\n columnCount: number,\n iterations: number,\n): ReadonlyArray<Placement> {\n if (iterations <= 0) return placements;\n const { result, changed } = compactOnce(placements, fixed, columnCount);\n return changed ? iterate(result, fixed, columnCount, iterations - 1) : result;\n}\n\nfunction compactOnce(\n placements: ReadonlyArray<Placement>,\n fixed: ReadonlyArray<Placement>,\n columnCount: number,\n): { result: ReadonlyArray<Placement>; changed: boolean } {\n // Process in current visual order: top-to-bottom, then left-to-right.\n const ordered = placements\n .slice()\n .sort((a, b) => {\n const dRow = a.position.rowStart - b.position.rowStart;\n return dRow !== 0 ? dRow : a.position.colStart - b.position.colStart;\n });\n\n return ordered.reduce<{ result: Placement[]; changed: boolean }>(\n (acc, p) => {\n const others = [...fixed, ...acc.result.filter((r) => r.id !== p.id)];\n const slid = slideUp(p.position, others);\n const changed = slid.rowStart !== p.position.rowStart;\n return {\n result: [...acc.result, { id: p.id, position: slid }],\n changed: acc.changed || changed,\n };\n },\n { result: [], changed: false },\n );\n}\n\nfunction slideUp(pos: TilePosition, others: ReadonlyArray<Placement>): TilePosition {\n if (pos.rowStart <= 1) return pos;\n // Same hot path as firstFit — keep imperative for GC-pressure reasons.\n for (let rowStart = 1; rowStart < pos.rowStart; rowStart++) {\n let collides = false;\n for (let i = 0; i < others.length; i++) {\n if (rectsOverlap({ ...pos, rowStart }, others[i].position)) {\n collides = true;\n break;\n }\n }\n if (!collides) return { ...pos, rowStart };\n }\n return pos;\n}\n","// AUTO-GENERATED — do not edit by hand.\n// Source: mint-tile-manager.element.html + mint-tile-manager.element.scss\n// Regenerate with the codegen-wc Nx target.\n\nimport { html, unsafeCSS } from 'lit';\n\nexport const template = html`<!-- Tile shells are rendered dynamically by render(). This file exists so the\n codegen-wc target produces a \\`styles\\` export from the sibling .scss; the\n \\`template\\` export it generates is intentionally unused. -->`;\nexport const styles = unsafeCSS(`:host {\n display: block;\n position: relative;\n box-sizing: border-box;\n width: 100%;\n contain: layout paint style;\n --bs-tile-radius: 0.5rem;\n --bs-tile-bg: var(--bs-body-bg, #fff);\n --bs-tile-border: var(--bs-border-color, #dee2e6);\n --bs-tile-shadow: var(--bs-box-shadow-sm, 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075));\n --bs-tile-handle-color: var(--bs-secondary, #6c757d);\n --bs-tile-blocked-color: var(--bs-danger, #dc3545);\n}\n\n.tile-grid {\n display: grid;\n grid-auto-rows: var(--mp-tile-row-height, 8rem);\n gap: var(--mp-tile-gap, 0.5rem);\n width: 100%;\n position: relative;\n}\n\n.tile {\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--bs-tile-bg);\n border: 1px solid var(--bs-tile-border);\n border-radius: var(--bs-tile-radius);\n box-shadow: var(--bs-tile-shadow);\n overflow: hidden;\n min-width: 0;\n min-height: 0;\n transition: transform 150ms cubic-bezier(0.2, 0, 0, 1);\n will-change: transform;\n}\n\n.tile[data-dragging=true] {\n z-index: 5;\n cursor: grabbing;\n box-shadow: var(--bs-box-shadow, 0 0.5rem 1rem rgba(0, 0, 0, 0.15));\n transition: none;\n}\n\n.tile[data-resizing=true] {\n z-index: 4;\n transition: none;\n}\n\n.tile[data-blocked=true] {\n outline: 2px solid var(--bs-tile-blocked-color);\n outline-offset: -2px;\n animation: tile-shake 200ms ease-in-out;\n}\n\n@keyframes tile-shake {\n 0%, 100% {\n transform: translateX(0);\n }\n 25% {\n transform: translateX(-3px);\n }\n 75% {\n transform: translateX(3px);\n }\n}\n.tile[data-pressing=true] {\n filter: brightness(0.96);\n transition: filter 100ms ease-out;\n}\n\n.tile__header-shell {\n flex: 0 0 auto;\n user-select: none;\n -webkit-user-select: none;\n -webkit-touch-callout: none;\n cursor: grab;\n}\n\n.tile[data-drag-mode=off] .tile__header-shell,\n.tile[data-locked-move=true] .tile__header-shell {\n cursor: default;\n}\n\n.tile__content-shell {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n}\n\n.tile__resize-side,\n.tile__resize-bottom,\n.tile__resize-corner {\n position: absolute;\n z-index: 2;\n background: transparent;\n touch-action: none;\n -webkit-user-select: none;\n user-select: none;\n opacity: 0;\n transition: opacity 120ms ease-out;\n}\n\n.tile:hover .tile__resize-side,\n.tile:hover .tile__resize-bottom,\n.tile:hover .tile__resize-corner,\n:host([resize-mode=always]) .tile__resize-side,\n:host([resize-mode=always]) .tile__resize-bottom,\n:host([resize-mode=always]) .tile__resize-corner {\n opacity: 1;\n}\n\n@media (pointer: coarse) {\n .tile__resize-side,\n .tile__resize-bottom,\n .tile__resize-corner {\n opacity: 1;\n }\n}\n.tile__resize-side {\n right: -2px;\n top: 25%;\n bottom: 25%;\n width: 6px;\n cursor: ew-resize;\n}\n\n.tile__resize-bottom {\n left: 25%;\n right: 25%;\n bottom: -2px;\n height: 6px;\n cursor: ns-resize;\n}\n\n.tile__resize-corner {\n right: -2px;\n bottom: -2px;\n width: 14px;\n height: 14px;\n cursor: nwse-resize;\n}\n\n.tile__resize-corner::before {\n content: \"\";\n position: absolute;\n right: 3px;\n bottom: 3px;\n width: 8px;\n height: 8px;\n border-right: 2px solid var(--bs-tile-handle-color);\n border-bottom: 2px solid var(--bs-tile-handle-color);\n border-bottom-right-radius: 2px;\n}\n\n:host([resize-mode=off]) .tile__resize-side,\n:host([resize-mode=off]) .tile__resize-bottom,\n:host([resize-mode=off]) .tile__resize-corner {\n display: none;\n}\n\n.tile[data-locked-resize=true] .tile__resize-side,\n.tile[data-locked-resize=true] .tile__resize-bottom,\n.tile[data-locked-resize=true] .tile__resize-corner {\n display: none;\n}\n\n.tile-grid__live-region {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tile {\n transition: none !important;\n }\n .tile[data-blocked=true] {\n animation: none;\n }\n}\n:host(:focus-visible) {\n outline: 2px solid var(--bs-primary, #0d6efd);\n outline-offset: 2px;\n}\n\n.tile:focus-visible {\n outline: 2px solid var(--bs-primary, #0d6efd);\n outline-offset: -2px;\n}`);\n","import { LitElement, html, type TemplateResult, type PropertyValues, nothing } from 'lit';\nimport { TilePosition } from '../types/tile-position';\nimport { TileLayoutSnapshot, TileGestureBlocked } from '../types/tile-layout-snapshot';\nimport { GridRect } from '../types/grid-rect';\nimport { pack } from '../utils/pack';\nimport { styles } from './mint-tile-manager.element.template';\n\nexport interface MintTile {\n id: string;\n position: TilePosition;\n disableMove: boolean;\n disableResize: boolean;\n label: string | null;\n}\n\nexport type TileDragMode = 'tile' | 'header' | 'off';\nexport type TileResizeMode = 'hover' | 'always' | 'off';\n\ntype GestureState =\n | { kind: 'idle' }\n | {\n kind: 'arming-touch-drag';\n pointerId: number;\n tileId: string;\n startX: number;\n startY: number;\n timer: number | null;\n pressingTimer: number | null;\n }\n | {\n kind: 'drag';\n pointerId: number;\n tileId: string;\n pointerOffset: { dx: number; dy: number };\n currentRect: GridRect;\n blocked: boolean;\n }\n | {\n kind: 'resize';\n pointerId: number;\n tileId: string;\n mode: 'side' | 'bottom' | 'corner';\n startPointer: { x: number; y: number };\n startSpans: { colSpan: number; rowSpan: number };\n currentRect: GridRect;\n blocked: boolean;\n };\n\ntype KeyboardMode =\n | { kind: 'idle' }\n | { kind: 'move'; tileId: string }\n | { kind: 'resize'; tileId: string };\n\nconst TOUCH_LONG_PRESS_MS = 600;\nconst TOUCH_LONG_PRESS_SLOP_PX = 10;\nconst TOUCH_PRESS_FEEDBACK_DELAY_MS = 150;\nconst POINTER_DRAG_THRESHOLD_PX = 5;\n\nexport class MintTileManagerElement extends LitElement {\n static override styles = [styles];\n\n static override get observedAttributes(): string[] {\n return [\n ...(super.observedAttributes ?? []),\n 'column-count',\n 'min-column-width',\n 'min-row-height',\n 'gap',\n 'drag-mode',\n 'resize-mode',\n 'animate-reflow',\n 'label',\n ];\n }\n\n static override properties = {\n tiles: { attribute: false },\n columnCount: { attribute: 'column-count', type: Number },\n minColumnWidth: { attribute: 'min-column-width', type: String },\n minRowHeight: { attribute: 'min-row-height', type: String },\n gap: { attribute: 'gap', type: String },\n dragMode: { attribute: 'drag-mode', type: String, reflect: true },\n resizeMode: { attribute: 'resize-mode', type: String, reflect: true },\n animateReflow: { attribute: 'animate-reflow', type: Boolean },\n label: { attribute: 'label', type: String },\n previewLayout: { state: true },\n gestureKind: { state: true },\n blocked: { state: true },\n effectiveColumnCount: { state: true },\n keyboardMode: { state: true },\n liveRegionMessage: { state: true },\n };\n\n tiles: ReadonlyArray<MintTile> = [];\n columnCount: number | null = null;\n minColumnWidth = '200px';\n minRowHeight = '8rem';\n gap = '0.5rem';\n dragMode: TileDragMode = 'header';\n resizeMode: TileResizeMode = 'hover';\n animateReflow = true;\n label: string | null = null;\n\n private gestureState: GestureState = { kind: 'idle' };\n private keyboardState: KeyboardMode = { kind: 'idle' };\n\n // State-tracked redraw triggers (Lit re-renders when these change).\n protected previewLayout: TileLayoutSnapshot | null = null;\n protected gestureKind: GestureState['kind'] = 'idle';\n protected blocked = false;\n protected effectiveColumnCount = 1;\n protected liveRegionMessage = '';\n\n private hostResizeObserver: ResizeObserver | null = null;\n private flipPreviousRects: Map<string, DOMRect> = new Map();\n\n // Cached layout metrics. Refreshed lazily in updated()/firstUpdated() and on\n // ResizeObserver ticks — never from render(), so the per-tile pointer-move\n // path stays free of getComputedStyle / getBoundingClientRect calls.\n private cellMetrics = { width: 0, height: 0, gapX: 0, gapY: 0 };\n\n // Bound handlers — created once so add/remove pair correctly.\n private readonly onWindowPointerMove = (e: PointerEvent) => this.handlePointerMove(e);\n private readonly onWindowPointerUp = (e: PointerEvent) => this.handlePointerUp(e);\n private readonly onWindowPointerCancel = (e: PointerEvent) => this.handlePointerCancel(e);\n private readonly onWindowKeyDown = (e: KeyboardEvent) => this.handleEscapeKey(e);\n private readonly onVisibilityChange = () => {\n if (document.visibilityState === 'hidden') this.cancelGesture();\n };\n\n override render(): TemplateResult {\n const layoutSource = this.previewLayout ?? this.tiles.map((t) => ({ id: t.id, position: t.position }));\n const tileById = new Map(this.tiles.map((t) => [t.id, t]));\n\n const gridStyle = this.computeGridStyle();\n\n // ARIA grid hierarchy is grid > row > gridcell. A single role=\"row\"\n // wrapper with display: contents lets us satisfy that without disturbing\n // the CSS Grid placement of the gridcell children.\n return html`\n <div class=\"tile-grid\" role=\"grid\" aria-label=${this.label ?? nothing} style=${gridStyle}>\n <div role=\"row\" style=\"display: contents;\">\n ${layoutSource.map((entry) => {\n const tile = tileById.get(entry.id);\n if (!tile) return nothing;\n return this.renderTile(tile, entry.position);\n })}\n </div>\n </div>\n <div class=\"tile-grid__live-region\" aria-live=\"polite\" aria-atomic=\"true\">${this.liveRegionMessage}</div>\n `;\n }\n\n private renderTile(tile: MintTile, pos: TilePosition): TemplateResult {\n const isDragging = this.gestureKind === 'drag' && this.activeTileId() === tile.id;\n const isResizing = this.gestureKind === 'resize' && this.activeTileId() === tile.id;\n const isBlocked = (isDragging || isResizing) && this.blocked;\n const isPressing = this.gestureKind === 'arming-touch-drag' && this.activeTileId() === tile.id;\n const transform = this.computeActiveTransform(tile.id);\n\n const style = [\n `grid-column: ${pos.colStart} / span ${pos.colSpan}`,\n `grid-row: ${pos.rowStart} / span ${pos.rowSpan}`,\n transform ? `transform: ${transform}` : '',\n ]\n .filter(Boolean)\n .join('; ');\n\n return html`\n <div\n class=\"tile\"\n role=\"gridcell\"\n tabindex=\"0\"\n data-tile-id=${tile.id}\n data-dragging=${isDragging ? 'true' : 'false'}\n data-resizing=${isResizing ? 'true' : 'false'}\n data-blocked=${isBlocked ? 'true' : 'false'}\n data-pressing=${isPressing ? 'true' : 'false'}\n data-drag-mode=${this.dragMode}\n data-locked-move=${tile.disableMove ? 'true' : 'false'}\n data-locked-resize=${tile.disableResize ? 'true' : 'false'}\n aria-label=${tile.label ?? nothing}\n style=${style}\n @pointerdown=${(e: PointerEvent) => this.onTilePointerDown(e, tile)}\n @keydown=${(e: KeyboardEvent) => this.onTileKeyDown(e, tile)}\n >\n <div class=\"tile__header-shell\">\n <slot name=${`${tile.id}-header`}></slot>\n </div>\n <div class=\"tile__content-shell\">\n <slot name=${`${tile.id}-content`}></slot>\n </div>\n ${tile.disableResize || this.resizeMode === 'off'\n ? nothing\n : html`\n <div class=\"tile__resize-side\" data-resize=\"side\"\n @pointerdown=${(e: PointerEvent) => this.onResizeHandlePointerDown(e, tile, 'side')}></div>\n <div class=\"tile__resize-bottom\" data-resize=\"bottom\"\n @pointerdown=${(e: PointerEvent) => this.onResizeHandlePointerDown(e, tile, 'bottom')}></div>\n <div class=\"tile__resize-corner\" data-resize=\"corner\"\n @pointerdown=${(e: PointerEvent) => this.onResizeHandlePointerDown(e, tile, 'corner')}></div>\n `}\n </div>\n `;\n }\n\n private computeGridStyle(): string {\n const tracks =\n this.columnCount && this.columnCount > 0\n ? `repeat(${this.columnCount}, minmax(0, 1fr))`\n : `repeat(auto-fit, minmax(${this.minColumnWidth}, 1fr))`;\n return [\n `grid-template-columns: ${tracks}`,\n `--mp-tile-row-height: ${this.minRowHeight}`,\n `--mp-tile-gap: ${this.gap}`,\n ].join('; ');\n }\n\n /**\n * Refresh the cached layout metrics by reading layout / computed-style state\n * once. Called from firstUpdated, the ResizeObserver tick, and updated()\n * when an input that affects metrics changes — never from render().\n */\n private updateLayoutCache(): void {\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) {\n this.effectiveColumnCount =\n this.columnCount && this.columnCount > 0 ? this.columnCount : 1;\n return;\n }\n const cs = getComputedStyle(grid);\n if (this.columnCount && this.columnCount > 0) {\n this.effectiveColumnCount = this.columnCount;\n } else {\n const tracks = cs.gridTemplateColumns.split(/\\s+/).filter(Boolean);\n this.effectiveColumnCount = Math.max(1, tracks.length);\n }\n const rect = grid.getBoundingClientRect();\n const cols = this.effectiveColumnCount;\n const gapX = parseFloat(cs.columnGap) || 0;\n const gapY = parseFloat(cs.rowGap) || 0;\n const width = (rect.width - (cols - 1) * gapX) / cols;\n const height = parseFloat(cs.gridAutoRows) || rect.width / cols;\n this.cellMetrics = { width, height, gapX, gapY };\n }\n\n private computeActiveTransform(id: string): string | null {\n const g = this.gestureState;\n if (g.kind !== 'drag' || g.tileId !== id) return null;\n const pointer = this.lastPointerPosition;\n if (!pointer) return null;\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return null;\n // Cached cellMetrics is stale by at most one frame after a resize — fine\n // for the visual translate. gridRect read here is unavoidable: we need\n // the live grid origin to convert pointer (viewport coords) into\n // grid-relative space. One read per render, not one per tile.\n const gridRect = grid.getBoundingClientRect();\n const cell = this.cellMetrics;\n const snapped = g.currentRect;\n const desiredLeft = pointer.x - gridRect.left - g.pointerOffset.dx;\n const desiredTop = pointer.y - gridRect.top - g.pointerOffset.dy;\n const snappedLeft = (snapped.colStart - 1) * (cell.width + cell.gapX);\n const snappedTop = (snapped.rowStart - 1) * (cell.height + cell.gapY);\n return `translate(${Math.round(desiredLeft - snappedLeft)}px, ${Math.round(desiredTop - snappedTop)}px)`;\n }\n\n // ---------------- Lifecycle ----------------\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'application');\n }\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n }\n\n override disconnectedCallback(): void {\n this.cancelGesture();\n this.detachWindowListeners();\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n this.hostResizeObserver?.disconnect();\n this.hostResizeObserver = null;\n super.disconnectedCallback();\n }\n\n protected override firstUpdated(): void {\n // Seed the layout cache once the shadow DOM is in place. Subsequent\n // refreshes happen on host resize and on relevant property changes.\n this.updateLayoutCache();\n let scheduled = false;\n this.hostResizeObserver = new ResizeObserver(() => {\n if (scheduled) return;\n scheduled = true;\n // Defer to the next frame so we never write reactive state from inside\n // the observer's callback — that path produces \"ResizeObserver loop\n // completed with undelivered notifications\" warnings.\n requestAnimationFrame(() => {\n scheduled = false;\n this.updateLayoutCache();\n });\n });\n this.hostResizeObserver.observe(this);\n }\n\n override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n super.attributeChangedCallback(name, oldValue, newValue);\n if (name === 'animate-reflow') {\n this.animateReflow = !(newValue === null || newValue === 'false' || newValue === '0');\n }\n }\n\n // ---------------- FLIP animator ----------------\n\n protected override willUpdate(_changed: PropertyValues): void {\n if (!this.shouldAnimate()) {\n this.flipPreviousRects.clear();\n return;\n }\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return;\n this.flipPreviousRects.clear();\n grid.querySelectorAll<HTMLElement>('.tile').forEach((el) => {\n const id = el.dataset['tileId'];\n if (id) this.flipPreviousRects.set(id, el.getBoundingClientRect());\n });\n }\n\n protected override updated(changed: PropertyValues): void {\n // Refresh cached layout metrics when an input that determines them changes.\n // Reading layout in updated() is safe — the new style is already applied.\n if (\n changed.has('columnCount') ||\n changed.has('minColumnWidth') ||\n changed.has('minRowHeight') ||\n changed.has('gap')\n ) {\n this.updateLayoutCache();\n }\n if (!this.shouldAnimate() || this.flipPreviousRects.size === 0) return;\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return;\n const activeId = this.activeTileId();\n grid.querySelectorAll<HTMLElement>('.tile').forEach((el) => {\n const id = el.dataset['tileId'];\n if (!id || id === activeId) return;\n const prev = this.flipPreviousRects.get(id);\n if (!prev) return;\n const next = el.getBoundingClientRect();\n const dx = prev.left - next.left;\n const dy = prev.top - next.top;\n if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;\n // Invert: jump back to old position with no transition…\n const previous = el.style.transition;\n el.style.transition = 'none';\n el.style.transform = `translate(${dx}px, ${dy}px)`;\n // …then play forward on the next frame, restoring the transition.\n requestAnimationFrame(() => {\n el.style.transition = previous;\n el.style.transform = '';\n });\n });\n this.flipPreviousRects.clear();\n }\n\n private shouldAnimate(): boolean {\n if (!this.animateReflow) return false;\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return !window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n // ---------------- Pointer entry points ----------------\n\n private lastPointerPosition: { x: number; y: number } | null = null;\n\n private onTilePointerDown(event: PointerEvent, tile: MintTile): void {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n if (this.gestureState.kind !== 'idle') return;\n if (this.dragMode === 'off' || tile.disableMove) return;\n\n // Resize handles consume their own pointerdown via stopPropagation; if we\n // got here it's a drag-surface candidate.\n if (this.dragMode === 'header' || event.pointerType === 'touch') {\n // Header-only: only proceed if the click originated inside the header\n // shell. The slotted (light-DOM) target won't find shadow-DOM ancestors\n // via closest(), so walk the composed path instead.\n const inHeader = event\n .composedPath()\n .some((node) => node instanceof HTMLElement && node.classList?.contains('tile__header-shell'));\n if (!inHeader) return;\n }\n\n if (event.pointerType === 'touch') {\n this.armTouchDrag(event, tile);\n } else {\n this.armPointerDrag(event, tile);\n }\n }\n\n private onResizeHandlePointerDown(\n event: PointerEvent,\n tile: MintTile,\n mode: 'side' | 'bottom' | 'corner',\n ): void {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n if (tile.disableResize || this.resizeMode === 'off') return;\n if (this.gestureState.kind !== 'idle') return;\n event.stopPropagation();\n event.preventDefault();\n this.beginResize(event, tile, mode);\n }\n\n // ---------------- Drag arming ----------------\n\n private armPointerDrag(event: PointerEvent, tile: MintTile): void {\n // Mouse / pen: arm immediately past the 5 px threshold. We track the\n // pointer ourselves and convert to a real drag when distance exceeds\n // POINTER_DRAG_THRESHOLD_PX.\n const startX = event.clientX;\n const startY = event.clientY;\n const onMove = (e: PointerEvent) => {\n if (e.pointerId !== event.pointerId) return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n if (Math.hypot(dx, dy) >= POINTER_DRAG_THRESHOLD_PX) {\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', onCancel);\n window.removeEventListener('pointercancel', onCancel);\n this.beginDrag(e, tile);\n }\n };\n const onCancel = (e: PointerEvent) => {\n if (e.pointerId !== event.pointerId) return;\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', onCancel);\n window.removeEventListener('pointercancel', onCancel);\n };\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', onCancel);\n window.addEventListener('pointercancel', onCancel);\n }\n\n private armTouchDrag(event: PointerEvent, tile: MintTile): void {\n const startX = event.clientX;\n const startY = event.clientY;\n const pointerId = event.pointerId;\n\n const pressingTimer = window.setTimeout(() => {\n // Visual feedback only — gesture not yet armed.\n if (this.gestureState.kind === 'arming-touch-drag' && this.gestureState.pointerId === pointerId) {\n // Force a re-render to flip data-pressing.\n this.requestUpdate();\n }\n }, TOUCH_PRESS_FEEDBACK_DELAY_MS);\n\n const armTimer = window.setTimeout(() => {\n if (this.gestureState.kind !== 'arming-touch-drag' || this.gestureState.pointerId !== pointerId) return;\n this.cleanupTouchArming();\n try {\n navigator.vibrate?.(10);\n } catch {\n // Silently ignore; vibrate isn't available everywhere.\n }\n this.beginDragFromTouchArm(tile, startX, startY, pointerId);\n }, TOUCH_LONG_PRESS_MS);\n\n this.gestureState = {\n kind: 'arming-touch-drag',\n pointerId,\n tileId: tile.id,\n startX,\n startY,\n timer: armTimer,\n pressingTimer,\n };\n this.gestureKind = 'arming-touch-drag';\n\n const onMove = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n if (this.gestureState.kind !== 'arming-touch-drag') return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n if (Math.hypot(dx, dy) > TOUCH_LONG_PRESS_SLOP_PX) {\n this.cleanupTouchArming();\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', onCancel);\n window.removeEventListener('pointercancel', onCancel);\n }\n };\n const onCancel = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n if (this.gestureState.kind === 'arming-touch-drag') {\n this.cleanupTouchArming();\n }\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', onCancel);\n window.removeEventListener('pointercancel', onCancel);\n };\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', onCancel);\n window.addEventListener('pointercancel', onCancel);\n }\n\n private cleanupTouchArming(): void {\n if (this.gestureState.kind !== 'arming-touch-drag') return;\n const { timer, pressingTimer } = this.gestureState;\n if (timer !== null) window.clearTimeout(timer);\n if (pressingTimer !== null) window.clearTimeout(pressingTimer);\n this.gestureState = { kind: 'idle' };\n this.gestureKind = 'idle';\n this.requestUpdate();\n }\n\n private beginDragFromTouchArm(tile: MintTile, startX: number, startY: number, pointerId: number): void {\n // Synthesize the same begin call as for mouse, with a fake pointer event.\n // Refresh the layout cache once at gesture start — guarantees fresh metrics\n // even if the grid has resized since the last cache tick.\n this.updateLayoutCache();\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return;\n const cell = this.cellMetrics;\n const gridRect = grid.getBoundingClientRect();\n const tileLeft = gridRect.left + (tile.position.colStart - 1) * (cell.width + cell.gapX);\n const tileTop = gridRect.top + (tile.position.rowStart - 1) * (cell.height + cell.gapY);\n this.gestureState = {\n kind: 'drag',\n pointerId,\n tileId: tile.id,\n pointerOffset: { dx: startX - tileLeft, dy: startY - tileTop },\n currentRect: { ...tile.position },\n blocked: false,\n };\n this.gestureKind = 'drag';\n this.lastPointerPosition = { x: startX, y: startY };\n this.attachWindowListeners();\n this.requestUpdate();\n }\n\n private beginDrag(event: PointerEvent, tile: MintTile): void {\n this.updateLayoutCache();\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return;\n const cell = this.cellMetrics;\n const gridRect = grid.getBoundingClientRect();\n const tileLeft = gridRect.left + (tile.position.colStart - 1) * (cell.width + cell.gapX);\n const tileTop = gridRect.top + (tile.position.rowStart - 1) * (cell.height + cell.gapY);\n this.gestureState = {\n kind: 'drag',\n pointerId: event.pointerId,\n tileId: tile.id,\n pointerOffset: { dx: event.clientX - tileLeft, dy: event.clientY - tileTop },\n currentRect: { ...tile.position },\n blocked: false,\n };\n this.gestureKind = 'drag';\n this.lastPointerPosition = { x: event.clientX, y: event.clientY };\n this.attachWindowListeners();\n this.runPackerForCurrentGesture();\n }\n\n private beginResize(event: PointerEvent, tile: MintTile, mode: 'side' | 'bottom' | 'corner'): void {\n this.gestureState = {\n kind: 'resize',\n pointerId: event.pointerId,\n tileId: tile.id,\n mode,\n startPointer: { x: event.clientX, y: event.clientY },\n startSpans: { colSpan: tile.position.colSpan, rowSpan: tile.position.rowSpan },\n currentRect: { ...tile.position },\n blocked: false,\n };\n this.gestureKind = 'resize';\n this.lastPointerPosition = { x: event.clientX, y: event.clientY };\n this.attachWindowListeners();\n this.runPackerForCurrentGesture();\n }\n\n private attachWindowListeners(): void {\n window.addEventListener('pointermove', this.onWindowPointerMove);\n window.addEventListener('pointerup', this.onWindowPointerUp);\n window.addEventListener('pointercancel', this.onWindowPointerCancel);\n window.addEventListener('keydown', this.onWindowKeyDown);\n }\n\n private detachWindowListeners(): void {\n window.removeEventListener('pointermove', this.onWindowPointerMove);\n window.removeEventListener('pointerup', this.onWindowPointerUp);\n window.removeEventListener('pointercancel', this.onWindowPointerCancel);\n window.removeEventListener('keydown', this.onWindowKeyDown);\n }\n\n private handleEscapeKey(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.gestureState.kind !== 'idle') {\n e.preventDefault();\n this.cancelGesture();\n }\n }\n\n // ---------------- Pointer move / up / cancel ----------------\n\n private handlePointerMove(event: PointerEvent): void {\n const g = this.gestureState;\n if (g.kind === 'idle' || g.kind === 'arming-touch-drag') return;\n if (event.pointerId !== g.pointerId) return;\n this.lastPointerPosition = { x: event.clientX, y: event.clientY };\n this.runPackerForCurrentGesture();\n }\n\n private handlePointerUp(event: PointerEvent): void {\n const g = this.gestureState;\n if (g.kind === 'idle' || g.kind === 'arming-touch-drag') return;\n if (event.pointerId !== g.pointerId) return;\n if (g.blocked) {\n this.cancelGesture('blocked');\n return;\n }\n this.commitGesture();\n }\n\n private handlePointerCancel(event: PointerEvent): void {\n const g = this.gestureState;\n if (g.kind === 'idle') return;\n if (g.kind !== 'arming-touch-drag' && event.pointerId !== g.pointerId) return;\n this.cancelGesture();\n }\n\n // ---------------- Packer integration ----------------\n\n private runPackerForCurrentGesture(): void {\n const g = this.gestureState;\n if (g.kind !== 'drag' && g.kind !== 'resize') return;\n const tile = this.tiles.find((t) => t.id === g.tileId);\n if (!tile) {\n this.cancelGesture();\n return;\n }\n const rect = g.kind === 'drag' ? this.computeDragRect(g, tile) : this.computeResizeRect(g, tile);\n if (!rect) return;\n g.currentRect = rect;\n\n const cols = this.effectiveColumnCount;\n const result = pack(\n this.tiles.map((t) => ({ id: t.id, position: t.position, locked: t.disableMove })),\n { id: tile.id, rect },\n cols,\n );\n this.previewLayout = result.layout;\n g.blocked = result.blocked;\n this.blocked = result.blocked;\n this.requestUpdate();\n }\n\n private computeDragRect(g: Extract<GestureState, { kind: 'drag' }>, tile: MintTile): GridRect | null {\n const grid = this.shadowRoot?.querySelector<HTMLElement>('.tile-grid');\n if (!grid) return null;\n const cell = this.cellMetrics;\n const cols = this.effectiveColumnCount;\n const pointer = this.lastPointerPosition;\n if (!pointer) return null;\n const gridRect = grid.getBoundingClientRect();\n // Pointer position relative to grid origin, minus the where-on-the-tile offset.\n const localX = pointer.x - gridRect.left - g.pointerOffset.dx;\n const localY = pointer.y - gridRect.top - g.pointerOffset.dy;\n const colStart = Math.round(localX / (cell.width + cell.gapX)) + 1;\n const rowStart = Math.round(localY / (cell.height + cell.gapY)) + 1;\n return {\n colStart: Math.max(1, Math.min(colStart, cols - tile.position.colSpan + 1)),\n rowStart: Math.max(1, rowStart),\n colSpan: tile.position.colSpan,\n rowSpan: tile.position.rowSpan,\n };\n }\n\n private computeResizeRect(\n g: Extract<GestureState, { kind: 'resize' }>,\n tile: MintTile,\n ): GridRect | null {\n const cell = this.cellMetrics;\n const cols = this.effectiveColumnCount;\n const pointer = this.lastPointerPosition;\n if (!pointer) return null;\n const dx = pointer.x - g.startPointer.x;\n const dy = pointer.y - g.startPointer.y;\n const colDelta = Math.round(dx / (cell.width + cell.gapX));\n const rowDelta = Math.round(dy / (cell.height + cell.gapY));\n const colSpan =\n g.mode === 'bottom'\n ? g.startSpans.colSpan\n : Math.max(1, Math.min(g.startSpans.colSpan + colDelta, cols - tile.position.colStart + 1));\n const rowSpan =\n g.mode === 'side' ? g.startSpans.rowSpan : Math.max(1, g.startSpans.rowSpan + rowDelta);\n return {\n colStart: tile.position.colStart,\n rowStart: tile.position.rowStart,\n colSpan,\n rowSpan,\n };\n }\n\n // ---------------- Commit / cancel ----------------\n\n private commitGesture(): void {\n const g = this.gestureState;\n if (g.kind !== 'drag' && g.kind !== 'resize') return;\n const finalLayout = this.previewLayout;\n if (!finalLayout) {\n this.cleanupGesture();\n return;\n }\n\n const previousById = new Map(this.tiles.map((t) => [t.id, t.position]));\n const newTiles: MintTile[] = this.tiles.map((t) => {\n const placed = finalLayout.find((p) => p.id === t.id);\n return placed ? { ...t, position: placed.position } : t;\n });\n\n this.tiles = newTiles;\n\n // Dispatch per-tile change events.\n finalLayout.forEach((entry) => {\n const prev = previousById.get(entry.id);\n if (!prev || !this.positionsEqual(prev, entry.position)) {\n this.dispatchEvent(\n new CustomEvent<{ id: string; position: TilePosition }>('tilepositionchange', {\n detail: { id: entry.id, position: entry.position },\n bubbles: false,\n composed: true,\n }),\n );\n }\n });\n this.dispatchEvent(\n new CustomEvent<TileLayoutSnapshot>('tilelayoutchange', {\n detail: this.cloneSnapshot(finalLayout),\n bubbles: false,\n composed: true,\n }),\n );\n\n const movedTile = finalLayout.find((p) => p.id === g.tileId);\n if (movedTile) {\n this.liveRegionMessage =\n g.kind === 'drag'\n ? `Tile moved to row ${movedTile.position.rowStart}, column ${movedTile.position.colStart}`\n : `Tile resized to ${movedTile.position.colSpan} columns by ${movedTile.position.rowSpan} rows`;\n }\n\n this.cleanupGesture();\n }\n\n private cancelGesture(reason: 'cancel' | 'blocked' = 'cancel'): void {\n const g = this.gestureState;\n if (reason === 'blocked' && (g.kind === 'drag' || g.kind === 'resize')) {\n this.dispatchEvent(\n new CustomEvent<TileGestureBlocked>('tilegestureblocked', {\n detail: { id: g.tileId, reason: 'locked-overlap' },\n bubbles: false,\n composed: true,\n }),\n );\n }\n this.cleanupGesture();\n }\n\n private cleanupGesture(): void {\n if (this.gestureState.kind === 'arming-touch-drag') this.cleanupTouchArming();\n this.detachWindowListeners();\n this.gestureState = { kind: 'idle' };\n this.gestureKind = 'idle';\n this.previewLayout = null;\n this.blocked = false;\n this.lastPointerPosition = null;\n this.requestUpdate();\n }\n\n private positionsEqual(a: TilePosition, b: TilePosition): boolean {\n return (\n a.colStart === b.colStart &&\n a.rowStart === b.rowStart &&\n a.colSpan === b.colSpan &&\n a.rowSpan === b.rowSpan\n );\n }\n\n private cloneSnapshot(s: TileLayoutSnapshot): TileLayoutSnapshot {\n return s.map((p) => ({ id: p.id, position: { ...p.position } }));\n }\n\n private activeTileId(): string | null {\n const g = this.gestureState;\n if (g.kind === 'drag' || g.kind === 'resize' || g.kind === 'arming-touch-drag') return g.tileId;\n return null;\n }\n\n // ---------------- Public API ----------------\n\n /** Read-only snapshot of the current layout. Mirrors `BsDockManagerComponent.captureLayout()`. */\n captureLayout(): TileLayoutSnapshot {\n return this.tiles.map((t) => ({ id: t.id, position: { ...t.position } }));\n }\n\n /**\n * True while a drag or resize is in flight. The Angular wrapper uses this to\n * avoid clobbering `tiles` mid-gesture. Touch long-press arming does NOT\n * count — the WC isn't yet owning the layout during the hold.\n */\n get isGestureActive(): boolean {\n return this.gestureState.kind === 'drag' || this.gestureState.kind === 'resize';\n }\n\n // ---------------- Keyboard ----------------\n\n private onTileKeyDown(event: KeyboardEvent, tile: MintTile): void {\n if (tile.disableMove && tile.disableResize) return;\n const km = this.keyboardState;\n\n if (km.kind === 'idle') {\n if (event.key === ' ' && !tile.disableMove) {\n event.preventDefault();\n this.keyboardState = { kind: 'move', tileId: tile.id };\n this.liveRegionMessage = 'Move mode enabled. Use arrow keys to move; Enter to commit, Escape to cancel.';\n return;\n }\n return;\n }\n\n if (km.tileId !== tile.id) return;\n\n if (event.key === 'Escape' || event.key === 'Enter') {\n event.preventDefault();\n this.keyboardState = { kind: 'idle' };\n this.liveRegionMessage = event.key === 'Enter' ? 'Move committed.' : 'Move cancelled.';\n return;\n }\n\n if (event.key.startsWith('Arrow')) {\n event.preventDefault();\n const isResize = event.shiftKey;\n this.applyKeyboardStep(tile, event.key as ArrowKey, isResize);\n }\n }\n\n private applyKeyboardStep(tile: MintTile, key: ArrowKey, isResize: boolean): void {\n const cols = this.effectiveColumnCount;\n const dx = key === 'ArrowLeft' ? -1 : key === 'ArrowRight' ? 1 : 0;\n const dy = key === 'ArrowUp' ? -1 : key === 'ArrowDown' ? 1 : 0;\n const newRect: GridRect = isResize\n ? {\n colStart: tile.position.colStart,\n rowStart: tile.position.rowStart,\n colSpan: Math.max(1, Math.min(tile.position.colSpan + dx, cols - tile.position.colStart + 1)),\n rowSpan: Math.max(1, tile.position.rowSpan + dy),\n }\n : {\n colStart: Math.max(1, Math.min(tile.position.colStart + dx, cols - tile.position.colSpan + 1)),\n rowStart: Math.max(1, tile.position.rowStart + dy),\n colSpan: tile.position.colSpan,\n rowSpan: tile.position.rowSpan,\n };\n\n const result = pack(\n this.tiles.map((t) => ({ id: t.id, position: t.position, locked: t.disableMove })),\n { id: tile.id, rect: newRect },\n cols,\n );\n if (result.blocked) {\n this.liveRegionMessage = 'Move blocked.';\n return;\n }\n const newTiles: MintTile[] = this.tiles.map((t) => {\n const placed = result.layout.find((p) => p.id === t.id);\n return placed ? { ...t, position: placed.position } : t;\n });\n this.tiles = newTiles;\n this.dispatchEvent(\n new CustomEvent<TileLayoutSnapshot>('tilelayoutchange', {\n detail: this.cloneSnapshot(result.layout),\n bubbles: false,\n composed: true,\n }),\n );\n result.layout.forEach((entry) => {\n this.dispatchEvent(\n new CustomEvent<{ id: string; position: TilePosition }>('tilepositionchange', {\n detail: { id: entry.id, position: entry.position },\n bubbles: false,\n composed: true,\n }),\n );\n });\n this.liveRegionMessage = isResize\n ? `Tile resized to ${newRect.colSpan} columns by ${newRect.rowSpan} rows`\n : `Tile moved to row ${newRect.rowStart}, column ${newRect.colStart}`;\n }\n}\n\ntype ArrowKey = 'ArrowUp' | 'ArrowDown' | 'ArrowLeft' | 'ArrowRight';\n\nif (typeof customElements !== 'undefined' && !customElements.get('mp-tile-manager')) {\n customElements.define('mp-tile-manager', MintTileManagerElement);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mp-tile-manager': MintTileManagerElement;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mintplayer/ng-bootstrap",
3
3
  "private": false,
4
- "version": "21.27.0",
4
+ "version": "21.29.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
@@ -304,6 +304,10 @@
304
304
  "types": "./types/mintplayer-ng-bootstrap-table.d.ts",
305
305
  "default": "./fesm2022/mintplayer-ng-bootstrap-table.mjs"
306
306
  },
307
+ "./tile-manager": {
308
+ "types": "./types/mintplayer-ng-bootstrap-tile-manager.d.ts",
309
+ "default": "./fesm2022/mintplayer-ng-bootstrap-tile-manager.mjs"
310
+ },
307
311
  "./timepicker": {
308
312
  "types": "./types/mintplayer-ng-bootstrap-timepicker.d.ts",
309
313
  "default": "./fesm2022/mintplayer-ng-bootstrap-timepicker.mjs"
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
+ import { Subject } from 'rxjs';
3
4
  import { ControlValueAccessor } from '@angular/forms';
4
- import * as i1 from '@mintplayer/ng-swiper/observe-size';
5
5
 
6
6
  interface HslColor {
7
7
  hue: number;
@@ -53,32 +53,24 @@ interface HS {
53
53
  }
54
54
 
55
55
  declare class BsAlphaStripComponent {
56
- readonly canvas: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
57
56
  disabled: _angular_core.InputSignal<boolean>;
58
57
  hs: _angular_core.ModelSignal<HS>;
59
58
  brightness: _angular_core.ModelSignal<number>;
60
59
  alpha: _angular_core.ModelSignal<number>;
61
- alphaChange: _angular_core.OutputEmitterRef<number>;
62
- private canvasContext;
60
+ trackGradient: _angular_core.Signal<string>;
63
61
  resultBackground: _angular_core.Signal<string>;
64
- constructor();
65
- ngAfterViewInit(): void;
66
62
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsAlphaStripComponent, never>;
67
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsAlphaStripComponent, "bs-alpha-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; "alpha": "alphaChange"; "alphaChange": "alphaChange"; }, never, never, true, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsAlphaStripComponent, "bs-alpha-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; "alpha": "alphaChange"; }, never, never, true, never>;
68
64
  }
69
65
 
70
66
  declare class BsBrightnessStripComponent {
71
- readonly canvas: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
72
67
  disabled: _angular_core.InputSignal<boolean>;
73
68
  hs: _angular_core.ModelSignal<HS>;
74
69
  brightness: _angular_core.ModelSignal<number>;
75
- brightnessChange: _angular_core.OutputEmitterRef<number>;
76
- private canvasContext;
70
+ trackGradient: _angular_core.Signal<string>;
77
71
  resultBackground: _angular_core.Signal<string>;
78
- constructor();
79
- ngAfterViewInit(): void;
80
72
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsBrightnessStripComponent, never>;
81
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsBrightnessStripComponent, "bs-brightness-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; "brightnessChange": "brightnessChange"; }, never, never, true, never>;
73
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsBrightnessStripComponent, "bs-brightness-strip", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hs": { "alias": "hs"; "required": false; "isSignal": true; }; "brightness": { "alias": "brightness"; "required": false; "isSignal": true; }; }, { "hs": "hsChange"; "brightness": "brightnessChange"; }, never, never, true, never>;
82
74
  }
83
75
 
84
76
  declare class BsColorWheelComponent {
@@ -112,8 +104,8 @@ declare class BsColorPickerValueAccessor implements ControlValueAccessor {
112
104
  private host;
113
105
  onValueChange?: (value: string) => void;
114
106
  onTouched?: () => void;
115
- private lastHex;
116
107
  constructor();
108
+ private emit;
117
109
  registerOnChange(fn: (_: any) => void): void;
118
110
  registerOnTouched(fn: () => void): void;
119
111
  writeValue(value: string | null): void;
@@ -130,29 +122,33 @@ declare class BsColorPickerComponent {
130
122
  hs: _angular_core.WritableSignal<HS>;
131
123
  brightness: _angular_core.WritableSignal<number>;
132
124
  alpha: _angular_core.ModelSignal<number>;
133
- alphaChange: _angular_core.OutputEmitterRef<number>;
134
- constructor();
125
+ /**
126
+ * Fires when the user drives a change (drags the wheel or the brightness strip).
127
+ * The value accessor subscribes to this so it only emits to the form on real
128
+ * user actions — not on writeValue echoes or initial signal-default state.
129
+ */
130
+ readonly userChanged: Subject<void>;
131
+ onUserHsChange(hs: HS): void;
132
+ onUserBrightnessChange(brightness: number): void;
133
+ onUserAlphaChange(alpha: number): void;
135
134
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsColorPickerComponent, never>;
136
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsColorPickerComponent, "bs-color-picker", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowAlpha": { "alias": "allowAlpha"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "alpha": "alphaChange"; "alphaChange": "alphaChange"; }, never, never, true, [{ directive: typeof BsColorPickerValueAccessor; inputs: {}; outputs: {}; }]>;
135
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsColorPickerComponent, "bs-color-picker", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowAlpha": { "alias": "allowAlpha"; "required": false; "isSignal": true; }; "alpha": { "alias": "alpha"; "required": false; "isSignal": true; }; }, { "alpha": "alphaChange"; }, never, never, true, [{ directive: typeof BsColorPickerValueAccessor; inputs: {}; outputs: {}; }]>;
137
136
  }
138
137
 
139
138
  declare class BsSliderComponent {
140
- private observeSize;
141
139
  readonly track: _angular_core.Signal<ElementRef<HTMLDivElement>>;
142
140
  readonly thumb: _angular_core.Signal<ElementRef<HTMLDivElement>>;
143
141
  disabled: _angular_core.InputSignal<boolean>;
144
142
  value: _angular_core.ModelSignal<number>;
145
- valueChange: _angular_core.OutputEmitterRef<number>;
146
143
  private isPointerDown;
147
- thumbMarginLeft: _angular_core.Signal<number>;
148
- cursorClass: _angular_core.Signal<"cursor-grabbing" | "cursor-grab">;
149
- constructor();
144
+ thumbLeft: _angular_core.Signal<string>;
145
+ cursorClass: _angular_core.Signal<string>;
150
146
  onPointerDown(ev: MouseEvent | TouchEvent): void;
151
147
  onPointerMove(ev: MouseEvent | TouchEvent): void;
152
- onPointerUp(ev: MouseEvent | TouchEvent): void;
148
+ onPointerUp(_ev: MouseEvent | TouchEvent): void;
153
149
  private updateColor;
154
150
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsSliderComponent, never>;
155
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSliderComponent, "bs-slider", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "valueChange": "valueChange"; }, never, ["[bsTrack]", "[bsThumb]"], true, [{ directive: typeof i1.BsObserveSizeDirective; inputs: {}; outputs: {}; }]>;
151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsSliderComponent, "bs-slider", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[bsTrack]", "[bsThumb]"], true, never>;
156
152
  }
157
153
  declare class BsThumbDirective {
158
154
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsThumbDirective, never>;