@eclipse-glsp/client 2.2.0-next.331 → 2.2.0-next.332
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/css/debug.css +25 -0
- package/css/grid.css +20 -0
- package/css/keyboard-tool-palette.css +0 -6
- package/css/tool-palette.css +30 -26
- package/lib/features/accessibility/keyboard-tool-palette/keyboard-tool-palette.d.ts.map +1 -1
- package/lib/features/accessibility/keyboard-tool-palette/keyboard-tool-palette.js +21 -7
- package/lib/features/accessibility/keyboard-tool-palette/keyboard-tool-palette.js.map +1 -1
- package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts +2 -4
- package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts.map +1 -1
- package/lib/features/accessibility/resize-key-tool/resize-key-handler.js +11 -7
- package/lib/features/accessibility/resize-key-tool/resize-key-handler.js.map +1 -1
- package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts +5 -6
- package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts.map +1 -1
- package/lib/features/accessibility/view-key-tools/movement-key-tool.js +12 -8
- package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +1 -22
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +1 -37
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/debug/debug-bounds-decorator.d.ts +35 -0
- package/lib/features/debug/debug-bounds-decorator.d.ts.map +1 -0
- package/lib/features/debug/debug-bounds-decorator.js +149 -0
- package/lib/features/debug/debug-bounds-decorator.js.map +1 -0
- package/lib/features/debug/debug-manager.d.ts +29 -0
- package/lib/features/debug/debug-manager.d.ts.map +1 -0
- package/lib/features/debug/debug-manager.js +72 -0
- package/lib/features/debug/debug-manager.js.map +1 -0
- package/lib/features/debug/debug-model.d.ts +37 -0
- package/lib/features/debug/debug-model.d.ts.map +1 -0
- package/lib/features/debug/debug-model.js +73 -0
- package/lib/features/debug/debug-model.js.map +1 -0
- package/lib/features/debug/debug-module.d.ts +19 -0
- package/lib/features/debug/debug-module.d.ts.map +1 -0
- package/lib/features/debug/debug-module.js +31 -0
- package/lib/features/debug/debug-module.js.map +1 -0
- package/lib/features/debug/index.d.ts +20 -0
- package/lib/features/debug/index.d.ts.map +1 -0
- package/lib/features/debug/index.js +36 -0
- package/lib/features/debug/index.js.map +1 -0
- package/lib/features/grid/grid-manager.d.ts +32 -0
- package/lib/features/grid/grid-manager.d.ts.map +1 -0
- package/lib/features/grid/grid-manager.js +74 -0
- package/lib/features/grid/grid-manager.js.map +1 -0
- package/lib/features/grid/grid-model.d.ts +37 -0
- package/lib/features/grid/grid-model.d.ts.map +1 -0
- package/lib/features/grid/grid-model.js +73 -0
- package/lib/features/grid/grid-model.js.map +1 -0
- package/lib/features/grid/grid-module.d.ts +19 -0
- package/lib/features/grid/grid-module.d.ts.map +1 -0
- package/lib/features/grid/grid-module.js +32 -0
- package/lib/features/grid/grid-module.js.map +1 -0
- package/lib/features/grid/grid-snapper.d.ts +45 -0
- package/lib/features/grid/grid-snapper.d.ts.map +1 -0
- package/lib/features/grid/grid-snapper.js +83 -0
- package/lib/features/grid/grid-snapper.js.map +1 -0
- package/lib/features/grid/grid.d.ts +18 -0
- package/lib/features/grid/grid.d.ts.map +1 -0
- package/lib/features/grid/grid.js +3 -0
- package/lib/features/grid/grid.js.map +1 -0
- package/lib/features/grid/index.d.ts +21 -0
- package/lib/features/grid/index.d.ts.map +1 -0
- package/lib/features/grid/index.js +37 -0
- package/lib/features/grid/index.js.map +1 -0
- package/lib/features/helper-lines/helper-line-manager-default.d.ts +4 -1
- package/lib/features/helper-lines/helper-line-manager-default.d.ts.map +1 -1
- package/lib/features/helper-lines/helper-line-manager-default.js +11 -1
- package/lib/features/helper-lines/helper-line-manager-default.js.map +1 -1
- package/lib/features/index.d.ts +2 -0
- package/lib/features/index.d.ts.map +1 -1
- package/lib/features/index.js +2 -0
- package/lib/features/index.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +7 -0
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +80 -2
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/viewport/index.d.ts +1 -0
- package/lib/features/viewport/index.d.ts.map +1 -1
- package/lib/features/viewport/index.js +1 -0
- package/lib/features/viewport/index.js.map +1 -1
- package/lib/features/viewport/origin-viewport.d.ts +36 -0
- package/lib/features/viewport/origin-viewport.d.ts.map +1 -0
- package/lib/features/viewport/origin-viewport.js +75 -0
- package/lib/features/viewport/origin-viewport.js.map +1 -0
- package/lib/features/viewport/viewport-modules.d.ts.map +1 -1
- package/lib/features/viewport/viewport-modules.js +4 -2
- package/lib/features/viewport/viewport-modules.js.map +1 -1
- package/lib/views/base-view-module.d.ts.map +1 -1
- package/lib/views/base-view-module.js +3 -2
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/ggraph-view.d.ts +26 -0
- package/lib/views/ggraph-view.d.ts.map +1 -0
- package/lib/views/ggraph-view.js +71 -0
- package/lib/views/ggraph-view.js.map +1 -0
- package/lib/views/glsp-projection-view.d.ts +6 -1
- package/lib/views/glsp-projection-view.d.ts.map +1 -1
- package/lib/views/glsp-projection-view.js +30 -6
- package/lib/views/glsp-projection-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -0
- package/lib/views/index.js.map +1 -1
- package/package.json +3 -3
- package/src/features/accessibility/keyboard-tool-palette/keyboard-tool-palette.ts +24 -7
- package/src/features/accessibility/resize-key-tool/resize-key-handler.ts +9 -9
- package/src/features/accessibility/view-key-tools/movement-key-tool.ts +13 -11
- package/src/features/change-bounds/{snap.spec.ts → point-position-updater.spec.ts} +1 -12
- package/src/features/change-bounds/snap.ts +1 -24
- package/src/features/debug/debug-bounds-decorator.tsx +171 -0
- package/src/features/debug/debug-manager.ts +56 -0
- package/src/features/debug/debug-model.ts +63 -0
- package/src/features/debug/debug-module.ts +32 -0
- package/src/features/debug/index.ts +19 -0
- package/src/features/grid/grid-manager.ts +60 -0
- package/src/features/grid/grid-model.ts +62 -0
- package/src/features/grid/grid-module.ts +34 -0
- package/src/features/grid/grid-snapper.spec.ts +30 -0
- package/src/features/grid/grid-snapper.ts +59 -0
- package/src/features/grid/grid.ts +18 -0
- package/src/features/grid/index.ts +20 -0
- package/src/features/helper-lines/helper-line-manager-default.ts +10 -2
- package/src/features/index.ts +2 -0
- package/src/features/tool-palette/tool-palette.ts +80 -3
- package/src/features/viewport/index.ts +1 -0
- package/src/features/viewport/origin-viewport.ts +68 -0
- package/src/features/viewport/viewport-modules.ts +4 -2
- package/src/views/base-view-module.ts +3 -3
- package/src/views/ggraph-view.tsx +56 -0
- package/src/views/glsp-projection-view.tsx +34 -7
- package/src/views/index.ts +1 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2024 Axon Ivy AG and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
|
|
17
|
+
import { Action, Bounds, BoundsAwareViewportCommand, GModelRoot, TYPES, Viewport, isViewport, limitViewport } from '@eclipse-glsp/sprotty';
|
|
18
|
+
import { inject, injectable } from 'inversify';
|
|
19
|
+
|
|
20
|
+
export interface OriginViewportAction extends Action {
|
|
21
|
+
kind: typeof OriginViewportAction.KIND;
|
|
22
|
+
animate: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export namespace OriginViewportAction {
|
|
26
|
+
export const KIND = 'originViewport';
|
|
27
|
+
|
|
28
|
+
export function is(object: any): object is OriginViewportAction {
|
|
29
|
+
return Action.hasKind(object, KIND);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function create(options: { animate?: boolean } = {}): OriginViewportAction {
|
|
33
|
+
return {
|
|
34
|
+
kind: KIND,
|
|
35
|
+
animate: true,
|
|
36
|
+
...options
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@injectable()
|
|
42
|
+
export class OriginViewportCommand extends BoundsAwareViewportCommand {
|
|
43
|
+
static readonly KIND = OriginViewportAction.KIND;
|
|
44
|
+
|
|
45
|
+
constructor(@inject(TYPES.Action) protected action: OriginViewportAction) {
|
|
46
|
+
super(action.animate);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
getElementIds(): string[] {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
protected override initialize(model: GModelRoot): void {
|
|
54
|
+
if (!isViewport(model)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.oldViewport = { scroll: model.scroll, zoom: model.zoom };
|
|
58
|
+
const newViewport = this.getNewViewport(Bounds.EMPTY, model);
|
|
59
|
+
if (newViewport) {
|
|
60
|
+
const { zoomLimits, horizontalScrollLimits, verticalScrollLimits } = this.viewerOptions;
|
|
61
|
+
this.newViewport = limitViewport(newViewport, model.canvasBounds, horizontalScrollLimits, verticalScrollLimits, zoomLimits);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
getNewViewport(_bounds: Bounds, _model: GModelRoot): Viewport | undefined {
|
|
66
|
+
return { zoom: 1, scroll: { x: 0, y: 0 } };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -27,10 +27,11 @@ import {
|
|
|
27
27
|
ZoomMouseListener
|
|
28
28
|
} from '@eclipse-glsp/sprotty';
|
|
29
29
|
import { EnableDefaultToolsAction, EnableToolsAction } from '../../base/tool-manager/tool';
|
|
30
|
+
import { FocusDomAction } from '../accessibility/actions';
|
|
30
31
|
import { GLSPScrollMouseListener } from './glsp-scroll-mouse-listener';
|
|
31
|
-
import {
|
|
32
|
+
import { OriginViewportCommand } from './origin-viewport';
|
|
32
33
|
import { RepositionCommand } from './reposition';
|
|
33
|
-
import {
|
|
34
|
+
import { RestoreViewportHandler } from './viewport-handler';
|
|
34
35
|
|
|
35
36
|
export const viewportModule = new FeatureModule((bind, _unbind, isBound) => {
|
|
36
37
|
const context = { bind, isBound };
|
|
@@ -39,6 +40,7 @@ export const viewportModule = new FeatureModule((bind, _unbind, isBound) => {
|
|
|
39
40
|
configureCommand(context, GetViewportCommand);
|
|
40
41
|
configureCommand(context, SetViewportCommand);
|
|
41
42
|
configureCommand(context, RepositionCommand);
|
|
43
|
+
configureCommand(context, OriginViewportCommand);
|
|
42
44
|
|
|
43
45
|
bindAsService(context, TYPES.MouseListener, ZoomMouseListener);
|
|
44
46
|
bindAsService(context, TYPES.MouseListener, GLSPScrollMouseListener);
|
|
@@ -27,9 +27,9 @@ import {
|
|
|
27
27
|
GCompartment,
|
|
28
28
|
GCompartmentView,
|
|
29
29
|
GForeignObjectElement,
|
|
30
|
-
GGraphView,
|
|
31
30
|
GHtmlRoot,
|
|
32
31
|
GLabel,
|
|
32
|
+
GLabelView,
|
|
33
33
|
GNode,
|
|
34
34
|
GPort,
|
|
35
35
|
GPreRenderedElement,
|
|
@@ -41,17 +41,17 @@ import {
|
|
|
41
41
|
PreRenderedView,
|
|
42
42
|
RectangularNode,
|
|
43
43
|
RectangularNodeView,
|
|
44
|
-
GLabelView,
|
|
45
44
|
SvgViewportView,
|
|
46
45
|
configureModelElement,
|
|
47
46
|
moveFeature,
|
|
48
47
|
selectFeature
|
|
49
48
|
} from '@eclipse-glsp/sprotty';
|
|
50
49
|
import { GIssueMarker } from '../features/validation/issue-marker';
|
|
50
|
+
import { GEdge, GGraph } from '../model';
|
|
51
51
|
import { GEdgeView } from './gedge-view';
|
|
52
|
+
import { GGraphView } from './ggraph-view';
|
|
52
53
|
import { GIssueMarkerView } from './issue-marker-view';
|
|
53
54
|
import { RoundedCornerNodeView } from './rounded-corner-view';
|
|
54
|
-
import { GEdge, GGraph } from '../model';
|
|
55
55
|
|
|
56
56
|
export const baseViewModule = new FeatureModule((bind, unbind, isBound, rebind) => {
|
|
57
57
|
const context = { bind, unbind, isBound, rebind };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2024 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Bounds, Dimension, Point, RenderingContext, SGraphImpl, SGraphView, TYPES, Writable } from '@eclipse-glsp/sprotty';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
19
|
+
import { GridManager, GridStyle } from '../features';
|
|
20
|
+
|
|
21
|
+
@injectable()
|
|
22
|
+
export class GGraphView extends SGraphView {
|
|
23
|
+
@inject(TYPES.IGridManager) @optional() protected gridManager?: GridManager;
|
|
24
|
+
|
|
25
|
+
override render(model: Readonly<SGraphImpl>, context: RenderingContext): VNode {
|
|
26
|
+
const graph = super.render(model, context);
|
|
27
|
+
if (graph.data) {
|
|
28
|
+
graph.data.style = { ...graph.data.style, ...this.getGridStyle(model, context) };
|
|
29
|
+
}
|
|
30
|
+
return graph;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
protected getGridStyle(model: Readonly<SGraphImpl>, context: RenderingContext): GridStyle {
|
|
34
|
+
if (!this.gridManager?.isGridVisible) {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
const bounds = this.getBackgroundBounds(model, context, this.gridManager);
|
|
38
|
+
return {
|
|
39
|
+
backgroundPosition: `${bounds.x}px ${bounds.y}px`,
|
|
40
|
+
backgroundSize: `${bounds.width}px ${bounds.height}px`,
|
|
41
|
+
// we do not set the background image directly in the style object, because we want to toggle it on and off via CSS
|
|
42
|
+
'--grid-background-image': this.getBackgroundImage(model, context, this.gridManager)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
protected getBackgroundBounds(viewport: Readonly<SGraphImpl>, context: RenderingContext, gridManager: GridManager): Writable<Bounds> {
|
|
47
|
+
const position = Point.multiplyScalar(Point.subtract(gridManager.grid, viewport.scroll), viewport.zoom);
|
|
48
|
+
const size = Dimension.fromPoint(Point.multiplyScalar(gridManager.grid, viewport.zoom));
|
|
49
|
+
return { ...position, ...size };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected getBackgroundImage(model: Readonly<SGraphImpl>, context: RenderingContext, gridManager: GridManager): string {
|
|
53
|
+
// eslint-disable-next-line max-len
|
|
54
|
+
return `url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${gridManager.grid.x} ${gridManager.grid.y}"><rect width="${gridManager.grid.x}" height="${gridManager.grid.y}" x="0" y="0" fill="none" stroke="black" stroke-width="1" stroke-opacity="0.10" /></svg>')`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -16,19 +16,25 @@
|
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
Bounds,
|
|
19
|
+
Dimension,
|
|
19
20
|
EdgeRouterRegistry,
|
|
20
21
|
GViewportRootElement,
|
|
21
22
|
IViewArgs,
|
|
23
|
+
Point,
|
|
22
24
|
ProjectedViewportView,
|
|
23
25
|
ProjectionParams,
|
|
24
26
|
RenderingContext,
|
|
27
|
+
SGraphImpl,
|
|
28
|
+
TYPES,
|
|
25
29
|
ViewProjection,
|
|
30
|
+
Writable,
|
|
26
31
|
html,
|
|
27
32
|
setAttr,
|
|
28
33
|
setClass
|
|
29
34
|
} from '@eclipse-glsp/sprotty';
|
|
30
|
-
import { inject, injectable } from 'inversify';
|
|
35
|
+
import { inject, injectable, optional } from 'inversify';
|
|
31
36
|
import { VNode, VNodeStyle, h } from 'snabbdom';
|
|
37
|
+
import { GridManager, GridStyle } from '../features';
|
|
32
38
|
|
|
33
39
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
40
|
const JSX = { createElement: html };
|
|
@@ -39,15 +45,12 @@ const JSX = { createElement: html };
|
|
|
39
45
|
@injectable()
|
|
40
46
|
export class GLSPProjectionView extends ProjectedViewportView {
|
|
41
47
|
@inject(EdgeRouterRegistry) edgeRouterRegistry: EdgeRouterRegistry;
|
|
48
|
+
@inject(TYPES.IGridManager) @optional() protected gridManager?: GridManager;
|
|
42
49
|
|
|
43
50
|
override render(model: Readonly<GViewportRootElement>, context: RenderingContext, args?: IViewArgs): VNode {
|
|
44
|
-
const svgElem = this.renderSvg(model, context, args);
|
|
45
|
-
if (svgElem.data) {
|
|
46
|
-
svgElem.data!.class = { 'sprotty-graph': true };
|
|
47
|
-
}
|
|
48
51
|
const rootNode: VNode = (
|
|
49
52
|
<div class-sprotty-graph={false} style={{ width: '100%', height: '100%' }}>
|
|
50
|
-
{
|
|
53
|
+
{this.renderSvg(model, context, args)}
|
|
51
54
|
{this.renderProjections(model, context, args)}
|
|
52
55
|
</div>
|
|
53
56
|
);
|
|
@@ -63,12 +66,36 @@ export class GLSPProjectionView extends ProjectedViewportView {
|
|
|
63
66
|
const ns = 'http://www.w3.org/2000/svg';
|
|
64
67
|
const svg = h(
|
|
65
68
|
'svg',
|
|
66
|
-
{ ns, style: { height: '100%' } },
|
|
69
|
+
{ ns, style: { height: '100%', ...this.getGridStyle(model, context) }, class: { 'sprotty-graph': true } },
|
|
67
70
|
h('g', { ns, attrs: { transform } }, context.renderChildren(model, { edgeRouting }))
|
|
68
71
|
);
|
|
69
72
|
return svg;
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
protected getGridStyle(model: Readonly<SGraphImpl>, context: RenderingContext): GridStyle {
|
|
76
|
+
if (!this.gridManager?.isGridVisible) {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
const bounds = this.getBackgroundBounds(model, context, this.gridManager);
|
|
80
|
+
return {
|
|
81
|
+
backgroundPosition: `${bounds.x}px ${bounds.y}px`,
|
|
82
|
+
backgroundSize: `${bounds.width}px ${bounds.height}px`,
|
|
83
|
+
// we do not set the background image directly in the style object, because we want to toggle it on and off via CSS
|
|
84
|
+
'--grid-background-image': this.getBackgroundImage(model, context, this.gridManager)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
protected getBackgroundBounds(viewport: Readonly<SGraphImpl>, context: RenderingContext, gridManager: GridManager): Writable<Bounds> {
|
|
89
|
+
const position = Point.multiplyScalar(Point.subtract(gridManager.grid, viewport.scroll), viewport.zoom);
|
|
90
|
+
const size = Dimension.fromPoint(Point.multiplyScalar(gridManager.grid, viewport.zoom));
|
|
91
|
+
return { ...position, ...size };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
protected getBackgroundImage(model: Readonly<SGraphImpl>, context: RenderingContext, gridManager: GridManager): string {
|
|
95
|
+
// eslint-disable-next-line max-len
|
|
96
|
+
return `url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${gridManager.grid.x} ${gridManager.grid.y}"><rect width="${gridManager.grid.x}" height="${gridManager.grid.y}" x="0" y="0" fill="none" stroke="black" stroke-width="1" stroke-opacity="0.10" /></svg>')`;
|
|
97
|
+
}
|
|
98
|
+
|
|
72
99
|
protected override renderProjectionBar(
|
|
73
100
|
projections: ViewProjection[],
|
|
74
101
|
model: Readonly<GViewportRootElement>,
|
package/src/views/index.ts
CHANGED