@flowgram.ai/free-container-plugin 0.1.8 → 0.1.15

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.
package/dist/index.js CHANGED
@@ -38,364 +38,16 @@ var __decorateClass = (decorators, target, key, kind) => {
38
38
  // src/index.ts
39
39
  var src_exports = {};
40
40
  __export(src_exports, {
41
- ContainerNodeBackground: () => ContainerNodeBackground,
42
- ContainerNodeBorder: () => ContainerNodeBorder,
43
- ContainerNodeContainer: () => ContainerNodeContainer,
44
- ContainerNodeForm: () => ContainerNodeForm,
45
- ContainerNodeHeader: () => ContainerNodeHeader,
46
- ContainerNodePorts: () => ContainerNodePorts,
47
- ContainerNodeRender: () => ContainerNodeRender,
48
- ContainerNodeRenderKey: () => ContainerNodeRenderKey,
49
41
  NodeIntoContainerService: () => NodeIntoContainerService,
50
42
  NodeIntoContainerType: () => NodeIntoContainerType,
51
- createContainerNodePlugin: () => createContainerNodePlugin
43
+ SubCanvasBackground: () => SubCanvasBackground,
44
+ SubCanvasBorder: () => SubCanvasBorder,
45
+ SubCanvasRender: () => SubCanvasRender,
46
+ createContainerNodePlugin: () => createContainerNodePlugin,
47
+ useNodeSize: () => useNodeSize
52
48
  });
53
49
  module.exports = __toCommonJS(src_exports);
54
50
 
55
- // src/container-node-render/constant.ts
56
- var ContainerNodeRenderKey = "container-node-render-key";
57
-
58
- // src/container-node-render/render.tsx
59
- var import_react7 = __toESM(require("react"));
60
-
61
- // src/container-node-render/components/header/index.tsx
62
- var import_react = __toESM(require("react"));
63
- var import_free_layout_core = require("@flowgram.ai/free-layout-core");
64
-
65
- // src/container-node-render/components/header/style.ts
66
- var import_styled_components = __toESM(require("styled-components"));
67
- var ContainerNodeHeaderStyle = import_styled_components.default.div`
68
- z-index: 0;
69
-
70
- display: flex;
71
- gap: 8px;
72
- align-items: center;
73
- justify-content: flex-start;
74
-
75
- width: 100%;
76
- height: auto;
77
-
78
- border-radius: 8px 8px 0 0;
79
-
80
- .container-node-logo {
81
- position: relative;
82
-
83
- flex-shrink: 0;
84
-
85
- width: 24px;
86
- height: 24px;
87
-
88
- border-radius: 4px;
89
-
90
- &::after {
91
- content: '';
92
-
93
- position: absolute;
94
- top: 0;
95
- left: 0;
96
-
97
- display: block;
98
-
99
- width: 100%;
100
- height: 100%;
101
-
102
- border-radius: 4px;
103
- box-shadow: inset 0 0 0 1px var(--coz-stroke-plus);
104
- }
105
-
106
- > img {
107
- width: 24px;
108
- height: 24px;
109
- border-radius: 4px;
110
- }
111
- }
112
-
113
- .container-node-title {
114
- margin: 0;
115
- padding: 0;
116
-
117
- font-size: 16px;
118
- font-weight: 500;
119
- font-style: normal;
120
- line-height: 22px;
121
- color: var(--coz-fg-primary, rgba(6, 7, 9, 80%));
122
- text-overflow: ellipsis;
123
- }
124
-
125
- .container-node-tooltip {
126
- height: 100%;
127
- }
128
-
129
- .container-node-tooltip-icon {
130
- display: flex;
131
- align-items: center;
132
-
133
- width: 16px;
134
- height: 100%;
135
-
136
- color: #a7a9b0;
137
- }
138
- `;
139
-
140
- // src/container-node-render/components/header/index.tsx
141
- var ContainerNodeHeader = ({ children }) => {
142
- const { startDrag, onFocus, onBlur } = (0, import_free_layout_core.useNodeRender)();
143
- return /* @__PURE__ */ import_react.default.createElement(
144
- ContainerNodeHeaderStyle,
145
- {
146
- className: "container-node-header",
147
- draggable: true,
148
- onMouseDown: (e) => {
149
- startDrag(e);
150
- },
151
- onFocus,
152
- onBlur
153
- },
154
- children
155
- );
156
- };
157
-
158
- // src/container-node-render/components/background/index.tsx
159
- var import_react2 = __toESM(require("react"));
160
- var import_free_layout_core2 = require("@flowgram.ai/free-layout-core");
161
-
162
- // src/container-node-render/components/background/style.ts
163
- var import_styled_components2 = __toESM(require("styled-components"));
164
- var ContainerNodeBackgroundStyle = import_styled_components2.default.div`
165
- position: absolute;
166
- inset: 56px 18px 18px;
167
- `;
168
-
169
- // src/container-node-render/components/background/index.tsx
170
- var ContainerNodeBackground = () => {
171
- const { node } = (0, import_free_layout_core2.useNodeRender)();
172
- return /* @__PURE__ */ import_react2.default.createElement(
173
- ContainerNodeBackgroundStyle,
174
- {
175
- className: "container-node-background",
176
- "data-flow-editor-selectable": "true"
177
- },
178
- /* @__PURE__ */ import_react2.default.createElement("svg", { width: "100%", height: "100%" }, /* @__PURE__ */ import_react2.default.createElement(
179
- "pattern",
180
- {
181
- id: "container-node-dot-pattern",
182
- width: "20",
183
- height: "20",
184
- patternUnits: "userSpaceOnUse"
185
- },
186
- /* @__PURE__ */ import_react2.default.createElement("circle", { cx: "1", cy: "1", r: "1", stroke: "#eceeef", fillOpacity: "0.5" })
187
- ), /* @__PURE__ */ import_react2.default.createElement(
188
- "rect",
189
- {
190
- width: "100%",
191
- height: "100%",
192
- fill: "url(#container-node-dot-pattern)",
193
- "data-node-panel-container": node.id
194
- }
195
- ))
196
- );
197
- };
198
-
199
- // src/container-node-render/components/container/index.tsx
200
- var import_react3 = __toESM(require("react"));
201
- var import_free_layout_core4 = require("@flowgram.ai/free-layout-core");
202
- var import_document = require("@flowgram.ai/document");
203
-
204
- // src/container-node-render/hooks/use-render-props.ts
205
- var import_free_layout_core3 = require("@flowgram.ai/free-layout-core");
206
- var useContainerNodeRenderProps = () => {
207
- const { node } = (0, import_free_layout_core3.useNodeRender)();
208
- const nodeMeta = node.getNodeMeta();
209
- const {
210
- title = "",
211
- tooltip,
212
- renderPorts = [],
213
- style = {}
214
- } = nodeMeta?.renderContainerNode?.() ?? {};
215
- return {
216
- title,
217
- tooltip,
218
- renderPorts,
219
- style
220
- };
221
- };
222
-
223
- // src/container-node-render/components/container/style.ts
224
- var import_styled_components3 = __toESM(require("styled-components"));
225
- var ContainerNodeContainerStyle = import_styled_components3.default.div`
226
- display: flex;
227
- align-items: flex-start;
228
-
229
- box-sizing: border-box;
230
- min-width: 400px;
231
- min-height: 300px;
232
-
233
- background-color: #f2f3f5;
234
- border-radius: 8px;
235
- outline: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));
236
-
237
- .container-node-container-selected {
238
- outline: 1px solid var(--coz-stroke-hglt, #4e40e5);
239
- }
240
- `;
241
-
242
- // src/container-node-render/components/container/index.tsx
243
- var ContainerNodeContainer = ({ children }) => {
244
- const { node, selected, selectNode, nodeRef } = (0, import_free_layout_core4.useNodeRender)();
245
- const nodeMeta = node.getNodeMeta();
246
- const { size = { width: 300, height: 200 } } = nodeMeta;
247
- const { style = {} } = useContainerNodeRenderProps();
248
- const transform = node.getData(import_document.FlowNodeTransformData);
249
- const [width, setWidth] = (0, import_react3.useState)(size.width);
250
- const [height, setHeight] = (0, import_react3.useState)(size.height);
251
- const updatePorts = () => {
252
- const portsData = node.getData(import_free_layout_core4.WorkflowNodePortsData);
253
- portsData.updateDynamicPorts();
254
- };
255
- const updateSize = () => {
256
- if (node.blocks.length === 0) {
257
- setWidth(size.width);
258
- setHeight(size.height);
259
- return;
260
- }
261
- setWidth(transform.bounds.width);
262
- setHeight(transform.bounds.height);
263
- };
264
- (0, import_react3.useEffect)(() => {
265
- const dispose = transform.onDataChange(() => {
266
- updateSize();
267
- updatePorts();
268
- });
269
- return () => dispose.dispose();
270
- }, [transform, width, height]);
271
- (0, import_react3.useEffect)(() => {
272
- updateSize();
273
- }, []);
274
- return /* @__PURE__ */ import_react3.default.createElement(
275
- ContainerNodeContainerStyle,
276
- {
277
- className: "container-node-container",
278
- style: {
279
- width,
280
- height,
281
- outline: selected ? "1px solid var(--coz-stroke-hglt, #4E40E5)" : "",
282
- ...style
283
- },
284
- ref: nodeRef,
285
- "data-node-selected": String(selected),
286
- onMouseDown: selectNode,
287
- onClick: (e) => {
288
- selectNode(e);
289
- }
290
- },
291
- children
292
- );
293
- };
294
-
295
- // src/container-node-render/components/border/index.tsx
296
- var import_react4 = __toESM(require("react"));
297
- var import_free_layout_core5 = require("@flowgram.ai/free-layout-core");
298
- var import_document2 = require("@flowgram.ai/document");
299
-
300
- // src/container-node-render/components/border/style.ts
301
- var import_styled_components4 = __toESM(require("styled-components"));
302
- var ContainerNodeBorderStyle = import_styled_components4.default.div`
303
- pointer-events: none;
304
-
305
- position: absolute;
306
-
307
- display: flex;
308
- align-items: center;
309
-
310
- width: 100%;
311
- height: 100%;
312
-
313
- background-color: transparent;
314
- border: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));
315
- border-color: var(--coz-bg-plus, rgb(249, 249, 249));
316
- border-style: solid;
317
- border-width: 8px;
318
- border-radius: 8px;
319
- box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 4%), 0 4px 12px 0 rgba(0, 0, 0, 2%);
320
-
321
- &::before {
322
- content: '';
323
-
324
- position: absolute;
325
- z-index: 0;
326
- inset: -4px;
327
-
328
- background-color: transparent;
329
- border-color: var(--coz-bg-plus, rgb(249, 249, 249));
330
- border-style: solid;
331
- border-width: 4px;
332
- border-radius: 8px;
333
- }
334
- `;
335
-
336
- // src/container-node-render/components/border/index.tsx
337
- var ContainerNodeBorder = () => {
338
- const { node } = (0, import_free_layout_core5.useNodeRender)();
339
- const transformData = node.getData(import_document2.FlowNodeTransformData);
340
- const topWidth = Math.max(transformData.padding.top - 50, 50);
341
- return /* @__PURE__ */ import_react4.default.createElement(
342
- ContainerNodeBorderStyle,
343
- {
344
- className: "container-node-border",
345
- style: {
346
- borderTopWidth: topWidth
347
- }
348
- }
349
- );
350
- };
351
-
352
- // src/container-node-render/components/ports/index.tsx
353
- var import_react5 = __toESM(require("react"));
354
- var import_free_lines_plugin = require("@flowgram.ai/free-lines-plugin");
355
- var import_free_layout_core6 = require("@flowgram.ai/free-layout-core");
356
- var ContainerNodePorts = () => {
357
- const { node, ports } = (0, import_free_layout_core6.useNodeRender)();
358
- const { renderPorts } = useContainerNodeRenderProps();
359
- (0, import_react5.useEffect)(() => {
360
- const portsData = node.getData(import_free_layout_core6.WorkflowNodePortsData);
361
- portsData.updateDynamicPorts();
362
- }, [node]);
363
- return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, renderPorts.map((p) => /* @__PURE__ */ import_react5.default.createElement(
364
- "div",
365
- {
366
- key: `canvas-port${p.id}`,
367
- className: "container-node-port",
368
- "data-port-id": p.id,
369
- "data-port-type": p.type,
370
- style: p.style
371
- }
372
- )), ports.map((p) => /* @__PURE__ */ import_react5.default.createElement(import_free_lines_plugin.WorkflowPortRender, { key: p.id, entity: p })));
373
- };
374
-
375
- // src/container-node-render/components/form/index.tsx
376
- var import_react6 = __toESM(require("react"));
377
- var import_free_layout_core7 = require("@flowgram.ai/free-layout-core");
378
-
379
- // src/container-node-render/components/form/style.ts
380
- var import_styled_components5 = __toESM(require("styled-components"));
381
- var ContainerNodeFormStyle = import_styled_components5.default.div`
382
- background-color: #fff;
383
- border-radius: 8px 8px 0 0;
384
- width: 100%;
385
- `;
386
-
387
- // src/container-node-render/components/form/index.tsx
388
- var ContainerNodeForm = () => {
389
- const { form } = (0, import_free_layout_core7.useNodeRender)();
390
- if (!form) {
391
- return null;
392
- }
393
- return /* @__PURE__ */ import_react6.default.createElement(ContainerNodeFormStyle, null, form.render());
394
- };
395
-
396
- // src/container-node-render/render.tsx
397
- var ContainerNodeRender = ({ content }) => /* @__PURE__ */ import_react7.default.createElement(ContainerNodeContainer, null, /* @__PURE__ */ import_react7.default.createElement(ContainerNodeBackground, null), /* @__PURE__ */ import_react7.default.createElement(ContainerNodeBorder, null), /* @__PURE__ */ import_react7.default.createElement(ContainerNodeHeader, null, content), /* @__PURE__ */ import_react7.default.createElement(ContainerNodePorts, null));
398
-
399
51
  // src/node-into-container/constant.ts
400
52
  var NodeIntoContainerType = /* @__PURE__ */ ((NodeIntoContainerType2) => {
401
53
  NodeIntoContainerType2["In"] = "in";
@@ -407,9 +59,9 @@ var NodeIntoContainerType = /* @__PURE__ */ ((NodeIntoContainerType2) => {
407
59
  var import_lodash = require("lodash");
408
60
  var import_inversify = require("inversify");
409
61
  var import_utils = require("@flowgram.ai/utils");
410
- var import_free_layout_core8 = require("@flowgram.ai/free-layout-core");
62
+ var import_free_layout_core = require("@flowgram.ai/free-layout-core");
411
63
  var import_free_history_plugin = require("@flowgram.ai/free-history-plugin");
412
- var import_document3 = require("@flowgram.ai/document");
64
+ var import_document = require("@flowgram.ai/document");
413
65
  var import_core = require("@flowgram.ai/core");
414
66
  var NodeIntoContainerService = class {
415
67
  constructor() {
@@ -473,6 +125,13 @@ var NodeIntoContainerService = class {
473
125
  if (!parentNode || !containerNode || !this.isContainer(parentNode)) {
474
126
  return false;
475
127
  }
128
+ const canDrop = this.dragService.canDropToNode({
129
+ dragNodeType: node.flowNodeType,
130
+ dropNode: containerNode
131
+ });
132
+ if (!canDrop.allowDrop) {
133
+ return false;
134
+ }
476
135
  return true;
477
136
  }
478
137
  /** 初始化状态 */
@@ -585,25 +244,25 @@ var NodeIntoContainerService = class {
585
244
  return;
586
245
  }
587
246
  if (this.state.dropNode) {
588
- const renderData2 = this.state.dropNode.getData(import_document3.FlowNodeRenderData);
247
+ const renderData2 = this.state.dropNode.getData(import_document.FlowNodeRenderData);
589
248
  const renderDom2 = renderData2.node?.children?.[0];
590
249
  if (renderDom2) {
591
- renderDom2.style.outline = "";
250
+ renderDom2.classList.remove("selected");
592
251
  }
593
252
  }
594
253
  this.state.dropNode = dropNode;
595
254
  if (!dropNode) {
596
255
  return;
597
256
  }
598
- const renderData = dropNode.getData(import_document3.FlowNodeRenderData);
257
+ const renderData = dropNode.getData(import_document.FlowNodeRenderData);
599
258
  const renderDom = renderData.node?.children?.[0];
600
259
  if (renderDom) {
601
- renderDom.style.outline = "1px solid var(--coz-stroke-hglt,#4e40e5)";
260
+ renderDom.classList.add("selected");
602
261
  }
603
262
  }
604
263
  /** 获取容器节点transforms */
605
264
  getContainerTransforms() {
606
- return this.document.getRenderDatas(import_document3.FlowNodeTransformData, false).filter((transform) => {
265
+ return this.document.getRenderDatas(import_document.FlowNodeTransformData, false).filter((transform) => {
607
266
  const { entity } = transform;
608
267
  if (entity.originParent) {
609
268
  return entity.getNodeMeta().selectable && entity.originParent.getNodeMeta().selectable;
@@ -688,33 +347,190 @@ var NodeIntoContainerService = class {
688
347
  }
689
348
  };
690
349
  __decorateClass([
691
- (0, import_inversify.inject)(import_free_layout_core8.WorkflowDragService)
350
+ (0, import_inversify.inject)(import_free_layout_core.WorkflowDragService)
692
351
  ], NodeIntoContainerService.prototype, "dragService", 2);
693
352
  __decorateClass([
694
- (0, import_inversify.inject)(import_free_layout_core8.WorkflowDocument)
353
+ (0, import_inversify.inject)(import_free_layout_core.WorkflowDocument)
695
354
  ], NodeIntoContainerService.prototype, "document", 2);
696
355
  __decorateClass([
697
356
  (0, import_inversify.inject)(import_core.PlaygroundConfigEntity)
698
357
  ], NodeIntoContainerService.prototype, "playgroundConfig", 2);
699
358
  __decorateClass([
700
- (0, import_inversify.inject)(import_free_layout_core8.WorkflowOperationBaseService)
359
+ (0, import_inversify.inject)(import_free_layout_core.WorkflowOperationBaseService)
701
360
  ], NodeIntoContainerService.prototype, "operationService", 2);
702
361
  __decorateClass([
703
- (0, import_inversify.inject)(import_free_layout_core8.WorkflowLinesManager)
362
+ (0, import_inversify.inject)(import_free_layout_core.WorkflowLinesManager)
704
363
  ], NodeIntoContainerService.prototype, "linesManager", 2);
705
364
  __decorateClass([
706
365
  (0, import_inversify.inject)(import_free_history_plugin.HistoryService)
707
366
  ], NodeIntoContainerService.prototype, "historyService", 2);
708
367
  __decorateClass([
709
- (0, import_inversify.inject)(import_free_layout_core8.WorkflowSelectService)
368
+ (0, import_inversify.inject)(import_free_layout_core.WorkflowSelectService)
710
369
  ], NodeIntoContainerService.prototype, "selectService", 2);
711
370
  NodeIntoContainerService = __decorateClass([
712
371
  (0, import_inversify.injectable)()
713
372
  ], NodeIntoContainerService);
714
373
 
374
+ // src/sub-canvas/hooks/use-node-size.ts
375
+ var import_react = require("react");
376
+ var import_free_layout_core2 = require("@flowgram.ai/free-layout-core");
377
+ var import_document2 = require("@flowgram.ai/document");
378
+ var useNodeSize = () => {
379
+ const node = (0, import_free_layout_core2.useCurrentEntity)();
380
+ const nodeMeta = node.getNodeMeta();
381
+ const { size = { width: 300, height: 200 }, isContainer } = nodeMeta;
382
+ const transform = node.getData(import_document2.FlowNodeTransformData);
383
+ const [width, setWidth] = (0, import_react.useState)(size.width);
384
+ const [height, setHeight] = (0, import_react.useState)(size.height);
385
+ const updatePorts = () => {
386
+ const portsData = node.getData(import_free_layout_core2.WorkflowNodePortsData);
387
+ portsData.updateDynamicPorts();
388
+ };
389
+ const updateSize = () => {
390
+ if (node.blocks.length === 0) {
391
+ setWidth(size.width);
392
+ setHeight(size.height);
393
+ return;
394
+ }
395
+ setWidth(transform.bounds.width);
396
+ setHeight(transform.bounds.height);
397
+ };
398
+ (0, import_react.useEffect)(() => {
399
+ const dispose = transform.onDataChange(() => {
400
+ updateSize();
401
+ updatePorts();
402
+ });
403
+ return () => dispose.dispose();
404
+ }, [transform, width, height]);
405
+ (0, import_react.useEffect)(() => {
406
+ updateSize();
407
+ }, []);
408
+ if (!isContainer) {
409
+ return;
410
+ }
411
+ return {
412
+ width,
413
+ height
414
+ };
415
+ };
416
+
417
+ // src/sub-canvas/components/background/index.tsx
418
+ var import_react2 = __toESM(require("react"));
419
+ var import_free_layout_core3 = require("@flowgram.ai/free-layout-core");
420
+
421
+ // src/sub-canvas/components/background/style.ts
422
+ var import_styled_components = __toESM(require("styled-components"));
423
+ var SubCanvasBackgroundStyle = import_styled_components.default.div`
424
+ width: 100%;
425
+ height: 100%;
426
+ inset: 56px 18px 18px;
427
+ background-color: #f2f3f5;
428
+ `;
429
+
430
+ // src/sub-canvas/components/background/index.tsx
431
+ var SubCanvasBackground = () => {
432
+ const node = (0, import_free_layout_core3.useCurrentEntity)();
433
+ return /* @__PURE__ */ import_react2.default.createElement(SubCanvasBackgroundStyle, { className: "sub-canvas-background", "data-flow-editor-selectable": "true" }, /* @__PURE__ */ import_react2.default.createElement("svg", { width: "100%", height: "100%" }, /* @__PURE__ */ import_react2.default.createElement("pattern", { id: "sub-canvas-dot-pattern", width: "20", height: "20", patternUnits: "userSpaceOnUse" }, /* @__PURE__ */ import_react2.default.createElement("circle", { cx: "1", cy: "1", r: "1", stroke: "#eceeef", fillOpacity: "0.5" })), /* @__PURE__ */ import_react2.default.createElement(
434
+ "rect",
435
+ {
436
+ width: "100%",
437
+ height: "100%",
438
+ fill: "url(#sub-canvas-dot-pattern)",
439
+ "data-node-panel-container": node.id
440
+ }
441
+ )));
442
+ };
443
+
444
+ // src/sub-canvas/components/border/index.tsx
445
+ var import_react3 = __toESM(require("react"));
446
+
447
+ // src/sub-canvas/components/border/style.ts
448
+ var import_styled_components2 = __toESM(require("styled-components"));
449
+ var SubCanvasBorderStyle = import_styled_components2.default.div`
450
+ pointer-events: none;
451
+
452
+ position: relative;
453
+
454
+ display: flex;
455
+ align-items: center;
456
+
457
+ width: 100%;
458
+ height: 100%;
459
+
460
+ background-color: transparent;
461
+ border: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));
462
+ border-color: var(--coz-bg-plus, rgb(249, 249, 249));
463
+ border-style: solid;
464
+ border-width: 8px;
465
+ border-radius: 8px;
466
+
467
+ &::before {
468
+ content: '';
469
+
470
+ position: absolute;
471
+ z-index: 0;
472
+ inset: -4px;
473
+
474
+ background-color: transparent;
475
+ border-color: var(--coz-bg-plus, rgb(249, 249, 249));
476
+ border-style: solid;
477
+ border-width: 4px;
478
+ border-radius: 8px;
479
+ }
480
+ `;
481
+
482
+ // src/sub-canvas/components/border/index.tsx
483
+ var SubCanvasBorder = ({ style, children }) => /* @__PURE__ */ import_react3.default.createElement(
484
+ SubCanvasBorderStyle,
485
+ {
486
+ className: "sub-canvas-border",
487
+ style: {
488
+ ...style
489
+ }
490
+ },
491
+ children
492
+ );
493
+
494
+ // src/sub-canvas/components/render/index.tsx
495
+ var import_react4 = __toESM(require("react"));
496
+ var import_free_layout_core4 = require("@flowgram.ai/free-layout-core");
497
+
498
+ // src/sub-canvas/components/render/style.ts
499
+ var import_styled_components3 = __toESM(require("styled-components"));
500
+ var SubCanvasRenderStyle = import_styled_components3.default.div`
501
+ width: 100%;
502
+ height: 100%;
503
+ `;
504
+
505
+ // src/sub-canvas/components/render/index.tsx
506
+ var SubCanvasRender = ({ className, style }) => {
507
+ const node = (0, import_free_layout_core4.useCurrentEntity)();
508
+ const nodeSize = useNodeSize();
509
+ const { height, width } = nodeSize ?? {};
510
+ const nodeHeight = nodeSize?.height ?? 0;
511
+ const { padding } = node.transform;
512
+ (0, import_react4.useLayoutEffect)(() => {
513
+ node.renderData.node.style.width = width + "px";
514
+ node.renderData.node.style.height = height + "px";
515
+ }, [height, width]);
516
+ return /* @__PURE__ */ import_react4.default.createElement(
517
+ SubCanvasRenderStyle,
518
+ {
519
+ className: `sub-canvas-render ${className ?? ""}`,
520
+ style: {
521
+ height: nodeHeight - padding.top,
522
+ ...style
523
+ },
524
+ "data-flow-editor-selectable": "true",
525
+ onDragStart: (e) => {
526
+ e.stopPropagation();
527
+ }
528
+ },
529
+ /* @__PURE__ */ import_react4.default.createElement(SubCanvasBorder, null, /* @__PURE__ */ import_react4.default.createElement(SubCanvasBackground, null))
530
+ );
531
+ };
532
+
715
533
  // src/plugin.tsx
716
- var import_react8 = __toESM(require("react"));
717
- var import_renderer = require("@flowgram.ai/renderer");
718
534
  var import_core2 = require("@flowgram.ai/core");
719
535
  var createContainerNodePlugin = (0, import_core2.definePluginCreator)({
720
536
  onBind: ({ bind }) => {
@@ -722,8 +538,6 @@ var createContainerNodePlugin = (0, import_core2.definePluginCreator)({
722
538
  },
723
539
  onInit(ctx, options) {
724
540
  ctx.get(NodeIntoContainerService).init();
725
- const registry = ctx.get(import_renderer.FlowRendererRegistry);
726
- registry.registerReactComponent(ContainerNodeRenderKey, (props) => /* @__PURE__ */ import_react8.default.createElement(ContainerNodeRender, { ...props, content: options.renderContent }));
727
541
  },
728
542
  onReady(ctx, options) {
729
543
  if (options.disableNodeIntoContainer !== true) {
@@ -736,16 +550,12 @@ var createContainerNodePlugin = (0, import_core2.definePluginCreator)({
736
550
  });
737
551
  // Annotate the CommonJS export names for ESM import in node:
738
552
  0 && (module.exports = {
739
- ContainerNodeBackground,
740
- ContainerNodeBorder,
741
- ContainerNodeContainer,
742
- ContainerNodeForm,
743
- ContainerNodeHeader,
744
- ContainerNodePorts,
745
- ContainerNodeRender,
746
- ContainerNodeRenderKey,
747
553
  NodeIntoContainerService,
748
554
  NodeIntoContainerType,
749
- createContainerNodePlugin
555
+ SubCanvasBackground,
556
+ SubCanvasBorder,
557
+ SubCanvasRender,
558
+ createContainerNodePlugin,
559
+ useNodeSize
750
560
  });
751
561
  //# sourceMappingURL=index.js.map