@eclipse-glsp/vscode-integration-webview 2.2.0-next.83 → 2.2.0-next.86

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 (32) hide show
  1. package/css/diagram.css +18 -0
  2. package/css/features.css +54 -0
  3. package/css/glsp-vscode.css +1 -3
  4. package/css/tool-palette.css +1 -23
  5. package/lib/default-modules.d.ts.map +1 -1
  6. package/lib/default-modules.js +3 -1
  7. package/lib/default-modules.js.map +1 -1
  8. package/lib/features/copyPaste/copy-paste-module.js +1 -1
  9. package/lib/features/copyPaste/copy-paste-module.js.map +1 -1
  10. package/lib/features/default/default-module.js +1 -1
  11. package/lib/features/default/default-module.js.map +1 -1
  12. package/lib/features/export/export-module.d.ts.map +1 -1
  13. package/lib/features/export/export-module.js +1 -1
  14. package/lib/features/export/export-module.js.map +1 -1
  15. package/lib/features/navigation/navigation-module.d.ts.map +1 -1
  16. package/lib/features/navigation/navigation-module.js +1 -1
  17. package/lib/features/navigation/navigation-module.js.map +1 -1
  18. package/lib/features/notification/notification-module.d.ts.map +1 -1
  19. package/lib/features/notification/notification-module.js +1 -1
  20. package/lib/features/notification/notification-module.js.map +1 -1
  21. package/lib/glsp-diagram-widget.d.ts +5 -0
  22. package/lib/glsp-diagram-widget.d.ts.map +1 -1
  23. package/lib/glsp-diagram-widget.js +25 -0
  24. package/lib/glsp-diagram-widget.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/default-modules.ts +3 -2
  27. package/src/features/copyPaste/copy-paste-module.ts +1 -1
  28. package/src/features/default/default-module.ts +1 -1
  29. package/src/features/export/export-module.ts +7 -4
  30. package/src/features/navigation/navigation-module.ts +6 -3
  31. package/src/features/notification/notification-module.ts +9 -6
  32. package/src/glsp-diagram-widget.ts +31 -2
package/css/diagram.css CHANGED
@@ -19,6 +19,7 @@ body {
19
19
  width: 100%;
20
20
  height: 100%;
21
21
  padding: 0px;
22
+ overflow: hidden;
22
23
  }
23
24
 
24
25
  .sprotty {
@@ -100,3 +101,20 @@ body {
100
101
  color: var(--vscode-editorHoverWidget-foreground);
101
102
  border: 1px solid var(--vscode-editorHoverWidget-border);
102
103
  }
104
+
105
+ .mouse-enter .sprotty-projection-bar {
106
+ opacity: 1;
107
+ }
108
+
109
+ .mouse-leave .sprotty-projection-bar {
110
+ opacity: 0;
111
+ pointer-events: none;
112
+ }
113
+
114
+ .sprotty-projection-bar.horizontal.bordered-projection-bar {
115
+ height: 15px;
116
+ }
117
+
118
+ .sprotty-projection-bar.vertical.bordered-projection-bar {
119
+ width: 15px;
120
+ }
@@ -0,0 +1,54 @@
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
+
17
+ /* Debug */
18
+
19
+ .debug-bounds-decoration {
20
+ stroke: var(--vscode-editor-foreground);
21
+ }
22
+
23
+ /* Ghost element */
24
+
25
+ .sprotty-node.insert-indicator:not(.selected) {
26
+ stroke: var(--vscode-editor-foreground);
27
+ }
28
+
29
+ /* Helper lines */
30
+
31
+ .helper-line {
32
+ stroke: var(--vscode-focusBorder);
33
+ }
34
+
35
+ /* Grid */
36
+ body[data-vscode-theme-kind='vscode-dark'] .grid-background .sprotty-graph,
37
+ body[data-vscode-theme-kind='vscode-dark'] .grid-background.sprotty-graph {
38
+ --grid-color: rgba(255, 255, 255, 0.1);
39
+ }
40
+
41
+ body[data-vscode-theme-kind='vscode-light'] .grid-background .sprotty-graph,
42
+ body[data-vscode-theme-kind='vscode-light'] .grid-background.sprotty-graph {
43
+ --grid-color: rgba(0, 0, 0, 0.1);
44
+ }
45
+
46
+ body[data-vscode-theme-kind='vscode-high-contrast'] .grid-background .sprotty-graph,
47
+ body[data-vscode-theme-kind='vscode-high-contrast'] .grid-background.sprotty-graph {
48
+ --grid-color: rgba(255, 255, 255);
49
+ }
50
+
51
+ body[data-vscode-theme-kind='vscode-high-contrast-light'] .grid-background .sprotty-graph,
52
+ body[data-vscode-theme-kind='vscode-high-contrast-light'] .grid-background.sprotty-graph {
53
+ --grid-color: rgba(0, 0, 0);
54
+ }
@@ -18,6 +18,4 @@
18
18
  @import 'diagram.css';
19
19
  @import 'tool-palette.css';
20
20
  @import 'decoration.css';
21
- .sprotty-resize-handle.active {
22
- fill: #0074e8 !important;
23
- }
21
+ @import 'features.css';
@@ -16,6 +16,7 @@
16
16
 
17
17
  .tool-palette {
18
18
  box-shadow: 0px 1px 6px var(--vscode-widget-shadow);
19
+ font-size: var(--vscode-ui-font-size1);
19
20
  }
20
21
 
21
22
  .tool-palette :focus-visible {
@@ -30,32 +31,12 @@
30
31
  background: var(--vscode-settings-dropdownBackground);
31
32
  color: var(--vscode-titleBar-activeForeground);
32
33
  border: 0;
33
- font-weight: normal;
34
- overflow: hidden;
35
- padding: 0.2em;
36
- line-height: 1.5em;
37
34
  box-shadow: none;
38
35
  border-top: 2px solid var(--vscode-focusBorder);
39
36
  }
40
37
 
41
- .tool-palette .palette-header .header-icon {
42
- float: left;
43
- padding: 0.2em;
44
- font-size: 11px;
45
- text-transform: uppercase;
46
- font-weight: 400;
47
- }
48
-
49
- .tool-palette .palette-header .header-tools {
50
- float: right;
51
- font-size: 11px;
52
- }
53
-
54
38
  .tool-palette .palette-header .header-tools i {
55
39
  border: none;
56
- width: 1em;
57
- text-align: center;
58
- border-radius: 5px;
59
40
  }
60
41
 
61
42
  .tool-palette .palette-header .header-tools i:hover:not(.clicked) {
@@ -74,9 +55,6 @@
74
55
  }
75
56
 
76
57
  .tool-palette .palette-body .group-header {
77
- font-size: var(--vscode-ui-font-size1);
78
- text-transform: uppercase;
79
- font-weight: bold;
80
58
  background: var(--vscode-editorHoverWidget-statusBarBackground);
81
59
  color: var(--vscode-titleBar-activeForeground);
82
60
  border: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"default-modules.d.ts","sourceRoot":"","sources":["../src/default-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAO3D,eAAO,MAAM,sBAAsB,iPAMzB,CAAC;AAEX,eAAO,MAAM,4BAA4B,EAAE,mBAE1C,CAAC"}
1
+ {"version":3,"file":"default-modules.d.ts","sourceRoot":"","sources":["../src/default-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAC;AAO9E,eAAO,MAAM,sBAAsB,iPAMzB,CAAC;AAEX,eAAO,MAAM,4BAA4B,EAAE,mBAG1C,CAAC"}
@@ -16,6 +16,7 @@
16
16
  ********************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.VSCODE_DEFAULT_MODULE_CONFIG = exports.VSCODE_DEFAULT_MODULES = void 0;
19
+ const client_1 = require("@eclipse-glsp/client");
19
20
  const copy_paste_module_1 = require("./features/copyPaste/copy-paste-module");
20
21
  const default_module_1 = require("./features/default/default-module");
21
22
  const export_module_1 = require("./features/export/export-module");
@@ -29,6 +30,7 @@ exports.VSCODE_DEFAULT_MODULES = [
29
30
  notification_module_1.vscodeNotificationModule
30
31
  ];
31
32
  exports.VSCODE_DEFAULT_MODULE_CONFIG = {
32
- add: [...exports.VSCODE_DEFAULT_MODULES]
33
+ add: [...exports.VSCODE_DEFAULT_MODULES],
34
+ remove: [client_1.contextMenuModule]
33
35
  };
34
36
  //# sourceMappingURL=default-modules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-modules.js","sourceRoot":"","sources":["../src/default-modules.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAGlF,8EAA+E;AAC/E,sEAAwE;AACxE,mEAAqE;AACrE,+EAAiF;AACjF,qFAAuF;AAE1E,QAAA,sBAAsB,GAAG;IAClC,oCAAmB;IACnB,yCAAqB;IACrB,kCAAkB;IAClB,0CAAsB;IACtB,8CAAwB;CAClB,CAAC;AAEE,QAAA,4BAA4B,GAAwB;IAC7D,GAAG,EAAE,CAAC,GAAG,8BAAsB,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"default-modules.js","sourceRoot":"","sources":["../src/default-modules.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAA8E;AAC9E,8EAA+E;AAC/E,sEAAwE;AACxE,mEAAqE;AACrE,+EAAiF;AACjF,qFAAuF;AAE1E,QAAA,sBAAsB,GAAG;IAClC,oCAAmB;IACnB,yCAAqB;IACrB,kCAAkB;IAClB,0CAAsB;IACtB,8CAAwB;CAClB,CAAC;AAEE,QAAA,4BAA4B,GAAwB;IAC7D,GAAG,EAAE,CAAC,GAAG,8BAAsB,CAAC;IAChC,MAAM,EAAE,CAAC,0BAAiB,CAAC;CAC9B,CAAC"}
@@ -21,5 +21,5 @@ const copy_paste_startup_1 = require("./copy-paste-startup");
21
21
  exports.vscodeCopyPasteModule = new client_1.FeatureModule(bind => {
22
22
  bind(copy_paste_startup_1.CopyPasteHandlerProvider).toProvider(ctx => () => new Promise(resolve => resolve(ctx.container.get(client_1.TYPES.ICopyPasteHandler))));
23
23
  (0, client_1.bindAsService)(bind, client_1.TYPES.IDiagramStartup, copy_paste_startup_1.CopyPasteStartup);
24
- }, { requires: client_1.copyPasteModule });
24
+ }, { requires: client_1.copyPasteModule, featureId: Symbol('vscodeCopyPaste') });
25
25
  //# sourceMappingURL=copy-paste-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-paste-module.js","sourceRoot":"","sources":["../../../src/features/copyPaste/copy-paste-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAA+G;AAC/G,6DAAkF;AAErE,QAAA,qBAAqB,GAAG,IAAI,sBAAa,CAClD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,6CAAwB,CAAC,CAAC,UAAU,CACrC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAoB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoB,cAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACjI,CAAC;IACF,IAAA,sBAAa,EAAC,IAAI,EAAE,cAAK,CAAC,eAAe,EAAE,qCAAgB,CAAC,CAAC;AACjE,CAAC,EACD,EAAE,QAAQ,EAAE,wBAAe,EAAE,CAChC,CAAC"}
1
+ {"version":3,"file":"copy-paste-module.js","sourceRoot":"","sources":["../../../src/features/copyPaste/copy-paste-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAA+G;AAC/G,6DAAkF;AAErE,QAAA,qBAAqB,GAAG,IAAI,sBAAa,CAClD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,6CAAwB,CAAC,CAAC,UAAU,CACrC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAoB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoB,cAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACjI,CAAC;IACF,IAAA,sBAAa,EAAC,IAAI,EAAE,cAAK,CAAC,eAAe,EAAE,qCAAgB,CAAC,CAAC;AACjE,CAAC,EACD,EAAE,QAAQ,EAAE,wBAAe,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CACtE,CAAC"}
@@ -24,5 +24,5 @@ exports.vscodeDefaultModule = new client_1.FeatureModule(bind => {
24
24
  bind(glsp_diagram_widget_1.GLSPDiagramWidgetFactory).toFactory(context => () => context.container.get(glsp_diagram_widget_1.GLSPDiagramWidget));
25
25
  (0, client_1.bindAsService)(bind, client_1.TYPES.IActionHandlerInitializer, extension_action_handler_1.HostExtensionActionHandler);
26
26
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.SelectAction.KIND);
27
- }, { requires: client_1.defaultModule });
27
+ }, { requires: client_1.defaultModule, featureId: Symbol('vscodeDefault') });
28
28
  //# sourceMappingURL=default-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-module.js","sourceRoot":"","sources":["../../../src/features/default/default-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAwG;AACxG,mEAAwF;AACxF,yEAA6F;AAEhF,QAAA,mBAAmB,GAAG,IAAI,sBAAa,CAChD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,uCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,8CAAwB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAoB,uCAAiB,CAAC,CAAC,CAAC;IACvH,IAAA,sBAAa,EAAC,IAAI,EAAE,cAAK,CAAC,yBAAyB,EAAE,qDAA0B,CAAC,CAAC;IACjF,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,qBAAY,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,EACD,EAAE,QAAQ,EAAE,sBAAa,EAAE,CAC9B,CAAC"}
1
+ {"version":3,"file":"default-module.js","sourceRoot":"","sources":["../../../src/features/default/default-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAwG;AACxG,mEAAwF;AACxF,yEAA6F;AAEhF,QAAA,mBAAmB,GAAG,IAAI,sBAAa,CAChD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,uCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,8CAAwB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAoB,uCAAiB,CAAC,CAAC,CAAC;IACvH,IAAA,sBAAa,EAAC,IAAI,EAAE,cAAK,CAAC,yBAAyB,EAAE,qDAA0B,CAAC,CAAC;IACjF,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,qBAAY,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,EACD,EAAE,QAAQ,EAAE,sBAAa,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"export-module.d.ts","sourceRoot":"","sources":["../../../src/features/export/export-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE,eAAO,MAAM,kBAAkB,eAE7B,CAAC"}
1
+ {"version":3,"file":"export-module.d.ts","sourceRoot":"","sources":["../../../src/features/export/export-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAmB,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AAGpF,eAAO,MAAM,kBAAkB,eAK9B,CAAC"}
@@ -20,5 +20,5 @@ const client_1 = require("@eclipse-glsp/client");
20
20
  const extension_action_handler_1 = require("../default/extension-action-handler");
21
21
  exports.vscodeExportModule = new client_1.FeatureModule(bind => {
22
22
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.ExportSvgAction.KIND);
23
- });
23
+ }, { requires: client_1.exportModule, featureId: Symbol('vscodeExport') });
24
24
  //# sourceMappingURL=export-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-module.js","sourceRoot":"","sources":["../../../src/features/export/export-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAsE;AACtE,kFAA0E;AAE7D,QAAA,kBAAkB,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,EAAE;IACvD,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,wBAAe,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"export-module.js","sourceRoot":"","sources":["../../../src/features/export/export-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAoF;AACpF,kFAA0E;AAE7D,QAAA,kBAAkB,GAAG,IAAI,sBAAa,CAC/C,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,wBAAe,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,EACD,EAAE,QAAQ,EAAE,qBAAY,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-module.d.ts","sourceRoot":"","sources":["../../../src/features/navigation/navigation-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,aAAa,EAAoD,MAAM,sBAAsB,CAAC;AAGvG,eAAO,MAAM,sBAAsB,eAEf,CAAC"}
1
+ {"version":3,"file":"navigation-module.d.ts","sourceRoot":"","sources":["../../../src/features/navigation/navigation-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,aAAa,EAAoD,MAAM,sBAAsB,CAAC;AAGvG,eAAO,MAAM,sBAAsB,eAKlC,CAAC"}
@@ -20,5 +20,5 @@ const client_1 = require("@eclipse-glsp/client");
20
20
  const extension_action_handler_1 = require("../default/extension-action-handler");
21
21
  exports.vscodeNavigationModule = new client_1.FeatureModule(bind => {
22
22
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.NavigateToExternalTargetAction.KIND);
23
- }, client_1.navigationModule);
23
+ }, { requires: client_1.navigationModule, featureId: Symbol('vscodeNavigation') });
24
24
  //# sourceMappingURL=navigation-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-module.js","sourceRoot":"","sources":["../../../src/features/navigation/navigation-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAuG;AACvG,kFAA0E;AAE7D,QAAA,sBAAsB,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,EAAE;IAC3D,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,uCAA8B,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC,EAAE,yBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"navigation-module.js","sourceRoot":"","sources":["../../../src/features/navigation/navigation-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAuG;AACvG,kFAA0E;AAE7D,QAAA,sBAAsB,GAAG,IAAI,sBAAa,CACnD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,uCAA8B,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC,EACD,EAAE,QAAQ,EAAE,yBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-module.d.ts","sourceRoot":"","sources":["../../../src/features/notification/notification-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,aAAa,EAA4D,MAAM,sBAAsB,CAAC;AAGlI,eAAO,MAAM,wBAAwB,eAKnC,CAAC"}
1
+ {"version":3,"file":"notification-module.d.ts","sourceRoot":"","sources":["../../../src/features/notification/notification-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,aAAa,EAA4D,MAAM,sBAAsB,CAAC;AAGlI,eAAO,MAAM,wBAAwB,eAQpC,CAAC"}
@@ -23,5 +23,5 @@ exports.vscodeNotificationModule = new client_1.FeatureModule(bind => {
23
23
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.StartProgressAction.KIND);
24
24
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.EndProgressAction.KIND);
25
25
  bind(extension_action_handler_1.ExtensionActionKind).toConstantValue(client_1.UpdateProgressAction.KIND);
26
- });
26
+ }, { featureId: Symbol('vscodeNotification') });
27
27
  //# sourceMappingURL=notification-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-module.js","sourceRoot":"","sources":["../../../src/features/notification/notification-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAkI;AAClI,kFAA0E;AAE7D,QAAA,wBAAwB,GAAG,IAAI,sBAAa,CAAC,IAAI,CAAC,EAAE;IAC7D,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,sBAAa,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,4BAAmB,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,0BAAiB,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,6BAAoB,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"notification-module.js","sourceRoot":"","sources":["../../../src/features/notification/notification-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,iDAAkI;AAClI,kFAA0E;AAE7D,QAAA,wBAAwB,GAAG,IAAI,sBAAa,CACrD,IAAI,CAAC,EAAE;IACH,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,sBAAa,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,4BAAmB,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,0BAAiB,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,8CAAmB,CAAC,CAAC,eAAe,CAAC,6BAAoB,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,EACD,EAAE,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAC9C,CAAC"}
@@ -24,8 +24,13 @@ export declare abstract class GLSPDiagramWidget {
24
24
  protected viewerOptions: ViewerOptions;
25
25
  protected diagramLoader: DiagramLoader;
26
26
  get clientId(): string;
27
+ protected containerDiv: HTMLDivElement | undefined;
27
28
  initialize(): void;
28
29
  protected initializeHtml(): void;
30
+ handleContextMenu(e: MouseEvent): void;
31
+ handleMouseEnter(e: MouseEvent): void;
32
+ handleMouseLeave(e: MouseEvent): void;
33
+ handleFocusChange(e: FocusEvent, hasFocus: boolean): void;
29
34
  protected createDiagramLoadingOptions(): DiagramLoadingOptions | undefined;
30
35
  loadDiagram(): Promise<void>;
31
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glsp-diagram-widget.d.ts","sourceRoot":"","sources":["../src/glsp-diagram-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;kFAekF;AAElF,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,WAAW,EAEX,aAAa,EAChB,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAC3E,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,CAAC;AAE/D,8BACsB,iBAAiB;IAEnC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAG9C,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC;IAG1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAGD,UAAU,IAAI,IAAI;IAKlB,SAAS,CAAC,cAAc,IAAI,IAAI;IAahC,SAAS,CAAC,2BAA2B,IAAI,qBAAqB,GAAG,SAAS;IAI1E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"glsp-diagram-widget.d.ts","sourceRoot":"","sources":["../src/glsp-diagram-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;kFAekF;AAElF,OAAO,EACH,aAAa,EACb,qBAAqB,EAErB,iBAAiB,EACjB,eAAe,EACf,WAAW,EAEX,aAAa,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAC3E,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,CAAC;AAE/D,8BACsB,iBAAiB;IAEnC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAG9C,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC;IAG1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,SAAS,CAAC,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC;IAGnD,UAAU,IAAI,IAAI;IAKlB,SAAS,CAAC,cAAc,IAAI,IAAI;IAmBhC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAOtC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAKrC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAKrC,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIzD,SAAS,CAAC,2BAA2B,IAAI,qBAAqB,GAAG,SAAS;IAI1E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -47,8 +47,33 @@ let GLSPDiagramWidget = class GLSPDiagramWidget {
47
47
  const hiddenContainer = document.createElement('div');
48
48
  hiddenContainer.id = this.viewerOptions.hiddenDiv;
49
49
  document.body.appendChild(hiddenContainer);
50
+ this.containerDiv = containerDiv;
51
+ containerDiv.addEventListener('mouseenter', e => this.handleMouseEnter(e));
52
+ containerDiv.addEventListener('mouseleave', e => this.handleMouseLeave(e));
53
+ window.addEventListener('focus', e => this.handleFocusChange(e, true));
54
+ window.addEventListener('blur', e => this.handleFocusChange(e, false));
55
+ window.addEventListener('contextmenu', e => this.handleContextMenu(e));
50
56
  }
51
57
  }
58
+ handleContextMenu(e) {
59
+ // Prevent the default context menu for now
60
+ // Should be removed once we provide a proper context menu integration
61
+ e.preventDefault();
62
+ window.focus();
63
+ }
64
+ handleMouseEnter(e) {
65
+ var _a, _b;
66
+ (_a = this.containerDiv) === null || _a === void 0 ? void 0 : _a.classList.add('mouse-enter');
67
+ (_b = this.containerDiv) === null || _b === void 0 ? void 0 : _b.classList.remove('mouse-leave');
68
+ }
69
+ handleMouseLeave(e) {
70
+ var _a, _b;
71
+ (_a = this.containerDiv) === null || _a === void 0 ? void 0 : _a.classList.add('mouse-leave');
72
+ (_b = this.containerDiv) === null || _b === void 0 ? void 0 : _b.classList.remove('mouse-enter');
73
+ }
74
+ handleFocusChange(e, hasFocus) {
75
+ this.actionDispatcher.dispatch(client_1.FocusStateChangedAction.create(hasFocus));
76
+ }
52
77
  createDiagramLoadingOptions() {
53
78
  return undefined;
54
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glsp-diagram-widget.js","sourceRoot":"","sources":["../src/glsp-diagram-widget.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;kFAekF;AAClF,6HAA6H;AAC7H,iDAQ8B;AAC9B,yCAA8D;AAEjD,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAIpE,IAAe,iBAAiB,GAAhC,MAAe,iBAAiB;IAgBnC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;IACxC,CAAC;IAGD,UAAU;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAES,cAAc;QACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC;QAC3E,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACnD,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC7C,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEvC,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACtD,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAES,2BAA2B;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ,CAAA;AA9CqB,8CAAiB;AAEzB;IADT,IAAA,kBAAM,EAAC,cAAK,CAAC,iBAAiB,CAAC;;2DACc;AAGpC;IADT,IAAA,kBAAM,EAAC,cAAK,CAAC,WAAW,CAAC;8BACH,oBAAW;sDAAC;AAGzB;IADT,IAAA,kBAAM,EAAC,cAAK,CAAC,eAAe,CAAC;;yDACY;AAGhC;IADT,IAAA,kBAAM,EAAC,cAAK,CAAC,aAAa,CAAC;;wDACW;AAG7B;IADT,IAAA,kBAAM,EAAC,sBAAa,CAAC;8BACG,sBAAa;wDAAC;AAOvC;IADC,IAAA,yBAAa,GAAE;;;;mDAIf;4BAxBiB,iBAAiB;IADtC,IAAA,sBAAU,GAAE;GACS,iBAAiB,CA8CtC"}
1
+ {"version":3,"file":"glsp-diagram-widget.js","sourceRoot":"","sources":["../src/glsp-diagram-widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp/vscode-integration-webview",
3
- "version": "2.2.0-next.83+d6654e4",
3
+ "version": "2.2.0-next.86+f944a0f",
4
4
  "description": "Integration of a GLSP diagram in a VS Code extensions (WebView part)",
5
5
  "keywords": [
6
6
  "vscode",
@@ -50,5 +50,5 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "gitHead": "d6654e456ae3fa7e4bbed3b53da3c8fdda2fe5ce"
53
+ "gitHead": "f944a0f5a1ec16cbcc3ff5ebbd2581210e725f73"
54
54
  }
@@ -14,7 +14,7 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
 
17
- import { ModuleConfiguration } from '@eclipse-glsp/client';
17
+ import { ModuleConfiguration, contextMenuModule } from '@eclipse-glsp/client';
18
18
  import { vscodeCopyPasteModule } from './features/copyPaste/copy-paste-module';
19
19
  import { vscodeDefaultModule } from './features/default/default-module';
20
20
  import { vscodeExportModule } from './features/export/export-module';
@@ -30,5 +30,6 @@ export const VSCODE_DEFAULT_MODULES = [
30
30
  ] as const;
31
31
 
32
32
  export const VSCODE_DEFAULT_MODULE_CONFIG: ModuleConfiguration = {
33
- add: [...VSCODE_DEFAULT_MODULES]
33
+ add: [...VSCODE_DEFAULT_MODULES],
34
+ remove: [contextMenuModule]
34
35
  };
@@ -24,5 +24,5 @@ export const vscodeCopyPasteModule = new FeatureModule(
24
24
  );
25
25
  bindAsService(bind, TYPES.IDiagramStartup, CopyPasteStartup);
26
26
  },
27
- { requires: copyPasteModule }
27
+ { requires: copyPasteModule, featureId: Symbol('vscodeCopyPaste') }
28
28
  );
@@ -25,5 +25,5 @@ export const vscodeDefaultModule = new FeatureModule(
25
25
  bindAsService(bind, TYPES.IActionHandlerInitializer, HostExtensionActionHandler);
26
26
  bind(ExtensionActionKind).toConstantValue(SelectAction.KIND);
27
27
  },
28
- { requires: defaultModule }
28
+ { requires: defaultModule, featureId: Symbol('vscodeDefault') }
29
29
  );
@@ -14,9 +14,12 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
 
17
- import { ExportSvgAction, FeatureModule } from '@eclipse-glsp/client';
17
+ import { ExportSvgAction, FeatureModule, exportModule } from '@eclipse-glsp/client';
18
18
  import { ExtensionActionKind } from '../default/extension-action-handler';
19
19
 
20
- export const vscodeExportModule = new FeatureModule(bind => {
21
- bind(ExtensionActionKind).toConstantValue(ExportSvgAction.KIND);
22
- });
20
+ export const vscodeExportModule = new FeatureModule(
21
+ bind => {
22
+ bind(ExtensionActionKind).toConstantValue(ExportSvgAction.KIND);
23
+ },
24
+ { requires: exportModule, featureId: Symbol('vscodeExport') }
25
+ );
@@ -17,6 +17,9 @@
17
17
  import { FeatureModule, NavigateToExternalTargetAction, navigationModule } from '@eclipse-glsp/client';
18
18
  import { ExtensionActionKind } from '../default/extension-action-handler';
19
19
 
20
- export const vscodeNavigationModule = new FeatureModule(bind => {
21
- bind(ExtensionActionKind).toConstantValue(NavigateToExternalTargetAction.KIND);
22
- }, navigationModule);
20
+ export const vscodeNavigationModule = new FeatureModule(
21
+ bind => {
22
+ bind(ExtensionActionKind).toConstantValue(NavigateToExternalTargetAction.KIND);
23
+ },
24
+ { requires: navigationModule, featureId: Symbol('vscodeNavigation') }
25
+ );
@@ -17,9 +17,12 @@
17
17
  import { EndProgressAction, FeatureModule, MessageAction, StartProgressAction, UpdateProgressAction } from '@eclipse-glsp/client';
18
18
  import { ExtensionActionKind } from '../default/extension-action-handler';
19
19
 
20
- export const vscodeNotificationModule = new FeatureModule(bind => {
21
- bind(ExtensionActionKind).toConstantValue(MessageAction.KIND);
22
- bind(ExtensionActionKind).toConstantValue(StartProgressAction.KIND);
23
- bind(ExtensionActionKind).toConstantValue(EndProgressAction.KIND);
24
- bind(ExtensionActionKind).toConstantValue(UpdateProgressAction.KIND);
25
- });
20
+ export const vscodeNotificationModule = new FeatureModule(
21
+ bind => {
22
+ bind(ExtensionActionKind).toConstantValue(MessageAction.KIND);
23
+ bind(ExtensionActionKind).toConstantValue(StartProgressAction.KIND);
24
+ bind(ExtensionActionKind).toConstantValue(EndProgressAction.KIND);
25
+ bind(ExtensionActionKind).toConstantValue(UpdateProgressAction.KIND);
26
+ },
27
+ { featureId: Symbol('vscodeNotification') }
28
+ );
@@ -18,6 +18,7 @@
18
18
  import {
19
19
  DiagramLoader,
20
20
  DiagramLoadingOptions,
21
+ FocusStateChangedAction,
21
22
  IActionDispatcher,
22
23
  IDiagramOptions,
23
24
  ModelSource,
@@ -25,7 +26,6 @@ import {
25
26
  ViewerOptions
26
27
  } from '@eclipse-glsp/client';
27
28
  import { inject, injectable, postConstruct } from 'inversify';
28
-
29
29
  export const GLSPDiagramWidgetFactory = Symbol('GLSPDiagramWidgetFactory');
30
30
  export type GLSPDiagramWidgetFactory = () => GLSPDiagramWidget;
31
31
 
@@ -50,6 +50,8 @@ export abstract class GLSPDiagramWidget {
50
50
  return this.diagramOptions.clientId;
51
51
  }
52
52
 
53
+ protected containerDiv: HTMLDivElement | undefined;
54
+
53
55
  @postConstruct()
54
56
  initialize(): void {
55
57
  this.initializeHtml();
@@ -57,7 +59,7 @@ export abstract class GLSPDiagramWidget {
57
59
  }
58
60
 
59
61
  protected initializeHtml(): void {
60
- const containerDiv = document.getElementById(this.clientId + '_container');
62
+ const containerDiv = document.getElementById(this.clientId + '_container') as HTMLDivElement;
61
63
  if (containerDiv) {
62
64
  const svgContainer = document.createElement('div');
63
65
  svgContainer.id = this.viewerOptions.baseDiv;
@@ -66,9 +68,36 @@ export abstract class GLSPDiagramWidget {
66
68
  const hiddenContainer = document.createElement('div');
67
69
  hiddenContainer.id = this.viewerOptions.hiddenDiv;
68
70
  document.body.appendChild(hiddenContainer);
71
+ this.containerDiv = containerDiv;
72
+ containerDiv.addEventListener('mouseenter', e => this.handleMouseEnter(e));
73
+ containerDiv.addEventListener('mouseleave', e => this.handleMouseLeave(e));
74
+ window.addEventListener('focus', e => this.handleFocusChange(e, true));
75
+ window.addEventListener('blur', e => this.handleFocusChange(e, false));
76
+ window.addEventListener('contextmenu', e => this.handleContextMenu(e));
69
77
  }
70
78
  }
71
79
 
80
+ handleContextMenu(e: MouseEvent): void {
81
+ // Prevent the default context menu for now
82
+ // Should be removed once we provide a proper context menu integration
83
+ e.preventDefault();
84
+ window.focus();
85
+ }
86
+
87
+ handleMouseEnter(e: MouseEvent): void {
88
+ this.containerDiv?.classList.add('mouse-enter');
89
+ this.containerDiv?.classList.remove('mouse-leave');
90
+ }
91
+
92
+ handleMouseLeave(e: MouseEvent): void {
93
+ this.containerDiv?.classList.add('mouse-leave');
94
+ this.containerDiv?.classList.remove('mouse-enter');
95
+ }
96
+
97
+ handleFocusChange(e: FocusEvent, hasFocus: boolean): void {
98
+ this.actionDispatcher.dispatch(FocusStateChangedAction.create(hasFocus));
99
+ }
100
+
72
101
  protected createDiagramLoadingOptions(): DiagramLoadingOptions | undefined {
73
102
  return undefined;
74
103
  }