@logicflow/react-node-registry 1.2.0-alpha.1 → 1.2.0-alpha.3

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.
Files changed (57) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +15 -0
  3. package/dist/index.css +122 -0
  4. package/es/components/Container.d.ts +9 -0
  5. package/es/components/Container.js +16 -0
  6. package/es/components/Container.js.map +1 -0
  7. package/es/components/TitleBar.d.ts +8 -0
  8. package/es/components/TitleBar.js +87 -0
  9. package/es/components/TitleBar.js.map +1 -0
  10. package/es/index.css +122 -0
  11. package/es/index.less +1 -0
  12. package/es/model.d.ts +18 -1
  13. package/es/model.js +46 -8
  14. package/es/model.js.map +1 -1
  15. package/es/style/index.css +122 -0
  16. package/es/style/index.less +140 -0
  17. package/es/style/raw.d.ts +4 -0
  18. package/es/style/raw.js +6 -0
  19. package/es/style/raw.js.map +1 -0
  20. package/es/view.d.ts +10 -1
  21. package/es/view.js +123 -9
  22. package/es/view.js.map +1 -1
  23. package/es/wrapper.d.ts +1 -1
  24. package/es/wrapper.js +4 -2
  25. package/es/wrapper.js.map +1 -1
  26. package/lib/components/Container.d.ts +9 -0
  27. package/lib/components/Container.js +23 -0
  28. package/lib/components/Container.js.map +1 -0
  29. package/lib/components/TitleBar.d.ts +8 -0
  30. package/lib/components/TitleBar.js +114 -0
  31. package/lib/components/TitleBar.js.map +1 -0
  32. package/lib/index.css +122 -0
  33. package/lib/index.less +1 -0
  34. package/lib/model.d.ts +18 -1
  35. package/lib/model.js +44 -6
  36. package/lib/model.js.map +1 -1
  37. package/lib/style/index.css +122 -0
  38. package/lib/style/index.less +140 -0
  39. package/lib/style/raw.d.ts +4 -0
  40. package/lib/style/raw.js +9 -0
  41. package/lib/style/raw.js.map +1 -0
  42. package/lib/view.d.ts +10 -1
  43. package/lib/view.js +123 -9
  44. package/lib/view.js.map +1 -1
  45. package/lib/wrapper.d.ts +1 -1
  46. package/lib/wrapper.js +7 -2
  47. package/lib/wrapper.js.map +1 -1
  48. package/package.json +3 -3
  49. package/rollup.config.js +52 -0
  50. package/src/components/Container.tsx +33 -0
  51. package/src/components/TitleBar.tsx +149 -0
  52. package/src/index.less +1 -0
  53. package/src/model.ts +82 -6
  54. package/src/style/index.less +140 -0
  55. package/src/style/raw.ts +129 -0
  56. package/src/view.ts +102 -9
  57. package/src/wrapper.tsx +17 -2
@@ -1,16 +1,16 @@
1
1
 
2
- > @logicflow/react-node-registry@1.2.0-alpha.0 prebuild /Users/didi/Desktop/github/LogicFlow/packages/react-node-registry
2
+ > @logicflow/react-node-registry@1.2.0-alpha.2 prebuild /Users/didi/Desktop/github/LogicFlow/packages/react-node-registry
3
3
  > rss
4
4
 
5
5
  > [prebuild] run-s -s clean:build
6
6
  > [clean:build] rimraf dist es lib
7
7
 
8
- > @logicflow/react-node-registry@1.2.0-alpha.0 build /Users/didi/Desktop/github/LogicFlow/packages/react-node-registry
8
+ > @logicflow/react-node-registry@1.2.0-alpha.2 build /Users/didi/Desktop/github/LogicFlow/packages/react-node-registry
9
9
  > rss
10
10
 
11
11
  > [build] run-p -s build:dev build:umd
12
- > [build:umd] pnpm run --if-present build:less && rollup -c ../../rollup.config.js --bundleConfigAsCjs
13
12
  > [build:dev] pnpm run --if-present build:less && run-p -s build:cjs build:esm
13
+ > [build:umd] pnpm run --if-present build:less && rollup -c ../../rollup.config.js --bundleConfigAsCjs
14
14
  > [build:less] ./scripts/build-less
15
15
  > [build:less] ./scripts/build-less
16
16
  
@@ -31,4 +31,4 @@
31
31
  | |
32
32
  +------------------------------------+
33
33
  (!) [plugin typescript] @rollup/plugin-typescript: Rollup requires that TypeScript produces ES Modules. Unfortunately your configuration specifies a "module" other than "esnext". Unless you know what you're doing, please change "module" to "esnext" in the target tsconfig.json file or plugin options.
34
- created dist/index.min.js in 8.4s
34
+ created dist/index.min.js in 6.8s
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @logicflow/react-node-registry
2
2
 
3
+ ## 1.2.0-alpha.3
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: 整体UI美化,并丰富可配置的UI项
8
+ - Updated dependencies
9
+ - @logicflow/core@2.2.0-alpha.3
10
+
11
+ ## 1.2.0-alpha.2
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies
16
+ - @logicflow/core@2.2.0-alpha.2
17
+
3
18
  ## 1.2.0-alpha.1
4
19
 
5
20
  ### Patch Changes
package/dist/index.css ADDED
@@ -0,0 +1,122 @@
1
+ .lf-vue-node-container {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ box-sizing: border-box;
6
+ padding: 6px;
7
+ color: #474747;
8
+ border-radius: 12px;
9
+ box-shadow: 0 0 10px #cad2e15f;
10
+ }
11
+ .lf-vue-node-content-wrap {
12
+ display: flex;
13
+ flex: 1 1 auto;
14
+ justify-content: center;
15
+ }
16
+ .lf-vue-node-title {
17
+ display: flex;
18
+ align-items: flex-start;
19
+ justify-content: space-between;
20
+ box-sizing: border-box;
21
+ margin-bottom: 4px;
22
+ padding: 0 8px;
23
+ backdrop-filter: saturate(180%) blur(4px);
24
+ }
25
+ .lf-vue-node-title-expanded {
26
+ margin-bottom: 6px;
27
+ padding-bottom: 8px;
28
+ border-bottom: 1px solid #eaeaea;
29
+ }
30
+ @supports not (backdrop-filter: blur(1px)) {
31
+ .lf-vue-node-title {
32
+ backdrop-filter: none;
33
+ }
34
+ }
35
+ .lf-vue-node-title-left {
36
+ display: flex;
37
+ gap: 6px;
38
+ align-items: center;
39
+ min-width: 0;
40
+ }
41
+ .lf-vue-node-title-icon {
42
+ display: inline-block;
43
+ width: 16px;
44
+ height: 16px;
45
+ color: #666;
46
+ font-style: normal;
47
+ line-height: 16px;
48
+ text-align: center;
49
+ }
50
+ .lf-vue-node-title-text {
51
+ overflow: hidden;
52
+ color: #333;
53
+ font-weight: 500;
54
+ font-size: 14px;
55
+ white-space: nowrap;
56
+ text-overflow: ellipsis;
57
+ }
58
+ .lf-vue-node-title-actions {
59
+ display: flex;
60
+ gap: 6px;
61
+ align-items: center;
62
+ }
63
+ .lf-vue-node-title-expand,
64
+ .lf-vue-node-title-more {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ width: 20px;
69
+ height: 20px;
70
+ padding: 2px;
71
+ background: transparent;
72
+ border: none;
73
+ border-radius: 4px;
74
+ cursor: pointer;
75
+ transition: background 0.15s ease;
76
+ appearance: none;
77
+ }
78
+ .lf-vue-node-title-expand:hover,
79
+ .lf-vue-node-title-more:hover {
80
+ background: rgba(0, 0, 0, 0.06);
81
+ }
82
+ .lf-vue-node-title-expand-icon {
83
+ color: #666;
84
+ font-style: normal;
85
+ transition: transform 0.3s ease;
86
+ }
87
+ .lf-vue-node-title-more-icon {
88
+ color: #666;
89
+ font-style: normal;
90
+ }
91
+ .lf-vue-node-title-tooltip {
92
+ position: absolute;
93
+ top: -50px;
94
+ right: -135px;
95
+ min-width: 120px;
96
+ max-width: 240px;
97
+ padding: 6px 8px;
98
+ background: #fff;
99
+ border: 1px solid rgba(0, 0, 0, 0.1);
100
+ border-radius: 6px;
101
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
102
+ transform: translateY(calc(100% + 4px));
103
+ transition: opacity 0.15s ease, transform 0.15s ease;
104
+ }
105
+ .lf-vue-node-title-tooltip-list {
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 4px;
109
+ }
110
+ .lf-vue-node-title-tooltip-item {
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: flex-start;
114
+ padding: 6px;
115
+ color: #333;
116
+ font-size: 12px;
117
+ border-radius: 4px;
118
+ cursor: pointer;
119
+ }
120
+ .lf-vue-node-title-tooltip-item:hover {
121
+ background: rgba(0, 0, 0, 0.05);
122
+ }
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { BaseNodeModel, GraphModel } from '@logicflow/core';
3
+ export type ContainerProps = {
4
+ node: BaseNodeModel;
5
+ graph: GraphModel;
6
+ children?: React.ReactNode;
7
+ };
8
+ export declare const Container: React.FC<ContainerProps>;
9
+ export default Container;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import TitleBar from './TitleBar';
3
+ export var Container = function (_a) {
4
+ var _b;
5
+ var node = _a.node, graph = _a.graph, children = _a.children;
6
+ var props = (node === null || node === void 0 ? void 0 : node.properties) || {};
7
+ var titleColor = ((_b = props.style) === null || _b === void 0 ? void 0 : _b.titleColor) || '#E5EEFC';
8
+ var expanded = props._expanded === true;
9
+ return (React.createElement("div", { className: "lf-vue-node-container", style: {
10
+ background: "linear-gradient(180deg, ".concat(titleColor, " 0%, #FFFFFF 24px)"),
11
+ } },
12
+ props._showTitle && React.createElement(TitleBar, { node: node, graph: graph }),
13
+ expanded && React.createElement("div", { className: "lf-vue-node-content-wrap" }, children)));
14
+ };
15
+ export default Container;
16
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/components/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,QAAQ,MAAM,YAAY,CAAA;AAQjC,MAAM,CAAC,IAAM,SAAS,GAA6B,UAAC,EAInD;;QAHC,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,QAAQ,cAAA;IAER,IAAM,KAAK,GAAQ,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,KAAI,EAAE,CAAA;IACzC,IAAM,UAAU,GAAG,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,UAAU,KAAI,SAAS,CAAA;IACvD,IAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAA;IAEzC,OAAO,CACL,6BACE,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE;YACL,UAAU,EAAE,kCAA2B,UAAU,uBAAoB;SACtE;QAEA,KAAK,CAAC,UAAU,IAAI,oBAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI;QAC1D,QAAQ,IAAI,6BAAK,SAAS,EAAC,0BAA0B,IAAE,QAAQ,CAAO,CACnE,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { BaseNodeModel, GraphModel } from '@logicflow/core';
3
+ export type TitleBarProps = {
4
+ node: BaseNodeModel;
5
+ graph: GraphModel;
6
+ };
7
+ export declare const TitleBar: React.FC<TitleBarProps>;
8
+ export default TitleBar;
@@ -0,0 +1,87 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { isNumber } from 'lodash-es';
3
+ export var TitleBar = function (_a) {
4
+ var node = _a.node, graph = _a.graph;
5
+ var props = (node === null || node === void 0 ? void 0 : node.properties) || {};
6
+ var icon = props._icon;
7
+ var title = props._title || '';
8
+ var expanded = !!props._expanded;
9
+ var titleHeight = isNumber(props._titleHeight) ? props._titleHeight : 28;
10
+ var actProps = props._titleActions || [];
11
+ var privActs = node.__actions || [];
12
+ var actions = Array.isArray(privActs) && privActs.length > 0 ? privActs : actProps;
13
+ var showMoreAction = Array.isArray(actions) && actions.length > 0;
14
+ var trigger = props.titleTrigger === 'hover' ? 'hover' : 'click';
15
+ var _b = useState(false), showTooltip = _b[0], setShowTooltip = _b[1];
16
+ var moreBtnRef = useRef(null);
17
+ var tooltipRef = useRef(null);
18
+ var toggleExpand = function () {
19
+ var _a;
20
+ var cur = !!((_a = node === null || node === void 0 ? void 0 : node.properties) === null || _a === void 0 ? void 0 : _a._expanded);
21
+ node === null || node === void 0 ? void 0 : node.setProperty('_expanded', !cur);
22
+ };
23
+ var runAction = function (act) {
24
+ var _a;
25
+ var fn = (act === null || act === void 0 ? void 0 : act.callback) ||
26
+ ((_a = (privActs || []).find(function (a) { return (a === null || a === void 0 ? void 0 : a.name) === (act === null || act === void 0 ? void 0 : act.name); })) === null || _a === void 0 ? void 0 : _a.callback);
27
+ typeof fn === 'function' && fn(node, graph);
28
+ };
29
+ useEffect(function () {
30
+ if (trigger === 'hover') {
31
+ var mb_1 = moreBtnRef.current;
32
+ var tt_1 = tooltipRef.current;
33
+ var onEnter_1 = function () { return setShowTooltip(true); };
34
+ var onLeave_1 = function () { return setShowTooltip(false); };
35
+ mb_1 === null || mb_1 === void 0 ? void 0 : mb_1.addEventListener('mouseenter', onEnter_1);
36
+ mb_1 === null || mb_1 === void 0 ? void 0 : mb_1.addEventListener('mouseleave', onLeave_1);
37
+ tt_1 === null || tt_1 === void 0 ? void 0 : tt_1.addEventListener('mouseenter', onEnter_1);
38
+ tt_1 === null || tt_1 === void 0 ? void 0 : tt_1.addEventListener('mouseleave', onLeave_1);
39
+ return function () {
40
+ mb_1 === null || mb_1 === void 0 ? void 0 : mb_1.removeEventListener('mouseenter', onEnter_1);
41
+ mb_1 === null || mb_1 === void 0 ? void 0 : mb_1.removeEventListener('mouseleave', onLeave_1);
42
+ tt_1 === null || tt_1 === void 0 ? void 0 : tt_1.removeEventListener('mouseenter', onEnter_1);
43
+ tt_1 === null || tt_1 === void 0 ? void 0 : tt_1.removeEventListener('mouseleave', onLeave_1);
44
+ };
45
+ }
46
+ var onDoc = function (e) {
47
+ var mb = moreBtnRef.current;
48
+ var tt = tooltipRef.current;
49
+ var t = e.target;
50
+ if (showTooltip && mb && tt && !mb.contains(t) && !tt.contains(t)) {
51
+ setShowTooltip(false);
52
+ }
53
+ };
54
+ document.addEventListener('click', onDoc);
55
+ return function () { return document.removeEventListener('click', onDoc); };
56
+ }, [trigger, showTooltip]);
57
+ return (React.createElement("div", { className: expanded
58
+ ? 'lf-vue-node-title lf-vue-node-title-expanded'
59
+ : 'lf-vue-node-title', style: { height: expanded ? titleHeight : 18 }, title: title },
60
+ React.createElement("div", { className: "lf-vue-node-title-left" },
61
+ icon ? React.createElement("i", { className: "lf-vue-node-title-icon" }, icon) : null,
62
+ React.createElement("span", { className: "lf-vue-node-title-text" }, title)),
63
+ React.createElement("div", { className: "lf-vue-node-title-actions" },
64
+ React.createElement("button", { className: "lf-vue-node-title-expand", onClick: function (e) {
65
+ e.stopPropagation();
66
+ toggleExpand();
67
+ } },
68
+ React.createElement("svg", { width: 14, height: 12, viewBox: "0 0 14 12", xmlns: "http://www.w3.org/2000/svg", className: "lf-vue-node-title-expand-icon", style: { transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)' } },
69
+ React.createElement("path", { d: "M0.5201124,5.47988755C0.23603013,5.7639699,0.24460429,6.2271326,0.53900635,6.5005059L6.3195491,11.8681526C6.7032304,12.2244282,7.2967696,12.2244282,7.6804514,11.8681526L13.460994,6.5005059C13.755396,6.2271326,13.76397,5.7639699,13.479888,5.47988755C13.211547,5.21154633,12.779465,5.20215771,12.499721,5.45858961L7.3378625,10.1902928C7.1467018,10.3655233,6.8532982,10.3655233,6.6621375,10.1902928L1.5002797,5.45858967C1.2205358,5.20215771,0.78845364,5.21154633,0.5201124,5.47988755Z", fill: "#474747" }),
70
+ React.createElement("path", { d: "M0.5201124,0.47988755C0.23603013,0.7639699,0.24460429,1.2271326,0.53900635,1.5005059L6.3195491,6.8681526C6.7032304,7.2244282,7.2967696,7.2244282,7.6804514,6.8681526L13.460994,1.5005059C13.755396,1.2271326,13.76397,0.7639699,13.479888,0.47988755C13.211547,0.21154633,12.779465,0.20215771,12.499721,0.45858961L7.3378625,5.1902928C7.1467018,5.3655233,6.8532982,5.3655233,6.6621375,5.1902928L1.5002797,0.45858967C1.2205358,0.20215771,0.78845364,0.21154633,0.5201124,0.47988755Z", fill: "#9B9B9B" }))),
71
+ showMoreAction && (React.createElement("button", { ref: moreBtnRef, className: "lf-vue-node-title-more", onClick: function (e) {
72
+ e.stopPropagation();
73
+ if (trigger === 'click')
74
+ setShowTooltip(!showTooltip);
75
+ } },
76
+ React.createElement("i", { className: "lf-vue-node-title-more-icon" }, "\u22EF"))),
77
+ showMoreAction && (React.createElement("div", { ref: tooltipRef, className: "lf-vue-node-title-tooltip", style: {
78
+ opacity: showTooltip ? 1 : 0,
79
+ pointerEvents: showTooltip ? 'auto' : 'none',
80
+ } },
81
+ React.createElement("div", { className: "lf-vue-node-title-tooltip-list" }, actions.map(function (act, idx) { return (React.createElement("div", { key: idx, className: "lf-vue-node-title-tooltip-item", onClick: function (e) {
82
+ e.stopPropagation();
83
+ runAction(act);
84
+ } }, (act === null || act === void 0 ? void 0 : act.name) || '')); })))))));
85
+ };
86
+ export default TitleBar;
87
+ //# sourceMappingURL=TitleBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TitleBar.js","sourceRoot":"","sources":["../../src/components/TitleBar.tsx"],"names":[],"mappings":"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"}
package/es/index.css ADDED
@@ -0,0 +1,122 @@
1
+ .lf-vue-node-container {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ box-sizing: border-box;
6
+ padding: 6px;
7
+ color: #474747;
8
+ border-radius: 12px;
9
+ box-shadow: 0 0 10px #cad2e15f;
10
+ }
11
+ .lf-vue-node-content-wrap {
12
+ display: flex;
13
+ flex: 1 1 auto;
14
+ justify-content: center;
15
+ }
16
+ .lf-vue-node-title {
17
+ display: flex;
18
+ align-items: flex-start;
19
+ justify-content: space-between;
20
+ box-sizing: border-box;
21
+ margin-bottom: 4px;
22
+ padding: 0 8px;
23
+ backdrop-filter: saturate(180%) blur(4px);
24
+ }
25
+ .lf-vue-node-title-expanded {
26
+ margin-bottom: 6px;
27
+ padding-bottom: 8px;
28
+ border-bottom: 1px solid #eaeaea;
29
+ }
30
+ @supports not (backdrop-filter: blur(1px)) {
31
+ .lf-vue-node-title {
32
+ backdrop-filter: none;
33
+ }
34
+ }
35
+ .lf-vue-node-title-left {
36
+ display: flex;
37
+ gap: 6px;
38
+ align-items: center;
39
+ min-width: 0;
40
+ }
41
+ .lf-vue-node-title-icon {
42
+ display: inline-block;
43
+ width: 16px;
44
+ height: 16px;
45
+ color: #666;
46
+ font-style: normal;
47
+ line-height: 16px;
48
+ text-align: center;
49
+ }
50
+ .lf-vue-node-title-text {
51
+ overflow: hidden;
52
+ color: #333;
53
+ font-weight: 500;
54
+ font-size: 14px;
55
+ white-space: nowrap;
56
+ text-overflow: ellipsis;
57
+ }
58
+ .lf-vue-node-title-actions {
59
+ display: flex;
60
+ gap: 6px;
61
+ align-items: center;
62
+ }
63
+ .lf-vue-node-title-expand,
64
+ .lf-vue-node-title-more {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ width: 20px;
69
+ height: 20px;
70
+ padding: 2px;
71
+ background: transparent;
72
+ border: none;
73
+ border-radius: 4px;
74
+ cursor: pointer;
75
+ transition: background 0.15s ease;
76
+ appearance: none;
77
+ }
78
+ .lf-vue-node-title-expand:hover,
79
+ .lf-vue-node-title-more:hover {
80
+ background: rgba(0, 0, 0, 0.06);
81
+ }
82
+ .lf-vue-node-title-expand-icon {
83
+ color: #666;
84
+ font-style: normal;
85
+ transition: transform 0.3s ease;
86
+ }
87
+ .lf-vue-node-title-more-icon {
88
+ color: #666;
89
+ font-style: normal;
90
+ }
91
+ .lf-vue-node-title-tooltip {
92
+ position: absolute;
93
+ top: -50px;
94
+ right: -135px;
95
+ min-width: 120px;
96
+ max-width: 240px;
97
+ padding: 6px 8px;
98
+ background: #fff;
99
+ border: 1px solid rgba(0, 0, 0, 0.1);
100
+ border-radius: 6px;
101
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
102
+ transform: translateY(calc(100% + 4px));
103
+ transition: opacity 0.15s ease, transform 0.15s ease;
104
+ }
105
+ .lf-vue-node-title-tooltip-list {
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 4px;
109
+ }
110
+ .lf-vue-node-title-tooltip-item {
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: flex-start;
114
+ padding: 6px;
115
+ color: #333;
116
+ font-size: 12px;
117
+ border-radius: 4px;
118
+ cursor: pointer;
119
+ }
120
+ .lf-vue-node-title-tooltip-item:hover {
121
+ background: rgba(0, 0, 0, 0.05);
122
+ }
package/es/index.less ADDED
@@ -0,0 +1 @@
1
+ @import url('./style/index.less');
package/es/model.d.ts CHANGED
@@ -1,4 +1,9 @@
1
- import LogicFlow, { HtmlNodeModel, IHtmlNodeProperties } from '@logicflow/core';
1
+ import LogicFlow, { HtmlNodeModel, IHtmlNodeProperties, BaseNodeModel, GraphModel } from '@logicflow/core';
2
+ import NodeConfig = LogicFlow.NodeConfig;
3
+ export type NodeAction = {
4
+ name: string;
5
+ callback?: (node: BaseNodeModel, graph: GraphModel) => void;
6
+ };
2
7
  export interface ReactCustomProperties extends IHtmlNodeProperties {
3
8
  width?: number;
4
9
  height?: number;
@@ -7,10 +12,22 @@ export interface ReactCustomProperties extends IHtmlNodeProperties {
7
12
  refY?: number;
8
13
  style?: LogicFlow.CommonTheme;
9
14
  textStyle?: LogicFlow.TextNodeTheme;
15
+ _showTitle?: boolean;
16
+ _title?: string;
17
+ _icon?: string;
18
+ _titleHeight?: number;
19
+ _expanded?: boolean;
10
20
  }
11
21
  export declare class ReactNodeModel<P extends ReactCustomProperties = ReactCustomProperties> extends HtmlNodeModel<P> {
22
+ private __baseHeight?;
23
+ __actions?: {
24
+ name: string;
25
+ callback?: (node: BaseNodeModel, graph: GraphModel) => void;
26
+ }[];
27
+ constructor(data: NodeConfig<P>, graphModel: GraphModel);
12
28
  setAttributes(): void;
13
29
  getTextStyle(): LogicFlow.TextNodeTheme;
14
30
  getNodeStyle(): LogicFlow.CommonTheme;
31
+ setNodeActions(actions: NodeAction[]): void;
15
32
  }
16
33
  export default ReactNodeModel;
package/es/model.js CHANGED
@@ -24,24 +24,58 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  return __assign.apply(this, arguments);
26
26
  };
27
- import { HtmlNodeModel } from '@logicflow/core';
28
- import { cloneDeep } from 'lodash-es';
27
+ import { HtmlNodeModel, } from '@logicflow/core';
28
+ import { cloneDeep, isNil, isArray, isEmpty } from 'lodash-es';
29
29
  var ReactNodeModel = /** @class */ (function (_super) {
30
30
  __extends(ReactNodeModel, _super);
31
- function ReactNodeModel() {
32
- return _super !== null && _super.apply(this, arguments) || this;
31
+ function ReactNodeModel(data, graphModel) {
32
+ var _this = _super.call(this, data, graphModel) || this;
33
+ var properties = data.properties;
34
+ if (properties) {
35
+ var _a = properties._showTitle, _showTitle = _a === void 0 ? false : _a, _b = properties.style, style = _b === void 0 ? {} : _b;
36
+ if (_showTitle) {
37
+ _this.minWidth = 160;
38
+ _this.minHeight = 80;
39
+ _this.text.editable = false;
40
+ // 判断当前节点宽高是否小于最小宽高,如果是,强制设置为最小宽高
41
+ var newWidth = _this.width < _this.minWidth ? _this.minWidth : _this.width;
42
+ var newHeight = _this.height < _this.minHeight ? _this.minHeight : _this.height;
43
+ _this.setProperties(__assign(__assign({ _expanded: false }, properties), { style: __assign({ overflow: 'visible' }, cloneDeep(style)), width: newWidth, height: newHeight }));
44
+ _this.setNodeActions([
45
+ {
46
+ name: '复制',
47
+ callback: function (nodeModel, graphModel) {
48
+ graphModel.cloneNode(nodeModel.id);
49
+ },
50
+ },
51
+ {
52
+ name: '删除',
53
+ callback: function (nodeModel, graphModel) {
54
+ graphModel.deleteNode(nodeModel.id);
55
+ },
56
+ },
57
+ ]);
58
+ }
59
+ }
60
+ return _this;
33
61
  }
34
62
  ReactNodeModel.prototype.setAttributes = function () {
35
- var _a = this.properties, width = _a.width, height = _a.height, radius = _a.radius;
36
- if (width) {
63
+ var _a = this.properties, width = _a.width, height = _a.height, radius = _a.radius, _showTitle = _a._showTitle, _titleHeight = _a._titleHeight;
64
+ if (!isNil(width)) {
37
65
  this.width = width;
38
66
  }
39
- if (height) {
67
+ if (!isNil(height)) {
40
68
  this.height = height;
41
69
  }
42
- if (radius) {
70
+ if (!isNil(radius)) {
43
71
  this.radius = radius;
44
72
  }
73
+ if (this.__baseHeight === undefined) {
74
+ this.__baseHeight = isNil(height) ? this.height : height;
75
+ }
76
+ var extra = _showTitle ? (_titleHeight !== null && _titleHeight !== void 0 ? _titleHeight : 28) : 0;
77
+ var base = isNil(height) ? this.__baseHeight : height;
78
+ this.height = base + extra;
45
79
  };
46
80
  ReactNodeModel.prototype.getTextStyle = function () {
47
81
  // const { x, y, width, height } = this
@@ -55,6 +89,10 @@ var ReactNodeModel = /** @class */ (function (_super) {
55
89
  var customNodeStyle = this.properties.style;
56
90
  return __assign(__assign({}, style), (cloneDeep(customNodeStyle) || {}));
57
91
  };
92
+ ReactNodeModel.prototype.setNodeActions = function (actions) {
93
+ this.__actions =
94
+ isArray(actions) && !isEmpty(actions) ? cloneDeep(actions) : [];
95
+ };
58
96
  return ReactNodeModel;
59
97
  }(HtmlNodeModel));
60
98
  export { ReactNodeModel };
package/es/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAkB,EAAE,aAAa,EAAuB,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAiBrC;IAEU,kCAAgB;IAF1B;;IA2CA,CAAC;IAxCC,sCAAa,GAAb;QACQ,IAAA,KAA4B,IAAI,CAAC,UAAU,EAAzC,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,MAAM,YAAoB,CAAA;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;IACH,CAAC;IAED,qCAAY,GAAZ;QACE,uCAAuC;QACjC,IAAA,KAAoC,IAAI,CAAC,UAAU,EAAjD,YAAQ,EAAR,IAAI,mBAAG,CAAC,KAAA,EAAE,YAAQ,EAAR,IAAI,mBAAG,CAAC,KAAA,EAAE,SAAS,eAAoB,CAAA;QACzD,IAAM,KAAK,GAAG,gBAAK,CAAC,YAAY,WAAE,CAAA;QAElC,6BAA6B;QAC7B,sCACK,KAAK,GACL,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAC/B,SAAS,EAAE,yBAAkB,IAAI,cAAI,IAAI,MAAG,IAC7C;IACH,CAAC;IAED,qCAAY,GAAZ;QACE,IAAM,KAAK,GAAG,gBAAK,CAAC,YAAY,WAAE,CAAA;QAEhC,IAAO,eAAe,GAEpB,IAAI,CAAC,UAAU,MAFK,CAEL;QAEnB,6BACK,KAAK,GACL,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAGtC;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AA3CD,CAEU,aAAa,GAyCtB;;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}