@gedit/editor-2d 0.1.111 → 0.1.115

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 (76) hide show
  1. package/lib/browser/editor2d-context-key-service.js +24 -35
  2. package/lib/browser/editor2d-context-key-service.js.map +1 -1
  3. package/lib/browser/editor2d-contribution.js +89 -139
  4. package/lib/browser/editor2d-contribution.js.map +1 -1
  5. package/lib/browser/editor2d-frontend-module.js +20 -20
  6. package/lib/browser/editor2d-frontend-module.js.map +1 -1
  7. package/lib/browser/editor2d-label-provider.d.ts +0 -1
  8. package/lib/browser/editor2d-label-provider.d.ts.map +1 -1
  9. package/lib/browser/editor2d-label-provider.js +37 -58
  10. package/lib/browser/editor2d-label-provider.js.map +1 -1
  11. package/lib/browser/editor2d-model-provider.js +61 -127
  12. package/lib/browser/editor2d-model-provider.js.map +1 -1
  13. package/lib/browser/editor2d-ref-provider-contribution.js +44 -110
  14. package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
  15. package/lib/browser/editor2d-service.d.ts +1 -1
  16. package/lib/browser/editor2d-service.d.ts.map +1 -1
  17. package/lib/browser/editor2d-service.js +70 -83
  18. package/lib/browser/editor2d-service.js.map +1 -1
  19. package/lib/browser/model/editor2d-document.d.ts +2 -2
  20. package/lib/browser/model/editor2d-document.d.ts.map +1 -1
  21. package/lib/browser/model/editor2d-document.js +376 -547
  22. package/lib/browser/model/editor2d-document.js.map +1 -1
  23. package/lib/browser/model/editor2d-iterator.js +27 -67
  24. package/lib/browser/model/editor2d-iterator.js.map +1 -1
  25. package/lib/browser/model/editor2d-model-container.js +10 -21
  26. package/lib/browser/model/editor2d-model-container.js.map +1 -1
  27. package/lib/browser/model/editor2d-model.js +77 -92
  28. package/lib/browser/model/editor2d-model.js.map +1 -1
  29. package/lib/browser/model/editor2d-selection.js +16 -43
  30. package/lib/browser/model/editor2d-selection.js.map +1 -1
  31. package/lib/browser/model/editor2d-widget.js +71 -90
  32. package/lib/browser/model/editor2d-widget.js.map +1 -1
  33. package/lib/browser/model/editor2d.js +41 -127
  34. package/lib/browser/model/editor2d.js.map +1 -1
  35. package/lib/browser/model/utils/anim.utils.js +14 -14
  36. package/lib/browser/model/utils/anim.utils.js.map +1 -1
  37. package/lib/browser/playground/canvas-draw-layer.js +45 -69
  38. package/lib/browser/playground/canvas-draw-layer.js.map +1 -1
  39. package/lib/browser/playground/canvas-draw.d.ts +1 -0
  40. package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
  41. package/lib/browser/playground/canvas-draw.js +152 -241
  42. package/lib/browser/playground/canvas-draw.js.map +1 -1
  43. package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
  44. package/lib/browser/playground/canvas-layer.js +57 -102
  45. package/lib/browser/playground/canvas-layer.js.map +1 -1
  46. package/lib/browser/playground/entities/document-entity.js +8 -28
  47. package/lib/browser/playground/entities/document-entity.js.map +1 -1
  48. package/lib/browser/playground/entities/editor2d-entity.js +14 -37
  49. package/lib/browser/playground/entities/editor2d-entity.js.map +1 -1
  50. package/lib/browser/playground/playground-context.d.ts +3 -2
  51. package/lib/browser/playground/playground-context.d.ts.map +1 -1
  52. package/lib/browser/playground/playground-context.js +56 -55
  53. package/lib/browser/playground/playground-context.js.map +1 -1
  54. package/lib/browser/playground/playground-contribution.js +61 -65
  55. package/lib/browser/playground/playground-contribution.js.map +1 -1
  56. package/lib/browser/playground/selection-entity-manager.d.ts +1 -0
  57. package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
  58. package/lib/browser/playground/selection-entity-manager.js +82 -132
  59. package/lib/browser/playground/selection-entity-manager.js.map +1 -1
  60. package/lib/browser/playground/selector-extend-icons.js +15 -16
  61. package/lib/browser/playground/selector-extend-icons.js.map +1 -1
  62. package/lib/browser/playground/selector-extend-renderer.d.ts +3 -2
  63. package/lib/browser/playground/selector-extend-renderer.d.ts.map +1 -1
  64. package/lib/browser/playground/selector-extend-renderer.js +67 -52
  65. package/lib/browser/playground/selector-extend-renderer.js.map +1 -1
  66. package/lib/browser/utils/snapshot.js +81 -172
  67. package/lib/browser/utils/snapshot.js.map +1 -1
  68. package/package.json +7 -7
  69. package/src/browser/editor2d-label-provider.ts +1 -15
  70. package/src/browser/editor2d-service.ts +9 -6
  71. package/src/browser/model/editor2d-document.ts +19 -12
  72. package/src/browser/playground/canvas-draw.ts +14 -1
  73. package/src/browser/playground/canvas-layer.ts +4 -2
  74. package/src/browser/playground/playground-context.ts +11 -10
  75. package/src/browser/playground/selection-entity-manager.tsx +9 -3
  76. package/src/browser/playground/selector-extend-renderer.tsx +43 -10
@@ -155,12 +155,13 @@ export class SelectionEntityManager {
155
155
  entity.update(register.getSelectionData(gameObject));
156
156
  entity.ignoreTransformChanged = false;
157
157
  const sizeVisible = !this.isHidden(entity.node); // && (entity.transform.size.width > 0 && entity.transform.size.height > 0 || !!deco.isContainer);
158
+ const opacityZero = this.isOpacityZero(node);
158
159
  // 图层节点无法被选中
159
160
  entity.selectable = entity.selectableInit && sizeVisible;
160
161
  // 锁定状态的节点无法通过鼠标点击
161
- entity.mouseSelect = (deco.mouseSelect === undefined ? true : deco.mouseSelect) && !this.isLocked(node);
162
+ entity.mouseSelect = (deco.mouseSelect === undefined ? true : deco.mouseSelect) && !opacityZero && !this.isLocked(node);
162
163
  // 是否支持吸附
163
- entity.adsorbable = entity.adsorbableInit && sizeVisible && (deco.adsorbable === undefined ? true : deco.adsorbable);
164
+ entity.adsorbable = entity.adsorbableInit && sizeVisible && !opacityZero && (deco.adsorbable === undefined ? true : deco.adsorbable);
164
165
  // 同步选中状态
165
166
  entity.selected = !!node?.selected;
166
167
  // 更新zIndex, 每次都要更新,因为节点拖拽会导致所有的zIndex顺序错乱
@@ -190,7 +191,7 @@ export class SelectionEntityManager {
190
191
  }
191
192
  }
192
193
  if (!this.isVisible()) return;
193
- this.context.syncToSelectionService(this);
194
+ // this.context.syncToSelectionService(this);
194
195
  if (entitiesScrollTo.length > 0) {
195
196
  // 滚动画布到选中的节点
196
197
  this.entityManager.getEntity<PlaygroundConfigEntity>(PlaygroundConfigEntity)!.scrollToView({entities: entitiesScrollTo});
@@ -209,6 +210,11 @@ export class SelectionEntityManager {
209
210
  }
210
211
  return Rectangle.enlarge(rects);
211
212
  }
213
+ isOpacityZero(node: Editor2dNode | undefined): boolean {
214
+ if (!node) return false;
215
+ if (node.opacity === 0) return true;
216
+ return this.isOpacityZero(node.parent as Editor2dNode);
217
+ }
212
218
  isHidden(node: Editor2dNode | undefined): boolean {
213
219
  if (!node) return false;
214
220
  if (node.canvasHide) return true;
@@ -1,19 +1,20 @@
1
1
  import * as React from 'react';
2
2
 
3
3
  import clsx from 'clsx';
4
- import { Form, Popover, Tooltip } from '@gedit/ui';
4
+ import { Popover, Tooltip } from '@gedit/ui';
5
5
 
6
6
  import { selectIcon, SelectorExtendType } from './selector-extend-icons';
7
7
  import { GameObjectIDERegister, GameObjectSelectorExtend as SelectorExtend } from '@gedit/render-engine-ide';
8
- import { PlaygroundContext, SelectorEntityRendererProps, } from '@gedit/playground';
8
+ import { SelectorEntityRendererProps, } from '@gedit/playground';
9
9
  import type { Editor2dEntity } from './entities/editor2d-entity';
10
10
  import { Editor2dNode } from '../model';
11
+ import { PlaygroundContext2d } from './playground-context';
11
12
 
12
13
  const getClassName = (str: string) => `gedit-selector-extend-${str}`;
13
14
 
14
15
  export interface SelectorExtendProps extends SelectorEntityRendererProps {
15
16
  register?: GameObjectIDERegister;
16
- context?: PlaygroundContext;
17
+ context: PlaygroundContext2d;
17
18
  }
18
19
 
19
20
  const defaultExtends: SelectorExtend[] = [
@@ -24,14 +25,38 @@ const defaultExtends: SelectorExtend[] = [
24
25
  order: 0,
25
26
  visible: (node: Editor2dNode, register: GameObjectIDERegister) => register?.getDisableKeys().indexOf('link') === -1,
26
27
  event: {
27
- title: '跳转链接配置',
28
+ title: '跳转配置',
28
29
  type: 'selectorExtendAttr',
29
30
  children: [
31
+ {
32
+ type: 'radio',
33
+ key: 'linkType',
34
+ label: '类型',
35
+ renderProps: {
36
+ defaultValue: 'url',
37
+ items: [{value: 'url', label: 'URL'}, {value: 'scene', label: '场景'}]
38
+ }
39
+ },
30
40
  {
31
41
  type: 'text',
32
42
  key: 'link',
43
+ visible: (v, key, node: Editor2dNode) => (
44
+ node && !node.linkType || node.linkType === 'url'
45
+ ),
33
46
  label: '链接',
34
- placeholder: '请输出 url 地址',
47
+ placeholder: '请输入 url 地址',
48
+ },
49
+ {
50
+ type: 'mindmapSelect',
51
+ key: 'link',
52
+ visible: (v, key, node: Editor2dNode) => (
53
+ node && node.linkType === 'scene'
54
+ ),
55
+ renderProps: {
56
+ filterTypes: ['scene']
57
+ },
58
+ label: '场景',
59
+ placeholder: '请选择场景',
35
60
  },
36
61
  ],
37
62
  },
@@ -89,6 +114,7 @@ const sortData = (data: SelectorExtend[]) => {
89
114
  const SelectorIcon = (props: {
90
115
  item: SelectorExtend;
91
116
  onChange: (type: SelectorExtendType | 'updateData', value?: any) => void;
117
+ context: PlaygroundContext2d,
92
118
  node: any;
93
119
  }) => {
94
120
  const {item, onChange, node} = props;
@@ -110,7 +136,7 @@ const SelectorIcon = (props: {
110
136
  if (item.event) {
111
137
  return (
112
138
  <Popover
113
- content={Form.renderBySchema({
139
+ content={props.context.formService.renderSchema({
114
140
  ...item.event,
115
141
  context: {
116
142
  node,
@@ -144,6 +170,8 @@ export const SelectorExtendRender = (props: SelectorExtendProps) => {
144
170
  const {entity, register, context} = props;
145
171
  const {node} = entity as Editor2dEntity;
146
172
  const {selectorExtends = []} = register?.decoration || {};
173
+ const [t, update] = React.useState(0);
174
+ if (!node) return <></>;
147
175
 
148
176
  const childData = sortData(
149
177
  ([] as SelectorExtend[])
@@ -151,7 +179,7 @@ export const SelectorExtendRender = (props: SelectorExtendProps) => {
151
179
  .filter(c => (c.visible ? c.visible(node, register) : true))
152
180
  );
153
181
  const onChange = (type: SelectorExtendType | 'updateData', value?: any) => {
154
- const {document} = context;
182
+ const {document} = context!;
155
183
  switch (type) {
156
184
  case SelectorExtendType.TO_TOP:
157
185
  document.moveUp(node);
@@ -162,14 +190,14 @@ export const SelectorExtendRender = (props: SelectorExtendProps) => {
162
190
  case SelectorExtendType.FLIP_X:
163
191
  document.updateNode(
164
192
  node,
165
- {flip: {...node?.flip, x: !node?.flip?.x}},
193
+ {flip: {...node.flip!, x: !node?.flip?.x}},
166
194
  true
167
195
  );
168
196
  break;
169
197
  case SelectorExtendType.FLIP_Y:
170
198
  document.updateNode(
171
199
  node,
172
- {flip: {...node?.flip, y: !node?.flip?.y}},
200
+ {flip: {...node.flip!, y: !node?.flip?.y}},
173
201
  true
174
202
  );
175
203
  break;
@@ -177,8 +205,12 @@ export const SelectorExtendRender = (props: SelectorExtendProps) => {
177
205
  document.delNodes(node);
178
206
  break;
179
207
  case 'updateData':
180
- console.log(value);
208
+ // 修改linkType则清空link
209
+ if (value.linkType) {
210
+ value.link = '';
211
+ }
181
212
  document.updateNode(node, value, true);
213
+ update(t + 1);
182
214
  break;
183
215
  default:
184
216
  console.warn(`无效类型: ${type}.`);
@@ -199,6 +231,7 @@ export const SelectorExtendRender = (props: SelectorExtendProps) => {
199
231
  {c.map(item => (
200
232
  <SelectorIcon
201
233
  item={item}
234
+ context={context}
202
235
  onChange={onChange}
203
236
  node={node}
204
237
  key={item.type}