cytoscape.js v4 HEAD · 47a5c66d · built 2026-09-16 14:48Z

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

Current v4 support; see comments for limitations and alternatives.
CategoryFeatureStatusCommentsReference
PerformanceCore operations versus v3ImplementedArchived 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
PerformanceRendering versus v3ImplementedArchived 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
PerformanceGPU algorithms versus v4 CPUPartialArchived 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
PerformanceGPU algorithm bottleneck removalPlannedSparse matrix operations, affinity propagation and closeness follow-ups target measured bottlenecks; GPU availability alone does not imply a speedup.Source
PerformanceCPU algorithms without blocking interactionPlannedWorker-pool executor aims to keep CPU work off the UI thread; measure transfer overhead and crossover size as well as throughput.Source
PerformanceFirst frame during progressive loadingPlannedChunked ingestion targets time to first useful frame, separately from total load time and peak memory.Source
PerformanceLoading and snapshot copy budgetPlannedInventory copies and their purpose before removing them; zero-copy is not an end-to-end guarantee.Source
PerformanceWorker-hosted renderingPartialOffscreenCanvas host exists; image forwarding, page fonts and GPU force/tween proxy work remain limitations. Measure main-thread responsiveness separately from draw throughput.Source
PerformanceApplication interaction latency budgetsProposedMeasure 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
PerformanceChart-heavy and blob-heavy scene budgetsProposedMeasure 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
PerformanceLarge-graph memory ceiling and graceful degradationUndecidedScale-ceiling bisection and VRAM budgets are open ideas; establish CPU/GPU memory ceilings and allocation-failure behaviour, rather than claiming million-node support.Record
PerformanceLong-session renderer stabilityUndecidedHours-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
PerformancePerformance regression budgets by workloadProposedDefine 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 experienceBuiltin layouts for major audited use casesImplementedOrganic 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 experienceComponent packing without an external pluginImplementedDiscrete layouts can pack components; pack preserves existing component drawings. Covers disconnected enrichment networks and removes the need for an app-owned packer.Source
Developer experienceOne force layout for constraints and packingImplementedForce 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 experienceLayout quality audit & iterationPartialRound 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 experienceChoose a layout by taskProposedProvide 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 experienceMeasure consumer simplificationProposedPort 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 experienceTyped application dataUndecidedElement-data generics are an open idea: carry app field types through queries and mappers, while preserving a practical dynamic-data escape hatch.Record
Developer experienceMigration automationUndecidedA 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 experienceFramework lifecycle integrationUndecidedReact-first bindings are an open idea; focus on mount/unmount, controlled updates and batching before proliferating framework wrappers.Record
Developer experienceId-stable incremental app updatesPlannedReconcile fresh payloads by ID while preserving unchanged state; intended to reduce hand-written add/remove/update diffs.Source
Developer experienceLinked-view state contractProposedDefine 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 v2Pie, stripe and donut node summariesImplementedExisting 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 v2Heat-strip node chartsPlannedScoped compact per-value heat colours for multivariate data; distinct from percentage-based stripe charts.Source
Cytoscape Web v2Radial-heat node chartsPlannedScoped equal-angle sectors with value-driven colours; not a two-dimensional heat grid.Source
Cytoscape Web v2Signed bar node chartsPlannedScoped bars for signed values such as enrichment scores; current percentage slices skip negatives and cannot express this faithfully.Source
Cytoscape Web v2Declarative chart colour scalesPlannedScoped compiled per-value colour scale so consumers need not generate per-node colour arrays or function styles.Source
Cytoscape Web v2More than 16 chart slicesPlannedRound 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 v2Desktop/web portable visual-style subsetProposedDefine 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 v2CX2 translation in coreExcludedRecorded 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 v2Portable-style adapter conformanceProposedUse 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 v2Picked and exportable annotationsPlannedWorld-space annotations target reusable in-graph explanatory graphics, with picking and export integration; avoid separate app canvas overlays.Source
Cytoscape Web v2Scalable attribute-table filteringPlannedColumn-view and filter affordances target coordinated table/network exploration; keep data transfer and selection costs measurable.Source
Application workflowsEnrichmentMap convex cluster regionsPlannedNative 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 workflowsEnrichmentMap organic blob regionsUndecidedRound 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 workflowsOverlapping cluster membershipProposedExplore 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 workflowsCompound collapse with aggregate edgesPlannedCollapse 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 workflowsGeneMANIA large parallel-edge bundlesPlannedFixture-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 workflowsEvidence-channel explorationProposedProvide a GeneMANIA-style example combining channel filtering, selection and aggregate-edge summaries; validate identity/provenance preservation before considering more core API.Record
Application workflowsPriority-aware label declutteringPlannedScoped collision and priority handling for dense networks; app-selected or important genes should remain understandable at scale.Source
Application workflowsTransient neighbourhood emphasisPlannedScoped hover highlighting without stylesheet mutation can remove common app glue and repeated restyling costs.Source
Application workflowsBiological fixture acceptance suiteProposedVersion 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 capabilitiesSemantic zoomProposedChange 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 capabilitiesSemantic zoom for compoundsProposedSub-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 capabilitiesExtension-to-core selection criteriaProposedPromote 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 capabilitiesLasso and reusable spatial queriesUndecidedOpen idea for irregular-region selection and app hit testing; establish coordinate, visibility and performance contracts before growing the gesture surface.Record
Core capabilitiesUndoable graph editsUndecidedSnapshots versus inverse operations remain open; define batch transaction semantics and memory limits before promising a general undo stack.Record
Core capabilitiesKeyboard and assistive-technology navigationUndecidedKeyboard 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 capabilitiesInternational labelsUndecidedCJK coverage, then shaping/bidi and emoji, require explicit font and dependency choices; present label rendering does not establish complete language coverage.Record
Core capabilitiesPortable saved-session contractProposedBuild 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
AlgorithmsGPU algorithm performance follow-upsPlannedSparse SpMV, affinity-propagation memory access, unweighted closeness and normalized heat Laplacians remain scoped follow-ups. Existing algorithms work.Source
AlgorithmsWorker-pool CPU executorPlannedScoped CPU worker pool and workers executor; current CPU execution has no worker-pool option.Source
AnimationAnimation queueReplacedSequence using animation promises; there is no queue.Record
AnimationChannel animation and transitionsImplementedDisjoint channels compose, conflicts replace; promise sequencing, pause/resume/reverse and style transitions.Record
APIani.applyExcludedApplying without playback and scrubbing were excluded from the v4 animation handle. Use play(), pause(), resume() and reverse().Record
APIani.applyingExcludedApplying without playback and scrubbing were excluded from the v4 animation handle. Use play(), pause(), resume() and reverse().Record
APIani.completeReplacedUse ani.promise() to observe completion. The v3 spelling is not public in v4.Record
APIani.completedReplacedUse ani.promise() to observe completion. The v3 spelling is not public in v4.Record
APIani.pauseImplementedRound 24.3: freeze in place; the paused span leaves the timeline.Source
APIani.pausedImplementedWhether the animation is paused (round 24.3).Source
APIani.playImplementedEnqueue and start.Source
APIani.playingImplementedWhether the animation is running and not paused.Source
APIani.progressPartialRead elapsed fraction; the v3 setter/scrubbing form is excluded.Source
APIani.promiseImplementedThe completion promise.Source
APIani.resumeImplementedResume a paused animation with the clock shifted (round 24.3).Source
APIani.reverseImplementedSwap the tween's ends with elapsed remapped (round 24.3).Source
APIani.runReplacedUse ani.play(). The v3 spelling is not public in v4.Record
APIani.runningReplacedUse ani.playing(). The v3 spelling is not public in v4.Record
APIani.stopImplementedStop in place, or at the targets with jumpToEnd.Source
APIctx.boundingBoxImplementedThe scope's current bounding box, labels included.Source
APIctx.componentsImplementedThe 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
APIctx.cyImplementedthe core being laid outSource
APIctx.degreeOfImplementedO(1) degree off the CSR adjacency.Source
APIctx.edgeSlotsImplementedThe scope's edge slots.Source
APIctx.elesImplementedThe layout scope (handles tier); the whole graph unless this run came from eles.layout().Source
APIctx.endpointsImplementedThe live edge endpoint column (source,target node slots).Source
APIctx.finishImplementedLand 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
APIctx.heightImplementedThe viewport height in CSS px.Source
APIctx.layoutPositionsImplementedThe 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
APIctx.nodeDimensionsImplementedThe 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
APIctx.nodesImplementedThe scope's node handles (lazy — see eles).Source
APIctx.nodeSlotsImplementedThe 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
APIctx.optionsImplementedthe resolved layout options (custom knobs included)Source
APIctx.packComponentsImplementedSeparate 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
APIctx.positionsImplementedThe live position column (x,y interleaved by slot) — read it, write through setPositions.Source
APIctx.refreshScopeImplementedDrop 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
APIctx.setPositionsImplementedThe 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
APIctx.widthImplementedThe 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
APIcy.$ImplementedAlias of cy.filter. Filter the whole graph. Identical to elements( query ), kept for symmetry with eles.filter().Source
APIcy.$idImplementedAlias of cy.getElementById. Look up one element by id through the O(1) id index.Source
APIcy.addImplementedAdd elements to the graph and return them as a collection.Source
APIcy.addListenerImplementedAlias of cy.on. Listen for events on the core.Source
APIcy.animateImplementedAnimate 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
APIcy.animatedImplementedTrue while the viewport is animating.Source
APIcy.animationImplementedLike animate, but returns a handle with play/stop/promise — the viewport counterpart of eles.animation.Source
APIcy.attrImplementedAlias 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
APIcy.autolockImplementedGet or set whether every node is locked (immovable) regardless of its own locked flag — the graph-wide override.Source
APIcy.autolockNodesImplementedAlias of cy.autolock. Get or set whether every node is locked (immovable) regardless of its own locked flag — the graph-wide override.Source
APIcy.autoungrabifyImplementedGet 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
APIcy.autoungrabifyNodesImplementedAlias 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
APIcy.autounselectifyImplementedGet or set whether every element is unselectable regardless of its own selectable flag. Programmatic select() still applies.Source
APIcy.batchImplementedRun fn inside a startBatch()/endBatch() pair. The batch closes even if fn throws, so this is the form to prefer.Source
APIcy.batchDataReplacedUse cy.batch() around element data() writes.Record
APIcy.bindReplacedUse cy.on(); legacy listener aliases were removed.Record
APIcy.boxSelectionEnabledImplementedGet or set whether the box-selection gesture is available.Source
APIcy.boxSelectionIncludesLabelsImplementedWhether 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
APIcy.boxSelectionModeImplementedWhat 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
APIcy.byIdImplementedAlias of cy.getElementById. Look up one element by id through the O(1) id index.Source
APIcy.centerImplementedPan so the given elements are centred, leaving the zoom alone. Bounds include labels, as in fit().Source
APIcy.centreImplementedAlias of cy.center. Pan so the given elements are centred, leaving the zoom alone. Bounds include labels, as in fit().Source
APIcy.clearQueueExcludedThe animation queue was removed. Disjoint channels run concurrently; use promises to sequence animations.Record
APIcy.collectionPartialReturns an empty collection. The v3 collection(elements) constructor form is excluded; use queries or union() to build a collection.Source
APIcy.compactImplementedSlot-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
APIcy.containerImplementedThe DOM element this instance renders into, or null when headless or unmounted.Source
APIcy.createLayoutImplementedAlias of cy.layout. Make a layout over the whole graph. The layout does not run until you call .run() on it.Source
APIcy.dataImplementedGraph-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
APIcy.delayReplacedUse an application timer and promise sequencing; viewport animation handles have no delay helper.Record
APIcy.delayAnimationReplacedUse an application timer and promise sequencing; viewport animation handles have no delay helper.Record
APIcy.desktopTapThresholdImplementedCss px a mouse/pen press may move and still count as a tap (v3 parity; default 4).Source
APIcy.destroyImplementedTear 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
APIcy.destroyedImplementedWhether destroy() has run.Source
APIcy.edgesImplementedThe 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
APIcy.elementsImplementedAll elements, optionally filtered — nodes (in insertion order) then edges.Source
APIcy.elementsInBoxImplementedLive, 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
APIcy.emitImplementedEmit an event on the core.Source
APIcy.endBatchImplementedClose 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
APIcy.extentImplementedThe 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
APIcy.filterImplementedFilter the whole graph. Identical to elements( query ), kept for symmetry with eles.filter().Source
APIcy.fitImplementedPan and zoom so the given elements fill the viewport.Source
APIcy.forceRenderExcludedRemoved in the public API review; rendering follows dirty state.Record
APIcy.gcImplementedAlias 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
APIcy.getElementByIdImplementedLook up one element by id through the O(1) id index.Source
APIcy.hasCompoundNodesImplementedWhether 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
APIcy.hasElementWithIdImplementedWhether an element with this id exists, via the O(1) id index — cheaper than getElementById( id ).nonempty() because no handle is materialized.Source
APIcy.headlessImplementedWhether 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
APIcy.heightImplementedThe rendered height in CSS px. Headless instances report the configured headlessHeight (default 600).Source
APIcy.invalidateDimensionsReplacedUse cy.resize(). The v3 spelling is not public in v4.Record
APIcy.invalidateSizeImplementedAlias of cy.resize. Re-measure the container and redraw (no-op when headless).Source
APIcy.isReadyImplementedWhether the render pipeline is usable yet. Always true on a headless instance; on a rendered one this flips when cy.ready resolves.Source
APIcy.jpegImplementedAlias of cy.jpg. Export as JPEG: as png, plus quality (0..1) and a white default bg (JPEG has no alpha channel).Source
APIcy.jpgImplementedExport as JPEG: as png, plus quality (0..1) and a white default bg (JPEG has no alpha channel).Source
APIcy.jsonPartialExport the current graph and stylesheet, including bypasses. The v3 import/setter form is excluded; use constructor elements or cy.add() for loading.Source
APIcy.layoutImplementedMake a layout over the whole graph. The layout does not run until you call .run() on it.Source
APIcy.listenReplacedUse cy.on(); legacy listener aliases were removed.Record
APIcy.makeLayoutImplementedAlias of cy.layout. Make a layout over the whole graph. The layout does not run until you call .run() on it.Source
APIcy.maxZoomImplementedGet the maximum zoom, or set it. Setting re-clamps the current zoom.Source
APIcy.minZoomImplementedGet the minimum zoom, or set it. Setting re-clamps the current zoom.Source
APIcy.mountImplemented(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
APIcy.multiClickDebounceTimeImplementedThe dbltap/onetap debounce window in ms (v3 parity; default 250).Source
APIcy.mutableElementsReplacedUse cy.elements().Record
APIcy.nodesImplementedThe 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
APIcy.noNotificationsExcludedNotification suppression is absent; use cy.batch() for batched model changes.Record
APIcy.notifyExcludedRendering is driven by dirty state; explicit renderer notifications are not public.Record
APIcy.offImplementedStop 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
APIcy.offRenderReplacedUse cy.off('render', handler).Record
APIcy.onImplementedListen for events on the core.Source
APIcy.onceImplementedAlias of cy.one. Like on(), but the handler runs at most once and then removes itself.Source
APIcy.oneImplementedLike on(), but the handler runs at most once and then removes itself.Source
APIcy.onRenderReplacedUse cy.on('render', handler).Record
APIcy.optionsImplementedThe options the instance was constructed with.Source
APIcy.panImplementedGet the pan offset, or set it. Setting is a no-op while panningEnabled() is false.Source
APIcy.panByImplementedShift the pan by a delta. A no-op while panningEnabled() is false.Source
APIcy.panningEnabledImplementedGet or set whether panning is allowed at all — programmatic pan() included. Use userPanningEnabled() to block only the gesture.Source
APIcy.pickImplementedAsync GPU pick at a rendered (CSS px) position; resolves with the element under the point or null (always null when headless).Source
APIcy.pickNodePlannedScoped synchronous public node pick; not currently exposed.Source
APIcy.pngImplementedExport 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
APIcy.pointerCursorsImplementedGet 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
APIcy.ponImplementedAlias of cy.promiseOn. Resolve once the next matching event fires — the promise form of one().Source
APIcy.promiseOnImplementedResolve once the next matching event fires — the promise form of one().Source
APIcy.readyPartialPromise for renderer readiness, rather than the v3 callback method. Rejects if adapter acquisition fails.Source
APIcy.removeImplementedRemove elements from the graph. Removing a node removes its connected edges, and removing a compound parent removes its descendants. Equivalent to eles.remove().Source
APIcy.removeAllListenersImplementedRemove every listener on the core, including element-bound and delegated ones.Source
APIcy.removeAttrImplementedAlias of cy.removeData. Delete graph-level data keys. Emits data when anything was removed.Source
APIcy.removeDataImplementedDelete graph-level data keys. Emits data when anything was removed.Source
APIcy.removeListenerImplementedAlias 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
APIcy.removeScratchImplementedDelete graph-level scratch keys.Source
APIcy.renderedExtentImplementedThe rendered (on-screen) viewport rectangle.Source
APIcy.rendererExcludedInternal implementation hook, excluded from the supported public API. Use cy.stats() for the public frame-statistics snapshot.Record
APIcy.renderToExcludedDrawing into an external canvas is not supported by the WebGPU renderer.Record
APIcy.resetImplementedReset the viewport to zoom 1, pan (0, 0).Source
APIcy.resizeImplementedRe-measure the container and redraw (no-op when headless).Source
APIcy.scratchImplementedGraph-level scratchpad — like data(), but for transient state that is never exported and never emits. Namespace your keys (an extension convention: '_myExtension').Source
APIcy.selectionTypeImplementedHow 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
APIcy.serializeImplementedExport 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
APIcy.sizeImplementedRendered dimensions as { width, height }.Source
APIcy.startBatchImplementedOpen 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
APIcy.statsImplementedThe 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
APIcy.stopImplementedStop every running viewport animation (round 21: no queue — the v3 clearQueue argument is gone).Source
APIcy.stylePartialGet or replace the grouped declarative stylesheet. Selector blocks, CSS strings and functions are excluded; replacing the sheet also replaces bypasses.Source
APIcy.styleEnabledImplementedAlways 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
APIcy.svgPlannedPromise-based vector export is scoped in round 77; no current public method.Source
APIcy.tapholdDurationImplementedUnmoved-press duration before 'taphold' fires, ms (default 500 — v3's constant, configurable in v4).Source
APIcy.touchTapThresholdImplementedCss px a touch press may move and still count as a tap (v3 parity; default 8).Source
APIcy.triggerImplementedAlias of cy.emit. Emit an event on the core.Source
APIcy.unbindReplacedUse cy.off(); legacy listener aliases were removed.Record
APIcy.unlistenReplacedUse cy.off(); legacy listener aliases were removed.Record
APIcy.unmountImplementedDetach the renderer: the instance becomes headless (the model is CPU-canonical, so nothing is lost). No-op when already headless.Source
APIcy.userPanningEnabledImplementedGet or set whether the user may pan by dragging. Programmatic pan() is unaffected.Source
APIcy.userZoomingEnabledImplementedGet or set whether the user may zoom by wheel or pinch. Programmatic zoom() is unaffected.Source
APIcy.viewportImplementedSet zoom and/or pan together, emitting once.Source
APIcy.wheelSensitivityImplementedWheel-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
APIcy.widthImplementedThe rendered width in CSS px. Headless instances report the configured headlessWidth (default 800), so viewport maths works without a DOM.Source
APIcy.windowImplementedThe window this instance renders into, or null when there is no DOM (Node). v3 parity, for extensions that need the hosting realm.Source
APIcy.zoomImplementedGet the zoom level, or set it. Setting is a no-op while zoomingEnabled() is false, and the level is clamped to zoomRange().Source
APIcy.zoomingEnabledImplementedGet or set whether zooming is allowed at all — programmatic zoom() included. Use userZoomingEnabled() to block only the gesture.Source
APIcy.zoomRangeImplementedSet both zoom bounds; accepts (min, max) or { min, max }.Source
APIcytoscapeImplementedCreate 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
APIcytoscape.deserializeElementsImplementedDeserialize 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
APIcytoscape.serializeElementsImplementedSerialize 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
APIcytoscape.stylesheetReplacedSupply a grouped declarative stylesheet to cy.style() or the constructor. The chainable stylesheet builder was removed.Record
APIcytoscape.toColumnarElementsPartialConverts definitions to a self-contained columnar payload. Per-element locked, grabbable and pannable overrides are not carried by this conversion.Source
APIcytoscape.useReplacedPass a layout implementation directly through the registry-free layout contract. The v3 extension registry is absent.Record
APIcytoscape.warningsExcludedNo warning toggle: invalid input throws and recoverable conditions warn on the console.Record
APIeles.$idReplacedUse eles.getElementById(). The v3 spelling is not public in v4.Record
APIeles.abscompImplementedAlias of eles.absoluteComplement. All elements of the graph not in this collection.Source
APIeles.absoluteComplementImplementedAll elements of the graph not in this collection.Source
APIeles.activeImplementedWhether the first element is in the transient pressed ("active") state.Source
APIeles.addImplementedAlias of eles.union. The union of the two collections, deduped.Source
APIeles.addClassReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.addListenerImplementedAlias 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
APIeles.affinityPropagationImplementedAffinity propagation, which picks exemplars by message passing and so needs no target cluster count.Source
APIeles.allAreImplementedWhether every element matches the criterion.Source
APIeles.allAreNeighborsImplementedWhether every element of other is in this collection's neighborhood.Source
APIeles.allAreNeighboursImplementedAlias of eles.allAreNeighbors. Whether every element of other is in this collection's neighborhood.Source
APIeles.ancestorsImplementedAlias of eles.parents. All ancestors, level by level: every nearest parent first, then the grandparents, and so on (v3's iterated-parent() order).Source
APIeles.andImplementedAlias of eles.intersection. The elements present in both collections.Source
APIeles.animateImplementedAnimate these elements' style and/or position to explicit targets over duration ms, easing the normalized time.Source
APIeles.animatedImplementedTrue when any of these elements has a running animation.Source
APIeles.animationImplementedBuild an animation for these elements without starting it.Source
APIeles.anySameImplementedWhether the two collections share at least one element.Source
APIeles.apImplementedAlias of eles.affinityPropagation. Affinity propagation, which picks exemplars by message passing and so needs no target cluster count.Source
APIeles.aStarImplementedA shortest path between two nodes.Source
APIeles.attrImplementedAlias 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
APIeles.bbReplacedUse eles.boundingBox(). The v3 spelling is not public in v4.Record
APIeles.bcImplementedAlias 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
APIeles.bellmanFordImplementedBellman–Ford shortest paths, which unlike Dijkstra tolerates negative weights and reports negative cycles.Source
APIeles.betweennessCentralityImplementedBetweenness 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
APIeles.bfsImplementedAlias of eles.breadthFirstSearch. Breadth-first search from one or more roots over this collection's subgraph, walking slot-native over the CSR adjacency.Source
APIeles.bindReplacedUse eles.on(); legacy listener aliases were removed.Record
APIeles.boundingboxReplacedUse eles.boundingBox(). The v3 spelling is not public in v4.Record
APIeles.boundingBoxImplementedThe model-space box enclosing every element of the collection.Source
APIeles.breadthFirstSearchImplementedBreadth-first search from one or more roots over this collection's subgraph, walking slot-native over the CSR adjacency.Source
APIeles.ccImplementedAlias of eles.closenessCentrality. Closeness centrality of one node — the reciprocal of its summed shortest-path distances to the rest of the collection.Source
APIeles.ccnImplementedAlias 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
APIeles.childrenImplementedDirect children of every node, in link order per parent.Source
APIeles.classesReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.classNameReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.classNamesReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.clearQueueExcludedThe animation queue was removed. Disjoint channels run concurrently; use promises to sequence animations.Record
APIeles.cloneExcludedRemoved elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed.Record
APIeles.closedNeighborhoodImplementedThe open neighbourhood plus this collection's own nodes.Source
APIeles.closenessCentralityImplementedCloseness centrality of one node — the reciprocal of its summed shortest-path distances to the rest of the collection.Source
APIeles.closenessCentralityNormalisedImplementedAlias 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
APIeles.closenessCentralityNormalizedImplementedCloseness 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
APIeles.codirectedEdgesImplementedThe parallel edges pointing the same way — same source and same target — including each edge itself.Source
APIeles.collectionImplementedAn empty collection in the same core.Source
APIeles.commonAncestorsImplementedAncestors common to every element, closest first (an edge in the collection has no ancestors, so it empties the result — v3).Source
APIeles.complementImplementedAlias of eles.absoluteComplement. All elements of the graph not in this collection.Source
APIeles.componentImplementedThe whole-graph connected component containing the first element.Source
APIeles.componentsImplementedConnected components within this collection (undirected), each as a collection of the reached nodes plus the collection's edges internal to that component.Source
APIeles.componentsOfImplementedAlias 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
APIeles.connectedEdgesImplementedEvery 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
APIeles.connectedNodesImplementedThe endpoint nodes of every edge in this collection, deduped.Source
APIeles.containsImplementedWhether every element of other is also in this collection.Source
APIeles.controlPointsImplementedThe 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
APIeles.copyExcludedRemoved elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed.Record
APIeles.createLayoutImplementedAlias of eles.layout. A layout scoped to this collection.Source
APIeles.cssImplementedAlias 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
APIeles.cyImplementedThe core this collection belongs to.Source
APIeles.dataImplementeddata() 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
APIeles.dcImplementedAlias of eles.degreeCentrality. Degree centrality of one node relative to the collection.Source
APIeles.dcnImplementedAlias of eles.degreeCentralityNormalized. Degree centrality for every node, normalized to [0, 1].Source
APIeles.degreeImplementedThe first element's total degree, in + out, answered in O(1) off the adjacency index.Source
APIeles.degreeCentralityImplementedDegree centrality of one node relative to the collection.Source
APIeles.degreeCentralityNormalisedImplementedAlias of eles.degreeCentralityNormalized. Degree centrality for every node, normalized to [0, 1].Source
APIeles.degreeCentralityNormalizedImplementedDegree centrality for every node, normalized to [0, 1].Source
APIeles.delayImplementedA 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
APIeles.delayAnimationImplementedLike delay, but returns the handle instead of chaining.Source
APIeles.depthFirstSearchImplementedDepth-first search from one or more roots. Same options as breadthFirstSearch.Source
APIeles.descendantsImplementedThe subtree below every node in pre-order, excluding the nodes themselves.Source
APIeles.deselectImplementedAlias of eles.unselect. Deselect every element, emitting unselect for each one that changed.Source
APIeles.dfsImplementedAlias of eles.depthFirstSearch. Depth-first search from one or more roots. Same options as breadthFirstSearch.Source
APIeles.diffImplementedThree-way set difference against another collection.Source
APIeles.differenceImplementedThis collection's elements that are not in other.Source
APIeles.dijkstraImplementedDijkstra shortest paths from a root over non-negative weights.Source
APIeles.eachImplementedAlias of eles.forEach. Call fn for each element. Returning false from the callback stops the iteration early, as in v3.Source
APIeles.edgesImplementedThe edges in this collection, optionally filtered.Source
APIeles.edgesToImplementedThe edges running from this collection's nodes to others — edgesWith() restricted by direction.Source
APIeles.edgesWithImplementedThe edges connecting this collection's nodes with others, in either direction.Source
APIeles.effectiveOpacityImplementedThe 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
APIeles.effectiveResistanceImplementedEffective 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
APIeles.emitImplementedEmit an event on each element, bubbling through compound ancestors to the core.Source
APIeles.emptyImplementedWhether the collection holds no elements.Source
APIeles.eqImplementedThe element at an index, as a length-1 collection.Source
APIeles.equalImplementedAlias of eles.same. Whether both collections hold exactly the same elements, ignoring order.Source
APIeles.equalsImplementedAlias of eles.same. Whether both collections hold exactly the same elements, ignoring order.Source
APIeles.everyImplementedWhether every element satisfies the predicate. Short-circuits, and is vacuously true for an empty collection.Source
APIeles.fcmImplementedAlias 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
APIeles.filterImplementedThe subset matching the criterion.Source
APIeles.firstImplementedThe first element, as a length-1 collection.Source
APIeles.flashClassReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.floydWarshallImplementedFloyd–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
APIeles.forEachImplementedCall fn for each element. Returning false from the callback stops the iteration early, as in v3.Source
APIeles.fuzzyCMeansImplementedFuzzy 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
APIeles.getElementByIdImplementedFind a member by id. This is a linear scan of the collection; use cy.$id( id ) for the O(1) whole-graph index.Source
APIeles.grabbableImplementedPannable elements are not draggable, so pannable overrides grabbable (as in v3).Source
APIeles.grabbedImplementedWhether the first element is currently held by a drag gesture.Source
APIeles.grabifyImplementedMake these elements grabbable.Source
APIeles.groupImplementedThe first element's group. Cached on the handle, so it stays readable after removal.Source
APIeles.hasImplementedAlias of eles.contains. Whether every element of other is also in this collection.Source
APIeles.hasClassReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.hasElementWithIdImplementedWhether this collection contains an element with the given id.Source
APIeles.hcaImplementedAlias 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
APIeles.heatDiffusionImplementedHeat 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
APIeles.heatKernelImplementedThe 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
APIeles.heightImplementedThe 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
APIeles.hiddenImplementedThe complement of visible().Source
APIeles.hideImplementedHide 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
APIeles.hierarchicalClusteringImplementedAgglomerative 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
APIeles.hierholzerImplementedHierholzer's Eulerian path/circuit.Source
APIeles.hopcroftTarjanBiconnectedImplementedHopcroft–Tarjan biconnected components and articulation points.Source
APIeles.hopcroftTarjanBiconnectedComponentsImplementedAlias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points.Source
APIeles.htbImplementedAlias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points.Source
APIeles.htbcImplementedAlias of eles.hopcroftTarjanBiconnected. Hopcroft–Tarjan biconnected components and articulation points.Source
APIeles.idImplementedThe first element's id. Cached on the handle, so it stays readable after the element is removed.Source
APIeles.incomersImplementedThe 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
APIeles.indegreeImplementedThe first element's in-degree, in O(1). Singular, like degree().Source
APIeles.indexOfImplementedIndex of an element within this collection.Source
APIeles.indexOfIdImplementedPosition of the element with this id within the collection.Source
APIeles.insideImplementedWhether the first element is still in the graph — the complement of removed().Source
APIeles.interactiveImplementedWhether the element can be interacted with: visible and not pointer-transparent (events: 'no' — round 20.2).Source
APIeles.intersectImplementedAlias of eles.intersection. The elements present in both collections.Source
APIeles.intersectionImplementedThe elements present in both collections.Source
APIeles.isImplementedWhether any element matches the criterion.Source
APIeles.isChildImplementedWhether the first element is a node with a parent.Source
APIeles.isChildlessImplementedWhether the first element is a node with no children.Source
APIeles.isEdgeImplementedWhether the first element is an edge.Source
APIeles.isLoopImplementedWhether the first element is a self-loop — an edge whose source and target are the same node.Source
APIeles.isNodeImplementedWhether the first element is a node.Source
APIeles.isOrphanImplementedWhether the first element is a node without a parent.Source
APIeles.isParentImplementedWhether the first element is a node with at least one child.Source
APIeles.isSimpleImplementedWhether the first element is a non-loop edge.Source
APIeles.jsonPartialExport the first element. The v3 setter/import form is excluded.Source
APIeles.jsonsImplementedPlain-object form of every element.Source
APIeles.kargerSteinImplementedKarger–Stein randomized minimum cut. Randomized, so repeated runs may differ.Source
APIeles.katzCentralityImplementedKatz 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
APIeles.kMeansImplementedk-means clustering in attribute space. Like v3's clustering algorithms this works on handles and attributes accessors rather than on graph structure.Source
APIeles.kMedoidsImplementedk-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
APIeles.kruskalImplementedKruskal's minimum spanning tree/forest.Source
APIeles.labelImplementedThe node's resolved label text ('' when none); read-only in the prototype.Source
APIeles.labelBoundingBoxImplementedThe 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
APIeles.lastImplementedThe last element, as a length-1 collection.Source
APIeles.layoutImplementedA layout scoped to this collection.Source
APIeles.layoutDimensionsImplementedNode 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
APIeles.layoutPositionsImplementedApply 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
APIeles.leavesImplementedCollection nodes with no non-loop outgoing edge.Source
APIeles.lengthImplementedHow many elements this collection holds.Source
APIeles.listenReplacedUse eles.on(); legacy listener aliases were removed.Record
APIeles.lockImplementedLock these elements against movement.Source
APIeles.lockedImplementedWhether 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
APIeles.makeLayoutImplementedAlias of eles.layout. A layout scoped to this collection.Source
APIeles.mapImplementedMap each element through fn into a plain array.Source
APIeles.markovClusteringImplementedMarkov clustering (MCL) — flow simulation over the graph, so unlike the attribute-space algorithms this one clusters by structure.Source
APIeles.maxImplementedThe element maximizing valFn, with its value.Source
APIeles.maxDegreeImplementedThe largest total degree among the collection's nodes.Source
APIeles.maxIndegreeImplementedThe largest in-degree among the collection's nodes.Source
APIeles.maxOutdegreeImplementedThe largest out-degree among the collection's nodes.Source
APIeles.mclImplementedAlias of eles.markovClustering. Markov clustering (MCL) — flow simulation over the graph, so unlike the attribute-space algorithms this one clusters by structure.Source
APIeles.mergeImplementedAlias of eles.union. The union of the two collections, deduped.Source
APIeles.midpointImplementedMidpoint 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
APIeles.minImplementedThe element minimizing valFn, with its value.Source
APIeles.minDegreeImplementedThe smallest total degree among the collection's nodes.Source
APIeles.minIndegreeImplementedThe smallest in-degree among the collection's nodes.Source
APIeles.minOutdegreeImplementedThe smallest out-degree among the collection's nodes.Source
APIeles.modelPositionImplementedAlias of eles.position. Get or set the first element's model-space position (nodes only).Source
APIeles.modelPositionsImplementedAlias of eles.positions. Set every node's position, from a constant or per-element function.Source
APIeles.motifCensusImplementedThe 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
APIeles.moveImplementedMove 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
APIeles.neighborhoodImplementedThe open neighbourhood: the incident edges and the nodes on their far ends, ignoring edge direction, excluding the collection's own elements.Source
APIeles.neighborhoodSimilarityImplementedNeighborhood 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
APIeles.nodesImplementedThe nodes in this collection, optionally filtered.Source
APIeles.nonemptyImplementedWhether the collection holds at least one element.Source
APIeles.nonorphansImplementedThe collection's nodes that have a parent.Source
APIeles.notImplementedAlias of eles.difference. This collection's elements that are not in other.Source
APIeles.numericStyleImplementedThe numeric value of a numeric style prop.Source
APIeles.numericStyleUnitsReplacedUse eles.style() for the resolved value; geometry accessors return model pixels. The v3 spelling is not public in v4.Record
APIeles.offImplementedStop listening on each element of this collection.Source
APIeles.onImplementedListen 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
APIeles.onceImplementedAlias of eles.one. Like on(), but each element's handler runs at most once.Source
APIeles.oneImplementedLike on(), but each element's handler runs at most once.Source
APIeles.openNeighborhoodImplementedAlias 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
APIeles.orImplementedAlias of eles.union. The union of the two collections, deduped.Source
APIeles.orphansImplementedThe collection's nodes without a parent.Source
APIeles.outdegreeImplementedThe first element's out-degree, in O(1). Singular, like degree().Source
APIeles.outerHeightImplementedThe full drawn height including the border.Source
APIeles.outerWidthImplementedThe full drawn width including the border — padded width plus the border width. This is the box bounds and endpoint clipping use.Source
APIeles.outgoersImplementedThe immediate outgoing neighbourhood: the edges leaving these nodes plus the nodes they point at. One hop only — use successors() for the transitive closure.Source
APIeles.paddedHeightImplementedThe drawn box height: content height plus twice the padding (v3's paddedHeight). Identical to height() for leaves, which have no padding.Source
APIeles.paddedWidthImplementedThe drawn box: core dims + 2 x padding (v3's paddedWidth).Source
APIeles.paddingImplementedv3-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
APIeles.pageRankImplementedPageRank 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
APIeles.panifyImplementedMake dragging these elements pan the viewport instead of moving them. Pannable overrides grabbable, as in v3.Source
APIeles.pannableImplementedWhether dragging the first element pans the graph instead of grabbing it.Source
APIeles.parallelEdgesImplementedThe edges sharing endpoints with these edges, in either direction — including each edge itself. These are the edges a bezier bundle fans apart.Source
APIeles.parentImplementedImmediate 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
APIeles.parentsImplementedAll ancestors, level by level: every nearest parent first, then the grandparents, and so on (v3's iterated-parent() order).Source
APIeles.pointImplementedAlias of eles.position. Get or set the first element's model-space position (nodes only).Source
APIeles.pointsImplementedAlias of eles.positions. Set every node's position, from a constant or per-element function.Source
APIeles.ponImplementedAlias of eles.promiseOn. Resolve once the next matching event fires on any element of this collection — the promise form of one().Source
APIeles.positionImplementedGet or set the first element's model-space position (nodes only).Source
APIeles.positionsImplementedSet every node's position, from a constant or per-element function.Source
APIeles.predecessorsImplementedEverything that reaches these nodes by following incoming edges, transitively.Source
APIeles.promiseOnImplementedResolve once the next matching event fires on any element of this collection — the promise form of one().Source
APIeles.randomWalkWithRestartImplementedRandom 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
APIeles.randomWalkWithRestartProximityImplementedAll-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
APIeles.reduceImplementedFold the collection into a single value.Source
APIeles.relativeComplementImplementedAlias of eles.difference. This collection's elements that are not in other.Source
APIeles.relativePointImplementedAlias 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
APIeles.relativePositionImplementedCompound-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
APIeles.removeImplementedRemove these elements from the graph; incident edges of removed nodes cascade. Already-removed elements are skipped (no second remove event).Source
APIeles.removeAllListenersReplacedUse eles.off(events) to remove listeners for the named events; the v3 removeAllListeners alias is not exposed on collections.Record
APIeles.removeAttrImplementedAlias of eles.removeData. Remove sidecar data keys.Source
APIeles.removeClassReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.removeCssImplementedAlias 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
APIeles.removedImplementedWhether 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
APIeles.removeDataImplementedRemove sidecar data keys.Source
APIeles.removeListenerImplementedAlias of eles.off. Stop listening on each element of this collection.Source
APIeles.removeScratchImplementedDelete scratchpad keys from every element.Source
APIeles.removeStyleImplementedRemove 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
APIeles.renderedBoundingboxImplementedAlias of eles.renderedBoundingBox. boundingBox() transformed into rendered (on-screen) coordinates.Source
APIeles.renderedBoundingBoxImplementedboundingBox() transformed into rendered (on-screen) coordinates.Source
APIeles.renderedControlPointsImplementedcontrolPoints() in rendered (CSS px) space.Source
APIeles.renderedCssImplementedAlias 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
APIeles.renderedHeightImplementedheight() scaled by the current zoom.Source
APIeles.renderedMidpointImplementedmidpoint() in rendered (CSS px) space.Source
APIeles.renderedOuterHeightImplementedouterHeight() scaled by the current zoom.Source
APIeles.renderedOuterWidthImplementedouterWidth() scaled by the current zoom.Source
APIeles.renderedPointImplementedAlias 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
APIeles.renderedPositionImplementedGet 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
APIeles.renderedSegmentPointsImplementedsegmentPoints() in rendered (CSS px) space.Source
APIeles.renderedSourceEndpointImplementedsourceEndpoint() in rendered (CSS px) space.Source
APIeles.renderedStyleImplementedLike style(), but with length props (width, height, border-width, font-size) scaled into rendered (on-screen) px by the zoom.Source
APIeles.renderedTargetEndpointImplementedtargetEndpoint() in rendered (CSS px) space.Source
APIeles.renderedWidthImplementedwidth() scaled by the current zoom — the on-screen width in CSS px.Source
APIeles.restoreExcludedRemoved elements cannot be restored or cloned through this API. Export definitions before removal and add definitions explicitly when needed.Record
APIeles.rootsImplementedCollection nodes with no non-loop incoming edge (whole-graph incidence, as in v3).Source
APIeles.sameImplementedWhether both collections hold exactly the same elements, ignoring order.Source
APIeles.scratchImplementedPer-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
APIeles.segmentPointsImplementedThe edge's segment points (model coords) — v3's getSegmentPoints: defined for segments and taxi edges (taxi derives its points), undefined otherwise.Source
APIeles.selectImplementedSelect every selectable element, emitting select for each one that changed. Unselectable elements are skipped.Source
APIeles.selectableImplementedWhether the first element may be selected by the user. The graph-wide cy.autounselectify() overrides this for user gestures.Source
APIeles.selectedImplementedWhether the first element is selected.Source
APIeles.selectifyImplementedMake these elements selectable.Source
APIeles.shiftImplementedOffset positions by a vector or along one axis.Source
APIeles.showImplementedShow 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
APIeles.siblingsImplementedNodes sharing a parent with the collection's nodes, excluding them; orphans are nobody's siblings (v3).Source
APIeles.silentPositionExcludedInternal-only write, omitted from the typed public surface. Use position().Record
APIeles.silentPositionsExcludedInternal-only write, omitted from the typed public surface. Use positions().Record
APIeles.silentShiftExcludedInternal-only write, omitted from the typed public surface. Use shift().Record
APIeles.simRankImplementedSimRank — "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
APIeles.sizeImplementedThe number of elements — the method form of length.Source
APIeles.sliceImplementedA sub-range of the collection, with Array#slice semantics (negative indices count from the end).Source
APIeles.someImplementedWhether any element satisfies the predicate. Short-circuits.Source
APIeles.sortImplementedA 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
APIeles.sortByZIndexExcludedZ-index was removed; draw order is structural.Record
APIeles.sourceImplementedThe source node of the first edge.Source
APIeles.sourceEndpointImplementedThe 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
APIeles.sourcesImplementedThe source nodes of every edge in the collection, deduped.Source
APIeles.stopImplementedStop every running animation on these elements (round 21: no queue — the v3 clearQueue argument is gone).Source
APIeles.styleImplementedRead 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
APIeles.subtractImplementedAlias of eles.difference. This collection's elements that are not in other.Source
APIeles.successorsImplementedEverything reachable by following outgoing edges, transitively — the edges and nodes of the forward closure, excluding these nodes themselves (unless a cycle reaches them).Source
APIeles.symdiffImplementedAlias of eles.symmetricDifference. The elements in exactly one of the two collections.Source
APIeles.symmetricDifferenceImplementedThe elements in exactly one of the two collections.Source
APIeles.takesUpSpaceImplementedThe 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
APIeles.targetImplementedThe target node of the first edge.Source
APIeles.targetEndpointImplementedThe 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
APIeles.targetsImplementedThe target nodes of every edge in the collection, deduped.Source
APIeles.tarjanStronglyConnectedImplementedTarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack.Source
APIeles.tarjanStronglyConnectedComponentsImplementedAlias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack.Source
APIeles.toArrayImplementedThe elements as a plain array of length-1 collections.Source
APIeles.toggleClassReplacedClasses were removed. Store category/state in element data and use query objects and conditional style mappers.Record
APIeles.totalDegreeImplementedThe summed degree of every node in the collection — the whole-collection figure that degree() deliberately is not.Source
APIeles.transparentImplementedWhether the first element is fully transparent — its effective opacity, with compound ancestors folded in, is exactly 0.Source
APIeles.triangleCountImplementedTriangle 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
APIeles.triggerImplementedAlias of eles.emit. Emit an event on each element, bubbling through compound ancestors to the core.Source
APIeles.tscImplementedAlias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack.Source
APIeles.tsccImplementedAlias of eles.tarjanStronglyConnected. Tarjan's strongly connected components. Implemented iteratively, so deep graphs cannot overflow the JS stack.Source
APIeles.uImplementedAlias of eles.union. The union of the two collections, deduped.Source
APIeles.unbindReplacedUse eles.off(); legacy listener aliases were removed.Record
APIeles.ungrabifyImplementedMake these elements ungrabbable — the user can no longer drag them, while programmatic position writes still apply.Source
APIeles.unionImplementedThe union of the two collections, deduped.Source
APIeles.unlistenReplacedUse eles.off(); legacy listener aliases were removed.Record
APIeles.unlockImplementedUnlock these elements.Source
APIeles.unmergeImplementedAlias of eles.difference. This collection's elements that are not in other.Source
APIeles.unpanifyImplementedStop these elements from panning the viewport when dragged, so a grabbable one becomes draggable again.Source
APIeles.unselectImplementedDeselect every element, emitting unselect for each one that changed.Source
APIeles.unselectifyImplementedMake these elements unselectable. Does not deselect them; call unselect() for that.Source
APIeles.visibleImplementedWhether 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
APIeles.widthImplementedThe first element's width — a node's model-space width, or an edge's stroke width.Source
APIeles.xorImplementedAlias of eles.symmetricDifference. The elements in exactly one of the two collections.Source
APIeles.zDepthExcludedZ-depth ordering is not part of the v4 public surface.Record
APIeles['-']ReplacedUse eles.difference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['!']ReplacedUse eles.difference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['.']ReplacedUse eles.intersection(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['(-)']ReplacedUse eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['(+)']ReplacedUse eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['\\']ReplacedUse eles.difference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['&']ReplacedUse eles.intersection(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['^']ReplacedUse eles.symmetricDifference(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['+']ReplacedUse eles.union(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['|']ReplacedUse eles.union(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['n']ReplacedUse eles.intersection(). Symbolic set-operation aliases are not exposed in v4.Record
APIeles['u']ReplacedUse eles.union(). Symbolic set-operation aliases are not exposed in v4.Record
APIevent.cyImplementedthe core the event was raised onSource
APIevent.isDefaultPreventedImplementedWhether preventDefault() has been called.Source
APIevent.isPropagationStoppedImplementedWhether stopPropagation() has been called — read by the compound bubbling walk (round 14.5), where it halts the phase sequence.Source
APIevent.layoutImplementedthe layout instance, on the layout lifecycle eventsSource
APIevent.originalEventImplementedthe DOM event behind a gesture, when there was one (round 41.4)Source
APIevent.positionImplementedmodel-space position, on pointer-derived eventsSource
APIevent.preventDefaultPartialForwards to the original browser event. Does not cancel v4 gesture defaults; use the explicit interaction toggles.Source
APIevent.renderedPositionImplementedrendered-space position; derived from position and the viewportSource
APIevent.stopPropagationImplementedStop 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
APIevent.targetImplementedthe core for core-level events, the element for element eventsSource
APIevent.timeStampImplementedwhen the event was built, Date.now() unless the caller supplied oneSource
APIevent.typeImplementedthe event type, e.g. 'tap' — never namespaced (round 41.1)Source
APIlayout.addListenerReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.bindReplacedListen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter.Record
APIlayout.emitReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.listenReplacedListen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter.Record
APIlayout.offReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.onReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.oneReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.optionsImplementedthe resolved options this run was created withSource
APIlayout.ponReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.promiseImplementedResolves at this run's layoutstop (immediately when never run).Source
APIlayout.promiseOnReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.reheatImplementedHeat 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
APIlayout.removeAllListenersReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.removeListenerReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.runImplementedStart 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
APIlayout.startReplacedUse layout.run(). The v3 spelling is not public in v4.Record
APIlayout.stopImplementedAsk the layout to stop early, by calling the impl's optional stop(). An impl without one simply runs to completion.Source
APIlayout.triggerReplacedLayout handles expose run(), stop(), promise() and reheat(). Observe layoutready/layoutstop on cy; custom layouts signal through their context.Record
APIlayout.unbindReplacedListen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter.Record
APIlayout.unlistenReplacedListen for layoutready/layoutstop on cy or await layout.promise(); layout handles do not expose an event emitter.Record
DistributionOfficial JSON schemasPlannedElement, stylesheet and layout schemas are scoped; not shipped.Source
DistributionTypeScript declarationsImplementedPublic declarations are generated and shipped with the package.Record
DistributionUMD, CJS and ESM bundlesImplementedBundle builds exist, including minified UMD and ESM; release publication remains separate.Record
DocumentationAPI reference generatorImplementedSource JSDoc generates the status-site API preview.Source
DocumentationRelease documentation sitePlannedThe release docs site is scoped as round 46; the current API page is a preview.Record
ExportHeadless image generationPlannedScoped headless SVG and raster-export investigation; current PNG/JPEG require a mounted renderer.Source
ExportPDF exportUndecidedFollow-up over SVG export; backend choice and font embedding/outline fidelity require investigation.Record
ExportPNG and JPEGImplementedRendered image export via the public core methods; requires a mounted renderer.Record
ExportSVG vector exportPlannedMinimum 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
ExtensionsCore, collection and renderer extensionsUndecidedDemand-gated extension points remain deferred. Only the layout contract is public.Record
Extensionscyext extension toolchainPlannedScaffold, build and validate extensions against the v4 contract; scoped, not shipped.Source
InteractionBox selectionImplementedContain and overlap modes, with optional label inclusion.Record
InteractionEvent namespaces and raw mouse/touch aliasesExcludedUse the curated v4 event vocabulary; namespace parsing and raw alias re-emits were removed.Record
InteractionParent versus edge drag targetingPartialTap/hover resolves leaf > edge > parent. Initial pan-versus-grab and taphold still use synchronous node picking.Record
InteractionPointer and wheel gesturesImplementedPicking, dragging, pan, zoom, tap, double tap and context gestures.Record
InteractionTouch gesturesImplementedPinch zoom, two-finger context gestures and three-finger box selection.Record
InteractionTransient emphasisPlannedScoped hover highlight without stylesheet mutation; current applications can implement emphasis with existing style APIs.Source
InteractionWheel behaviour refinementsPlannedScoped ctrl/meta-wheel and trackpad behaviour changes; existing wheel zoom remains implemented.Source
LayoutbreadthfirstImplementedDirected levels with node-size-aware spacing and component packing.Source
LayoutcircleImplementedCircular placement with node-size-aware spacing and component packing.Source
LayoutconcentricImplementedConcentric rings from node scores, with component packing.Source
LayoutcoseReplacedUse force; the v3 cose option surface is not accepted unchanged.Record
LayoutflowImplementedLayered directed layout with rank assignment, compound handling and edge routing support.Source
LayoutforceImplementedCPU and GPU force layout; constraints, component packing, overlap avoidance and infinite interactive runs.Source
LayoutgridImplementedGrid placement with node-size-aware spacing and component packing.Source
LayoutLayout extensionsImplementedPass implementations directly through the layout contract; no extension registry.Source
LayoutpackImplementedPack disconnected components while preserving their internal drawing.Source
LayoutpresetImplementedPlace nodes at supplied or existing positions; parents derive from their children.Source
LayoutradialImplementedRadial tree placement.Source
LayoutrandomImplementedRandom placement in a bounding box.Source
ModelAttribute-table column views and filtersPlannedScoped public column-view/filter affordances; current query objects remain available.Source
ModelAutomatic and explicit compactionImplementedReclaim dead slots while preserving live handles and draw order.Record
ModelBinary graph loading and exportImplementedLoad transferable binary payloads; numeric columns deserialize as views. Graph-level data imports at construction, not cy.add().Source
ModelColumnar storageImplementedTyped columns, indexed adjacency and compact element handles.Record
ModelCompound graphsImplementedHierarchy, subtree moves, inherited visibility and derived parent bounds.Record
ModelId-keyed payload reconciliationPlannedScoped patch/reconcile API for fresh payloads; current add/remove/data writes remain available.Source
ModelMultiple viewers by cloningPlannedScoped viewer cloning API; separate independent instances already work.Source
ModelProgressive ingestPlannedScoped chunked loading and first-frame progress; existing bulk loading is implemented.Source
ModelZero-copy census and follow-upsPlannedScoped measurement of loading and snapshot copies; no general zero-copy guarantee.Source
QueryElement classesReplacedUse data fields and conditional style mappers.Record
QuerySelector stringsReplacedUse query objects and predicates; selector strings throw.Record
ReleaseCross-platform validationPlannedRound 49 remains part of the release sequence; existing CI does not complete that scope.Record
ReleaseRelease engineering and bakePlannedRounds 50–51 cover release workflows, artifact publication and release validation. V4 is unreleased.Record
RenderingAnnotations layerPlannedScoped world-space annotations with picking and export integration; unbuilt.Source
RenderingAutomatic taxi tracksImplementedLive-position fan-out tracks, per-edge casing order and layout gap accommodation.Record
RenderingBackground imagesImplementedMultiple images, SVG promotion and SDF icons; resource caps and degradation are documented.Record
RenderingCanvas fallbackExcludedNo canvas renderer fallback; headless model use remains available.Record
RenderingCluster hulls and collapse proxiesPlannedScoped hull geometry and aggregation proxies; current compound nodes are a separate implemented feature.Source
RenderingCurved and taxi edgesImplementedBezier, segments, taxi, rounded variants, loops, haystack and manual endpoints.Record
RenderingEdge-layer cap and join parityPlannedScoped round layer caps, join blending and arrow-reach fixes; current layer strokes retain recorded differences.Source
RenderingElevated draw tierUndecidedDemand-gated follow-up; z-index is excluded.Record
RenderingGPU edge bundlingPlannedScoped force-directed edge bundling; current parallel-bezier routing is a separate implemented feature.Source
RenderingHollow mid-arrow compositingUndecidedMid arrows are filled; the hollow mid-arrow gap remains an open scope call.Record
RenderingLabel declutteringPlannedScoped priority and collision handling for dense labels; unbuilt.Source
RenderingMultiline and edge labelsImplementedWrapped labels, source/target labels, label geometry and bounds.Record
RenderingNode shapes and arrowhead vocabularyImplementedThe v3 shape vocabulary is supported with normalized dashed names. Compositing deviations are tracked separately.Record
RenderingOverlapping translucent arrowheadsPartialHeads composite; v3 destination-out flattening is not reproduced.Record
RenderingVery large parallel-edge bundlesPlannedScoped GeneMANIA-scale bundle performance and fixture work; existing parallel edges are supported.Source
RenderingRendering without WebGPUPlannedMinimum 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
RenderingWebGL2 fallback investigationPlannedScoped 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
RenderingWebGPU rendererImplementedGPU drawing, culling, picking and mapped paint; browser WebGPU is required.Record
RuntimeAdditional runtime support investigationPlannedScoped capability/support matrix; no extra runtime support promise is made.Source
RuntimeBun headlessImplementedBuilt bundles are covered by the cross-runtime smoke suite and CI.Source
RuntimeDeno headlessImplementedBuilt bundles are covered by the cross-runtime smoke suite and CI.Source
RuntimeDevice-loss recoveryImplementedReconstruct GPU state from CPU-owned data; exercised under lifecycle/load tests.Record
RuntimeMount and unmountImplementedAttach or detach rendering while retaining the CPU model.Source
RuntimeNative Bun/Deno runners and GPU integrationPlannedScoped native full-suite measurements and Deno adapter work; existing headless bundle smoke coverage is implemented.Source
RuntimeNode headlessImplementedHeadless package operation is covered by the Node runtime smoke suite.Source
Styleactive-bg-colorImplementedCore theming; set in the core stylesheet group. Constants only.Source
Styleactive-bg-opacityImplementedCore theming; set in the core stylesheet group. Constants only.Source
Styleactive-bg-sizeImplementedCore theming; set in the core stylesheet group. Constants only.Source
Stylearrow-scaleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-blackenReplacedCompute the shade in a colour mapper range.Record
Stylebackground-clipImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-fillImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-fitImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-gradient-directionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-gradient-stop-colorsPartialGradient stops are supported with a maximum of five stops.Source
Stylebackground-gradient-stop-positionsPartialGradient stops are supported with a maximum of five stops.Source
Stylebackground-heightImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-height-relative-toExcludedBackground image sizing uses the v4 image-box rules; the v3 relative-to toggle is not supported.Record
Stylebackground-imageImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-containmentImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-crossoriginImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-smoothingImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-image-typeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-offset-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-offset-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-position-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-position-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-repeatImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebackground-width-relative-toExcludedBackground image sizing uses the v4 image-box rules; the v3 relative-to toggle is not supported.Record
Styleborder-capExcludedDash ends use perpendicular butt cuts; no configurable border cap.Record
Styleborder-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-dash-offsetImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-dash-patternImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-joinExcludedBorder joins follow the shape geometry; no configurable border join.Record
Styleborder-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-positionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-styleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleborder-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylebounds-expansionExcludedBounds are derived from the drawn geometry; no manual expansion property.Record
Stylebox-select-labelsReplacedUse the core option boxSelectionIncludesLabels.Record
Stylebox-selectionReplacedUse boxSelectionMode ('contain' or 'overlap'); disable events for the v3 'none' behaviour.Record
StylechartImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylechart-colorsImplementedUp to 16 slice colours; constant list. Per-slice alpha belongs in the colour values.Source
Stylechart-directionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylechart-holeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylechart-opacityImplementedOverall opacity folded into every chart slice alpha.Source
Stylechart-sizeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylechart-start-angleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylechart-valuesImplementedUp to 16 absolute fractions (or percentages); values are not normalized. Constants or a data passthrough.Source
StylecolorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylecompound-sizing-wrt-labelsPartialParents only; 'exclude' is accepted, 'include' throws. Compound auto-bounds use child bodies; public bounding boxes can include labels.Source
StylecontentReplacedUse label.Record
Stylecontrol-point-distanceReplacedUse control-point-distances (plural).Record
Stylecontrol-point-distancesImplementedEdge routing array; constants only. Use an id-keyed style bypass for a different array on each edge.Source
Stylecontrol-point-step-sizeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylecontrol-point-weightImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylecontrol-point-weightsImplementedEdge routing array; constants only. Use an id-keyed style bypass for a different array on each edge.Source
Stylecorner-radiusImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylecurve-styleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StyledisplayReplacedUse show()/hide() for structural visibility, or the visibility property for paint-only hiding.Record
Styleedge-distancesImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleedge-text-rotationReplacedUse text-rotation.Record
StyleeventsImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylefont-familyPartialOne global font face per atlas; per-element font families and mappers are excluded.Source
Stylefont-sizeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylefont-stylePartialGlobal font setting; per-element variation and mappers are excluded.Source
Stylefont-weightPartialGlobal font setting; per-element variation and mappers are excluded.Source
StyleghostImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleghost-offset-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleghost-offset-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleghost-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylehaystack-radiusImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StyleheightImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StylelabelImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-capImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-dash-offsetImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-dash-patternImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-fillImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-gradient-stop-colorsPartialGradient stops are supported with a maximum of five stops.Source
Styleline-gradient-stop-positionsPartialGradient stops are supported with a maximum of five stops.Source
Styleline-heightImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-outline-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-outline-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleline-styleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleloop-directionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleloop-sweepImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylemid-source-arrow-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylemid-source-arrow-fillUndecidedNot supported: mid arrows are filled at standard width. Hollow-mid-arrow scope remains an open design call.Record
Stylemid-source-arrow-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylemid-source-arrow-widthNot implementedMid arrows use the standard width; this v3 width override has no v4 spelling.Record
Stylemid-target-arrow-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylemid-target-arrow-fillUndecidedNot supported: mid arrows are filled at standard width. Hollow-mid-arrow scope remains an open design call.Record
Stylemid-target-arrow-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylemid-target-arrow-widthNot implementedMid arrows use the standard width; this v3 width override has no v4 spelling.Record
Stylemin-heightImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylemin-height-bias-bottomReplacedThe min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space.Record
Stylemin-height-bias-topReplacedThe min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space.Record
Stylemin-widthImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylemin-width-bias-leftReplacedThe min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space.Record
Stylemin-width-bias-rightReplacedThe min-width/min-height clamp is centred. Use per-side parent padding for asymmetric space.Record
Stylemin-zoomed-font-sizeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StyleopacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutline-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutline-offsetImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutline-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutline-styleImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutline-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoutside-texture-bg-colorExcludedRemoved with textureOnViewport; v4 does not use the canvas-era viewport texture.Record
Styleoutside-texture-bg-opacityExcludedRemoved with textureOnViewport; v4 does not use the canvas-era viewport texture.Record
Styleoverlay-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoverlay-corner-radiusImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoverlay-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoverlay-paddingImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleoverlay-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StylepaddingImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepadding-bottomImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepadding-leftImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepadding-relative-toImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepadding-rightImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepadding-topImplementedCompound parents group only. Padding accepts pixels or percentages; per-side values override uniform padding.Source
Stylepie-1-background-colorReplacedUse chart: 'pie' and chart-colors[0].Record
Stylepie-1-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[0]; chart-opacity controls the whole chart.Record
Stylepie-1-background-sizeReplacedUse chart: 'pie' and chart-values[0] (fraction or percentage).Record
Stylepie-10-background-colorReplacedUse chart: 'pie' and chart-colors[9].Record
Stylepie-10-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[9]; chart-opacity controls the whole chart.Record
Stylepie-10-background-sizeReplacedUse chart: 'pie' and chart-values[9] (fraction or percentage).Record
Stylepie-11-background-colorReplacedUse chart: 'pie' and chart-colors[10].Record
Stylepie-11-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[10]; chart-opacity controls the whole chart.Record
Stylepie-11-background-sizeReplacedUse chart: 'pie' and chart-values[10] (fraction or percentage).Record
Stylepie-12-background-colorReplacedUse chart: 'pie' and chart-colors[11].Record
Stylepie-12-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[11]; chart-opacity controls the whole chart.Record
Stylepie-12-background-sizeReplacedUse chart: 'pie' and chart-values[11] (fraction or percentage).Record
Stylepie-13-background-colorReplacedUse chart: 'pie' and chart-colors[12].Record
Stylepie-13-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[12]; chart-opacity controls the whole chart.Record
Stylepie-13-background-sizeReplacedUse chart: 'pie' and chart-values[12] (fraction or percentage).Record
Stylepie-14-background-colorReplacedUse chart: 'pie' and chart-colors[13].Record
Stylepie-14-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[13]; chart-opacity controls the whole chart.Record
Stylepie-14-background-sizeReplacedUse chart: 'pie' and chart-values[13] (fraction or percentage).Record
Stylepie-15-background-colorReplacedUse chart: 'pie' and chart-colors[14].Record
Stylepie-15-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[14]; chart-opacity controls the whole chart.Record
Stylepie-15-background-sizeReplacedUse chart: 'pie' and chart-values[14] (fraction or percentage).Record
Stylepie-16-background-colorReplacedUse chart: 'pie' and chart-colors[15].Record
Stylepie-16-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[15]; chart-opacity controls the whole chart.Record
Stylepie-16-background-sizeReplacedUse chart: 'pie' and chart-values[15] (fraction or percentage).Record
Stylepie-2-background-colorReplacedUse chart: 'pie' and chart-colors[1].Record
Stylepie-2-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[1]; chart-opacity controls the whole chart.Record
Stylepie-2-background-sizeReplacedUse chart: 'pie' and chart-values[1] (fraction or percentage).Record
Stylepie-3-background-colorReplacedUse chart: 'pie' and chart-colors[2].Record
Stylepie-3-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[2]; chart-opacity controls the whole chart.Record
Stylepie-3-background-sizeReplacedUse chart: 'pie' and chart-values[2] (fraction or percentage).Record
Stylepie-4-background-colorReplacedUse chart: 'pie' and chart-colors[3].Record
Stylepie-4-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[3]; chart-opacity controls the whole chart.Record
Stylepie-4-background-sizeReplacedUse chart: 'pie' and chart-values[3] (fraction or percentage).Record
Stylepie-5-background-colorReplacedUse chart: 'pie' and chart-colors[4].Record
Stylepie-5-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[4]; chart-opacity controls the whole chart.Record
Stylepie-5-background-sizeReplacedUse chart: 'pie' and chart-values[4] (fraction or percentage).Record
Stylepie-6-background-colorReplacedUse chart: 'pie' and chart-colors[5].Record
Stylepie-6-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[5]; chart-opacity controls the whole chart.Record
Stylepie-6-background-sizeReplacedUse chart: 'pie' and chart-values[5] (fraction or percentage).Record
Stylepie-7-background-colorReplacedUse chart: 'pie' and chart-colors[6].Record
Stylepie-7-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[6]; chart-opacity controls the whole chart.Record
Stylepie-7-background-sizeReplacedUse chart: 'pie' and chart-values[6] (fraction or percentage).Record
Stylepie-8-background-colorReplacedUse chart: 'pie' and chart-colors[7].Record
Stylepie-8-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[7]; chart-opacity controls the whole chart.Record
Stylepie-8-background-sizeReplacedUse chart: 'pie' and chart-values[7] (fraction or percentage).Record
Stylepie-9-background-colorReplacedUse chart: 'pie' and chart-colors[8].Record
Stylepie-9-background-opacityReplacedUse chart: 'pie' and the alpha component of chart-colors[8]; chart-opacity controls the whole chart.Record
Stylepie-9-background-sizeReplacedUse chart: 'pie' and chart-values[8] (fraction or percentage).Record
Stylepie-holeReplacedUse chart: 'pie' and chart-hole.Record
Stylepie-sizeReplacedUse chart: 'pie' and chart-size.Record
Stylepie-start-angleReplacedUse chart: 'pie' and chart-start-angle.Record
StylepositionReplacedUse ele.position(); position is not a style property.Record
Styleradius-typeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesegment-distanceReplacedUse segment-distances (plural).Record
Stylesegment-distancesImplementedEdge routing array; constants only. Use an id-keyed style bypass for a different array on each edge.Source
Stylesegment-radiiImplementedEdge routing array; constants only. Use an id-keyed style bypass for a different array on each edge.Source
Stylesegment-radiusReplacedUse segment-radii (plural).Record
Stylesegment-weightReplacedUse segment-weights (plural).Record
Stylesegment-weightsImplementedEdge routing array; constants only. Use an id-keyed style bypass for a different array on each edge.Source
Styleselection-box-border-colorImplementedCore theming; set in the core stylesheet group. Constants only.Source
Styleselection-box-border-widthImplementedCore theming; set in the core stylesheet group. Constants only.Source
Styleselection-box-colorImplementedCore theming; set in the core stylesheet group. Constants only.Source
Styleselection-box-opacityImplementedCore theming; set in the core stylesheet group. Constants only.Source
StyleshapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleshape-polygon-pointsImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-arrow-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-arrow-fillImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-arrow-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-arrow-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-distance-from-nodeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-endpointImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-labelImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-text-margin-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-text-margin-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-text-offsetImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylesource-text-rotationImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylestripe-1-background-colorReplacedUse chart: 'stripes' and chart-colors[0].Record
Stylestripe-1-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[0]; chart-opacity controls the whole chart.Record
Stylestripe-1-background-sizeReplacedUse chart: 'stripes' and chart-values[0] (fraction or percentage).Record
Stylestripe-10-background-colorReplacedUse chart: 'stripes' and chart-colors[9].Record
Stylestripe-10-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[9]; chart-opacity controls the whole chart.Record
Stylestripe-10-background-sizeReplacedUse chart: 'stripes' and chart-values[9] (fraction or percentage).Record
Stylestripe-11-background-colorReplacedUse chart: 'stripes' and chart-colors[10].Record
Stylestripe-11-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[10]; chart-opacity controls the whole chart.Record
Stylestripe-11-background-sizeReplacedUse chart: 'stripes' and chart-values[10] (fraction or percentage).Record
Stylestripe-12-background-colorReplacedUse chart: 'stripes' and chart-colors[11].Record
Stylestripe-12-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[11]; chart-opacity controls the whole chart.Record
Stylestripe-12-background-sizeReplacedUse chart: 'stripes' and chart-values[11] (fraction or percentage).Record
Stylestripe-13-background-colorReplacedUse chart: 'stripes' and chart-colors[12].Record
Stylestripe-13-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[12]; chart-opacity controls the whole chart.Record
Stylestripe-13-background-sizeReplacedUse chart: 'stripes' and chart-values[12] (fraction or percentage).Record
Stylestripe-14-background-colorReplacedUse chart: 'stripes' and chart-colors[13].Record
Stylestripe-14-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[13]; chart-opacity controls the whole chart.Record
Stylestripe-14-background-sizeReplacedUse chart: 'stripes' and chart-values[13] (fraction or percentage).Record
Stylestripe-15-background-colorReplacedUse chart: 'stripes' and chart-colors[14].Record
Stylestripe-15-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[14]; chart-opacity controls the whole chart.Record
Stylestripe-15-background-sizeReplacedUse chart: 'stripes' and chart-values[14] (fraction or percentage).Record
Stylestripe-16-background-colorReplacedUse chart: 'stripes' and chart-colors[15].Record
Stylestripe-16-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[15]; chart-opacity controls the whole chart.Record
Stylestripe-16-background-sizeReplacedUse chart: 'stripes' and chart-values[15] (fraction or percentage).Record
Stylestripe-2-background-colorReplacedUse chart: 'stripes' and chart-colors[1].Record
Stylestripe-2-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[1]; chart-opacity controls the whole chart.Record
Stylestripe-2-background-sizeReplacedUse chart: 'stripes' and chart-values[1] (fraction or percentage).Record
Stylestripe-3-background-colorReplacedUse chart: 'stripes' and chart-colors[2].Record
Stylestripe-3-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[2]; chart-opacity controls the whole chart.Record
Stylestripe-3-background-sizeReplacedUse chart: 'stripes' and chart-values[2] (fraction or percentage).Record
Stylestripe-4-background-colorReplacedUse chart: 'stripes' and chart-colors[3].Record
Stylestripe-4-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[3]; chart-opacity controls the whole chart.Record
Stylestripe-4-background-sizeReplacedUse chart: 'stripes' and chart-values[3] (fraction or percentage).Record
Stylestripe-5-background-colorReplacedUse chart: 'stripes' and chart-colors[4].Record
Stylestripe-5-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[4]; chart-opacity controls the whole chart.Record
Stylestripe-5-background-sizeReplacedUse chart: 'stripes' and chart-values[4] (fraction or percentage).Record
Stylestripe-6-background-colorReplacedUse chart: 'stripes' and chart-colors[5].Record
Stylestripe-6-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[5]; chart-opacity controls the whole chart.Record
Stylestripe-6-background-sizeReplacedUse chart: 'stripes' and chart-values[5] (fraction or percentage).Record
Stylestripe-7-background-colorReplacedUse chart: 'stripes' and chart-colors[6].Record
Stylestripe-7-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[6]; chart-opacity controls the whole chart.Record
Stylestripe-7-background-sizeReplacedUse chart: 'stripes' and chart-values[6] (fraction or percentage).Record
Stylestripe-8-background-colorReplacedUse chart: 'stripes' and chart-colors[7].Record
Stylestripe-8-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[7]; chart-opacity controls the whole chart.Record
Stylestripe-8-background-sizeReplacedUse chart: 'stripes' and chart-values[7] (fraction or percentage).Record
Stylestripe-9-background-colorReplacedUse chart: 'stripes' and chart-colors[8].Record
Stylestripe-9-background-opacityReplacedUse chart: 'stripes' and the alpha component of chart-colors[8]; chart-opacity controls the whole chart.Record
Stylestripe-9-background-sizeReplacedUse chart: 'stripes' and chart-values[8] (fraction or percentage).Record
Stylestripe-directionReplacedUse chart: 'stripes' and chart-direction.Record
Stylestripe-sizeReplacedUse chart: 'stripes' and chart-size.Record
Styletarget-arrow-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-arrow-fillImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-arrow-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-arrow-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-distance-from-nodeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-endpointImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-labelImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-text-margin-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-text-margin-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-text-offsetImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletarget-text-rotationImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletaxi-directionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletaxi-radiusImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletaxi-trackImplementedAssign an explicit taxi track for automatic turn routing.Source
Styletaxi-track-spacingImplementedControl spacing between automatic taxi tracks.Source
Styletaxi-turnImplementedNumeric and percentage turns plus v4 'auto': assign fan-out tracks from live positions.Source
Styletaxi-turn-min-distanceImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-background-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-background-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-background-paddingImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-background-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-border-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-border-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-border-stylePlannedDashed label-box borders are scoped in round 76.3; current borders remain solid.Source
Styletext-border-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-eventsPartialNode labels only; the edges group rejects this property. Edge labels are not pickable.Source
Styletext-halignImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-justificationImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-margin-xImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-margin-yImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-max-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-metricsReplacedUse eles.labelBoundingBox() for measured label extents.Record
Styletext-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-outline-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-outline-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-outline-widthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-overflow-wrapImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-rotationImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-transformImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-valignImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletext-wrapImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletransition-delayPartialGlobal transition configuration; plain milliseconds only. Time-unit strings and per-element mappers are excluded.Source
Styletransition-durationPartialGlobal transition configuration; plain milliseconds only. Time-unit strings and per-element mappers are excluded.Source
Styletransition-propertyImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styletransition-timing-functionImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleunderlay-colorImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleunderlay-corner-radiusImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleunderlay-opacityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleunderlay-paddingImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Styleunderlay-shapeImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StylevisibilityImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
StylewidthImplementedAccepted by the v4 stylesheet. Values and applicable element groups follow the v4 style compiler.Source
Stylez-compound-depthExcludedDraw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed.Record
Stylez-indexExcludedDraw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed.Record
Stylez-index-compareExcludedDraw order is structural: parents, edges, leaves, labels; slot order within a stream. Z-index ordering was deliberately removed.Record
StylingAdditional chart kindsPlannedHeat strips, radial heat, signed bars, declarative chart colour scales and a measured increase to the slice ceiling are scoped in round 80.Source
StylingCSS strings and function stylesReplacedUse grouped declarative styles and mapper specifications.Record
StylingDeclarative mappersImplementedData mappings, scales and state conditions compile into the style engine.Source
StylingNode chartsImplementedPie and stripe charts through the chart property family.Source
StylingPer-element bypassesImplementedId-keyed constants with v3 method sugar, serialized as part of the stylesheet.Record
StylingScreen-space sizing investigationPlannedScoped design investigation; viewport-fixed labels remain excluded from current support.Source