@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/esm/index.js +178 -361
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +23 -40
- package/dist/index.d.ts +23 -40
- package/dist/index.js +188 -378
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
247
|
+
const renderData2 = this.state.dropNode.getData(import_document.FlowNodeRenderData);
|
|
589
248
|
const renderDom2 = renderData2.node?.children?.[0];
|
|
590
249
|
if (renderDom2) {
|
|
591
|
-
renderDom2.
|
|
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(
|
|
257
|
+
const renderData = dropNode.getData(import_document.FlowNodeRenderData);
|
|
599
258
|
const renderDom = renderData.node?.children?.[0];
|
|
600
259
|
if (renderDom) {
|
|
601
|
-
renderDom.
|
|
260
|
+
renderDom.classList.add("selected");
|
|
602
261
|
}
|
|
603
262
|
}
|
|
604
263
|
/** 获取容器节点transforms */
|
|
605
264
|
getContainerTransforms() {
|
|
606
|
-
return this.document.getRenderDatas(
|
|
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)(
|
|
350
|
+
(0, import_inversify.inject)(import_free_layout_core.WorkflowDragService)
|
|
692
351
|
], NodeIntoContainerService.prototype, "dragService", 2);
|
|
693
352
|
__decorateClass([
|
|
694
|
-
(0, import_inversify.inject)(
|
|
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)(
|
|
359
|
+
(0, import_inversify.inject)(import_free_layout_core.WorkflowOperationBaseService)
|
|
701
360
|
], NodeIntoContainerService.prototype, "operationService", 2);
|
|
702
361
|
__decorateClass([
|
|
703
|
-
(0, import_inversify.inject)(
|
|
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)(
|
|
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
|
-
|
|
555
|
+
SubCanvasBackground,
|
|
556
|
+
SubCanvasBorder,
|
|
557
|
+
SubCanvasRender,
|
|
558
|
+
createContainerNodePlugin,
|
|
559
|
+
useNodeSize
|
|
750
560
|
});
|
|
751
561
|
//# sourceMappingURL=index.js.map
|