Skip to content

feat: planeta migration features#1

Open
witqq wants to merge 2 commits intomasterfrom
feature/planeta-migration-gaps
Open

feat: planeta migration features#1
witqq wants to merge 2 commits intomasterfrom
feature/planeta-migration-gaps

Conversation

@witqq
Copy link
Owner

@witqq witqq commented Mar 7, 2026

Auto row height, column stretch, date picker, context menu submenus, locale, cell editor registry, datetime editor.

Changes

Benchmark suite: BenchmarkRunner, measureMultiRun, computeStats, measureThroughput — 6 metrics across 1K/10K/100K datasets.

Text measurement + word-wrap: TextMeasureCache extended with getWrappedLines (word-boundary + char fallback), measureWrappedHeight. ColumnDef.wrapText option. CellTextLayer renders multi-line wrapped text.

Auto row height: RowStore auto/manual separation (manual wins). LayoutEngine.setRowHeightsBatch() for O(n) batch. AutoRowSizeManager: viewport-first sync + requestIdleCallback async sweep. Dirty tracking, scroll compensation.

Column stretch: ColumnStretchManager with 'all' and 'last' modes. ResizeObserver. Manual resize exclusion, frozen column handling.

Date picker: DatePickerOverlay — pure-DOM calendar, keyboard nav, ARIA role=dialog.

Context menu submenus: ContextMenuItem.submenu for recursive nesting. Chevron, hover delay, keyboard nav. Empty menu prevention.

Locale system: EN/RU packs, resolveLocale(), runtime switching.

Cell editor registry: CellEditor interface, CellEditorRegistry with priority resolution. DatePickerEditor adapter. InlineEditor fallback.

DateTimeEditor: Calendar + hour/minute spin controls for 'datetime' columns. ISO YYYY-MM-DDTHH:mm commit. Tab cycling, Now button.

Demo overhaul: Sidebar layout, all features demonstrated, 1K default / 1M toggle.

Tests

  • 1708 unit tests (77 files)
  • 13 E2E Playwright tests
  • 140 files changed, +10746 -864

witqq added 2 commits March 6, 2026 03:24
…ate picker, context menu submenus, locale, cell editor registry, datetime editor

Benchmark suite: BenchmarkRunner, measureMultiRun, computeStats,
measureThroughput — 6 metrics across 1K/10K/100K row datasets.

Text measurement and word-wrap: TextMeasureCache extended with
measureEmHeight, getWrappedLines (word-boundary + char fallback),
countWrappedLines, measureWrappedHeight. ColumnDef.wrapText option.
CellTextLayer renders multi-line wrapped text.

Auto row height: RowStore auto/manual height separation with
manual-always-wins priority. LayoutEngine.setRowHeightsBatch() for
O(n) batch updates. CellTypeRenderer.measureHeight() and
RenderLayer.measureHeights() protocols. AutoRowSizeManager with
viewport-first sync measurement and requestIdleCallback async sweep.
Dirty tracking (per-row and global), scroll compensation to prevent
visual jumps when off-screen heights change.

Column stretch: ColumnStretchManager with 'all' and 'last' modes.
Container resize observation via ResizeObserver. Manual resize
exclusion, frozen column handling, minWidth enforcement.

Date picker: DatePickerOverlay — pure-DOM calendar widget positioned
below target cell. Month/year navigation, day grid, keyboard nav
(arrows, Enter, Escape, Tab), Today button. ARIA role=dialog.
Grid scroll and outside click close the picker.

Context menu submenus: ContextMenuItem.submenu for recursive nesting.
Chevron indicator, hover delay (200ms/150ms), ArrowRight/Left
keyboard navigation. Empty menu prevention via recursive
hasVisibleChildren check.

Locale system: SpreadsheetLocale interface with EN and RU packs.
resolveLocale() merges partial locales over English defaults.
Runtime switching via setLocale(). Covers context menu, date picker,
datetime picker, filter panel, accessibility, aggregates.

Cell editor registry: CellEditor interface (open/close/destroy
lifecycle), CellEditorRegistry with priority-sorted resolution.
DatePickerEditor adapter wraps DatePickerOverlay. InlineEditor as
fallback. Engine delegates editor lifecycle via registry.

DateTimeEditor: combined calendar + hour/minute spin controls for
'datetime' columns. Commits ISO YYYY-MM-DDTHH:mm. Tab cycles
calendar/hour/minute sections. Now button, theme-aware, locale-aware.

Demo page overhaul: sidebar layout with Display, Data, Views,
Import/Export, Collaboration sections. Feature toggles, badges,
1K default rows with 1M toggle. All features demonstrated.

Tests: 1708 unit tests (77 files), 13 E2E Playwright tests.
README, CHANGELOG, CONTRIBUTING updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant