@next-libs/visual-builder 1.1.0 → 1.2.0

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 (34) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/index.js +26 -0
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/interfaces/index.js +13 -0
  5. package/dist/cjs/interfaces/index.js.map +1 -1
  6. package/dist/cjs/interfaces/workbench-mini-action-bar.js +6 -0
  7. package/dist/cjs/interfaces/workbench-mini-action-bar.js.map +1 -0
  8. package/dist/cjs/utils/deepMatch.js +35 -0
  9. package/dist/cjs/utils/deepMatch.js.map +1 -0
  10. package/dist/cjs/utils/index.js +19 -0
  11. package/dist/cjs/utils/index.js.map +1 -0
  12. package/dist/cjs/workbench-mini-action-bar/WorkbenchMiniActionBar.js +86 -0
  13. package/dist/cjs/workbench-mini-action-bar/WorkbenchMiniActionBar.js.map +1 -0
  14. package/dist/esm/index.js +2 -0
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/interfaces/index.js +1 -0
  17. package/dist/esm/interfaces/index.js.map +1 -1
  18. package/dist/esm/interfaces/workbench-mini-action-bar.js +2 -0
  19. package/dist/esm/interfaces/workbench-mini-action-bar.js.map +1 -0
  20. package/dist/esm/utils/deepMatch.js +26 -0
  21. package/dist/esm/utils/deepMatch.js.map +1 -0
  22. package/dist/esm/utils/index.js +2 -0
  23. package/dist/esm/utils/index.js.map +1 -0
  24. package/dist/esm/workbench-mini-action-bar/WorkbenchMiniActionBar.js +72 -0
  25. package/dist/esm/workbench-mini-action-bar/WorkbenchMiniActionBar.js.map +1 -0
  26. package/dist/esm/workbench-mini-action-bar/WorkbenchMiniActionBar.module.css +30 -0
  27. package/dist/types/index.d.ts +2 -0
  28. package/dist/types/interfaces/index.d.ts +1 -0
  29. package/dist/types/interfaces/workbench-mini-action-bar.d.ts +11 -0
  30. package/dist/types/utils/deepMatch.d.ts +2 -0
  31. package/dist/types/utils/index.d.ts +1 -0
  32. package/dist/types/workbench-mini-action-bar/WorkbenchMiniActionBar.d.ts +13 -0
  33. package/dist/types/workbench-mini-action-bar/WorkbenchMiniActionBar.spec.d.ts +1 -0
  34. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.2.0](https://github.com/easyops-cn/next-libs/compare/@next-libs/visual-builder@1.1.0...@next-libs/visual-builder@1.2.0) (2022-09-21)
7
+
8
+
9
+ ### Features
10
+
11
+ * migrate shared component to libs ([a75be30](https://github.com/easyops-cn/next-libs/commit/a75be3028288fc5f73fef0a02105fb605ad0feeb))
12
+
13
+
14
+
15
+
16
+
6
17
  # 1.1.0 (2022-09-20)
7
18
 
8
19
 
package/dist/cjs/index.js CHANGED
@@ -42,4 +42,30 @@ Object.keys(_processor).forEach(function (key) {
42
42
  }
43
43
  });
44
44
  });
45
+
46
+ var _WorkbenchMiniActionBar = require("./workbench-mini-action-bar/WorkbenchMiniActionBar");
47
+
48
+ Object.keys(_WorkbenchMiniActionBar).forEach(function (key) {
49
+ if (key === "default" || key === "__esModule") return;
50
+ if (key in exports && exports[key] === _WorkbenchMiniActionBar[key]) return;
51
+ Object.defineProperty(exports, key, {
52
+ enumerable: true,
53
+ get: function () {
54
+ return _WorkbenchMiniActionBar[key];
55
+ }
56
+ });
57
+ });
58
+
59
+ var _utils = require("./utils");
60
+
61
+ Object.keys(_utils).forEach(function (key) {
62
+ if (key === "default" || key === "__esModule") return;
63
+ if (key in exports && exports[key] === _utils[key]) return;
64
+ Object.defineProperty(exports, key, {
65
+ enumerable: true,
66
+ get: function () {
67
+ return _utils[key];
68
+ }
69
+ });
70
+ });
45
71
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./visual-property-form/VisualPropertyForm\";\nexport * from \"./interfaces\";\nexport * from \"./visual-property-form/processor\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./visual-property-form/VisualPropertyForm\";\nexport * from \"./interfaces\";\nexport * from \"./visual-property-form/processor\";\nexport * from \"./workbench-mini-action-bar/WorkbenchMiniActionBar\";\nexport * from \"./utils\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -16,4 +16,17 @@ Object.keys(_brickVisualization).forEach(function (key) {
16
16
  }
17
17
  });
18
18
  });
19
+
20
+ var _workbenchMiniActionBar = require("./workbench-mini-action-bar");
21
+
22
+ Object.keys(_workbenchMiniActionBar).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _workbenchMiniActionBar[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _workbenchMiniActionBar[key];
29
+ }
30
+ });
31
+ });
19
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/interfaces/index.ts"],"sourcesContent":["export * from \"./brick-visualization\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/interfaces/index.ts"],"sourcesContent":["export * from \"./brick-visualization\";\nexport * from \"./workbench-mini-action-bar\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=workbench-mini-action-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-mini-action-bar.js","names":[],"sources":["../../../src/interfaces/workbench-mini-action-bar.ts"],"sourcesContent":["import { MenuIcon } from \"@next-core/brick-types\";\n\nexport interface WorkbenchTreeAction {\n action: string;\n icon: MenuIcon;\n title?: string;\n if?: string | boolean;\n}\n\nexport interface ActionClickDetail {\n action: string;\n data?: unknown;\n}\n"],"mappings":""}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.deepFilter = deepFilter;
7
+ exports.deepMatch = deepMatch;
8
+
9
+ function deepFilter(data, q) {
10
+ const trimmedQuery = q === null || q === void 0 ? void 0 : q.trim();
11
+
12
+ if (!trimmedQuery) {
13
+ return data.slice();
14
+ }
15
+
16
+ return data.filter(item => deepMatch(item, trimmedQuery.toLowerCase()));
17
+ }
18
+
19
+ function deepMatch(data, lowerTrimmedQuery) {
20
+ switch (typeof data) {
21
+ case "string":
22
+ return data.toLowerCase().includes(lowerTrimmedQuery);
23
+
24
+ case "boolean":
25
+ case "number":
26
+ return String(data).includes(lowerTrimmedQuery);
27
+
28
+ case "object":
29
+ return data === null ? "null".includes(lowerTrimmedQuery) : (Array.isArray(data) ? data : Object.entries(data).flat()).some(item => deepMatch(item, lowerTrimmedQuery));
30
+
31
+ default:
32
+ return false;
33
+ }
34
+ }
35
+ //# sourceMappingURL=deepMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepMatch.js","names":["deepFilter","data","q","trimmedQuery","trim","slice","filter","item","deepMatch","toLowerCase","lowerTrimmedQuery","includes","String","Array","isArray","Object","entries","flat","some"],"sources":["../../../src/utils/deepMatch.ts"],"sourcesContent":["export function deepFilter<T>(data: Array<T>, q: string): Array<T> {\n const trimmedQuery = q?.trim();\n if (!trimmedQuery) {\n return data.slice();\n }\n return data.filter((item) => deepMatch(item, trimmedQuery.toLowerCase()));\n}\n\nexport function deepMatch(data: unknown, lowerTrimmedQuery: string): boolean {\n switch (typeof data) {\n case \"string\":\n return data.toLowerCase().includes(lowerTrimmedQuery);\n case \"boolean\":\n case \"number\":\n return String(data).includes(lowerTrimmedQuery);\n case \"object\":\n return data === null\n ? \"null\".includes(lowerTrimmedQuery)\n : (Array.isArray(data) ? data : Object.entries(data).flat()).some(\n (item) => deepMatch(item, lowerTrimmedQuery)\n );\n default:\n return false;\n }\n}\n"],"mappings":";;;;;;;;AAAO,SAASA,UAAT,CAAuBC,IAAvB,EAAuCC,CAAvC,EAA4D;EACjE,MAAMC,YAAY,GAAGD,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAEE,IAAH,EAArB;;EACA,IAAI,CAACD,YAAL,EAAmB;IACjB,OAAOF,IAAI,CAACI,KAAL,EAAP;EACD;;EACD,OAAOJ,IAAI,CAACK,MAAL,CAAaC,IAAD,IAAUC,SAAS,CAACD,IAAD,EAAOJ,YAAY,CAACM,WAAb,EAAP,CAA/B,CAAP;AACD;;AAEM,SAASD,SAAT,CAAmBP,IAAnB,EAAkCS,iBAAlC,EAAsE;EAC3E,QAAQ,OAAOT,IAAf;IACE,KAAK,QAAL;MACE,OAAOA,IAAI,CAACQ,WAAL,GAAmBE,QAAnB,CAA4BD,iBAA5B,CAAP;;IACF,KAAK,SAAL;IACA,KAAK,QAAL;MACE,OAAOE,MAAM,CAACX,IAAD,CAAN,CAAaU,QAAb,CAAsBD,iBAAtB,CAAP;;IACF,KAAK,QAAL;MACE,OAAOT,IAAI,KAAK,IAAT,GACH,OAAOU,QAAP,CAAgBD,iBAAhB,CADG,GAEH,CAACG,KAAK,CAACC,OAAN,CAAcb,IAAd,IAAsBA,IAAtB,GAA6Bc,MAAM,CAACC,OAAP,CAAef,IAAf,EAAqBgB,IAArB,EAA9B,EAA2DC,IAA3D,CACGX,IAAD,IAAUC,SAAS,CAACD,IAAD,EAAOG,iBAAP,CADrB,CAFJ;;IAKF;MACE,OAAO,KAAP;EAbJ;AAeD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _deepMatch = require("./deepMatch");
8
+
9
+ Object.keys(_deepMatch).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _deepMatch[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _deepMatch[key];
16
+ }
17
+ });
18
+ });
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./deepMatch\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.WorkbenchMiniActionBar = WorkbenchMiniActionBar;
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var _brickKit = require("@next-core/brick-kit");
17
+
18
+ var _basicComponents = require("@next-libs/basic-components");
19
+
20
+ var _WorkbenchMiniActionBarModule = _interopRequireDefault(require("./WorkbenchMiniActionBar.module.css"));
21
+
22
+ function WorkbenchMiniActionBar({
23
+ data,
24
+ className,
25
+ gap,
26
+ isFirst,
27
+ isLast,
28
+ actions,
29
+ actionsHidden,
30
+ onActionClick
31
+ }) {
32
+ const enabledActions = (0, _react.useMemo)(() => actions === null || actions === void 0 ? void 0 : actions.filter(item => (0, _brickKit.looseCheckIfByTransform)(item, data)), [actions, data]);
33
+
34
+ if (actionsHidden || !(enabledActions !== null && enabledActions !== void 0 && enabledActions.length)) {
35
+ return null;
36
+ }
37
+
38
+ return /*#__PURE__*/_react.default.createElement("div", {
39
+ className: (0, _classnames.default)(_WorkbenchMiniActionBarModule.default.actionsBar, className),
40
+ style: {
41
+ gap
42
+ }
43
+ }, enabledActions.map(item => /*#__PURE__*/_react.default.createElement(WorkbenchSubAction, {
44
+ key: item.action,
45
+ action: item,
46
+ data: data,
47
+ isFirst: isFirst,
48
+ isLast: isLast,
49
+ onActionClick: onActionClick
50
+ })));
51
+ }
52
+
53
+ function WorkbenchSubAction({
54
+ action,
55
+ data,
56
+ isFirst,
57
+ isLast,
58
+ onActionClick
59
+ }) {
60
+ const disabled = isFirst && action.action === "move-up" || isLast && action.action === "move-down";
61
+ const handleActionClick = (0, _react.useCallback)(event => {
62
+ event.preventDefault();
63
+ event.stopPropagation();
64
+ disabled || (onActionClick === null || onActionClick === void 0 ? void 0 : onActionClick({
65
+ action: action.action,
66
+ data: data
67
+ }));
68
+ }, [action.action, data, disabled, onActionClick]);
69
+ const preventMouseEvent = (0, _react.useCallback)(event => {
70
+ event.preventDefault();
71
+ event.stopPropagation();
72
+ }, []);
73
+ return /*#__PURE__*/_react.default.createElement("a", {
74
+ className: (0, _classnames.default)(_WorkbenchMiniActionBarModule.default.action, {
75
+ [_WorkbenchMiniActionBarModule.default.disabled]: disabled
76
+ }),
77
+ title: action.title,
78
+ role: "button",
79
+ onClick: handleActionClick,
80
+ onContextMenu: preventMouseEvent,
81
+ onMouseDown: preventMouseEvent
82
+ }, /*#__PURE__*/_react.default.createElement(_basicComponents.GeneralIcon, {
83
+ icon: action.icon
84
+ }));
85
+ }
86
+ //# sourceMappingURL=WorkbenchMiniActionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkbenchMiniActionBar.js","names":["WorkbenchMiniActionBar","data","className","gap","isFirst","isLast","actions","actionsHidden","onActionClick","enabledActions","useMemo","filter","item","looseCheckIfByTransform","length","classNames","styles","actionsBar","map","action","WorkbenchSubAction","disabled","handleActionClick","useCallback","event","preventDefault","stopPropagation","preventMouseEvent","title","icon"],"sources":["../../../src/workbench-mini-action-bar/WorkbenchMiniActionBar.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { looseCheckIfByTransform } from \"@next-core/brick-kit\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { WorkbenchTreeAction, ActionClickDetail } from \"../interfaces\";\n\nimport styles from \"./WorkbenchMiniActionBar.module.css\";\n\nexport interface WorkbenchSubActionBarProps {\n data?: unknown;\n className?: string;\n gap?: number;\n isFirst?: boolean;\n isLast?: boolean;\n actions?: WorkbenchTreeAction[];\n actionsHidden?: boolean;\n onActionClick?(detail: ActionClickDetail): void;\n}\n\nexport function WorkbenchMiniActionBar({\n data,\n className,\n gap,\n isFirst,\n isLast,\n actions,\n actionsHidden,\n onActionClick,\n}: WorkbenchSubActionBarProps): React.ReactElement {\n const enabledActions = useMemo(\n () => actions?.filter((item) => looseCheckIfByTransform(item, data)),\n [actions, data]\n );\n\n if (actionsHidden || !enabledActions?.length) {\n return null;\n }\n\n return (\n <div className={classNames(styles.actionsBar, className)} style={{ gap }}>\n {enabledActions.map((item) => (\n <WorkbenchSubAction\n key={item.action}\n action={item}\n data={data}\n isFirst={isFirst}\n isLast={isLast}\n onActionClick={onActionClick}\n />\n ))}\n </div>\n );\n}\n\ninterface WorkbenchSubActionProps {\n action: WorkbenchTreeAction;\n data?: unknown;\n isFirst?: boolean;\n isLast?: boolean;\n onActionClick?(detail: ActionClickDetail): void;\n}\n\nfunction WorkbenchSubAction({\n action,\n data,\n isFirst,\n isLast,\n onActionClick,\n}: WorkbenchSubActionProps): React.ReactElement {\n const disabled =\n (isFirst && action.action === \"move-up\") ||\n (isLast && action.action === \"move-down\");\n\n const handleActionClick = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n disabled ||\n onActionClick?.({\n action: action.action,\n data: data,\n });\n },\n [action.action, data, disabled, onActionClick]\n );\n\n const preventMouseEvent = useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n return (\n <a\n className={classNames(styles.action, { [styles.disabled]: disabled })}\n title={action.title}\n role=\"button\"\n onClick={handleActionClick}\n onContextMenu={preventMouseEvent}\n onMouseDown={preventMouseEvent}\n >\n <GeneralIcon icon={action.icon} />\n </a>\n );\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAGA;;AAaO,SAASA,sBAAT,CAAgC;EACrCC,IADqC;EAErCC,SAFqC;EAGrCC,GAHqC;EAIrCC,OAJqC;EAKrCC,MALqC;EAMrCC,OANqC;EAOrCC,aAPqC;EAQrCC;AARqC,CAAhC,EAS4C;EACjD,MAAMC,cAAc,GAAG,IAAAC,cAAA,EACrB,MAAMJ,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAEK,MAAT,CAAiBC,IAAD,IAAU,IAAAC,iCAAA,EAAwBD,IAAxB,EAA8BX,IAA9B,CAA1B,CADe,EAErB,CAACK,OAAD,EAAUL,IAAV,CAFqB,CAAvB;;EAKA,IAAIM,aAAa,IAAI,EAACE,cAAD,aAACA,cAAD,eAACA,cAAc,CAAEK,MAAjB,CAArB,EAA8C;IAC5C,OAAO,IAAP;EACD;;EAED,oBACE;IAAK,SAAS,EAAE,IAAAC,mBAAA,EAAWC,qCAAA,CAAOC,UAAlB,EAA8Bf,SAA9B,CAAhB;IAA0D,KAAK,EAAE;MAAEC;IAAF;EAAjE,GACGM,cAAc,CAACS,GAAf,CAAoBN,IAAD,iBAClB,6BAAC,kBAAD;IACE,GAAG,EAAEA,IAAI,CAACO,MADZ;IAEE,MAAM,EAAEP,IAFV;IAGE,IAAI,EAAEX,IAHR;IAIE,OAAO,EAAEG,OAJX;IAKE,MAAM,EAAEC,MALV;IAME,aAAa,EAAEG;EANjB,EADD,CADH,CADF;AAcD;;AAUD,SAASY,kBAAT,CAA4B;EAC1BD,MAD0B;EAE1BlB,IAF0B;EAG1BG,OAH0B;EAI1BC,MAJ0B;EAK1BG;AAL0B,CAA5B,EAMgD;EAC9C,MAAMa,QAAQ,GACXjB,OAAO,IAAIe,MAAM,CAACA,MAAP,KAAkB,SAA9B,IACCd,MAAM,IAAIc,MAAM,CAACA,MAAP,KAAkB,WAF/B;EAIA,MAAMG,iBAAiB,GAAG,IAAAC,kBAAA,EACvBC,KAAD,IAA6B;IAC3BA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;IACAL,QAAQ,KACNb,aADM,aACNA,aADM,uBACNA,aAAa,CAAG;MACdW,MAAM,EAAEA,MAAM,CAACA,MADD;MAEdlB,IAAI,EAAEA;IAFQ,CAAH,CADP,CAAR;EAKD,CATuB,EAUxB,CAACkB,MAAM,CAACA,MAAR,EAAgBlB,IAAhB,EAAsBoB,QAAtB,EAAgCb,aAAhC,CAVwB,CAA1B;EAaA,MAAMmB,iBAAiB,GAAG,IAAAJ,kBAAA,EAAaC,KAAD,IAA6B;IACjEA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;EACD,CAHyB,EAGvB,EAHuB,CAA1B;EAKA,oBACE;IACE,SAAS,EAAE,IAAAX,mBAAA,EAAWC,qCAAA,CAAOG,MAAlB,EAA0B;MAAE,CAACH,qCAAA,CAAOK,QAAR,GAAmBA;IAArB,CAA1B,CADb;IAEE,KAAK,EAAEF,MAAM,CAACS,KAFhB;IAGE,IAAI,EAAC,QAHP;IAIE,OAAO,EAAEN,iBAJX;IAKE,aAAa,EAAEK,iBALjB;IAME,WAAW,EAAEA;EANf,gBAQE,6BAAC,4BAAD;IAAa,IAAI,EAAER,MAAM,CAACU;EAA1B,EARF,CADF;AAYD"}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from "./visual-property-form/VisualPropertyForm";
2
2
  export * from "./interfaces";
3
3
  export * from "./visual-property-form/processor";
4
+ export * from "./workbench-mini-action-bar/WorkbenchMiniActionBar";
5
+ export * from "./utils";
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./visual-property-form/VisualPropertyForm\";\nexport * from \"./interfaces\";\nexport * from \"./visual-property-form/processor\";\n"],"mappings":"AAAA,cAAc,2CAAd;AACA,cAAc,cAAd;AACA,cAAc,kCAAd"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./visual-property-form/VisualPropertyForm\";\nexport * from \"./interfaces\";\nexport * from \"./visual-property-form/processor\";\nexport * from \"./workbench-mini-action-bar/WorkbenchMiniActionBar\";\nexport * from \"./utils\";\n"],"mappings":"AAAA,cAAc,2CAAd;AACA,cAAc,cAAd;AACA,cAAc,kCAAd;AACA,cAAc,oDAAd;AACA,cAAc,SAAd"}
@@ -1,2 +1,3 @@
1
1
  export * from "./brick-visualization";
2
+ export * from "./workbench-mini-action-bar";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/interfaces/index.ts"],"sourcesContent":["export * from \"./brick-visualization\";\n"],"mappings":"AAAA,cAAc,uBAAd"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/interfaces/index.ts"],"sourcesContent":["export * from \"./brick-visualization\";\nexport * from \"./workbench-mini-action-bar\";\n"],"mappings":"AAAA,cAAc,uBAAd;AACA,cAAc,6BAAd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workbench-mini-action-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-mini-action-bar.js","names":[],"sources":["../../../src/interfaces/workbench-mini-action-bar.ts"],"sourcesContent":["import { MenuIcon } from \"@next-core/brick-types\";\n\nexport interface WorkbenchTreeAction {\n action: string;\n icon: MenuIcon;\n title?: string;\n if?: string | boolean;\n}\n\nexport interface ActionClickDetail {\n action: string;\n data?: unknown;\n}\n"],"mappings":""}
@@ -0,0 +1,26 @@
1
+ export function deepFilter(data, q) {
2
+ var trimmedQuery = q === null || q === void 0 ? void 0 : q.trim();
3
+
4
+ if (!trimmedQuery) {
5
+ return data.slice();
6
+ }
7
+
8
+ return data.filter(item => deepMatch(item, trimmedQuery.toLowerCase()));
9
+ }
10
+ export function deepMatch(data, lowerTrimmedQuery) {
11
+ switch (typeof data) {
12
+ case "string":
13
+ return data.toLowerCase().includes(lowerTrimmedQuery);
14
+
15
+ case "boolean":
16
+ case "number":
17
+ return String(data).includes(lowerTrimmedQuery);
18
+
19
+ case "object":
20
+ return data === null ? "null".includes(lowerTrimmedQuery) : (Array.isArray(data) ? data : Object.entries(data).flat()).some(item => deepMatch(item, lowerTrimmedQuery));
21
+
22
+ default:
23
+ return false;
24
+ }
25
+ }
26
+ //# sourceMappingURL=deepMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepMatch.js","names":["deepFilter","data","q","trimmedQuery","trim","slice","filter","item","deepMatch","toLowerCase","lowerTrimmedQuery","includes","String","Array","isArray","Object","entries","flat","some"],"sources":["../../../src/utils/deepMatch.ts"],"sourcesContent":["export function deepFilter<T>(data: Array<T>, q: string): Array<T> {\n const trimmedQuery = q?.trim();\n if (!trimmedQuery) {\n return data.slice();\n }\n return data.filter((item) => deepMatch(item, trimmedQuery.toLowerCase()));\n}\n\nexport function deepMatch(data: unknown, lowerTrimmedQuery: string): boolean {\n switch (typeof data) {\n case \"string\":\n return data.toLowerCase().includes(lowerTrimmedQuery);\n case \"boolean\":\n case \"number\":\n return String(data).includes(lowerTrimmedQuery);\n case \"object\":\n return data === null\n ? \"null\".includes(lowerTrimmedQuery)\n : (Array.isArray(data) ? data : Object.entries(data).flat()).some(\n (item) => deepMatch(item, lowerTrimmedQuery)\n );\n default:\n return false;\n }\n}\n"],"mappings":"AAAA,OAAO,SAASA,UAAT,CAAuBC,IAAvB,EAAuCC,CAAvC,EAA4D;EACjE,IAAMC,YAAY,GAAGD,CAAH,aAAGA,CAAH,uBAAGA,CAAC,CAAEE,IAAH,EAArB;;EACA,IAAI,CAACD,YAAL,EAAmB;IACjB,OAAOF,IAAI,CAACI,KAAL,EAAP;EACD;;EACD,OAAOJ,IAAI,CAACK,MAAL,CAAaC,IAAD,IAAUC,SAAS,CAACD,IAAD,EAAOJ,YAAY,CAACM,WAAb,EAAP,CAA/B,CAAP;AACD;AAED,OAAO,SAASD,SAAT,CAAmBP,IAAnB,EAAkCS,iBAAlC,EAAsE;EAC3E,QAAQ,OAAOT,IAAf;IACE,KAAK,QAAL;MACE,OAAOA,IAAI,CAACQ,WAAL,GAAmBE,QAAnB,CAA4BD,iBAA5B,CAAP;;IACF,KAAK,SAAL;IACA,KAAK,QAAL;MACE,OAAOE,MAAM,CAACX,IAAD,CAAN,CAAaU,QAAb,CAAsBD,iBAAtB,CAAP;;IACF,KAAK,QAAL;MACE,OAAOT,IAAI,KAAK,IAAT,GACH,OAAOU,QAAP,CAAgBD,iBAAhB,CADG,GAEH,CAACG,KAAK,CAACC,OAAN,CAAcb,IAAd,IAAsBA,IAAtB,GAA6Bc,MAAM,CAACC,OAAP,CAAef,IAAf,EAAqBgB,IAArB,EAA9B,EAA2DC,IAA3D,CACGX,IAAD,IAAUC,SAAS,CAACD,IAAD,EAAOG,iBAAP,CADrB,CAFJ;;IAKF;MACE,OAAO,KAAP;EAbJ;AAeD"}
@@ -0,0 +1,2 @@
1
+ export * from "./deepMatch";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./deepMatch\";\n"],"mappings":"AAAA,cAAc,aAAd"}
@@ -0,0 +1,72 @@
1
+ import React, { useCallback, useMemo } from "react";
2
+ import classNames from "classnames";
3
+ import { looseCheckIfByTransform } from "@next-core/brick-kit";
4
+ import { GeneralIcon } from "@next-libs/basic-components";
5
+ import styles from "./WorkbenchMiniActionBar.module.css";
6
+ export function WorkbenchMiniActionBar(_ref) {
7
+ var {
8
+ data,
9
+ className,
10
+ gap,
11
+ isFirst,
12
+ isLast,
13
+ actions,
14
+ actionsHidden,
15
+ onActionClick
16
+ } = _ref;
17
+ var enabledActions = useMemo(() => actions === null || actions === void 0 ? void 0 : actions.filter(item => looseCheckIfByTransform(item, data)), [actions, data]);
18
+
19
+ if (actionsHidden || !(enabledActions !== null && enabledActions !== void 0 && enabledActions.length)) {
20
+ return null;
21
+ }
22
+
23
+ return /*#__PURE__*/React.createElement("div", {
24
+ className: classNames(styles.actionsBar, className),
25
+ style: {
26
+ gap
27
+ }
28
+ }, enabledActions.map(item => /*#__PURE__*/React.createElement(WorkbenchSubAction, {
29
+ key: item.action,
30
+ action: item,
31
+ data: data,
32
+ isFirst: isFirst,
33
+ isLast: isLast,
34
+ onActionClick: onActionClick
35
+ })));
36
+ }
37
+
38
+ function WorkbenchSubAction(_ref2) {
39
+ var {
40
+ action,
41
+ data,
42
+ isFirst,
43
+ isLast,
44
+ onActionClick
45
+ } = _ref2;
46
+ var disabled = isFirst && action.action === "move-up" || isLast && action.action === "move-down";
47
+ var handleActionClick = useCallback(event => {
48
+ event.preventDefault();
49
+ event.stopPropagation();
50
+ disabled || (onActionClick === null || onActionClick === void 0 ? void 0 : onActionClick({
51
+ action: action.action,
52
+ data: data
53
+ }));
54
+ }, [action.action, data, disabled, onActionClick]);
55
+ var preventMouseEvent = useCallback(event => {
56
+ event.preventDefault();
57
+ event.stopPropagation();
58
+ }, []);
59
+ return /*#__PURE__*/React.createElement("a", {
60
+ className: classNames(styles.action, {
61
+ [styles.disabled]: disabled
62
+ }),
63
+ title: action.title,
64
+ role: "button",
65
+ onClick: handleActionClick,
66
+ onContextMenu: preventMouseEvent,
67
+ onMouseDown: preventMouseEvent
68
+ }, /*#__PURE__*/React.createElement(GeneralIcon, {
69
+ icon: action.icon
70
+ }));
71
+ }
72
+ //# sourceMappingURL=WorkbenchMiniActionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkbenchMiniActionBar.js","names":["React","useCallback","useMemo","classNames","looseCheckIfByTransform","GeneralIcon","styles","WorkbenchMiniActionBar","data","className","gap","isFirst","isLast","actions","actionsHidden","onActionClick","enabledActions","filter","item","length","actionsBar","map","action","WorkbenchSubAction","disabled","handleActionClick","event","preventDefault","stopPropagation","preventMouseEvent","title","icon"],"sources":["../../../src/workbench-mini-action-bar/WorkbenchMiniActionBar.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { looseCheckIfByTransform } from \"@next-core/brick-kit\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { WorkbenchTreeAction, ActionClickDetail } from \"../interfaces\";\n\nimport styles from \"./WorkbenchMiniActionBar.module.css\";\n\nexport interface WorkbenchSubActionBarProps {\n data?: unknown;\n className?: string;\n gap?: number;\n isFirst?: boolean;\n isLast?: boolean;\n actions?: WorkbenchTreeAction[];\n actionsHidden?: boolean;\n onActionClick?(detail: ActionClickDetail): void;\n}\n\nexport function WorkbenchMiniActionBar({\n data,\n className,\n gap,\n isFirst,\n isLast,\n actions,\n actionsHidden,\n onActionClick,\n}: WorkbenchSubActionBarProps): React.ReactElement {\n const enabledActions = useMemo(\n () => actions?.filter((item) => looseCheckIfByTransform(item, data)),\n [actions, data]\n );\n\n if (actionsHidden || !enabledActions?.length) {\n return null;\n }\n\n return (\n <div className={classNames(styles.actionsBar, className)} style={{ gap }}>\n {enabledActions.map((item) => (\n <WorkbenchSubAction\n key={item.action}\n action={item}\n data={data}\n isFirst={isFirst}\n isLast={isLast}\n onActionClick={onActionClick}\n />\n ))}\n </div>\n );\n}\n\ninterface WorkbenchSubActionProps {\n action: WorkbenchTreeAction;\n data?: unknown;\n isFirst?: boolean;\n isLast?: boolean;\n onActionClick?(detail: ActionClickDetail): void;\n}\n\nfunction WorkbenchSubAction({\n action,\n data,\n isFirst,\n isLast,\n onActionClick,\n}: WorkbenchSubActionProps): React.ReactElement {\n const disabled =\n (isFirst && action.action === \"move-up\") ||\n (isLast && action.action === \"move-down\");\n\n const handleActionClick = useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n disabled ||\n onActionClick?.({\n action: action.action,\n data: data,\n });\n },\n [action.action, data, disabled, onActionClick]\n );\n\n const preventMouseEvent = useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n return (\n <a\n className={classNames(styles.action, { [styles.disabled]: disabled })}\n title={action.title}\n role=\"button\"\n onClick={handleActionClick}\n onContextMenu={preventMouseEvent}\n onMouseDown={preventMouseEvent}\n >\n <GeneralIcon icon={action.icon} />\n </a>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,OAA7B,QAA4C,OAA5C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,uBAAT,QAAwC,sBAAxC;AACA,SAASC,WAAT,QAA4B,6BAA5B;AAGA,OAAOC,MAAP,MAAmB,qCAAnB;AAaA,OAAO,SAASC,sBAAT,OAS4C;EAAA,IATZ;IACrCC,IADqC;IAErCC,SAFqC;IAGrCC,GAHqC;IAIrCC,OAJqC;IAKrCC,MALqC;IAMrCC,OANqC;IAOrCC,aAPqC;IAQrCC;EARqC,CASY;EACjD,IAAMC,cAAc,GAAGd,OAAO,CAC5B,MAAMW,OAAN,aAAMA,OAAN,uBAAMA,OAAO,CAAEI,MAAT,CAAiBC,IAAD,IAAUd,uBAAuB,CAACc,IAAD,EAAOV,IAAP,CAAjD,CADsB,EAE5B,CAACK,OAAD,EAAUL,IAAV,CAF4B,CAA9B;;EAKA,IAAIM,aAAa,IAAI,EAACE,cAAD,aAACA,cAAD,eAACA,cAAc,CAAEG,MAAjB,CAArB,EAA8C;IAC5C,OAAO,IAAP;EACD;;EAED,oBACE;IAAK,SAAS,EAAEhB,UAAU,CAACG,MAAM,CAACc,UAAR,EAAoBX,SAApB,CAA1B;IAA0D,KAAK,EAAE;MAAEC;IAAF;EAAjE,GACGM,cAAc,CAACK,GAAf,CAAoBH,IAAD,iBAClB,oBAAC,kBAAD;IACE,GAAG,EAAEA,IAAI,CAACI,MADZ;IAEE,MAAM,EAAEJ,IAFV;IAGE,IAAI,EAAEV,IAHR;IAIE,OAAO,EAAEG,OAJX;IAKE,MAAM,EAAEC,MALV;IAME,aAAa,EAAEG;EANjB,EADD,CADH,CADF;AAcD;;AAUD,SAASQ,kBAAT,QAMgD;EAAA,IANpB;IAC1BD,MAD0B;IAE1Bd,IAF0B;IAG1BG,OAH0B;IAI1BC,MAJ0B;IAK1BG;EAL0B,CAMoB;EAC9C,IAAMS,QAAQ,GACXb,OAAO,IAAIW,MAAM,CAACA,MAAP,KAAkB,SAA9B,IACCV,MAAM,IAAIU,MAAM,CAACA,MAAP,KAAkB,WAF/B;EAIA,IAAMG,iBAAiB,GAAGxB,WAAW,CAClCyB,KAAD,IAA6B;IAC3BA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;IACAJ,QAAQ,KACNT,aADM,aACNA,aADM,uBACNA,aAAa,CAAG;MACdO,MAAM,EAAEA,MAAM,CAACA,MADD;MAEdd,IAAI,EAAEA;IAFQ,CAAH,CADP,CAAR;EAKD,CATkC,EAUnC,CAACc,MAAM,CAACA,MAAR,EAAgBd,IAAhB,EAAsBgB,QAAtB,EAAgCT,aAAhC,CAVmC,CAArC;EAaA,IAAMc,iBAAiB,GAAG5B,WAAW,CAAEyB,KAAD,IAA6B;IACjEA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;EACD,CAHoC,EAGlC,EAHkC,CAArC;EAKA,oBACE;IACE,SAAS,EAAEzB,UAAU,CAACG,MAAM,CAACgB,MAAR,EAAgB;MAAE,CAAChB,MAAM,CAACkB,QAAR,GAAmBA;IAArB,CAAhB,CADvB;IAEE,KAAK,EAAEF,MAAM,CAACQ,KAFhB;IAGE,IAAI,EAAC,QAHP;IAIE,OAAO,EAAEL,iBAJX;IAKE,aAAa,EAAEI,iBALjB;IAME,WAAW,EAAEA;EANf,gBAQE,oBAAC,WAAD;IAAa,IAAI,EAAEP,MAAM,CAACS;EAA1B,EARF,CADF;AAYD"}
@@ -0,0 +1,30 @@
1
+ .actionsBar {
2
+ display: flex;
3
+ align-items: center;
4
+ padding: 0 3px;
5
+ }
6
+
7
+ .action {
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ width: 20px;
12
+ height: 20px;
13
+ border-radius: 5px;
14
+ }
15
+
16
+ .action:hover {
17
+ background-color: rgba(90, 93, 94, 0.31);
18
+ }
19
+
20
+ .action,
21
+ .action:hover {
22
+ color: #c5c5c5;
23
+ }
24
+
25
+ .disabled,
26
+ .disabled:hover {
27
+ color: var(--color-disabled-text);
28
+ cursor: not-allowed;
29
+ background-color: initial;
30
+ }
@@ -1,3 +1,5 @@
1
1
  export * from "./visual-property-form/VisualPropertyForm";
2
2
  export * from "./interfaces";
3
3
  export * from "./visual-property-form/processor";
4
+ export * from "./workbench-mini-action-bar/WorkbenchMiniActionBar";
5
+ export * from "./utils";
@@ -1 +1,2 @@
1
1
  export * from "./brick-visualization";
2
+ export * from "./workbench-mini-action-bar";
@@ -0,0 +1,11 @@
1
+ import { MenuIcon } from "@next-core/brick-types";
2
+ export interface WorkbenchTreeAction {
3
+ action: string;
4
+ icon: MenuIcon;
5
+ title?: string;
6
+ if?: string | boolean;
7
+ }
8
+ export interface ActionClickDetail {
9
+ action: string;
10
+ data?: unknown;
11
+ }
@@ -0,0 +1,2 @@
1
+ export declare function deepFilter<T>(data: Array<T>, q: string): Array<T>;
2
+ export declare function deepMatch(data: unknown, lowerTrimmedQuery: string): boolean;
@@ -0,0 +1 @@
1
+ export * from "./deepMatch";
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { WorkbenchTreeAction, ActionClickDetail } from "../interfaces";
3
+ export interface WorkbenchSubActionBarProps {
4
+ data?: unknown;
5
+ className?: string;
6
+ gap?: number;
7
+ isFirst?: boolean;
8
+ isLast?: boolean;
9
+ actions?: WorkbenchTreeAction[];
10
+ actionsHidden?: boolean;
11
+ onActionClick?(detail: ActionClickDetail): void;
12
+ }
13
+ export declare function WorkbenchMiniActionBar({ data, className, gap, isFirst, isLast, actions, actionsHidden, onActionClick, }: WorkbenchSubActionBarProps): React.ReactElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/visual-builder",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/visual-builder",
6
6
  "license": "GPL-3.0",
@@ -35,5 +35,5 @@
35
35
  "@types/react-color": "^3.0.6",
36
36
  "react-color": "^2.19.3"
37
37
  },
38
- "gitHead": "3f61763b06ed8242738dab8b92b039c3877c7056"
38
+ "gitHead": "79fe093d4da0345d69895845ac7f7ab484c559c5"
39
39
  }