@compas-oscd/open-scd 0.34.1 → 0.34.2

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 (187) hide show
  1. package/dist/WizardDivider.d.ts +8 -0
  2. package/dist/Wizarding.d.ts +10 -0
  3. package/dist/Wizarding.js.map +1 -1
  4. package/dist/action-icon.d.ts +25 -0
  5. package/dist/action-pane.d.ts +25 -0
  6. package/dist/addons/Editor.d.ts +25 -0
  7. package/dist/addons/History.d.ts +86 -0
  8. package/dist/addons/Layout.d.ts +96 -0
  9. package/dist/addons/Settings.d.ts +68 -0
  10. package/dist/addons/Waiter.d.ts +14 -0
  11. package/dist/addons/Wizards.d.ts +15 -0
  12. package/dist/addons/editor/edit-action-to-v1-converter.d.ts +3 -0
  13. package/dist/addons/editor/edit-v1-to-v2-converter.d.ts +2 -0
  14. package/dist/addons/history/get-log-text.d.ts +5 -0
  15. package/dist/addons/menu-tabs/menu-tabs.d.ts +22 -0
  16. package/dist/addons/plugin-manager/custom-plugin-dialog.d.ts +28 -0
  17. package/dist/addons/plugin-manager/plugin-manager.d.ts +20 -0
  18. package/dist/filtered-list.d.ts +27 -0
  19. package/dist/finder-list.d.ts +37 -0
  20. package/dist/foundation/compare.d.ts +79 -0
  21. package/dist/foundation/dai.d.ts +30 -0
  22. package/dist/foundation/generators.d.ts +13 -0
  23. package/dist/foundation/ied.d.ts +22 -0
  24. package/dist/foundation/nsd.d.ts +4 -0
  25. package/dist/foundation/nsdoc.d.ts +14 -0
  26. package/dist/foundation/scl.d.ts +1 -0
  27. package/dist/foundation.d.ts +230 -0
  28. package/dist/icons/compare.d.ts +3 -0
  29. package/dist/icons/icons.d.ts +41 -0
  30. package/dist/icons/ied-icons.d.ts +3 -0
  31. package/dist/icons/lnode.d.ts +16 -0
  32. package/dist/open-scd.d.ts +131 -0
  33. package/dist/oscd-filter-button.d.ts +27 -0
  34. package/dist/plain-compare-list.d.ts +36 -0
  35. package/dist/plugin-tag.d.ts +6 -0
  36. package/dist/plugin.d.ts +23 -0
  37. package/dist/plugin.events.d.ts +15 -0
  38. package/dist/plugins.d.ts +3 -0
  39. package/dist/schemas.d.ts +58 -0
  40. package/dist/themes.d.ts +3 -0
  41. package/dist/translations/de.d.ts +2 -0
  42. package/dist/translations/en.d.ts +963 -0
  43. package/dist/translations/loader.d.ts +12 -0
  44. package/dist/wizard-checkbox.d.ts +37 -0
  45. package/dist/wizard-dialog.d.ts +45 -0
  46. package/dist/wizard-select.d.ts +31 -0
  47. package/dist/wizard-textfield.d.ts +50 -0
  48. package/dist/wizards.d.ts +23 -0
  49. package/package.json +1 -1
  50. package/dist/core/api/api.js +0 -7
  51. package/dist/core/api/api.js.map +0 -1
  52. package/dist/core/api/editor/subject.js +0 -22
  53. package/dist/core/api/editor/subject.js.map +0 -1
  54. package/dist/core/api/editor/xml-editor.js +0 -82
  55. package/dist/core/api/editor/xml-editor.js.map +0 -1
  56. package/dist/core/api/plugin-state-api.js +0 -27
  57. package/dist/core/api/plugin-state-api.js.map +0 -1
  58. package/dist/core/foundation/cyrb64.js +0 -26
  59. package/dist/core/foundation/cyrb64.js.map +0 -1
  60. package/dist/core/foundation/deprecated/edit-event.js +0 -44
  61. package/dist/core/foundation/deprecated/edit-event.js.map +0 -1
  62. package/dist/core/foundation/deprecated/editor.js +0 -94
  63. package/dist/core/foundation/deprecated/editor.js.map +0 -1
  64. package/dist/core/foundation/deprecated/history.js +0 -17
  65. package/dist/core/foundation/deprecated/history.js.map +0 -1
  66. package/dist/core/foundation/deprecated/open-event.js +0 -9
  67. package/dist/core/foundation/deprecated/open-event.js.map +0 -1
  68. package/dist/core/foundation/deprecated/settings.js +0 -19
  69. package/dist/core/foundation/deprecated/settings.js.map +0 -1
  70. package/dist/core/foundation/deprecated/validation.js +0 -8
  71. package/dist/core/foundation/deprecated/validation.js.map +0 -1
  72. package/dist/core/foundation/deprecated/waiter.js +0 -12
  73. package/dist/core/foundation/deprecated/waiter.js.map +0 -1
  74. package/dist/core/foundation/edit-completed-event.js +0 -11
  75. package/dist/core/foundation/edit-completed-event.js.map +0 -1
  76. package/dist/core/foundation/edit-event.js +0 -8
  77. package/dist/core/foundation/edit-event.js.map +0 -1
  78. package/dist/core/foundation/edit.js +0 -31
  79. package/dist/core/foundation/edit.js.map +0 -1
  80. package/dist/core/foundation/handle-edit.js +0 -151
  81. package/dist/core/foundation/handle-edit.js.map +0 -1
  82. package/dist/core/foundation/open-event.js +0 -8
  83. package/dist/core/foundation/open-event.js.map +0 -1
  84. package/dist/core/foundation/plugin.js +0 -2
  85. package/dist/core/foundation/plugin.js.map +0 -1
  86. package/dist/core/foundation.js +0 -14
  87. package/dist/core/foundation.js.map +0 -1
  88. package/dist/core/locales.js +0 -21
  89. package/dist/core/locales.js.map +0 -1
  90. package/dist/openscd/src/WizardDivider.js +0 -37
  91. package/dist/openscd/src/WizardDivider.js.map +0 -1
  92. package/dist/openscd/src/Wizarding.js +0 -38
  93. package/dist/openscd/src/Wizarding.js.map +0 -1
  94. package/dist/openscd/src/action-icon.js +0 -220
  95. package/dist/openscd/src/action-icon.js.map +0 -1
  96. package/dist/openscd/src/action-pane.js +0 -176
  97. package/dist/openscd/src/action-pane.js.map +0 -1
  98. package/dist/openscd/src/addons/Editor.js +0 -106
  99. package/dist/openscd/src/addons/Editor.js.map +0 -1
  100. package/dist/openscd/src/addons/History.js +0 -490
  101. package/dist/openscd/src/addons/History.js.map +0 -1
  102. package/dist/openscd/src/addons/Layout.js +0 -619
  103. package/dist/openscd/src/addons/Layout.js.map +0 -1
  104. package/dist/openscd/src/addons/Settings.js +0 -465
  105. package/dist/openscd/src/addons/Settings.js.map +0 -1
  106. package/dist/openscd/src/addons/Waiter.js +0 -45
  107. package/dist/openscd/src/addons/Waiter.js.map +0 -1
  108. package/dist/openscd/src/addons/Wizards.js +0 -48
  109. package/dist/openscd/src/addons/Wizards.js.map +0 -1
  110. package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js +0 -96
  111. package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js.map +0 -1
  112. package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js +0 -37
  113. package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js.map +0 -1
  114. package/dist/openscd/src/addons/history/get-log-text.js +0 -26
  115. package/dist/openscd/src/addons/history/get-log-text.js.map +0 -1
  116. package/dist/openscd/src/addons/menu-tabs/menu-tabs.js +0 -74
  117. package/dist/openscd/src/addons/menu-tabs/menu-tabs.js.map +0 -1
  118. package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js +0 -177
  119. package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js.map +0 -1
  120. package/dist/openscd/src/addons/plugin-manager/plugin-manager.js +0 -165
  121. package/dist/openscd/src/addons/plugin-manager/plugin-manager.js.map +0 -1
  122. package/dist/openscd/src/filtered-list.js +0 -168
  123. package/dist/openscd/src/filtered-list.js.map +0 -1
  124. package/dist/openscd/src/finder-list.js +0 -207
  125. package/dist/openscd/src/finder-list.js.map +0 -1
  126. package/dist/openscd/src/foundation/compare.js +0 -273
  127. package/dist/openscd/src/foundation/compare.js.map +0 -1
  128. package/dist/openscd/src/foundation/dai.js +0 -127
  129. package/dist/openscd/src/foundation/dai.js.map +0 -1
  130. package/dist/openscd/src/foundation/generators.js +0 -67
  131. package/dist/openscd/src/foundation/generators.js.map +0 -1
  132. package/dist/openscd/src/foundation/ied.js +0 -84
  133. package/dist/openscd/src/foundation/ied.js.map +0 -1
  134. package/dist/openscd/src/foundation/nsd.js +0 -13
  135. package/dist/openscd/src/foundation/nsd.js.map +0 -1
  136. package/dist/openscd/src/foundation/nsdoc.js +0 -180
  137. package/dist/openscd/src/foundation/nsdoc.js.map +0 -1
  138. package/dist/openscd/src/foundation/scl.js +0 -64
  139. package/dist/openscd/src/foundation/scl.js.map +0 -1
  140. package/dist/openscd/src/foundation.js +0 -1922
  141. package/dist/openscd/src/foundation.js.map +0 -1
  142. package/dist/openscd/src/icons/compare.js +0 -11
  143. package/dist/openscd/src/icons/compare.js.map +0 -1
  144. package/dist/openscd/src/icons/icons.js +0 -611
  145. package/dist/openscd/src/icons/icons.js.map +0 -1
  146. package/dist/openscd/src/icons/ied-icons.js +0 -11
  147. package/dist/openscd/src/icons/ied-icons.js.map +0 -1
  148. package/dist/openscd/src/icons/lnode.js +0 -50
  149. package/dist/openscd/src/icons/lnode.js.map +0 -1
  150. package/dist/openscd/src/open-scd.js +0 -483
  151. package/dist/openscd/src/open-scd.js.map +0 -1
  152. package/dist/openscd/src/oscd-filter-button.js +0 -89
  153. package/dist/openscd/src/oscd-filter-button.js.map +0 -1
  154. package/dist/openscd/src/plain-compare-list.js +0 -132
  155. package/dist/openscd/src/plain-compare-list.js.map +0 -1
  156. package/dist/openscd/src/plugin-tag.js +0 -23
  157. package/dist/openscd/src/plugin-tag.js.map +0 -1
  158. package/dist/openscd/src/plugin.events.js +0 -12
  159. package/dist/openscd/src/plugin.events.js.map +0 -1
  160. package/dist/openscd/src/plugin.js +0 -2
  161. package/dist/openscd/src/plugin.js.map +0 -1
  162. package/dist/openscd/src/plugins.js +0 -256
  163. package/dist/openscd/src/plugins.js.map +0 -1
  164. package/dist/openscd/src/schemas.js +0 -9325
  165. package/dist/openscd/src/schemas.js.map +0 -1
  166. package/dist/openscd/src/themes.js +0 -122
  167. package/dist/openscd/src/themes.js.map +0 -1
  168. package/dist/openscd/src/translations/de.js +0 -954
  169. package/dist/openscd/src/translations/de.js.map +0 -1
  170. package/dist/openscd/src/translations/en.js +0 -950
  171. package/dist/openscd/src/translations/en.js.map +0 -1
  172. package/dist/openscd/src/translations/loader.js +0 -10
  173. package/dist/openscd/src/translations/loader.js.map +0 -1
  174. package/dist/openscd/src/wizard-checkbox.js +0 -152
  175. package/dist/openscd/src/wizard-checkbox.js.map +0 -1
  176. package/dist/openscd/src/wizard-dialog.js +0 -374
  177. package/dist/openscd/src/wizard-dialog.js.map +0 -1
  178. package/dist/openscd/src/wizard-select.js +0 -115
  179. package/dist/openscd/src/wizard-select.js.map +0 -1
  180. package/dist/openscd/src/wizard-textfield.js +0 -191
  181. package/dist/openscd/src/wizard-textfield.js.map +0 -1
  182. package/dist/openscd/src/wizards.js +0 -196
  183. package/dist/openscd/src/wizards.js.map +0 -1
  184. package/dist/xml/src/foundation.js +0 -67
  185. package/dist/xml/src/foundation.js.map +0 -1
  186. package/dist/xml/src/index.js +0 -2
  187. package/dist/xml/src/index.js.map +0 -1
@@ -1,490 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { html, state, property, query, customElement, LitElement, } from 'lit-element';
3
- import { get } from 'lit-translate';
4
- import '@material/mwc-button';
5
- import '@material/mwc-dialog';
6
- import '@material/mwc-icon';
7
- import '@material/mwc-icon-button';
8
- import '@material/mwc-icon-button-toggle';
9
- import '@material/mwc-list';
10
- import '@material/mwc-list/mwc-list-item';
11
- import '@material/mwc-snackbar';
12
- import '../filtered-list.js';
13
- import { getFilterIcon, iconColors } from '../icons/icons.js';
14
- import { getLogText } from './history/get-log-text.js';
15
- const icons = {
16
- info: 'info',
17
- warning: 'warning',
18
- error: 'report',
19
- };
20
- function getPluginName(src) {
21
- let storedPluginsString = localStorage.getItem('plugins');
22
- if (!storedPluginsString) {
23
- storedPluginsString = '[]';
24
- }
25
- const storedPlugins = JSON.parse(storedPluginsString);
26
- const wantedPlugin = storedPlugins.find((p) => p.src === src);
27
- if (!wantedPlugin) {
28
- return `pluginnotfound: ${src} in ${storedPluginsString}`;
29
- }
30
- const name = wantedPlugin.name;
31
- if (!name) {
32
- return `pluginhasnoname:${src}`;
33
- }
34
- return name;
35
- }
36
- export var HistoryUIKind;
37
- (function (HistoryUIKind) {
38
- HistoryUIKind["log"] = "log";
39
- HistoryUIKind["history"] = "history";
40
- HistoryUIKind["diagnostic"] = "diagnostic";
41
- })(HistoryUIKind || (HistoryUIKind = {}));
42
- export function newHistoryUIEvent(show, kind, eventInitDict) {
43
- return new CustomEvent('history-dialog-ui', {
44
- bubbles: true,
45
- composed: true,
46
- ...eventInitDict,
47
- detail: {
48
- show,
49
- kind,
50
- ...eventInitDict?.detail,
51
- },
52
- });
53
- }
54
- export function newEmptyIssuesEvent(pluginSrc, eventInitDict) {
55
- return new CustomEvent('empty-issues', {
56
- bubbles: true,
57
- composed: true,
58
- ...eventInitDict,
59
- detail: { pluginSrc, ...eventInitDict?.detail },
60
- });
61
- }
62
- let OscdHistory = class OscdHistory extends LitElement {
63
- onIssue(de) {
64
- const issues = this.diagnoses.get(de.detail.validatorId);
65
- if (!issues)
66
- this.diagnoses.set(de.detail.validatorId, [de.detail]);
67
- else
68
- issues?.push(de.detail);
69
- this.latestIssue = de.detail;
70
- this.issueUI.close();
71
- this.issueUI.show();
72
- }
73
- undo() {
74
- this.editor.undo();
75
- }
76
- redo() {
77
- this.editor.redo();
78
- }
79
- onReset() {
80
- this.log = [];
81
- this.editor.reset();
82
- this.updateHistory();
83
- }
84
- onInfo(detail) {
85
- const entry = {
86
- time: new Date(),
87
- ...detail,
88
- };
89
- this.log.push(entry);
90
- if (!this.logUI.open) {
91
- const ui = {
92
- error: this.errorUI,
93
- warning: this.warningUI,
94
- info: this.infoUI,
95
- }[detail.kind];
96
- ui.close();
97
- ui.show();
98
- }
99
- if (detail.kind == 'error') {
100
- this.errorUI.close(); // hack to reset timeout
101
- this.errorUI.show();
102
- }
103
- this.requestUpdate('log', []);
104
- }
105
- onLog(le) {
106
- switch (le.detail.kind) {
107
- case 'reset':
108
- this.onReset();
109
- break;
110
- case 'action':
111
- // No longer needed
112
- break;
113
- default:
114
- this.onInfo(le.detail);
115
- break;
116
- }
117
- }
118
- historyUIHandler(e) {
119
- const ui = {
120
- log: this.logUI,
121
- history: this.historyUI,
122
- diagnostic: this.diagnosticUI,
123
- }[e.detail.kind];
124
- if (e.detail.show)
125
- ui.show();
126
- else
127
- ui.close();
128
- }
129
- emptyIssuesHandler(e) {
130
- if (this.diagnoses.get(e.detail.pluginSrc))
131
- this.diagnoses.get(e.detail.pluginSrc).length = 0;
132
- }
133
- handleKeyPress(e) {
134
- const ctrlAnd = (key) => e.key === key && e.ctrlKey;
135
- if (ctrlAnd('y'))
136
- this.redo();
137
- if (ctrlAnd('z'))
138
- this.undo();
139
- if (ctrlAnd('l'))
140
- this.logUI.open ? this.logUI.close() : this.logUI.show();
141
- if (ctrlAnd('d'))
142
- this.diagnosticUI.open
143
- ? this.diagnosticUI.close()
144
- : this.diagnosticUI.show();
145
- }
146
- updateHistory() {
147
- const { past, future } = this.editor;
148
- const activeIndex = past.length - 1;
149
- const allEntries = [...past, ...future];
150
- this.history = allEntries.map((e, index) => {
151
- const { title, message } = getLogText(e.redo);
152
- return {
153
- isActive: index === activeIndex,
154
- time: e.time,
155
- title: e.title ?? title,
156
- message
157
- };
158
- });
159
- }
160
- constructor() {
161
- super();
162
- /** All [[`LogEntry`]]s received so far through [[`LogEvent`]]s. */
163
- this.log = [];
164
- this.diagnoses = new Map();
165
- this.history = [];
166
- this.unsubscribers = [];
167
- this.undo = this.undo.bind(this);
168
- this.redo = this.redo.bind(this);
169
- this.onLog = this.onLog.bind(this);
170
- this.onIssue = this.onIssue.bind(this);
171
- this.historyUIHandler = this.historyUIHandler.bind(this);
172
- this.emptyIssuesHandler = this.emptyIssuesHandler.bind(this);
173
- this.handleKeyPress = this.handleKeyPress.bind(this);
174
- document.onkeydown = this.handleKeyPress;
175
- }
176
- connectedCallback() {
177
- super.connectedCallback();
178
- this.unsubscribers.push(this.editor.subscribe(e => this.updateHistory()), this.editor.subscribeUndoRedo(e => this.updateHistory()));
179
- this.host.addEventListener('log', this.onLog);
180
- this.host.addEventListener('issue', this.onIssue);
181
- this.host.addEventListener('history-dialog-ui', this.historyUIHandler);
182
- this.host.addEventListener('empty-issues', this.emptyIssuesHandler);
183
- this.diagnoses.clear();
184
- }
185
- disconnectedCallback() {
186
- this.unsubscribers.forEach(u => u());
187
- }
188
- renderLogEntry(entry, index, log) {
189
- return html ` <abbr title="${entry.title}">
190
- <mwc-list-item
191
- class="${entry.kind}"
192
- graphic="icon"
193
- ?twoline=${!!entry.message}
194
- >
195
- <span>
196
- <!-- FIXME: replace tt with mwc-chip asap -->
197
- <tt>${entry.time?.toLocaleString()}</tt>
198
- ${entry.title}</span
199
- >
200
- <span slot="secondary">${entry.message}</span>
201
- <mwc-icon
202
- slot="graphic"
203
- style="--mdc-theme-text-icon-on-background:var(${iconColors[entry.kind]})"
204
- >${icons[entry.kind]}</mwc-icon
205
- >
206
- </mwc-list-item></abbr
207
- >`;
208
- }
209
- renderHistoryEntry(entry) {
210
- return html ` <abbr title="${entry.title}">
211
- <mwc-list-item
212
- ?twoline=${!!entry.message}
213
- ?activated=${entry.isActive}
214
- >
215
- <span>
216
- <tt>${this.formatTime(entry.time)}</tt>
217
- ${entry.title}
218
- </span>
219
- <span slot="secondary">${entry.message}</span>
220
- </mwc-list-item>
221
- </abbr>`;
222
- }
223
- formatTime(time) {
224
- const date = new Date(time);
225
- const hours = date.getHours();
226
- const minutes = date.getMinutes();
227
- return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
228
- }
229
- renderLog() {
230
- if (this.log.length > 0)
231
- return this.log.slice().reverse().map(this.renderLogEntry, this);
232
- else
233
- return html `<mwc-list-item disabled graphic="icon">
234
- <span>${get('log.placeholder')}</span>
235
- <mwc-icon slot="graphic">info</mwc-icon>
236
- </mwc-list-item>`;
237
- }
238
- renderHistory() {
239
- if (this.history.length > 0)
240
- return this.history.slice().reverse().map(e => this.renderHistoryEntry(e));
241
- else
242
- return html `<mwc-list-item disabled graphic="icon">
243
- <span>${get('history.placeholder')}</span>
244
- <mwc-icon slot="graphic">info</mwc-icon>
245
- </mwc-list-item>`;
246
- }
247
- renderIssueEntry(issue) {
248
- return html ` <abbr title="${issue.title + '\n' + issue.message}"
249
- ><mwc-list-item ?twoline=${!!issue.message}>
250
- <span> ${issue.title}</span>
251
- <span slot="secondary">${issue.message}</span>
252
- </mwc-list-item></abbr
253
- >`;
254
- }
255
- renderValidatorsIssues(issues) {
256
- if (issues.length === 0)
257
- return [html ``];
258
- return [
259
- html `
260
- <mwc-list-item noninteractive>
261
- ${getPluginName(issues[0].validatorId)}
262
- </mwc-list-item>
263
- `,
264
- html `<li divider padded role="separator"></li>`,
265
- ...issues.map(issue => this.renderIssueEntry(issue)),
266
- ];
267
- }
268
- renderIssues() {
269
- const issueItems = [];
270
- this.diagnoses.forEach(issues => {
271
- this.renderValidatorsIssues(issues).forEach(issueItem => issueItems.push(issueItem));
272
- });
273
- return issueItems.length
274
- ? issueItems
275
- : html `<mwc-list-item disabled graphic="icon">
276
- <span>${get('diag.placeholder')}</span>
277
- <mwc-icon slot="graphic">info</mwc-icon>
278
- </mwc-list-item>`;
279
- }
280
- renderFilterButtons() {
281
- return Object.keys(icons).map(kind => html `<mwc-icon-button-toggle id="${kind}filter" on
282
- >${getFilterIcon(kind, false)}
283
- ${getFilterIcon(kind, true)}</mwc-icon-button-toggle
284
- >`);
285
- }
286
- renderLogDialog() {
287
- return html ` <mwc-dialog id="log" heading="${get('log.name')}">
288
- ${this.renderFilterButtons()}
289
- <mwc-list id="content" wrapFocus>${this.renderLog()}</mwc-list>
290
- <mwc-button slot="primaryAction" dialogaction="close"
291
- >${get('close')}</mwc-button
292
- >
293
- </mwc-dialog>`;
294
- }
295
- renderHistoryUI() {
296
- return html ` <mwc-dialog id="history" heading="${get('history.name')}">
297
- <mwc-list id="content" wrapFocus>${this.renderHistory()}</mwc-list>
298
- <mwc-button
299
- icon="undo"
300
- label="${get('undo')}"
301
- ?disabled=${!this.editor.canUndo}
302
- @click=${this.undo}
303
- slot="secondaryAction"
304
- ></mwc-button>
305
- <mwc-button
306
- icon="redo"
307
- label="${get('redo')}"
308
- ?disabled=${!this.editor.canRedo}
309
- @click=${this.redo}
310
- slot="secondaryAction"
311
- ></mwc-button>
312
- <mwc-button slot="primaryAction" dialogaction="close"
313
- >${get('close')}</mwc-button
314
- >
315
- </mwc-dialog>`;
316
- }
317
- render() {
318
- return html `<slot></slot>
319
- <style>
320
- #log > mwc-icon-button-toggle {
321
- position: absolute;
322
- top: 8px;
323
- right: 14px;
324
- }
325
- #log > mwc-icon-button-toggle:nth-child(2) {
326
- right: 62px;
327
- }
328
- #log > mwc-icon-button-toggle:nth-child(3) {
329
- right: 110px;
330
- }
331
- #log > mwc-icon-button-toggle:nth-child(4) {
332
- right: 158px;
333
- }
334
- #content mwc-list-item.info,
335
- #content mwc-list-item.warning,
336
- #content mwc-list-item.error {
337
- display: none;
338
- }
339
- #infofilter[on] ~ #content mwc-list-item.info {
340
- display: flex;
341
- }
342
- #warningfilter[on] ~ #content mwc-list-item.warning {
343
- display: flex;
344
- }
345
- #errorfilter[on] ~ #content mwc-list-item.error {
346
- display: flex;
347
- }
348
-
349
- #infofilter[on] {
350
- color: var(--cyan);
351
- }
352
-
353
- #warningfilter[on] {
354
- color: var(--yellow);
355
- }
356
-
357
- #errorfilter[on] {
358
- color: var(--red);
359
- }
360
-
361
- #actionfilter[on] {
362
- color: var(--blue);
363
- }
364
-
365
- #log,
366
- #history {
367
- --mdc-dialog-min-width: 92vw;
368
- }
369
-
370
- #log > #filterContainer {
371
- position: absolute;
372
- top: 14px;
373
- right: 14px;
374
- }
375
- </style>
376
- ${this.renderLogDialog()} ${this.renderHistoryUI()}
377
- <mwc-dialog id="diagnostic" heading="${get('diag.name')}">
378
- <filtered-list id="content" wrapFocus>
379
- ${this.renderIssues()}
380
- </filtered-list>
381
- <mwc-button slot="primaryAction" dialogaction="close">
382
- ${get('close')}
383
- </mwc-button>
384
- </mwc-dialog>
385
-
386
- <mwc-snackbar
387
- id="info"
388
- timeoutMs="4000"
389
- labelText="${this.log
390
- .slice()
391
- .reverse()
392
- .find(le => le.kind === 'info')?.title ??
393
- get('log.snackbar.placeholder')}"
394
- >
395
- <mwc-icon-button icon="close" slot="dismiss"></mwc-icon-button>
396
- </mwc-snackbar>
397
- <mwc-snackbar
398
- id="warning"
399
- timeoutMs="6000"
400
- labelText="${this.log
401
- .slice()
402
- .reverse()
403
- .find(le => le.kind === 'warning')?.title ??
404
- get('log.snackbar.placeholder')}"
405
- >
406
- <mwc-button
407
- slot="action"
408
- icon="history"
409
- @click=${() => this.logUI.show()}
410
- >${get('log.snackbar.show')}</mwc-button
411
- >
412
- <mwc-icon-button icon="close" slot="dismiss"></mwc-icon-button>
413
- </mwc-snackbar>
414
- <mwc-snackbar
415
- id="error"
416
- timeoutMs="10000"
417
- labelText="${this.log
418
- .slice()
419
- .reverse()
420
- .find(le => le.kind === 'error')?.title ??
421
- get('log.snackbar.placeholder')}"
422
- >
423
- <mwc-button
424
- slot="action"
425
- icon="history"
426
- @click=${() => this.logUI.show()}
427
- >${get('log.snackbar.show')}</mwc-button
428
- >
429
- <mwc-icon-button icon="close" slot="dismiss"></mwc-icon-button>
430
- </mwc-snackbar>
431
- <mwc-snackbar
432
- id="issue"
433
- timeoutMs="10000"
434
- labelText="${this.latestIssue?.title ??
435
- get('log.snackbar.placeholder')}"
436
- >
437
- <mwc-button
438
- slot="action"
439
- icon="rule"
440
- @click=${() => this.diagnosticUI.show()}
441
- >${get('log.snackbar.show')}</mwc-button
442
- >
443
- <mwc-icon-button icon="close" slot="dismiss"></mwc-icon-button>
444
- </mwc-snackbar>`;
445
- }
446
- };
447
- __decorate([
448
- property({ type: Array })
449
- ], OscdHistory.prototype, "log", void 0);
450
- __decorate([
451
- property({ type: Object })
452
- ], OscdHistory.prototype, "editor", void 0);
453
- __decorate([
454
- property()
455
- ], OscdHistory.prototype, "diagnoses", void 0);
456
- __decorate([
457
- property({ type: Object })
458
- ], OscdHistory.prototype, "host", void 0);
459
- __decorate([
460
- state()
461
- ], OscdHistory.prototype, "latestIssue", void 0);
462
- __decorate([
463
- state()
464
- ], OscdHistory.prototype, "history", void 0);
465
- __decorate([
466
- query('#log')
467
- ], OscdHistory.prototype, "logUI", void 0);
468
- __decorate([
469
- query('#history')
470
- ], OscdHistory.prototype, "historyUI", void 0);
471
- __decorate([
472
- query('#diagnostic')
473
- ], OscdHistory.prototype, "diagnosticUI", void 0);
474
- __decorate([
475
- query('#error')
476
- ], OscdHistory.prototype, "errorUI", void 0);
477
- __decorate([
478
- query('#warning')
479
- ], OscdHistory.prototype, "warningUI", void 0);
480
- __decorate([
481
- query('#info')
482
- ], OscdHistory.prototype, "infoUI", void 0);
483
- __decorate([
484
- query('#issue')
485
- ], OscdHistory.prototype, "issueUI", void 0);
486
- OscdHistory = __decorate([
487
- customElement('oscd-history')
488
- ], OscdHistory);
489
- export { OscdHistory };
490
- //# sourceMappingURL=History.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"History.js","sourceRoot":"","sources":["../../../../src/addons/History.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n state,\n property,\n query,\n TemplateResult,\n customElement,\n LitElement,\n} from 'lit-element';\n\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-icon';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-icon-button-toggle';\nimport '@material/mwc-list';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-snackbar';\nimport { Dialog } from '@material/mwc-dialog';\nimport { Snackbar } from '@material/mwc-snackbar';\n\nimport '../filtered-list.js';\n\nimport {\n InfoDetail,\n InfoEntry,\n IssueDetail,\n IssueEvent,\n LogEntry,\n LogEntryType,\n LogEvent,\n} from '@openscd/core/foundation/deprecated/history.js';\n\nimport { getFilterIcon, iconColors } from '../icons/icons.js';\n\nimport { Plugin } from '../plugin.js';\nimport { XMLEditor } from '@openscd/core';\n\nimport { getLogText } from './history/get-log-text.js';\n\ninterface HistoryItem {\n title: string;\n message?: string;\n time: number;\n isActive: boolean;\n}\n\nconst icons = {\n info: 'info',\n warning: 'warning',\n error: 'report',\n};\n\nfunction getPluginName(src: string): string {\n\n let storedPluginsString = localStorage.getItem('plugins');\n if(!storedPluginsString) {\n storedPluginsString = '[]';\n }\n\n const storedPlugins = JSON.parse(storedPluginsString) as Plugin[];\n const wantedPlugin = storedPlugins.find((p: Plugin) => p.src === src);\n\n if(!wantedPlugin) {\n return `pluginnotfound: ${src} in ${storedPluginsString}`;\n }\n\n const name = wantedPlugin.name;\n\n if(!name){\n return `pluginhasnoname:${src}`;\n }\n\n return name;\n\n}\n\nexport enum HistoryUIKind {\n log = 'log',\n history = 'history',\n diagnostic = 'diagnostic',\n}\nexport interface HistoryUIDetail {\n show: boolean;\n kind: HistoryUIKind;\n}\n\nexport type HistoryUIEvent = CustomEvent<HistoryUIDetail>;\n\nexport function newHistoryUIEvent(\n show: boolean,\n kind: HistoryUIKind,\n eventInitDict?: CustomEventInit<Partial<HistoryUIDetail>>\n): HistoryUIEvent {\n return new CustomEvent<HistoryUIDetail>('history-dialog-ui', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: {\n show,\n kind,\n ...eventInitDict?.detail,\n },\n });\n}\n\nexport interface EmptyIssuesDetail {\n pluginSrc: string;\n}\n\nexport type EmptyIssuesEvent = CustomEvent<EmptyIssuesDetail>;\n\nexport function newEmptyIssuesEvent(\n pluginSrc: string,\n eventInitDict?: CustomEventInit<Partial<EmptyIssuesDetail>>\n): EmptyIssuesEvent {\n return new CustomEvent<EmptyIssuesDetail>('empty-issues', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { pluginSrc, ...eventInitDict?.detail },\n });\n}\n\n@customElement('oscd-history')\nexport class OscdHistory extends LitElement {\n /** All [[`LogEntry`]]s received so far through [[`LogEvent`]]s. */\n @property({ type: Array })\n log: InfoEntry[] = [];\n\n /** XML Editor to apply changes to the scd */\n @property({ type: Object }) editor!: XMLEditor;\n\n @property()\n diagnoses = new Map<string, IssueDetail[]>();\n\n @property({ type: Object })\n host!: HTMLElement;\n\n @state()\n latestIssue!: IssueDetail;\n\n @state()\n history: HistoryItem[] = [];\n\n @query('#log') logUI!: Dialog;\n @query('#history') historyUI!: Dialog;\n @query('#diagnostic') diagnosticUI!: Dialog;\n @query('#error') errorUI!: Snackbar;\n @query('#warning') warningUI!: Snackbar;\n @query('#info') infoUI!: Snackbar;\n @query('#issue') issueUI!: Snackbar;\n\n private unsubscribers: (() => any)[] = [];\n\n private onIssue(de: IssueEvent): void {\n const issues = this.diagnoses.get(de.detail.validatorId);\n\n if (!issues) this.diagnoses.set(de.detail.validatorId, [de.detail]);\n else issues?.push(de.detail);\n\n this.latestIssue = de.detail;\n this.issueUI.close();\n this.issueUI.show();\n }\n\n undo(): void {\n this.editor.undo();\n }\n redo(): void {\n this.editor.redo();\n }\n\n private onReset() {\n this.log = [];\n this.editor.reset();\n this.updateHistory();\n }\n\n private onInfo(detail: InfoDetail) {\n const entry: InfoEntry = {\n time: new Date(),\n ...detail,\n };\n\n this.log.push(entry);\n if (!this.logUI.open) {\n const ui = {\n error: this.errorUI,\n warning: this.warningUI,\n info: this.infoUI,\n }[detail.kind];\n\n ui.close();\n ui.show();\n }\n if (detail.kind == 'error') {\n this.errorUI.close(); // hack to reset timeout\n this.errorUI.show();\n }\n this.requestUpdate('log', []);\n }\n\n private onLog(le: LogEvent): void {\n switch (le.detail.kind) {\n case 'reset':\n this.onReset();\n break;\n case 'action':\n // No longer needed\n break;\n default:\n this.onInfo(le.detail);\n break;\n }\n }\n\n private historyUIHandler(e: HistoryUIEvent): void {\n const ui = {\n log: this.logUI,\n history: this.historyUI,\n diagnostic: this.diagnosticUI,\n }[e.detail.kind];\n\n if (e.detail.show) ui.show();\n else ui.close();\n }\n\n private emptyIssuesHandler(e: EmptyIssuesEvent): void {\n if (this.diagnoses.get(e.detail.pluginSrc))\n this.diagnoses.get(e.detail.pluginSrc)!.length = 0;\n }\n\n private handleKeyPress(e: KeyboardEvent): void {\n const ctrlAnd = (key: string) => e.key === key && e.ctrlKey;\n\n if (ctrlAnd('y')) this.redo();\n if (ctrlAnd('z')) this.undo();\n if (ctrlAnd('l')) this.logUI.open ? this.logUI.close() : this.logUI.show();\n if (ctrlAnd('d'))\n this.diagnosticUI.open\n ? this.diagnosticUI.close()\n : this.diagnosticUI.show();\n }\n\n private updateHistory(): void {\n const { past, future } = this.editor;\n\n const activeIndex = past.length - 1;\n const allEntries = [ ...past, ...future ];\n\n this.history = allEntries.map((e, index) => {\n const { title, message } = getLogText(e.redo as any);\n\n return {\n isActive: index === activeIndex,\n time: e.time,\n title: e.title ?? title,\n message\n };\n });\n }\n\n constructor() {\n super();\n this.undo = this.undo.bind(this);\n this.redo = this.redo.bind(this);\n this.onLog = this.onLog.bind(this);\n this.onIssue = this.onIssue.bind(this);\n this.historyUIHandler = this.historyUIHandler.bind(this);\n this.emptyIssuesHandler = this.emptyIssuesHandler.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n document.onkeydown = this.handleKeyPress;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.unsubscribers.push(\n this.editor.subscribe(e => this.updateHistory()),\n this.editor.subscribeUndoRedo(e => this.updateHistory())\n );\n\n this.host.addEventListener('log', this.onLog);\n this.host.addEventListener('issue', this.onIssue);\n this.host.addEventListener('history-dialog-ui', this.historyUIHandler);\n this.host.addEventListener('empty-issues', this.emptyIssuesHandler);\n this.diagnoses.clear();\n }\n\n disconnectedCallback(): void {\n this.unsubscribers.forEach(u => u());\n }\n\n renderLogEntry(\n entry: InfoEntry,\n index: number,\n log: LogEntry[]\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n class=\"${entry.kind}\"\n graphic=\"icon\"\n ?twoline=${!!entry.message}\n >\n <span>\n <!-- FIXME: replace tt with mwc-chip asap -->\n <tt>${entry.time?.toLocaleString()}</tt>\n ${entry.title}</span\n >\n <span slot=\"secondary\">${entry.message}</span>\n <mwc-icon\n slot=\"graphic\"\n style=\"--mdc-theme-text-icon-on-background:var(${iconColors[\n entry.kind\n ]})\"\n >${icons[entry.kind]}</mwc-icon\n >\n </mwc-list-item></abbr\n >`;\n }\n\n renderHistoryEntry(\n entry: HistoryItem\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n ?twoline=${!!entry.message}\n ?activated=${entry.isActive}\n >\n <span>\n <tt>${this.formatTime(entry.time)}</tt>\n ${entry.title}\n </span>\n <span slot=\"secondary\">${entry.message}</span>\n </mwc-list-item>\n </abbr>`;\n }\n\n private formatTime(time: number): string {\n const date = new Date(time);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n }\n\n private renderLog(): TemplateResult[] | TemplateResult {\n if (this.log.length > 0)\n return this.log.slice().reverse().map(this.renderLogEntry, this);\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('log.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderHistory(): TemplateResult[] | TemplateResult {\n if (this.history.length > 0)\n return this.history.slice().reverse().map(e => this.renderHistoryEntry(e));\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('history.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderIssueEntry(issue: IssueDetail): TemplateResult {\n return html` <abbr title=\"${issue.title + '\\n' + issue.message}\"\n ><mwc-list-item ?twoline=${!!issue.message}>\n <span> ${issue.title}</span>\n <span slot=\"secondary\">${issue.message}</span>\n </mwc-list-item></abbr\n >`;\n }\n\n renderValidatorsIssues(issues: IssueDetail[]): TemplateResult[] {\n if (issues.length === 0) return [html``];\n return [\n html`\n <mwc-list-item noninteractive>\n ${getPluginName(issues[0].validatorId)}\n </mwc-list-item>\n `,\n html`<li divider padded role=\"separator\"></li>`,\n ...issues.map(issue => this.renderIssueEntry(issue)),\n ];\n }\n\n private renderIssues(): TemplateResult[] | TemplateResult {\n const issueItems: TemplateResult[] = [];\n\n this.diagnoses.forEach(issues => {\n this.renderValidatorsIssues(issues).forEach(issueItem =>\n issueItems.push(issueItem)\n );\n });\n\n return issueItems.length\n ? issueItems\n : html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('diag.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderFilterButtons() {\n return (<LogEntryType[]>Object.keys(icons)).map(\n kind => html`<mwc-icon-button-toggle id=\"${kind}filter\" on\n >${getFilterIcon(kind, false)}\n ${getFilterIcon(kind, true)}</mwc-icon-button-toggle\n >`\n );\n }\n\n private renderLogDialog(): TemplateResult {\n return html` <mwc-dialog id=\"log\" heading=\"${get('log.name')}\">\n ${this.renderFilterButtons()}\n <mwc-list id=\"content\" wrapFocus>${this.renderLog()}</mwc-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n private renderHistoryUI(): TemplateResult {\n return html` <mwc-dialog id=\"history\" heading=\"${get('history.name')}\">\n <mwc-list id=\"content\" wrapFocus>${this.renderHistory()}</mwc-list>\n <mwc-button\n icon=\"undo\"\n label=\"${get('undo')}\"\n ?disabled=${!this.editor.canUndo}\n @click=${this.undo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button\n icon=\"redo\"\n label=\"${get('redo')}\"\n ?disabled=${!this.editor.canRedo}\n @click=${this.redo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n render(): TemplateResult {\n return html`<slot></slot>\n <style>\n #log > mwc-icon-button-toggle {\n position: absolute;\n top: 8px;\n right: 14px;\n }\n #log > mwc-icon-button-toggle:nth-child(2) {\n right: 62px;\n }\n #log > mwc-icon-button-toggle:nth-child(3) {\n right: 110px;\n }\n #log > mwc-icon-button-toggle:nth-child(4) {\n right: 158px;\n }\n #content mwc-list-item.info,\n #content mwc-list-item.warning,\n #content mwc-list-item.error {\n display: none;\n }\n #infofilter[on] ~ #content mwc-list-item.info {\n display: flex;\n }\n #warningfilter[on] ~ #content mwc-list-item.warning {\n display: flex;\n }\n #errorfilter[on] ~ #content mwc-list-item.error {\n display: flex;\n }\n\n #infofilter[on] {\n color: var(--cyan);\n }\n\n #warningfilter[on] {\n color: var(--yellow);\n }\n\n #errorfilter[on] {\n color: var(--red);\n }\n\n #actionfilter[on] {\n color: var(--blue);\n }\n\n #log,\n #history {\n --mdc-dialog-min-width: 92vw;\n }\n\n #log > #filterContainer {\n position: absolute;\n top: 14px;\n right: 14px;\n }\n </style>\n ${this.renderLogDialog()} ${this.renderHistoryUI()}\n <mwc-dialog id=\"diagnostic\" heading=\"${get('diag.name')}\">\n <filtered-list id=\"content\" wrapFocus>\n ${this.renderIssues()}\n </filtered-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\">\n ${get('close')}\n </mwc-button>\n </mwc-dialog>\n\n <mwc-snackbar\n id=\"info\"\n timeoutMs=\"4000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'info')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"warning\"\n timeoutMs=\"6000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'warning')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"error\"\n timeoutMs=\"10000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'error')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"issue\"\n timeoutMs=\"10000\"\n labelText=\"${this.latestIssue?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"rule\"\n @click=${() => this.diagnosticUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>`;\n }\n}\n\ndeclare global {\n interface ElementEventMap {\n 'history-dialog-ui': CustomEvent<HistoryUIDetail>;\n 'empty-issues': CustomEvent<EmptyIssuesDetail>;\n }\n}\n"]}