/** * Synchronize flow handles after data flow optimization. * * @param {import("../view/view.js").default} root * @param {Map} canonicalBySource */ export function syncFlowHandles(root: import("../view/view.js").default, canonicalBySource: Map): void; /** * Initializes data flow and mark wiring for a subtree without rebuilding the * entire view hierarchy. This is the primary entry point for dynamic view * insertion: build the subtree fully, call this, then attach the subtree to * the live hierarchy. * * What it does: * - builds/extends the dataflow graph for the subtree * - runs flow optimization and syncs flow handles to canonical data sources * - discovers the nearest data sources for views in the subtree * - initializes dataflow nodes (initialize) for those sources * - initializes mark encoders for unit views * - queues graphics initialization (if a GL context exists) * - wires collector observers so marks update on data arrival * * How to use it: * - call after the subtree is fully constructed (post-order build) * - do not attach the subtree to the live hierarchy until after this call * - dispose the old subtree before replacing it to prevent observer leaks * - follow up with finalizeSubtreeGraphics(...) once graphics promises resolve * - reconfigure scales for the subtree when data loads complete * * Considerations: * - this does not trigger data loading; callers decide when to load * - data sources are derived by walking to the nearest ancestor source; nested * sources should be treated as boundaries (do not walk past them) * - only call updateGraphicsData when graphics are initialized or a GL context * is available; headless/test contexts must avoid WebGL usage * - loadViewSubtreeData emits a subtree-scoped "subtreeDataReady" broadcast * * TODO: * - promote in-flight load caching to a persistent load-state per source * - replace global dataLoaded usage with subtree-scoped readiness * - integrate with async font readiness for text marks * - unify observer wiring via a disposable registry across view types * * @param {import("../view/view.js").default} subtreeRoot * @param {import("./dataFlow.js").default} flow * @param {(view: import("../view/view.js").default) => boolean} [viewFilter] * @param {(view: import("../view/view.js").default) => boolean} [viewInitializationPredicate] * @returns {{ * dataFlow: import("./dataFlow.js").default, * unitViews: UnitView[], * dataSources: Set, * graphicsPromises: Promise[] * }} */ export function initializeViewSubtree(subtreeRoot: import("../view/view.js").default, flow: import("./dataFlow.js").default, viewFilter?: (view: import("../view/view.js").default) => boolean, viewInitializationPredicate?: (view: import("../view/view.js").default) => boolean): { dataFlow: import("./dataFlow.js").default; unitViews: UnitView[]; dataSources: Set; graphicsPromises: Promise[]; }; /** * Collects data sources needed to initialize all views in the subtree. * This includes sources that are overridden deeper in the hierarchy. * * @param {import("../view/view.js").default | import("../view/view.js").default[]} subtreeRoot * @param {(view: import("../view/view.js").default) => boolean} [viewFilter] * @returns {Set} */ export function collectViewSubtreeDataSources(subtreeRoot: import("../view/view.js").default | import("../view/view.js").default[], viewFilter?: (view: import("../view/view.js").default) => boolean): Set; /** * Collects the nearest data sources under a subtree root. * These sources define data-ready boundaries for subtree-level loading. * * @param {import("../view/view.js").default} subtreeRoot * @param {(view: import("../view/view.js").default) => boolean} [viewFilter] * @returns {Set} */ export function collectNearestViewSubtreeDataSources(subtreeRoot: import("../view/view.js").default, viewFilter?: (view: import("../view/view.js").default) => boolean): Set; /** * Loads the nearest data sources for a subtree. * Use the returned promise as a subtree-level "data ready" signal. * * @param {import("../view/view.js").default} subtreeRoot * @param {Set} [dataSources] * @param {(view: import("../view/view.js").default) => boolean} [viewFilter] * @param {{ queueReload?: boolean }} [loadOptions] * @returns {Promise} */ export function loadViewSubtreeData(subtreeRoot: import("../view/view.js").default, dataSources?: Set, viewFilter?: (view: import("../view/view.js").default) => boolean, loadOptions?: { queueReload?: boolean; }): Promise; import UnitView from "../view/unitView.js"; //# sourceMappingURL=flowInit.d.ts.map