@visactor/vrender-core
Version:
```typescript import { xxx } from '@visactor/vrender-core'; ```
28 lines (24 loc) • 1.31 kB
JavaScript
export function scheduleStageSharedStateRefresh(stage) {
stage && "released" !== stage.releaseStatus && stage.renderNextFrame();
}
export function enqueueGraphicSharedStateRefresh(stage, graphic) {
var _a;
if (!stage) return;
(null !== (_a = stage._pendingSharedStateRefreshGraphics) && void 0 !== _a ? _a : stage._pendingSharedStateRefreshGraphics = new Set).add(graphic);
}
export function markScopeActiveDescendantsDirty(scope, stage) {
scope.subtreeActiveDescendants.size && (scope.subtreeActiveDescendants.forEach((graphic => {
var _a;
graphic.sharedStateDirty = !0;
enqueueGraphicSharedStateRefresh(null !== (_a = null != stage ? stage : graphic.stage) && void 0 !== _a ? _a : scope.ownerStage, graphic);
})), scheduleStageSharedStateRefresh(null != stage ? stage : scope.ownerStage));
}
export function flushStageSharedStateRefresh(stage) {
const pending = stage._pendingSharedStateRefreshGraphics;
if (!pending || !pending.size) return;
const graphics = Array.from(pending.values());
pending.clear(), graphics.forEach((graphic => {
"released" !== graphic.releaseStatus && graphic.stage === stage && graphic.sharedStateDirty && graphic.refreshSharedStateBeforeRender();
}));
}
//# sourceMappingURL=shared-state-refresh.js.map