ProtectedcanvasThe Interactive Ink Canvas instance
ProtectedloggerLogger instance for this manager Automatically uses LoggerCategory.MANAGER
ProtectedmanagerName of the manager for logging purposes Must be overridden in concrete classes
Get the client from the canvas Convenience getter to avoid accessing canvas.client everywhere
Get the configuration from the canvas Convenience getter to avoid accessing canvas.configuration everywhere
Get the model from the canvas Convenience getter to avoid accessing canvas.model everywhere
Get the renderer from the canvas Convenience getter to avoid accessing canvas.renderer everywhere
ProtectedbuildBuild or rebuild the JIIX index Called automatically when index is stale
Clear text metadata for a stroke (called when stroke is deleted)
ProtectedcollectRecursively collect math expression groups with pixel bboxes
Destroy the manager and cleanup resources Calls the onDestroy hook if defined
ProtectedensureEnsure index is up to date. When model.exports is absent (cleared by updateSymbol etc.) but a valid index exists, preserve it rather than overwriting with an empty rebuild.
Get all math blocks with their strokes
Array of math blocks with their JIIX element and stroke IDs
Get all text blocks with their strokes
Array of text blocks with their JIIX element and stroke IDs
Get the label of a JIIX block by its ID
The JIIX element ID
The label of the block, or undefined if not found
Get the JIIX element containing a stroke
The stroke ID
The JIIX element or undefined
Get the precise label for a stroke For text: returns char label if available, word label otherwise For math: returns expression label or type
The stroke ID
The label or undefined
Get the pixel-space vertical center of the JIIX line containing the given stroke. Uses the line's bounding-box center, not baseline-y (baseline sits low within a line, not comparable to a symbol's bounds.center.y — mixing the two anchors misclassifies strokes near a line boundary as belonging to the wrong row). Returns null when the stroke isn't (yet) part of a recognized text word, so callers can fall back to a geometric row calculation.
Get stroke groups with pixel bboxes for math selection. Only groups with valid bounding boxes are returned.
Selection granularity: "element" or "operand"
Get stroke groups with pixel bboxes for shape (Node/Edge) selection. "element" level: one group per Node/Edge element. "stroke" level: returns empty (signals fallback to stroke overlap).
Selection granularity: "element" or "stroke"
Get the ids of the strokes that make up a given block
The id of the JIIX element (block)
Array of stroke ids, or an empty array if the block is unknown
Get detailed query result for a stroke
The stroke ID
Full query result with element, label, and context
Get all stroke IDs belonging to an element
The JIIX element ID
Array of stroke IDs
Get all strokes grouped by character (for text elements)
The text element ID
Array of char groups, each containing stroke IDs and label
Get all strokes grouped by word (for text elements)
The text element ID
Array of word groups, each containing stroke IDs and label
Get all TStroke objects belonging to an element
The JIIX element ID
Array of TStroke symbols
Get pixel-converted text metadata for a stroke
Get stroke groups with pixel bboxes for text selection. Only groups with valid bounding boxes are returned.
Selection granularity: "element", "word", or "char"
Get the JIIX word group for a stroke (for word-level decorator spanning). Returns all stroke IDs in the same word and the word's pixel bounding box.
ProtectedindexIndex a single JIIX element and its strokes
ProtectedindexIndex a math element
ProtectedindexIndex a math expression recursively
ProtectedindexIndex a node or edge element
ProtectedindexIndex a text element
Invalidate and immediately rebuild the index from current exports. Called after mergeExport so the rebuild happens while exports are still set, before any subsequent updateSymbol calls clear them.
Protected OptionalonProtected OptionalonLifecycle hook called after manager initialization Override in subclasses if needed
This is called at the end of the constructor, allowing subclasses to perform initialization that requires access to this.managerName or other properties set in the subclass constructor.
Search strokes by label
The label to search for (case-insensitive partial match)
Array of matching stroke query results
Update pixel-converted text metadata for a stroke (called during sync)
Remarks
Manager for querying JIIX export data efficiently Provides fast lookups for strokes, labels, and element groupings Automatically indexes JIIX data on first access and invalidates cache when model changes