Creates a new Candlestick instance from a MAIDR layer
The MAIDR layer containing candlestick data
Protected ReadonlyobserversProtectedisProtectedisTrue while AbstractTrace.getStateAt computes state at a temporarily moved cursor. Enforces (structurally, not just by documentation) that state getters never notify observers.
Protected ReadonlyidProtected ReadonlytypeProtected ReadonlytitleProtected ReadonlyxProtected ReadonlyyProtected ReadonlyzProtected ReadonlylayerProtected ReadonlysupportsAbstract property that subclasses must implement to indicate extrema support
Protected ReadonlymovableProtected ReadonlyhighlightProtectedhighlightProtected ReadonlynavigationGets the current state of the trace including audio, braille, text, and highlight information.
The current TraceState
ProtectedoutProtectedhighlightProtectedautoplayProtectedhasThe trace's chart type. Lightweight alternative to reading
state.traceType, which eagerly computes the full audio/braille/text/
highlight state just to expose this one string.
Gets the description state for the candlestick trace.
The description state containing chart metadata and data table
ProtectedvaluesGets the 2D array of candlestick values
Array of candlestick values for all segments
ProtectedaudioProtectedbrailleProtectedtextProtecteddimensionProtectedgetGets safe row and column indices to prevent accessing undefined values
Object with safe row and column indices
Registers an observer to receive state updates.
The observer to add
Removes an observer from receiving state updates.
The observer to remove
Notifies all registered observers with the current state.
Notifies observers that an out-of-bounds condition occurred.
Utility function to compare point values for rotor functionality
boolean value
Returns true if this trace supports compare (lower/higher value) navigation. Override to false for trace types that don't use compare modes (e.g., scatter, which is all we currently have).
Returns the display name for the default data navigation mode. Override to provide a trace-specific name (e.g., "ROW AND COLUMN NAVIGATION" for scatter).
Returns the rotor's compare-mode labels and boundary-message nouns. Override to rename the two compare units for a trace-specific semantic (e.g., the candlestick delta layer uses "above line" / "below line").
Get all highlight SVG elements for this trace Used by HighlightService for high contrast mode
Array of all SVG elements, or empty array if none
Get all original (visible) SVG elements for this trace. These are the actual rendered elements, not the hidden clones used for highlighting. Used by HighlightService for high contrast mode color changes.
Array of all original SVG elements, or empty array if none
ProtectedgetResets the trace to initial entry state
ProtectedgetReturns a human-readable label for this trace's chart type (e.g., 'Bar Chart', 'Scatter Plot') for display in the description modal. Falls back to the raw layer type if no mapping is registered.
ProtectedgetBuilds the axes object for the description state, including z only when the layer explicitly provides a z-axis label. Subclasses should call this instead of constructing the axes object inline so charts without a real z dimension don't surface the placeholder default.
ProtectedfinalizeCommon post-navigation cleanup that should be called by subclasses after they update their internal state
Returns true if this trace supports intersection navigation mode. Opt-in per trace type: override to return true (possibly conditionally, e.g. based on data shape) for trace types that expose point intersections between series. Intersection navigation is a trace-level capability — it has no meaning at the figure or subplot level, which is why it lives on AbstractTrace rather than AbstractPlot.
Move to the next point intersection (right arrow in intersection rotor mode). Default is a no-op returning false; subclasses that advertise supportsIntersectionMode must override to provide real behavior.
Move to the previous point intersection (left arrow in intersection rotor mode). Default is a no-op returning false; subclasses that advertise supportsIntersectionMode must override to provide real behavior.
Checks if this plot supports extrema navigation.
True if extrema navigation is supported
Gets the unique identifier for this trace.
The trace ID
Moves the active point to the pointer location and returns directional guidance toward the nearest data geometry in a single call.
Combining both operations avoids running findNearestPoint twice per
pointermove event — important on dense plots where the scan is the
hot path.
Screen-space x position of the pointer/finger
Screen-space y position of the pointer/finger
Guidance state relative to nearest point, or null when unavailable
Checks if the specified coordinates are within bounds of the element.
The x-coordinate
The y-coordinate
Object containing the SVG element and its position
True if the point is in bounds, false otherwise
ProtectedupdateUpdates visual position for point highlighting and segment position
ProtectedhandleHandles initial entry into the candlestick chart, setting default position
Moves navigation position one step in the specified direction
Direction to move (UPWARD, DOWNWARD, FORWARD, BACKWARD)
Computes the state at an arbitrary position without moving the cursor.
Candlestick state getters read currentPointIndex/currentSegmentType
rather than row/col, so those are mapped from the requested position
and restored alongside the cursor.
The row of the position to compute state for
The column of the position to compute state for
The trace state at the requested position
Checks if movement to the target position or direction is possible
Target position array or movement direction
True if movement is possible, false otherwise
Cleans up resources and disposes of the candlestick instance
ProtectedmapMaps candlestick selectors to 2D array of SVG elements for highlighting
CSS selectors or structured candlestick selectors
2D array of SVG elements or null if no selectors provided
Gets the current candlestick trend for audio palette selection
The trend of the current candlestick point
Gets the candle data points. Used by the candlestick delta feature to derive a virtual comparison layer against a reference line.
The candle points in x order
Gets the current X value from the candlestick trace
The current X value or null if not available
Moves the candlestick to the position that matches the given X value
The X value to move to
True if the position was found and set, false otherwise
Gets extrema targets for the current candlestick trace with labels and descriptions
Array of extrema targets for navigation
Navigates to a specific extrema target
The extrema target to navigate to
Moves to the next value in the specified direction that matches the comparison type
Direction to search (left or right)
Comparison type (lower or higher)
True if a matching value was found and moved to
Moves upward between segments within a candle in rotor mode
True if the move was successful
Moves downward between segments within a candle in rotor mode
True if the move was successful
Exposes the bullish/bearish/neutral rotor filter units. These are appended after the built-in lower/higher value compare units, so cycling the rotor offers: all data point (default), lower value, higher value, and one unit per trend that actually occurs in the data. The default "all data point" unit is provided by the built-in data mode.
A trend with no candles is omitted so the rotor cycle carries no dead-end modes (where every move would just report "no point found"), mirroring how GRID_MODE / INTERSECTION_MODE are gated on capability. The list is precomputed in the constructor (candles are immutable), so this returns the cached reference — callers must treat it as read-only.
The present trend-filter rotor units in cycle order
Jumps to the previous/next candle whose trend matches the active filter unit, preserving the current segment. Trend filtering runs along the candle axis; the rotor service handles up/down (announcing them as unavailable) and only dispatches left/right here.
The trend to navigate ('Bull', 'Bear', or 'Neutral')
The direction to search
True if a matching candle was found and moved to
ProtectedmapMaps SVG elements to their center coordinates for click navigation
Array of center coordinates with row/col indices or null
Finds the nearest candlestick point to the given coordinates
X coordinate
Y coordinate
Nearest point information or null
ProtectedmoveMoves the trace to the nearest highlight point for a pointer/hover event.
The highlight grid is [sortedSegmentPosition][pointIndex] in BOTH
orientations (see mapToSvgElements), so nearest.col is always the candle
index and nearest.row is the value-sorted segment position. Those sorted
coordinates are translated straight into the candle/segment model state
here, rather than delegating to moveToIndex, which interprets rows in
static CANDLESTICK_SECTIONS order — an interpretation the braille path
relies on and must keep.
Screen-space x position of the pointer
Screen-space y position of the pointer
The nearest highlight point in sorted grid coordinates
Whether the pointer is within the point's bounds
Interface representing a trace with navigation and observation capabilities