@theia/memory-inspector 1.29.0-next.50

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 (165) hide show
  1. package/LICENSE +642 -0
  2. package/README.md +71 -0
  3. package/lib/browser/diff-widget/memory-diff-options-widget.d.ts +37 -0
  4. package/lib/browser/diff-widget/memory-diff-options-widget.d.ts.map +1 -0
  5. package/lib/browser/diff-widget/memory-diff-options-widget.js +130 -0
  6. package/lib/browser/diff-widget/memory-diff-options-widget.js.map +1 -0
  7. package/lib/browser/diff-widget/memory-diff-select-widget.d.ts +51 -0
  8. package/lib/browser/diff-widget/memory-diff-select-widget.d.ts.map +1 -0
  9. package/lib/browser/diff-widget/memory-diff-select-widget.js +138 -0
  10. package/lib/browser/diff-widget/memory-diff-select-widget.js.map +1 -0
  11. package/lib/browser/diff-widget/memory-diff-table-widget.d.ts +78 -0
  12. package/lib/browser/diff-widget/memory-diff-table-widget.d.ts.map +1 -0
  13. package/lib/browser/diff-widget/memory-diff-table-widget.js +315 -0
  14. package/lib/browser/diff-widget/memory-diff-table-widget.js.map +1 -0
  15. package/lib/browser/diff-widget/memory-diff-widget-types.d.ts +42 -0
  16. package/lib/browser/diff-widget/memory-diff-widget-types.d.ts.map +1 -0
  17. package/lib/browser/diff-widget/memory-diff-widget-types.js +24 -0
  18. package/lib/browser/diff-widget/memory-diff-widget-types.js.map +1 -0
  19. package/lib/browser/editable-widget/memory-editable-table-widget.d.ts +65 -0
  20. package/lib/browser/editable-widget/memory-editable-table-widget.d.ts.map +1 -0
  21. package/lib/browser/editable-widget/memory-editable-table-widget.js +330 -0
  22. package/lib/browser/editable-widget/memory-editable-table-widget.js.map +1 -0
  23. package/lib/browser/memory-inspector-frontend-contribution.d.ts +47 -0
  24. package/lib/browser/memory-inspector-frontend-contribution.d.ts.map +1 -0
  25. package/lib/browser/memory-inspector-frontend-contribution.js +292 -0
  26. package/lib/browser/memory-inspector-frontend-contribution.js.map +1 -0
  27. package/lib/browser/memory-inspector-frontend-module.d.ts +22 -0
  28. package/lib/browser/memory-inspector-frontend-module.d.ts.map +1 -0
  29. package/lib/browser/memory-inspector-frontend-module.js +88 -0
  30. package/lib/browser/memory-inspector-frontend-module.js.map +1 -0
  31. package/lib/browser/memory-provider/cdt-gdb-memory-provider.d.ts +36 -0
  32. package/lib/browser/memory-provider/cdt-gdb-memory-provider.d.ts.map +1 -0
  33. package/lib/browser/memory-provider/cdt-gdb-memory-provider.js +131 -0
  34. package/lib/browser/memory-provider/cdt-gdb-memory-provider.js.map +1 -0
  35. package/lib/browser/memory-provider/memory-provider-service.d.ts +37 -0
  36. package/lib/browser/memory-provider/memory-provider-service.d.ts.map +1 -0
  37. package/lib/browser/memory-provider/memory-provider-service.js +102 -0
  38. package/lib/browser/memory-provider/memory-provider-service.js.map +1 -0
  39. package/lib/browser/memory-provider/memory-provider.d.ts +66 -0
  40. package/lib/browser/memory-provider/memory-provider.d.ts.map +1 -0
  41. package/lib/browser/memory-provider/memory-provider.js +97 -0
  42. package/lib/browser/memory-provider/memory-provider.js.map +1 -0
  43. package/lib/browser/memory-provider/memory-provider.spec.d.ts +17 -0
  44. package/lib/browser/memory-provider/memory-provider.spec.d.ts.map +1 -0
  45. package/lib/browser/memory-provider/memory-provider.spec.js +24 -0
  46. package/lib/browser/memory-provider/memory-provider.spec.js.map +1 -0
  47. package/lib/browser/memory-widget/memory-options-widget.d.ts +137 -0
  48. package/lib/browser/memory-widget/memory-options-widget.d.ts.map +1 -0
  49. package/lib/browser/memory-widget/memory-options-widget.js +562 -0
  50. package/lib/browser/memory-widget/memory-options-widget.js.map +1 -0
  51. package/lib/browser/memory-widget/memory-table-widget.d.ts +146 -0
  52. package/lib/browser/memory-widget/memory-table-widget.d.ts.map +1 -0
  53. package/lib/browser/memory-widget/memory-table-widget.js +485 -0
  54. package/lib/browser/memory-widget/memory-table-widget.js.map +1 -0
  55. package/lib/browser/memory-widget/memory-widget.d.ts +33 -0
  56. package/lib/browser/memory-widget/memory-widget.d.ts.map +1 -0
  57. package/lib/browser/memory-widget/memory-widget.js +110 -0
  58. package/lib/browser/memory-widget/memory-widget.js.map +1 -0
  59. package/lib/browser/register-widget/register-filter-service.d.ts +43 -0
  60. package/lib/browser/register-widget/register-filter-service.d.ts.map +1 -0
  61. package/lib/browser/register-widget/register-filter-service.js +83 -0
  62. package/lib/browser/register-widget/register-filter-service.js.map +1 -0
  63. package/lib/browser/register-widget/register-options-widget.d.ts +82 -0
  64. package/lib/browser/register-widget/register-options-widget.d.ts.map +1 -0
  65. package/lib/browser/register-widget/register-options-widget.js +344 -0
  66. package/lib/browser/register-widget/register-options-widget.js.map +1 -0
  67. package/lib/browser/register-widget/register-table-widget.d.ts +78 -0
  68. package/lib/browser/register-widget/register-table-widget.d.ts.map +1 -0
  69. package/lib/browser/register-widget/register-table-widget.js +237 -0
  70. package/lib/browser/register-widget/register-table-widget.js.map +1 -0
  71. package/lib/browser/register-widget/register-widget-types.d.ts +30 -0
  72. package/lib/browser/register-widget/register-widget-types.d.ts.map +1 -0
  73. package/lib/browser/register-widget/register-widget-types.js +36 -0
  74. package/lib/browser/register-widget/register-widget-types.js.map +1 -0
  75. package/lib/browser/utils/memory-commands.d.ts +28 -0
  76. package/lib/browser/utils/memory-commands.d.ts.map +1 -0
  77. package/lib/browser/utils/memory-commands.js +68 -0
  78. package/lib/browser/utils/memory-commands.js.map +1 -0
  79. package/lib/browser/utils/memory-hover-renderer.d.ts +34 -0
  80. package/lib/browser/utils/memory-hover-renderer.d.ts.map +1 -0
  81. package/lib/browser/utils/memory-hover-renderer.js +112 -0
  82. package/lib/browser/utils/memory-hover-renderer.js.map +1 -0
  83. package/lib/browser/utils/memory-recents.d.ts +28 -0
  84. package/lib/browser/utils/memory-recents.d.ts.map +1 -0
  85. package/lib/browser/utils/memory-recents.js +53 -0
  86. package/lib/browser/utils/memory-recents.js.map +1 -0
  87. package/lib/browser/utils/memory-widget-components.d.ts +59 -0
  88. package/lib/browser/utils/memory-widget-components.d.ts.map +1 -0
  89. package/lib/browser/utils/memory-widget-components.js +70 -0
  90. package/lib/browser/utils/memory-widget-components.js.map +1 -0
  91. package/lib/browser/utils/memory-widget-manager.d.ts +51 -0
  92. package/lib/browser/utils/memory-widget-manager.d.ts.map +1 -0
  93. package/lib/browser/utils/memory-widget-manager.js +183 -0
  94. package/lib/browser/utils/memory-widget-manager.js.map +1 -0
  95. package/lib/browser/utils/memory-widget-utils.d.ts +114 -0
  96. package/lib/browser/utils/memory-widget-utils.d.ts.map +1 -0
  97. package/lib/browser/utils/memory-widget-utils.js +43 -0
  98. package/lib/browser/utils/memory-widget-utils.js.map +1 -0
  99. package/lib/browser/utils/memory-widget-variable-utils.d.ts +58 -0
  100. package/lib/browser/utils/memory-widget-variable-utils.d.ts.map +1 -0
  101. package/lib/browser/utils/memory-widget-variable-utils.js +144 -0
  102. package/lib/browser/utils/memory-widget-variable-utils.js.map +1 -0
  103. package/lib/browser/utils/multi-select-bar.d.ts +32 -0
  104. package/lib/browser/utils/multi-select-bar.d.ts.map +1 -0
  105. package/lib/browser/utils/multi-select-bar.js +35 -0
  106. package/lib/browser/utils/multi-select-bar.js.map +1 -0
  107. package/lib/browser/wrapper-widgets/memory-dock-panel.d.ts +25 -0
  108. package/lib/browser/wrapper-widgets/memory-dock-panel.d.ts.map +1 -0
  109. package/lib/browser/wrapper-widgets/memory-dock-panel.js +49 -0
  110. package/lib/browser/wrapper-widgets/memory-dock-panel.js.map +1 -0
  111. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.d.ts +24 -0
  112. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.d.ts.map +1 -0
  113. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.js +58 -0
  114. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.js.map +1 -0
  115. package/lib/browser/wrapper-widgets/memory-layout-widget.d.ts +51 -0
  116. package/lib/browser/wrapper-widgets/memory-layout-widget.d.ts.map +1 -0
  117. package/lib/browser/wrapper-widgets/memory-layout-widget.js +189 -0
  118. package/lib/browser/wrapper-widgets/memory-layout-widget.js.map +1 -0
  119. package/lib/common/util.d.ts +22 -0
  120. package/lib/common/util.d.ts.map +1 -0
  121. package/lib/common/util.js +31 -0
  122. package/lib/common/util.js.map +1 -0
  123. package/lib/common/utils.spec.d.ts +17 -0
  124. package/lib/common/utils.spec.d.ts.map +1 -0
  125. package/lib/common/utils.spec.js +46 -0
  126. package/lib/common/utils.spec.js.map +1 -0
  127. package/package.json +47 -0
  128. package/src/browser/diff-widget/memory-diff-options-widget.tsx +152 -0
  129. package/src/browser/diff-widget/memory-diff-select-widget.tsx +163 -0
  130. package/src/browser/diff-widget/memory-diff-table-widget.tsx +366 -0
  131. package/src/browser/diff-widget/memory-diff-widget-types.ts +45 -0
  132. package/src/browser/editable-widget/memory-editable-table-widget.tsx +360 -0
  133. package/src/browser/memory-inspector-frontend-contribution.ts +301 -0
  134. package/src/browser/memory-inspector-frontend-module.ts +118 -0
  135. package/src/browser/memory-provider/cdt-gdb-memory-provider.ts +133 -0
  136. package/src/browser/memory-provider/memory-provider-service.ts +86 -0
  137. package/src/browser/memory-provider/memory-provider.spec.ts +23 -0
  138. package/src/browser/memory-provider/memory-provider.ts +119 -0
  139. package/src/browser/memory-widget/memory-options-widget.tsx +738 -0
  140. package/src/browser/memory-widget/memory-table-widget.tsx +621 -0
  141. package/src/browser/memory-widget/memory-widget.ts +110 -0
  142. package/src/browser/register-widget/register-filter-service.ts +77 -0
  143. package/src/browser/register-widget/register-options-widget.tsx +393 -0
  144. package/src/browser/register-widget/register-table-widget.tsx +277 -0
  145. package/src/browser/register-widget/register-widget-types.ts +45 -0
  146. package/src/browser/register-widget/register-widget.css +34 -0
  147. package/src/browser/style/index.css +750 -0
  148. package/src/browser/style/memory-lock.svg +21 -0
  149. package/src/browser/style/memory-view.svg +20 -0
  150. package/src/browser/style/register-lock.svg +29 -0
  151. package/src/browser/style/register-view.svg +28 -0
  152. package/src/browser/utils/memory-commands.ts +76 -0
  153. package/src/browser/utils/memory-hover-renderer.ts +113 -0
  154. package/src/browser/utils/memory-recents.ts +58 -0
  155. package/src/browser/utils/memory-widget-components.tsx +193 -0
  156. package/src/browser/utils/memory-widget-manager.ts +179 -0
  157. package/src/browser/utils/memory-widget-utils.tsx +132 -0
  158. package/src/browser/utils/memory-widget-variable-utils.ts +170 -0
  159. package/src/browser/utils/multi-select-bar.css +62 -0
  160. package/src/browser/utils/multi-select-bar.tsx +75 -0
  161. package/src/browser/wrapper-widgets/memory-dock-panel.ts +51 -0
  162. package/src/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.tsx +38 -0
  163. package/src/browser/wrapper-widgets/memory-layout-widget.tsx +163 -0
  164. package/src/common/util.ts +28 -0
  165. package/src/common/utils.spec.ts +52 -0
@@ -0,0 +1,562 @@
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (C) 2021 Ericsson and others.
4
+ *
5
+ * This program and the accompanying materials are made available under the
6
+ * terms of the Eclipse Public License v. 2.0 which is available at
7
+ * http://www.eclipse.org/legal/epl-2.0.
8
+ *
9
+ * This Source Code may also be made available under the following Secondary
10
+ * Licenses when the conditions for such availability set forth in the Eclipse
11
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ * with the GNU Classpath Exception which is available at
13
+ * https://www.gnu.org/software/classpath/license.html.
14
+ *
15
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ ********************************************************************************/
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ var MemoryOptionsWidget_1;
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.MemoryOptionsWidget = exports.AUTO_UPDATE_TOGGLE_ID = exports.ASCII_TOGGLE_ID = exports.ENDIAN_SELECT_ID = exports.BYTES_PER_GROUP_FIELD_ID = exports.BYTES_PER_ROW_FIELD_ID = exports.LOCATION_OFFSET_FIELD_ID = exports.LENGTH_FIELD_ID = exports.LOCATION_FIELD_ID = exports.EMPTY_MEMORY = void 0;
29
+ const core_1 = require("@theia/core");
30
+ const browser_1 = require("@theia/core/lib/browser");
31
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
32
+ const inversify_1 = require("@theia/core/shared/inversify");
33
+ const React = require("@theia/core/shared/react");
34
+ const debug_session_1 = require("@theia/debug/lib/browser/debug-session");
35
+ const debug_session_manager_1 = require("@theia/debug/lib/browser/debug-session-manager");
36
+ const Long = require("long");
37
+ const memory_provider_service_1 = require("../memory-provider/memory-provider-service");
38
+ const memory_recents_1 = require("../utils/memory-recents");
39
+ const memory_widget_components_1 = require("../utils/memory-widget-components");
40
+ const memory_widget_utils_1 = require("../utils/memory-widget-utils");
41
+ const multi_select_bar_1 = require("../utils/multi-select-bar");
42
+ const debounce = require("@theia/core/shared/lodash.debounce");
43
+ exports.EMPTY_MEMORY = (0, core_1.deepFreeze)({
44
+ bytes: new Uint8Array(),
45
+ address: new Long(0, 0, true),
46
+ });
47
+ exports.LOCATION_FIELD_ID = 't-mv-location';
48
+ exports.LENGTH_FIELD_ID = 't-mv-length';
49
+ exports.LOCATION_OFFSET_FIELD_ID = 't-mv-location-offset';
50
+ exports.BYTES_PER_ROW_FIELD_ID = 't-mv-bytesrow';
51
+ exports.BYTES_PER_GROUP_FIELD_ID = 't-mv-bytesgroup';
52
+ exports.ENDIAN_SELECT_ID = 't-mv-endiannesss';
53
+ exports.ASCII_TOGGLE_ID = 't-mv-ascii-toggle';
54
+ exports.AUTO_UPDATE_TOGGLE_ID = 't-mv-auto-update-toggle';
55
+ let MemoryOptionsWidget = MemoryOptionsWidget_1 = class MemoryOptionsWidget extends browser_1.ReactWidget {
56
+ constructor() {
57
+ super(...arguments);
58
+ this.iconClass = 'memory-view-icon';
59
+ this.lockIconClass = 'memory-lock-icon';
60
+ this.additionalColumnSelectLabel = core_1.nls.localize('theia/memory-inspector/extraColumn', 'Extra Column');
61
+ this.sessionListeners = new core_1.DisposableCollection();
62
+ this.onOptionsChangedEmitter = new core_1.Emitter();
63
+ this.onOptionsChanged = this.onOptionsChangedEmitter.event;
64
+ this.onMemoryChangedEmitter = new core_1.Emitter();
65
+ this.onMemoryChanged = this.onMemoryChangedEmitter.event;
66
+ this.memoryReadResult = exports.EMPTY_MEMORY;
67
+ this.columnsDisplayed = {
68
+ address: {
69
+ label: core_1.nls.localize('theia/memory-inspector/address', 'Address'),
70
+ doRender: true
71
+ },
72
+ data: {
73
+ label: core_1.nls.localize('theia/memory-inspector/data', 'Data'),
74
+ doRender: true
75
+ },
76
+ variables: {
77
+ label: core_1.nls.localizeByDefault('Variables'),
78
+ doRender: true
79
+ },
80
+ ascii: {
81
+ label: core_1.nls.localize('theia/memory-inspector/ascii', 'ASCII'),
82
+ doRender: false
83
+ },
84
+ };
85
+ this.byteSize = 8;
86
+ this.bytesPerGroup = 1;
87
+ this.groupsPerRow = 4;
88
+ this.variables = [];
89
+ this.endianness = memory_widget_utils_1.Interfaces.Endianness.Little;
90
+ this.memoryReadError = core_1.nls.localize('theia/memory-inspector/memory/readError/noContents', 'No memory contents currently available.');
91
+ this.address = 0;
92
+ this.offset = 0;
93
+ this.readLength = 256;
94
+ this.doDisplaySettings = false;
95
+ this.doUpdateAutomatically = true;
96
+ this.showMemoryError = false;
97
+ this.errorTimeout = undefined;
98
+ this.recentLocations = new memory_recents_1.Recents();
99
+ this.showTitleEditIcon = false;
100
+ this.isTitleEditable = false;
101
+ this.handleColumnSelectionChange = (columnLabel, doShow) => this.doHandleColumnSelectionChange(columnLabel, doShow);
102
+ this.toggleAutoUpdate = (e) => {
103
+ var _a;
104
+ if (e.nativeEvent.type === 'click') {
105
+ e.currentTarget.blur();
106
+ }
107
+ if ('key' in e && ((_a = browser_1.KeyCode.createKeyCode(e.nativeEvent).key) === null || _a === void 0 ? void 0 : _a.keyCode) === browser_1.Key.TAB.keyCode) {
108
+ return;
109
+ }
110
+ this.doUpdateAutomatically = !this.doUpdateAutomatically;
111
+ if (this.doUpdateAutomatically) {
112
+ this.title.iconClass = this.iconClass;
113
+ }
114
+ else {
115
+ this.title.iconClass = this.lockIconClass;
116
+ }
117
+ this.fireDidChangeOptions();
118
+ };
119
+ this.onByteSizeChange = (event) => {
120
+ this.byteSize = parseInt(event.target.value);
121
+ this.fireDidChangeOptions(event.target.id);
122
+ };
123
+ this.toggleDoShowSettings = (e) => {
124
+ var _a;
125
+ if (!('key' in e) || ((_a = browser_1.KeyCode.createKeyCode(e.nativeEvent).key) === null || _a === void 0 ? void 0 : _a.keyCode) === browser_1.Key.TAB.keyCode) {
126
+ this.doDisplaySettings = !this.doDisplaySettings;
127
+ this.update();
128
+ }
129
+ };
130
+ this.assignLocationRef = location => {
131
+ this.addressField = location !== null && location !== void 0 ? location : undefined;
132
+ };
133
+ this.assignReadLengthRef = readLength => {
134
+ this.readLengthField = readLength !== null && readLength !== void 0 ? readLength : undefined;
135
+ };
136
+ this.assignOffsetRef = offset => {
137
+ this.offsetField = offset !== null && offset !== void 0 ? offset : undefined;
138
+ };
139
+ this.setAddressFromSelect = (e) => {
140
+ if (this.addressField) {
141
+ this.addressField.value = e.target.value;
142
+ }
143
+ };
144
+ this.activateHeaderInputField = (e) => {
145
+ var _a, _b;
146
+ if (!this.isTitleEditable) {
147
+ const isMouseDown = !('key' in e);
148
+ const isActivationKey = 'key' in e && (((_a = browser_1.KeyCode.createKeyCode(e.nativeEvent).key) === null || _a === void 0 ? void 0 : _a.keyCode) === browser_1.Key.SPACE.keyCode
149
+ || ((_b = browser_1.KeyCode.createKeyCode(e.nativeEvent).key) === null || _b === void 0 ? void 0 : _b.keyCode) === browser_1.Key.ENTER.keyCode);
150
+ if (isMouseDown || isActivationKey) {
151
+ if (isMouseDown) {
152
+ e.currentTarget.blur();
153
+ }
154
+ this.isTitleEditable = true;
155
+ this.update();
156
+ }
157
+ }
158
+ };
159
+ this.saveHeaderInputValue = (e) => {
160
+ const isMouseDown = !('key' in e);
161
+ const isSaveKey = 'key' in e && e.key === 'Enter';
162
+ const isCancelKey = 'key' in e && e.key === 'Escape';
163
+ e.stopPropagation();
164
+ if (isMouseDown || isSaveKey || isCancelKey) {
165
+ this.updateHeader(isCancelKey);
166
+ }
167
+ };
168
+ this.assignHeaderInputRef = (element) => {
169
+ if (element) {
170
+ this.headerInputField = element;
171
+ element.focus();
172
+ }
173
+ };
174
+ this.doShowMemoryErrors = (doClearError = false) => {
175
+ if (this.errorTimeout !== undefined) {
176
+ clearTimeout(this.errorTimeout);
177
+ }
178
+ if (doClearError) {
179
+ this.showMemoryError = false;
180
+ this.update();
181
+ this.errorTimeout = undefined;
182
+ return;
183
+ }
184
+ this.showMemoryError = true;
185
+ this.update();
186
+ this.errorTimeout = setTimeout(() => {
187
+ this.showMemoryError = false;
188
+ this.update();
189
+ this.errorTimeout = undefined;
190
+ }, memory_widget_utils_1.Constants.ERROR_TIMEOUT);
191
+ };
192
+ this.doRefresh = (event) => {
193
+ if ('key' in event && event.key !== 'Enter') {
194
+ return;
195
+ }
196
+ this.updateMemoryView();
197
+ };
198
+ this.updateMemoryView = debounce(this.doUpdateMemoryView.bind(this), memory_widget_utils_1.Constants.DEBOUNCE_TIME, { trailing: true });
199
+ // Callbacks for when the various view parameters change.
200
+ /**
201
+ * Handle bytes per row changed event.
202
+ */
203
+ this.onGroupsPerRowChange = (event) => {
204
+ const { value, id } = event.target;
205
+ this.groupsPerRow = parseInt(value);
206
+ this.fireDidChangeOptions(id);
207
+ };
208
+ /**
209
+ * Handle bytes per group changed event.
210
+ */
211
+ this.onBytesPerGroupChange = (event) => {
212
+ const { value, id } = event.target;
213
+ this.bytesPerGroup = parseInt(value);
214
+ this.fireDidChangeOptions(id);
215
+ };
216
+ /**
217
+ * Handle endianness changed event.
218
+ */
219
+ this.onEndiannessChange = (event) => {
220
+ const { value, id } = event.target;
221
+ if (value !== memory_widget_utils_1.Interfaces.Endianness.Big && value !== memory_widget_utils_1.Interfaces.Endianness.Little) {
222
+ return;
223
+ }
224
+ this.endianness = value;
225
+ this.fireDidChangeOptions(id);
226
+ };
227
+ }
228
+ get memory() {
229
+ return Object.assign(Object.assign({}, this.memoryReadResult), { variables: this.variables });
230
+ }
231
+ get options() {
232
+ return this.storeState();
233
+ }
234
+ init() {
235
+ this.addClass(MemoryOptionsWidget_1.ID);
236
+ this.title.label = core_1.nls.localize('theia/memory-inspector/memory', 'Memory ({0})', this.memoryWidgetOptions.displayId);
237
+ this.title.caption = core_1.nls.localize('theia/memory-inspector/memory', 'Memory ({0})', this.memoryWidgetOptions.displayId);
238
+ this.title.iconClass = this.iconClass;
239
+ this.title.closable = true;
240
+ if (this.memoryWidgetOptions.dynamic !== false) {
241
+ this.toDispose.push(this.sessionManager.onDidChangeActiveDebugSession(({ current }) => {
242
+ this.setUpListeners(current);
243
+ }));
244
+ this.toDispose.push(this.sessionManager.onDidCreateDebugSession(current => {
245
+ this.setUpListeners(current);
246
+ }));
247
+ this.setUpListeners(this.sessionManager.currentSession);
248
+ }
249
+ this.toDispose.push(this.onOptionsChanged(() => this.update()));
250
+ this.update();
251
+ }
252
+ async setAddressAndGo(newAddress, newOffset, newLength, direction) {
253
+ let doUpdate = false;
254
+ const originalValues = {
255
+ offset: '',
256
+ length: '',
257
+ };
258
+ if (this.addressField) {
259
+ this.addressField.value = newAddress;
260
+ doUpdate = true;
261
+ }
262
+ if (this.offsetField && newOffset !== undefined) {
263
+ originalValues.offset = this.offsetField.value;
264
+ this.offsetField.value = newOffset.toString();
265
+ doUpdate = true;
266
+ }
267
+ if (this.readLengthField && newLength !== undefined) {
268
+ originalValues.length = this.readLengthField.value;
269
+ this.readLengthField.value = newLength.toString();
270
+ doUpdate = true;
271
+ }
272
+ if (doUpdate && this.readLengthField && this.offsetField) {
273
+ this.pinnedMemoryReadResult = new promise_util_1.Deferred();
274
+ this.updateMemoryView();
275
+ const result = await this.pinnedMemoryReadResult.promise;
276
+ if (result === false) {
277
+ // Memory request errored
278
+ this.readLengthField.value = originalValues.length;
279
+ this.offsetField.value = originalValues.offset;
280
+ }
281
+ if (result) {
282
+ // Memory request returned some memory
283
+ const resultLength = result.bytes.length * 8 / this.byteSize;
284
+ const lengthFieldValue = parseInt(this.readLengthField.value);
285
+ if (lengthFieldValue !== resultLength) {
286
+ this.memoryReadError = core_1.nls.localize('theia/memory-inspector/memory/readError/bounds', 'Memory bounds exceeded, result will be truncated.');
287
+ this.doShowMemoryErrors();
288
+ this.readLengthField.value = resultLength.toString();
289
+ if (direction === 'above') {
290
+ this.offsetField.value = `${parseInt(originalValues.offset) - (resultLength - parseInt(originalValues.length))}`;
291
+ }
292
+ this.update();
293
+ }
294
+ }
295
+ }
296
+ return undefined;
297
+ }
298
+ setUpListeners(session) {
299
+ this.sessionListeners.dispose();
300
+ this.sessionListeners = new core_1.DisposableCollection(core_1.Disposable.create(() => this.handleActiveSessionChange()));
301
+ if (session) {
302
+ this.sessionListeners.push(session.onDidChange(() => this.handleSessionChange()));
303
+ }
304
+ }
305
+ handleActiveSessionChange() {
306
+ const isDynamic = this.memoryWidgetOptions.dynamic !== false;
307
+ if (isDynamic && this.doUpdateAutomatically) {
308
+ this.memoryReadResult = exports.EMPTY_MEMORY;
309
+ this.fireDidChangeMemory();
310
+ }
311
+ }
312
+ handleSessionChange() {
313
+ var _a, _b;
314
+ const isStopped = ((_a = this.sessionManager.currentSession) === null || _a === void 0 ? void 0 : _a.state) === debug_session_1.DebugState.Stopped;
315
+ const isReadyForQuery = !!((_b = this.sessionManager.currentSession) === null || _b === void 0 ? void 0 : _b.currentFrame);
316
+ const isDynamic = this.memoryWidgetOptions.dynamic !== false;
317
+ if (isStopped && isReadyForQuery && isDynamic && this.doUpdateAutomatically && this.memoryReadResult !== exports.EMPTY_MEMORY) {
318
+ this.updateMemoryView();
319
+ }
320
+ }
321
+ onActivateRequest(msg) {
322
+ super.onActivateRequest(msg);
323
+ this.acceptFocus();
324
+ }
325
+ acceptFocus() {
326
+ if (this.doUpdateAutomatically) {
327
+ if (this.addressField) {
328
+ this.addressField.focus();
329
+ this.addressField.select();
330
+ }
331
+ }
332
+ else {
333
+ const settingsCog = this.node.querySelector('.toggle-settings-click-zone');
334
+ settingsCog === null || settingsCog === void 0 ? void 0 : settingsCog.focus();
335
+ }
336
+ }
337
+ doHandleColumnSelectionChange(columnLabel, doShow) {
338
+ if (columnLabel in this.columnsDisplayed) {
339
+ this.columnsDisplayed[columnLabel].doRender = doShow;
340
+ this.fireDidChangeOptions(exports.ASCII_TOGGLE_ID);
341
+ }
342
+ }
343
+ onAfterAttach(msg) {
344
+ super.onAfterAttach(msg);
345
+ if (this.memoryWidgetOptions.dynamic !== false) {
346
+ if (this.addressField) {
347
+ this.addressField.value = this.address.toString();
348
+ }
349
+ }
350
+ }
351
+ render() {
352
+ return (React.createElement("div", { className: 't-mv-container' }, this.renderInputContainer()));
353
+ }
354
+ renderInputContainer() {
355
+ return (React.createElement("div", { className: 't-mv-settings-container' },
356
+ React.createElement("div", { className: 't-mv-wrapper' },
357
+ this.renderToolbar(),
358
+ this.renderMemoryLocationGroup(),
359
+ this.doDisplaySettings && (React.createElement("div", { className: 't-mv-toggle-settings-wrapper' }, this.renderByteDisplayGroup())))));
360
+ }
361
+ renderByteDisplayGroup() {
362
+ return (React.createElement("div", { className: 't-mv-group settings-group' },
363
+ React.createElement(memory_widget_components_1.MWSelect, { id: 'byte-size-select', label: core_1.nls.localize('theia/memory-inspector/byteSize', 'Byte Size'), value: this.byteSize.toString(), onChange: this.onByteSizeChange, options: ['8', '16', '32', '64'] }),
364
+ React.createElement(memory_widget_components_1.MWSelect, { id: exports.BYTES_PER_GROUP_FIELD_ID, label: core_1.nls.localize('theia/memory-inspector/bytesPerGroup', 'Bytes Per Group'), value: this.bytesPerGroup.toString(), onChange: this.onBytesPerGroupChange, options: ['1', '2', '4', '8', '16'] }),
365
+ React.createElement(memory_widget_components_1.MWSelect, { id: exports.BYTES_PER_ROW_FIELD_ID, label: core_1.nls.localize('theia/memory-inspector/groupsPerRow', 'Groups Per Row'), value: this.groupsPerRow.toString(), onChange: this.onGroupsPerRowChange, options: ['1', '2', '4', '8', '16', '32'] }),
366
+ React.createElement(memory_widget_components_1.MWSelect, { id: exports.ENDIAN_SELECT_ID, label: core_1.nls.localize('theia/memory-inspector/endianness', 'Endianness'), value: this.endianness, onChange: this.onEndiannessChange, options: [memory_widget_utils_1.Interfaces.Endianness.Little, memory_widget_utils_1.Interfaces.Endianness.Big] }),
367
+ React.createElement(multi_select_bar_1.MWMultiSelect, { id: exports.ASCII_TOGGLE_ID, label: core_1.nls.localize('theia/memory-inspector/columns', 'Columns'), items: this.getOptionalColumns(), onSelectionChanged: this.handleColumnSelectionChange })));
368
+ }
369
+ getObligatoryColumnIds() {
370
+ return ['address', 'data'];
371
+ }
372
+ getOptionalColumns() {
373
+ const obligatoryColumns = new Set(this.getObligatoryColumnIds());
374
+ return Object.entries(this.columnsDisplayed)
375
+ .reduce((accumulated, [id, { doRender, label }]) => {
376
+ if (!obligatoryColumns.has(id)) {
377
+ accumulated.push({ id, label, defaultChecked: doRender });
378
+ }
379
+ return accumulated;
380
+ }, []);
381
+ }
382
+ renderMemoryLocationGroup() {
383
+ return (React.createElement(React.Fragment, null,
384
+ React.createElement("div", { className: 't-mv-group view-group' },
385
+ React.createElement(memory_widget_components_1.MWInputWithSelect, { id: exports.LOCATION_FIELD_ID, label: core_1.nls.localize('theia/memory-inspector/address', 'Address'), title: core_1.nls.localize('theia/memory-inspector/addressTooltip', 'Memory location to display, an address or expression evaluating to an address'), defaultValue: `${this.address}`, onSelectChange: this.setAddressFromSelect, passRef: this.assignLocationRef, onKeyDown: this.doRefresh, options: [...this.recentLocations.values], disabled: !this.doUpdateAutomatically }),
386
+ React.createElement(memory_widget_components_1.MWInput, { id: exports.LOCATION_OFFSET_FIELD_ID, label: core_1.nls.localize('theia/memory-inspector/offset', 'Offset'), title: core_1.nls.localize('theia/memory-inspector/offsetTooltip', 'Offset to be added to the current memory location, when navigating'), defaultValue: '0', passRef: this.assignOffsetRef, onKeyDown: this.doRefresh, disabled: !this.doUpdateAutomatically }),
387
+ React.createElement(memory_widget_components_1.MWInput, { id: exports.LENGTH_FIELD_ID, label: core_1.nls.localize('theia/memory-inspector/length', 'Length'), title: core_1.nls.localize('theia/memory-inspector/lengthTooltip', 'Number of bytes to fetch, in decimal or hexadecimal'), defaultValue: this.readLength.toString(), passRef: this.assignReadLengthRef, onChange: memory_widget_utils_1.Utils.validateNumericalInputs, onKeyDown: this.doRefresh, disabled: !this.doUpdateAutomatically }),
388
+ React.createElement("button", { type: 'button', className: 'theia-button main view-group-go-button', onClick: this.doRefresh, disabled: !this.doUpdateAutomatically, title: core_1.nls.localizeByDefault('Go') }, core_1.nls.localizeByDefault('Go'))),
389
+ React.createElement("div", { className: `t-mv-memory-fetch-error${this.showMemoryError ? ' show' : ' hide'}` }, this.memoryReadError)));
390
+ }
391
+ updateHeader(isCancelKey) {
392
+ if (!isCancelKey && this.headerInputField) {
393
+ this.title.label = this.headerInputField.value;
394
+ this.title.caption = this.headerInputField.value;
395
+ }
396
+ this.isTitleEditable = false;
397
+ this.update();
398
+ }
399
+ renderToolbar() {
400
+ return (React.createElement("div", { className: 'memory-widget-toolbar' },
401
+ this.renderLockIcon(),
402
+ this.renderEditableTitleField(),
403
+ this.renderSettingsContainer()));
404
+ }
405
+ renderSettingsContainer() {
406
+ return React.createElement("div", { className: 'toggle-settings-container' },
407
+ React.createElement("div", { className: 'toggle-settings-click-zone no-select', tabIndex: 0, "aria-label": this.doDisplaySettings ?
408
+ core_1.nls.localize('theia/memory-inspector/memory/hideSettings', 'Hide Settings Panel') :
409
+ core_1.nls.localize('theia/memory-inspector/memory/showSettings', 'Show Settings Panel'), role: 'button', onClick: this.toggleDoShowSettings, onKeyDown: this.toggleDoShowSettings, title: this.doDisplaySettings ?
410
+ core_1.nls.localize('theia/memory-inspector/memory/hideSettings', 'Hide Settings Panel') :
411
+ core_1.nls.localize('theia/memory-inspector/memory/showSettings', 'Show Settings Panel') },
412
+ React.createElement("i", { className: 'codicon codicon-settings-gear' }),
413
+ React.createElement("span", null, this.doDisplaySettings ?
414
+ core_1.nls.localize('theia/memory-inspector/closeSettings', 'Close Settings') :
415
+ core_1.nls.localizeByDefault('Settings'))));
416
+ }
417
+ renderLockIcon() {
418
+ return this.memoryWidgetOptions.dynamic !== false && (React.createElement("div", { className: 'memory-widget-auto-updates-container' },
419
+ React.createElement("div", { className: `fa fa-${this.doUpdateAutomatically ? 'unlock' : 'lock'}`, id: exports.AUTO_UPDATE_TOGGLE_ID, title: this.doUpdateAutomatically ?
420
+ core_1.nls.localize('theia/memory-inspector/memory/freeze', 'Freeze Memory View') :
421
+ core_1.nls.localize('theia/memory-inspector/memory/unfreeze', 'Unfreeze Memory View'), onClick: this.toggleAutoUpdate, onKeyDown: this.toggleAutoUpdate, role: 'button', tabIndex: 0 })));
422
+ }
423
+ renderEditableTitleField() {
424
+ return (React.createElement("div", { className: 'memory-widget-header-click-zone', tabIndex: 0, onClick: this.activateHeaderInputField, onKeyDown: this.activateHeaderInputField, role: 'button' },
425
+ !this.isTitleEditable
426
+ ? (React.createElement("h2", { className: `${MemoryOptionsWidget_1.WIDGET_H2_CLASS}${!this.doUpdateAutomatically ? ' disabled' : ''} no-select` }, this.title.label))
427
+ : React.createElement("input", { className: 'theia-input', type: 'text', defaultValue: this.title.label, onKeyDown: this.saveHeaderInputValue, spellCheck: false, ref: this.assignHeaderInputRef }),
428
+ !this.isTitleEditable && (React.createElement("div", { className: `fa fa-pencil${this.showTitleEditIcon ? ' show' : ' hide'}` })),
429
+ this.isTitleEditable && (React.createElement("div", { className: 'fa fa-save', onClick: this.saveHeaderInputValue, onKeyDown: this.saveHeaderInputValue, role: 'button', tabIndex: 0, title: core_1.nls.localizeByDefault('Save') }))));
430
+ }
431
+ storeState() {
432
+ var _a, _b, _c, _d, _e, _f;
433
+ return {
434
+ address: (_b = (_a = this.addressField) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.address,
435
+ offset: (_d = parseInt(`${(_c = this.offsetField) === null || _c === void 0 ? void 0 : _c.value}`)) !== null && _d !== void 0 ? _d : this.offset,
436
+ length: (_f = parseInt(`${(_e = this.readLengthField) === null || _e === void 0 ? void 0 : _e.value}`)) !== null && _f !== void 0 ? _f : this.readLength,
437
+ byteSize: this.byteSize,
438
+ bytesPerGroup: this.bytesPerGroup,
439
+ groupsPerRow: this.groupsPerRow,
440
+ endianness: this.endianness,
441
+ doDisplaySettings: this.doDisplaySettings,
442
+ columnsDisplayed: this.columnsDisplayed,
443
+ recentLocationsArray: this.recentLocations.values,
444
+ isFrozen: !this.doUpdateAutomatically,
445
+ doUpdateAutomatically: this.doUpdateAutomatically,
446
+ };
447
+ }
448
+ restoreState(oldState) {
449
+ var _a, _b, _c, _d, _e, _f, _g, _h;
450
+ this.address = (_a = oldState.address) !== null && _a !== void 0 ? _a : this.address;
451
+ this.offset = (_b = oldState.offset) !== null && _b !== void 0 ? _b : this.offset;
452
+ this.readLength = (_c = oldState.length) !== null && _c !== void 0 ? _c : this.readLength;
453
+ this.byteSize = (_d = oldState.byteSize) !== null && _d !== void 0 ? _d : this.byteSize;
454
+ this.bytesPerGroup = (_e = oldState.bytesPerGroup) !== null && _e !== void 0 ? _e : this.bytesPerGroup;
455
+ this.groupsPerRow = (_f = oldState.groupsPerRow) !== null && _f !== void 0 ? _f : this.groupsPerRow;
456
+ this.endianness = (_g = oldState.endianness) !== null && _g !== void 0 ? _g : this.endianness;
457
+ this.recentLocations = (_h = new memory_recents_1.Recents(oldState.recentLocationsArray)) !== null && _h !== void 0 ? _h : this.recentLocations;
458
+ this.doDisplaySettings = !!oldState.doDisplaySettings;
459
+ if (oldState.columnsDisplayed) {
460
+ this.columnsDisplayed = oldState.columnsDisplayed;
461
+ }
462
+ }
463
+ fetchNewMemory() {
464
+ this.updateMemoryView();
465
+ }
466
+ async doUpdateMemoryView() {
467
+ var _a, _b;
468
+ if (!(this.addressField && this.readLengthField)) {
469
+ return;
470
+ }
471
+ if (((_a = this.addressField) === null || _a === void 0 ? void 0 : _a.value.trim().length) === 0) {
472
+ this.memoryReadError = core_1.nls.localize('theia/memory-inspector/memory/addressField/memoryReadError', 'Enter an address or expression in the Location field.');
473
+ this.doShowMemoryErrors();
474
+ return;
475
+ }
476
+ if (this.readLengthField.value.trim().length === 0) {
477
+ this.memoryReadError = core_1.nls.localize('theia/memory-inspector/memory/readLength/memoryReadError', 'Enter a length (decimal or hexadecimal number) in the Length field.');
478
+ this.doShowMemoryErrors();
479
+ return;
480
+ }
481
+ const startAddress = this.addressField.value;
482
+ const locationOffset = parseInt(`${(_b = this.offsetField) === null || _b === void 0 ? void 0 : _b.value}`) || 0;
483
+ const readLength = parseInt(this.readLengthField.value);
484
+ try {
485
+ this.memoryReadResult = await this.getMemory(startAddress, readLength, locationOffset);
486
+ this.fireDidChangeMemory();
487
+ if (this.pinnedMemoryReadResult) {
488
+ this.pinnedMemoryReadResult.resolve(this.memoryReadResult);
489
+ }
490
+ this.doShowMemoryErrors(true);
491
+ }
492
+ catch (err) {
493
+ this.memoryReadError = this.getUserError(err);
494
+ console.error('Failed to read memory', err);
495
+ this.doShowMemoryErrors();
496
+ if (this.pinnedMemoryReadResult) {
497
+ this.pinnedMemoryReadResult.resolve(this.memoryReadResult);
498
+ }
499
+ }
500
+ finally {
501
+ this.pinnedMemoryReadResult = undefined;
502
+ this.update();
503
+ }
504
+ }
505
+ getUserError(err) {
506
+ return err instanceof Error ? err.message : core_1.nls.localize('theia/memory-inspector/memory/userError', 'There was an error fetching memory.');
507
+ }
508
+ async getMemory(memoryReference, count, offset) {
509
+ const result = await this.retrieveMemory(memoryReference, count, offset);
510
+ try {
511
+ this.variables = await this.memoryProvider.getLocals();
512
+ }
513
+ catch (_a) {
514
+ this.variables = [];
515
+ }
516
+ this.recentLocations.add(memoryReference);
517
+ this.updateDefaults(memoryReference, count, offset);
518
+ return result;
519
+ }
520
+ async retrieveMemory(memoryReference, count, offset) {
521
+ return this.memoryProvider.readMemory({ memoryReference, count, offset });
522
+ }
523
+ // TODO: This may not be necessary if we change how state is stored (currently in the text fields themselves.)
524
+ updateDefaults(address, readLength, offset) {
525
+ this.address = address;
526
+ this.readLength = readLength;
527
+ this.offset = offset;
528
+ }
529
+ fireDidChangeOptions(targetId) {
530
+ this.onOptionsChangedEmitter.fire(targetId);
531
+ }
532
+ fireDidChangeMemory() {
533
+ this.onMemoryChangedEmitter.fire(this.memoryReadResult);
534
+ }
535
+ };
536
+ MemoryOptionsWidget.ID = 'memory-view-options-widget';
537
+ MemoryOptionsWidget.LABEL = core_1.nls.localize('theia/memory-inspector/memoryTitle', 'Memory');
538
+ MemoryOptionsWidget.WIDGET_H2_CLASS = 'memory-widget-header';
539
+ MemoryOptionsWidget.WIDGET_HEADER_INPUT_CLASS = 'memory-widget-header-input';
540
+ __decorate([
541
+ (0, inversify_1.inject)(memory_provider_service_1.MemoryProviderService),
542
+ __metadata("design:type", memory_provider_service_1.MemoryProviderService)
543
+ ], MemoryOptionsWidget.prototype, "memoryProvider", void 0);
544
+ __decorate([
545
+ (0, inversify_1.inject)(debug_session_manager_1.DebugSessionManager),
546
+ __metadata("design:type", debug_session_manager_1.DebugSessionManager)
547
+ ], MemoryOptionsWidget.prototype, "sessionManager", void 0);
548
+ __decorate([
549
+ (0, inversify_1.inject)(memory_widget_utils_1.MemoryWidgetOptions),
550
+ __metadata("design:type", Object)
551
+ ], MemoryOptionsWidget.prototype, "memoryWidgetOptions", void 0);
552
+ __decorate([
553
+ (0, inversify_1.postConstruct)(),
554
+ __metadata("design:type", Function),
555
+ __metadata("design:paramtypes", []),
556
+ __metadata("design:returntype", void 0)
557
+ ], MemoryOptionsWidget.prototype, "init", null);
558
+ MemoryOptionsWidget = MemoryOptionsWidget_1 = __decorate([
559
+ (0, inversify_1.injectable)()
560
+ ], MemoryOptionsWidget);
561
+ exports.MemoryOptionsWidget = MemoryOptionsWidget;
562
+ //# sourceMappingURL=memory-options-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-options-widget.js","sourceRoot":"","sources":["../../../src/browser/memory-widget/memory-options-widget.tsx"],"names":[],"mappings":"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"}