@compas-oscd/open-scd 0.34.1 → 0.34.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WizardDivider.d.ts +8 -0
- package/dist/Wizarding.d.ts +10 -0
- package/dist/Wizarding.js.map +1 -1
- package/dist/action-icon.d.ts +25 -0
- package/dist/action-pane.d.ts +25 -0
- package/dist/addons/Editor.d.ts +25 -0
- package/dist/addons/History.d.ts +86 -0
- package/dist/addons/Layout.d.ts +96 -0
- package/dist/addons/Settings.d.ts +68 -0
- package/dist/addons/Waiter.d.ts +14 -0
- package/dist/addons/Wizards.d.ts +15 -0
- package/dist/addons/editor/edit-action-to-v1-converter.d.ts +3 -0
- package/dist/addons/editor/edit-v1-to-v2-converter.d.ts +2 -0
- package/dist/addons/history/get-log-text.d.ts +5 -0
- package/dist/addons/menu-tabs/menu-tabs.d.ts +22 -0
- package/dist/addons/plugin-manager/custom-plugin-dialog.d.ts +28 -0
- package/dist/addons/plugin-manager/plugin-manager.d.ts +20 -0
- package/dist/filtered-list.d.ts +27 -0
- package/dist/finder-list.d.ts +37 -0
- package/dist/foundation/compare.d.ts +79 -0
- package/dist/foundation/dai.d.ts +30 -0
- package/dist/foundation/generators.d.ts +13 -0
- package/dist/foundation/ied.d.ts +22 -0
- package/dist/foundation/nsd.d.ts +4 -0
- package/dist/foundation/nsdoc.d.ts +14 -0
- package/dist/foundation/scl.d.ts +1 -0
- package/dist/foundation.d.ts +230 -0
- package/dist/icons/compare.d.ts +3 -0
- package/dist/icons/icons.d.ts +41 -0
- package/dist/icons/ied-icons.d.ts +3 -0
- package/dist/icons/lnode.d.ts +16 -0
- package/dist/open-scd.d.ts +131 -0
- package/dist/oscd-filter-button.d.ts +27 -0
- package/dist/plain-compare-list.d.ts +36 -0
- package/dist/plugin-tag.d.ts +6 -0
- package/dist/plugin.d.ts +23 -0
- package/dist/plugin.events.d.ts +15 -0
- package/dist/plugins.d.ts +3 -0
- package/dist/schemas.d.ts +58 -0
- package/dist/src/WizardDivider.d.ts +8 -0
- package/dist/src/WizardDivider.js.map +1 -0
- package/dist/src/Wizarding.d.ts +10 -0
- package/dist/src/Wizarding.js.map +1 -0
- package/dist/src/action-icon.d.ts +25 -0
- package/dist/src/action-icon.js.map +1 -0
- package/dist/src/action-pane.d.ts +25 -0
- package/dist/src/action-pane.js.map +1 -0
- package/dist/src/addons/Editor.d.ts +25 -0
- package/dist/src/addons/Editor.js.map +1 -0
- package/dist/src/addons/History.d.ts +86 -0
- package/dist/src/addons/History.js.map +1 -0
- package/dist/src/addons/Layout.d.ts +96 -0
- package/dist/src/addons/Layout.js.map +1 -0
- package/dist/src/addons/Settings.d.ts +68 -0
- package/dist/src/addons/Settings.js.map +1 -0
- package/dist/src/addons/Waiter.d.ts +14 -0
- package/dist/src/addons/Waiter.js.map +1 -0
- package/dist/src/addons/Wizards.d.ts +15 -0
- package/dist/src/addons/Wizards.js.map +1 -0
- package/dist/src/addons/editor/edit-action-to-v1-converter.d.ts +3 -0
- package/dist/src/addons/editor/edit-action-to-v1-converter.js.map +1 -0
- package/dist/src/addons/editor/edit-v1-to-v2-converter.d.ts +2 -0
- package/dist/src/addons/editor/edit-v1-to-v2-converter.js.map +1 -0
- package/dist/src/addons/history/get-log-text.d.ts +5 -0
- package/dist/src/addons/history/get-log-text.js.map +1 -0
- package/dist/src/addons/menu-tabs/menu-tabs.d.ts +22 -0
- package/dist/src/addons/menu-tabs/menu-tabs.js.map +1 -0
- package/dist/src/addons/plugin-manager/custom-plugin-dialog.d.ts +28 -0
- package/dist/src/addons/plugin-manager/custom-plugin-dialog.js.map +1 -0
- package/dist/src/addons/plugin-manager/plugin-manager.d.ts +20 -0
- package/dist/src/addons/plugin-manager/plugin-manager.js.map +1 -0
- package/dist/src/filtered-list.d.ts +27 -0
- package/dist/src/filtered-list.js.map +1 -0
- package/dist/src/finder-list.d.ts +37 -0
- package/dist/src/finder-list.js.map +1 -0
- package/dist/src/foundation/compare.d.ts +79 -0
- package/dist/src/foundation/compare.js.map +1 -0
- package/dist/src/foundation/dai.d.ts +30 -0
- package/dist/src/foundation/dai.js.map +1 -0
- package/dist/src/foundation/generators.d.ts +13 -0
- package/dist/src/foundation/generators.js.map +1 -0
- package/dist/src/foundation/ied.d.ts +22 -0
- package/dist/src/foundation/ied.js.map +1 -0
- package/dist/src/foundation/nsd.d.ts +4 -0
- package/dist/src/foundation/nsd.js.map +1 -0
- package/dist/src/foundation/nsdoc.d.ts +14 -0
- package/dist/src/foundation/nsdoc.js.map +1 -0
- package/dist/src/foundation/scl.d.ts +1 -0
- package/dist/src/foundation/scl.js.map +1 -0
- package/dist/src/foundation.d.ts +230 -0
- package/dist/src/foundation.js.map +1 -0
- package/dist/src/icons/compare.d.ts +3 -0
- package/dist/src/icons/compare.js.map +1 -0
- package/dist/src/icons/icons.d.ts +41 -0
- package/dist/src/icons/icons.js.map +1 -0
- package/dist/src/icons/ied-icons.d.ts +3 -0
- package/dist/src/icons/ied-icons.js.map +1 -0
- package/dist/src/icons/lnode.d.ts +16 -0
- package/dist/src/icons/lnode.js.map +1 -0
- package/dist/src/open-scd.d.ts +131 -0
- package/dist/src/open-scd.js.map +1 -0
- package/dist/src/oscd-filter-button.d.ts +27 -0
- package/dist/src/oscd-filter-button.js.map +1 -0
- package/dist/src/plain-compare-list.d.ts +36 -0
- package/dist/src/plain-compare-list.js.map +1 -0
- package/dist/src/plugin-tag.d.ts +6 -0
- package/dist/src/plugin-tag.js.map +1 -0
- package/dist/src/plugin.d.ts +23 -0
- package/dist/src/plugin.events.d.ts +15 -0
- package/dist/src/plugin.events.js.map +1 -0
- package/dist/src/plugin.js.map +1 -0
- package/dist/src/plugins.d.ts +3 -0
- package/dist/src/plugins.js.map +1 -0
- package/dist/src/schemas.d.ts +58 -0
- package/dist/src/schemas.js.map +1 -0
- package/dist/src/themes.d.ts +3 -0
- package/dist/src/themes.js.map +1 -0
- package/dist/src/translations/de.d.ts +2 -0
- package/dist/src/translations/de.js.map +1 -0
- package/dist/src/translations/en.d.ts +963 -0
- package/dist/src/translations/en.js.map +1 -0
- package/dist/src/translations/loader.d.ts +12 -0
- package/dist/src/translations/loader.js.map +1 -0
- package/dist/src/wizard-checkbox.d.ts +37 -0
- package/dist/src/wizard-checkbox.js.map +1 -0
- package/dist/src/wizard-dialog.d.ts +45 -0
- package/dist/src/wizard-dialog.js.map +1 -0
- package/dist/src/wizard-select.d.ts +31 -0
- package/dist/src/wizard-select.js.map +1 -0
- package/dist/src/wizard-textfield.d.ts +50 -0
- package/dist/src/wizard-textfield.js.map +1 -0
- package/dist/src/wizards.d.ts +23 -0
- package/dist/src/wizards.js.map +1 -0
- package/dist/test/foundation.d.ts +34 -0
- package/dist/test/foundation.js +55 -0
- package/dist/test/foundation.js.map +1 -0
- package/dist/test/mock-editor-logger.d.ts +16 -0
- package/dist/test/mock-editor-logger.js +53 -0
- package/dist/test/mock-editor-logger.js.map +1 -0
- package/dist/test/mock-edits.d.ts +7 -0
- package/dist/test/mock-edits.js +12 -0
- package/dist/test/mock-edits.js.map +1 -0
- package/dist/test/mock-open-scd.d.ts +22 -0
- package/dist/test/mock-open-scd.js +53 -0
- package/dist/test/mock-open-scd.js.map +1 -0
- package/dist/test/mock-plugins.d.ts +33 -0
- package/dist/test/mock-plugins.js +239 -0
- package/dist/test/mock-plugins.js.map +1 -0
- package/dist/test/mock-wizard-editor.d.ts +15 -0
- package/dist/test/mock-wizard-editor.js +50 -0
- package/dist/test/mock-wizard-editor.js.map +1 -0
- package/dist/themes.d.ts +3 -0
- package/dist/translations/de.d.ts +2 -0
- package/dist/translations/en.d.ts +963 -0
- package/dist/translations/loader.d.ts +12 -0
- package/dist/wizard-checkbox.d.ts +37 -0
- package/dist/wizard-dialog.d.ts +45 -0
- package/dist/wizard-select.d.ts +31 -0
- package/dist/wizard-textfield.d.ts +50 -0
- package/dist/wizards.d.ts +23 -0
- package/package.json +42 -22
- package/dist/core/api/api.js +0 -7
- package/dist/core/api/api.js.map +0 -1
- package/dist/core/api/editor/subject.js +0 -22
- package/dist/core/api/editor/subject.js.map +0 -1
- package/dist/core/api/editor/xml-editor.js +0 -82
- package/dist/core/api/editor/xml-editor.js.map +0 -1
- package/dist/core/api/plugin-state-api.js +0 -27
- package/dist/core/api/plugin-state-api.js.map +0 -1
- package/dist/core/foundation/cyrb64.js +0 -26
- package/dist/core/foundation/cyrb64.js.map +0 -1
- package/dist/core/foundation/deprecated/edit-event.js +0 -44
- package/dist/core/foundation/deprecated/edit-event.js.map +0 -1
- package/dist/core/foundation/deprecated/editor.js +0 -94
- package/dist/core/foundation/deprecated/editor.js.map +0 -1
- package/dist/core/foundation/deprecated/history.js +0 -17
- package/dist/core/foundation/deprecated/history.js.map +0 -1
- package/dist/core/foundation/deprecated/open-event.js +0 -9
- package/dist/core/foundation/deprecated/open-event.js.map +0 -1
- package/dist/core/foundation/deprecated/settings.js +0 -19
- package/dist/core/foundation/deprecated/settings.js.map +0 -1
- package/dist/core/foundation/deprecated/validation.js +0 -8
- package/dist/core/foundation/deprecated/validation.js.map +0 -1
- package/dist/core/foundation/deprecated/waiter.js +0 -12
- package/dist/core/foundation/deprecated/waiter.js.map +0 -1
- package/dist/core/foundation/edit-completed-event.js +0 -11
- package/dist/core/foundation/edit-completed-event.js.map +0 -1
- package/dist/core/foundation/edit-event.js +0 -8
- package/dist/core/foundation/edit-event.js.map +0 -1
- package/dist/core/foundation/edit.js +0 -31
- package/dist/core/foundation/edit.js.map +0 -1
- package/dist/core/foundation/handle-edit.js +0 -151
- package/dist/core/foundation/handle-edit.js.map +0 -1
- package/dist/core/foundation/open-event.js +0 -8
- package/dist/core/foundation/open-event.js.map +0 -1
- package/dist/core/foundation/plugin.js.map +0 -1
- package/dist/core/foundation.js +0 -14
- package/dist/core/foundation.js.map +0 -1
- package/dist/core/locales.js +0 -21
- package/dist/core/locales.js.map +0 -1
- package/dist/openscd/src/WizardDivider.js.map +0 -1
- package/dist/openscd/src/Wizarding.js.map +0 -1
- package/dist/openscd/src/action-icon.js.map +0 -1
- package/dist/openscd/src/action-pane.js.map +0 -1
- package/dist/openscd/src/addons/Editor.js.map +0 -1
- package/dist/openscd/src/addons/History.js.map +0 -1
- package/dist/openscd/src/addons/Layout.js.map +0 -1
- package/dist/openscd/src/addons/Settings.js.map +0 -1
- package/dist/openscd/src/addons/Waiter.js.map +0 -1
- package/dist/openscd/src/addons/Wizards.js.map +0 -1
- package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js.map +0 -1
- package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js.map +0 -1
- package/dist/openscd/src/addons/history/get-log-text.js.map +0 -1
- package/dist/openscd/src/addons/menu-tabs/menu-tabs.js.map +0 -1
- package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js.map +0 -1
- package/dist/openscd/src/addons/plugin-manager/plugin-manager.js.map +0 -1
- package/dist/openscd/src/filtered-list.js.map +0 -1
- package/dist/openscd/src/finder-list.js.map +0 -1
- package/dist/openscd/src/foundation/compare.js.map +0 -1
- package/dist/openscd/src/foundation/dai.js.map +0 -1
- package/dist/openscd/src/foundation/generators.js.map +0 -1
- package/dist/openscd/src/foundation/ied.js.map +0 -1
- package/dist/openscd/src/foundation/nsd.js.map +0 -1
- package/dist/openscd/src/foundation/nsdoc.js.map +0 -1
- package/dist/openscd/src/foundation/scl.js.map +0 -1
- package/dist/openscd/src/foundation.js.map +0 -1
- package/dist/openscd/src/icons/compare.js.map +0 -1
- package/dist/openscd/src/icons/icons.js.map +0 -1
- package/dist/openscd/src/icons/ied-icons.js.map +0 -1
- package/dist/openscd/src/icons/lnode.js.map +0 -1
- package/dist/openscd/src/open-scd.js.map +0 -1
- package/dist/openscd/src/oscd-filter-button.js.map +0 -1
- package/dist/openscd/src/plain-compare-list.js.map +0 -1
- package/dist/openscd/src/plugin-tag.js.map +0 -1
- package/dist/openscd/src/plugin.events.js.map +0 -1
- package/dist/openscd/src/plugin.js +0 -2
- package/dist/openscd/src/plugin.js.map +0 -1
- package/dist/openscd/src/plugins.js.map +0 -1
- package/dist/openscd/src/schemas.js.map +0 -1
- package/dist/openscd/src/themes.js.map +0 -1
- package/dist/openscd/src/translations/de.js.map +0 -1
- package/dist/openscd/src/translations/en.js.map +0 -1
- package/dist/openscd/src/translations/loader.js.map +0 -1
- package/dist/openscd/src/wizard-checkbox.js.map +0 -1
- package/dist/openscd/src/wizard-dialog.js.map +0 -1
- package/dist/openscd/src/wizard-select.js.map +0 -1
- package/dist/openscd/src/wizard-textfield.js.map +0 -1
- package/dist/openscd/src/wizards.js.map +0 -1
- package/dist/xml/src/foundation.js +0 -67
- package/dist/xml/src/foundation.js.map +0 -1
- package/dist/xml/src/index.js +0 -2
- package/dist/xml/src/index.js.map +0 -1
- /package/dist/{openscd/src → src}/WizardDivider.js +0 -0
- /package/dist/{openscd/src → src}/Wizarding.js +0 -0
- /package/dist/{openscd/src → src}/action-icon.js +0 -0
- /package/dist/{openscd/src → src}/action-pane.js +0 -0
- /package/dist/{openscd/src → src}/addons/Editor.js +0 -0
- /package/dist/{openscd/src → src}/addons/History.js +0 -0
- /package/dist/{openscd/src → src}/addons/Layout.js +0 -0
- /package/dist/{openscd/src → src}/addons/Settings.js +0 -0
- /package/dist/{openscd/src → src}/addons/Waiter.js +0 -0
- /package/dist/{openscd/src → src}/addons/Wizards.js +0 -0
- /package/dist/{openscd/src → src}/addons/editor/edit-action-to-v1-converter.js +0 -0
- /package/dist/{openscd/src → src}/addons/editor/edit-v1-to-v2-converter.js +0 -0
- /package/dist/{openscd/src → src}/addons/history/get-log-text.js +0 -0
- /package/dist/{openscd/src → src}/addons/menu-tabs/menu-tabs.js +0 -0
- /package/dist/{openscd/src → src}/addons/plugin-manager/custom-plugin-dialog.js +0 -0
- /package/dist/{openscd/src → src}/addons/plugin-manager/plugin-manager.js +0 -0
- /package/dist/{openscd/src → src}/filtered-list.js +0 -0
- /package/dist/{openscd/src → src}/finder-list.js +0 -0
- /package/dist/{openscd/src → src}/foundation/compare.js +0 -0
- /package/dist/{openscd/src → src}/foundation/dai.js +0 -0
- /package/dist/{openscd/src → src}/foundation/generators.js +0 -0
- /package/dist/{openscd/src → src}/foundation/ied.js +0 -0
- /package/dist/{openscd/src → src}/foundation/nsd.js +0 -0
- /package/dist/{openscd/src → src}/foundation/nsdoc.js +0 -0
- /package/dist/{openscd/src → src}/foundation/scl.js +0 -0
- /package/dist/{openscd/src → src}/foundation.js +0 -0
- /package/dist/{openscd/src → src}/icons/compare.js +0 -0
- /package/dist/{openscd/src → src}/icons/icons.js +0 -0
- /package/dist/{openscd/src → src}/icons/ied-icons.js +0 -0
- /package/dist/{openscd/src → src}/icons/lnode.js +0 -0
- /package/dist/{openscd/src → src}/open-scd.js +0 -0
- /package/dist/{openscd/src → src}/oscd-filter-button.js +0 -0
- /package/dist/{openscd/src → src}/plain-compare-list.js +0 -0
- /package/dist/{openscd/src → src}/plugin-tag.js +0 -0
- /package/dist/{openscd/src → src}/plugin.events.js +0 -0
- /package/dist/{core/foundation → src}/plugin.js +0 -0
- /package/dist/{openscd/src → src}/plugins.js +0 -0
- /package/dist/{openscd/src → src}/schemas.js +0 -0
- /package/dist/{openscd/src → src}/themes.js +0 -0
- /package/dist/{openscd/src → src}/translations/de.js +0 -0
- /package/dist/{openscd/src → src}/translations/en.js +0 -0
- /package/dist/{openscd/src → src}/translations/loader.js +0 -0
- /package/dist/{openscd/src → src}/wizard-checkbox.js +0 -0
- /package/dist/{openscd/src → src}/wizard-dialog.js +0 -0
- /package/dist/{openscd/src → src}/wizard-select.js +0 -0
- /package/dist/{openscd/src → src}/wizard-textfield.js +0 -0
- /package/dist/{openscd/src → src}/wizards.js +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit-element';
|
|
2
|
+
import '@material/mwc-icon';
|
|
3
|
+
import '@material/mwc-icon-button';
|
|
4
|
+
import '@material/mwc-linear-progress';
|
|
5
|
+
import '@material/mwc-list';
|
|
6
|
+
import '@material/mwc-list/mwc-list-item';
|
|
7
|
+
import '@material/mwc-tab';
|
|
8
|
+
import '@material/mwc-tab-bar';
|
|
9
|
+
import '@material/mwc-top-app-bar-fixed';
|
|
10
|
+
import '@material/mwc-drawer';
|
|
11
|
+
import '@material/mwc-button';
|
|
12
|
+
import '@material/mwc-dialog';
|
|
13
|
+
import '@material/mwc-formfield';
|
|
14
|
+
import '@material/mwc-list/mwc-check-list-item';
|
|
15
|
+
import '@material/mwc-list/mwc-radio-list-item';
|
|
16
|
+
import '@material/mwc-select';
|
|
17
|
+
import '@material/mwc-switch';
|
|
18
|
+
import '@material/mwc-textfield';
|
|
19
|
+
import './addons/Settings.js';
|
|
20
|
+
import './addons/Waiter.js';
|
|
21
|
+
import './addons/Wizards.js';
|
|
22
|
+
import './addons/Editor.js';
|
|
23
|
+
import './addons/History.js';
|
|
24
|
+
import './addons/Layout.js';
|
|
25
|
+
import { ActionDetail } from '@material/mwc-list';
|
|
26
|
+
import { Nsdoc } from './foundation/nsdoc.js';
|
|
27
|
+
import type { PluginSet, Plugin as CorePlugin } from '@openscd/core';
|
|
28
|
+
import { XMLEditor } from '@openscd/core';
|
|
29
|
+
import { MenuPosition, PluginKind, Plugin } from "./plugin.js";
|
|
30
|
+
import { ConfigurePluginEvent } from './plugin.events.js';
|
|
31
|
+
/** The `<open-scd>` custom element is the main entry point of the
|
|
32
|
+
* Open Substation Configuration Designer. */
|
|
33
|
+
export declare class OpenSCD extends LitElement {
|
|
34
|
+
render(): TemplateResult;
|
|
35
|
+
doc: XMLDocument | null;
|
|
36
|
+
/** The name of the current [[`doc`]] */
|
|
37
|
+
docName: string;
|
|
38
|
+
/** The UUID of the current [[`doc`]] */
|
|
39
|
+
docId: string;
|
|
40
|
+
editor: XMLEditor;
|
|
41
|
+
/** Object containing all *.nsdoc files and a function extracting element's label form them*/
|
|
42
|
+
nsdoc: Nsdoc;
|
|
43
|
+
private currentSrc;
|
|
44
|
+
/** The current file's URL. `blob:` URLs are *revoked after parsing*! */
|
|
45
|
+
get src(): string;
|
|
46
|
+
set src(value: string);
|
|
47
|
+
private storedPlugins;
|
|
48
|
+
private editCount;
|
|
49
|
+
private unsubscribers;
|
|
50
|
+
/** Loads and parses an `XMLDocument` after [[`src`]] has changed. */
|
|
51
|
+
private loadDoc;
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @deprecated Use `handleConfigurationPluginEvent` instead
|
|
55
|
+
*/
|
|
56
|
+
handleAddExternalPlugin(e: AddExternalPluginEvent): void;
|
|
57
|
+
handleConfigurationPluginEvent(e: ConfigurePluginEvent): void;
|
|
58
|
+
connectedCallback(): void;
|
|
59
|
+
disconnectedCallback(): void;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param name
|
|
63
|
+
* @param kind
|
|
64
|
+
* @returns the index of the plugin in the stored plugin list
|
|
65
|
+
*/
|
|
66
|
+
private findPluginIndex;
|
|
67
|
+
private hasPlugin;
|
|
68
|
+
private removePlugin;
|
|
69
|
+
private addPlugin;
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @param plugin
|
|
73
|
+
* @throws if the plugin is not found
|
|
74
|
+
*/
|
|
75
|
+
private changePlugin;
|
|
76
|
+
private resetPlugins;
|
|
77
|
+
/**
|
|
78
|
+
* @prop {PluginSet} plugins - Set of plugins that are used by OpenSCD
|
|
79
|
+
*/
|
|
80
|
+
plugins: PluginSet;
|
|
81
|
+
get parsedPlugins(): Plugin[];
|
|
82
|
+
private updateStoredPlugins;
|
|
83
|
+
private storePlugins;
|
|
84
|
+
private getPluginConfigsFromLocalStorage;
|
|
85
|
+
protected get locale(): string;
|
|
86
|
+
get docs(): Record<string, XMLDocument>;
|
|
87
|
+
private setPlugins;
|
|
88
|
+
private loadPlugins;
|
|
89
|
+
private addExternalPlugin;
|
|
90
|
+
protected getBuiltInPlugins(): CorePlugin[];
|
|
91
|
+
private addContent;
|
|
92
|
+
private loadedPlugins;
|
|
93
|
+
private pluginTags;
|
|
94
|
+
private pluginTag;
|
|
95
|
+
}
|
|
96
|
+
declare global {
|
|
97
|
+
interface ElementEventMap {
|
|
98
|
+
'reset-plugins': CustomEvent;
|
|
99
|
+
'add-external-plugin': CustomEvent<AddExternalPluginDetail>;
|
|
100
|
+
'set-plugins': CustomEvent<SetPluginsDetail>;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export interface MenuItem {
|
|
104
|
+
icon: string;
|
|
105
|
+
name: string;
|
|
106
|
+
src?: string;
|
|
107
|
+
hint?: string;
|
|
108
|
+
actionItem?: boolean;
|
|
109
|
+
action?: (event: CustomEvent<ActionDetail>) => void;
|
|
110
|
+
disabled?: () => boolean;
|
|
111
|
+
content: () => TemplateResult;
|
|
112
|
+
kind: string;
|
|
113
|
+
}
|
|
114
|
+
export interface Validator {
|
|
115
|
+
validate: () => Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
export interface MenuPlugin {
|
|
118
|
+
run: () => Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
export declare function newResetPluginsEvent(): CustomEvent;
|
|
121
|
+
export interface AddExternalPluginDetail {
|
|
122
|
+
plugin: Omit<Plugin, 'content'>;
|
|
123
|
+
}
|
|
124
|
+
export type AddExternalPluginEvent = CustomEvent<AddExternalPluginDetail>;
|
|
125
|
+
export declare function newAddExternalPluginEvent(plugin: Omit<Plugin, 'content'>): AddExternalPluginEvent;
|
|
126
|
+
export interface SetPluginsDetail {
|
|
127
|
+
selectedPlugins: Plugin[];
|
|
128
|
+
}
|
|
129
|
+
export type SetPluginsEvent = CustomEvent<SetPluginsDetail>;
|
|
130
|
+
export declare function newSetPluginsEvent(selectedPlugins: Plugin[]): SetPluginsEvent;
|
|
131
|
+
export declare const pluginIcons: Record<PluginKind | MenuPosition, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-scd.js","sourceRoot":"","sources":["../../src/open-scd.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n state,\n TemplateResult,\n} from 'lit-element';\nimport { classMap } from 'lit-html/directives/class-map';\n\nimport '@material/mwc-icon';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-linear-progress';\nimport '@material/mwc-list';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-tab';\nimport '@material/mwc-tab-bar';\nimport '@material/mwc-top-app-bar-fixed';\nimport '@material/mwc-drawer';\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-formfield';\nimport '@material/mwc-list/mwc-check-list-item';\nimport '@material/mwc-list/mwc-radio-list-item';\nimport '@material/mwc-select';\nimport '@material/mwc-switch';\nimport '@material/mwc-textfield';\n\nimport { newOpenDocEvent } from '@openscd/core/foundation/deprecated/open-event.js';\nimport { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter.js';\n\nimport './addons/Settings.js';\nimport './addons/Waiter.js';\nimport './addons/Wizards.js';\nimport './addons/Editor.js';\nimport './addons/History.js';\nimport './addons/Layout.js';\n\nimport { ActionDetail } from '@material/mwc-list';\n\nimport { officialPlugins as builtinPlugins } from './plugins.js';\nimport { initializeNsdoc, Nsdoc } from './foundation/nsdoc.js';\nimport type {\n PluginSet,\n Plugin as CorePlugin,\n EditCompletedEvent,\n} from '@openscd/core';\nimport { OscdApi, XMLEditor } from '@openscd/core';\n\nimport { InstalledOfficialPlugin, MenuPosition, PluginKind, Plugin } from \"./plugin.js\"\nimport { ConfigurePluginEvent, ConfigurePluginDetail, newConfigurePluginEvent } from './plugin.events.js';\nimport { newLogEvent } from '@openscd/core/foundation/deprecated/history';\nimport { pluginTag } from './plugin-tag.js';\n\n\n\n/** The `<open-scd>` custom element is the main entry point of the\n * Open Substation Configuration Designer. */\n@customElement('open-scd')\nexport class OpenSCD extends LitElement {\n\n render(): TemplateResult {\n return html`<oscd-waiter>\n <oscd-settings .host=${this}>\n <oscd-wizards .host=${this}>\n <oscd-history\n .host=${this}\n .editor=${this.editor}\n >\n <oscd-editor\n .doc=${this.doc}\n .docName=${this.docName}\n .docId=${this.docId}\n .host=${this}\n .editCount=${this.editCount}\n .editor=${this.editor}\n >\n <oscd-layout\n @add-external-plugin=${this.handleAddExternalPlugin}\n @oscd-configure-plugin=${this.handleConfigurationPluginEvent}\n @set-plugins=${ (e: SetPluginsEvent) => this.setPlugins(e.detail.selectedPlugins) }\n .host=${this}\n .doc=${this.doc}\n .docName=${this.docName}\n .editCount=${this.editCount}\n .plugins=${this.storedPlugins}\n .editor=${this.editor}\n >\n </oscd-layout>\n </oscd-editor>\n </oscd-history>\n </oscd-wizards>\n </oscd-settings>\n </oscd-waiter>`;\n }\n\n\n @property({ attribute: false })\n doc: XMLDocument | null = null;\n /** The name of the current [[`doc`]] */\n @property({ type: String }) docName = '';\n /** The UUID of the current [[`doc`]] */\n @property({ type: String }) docId = '';\n\n editor = new XMLEditor();\n\n /** Object containing all *.nsdoc files and a function extracting element's label form them*/\n @property({ attribute: false })\n nsdoc: Nsdoc = initializeNsdoc();\n\n private currentSrc = '';\n /** The current file's URL. `blob:` URLs are *revoked after parsing*! */\n @property({ type: String })\n get src(): string {\n return this.currentSrc;\n }\n\n set src(value: string) {\n this.currentSrc = value;\n this.dispatchEvent(newPendingStateEvent(this.loadDoc(value)));\n }\n\n @state() private storedPlugins: Plugin[] = [];\n\n @state() private editCount = -1;\n\n private unsubscribers: (() => any)[] = [];\n\n /** Loads and parses an `XMLDocument` after [[`src`]] has changed. */\n private async loadDoc(src: string): Promise<void> {\n const response = await fetch(src);\n const text = await response.text();\n if (!text) return;\n\n const doc = new DOMParser().parseFromString(text, 'application/xml');\n const docName = src;\n this.dispatchEvent(newOpenDocEvent(doc, docName));\n\n if (src.startsWith('blob:')) URL.revokeObjectURL(src);\n }\n\n /**\n *\n * @deprecated Use `handleConfigurationPluginEvent` instead\n */\n public handleAddExternalPlugin(e: AddExternalPluginEvent){\n this.addExternalPlugin(e.detail.plugin);\n const {name, kind} = e.detail.plugin\n\n const event = newConfigurePluginEvent(name,kind, e.detail.plugin)\n\n this.handleConfigurationPluginEvent(event)\n }\n\n\n public handleConfigurationPluginEvent(e: ConfigurePluginEvent){\n const { name, kind, config } = e.detail;\n\n const hasPlugin = this.hasPlugin(name, kind);\n const hasConfig = config !== null;\n const isChangeEvent = hasPlugin && hasConfig;\n const isRemoveEvent = hasPlugin && !hasConfig;\n const isAddEvent = !hasPlugin && hasConfig;\n\n // the `&& config`is only because typescript\n // cannot infer that `isChangeEvent` and `isAddEvent` implies `config !== null`\n if(isChangeEvent && config){\n this.changePlugin(config);\n\n }else if(isRemoveEvent){\n this.removePlugin(name, kind);\n\n }else if(isAddEvent && config){\n this.addPlugin(config);\n\n }else{\n const event = newLogEvent({\n kind: \"error\",\n title: \"Invalid plugin configuration event\",\n message: JSON.stringify({name, kind, config}),\n });\n this.dispatchEvent(event);\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.loadPlugins();\n\n this.unsubscribers.push(\n this.editor.subscribe(e => this.editCount++),\n this.editor.subscribeUndoRedo(e => this.editCount++)\n );\n\n // TODO: let Lit handle the event listeners, move to render()\n this.addEventListener('reset-plugins', this.resetPlugins);\n }\n\n disconnectedCallback(): void {\n this.unsubscribers.forEach(u => u());\n }\n\n\n /**\n *\n * @param name\n * @param kind\n * @returns the index of the plugin in the stored plugin list\n */\n private findPluginIndex(name: string, kind: PluginKind): number {\n return this.storedPlugins.findIndex(p => p.name === name && p.kind === kind);\n }\n\n private hasPlugin(name: string, kind: PluginKind): boolean {\n return this.findPluginIndex(name, kind) > -1;\n }\n\n private removePlugin(name: string, kind: PluginKind) {\n const newPlugins = this.storedPlugins.filter(\n p => p.name !== name || p.kind !== kind\n );\n this.updateStoredPlugins(newPlugins);\n }\n\n private addPlugin(plugin: Plugin) {\n const newPlugins = [...this.storedPlugins, plugin];\n this.updateStoredPlugins(newPlugins);\n }\n\n /**\n *\n * @param plugin\n * @throws if the plugin is not found\n */\n private changePlugin(plugin: Plugin) {\n const storedPlugins = this.storedPlugins;\n const {name, kind} = plugin;\n const pluginIndex = this.findPluginIndex(name, kind);\n\n if(pluginIndex < 0) {\n const event = newLogEvent({\n kind: \"error\",\n title: \"Plugin not found, stopping change process\",\n message: JSON.stringify({name, kind}),\n })\n this.dispatchEvent(event);\n return;\n }\n\n const pluginToChange = storedPlugins[pluginIndex]\n const changedPlugin = {...pluginToChange, ...plugin}\n const newPlugins = [...storedPlugins]\n newPlugins.splice(pluginIndex, 1, changedPlugin)\n\n // this.storePlugins(newPlugins);\n this.updateStoredPlugins(newPlugins);\n }\n\n private resetPlugins(): void {\n const builtInPlugins = this.getBuiltInPlugins()\n const allPlugins = [...builtInPlugins, ...this.parsedPlugins]\n\n const newPluginConfigs = allPlugins.map(plugin => {\n return {\n ...plugin,\n active: plugin.activeByDefault ?? false,\n }\n })\n\n this.storePlugins(newPluginConfigs)\n }\n\n /**\n * @prop {PluginSet} plugins - Set of plugins that are used by OpenSCD\n */\n @property({ type: Object }) plugins: PluginSet = { menu: [], editor: [] };\n get parsedPlugins(): Plugin[] {\n const menuPlugins: Plugin[] = this.plugins.menu.map((plugin) => {\n let newPosition: MenuPosition | undefined = plugin.position as MenuPosition;\n if(typeof plugin.position === 'number') {\n newPosition = undefined\n }\n\n return {\n ...plugin,\n position: newPosition,\n kind: 'menu' as PluginKind,\n active: plugin.active ?? false,\n }\n })\n\n const editorPlugins: Plugin[] = this.plugins.editor.map((plugin) => {\n const editorPlugin: Plugin = {\n ...plugin,\n position: undefined,\n kind: 'editor' as PluginKind,\n active: plugin.active ?? false,\n }\n return editorPlugin\n })\n\n const allPlugnis = [...menuPlugins, ...editorPlugins]\n return allPlugnis\n }\n\n\n\n private updateStoredPlugins(newPlugins: Plugin[]) {\n //\n // Generate content of each plugin\n //\n const plugins = newPlugins.map(plugin => {\n const isInstalled = plugin.src && plugin.active\n if(!isInstalled) { return plugin }\n\n return this.addContent(plugin)\n })\n\n //\n // Merge built-in plugins\n //\n const mergedPlugins = plugins.map(plugin => {\n const isBuiltIn = !plugin?.official\n if (!isBuiltIn){ return plugin };\n\n const builtInPlugin = [...this.getBuiltInPlugins(), ...this.parsedPlugins]\n .find(p => p.src === plugin.src);\n\n return <Plugin>{\n ...builtInPlugin,\n ...plugin,\n };\n })\n this.storePlugins(mergedPlugins);\n }\n\n private storePlugins(plugins: Plugin[]) {\n this.storedPlugins = plugins\n const pluginConfigs = JSON.stringify(plugins.map(withoutContent))\n localStorage.setItem('plugins', pluginConfigs);\n }\n private getPluginConfigsFromLocalStorage(): Plugin[] {\n const pluginsConfigStr = localStorage.getItem('plugins') ?? '[]'\n return JSON.parse(pluginsConfigStr) as Plugin[]\n }\n\n\n protected get locale(): string {\n return navigator.language || 'en-US';\n }\n\n get docs(): Record<string, XMLDocument> {\n const docs: Record<string, XMLDocument> = {};\n\n if (this.doc) {\n docs[this.docName] = this.doc;\n }\n\n return docs;\n }\n\n private setPlugins(selectedPlugins: Plugin[]) {\n\n const newPlugins: Plugin[] = this.storedPlugins.map((storedPlugin) => {\n const isSelected = selectedPlugins.some( (selectedPlugin) => {\n return selectedPlugin.name === storedPlugin.name\n && selectedPlugin.src === storedPlugin.src\n })\n return {\n ...storedPlugin,\n active: isSelected\n }\n })\n\n this.updateStoredPlugins(newPlugins);\n }\n\n private loadPlugins(){\n const localPluginConfigs = this.getPluginConfigsFromLocalStorage()\n\n const overwritesOfBultInPlugins = localPluginConfigs.filter((p) => {\n return this.getBuiltInPlugins().some(b => b.src === p.src)\n })\n\n const userInstalledPlugins = localPluginConfigs.filter((p) => {\n return !this.getBuiltInPlugins().some(b => b.src === p.src)\n })\n const mergedBuiltInPlugins = this.getBuiltInPlugins().map((builtInPlugin) => {\n let overwrite = overwritesOfBultInPlugins.find(p => p.src === builtInPlugin.src)\n\n const mergedPlugin: Plugin = {\n ...builtInPlugin,\n ...overwrite,\n active: overwrite?.active ?? builtInPlugin.activeByDefault,\n }\n\n return mergedPlugin\n })\n\n const mergedPlugins = [...mergedBuiltInPlugins, ...userInstalledPlugins]\n\n this.updateStoredPlugins(mergedPlugins)\n }\n\n private async addExternalPlugin(\n plugin: Omit<Plugin, 'content'>\n ): Promise<void> {\n if (this.storedPlugins.some(p => p.src === plugin.src)) return;\n\n const newPlugins: Omit<Plugin, 'content'>[] = this.storedPlugins;\n newPlugins.push(plugin);\n this.storePlugins(newPlugins);\n }\n\n protected getBuiltInPlugins(): CorePlugin[] {\n return builtinPlugins\n }\n\n private addContent(plugin: Omit<Plugin, 'content'>): Plugin {\n const tag = this.pluginTag(plugin.src);\n\n if (!this.loadedPlugins.has(tag)) {\n this.loadedPlugins.add(tag);\n import(plugin.src).then((mod) => {\n customElements.define(tag, mod.default)\n })\n }\n return {\n ...plugin,\n content: () => {\n return staticTagHtml`<${tag}\n .doc=${this.doc}\n .docName=${this.docName}\n .editCount=${this.editCount}\n .plugins=${this.storedPlugins}\n .docId=${this.docId}\n .pluginId=${plugin.src}\n .nsdoc=${this.nsdoc}\n .docs=${this.docs}\n .locale=${this.locale}\n .oscdApi=${new OscdApi(tag)}\n .editor=${this.editor}\n class=\"${classMap({\n plugin: true,\n menu: plugin.kind === 'menu',\n validator: plugin.kind === 'validator',\n editor: plugin.kind === 'editor',\n })}\"\n ></${tag}>`\n },\n };\n }\n\n @state() private loadedPlugins = new Set<string>();\n\n // PLUGGING INTERFACES\n @state() private pluginTags = new Map<string, string>();\n\n private pluginTag(uri: string): string {\n if (!this.pluginTags.has(uri)) {\n const tag = pluginTag(uri);\n this.pluginTags.set(uri, tag);\n }\n\n return this.pluginTags.get(uri)!;\n }\n\n\n}\n\ndeclare global {\n interface ElementEventMap {\n 'reset-plugins': CustomEvent;\n 'add-external-plugin': CustomEvent<AddExternalPluginDetail>;\n 'set-plugins': CustomEvent<SetPluginsDetail>;\n }\n}\n\n\n// HOSTING INTERFACES\n\nexport interface MenuItem {\n icon: string;\n name: string;\n src?: string;\n hint?: string;\n actionItem?: boolean;\n action?: (event: CustomEvent<ActionDetail>) => void;\n disabled?: () => boolean;\n content: () => TemplateResult;\n kind: string;\n}\n\nexport interface Validator {\n validate: () => Promise<void>;\n}\n\nexport interface MenuPlugin {\n run: () => Promise<void>;\n}\n\nexport function newResetPluginsEvent(): CustomEvent {\n return new CustomEvent('reset-plugins', { bubbles: true, composed: true });\n}\n\nexport interface AddExternalPluginDetail {\n plugin: Omit<Plugin, 'content'>;\n}\n\nexport type AddExternalPluginEvent = CustomEvent<AddExternalPluginDetail>;\n\nexport function newAddExternalPluginEvent(\n plugin: Omit<Plugin, 'content'>\n): AddExternalPluginEvent {\n return new CustomEvent<AddExternalPluginDetail>('add-external-plugin', {\n bubbles: true,\n composed: true,\n detail: { plugin },\n });\n}\n\nexport interface SetPluginsDetail {\n selectedPlugins: Plugin[];\n}\n\nexport type SetPluginsEvent = CustomEvent<SetPluginsDetail>;\n\nexport function newSetPluginsEvent(selectedPlugins: Plugin[]): SetPluginsEvent {\n return new CustomEvent<SetPluginsDetail>('set-plugins', {\n bubbles: true,\n composed: true,\n detail: { selectedPlugins },\n });\n}\n\n\n\n\n/**\n * This is a template literal tag function. See:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates\n *\n * Passes its arguments to LitElement's `html` tag after combining the first and\n * last expressions with the first two and last two static strings.\n * Throws unless the first and last expressions are identical strings.\n *\n * We need this to get around the expression location limitations documented in\n * https://lit.dev/docs/templates/expressions/#expression-locations\n *\n * After upgrading to Lit 2 we can use their static HTML functions instead:\n * https://lit.dev/docs/api/static-html/\n */\nfunction staticTagHtml(\n oldStrings: ReadonlyArray<string>,\n ...oldArgs: unknown[]\n): TemplateResult {\n const args = [...oldArgs];\n const firstArg = args.shift();\n const lastArg = args.pop();\n\n if (firstArg !== lastArg)\n throw new Error(\n `Opening tag <${firstArg}> does not match closing tag </${lastArg}>.`\n );\n\n const strings = [...oldStrings] as string[] & { raw: string[] };\n const firstString = strings.shift();\n const secondString = strings.shift();\n\n const lastString = strings.pop();\n const penultimateString = strings.pop();\n\n strings.unshift(`${firstString}${firstArg}${secondString}`);\n strings.push(`${penultimateString}${lastArg}${lastString}`);\n\n return html(<TemplateStringsArray>strings, ...args);\n}\n\n\nfunction withoutContent<P extends Plugin | InstalledOfficialPlugin>(\n plugin: P\n): P {\n return { ...plugin, content: undefined };\n}\n\nexport const pluginIcons: Record<PluginKind | MenuPosition, string> = {\n editor: 'tab',\n menu: 'play_circle',\n validator: 'rule_folder',\n top: 'play_circle',\n middle: 'play_circle',\n bottom: 'play_circle',\n};\n\nconst menuOrder: (PluginKind | MenuPosition)[] = [\n 'editor',\n 'top',\n 'validator',\n 'middle',\n 'bottom',\n];\n\nfunction menuCompare(a: Plugin, b: Plugin): -1 | 0 | 1 {\n if (a.kind === b.kind && a.position === b.position) return 0;\n const earlier = menuOrder.find(kind =>\n [a.kind, b.kind, a.position, b.position].includes(kind)\n );\n return [a.kind, a.position].includes(earlier) ? -1 : 1;\n}\n\nfunction compareNeedsDoc(a: Plugin, b: Plugin): -1 | 0 | 1 {\n if (a.requireDoc === b.requireDoc) return 0;\n return a.requireDoc ? 1 : -1;\n}\n\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit-element';
|
|
2
|
+
import '@material/mwc-icon-button';
|
|
3
|
+
import '@material/mwc-dialog';
|
|
4
|
+
import './filtered-list.js';
|
|
5
|
+
import { FilteredList } from './filtered-list.js';
|
|
6
|
+
/**
|
|
7
|
+
* A mwc-list with mwc-textfield that filters the list items for given or separated terms
|
|
8
|
+
*/
|
|
9
|
+
export declare class FilterButton extends FilteredList {
|
|
10
|
+
header: TemplateResult | string;
|
|
11
|
+
icon: string;
|
|
12
|
+
disabled: boolean;
|
|
13
|
+
private filterDialog;
|
|
14
|
+
private toggleList;
|
|
15
|
+
private onClosing;
|
|
16
|
+
render(): TemplateResult;
|
|
17
|
+
static styles: import("lit-element").CSSResult;
|
|
18
|
+
}
|
|
19
|
+
export interface SelectedItemsChangedDetail {
|
|
20
|
+
selectedItems: string[];
|
|
21
|
+
}
|
|
22
|
+
export type SelectedItemsChangedEvent = CustomEvent<SelectedItemsChangedDetail>;
|
|
23
|
+
declare global {
|
|
24
|
+
interface ElementEventMap {
|
|
25
|
+
['selected-items-changed']: SelectedItemsChangedEvent;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oscd-filter-button.js","sourceRoot":"","sources":["../../src/oscd-filter-button.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,KAAK,EAEL,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,CAAC;AAE9B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,YAAY;IAAvC;;QAML,aAAQ,GAAG,KAAK,CAAC;IAuDnB,CAAC;IAlDS,UAAU;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,SAAS;QACf,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC/D;iBAAM;gBACL,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC;SACjE;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,IAAI,CAAC,IAAI;kBACP,IAAI,CAAC,UAAU;qBACZ,IAAI,CAAC,QAAQ;;;;;;mBAMf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;;oBAExC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;;UAEhC,KAAK,CAAC,MAAM,EAAE;;YAEZ,GAAG,CAAC,OAAO,CAAC;;;KAGnB,CAAC;IACJ,CAAC;;AAEM,mBAAM,GAAG,GAAG,CAAA;MACf,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;;;;;;;;;GASjC,CAAC;AA1DF;IADC,QAAQ,EAAE;4CACsB;AAEjC;IADC,QAAQ,EAAE;0CACG;AAEd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACX;AAGjB;IADC,KAAK,CAAC,eAAe,CAAC;kDACO;AATnB,YAAY;IADxB,aAAa,CAAC,oBAAoB,CAAC;GACvB,YAAY,CA6DxB;SA7DY,YAAY;AAmEzB,SAAS,4BAA4B,CACnC,aAAuB,EACvB,aAA2D;IAE3D,OAAO,IAAI,WAAW,CAA6B,wBAAwB,EAAE;QAC3E,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,GAAG,aAAa;QAChB,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE;KACpD,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n css,\n customElement,\n html,\n property,\n query,\n TemplateResult,\n unsafeCSS,\n} from 'lit-element';\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-icon-button';\nimport '@material/mwc-dialog';\n\nimport './filtered-list.js';\n\nimport { FilteredList } from './filtered-list.js';\nimport { Dialog } from '@material/mwc-dialog';\n\n/**\n * A mwc-list with mwc-textfield that filters the list items for given or separated terms\n */\n@customElement('oscd-filter-button')\nexport class FilterButton extends FilteredList {\n @property()\n header!: TemplateResult | string;\n @property()\n icon!: string;\n @property({ type: Boolean })\n disabled = false;\n\n @query('#filterDialog')\n private filterDialog!: Dialog;\n\n private toggleList(): void {\n this.filterDialog.show();\n }\n\n private onClosing(): void {\n const selectedItems: string[] = [];\n if (this.selected) {\n if (this.selected instanceof Array) {\n this.selected.forEach(item => selectedItems.push(item.value));\n } else {\n selectedItems.push(this.selected.value);\n }\n this.dispatchEvent(newSelectedItemsChangedEvent(selectedItems));\n }\n }\n\n render(): TemplateResult {\n return html`\n <mwc-icon-button\n icon=\"${this.icon}\"\n @click=\"${this.toggleList}\"\n ?disabled=\"${this.disabled}\"\n >\n <slot name=\"icon\"></slot>\n </mwc-icon-button>\n <mwc-dialog\n id=\"filterDialog\"\n heading=\"${this.header ? this.header : get('filter')}\"\n scrimClickAction=\"\"\n @closing=\"${() => this.onClosing()}\"\n >\n ${super.render()}\n <mwc-button slot=\"primaryAction\" dialogAction=\"close\">\n ${get('close')}\n </mwc-button>\n </mwc-dialog>\n `;\n }\n\n static styles = css`\n ${unsafeCSS(FilteredList.styles)}\n\n mwc-icon-button {\n color: var(--mdc-theme-on-surface);\n }\n\n mwc-dialog {\n --mdc-dialog-max-height: calc(100vh - 150px);\n }\n `;\n}\n\nexport interface SelectedItemsChangedDetail {\n selectedItems: string[];\n}\nexport type SelectedItemsChangedEvent = CustomEvent<SelectedItemsChangedDetail>;\nfunction newSelectedItemsChangedEvent(\n selectedItems: string[],\n eventInitDict?: CustomEventInit<SelectedItemsChangedDetail>\n): SelectedItemsChangedEvent {\n return new CustomEvent<SelectedItemsChangedDetail>('selected-items-changed', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { selectedItems, ...eventInitDict?.detail },\n });\n}\n\ndeclare global {\n interface ElementEventMap {\n ['selected-items-changed']: SelectedItemsChangedEvent;\n }\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit-element';
|
|
2
|
+
import { DiffFilter } from './foundation/compare.js';
|
|
3
|
+
export declare class PlainCompareList extends LitElement {
|
|
4
|
+
/**
|
|
5
|
+
* The title of the left list
|
|
6
|
+
*/
|
|
7
|
+
leftHandTitle: string;
|
|
8
|
+
/**
|
|
9
|
+
* The title of the right list
|
|
10
|
+
*/
|
|
11
|
+
rightHandTitle: string;
|
|
12
|
+
/**
|
|
13
|
+
* The left Element that should be compared
|
|
14
|
+
*/
|
|
15
|
+
leftHandObject: Element;
|
|
16
|
+
/**
|
|
17
|
+
* The right element that should be compared against
|
|
18
|
+
*/
|
|
19
|
+
rightHandObject: Element;
|
|
20
|
+
/**
|
|
21
|
+
* Optional filter to ignore differences
|
|
22
|
+
*/
|
|
23
|
+
filterToIgnore?: DiffFilter<Element>;
|
|
24
|
+
/**
|
|
25
|
+
* The subtitle of the left list (optional)
|
|
26
|
+
*/
|
|
27
|
+
leftHandSubtitle: string;
|
|
28
|
+
/**
|
|
29
|
+
* The subtitle of the right list (optional)
|
|
30
|
+
*/
|
|
31
|
+
rightHandSubtitle: string;
|
|
32
|
+
filterMutables: boolean;
|
|
33
|
+
render(): TemplateResult;
|
|
34
|
+
protected renderFilterCheckbox(): TemplateResult;
|
|
35
|
+
static styles: import("lit-element").CSSResult;
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-compare-list.js","sourceRoot":"","sources":["../../src/plain-compare-list.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,QAAQ,EACR,IAAI,EAEJ,GAAG,EACH,KAAK,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAc,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QACL;;WAEG;QAEH,kBAAa,GAAG,EAAE,CAAC;QAEnB;;WAEG;QAEH,mBAAc,GAAG,EAAE,CAAC;QAoBpB;;WAEG;QAEH,qBAAgB,GAAG,EAAE,CAAC;QAEtB;;WAEG;QAEH,sBAAiB,GAAG,EAAE,CAAC;QAGvB,mBAAc,GAAG,IAAI,CAAC;IAqFxB,CAAC;IAnFC,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;;;0CAGO,IAAI,CAAC,aAAa;YAChD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YACzD,CAAC,CAAC,IAAI,CAAA,iCAAiC,IAAI,CAAC,gBAAgB,QAAQ;YACpE,CAAC,CAAC,EAAE;;;0CAG0B,IAAI,CAAC,cAAc;YACjD,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAA;kBACA,IAAI,CAAC,iBAAiB;qBACnB;YACT,CAAC,CAAC,EAAE;;;QAGR,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe;YAC3C,CAAC,CAAC,IAAI,CAAA;cACA,UAAU,CACV,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAC/C;WACF;YACH,CAAC,CAAC,EAAE;KACP,CAAC;IACJ,CAAC;IAES,oBAAoB;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAA;;;kCAGiB,GAAG,CAAC,wBAAwB,CAAC;;yBAEtC,IAAI,CAAC,cAAc;wBACpB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;;;;OAKnE,CAAC;SACH;QACD,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;;AAEM,uBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiClB,CAAC;AA3HF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACR;AAMnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACP;AAMpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACF;AAMzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDACD;AAM1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACU;AAMrC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0DACL;AAMtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2DACJ;AAGvB;IADC,KAAK,EAAE;wDACc;AA5CX,gBAAgB;IAD5B,aAAa,CAAC,oBAAoB,CAAC;GACvB,gBAAgB,CAiI5B;SAjIY,gBAAgB","sourcesContent":["import {\n customElement,\n LitElement,\n property,\n html,\n TemplateResult,\n css,\n state,\n} from 'lit-element';\nimport { get } from 'lit-translate';\n\nimport { DiffFilter, renderDiff } from './foundation/compare.js';\n\n@customElement('plain-compare-list')\nexport class PlainCompareList extends LitElement {\n /**\n * The title of the left list\n */\n @property({ type: String })\n leftHandTitle = '';\n\n /**\n * The title of the right list\n */\n @property({ type: String })\n rightHandTitle = '';\n\n /**\n * The left Element that should be compared\n */\n @property({ type: Object })\n leftHandObject!: Element;\n\n /**\n * The right element that should be compared against\n */\n @property({ type: Object })\n rightHandObject!: Element;\n\n /**\n * Optional filter to ignore differences\n */\n @property({ type: Object })\n filterToIgnore?: DiffFilter<Element>;\n\n /**\n * The subtitle of the left list (optional)\n */\n @property({ type: String })\n leftHandSubtitle = '';\n\n /**\n * The subtitle of the right list (optional)\n */\n @property({ type: String })\n rightHandSubtitle = '';\n\n @state()\n filterMutables = true;\n\n render(): TemplateResult {\n return html`\n ${this.renderFilterCheckbox()}\n <div class=\"container container--alt\">\n <div class=\"list__container list__container--left\">\n <h3 class=\"mdc-dialog__title\">${this.leftHandTitle}</h3>\n ${this.leftHandSubtitle && this.leftHandSubtitle.length > 0\n ? html`<h5 class=\"mdc-dialog__title\">${this.leftHandSubtitle}</h5> `\n : ''}\n </div>\n <div class=\"list__container\">\n <h3 class=\"mdc-dialog__title\">${this.rightHandTitle}</h3>\n ${this.rightHandSubtitle && this.rightHandSubtitle.length > 0\n ? html`<h5 class=\"mdc-dialog__title\">\n ${this.rightHandSubtitle}\n </h5> `\n : ''}\n </div>\n </div>\n ${this.leftHandObject && this.rightHandObject\n ? html`\n ${renderDiff(\n this.rightHandObject,\n this.leftHandObject,\n this.filterMutables ? this.filterToIgnore : {}\n )}\n `\n : ''}\n `;\n }\n\n protected renderFilterCheckbox(): TemplateResult {\n if (this.filterToIgnore) {\n return html`\n <div class=\"container\">\n <div class=\"flex\"></div>\n <mwc-formfield label=\"${get('compare.filterMutables')}\">\n <mwc-checkbox\n ?checked=${this.filterMutables}\n @change=${() => (this.filterMutables = !this.filterMutables)}\n >\n </mwc-checkbox>\n </mwc-formfield>\n </div>\n `;\n }\n return html``;\n }\n\n static styles = css`\n mwc-list-item {\n --mdc-list-item-graphic-margin: 0;\n }\n\n .mdc-dialog__title {\n padding: 0 16px;\n }\n\n .container {\n display: flex;\n gap: 4px;\n }\n\n .container--alt {\n background: var(--base2);\n }\n\n .list__container {\n width: 50%;\n background: var(--base3);\n }\n .list__container--left {\n text-align: right;\n }\n .flex {\n flex: 1;\n }\n\n mwc-list-item[right] {\n text-align: right;\n direction: rtl;\n }\n `;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-tag.js","sourceRoot":"","sources":["../../src/plugin-tag.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,IAAI,EAAE,GAAG,UAAU,EACnB,EAAE,GAAG,UAAU,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;KACnC;IACD,EAAE;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACxC,EAAE;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,aAAa;QAChB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YACzC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AACjD,CAAC","sourcesContent":["\n/**\n * Hashes `uri` using cyrb64 analogous to\n * https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js .\n * @returns a valid customElement tagName containing the URI hash.\n */\nexport function pluginTag(uri: string): string {\n let h1 = 0xdeadbeef,\n h2 = 0x41c6ce57;\n for (let i = 0, ch; i < uri.length; i++) {\n ch = uri.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 =\n Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^\n Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 =\n Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^\n Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return 'oscd-plugin' +\n ((h2 >>> 0).toString(16).padStart(8, '0') +\n (h1 >>> 0).toString(16).padStart(8, '0'))\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit-element';
|
|
2
|
+
import { Plugin as CorePlugin } from "@openscd/core";
|
|
3
|
+
export type Plugin = CorePlugin & {
|
|
4
|
+
official?: boolean;
|
|
5
|
+
active: boolean;
|
|
6
|
+
content?: () => TemplateResult;
|
|
7
|
+
};
|
|
8
|
+
export type PluginConfig = PluginConfigNotMenu | PluginConfigMenu;
|
|
9
|
+
export type PluginConfigNotMenu = Omit<Plugin, "position" | "active"> & {
|
|
10
|
+
kind: 'editor' | 'validator';
|
|
11
|
+
};
|
|
12
|
+
export type PluginConfigMenu = Omit<Plugin, "active"> & {
|
|
13
|
+
kind: 'menu';
|
|
14
|
+
position: MenuPosition;
|
|
15
|
+
};
|
|
16
|
+
export type InstalledOfficialPlugin = Plugin & {
|
|
17
|
+
src: string;
|
|
18
|
+
official: true;
|
|
19
|
+
installed: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type PluginKind = 'editor' | 'menu' | 'validator';
|
|
22
|
+
export declare const menuPosition: readonly ["top", "middle", "bottom"];
|
|
23
|
+
export type MenuPosition = (typeof menuPosition)[number];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Plugin, PluginKind } from './plugin.js';
|
|
2
|
+
/**
|
|
3
|
+
* The configure plugin event allows the plugin to request that OpenSCD core add, remove, or reconfigure a plugin.
|
|
4
|
+
*/
|
|
5
|
+
export type ConfigurePluginDetail = {
|
|
6
|
+
name: string;
|
|
7
|
+
kind: PluginKind;
|
|
8
|
+
config: Plugin | null;
|
|
9
|
+
};
|
|
10
|
+
export type ConfigurePluginEvent = CustomEvent<ConfigurePluginDetail>;
|
|
11
|
+
/**
|
|
12
|
+
* The combination of name and kind uniquely identifies the plugin to be configured.
|
|
13
|
+
* If config is null, the plugin is removed. Otherwise, the plugin is added or reconfigured.
|
|
14
|
+
*/
|
|
15
|
+
export declare function newConfigurePluginEvent(name: string, kind: PluginKind, config: Plugin | null): ConfigurePluginEvent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.events.js","sourceRoot":"","sources":["../../src/plugin.events.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,IAAgB,EAAE,MAAqB;IAC3F,OAAO,IAAI,WAAW,CAAwB,uBAAuB,EAAE;QACrE,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Plugin, PluginKind } from './plugin.js';\n\n/**\n * The configure plugin event allows the plugin to request that OpenSCD core add, remove, or reconfigure a plugin.\n */\nexport type ConfigurePluginDetail = {\n name: string;\n // The API describes only 'menu' and 'editor' kinds b\n // but we still use the 'validator' too, so I just use the type PluginKind\n kind: PluginKind;\n config: Plugin | null;\n};\n\nexport type ConfigurePluginEvent = CustomEvent<ConfigurePluginDetail>;\n\n/**\n * The combination of name and kind uniquely identifies the plugin to be configured.\n * If config is null, the plugin is removed. Otherwise, the plugin is added or reconfigured.\n */\nexport function newConfigurePluginEvent(name: string, kind: PluginKind, config: Plugin | null): ConfigurePluginEvent {\n return new CustomEvent<ConfigurePluginDetail>('oscd-configure-plugin', {\n bubbles: true,\n composed: true,\n detail: { name, kind, config },\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC","sourcesContent":["import { TemplateResult } from 'lit-element';\nimport { Plugin as CorePlugin } from \"@openscd/core\"\n\nexport type Plugin = CorePlugin & {\n official?: boolean;\n active: boolean;\n content?: () => TemplateResult;\n};\n\nexport type PluginConfig = PluginConfigNotMenu | PluginConfigMenu\n\nexport type PluginConfigNotMenu = Omit<Plugin, \"position\" | \"active\"> & {\n kind: 'editor' | 'validator';\n}\n\nexport type PluginConfigMenu = Omit<Plugin, \"active\"> & {\n kind: 'menu';\n position: MenuPosition;\n}\n\nexport type InstalledOfficialPlugin = Plugin & {\n src: string;\n official: true;\n installed: boolean;\n};\n\nexport type PluginKind = 'editor' | 'menu' | 'validator';\nexport const menuPosition = ['top', 'middle', 'bottom'] as const;\nexport type MenuPosition = (typeof menuPosition)[number];\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"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","sourcesContent":["import { PluginConfig } from './plugin.js';\n\nexport function generatePluginPath(plugin: string): string {\n return location.origin+location.pathname+plugin;\n}\n\nexport const officialPlugins: PluginConfig[] = [\n {\n name: 'IED',\n src: generatePluginPath('plugins/src/editors/IED.js'),\n icon: 'developer_board',\n activeByDefault: true,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Substation',\n src: generatePluginPath('plugins/src/editors/Substation.js'),\n icon: 'margin',\n activeByDefault: true,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Single Line Diagram',\n src: generatePluginPath('plugins/src/editors/SingleLineDiagram.js'),\n icon: 'edit',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Subscriber Message Binding (GOOSE)',\n src: generatePluginPath('plugins/src/editors/GooseSubscriberMessageBinding.js'),\n icon: 'link',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Subscriber Data Binding (GOOSE)',\n src: generatePluginPath('plugins/src/editors/GooseSubscriberDataBinding.js'),\n icon: 'link',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Subscriber Message Binding (SMV)',\n src: generatePluginPath('plugins/src/editors/SMVSubscriberMessageBinding.js'),\n icon: 'link',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Subscriber Data Binding (SMV)',\n src: generatePluginPath('plugins/src/editors/SMVSubscriberDataBinding.js'),\n icon: 'link',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Subscriber Later Binding (SMV/GOOSE)',\n src: generatePluginPath('external-plugins/oscd-subscriber-later-binding/oscd-subscriber-later-binding.js'),\n icon: 'link',\n activeByDefault: true,\n kind: 'editor',\n requireDoc: true\n },\n {\n name: 'Communication',\n src: generatePluginPath('plugins/src/editors/Communication.js'),\n icon: 'settings_ethernet',\n activeByDefault: true,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: '104',\n src: generatePluginPath('plugins/src/editors/Protocol104.js'),\n icon: 'settings_ethernet',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Templates',\n src: generatePluginPath('plugins/src/editors/Templates.js'),\n icon: 'copy_all',\n activeByDefault: true,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Publisher',\n src: generatePluginPath('external-plugins/oscd-publisher/oscd-publisher.js'),\n icon: 'publish',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Cleanup',\n src: generatePluginPath('plugins/src/editors/Cleanup.js'),\n icon: 'cleaning_services',\n activeByDefault: false,\n kind: 'editor',\n requireDoc: true,\n },\n {\n name: 'Open project',\n src: generatePluginPath('plugins/src/menu/OpenProject.js'),\n icon: 'folder_open',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: false,\n position: 'top',\n },\n {\n name: 'New project',\n src: generatePluginPath('plugins/src/menu/NewProject.js'),\n icon: 'create_new_folder',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: false,\n position: 'top',\n },\n {\n name: 'Plugin Store (Beta)',\n src: 'https://sprinteins.github.io/oscd-plugin-store/index.js',\n icon: 'shopping_bag',\n activeByDefault: false,\n kind: 'menu',\n requireDoc: false,\n position: 'bottom',\n },\n {\n name: 'Save project',\n src: generatePluginPath('plugins/src/menu/SaveProject.js'),\n icon: 'save',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'top',\n },\n {\n name: 'Validate Schema',\n src: generatePluginPath('plugins/src/validators/ValidateSchema.js'),\n icon: 'rule_folder',\n activeByDefault: true,\n kind: 'validator',\n },\n {\n name: 'Validate Templates',\n src: generatePluginPath('plugins/src/validators/ValidateTemplates.js'),\n icon: 'rule_folder',\n activeByDefault: true,\n kind: 'validator',\n },\n {\n name: 'Import IEDs',\n src: generatePluginPath('plugins/src/menu/ImportIEDs.js'),\n icon: 'snippet_folder',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Create Virtual IED',\n src: generatePluginPath('plugins/src/menu/VirtualTemplateIED.js'),\n icon: 'developer_board',\n activeByDefault: false,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Subscriber Update',\n src: generatePluginPath('plugins/src/menu/SubscriberInfo.js'),\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Update desc (ABB)',\n src: generatePluginPath('plugins/src/menu/UpdateDescriptionABB.js'),\n activeByDefault: false,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Update desc (SEL)',\n src: generatePluginPath('plugins/src/menu/UpdateDescriptionSEL.js'),\n activeByDefault: false,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Merge Project',\n src: generatePluginPath('plugins/src/menu/Merge.js'),\n icon: 'merge_type',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Update Substation',\n src: generatePluginPath('plugins/src/menu/UpdateSubstation.js'),\n icon: 'merge_type',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Compare IED',\n src: generatePluginPath('plugins/src/menu/CompareIED.js'),\n icon: 'compare_arrows',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n {\n name: 'Show SCL History',\n src: generatePluginPath('plugins/src/menu/SclHistory.js'),\n icon: 'history_toggle_off',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: true,\n position: 'bottom',\n },\n {\n name: 'Help',\n src: generatePluginPath('plugins/src/menu/Help.js'),\n icon: 'help',\n activeByDefault: true,\n kind: 'menu',\n requireDoc: false,\n position: 'bottom',\n },\n {\n name: 'Export Communication Section',\n src: generatePluginPath('plugins/src/menu/ExportCommunication.js'),\n icon: 'sim_card_download',\n activeByDefault: false,\n kind: 'menu',\n requireDoc: true,\n position: 'middle',\n },\n];\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Returns a new empty SCD document. */
|
|
2
|
+
export declare function newEmptySCD(id: string, versionId: SupportedVersion): XMLDocument;
|
|
3
|
+
export declare const SCL_NAMESPACE = "http://www.iec.ch/61850/2003/SCL";
|
|
4
|
+
/**
|
|
5
|
+
* Check if the namespace of the passed element is the standard SCL Namespace.
|
|
6
|
+
* @param element - The element to check.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isSCLNamespace(element: Element): boolean;
|
|
9
|
+
export interface ValidationError {
|
|
10
|
+
file: string;
|
|
11
|
+
line: number;
|
|
12
|
+
column: number;
|
|
13
|
+
level: 0 | 1 | 2 | 3;
|
|
14
|
+
message: string;
|
|
15
|
+
node: string;
|
|
16
|
+
part: string;
|
|
17
|
+
code: number;
|
|
18
|
+
valid?: undefined;
|
|
19
|
+
loaded?: undefined;
|
|
20
|
+
}
|
|
21
|
+
export interface ValidationResult {
|
|
22
|
+
file: string;
|
|
23
|
+
code: number;
|
|
24
|
+
valid: boolean;
|
|
25
|
+
loaded?: undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface LoadSchemaResult {
|
|
28
|
+
file: string;
|
|
29
|
+
valid?: undefined;
|
|
30
|
+
loaded: boolean;
|
|
31
|
+
}
|
|
32
|
+
export type WorkerMessage = ValidationError | ValidationResult | LoadSchemaResult | string;
|
|
33
|
+
export declare function isValidationError(msg: WorkerMessage): msg is ValidationError;
|
|
34
|
+
export declare function isValidationResult(msg: WorkerMessage): msg is ValidationResult;
|
|
35
|
+
export declare function isLoadSchemaResult(msg: WorkerMessage): msg is LoadSchemaResult;
|
|
36
|
+
export type Validator = (xml: string, xmlName: string) => Promise<ValidationResult>;
|
|
37
|
+
export declare function getSchema(version: string, revision: string, release: string): string;
|
|
38
|
+
export type SupportedVersion = keyof typeof schemas;
|
|
39
|
+
export declare function isSupported(version: string): version is SupportedVersion;
|
|
40
|
+
export type SchemaAttributes = {
|
|
41
|
+
version: '';
|
|
42
|
+
revision: '';
|
|
43
|
+
release: '';
|
|
44
|
+
} | {
|
|
45
|
+
version: '2007';
|
|
46
|
+
revision: 'B';
|
|
47
|
+
release: '';
|
|
48
|
+
} | {
|
|
49
|
+
version: '2007';
|
|
50
|
+
revision: 'B';
|
|
51
|
+
release: '4';
|
|
52
|
+
};
|
|
53
|
+
export declare const supportedAttributes: Record<SupportedVersion, SchemaAttributes>;
|
|
54
|
+
export declare const schemas: {
|
|
55
|
+
'2003': string;
|
|
56
|
+
'2007B': string;
|
|
57
|
+
'2007B4': string;
|
|
58
|
+
};
|