@sheetpane/grid 0.4.2 → 0.5.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.
@@ -1,11 +1,11 @@
1
1
  # sheetpane — the full public contract
2
2
 
3
- > Everything llms.txt links to, inlined: the package READMEs, the docs, the laws and the component records. Version 0.4.2; links pinned to v0.4.2.
3
+ > Everything llms.txt links to, inlined: the package READMEs, the docs, the laws and the component records. Version 0.5.0; links pinned to v0.5.0.
4
4
 
5
5
 
6
6
  ---
7
7
 
8
- <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/README.md) -->
8
+ <!-- source: README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/README.md) -->
9
9
 
10
10
  <div align="center">
11
11
 
@@ -269,7 +269,7 @@ the evidence**. Start at [`CLAUDE.md`](CLAUDE.md) if you are one.
269
269
 
270
270
  ---
271
271
 
272
- <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/grid/README.md) -->
272
+ <!-- source: packages/grid/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/grid/README.md) -->
273
273
 
274
274
  # @sheetpane/grid
275
275
 
@@ -986,7 +986,7 @@ The specs are the records [SR-GRID](../../records/0105_GRID.md) and
986
986
 
987
987
  ---
988
988
 
989
- <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/export/README.md) -->
989
+ <!-- source: packages/export/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/export/README.md) -->
990
990
 
991
991
  # @sheetpane/export
992
992
 
@@ -1202,7 +1202,7 @@ The spec is the record [SR-EXPORT](../../records/0103_EXPORT.md).
1202
1202
 
1203
1203
  ---
1204
1204
 
1205
- <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/import/README.md) -->
1205
+ <!-- source: packages/import/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/import/README.md) -->
1206
1206
 
1207
1207
  # @sheetpane/import
1208
1208
 
@@ -1269,7 +1269,7 @@ The spec is the record [SR-IMPORT](../../records/0104_IMPORT.md).
1269
1269
 
1270
1270
  ---
1271
1271
 
1272
- <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/numfmt/README.md) -->
1272
+ <!-- source: packages/numfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/numfmt/README.md) -->
1273
1273
 
1274
1274
  # @sheetpane/numfmt
1275
1275
 
@@ -1380,7 +1380,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1380
1380
 
1381
1381
  ---
1382
1382
 
1383
- <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/formulas/README.md) -->
1383
+ <!-- source: packages/formulas/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/formulas/README.md) -->
1384
1384
 
1385
1385
  # @sheetpane/formulas
1386
1386
 
@@ -1493,7 +1493,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1493
1493
 
1494
1494
  ---
1495
1495
 
1496
- <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/styles/README.md) -->
1496
+ <!-- source: packages/styles/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/styles/README.md) -->
1497
1497
 
1498
1498
  # @sheetpane/styles
1499
1499
 
@@ -1599,7 +1599,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1599
1599
 
1600
1600
  ---
1601
1601
 
1602
- <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/validation/README.md) -->
1602
+ <!-- source: packages/validation/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/validation/README.md) -->
1603
1603
 
1604
1604
  # @sheetpane/validation
1605
1605
 
@@ -1830,7 +1830,7 @@ the rule rows when you need them.
1830
1830
 
1831
1831
  ---
1832
1832
 
1833
- <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/condfmt/README.md) -->
1833
+ <!-- source: packages/condfmt/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/condfmt/README.md) -->
1834
1834
 
1835
1835
  # @sheetpane/condfmt
1836
1836
 
@@ -1948,7 +1948,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
1948
1948
 
1949
1949
  ---
1950
1950
 
1951
- <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/images/README.md) -->
1951
+ <!-- source: packages/images/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/images/README.md) -->
1952
1952
 
1953
1953
  # @sheetpane/images
1954
1954
 
@@ -2034,7 +2034,7 @@ LibreOffice are owed by W-30.
2034
2034
 
2035
2035
  ---
2036
2036
 
2037
- <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/charts/README.md) -->
2037
+ <!-- source: packages/charts/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/charts/README.md) -->
2038
2038
 
2039
2039
  # @sheetpane/charts
2040
2040
 
@@ -2168,7 +2168,7 @@ How plugins plug in: [`work/compare/plugins.compare.md`](../../work/compare/plug
2168
2168
 
2169
2169
  ---
2170
2170
 
2171
- <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/comments/README.md) -->
2171
+ <!-- source: packages/comments/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/comments/README.md) -->
2172
2172
 
2173
2173
  # @sheetpane/comments
2174
2174
 
@@ -2308,7 +2308,7 @@ Spec: [`work/open/W-22-comments.md`](../../work/open/W-22-comments.md).
2308
2308
 
2309
2309
  ---
2310
2310
 
2311
- <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/visibility/README.md) -->
2311
+ <!-- source: packages/visibility/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/visibility/README.md) -->
2312
2312
 
2313
2313
  # @sheetpane/visibility
2314
2314
 
@@ -2348,7 +2348,7 @@ Spec: [SR-VISIBILITY](../../records/0121_VISIBILITY.md). MIT.
2348
2348
 
2349
2349
  ---
2350
2350
 
2351
- <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/tables/README.md) -->
2351
+ <!-- source: packages/tables/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/tables/README.md) -->
2352
2352
 
2353
2353
  # @sheetpane/tables
2354
2354
 
@@ -2395,7 +2395,7 @@ Spec: [SR-TABLES](../../records/0122_TABLES.md). MIT.
2395
2395
 
2396
2396
  ---
2397
2397
 
2398
- <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/compare/README.md) -->
2398
+ <!-- source: packages/compare/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/compare/README.md) -->
2399
2399
 
2400
2400
  # @sheetpane/compare
2401
2401
 
@@ -2467,7 +2467,7 @@ Spec: [SR-COMPARE](../../records/0124_COMPARE.md). MIT.
2467
2467
 
2468
2468
  ---
2469
2469
 
2470
- <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/review/README.md) -->
2470
+ <!-- source: packages/review/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/review/README.md) -->
2471
2471
 
2472
2472
  # @sheetpane/review
2473
2473
 
@@ -2599,7 +2599,7 @@ Spec: [SR-REVIEW](../../records/0123_REVIEW.md). MIT.
2599
2599
 
2600
2600
  ---
2601
2601
 
2602
- <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/fixtures/README.md) -->
2602
+ <!-- source: packages/fixtures/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/fixtures/README.md) -->
2603
2603
 
2604
2604
  # @sheetpane/fixtures
2605
2605
 
@@ -2639,7 +2639,7 @@ The spec is the record [SR-FIXTURES](../../records/0115_FIXTURES.md).
2639
2639
 
2640
2640
  ---
2641
2641
 
2642
- <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/testing/README.md) -->
2642
+ <!-- source: packages/testing/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/testing/README.md) -->
2643
2643
 
2644
2644
  # @sheetpane/testing
2645
2645
 
@@ -2689,7 +2689,7 @@ The spec is the record [SR-TESTING](../../records/0118_TESTING.md).
2689
2689
 
2690
2690
  ---
2691
2691
 
2692
- <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/skills/README.md) -->
2692
+ <!-- source: packages/skills/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/skills/README.md) -->
2693
2693
 
2694
2694
  # @sheetpane/skills
2695
2695
 
@@ -2760,7 +2760,7 @@ the elements do not have. The spec is the record
2760
2760
 
2761
2761
  ---
2762
2762
 
2763
- <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/packages/mcp/README.md) -->
2763
+ <!-- source: packages/mcp/README.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/packages/mcp/README.md) -->
2764
2764
 
2765
2765
  # @sheetpane/mcp
2766
2766
 
@@ -2801,7 +2801,7 @@ Spec: [SR-MCP](../../records/0119_MCP.md). MIT.
2801
2801
 
2802
2802
  ---
2803
2803
 
2804
- <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ARCHITECTURE.md) -->
2804
+ <!-- source: docs/ARCHITECTURE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/ARCHITECTURE.md) -->
2805
2805
 
2806
2806
  # sheetpane — architecture
2807
2807
 
@@ -3040,7 +3040,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3040
3040
 
3041
3041
  ---
3042
3042
 
3043
- <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/GLOSSARY.md) -->
3043
+ <!-- source: docs/GLOSSARY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/GLOSSARY.md) -->
3044
3044
 
3045
3045
  # Glossary
3046
3046
 
@@ -3081,7 +3081,7 @@ How it is all tested — Vitest, real browsers, fixtures, goldens — is the
3081
3081
 
3082
3082
  ---
3083
3083
 
3084
- <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/docs/ERRORS.md) -->
3084
+ <!-- source: docs/ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/docs/ERRORS.md) -->
3085
3085
 
3086
3086
  # Error codes
3087
3087
 
@@ -4162,7 +4162,7 @@ throws: each problem is one `note` error, `author: 'host'`, with its `code`.
4162
4162
 
4163
4163
  ---
4164
4164
 
4165
- <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0001_LAWS.md) -->
4165
+ <!-- source: records/0001_LAWS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0001_LAWS.md) -->
4166
4166
 
4167
4167
  # SR-LAWS — the laws have exactly one home each
4168
4168
 
@@ -4211,6 +4211,8 @@ A law restated in two places is two laws the moment one is edited.
4211
4211
  | **L9** | [SR-LAW-9](0011_LAW-9-memory-is-a-javascript-object.md) | memory means a JavaScript object, for now |
4212
4212
  | **L10** | [SR-LAW-10](0012_LAW-10-examples-maintained.md) | the examples are maintained with every package change |
4213
4213
  | **L11** | [SR-LAW-11](0013_LAW-11-workbook-stays-in-the-browser.md) | the workbook never leaves the browser |
4214
+ | **L12** | [SR-LAW-12](0014_LAW-12-every-plugin-in-the-demos.md) | every plugin is in the demos, and All plugins has them all |
4215
+ | **L13** | [SR-LAW-13](0015_LAW-13-popups-always-visible.md) | every dropdown is wholly visible, inside the viewport, on top |
4214
4216
 
4215
4217
  2. **A new law** takes the next handle and the next free number in the law
4216
4218
  range, on the decider's ruling named in its record; this table gains its row and
@@ -4248,7 +4250,7 @@ carries a law's normative text.
4248
4250
 
4249
4251
  ---
4250
4252
 
4251
- <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0002_LAW-0-authority.md) -->
4253
+ <!-- source: records/0002_LAW-0-authority.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0002_LAW-0-authority.md) -->
4252
4254
 
4253
4255
  # SR-LAW-0 — L0, the records are the only source of truth
4254
4256
 
@@ -4364,7 +4366,7 @@ is never listed here.*
4364
4366
 
4365
4367
  ---
4366
4368
 
4367
- <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0003_LAW-1-retired-records-archived.md) -->
4369
+ <!-- source: records/0003_LAW-1-retired-records-archived.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0003_LAW-1-retired-records-archived.md) -->
4368
4370
 
4369
4371
  # SR-LAW-1 — L1, a retired record is archived, never deleted
4370
4372
 
@@ -4457,7 +4459,7 @@ is never listed here.*
4457
4459
 
4458
4460
  ---
4459
4461
 
4460
- <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0004_LAW-2-foss-dependencies.md) -->
4462
+ <!-- source: records/0004_LAW-2-foss-dependencies.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0004_LAW-2-foss-dependencies.md) -->
4461
4463
 
4462
4464
  # SR-LAW-2 — L2, every dependency is free and open source
4463
4465
 
@@ -4566,7 +4568,7 @@ is never listed here.*
4566
4568
 
4567
4569
  ---
4568
4570
 
4569
- <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4571
+ <!-- source: records/0005_LAW-3-xlsx-and-csv-only.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0005_LAW-3-xlsx-and-csv-only.md) -->
4570
4572
 
4571
4573
  # SR-LAW-3 — L3, sheetpane supports XLSX and CSV only
4572
4574
 
@@ -4679,7 +4681,7 @@ is never listed here.*
4679
4681
 
4680
4682
  ---
4681
4683
 
4682
- <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0006_LAW-4-web-component.md) -->
4684
+ <!-- source: records/0006_LAW-4-web-component.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0006_LAW-4-web-component.md) -->
4683
4685
 
4684
4686
  # SR-LAW-4 — L4, sheetpane is always a web component
4685
4687
 
@@ -4799,7 +4801,7 @@ is never listed here.*
4799
4801
 
4800
4802
  ---
4801
4803
 
4802
- <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0007_LAW-5-host-font.md) -->
4804
+ <!-- source: records/0007_LAW-5-host-font.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0007_LAW-5-host-font.md) -->
4803
4805
 
4804
4806
  # SR-LAW-5 — L5, the font is the browser's default unless the host sets one
4805
4807
 
@@ -4918,7 +4920,7 @@ is never listed here.*
4918
4920
 
4919
4921
  ---
4920
4922
 
4921
- <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4923
+ <!-- source: records/0008_LAW-6-edits-in-memory-export-with-changes.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0008_LAW-6-edits-in-memory-export-with-changes.md) -->
4922
4924
 
4923
4925
  # SR-LAW-6 — L6, every change is held in memory and export carries it
4924
4926
 
@@ -5029,7 +5031,7 @@ is never listed here.*
5029
5031
 
5030
5032
  ---
5031
5033
 
5032
- <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5034
+ <!-- source: records/0009_LAW-7-surfaces-always-in-sync.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0009_LAW-7-surfaces-always-in-sync.md) -->
5033
5035
 
5034
5036
  # SR-LAW-7 — L7, the view, edit and error components are always in sync
5035
5037
 
@@ -5138,7 +5140,7 @@ is never listed here.*
5138
5140
 
5139
5141
  ---
5140
5142
 
5141
- <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0010_LAW-8-npm-package.md) -->
5143
+ <!-- source: records/0010_LAW-8-npm-package.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0010_LAW-8-npm-package.md) -->
5142
5144
 
5143
5145
  # SR-LAW-8 — L8, sheetpane is consumed as an npm package
5144
5146
 
@@ -5247,7 +5249,7 @@ is never listed here.*
5247
5249
 
5248
5250
  ---
5249
5251
 
5250
- <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5252
+ <!-- source: records/0011_LAW-9-memory-is-a-javascript-object.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0011_LAW-9-memory-is-a-javascript-object.md) -->
5251
5253
 
5252
5254
  # SR-LAW-9 — L9, memory means a JavaScript object, for now
5253
5255
 
@@ -5345,7 +5347,7 @@ is never listed here.*
5345
5347
 
5346
5348
  ---
5347
5349
 
5348
- <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0101_DOWNLOAD.md) -->
5350
+ <!-- source: records/0101_DOWNLOAD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0101_DOWNLOAD.md) -->
5349
5351
 
5350
5352
  # SR-DOWNLOAD — download(): export output in, a saved .xlsx or .csv out
5351
5353
 
@@ -5591,7 +5593,7 @@ is never listed here.*
5591
5593
 
5592
5594
  ---
5593
5595
 
5594
- <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0102_BUILD.md) -->
5596
+ <!-- source: records/0102_BUILD.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0102_BUILD.md) -->
5595
5597
 
5596
5598
  # SR-BUILD — the monorepo build
5597
5599
 
@@ -5861,16 +5863,16 @@ pnpm and a justfile; the testing verdict chose the runner.
5861
5863
  installs both from `pnpm pack` tarballs (every package, the eight plugins
5862
5864
  included) outside the workspace and runs the same check — `just
5863
5865
  demo-packed`, nightly. Both share one look (2026-10-19): a host bar
5864
- (Views, Open file…, the CSV sample, the pop-up, Font, and Theme — light ·
5866
+ (Open file…, the CSV sample, the pop-up, Font, and Theme — light ·
5865
5867
  dark · auto, set on every component), the components filling the window,
5866
5868
  and a footer of host events (the `sheetpane-export` line names the file,
5867
5869
  the format and the first 12 hex digits of its SHA-256, W-65);
5868
5870
  `examples/react/src/demo.css` is the
5869
- stylesheet the HTML demo inlines.
5871
+ stylesheet the HTML demo inlines. The sheet and the error list are always
5872
+ shown side by side; there is no view switch (decider, 2026-10-19).
5870
5873
  11a. **The plugin gallery (W-32):** both demos carry a second tab row —
5871
5874
  Review (the demo above) · Vanilla · Number formats · Styles · Formulas ·
5872
- Validation · Conditional formats · Images · Charts · Comments · All
5873
- plugins · Hide and show (W-49: `@sheetpane/visibility` — hide a row from
5875
+ Validation · Conditional formats · Images · Charts · Comments · Hide and show (W-49: `@sheetpane/visibility` — hide a row from
5874
5876
  its header menu, the marker unhides it) · Tables (W-61: `tables
5875
5877
  validation` on the showcase's Tables sheet — both tables in their style
5876
5878
  colours, and C9 typed "furlong" fails the list over `Units[Unit]`) · Compare (W-63:
@@ -5879,14 +5881,17 @@ pnpm and a justfile; the testing verdict chose the runner.
5879
5881
  `demo-check` reads the status line's 4 sheets · 7 rows · 2 cells, the
5880
5882
  amber price, the 7 listed changes and Alt+F5 to D4) · Review sheet (W-59:
5881
5883
  `@sheetpane/review` — the download gains a Review sheet listing the
5882
- review, flagged cells coloured) · Rules file (W-33: the showcase's rules sample — `rules-src` in
5884
+ review, flagged cells coloured) · All plugins (every plugin on one pane,
5885
+ SR-LAW-12; `test/plugins-in-demos.test.ts` fails when a package that
5886
+ calls `registerPlugin` is not imported by a demo, has no tab of its own
5887
+ or is missing from All plugins, 2026-10-19) · Rules file (W-33: the showcase's rules sample — `rules-src` in
5883
5888
  HTML, the `rules` prop in React — with `flagging="off"`). Every gallery
5884
5889
  tab opens one showcase workbook from `@sheetpane/fixtures` (SR-FIXTURES:
5885
5890
  the HTML import path `./node_modules/@sheetpane/fixtures/files/…`, a
5886
5891
  `?url` import in React; W-42) on its
5887
5892
  own `pane`, mounted when the tab first opens and kept after; a plugin's
5888
5893
  peer loads with it (condfmt with styles, charts with images). Both demos
5889
- depend on all eight plugins, and the HTML import map lists them with
5894
+ depend on every plugin, and the HTML import map lists them with
5890
5895
  `numfmt` (its ESM build, `dist/index.mjs`) and `@ironcalc/wasm`.
5891
5896
  `demo-check` asserts per tab: Vanilla plain (1.25, no overlay, no errors);
5892
5897
  1 1/4; the yellow fill; B6 recalculated; two rule errors; a data bar; the
@@ -5956,7 +5961,7 @@ is never listed here.*
5956
5961
 
5957
5962
  ---
5958
5963
 
5959
- <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0103_EXPORT.md) -->
5964
+ <!-- source: records/0103_EXPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0103_EXPORT.md) -->
5960
5965
 
5961
5966
  # SR-EXPORT — @sheetpane/export
5962
5967
 
@@ -6278,7 +6283,7 @@ is never listed here.*
6278
6283
 
6279
6284
  ---
6280
6285
 
6281
- <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0104_IMPORT.md) -->
6286
+ <!-- source: records/0104_IMPORT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0104_IMPORT.md) -->
6282
6287
 
6283
6288
  # SR-IMPORT — @sheetpane/import
6284
6289
 
@@ -6576,7 +6581,7 @@ is never listed here.*
6576
6581
 
6577
6582
  ---
6578
6583
 
6579
- <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0105_GRID.md) -->
6584
+ <!-- source: records/0105_GRID.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0105_GRID.md) -->
6580
6585
 
6581
6586
  # SR-GRID — @sheetpane/grid
6582
6587
 
@@ -6896,7 +6901,7 @@ the grid, contract, plugins and testing verdicts in `work/compare/`.
6896
6901
  every cell of it the same way (W-46). Delete or Backspace over a range
6897
6902
  clears every filled cell through `beforechange`, refused cells skipped,
6898
6903
  one undo step. Over 1,000,000 cells nothing is pasted, and the status line
6899
- says why. There is no fill gesture yet.
6904
+ says why.
6900
6905
  11b. **Range selection (W-46):** the selection is drawn by **one layer**, never
6901
6906
  per cell — over the range a fill (`--sp-accent-soft`) with the active cell
6902
6907
  left unfilled (an even-odd hole), one 2 px `--sp-accent` border on the
@@ -6983,6 +6988,43 @@ the grid, contract, plugins and testing verdicts in `work/compare/`.
6983
6988
  link is the user's act. **Copy link** joins the cell menu and the ⋯
6984
6989
  menu after Copy ref while `link="hash"` (decision 13): the page's URL
6985
6990
  with this pane's selection as its link.
6991
+ 11e. **Editing in the cell, as in Excel (Arpit, 2026-10-19):**
6992
+ - **Opening:** typing, Enter, F2 or a double press on a cell (two presses
6993
+ within 400 ms) opens an editor on the cell itself. The cell bar holds the
6994
+ same draft, so either can be typed in. The editor grows with its text up
6995
+ to the sheet's edge and follows the cell through scrolling and zoom.
6996
+ - **Keys:** Enter commits and moves down, Tab across. After a run of Tabs,
6997
+ Enter goes back to the column the run began in, a row down. Esc restores
6998
+ the value. Arrows commit and move when the draft was started by typing,
6999
+ and move the caret after Enter, F2 or a double press (F2 switches).
7000
+ Ctrl/⌘+Enter puts the entry in every shown cell of the range, one undo
7001
+ step, and keeps the selection.
7002
+ - **The fill handle (Edit):** a square at the selection's corner. Dragged,
7003
+ it extends along the axis the pointer has gone furthest, autoscrolling,
7004
+ with the last cell's value shown beside it.
7005
+ - **Numbers:** two or more make a linear series and one repeats;
7006
+ Ctrl/⌘ at release swaps the two.
7007
+ - **Text ending in a number** counts on.
7008
+ - **Formulas** shift their relative references.
7009
+ - **Anything else** cycles.
7010
+ - **Writing:** each cell goes through `beforechange`; hidden cells are
7011
+ left alone; the fill is one undo step, and the filled range is
7012
+ selected. Esc cancels.
7013
+ - **Double-click and keys:** a double-click on the handle fills down as far
7014
+ as the column beside the source has data. Ctrl+D / Ctrl+R copy the top
7015
+ row (left column) of the range over the rest, a single cell from above
7016
+ (left); formulas move.
7017
+ - **A file dropped** anywhere on a loaded sheet opens it. While it is
7018
+ dragged over, an overlay says so, and names the changes not yet
7019
+ downloaded that it would replace.
7020
+ - **An insert at the edge grows the grid:** the grid shows at least the
7021
+ rows and columns it showed, plus what was inserted (less what was deleted),
7022
+ so a column inserted right of the last one appears and takes typing.
7023
+ - **Right-click inside the range** keeps the range.
7024
+ - **Every menu and card floats** ([L13](0015_LAW-13-popups-always-visible.md)): it is shown in the
7025
+ top layer and placed inside the viewport by `excel/float.ts`. Esc closes
7026
+ the keyboard help from its button.
7027
+ - **The pure parts** (`fillSeries`, `fillDownTo`) are in `excel/fill.ts`.
6986
7028
  12. **Keyboard (APG grid):** focus stays on the `role="grid"` element and
6987
7029
  `aria-activedescendant` names the active cell; arrows, Shift+arrows,
6988
7030
  Home/End, Ctrl+Home/End, PageUp/PageDown; Ctrl/⌘+arrow jumps to the edge
@@ -6990,8 +7032,8 @@ the grid, contract, plugins and testing verdicts in `work/compare/`.
6990
7032
  the column, Shift+Space the row; Ctrl/⌘+A the data region, again the
6991
7033
  sheet; Shift+Backspace collapses to the active cell; inside a range Enter,
6992
7034
  Shift+Enter, Tab and Shift+Tab move the active cell within it and wrap;
6993
- otherwise Enter or F2 edits; a printable
6994
- key replaces the cell; Delete clears (a range: decision 11a); F flags; Esc
7035
+ otherwise Enter or F2 edits in the cell, and a printable key replaces it
7036
+ (decision 11e); Ctrl+D / Ctrl+R fill down / right; Delete clears (a range: decision 11a); F flags; Esc
6995
7037
  cancels the innermost thing — a drag, a menu, the form, find, the copied
6996
7038
  outline, a resize, the header menu — or closes the pop-up; Alt+Shift+↓ /
6997
7039
  ↑ expands or collapses the row group at the active cell (W-49); arrows
@@ -7728,7 +7770,7 @@ is never listed here.*
7728
7770
 
7729
7771
  ---
7730
7772
 
7731
- <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0106_ERRORS.md) -->
7773
+ <!-- source: records/0106_ERRORS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0106_ERRORS.md) -->
7732
7774
 
7733
7775
  # SR-ERRORS — <sheetpane-errors>
7734
7776
 
@@ -8048,7 +8090,7 @@ is never listed here.*
8048
8090
 
8049
8091
  ---
8050
8092
 
8051
- <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0107_IMAGES.md) -->
8093
+ <!-- source: records/0107_IMAGES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0107_IMAGES.md) -->
8052
8094
 
8053
8095
  # SR-IMAGES — @sheetpane/images
8054
8096
 
@@ -8176,7 +8218,7 @@ is never listed here.*
8176
8218
 
8177
8219
  ---
8178
8220
 
8179
- <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0108_VALIDATION.md) -->
8221
+ <!-- source: records/0108_VALIDATION.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0108_VALIDATION.md) -->
8180
8222
 
8181
8223
  # SR-VALIDATION — @sheetpane/validation
8182
8224
 
@@ -8428,7 +8470,7 @@ is never listed here.*
8428
8470
 
8429
8471
  ---
8430
8472
 
8431
- <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0109_NUMFMT.md) -->
8473
+ <!-- source: records/0109_NUMFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0109_NUMFMT.md) -->
8432
8474
 
8433
8475
  # SR-NUMFMT — @sheetpane/numfmt
8434
8476
 
@@ -8564,7 +8606,7 @@ is never listed here.*
8564
8606
 
8565
8607
  ---
8566
8608
 
8567
- <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0110_STYLES.md) -->
8609
+ <!-- source: records/0110_STYLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0110_STYLES.md) -->
8568
8610
 
8569
8611
  # SR-STYLES — @sheetpane/styles
8570
8612
 
@@ -8730,7 +8772,7 @@ is never listed here.*
8730
8772
 
8731
8773
  ---
8732
8774
 
8733
- <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0111_FORMULAS.md) -->
8775
+ <!-- source: records/0111_FORMULAS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0111_FORMULAS.md) -->
8734
8776
 
8735
8777
  # SR-FORMULAS — @sheetpane/formulas
8736
8778
 
@@ -8900,7 +8942,7 @@ is never listed here.*
8900
8942
 
8901
8943
  ---
8902
8944
 
8903
- <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0112_COMMENTS.md) -->
8945
+ <!-- source: records/0112_COMMENTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0112_COMMENTS.md) -->
8904
8946
 
8905
8947
  # SR-COMMENTS — @sheetpane/comments
8906
8948
 
@@ -9073,7 +9115,7 @@ is never listed here.*
9073
9115
 
9074
9116
  ---
9075
9117
 
9076
- <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0113_CHARTS.md) -->
9118
+ <!-- source: records/0113_CHARTS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0113_CHARTS.md) -->
9077
9119
 
9078
9120
  # SR-CHARTS — @sheetpane/charts
9079
9121
 
@@ -9225,7 +9267,7 @@ is never listed here.*
9225
9267
 
9226
9268
  ---
9227
9269
 
9228
- <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0114_CONDFMT.md) -->
9270
+ <!-- source: records/0114_CONDFMT.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0114_CONDFMT.md) -->
9229
9271
 
9230
9272
  # SR-CONDFMT — @sheetpane/condfmt
9231
9273
 
@@ -9378,7 +9420,7 @@ is never listed here.*
9378
9420
 
9379
9421
  ---
9380
9422
 
9381
- <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0115_FIXTURES.md) -->
9423
+ <!-- source: records/0115_FIXTURES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0115_FIXTURES.md) -->
9382
9424
 
9383
9425
  # SR-FIXTURES — @sheetpane/fixtures
9384
9426
 
@@ -9530,7 +9572,7 @@ is never listed here.*
9530
9572
 
9531
9573
  ---
9532
9574
 
9533
- <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0116_SKILLS.md) -->
9575
+ <!-- source: records/0116_SKILLS.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0116_SKILLS.md) -->
9534
9576
 
9535
9577
  # SR-SKILLS — @sheetpane/skills
9536
9578
 
@@ -9724,7 +9766,7 @@ is never listed here.*
9724
9766
 
9725
9767
  ---
9726
9768
 
9727
- <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0117_CODES.md) -->
9769
+ <!-- source: records/0117_CODES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0117_CODES.md) -->
9728
9770
 
9729
9771
  # SR-CODES — stable error codes
9730
9772
 
@@ -9893,7 +9935,7 @@ is never listed here.*
9893
9935
 
9894
9936
  ---
9895
9937
 
9896
- <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0118_TESTING.md) -->
9938
+ <!-- source: records/0118_TESTING.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0118_TESTING.md) -->
9897
9939
 
9898
9940
  # SR-TESTING — @sheetpane/testing
9899
9941
 
@@ -9995,7 +10037,7 @@ is never listed here.*
9995
10037
 
9996
10038
  ---
9997
10039
 
9998
- <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0119_MCP.md) -->
10040
+ <!-- source: records/0119_MCP.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0119_MCP.md) -->
9999
10041
 
10000
10042
  # SR-MCP — @sheetpane/mcp
10001
10043
 
@@ -10176,7 +10218,7 @@ is never listed here.*
10176
10218
 
10177
10219
  ---
10178
10220
 
10179
- <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0121_VISIBILITY.md) -->
10221
+ <!-- source: records/0121_VISIBILITY.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0121_VISIBILITY.md) -->
10180
10222
 
10181
10223
  # SR-VISIBILITY — @sheetpane/visibility
10182
10224
 
@@ -10290,7 +10332,7 @@ is never listed here.*
10290
10332
 
10291
10333
  ---
10292
10334
 
10293
- <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0122_TABLES.md) -->
10335
+ <!-- source: records/0122_TABLES.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0122_TABLES.md) -->
10294
10336
 
10295
10337
  # SR-TABLES — @sheetpane/tables
10296
10338
 
@@ -10412,7 +10454,7 @@ is never listed here.*
10412
10454
 
10413
10455
  ---
10414
10456
 
10415
- <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0123_REVIEW.md) -->
10457
+ <!-- source: records/0123_REVIEW.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0123_REVIEW.md) -->
10416
10458
 
10417
10459
  # SR-REVIEW — @sheetpane/review
10418
10460
 
@@ -10611,7 +10653,7 @@ is never listed here.*
10611
10653
 
10612
10654
  ---
10613
10655
 
10614
- <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.4.2/records/0124_COMPARE.md) -->
10656
+ <!-- source: records/0124_COMPARE.md (https://github.com/arpitarya/sheetpane/blob/v0.5.0/records/0124_COMPARE.md) -->
10615
10657
 
10616
10658
  # SR-COMPARE — @sheetpane/compare
10617
10659