Skip to content

Features Overview

@witqq/spreadsheet is a canvas-based spreadsheet engine for the web. This page maps every capability to its documentation.

FeatureDescriptionDocs
Canvas 2D RenderingLayer-based pipeline, 60 FPS at 100K+ rowsRendering
Data ModelSparse CellStore, RowStore, ColStore, StylePoolData Model
Event SystemTyped EventBus with 36 eventsEvents
ThemesLight/dark themes, runtime switching, full customizationThemes
ArchitectureZero-dependency core, plugin system, framework wrappersArchitecture
FeatureDescriptionDocs
Cell SelectionClick, Shift+click range, Ctrl+click multi-selectSelection
Keyboard NavigationArrow keys, Tab, Enter, Home/End, PageUp/Down, Ctrl+Home/EndSelection
Row/Column SelectionClick row numbers or headers for full row/column selectionSelection
FeatureDescriptionDocs
Inline EditorTextarea overlay, F2/double-click open, Enter/Escape/TabEditing
Date & DateTime EditorsCalendar overlay, time spinners, keyboard navigationDate Editors
Cell Editor RegistryCustom editors, matcher-based selection, editor lifecycleCell Editor Registry
Undo & Redo100-step command stack, Ctrl+Z / Ctrl+YUndo & Redo
ClipboardCopy/Cut/Paste, TSV + HTML formats, Excel/Sheets interopClipboard
Drag-to-FillPattern detection (numbers, dates, text), merge-awareAutofill
ValidationColumn/cell rules: required, range, regex, customValidation
Change TrackingCell status lifecycle: changed → saving → saved, errorChange Tracking
FeatureDescriptionDocs
SortingMulti-column stable sort, type-aware, header click toggleSorting
Filtering14 operators, AND logic, FilterPanel UIFiltering
DataViewLogical↔physical row mapping for sort/filter pipelineDataView
Frozen PanesFreeze rows/columns, 4-region rendering with ImageData cachingFrozen Panes
Cell MergingSpatial index, anchor/hidden cells, merge-aware navigationMerging
Row GroupingParent-child tree, expand/collapse, cascading aggregatesRow Grouping
StreamingpushRows/updateRow/deleteRow, throttle batchingStreaming
Pivot TablesCross-tabulation, 5 aggregate functions, drill-downPivot Tables
PluginDescriptionDocs
Formula EngineCustom tokenizer/parser/evaluator, dependency graph, Web Worker modeFormulas
Custom FunctionsRegister domain-specific functions (e.g. TAX, DISCOUNT)Custom Functions
Conditional FormattingValue rules, gradient scales, data bars, icon setsConditional Format
Excel I/OImport/export via SheetJS (Apache-2.0), lazy-loadedExcel
CollaborationOT engine, WebSocket transport, remote cursorsCollaboration
Progressive LoaderChunked loading with scheduler.yield, progress overlayProgressive Loader
Plugin SystemInstall/remove/dependencies, isolated state, PluginAPIPlugin System
FrameworkDescriptionDocs
ReactSpreadsheet<TRow> component, callbacks, ref API, prop updatesReact
Vue 3Composition API, props/emits/defineExposeVue 3
AngularStandalone component, Input/Output bindingsAngular
Vanilla JS / WidgetIIFE/UMD bundle, Spreadsheet.create(), <36KB gzipWidget
FeatureDescriptionDocs
Performance100K rows default, 1M rows toggle, FPS counter, measureInitTimePerformance
Column/Row ResizeDrag headers/row numbers, min/max constraints, undoableResize
Auto Row HeightTwo-phase content measurement, per-row height calculationAuto Row Height
Text WrappingWord-wrap in columns, greedy line breaking, truncationText Wrapping
Column StretchFill container width — ‘all’ or ‘last’ modeColumn Stretch
Locale / i18nBuilt-in locales, custom translations, runtime switchingLocale System
Context MenuRight-click menu, extensible items, submenus, keyboard navigationContext Menu
AccessibilityWCAG 2.1 AA, role=grid, aria-live announcementsAccessibility
Print Support@media print CSS, DOM table generation, maxPrintRowsPrint
Cell Types14 cell types (string, number, boolean, date, datetime, select, etc.) with extensible renderers via CellTypeRegistryCell Types
PageDescription
SpreadsheetEngine APIAll public methods on the engine orchestrator
Core TypesCellValue, CellData, CellStyle, ColumnDef, CellRange, etc.
Cell TypesCellTypeRegistry, built-in and custom type renderers