@finos/legend-application-studio 13.0.2 → 13.1.1
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/components/LegendStudioApplication.js +1 -1
- package/lib/components/LegendStudioApplication.js.map +1 -1
- package/lib/components/editor/command/project-search.css +1 -1
- package/lib/components/editor/command/project-search.css.map +1 -1
- package/lib/components/editor/command-center/ProjectSearchCommand.d.ts.map +1 -1
- package/lib/components/editor/command-center/ProjectSearchCommand.js +11 -3
- package/lib/components/editor/command-center/ProjectSearchCommand.js.map +1 -1
- package/lib/components/editor/edit-panel/FunctionEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/FunctionEditor.js +41 -34
- package/lib/components/editor/edit-panel/FunctionEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/GenerationSpecificationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/GenerationSpecificationEditor.js +35 -54
- package/lib/components/editor/edit-panel/GenerationSpecificationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/GrammarTextEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/GrammarTextEditor.js +2 -2
- package/lib/components/editor/edit-panel/GrammarTextEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/RuntimeEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/RuntimeEditor.js +11 -20
- package/lib/components/editor/edit-panel/RuntimeEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/data-editor/DataElementEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js +4 -8
- package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js +1 -1
- package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js +3 -7
- package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/external-format-editor/BindingElementEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/external-format-editor/BindingElementEditor.js +2 -2
- package/lib/components/editor/edit-panel/external-format-editor/BindingElementEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/external-format-editor/SchemaSetElementEditor.js +1 -1
- package/lib/components/editor/edit-panel/external-format-editor/SchemaSetElementEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.js +2 -9
- package/lib/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js +3 -4
- package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js +3 -10
- package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js +4 -10
- package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingExplorer.js +7 -9
- package/lib/components/editor/edit-panel/mapping-editor/MappingExplorer.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js +3 -6
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.js +7 -8
- package/lib/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js +2 -2
- package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.js +5 -7
- package/lib/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js +3 -4
- package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js +1 -1
- package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js +3 -5
- package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js +1 -1
- package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js +4 -8
- package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/ClassEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js +157 -57
- package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js +39 -21
- package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/ProfileEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/ProfileEditor.js +62 -9
- package/lib/components/editor/edit-panel/uml-editor/ProfileEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/PropertyEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/PropertyEditor.js +4 -8
- package/lib/components/editor/edit-panel/uml-editor/PropertyEditor.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/StereotypeSelector.d.ts +7 -1
- package/lib/components/editor/edit-panel/uml-editor/StereotypeSelector.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/StereotypeSelector.js +33 -5
- package/lib/components/editor/edit-panel/uml-editor/StereotypeSelector.js.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/TaggedValueEditor.d.ts +7 -1
- package/lib/components/editor/edit-panel/uml-editor/TaggedValueEditor.d.ts.map +1 -1
- package/lib/components/editor/edit-panel/uml-editor/TaggedValueEditor.js +35 -7
- package/lib/components/editor/edit-panel/uml-editor/TaggedValueEditor.js.map +1 -1
- package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
- package/lib/components/editor/side-bar/CreateNewElementModal.js +4 -4
- package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
- package/lib/components/editor/side-bar/Explorer.d.ts.map +1 -1
- package/lib/components/editor/side-bar/Explorer.js +8 -15
- package/lib/components/editor/side-bar/Explorer.js.map +1 -1
- package/lib/components/shared/StudioLambdaEditor.d.ts +1 -0
- package/lib/components/shared/StudioLambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/StudioLambdaEditor.js +2 -2
- package/lib/components/shared/StudioLambdaEditor.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +5 -5
- package/lib/stores/EditorStore.d.ts.map +1 -1
- package/lib/stores/EditorStore.js +7 -7
- package/lib/stores/EditorStore.js.map +1 -1
- package/lib/stores/LegendStudioBaseStore.d.ts +3 -8
- package/lib/stores/LegendStudioBaseStore.d.ts.map +1 -1
- package/lib/stores/LegendStudioBaseStore.js +9 -105
- package/lib/stores/LegendStudioBaseStore.js.map +1 -1
- package/lib/stores/editor/NewElementState.d.ts.map +1 -1
- package/lib/stores/editor/NewElementState.js +8 -2
- package/lib/stores/editor/NewElementState.js.map +1 -1
- package/lib/stores/editor-state/GenerationSpecificationEditorState.d.ts +0 -2
- package/lib/stores/editor-state/GenerationSpecificationEditorState.d.ts.map +1 -1
- package/lib/stores/editor-state/GenerationSpecificationEditorState.js +1 -8
- package/lib/stores/editor-state/GenerationSpecificationEditorState.js.map +1 -1
- package/lib/stores/editor-state/element-editor-state/ElementEditorState.d.ts.map +1 -1
- package/lib/stores/editor-state/element-editor-state/ElementEditorState.js +2 -4
- package/lib/stores/editor-state/element-editor-state/ElementEditorState.js.map +1 -1
- package/lib/stores/editor-state/element-editor-state/mapping/MappingEditorState.js +1 -1
- package/lib/stores/editor-state/element-editor-state/mapping/MappingEditorState.js.map +1 -1
- package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js +1 -1
- package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js.map +1 -1
- package/lib/stores/graphModifier/DomainGraphModifierHelper.d.ts +10 -0
- package/lib/stores/graphModifier/DomainGraphModifierHelper.d.ts.map +1 -1
- package/lib/stores/graphModifier/DomainGraphModifierHelper.js +31 -1
- package/lib/stores/graphModifier/DomainGraphModifierHelper.js.map +1 -1
- package/lib/stores/shared/DnDUtil.d.ts +1 -2
- package/lib/stores/shared/DnDUtil.d.ts.map +1 -1
- package/lib/stores/shared/DnDUtil.js +0 -2
- package/lib/stores/shared/DnDUtil.js.map +1 -1
- package/package.json +13 -13
- package/src/components/LegendStudioApplication.tsx +2 -2
- package/src/components/editor/command-center/ProjectSearchCommand.tsx +13 -2
- package/src/components/editor/edit-panel/FunctionEditor.tsx +220 -152
- package/src/components/editor/edit-panel/GenerationSpecificationEditor.tsx +154 -184
- package/src/components/editor/edit-panel/GrammarTextEditor.tsx +4 -5
- package/src/components/editor/edit-panel/RuntimeEditor.tsx +89 -90
- package/src/components/editor/edit-panel/data-editor/DataElementEditor.tsx +57 -40
- package/src/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.tsx +1 -1
- package/src/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.tsx +50 -45
- package/src/components/editor/edit-panel/external-format-editor/BindingElementEditor.tsx +36 -32
- package/src/components/editor/edit-panel/external-format-editor/SchemaSetElementEditor.tsx +1 -1
- package/src/components/editor/edit-panel/mapping-editor/EnumerationMappingEditor.tsx +46 -41
- package/src/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.tsx +9 -7
- package/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.tsx +18 -21
- package/src/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.tsx +39 -29
- package/src/components/editor/edit-panel/mapping-editor/MappingExplorer.tsx +39 -39
- package/src/components/editor/edit-panel/mapping-editor/MappingTestEditor.tsx +23 -15
- package/src/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.tsx +40 -38
- package/src/components/editor/edit-panel/mapping-editor/NewMappingElementModal.tsx +2 -2
- package/src/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.tsx +48 -45
- package/src/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.tsx +12 -8
- package/src/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.tsx +2 -3
- package/src/components/editor/edit-panel/service-editor/ServiceExecutionEditor.tsx +75 -72
- package/src/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.tsx +1 -1
- package/src/components/editor/edit-panel/uml-editor/AssociationEditor.tsx +55 -38
- package/src/components/editor/edit-panel/uml-editor/ClassEditor.tsx +813 -499
- package/src/components/editor/edit-panel/uml-editor/EnumerationEditor.tsx +209 -113
- package/src/components/editor/edit-panel/uml-editor/ProfileEditor.tsx +184 -52
- package/src/components/editor/edit-panel/uml-editor/PropertyEditor.tsx +62 -39
- package/src/components/editor/edit-panel/uml-editor/StereotypeSelector.tsx +137 -52
- package/src/components/editor/edit-panel/uml-editor/TaggedValueEditor.tsx +171 -88
- package/src/components/editor/side-bar/CreateNewElementModal.tsx +4 -2
- package/src/components/editor/side-bar/Explorer.tsx +13 -20
- package/src/components/shared/StudioLambdaEditor.tsx +3 -0
- package/src/stores/EditorStore.ts +7 -6
- package/src/stores/LegendStudioBaseStore.ts +20 -147
- package/src/stores/editor/NewElementState.ts +8 -2
- package/src/stores/editor-state/GenerationSpecificationEditorState.ts +1 -15
- package/src/stores/editor-state/element-editor-state/ElementEditorState.ts +2 -3
- package/src/stores/editor-state/element-editor-state/mapping/MappingEditorState.ts +1 -1
- package/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts +1 -1
- package/src/stores/graphModifier/DomainGraphModifierHelper.ts +92 -0
- package/src/stores/shared/DnDUtil.ts +0 -2
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { useRef,
|
|
17
|
+
import { useRef, useCallback } from 'react';
|
|
18
18
|
import { observer } from 'mobx-react-lite';
|
|
19
19
|
import {
|
|
20
20
|
GenerationSpecificationEditorState,
|
|
@@ -22,14 +22,7 @@ import {
|
|
|
22
22
|
type GenerationSpecNodeDropTarget,
|
|
23
23
|
type GenerationTreeNodeState,
|
|
24
24
|
} from '../../../stores/editor-state/GenerationSpecificationEditorState.js';
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
type DropTargetMonitor,
|
|
28
|
-
type XYCoord,
|
|
29
|
-
useDragLayer,
|
|
30
|
-
useDrag,
|
|
31
|
-
useDrop,
|
|
32
|
-
} from 'react-dnd';
|
|
25
|
+
import { type DropTargetMonitor, useDrag, useDrop } from 'react-dnd';
|
|
33
26
|
import { getElementIcon } from '../../shared/ElementIconUtils.js';
|
|
34
27
|
import {
|
|
35
28
|
clsx,
|
|
@@ -45,6 +38,10 @@ import {
|
|
|
45
38
|
TimesIcon,
|
|
46
39
|
PlusIcon,
|
|
47
40
|
LongArrowRightIcon,
|
|
41
|
+
PanelDropZone,
|
|
42
|
+
DragPreviewLayer,
|
|
43
|
+
useDragPreviewLayer,
|
|
44
|
+
PanelEntryDropZonePlaceholder,
|
|
48
45
|
} from '@finos/legend-art';
|
|
49
46
|
import {
|
|
50
47
|
CORE_DND_TYPE,
|
|
@@ -75,48 +72,16 @@ import {
|
|
|
75
72
|
generationSpecification_setId,
|
|
76
73
|
} from '../../../stores/graphModifier/DSLGeneration_GraphModifierHelper.js';
|
|
77
74
|
|
|
78
|
-
const
|
|
79
|
-
const { itemType, item, isDragging, currentPosition } = useDragLayer(
|
|
80
|
-
(monitor) => ({
|
|
81
|
-
itemType: monitor.getItemType(),
|
|
82
|
-
item: monitor.getItem<GenerationSpecNodeDragSource | null>(),
|
|
83
|
-
isDragging: monitor.isDragging(),
|
|
84
|
-
initialOffset: monitor.getInitialSourceClientOffset(),
|
|
85
|
-
currentPosition: monitor.getClientOffset(),
|
|
86
|
-
}),
|
|
87
|
-
);
|
|
88
|
-
if (!isDragging || !item || itemType !== CORE_DND_TYPE.GENERATION_SPEC_NODE) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
return (
|
|
92
|
-
<div className="generation-spec-model-generation-editor__item__drag-preview-layer">
|
|
93
|
-
<div
|
|
94
|
-
className="generation-spec-model-generation-editor__item__drag-preview"
|
|
95
|
-
style={
|
|
96
|
-
!currentPosition
|
|
97
|
-
? { display: 'none' }
|
|
98
|
-
: {
|
|
99
|
-
transform: `translate(${currentPosition.x + 20}px, ${
|
|
100
|
-
currentPosition.y + 10
|
|
101
|
-
}px)`,
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
>
|
|
105
|
-
{item.nodeState.node.generationElement.value.name}
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
);
|
|
109
|
-
};
|
|
75
|
+
const GENERATION_SPEC_NODE_DND_TYPE = 'GENERATION_SPEC_NODE';
|
|
110
76
|
|
|
111
77
|
const ModelGenerationItem = observer(
|
|
112
78
|
(props: {
|
|
113
79
|
specState: GenerationSpecificationEditorState;
|
|
114
80
|
nodeState: GenerationTreeNodeState;
|
|
115
81
|
options: PackageableElementOption<PackageableElement>[];
|
|
116
|
-
isRearrangingNodes: boolean;
|
|
117
82
|
}) => {
|
|
118
83
|
const ref = useRef<HTMLDivElement>(null);
|
|
119
|
-
const { nodeState, specState, options
|
|
84
|
+
const { nodeState, specState, options } = props;
|
|
120
85
|
const generationTreeNode = nodeState.node;
|
|
121
86
|
const editorStore = useEditorStore();
|
|
122
87
|
const modelGenerationRef = generationTreeNode.generationElement;
|
|
@@ -164,8 +129,7 @@ const ModelGenerationItem = observer(
|
|
|
164
129
|
((hoverBoundingReact?.bottom ?? 0) - (hoverBoundingReact?.top ?? 0)) /
|
|
165
130
|
2;
|
|
166
131
|
const dragDistance =
|
|
167
|
-
(monitor.getClientOffset()
|
|
168
|
-
(hoverBoundingReact?.top ?? 0);
|
|
132
|
+
(monitor.getClientOffset()?.y ?? 0) - (hoverBoundingReact?.top ?? 0);
|
|
169
133
|
if (dragIndex < hoverIndex && dragDistance < distanceThreshold) {
|
|
170
134
|
return;
|
|
171
135
|
}
|
|
@@ -176,89 +140,84 @@ const ModelGenerationItem = observer(
|
|
|
176
140
|
},
|
|
177
141
|
[nodeState, specState],
|
|
178
142
|
);
|
|
179
|
-
const [, dropConnector] = useDrop
|
|
143
|
+
const [{ nodeBeingDragged }, dropConnector] = useDrop<
|
|
144
|
+
GenerationSpecNodeDragSource,
|
|
145
|
+
void,
|
|
146
|
+
{ nodeBeingDragged: GenerationTreeNode | undefined }
|
|
147
|
+
>(
|
|
180
148
|
() => ({
|
|
181
|
-
accept: [
|
|
182
|
-
hover: (
|
|
183
|
-
|
|
184
|
-
monitor
|
|
185
|
-
):
|
|
149
|
+
accept: [GENERATION_SPEC_NODE_DND_TYPE],
|
|
150
|
+
hover: (item, monitor): void => handleHover(item, monitor),
|
|
151
|
+
collect: (
|
|
152
|
+
monitor,
|
|
153
|
+
): { nodeBeingDragged: GenerationTreeNode | undefined } => ({
|
|
154
|
+
/**
|
|
155
|
+
* @workaround typings - https://github.com/react-dnd/react-dnd/pull/3484
|
|
156
|
+
*/
|
|
157
|
+
nodeBeingDragged:
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
159
|
+
(monitor.getItem() as GenerationSpecNodeDragSource | null)
|
|
160
|
+
?.nodeState.node,
|
|
161
|
+
}),
|
|
186
162
|
}),
|
|
187
163
|
[handleHover],
|
|
188
164
|
);
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
},
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}),
|
|
199
|
-
[nodeState],
|
|
200
|
-
);
|
|
165
|
+
const isBeingDragged = nodeState.node === nodeBeingDragged;
|
|
166
|
+
const [, dragConnector, dragPreviewConnector] =
|
|
167
|
+
useDrag<GenerationSpecNodeDragSource>(
|
|
168
|
+
() => ({
|
|
169
|
+
type: GENERATION_SPEC_NODE_DND_TYPE,
|
|
170
|
+
item: () => ({ nodeState }),
|
|
171
|
+
}),
|
|
172
|
+
[nodeState],
|
|
173
|
+
);
|
|
201
174
|
dragConnector(dropConnector(ref));
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}, [dragPreviewConnector]);
|
|
175
|
+
|
|
176
|
+
useDragPreviewLayer(dragPreviewConnector);
|
|
177
|
+
|
|
206
178
|
return (
|
|
207
|
-
<div
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
>
|
|
250
|
-
<LongArrowRightIcon />
|
|
251
|
-
</button>
|
|
252
|
-
<button
|
|
253
|
-
className="generation-spec-model-generation-editor__item__remove-btn"
|
|
254
|
-
onClick={deleteNode}
|
|
255
|
-
tabIndex={-1}
|
|
256
|
-
title={'Remove'}
|
|
257
|
-
>
|
|
258
|
-
<TimesIcon />
|
|
259
|
-
</button>
|
|
260
|
-
</>
|
|
261
|
-
)}
|
|
179
|
+
<div ref={ref} className="generation-spec-model-generation-editor__item">
|
|
180
|
+
<PanelEntryDropZonePlaceholder showPlaceholder={isBeingDragged}>
|
|
181
|
+
<div className="btn--sm generation-spec-model-generation-editor__item__label">
|
|
182
|
+
{getElementIcon(editorStore, modelGeneration)}
|
|
183
|
+
</div>
|
|
184
|
+
<input
|
|
185
|
+
className={clsx(
|
|
186
|
+
'generation-spec-model-generation-editor__item__id',
|
|
187
|
+
{
|
|
188
|
+
'generation-spec-model-generation-editor__item__id--has-error':
|
|
189
|
+
!isUnique,
|
|
190
|
+
},
|
|
191
|
+
)}
|
|
192
|
+
spellCheck={false}
|
|
193
|
+
value={isDefault ? 'DEFAULT' : generationTreeNode.id}
|
|
194
|
+
onChange={changeNodeId}
|
|
195
|
+
disabled={isDefault}
|
|
196
|
+
/>
|
|
197
|
+
<CustomSelectorInput
|
|
198
|
+
className="generation-spec-model-generation-editor__item__dropdown"
|
|
199
|
+
options={options}
|
|
200
|
+
onChange={onChange}
|
|
201
|
+
value={value}
|
|
202
|
+
darkMode={true}
|
|
203
|
+
/>
|
|
204
|
+
<button
|
|
205
|
+
className="btn--dark btn--sm"
|
|
206
|
+
onClick={visitModelGeneration}
|
|
207
|
+
tabIndex={-1}
|
|
208
|
+
title={'See mapping'}
|
|
209
|
+
>
|
|
210
|
+
<LongArrowRightIcon />
|
|
211
|
+
</button>
|
|
212
|
+
<button
|
|
213
|
+
className="generation-spec-model-generation-editor__item__remove-btn"
|
|
214
|
+
onClick={deleteNode}
|
|
215
|
+
tabIndex={-1}
|
|
216
|
+
title={'Remove'}
|
|
217
|
+
>
|
|
218
|
+
<TimesIcon />
|
|
219
|
+
</button>
|
|
220
|
+
</PanelEntryDropZonePlaceholder>
|
|
262
221
|
</div>
|
|
263
222
|
);
|
|
264
223
|
},
|
|
@@ -300,9 +259,6 @@ const ModelGenerationSpecifications = observer(
|
|
|
300
259
|
}
|
|
301
260
|
};
|
|
302
261
|
// Drag and Drop
|
|
303
|
-
const isRearrangingNodes = specNodesStates.some(
|
|
304
|
-
(nodeState) => nodeState.isBeingDragged,
|
|
305
|
-
);
|
|
306
262
|
const handleDrop = useCallback(
|
|
307
263
|
(item: ElementDragSource): void =>
|
|
308
264
|
specState.addGenerationTreeNode(
|
|
@@ -314,16 +270,20 @@ const ModelGenerationSpecifications = observer(
|
|
|
314
270
|
),
|
|
315
271
|
[specState],
|
|
316
272
|
);
|
|
317
|
-
const [{
|
|
273
|
+
const [{ isDragOver }, dropTargetConnector] = useDrop<
|
|
274
|
+
ElementDragSource,
|
|
275
|
+
void,
|
|
276
|
+
{ isDragOver: boolean }
|
|
277
|
+
>(
|
|
318
278
|
() => ({
|
|
319
279
|
accept: extraModelGenerationSpecificationElementDnDTypes,
|
|
320
|
-
drop: (item
|
|
280
|
+
drop: (item, monitor): void => {
|
|
321
281
|
if (!monitor.didDrop()) {
|
|
322
282
|
handleDrop(item);
|
|
323
283
|
} // prevent drop event propagation to accomondate for nested DnD
|
|
324
284
|
},
|
|
325
|
-
collect: (monitor)
|
|
326
|
-
|
|
285
|
+
collect: (monitor) => ({
|
|
286
|
+
isDragOver: monitor.isOver({ shallow: true }),
|
|
327
287
|
}),
|
|
328
288
|
}),
|
|
329
289
|
[handleDrop],
|
|
@@ -346,31 +306,36 @@ const ModelGenerationSpecifications = observer(
|
|
|
346
306
|
</button>
|
|
347
307
|
</div>
|
|
348
308
|
</div>
|
|
349
|
-
<div
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
specState={specState}
|
|
362
|
-
nodeState={nodeState}
|
|
363
|
-
options={modelGenerationElementOptions}
|
|
309
|
+
<div className="panel__content">
|
|
310
|
+
<PanelDropZone
|
|
311
|
+
isDragOver={isDragOver}
|
|
312
|
+
dropTargetConnector={dropTargetConnector}
|
|
313
|
+
>
|
|
314
|
+
{specNodesStates.length ? (
|
|
315
|
+
<div className="generation-spec-model-generation-editor__items">
|
|
316
|
+
<DragPreviewLayer
|
|
317
|
+
labelGetter={(item: GenerationSpecNodeDragSource): string =>
|
|
318
|
+
item.nodeState.node.generationElement.value.name
|
|
319
|
+
}
|
|
320
|
+
types={[GENERATION_SPEC_NODE_DND_TYPE]}
|
|
364
321
|
/>
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
322
|
+
{specNodesStates.map((nodeState) => (
|
|
323
|
+
<ModelGenerationItem
|
|
324
|
+
key={nodeState.uuid}
|
|
325
|
+
specState={specState}
|
|
326
|
+
nodeState={nodeState}
|
|
327
|
+
options={modelGenerationElementOptions}
|
|
328
|
+
/>
|
|
329
|
+
))}
|
|
330
|
+
</div>
|
|
331
|
+
) : (
|
|
332
|
+
<BlankPanelContent>
|
|
333
|
+
{modelGenerationElementsInGraph.length
|
|
334
|
+
? 'No model generation included in spec'
|
|
335
|
+
: 'Create a model generation element to include in spec'}
|
|
336
|
+
</BlankPanelContent>
|
|
337
|
+
)}
|
|
338
|
+
</PanelDropZone>
|
|
374
339
|
</div>
|
|
375
340
|
</div>
|
|
376
341
|
);
|
|
@@ -402,7 +367,7 @@ const FileGenerationItem = observer(
|
|
|
402
367
|
);
|
|
403
368
|
const visitFileGen = (): void => editorStore.openElement(fileGeneration);
|
|
404
369
|
return (
|
|
405
|
-
<div className="
|
|
370
|
+
<div className="generation-spec-file-generation-editor__item">
|
|
406
371
|
<div className="btn--sm generation-spec-file-generation-editor__item__label">
|
|
407
372
|
<PURE_FileGenerationIcon />
|
|
408
373
|
</div>
|
|
@@ -469,16 +434,20 @@ const FileGenerationSpecifications = observer(
|
|
|
469
434
|
},
|
|
470
435
|
[fileGenerations, generationSpec],
|
|
471
436
|
);
|
|
472
|
-
const [{
|
|
437
|
+
const [{ isDragOver }, dropTargetConnector] = useDrop<
|
|
438
|
+
ElementDragSource,
|
|
439
|
+
void,
|
|
440
|
+
{ isDragOver: boolean }
|
|
441
|
+
>(
|
|
473
442
|
() => ({
|
|
474
443
|
accept: [CORE_DND_TYPE.PROJECT_EXPLORER_FILE_GENERATION],
|
|
475
|
-
drop: (item
|
|
444
|
+
drop: (item, monitor): void => {
|
|
476
445
|
if (!monitor.didDrop()) {
|
|
477
446
|
handleDrop(item);
|
|
478
|
-
}
|
|
447
|
+
} // prevent drop event propagation to accomondate for nested DnD
|
|
479
448
|
},
|
|
480
|
-
collect: (monitor)
|
|
481
|
-
|
|
449
|
+
collect: (monitor) => ({
|
|
450
|
+
isDragOver: monitor.isOver({ shallow: true }),
|
|
482
451
|
}),
|
|
483
452
|
}),
|
|
484
453
|
[handleDrop],
|
|
@@ -501,31 +470,32 @@ const FileGenerationSpecifications = observer(
|
|
|
501
470
|
</button>
|
|
502
471
|
</div>
|
|
503
472
|
</div>
|
|
504
|
-
<div
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
473
|
+
<div className="panel__content">
|
|
474
|
+
<PanelDropZone
|
|
475
|
+
isDragOver={isDragOver}
|
|
476
|
+
dropTargetConnector={dropTargetConnector}
|
|
477
|
+
>
|
|
478
|
+
{generationSpec.fileGenerations.length ? (
|
|
479
|
+
<div className="generation-spec-file-generation-editor__items">
|
|
480
|
+
{generationSpec.fileGenerations.map((fileGen) => (
|
|
481
|
+
<FileGenerationItem
|
|
482
|
+
key={fileGen.value.path}
|
|
483
|
+
generationSpecificationEditorState={
|
|
484
|
+
generationSpecificationEditorState
|
|
485
|
+
}
|
|
486
|
+
fileGeneraitonRef={fileGen}
|
|
487
|
+
options={fileGenerationsOptions}
|
|
488
|
+
/>
|
|
489
|
+
))}
|
|
490
|
+
</div>
|
|
491
|
+
) : (
|
|
492
|
+
<BlankPanelContent>
|
|
493
|
+
{fileGenerationInGraph.length
|
|
494
|
+
? 'Add file generation to spec'
|
|
495
|
+
: 'Create a file generation to include in spec'}
|
|
496
|
+
</BlankPanelContent>
|
|
497
|
+
)}
|
|
498
|
+
</PanelDropZone>
|
|
529
499
|
</div>
|
|
530
500
|
</div>
|
|
531
501
|
);
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
type ElementDragSource,
|
|
51
51
|
CORE_DND_TYPE,
|
|
52
52
|
} from '../../../stores/shared/DnDUtil.js';
|
|
53
|
-
import {
|
|
53
|
+
import { useDrop } from 'react-dnd';
|
|
54
54
|
import type {
|
|
55
55
|
DSL_LegendStudioApplicationPlugin_Extension,
|
|
56
56
|
PureGrammarTextSuggestion,
|
|
@@ -825,7 +825,7 @@ export const GrammarTextEditor = observer(() => {
|
|
|
825
825
|
).getExtraPureGrammarTextEditorDnDTypes?.() ?? [],
|
|
826
826
|
);
|
|
827
827
|
const handleDrop = useCallback(
|
|
828
|
-
(item: ElementDragSource
|
|
828
|
+
(item: ElementDragSource): void => {
|
|
829
829
|
if (editor) {
|
|
830
830
|
editor.trigger('keyboard', 'type', {
|
|
831
831
|
text: item.data.packageableElement.path,
|
|
@@ -834,7 +834,7 @@ export const GrammarTextEditor = observer(() => {
|
|
|
834
834
|
},
|
|
835
835
|
[editor],
|
|
836
836
|
);
|
|
837
|
-
const [, dropConnector] = useDrop(
|
|
837
|
+
const [, dropConnector] = useDrop<ElementDragSource>(
|
|
838
838
|
() => ({
|
|
839
839
|
accept: [
|
|
840
840
|
...extraDnDTypes,
|
|
@@ -856,8 +856,7 @@ export const GrammarTextEditor = observer(() => {
|
|
|
856
856
|
CORE_DND_TYPE.PROJECT_EXPLORER_DATA,
|
|
857
857
|
],
|
|
858
858
|
|
|
859
|
-
drop: (item
|
|
860
|
-
handleDrop(item, monitor),
|
|
859
|
+
drop: (item) => handleDrop(item),
|
|
861
860
|
}),
|
|
862
861
|
[extraDnDTypes, handleDrop],
|
|
863
862
|
);
|