V4 feature status
Public APIs, style properties, layouts and capabilities, including v3 gaps and replacements. V4 is unreleased. Implemented means available in this prototype, not release-ready.
Priority areas appear first: performance, developer experience, Cytoscape Web v2, application workflows and core capabilities. Read the feature-direction review for the reasoning. Proposed rows are suggestions, not roadmap commitments.
API rows use eles. for collections, single elements, nodes and edges. Aliases have separate rows; overloads share a row. Comments describe v4 behaviour, not a promise of complete v3 compatibility.
Download CSV — the complete inventory, including comments and source references. Maintained with feature changes; the build stamp identifies this snapshot.
Status definitions
- Implemented
- Available in the current v4 prototype; not a release-readiness claim.
- Partial
- Available with the limitations described in Comments.
- Planned
- Explicitly scheduled or scoped in the development record; not implemented.
- Proposed
- Suggested by the feature-direction review; not an approved scope or commitment.
- Not implemented
- Absent from the public v4 surface; no implementation commitment recorded.
- Replaced
- Use the v4 alternative named in Comments.
- Excluded
- Deliberately outside v4 scope, according to a recorded decision.
- Undecided
- An open design or scope decision remains.
925 of 925 features
| Category | Feature | Status | Comments | Reference |
|---|---|---|---|---|
| Performance | Core operations versus v3 | Implemented | Archived 2026-09-02 run: 269 matched p50 pairs, 10.70x geometric-mean speedup; slowest ratio 1.02x. Same-machine benchmark evidence, not a universal application speedup. | Source |
| Performance | Rendering versus v3 | Implemented | Archived 2026-09-02 run: 104 matched p50 pairs, 31.21x geometric mean. Includes different rendering operations, not a single FPS claim; wall time and GPU device time are distinct. | Source |
| Performance | GPU algorithms versus v4 CPU | Partial | Archived 2026-09-02 run: 57 matched warm p50 pairs, 7.73x geometric mean, with individual GPU regressions. This baseline is v4 CPU, not v3; first-call cost is reported separately. | Source |
| Performance | GPU algorithm bottleneck removal | Planned | Sparse matrix operations, affinity propagation and closeness follow-ups target measured bottlenecks; GPU availability alone does not imply a speedup. | Source |
| Performance | CPU algorithms without blocking interaction | Planned | Worker-pool executor aims to keep CPU work off the UI thread; measure transfer overhead and crossover size as well as throughput. | Source |
| Performance | First frame during progressive loading | Planned | Chunked ingestion targets time to first useful frame, separately from total load time and peak memory. | Source |
| Performance | Loading and snapshot copy budget | Planned | Inventory copies and their purpose before removing them; zero-copy is not an end-to-end guarantee. | Source |
| Performance | Worker-hosted rendering | Partial | OffscreenCanvas host exists; image forwarding, page fonts and GPU force/tween proxy work remain limitations. Measure main-thread responsiveness separately from draw throughput. | Source |
| Performance | Application interaction latency budgets | Proposed | Measure p95 input-to-visible-update during load, selection, filtering, dragging and layout on pinned Cytoscape Web, EnrichmentMap and GeneMANIA fixtures; agree budgets from results. | Record |
| Performance | Chart-heavy and blob-heavy scene budgets | Proposed | Measure frame time, first paint and memory across slice count, chart kind, hull membership and overlap before increasing visual complexity; retain a plain-node control. | Record |
| Performance | Large-graph memory ceiling and graceful degradation | Undecided | Scale-ceiling bisection and VRAM budgets are open ideas; establish CPU/GPU memory ceilings and allocation-failure behaviour, rather than claiming million-node support. | Record |
| Performance | Long-session renderer stability | Undecided | Hours-long mutation, animation and lifecycle soak plus allocation accounting remains an open follow-up; existing device-loss recovery does not establish leak-free long sessions. | Record |
| Performance | Performance regression budgets by workload | Proposed | Define per-workload thresholds using stable same-machine runs, including cold start, memory and tail latency; a favourable overall mean must not hide an app-critical regression. | Record |
| Developer experience | Builtin layouts for major audited use cases | Implemented | Organic force, layered flow, radial/tree, circular/concentric, grid, preset and random are built in. Round 122 audited Cytoscape Web and EnrichmentMap; this is bounded coverage, not every graph-drawing problem. | Source |
| Developer experience | Component packing without an external plugin | Implemented | Discrete layouts can pack components; pack preserves existing component drawings. Covers disconnected enrichment networks and removes the need for an app-owned packer. | Source |
| Developer experience | One force layout for constraints and packing | Implemented | Force combines constraints, per-edge lengths and grouped/ordered packing; the audited EnrichmentMap workflow no longer needs several layout/packing stages. Migration is not v3 option compatibility. | Source |
| Developer experience | Layout quality audit & iteration | Partial | Round 125 carried the audit out: one sub-round per layout plus packing and the page, each with its fixtures, baselines, pictures and fixes on the record (label measurement before the first frame, forces tidy shapes under separation, flows per-side extents and free-singleton placement, breadthfirsts pixel sizing, the stacking shelf, presets half positions, randoms seed, condense on circle and radial). The first sitting pass signed off preset and random and shipped radial's true-root default; the rest is deferred to page sittings that wait on the page exposing each layout's options (125.11). Stays Partial until those sittings are recorded. | Source |
| Developer experience | Choose a layout by task | Proposed | Provide a short task-to-layout guide and examples for similarity networks, hierarchies, score rings and saved positions, with cost and quality tradeoffs; avoid a new opaque auto-layout API initially. | Record |
| Developer experience | Measure consumer simplification | Proposed | Port representative app tasks and compare setup steps, dependencies, custom glue, error diagnosis and migration effort against v3; fewer API names alone do not prove easier development. | Record |
| Developer experience | Typed application data | Undecided | Element-data generics are an open idea: carry app field types through queries and mappers, while preserving a practical dynamic-data escape hatch. | Record |
| Developer experience | Migration automation | Undecided | A v3-to-v4 codemod is an open idea; automate safe rewrites and flag semantic changes rather than silently translating incompatible selectors or style functions. | Record |
| Developer experience | Framework lifecycle integration | Undecided | React-first bindings are an open idea; focus on mount/unmount, controlled updates and batching before proliferating framework wrappers. | Record |
| Developer experience | Id-stable incremental app updates | Planned | Reconcile fresh payloads by ID while preserving unchanged state; intended to reduce hand-written add/remove/update diffs. | Source |
| Developer experience | Linked-view state contract | Proposed | Define how selection and viewport synchronization compose with planned viewer cloning; test independent view styles and prevent feedback loops without requiring shared mutable renderer state. | Record |
| Cytoscape Web v2 | Pie, stripe and donut node summaries | Implemented | Existing chart family includes a hole for donut rendering and 16 slices; new chart work should not count donut as an absent capability. | Source |
| Cytoscape Web v2 | Heat-strip node charts | Planned | Scoped compact per-value heat colours for multivariate data; distinct from percentage-based stripe charts. | Source |
| Cytoscape Web v2 | Radial-heat node charts | Planned | Scoped equal-angle sectors with value-driven colours; not a two-dimensional heat grid. | Source |
| Cytoscape Web v2 | Signed bar node charts | Planned | Scoped bars for signed values such as enrichment scores; current percentage slices skip negatives and cannot express this faithfully. | Source |
| Cytoscape Web v2 | Declarative chart colour scales | Planned | Scoped compiled per-value colour scale so consumers need not generate per-node colour arrays or function styles. | Source |
| Cytoscape Web v2 | More than 16 chart slices | Planned | Round 80 records a 26-slice desktop/web mismatch and proposes measuring a ceiling of 64; the increased limit is not implemented or a performance promise. | Source |
| Cytoscape Web v2 | Desktop/web portable visual-style subset | Proposed | Define a versioned subset for mappings, node/edge geometry, charts and labels with fixture-based visual checks and explicit unsupported-property diagnostics; avoid promising pixel parity for every desktop style. | Record |
| Cytoscape Web v2 | CX2 translation in core | Excluded | Recorded boundary keeps CX2 import/export in an extension. Portable rendering semantics and adapter conformance can improve without embedding the entire exchange format in core. | Source |
| Cytoscape Web v2 | Portable-style adapter conformance | Proposed | Use small desktop/web style fixtures to test adapter translation, degradation reports and export fidelity; keep provenance and unsupported semantics visible instead of silently dropping them. | Record |
| Cytoscape Web v2 | Picked and exportable annotations | Planned | World-space annotations target reusable in-graph explanatory graphics, with picking and export integration; avoid separate app canvas overlays. | Source |
| Cytoscape Web v2 | Scalable attribute-table filtering | Planned | Column-view and filter affordances target coordinated table/network exploration; keep data transfer and selection costs measurable. | Source |
| Application workflows | EnrichmentMap convex cluster regions | Planned | Native padded rounded convex hulls keyed by node data aim to replace bubble-region emulation. Round 82 v1 has no hull picking and is not an organic concave bubble-set renderer. | Source |
| Application workflows | EnrichmentMap organic blob regions | Undecided | Round 82 records GPU SDF unions of member discs and intra-cluster capsules as a later candidate; measure overlap readability and membership cost. CPU concave bubble fields were rejected for performance. | Source |
| Application workflows | Overlapping cluster membership | Proposed | Explore multiple memberships only if app fixtures require them; current planned scalar group keys partition nodes. Define selection, overlap and export semantics before adding geometry. | Record |
| Application workflows | Compound collapse with aggregate edges | Planned | Collapse compound parents using proxies and derived meta-edges with counts/requested sums; v1 collapse state is session-only. Data-key group collapse is a later helper, not the same delivered feature. | Source |
| Application workflows | GeneMANIA large parallel-edge bundles | Planned | Fixture-led work targets many evidence channels between a pair of genes; existing parallel edges do not establish acceptable cost at GeneMANIA bundle widths. | Source |
| Application workflows | Evidence-channel exploration | Proposed | Provide a GeneMANIA-style example combining channel filtering, selection and aggregate-edge summaries; validate identity/provenance preservation before considering more core API. | Record |
| Application workflows | Priority-aware label decluttering | Planned | Scoped collision and priority handling for dense networks; app-selected or important genes should remain understandable at scale. | Source |
| Application workflows | Transient neighbourhood emphasis | Planned | Scoped hover highlighting without stylesheet mutation can remove common app glue and repeated restyling costs. | Source |
| Application workflows | Biological fixture acceptance suite | Proposed | Version representative enrichment clusters, signed scores, multichannel gene edges and compound hierarchies; assess visual meaning, interaction and performance together, not just synthetic graph counts. | Record |
| Core capabilities | Semantic zoom | Proposed | Change the information shown with zoom: summaries at overview scale, individual nodes and edges at intermediate scales, and labels, charts and evidence details up close. Define declarative detail thresholds and measure transition cost and interaction latency. | Record |
| Core capabilities | Semantic zoom for compounds | Proposed | Sub-feature of semantic zoom: zoom in to reveal a compound's children, recursively for nested compounds; zoom out to return to parent summaries. Define edge aggregation, selection preservation and stable reveal/hide thresholds; coordinate with the planned collapse proxies. | Record |
| Core capabilities | Extension-to-core selection criteria | Proposed | Promote widely reusable graph/rendering primitives when shared implementation removes app glue and passes cost budgets. Keep domain formats and application UI in adapters/examples unless evidence justifies core scope. | Record |
| Core capabilities | Lasso and reusable spatial queries | Undecided | Open idea for irregular-region selection and app hit testing; establish coordinate, visibility and performance contracts before growing the gesture surface. | Record |
| Core capabilities | Undoable graph edits | Undecided | Snapshots versus inverse operations remain open; define batch transaction semantics and memory limits before promising a general undo stack. | Record |
| Core capabilities | Keyboard and assistive-technology navigation | Undecided | Keyboard focus, ARIA exposure and reduced-motion behaviour remain open ideas; preserve meaningful access when the graph has too many nodes for one DOM item per element. | Record |
| Core capabilities | International labels | Undecided | CJK coverage, then shaping/bidi and emoji, require explicit font and dependency choices; present label rendering does not establish complete language coverage. | Record |
| Core capabilities | Portable saved-session contract | Proposed | Build a versioned app-level round-trip fixture for graph, styles, positions and documented transient omissions on top of existing binary APIs; do not conflate serialization support with cross-version session compatibility. | Record |
| Algorithms | GPU algorithm performance follow-ups | Planned | Sparse SpMV, affinity-propagation memory access, unweighted closeness and normalized heat Laplacians remain scoped follow-ups. Existing algorithms work. | Source |
| Algorithms | Worker-pool CPU executor | Planned | Scoped CPU worker pool and workers executor; current CPU execution has no worker-pool option. | Source |
| Animation | Animation queue | Replaced | Sequence using animation promises; there is no queue. | Record |
| Animation | Channel animation and transitions | Implemented | Disjoint channels compose, conflicts replace; promise sequencing, pause/resume/reverse and style transitions. | Record |
| API | ani.apply | Excluded | Applying without playback and scrubbing were excluded from the v4 animation handle. Use play(), pause(), resume() and reverse(). | Record |
| API | ani.applying | Excluded | Applying without playback and scrubbing were excluded from the v4 animation handle. Use play(), pause(), resume() and reverse(). | Record |
| API | ani.complete | Replaced | Use ani.promise() to observe completion. The v3 spelling is not public in v4. | Record |
| API | ani.completed | Replaced | Use ani.promise() to observe completion. The v3 spelling is not public in v4. | Record |
| API | ani.pause | Implemented | Round 24.3: freeze in place; the paused span leaves the timeline. | Source |
| API | ani.paused | Implemented | Whether the animation is paused (round 24.3). | Source |
| API | ani.play | Implemented | Enqueue and start. | Source |
| API | ani.playing | Implemented | Whether the animation is running and not paused. | Source |
| API | ani.progress | Partial | Read elapsed fraction; the v3 setter/scrubbing form is excluded. | Source |
| API | ani.promise | Implemented | The completion promise. | Source |
| API | ani.resume | Implemented | Resume a paused animation with the clock shifted (round 24.3). | Source |
| API | ani.reverse | Implemented | Swap the tween's ends with elapsed remapped (round 24.3). | Source |
| API | ani.run | Replaced | Use ani.play(). The v3 spelling is not public in v4. | Record |
| API | ani.running | Replaced | Use ani.playing(). The v3 spelling is not public in v4. | Record |
| API | ani.stop | Implemented | Stop in place, or at the targets with jumpToEnd. | Source |
| API | ctx.boundingBox | Implemented | The scope's current bounding box, labels included. | Source |
| API | ctx.components | Implemented | The scope's connected components over nodeSlots() (round 114.4, factored out of packComponents for layouts that pack their own arrays): union-find over the scope's own edges — an edge with an endpoint outside the scope connects nothing here — indexed by position in nodeSlots(). | Source |
| API | ctx.cy | Implemented | the core being laid out | Source |
| API | ctx.degreeOf | Implemented | O(1) degree off the CSR adjacency. | Source |
| API | ctx.edgeSlots | Implemented | The scope's edge slots. | Source |
| API | ctx.eles | Implemented | The layout scope (handles tier); the whole graph unless this run came from eles.layout(). | Source |
| API | ctx.endpoints | Implemented | The live edge endpoint column (source,target node slots). | Source |
| API | ctx.finish | Implemented | Land computed positions the way a built-in does (round 114.2): the finisher when the run asks for anything it owns — animate, animateFilter, transform, spacingFactor — and otherwise the bulk slot write followed by fit / zoom / pan. One rule for flow, force and any extension that computes into an array. | Source |
| API | ctx.height | Implemented | The viewport height in CSS px. | Source |
| API | ctx.layoutPositions | Implemented | The discrete finisher: v3's layoutPositions plumbing over the scope — spacingFactor, transform, animate (with the fit-at-final-positions viewport animation), fit/zoom/pan, and the layoutready/layoutstop events. The wrapper's layoutstart covers the start (no double emit). | Source |
| API | ctx.nodeDimensions | Implemented | The layout boxes of the scope's nodes (round 114.1): slot-parallel node-local extents read off the size, border and label columns — the one reading every built-in spaces by. Labels are included when the run's nodeDimensionsIncludeLabels is true (115: v3's default again), making the box asymmetric when a label hangs below the body; take max( -y1, y2 ) for a symmetric half. Headless label dimensions are estimates (16.4), exact once a renderer has laid the glyphs. | Source |
| API | ctx.nodes | Implemented | The scope's node handles (lazy — see eles). | Source |
| API | ctx.nodeSlots | Implemented | The slots to lay out: the scope's nodes, pre-filtered to unlocked leaves (locked nodes hold their place; parents derive from their placed children — round 14.11). Scope order. | Source |
| API | ctx.options | Implemented | the resolved layout options (custom knobs included) | Source |
| API | ctx.packComponents | Implemented | Separate the scope's disconnected components (round 87.1): v3's separateComponents as a one-call, translation-only post-pass. Per-component bounding boxes at the current positions are shelf-packed largest-first with spacing between them, every member translated with its component, and the largest component's centre held fixed — the dominant structure keeps its place and the strays come to it. | Source |
| API | ctx.positions | Implemented | The live position column (x,y interleaved by slot) — read it, write through setPositions. | Source |
| API | ctx.refreshScope | Implemented | Drop the cached scope so the next eles / nodes read the graph as it now is (118.3): a whole-graph scope is materialized once per run, and a force layout's infinite run rebuilds its sim on an add or remove. A subset scope (eles.layout()) is the caller's collection and stays what it was. | Source |
| API | ctx.setPositions | Implemented | The bulk write: xy[i2], xy[i2+1] land on slots[i] — one dirty span, no handles (the round-5 slot path; under compounds it takes the per-slot sequential path so auto-bounds stay exact). | Source |
| API | ctx.width | Implemented | The viewport width in CSS px — what a layout sizing itself to the screen should use. Headless instances report the configured headless width, so a layout still works without a DOM. | Source |
| API | cy.$ | Implemented | Alias of cy.filter. Filter the whole graph. Identical to elements( query ), kept for symmetry with eles.filter(). | Source |
| API | cy.$id | Implemented | Alias of cy.getElementById. Look up one element by id through the O(1) id index. | Source |
| API | cy.add | Implemented | Add elements to the graph and return them as a collection. | Source |
| API | cy.addListener | Implemented | Alias of cy.on. Listen for events on the core. | Source |
| API | cy.animate | Implemented | Animate the viewport (pan/zoom) over duration ms. Element animation is on the collection (eles.animate). Tweens are CPU-canonical; a data write / manual pan mid-animation is not prevented but will be overwritten by the next tick. | Source |
| API | cy.animated | Implemented | True while the viewport is animating. | Source |
| API | cy.animation | Implemented | Like animate, but returns a handle with play/stop/promise — the viewport counterpart of eles.animation. | Source |
| API | cy.attr | Implemented | Alias of cy.data. Graph-level data — read all, read one key, or write. This is a plain object, not a columnar sidecar (which is ele.data()). It is carried by the wire format since round 39.2: serialize() writes it and options.elements applies it, while cy.add( buffer ) deliberately ignores it. Writing emits data. | Source |
| API | cy.autolock | Implemented | Get or set whether every node is locked (immovable) regardless of its own locked flag — the graph-wide override. | Source |
| API | cy.autolockNodes | Implemented | Alias of cy.autolock. Get or set whether every node is locked (immovable) regardless of its own locked flag — the graph-wide override. | Source |
| API | cy.autoungrabify | Implemented | Get or set whether every node is ungrabbable regardless of its own grabbable flag. Unlike autolock(), this blocks only user dragging; programmatic position writes still apply. | Source |
| API | cy.autoungrabifyNodes | Implemented | Alias of cy.autoungrabify. Get or set whether every node is ungrabbable regardless of its own grabbable flag. Unlike autolock(), this blocks only user dragging; programmatic position writes still apply. | Source |
| API | cy.autounselectify | Implemented | Get or set whether every element is unselectable regardless of its own selectable flag. Programmatic select() still applies. | Source |
| API | cy.batch | Implemented | Run fn inside a startBatch()/endBatch() pair. The batch closes even if fn throws, so this is the form to prefer. | Source |
| API | cy.batchData | Replaced | Use cy.batch() around element data() writes. | Record |
| API | cy.bind | Replaced | Use cy.on(); legacy listener aliases were removed. | Record |
| API | cy.boxSelectionEnabled | Implemented | Get or set whether the box-selection gesture is available. | Source |
| API | cy.boxSelectionIncludesLabels | Implemented | Whether box selection considers label boxes as well as node bodies (round 16.5; v3's box-select-labels, reshaped as a core option — default off). Its sense follows boxSelectionMode: under 'contain' the label box must also be inside the band, under 'overlap' a label that merely crosses the band is enough. | Source |
| API | cy.boxSelectionMode | Implemented | What the box-selection gesture counts as caught: 'contain' (default, v3's) selects only elements wholly inside the band; 'overlap' selects anything the band touches — a node whose box intersects it, an edge any part of whose drawn path crosses it. Round 39.1. | Source |
| API | cy.byId | Implemented | Alias of cy.getElementById. Look up one element by id through the O(1) id index. | Source |
| API | cy.center | Implemented | Pan so the given elements are centred, leaving the zoom alone. Bounds include labels, as in fit(). | Source |
| API | cy.centre | Implemented | Alias of cy.center. Pan so the given elements are centred, leaving the zoom alone. Bounds include labels, as in fit(). | Source |
| API | cy.clearQueue | Excluded | The animation queue was removed. Disjoint channels run concurrently; use promises to sequence animations. | Record |
| API | cy.collection | Partial | Returns an empty collection. The v3 collection(elements) constructor form is excluded; use queries or union() to build a collection. | Source |
| API | cy.compact | Implemented | Slot-moving compaction, explicit form (round 19.5): move live elements down to a dense slot prefix so highWater, column capacity and pass-iteration widths shrink to the current graph instead of its peak. A monotone remap keeps draw order — compaction is a visual no-op — and held refs/handles/listeners repair through forwarding (19.3). The automatic dead-slot-ratio trigger covers the common shrink/churn profiles; this call is for deterministic timing (e.g. right after a bulk filter, before an animation). Throws mid-batch; defers with a warning while a GPU force layout runs. | Source |
| API | cy.container | Implemented | The DOM element this instance renders into, or null when headless or unmounted. | Source |
| API | cy.createLayout | Implemented | Alias of cy.layout. Make a layout over the whole graph. The layout does not run until you call .run() on it. | Source |
| API | cy.data | Implemented | Graph-level data — read all, read one key, or write. This is a plain object, not a columnar sidecar (which is ele.data()). It is carried by the wire format since round 39.2: serialize() writes it and options.elements applies it, while cy.add( buffer ) deliberately ignores it. Writing emits data. | Source |
| API | cy.delay | Replaced | Use an application timer and promise sequencing; viewport animation handles have no delay helper. | Record |
| API | cy.delayAnimation | Replaced | Use an application timer and promise sequencing; viewport animation handles have no delay helper. | Record |
| API | cy.desktopTapThreshold | Implemented | Css px a mouse/pen press may move and still count as a tap (v3 parity; default 4). | Source |
| API | cy.destroy | Implemented | Tear the instance down: emit destroy, drop every listener, and release the pointer handler and the renderer (with its GPU resources). Idempotent. The store is left intact but the instance must not be used afterwards. | Source |
| API | cy.destroyed | Implemented | Whether destroy() has run. | Source |
| API | cy.edges | Implemented | The graph's edges, optionally filtered. Same query forms as elements(), restricted to the edge group — and, with no query, the same memo (34.2). | Source |
| API | cy.elements | Implemented | All elements, optionally filtered — nodes (in insertion order) then edges. | Source |
| API | cy.elementsInBox | Implemented | Live, visible elements contained in the model-coordinate box (corners in any order): the box-selection query, answered by one columnar scan. Nodes count when their bounding box lies fully inside; edges when both endpoint node centers do (v3's default 'contain' semantics, with straight-edge endpoints taken at the node centers). | Source |
| API | cy.emit | Implemented | Emit an event on the core. | Source |
| API | cy.endBatch | Implemented | Close a batch. At the outermost close the deferred work flushes as one bulk pass — filtered to elements still live, so adding and removing within the same batch costs nothing — and the automatic slot-compaction trigger gets its boundary check. A sheet change during the batch subsumes the per-element work: one applyAll() covers every live element. | Source |
| API | cy.extent | Implemented | The model-space rectangle currently visible, as { x1, y1, x2, y2, w, h } — the inverse of the pan/zoom transform applied to the viewport box. | Source |
| API | cy.filter | Implemented | Filter the whole graph. Identical to elements( query ), kept for symmetry with eles.filter(). | Source |
| API | cy.fit | Implemented | Pan and zoom so the given elements fill the viewport. | Source |
| API | cy.forceRender | Excluded | Removed in the public API review; rendering follows dirty state. | Record |
| API | cy.gc | Implemented | Alias of cy.compact. Slot-moving compaction, explicit form (round 19.5): move live elements down to a dense slot prefix so highWater, column capacity and pass-iteration widths shrink to the current graph instead of its peak. A monotone remap keeps draw order — compaction is a visual no-op — and held refs/handles/listeners repair through forwarding (19.3). The automatic dead-slot-ratio trigger covers the common shrink/churn profiles; this call is for deterministic timing (e.g. right after a bulk filter, before an animation). Throws mid-batch; defers with a warning while a GPU force layout runs. | Source |
| API | cy.getElementById | Implemented | Look up one element by id through the O(1) id index. | Source |
| API | cy.hasCompoundNodes | Implemented | Whether any node currently has a parent. Worth checking because the compound tier changes paint evaluation and draw order; the renderer pays nothing for compounds while this is false. | Source |
| API | cy.hasElementWithId | Implemented | Whether an element with this id exists, via the O(1) id index — cheaper than getElementById( id ).nonempty() because no handle is materialized. | Source |
| API | cy.headless | Implemented | Whether this instance has no container and therefore no GPU — the Node-testable mode, in which every model API works and the render, pick and image-export paths are no-ops or reject. | Source |
| API | cy.height | Implemented | The rendered height in CSS px. Headless instances report the configured headlessHeight (default 600). | Source |
| API | cy.invalidateDimensions | Replaced | Use cy.resize(). The v3 spelling is not public in v4. | Record |
| API | cy.invalidateSize | Implemented | Alias of cy.resize. Re-measure the container and redraw (no-op when headless). | Source |
| API | cy.isReady | Implemented | Whether the render pipeline is usable yet. Always true on a headless instance; on a rendered one this flips when cy.ready resolves. | Source |
| API | cy.jpeg | Implemented | Alias of cy.jpg. Export as JPEG: as png, plus quality (0..1) and a white default bg (JPEG has no alpha channel). | Source |
| API | cy.jpg | Implemented | Export as JPEG: as png, plus quality (0..1) and a white default bg (JPEG has no alpha channel). | Source |
| API | cy.json | Partial | Export the current graph and stylesheet, including bypasses. The v3 import/setter form is excluded; use constructor elements or cy.add() for loading. | Source |
| API | cy.layout | Implemented | Make a layout over the whole graph. The layout does not run until you call .run() on it. | Source |
| API | cy.listen | Replaced | Use cy.on(); legacy listener aliases were removed. | Record |
| API | cy.makeLayout | Implemented | Alias of cy.layout. Make a layout over the whole graph. The layout does not run until you call .run() on it. | Source |
| API | cy.maxZoom | Implemented | Get the maximum zoom, or set it. Setting re-clamps the current zoom. | Source |
| API | cy.minZoom | Implemented | Get the minimum zoom, or set it. Setting re-clamps the current zoom. | Source |
| API | cy.mount | Implemented | (Re)attach a renderer to a container. Re-mounting to a different container unmounts first; the fresh renderer re-uploads every column from the CPU-canonical model and rebuilds all glyph runs. | Source |
| API | cy.multiClickDebounceTime | Implemented | The dbltap/onetap debounce window in ms (v3 parity; default 250). | Source |
| API | cy.mutableElements | Replaced | Use cy.elements(). | Record |
| API | cy.nodes | Implemented | The graph's nodes, optionally filtered. Same query forms as elements(), restricted to the node group — and, with no query, the same memo (34.2). | Source |
| API | cy.noNotifications | Excluded | Notification suppression is absent; use cy.batch() for batched model changes. | Record |
| API | cy.notify | Excluded | Rendering is driven by dirty state; explicit renderer notifications are not public. | Record |
| API | cy.off | Implemented | Stop listening. Removing a delegated handler takes the same ( events, predicate, handler ) triple it was added with — predicates compare by function identity, so the predicate must be the same function object, not an equivalent one. | Source |
| API | cy.offRender | Replaced | Use cy.off('render', handler). | Record |
| API | cy.on | Implemented | Listen for events on the core. | Source |
| API | cy.once | Implemented | Alias of cy.one. Like on(), but the handler runs at most once and then removes itself. | Source |
| API | cy.one | Implemented | Like on(), but the handler runs at most once and then removes itself. | Source |
| API | cy.onRender | Replaced | Use cy.on('render', handler). | Record |
| API | cy.options | Implemented | The options the instance was constructed with. | Source |
| API | cy.pan | Implemented | Get the pan offset, or set it. Setting is a no-op while panningEnabled() is false. | Source |
| API | cy.panBy | Implemented | Shift the pan by a delta. A no-op while panningEnabled() is false. | Source |
| API | cy.panningEnabled | Implemented | Get or set whether panning is allowed at all — programmatic pan() included. Use userPanningEnabled() to block only the gesture. | Source |
| API | cy.pick | Implemented | Async GPU pick at a rendered (CSS px) position; resolves with the element under the point or null (always null when headless). | Source |
| API | cy.pickNode | Planned | Scoped synchronous public node pick; not currently exposed. | Source |
| API | cy.png | Implemented | Export the rendered graph as a PNG. Async — the pixels live on the GPU (offscreen render + readback), unlike v3's synchronous base64 form; every output form resolves through the returned promise. Options as in v3: bg, full, scale or maxWidth/maxHeight, output ('base64uri' default | 'base64' | 'blob'; 'blob-promise' is an accepted alias of 'blob'). Headless instances reject — there is no renderer to export from. | Source |
| API | cy.pointerCursors | Implemented | Get or set whether the canvas writes CSS cursors for the gesture affordances (round 89): grab over a draggable node and grabbing while it or the background is being dragged, pointer over any other interactive element, crosshair while box-selecting. | Source |
| API | cy.pon | Implemented | Alias of cy.promiseOn. Resolve once the next matching event fires — the promise form of one(). | Source |
| API | cy.promiseOn | Implemented | Resolve once the next matching event fires — the promise form of one(). | Source |
| API | cy.ready | Partial | Promise for renderer readiness, rather than the v3 callback method. Rejects if adapter acquisition fails. | Source |
| API | cy.remove | Implemented | Remove elements from the graph. Removing a node removes its connected edges, and removing a compound parent removes its descendants. Equivalent to eles.remove(). | Source |
| API | cy.removeAllListeners | Implemented | Remove every listener on the core, including element-bound and delegated ones. | Source |
| API | cy.removeAttr | Implemented | Alias of cy.removeData. Delete graph-level data keys. Emits data when anything was removed. | Source |
| API | cy.removeData | Implemented | Delete graph-level data keys. Emits data when anything was removed. | Source |
| API | cy.removeListener | Implemented | Alias of cy.off. Stop listening. Removing a delegated handler takes the same ( events, predicate, handler ) triple it was added with — predicates compare by function identity, so the predicate must be the same function object, not an equivalent one. | Source |
| API | cy.removeScratch | Implemented | Delete graph-level scratch keys. | Source |
| API | cy.renderedExtent | Implemented | The rendered (on-screen) viewport rectangle. | Source |
| API | cy.renderer | Excluded | Internal implementation hook, excluded from the supported public API. Use cy.stats() for the public frame-statistics snapshot. | Record |
| API | cy.renderTo | Excluded | Drawing into an external canvas is not supported by the WebGPU renderer. | Record |
| API | cy.reset | Implemented | Reset the viewport to zoom 1, pan (0, 0). | Source |
| API | cy.resize | Implemented | Re-measure the container and redraw (no-op when headless). | Source |
| API | cy.scratch | Implemented | Graph-level scratchpad — like data(), but for transient state that is never exported and never emits. Namespace your keys (an extension convention: '_myExtension'). | Source |
| API | cy.selectionType | Implemented | How user selection composes: 'single' (a tap or box replaces the selection) or 'additive' (taps toggle and boxes add, as if a multiple-select key were always held). | Source |
| API | cy.serialize | Implemented | Export the live graph as the binary wire format (the buffer options.elements/add() accept directly): the columnar counterpart of json(). Carries ids, positions, selection state, the data() sidecar and — since round 39.2 — graph-level data(); style, viewport and scratch are not part of the wire. | Source |
| API | cy.size | Implemented | Rendered dimensions as { width, height }. | Source |
| API | cy.startBatch | Implemented | Open a batch: defer style application until the matching endBatch(). Pairs nest — only the outermost endBatch() flushes. Prefer batch( fn ), which cannot leak a depth on an exception. | Source |
| API | cy.stats | Implemented | The renderer's frame statistics, or null when headless. The snapshot carries the frame timings, cache hit rates and pass counters — note that cpuFrameMs is encode/submit cost only (submission is fire-and-forget), so reconcile fps against gpuFrameMs. | Source |
| API | cy.stop | Implemented | Stop every running viewport animation (round 21: no queue — the v3 clearQueue argument is gone). | Source |
| API | cy.style | Partial | Get or replace the grouped declarative stylesheet. Selector blocks, CSS strings and functions are excluded; replacing the sheet also replaces bypasses. | Source |
| API | cy.styleEnabled | Implemented | Always true: v4 has no style-disabled mode, since the columnar model derives geometry from stored style channels rather than treating style as an optional layer. Kept so v3 code that checks it works. | Source |
| API | cy.svg | Planned | Promise-based vector export is scoped in round 77; no current public method. | Source |
| API | cy.tapholdDuration | Implemented | Unmoved-press duration before 'taphold' fires, ms (default 500 — v3's constant, configurable in v4). | Source |
| API | cy.touchTapThreshold | Implemented | Css px a touch press may move and still count as a tap (v3 parity; default 8). | Source |
| API | cy.trigger | Implemented | Alias of cy.emit. Emit an event on the core. | Source |
| API | cy.unbind | Replaced | Use cy.off(); legacy listener aliases were removed. | Record |
| API | cy.unlisten | Replaced | Use cy.off(); legacy listener aliases were removed. | Record |
| API | cy.unmount | Implemented | Detach the renderer: the instance becomes headless (the model is CPU-canonical, so nothing is lost). No-op when already headless. | Source |
| API | cy.userPanningEnabled | Implemented | Get or set whether the user may pan by dragging. Programmatic pan() is unaffected. | Source |
| API | cy.userZoomingEnabled | Implemented | Get or set whether the user may zoom by wheel or pinch. Programmatic zoom() is unaffected. | Source |
| API | cy.viewport | Implemented | Set zoom and/or pan together, emitting once. | Source |
| API | cy.wheelSensitivity | Implemented | Wheel-zoom sensitivity: a multiplier on the zoom-per-wheel-tick exponent (v3 parity; default 1). Non-default values warn once per instance, as v3 does — a custom sensitivity tuned on one mouse/OS zooms unnaturally on others. | Source |
| API | cy.width | Implemented | The rendered width in CSS px. Headless instances report the configured headlessWidth (default 800), so viewport maths works without a DOM. | Source |
| API | cy.window | Implemented | The window this instance renders into, or null when there is no DOM (Node). v3 parity, for extensions that need the hosting realm. | Source |
| API | cy.zoom | Implemented | Get the zoom level, or set it. Setting is a no-op while zoomingEnabled() is false, and the level is clamped to zoomRange(). | Source |
| API | cy.zoomingEnabled | Implemented | Get or set whether zooming is allowed at all — programmatic zoom() included. Use userZoomingEnabled() to block only the gesture. | Source |
| API | cy.zoomRange | Implemented | Set both zoom bounds; accepts (min, max) or { min, max }. | Source |
| API | cytoscape | Implemented | Create an instance from definitions or columnar data. Rendering requires WebGPU; omit container for headless use. Unknown constructor options are ignored at runtime and checked by TypeScript. | Source |
| API | cytoscape.deserializeElements | Implemented | Deserialize a serializeElements buffer (or a view over one) back into the columnar elements form. Numeric columns are zero-copy views into the given buffer; a misaligned view is copied once to realign. | Source |
| API | cytoscape.serializeElements | Implemented | Serialize elements (definition form or columnar form) into one transferable/fetchable ArrayBuffer. deserializeElements (or passing the buffer straight to options.elements/cy.add()) reverses it. | Source |
| API | cytoscape.stylesheet | Replaced | Supply a grouped declarative stylesheet to cy.style() or the constructor. The chainable stylesheet builder was removed. | Record |
| API | cytoscape.toColumnarElements | Partial | Converts definitions to a self-contained columnar payload. Per-element locked, grabbable and pannable overrides are not carried by this conversion. | Source |
| API | cytoscape.use | Replaced | Pass a layout implementation directly through the registry-free layout contract. The v3 extension registry is absent. | Record |
| API | cytoscape.warnings | Excluded | No warning toggle: invalid input throws and recoverable conditions warn on the console. | Record |
| API | eles.$id | Replaced | Use eles.getElementById(). The v3 spelling is not public in v4. | Record |
| API | eles.abscomp | Implemented | Alias of eles.absoluteComplement. All elements of the graph not in this collection. | Source |
| API | eles.absoluteComplement | Implemented | All elements of the graph not in this collection. | Source |
| API | eles.active | Implemented | Whether the first element is in the transient pressed ("active") state. | Source |
| API | eles.add | Implemented | Alias of eles.union. The union of the two collections, deduped. | Source |
| API | eles.addClass | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.addListener | Implemented | Alias of eles.on. Listen for events on each element of this collection. The handler is bound per element, and keeps firing across slot compaction — listeners repair with their elements rather than going stale. | Source |
| API | eles.affinityPropagation | Implemented | Affinity propagation, which picks exemplars by message passing and so needs no target cluster count. | Source |
| API | eles.allAre | Implemented | Whether every element matches the criterion. | Source |
| API | eles.allAreNeighbors | Implemented | Whether every element of other is in this collection's neighborhood. | Source |
| API | eles.allAreNeighbours | Implemented | Alias of eles.allAreNeighbors. Whether every element of other is in this collection's neighborhood. | Source |
| API | eles.ancestors | Implemented | Alias of eles.parents. All ancestors, level by level: every nearest parent first, then the grandparents, and so on (v3's iterated-parent() order). | Source |
| API | eles.and | Implemented | Alias of eles.intersection. The elements present in both collections. | Source |
| API | eles.animate | Implemented | Animate these elements' style and/or position to explicit targets over duration ms, easing the normalized time. | Source |
| API | eles.animated | Implemented | True when any of these elements has a running animation. | Source |
| API | eles.animation | Implemented | Build an animation for these elements without starting it. | Source |
| API | eles.anySame | Implemented | Whether the two collections share at least one element. | Source |
| API | eles.ap | Implemented | Alias of eles.affinityPropagation. Affinity propagation, which picks exemplars by message passing and so needs no target cluster count. | Source |
| API | eles.aStar | Implemented | A shortest path between two nodes. | Source |
| API | eles.attr | Implemented | Alias of eles.data. data() over the sidecar columns. id (and source/target on edges) are first-class and immutable — reading them works, writing them throws. Setters apply to every element in the collection and emit data per element; a write refreshes data-mapped labels. The whole-object read returns a built snapshot, not the store's internals — and the same snapshot until a data write (or a reparent/re-point) invalidates it, so mutating it never corrupts the store but is visible to the mutator until the next write (v3 hands out its live internal object here, where mutation corrupts the actual store — v4's exposure is strictly narrower). | Source |
| API | eles.bb | Replaced | Use eles.boundingBox(). The v3 spelling is not public in v4. | Record |
| API | eles.bc | Implemented | Alias of eles.betweennessCentrality. Betweenness centrality — how often each node lies on shortest paths between other pairs. Async (round 65): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the Brandes sweep runs. Weighted runs have no GPU path: 'auto' uses the CPU and an explicit 'gpu' rejects. | Source |
| API | eles.bellmanFord | Implemented | Bellman–Ford shortest paths, which unlike Dijkstra tolerates negative weights and reports negative cycles. | Source |
| API | eles.betweennessCentrality | Implemented | Betweenness centrality — how often each node lies on shortest paths between other pairs. Async (round 65): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the Brandes sweep runs. Weighted runs have no GPU path: 'auto' uses the CPU and an explicit 'gpu' rejects. | Source |
| API | eles.bfs | Implemented | Alias of eles.breadthFirstSearch. Breadth-first search from one or more roots over this collection's subgraph, walking slot-native over the CSR adjacency. | Source |
| API | eles.bind | Replaced | Use eles.on(); legacy listener aliases were removed. | Record |
| API | eles.boundingbox | Replaced | Use eles.boundingBox(). The v3 spelling is not public in v4. | Record |
| API | eles.boundingBox | Implemented | The model-space box enclosing every element of the collection. | Source |
| API | eles.breadthFirstSearch | Implemented | Breadth-first search from one or more roots over this collection's subgraph, walking slot-native over the CSR adjacency. | Source |
| API | eles.cc | Implemented | Alias of eles.closenessCentrality. Closeness centrality of one node — the reciprocal of its summed shortest-path distances to the rest of the collection. | Source |
| API | eles.ccn | Implemented | Alias of eles.closenessCentralityNormalized. Closeness centrality for every node, normalized to [0, 1]. Async (round 69): the whole-collection form is the O(n³) all-pairs tier, so like floydWarshall it returns a promise and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the relaxation runs; 'cpu' is the reproducible reference. The single-root closenessCentrality stays synchronous. | Source |
| API | eles.children | Implemented | Direct children of every node, in link order per parent. | Source |
| API | eles.classes | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.className | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.classNames | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.clearQueue | Excluded | The animation queue was removed. Disjoint channels run concurrently; use promises to sequence animations. | Record |
| API | eles.clone | Excluded | Removed elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed. | Record |
| API | eles.closedNeighborhood | Implemented | The open neighbourhood plus this collection's own nodes. | Source |
| API | eles.closenessCentrality | Implemented | Closeness centrality of one node — the reciprocal of its summed shortest-path distances to the rest of the collection. | Source |
| API | eles.closenessCentralityNormalised | Implemented | Alias of eles.closenessCentralityNormalized. Closeness centrality for every node, normalized to [0, 1]. Async (round 69): the whole-collection form is the O(n³) all-pairs tier, so like floydWarshall it returns a promise and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the relaxation runs; 'cpu' is the reproducible reference. The single-root closenessCentrality stays synchronous. | Source |
| API | eles.closenessCentralityNormalized | Implemented | Closeness centrality for every node, normalized to [0, 1]. Async (round 69): the whole-collection form is the O(n³) all-pairs tier, so like floydWarshall it returns a promise and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the relaxation runs; 'cpu' is the reproducible reference. The single-root closenessCentrality stays synchronous. | Source |
| API | eles.codirectedEdges | Implemented | The parallel edges pointing the same way — same source and same target — including each edge itself. | Source |
| API | eles.collection | Implemented | An empty collection in the same core. | Source |
| API | eles.commonAncestors | Implemented | Ancestors common to every element, closest first (an edge in the collection has no ancestors, so it empties the result — v3). | Source |
| API | eles.complement | Implemented | Alias of eles.absoluteComplement. All elements of the graph not in this collection. | Source |
| API | eles.component | Implemented | The whole-graph connected component containing the first element. | Source |
| API | eles.components | Implemented | Connected components within this collection (undirected), each as a collection of the reached nodes plus the collection's edges internal to that component. | Source |
| API | eles.componentsOf | Implemented | Alias of eles.components. Connected components within this collection (undirected), each as a collection of the reached nodes plus the collection's edges internal to that component. | Source |
| API | eles.connectedEdges | Implemented | Every edge incident on the nodes in this collection, deduped — answered off the CSR adjacency index, so it is O(incident edges) rather than a scan. Loops appear once. | Source |
| API | eles.connectedNodes | Implemented | The endpoint nodes of every edge in this collection, deduped. | Source |
| API | eles.contains | Implemented | Whether every element of other is also in this collection. | Source |
| API | eles.controlPoints | Implemented | The edge's curve control points (model coords): one for a bundled bezier, two for a self-loop, the control list for an unbundled bezier, undefined otherwise — v3's getControlPoints surface (segments/taxi answer segmentPoints() instead). | Source |
| API | eles.copy | Excluded | Removed elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed. | Record |
| API | eles.createLayout | Implemented | Alias of eles.layout. A layout scoped to this collection. | Source |
| API | eles.css | Implemented | Alias of eles.style. Read resolved properties or set constant id-keyed bypasses. Bypasses export with the stylesheet and are replaced on a full sheet swap; mappers belong in the sheet. | Source |
| API | eles.cy | Implemented | The core this collection belongs to. | Source |
| API | eles.data | Implemented | data() over the sidecar columns. id (and source/target on edges) are first-class and immutable — reading them works, writing them throws. Setters apply to every element in the collection and emit data per element; a write refreshes data-mapped labels. The whole-object read returns a built snapshot, not the store's internals — and the same snapshot until a data write (or a reparent/re-point) invalidates it, so mutating it never corrupts the store but is visible to the mutator until the next write (v3 hands out its live internal object here, where mutation corrupts the actual store — v4's exposure is strictly narrower). | Source |
| API | eles.dc | Implemented | Alias of eles.degreeCentrality. Degree centrality of one node relative to the collection. | Source |
| API | eles.dcn | Implemented | Alias of eles.degreeCentralityNormalized. Degree centrality for every node, normalized to [0, 1]. | Source |
| API | eles.degree | Implemented | The first element's total degree, in + out, answered in O(1) off the adjacency index. | Source |
| API | eles.degreeCentrality | Implemented | Degree centrality of one node relative to the collection. | Source |
| API | eles.degreeCentralityNormalised | Implemented | Alias of eles.degreeCentralityNormalized. Degree centrality for every node, normalized to [0, 1]. | Source |
| API | eles.degreeCentralityNormalized | Implemented | Degree centrality for every node, normalized to [0, 1]. | Source |
| API | eles.delay | Implemented | A no-op tween — a timed pause that touches no channels, so it composes with any running animation (round 21: use delayAnimation().play() + await to sequence). | Source |
| API | eles.delayAnimation | Implemented | Like delay, but returns the handle instead of chaining. | Source |
| API | eles.depthFirstSearch | Implemented | Depth-first search from one or more roots. Same options as breadthFirstSearch. | Source |
| API | eles.descendants | Implemented | The subtree below every node in pre-order, excluding the nodes themselves. | Source |
| API | eles.deselect | Implemented | Alias of eles.unselect. Deselect every element, emitting unselect for each one that changed. | Source |
| API | eles.dfs | Implemented | Alias of eles.depthFirstSearch. Depth-first search from one or more roots. Same options as breadthFirstSearch. | Source |
| API | eles.diff | Implemented | Three-way set difference against another collection. | Source |
| API | eles.difference | Implemented | This collection's elements that are not in other. | Source |
| API | eles.dijkstra | Implemented | Dijkstra shortest paths from a root over non-negative weights. | Source |
| API | eles.each | Implemented | Alias of eles.forEach. Call fn for each element. Returning false from the callback stops the iteration early, as in v3. | Source |
| API | eles.edges | Implemented | The edges in this collection, optionally filtered. | Source |
| API | eles.edgesTo | Implemented | The edges running from this collection's nodes to others — edgesWith() restricted by direction. | Source |
| API | eles.edgesWith | Implemented | The edges connecting this collection's nodes with others, in either direction. | Source |
| API | eles.effectiveOpacity | Implemented | The rendered opacity: a node's own opacity times its ancestors' (v3's product rule — the store keeps the folded value in the column, round 14.4); an edge's own opacity (edges have no parent). | Source |
| API | eles.effectiveResistance | Implemented | Effective resistance and commute time — the graph as a resistor network (weights are conductances): resistance(a, b) from the Laplacian pseudo-inverse, commuteTime(a, b) the expected round-trip steps of the random walk (component volume × resistance). Pairs in different components answer Infinity. Async (round 70): executor ('cpu' | 'gpu' | 'auto', default 'auto') picks between dense f64 elimination on the CPU and Newton–Schulz matmul iteration on the GPU; both are O(n³), so 'auto' takes the GPU on size alone. v4-only — v3 has no counterpart. | Source |
| API | eles.emit | Implemented | Emit an event on each element, bubbling through compound ancestors to the core. | Source |
| API | eles.empty | Implemented | Whether the collection holds no elements. | Source |
| API | eles.eq | Implemented | The element at an index, as a length-1 collection. | Source |
| API | eles.equal | Implemented | Alias of eles.same. Whether both collections hold exactly the same elements, ignoring order. | Source |
| API | eles.equals | Implemented | Alias of eles.same. Whether both collections hold exactly the same elements, ignoring order. | Source |
| API | eles.every | Implemented | Whether every element satisfies the predicate. Short-circuits, and is vacuously true for an empty collection. | Source |
| API | eles.fcm | Implemented | Alias of eles.fuzzyCMeans. Fuzzy c-means clustering: each element gets a degree of membership in every cluster rather than one hard assignment. Async, with the same executor contract as kMeans. | Source |
| API | eles.filter | Implemented | The subset matching the criterion. | Source |
| API | eles.first | Implemented | The first element, as a length-1 collection. | Source |
| API | eles.flashClass | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.floydWarshall | Implemented | Floyd–Warshall all-pairs shortest paths. O(n³) — for a single source prefer dijkstra/bellmanFord. Async (round 65): the expensive whole-graph tier returns promises, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the maths runs; 'cpu' is the reproducible reference. | Source |
| API | eles.forEach | Implemented | Call fn for each element. Returning false from the callback stops the iteration early, as in v3. | Source |
| API | eles.fuzzyCMeans | Implemented | Fuzzy c-means clustering: each element gets a degree of membership in every cluster rather than one hard assignment. Async, with the same executor contract as kMeans. | Source |
| API | eles.getElementById | Implemented | Find a member by id. This is a linear scan of the collection; use cy.$id( id ) for the O(1) whole-graph index. | Source |
| API | eles.grabbable | Implemented | Pannable elements are not draggable, so pannable overrides grabbable (as in v3). | Source |
| API | eles.grabbed | Implemented | Whether the first element is currently held by a drag gesture. | Source |
| API | eles.grabify | Implemented | Make these elements grabbable. | Source |
| API | eles.group | Implemented | The first element's group. Cached on the handle, so it stays readable after removal. | Source |
| API | eles.has | Implemented | Alias of eles.contains. Whether every element of other is also in this collection. | Source |
| API | eles.hasClass | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.hasElementWithId | Implemented | Whether this collection contains an element with the given id. | Source |
| API | eles.hca | Implemented | Alias of eles.hierarchicalClustering. Agglomerative hierarchical clustering. Async (round 65): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the distance matrix is built; the merge chain itself is sequential and always runs on the CPU. | Source |
| API | eles.heatDiffusion | Implemented | Heat diffusion from a seeds collection: unit heat spread over the seeds flows along edges for time, through the kernel exp(−t·L) of the weighted Laplacian. Total heat is conserved. Async (round 70); the vector form is O(E) per series term on the CPU, so there is no GPU path — an explicit executor: 'gpu' rejects and points at heatKernel. Edges are read undirected with positive weights. v4-only — v3 has no counterpart. | Source |
| API | eles.heatKernel | Implemented | The all-pairs heat kernel exp(−t·L) — heat(from, to) is the heat at to after unit heat starts at from (symmetric). Async (round 70): executor ('cpu' | 'gpu' | 'auto', default 'auto') picks between per-column sparse series on the CPU and the dense scaling-and-squaring chain on the GPU — under 'auto' the GPU only on dense graphs. All-pairs (O(n²) memory). v4-only — v3 has no counterpart. | Source |
| API | eles.height | Implemented | The first element's height — a node's model-space height, or an edge's stroke width (as in v3, where an edge's height is its width). | Source |
| API | eles.hidden | Implemented | The complement of visible(). | Source |
| API | eles.hide | Implemented | Hide these elements structurally — v3's display: none. They stop drawing and picking, leave the bounding box and their ancestors' auto-bounds, and their bezier bundles re-fan without them. Descendants of a hidden node are gated too. | Source |
| API | eles.hierarchicalClustering | Implemented | Agglomerative hierarchical clustering. Async (round 65): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the distance matrix is built; the merge chain itself is sequential and always runs on the CPU. | Source |
| API | eles.hierholzer | Implemented | Hierholzer's Eulerian path/circuit. | Source |
| API | eles.hopcroftTarjanBiconnected | Implemented | Hopcroft–Tarjan biconnected components and articulation points. | Source |
| API | eles.hopcroftTarjanBiconnectedComponents | Implemented | Alias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points. | Source |
| API | eles.htb | Implemented | Alias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points. | Source |
| API | eles.htbc | Implemented | Alias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points. | Source |
| API | eles.id | Implemented | The first element's id. Cached on the handle, so it stays readable after the element is removed. | Source |
| API | eles.incomers | Implemented | The immediate incoming neighbourhood: the edges arriving at these nodes plus the nodes they come from. One hop only — use predecessors() for the transitive closure. | Source |
| API | eles.indegree | Implemented | The first element's in-degree, in O(1). Singular, like degree(). | Source |
| API | eles.indexOf | Implemented | Index of an element within this collection. | Source |
| API | eles.indexOfId | Implemented | Position of the element with this id within the collection. | Source |
| API | eles.inside | Implemented | Whether the first element is still in the graph — the complement of removed(). | Source |
| API | eles.interactive | Implemented | Whether the element can be interacted with: visible and not pointer-transparent (events: 'no' — round 20.2). | Source |
| API | eles.intersect | Implemented | Alias of eles.intersection. The elements present in both collections. | Source |
| API | eles.intersection | Implemented | The elements present in both collections. | Source |
| API | eles.is | Implemented | Whether any element matches the criterion. | Source |
| API | eles.isChild | Implemented | Whether the first element is a node with a parent. | Source |
| API | eles.isChildless | Implemented | Whether the first element is a node with no children. | Source |
| API | eles.isEdge | Implemented | Whether the first element is an edge. | Source |
| API | eles.isLoop | Implemented | Whether the first element is a self-loop — an edge whose source and target are the same node. | Source |
| API | eles.isNode | Implemented | Whether the first element is a node. | Source |
| API | eles.isOrphan | Implemented | Whether the first element is a node without a parent. | Source |
| API | eles.isParent | Implemented | Whether the first element is a node with at least one child. | Source |
| API | eles.isSimple | Implemented | Whether the first element is a non-loop edge. | Source |
| API | eles.json | Partial | Export the first element. The v3 setter/import form is excluded. | Source |
| API | eles.jsons | Implemented | Plain-object form of every element. | Source |
| API | eles.kargerStein | Implemented | Karger–Stein randomized minimum cut. Randomized, so repeated runs may differ. | Source |
| API | eles.katzCentrality | Implemented | Katz centrality — attenuated walk counting, where a node is central when many short walks end at it and a walk of length k is worth alphaᵏ. Async (round 69): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the iteration runs; like pageRank, 'auto' always uses the sparse CPU iteration and the GPU path serves an explicit 'gpu'. v4-only — v3 has no counterpart. | Source |
| API | eles.kMeans | Implemented | k-means clustering in attribute space. Like v3's clustering algorithms this works on handles and attributes accessors rather than on graph structure. | Source |
| API | eles.kMedoids | Implemented | k-medoids clustering — like k-means, but cluster centres are actual elements, which makes it robust to outliers. Async, with the same executor contract as kMeans. | Source |
| API | eles.kruskal | Implemented | Kruskal's minimum spanning tree/forest. | Source |
| API | eles.label | Implemented | The node's resolved label text ('' when none); read-only in the prototype. | Source |
| API | eles.labelBoundingBox | Implemented | The exact laid label boxes of this collection's elements, unioned (round 16.4 — the v4 form of v3's text-metrics surface): node labels at their anchors, edge mid-labels at the drawn midpoint, end labels conservatively about their endpoint. Empty (zero) when nothing is labelled. Headless dims are estimates (recorded). | Source |
| API | eles.last | Implemented | The last element, as a length-1 collection. | Source |
| API | eles.layout | Implemented | A layout scoped to this collection. | Source |
| API | eles.layoutDimensions | Implemented | Node dimensions for layout spacing, as v3's layoutDimensions — the body, plus the label box under nodeDimensionsIncludeLabels: true (114.1 made labels the default; 115 restored v3's body-only default). | Source |
| API | eles.layoutPositions | Implemented | Apply a layout's position function to this collection's nodes with the standard layout options (spacingFactor, transform, fit/zoom/pan, animate) and the layoutstart/layoutready/layoutstop event flow — v3's helper. With animate: true the viewport animates concurrently (a fit targets the bounding box at the final positions, as v3 does). | Source |
| API | eles.leaves | Implemented | Collection nodes with no non-loop outgoing edge. | Source |
| API | eles.length | Implemented | How many elements this collection holds. | Source |
| API | eles.listen | Replaced | Use eles.on(); legacy listener aliases were removed. | Record |
| API | eles.lock | Implemented | Lock these elements against movement. | Source |
| API | eles.locked | Implemented | Whether the first element is locked — immovable, by layouts, position writes and position tweens alike (one rule since round 114.3: every layout holds a locked node where it is and keeps it in the layout's structure; force treats it as an obstacle its settle separates the others from). A locked child stays where it is when its compound parent is positioned, shifted or dragged — its own subtree with it — and the parent re-derives about the stayers and the movers (116.3, v3's rule). True for every node while cy.autolock( true ) is set, as in v3; the flag column alone is what { locked: true } filters read. | Source |
| API | eles.makeLayout | Implemented | Alias of eles.layout. A layout scoped to this collection. | Source |
| API | eles.map | Implemented | Map each element through fn into a plain array. | Source |
| API | eles.markovClustering | Implemented | Markov clustering (MCL) — flow simulation over the graph, so unlike the attribute-space algorithms this one clusters by structure. | Source |
| API | eles.max | Implemented | The element maximizing valFn, with its value. | Source |
| API | eles.maxDegree | Implemented | The largest total degree among the collection's nodes. | Source |
| API | eles.maxIndegree | Implemented | The largest in-degree among the collection's nodes. | Source |
| API | eles.maxOutdegree | Implemented | The largest out-degree among the collection's nodes. | Source |
| API | eles.mcl | Implemented | Alias of eles.markovClustering. Markov clustering (MCL) — flow simulation over the graph, so unlike the attribute-space algorithms this one clusters by structure. | Source |
| API | eles.merge | Implemented | Alias of eles.union. The union of the two collections, deduped. | Source |
| API | eles.midpoint | Implemented | Midpoint of the edge: the curve/route midpoint for curved edges (v3's rs.mid rules per family), the endpoint-center average for straight ones. | Source |
| API | eles.min | Implemented | The element minimizing valFn, with its value. | Source |
| API | eles.minDegree | Implemented | The smallest total degree among the collection's nodes. | Source |
| API | eles.minIndegree | Implemented | The smallest in-degree among the collection's nodes. | Source |
| API | eles.minOutdegree | Implemented | The smallest out-degree among the collection's nodes. | Source |
| API | eles.modelPosition | Implemented | Alias of eles.position. Get or set the first element's model-space position (nodes only). | Source |
| API | eles.modelPositions | Implemented | Alias of eles.positions. Set every node's position, from a constant or per-element function. | Source |
| API | eles.motifCensus | Implemented | The triad census — every three-node subgraph classified into the sixteen Holland–Leinhardt classes ('003' … '300'; '030T' is the feed-forward loop). The counts sum to C(n, 3). Async (round 70): executor ('cpu' | 'gpu' | 'auto', default 'auto') picks between sparse wedge walks on the CPU and matmul trace products on the GPU — under 'auto' the GPU only on dense graphs. directed: false reads every edge as mutual, so only 003 / 102 / 201 / 300 (empty / one-edge / path / triangle) can be non-zero. v4-only — v3 has no counterpart. | Source |
| API | eles.move | Implemented | Move elements in place, keeping slot, id and data: { parent } re-parents nodes (null orphans them; the compound move, round 14.2 — emits moveout before and move after per changed node), while { source, target } re-points edges. As in v3 the modes are exclusive — a parent key takes precedence. An unknown parent id is a silent no-op (v3); a cyclic assignment warns and drops (the hierarchy rule). | Source |
| API | eles.neighborhood | Implemented | The open neighbourhood: the incident edges and the nodes on their far ends, ignoring edge direction, excluding the collection's own elements. | Source |
| API | eles.neighborhoodSimilarity | Implemented | Neighborhood similarity — pairwise Jaccard, cosine or overlap coefficients over neighbor sets (deduped; loops excluded; directed: true compares out-neighborhoods). The result is all-pairs, so it holds O(n²) counts like floydWarshall. Async (round 69): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the shared-neighbor counts are computed — under 'auto' the GPU's A·Aᵀ matmul is used only on graphs dense enough to beat the CPU's wedge walk. v4-only — v3 has no counterpart. | Source |
| API | eles.nodes | Implemented | The nodes in this collection, optionally filtered. | Source |
| API | eles.nonempty | Implemented | Whether the collection holds at least one element. | Source |
| API | eles.nonorphans | Implemented | The collection's nodes that have a parent. | Source |
| API | eles.not | Implemented | Alias of eles.difference. This collection's elements that are not in other. | Source |
| API | eles.numericStyle | Implemented | The numeric value of a numeric style prop. | Source |
| API | eles.numericStyleUnits | Replaced | Use eles.style() for the resolved value; geometry accessors return model pixels. The v3 spelling is not public in v4. | Record |
| API | eles.off | Implemented | Stop listening on each element of this collection. | Source |
| API | eles.on | Implemented | Listen for events on each element of this collection. The handler is bound per element, and keeps firing across slot compaction — listeners repair with their elements rather than going stale. | Source |
| API | eles.once | Implemented | Alias of eles.one. Like on(), but each element's handler runs at most once. | Source |
| API | eles.one | Implemented | Like on(), but each element's handler runs at most once. | Source |
| API | eles.openNeighborhood | Implemented | Alias of eles.neighborhood. The open neighbourhood: the incident edges and the nodes on their far ends, ignoring edge direction, excluding the collection's own elements. | Source |
| API | eles.or | Implemented | Alias of eles.union. The union of the two collections, deduped. | Source |
| API | eles.orphans | Implemented | The collection's nodes without a parent. | Source |
| API | eles.outdegree | Implemented | The first element's out-degree, in O(1). Singular, like degree(). | Source |
| API | eles.outerHeight | Implemented | The full drawn height including the border. | Source |
| API | eles.outerWidth | Implemented | The full drawn width including the border — padded width plus the border width. This is the box bounds and endpoint clipping use. | Source |
| API | eles.outgoers | Implemented | The immediate outgoing neighbourhood: the edges leaving these nodes plus the nodes they point at. One hop only — use successors() for the transitive closure. | Source |
| API | eles.paddedHeight | Implemented | The drawn box height: content height plus twice the padding (v3's paddedHeight). Identical to height() for leaves, which have no padding. | Source |
| API | eles.paddedWidth | Implemented | The drawn box: core dims + 2 x padding (v3's paddedWidth). | Source |
| API | eles.padding | Implemented | v3-parity accessor: node padding. Leaves have no padding in v4 (no compound-free padding prop); parents answer the resolved auto-bounds padding (round 14.3). | Source |
| API | eles.pageRank | Implemented | PageRank over the (directed) subgraph. Async (round 65): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the power method runs; 'cpu' is the reproducible reference. | Source |
| API | eles.panify | Implemented | Make dragging these elements pan the viewport instead of moving them. Pannable overrides grabbable, as in v3. | Source |
| API | eles.pannable | Implemented | Whether dragging the first element pans the graph instead of grabbing it. | Source |
| API | eles.parallelEdges | Implemented | The edges sharing endpoints with these edges, in either direction — including each edge itself. These are the edges a bezier bundle fans apart. | Source |
| API | eles.parent | Implemented | Immediate parents of every node in the collection (unique). v4 always returns a proper collection — v3's single-element raw-ref shortcut (which also ignored the selector argument) is not ported. | Source |
| API | eles.parents | Implemented | All ancestors, level by level: every nearest parent first, then the grandparents, and so on (v3's iterated-parent() order). | Source |
| API | eles.point | Implemented | Alias of eles.position. Get or set the first element's model-space position (nodes only). | Source |
| API | eles.points | Implemented | Alias of eles.positions. Set every node's position, from a constant or per-element function. | Source |
| API | eles.pon | Implemented | Alias of eles.promiseOn. Resolve once the next matching event fires on any element of this collection — the promise form of one(). | Source |
| API | eles.position | Implemented | Get or set the first element's model-space position (nodes only). | Source |
| API | eles.positions | Implemented | Set every node's position, from a constant or per-element function. | Source |
| API | eles.predecessors | Implemented | Everything that reaches these nodes by following incoming edges, transitively. | Source |
| API | eles.promiseOn | Implemented | Resolve once the next matching event fires on any element of this collection — the promise form of one(). | Source |
| API | eles.randomWalkWithRestart | Implemented | Random walk with restart — network propagation from a seeds collection: a walker follows edges with probability 1−c and restarts at the seeds with probability c, and the stationary distribution scores every node by proximity to the seeds. Async (round 70); the vector iteration is O(E) per step on the CPU, so there is no GPU path — an explicit executor: 'gpu' rejects and points at randomWalkWithRestartProximity. On directed graphs a node with no out-edges absorbs the walk (scores can sum below 1). v4-only — v3 has no counterpart. | Source |
| API | eles.randomWalkWithRestartProximity | Implemented | All-pairs random-walk-with-restart proximity — the full matrix S = c·(I − (1−c)·W)⁻¹, whose column s is the walk restarting at s. Async (round 70): executor ('cpu' | 'gpu' | 'auto', default 'auto') picks between one sparse solve per column on the CPU and the dense Neumann iteration on the GPU — under 'auto' the GPU only on graphs dense enough to beat the per-column solves. All-pairs (O(n²) memory). v4-only — v3 has no counterpart. | Source |
| API | eles.reduce | Implemented | Fold the collection into a single value. | Source |
| API | eles.relativeComplement | Implemented | Alias of eles.difference. This collection's elements that are not in other. | Source |
| API | eles.relativePoint | Implemented | Alias of eles.relativePosition. Compound-relative position: the model position minus the immediate parent's (derived) position — the model position for orphans and compound-free graphs (round 14.3, v3 semantics). | Source |
| API | eles.relativePosition | Implemented | Compound-relative position: the model position minus the immediate parent's (derived) position — the model position for orphans and compound-free graphs (round 14.3, v3 semantics). | Source |
| API | eles.remove | Implemented | Remove these elements from the graph; incident edges of removed nodes cascade. Already-removed elements are skipped (no second remove event). | Source |
| API | eles.removeAllListeners | Replaced | Use eles.off(events) to remove listeners for the named events; the v3 removeAllListeners alias is not exposed on collections. | Record |
| API | eles.removeAttr | Implemented | Alias of eles.removeData. Remove sidecar data keys. | Source |
| API | eles.removeClass | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.removeCss | Implemented | Alias of eles.removeStyle. Remove per-element style bypasses from every element (round 63.4 — v3's removeStyle). The sheet-resolved values return through the normal apply, transitions included. | Source |
| API | eles.removed | Implemented | Whether the first element has been removed from the graph. A removed element's handle stays usable — reads are no-ops or undefined, and the cached id()/group() remain readable. | Source |
| API | eles.removeData | Implemented | Remove sidecar data keys. | Source |
| API | eles.removeListener | Implemented | Alias of eles.off. Stop listening on each element of this collection. | Source |
| API | eles.removeScratch | Implemented | Delete scratchpad keys from every element. | Source |
| API | eles.removeStyle | Implemented | Remove per-element style bypasses from every element (round 63.4 — v3's removeStyle). The sheet-resolved values return through the normal apply, transitions included. | Source |
| API | eles.renderedBoundingbox | Implemented | Alias of eles.renderedBoundingBox. boundingBox() transformed into rendered (on-screen) coordinates. | Source |
| API | eles.renderedBoundingBox | Implemented | boundingBox() transformed into rendered (on-screen) coordinates. | Source |
| API | eles.renderedControlPoints | Implemented | controlPoints() in rendered (CSS px) space. | Source |
| API | eles.renderedCss | Implemented | Alias of eles.renderedStyle. Like style(), but with length props (width, height, border-width, font-size) scaled into rendered (on-screen) px by the zoom. | Source |
| API | eles.renderedHeight | Implemented | height() scaled by the current zoom. | Source |
| API | eles.renderedMidpoint | Implemented | midpoint() in rendered (CSS px) space. | Source |
| API | eles.renderedOuterHeight | Implemented | outerHeight() scaled by the current zoom. | Source |
| API | eles.renderedOuterWidth | Implemented | outerWidth() scaled by the current zoom. | Source |
| API | eles.renderedPoint | Implemented | Alias of eles.renderedPosition. Get or set the first element's position in rendered (CSS px) space — position() put through the current pan and zoom. Writing unprojects back to model space, so the element lands under the given screen point at the current viewport. | Source |
| API | eles.renderedPosition | Implemented | Get or set the first element's position in rendered (CSS px) space — position() put through the current pan and zoom. Writing unprojects back to model space, so the element lands under the given screen point at the current viewport. | Source |
| API | eles.renderedSegmentPoints | Implemented | segmentPoints() in rendered (CSS px) space. | Source |
| API | eles.renderedSourceEndpoint | Implemented | sourceEndpoint() in rendered (CSS px) space. | Source |
| API | eles.renderedStyle | Implemented | Like style(), but with length props (width, height, border-width, font-size) scaled into rendered (on-screen) px by the zoom. | Source |
| API | eles.renderedTargetEndpoint | Implemented | targetEndpoint() in rendered (CSS px) space. | Source |
| API | eles.renderedWidth | Implemented | width() scaled by the current zoom — the on-screen width in CSS px. | Source |
| API | eles.restore | Excluded | Removed elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed. | Record |
| API | eles.roots | Implemented | Collection nodes with no non-loop incoming edge (whole-graph incidence, as in v3). | Source |
| API | eles.same | Implemented | Whether both collections hold exactly the same elements, ignoring order. | Source |
| API | eles.scratch | Implemented | Per-element scratchpad (plain JS, not a column): scratch() reads the first element's whole object, scratch(ns) one namespace, scratch(ns, val) / scratch(obj) write to every element. | Source |
| API | eles.segmentPoints | Implemented | The edge's segment points (model coords) — v3's getSegmentPoints: defined for segments and taxi edges (taxi derives its points), undefined otherwise. | Source |
| API | eles.select | Implemented | Select every selectable element, emitting select for each one that changed. Unselectable elements are skipped. | Source |
| API | eles.selectable | Implemented | Whether the first element may be selected by the user. The graph-wide cy.autounselectify() overrides this for user gestures. | Source |
| API | eles.selected | Implemented | Whether the first element is selected. | Source |
| API | eles.selectify | Implemented | Make these elements selectable. | Source |
| API | eles.shift | Implemented | Offset positions by a vector or along one axis. | Source |
| API | eles.show | Implemented | Show these elements — the display tier, v3's structural display: element. Shown elements take up space again, rejoin bounds and fit, and re-fan their bezier bundles. | Source |
| API | eles.siblings | Implemented | Nodes sharing a parent with the collection's nodes, excluding them; orphans are nobody's siblings (v3). | Source |
| API | eles.silentPosition | Excluded | Internal-only write, omitted from the typed public surface. Use position(). | Record |
| API | eles.silentPositions | Excluded | Internal-only write, omitted from the typed public surface. Use positions(). | Record |
| API | eles.silentShift | Excluded | Internal-only write, omitted from the typed public surface. Use shift(). | Record |
| API | eles.simRank | Implemented | SimRank — "two nodes are similar when their neighbors are similar", the Jeh–Widom recursive fixed point, iterated as dense products S′ = C·Q·S·Qᵀ. Async (round 70): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the iteration runs — under 'auto' the GPU only on graphs dense enough to beat the CPU's sparse form. The undirected default compares all neighbors; directed: true compares the classic in-neighborhoods. All-pairs (O(n²) memory). v4-only — v3 has no counterpart. | Source |
| API | eles.size | Implemented | The number of elements — the method form of length. | Source |
| API | eles.slice | Implemented | A sub-range of the collection, with Array#slice semantics (negative indices count from the end). | Source |
| API | eles.some | Implemented | Whether any element satisfies the predicate. Short-circuits. | Source |
| API | eles.sort | Implemented | A copy sorted by a comparator. Note that sort order is a property of the collection, not of drawing: v4 draw order is structural and there is no z-index. | Source |
| API | eles.sortByZIndex | Excluded | Z-index was removed; draw order is structural. | Record |
| API | eles.source | Implemented | The source node of the first edge. | Source |
| API | eles.sourceEndpoint | Implemented | The edge's source-side endpoint in model space, resolved through the route evaluator — so it accounts for curve family, node boundary clipping, haystack offsets and any manual source-endpoint. | Source |
| API | eles.sources | Implemented | The source nodes of every edge in the collection, deduped. | Source |
| API | eles.stop | Implemented | Stop every running animation on these elements (round 21: no queue — the v3 clearQueue argument is gone). | Source |
| API | eles.style | Implemented | Read resolved properties or set constant id-keyed bypasses. Bypasses export with the stylesheet and are replaced on a full sheet swap; mappers belong in the sheet. | Source |
| API | eles.subtract | Implemented | Alias of eles.difference. This collection's elements that are not in other. | Source |
| API | eles.successors | Implemented | Everything reachable by following outgoing edges, transitively — the edges and nodes of the forward closure, excluding these nodes themselves (unless a cycle reaches them). | Source |
| API | eles.symdiff | Implemented | Alias of eles.symmetricDifference. The elements in exactly one of the two collections. | Source |
| API | eles.symmetricDifference | Implemented | The elements in exactly one of the two collections. | Source |
| API | eles.takesUpSpace | Implemented | The space tier (round 22): shown elements occupy space — they join bb/fit and size their compound parents — even when visibility: 'hidden' keeps them from rendering. display-tier hide() clears it. | Source |
| API | eles.target | Implemented | The target node of the first edge. | Source |
| API | eles.targetEndpoint | Implemented | The edge's target-side endpoint in model space, resolved through the route evaluator — so it accounts for curve family, node boundary clipping, haystack offsets and any manual target-endpoint. | Source |
| API | eles.targets | Implemented | The target nodes of every edge in the collection, deduped. | Source |
| API | eles.tarjanStronglyConnected | Implemented | Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack. | Source |
| API | eles.tarjanStronglyConnectedComponents | Implemented | Alias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack. | Source |
| API | eles.toArray | Implemented | The elements as a plain array of length-1 collections. | Source |
| API | eles.toggleClass | Replaced | Classes were removed. Store category/state in element data and use query objects and conditional style mappers. | Record |
| API | eles.totalDegree | Implemented | The summed degree of every node in the collection — the whole-collection figure that degree() deliberately is not. | Source |
| API | eles.transparent | Implemented | Whether the first element is fully transparent — its effective opacity, with compound ancestors folded in, is exactly 0. | Source |
| API | eles.triangleCount | Implemented | Triangle counting: per-node triangle counts, local clustering coefficients, and the collection's transitivity, read over the simple undirected graph (direction ignored, parallel edges collapsed, loops excluded). Async (round 69): returns a promise, and executor ('cpu' | 'gpu' | 'auto', default 'auto') picks where the counting runs — under 'auto' the GPU's A²∘A matmul is used only on graphs dense enough to beat the CPU's sparse walk. v4-only — v3 has no counterpart. | Source |
| API | eles.trigger | Implemented | Alias of eles.emit. Emit an event on each element, bubbling through compound ancestors to the core. | Source |
| API | eles.tsc | Implemented | Alias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack. | Source |
| API | eles.tscc | Implemented | Alias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack. | Source |
| API | eles.u | Implemented | Alias of eles.union. The union of the two collections, deduped. | Source |
| API | eles.unbind | Replaced | Use eles.off(); legacy listener aliases were removed. | Record |
| API | eles.ungrabify | Implemented | Make these elements ungrabbable — the user can no longer drag them, while programmatic position writes still apply. | Source |
| API | eles.union | Implemented | The union of the two collections, deduped. | Source |
| API | eles.unlisten | Replaced | Use eles.off(); legacy listener aliases were removed. | Record |
| API | eles.unlock | Implemented | Unlock these elements. | Source |
| API | eles.unmerge | Implemented | Alias of eles.difference. This collection's elements that are not in other. | Source |
| API | eles.unpanify | Implemented | Stop these elements from panning the viewport when dragged, so a grabbable one becomes draggable again. | Source |
| API | eles.unselect | Implemented | Deselect every element, emitting unselect for each one that changed. | Source |
| API | eles.unselectify | Implemented | Make these elements unselectable. Does not deselect them; call unselect() for that. | Source |
| API | eles.visible | Implemented | Whether the first element renders (round 22: the derived FLAG_DRAWN — shown AND not visibility: 'hidden' on self or, for nodes, any ancestor; edges additionally fold their endpoints, v3's rule). The renderer's cull pass and CPU picking mask on the same bit, so an element that is not visible() neither draws nor picks. For space-tier state (in the bb, sizing its compound parent) see takesUpSpace() — an invisible element keeps its space. | Source |
| API | eles.width | Implemented | The first element's width — a node's model-space width, or an edge's stroke width. | Source |
| API | eles.xor | Implemented | Alias of eles.symmetricDifference. The elements in exactly one of the two collections. | Source |
| API | eles.zDepth | Excluded | Z-depth ordering is not part of the v4 public surface. | Record |
| API | eles['-'] | Replaced | Use eles.difference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['!'] | Replaced | Use eles.difference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['.'] | Replaced | Use eles.intersection(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['(-)'] | Replaced | Use eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['(+)'] | Replaced | Use eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['\\'] | Replaced | Use eles.difference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['&'] | Replaced | Use eles.intersection(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['^'] | Replaced | Use eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['+'] | Replaced | Use eles.union(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['|'] | Replaced | Use eles.union(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['n'] | Replaced | Use eles.intersection(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | eles['u'] | Replaced | Use eles.union(). Symbolic set-operation aliases are not exposed in v4. | Record |
| API | event.cy | Implemented | the core the event was raised on | Source |
| API | event.isDefaultPrevented | Implemented | Whether preventDefault() has been called. | Source |
| API | event.isPropagationStopped | Implemented | Whether stopPropagation() has been called — read by the compound bubbling walk (round 14.5), where it halts the phase sequence. | Source |
| API | event.layout | Implemented | the layout instance, on the layout lifecycle events | Source |
| API | event.originalEvent | Implemented | the DOM event behind a gesture, when there was one (round 41.4) | Source |
| API | event.position | Implemented | model-space position, on pointer-derived events | Source |
| API | event.preventDefault | Partial | Forwards to the original browser event. Does not cancel v4 gesture defaults; use the explicit interaction toggles. | Source |
| API | event.renderedPosition | Implemented | rendered-space position; derived from position and the viewport | Source |
| API | event.stopPropagation | Implemented | Stop the event bubbling to further phases: the remaining ancestors and the core do not see it (round 14.5). Returning false from a handler does the same. With originalEvent attached (round 41.4) this also calls the DOM event's stopPropagation(), so an outer DOM listener stops seeing it too. | Source |
| API | event.target | Implemented | the core for core-level events, the element for element events | Source |
| API | event.timeStamp | Implemented | when the event was built, Date.now() unless the caller supplied one | Source |
| API | event.type | Implemented | the event type, e.g. 'tap' — never namespaced (round 41.1) | Source |
| API | layout.addListener | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.bind | Replaced | Listen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter. | Record |
| API | layout.emit | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.listen | Replaced | Listen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter. | Record |
| API | layout.off | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.on | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.one | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.options | Implemented | the resolved options this run was created with | Source |
| API | layout.pon | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.promise | Implemented | Resolves at this run's layoutstop (immediately when never run). | Source |
| API | layout.promiseOn | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.reheat | Implemented | Heat a running layout back up (118.3), by calling the impl's optional reheat(). A force layout's infinite run ticks only while its field is moving and reheats itself on a drag, a moved node and an added or removed element; this is for a change it cannot see — an edge length that changed under a data mapping, a style that resized the boxes. An impl without one ignores it. | Source |
| API | layout.removeAllListeners | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.removeListener | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.run | Implemented | Start the layout. Emits layoutstart on the core, calls impl.run( ctx ) and awaits it if it returns a promise (the shape a GPU-resident layout needs). | Source |
| API | layout.start | Replaced | Use layout.run(). The v3 spelling is not public in v4. | Record |
| API | layout.stop | Implemented | Ask the layout to stop early, by calling the impl's optional stop(). An impl without one simply runs to completion. | Source |
| API | layout.trigger | Replaced | Layout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context. | Record |
| API | layout.unbind | Replaced | Listen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter. | Record |
| API | layout.unlisten | Replaced | Listen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter. | Record |
| Distribution | Official JSON schemas | Planned | Element, stylesheet and layout schemas are scoped; not shipped. | Source |
| Distribution | TypeScript declarations | Implemented | Public declarations are generated and shipped with the package. | Record |
| Distribution | UMD, CJS and ESM bundles | Implemented | Bundle builds exist, including minified UMD and ESM; release publication remains separate. | Record |
| Documentation | API reference generator | Implemented | Source JSDoc generates the status-site API preview. | Source |
| Documentation | Release documentation site | Planned | The release docs site is scoped as round 46; the current API page is a preview. | Record |
| Export | Headless image generation | Planned | Scoped headless SVG and raster-export investigation; current PNG/JPEG require a mounted renderer. | Source |
| Export | PDF export | Undecided | Follow-up over SVG export; backend choice and font embedding/outline fidelity require investigation. | Record |
| Export | PNG and JPEG | Implemented | Rendered image export via the public core methods; requires a mounted renderer. | Record |
| Export | SVG vector export | Planned | Minimum requirement for the first alpha, as clarified in the feature direction. SVG serialization is scoped in round 77; working vector output is required. PDF remains a separate undecided follow-up. | Source |
| Extensions | Core, collection and renderer extensions | Undecided | Demand-gated extension points remain deferred. Only the layout contract is public. | Record |
| Extensions | cyext extension toolchain | Planned | Scaffold, build and validate extensions against the v4 contract; scoped, not shipped. | Source |
| Interaction | Box selection | Implemented | Contain and overlap modes, with optional label inclusion. | Record |
| Interaction | Event namespaces and raw mouse/touch aliases | Excluded | Use the curated v4 event vocabulary; namespace parsing and raw alias re-emits were removed. | Record |
| Interaction | Parent versus edge drag targeting | Partial | Tap/hover resolves leaf > edge > parent. Initial pan-versus-grab and taphold still use synchronous node picking. | Record |
| Interaction | Pointer and wheel gestures | Implemented | Picking, dragging, pan, zoom, tap, double tap and context gestures. | Record |
| Interaction | Touch gestures | Implemented | Pinch zoom, two-finger context gestures and three-finger box selection. | Record |
| Interaction | Transient emphasis | Planned | Scoped hover highlight without stylesheet mutation; current applications can implement emphasis with existing style APIs. | Source |
| Interaction | Wheel behaviour refinements | Planned | Scoped ctrl/meta-wheel and trackpad behaviour changes; existing wheel zoom remains implemented. | Source |
| Layout | breadthfirst | Implemented | Directed levels with node-size-aware spacing and component packing. | Source |
| Layout | circle | Implemented | Circular placement with node-size-aware spacing and component packing. | Source |
| Layout | concentric | Implemented | Concentric rings from node scores, with component packing. | Source |
| Layout | cose | Replaced | Use force; the v3 cose option surface is not accepted unchanged. | Record |
| Layout | flow | Implemented | Layered directed layout with rank assignment, compound handling and edge routing support. | Source |
| Layout | force | Implemented | CPU and GPU force layout; constraints, component packing, overlap avoidance and infinite interactive runs. | Source |
| Layout | grid | Implemented | Grid placement with node-size-aware spacing and component packing. | Source |
| Layout | Layout extensions | Implemented | Pass implementations directly through the layout contract; no extension registry. | Source |
| Layout | pack | Implemented | Pack disconnected components while preserving their internal drawing. | Source |
| Layout | preset | Implemented | Place nodes at supplied or existing positions; parents derive from their children. | Source |
| Layout | radial | Implemented | Radial tree placement. | Source |
| Layout | random | Implemented | Random placement in a bounding box. | Source |
| Model | Attribute-table column views and filters | Planned | Scoped public column-view/filter affordances; current query objects remain available. | Source |
| Model | Automatic and explicit compaction | Implemented | Reclaim dead slots while preserving live handles and draw order. | Record |
| Model | Binary graph loading and export | Implemented | Load transferable binary payloads; numeric columns deserialize as views. Graph-level data imports at construction, not cy.add(). | Source |
| Model | Columnar storage | Implemented | Typed columns, indexed adjacency and compact element handles. | Record |
| Model | Compound graphs | Implemented | Hierarchy, subtree moves, inherited visibility and derived parent bounds. | Record |
| Model | Id-keyed payload reconciliation | Planned | Scoped patch/reconcile API for fresh payloads; current add/remove/data writes remain available. | Source |
| Model | Multiple viewers by cloning | Planned | Scoped viewer cloning API; separate independent instances already work. | Source |
| Model | Progressive ingest | Planned | Scoped chunked loading and first-frame progress; existing bulk loading is implemented. | Source |
| Model | Zero-copy census and follow-ups | Planned | Scoped measurement of loading and snapshot copies; no general zero-copy guarantee. | Source |
| Query | Element classes | Replaced | Use data fields and conditional style mappers. | Record |
| Query | Selector strings | Replaced | Use query objects and predicates; selector strings throw. | Record |
| Release | Cross-platform validation | Planned | Round 49 remains part of the release sequence; existing CI does not complete that scope. | Record |
| Release | Release engineering and bake | Planned | Rounds 50–51 cover release workflows, artifact publication and release validation. V4 is unreleased. | Record |
| Rendering | Annotations layer | Planned | Scoped world-space annotations with picking and export integration; unbuilt. | Source |
| Rendering | Automatic taxi tracks | Implemented | Live-position fan-out tracks, per-edge casing order and layout gap accommodation. | Record |
| Rendering | Background images | Implemented | Multiple images, SVG promotion and SDF icons; resource caps and degradation are documented. | Record |
| Rendering | Canvas fallback | Excluded | No canvas renderer fallback; headless model use remains available. | Record |
| Rendering | Cluster hulls and collapse proxies | Planned | Scoped hull geometry and aggregation proxies; current compound nodes are a separate implemented feature. | Source |
| Rendering | Curved and taxi edges | Implemented | Bezier, segments, taxi, rounded variants, loops, haystack and manual endpoints. | Record |
| Rendering | Edge-layer cap and join parity | Planned | Scoped round layer caps, join blending and arrow-reach fixes; current layer strokes retain recorded differences. | Source |
| Rendering | Elevated draw tier | Undecided | Demand-gated follow-up; z-index is excluded. | Record |
| Rendering | GPU edge bundling | Planned | Scoped force-directed edge bundling; current parallel-bezier routing is a separate implemented feature. | Source |
| Rendering | Hollow mid-arrow compositing | Undecided | Mid arrows are filled; the hollow mid-arrow gap remains an open scope call. | Record |
| Rendering | Label decluttering | Planned | Scoped priority and collision handling for dense labels; unbuilt. | Source |
| Rendering | Multiline and edge labels | Implemented | Wrapped labels, source/target labels, label geometry and bounds. | Record |
| Rendering | Node shapes and arrowhead vocabulary | Implemented | The v3 shape vocabulary is supported with normalized dashed names. Compositing deviations are tracked separately. | Record |
| Rendering | Overlapping translucent arrowheads | Partial | Heads composite; v3 destination-out flattening is not reproduced. | Record |
| Rendering | Very large parallel-edge bundles | Planned | Scoped GeneMANIA-scale bundle performance and fixture work; existing parallel edges are supported. | Source |
| Rendering | Rendering without WebGPU | Planned | Minimum requirement for the first alpha: working rendering in environments without WebGPU, likely via WebGL. Backend choice, capability selection and supported limits need definition and validation; current rendering still requires WebGPU. | Record |
| Rendering | WebGL2 fallback investigation | Planned | Scoped feasibility work informs the likely WebGL backend. The feature direction now requires non-WebGPU rendering for alpha; backend choice remains open, rather than whether to provide a fallback at all. | Source |
| Rendering | WebGPU renderer | Implemented | GPU drawing, culling, picking and mapped paint; browser WebGPU is required. | Record |
| Runtime | Additional runtime support investigation | Planned | Scoped capability/support matrix; no extra runtime support promise is made. | Source |
| Runtime | Bun headless | Implemented | Built bundles are covered by the cross-runtime smoke suite and CI. | Source |
| Runtime | Deno headless | Implemented | Built bundles are covered by the cross-runtime smoke suite and CI. | Source |
| Runtime | Device-loss recovery | Implemented | Reconstruct GPU state from CPU-owned data; exercised under lifecycle/load tests. | Record |
| Runtime | Mount and unmount | Implemented | Attach or detach rendering while retaining the CPU model. | Source |
| Runtime | Native Bun/Deno runners and GPU integration | Planned | Scoped native full-suite measurements and Deno adapter work; existing headless bundle smoke coverage is implemented. | Source |
| Runtime | Node headless | Implemented | Headless package operation is covered by the Node runtime smoke suite. | Source |
| Style | active-bg-color | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | active-bg-opacity | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | active-bg-size | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | arrow-scale | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-blacken | Replaced | Compute the shade in a colour mapper range. | Record |
| Style | background-clip | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-fill | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-fit | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-gradient-direction | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-gradient-stop-colors | Partial | Gradient stops are supported with a maximum of five stops. | Source |
| Style | background-gradient-stop-positions | Partial | Gradient stops are supported with a maximum of five stops. | Source |
| Style | background-height | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-height-relative-to | Excluded | Background image sizing uses the v4 image-box rules; the v3 relative-to toggle is not supported. | Record |
| Style | background-image | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-containment | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-crossorigin | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-smoothing | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-image-type | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-offset-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-offset-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-position-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-position-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-repeat | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | background-width-relative-to | Excluded | Background image sizing uses the v4 image-box rules; the v3 relative-to toggle is not supported. | Record |
| Style | border-cap | Excluded | Dash ends use perpendicular butt cuts; no configurable border cap. | Record |
| Style | border-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-dash-offset | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-dash-pattern | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-join | Excluded | Border joins follow the shape geometry; no configurable border join. | Record |
| Style | border-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-position | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-style | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | border-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | bounds-expansion | Excluded | Bounds are derived from the drawn geometry; no manual expansion property. | Record |
| Style | box-select-labels | Replaced | Use the core option boxSelectionIncludesLabels. | Record |
| Style | box-selection | Replaced | Use boxSelectionMode ('contain' or 'overlap'); disable events for the v3 'none' behaviour. | Record |
| Style | chart | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | chart-colors | Implemented | Up to 16 slice colours; constant list. Per-slice alpha belongs in the colour values. | Source |
| Style | chart-direction | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | chart-hole | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | chart-opacity | Implemented | Overall opacity folded into every chart slice alpha. | Source |
| Style | chart-size | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | chart-start-angle | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | chart-values | Implemented | Up to 16 absolute fractions (or percentages); values are not normalized. Constants or a data passthrough. | Source |
| Style | color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | compound-sizing-wrt-labels | Partial | Parents only; 'exclude' is accepted, 'include' throws. Compound auto-bounds use child bodies; public bounding boxes can include labels. | Source |
| Style | content | Replaced | Use label. | Record |
| Style | control-point-distance | Replaced | Use control-point-distances (plural). | Record |
| Style | control-point-distances | Implemented | Edge routing array; constants only. Use an id-keyed style bypass for a different array on each edge. | Source |
| Style | control-point-step-size | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | control-point-weight | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | control-point-weights | Implemented | Edge routing array; constants only. Use an id-keyed style bypass for a different array on each edge. | Source |
| Style | corner-radius | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | curve-style | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | display | Replaced | Use show()/hide() for structural visibility, or the visibility property for paint-only hiding. | Record |
| Style | edge-distances | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | edge-text-rotation | Replaced | Use text-rotation. | Record |
| Style | events | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | font-family | Partial | One global font face per atlas; per-element font families and mappers are excluded. | Source |
| Style | font-size | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | font-style | Partial | Global font setting; per-element variation and mappers are excluded. | Source |
| Style | font-weight | Partial | Global font setting; per-element variation and mappers are excluded. | Source |
| Style | ghost | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | ghost-offset-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | ghost-offset-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | ghost-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | haystack-radius | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | height | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | label | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-cap | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-dash-offset | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-dash-pattern | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-fill | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-gradient-stop-colors | Partial | Gradient stops are supported with a maximum of five stops. | Source |
| Style | line-gradient-stop-positions | Partial | Gradient stops are supported with a maximum of five stops. | Source |
| Style | line-height | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-outline-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-outline-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | line-style | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | loop-direction | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | loop-sweep | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | mid-source-arrow-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | mid-source-arrow-fill | Undecided | Not supported: mid arrows are filled at standard width. Hollow-mid-arrow scope remains an open design call. | Record |
| Style | mid-source-arrow-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | mid-source-arrow-width | Not implemented | Mid arrows use the standard width; this v3 width override has no v4 spelling. | Record |
| Style | mid-target-arrow-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | mid-target-arrow-fill | Undecided | Not supported: mid arrows are filled at standard width. Hollow-mid-arrow scope remains an open design call. | Record |
| Style | mid-target-arrow-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | mid-target-arrow-width | Not implemented | Mid arrows use the standard width; this v3 width override has no v4 spelling. | Record |
| Style | min-height | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | min-height-bias-bottom | Replaced | The min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space. | Record |
| Style | min-height-bias-top | Replaced | The min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space. | Record |
| Style | min-width | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | min-width-bias-left | Replaced | The min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space. | Record |
| Style | min-width-bias-right | Replaced | The min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space. | Record |
| Style | min-zoomed-font-size | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outline-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outline-offset | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outline-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outline-style | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outline-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | outside-texture-bg-color | Excluded | Removed with textureOnViewport; v4 does not use the canvas-era viewport texture. | Record |
| Style | outside-texture-bg-opacity | Excluded | Removed with textureOnViewport; v4 does not use the canvas-era viewport texture. | Record |
| Style | overlay-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | overlay-corner-radius | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | overlay-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | overlay-padding | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | overlay-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | padding | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | padding-bottom | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | padding-left | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | padding-relative-to | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | padding-right | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | padding-top | Implemented | Compound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding. | Source |
| Style | pie-1-background-color | Replaced | Use chart: 'pie' and chart-colors[0]. | Record |
| Style | pie-1-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[0]; chart-opacity controls the whole chart. | Record |
| Style | pie-1-background-size | Replaced | Use chart: 'pie' and chart-values[0] (fraction or percentage). | Record |
| Style | pie-10-background-color | Replaced | Use chart: 'pie' and chart-colors[9]. | Record |
| Style | pie-10-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[9]; chart-opacity controls the whole chart. | Record |
| Style | pie-10-background-size | Replaced | Use chart: 'pie' and chart-values[9] (fraction or percentage). | Record |
| Style | pie-11-background-color | Replaced | Use chart: 'pie' and chart-colors[10]. | Record |
| Style | pie-11-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[10]; chart-opacity controls the whole chart. | Record |
| Style | pie-11-background-size | Replaced | Use chart: 'pie' and chart-values[10] (fraction or percentage). | Record |
| Style | pie-12-background-color | Replaced | Use chart: 'pie' and chart-colors[11]. | Record |
| Style | pie-12-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[11]; chart-opacity controls the whole chart. | Record |
| Style | pie-12-background-size | Replaced | Use chart: 'pie' and chart-values[11] (fraction or percentage). | Record |
| Style | pie-13-background-color | Replaced | Use chart: 'pie' and chart-colors[12]. | Record |
| Style | pie-13-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[12]; chart-opacity controls the whole chart. | Record |
| Style | pie-13-background-size | Replaced | Use chart: 'pie' and chart-values[12] (fraction or percentage). | Record |
| Style | pie-14-background-color | Replaced | Use chart: 'pie' and chart-colors[13]. | Record |
| Style | pie-14-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[13]; chart-opacity controls the whole chart. | Record |
| Style | pie-14-background-size | Replaced | Use chart: 'pie' and chart-values[13] (fraction or percentage). | Record |
| Style | pie-15-background-color | Replaced | Use chart: 'pie' and chart-colors[14]. | Record |
| Style | pie-15-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[14]; chart-opacity controls the whole chart. | Record |
| Style | pie-15-background-size | Replaced | Use chart: 'pie' and chart-values[14] (fraction or percentage). | Record |
| Style | pie-16-background-color | Replaced | Use chart: 'pie' and chart-colors[15]. | Record |
| Style | pie-16-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[15]; chart-opacity controls the whole chart. | Record |
| Style | pie-16-background-size | Replaced | Use chart: 'pie' and chart-values[15] (fraction or percentage). | Record |
| Style | pie-2-background-color | Replaced | Use chart: 'pie' and chart-colors[1]. | Record |
| Style | pie-2-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[1]; chart-opacity controls the whole chart. | Record |
| Style | pie-2-background-size | Replaced | Use chart: 'pie' and chart-values[1] (fraction or percentage). | Record |
| Style | pie-3-background-color | Replaced | Use chart: 'pie' and chart-colors[2]. | Record |
| Style | pie-3-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[2]; chart-opacity controls the whole chart. | Record |
| Style | pie-3-background-size | Replaced | Use chart: 'pie' and chart-values[2] (fraction or percentage). | Record |
| Style | pie-4-background-color | Replaced | Use chart: 'pie' and chart-colors[3]. | Record |
| Style | pie-4-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[3]; chart-opacity controls the whole chart. | Record |
| Style | pie-4-background-size | Replaced | Use chart: 'pie' and chart-values[3] (fraction or percentage). | Record |
| Style | pie-5-background-color | Replaced | Use chart: 'pie' and chart-colors[4]. | Record |
| Style | pie-5-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[4]; chart-opacity controls the whole chart. | Record |
| Style | pie-5-background-size | Replaced | Use chart: 'pie' and chart-values[4] (fraction or percentage). | Record |
| Style | pie-6-background-color | Replaced | Use chart: 'pie' and chart-colors[5]. | Record |
| Style | pie-6-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[5]; chart-opacity controls the whole chart. | Record |
| Style | pie-6-background-size | Replaced | Use chart: 'pie' and chart-values[5] (fraction or percentage). | Record |
| Style | pie-7-background-color | Replaced | Use chart: 'pie' and chart-colors[6]. | Record |
| Style | pie-7-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[6]; chart-opacity controls the whole chart. | Record |
| Style | pie-7-background-size | Replaced | Use chart: 'pie' and chart-values[6] (fraction or percentage). | Record |
| Style | pie-8-background-color | Replaced | Use chart: 'pie' and chart-colors[7]. | Record |
| Style | pie-8-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[7]; chart-opacity controls the whole chart. | Record |
| Style | pie-8-background-size | Replaced | Use chart: 'pie' and chart-values[7] (fraction or percentage). | Record |
| Style | pie-9-background-color | Replaced | Use chart: 'pie' and chart-colors[8]. | Record |
| Style | pie-9-background-opacity | Replaced | Use chart: 'pie' and the alpha component of chart-colors[8]; chart-opacity controls the whole chart. | Record |
| Style | pie-9-background-size | Replaced | Use chart: 'pie' and chart-values[8] (fraction or percentage). | Record |
| Style | pie-hole | Replaced | Use chart: 'pie' and chart-hole. | Record |
| Style | pie-size | Replaced | Use chart: 'pie' and chart-size. | Record |
| Style | pie-start-angle | Replaced | Use chart: 'pie' and chart-start-angle. | Record |
| Style | position | Replaced | Use ele.position(); position is not a style property. | Record |
| Style | radius-type | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | segment-distance | Replaced | Use segment-distances (plural). | Record |
| Style | segment-distances | Implemented | Edge routing array; constants only. Use an id-keyed style bypass for a different array on each edge. | Source |
| Style | segment-radii | Implemented | Edge routing array; constants only. Use an id-keyed style bypass for a different array on each edge. | Source |
| Style | segment-radius | Replaced | Use segment-radii (plural). | Record |
| Style | segment-weight | Replaced | Use segment-weights (plural). | Record |
| Style | segment-weights | Implemented | Edge routing array; constants only. Use an id-keyed style bypass for a different array on each edge. | Source |
| Style | selection-box-border-color | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | selection-box-border-width | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | selection-box-color | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | selection-box-opacity | Implemented | Core theming; set in the core stylesheet group. Constants only. | Source |
| Style | shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | shape-polygon-points | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-arrow-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-arrow-fill | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-arrow-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-arrow-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-distance-from-node | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-endpoint | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-label | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-text-margin-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-text-margin-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-text-offset | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | source-text-rotation | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | stripe-1-background-color | Replaced | Use chart: 'stripes' and chart-colors[0]. | Record |
| Style | stripe-1-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[0]; chart-opacity controls the whole chart. | Record |
| Style | stripe-1-background-size | Replaced | Use chart: 'stripes' and chart-values[0] (fraction or percentage). | Record |
| Style | stripe-10-background-color | Replaced | Use chart: 'stripes' and chart-colors[9]. | Record |
| Style | stripe-10-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[9]; chart-opacity controls the whole chart. | Record |
| Style | stripe-10-background-size | Replaced | Use chart: 'stripes' and chart-values[9] (fraction or percentage). | Record |
| Style | stripe-11-background-color | Replaced | Use chart: 'stripes' and chart-colors[10]. | Record |
| Style | stripe-11-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[10]; chart-opacity controls the whole chart. | Record |
| Style | stripe-11-background-size | Replaced | Use chart: 'stripes' and chart-values[10] (fraction or percentage). | Record |
| Style | stripe-12-background-color | Replaced | Use chart: 'stripes' and chart-colors[11]. | Record |
| Style | stripe-12-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[11]; chart-opacity controls the whole chart. | Record |
| Style | stripe-12-background-size | Replaced | Use chart: 'stripes' and chart-values[11] (fraction or percentage). | Record |
| Style | stripe-13-background-color | Replaced | Use chart: 'stripes' and chart-colors[12]. | Record |
| Style | stripe-13-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[12]; chart-opacity controls the whole chart. | Record |
| Style | stripe-13-background-size | Replaced | Use chart: 'stripes' and chart-values[12] (fraction or percentage). | Record |
| Style | stripe-14-background-color | Replaced | Use chart: 'stripes' and chart-colors[13]. | Record |
| Style | stripe-14-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[13]; chart-opacity controls the whole chart. | Record |
| Style | stripe-14-background-size | Replaced | Use chart: 'stripes' and chart-values[13] (fraction or percentage). | Record |
| Style | stripe-15-background-color | Replaced | Use chart: 'stripes' and chart-colors[14]. | Record |
| Style | stripe-15-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[14]; chart-opacity controls the whole chart. | Record |
| Style | stripe-15-background-size | Replaced | Use chart: 'stripes' and chart-values[14] (fraction or percentage). | Record |
| Style | stripe-16-background-color | Replaced | Use chart: 'stripes' and chart-colors[15]. | Record |
| Style | stripe-16-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[15]; chart-opacity controls the whole chart. | Record |
| Style | stripe-16-background-size | Replaced | Use chart: 'stripes' and chart-values[15] (fraction or percentage). | Record |
| Style | stripe-2-background-color | Replaced | Use chart: 'stripes' and chart-colors[1]. | Record |
| Style | stripe-2-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[1]; chart-opacity controls the whole chart. | Record |
| Style | stripe-2-background-size | Replaced | Use chart: 'stripes' and chart-values[1] (fraction or percentage). | Record |
| Style | stripe-3-background-color | Replaced | Use chart: 'stripes' and chart-colors[2]. | Record |
| Style | stripe-3-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[2]; chart-opacity controls the whole chart. | Record |
| Style | stripe-3-background-size | Replaced | Use chart: 'stripes' and chart-values[2] (fraction or percentage). | Record |
| Style | stripe-4-background-color | Replaced | Use chart: 'stripes' and chart-colors[3]. | Record |
| Style | stripe-4-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[3]; chart-opacity controls the whole chart. | Record |
| Style | stripe-4-background-size | Replaced | Use chart: 'stripes' and chart-values[3] (fraction or percentage). | Record |
| Style | stripe-5-background-color | Replaced | Use chart: 'stripes' and chart-colors[4]. | Record |
| Style | stripe-5-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[4]; chart-opacity controls the whole chart. | Record |
| Style | stripe-5-background-size | Replaced | Use chart: 'stripes' and chart-values[4] (fraction or percentage). | Record |
| Style | stripe-6-background-color | Replaced | Use chart: 'stripes' and chart-colors[5]. | Record |
| Style | stripe-6-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[5]; chart-opacity controls the whole chart. | Record |
| Style | stripe-6-background-size | Replaced | Use chart: 'stripes' and chart-values[5] (fraction or percentage). | Record |
| Style | stripe-7-background-color | Replaced | Use chart: 'stripes' and chart-colors[6]. | Record |
| Style | stripe-7-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[6]; chart-opacity controls the whole chart. | Record |
| Style | stripe-7-background-size | Replaced | Use chart: 'stripes' and chart-values[6] (fraction or percentage). | Record |
| Style | stripe-8-background-color | Replaced | Use chart: 'stripes' and chart-colors[7]. | Record |
| Style | stripe-8-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[7]; chart-opacity controls the whole chart. | Record |
| Style | stripe-8-background-size | Replaced | Use chart: 'stripes' and chart-values[7] (fraction or percentage). | Record |
| Style | stripe-9-background-color | Replaced | Use chart: 'stripes' and chart-colors[8]. | Record |
| Style | stripe-9-background-opacity | Replaced | Use chart: 'stripes' and the alpha component of chart-colors[8]; chart-opacity controls the whole chart. | Record |
| Style | stripe-9-background-size | Replaced | Use chart: 'stripes' and chart-values[8] (fraction or percentage). | Record |
| Style | stripe-direction | Replaced | Use chart: 'stripes' and chart-direction. | Record |
| Style | stripe-size | Replaced | Use chart: 'stripes' and chart-size. | Record |
| Style | target-arrow-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-arrow-fill | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-arrow-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-arrow-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-distance-from-node | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-endpoint | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-label | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-text-margin-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-text-margin-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-text-offset | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | target-text-rotation | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | taxi-direction | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | taxi-radius | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | taxi-track | Implemented | Assign an explicit taxi track for automatic turn routing. | Source |
| Style | taxi-track-spacing | Implemented | Control spacing between automatic taxi tracks. | Source |
| Style | taxi-turn | Implemented | Numeric and percentage turns plus v4 'auto': assign fan-out tracks from live positions. | Source |
| Style | taxi-turn-min-distance | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-background-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-background-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-background-padding | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-background-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-border-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-border-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-border-style | Planned | Dashed label-box borders are scoped in round 76.3; current borders remain solid. | Source |
| Style | text-border-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-events | Partial | Node labels only; the edges group rejects this property. Edge labels are not pickable. | Source |
| Style | text-halign | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-justification | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-margin-x | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-margin-y | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-max-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-metrics | Replaced | Use eles.labelBoundingBox() for measured label extents. | Record |
| Style | text-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-outline-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-outline-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-outline-width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-overflow-wrap | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-rotation | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-transform | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-valign | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | text-wrap | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | transition-delay | Partial | Global transition configuration; plain milliseconds only. Time-unit strings and per-element mappers are excluded. | Source |
| Style | transition-duration | Partial | Global transition configuration; plain milliseconds only. Time-unit strings and per-element mappers are excluded. | Source |
| Style | transition-property | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | transition-timing-function | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | underlay-color | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | underlay-corner-radius | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | underlay-opacity | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | underlay-padding | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | underlay-shape | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | visibility | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | width | Implemented | Accepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler. | Source |
| Style | z-compound-depth | Excluded | Draw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed. | Record |
| Style | z-index | Excluded | Draw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed. | Record |
| Style | z-index-compare | Excluded | Draw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed. | Record |
| Styling | Additional chart kinds | Planned | Heat strips, radial heat, signed bars, declarative chart colour scales and a measured increase to the slice ceiling are scoped in round 80. | Source |
| Styling | CSS strings and function styles | Replaced | Use grouped declarative styles and mapper specifications. | Record |
| Styling | Declarative mappers | Implemented | Data mappings, scales and state conditions compile into the style engine. | Source |
| Styling | Node charts | Implemented | Pie and stripe charts through the chart property family. | Source |
| Styling | Per-element bypasses | Implemented | Id-keyed constants with v3 method sugar, serialized as part of the stylesheet. | Record |
| Styling | Screen-space sizing investigation | Planned | Scoped design investigation; viewport-fixed labels remain excluded from current support. | Source |
No features match these filters.