@gedit/editor-2d 0.3.5 → 0.3.7

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 (157) hide show
  1. package/lib/browser/editor2d-anim-path-selection-service.d.ts +24 -0
  2. package/lib/browser/editor2d-anim-path-selection-service.d.ts.map +1 -0
  3. package/lib/browser/editor2d-anim-path-selection-service.js +52 -0
  4. package/lib/browser/editor2d-anim-path-selection-service.js.map +1 -0
  5. package/lib/browser/editor2d-context-key-service.js +7 -10
  6. package/lib/browser/editor2d-context-key-service.js.map +1 -1
  7. package/lib/browser/editor2d-contribution.js +25 -28
  8. package/lib/browser/editor2d-contribution.js.map +1 -1
  9. package/lib/browser/editor2d-frontend-module.d.ts.map +1 -1
  10. package/lib/browser/editor2d-frontend-module.js +38 -38
  11. package/lib/browser/editor2d-frontend-module.js.map +1 -1
  12. package/lib/browser/editor2d-label-provider.js +18 -21
  13. package/lib/browser/editor2d-label-provider.js.map +1 -1
  14. package/lib/browser/editor2d-model-provider.js +16 -19
  15. package/lib/browser/editor2d-model-provider.js.map +1 -1
  16. package/lib/browser/editor2d-ref-provider-contribution.js +13 -16
  17. package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
  18. package/lib/browser/editor2d-service.d.ts +2 -0
  19. package/lib/browser/editor2d-service.d.ts.map +1 -1
  20. package/lib/browser/editor2d-service.js +28 -27
  21. package/lib/browser/editor2d-service.js.map +1 -1
  22. package/lib/browser/index.d.ts +2 -0
  23. package/lib/browser/index.d.ts.map +1 -1
  24. package/lib/browser/index.js +6 -20
  25. package/lib/browser/index.js.map +1 -1
  26. package/lib/browser/model/editor2d-document.d.ts +22 -9
  27. package/lib/browser/model/editor2d-document.d.ts.map +1 -1
  28. package/lib/browser/model/editor2d-document.js +248 -133
  29. package/lib/browser/model/editor2d-document.js.map +1 -1
  30. package/lib/browser/model/editor2d-iterator.js +1 -5
  31. package/lib/browser/model/editor2d-iterator.js.map +1 -1
  32. package/lib/browser/model/editor2d-model-container.js +22 -26
  33. package/lib/browser/model/editor2d-model-container.js.map +1 -1
  34. package/lib/browser/model/editor2d-model.js +21 -24
  35. package/lib/browser/model/editor2d-model.js.map +1 -1
  36. package/lib/browser/model/editor2d-selection.js +7 -10
  37. package/lib/browser/model/editor2d-selection.js.map +1 -1
  38. package/lib/browser/model/editor2d-widget.js +17 -20
  39. package/lib/browser/model/editor2d-widget.js.map +1 -1
  40. package/lib/browser/model/editor2d.d.ts.map +1 -1
  41. package/lib/browser/model/editor2d.js +37 -35
  42. package/lib/browser/model/editor2d.js.map +1 -1
  43. package/lib/browser/model/index.js +7 -23
  44. package/lib/browser/model/index.js.map +1 -1
  45. package/lib/browser/model/utils/anim.utils.d.ts +2 -1
  46. package/lib/browser/model/utils/anim.utils.d.ts.map +1 -1
  47. package/lib/browser/model/utils/anim.utils.js +14 -16
  48. package/lib/browser/model/utils/anim.utils.js.map +1 -1
  49. package/lib/browser/model/utils/index.js +1 -17
  50. package/lib/browser/model/utils/index.js.map +1 -1
  51. package/lib/browser/playground/anim-path-edit-layer.d.ts +33 -0
  52. package/lib/browser/playground/anim-path-edit-layer.d.ts.map +1 -0
  53. package/lib/browser/playground/anim-path-edit-layer.js +352 -0
  54. package/lib/browser/playground/anim-path-edit-layer.js.map +1 -0
  55. package/lib/browser/playground/canvas-draw.d.ts +3 -0
  56. package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
  57. package/lib/browser/playground/canvas-draw.js +57 -39
  58. package/lib/browser/playground/canvas-draw.js.map +1 -1
  59. package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
  60. package/lib/browser/playground/canvas-layer.js +29 -32
  61. package/lib/browser/playground/canvas-layer.js.map +1 -1
  62. package/lib/browser/playground/entities/document-entity.js +2 -6
  63. package/lib/browser/playground/entities/document-entity.js.map +1 -1
  64. package/lib/browser/playground/entities/editor2d-entity.js +3 -7
  65. package/lib/browser/playground/entities/editor2d-entity.js.map +1 -1
  66. package/lib/browser/playground/entities/extend-entity.js +2 -6
  67. package/lib/browser/playground/entities/extend-entity.js.map +1 -1
  68. package/lib/browser/playground/entities/index.js +3 -19
  69. package/lib/browser/playground/entities/index.js.map +1 -1
  70. package/lib/browser/playground/extend-edit/gradient-conic-node.d.ts +4 -0
  71. package/lib/browser/playground/extend-edit/gradient-conic-node.d.ts.map +1 -0
  72. package/lib/browser/playground/extend-edit/gradient-conic-node.js +69 -0
  73. package/lib/browser/playground/extend-edit/gradient-conic-node.js.map +1 -0
  74. package/lib/browser/playground/{extend-edit-layer-point-event.d.ts → extend-edit/gradient-edit-layer-point-event.d.ts} +1 -1
  75. package/lib/browser/playground/extend-edit/gradient-edit-layer-point-event.d.ts.map +1 -0
  76. package/lib/browser/playground/{extend-edit-layer-point-event.js → extend-edit/gradient-edit-layer-point-event.js} +3 -28
  77. package/lib/browser/playground/extend-edit/gradient-edit-layer-point-event.js.map +1 -0
  78. package/lib/browser/playground/extend-edit/gradient-node.d.ts +13 -0
  79. package/lib/browser/playground/extend-edit/gradient-node.d.ts.map +1 -0
  80. package/lib/browser/playground/extend-edit/gradient-node.js +154 -0
  81. package/lib/browser/playground/extend-edit/gradient-node.js.map +1 -0
  82. package/lib/browser/playground/extend-edit-layer.d.ts +0 -8
  83. package/lib/browser/playground/extend-edit-layer.d.ts.map +1 -1
  84. package/lib/browser/playground/extend-edit-layer.js +30 -249
  85. package/lib/browser/playground/extend-edit-layer.js.map +1 -1
  86. package/lib/browser/playground/index.js +11 -30
  87. package/lib/browser/playground/index.js.map +1 -1
  88. package/lib/browser/playground/path-edit/anim-path-edit-svg.d.ts +17 -0
  89. package/lib/browser/playground/path-edit/anim-path-edit-svg.d.ts.map +1 -0
  90. package/lib/browser/playground/path-edit/anim-path-edit-svg.js +58 -0
  91. package/lib/browser/playground/path-edit/anim-path-edit-svg.js.map +1 -0
  92. package/lib/browser/playground/path-edit/index.js +3 -19
  93. package/lib/browser/playground/path-edit/index.js.map +1 -1
  94. package/lib/browser/playground/path-edit/path-edit-layer-move-point.d.ts +1 -1
  95. package/lib/browser/playground/path-edit/path-edit-layer-move-point.d.ts.map +1 -1
  96. package/lib/browser/playground/path-edit/path-edit-layer-move-point.js +9 -39
  97. package/lib/browser/playground/path-edit/path-edit-layer-move-point.js.map +1 -1
  98. package/lib/browser/playground/path-edit/path-edit-layer-svg-path.d.ts +2 -6
  99. package/lib/browser/playground/path-edit/path-edit-layer-svg-path.d.ts.map +1 -1
  100. package/lib/browser/playground/path-edit/path-edit-layer-svg-path.js +20 -50
  101. package/lib/browser/playground/path-edit/path-edit-layer-svg-path.js.map +1 -1
  102. package/lib/browser/playground/path-edit/utils.js +64 -100
  103. package/lib/browser/playground/path-edit/utils.js.map +1 -1
  104. package/lib/browser/playground/path-edit-layer.d.ts.map +1 -1
  105. package/lib/browser/playground/path-edit-layer.js +67 -95
  106. package/lib/browser/playground/path-edit-layer.js.map +1 -1
  107. package/lib/browser/playground/playground-context.d.ts +3 -3
  108. package/lib/browser/playground/playground-context.d.ts.map +1 -1
  109. package/lib/browser/playground/playground-context.js +48 -54
  110. package/lib/browser/playground/playground-context.js.map +1 -1
  111. package/lib/browser/playground/playground-contribution.d.ts.map +1 -1
  112. package/lib/browser/playground/playground-contribution.js +41 -42
  113. package/lib/browser/playground/playground-contribution.js.map +1 -1
  114. package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
  115. package/lib/browser/playground/selection-entity-manager.js +26 -54
  116. package/lib/browser/playground/selection-entity-manager.js.map +1 -1
  117. package/lib/browser/playground/selector-extend-icons.js +12 -39
  118. package/lib/browser/playground/selector-extend-icons.js.map +1 -1
  119. package/lib/browser/playground/selector-extend-renderer.js +22 -52
  120. package/lib/browser/playground/selector-extend-renderer.js.map +1 -1
  121. package/lib/browser/utils/bezier.path.utils.d.ts +23 -0
  122. package/lib/browser/utils/bezier.path.utils.d.ts.map +1 -0
  123. package/lib/browser/utils/bezier.path.utils.js +64 -0
  124. package/lib/browser/utils/bezier.path.utils.js.map +1 -0
  125. package/lib/browser/utils/bounds.js +17 -21
  126. package/lib/browser/utils/bounds.js.map +1 -1
  127. package/lib/browser/utils/snapshot.js +17 -20
  128. package/lib/browser/utils/snapshot.js.map +1 -1
  129. package/lib/i18n/zh-CN.js +1 -3
  130. package/lib/i18n/zh-CN.js.map +1 -1
  131. package/package.json +10 -9
  132. package/src/browser/editor2d-anim-path-selection-service.ts +48 -0
  133. package/src/browser/editor2d-frontend-module.ts +2 -0
  134. package/src/browser/editor2d-service.ts +2 -0
  135. package/src/browser/index.ts +2 -1
  136. package/src/browser/model/editor2d-document.ts +198 -20
  137. package/src/browser/model/editor2d.ts +13 -2
  138. package/src/browser/model/utils/anim.utils.ts +10 -6
  139. package/src/browser/playground/anim-path-edit-layer.tsx +435 -0
  140. package/src/browser/playground/canvas-draw.ts +37 -2
  141. package/src/browser/playground/canvas-layer.ts +1 -0
  142. package/src/browser/playground/extend-edit/gradient-conic-node.tsx +106 -0
  143. package/src/browser/playground/extend-edit/gradient-node.tsx +232 -0
  144. package/src/browser/playground/extend-edit-layer.tsx +32 -312
  145. package/src/browser/playground/path-edit/anim-path-edit-svg.tsx +168 -0
  146. package/src/browser/playground/path-edit/path-edit-layer-move-point.tsx +1 -1
  147. package/src/browser/playground/path-edit/path-edit-layer-svg-path.tsx +3 -7
  148. package/src/browser/playground/path-edit/utils.tsx +1 -1
  149. package/src/browser/playground/path-edit-layer.tsx +4 -4
  150. package/src/browser/playground/playground-context.ts +2 -6
  151. package/src/browser/playground/playground-contribution.ts +2 -0
  152. package/src/browser/playground/selection-entity-manager.tsx +7 -7
  153. package/src/browser/style/path-edit-layer.less +13 -5
  154. package/src/browser/utils/bezier.path.utils.ts +89 -0
  155. package/lib/browser/playground/extend-edit-layer-point-event.d.ts.map +0 -1
  156. package/lib/browser/playground/extend-edit-layer-point-event.js.map +0 -1
  157. /package/src/browser/playground/{extend-edit-layer-point-event.tsx → extend-edit/gradient-edit-layer-point-event.tsx} +0 -0
@@ -0,0 +1,168 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import {
4
+ getPointsToPaths,
5
+ PathChild,
6
+ PATH_FUNC_TYPE,
7
+ } from '@gedit/canvas-draw';
8
+ import { PathPointSelection } from '@gedit/playground';
9
+
10
+ interface AnimSvgPathProps {
11
+ width: number;
12
+ height: number;
13
+ paths: PathChild[];
14
+ scale: number;
15
+ noBezier: boolean;
16
+ selection: PathPointSelection<number>[];
17
+ onPointMouseDown?: (
18
+ e: React.MouseEvent<SVGCircleElement>,
19
+ point: PathChild,
20
+ paths: PathChild[]
21
+ ) => void;
22
+ onBezierPointMouseDown?: (
23
+ e: React.MouseEvent<SVGCircleElement>,
24
+ point: PathChild,
25
+ key: string,
26
+ paths: PathChild[]
27
+ ) => void;
28
+ onCancelSelection?: (e: React.MouseEvent<SVGSVGElement>) => void;
29
+ }
30
+
31
+ export const AnimSvgPath = (props: AnimSvgPathProps) => {
32
+ const {
33
+ width,
34
+ height,
35
+ paths,
36
+ scale,
37
+ selection,
38
+ noBezier,
39
+ onPointMouseDown,
40
+ onBezierPointMouseDown,
41
+ onCancelSelection,
42
+ } = props;
43
+ const onClickStopPropagation = (e: React.MouseEvent) => {
44
+ e.preventDefault();
45
+ e.stopPropagation();
46
+ };
47
+
48
+ const bezierSelect =
49
+ selection[0] && typeof selection[0].bezierKey !== 'undefined';
50
+ const pathsStringArray = getPointsToPaths(paths);
51
+
52
+ const allPoints = paths.map((item, i) => (
53
+ <circle
54
+ className={clsx('gedit-anim-path-edit-layer-point', {
55
+ 'gedit-anim-path-edit-layer-point-active':
56
+ selection.some(c => c.pointId === item.id) && !bezierSelect,
57
+ })}
58
+ cx={item.x}
59
+ cy={item.y}
60
+ r={4 / scale}
61
+ key={item.id}
62
+ strokeWidth="1"
63
+ onMouseMove={onClickStopPropagation}
64
+ onClick={onClickStopPropagation}
65
+ onMouseDown={e => {
66
+ onClickStopPropagation(e);
67
+
68
+ onPointMouseDown?.(e, item, paths);
69
+ }}
70
+ />
71
+ ));
72
+ // 贝塞尔点
73
+ const bezierPointNodes: JSX.Element[] = [];
74
+ const bezierPathNodes: JSX.Element[] = [];
75
+
76
+ paths.forEach((p, i) => {
77
+ if (p.type === PATH_FUNC_TYPE.STRAIGHT) {
78
+ return;
79
+ }
80
+ const selectionNode = selection.find(c => c.pointId === p.id);
81
+ const { bezierKey, pointId: currentPointId } = selectionNode || {};
82
+ if ('x1' in p && 'y1' in p) {
83
+ bezierPathNodes.push(
84
+ <path
85
+ key={`${p.id}_${i}_x1-line`}
86
+ className="gedit-anim-path-edit-layer-point-bezier-line"
87
+ strokeWidth={0.5 / scale}
88
+ d={`M${p.x},${p.y} L${p.x1},${p.y1}`}
89
+ />
90
+ );
91
+ bezierPointNodes.push(
92
+ <circle
93
+ key={`${p.id}_${i}_x1_point`}
94
+ className={clsx('gedit-anim-path-edit-layer-point-bezier', {
95
+ 'gedit-anim-path-edit-layer-point-active':
96
+ bezierKey === 'left' && currentPointId === p.id,
97
+ })}
98
+ cx={p.x1}
99
+ cy={p.y1}
100
+ r={3 / scale}
101
+ onMouseMove={onClickStopPropagation}
102
+ onClick={onClickStopPropagation}
103
+ onMouseDown={e => {
104
+ onClickStopPropagation(e);
105
+ onBezierPointMouseDown?.(e, p, 'left', paths);
106
+ }}
107
+ />
108
+ );
109
+ }
110
+ if ('x2' in p && 'y2' in p) {
111
+ bezierPathNodes.push(
112
+ <path
113
+ key={`${p.id}_${i}_x2-line`}
114
+ className="gedit-anim-path-edit-layer-point-bezier-line"
115
+ strokeWidth={1 / scale}
116
+ d={`M${p.x},${p.y} L${p.x2},${p.y2}`}
117
+ />
118
+ );
119
+ bezierPointNodes.push(
120
+ <circle
121
+ key={`${p.id}_${i}x2_point`}
122
+ className={clsx('gedit-anim-path-edit-layer-point-bezier', {
123
+ 'gedit-anim-path-edit-layer-point-active':
124
+ bezierKey === 'right' && currentPointId === p.id,
125
+ })}
126
+ cx={p.x2}
127
+ cy={p.y2}
128
+ r={3 / scale}
129
+ onMouseMove={onClickStopPropagation}
130
+ onClick={onClickStopPropagation}
131
+ onMouseDown={e => {
132
+ onClickStopPropagation(e);
133
+ onBezierPointMouseDown?.(e, p, 'right', paths);
134
+ }}
135
+ />
136
+ );
137
+ }
138
+ });
139
+
140
+ return (
141
+ <svg
142
+ width={width}
143
+ height={height}
144
+ className="gedit-anim-path-edit-layer-svg"
145
+ onMouseDown={e => {
146
+ if (selection.length) {
147
+ onClickStopPropagation(e);
148
+ }
149
+ }}
150
+ onClick={e => {
151
+ onCancelSelection?.(e);
152
+ }}
153
+ >
154
+ {pathsStringArray.map((p, i) => (
155
+ <path
156
+ className={clsx('gedit-anim-path-edit-layer-path')}
157
+ key={i.toString()}
158
+ strokeLinecap="round"
159
+ strokeWidth={1 / scale}
160
+ d={p}
161
+ />
162
+ ))}
163
+ {!noBezier && bezierPathNodes}
164
+ {allPoints}
165
+ {!noBezier && bezierPointNodes}
166
+ </svg>
167
+ );
168
+ };
@@ -5,7 +5,7 @@ import { PathEditLayerEventContext } from '../path-edit-layer';
5
5
  import clsx from 'clsx';
6
6
 
7
7
  export interface PointSchema extends PositionSchema {
8
- id?: string;
8
+ id?: string | number;
9
9
  }
10
10
 
11
11
  export interface PointDefaultProps {
@@ -11,20 +11,16 @@ import {
11
11
  import { PathEditLayerEventContext } from '../path-edit-layer';
12
12
  import clsx from 'clsx';
13
13
  import { generateUuid } from '@gedit/utils';
14
- import { PathSelectMode } from '@gedit/playground';
14
+ import { PathSelectMode, PathPointSelection } from '@gedit/playground';
15
15
  import { Editor2dPathNode } from '../../model';
16
16
 
17
- export interface PointSelection {
18
- pointId?: string;
19
- bezierKey?: string;
20
- }
21
17
  export interface PathSVGProps {
22
18
  width: number;
23
19
  height: number;
24
20
  paths: PathChild[];
25
21
  node?: Editor2dPathNode;
26
22
  scale: number;
27
- selection?: PointSelection[];
23
+ selection?: PathPointSelection[];
28
24
  selectMode?: PathSelectMode;
29
25
  getPosFromMouseEvent: PointDefaultProps['getPosFromMouseEvent'];
30
26
  getPointIsStartOrEnd: () => boolean;
@@ -267,7 +263,7 @@ export const SvgPath = ({
267
263
  paths={paths}
268
264
  scale={scale}
269
265
  closePath={closePath}
270
- currentPointId={selection[0]?.pointId}
266
+ currentPointId={selection[0]?.pointId as string}
271
267
  />
272
268
  )}
273
269
  {pathsStringArray.map((p, i) => (
@@ -22,7 +22,7 @@ import {
22
22
  } from '@gedit/utils';
23
23
  import { PointSchema } from './path-edit-layer-move-point';
24
24
  import { Editor2dPathNode } from '../../model';
25
- import { cloneDeep } from 'lodash';
25
+ const cloneDeep = require('lodash.clonedeep');
26
26
 
27
27
  export const transformRotation = (p1: Point, p2: Point, rotation: number) => {
28
28
  if (!rotation) {
@@ -29,7 +29,6 @@ import {
29
29
  SvgPath,
30
30
  getNewPoint,
31
31
  setBezierMovePoint,
32
- PointSelection,
33
32
  updatePathNodeData,
34
33
  inverseTransformToData,
35
34
  transformToData,
@@ -392,7 +391,9 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
392
391
  this.editorState.is(EditorState.EDIT_PATH_STATE.id) &&
393
392
  this.pathPointSelection.selectMode === PathSelectMode.SELECT_BEZIER;
394
393
  if (isExit) {
395
- const playgroundLayer = this.pipelineLayers.find(c => c.id === 'playgroundLayer') as PlaygroundLayer;
394
+ const playgroundLayer = this.pipelineLayers.find(
395
+ c => c.id === 'playgroundLayer'
396
+ ) as PlaygroundLayer;
396
397
  playgroundLayer?.keydownEvent?.({ key: 'Escape' } as KeyboardEvent);
397
398
  }
398
399
  }),
@@ -621,7 +622,6 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
621
622
  }
622
623
  }
623
624
  }
624
- this.config.finalScale;
625
625
  const startNodeClone = deepClone(node.path.paths);
626
626
 
627
627
  this.startDrag(e.clientX, e.clientY, {
@@ -800,7 +800,7 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
800
800
  getPosFromMouseEvent={this.getPosFromMouseEvent.bind(this)}
801
801
  node={this.currentPathNode}
802
802
  paths={paths}
803
- selection={this.pathPointSelection?.selection as PointSelection[]}
803
+ selection={this.pathPointSelection?.selection as PathPointSelection[]}
804
804
  selectMode={this.pathPointSelection?.selectMode}
805
805
  getPointIsStartOrEnd={this.getPointIsStartOrEnd.bind(this)}
806
806
  scale={this.config.finalScale}
@@ -1,6 +1,5 @@
1
1
  import { inject, injectable } from 'inversify';
2
2
  import { RenderEngineIDEService } from '@gedit/render-engine-ide';
3
- import type { DisplayAssetMetaData } from '@gedit/render-engine-ide';
4
3
  import { SelectableTreeNode, TreeSelection } from '@gedit/tree';
5
4
  import { AppConfigService } from '@gedit/app-config';
6
5
  import { debounce, Emitter, URI } from '@gedit/utils';
@@ -9,6 +8,7 @@ import type { SelectionEntityManager } from './selection-entity-manager';
9
8
  import { PathPointSelectionEntity, PathSelectMode, Playground } from '@gedit/playground';
10
9
  import { Editor2dDocument } from '../model/editor2d-document';
11
10
  import { Editor2dSelection } from '../model/editor2d-selection';
11
+ import { Editor2dAnimPathSelectionService } from '../editor2d-anim-path-selection-service';
12
12
  import { Editor2dModelOptions, Editor2dNode } from '../model/editor2d';
13
13
  import { SelectionService } from '@gedit/application-common';
14
14
  import { Editor2dContextKeyService } from '../editor2d-context-key-service';
@@ -18,7 +18,6 @@ import { FormService } from '@gedit/ui';
18
18
  import { OpenerService } from '@gedit/application-common/lib/browser';
19
19
  import { WorkspaceService } from '@gedit/workspace-2d';
20
20
  import { HistoryService } from '@gedit/history';
21
- import { AssetsMetaCache } from '@gedit/assets-2d/lib/browser/assets-meta-cache';
22
21
 
23
22
  export const Editor2dPlayGround = Symbol('Editor2dPlayGround');
24
23
 
@@ -36,6 +35,7 @@ export class PlaygroundContext2d {
36
35
  @inject(RenderEngineIDEService) readonly renderEngine: RenderEngineIDEService,
37
36
  @inject(Editor2dDocument) readonly document: Editor2dDocument,
38
37
  @inject(Editor2dSelection) readonly selection: Editor2dSelection,
38
+ @inject(Editor2dAnimPathSelectionService) readonly animPathSelection: Editor2dAnimPathSelectionService,
39
39
  @inject(SelectionService) readonly selectionService: SelectionService,
40
40
  @inject(AppConfigService) readonly appConfig: AppConfigService,
41
41
  @inject(Editor2dModelOptions) readonly options: Editor2dModelOptions,
@@ -45,16 +45,12 @@ export class PlaygroundContext2d {
45
45
  @inject(WorkspaceService)
46
46
  protected readonly workspaceService: WorkspaceService,
47
47
  @inject(HistoryService) readonly historyService: HistoryService,
48
- @inject(AssetsMetaCache) readonly assetsMetaCache: AssetsMetaCache
49
48
  ) {
50
49
  this.rootURI = new URI(this.workspaceService.currentRoot!.uri);
51
50
  this.document.toDispose.push(this.onCanvasDataChangedEmitter);
52
51
  if (options.onCanvasDataChanged) {
53
52
  this.onCanvasDataChanged(drawer => options.onCanvasDataChanged!(drawer));
54
53
  }
55
- this.document.toDispose.push(this.assetsMetaCache.onAssetsChanged((e: DisplayAssetMetaData[]) => {
56
- this.document.reloadAssets(e);
57
- }));
58
54
  }
59
55
  /**
60
56
  * 刷新 tree selection
@@ -12,6 +12,7 @@ import {
12
12
  } from '@gedit/playground';
13
13
  import { CanvasLayer } from './canvas-layer';
14
14
  import { PathEditLayer } from './path-edit-layer';
15
+ import { AnimPathEditLayer } from './anim-path-edit-layer';
15
16
  // import { SelectionLayer } from './selection-layer';
16
17
  import { AppConfigData, AppConfigService } from '@gedit/app-config';
17
18
  import { HistoryService } from '@gedit/history';
@@ -36,6 +37,7 @@ export class PlaygroundContribution2d implements PlaygroundContribution {
36
37
  registry.registerLayer(CanvasLayer);
37
38
  registry.registerLayer(PathEditLayer);
38
39
  registry.registerLayer(ExtendEditLayer);
40
+ registry.registerLayer(AnimPathEditLayer);
39
41
  // registry.registerLayer(SelectionLayer);
40
42
  }
41
43
  onDispose(playground: Playground): void {
@@ -9,6 +9,7 @@ import {
9
9
  PlaygroundConfigEntity,
10
10
  SelectorConfigEntity,
11
11
  SelectorEntityRendererProps,
12
+ TransformSchema,
12
13
  } from '@gedit/playground';
13
14
  import type { PlaygroundContext2d } from './playground-context';
14
15
  import { Rectangle } from '@gedit/math';
@@ -193,15 +194,14 @@ export class SelectionEntityManager {
193
194
  }
194
195
  }
195
196
  }
196
- // 数据相同不更新
197
- const currentTransform: any = {};
198
- Object.keys(newTransform).forEach(key => {
199
- currentTransform[key] = node[key];
197
+ let oldTransform: TransformSchema = {} as TransformSchema;
198
+ Object.keys(entity.transform.data).forEach((key: keyof typeof entity.transform.data) => {
199
+ oldTransform[key] = node[key]! as any;
200
200
  });
201
- if (JSON.stringify(newTransform) === JSON.stringify(currentTransform)) {
202
- return;
201
+ oldTransform = numberToFixed4(oldTransform);
202
+ if (JSON.stringify(oldTransform) !== JSON.stringify(newTransform)) {
203
+ document.updateNode(node, newTransform, true);
203
204
  }
204
- document.updateNode(node, newTransform, true);
205
205
  });
206
206
 
207
207
  // ableManager是全局的,所以每个节点销毁后得注销时间
@@ -1,15 +1,15 @@
1
- .gedit-path-edit-layer {
1
+ .gedit-path-edit-layer, .gedit-anim-path-edit-layer {
2
2
  position: absolute;
3
3
  left: 0;
4
4
  top: 0;
5
5
  overflow: visible;
6
- z-index: 20;
6
+ z-index: 51;
7
7
  &-point {
8
8
  stroke: #ccc;
9
9
  fill: #fff;
10
10
  cursor: pointer;
11
11
  z-index: 50;
12
- transition: stroke 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
12
+ transition: stroke 0.2s ease-in-out, fill 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
13
13
  &-move {
14
14
  z-index: 0;
15
15
  }
@@ -29,8 +29,8 @@
29
29
  }
30
30
  }
31
31
  &-point-active {
32
- stroke: #aaa;
33
- stroke-width: 2px;
32
+ stroke: #fff;
33
+ fill: var(--g-playground-select)
34
34
  }
35
35
  &-pen {
36
36
  cursor: url(../svg/pen_add.svg), copy;
@@ -57,3 +57,11 @@
57
57
  }
58
58
  }
59
59
  }
60
+
61
+ .gedit-anim-path-edit-layer {
62
+ &-path {
63
+ &:hover {
64
+ stroke: #fff000;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileoverview
3
+ * 贝塞尔曲线工具类
4
+ * 提供给 timeline 的 pathMotion 动画和 PIXI、DOM 的 path 操作使用
5
+ * 暂时先放这里;
6
+ */
7
+ import {
8
+ asVec,
9
+ getLineWidth,
10
+ PathChild,
11
+ } from '@gedit/canvas-draw';
12
+ import { PathPointSelection } from '@gedit/playground';
13
+ import type { PointSchema } from '../playground';
14
+
15
+ export type PointKey = 'x' | 'y' | 'x1' | 'y1' | 'x2' | 'y2';
16
+
17
+ export const getPathPoint = (
18
+ paths: PathChild[],
19
+ selection?: PathPointSelection
20
+ ): PathChild => {
21
+ // const editorState = context.model.playground.entityManager.getEntity<EditorStateConfigEntity>(EditorStateConfigEntity);
22
+ // const isPath = editorState?.is('ADD_PATH');\
23
+ let point = paths[paths.length - 1];
24
+ if (selection && selection.pointId) {
25
+ point = paths.find((c: any) => c.id === selection.pointId) || point;
26
+ }
27
+ return point;
28
+ };
29
+
30
+ const getBezierKey = (selection?: PathPointSelection, reverse?: boolean) => {
31
+ const k = selection && selection.bezierKey === 'right' ? '2' : '1';
32
+ if (reverse) {
33
+ return k === '1' ? '2' : '1';
34
+ }
35
+ return k;
36
+ };
37
+
38
+ const getPointKey = (type: 'x' | 'y', selection?: PathPointSelection) =>
39
+ (selection && selection.bezierKey
40
+ ? `${type}${getBezierKey(selection)}`
41
+ : type) as PointKey; // keyof PathChild;
42
+
43
+ export const getPointPositionKey = (
44
+ type: 'x' | 'y',
45
+ point: PathChild,
46
+ selection?: PathPointSelection
47
+ ) => {
48
+ const key = getPointKey(type, selection);
49
+ const v = point[key];
50
+ return v;
51
+ };
52
+
53
+ // 求线外一点到平行线上的一点的一半距离
54
+ export const getParallelPositionByPoint = (
55
+ p1: PointSchema,
56
+ p2: PointSchema,
57
+ p3: PointSchema
58
+ ) => {
59
+ if (p1 === p2) {
60
+ p2 = { x: p1.x + 1, y: p1.y + 1 };
61
+ }
62
+ const v = asVec(p1, p2);
63
+ const left = getLineWidth(p1, p3) / 3;
64
+ const right = getLineWidth(p2, p3) / 3;
65
+ const r = Math.max(left, right);
66
+ const leftPoint = {
67
+ x: p3.x - r * Math.cos(v.ang),
68
+ y: p3.y - r * Math.sin(v.ang),
69
+ };
70
+ const rightPoint = {
71
+ x: p3.x + r * Math.cos(v.ang),
72
+ y: p3.y + r * Math.sin(v.ang),
73
+ };
74
+ /**
75
+ * 计算点的位置;
76
+ * 1. 左点 X 大于中心点,右点 X 小于中心点;默认
77
+ * 2. 右点 X 大于中心点,左点 X 小于中心点;反转
78
+ * 3. 左右点 X 都小于中心点,左点 Y 大于右点 Y,默认
79
+ * 4. 左右点 X 都小于中心点,左点 Y 小于右点 Y,反转
80
+ * 5. 左右点 X 都大于中心点,左点 Y 大于右点 Y,反转
81
+ * 6. 左右点 X 都大于中心点,左点 Y 小于右点 Y, 默认
82
+ */
83
+ /* const isReverse =
84
+ (p1.x > p3.x && p2.x < p3.x) ||
85
+ (p1.x < p3.x && p2.x < p3.x && p1.y < p2.y) ||
86
+ (p1.x > p3.x && p2.x > p3.x && p1.y > p2.y); */
87
+
88
+ return { p1: leftPoint, p2: rightPoint /* isReverse */ };
89
+ };
@@ -1 +0,0 @@
1
- {"version":3,"file":"extend-edit-layer-point-event.d.ts","sourceRoot":"","sources":["../../../src/browser/playground/extend-edit-layer-point-event.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACrC;gCAEsB,KAAK;AAA5B,wBAiDE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extend-edit-layer-point-event.js","sourceRoot":"","sources":["../../../src/browser/playground/extend-edit-layer-point-event.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAqB/B,kBAAe,CAAC,KAAY,EAAE,EAAE;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,CAAa,EAAE,EAAE;;QAClC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,MAAA,KAAK,CAAC,SAAS,sDAAG,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;;QACpC,IAAI,UAAU,CAAC,OAAO,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpB,MAAA,KAAK,CAAC,QAAQ,sDAAG;gBACf,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;gBACjB,IAAI,EAAE,SAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,UAAU,CAAC,OAAO;aAC1B,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,GAAG;gBAClB,CAAC,EAAE,CAAC,CAAC,OAAO;gBACZ,CAAC,EAAE,CAAC,CAAC,OAAO;aACb,CAAC;SACH;IACH,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;;QAC1C,UAAU,CAAC,OAAO,GAAG;YACnB,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;SACb,CAAC;QACF,SAAS,CAAC,OAAO,GAAG;YAClB,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;SACb,CAAC;QACF,MAAA,KAAK,CAAC,WAAW,sDAAG,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,OAAO,CACL,6BAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QACjD,6BACE,SAAS,EAAE,KAAK,CAAC,cAAc,EAC/B,KAAK,EAAE,KAAK,CAAC,UAAU,EACvB,WAAW,EAAE,WAAW,GACxB,CACE,CACP,CAAC;AACJ,CAAC,CAAC"}