brush merge by Fil · Pull Request #2370 · observablehq/plot

added 6 commits

February 20, 2026 11:56
Rationale: tip is more fundamental than brush, and other interactions (such as lasso) will want to do the same

@Fil Fil mentioned this pull request

Feb 20, 2026

@Fil

# Conflicts:
#	src/interactions/brush.d.ts
#	src/interactions/brush.js
#	test/plots/brush.ts
# Conflicts:
#	docs/interactions/brush.md

@Fil

@Fil

@Fil Fil changed the base branch from fil/brush-dataless to fil/brush-data-options

February 24, 2026 15:02

@Fil Fil changed the base branch from fil/brush-data-options to fil/brush-across-facets

February 24, 2026 15:02

@Fil Fil changed the base branch from fil/brush-across-facets to fil/brush-data-options

February 24, 2026 15:03

@Fil

# Conflicts:
#	src/interactions/brush.js
#	test/plots/brush.ts
it needs to be an object since context gets spread  in src/interactions/pointer.js:25

@Fil

# Conflicts:
#	docs/interactions/brush.md
#	src/interactions/brush.d.ts

@Fil

# Conflicts:
#	docs/interactions/brush.md

@Fil

# Conflicts:
#	docs/interactions/brush.md
#	src/interactions/brush.d.ts
#	test/brush-test.ts

Fil and others added 2 commits

March 3, 2026 11:22
Combines multi-plot brush reuse (per-plot state via context.interaction,
cross-plot sync in data space, WeakMap-based renderFilter updates) with
data/styling support (brush(data, options), filterData, applyAttr).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Combines multi-plot brush reuse with data/styling support and
brush-across-facets (context.interaction.brushing flag).
Plot.brush() without data should not call maybeTuple, which would set
default channel accessors and require scales to exist.

@Fil

@Fil