@compas-oscd/open-scd 0.34.17 → 0.34.19
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 -8
- package/dist/WizardDivider.js +26 -26
- package/dist/Wizarding.js +36 -36
- package/dist/Wizarding.js.map +1 -1
- package/dist/action-icon.d.ts +25 -25
- package/dist/action-icon.js +51 -51
- package/dist/action-pane.d.ts +25 -25
- package/dist/action-pane.js +86 -86
- package/dist/addons/Editor.d.ts +25 -25
- package/dist/addons/Editor.js +105 -105
- package/dist/addons/Editor.js.map +1 -1
- package/dist/addons/History.d.ts +86 -93
- package/dist/addons/History.js +301 -302
- package/dist/addons/History.js.map +1 -1
- package/dist/addons/Layout.d.ts +96 -96
- package/dist/addons/Layout.js +448 -448
- package/dist/addons/Layout.js.map +1 -1
- package/dist/addons/Settings.d.ts +68 -68
- package/dist/addons/Settings.js +272 -272
- package/dist/addons/Settings.js.map +1 -1
- package/dist/addons/Waiter.d.ts +14 -14
- package/dist/addons/Waiter.js +40 -40
- package/dist/addons/Waiter.js.map +1 -1
- package/dist/addons/Wizards.d.ts +15 -15
- package/dist/addons/Wizards.js +46 -46
- package/dist/addons/editor/edit-action-to-v1-converter.d.ts +3 -3
- package/dist/addons/editor/edit-action-to-v1-converter.js +95 -95
- package/dist/addons/editor/edit-action-to-v1-converter.js.map +1 -1
- package/dist/addons/editor/edit-v1-to-v2-converter.d.ts +2 -2
- package/dist/addons/editor/edit-v1-to-v2-converter.js +36 -36
- package/dist/addons/editor/edit-v1-to-v2-converter.js.map +1 -1
- package/dist/addons/history/get-log-text.d.ts +5 -5
- package/dist/addons/history/get-log-text.js +25 -25
- package/dist/addons/history/get-log-text.js.map +1 -1
- package/dist/addons/menu-tabs/menu-tabs.d.ts +22 -22
- package/dist/addons/menu-tabs/menu-tabs.js +59 -59
- package/dist/addons/plugin-manager/custom-plugin-dialog.d.ts +28 -28
- package/dist/addons/plugin-manager/custom-plugin-dialog.js +71 -71
- package/dist/addons/plugin-manager/plugin-manager.d.ts +20 -20
- package/dist/addons/plugin-manager/plugin-manager.js +77 -77
- package/dist/core/api/api.js +7 -0
- package/dist/core/api/api.js.map +1 -0
- package/dist/core/api/editor/subject.js +22 -0
- package/dist/core/api/editor/subject.js.map +1 -0
- package/dist/core/api/editor/xml-editor.js +82 -0
- package/dist/core/api/editor/xml-editor.js.map +1 -0
- package/dist/core/api/plugin-state-api.js +27 -0
- package/dist/core/api/plugin-state-api.js.map +1 -0
- package/dist/core/foundation/cyrb64.js +26 -0
- package/dist/core/foundation/cyrb64.js.map +1 -0
- package/dist/core/foundation/deprecated/edit-event.js +44 -0
- package/dist/core/foundation/deprecated/edit-event.js.map +1 -0
- package/dist/core/foundation/deprecated/editor.js +94 -0
- package/dist/core/foundation/deprecated/editor.js.map +1 -0
- package/dist/core/foundation/deprecated/history.js +17 -0
- package/dist/core/foundation/deprecated/history.js.map +1 -0
- package/dist/core/foundation/deprecated/open-event.js +9 -0
- package/dist/core/foundation/deprecated/open-event.js.map +1 -0
- package/dist/core/foundation/deprecated/settings.js +19 -0
- package/dist/core/foundation/deprecated/settings.js.map +1 -0
- package/dist/core/foundation/deprecated/validation.js +8 -0
- package/dist/core/foundation/deprecated/validation.js.map +1 -0
- package/dist/core/foundation/deprecated/waiter.js +12 -0
- package/dist/core/foundation/deprecated/waiter.js.map +1 -0
- package/dist/core/foundation/edit-completed-event.js +11 -0
- package/dist/core/foundation/edit-completed-event.js.map +1 -0
- package/dist/core/foundation/edit-event.js +8 -0
- package/dist/core/foundation/edit-event.js.map +1 -0
- package/dist/core/foundation/edit.js +31 -0
- package/dist/core/foundation/edit.js.map +1 -0
- package/dist/core/foundation/handle-edit.js +151 -0
- package/dist/core/foundation/handle-edit.js.map +1 -0
- package/dist/core/foundation/open-event.js +8 -0
- package/dist/core/foundation/open-event.js.map +1 -0
- package/dist/core/foundation/plugin.js +2 -0
- package/dist/core/foundation/plugin.js.map +1 -0
- package/dist/core/foundation.js +14 -0
- package/dist/core/foundation.js.map +1 -0
- package/dist/core/locales.js +21 -0
- package/dist/core/locales.js.map +1 -0
- package/dist/filtered-list.d.ts +27 -27
- package/dist/filtered-list.js +118 -118
- package/dist/finder-list.d.ts +37 -37
- package/dist/finder-list.js +153 -153
- package/dist/foundation/compare.d.ts +79 -79
- package/dist/foundation/compare.js +216 -216
- package/dist/foundation/dai.d.ts +30 -30
- package/dist/foundation/dai.js +126 -126
- package/dist/foundation/generators.d.ts +13 -13
- package/dist/foundation/generators.js +66 -66
- package/dist/foundation/ied.d.ts +22 -22
- package/dist/foundation/ied.js +83 -83
- package/dist/foundation/ied.js.map +1 -1
- package/dist/foundation/nsd.d.ts +4 -4
- package/dist/foundation/nsd.js +12 -12
- package/dist/foundation/nsdoc.d.ts +14 -14
- package/dist/foundation/nsdoc.js +178 -178
- package/dist/foundation/scl.d.ts +1 -1
- package/dist/foundation/scl.js +63 -63
- package/dist/foundation.d.ts +230 -230
- package/dist/foundation.js +1921 -1921
- package/dist/foundation.js.map +1 -1
- package/dist/icons/compare.d.ts +3 -3
- package/dist/icons/compare.js +4 -4
- package/dist/icons/icons.d.ts +41 -41
- package/dist/icons/icons.js +92 -92
- package/dist/icons/ied-icons.d.ts +3 -3
- package/dist/icons/ied-icons.js +4 -4
- package/dist/icons/lnode.d.ts +16 -16
- package/dist/icons/lnode.js +17 -17
- package/dist/open-scd.d.ts +131 -131
- package/dist/open-scd.js +438 -438
- package/dist/open-scd.js.map +1 -1
- package/dist/openscd/src/WizardDivider.js +37 -0
- package/dist/openscd/src/WizardDivider.js.map +1 -0
- package/dist/openscd/src/Wizarding.js +38 -0
- package/dist/openscd/src/Wizarding.js.map +1 -0
- package/dist/openscd/src/action-icon.js +220 -0
- package/dist/openscd/src/action-icon.js.map +1 -0
- package/dist/openscd/src/action-pane.js +176 -0
- package/dist/openscd/src/action-pane.js.map +1 -0
- package/dist/openscd/src/addons/Editor.js +106 -0
- package/dist/openscd/src/addons/Editor.js.map +1 -0
- package/dist/openscd/src/addons/History.js +490 -0
- package/dist/openscd/src/addons/History.js.map +1 -0
- package/dist/openscd/src/addons/Layout.js +619 -0
- package/dist/openscd/src/addons/Layout.js.map +1 -0
- package/dist/openscd/src/addons/Settings.js +465 -0
- package/dist/openscd/src/addons/Settings.js.map +1 -0
- package/dist/openscd/src/addons/Waiter.js +45 -0
- package/dist/openscd/src/addons/Waiter.js.map +1 -0
- package/dist/openscd/src/addons/Wizards.js +48 -0
- package/dist/openscd/src/addons/Wizards.js.map +1 -0
- package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js +96 -0
- package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js.map +1 -0
- package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js +37 -0
- package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js.map +1 -0
- package/dist/openscd/src/addons/history/get-log-text.js +26 -0
- package/dist/openscd/src/addons/history/get-log-text.js.map +1 -0
- package/dist/openscd/src/addons/menu-tabs/menu-tabs.js +74 -0
- package/dist/openscd/src/addons/menu-tabs/menu-tabs.js.map +1 -0
- package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js +177 -0
- package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js.map +1 -0
- package/dist/openscd/src/addons/plugin-manager/plugin-manager.js +165 -0
- package/dist/openscd/src/addons/plugin-manager/plugin-manager.js.map +1 -0
- package/dist/openscd/src/filtered-list.js +168 -0
- package/dist/openscd/src/filtered-list.js.map +1 -0
- package/dist/openscd/src/finder-list.js +207 -0
- package/dist/openscd/src/finder-list.js.map +1 -0
- package/dist/openscd/src/foundation/compare.js +273 -0
- package/dist/openscd/src/foundation/compare.js.map +1 -0
- package/dist/openscd/src/foundation/dai.js +127 -0
- package/dist/openscd/src/foundation/dai.js.map +1 -0
- package/dist/openscd/src/foundation/generators.js +67 -0
- package/dist/openscd/src/foundation/generators.js.map +1 -0
- package/dist/openscd/src/foundation/ied.js +84 -0
- package/dist/openscd/src/foundation/ied.js.map +1 -0
- package/dist/openscd/src/foundation/nsd.js +13 -0
- package/dist/openscd/src/foundation/nsd.js.map +1 -0
- package/dist/openscd/src/foundation/nsdoc.js +180 -0
- package/dist/openscd/src/foundation/nsdoc.js.map +1 -0
- package/dist/openscd/src/foundation/scl.js +64 -0
- package/dist/openscd/src/foundation/scl.js.map +1 -0
- package/dist/openscd/src/foundation.js +1922 -0
- package/dist/openscd/src/foundation.js.map +1 -0
- package/dist/openscd/src/icons/compare.js +11 -0
- package/dist/openscd/src/icons/compare.js.map +1 -0
- package/dist/openscd/src/icons/icons.js +611 -0
- package/dist/openscd/src/icons/icons.js.map +1 -0
- package/dist/openscd/src/icons/ied-icons.js +11 -0
- package/dist/openscd/src/icons/ied-icons.js.map +1 -0
- package/dist/openscd/src/icons/lnode.js +50 -0
- package/dist/openscd/src/icons/lnode.js.map +1 -0
- package/dist/openscd/src/open-scd.js +483 -0
- package/dist/openscd/src/open-scd.js.map +1 -0
- package/dist/openscd/src/oscd-filter-button.js +89 -0
- package/dist/openscd/src/oscd-filter-button.js.map +1 -0
- package/dist/openscd/src/plain-compare-list.js +132 -0
- package/dist/openscd/src/plain-compare-list.js.map +1 -0
- package/dist/openscd/src/plugin-tag.js +23 -0
- package/dist/openscd/src/plugin-tag.js.map +1 -0
- package/dist/openscd/src/plugin.events.js +12 -0
- package/dist/openscd/src/plugin.events.js.map +1 -0
- package/dist/openscd/src/plugin.js +2 -0
- package/dist/openscd/src/plugin.js.map +1 -0
- package/dist/openscd/src/plugins.js +256 -0
- package/dist/openscd/src/plugins.js.map +1 -0
- package/dist/openscd/src/schemas.js +9325 -0
- package/dist/openscd/src/schemas.js.map +1 -0
- package/dist/openscd/src/themes.js +122 -0
- package/dist/openscd/src/themes.js.map +1 -0
- package/dist/openscd/src/translations/de.js +954 -0
- package/dist/openscd/src/translations/de.js.map +1 -0
- package/dist/openscd/src/translations/en.js +950 -0
- package/dist/openscd/src/translations/en.js.map +1 -0
- package/dist/openscd/src/translations/loader.js +10 -0
- package/dist/openscd/src/translations/loader.js.map +1 -0
- package/dist/openscd/src/wizard-checkbox.js +152 -0
- package/dist/openscd/src/wizard-checkbox.js.map +1 -0
- package/dist/openscd/src/wizard-dialog.js +374 -0
- package/dist/openscd/src/wizard-dialog.js.map +1 -0
- package/dist/openscd/src/wizard-select.js +115 -0
- package/dist/openscd/src/wizard-select.js.map +1 -0
- package/dist/openscd/src/wizard-textfield.js +191 -0
- package/dist/openscd/src/wizard-textfield.js.map +1 -0
- package/dist/openscd/src/wizards.js +196 -0
- package/dist/openscd/src/wizards.js.map +1 -0
- package/dist/oscd-filter-button.d.ts +27 -27
- package/dist/oscd-filter-button.js +59 -59
- package/dist/plain-compare-list.d.ts +36 -36
- package/dist/plain-compare-list.js +70 -70
- package/dist/plugin-tag.d.ts +6 -6
- package/dist/plugin-tag.js +22 -22
- package/dist/plugin.d.ts +23 -23
- package/dist/plugin.events.d.ts +15 -15
- package/dist/plugin.events.js +11 -11
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugins.d.ts +3 -3
- package/dist/plugins.js +255 -255
- package/dist/schemas.d.ts +58 -58
- package/dist/schemas.js +59 -59
- package/dist/themes.d.ts +3 -3
- package/dist/themes.js +13 -13
- package/dist/themes.js.map +1 -1
- package/dist/translations/de.d.ts +2 -2
- package/dist/translations/de.js +952 -952
- package/dist/translations/en.d.ts +963 -963
- package/dist/translations/en.js +948 -948
- package/dist/translations/loader.d.ts +12 -12
- package/dist/translations/loader.js +9 -9
- package/dist/translations/loader.js.map +1 -1
- package/dist/wizard-checkbox.d.ts +37 -37
- package/dist/wizard-checkbox.js +130 -130
- package/dist/wizard-dialog.d.ts +45 -45
- package/dist/wizard-dialog.js +235 -235
- package/dist/wizard-dialog.js.map +1 -1
- package/dist/wizard-select.d.ts +31 -31
- package/dist/wizard-select.js +102 -102
- package/dist/wizard-textfield.d.ts +50 -50
- package/dist/wizard-textfield.js +162 -162
- package/dist/wizards.d.ts +23 -23
- package/dist/wizards.js +148 -148
- package/dist/wizards.js.map +1 -1
- package/dist/xml/src/foundation.js +67 -0
- package/dist/xml/src/foundation.js.map +1 -0
- package/dist/xml/src/index.js +2 -0
- package/dist/xml/src/index.js.map +1 -0
- package/package.json +38 -127
- package/dist/Wizarding.d.ts +0 -10
|
@@ -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,89 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { css, customElement, html, property, query, unsafeCSS, } from 'lit-element';
|
|
3
|
+
import { get } from 'lit-translate';
|
|
4
|
+
import '@material/mwc-icon-button';
|
|
5
|
+
import '@material/mwc-dialog';
|
|
6
|
+
import './filtered-list.js';
|
|
7
|
+
import { FilteredList } from './filtered-list.js';
|
|
8
|
+
/**
|
|
9
|
+
* A mwc-list with mwc-textfield that filters the list items for given or separated terms
|
|
10
|
+
*/
|
|
11
|
+
let FilterButton = class FilterButton extends FilteredList {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.disabled = false;
|
|
15
|
+
}
|
|
16
|
+
toggleList() {
|
|
17
|
+
this.filterDialog.show();
|
|
18
|
+
}
|
|
19
|
+
onClosing() {
|
|
20
|
+
const selectedItems = [];
|
|
21
|
+
if (this.selected) {
|
|
22
|
+
if (this.selected instanceof Array) {
|
|
23
|
+
this.selected.forEach(item => selectedItems.push(item.value));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
selectedItems.push(this.selected.value);
|
|
27
|
+
}
|
|
28
|
+
this.dispatchEvent(newSelectedItemsChangedEvent(selectedItems));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
return html `
|
|
33
|
+
<mwc-icon-button
|
|
34
|
+
icon="${this.icon}"
|
|
35
|
+
@click="${this.toggleList}"
|
|
36
|
+
?disabled="${this.disabled}"
|
|
37
|
+
>
|
|
38
|
+
<slot name="icon"></slot>
|
|
39
|
+
</mwc-icon-button>
|
|
40
|
+
<mwc-dialog
|
|
41
|
+
id="filterDialog"
|
|
42
|
+
heading="${this.header ? this.header : get('filter')}"
|
|
43
|
+
scrimClickAction=""
|
|
44
|
+
@closing="${() => this.onClosing()}"
|
|
45
|
+
>
|
|
46
|
+
${super.render()}
|
|
47
|
+
<mwc-button slot="primaryAction" dialogAction="close">
|
|
48
|
+
${get('close')}
|
|
49
|
+
</mwc-button>
|
|
50
|
+
</mwc-dialog>
|
|
51
|
+
`;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
FilterButton.styles = css `
|
|
55
|
+
${unsafeCSS(FilteredList.styles)}
|
|
56
|
+
|
|
57
|
+
mwc-icon-button {
|
|
58
|
+
color: var(--mdc-theme-on-surface);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
mwc-dialog {
|
|
62
|
+
--mdc-dialog-max-height: calc(100vh - 150px);
|
|
63
|
+
}
|
|
64
|
+
`;
|
|
65
|
+
__decorate([
|
|
66
|
+
property()
|
|
67
|
+
], FilterButton.prototype, "header", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
property()
|
|
70
|
+
], FilterButton.prototype, "icon", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
property({ type: Boolean })
|
|
73
|
+
], FilterButton.prototype, "disabled", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
query('#filterDialog')
|
|
76
|
+
], FilterButton.prototype, "filterDialog", void 0);
|
|
77
|
+
FilterButton = __decorate([
|
|
78
|
+
customElement('oscd-filter-button')
|
|
79
|
+
], FilterButton);
|
|
80
|
+
export { FilterButton };
|
|
81
|
+
function newSelectedItemsChangedEvent(selectedItems, eventInitDict) {
|
|
82
|
+
return new CustomEvent('selected-items-changed', {
|
|
83
|
+
bubbles: true,
|
|
84
|
+
composed: true,
|
|
85
|
+
...eventInitDict,
|
|
86
|
+
detail: { selectedItems, ...eventInitDict?.detail },
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=oscd-filter-button.js.map
|
|
@@ -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,132 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement, LitElement, property, html, css, state, } from 'lit-element';
|
|
3
|
+
import { get } from 'lit-translate';
|
|
4
|
+
import { renderDiff } from './foundation/compare.js';
|
|
5
|
+
let PlainCompareList = class PlainCompareList extends LitElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
/**
|
|
9
|
+
* The title of the left list
|
|
10
|
+
*/
|
|
11
|
+
this.leftHandTitle = '';
|
|
12
|
+
/**
|
|
13
|
+
* The title of the right list
|
|
14
|
+
*/
|
|
15
|
+
this.rightHandTitle = '';
|
|
16
|
+
/**
|
|
17
|
+
* The subtitle of the left list (optional)
|
|
18
|
+
*/
|
|
19
|
+
this.leftHandSubtitle = '';
|
|
20
|
+
/**
|
|
21
|
+
* The subtitle of the right list (optional)
|
|
22
|
+
*/
|
|
23
|
+
this.rightHandSubtitle = '';
|
|
24
|
+
this.filterMutables = true;
|
|
25
|
+
}
|
|
26
|
+
render() {
|
|
27
|
+
return html `
|
|
28
|
+
${this.renderFilterCheckbox()}
|
|
29
|
+
<div class="container container--alt">
|
|
30
|
+
<div class="list__container list__container--left">
|
|
31
|
+
<h3 class="mdc-dialog__title">${this.leftHandTitle}</h3>
|
|
32
|
+
${this.leftHandSubtitle && this.leftHandSubtitle.length > 0
|
|
33
|
+
? html `<h5 class="mdc-dialog__title">${this.leftHandSubtitle}</h5> `
|
|
34
|
+
: ''}
|
|
35
|
+
</div>
|
|
36
|
+
<div class="list__container">
|
|
37
|
+
<h3 class="mdc-dialog__title">${this.rightHandTitle}</h3>
|
|
38
|
+
${this.rightHandSubtitle && this.rightHandSubtitle.length > 0
|
|
39
|
+
? html `<h5 class="mdc-dialog__title">
|
|
40
|
+
${this.rightHandSubtitle}
|
|
41
|
+
</h5> `
|
|
42
|
+
: ''}
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
${this.leftHandObject && this.rightHandObject
|
|
46
|
+
? html `
|
|
47
|
+
${renderDiff(this.rightHandObject, this.leftHandObject, this.filterMutables ? this.filterToIgnore : {})}
|
|
48
|
+
`
|
|
49
|
+
: ''}
|
|
50
|
+
`;
|
|
51
|
+
}
|
|
52
|
+
renderFilterCheckbox() {
|
|
53
|
+
if (this.filterToIgnore) {
|
|
54
|
+
return html `
|
|
55
|
+
<div class="container">
|
|
56
|
+
<div class="flex"></div>
|
|
57
|
+
<mwc-formfield label="${get('compare.filterMutables')}">
|
|
58
|
+
<mwc-checkbox
|
|
59
|
+
?checked=${this.filterMutables}
|
|
60
|
+
@change=${() => (this.filterMutables = !this.filterMutables)}
|
|
61
|
+
>
|
|
62
|
+
</mwc-checkbox>
|
|
63
|
+
</mwc-formfield>
|
|
64
|
+
</div>
|
|
65
|
+
`;
|
|
66
|
+
}
|
|
67
|
+
return html ``;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
PlainCompareList.styles = css `
|
|
71
|
+
mwc-list-item {
|
|
72
|
+
--mdc-list-item-graphic-margin: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.mdc-dialog__title {
|
|
76
|
+
padding: 0 16px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.container {
|
|
80
|
+
display: flex;
|
|
81
|
+
gap: 4px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.container--alt {
|
|
85
|
+
background: var(--base2);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.list__container {
|
|
89
|
+
width: 50%;
|
|
90
|
+
background: var(--base3);
|
|
91
|
+
}
|
|
92
|
+
.list__container--left {
|
|
93
|
+
text-align: right;
|
|
94
|
+
}
|
|
95
|
+
.flex {
|
|
96
|
+
flex: 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
mwc-list-item[right] {
|
|
100
|
+
text-align: right;
|
|
101
|
+
direction: rtl;
|
|
102
|
+
}
|
|
103
|
+
`;
|
|
104
|
+
__decorate([
|
|
105
|
+
property({ type: String })
|
|
106
|
+
], PlainCompareList.prototype, "leftHandTitle", void 0);
|
|
107
|
+
__decorate([
|
|
108
|
+
property({ type: String })
|
|
109
|
+
], PlainCompareList.prototype, "rightHandTitle", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
property({ type: Object })
|
|
112
|
+
], PlainCompareList.prototype, "leftHandObject", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
property({ type: Object })
|
|
115
|
+
], PlainCompareList.prototype, "rightHandObject", void 0);
|
|
116
|
+
__decorate([
|
|
117
|
+
property({ type: Object })
|
|
118
|
+
], PlainCompareList.prototype, "filterToIgnore", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
property({ type: String })
|
|
121
|
+
], PlainCompareList.prototype, "leftHandSubtitle", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
property({ type: String })
|
|
124
|
+
], PlainCompareList.prototype, "rightHandSubtitle", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
state()
|
|
127
|
+
], PlainCompareList.prototype, "filterMutables", void 0);
|
|
128
|
+
PlainCompareList = __decorate([
|
|
129
|
+
customElement('plain-compare-list')
|
|
130
|
+
], PlainCompareList);
|
|
131
|
+
export { PlainCompareList };
|
|
132
|
+
//# sourceMappingURL=plain-compare-list.js.map
|
|
@@ -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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hashes `uri` using cyrb64 analogous to
|
|
3
|
+
* https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js .
|
|
4
|
+
* @returns a valid customElement tagName containing the URI hash.
|
|
5
|
+
*/
|
|
6
|
+
export function pluginTag(uri) {
|
|
7
|
+
let h1 = 0xdeadbeef, h2 = 0x41c6ce57;
|
|
8
|
+
for (let i = 0, ch; i < uri.length; i++) {
|
|
9
|
+
ch = uri.charCodeAt(i);
|
|
10
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
11
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
12
|
+
}
|
|
13
|
+
h1 =
|
|
14
|
+
Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^
|
|
15
|
+
Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
16
|
+
h2 =
|
|
17
|
+
Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^
|
|
18
|
+
Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
19
|
+
return 'oscd-plugin' +
|
|
20
|
+
((h2 >>> 0).toString(16).padStart(8, '0') +
|
|
21
|
+
(h1 >>> 0).toString(16).padStart(8, '0'));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=plugin-tag.js.map
|
|
@@ -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,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The combination of name and kind uniquely identifies the plugin to be configured.
|
|
3
|
+
* If config is null, the plugin is removed. Otherwise, the plugin is added or reconfigured.
|
|
4
|
+
*/
|
|
5
|
+
export function newConfigurePluginEvent(name, kind, config) {
|
|
6
|
+
return new CustomEvent('oscd-configure-plugin', {
|
|
7
|
+
bubbles: true,
|
|
8
|
+
composed: true,
|
|
9
|
+
detail: { name, kind, config },
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=plugin.events.js.map
|
|
@@ -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,256 @@
|
|
|
1
|
+
export function generatePluginPath(plugin) {
|
|
2
|
+
return location.origin + location.pathname + plugin;
|
|
3
|
+
}
|
|
4
|
+
export const officialPlugins = [
|
|
5
|
+
{
|
|
6
|
+
name: 'IED',
|
|
7
|
+
src: generatePluginPath('plugins/src/editors/IED.js'),
|
|
8
|
+
icon: 'developer_board',
|
|
9
|
+
activeByDefault: true,
|
|
10
|
+
kind: 'editor',
|
|
11
|
+
requireDoc: true,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Substation',
|
|
15
|
+
src: generatePluginPath('plugins/src/editors/Substation.js'),
|
|
16
|
+
icon: 'margin',
|
|
17
|
+
activeByDefault: true,
|
|
18
|
+
kind: 'editor',
|
|
19
|
+
requireDoc: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Single Line Diagram',
|
|
23
|
+
src: generatePluginPath('plugins/src/editors/SingleLineDiagram.js'),
|
|
24
|
+
icon: 'edit',
|
|
25
|
+
activeByDefault: false,
|
|
26
|
+
kind: 'editor',
|
|
27
|
+
requireDoc: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Subscriber Message Binding (GOOSE)',
|
|
31
|
+
src: generatePluginPath('plugins/src/editors/GooseSubscriberMessageBinding.js'),
|
|
32
|
+
icon: 'link',
|
|
33
|
+
activeByDefault: false,
|
|
34
|
+
kind: 'editor',
|
|
35
|
+
requireDoc: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Subscriber Data Binding (GOOSE)',
|
|
39
|
+
src: generatePluginPath('plugins/src/editors/GooseSubscriberDataBinding.js'),
|
|
40
|
+
icon: 'link',
|
|
41
|
+
activeByDefault: false,
|
|
42
|
+
kind: 'editor',
|
|
43
|
+
requireDoc: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Subscriber Message Binding (SMV)',
|
|
47
|
+
src: generatePluginPath('plugins/src/editors/SMVSubscriberMessageBinding.js'),
|
|
48
|
+
icon: 'link',
|
|
49
|
+
activeByDefault: false,
|
|
50
|
+
kind: 'editor',
|
|
51
|
+
requireDoc: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Subscriber Data Binding (SMV)',
|
|
55
|
+
src: generatePluginPath('plugins/src/editors/SMVSubscriberDataBinding.js'),
|
|
56
|
+
icon: 'link',
|
|
57
|
+
activeByDefault: false,
|
|
58
|
+
kind: 'editor',
|
|
59
|
+
requireDoc: true,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Subscriber Later Binding (SMV/GOOSE)',
|
|
63
|
+
src: generatePluginPath('external-plugins/oscd-subscriber-later-binding/oscd-subscriber-later-binding.js'),
|
|
64
|
+
icon: 'link',
|
|
65
|
+
activeByDefault: true,
|
|
66
|
+
kind: 'editor',
|
|
67
|
+
requireDoc: true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Communication',
|
|
71
|
+
src: generatePluginPath('plugins/src/editors/Communication.js'),
|
|
72
|
+
icon: 'settings_ethernet',
|
|
73
|
+
activeByDefault: true,
|
|
74
|
+
kind: 'editor',
|
|
75
|
+
requireDoc: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: '104',
|
|
79
|
+
src: generatePluginPath('plugins/src/editors/Protocol104.js'),
|
|
80
|
+
icon: 'settings_ethernet',
|
|
81
|
+
activeByDefault: false,
|
|
82
|
+
kind: 'editor',
|
|
83
|
+
requireDoc: true,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'Templates',
|
|
87
|
+
src: generatePluginPath('plugins/src/editors/Templates.js'),
|
|
88
|
+
icon: 'copy_all',
|
|
89
|
+
activeByDefault: true,
|
|
90
|
+
kind: 'editor',
|
|
91
|
+
requireDoc: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Publisher',
|
|
95
|
+
src: generatePluginPath('external-plugins/oscd-publisher/oscd-publisher.js'),
|
|
96
|
+
icon: 'publish',
|
|
97
|
+
activeByDefault: false,
|
|
98
|
+
kind: 'editor',
|
|
99
|
+
requireDoc: true,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'Cleanup',
|
|
103
|
+
src: generatePluginPath('plugins/src/editors/Cleanup.js'),
|
|
104
|
+
icon: 'cleaning_services',
|
|
105
|
+
activeByDefault: false,
|
|
106
|
+
kind: 'editor',
|
|
107
|
+
requireDoc: true,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'Open project',
|
|
111
|
+
src: generatePluginPath('plugins/src/menu/OpenProject.js'),
|
|
112
|
+
icon: 'folder_open',
|
|
113
|
+
activeByDefault: true,
|
|
114
|
+
kind: 'menu',
|
|
115
|
+
requireDoc: false,
|
|
116
|
+
position: 'top',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'New project',
|
|
120
|
+
src: generatePluginPath('plugins/src/menu/NewProject.js'),
|
|
121
|
+
icon: 'create_new_folder',
|
|
122
|
+
activeByDefault: true,
|
|
123
|
+
kind: 'menu',
|
|
124
|
+
requireDoc: false,
|
|
125
|
+
position: 'top',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'Plugin Store (Beta)',
|
|
129
|
+
src: 'https://sprinteins.github.io/oscd-plugin-store/index.js',
|
|
130
|
+
icon: 'shopping_bag',
|
|
131
|
+
activeByDefault: false,
|
|
132
|
+
kind: 'menu',
|
|
133
|
+
requireDoc: false,
|
|
134
|
+
position: 'bottom',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'Save project',
|
|
138
|
+
src: generatePluginPath('plugins/src/menu/SaveProject.js'),
|
|
139
|
+
icon: 'save',
|
|
140
|
+
activeByDefault: true,
|
|
141
|
+
kind: 'menu',
|
|
142
|
+
requireDoc: true,
|
|
143
|
+
position: 'top',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Validate Schema',
|
|
147
|
+
src: generatePluginPath('plugins/src/validators/ValidateSchema.js'),
|
|
148
|
+
icon: 'rule_folder',
|
|
149
|
+
activeByDefault: true,
|
|
150
|
+
kind: 'validator',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: 'Validate Templates',
|
|
154
|
+
src: generatePluginPath('plugins/src/validators/ValidateTemplates.js'),
|
|
155
|
+
icon: 'rule_folder',
|
|
156
|
+
activeByDefault: true,
|
|
157
|
+
kind: 'validator',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'Import IEDs',
|
|
161
|
+
src: generatePluginPath('plugins/src/menu/ImportIEDs.js'),
|
|
162
|
+
icon: 'snippet_folder',
|
|
163
|
+
activeByDefault: true,
|
|
164
|
+
kind: 'menu',
|
|
165
|
+
requireDoc: true,
|
|
166
|
+
position: 'middle',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'Create Virtual IED',
|
|
170
|
+
src: generatePluginPath('plugins/src/menu/VirtualTemplateIED.js'),
|
|
171
|
+
icon: 'developer_board',
|
|
172
|
+
activeByDefault: false,
|
|
173
|
+
kind: 'menu',
|
|
174
|
+
requireDoc: true,
|
|
175
|
+
position: 'middle',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'Subscriber Update',
|
|
179
|
+
src: generatePluginPath('plugins/src/menu/SubscriberInfo.js'),
|
|
180
|
+
activeByDefault: true,
|
|
181
|
+
kind: 'menu',
|
|
182
|
+
requireDoc: true,
|
|
183
|
+
position: 'middle',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'Update desc (ABB)',
|
|
187
|
+
src: generatePluginPath('plugins/src/menu/UpdateDescriptionABB.js'),
|
|
188
|
+
activeByDefault: false,
|
|
189
|
+
kind: 'menu',
|
|
190
|
+
requireDoc: true,
|
|
191
|
+
position: 'middle',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'Update desc (SEL)',
|
|
195
|
+
src: generatePluginPath('plugins/src/menu/UpdateDescriptionSEL.js'),
|
|
196
|
+
activeByDefault: false,
|
|
197
|
+
kind: 'menu',
|
|
198
|
+
requireDoc: true,
|
|
199
|
+
position: 'middle',
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: 'Merge Project',
|
|
203
|
+
src: generatePluginPath('plugins/src/menu/Merge.js'),
|
|
204
|
+
icon: 'merge_type',
|
|
205
|
+
activeByDefault: true,
|
|
206
|
+
kind: 'menu',
|
|
207
|
+
requireDoc: true,
|
|
208
|
+
position: 'middle',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: 'Update Substation',
|
|
212
|
+
src: generatePluginPath('plugins/src/menu/UpdateSubstation.js'),
|
|
213
|
+
icon: 'merge_type',
|
|
214
|
+
activeByDefault: true,
|
|
215
|
+
kind: 'menu',
|
|
216
|
+
requireDoc: true,
|
|
217
|
+
position: 'middle',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'Compare IED',
|
|
221
|
+
src: generatePluginPath('plugins/src/menu/CompareIED.js'),
|
|
222
|
+
icon: 'compare_arrows',
|
|
223
|
+
activeByDefault: true,
|
|
224
|
+
kind: 'menu',
|
|
225
|
+
requireDoc: true,
|
|
226
|
+
position: 'middle',
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: 'Show SCL History',
|
|
230
|
+
src: generatePluginPath('plugins/src/menu/SclHistory.js'),
|
|
231
|
+
icon: 'history_toggle_off',
|
|
232
|
+
activeByDefault: true,
|
|
233
|
+
kind: 'menu',
|
|
234
|
+
requireDoc: true,
|
|
235
|
+
position: 'bottom',
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
name: 'Help',
|
|
239
|
+
src: generatePluginPath('plugins/src/menu/Help.js'),
|
|
240
|
+
icon: 'help',
|
|
241
|
+
activeByDefault: true,
|
|
242
|
+
kind: 'menu',
|
|
243
|
+
requireDoc: false,
|
|
244
|
+
position: 'bottom',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: 'Export Communication Section',
|
|
248
|
+
src: generatePluginPath('plugins/src/menu/ExportCommunication.js'),
|
|
249
|
+
icon: 'sim_card_download',
|
|
250
|
+
activeByDefault: false,
|
|
251
|
+
kind: 'menu',
|
|
252
|
+
requireDoc: true,
|
|
253
|
+
position: 'middle',
|
|
254
|
+
},
|
|
255
|
+
];
|
|
256
|
+
//# sourceMappingURL=plugins.js.map
|