From 86e81c1187fc46165e67b9860d2e642fdb278d5e Mon Sep 17 00:00:00 2001 From: dvd233 <111864431+dvd233@users.noreply.github.com> Date: Fri, 18 Sep 2026 14:21:13 -0700 Subject: [PATCH] fix(behavior): use viewport filtering after the first render --- .../unit/behaviors/auto-adapt-label.spec.ts | 23 ++++++++++++++++++- packages/g6/src/behaviors/auto-adapt-label.ts | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/g6/__tests__/unit/behaviors/auto-adapt-label.spec.ts b/packages/g6/__tests__/unit/behaviors/auto-adapt-label.spec.ts index 2bccb0580ec..9d2feb9bb72 100644 --- a/packages/g6/__tests__/unit/behaviors/auto-adapt-label.spec.ts +++ b/packages/g6/__tests__/unit/behaviors/auto-adapt-label.spec.ts @@ -1,6 +1,7 @@ import { Point, type Graph } from '@/src'; +import { AutoAdaptLabel } from '@/src/behaviors'; import { behaviorAutoAdaptLabel } from '@@/demos'; -import { createDemoGraph } from '@@/utils'; +import { createDemoGraph, sleep } from '@@/utils'; describe('behavior auto adapt label', () => { let graph: Graph; @@ -34,4 +35,24 @@ describe('behavior auto adapt label', () => { await expect(graph).toMatchSnapshot(__filename, 'zoom-3'); graph.zoomTo(1, false, origin); }); + + it('uses viewport filtering after the first render', async () => { + const getLabelElements = jest.spyOn(AutoAdaptLabel.prototype as any, 'getLabelElements'); + const getLabelElementsInView = jest.spyOn(AutoAdaptLabel.prototype as any, 'getLabelElementsInView'); + const testGraph = await createDemoGraph(behaviorAutoAdaptLabel, { animation: false }); + + try { + expect(getLabelElements).toHaveBeenCalled(); + const callsAfterInitialRender = getLabelElementsInView.mock.calls.length; + + testGraph.zoomTo(3, false, [200, 200, 0]); + await sleep(150); + + expect(getLabelElementsInView.mock.calls.length).toBeGreaterThan(callsAfterInitialRender); + } finally { + getLabelElements.mockRestore(); + getLabelElementsInView.mockRestore(); + testGraph.destroy(); + } + }); }); diff --git a/packages/g6/src/behaviors/auto-adapt-label.ts b/packages/g6/src/behaviors/auto-adapt-label.ts index 300a3e5c1a0..5166f71cc9f 100644 --- a/packages/g6/src/behaviors/auto-adapt-label.ts +++ b/packages/g6/src/behaviors/auto-adapt-label.ts @@ -251,6 +251,7 @@ export class AutoAdaptLabel extends BaseBehavior { private onAfterRender = (event: IEvent) => { this.onToggleVisibility(event); + this.isFirstRender = false; this.enableToggle = true; };