@flowgram.ai/renderer 0.1.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,686 @@
1
+ import { LABEL_SIDE_TYPE, FlowNodeTransitionData, FlowNodeEntity, FlowNodeTransformData, FlowDocument, FlowDocumentTransformerEntity, FlowNodeRenderData, FlowDragService, FlowRendererStateEntity } from '@flowgram.ai/document';
2
+ import { ConfigEntity, EntityOpts, PlaygroundDragEvent, PositionSchema, SizeSchema, Layer, PipelineRegistry, LayerRegistry, PlaygroundConfigEntity, PlaygroundDrag, EditorStateConfigEntity, LayerOptions, ContextMenuService, SelectionService, PlaygroundConfig, CommandRegistry } from '@flowgram.ai/core';
3
+ import * as _flowgram_ai_utils from '@flowgram.ai/utils';
4
+ import { Rectangle, Disposable, CacheOriginItem, ScrollSchema } from '@flowgram.ai/utils';
5
+ import React from 'react';
6
+ import * as lodash from 'lodash';
7
+ import { ContainerModule } from 'inversify';
8
+
9
+ /**
10
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
11
+ * SPDX-License-Identifier: MIT
12
+ */
13
+
14
+ interface FlowDragEntityConfig extends EntityOpts {
15
+ }
16
+ declare enum ScrollDirection {
17
+ TOP = 0,
18
+ BOTTOM = 1,
19
+ LEFT = 2,
20
+ RIGHT = 3
21
+ }
22
+ interface CollisionRetType {
23
+ hasCollision: boolean;
24
+ labelOffsetType?: LABEL_SIDE_TYPE;
25
+ }
26
+ declare class FlowDragEntity extends ConfigEntity<FlowDragEntityConfig> {
27
+ private playgroundConfigEntity;
28
+ static type: string;
29
+ private containerDom;
30
+ private containerX;
31
+ private containerY;
32
+ private _scrollXInterval;
33
+ private _scrollYInterval;
34
+ get hasScroll(): boolean;
35
+ constructor(conf: any);
36
+ isCollision(transition: FlowNodeTransitionData, rect: Rectangle, isBranch: boolean): CollisionRetType;
37
+ isNodeCollision(transition: FlowNodeTransitionData, rect: Rectangle, scale: number): CollisionRetType;
38
+ isBranchCollision(transition: FlowNodeTransitionData, rect: Rectangle, scale: number): CollisionRetType;
39
+ private _startScrollX;
40
+ private _stopScrollX;
41
+ private _startScrollY;
42
+ private _stopScrollY;
43
+ stopAllScroll(): void;
44
+ setDomStyle(): void;
45
+ scrollDirection(e: MouseEvent, containerDom: HTMLDivElement, x: number, y: number): ScrollDirection | undefined;
46
+ dispose(): void;
47
+ }
48
+
49
+ /**
50
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
51
+ * SPDX-License-Identifier: MIT
52
+ */
53
+
54
+ interface FlowSelectConfigEntityData {
55
+ selectedNodes: FlowNodeEntity[];
56
+ }
57
+ /**
58
+ * 圈选节点相关数据存储
59
+ */
60
+ declare class FlowSelectConfigEntity extends ConfigEntity<FlowSelectConfigEntityData> {
61
+ static type: string;
62
+ boundsPadding: number;
63
+ getDefaultConfig(): FlowSelectConfigEntityData;
64
+ get selectedNodes(): FlowNodeEntity[];
65
+ /**
66
+ * 选中节点
67
+ * @param nodes
68
+ */
69
+ set selectedNodes(nodes: FlowNodeEntity[]);
70
+ /**
71
+ * 清除选中节点
72
+ */
73
+ clearSelectedNodes(): void;
74
+ /**
75
+ * 通过选择框选中节点
76
+ * @param rect
77
+ * @param transforms
78
+ */
79
+ selectFromBounds(rect: Rectangle, transforms: FlowNodeTransformData[]): void;
80
+ /**
81
+ * 获取选中节点外围的最大边框
82
+ */
83
+ getSelectedBounds(): Rectangle;
84
+ }
85
+
86
+ /**
87
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
88
+ * SPDX-License-Identifier: MIT
89
+ */
90
+
91
+ interface SelectorBoxConfigData extends PlaygroundDragEvent {
92
+ disabled?: boolean;
93
+ }
94
+ /**
95
+ * 选择框配置
96
+ */
97
+ declare class SelectorBoxConfigEntity extends ConfigEntity<SelectorBoxConfigData> {
98
+ static type: string;
99
+ get dragInfo(): PlaygroundDragEvent;
100
+ setDragInfo(info: PlaygroundDragEvent): void;
101
+ get disabled(): boolean;
102
+ set disabled(disabled: boolean);
103
+ get isStart(): boolean;
104
+ get isMoving(): boolean;
105
+ get position(): PositionSchema;
106
+ get size(): SizeSchema;
107
+ get collapsed(): boolean;
108
+ collapse(): void;
109
+ toRectangle(scale: number): Rectangle;
110
+ }
111
+
112
+ /**
113
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
114
+ * SPDX-License-Identifier: MIT
115
+ */
116
+
117
+ /**
118
+ * 监听 dom 元素的 size 变化,用于画布节点的大小变化重新计算
119
+ */
120
+ declare class FlowRendererResizeObserver {
121
+ /**
122
+ * 监听元素 size,并同步到 transform
123
+ * @param el
124
+ * @param transform
125
+ */
126
+ observe(el: HTMLElement, transform: FlowNodeTransformData): Disposable;
127
+ }
128
+
129
+ interface TransformRenderCache {
130
+ updateBounds(): void;
131
+ }
132
+ interface FlowNodesTransformLayerOptions {
133
+ renderElement?: HTMLElement | (() => HTMLElement | undefined);
134
+ }
135
+ /**
136
+ * 渲染节点位置
137
+ */
138
+ declare class FlowNodesTransformLayer extends Layer<FlowNodesTransformLayerOptions> {
139
+ readonly document: FlowDocument;
140
+ readonly resizeObserver: FlowRendererResizeObserver;
141
+ readonly documentTransformer: FlowDocumentTransformerEntity;
142
+ _transforms: FlowNodeTransformData[];
143
+ node: HTMLDivElement;
144
+ get transformVisibles(): FlowNodeTransformData[];
145
+ /**
146
+ * 监听缩放,目前采用整体缩放
147
+ * @param scale
148
+ */
149
+ onZoom(scale: number): void;
150
+ dispose(): void;
151
+ protected renderCache: _flowgram_ai_utils.CacheManager<TransformRenderCache, FlowNodeTransformData>;
152
+ private isCoordEqual;
153
+ onReady(): void;
154
+ get visibeBounds(): _flowgram_ai_utils.Rectangle[];
155
+ /**
156
+ * 更新节点的 bounds 数据
157
+ */
158
+ updateNodesBounds(): void;
159
+ autorun(): void;
160
+ private get renderElement();
161
+ }
162
+
163
+ /**
164
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
165
+ * SPDX-License-Identifier: MIT
166
+ */
167
+
168
+ declare enum FlowRendererComponentType {
169
+ REACT = 0,
170
+ DOM = 1,
171
+ TEXT = 2
172
+ }
173
+ declare enum FlowRendererKey {
174
+ NODE_RENDER = "node-render",
175
+ ADDER = "adder",
176
+ COLLAPSE = "collapse",
177
+ BRANCH_ADDER = "branch-adder",
178
+ TRY_CATCH_COLLAPSE = "try-catch-collapse",
179
+ DRAG_NODE = "drag-node",
180
+ DRAGGABLE_ADDER = "draggable-adder",
181
+ DRAG_HIGHLIGHT_ADDER = "drag-highlight-adder",
182
+ DRAG_BRANCH_HIGHLIGHT_ADDER = "drag-branch-highlight-adder",
183
+ SELECTOR_BOX_POPOVER = "selector-box-popover",
184
+ CONTEXT_MENU_POPOVER = "context-menu-popover",
185
+ SUB_CANVAS = "sub-canvas",
186
+ ARROW_RENDERER = "arrow-renderer",
187
+ MARKER_ARROW = "marker-arrow",
188
+ MARKER_ACTIVATE_ARROW = "marker-active-arrow"
189
+ }
190
+ declare enum FlowTextKey {
191
+ LOOP_END_TEXT = "loop-end-text",
192
+ LOOP_TRAVERSE_TEXT = "loop-traverse-text",
193
+ LOOP_WHILE_TEXT = "loop-while-text",
194
+ TRY_START_TEXT = "try-start-text",
195
+ TRY_END_TEXT = "try-end-text",
196
+ CATCH_TEXT = "catch-text"
197
+ }
198
+ interface FlowRendererComponent {
199
+ type: FlowRendererComponentType;
200
+ renderer: (props?: any) => any;
201
+ }
202
+ /**
203
+ * 命令分类
204
+ */
205
+ declare enum FlowRendererCommandCategory {
206
+ SELECTOR_BOX = "SELECTOR_BOX"
207
+ }
208
+ declare class FlowRendererRegistry {
209
+ private componentsMap;
210
+ private textMap;
211
+ private contribs;
212
+ readonly pipeline: PipelineRegistry;
213
+ init(): void;
214
+ /**
215
+ * 注册 组件数据
216
+ */
217
+ registerRendererComponents(renderKey: FlowRendererKey | string, comp: FlowRendererComponent): void;
218
+ registerReactComponent(renderKey: FlowRendererKey | string, renderer: (props: any) => any): void;
219
+ /**
220
+ * 注册文案
221
+ */
222
+ registerText(configs: Record<FlowTextKey | string, string>): void;
223
+ getText(textKey: string): string | undefined;
224
+ /**
225
+ * TODO: support memo
226
+ */
227
+ getRendererComponent(renderKey: FlowRendererKey | string): FlowRendererComponent;
228
+ tryToGetRendererComponent(renderKey: FlowRendererKey | string): FlowRendererComponent | undefined;
229
+ /**
230
+ * 注册画布层
231
+ */
232
+ registerLayers(...layerRegistries: LayerRegistry[]): void;
233
+ /**
234
+ * 根据配置注册画布
235
+ * @param layerRegistry
236
+ * @param options
237
+ */
238
+ registerLayer<P extends Layer = Layer>(layerRegistry: LayerRegistry<Layer>, options?: P['options']): void;
239
+ }
240
+
241
+ interface NodePortal extends CacheOriginItem {
242
+ id: string;
243
+ Portal: () => JSX.Element;
244
+ }
245
+ /**
246
+ * 渲染节点内容
247
+ */
248
+ declare class FlowNodesContentLayer extends Layer {
249
+ readonly document: FlowDocument;
250
+ readonly rendererRegistry: FlowRendererRegistry;
251
+ readonly documentTransformer: FlowDocumentTransformerEntity;
252
+ _renderStates: FlowNodeRenderData[];
253
+ get renderStatesVisible(): FlowNodeRenderData[];
254
+ private renderMemoCache;
255
+ node: HTMLDivElement;
256
+ getPortalRenderer(data: FlowNodeRenderData): (props: any) => JSX.Element;
257
+ /**
258
+ * 监听缩放,目前采用整体缩放
259
+ * @param scale
260
+ */
261
+ onZoom(scale: number): void;
262
+ dispose(): void;
263
+ protected reactPortals: _flowgram_ai_utils.CacheManager<NodePortal, FlowNodeRenderData>;
264
+ onReady(): void;
265
+ /**
266
+ * 监听readonly和 disabled 状态 并刷新layer, 并刷新节点
267
+ */
268
+ onReadonlyOrDisabledChange(): void;
269
+ getPortals(): NodePortal[];
270
+ render(): React.JSX.Element;
271
+ }
272
+
273
+ declare class FlowLinesLayer extends Layer {
274
+ readonly document: FlowDocument;
275
+ protected readonly dragService: FlowDragService;
276
+ readonly rendererRegistry: FlowRendererRegistry;
277
+ node: HTMLDivElement;
278
+ readonly documentTransformer: FlowDocumentTransformerEntity;
279
+ readonly flowRenderState: FlowRendererStateEntity;
280
+ /**
281
+ * 监听 transition 变化
282
+ */
283
+ _transitions: FlowNodeTransitionData[];
284
+ get transitions(): FlowNodeTransitionData[];
285
+ /**
286
+ * 可视区域变化
287
+ */
288
+ onViewportChange: lodash.DebouncedFuncLeading<() => void>;
289
+ onZoom(): void;
290
+ onReady(): void;
291
+ get viewBox(): string;
292
+ render(): JSX.Element;
293
+ }
294
+
295
+ declare class FlowLabelsLayer extends Layer {
296
+ readonly document: FlowDocument;
297
+ readonly rendererRegistry: FlowRendererRegistry;
298
+ node: HTMLDivElement;
299
+ readonly documentTransformer: FlowDocumentTransformerEntity;
300
+ readonly flowRenderState: FlowRendererStateEntity;
301
+ /**
302
+ * 监听 transition 变化
303
+ */
304
+ _transitions: FlowNodeTransitionData[];
305
+ get transitions(): FlowNodeTransitionData[];
306
+ /**
307
+ * 监听缩放,目前采用整体缩放
308
+ * @param scale
309
+ */
310
+ onZoom(scale: number): void;
311
+ /**
312
+ * 可视区域变化
313
+ */
314
+ onViewportChange: lodash.DebouncedFuncLeading<() => void>;
315
+ onReady(): void;
316
+ /**
317
+ * 监听readonly和 disabled 状态 并刷新layer, 并刷新
318
+ */
319
+ onReadonlyOrDisabledChange(): void;
320
+ render(): React.JSX.Element;
321
+ }
322
+
323
+ /**
324
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
325
+ * SPDX-License-Identifier: MIT
326
+ */
327
+
328
+ /**
329
+ * 调试用,会绘出所有节点的边界
330
+ */
331
+ declare class FlowDebugLayer extends Layer {
332
+ readonly document: FlowDocument;
333
+ readonly documentTransformer: FlowDocumentTransformerEntity;
334
+ _transforms: FlowNodeTransformData[];
335
+ get transforms(): FlowNodeTransformData[];
336
+ node: HTMLElement;
337
+ viewport: HTMLDivElement;
338
+ boundsNodes: HTMLDivElement;
339
+ pointsNodes: HTMLDivElement;
340
+ versionNodes: HTMLDivElement;
341
+ /**
342
+ * ?debug=xxxx, 则返回 xxxx
343
+ */
344
+ filterKey: string;
345
+ protected originLine: HTMLDivElement;
346
+ domCache: WeakMap<FlowNodeTransformData, {
347
+ color: string;
348
+ bbox: HTMLDivElement;
349
+ version: HTMLDivElement;
350
+ input: HTMLDivElement;
351
+ output: HTMLDivElement;
352
+ }>;
353
+ onReady(): void;
354
+ onScroll(): void;
355
+ onResize(): void;
356
+ onZoom(scale: number): void;
357
+ createBounds(transform: FlowNodeTransformData, color: string, depth: number): void;
358
+ /**
359
+ * 显示 viewport 可滚动区域
360
+ */
361
+ renderScrollViewportBounds(): void;
362
+ autorun(): void;
363
+ }
364
+
365
+ /**
366
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
367
+ * SPDX-License-Identifier: MIT
368
+ */
369
+ /**
370
+ * 滚动条点击事件监听
371
+ */
372
+ declare const ScrollBarEvents: unique symbol;
373
+ interface ScrollBarEvents {
374
+ dragStart: () => void;
375
+ }
376
+
377
+ /**
378
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
379
+ * SPDX-License-Identifier: MIT
380
+ */
381
+
382
+ declare enum ScrollBarVisibility {
383
+ Show = "show",
384
+ Hidden = "hidden"
385
+ }
386
+ interface ScrollBarOptions {
387
+ /**
388
+ * 显示滚动条的时机,可选常驻或滚动时显示
389
+ */
390
+ showScrollBars: 'whenScrolling' | 'always';
391
+ getBounds(): Rectangle;
392
+ }
393
+ /**
394
+ * 渲染滚动条 layer
395
+ */
396
+ declare class FlowScrollBarLayer extends Layer<ScrollBarOptions> {
397
+ readonly events?: ScrollBarEvents;
398
+ flowDocument?: FlowDocument;
399
+ protected playgroundConfigEntity: PlaygroundConfigEntity;
400
+ readonly rightScrollBar: HTMLDivElement;
401
+ readonly rightScrollBarBlock: HTMLDivElement;
402
+ readonly bottomScrollBar: HTMLDivElement;
403
+ readonly bottomScrollBarBlock: HTMLDivElement;
404
+ private mostLeft;
405
+ private mostRight;
406
+ private mostTop;
407
+ private mostBottom;
408
+ private viewportWidth;
409
+ private viewportHeight;
410
+ private width;
411
+ private height;
412
+ private scrollBottomWidth;
413
+ private scrollRightHeight;
414
+ private scale;
415
+ private sum;
416
+ private initialScrollX;
417
+ private initialScrollY;
418
+ private hideTimeout;
419
+ get clientViewportWidth(): number;
420
+ get clientViewportHeight(): number;
421
+ get viewportFullWidth(): number;
422
+ get viewportFullHeight(): number;
423
+ get viewportMoveWidth(): number;
424
+ get viewportMoveHeight(): number;
425
+ getToLeft(scrollX: number): number;
426
+ getToTop(scrollY: number): number;
427
+ clickRightScrollBar(e: MouseEvent): void;
428
+ clickBottomScrollBar(e: MouseEvent): void;
429
+ onBoardingToast(): void;
430
+ protected bottomGrabDragger: PlaygroundDrag<undefined>;
431
+ protected rightGrabDragger: PlaygroundDrag<undefined>;
432
+ protected changeScrollBarVisibility(scrollBar: HTMLDivElement, status: ScrollBarVisibility): void;
433
+ onReady(): void;
434
+ autorun(): void;
435
+ }
436
+
437
+ /**
438
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
439
+ * SPDX-License-Identifier: MIT
440
+ */
441
+
442
+ interface FlowDragOptions {
443
+ onDrop?: (opts: {
444
+ dragNodes: FlowNodeEntity[];
445
+ dropNode: FlowNodeEntity;
446
+ }) => void;
447
+ canDrop?: (opts: {
448
+ dragNodes: FlowNodeEntity[];
449
+ dropNode: FlowNodeEntity;
450
+ isBranch?: boolean;
451
+ }) => boolean;
452
+ }
453
+ /**
454
+ * 监听节点的激活状态
455
+ */
456
+ declare class FlowDragLayer extends Layer<FlowDragOptions> {
457
+ readonly document: FlowDocument;
458
+ readonly service: FlowDragService;
459
+ transforms: FlowNodeTransformData[];
460
+ protected editorStateConfig: EditorStateConfigEntity;
461
+ protected playgroundConfigEntity: PlaygroundConfigEntity;
462
+ protected flowDragConfigEntity: FlowDragEntity;
463
+ protected flowRenderStateEntity: FlowRendererStateEntity;
464
+ protected selectConfigEntity: FlowSelectConfigEntity;
465
+ private initialPosition;
466
+ private dragOffset;
467
+ get transitions(): FlowNodeTransitionData[];
468
+ readonly rendererRegistry: FlowRendererRegistry;
469
+ get dragStartEntity(): FlowNodeEntity | undefined;
470
+ set dragStartEntity(entity: FlowNodeEntity | undefined);
471
+ get dragEntities(): FlowNodeEntity[];
472
+ set dragEntities(entities: FlowNodeEntity[]);
473
+ private dragNodeComp;
474
+ containerRef: React.RefObject<HTMLDivElement>;
475
+ draggingNodeMask: HTMLDivElement;
476
+ protected isGrab(): boolean;
477
+ setDraggingStatus(status: boolean): void;
478
+ dragEnable(e: MouseEvent): boolean;
479
+ handleMouseMove(event: MouseEvent): void;
480
+ handleMouseUp(): void;
481
+ protected _dragger: PlaygroundDrag<undefined>;
482
+ /**
483
+ * 开始拖拽事件
484
+ * @param e
485
+ */
486
+ startDrag(e: {
487
+ clientX: number;
488
+ clientY: number;
489
+ }, { dragStartEntity: startEntityFromProps, dragEntities, }: {
490
+ dragStartEntity: FlowNodeEntity;
491
+ dragEntities?: FlowNodeEntity[];
492
+ }, options?: {
493
+ dragOffsetX?: number;
494
+ dragOffsetY?: number;
495
+ }): Promise<void>;
496
+ onReady(): void;
497
+ render(): React.JSX.Element;
498
+ }
499
+
500
+ interface FlowSelectorBoxOptions extends LayerOptions {
501
+ /**
502
+ * 默认不提供则为点击空白地方可以框选
503
+ * @param e
504
+ * @param entity
505
+ */
506
+ canSelect?: (e: MouseEvent, entity: SelectorBoxConfigEntity) => boolean;
507
+ }
508
+ /**
509
+ * 流程选择框
510
+ */
511
+ declare class FlowSelectorBoxLayer extends Layer<FlowSelectorBoxOptions> {
512
+ protected flowDocument: FlowDocument;
513
+ readonly contextMenuService: ContextMenuService;
514
+ protected playgroundConfigEntity: PlaygroundConfigEntity;
515
+ readonly selectionService: SelectionService;
516
+ protected selectorBoxConfigEntity: SelectorBoxConfigEntity;
517
+ protected selectConfigEntity: FlowSelectConfigEntity;
518
+ protected editorStateConfig: EditorStateConfigEntity;
519
+ readonly node: HTMLDivElement;
520
+ /**
521
+ * 选择框
522
+ */
523
+ protected selectorBox: _flowgram_ai_utils.CacheManager<_flowgram_ai_utils.DOMCache, _flowgram_ai_utils.CacheOriginItem>;
524
+ /**
525
+ * 用于遮挡鼠标,避免触发 hover
526
+ */
527
+ protected selectorBoxBlock: _flowgram_ai_utils.CacheManager<_flowgram_ai_utils.DOMCache, _flowgram_ai_utils.CacheOriginItem>;
528
+ protected transformVisibles: FlowNodeTransformData[];
529
+ /**
530
+ * 拖动选择框
531
+ */
532
+ protected selectboxDragger: PlaygroundDrag<undefined>;
533
+ onReady(): void;
534
+ isEnabled(): boolean;
535
+ /**
536
+ * Destroy
537
+ */
538
+ dispose(): void;
539
+ protected updateSelectorBox(selector: SelectorBoxConfigEntity): void;
540
+ private nodeSelectable;
541
+ }
542
+
543
+ /**
544
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
545
+ * SPDX-License-Identifier: MIT
546
+ */
547
+
548
+ interface SelectorBoxPopoverProps {
549
+ bounds: Rectangle;
550
+ config: PlaygroundConfig;
551
+ flowSelectConfig: FlowSelectConfigEntity;
552
+ commandRegistry: CommandRegistry;
553
+ children?: React.ReactNode;
554
+ }
555
+ interface FlowSelectorBoundsLayerOptions extends LayerOptions {
556
+ ignoreOneSelect?: boolean;
557
+ ignoreChildrenLength?: boolean;
558
+ boundsPadding?: number;
559
+ disableBackground?: boolean;
560
+ backgroundClassName?: string;
561
+ foregroundClassName?: string;
562
+ SelectorBoxPopover?: React.FC<SelectorBoxPopoverProps>;
563
+ CustomBoundsRenderer?: React.FC<SelectorBoxPopoverProps>;
564
+ }
565
+ /**
566
+ * 流程节点被框选后的边界区域渲染
567
+ */
568
+ declare class FlowSelectorBoundsLayer extends Layer<FlowSelectorBoundsLayerOptions> {
569
+ readonly rendererRegistry: FlowRendererRegistry;
570
+ readonly commandRegistry: CommandRegistry;
571
+ protected flowSelectConfigEntity: FlowSelectConfigEntity;
572
+ protected editorStateConfig: EditorStateConfigEntity;
573
+ protected selectorBoxConfigEntity: SelectorBoxConfigEntity;
574
+ /**
575
+ * 需要监听节点的展开和收起状态,重新绘制边框
576
+ */
577
+ renderStates: FlowNodeRenderData[];
578
+ _transforms: FlowNodeTransformData[];
579
+ readonly node: HTMLDivElement;
580
+ readonly selectBoundsBackground: HTMLDivElement;
581
+ onReady(): void;
582
+ onZoom(scale: number): void;
583
+ onViewportChange(): void;
584
+ isEnabled(): boolean;
585
+ render(): JSX.Element;
586
+ }
587
+
588
+ /**
589
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
590
+ * SPDX-License-Identifier: MIT
591
+ */
592
+
593
+ /**
594
+ * 流程右键菜单
595
+ */
596
+ declare class FlowContextMenuLayer extends Layer {
597
+ readonly commandRegistry: CommandRegistry;
598
+ readonly rendererRegistry: FlowRendererRegistry;
599
+ readonly contextMenuService: ContextMenuService;
600
+ protected flowSelectConfigEntity: FlowSelectConfigEntity;
601
+ readonly selectionService: SelectionService;
602
+ protected playgroundConfigEntity: PlaygroundConfigEntity;
603
+ protected editorStateConfig: EditorStateConfigEntity;
604
+ protected selectorBoxConfigEntity: SelectorBoxConfigEntity;
605
+ readonly node: HTMLDivElement;
606
+ readonly nodeRef: React.RefObject<{
607
+ setVisible: (v: boolean) => void;
608
+ }>;
609
+ isEnabled(): boolean;
610
+ onReady(): void;
611
+ onScroll(): void;
612
+ onZoom(): void;
613
+ /**
614
+ * Destroy
615
+ */
616
+ dispose(): void;
617
+ /**
618
+ * 渲染工具栏
619
+ */
620
+ renderCommandMenus(): JSX.Element[];
621
+ render(): JSX.Element;
622
+ }
623
+
624
+ /**
625
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
626
+ * SPDX-License-Identifier: MIT
627
+ */
628
+
629
+ /**
630
+ * 控制滚动边界
631
+ */
632
+ declare class FlowScrollLimitLayer extends Layer {
633
+ readonly document: FlowDocument;
634
+ getInitScroll(): ScrollSchema;
635
+ onReady(): void;
636
+ }
637
+
638
+ /**
639
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
640
+ * SPDX-License-Identifier: MIT
641
+ */
642
+
643
+ declare const FlowRendererContribution: unique symbol;
644
+ interface FlowRendererContribution {
645
+ registerRenderer?(registry: FlowRendererRegistry): void;
646
+ }
647
+
648
+ /**
649
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
650
+ * SPDX-License-Identifier: MIT
651
+ */
652
+
653
+ declare const FlowRendererContainerModule: ContainerModule;
654
+
655
+ /**
656
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
657
+ * SPDX-License-Identifier: MIT
658
+ */
659
+ declare const MARK_ARROW_ID = "$marker_arrow$";
660
+
661
+ /**
662
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
663
+ * SPDX-License-Identifier: MIT
664
+ */
665
+ declare const MARK_ACTIVATED_ARROW_ID = "$marker_arrow_activated$";
666
+
667
+ declare function useBaseColor(): {
668
+ baseColor: string;
669
+ baseActivatedColor: string;
670
+ };
671
+
672
+ /**
673
+ * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
674
+ * SPDX-License-Identifier: MIT
675
+ */
676
+
677
+ interface PropsType {
678
+ data: FlowNodeTransitionData;
679
+ rendererRegistry: FlowRendererRegistry;
680
+ isViewportVisible: (bounds: Rectangle) => boolean;
681
+ linesSave: JSX.Element[];
682
+ dragService: FlowDragService;
683
+ }
684
+ declare function createLines(props: PropsType): void;
685
+
686
+ export { type CollisionRetType, FlowContextMenuLayer, FlowDebugLayer, FlowDragEntity, FlowDragLayer, type FlowDragOptions, FlowLabelsLayer, FlowLinesLayer, FlowNodesContentLayer, FlowNodesTransformLayer, type FlowNodesTransformLayerOptions, FlowRendererCommandCategory, type FlowRendererComponent, FlowRendererComponentType, FlowRendererContainerModule, FlowRendererContribution, FlowRendererKey, FlowRendererRegistry, FlowScrollBarLayer, FlowScrollLimitLayer, FlowSelectConfigEntity, FlowSelectorBoundsLayer, type FlowSelectorBoundsLayerOptions, FlowSelectorBoxLayer, type FlowSelectorBoxOptions, FlowTextKey, MARK_ACTIVATED_ARROW_ID, MARK_ARROW_ID, ScrollBarEvents, type ScrollBarOptions, type SelectorBoxConfigData, SelectorBoxConfigEntity, type SelectorBoxPopoverProps, createLines, useBaseColor };