@gedit/editor-2d 0.1.101 → 0.1.105
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/lib/browser/model/editor2d-document.d.ts +1 -1
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +3 -3
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/model/editor2d.d.ts +3 -3
- package/lib/browser/model/editor2d.d.ts.map +1 -1
- package/lib/browser/model/editor2d.js +13 -6
- package/lib/browser/model/editor2d.js.map +1 -1
- package/lib/browser/model/utils/anim.utils.d.ts.map +1 -1
- package/lib/browser/model/utils/anim.utils.js +2 -0
- package/lib/browser/model/utils/anim.utils.js.map +1 -1
- package/lib/browser/playground/index.d.ts +2 -0
- package/lib/browser/playground/index.d.ts.map +1 -1
- package/lib/browser/playground/index.js +4 -0
- package/lib/browser/playground/index.js.map +1 -1
- package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
- package/lib/browser/playground/selection-entity-manager.js +8 -5
- package/lib/browser/playground/selection-entity-manager.js.map +1 -1
- package/lib/browser/playground/selector-extend-icons.d.ts +8 -0
- package/lib/browser/playground/selector-extend-icons.d.ts.map +1 -0
- package/lib/browser/playground/selector-extend-icons.js +42 -0
- package/lib/browser/playground/selector-extend-icons.js.map +1 -0
- package/lib/browser/playground/selector-extend-renderer.d.ts +9 -0
- package/lib/browser/playground/selector-extend-renderer.d.ts.map +1 -0
- package/lib/browser/playground/selector-extend-renderer.js +150 -0
- package/lib/browser/playground/selector-extend-renderer.js.map +1 -0
- package/package.json +9 -8
- package/src/browser/model/editor2d-document.ts +6 -4
- package/src/browser/model/editor2d.ts +14 -6
- package/src/browser/model/utils/anim.utils.ts +2 -1
- package/src/browser/playground/index.ts +3 -0
- package/src/browser/playground/selection-entity-manager.tsx +10 -6
- package/src/browser/playground/selector-extend-icons.tsx +82 -0
- package/src/browser/playground/selector-extend-renderer.tsx +212 -0
- package/src/browser/style/index.less +1 -0
- package/src/browser/style/selector-extend.less +47 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.SelectorExtendRender = void 0;
|
|
15
|
+
var React = require("react");
|
|
16
|
+
var clsx_1 = require("clsx");
|
|
17
|
+
var ui_1 = require("@gedit/ui");
|
|
18
|
+
var selector_extend_icons_1 = require("./selector-extend-icons");
|
|
19
|
+
var getClassName = function (str) { return "gedit-selector-extend-".concat(str); };
|
|
20
|
+
var defaultExtends = [
|
|
21
|
+
{
|
|
22
|
+
type: selector_extend_icons_1.SelectorExtendType.LINK,
|
|
23
|
+
title: '配置链接',
|
|
24
|
+
category: 1,
|
|
25
|
+
order: 0,
|
|
26
|
+
visible: function (node, register) { return (register === null || register === void 0 ? void 0 : register.getDisableKeys().indexOf('link')) === -1; },
|
|
27
|
+
event: {
|
|
28
|
+
title: '跳转链接配置',
|
|
29
|
+
type: 'selectorExtendAttr',
|
|
30
|
+
children: [
|
|
31
|
+
{
|
|
32
|
+
type: 'text',
|
|
33
|
+
key: 'link',
|
|
34
|
+
label: '链接',
|
|
35
|
+
placeholder: '请输出 url 地址',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: selector_extend_icons_1.SelectorExtendType.TO_TOP,
|
|
42
|
+
title: '前置一层',
|
|
43
|
+
category: 2,
|
|
44
|
+
order: 0,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: selector_extend_icons_1.SelectorExtendType.TO_BOTTOM,
|
|
48
|
+
title: '后置一层',
|
|
49
|
+
category: 2,
|
|
50
|
+
order: 1,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: selector_extend_icons_1.SelectorExtendType.FLIP_X,
|
|
54
|
+
title: 'X 轴镜像',
|
|
55
|
+
category: 2,
|
|
56
|
+
order: 2,
|
|
57
|
+
visible: function (node, register) { return (register === null || register === void 0 ? void 0 : register.getDisableKeys().indexOf('flip.x')) === -1; },
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: selector_extend_icons_1.SelectorExtendType.FLIP_Y,
|
|
61
|
+
title: 'Y 轴镜像',
|
|
62
|
+
category: 2,
|
|
63
|
+
order: 3,
|
|
64
|
+
visible: function (node, register) { return (register === null || register === void 0 ? void 0 : register.getDisableKeys().indexOf('flip.y')) === -1; },
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: selector_extend_icons_1.SelectorExtendType.DELETE,
|
|
68
|
+
title: '删除图层',
|
|
69
|
+
parentClassName: getClassName('delete'),
|
|
70
|
+
category: 3,
|
|
71
|
+
order: 0,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
var sortData = function (data) {
|
|
75
|
+
var states = {};
|
|
76
|
+
data.forEach(function (c) {
|
|
77
|
+
var _a = c.category, category = _a === void 0 ? 'empty' : _a;
|
|
78
|
+
states[category] = states[category] || [];
|
|
79
|
+
states[category].push(c);
|
|
80
|
+
states[category] = states[category].sort(function (a, b) { return (a.order || 0) - (b.order || 0); });
|
|
81
|
+
});
|
|
82
|
+
return Object.keys(states)
|
|
83
|
+
.sort(function (a, b) { return parseFloat(a || '0') - parseFloat(b || '0'); })
|
|
84
|
+
.map(function (k) { return states[parseFloat(k)]; });
|
|
85
|
+
};
|
|
86
|
+
var SelectorIcon = function (props) {
|
|
87
|
+
var item = props.item, onChange = props.onChange, node = props.node;
|
|
88
|
+
var child = (React.createElement("div", { className: (0, clsx_1.default)(getClassName('icon'), item.className), onMouseDown: function (e) {
|
|
89
|
+
e.stopPropagation();
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
if (item.event) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(item.type);
|
|
95
|
+
} }, selector_extend_icons_1.selectIcon[item.type]));
|
|
96
|
+
if (item.event) {
|
|
97
|
+
return (React.createElement(ui_1.Popover, { content: ui_1.Form.renderBySchema(__assign(__assign({}, item.event), { context: {
|
|
98
|
+
node: node,
|
|
99
|
+
}, onChange: function (key, value) {
|
|
100
|
+
var _a;
|
|
101
|
+
onChange === null || onChange === void 0 ? void 0 : onChange('updateData', (_a = {},
|
|
102
|
+
_a[key] = value,
|
|
103
|
+
_a));
|
|
104
|
+
}, values: node, size: 'middle' })), title: item.event.title || item.title, placement: "right" }, child));
|
|
105
|
+
}
|
|
106
|
+
if (item.title) {
|
|
107
|
+
return (React.createElement(ui_1.Tooltip, { title: item.title, placement: "right" }, child));
|
|
108
|
+
}
|
|
109
|
+
return child;
|
|
110
|
+
};
|
|
111
|
+
var SelectorExtendRender = function (props) {
|
|
112
|
+
var entity = props.entity, register = props.register, context = props.context;
|
|
113
|
+
var node = entity.node;
|
|
114
|
+
var _a = ((register === null || register === void 0 ? void 0 : register.decoration) || {}).selectorExtends, selectorExtends = _a === void 0 ? [] : _a;
|
|
115
|
+
var childData = sortData([]
|
|
116
|
+
.concat(defaultExtends, selectorExtends)
|
|
117
|
+
.filter(function (c) { return (c.visible ? c.visible(node, register) : true); }));
|
|
118
|
+
var onChange = function (type, value) {
|
|
119
|
+
var _a, _b;
|
|
120
|
+
var document = context.document;
|
|
121
|
+
switch (type) {
|
|
122
|
+
case selector_extend_icons_1.SelectorExtendType.TO_TOP:
|
|
123
|
+
document.moveUp(node);
|
|
124
|
+
break;
|
|
125
|
+
case selector_extend_icons_1.SelectorExtendType.TO_BOTTOM:
|
|
126
|
+
document.moveDown(node);
|
|
127
|
+
break;
|
|
128
|
+
case selector_extend_icons_1.SelectorExtendType.FLIP_X:
|
|
129
|
+
document.updateNode(node, { flip: __assign(__assign({}, node === null || node === void 0 ? void 0 : node.flip), { x: !((_a = node === null || node === void 0 ? void 0 : node.flip) === null || _a === void 0 ? void 0 : _a.x) }) }, true);
|
|
130
|
+
break;
|
|
131
|
+
case selector_extend_icons_1.SelectorExtendType.FLIP_Y:
|
|
132
|
+
document.updateNode(node, { flip: __assign(__assign({}, node === null || node === void 0 ? void 0 : node.flip), { y: !((_b = node === null || node === void 0 ? void 0 : node.flip) === null || _b === void 0 ? void 0 : _b.y) }) }, true);
|
|
133
|
+
break;
|
|
134
|
+
case selector_extend_icons_1.SelectorExtendType.DELETE:
|
|
135
|
+
document.delNodes(node);
|
|
136
|
+
break;
|
|
137
|
+
case 'updateData':
|
|
138
|
+
console.log(value);
|
|
139
|
+
document.updateNode(node, value, true);
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
console.warn("\u65E0\u6548\u7C7B\u578B: ".concat(type, "."));
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
return (React.createElement("div", { className: getClassName('wrapper') },
|
|
147
|
+
React.createElement("div", null, childData.map(function (c, i) { return (React.createElement("div", { className: (0, clsx_1.default)(getClassName('icon-wrapper'), c.map(function (d) { return d.parentClassName; }).join(' ')), key: i.toString() }, c.map(function (item) { return (React.createElement(SelectorIcon, { item: item, onChange: onChange, node: node, key: item.type })); }))); }))));
|
|
148
|
+
};
|
|
149
|
+
exports.SelectorExtendRender = SelectorExtendRender;
|
|
150
|
+
//# sourceMappingURL=selector-extend-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-extend-renderer.js","sourceRoot":"","sources":["../../../src/browser/playground/selector-extend-renderer.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gedit/editor-2d",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.105",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "lib/browser/index",
|
|
6
6
|
"typings": "lib/browser/index.d.ts",
|
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
"src"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@gedit/app-config": "^0.1.
|
|
13
|
-
"@gedit/editor": "^0.1.
|
|
14
|
-
"@gedit/playground": "^0.1.
|
|
15
|
-
"@gedit/render-engine-ide": "^0.1.
|
|
16
|
-
"@gedit/workspace-2d": "^0.1.
|
|
17
|
-
"json-stringify-pretty-compact": "^2.0.0"
|
|
12
|
+
"@gedit/app-config": "^0.1.100",
|
|
13
|
+
"@gedit/editor": "^0.1.77",
|
|
14
|
+
"@gedit/playground": "^0.1.85",
|
|
15
|
+
"@gedit/render-engine-ide": "^0.1.105",
|
|
16
|
+
"@gedit/workspace-2d": "^0.1.81",
|
|
17
|
+
"json-stringify-pretty-compact": "^2.0.0",
|
|
18
|
+
"nanoid": "^3.3.2"
|
|
18
19
|
},
|
|
19
20
|
"geditExtensions": [
|
|
20
21
|
{
|
|
@@ -34,5 +35,5 @@
|
|
|
34
35
|
"nyc": {
|
|
35
36
|
"extends": "../../configs/nyc.json"
|
|
36
37
|
},
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "5f27beb01166079863d9fd1107bb8d4f4c41afe2"
|
|
38
39
|
}
|
|
@@ -96,9 +96,11 @@ export class Editor2dDocument extends TreeImpl<Editor2dNode, Editor2dContainerNo
|
|
|
96
96
|
*/
|
|
97
97
|
getComponentContent(compPath: string, parentNode: Editor2dNode): Editor2dNode[] | undefined {
|
|
98
98
|
const comp = this.componentContents[compPath];
|
|
99
|
-
if (comp && comp.children) return comp.children.map(c => ({
|
|
99
|
+
if (comp && comp.children) return comp.children.map(c => ({...c, parent: parentNode})) as Editor2dNode[];
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
|
|
102
|
+
createDisplayNode<E extends Editor2dNode = Editor2dNode>(
|
|
103
|
+
displayType: GameObjectType, parent?: Editor2dNode, position?: PositionSchema, index?: number, data?: Partial<Editor2dNode>): E {
|
|
102
104
|
let parentNode: Editor2dContainerNode;
|
|
103
105
|
if (!parent || Editor2dNode.isRootNode(parent)) {
|
|
104
106
|
parentNode = this.getNode(Editor2dNode.ROOT_NODE_ID) as Editor2dContainerNode;
|
|
@@ -126,7 +128,7 @@ export class Editor2dDocument extends TreeImpl<Editor2dNode, Editor2dContainerNo
|
|
|
126
128
|
parentNode.children || [],
|
|
127
129
|
this.engineService.getGameObjectIDERegister(this.engineName, displayType).decoration.name,
|
|
128
130
|
displayType);
|
|
129
|
-
const node = Editor2dNode.createNode({
|
|
131
|
+
const node = Editor2dNode.createNode({...attrs, ...data, name}, displayType, undefined, Object.keys(this.nodes));
|
|
130
132
|
this.addChildren(node, parentNode, index === undefined ? 0 : index);
|
|
131
133
|
return node as E;
|
|
132
134
|
}
|
|
@@ -146,7 +148,7 @@ export class Editor2dDocument extends TreeImpl<Editor2dNode, Editor2dContainerNo
|
|
|
146
148
|
parent = parentNode.parent;
|
|
147
149
|
}
|
|
148
150
|
if (parent) {
|
|
149
|
-
const newNode = Editor2dNode.clone(nodeData as Editor2dNode);
|
|
151
|
+
const newNode = Editor2dNode.clone(nodeData as Editor2dNode, [], Object.keys(this.nodes));
|
|
150
152
|
if (newNode.position) {
|
|
151
153
|
newNode.position.x = newNode.position.x + 20;
|
|
152
154
|
newNode.position.y = newNode.position.y + 20;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EditorDocumentNode } from '@gedit/editor';
|
|
2
2
|
import { ExpandableTreeNode, SelectableTreeNode, TreeNode } from '@gedit/tree';
|
|
3
|
-
import { deepClone, Disposable,
|
|
3
|
+
import { deepClone, Disposable, omit, URI } from '@gedit/utils';
|
|
4
4
|
import { ResourceAutoSaveOptions, ResourceAutoSaveService, ResourceChangeEvent } from '@gedit/resource/lib/browser';
|
|
5
5
|
import type { Editor2dDocument } from './editor2d-document';
|
|
6
6
|
import { GameObjectBaseType, GameObjectData, GameObjectType } from '@gedit/render-engine';
|
|
@@ -10,6 +10,7 @@ import { WorkspaceResourceService } from '@gedit/workspace-2d';
|
|
|
10
10
|
import { PlaygroundConfig, SelectorEntityRendererProps } from '@gedit/playground';
|
|
11
11
|
import type { CanvasDraw } from '../playground/canvas-draw';
|
|
12
12
|
import type { PlaygroundContext2d } from '../playground/playground-context';
|
|
13
|
+
import { nanoid } from 'nanoid';
|
|
13
14
|
|
|
14
15
|
const stringify = require('json-stringify-pretty-compact');
|
|
15
16
|
|
|
@@ -87,8 +88,14 @@ export interface Editor2dContainerNode extends Editor2dNode, ExpandableTreeNode
|
|
|
87
88
|
export namespace Editor2dNode {
|
|
88
89
|
export const ROOT_NODE_ID = 'root';
|
|
89
90
|
export const GLOBAL_ADD_EVENT = 'global_add_event'; // 全局添加标记事件
|
|
90
|
-
export function createNodeId(): string {
|
|
91
|
-
|
|
91
|
+
export function createNodeId(checks?: string[]): string {
|
|
92
|
+
// 用短id生成减少大小
|
|
93
|
+
const newId = nanoid(10);
|
|
94
|
+
// id 冲突,重新生成
|
|
95
|
+
if (checks && checks.includes(newId)) {
|
|
96
|
+
return createNodeId(checks);
|
|
97
|
+
}
|
|
98
|
+
return newId;
|
|
92
99
|
}
|
|
93
100
|
export function toContainerNode(node: Editor2dNode | Editor2dContainerNode): Editor2dContainerNode {
|
|
94
101
|
if (!node.children) {
|
|
@@ -153,9 +160,9 @@ export namespace Editor2dNode {
|
|
|
153
160
|
}
|
|
154
161
|
return new URI(workspaceURI.path.join(path).toString());
|
|
155
162
|
}
|
|
156
|
-
export function clone(targetNode: Editor2dNode, omitKeys: string[] = []): Editor2dNode {
|
|
163
|
+
export function clone(targetNode: Editor2dNode, omitKeys: string[] = [], checks?: string[]): Editor2dNode {
|
|
157
164
|
return deepClone(omitNode(targetNode, ['id', 'selected', ...omitKeys], node => Object.assign(node, {
|
|
158
|
-
id: createNodeId(),
|
|
165
|
+
id: createNodeId(checks),
|
|
159
166
|
selected: false
|
|
160
167
|
})));
|
|
161
168
|
}
|
|
@@ -163,7 +170,8 @@ export namespace Editor2dNode {
|
|
|
163
170
|
/**
|
|
164
171
|
* 生成普通节点
|
|
165
172
|
*/
|
|
166
|
-
export function createNode(members: Partial<Editor2dNode> = {}, displayType: GameObjectType, id
|
|
173
|
+
export function createNode(members: Partial<Editor2dNode> = {}, displayType: GameObjectType, id?: string, checks?: string[]): Editor2dNode {
|
|
174
|
+
id = id || createNodeId(checks);
|
|
167
175
|
return {
|
|
168
176
|
...members,
|
|
169
177
|
displayType,
|
|
@@ -9,7 +9,7 @@ interface KeysValue {
|
|
|
9
9
|
key: string;
|
|
10
10
|
name: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
// 添加进时间轴动画的条件;
|
|
13
13
|
const supportKeys: SchemaType[] = ['integer', 'float', 'color'];
|
|
14
14
|
function readAnimationKeys(
|
|
15
15
|
deco: SchemaDecoration,
|
|
@@ -22,6 +22,7 @@ function readAnimationKeys(
|
|
|
22
22
|
parentName && deco.label ? `${parentName}.${deco.label}` : deco.label;
|
|
23
23
|
currentKey =
|
|
24
24
|
parentKey && currentKey ? `${parentKey}.${currentKey}` : currentKey;
|
|
25
|
+
// 进时间轴条件,必须带 label, ref: { label: 'xxx', type: 'float' };
|
|
25
26
|
if (deco.properties) {
|
|
26
27
|
Object.keys(deco.properties).forEach((property: string) => {
|
|
27
28
|
readAnimationKeys(
|
|
@@ -6,11 +6,12 @@ import {
|
|
|
6
6
|
DefaultSelectorEntityRenderer,
|
|
7
7
|
EntityManager,
|
|
8
8
|
PlaygroundConfigEntity,
|
|
9
|
-
SelectorConfigEntity
|
|
9
|
+
SelectorConfigEntity,
|
|
10
10
|
} from '@gedit/playground';
|
|
11
11
|
import type { PlaygroundContext2d } from './playground-context';
|
|
12
12
|
import { Rectangle } from '@gedit/math';
|
|
13
13
|
import { GameObject } from '@gedit/render-engine';
|
|
14
|
+
import { SelectorExtendRender } from './selector-extend-renderer';
|
|
14
15
|
|
|
15
16
|
const numberToFixed4 = (data: {[key: string]: any}) => {
|
|
16
17
|
const d: any = {};
|
|
@@ -44,12 +45,15 @@ export class SelectionEntityManager {
|
|
|
44
45
|
selectionConfigEntity?.customSelectorEntityRenderer(props => {
|
|
45
46
|
const newProps = {...props};
|
|
46
47
|
const entity = newProps.entity as Editor2dEntity;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const deco = entity.node
|
|
51
|
-
? this.context.renderEngine.getGameObjectDecoration(entity.gameObject.scene.config.engine, entity.node.displayType)
|
|
48
|
+
|
|
49
|
+
const register = entity.node
|
|
50
|
+
? this.context.renderEngine.getGameObjectIDERegister(entity.gameObject.scene.config.engine, entity.node.displayType)
|
|
52
51
|
: undefined;
|
|
52
|
+
const deco = register?.decoration;
|
|
53
|
+
newProps.extendRenderer = () => <SelectorExtendRender {...props} register={register} context={this.context} />;
|
|
54
|
+
/* if (this.context.options.extendEntityRenderer) {
|
|
55
|
+
newProps.extendRenderer = () => this.context.options.extendEntityRenderer!({ ...props, context: this.context });
|
|
56
|
+
} */
|
|
53
57
|
// 自定义渲染器
|
|
54
58
|
if (deco && deco.selectionRenderer) {
|
|
55
59
|
const Comp = deco.selectionRenderer;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import Icon, {
|
|
4
|
+
ArrowUpOutlined,
|
|
5
|
+
ArrowDownOutlined,
|
|
6
|
+
DeleteOutlined,
|
|
7
|
+
LinkOutlined,
|
|
8
|
+
} from '@ant-design/icons';
|
|
9
|
+
import { GameObjectSelectorExtendType as SelectorExtendType } from '@gedit/render-engine-ide';
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
SelectorExtendType,
|
|
13
|
+
};
|
|
14
|
+
/* const commonIcon = () => (
|
|
15
|
+
<svg
|
|
16
|
+
viewBox="0 0 1024 1024"
|
|
17
|
+
width="1em"
|
|
18
|
+
height="1em"
|
|
19
|
+
fill="currentColor"
|
|
20
|
+
fillRule="nonzero"
|
|
21
|
+
stroke="none"
|
|
22
|
+
>
|
|
23
|
+
<path
|
|
24
|
+
d="M704 64a64 64 0 0 1 64 64v128h128a64 64 0 0 1 64 64v576a64 64 0 0 1-64 64H320a64 64 0 0 1-64-64v-128H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h576z m0 64H128v576h288v64H320v128h576V320h-128v96h-64V128zM416 288v192A96 96 0 0 0 512 576h134.336L565.504 495.168l45.248-45.248 158.4 158.4-158.4 158.4-45.248-45.248L646.848 640H512a160 160 0 0 1-159.68-149.504L352 480v-192h64z"
|
|
25
|
+
p-id="4758"
|
|
26
|
+
/>
|
|
27
|
+
</svg>
|
|
28
|
+
); */
|
|
29
|
+
|
|
30
|
+
const flipX = () => (
|
|
31
|
+
<svg width="1em" height="1em" viewBox="0 0 14 13">
|
|
32
|
+
<g
|
|
33
|
+
id="页面-1"
|
|
34
|
+
stroke="currentColor"
|
|
35
|
+
strokeWidth="1"
|
|
36
|
+
fill="none"
|
|
37
|
+
fillRule="evenodd"
|
|
38
|
+
strokeLinecap="round"
|
|
39
|
+
strokeLinejoin="round"
|
|
40
|
+
>
|
|
41
|
+
<polygon
|
|
42
|
+
id="路径-2"
|
|
43
|
+
points="0 10.9051487 4.6880494 10.9051487 4.6880494 1.4679916e-14"
|
|
44
|
+
></polygon>
|
|
45
|
+
<polygon
|
|
46
|
+
id="路径-2备份"
|
|
47
|
+
fill="currentColor"
|
|
48
|
+
transform="translate(9.344025, 5.452574) scale(-1, 1) translate(-9.344025, -5.452574) "
|
|
49
|
+
points="7 10.9051487 11.6880494 10.9051487 11.6880494 1.4679916e-14"
|
|
50
|
+
></polygon>
|
|
51
|
+
</g>
|
|
52
|
+
</svg>
|
|
53
|
+
);
|
|
54
|
+
export const flipY = () => (
|
|
55
|
+
<svg width="1em" height="1em" viewBox="0 0 13 14">
|
|
56
|
+
<g
|
|
57
|
+
id="页面-1"
|
|
58
|
+
stroke="currentColor"
|
|
59
|
+
strokeWidth="1"
|
|
60
|
+
fill="none"
|
|
61
|
+
fillRule="evenodd"
|
|
62
|
+
strokeLinecap="round"
|
|
63
|
+
strokeLinejoin="round"
|
|
64
|
+
transform="scale(-1, 1) rotate(90.000000)"
|
|
65
|
+
>
|
|
66
|
+
<polygon points="0 10.9051487 4.6880494 10.9051487 4.6880494 4.80706427e-14" />
|
|
67
|
+
<polygon
|
|
68
|
+
fill="currentColor"
|
|
69
|
+
transform="translate(9.344025, 5.452574) scale(-1, 1) translate(-9.344025, -5.452574) "
|
|
70
|
+
points="7 10.9051487 11.6880494 10.9051487 11.6880494 4.84992691e-14"
|
|
71
|
+
/>
|
|
72
|
+
</g>
|
|
73
|
+
</svg>
|
|
74
|
+
);
|
|
75
|
+
export const selectIcon: { [key: string]: any } = {
|
|
76
|
+
[SelectorExtendType.TO_TOP]: <ArrowUpOutlined />,
|
|
77
|
+
[SelectorExtendType.TO_BOTTOM]: <ArrowDownOutlined />,
|
|
78
|
+
[SelectorExtendType.FLIP_X]: <Icon component={flipX} />,
|
|
79
|
+
[SelectorExtendType.FLIP_Y]: <Icon component={flipY} />,
|
|
80
|
+
[SelectorExtendType.DELETE]: <DeleteOutlined />,
|
|
81
|
+
[SelectorExtendType.LINK]: <LinkOutlined />,
|
|
82
|
+
};
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { Form, Popover, Tooltip } from '@gedit/ui';
|
|
5
|
+
|
|
6
|
+
import { selectIcon, SelectorExtendType } from './selector-extend-icons';
|
|
7
|
+
import { GameObjectIDERegister, GameObjectSelectorExtend as SelectorExtend } from '@gedit/render-engine-ide';
|
|
8
|
+
import { PlaygroundContext, SelectorEntityRendererProps, } from '@gedit/playground';
|
|
9
|
+
import type { Editor2dEntity } from './entities/editor2d-entity';
|
|
10
|
+
import { Editor2dNode } from '../model';
|
|
11
|
+
|
|
12
|
+
const getClassName = (str: string) => `gedit-selector-extend-${str}`;
|
|
13
|
+
|
|
14
|
+
export interface SelectorExtendProps extends SelectorEntityRendererProps {
|
|
15
|
+
register?: GameObjectIDERegister;
|
|
16
|
+
context?: PlaygroundContext;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const defaultExtends: SelectorExtend[] = [
|
|
20
|
+
{
|
|
21
|
+
type: SelectorExtendType.LINK,
|
|
22
|
+
title: '配置链接',
|
|
23
|
+
category: 1,
|
|
24
|
+
order: 0,
|
|
25
|
+
visible: (node: Editor2dNode, register: GameObjectIDERegister) => register?.getDisableKeys().indexOf('link') === -1,
|
|
26
|
+
event: {
|
|
27
|
+
title: '跳转链接配置',
|
|
28
|
+
type: 'selectorExtendAttr',
|
|
29
|
+
children: [
|
|
30
|
+
{
|
|
31
|
+
type: 'text',
|
|
32
|
+
key: 'link',
|
|
33
|
+
label: '链接',
|
|
34
|
+
placeholder: '请输出 url 地址',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: SelectorExtendType.TO_TOP,
|
|
41
|
+
title: '前置一层',
|
|
42
|
+
category: 2,
|
|
43
|
+
order: 0,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: SelectorExtendType.TO_BOTTOM,
|
|
47
|
+
title: '后置一层',
|
|
48
|
+
category: 2,
|
|
49
|
+
order: 1,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: SelectorExtendType.FLIP_X,
|
|
53
|
+
title: 'X 轴镜像',
|
|
54
|
+
category: 2,
|
|
55
|
+
order: 2,
|
|
56
|
+
visible: (node: Editor2dNode, register: GameObjectIDERegister) => register?.getDisableKeys().indexOf('flip.x') === -1,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: SelectorExtendType.FLIP_Y,
|
|
60
|
+
title: 'Y 轴镜像',
|
|
61
|
+
category: 2,
|
|
62
|
+
order: 3,
|
|
63
|
+
visible: (node: Editor2dNode, register: GameObjectIDERegister) => register?.getDisableKeys().indexOf('flip.y') === -1,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: SelectorExtendType.DELETE,
|
|
67
|
+
title: '删除图层',
|
|
68
|
+
parentClassName: getClassName('delete'),
|
|
69
|
+
category: 3,
|
|
70
|
+
order: 0,
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
const sortData = (data: SelectorExtend[]) => {
|
|
75
|
+
const states: { [key: string | number]: SelectorExtend[] } = {};
|
|
76
|
+
data.forEach(c => {
|
|
77
|
+
const {category = 'empty'} = c;
|
|
78
|
+
states[category] = states[category] || [];
|
|
79
|
+
states[category].push(c);
|
|
80
|
+
states[category] = states[category].sort(
|
|
81
|
+
(a, b) => (a.order || 0) - (b.order || 0)
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
return Object.keys(states)
|
|
85
|
+
.sort((a, b) => parseFloat(a || '0') - parseFloat(b || '0'))
|
|
86
|
+
.map(k => states[parseFloat(k)]);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const SelectorIcon = (props: {
|
|
90
|
+
item: SelectorExtend;
|
|
91
|
+
onChange: (type: SelectorExtendType | 'updateData', value?: any) => void;
|
|
92
|
+
node: any;
|
|
93
|
+
}) => {
|
|
94
|
+
const {item, onChange, node} = props;
|
|
95
|
+
const child = (
|
|
96
|
+
<div
|
|
97
|
+
className={clsx(getClassName('icon'), item.className)}
|
|
98
|
+
onMouseDown={(e: React.MouseEvent) => {
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
if (item.event) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
onChange?.(item.type);
|
|
105
|
+
}}
|
|
106
|
+
>
|
|
107
|
+
{selectIcon[item.type]}
|
|
108
|
+
</div>
|
|
109
|
+
);
|
|
110
|
+
if (item.event) {
|
|
111
|
+
return (
|
|
112
|
+
<Popover
|
|
113
|
+
content={Form.renderBySchema({
|
|
114
|
+
...item.event,
|
|
115
|
+
context: {
|
|
116
|
+
node,
|
|
117
|
+
},
|
|
118
|
+
onChange: (key: string, value: any) => {
|
|
119
|
+
onChange?.('updateData', {
|
|
120
|
+
[key]: value,
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
values: node,
|
|
124
|
+
size: 'middle',
|
|
125
|
+
})}
|
|
126
|
+
title={item.event.title || item.title}
|
|
127
|
+
placement="right"
|
|
128
|
+
>
|
|
129
|
+
{child}
|
|
130
|
+
</Popover>
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
if (item.title) {
|
|
134
|
+
return (
|
|
135
|
+
<Tooltip title={item.title} placement="right">
|
|
136
|
+
{child}
|
|
137
|
+
</Tooltip>
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
return child;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export const SelectorExtendRender = (props: SelectorExtendProps) => {
|
|
144
|
+
const {entity, register, context} = props;
|
|
145
|
+
const {node} = entity as Editor2dEntity;
|
|
146
|
+
const {selectorExtends = []} = register?.decoration || {};
|
|
147
|
+
|
|
148
|
+
const childData = sortData(
|
|
149
|
+
([] as SelectorExtend[])
|
|
150
|
+
.concat(defaultExtends, selectorExtends)
|
|
151
|
+
.filter(c => (c.visible ? c.visible(node, register) : true))
|
|
152
|
+
);
|
|
153
|
+
const onChange = (type: SelectorExtendType | 'updateData', value?: any) => {
|
|
154
|
+
const {document} = context;
|
|
155
|
+
switch (type) {
|
|
156
|
+
case SelectorExtendType.TO_TOP:
|
|
157
|
+
document.moveUp(node);
|
|
158
|
+
break;
|
|
159
|
+
case SelectorExtendType.TO_BOTTOM:
|
|
160
|
+
document.moveDown(node);
|
|
161
|
+
break;
|
|
162
|
+
case SelectorExtendType.FLIP_X:
|
|
163
|
+
document.updateNode(
|
|
164
|
+
node,
|
|
165
|
+
{flip: {...node?.flip, x: !node?.flip?.x}},
|
|
166
|
+
true
|
|
167
|
+
);
|
|
168
|
+
break;
|
|
169
|
+
case SelectorExtendType.FLIP_Y:
|
|
170
|
+
document.updateNode(
|
|
171
|
+
node,
|
|
172
|
+
{flip: {...node?.flip, y: !node?.flip?.y}},
|
|
173
|
+
true
|
|
174
|
+
);
|
|
175
|
+
break;
|
|
176
|
+
case SelectorExtendType.DELETE:
|
|
177
|
+
document.delNodes(node);
|
|
178
|
+
break;
|
|
179
|
+
case 'updateData':
|
|
180
|
+
console.log(value);
|
|
181
|
+
document.updateNode(node, value, true);
|
|
182
|
+
break;
|
|
183
|
+
default:
|
|
184
|
+
console.warn(`无效类型: ${type}.`);
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
return (
|
|
189
|
+
<div className={getClassName('wrapper')}>
|
|
190
|
+
<div>
|
|
191
|
+
{childData.map((c, i) => (
|
|
192
|
+
<div
|
|
193
|
+
className={clsx(
|
|
194
|
+
getClassName('icon-wrapper'),
|
|
195
|
+
c.map(d => d.parentClassName).join(' ')
|
|
196
|
+
)}
|
|
197
|
+
key={i.toString()}
|
|
198
|
+
>
|
|
199
|
+
{c.map(item => (
|
|
200
|
+
<SelectorIcon
|
|
201
|
+
item={item}
|
|
202
|
+
onChange={onChange}
|
|
203
|
+
node={node}
|
|
204
|
+
key={item.type}
|
|
205
|
+
/>
|
|
206
|
+
))}
|
|
207
|
+
</div>
|
|
208
|
+
))}
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
);
|
|
212
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
@import './engine2d.css';
|
|
2
2
|
@import './canvas-layer.css';
|
|
3
3
|
@import './canvas-draw-layer.less';
|
|
4
|
+
@import './selector-extend.less';
|
|
4
5
|
|
|
5
6
|
:root {
|
|
6
7
|
--g-mask-transparent: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAAfUlEQVQoFbVQQQ7AIAgD7Sf8/8s8+gd1s0vIptMlHkZiUGyBVmOMRwux4B2AhBDEOWflK6uqgICRYLVn3Zh9C6t+5G3CcqXVkKYPnQYCvfdSSpFaa8ejaM05N223S0QQmFJ6NeIfaN1I4JtnNmFb9L8Ergm6MWrg7jP36NIJC0BbmAiDWGoAAAAASUVORK5CYII=');;
|