@compas-oscd/open-scd 0.34.25 → 0.34.26
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/addons/History.d.ts +1 -1
- package/dist/addons/History.d.ts.map +1 -1
- package/dist/addons/History.js.map +1 -1
- package/dist/addons/Layout.js +2 -2
- package/dist/addons/Layout.js.map +1 -1
- package/dist/addons/Settings.d.ts +1 -1
- package/dist/addons/Settings.d.ts.map +1 -1
- package/dist/addons/Settings.js +2 -2
- package/dist/addons/Settings.js.map +1 -1
- package/dist/addons/Waiter.js.map +1 -1
- package/dist/foundation/ied.d.ts +1 -1
- package/dist/foundation/ied.d.ts.map +1 -1
- package/dist/foundation/ied.js.map +1 -1
- package/dist/open-scd.js +2 -2
- package/dist/open-scd.js.map +1 -1
- package/dist/themes.d.ts +1 -1
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js.map +1 -1
- package/dist/translations/loader.js.map +1 -1
- package/dist/wizard-dialog.js +1 -1
- package/dist/wizard-dialog.js.map +1 -1
- package/package.json +1 -1
package/dist/addons/History.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import '@material/mwc-snackbar';
|
|
|
10
10
|
import { Dialog } from '@material/mwc-dialog';
|
|
11
11
|
import { Snackbar } from '@material/mwc-snackbar';
|
|
12
12
|
import '../filtered-list.js';
|
|
13
|
-
import { InfoEntry, IssueDetail, LogEntry } from '@openscd/core/foundation/deprecated/history
|
|
13
|
+
import { InfoEntry, IssueDetail, LogEntry } from '@openscd/core/foundation/deprecated/history';
|
|
14
14
|
export declare const historyStateEvent = "history-state";
|
|
15
15
|
export interface HistoryState {
|
|
16
16
|
editCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/addons/History.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EAEd,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,oBAAoB,CAAC;AAC5B,OAAO,kCAAkC,CAAC;AAC1C,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAIL,SAAS,EACT,WAAW,EAEX,QAAQ,EAGT,MAAM,
|
|
1
|
+
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/addons/History.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../src/addons/History.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n state,\n property,\n query,\n TemplateResult,\n customElement,\n LitElement,\n} from 'lit-element';\n\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-icon';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-icon-button-toggle';\nimport '@material/mwc-list';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-snackbar';\nimport { Dialog } from '@material/mwc-dialog';\nimport { Snackbar } from '@material/mwc-snackbar';\n\nimport '../filtered-list.js';\n\nimport {\n CommitDetail,\n CommitEntry,\n InfoDetail,\n InfoEntry,\n IssueDetail,\n IssueEvent,\n LogEntry,\n LogEntryType,\n LogEvent,\n} from '@openscd/core/foundation/deprecated/history.js';\n\nimport { getFilterIcon, iconColors } from '../icons/icons.js';\n\nexport const historyStateEvent = 'history-state';\nexport interface HistoryState {\n editCount: number;\n canUndo: boolean;\n canRedo: boolean;\n}\nexport type HistoryStateEvent = CustomEvent<HistoryState>;\n\nfunction newHistoryStateEvent(state: HistoryState): HistoryStateEvent {\n return new CustomEvent(historyStateEvent, { detail: state });\n}\n\nimport { Plugin } from '../plugin.js';\nimport { XMLEditor } from '@openscd/core';\n\nimport { getLogText } from './history/get-log-text.js';\n\ninterface HistoryItem {\n title: string;\n message?: string;\n time: number;\n isActive: boolean;\n}\n\nconst icons = {\n info: 'info',\n warning: 'warning',\n error: 'report',\n};\n\nfunction getPluginName(src: string): string {\n\n let storedPluginsString = localStorage.getItem('plugins');\n if(!storedPluginsString) {\n storedPluginsString = '[]';\n }\n\n const storedPlugins = JSON.parse(storedPluginsString) as Plugin[];\n const wantedPlugin = storedPlugins.find((p: Plugin) => p.src === src);\n\n if(!wantedPlugin) {\n return `pluginnotfound: ${src} in ${storedPluginsString}`;\n }\n\n const name = wantedPlugin.name;\n\n if(!name){\n return `pluginhasnoname:${src}`;\n }\n\n return name;\n\n}\n\nexport enum HistoryUIKind {\n log = 'log',\n history = 'history',\n diagnostic = 'diagnostic',\n}\nexport interface HistoryUIDetail {\n show: boolean;\n kind: HistoryUIKind;\n}\n\nexport type HistoryUIEvent = CustomEvent<HistoryUIDetail>;\n\nexport function newHistoryUIEvent(\n show: boolean,\n kind: HistoryUIKind,\n eventInitDict?: CustomEventInit<Partial<HistoryUIDetail>>\n): HistoryUIEvent {\n return new CustomEvent<HistoryUIDetail>('history-dialog-ui', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: {\n show,\n kind,\n ...eventInitDict?.detail,\n },\n });\n}\n\nexport interface EmptyIssuesDetail {\n pluginSrc: string;\n}\n\nexport type EmptyIssuesEvent = CustomEvent<EmptyIssuesDetail>;\n\nexport function newEmptyIssuesEvent(\n pluginSrc: string,\n eventInitDict?: CustomEventInit<Partial<EmptyIssuesDetail>>\n): EmptyIssuesEvent {\n return new CustomEvent<EmptyIssuesDetail>('empty-issues', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { pluginSrc, ...eventInitDict?.detail },\n });\n}\n\nexport function newUndoEvent(): CustomEvent {\n return new CustomEvent('undo', { bubbles: true, composed: true });\n}\n\nexport function newRedoEvent(): CustomEvent {\n return new CustomEvent('redo', { bubbles: true, composed: true });\n}\n\n@customElement('oscd-history')\nexport class OscdHistory extends LitElement {\n /** All [[`LogEntry`]]s received so far through [[`LogEvent`]]s. */\n @property({ type: Array })\n log: InfoEntry[] = [];\n\n /** XML Editor to apply changes to the scd */\n @property({ type: Object }) editor!: XMLEditor;\n\n @property()\n diagnoses = new Map<string, IssueDetail[]>();\n\n @property({ type: Object })\n host!: HTMLElement;\n\n @state()\n latestIssue!: IssueDetail;\n\n @state()\n history: HistoryItem[] = [];\n\n @query('#log') logUI!: Dialog;\n @query('#history') historyUI!: Dialog;\n @query('#diagnostic') diagnosticUI!: Dialog;\n @query('#error') errorUI!: Snackbar;\n @query('#warning') warningUI!: Snackbar;\n @query('#info') infoUI!: Snackbar;\n @query('#issue') issueUI!: Snackbar;\n\n private unsubscribers: (() => any)[] = [];\n\n private onIssue(de: IssueEvent): void {\n const issues = this.diagnoses.get(de.detail.validatorId);\n\n if (!issues) this.diagnoses.set(de.detail.validatorId, [de.detail]);\n else issues?.push(de.detail);\n\n this.latestIssue = de.detail;\n this.issueUI.close();\n this.issueUI.show();\n }\n\n undo(): void {\n this.editor.undo();\n }\n redo(): void {\n this.editor.redo();\n }\n\n private onReset() {\n this.log = [];\n this.editor.reset();\n this.updateHistory();\n }\n\n private onInfo(detail: InfoDetail) {\n const entry: InfoEntry = {\n time: new Date(),\n ...detail,\n };\n\n this.log.push(entry);\n if (!this.logUI.open) {\n const ui = {\n error: this.errorUI,\n warning: this.warningUI,\n info: this.infoUI,\n }[detail.kind];\n\n ui.close();\n ui.show();\n }\n if (detail.kind == 'error') {\n this.errorUI.close(); // hack to reset timeout\n this.errorUI.show();\n }\n this.requestUpdate('log', []);\n }\n\n private onLog(le: LogEvent): void {\n switch (le.detail.kind) {\n case 'reset':\n this.onReset();\n break;\n case 'action':\n // No longer needed\n break;\n default:\n this.onInfo(le.detail);\n break;\n }\n }\n\n private historyUIHandler(e: HistoryUIEvent): void {\n const ui = {\n log: this.logUI,\n history: this.historyUI,\n diagnostic: this.diagnosticUI,\n }[e.detail.kind];\n\n if (e.detail.show) ui.show();\n else ui.close();\n }\n\n private emptyIssuesHandler(e: EmptyIssuesEvent): void {\n if (this.diagnoses.get(e.detail.pluginSrc))\n this.diagnoses.get(e.detail.pluginSrc)!.length = 0;\n }\n\n private handleKeyPress(e: KeyboardEvent): void {\n const ctrlAnd = (key: string) => e.key === key && e.ctrlKey;\n\n if (ctrlAnd('y')) this.redo();\n if (ctrlAnd('z')) this.undo();\n if (ctrlAnd('l')) this.logUI.open ? this.logUI.close() : this.logUI.show();\n if (ctrlAnd('d'))\n this.diagnosticUI.open\n ? this.diagnosticUI.close()\n : this.diagnosticUI.show();\n }\n\n private updateHistory(): void {\n const { past, future } = this.editor;\n\n const activeIndex = past.length - 1;\n const allEntries = [ ...past, ...future ];\n\n this.history = allEntries.map((e, index) => {\n const { title, message } = getLogText(e.redo as any);\n\n return {\n isActive: index === activeIndex,\n time: e.time,\n title: e.title ?? title,\n message\n };\n });\n }\n\n constructor() {\n super();\n this.undo = this.undo.bind(this);\n this.redo = this.redo.bind(this);\n this.onLog = this.onLog.bind(this);\n this.onIssue = this.onIssue.bind(this);\n this.historyUIHandler = this.historyUIHandler.bind(this);\n this.emptyIssuesHandler = this.emptyIssuesHandler.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n document.onkeydown = this.handleKeyPress;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.unsubscribers.push(\n this.editor.subscribe(e => this.updateHistory()),\n this.editor.subscribeUndoRedo(e => this.updateHistory())\n );\n\n this.host.addEventListener('log', this.onLog);\n this.host.addEventListener('issue', this.onIssue);\n this.host.addEventListener('history-dialog-ui', this.historyUIHandler);\n this.host.addEventListener('empty-issues', this.emptyIssuesHandler);\n this.diagnoses.clear();\n }\n\n disconnectedCallback(): void {\n this.unsubscribers.forEach(u => u());\n }\n\n renderLogEntry(\n entry: InfoEntry,\n index: number,\n log: LogEntry[]\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n class=\"${entry.kind}\"\n graphic=\"icon\"\n ?twoline=${!!entry.message}\n >\n <span>\n <!-- FIXME: replace tt with mwc-chip asap -->\n <tt>${entry.time?.toLocaleString()}</tt>\n ${entry.title}</span\n >\n <span slot=\"secondary\">${entry.message}</span>\n <mwc-icon\n slot=\"graphic\"\n style=\"--mdc-theme-text-icon-on-background:var(${iconColors[\n entry.kind\n ]})\"\n >${icons[entry.kind]}</mwc-icon\n >\n </mwc-list-item></abbr\n >`;\n }\n\n renderHistoryEntry(\n entry: HistoryItem\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n ?twoline=${!!entry.message}\n ?activated=${entry.isActive}\n >\n <span>\n <tt>${this.formatTime(entry.time)}</tt>\n ${entry.title}\n </span>\n <span slot=\"secondary\">${entry.message}</span>\n </mwc-list-item>\n </abbr>`;\n }\n\n private formatTime(time: number): string {\n const date = new Date(time);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n }\n\n private renderLog(): TemplateResult[] | TemplateResult {\n if (this.log.length > 0)\n return this.log.slice().reverse().map(this.renderLogEntry, this);\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('log.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderHistory(): TemplateResult[] | TemplateResult {\n if (this.history.length > 0)\n return this.history.slice().reverse().map(e => this.renderHistoryEntry(e));\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('history.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n protected renderIssueEntry(issue: IssueDetail): TemplateResult {\n return html` <abbr title=\"${issue.title + '\\n' + issue.message}\"\n ><mwc-list-item ?twoline=${!!issue.message}>\n <span> ${issue.title}</span>\n <span slot=\"secondary\">${issue.message}</span>\n </mwc-list-item></abbr\n >`;\n }\n\n renderValidatorsIssues(issues: IssueDetail[]): TemplateResult[] {\n if (issues.length === 0) return [html``];\n return [\n html`\n <mwc-list-item noninteractive>\n ${getPluginName(issues[0].validatorId)}\n </mwc-list-item>\n `,\n html`<li divider padded role=\"separator\"></li>`,\n ...issues.map(issue => this.renderIssueEntry(issue)),\n ];\n }\n\n private renderIssues(): TemplateResult[] | TemplateResult {\n const issueItems: TemplateResult[] = [];\n\n this.diagnoses.forEach(issues => {\n this.renderValidatorsIssues(issues).forEach(issueItem =>\n issueItems.push(issueItem)\n );\n });\n\n return issueItems.length\n ? issueItems\n : html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('diag.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderFilterButtons() {\n return (<LogEntryType[]>Object.keys(icons)).map(\n kind => html`<mwc-icon-button-toggle id=\"${kind}filter\" on\n >${getFilterIcon(kind, false)}\n ${getFilterIcon(kind, true)}</mwc-icon-button-toggle\n >`\n );\n }\n\n private renderLogDialog(): TemplateResult {\n return html` <mwc-dialog id=\"log\" heading=\"${get('log.name')}\">\n ${this.renderFilterButtons()}\n <mwc-list id=\"content\" wrapFocus>${this.renderLog()}</mwc-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n private renderHistoryUI(): TemplateResult {\n return html` <mwc-dialog id=\"history\" heading=\"${get('history.name')}\">\n <mwc-list id=\"content\" wrapFocus>${this.renderHistory()}</mwc-list>\n <mwc-button\n icon=\"undo\"\n label=\"${get('undo')}\"\n ?disabled=${!this.editor.canUndo}\n @click=${this.undo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button\n icon=\"redo\"\n label=\"${get('redo')}\"\n ?disabled=${!this.editor.canRedo}\n @click=${this.redo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n render(): TemplateResult {\n return html`<slot></slot>\n <style>\n #log > mwc-icon-button-toggle {\n position: absolute;\n top: 8px;\n right: 14px;\n }\n #log > mwc-icon-button-toggle:nth-child(2) {\n right: 62px;\n }\n #log > mwc-icon-button-toggle:nth-child(3) {\n right: 110px;\n }\n #log > mwc-icon-button-toggle:nth-child(4) {\n right: 158px;\n }\n #content mwc-list-item.info,\n #content mwc-list-item.warning,\n #content mwc-list-item.error {\n display: none;\n }\n #infofilter[on] ~ #content mwc-list-item.info {\n display: flex;\n }\n #warningfilter[on] ~ #content mwc-list-item.warning {\n display: flex;\n }\n #errorfilter[on] ~ #content mwc-list-item.error {\n display: flex;\n }\n\n #infofilter[on] {\n color: var(--cyan);\n }\n\n #warningfilter[on] {\n color: var(--yellow);\n }\n\n #errorfilter[on] {\n color: var(--red);\n }\n\n #actionfilter[on] {\n color: var(--blue);\n }\n\n #log,\n #history {\n --mdc-dialog-min-width: 92vw;\n }\n\n #log > #filterContainer {\n position: absolute;\n top: 14px;\n right: 14px;\n }\n </style>\n ${this.renderLogDialog()} ${this.renderHistoryUI()}\n <mwc-dialog id=\"diagnostic\" heading=\"${get('diag.name')}\">\n <filtered-list id=\"content\" wrapFocus>\n ${this.renderIssues()}\n </filtered-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\">\n ${get('close')}\n </mwc-button>\n </mwc-dialog>\n\n <mwc-snackbar\n id=\"info\"\n timeoutMs=\"4000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'info')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"warning\"\n timeoutMs=\"6000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'warning')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"error\"\n timeoutMs=\"10000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'error')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"issue\"\n timeoutMs=\"10000\"\n labelText=\"${this.latestIssue?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"rule\"\n @click=${() => this.diagnosticUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>`;\n }\n}\n\ndeclare global {\n interface ElementEventMap {\n [historyStateEvent]: HistoryStateEvent;\n 'history-dialog-ui': CustomEvent<HistoryUIDetail>;\n 'empty-issues': CustomEvent<EmptyIssuesDetail>;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../src/addons/History.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n state,\n property,\n query,\n TemplateResult,\n customElement,\n LitElement,\n} from 'lit-element';\n\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-icon';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-icon-button-toggle';\nimport '@material/mwc-list';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-snackbar';\nimport { Dialog } from '@material/mwc-dialog';\nimport { Snackbar } from '@material/mwc-snackbar';\n\nimport '../filtered-list.js';\n\nimport {\n CommitDetail,\n CommitEntry,\n InfoDetail,\n InfoEntry,\n IssueDetail,\n IssueEvent,\n LogEntry,\n LogEntryType,\n LogEvent,\n} from '@openscd/core/foundation/deprecated/history';\n\nimport { getFilterIcon, iconColors } from '../icons/icons.js';\n\nexport const historyStateEvent = 'history-state';\nexport interface HistoryState {\n editCount: number;\n canUndo: boolean;\n canRedo: boolean;\n}\nexport type HistoryStateEvent = CustomEvent<HistoryState>;\n\nfunction newHistoryStateEvent(state: HistoryState): HistoryStateEvent {\n return new CustomEvent(historyStateEvent, { detail: state });\n}\n\nimport { Plugin } from '../plugin.js';\nimport { XMLEditor } from '@openscd/core';\n\nimport { getLogText } from './history/get-log-text.js';\n\ninterface HistoryItem {\n title: string;\n message?: string;\n time: number;\n isActive: boolean;\n}\n\nconst icons = {\n info: 'info',\n warning: 'warning',\n error: 'report',\n};\n\nfunction getPluginName(src: string): string {\n\n let storedPluginsString = localStorage.getItem('plugins');\n if(!storedPluginsString) {\n storedPluginsString = '[]';\n }\n\n const storedPlugins = JSON.parse(storedPluginsString) as Plugin[];\n const wantedPlugin = storedPlugins.find((p: Plugin) => p.src === src);\n\n if(!wantedPlugin) {\n return `pluginnotfound: ${src} in ${storedPluginsString}`;\n }\n\n const name = wantedPlugin.name;\n\n if(!name){\n return `pluginhasnoname:${src}`;\n }\n\n return name;\n\n}\n\nexport enum HistoryUIKind {\n log = 'log',\n history = 'history',\n diagnostic = 'diagnostic',\n}\nexport interface HistoryUIDetail {\n show: boolean;\n kind: HistoryUIKind;\n}\n\nexport type HistoryUIEvent = CustomEvent<HistoryUIDetail>;\n\nexport function newHistoryUIEvent(\n show: boolean,\n kind: HistoryUIKind,\n eventInitDict?: CustomEventInit<Partial<HistoryUIDetail>>\n): HistoryUIEvent {\n return new CustomEvent<HistoryUIDetail>('history-dialog-ui', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: {\n show,\n kind,\n ...eventInitDict?.detail,\n },\n });\n}\n\nexport interface EmptyIssuesDetail {\n pluginSrc: string;\n}\n\nexport type EmptyIssuesEvent = CustomEvent<EmptyIssuesDetail>;\n\nexport function newEmptyIssuesEvent(\n pluginSrc: string,\n eventInitDict?: CustomEventInit<Partial<EmptyIssuesDetail>>\n): EmptyIssuesEvent {\n return new CustomEvent<EmptyIssuesDetail>('empty-issues', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { pluginSrc, ...eventInitDict?.detail },\n });\n}\n\nexport function newUndoEvent(): CustomEvent {\n return new CustomEvent('undo', { bubbles: true, composed: true });\n}\n\nexport function newRedoEvent(): CustomEvent {\n return new CustomEvent('redo', { bubbles: true, composed: true });\n}\n\n@customElement('oscd-history')\nexport class OscdHistory extends LitElement {\n /** All [[`LogEntry`]]s received so far through [[`LogEvent`]]s. */\n @property({ type: Array })\n log: InfoEntry[] = [];\n\n /** XML Editor to apply changes to the scd */\n @property({ type: Object }) editor!: XMLEditor;\n\n @property()\n diagnoses = new Map<string, IssueDetail[]>();\n\n @property({ type: Object })\n host!: HTMLElement;\n\n @state()\n latestIssue!: IssueDetail;\n\n @state()\n history: HistoryItem[] = [];\n\n @query('#log') logUI!: Dialog;\n @query('#history') historyUI!: Dialog;\n @query('#diagnostic') diagnosticUI!: Dialog;\n @query('#error') errorUI!: Snackbar;\n @query('#warning') warningUI!: Snackbar;\n @query('#info') infoUI!: Snackbar;\n @query('#issue') issueUI!: Snackbar;\n\n private unsubscribers: (() => any)[] = [];\n\n private onIssue(de: IssueEvent): void {\n const issues = this.diagnoses.get(de.detail.validatorId);\n\n if (!issues) this.diagnoses.set(de.detail.validatorId, [de.detail]);\n else issues?.push(de.detail);\n\n this.latestIssue = de.detail;\n this.issueUI.close();\n this.issueUI.show();\n }\n\n undo(): void {\n this.editor.undo();\n }\n redo(): void {\n this.editor.redo();\n }\n\n private onReset() {\n this.log = [];\n this.editor.reset();\n this.updateHistory();\n }\n\n private onInfo(detail: InfoDetail) {\n const entry: InfoEntry = {\n time: new Date(),\n ...detail,\n };\n\n this.log.push(entry);\n if (!this.logUI.open) {\n const ui = {\n error: this.errorUI,\n warning: this.warningUI,\n info: this.infoUI,\n }[detail.kind];\n\n ui.close();\n ui.show();\n }\n if (detail.kind == 'error') {\n this.errorUI.close(); // hack to reset timeout\n this.errorUI.show();\n }\n this.requestUpdate('log', []);\n }\n\n private onLog(le: LogEvent): void {\n switch (le.detail.kind) {\n case 'reset':\n this.onReset();\n break;\n case 'action':\n // No longer needed\n break;\n default:\n this.onInfo(le.detail);\n break;\n }\n }\n\n private historyUIHandler(e: HistoryUIEvent): void {\n const ui = {\n log: this.logUI,\n history: this.historyUI,\n diagnostic: this.diagnosticUI,\n }[e.detail.kind];\n\n if (e.detail.show) ui.show();\n else ui.close();\n }\n\n private emptyIssuesHandler(e: EmptyIssuesEvent): void {\n if (this.diagnoses.get(e.detail.pluginSrc))\n this.diagnoses.get(e.detail.pluginSrc)!.length = 0;\n }\n\n private handleKeyPress(e: KeyboardEvent): void {\n const ctrlAnd = (key: string) => e.key === key && e.ctrlKey;\n\n if (ctrlAnd('y')) this.redo();\n if (ctrlAnd('z')) this.undo();\n if (ctrlAnd('l')) this.logUI.open ? this.logUI.close() : this.logUI.show();\n if (ctrlAnd('d'))\n this.diagnosticUI.open\n ? this.diagnosticUI.close()\n : this.diagnosticUI.show();\n }\n\n private updateHistory(): void {\n const { past, future } = this.editor;\n\n const activeIndex = past.length - 1;\n const allEntries = [ ...past, ...future ];\n\n this.history = allEntries.map((e, index) => {\n const { title, message } = getLogText(e.redo as any);\n\n return {\n isActive: index === activeIndex,\n time: e.time,\n title: e.title ?? title,\n message\n };\n });\n }\n\n constructor() {\n super();\n this.undo = this.undo.bind(this);\n this.redo = this.redo.bind(this);\n this.onLog = this.onLog.bind(this);\n this.onIssue = this.onIssue.bind(this);\n this.historyUIHandler = this.historyUIHandler.bind(this);\n this.emptyIssuesHandler = this.emptyIssuesHandler.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n document.onkeydown = this.handleKeyPress;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.unsubscribers.push(\n this.editor.subscribe(e => this.updateHistory()),\n this.editor.subscribeUndoRedo(e => this.updateHistory())\n );\n\n this.host.addEventListener('log', this.onLog);\n this.host.addEventListener('issue', this.onIssue);\n this.host.addEventListener('history-dialog-ui', this.historyUIHandler);\n this.host.addEventListener('empty-issues', this.emptyIssuesHandler);\n this.diagnoses.clear();\n }\n\n disconnectedCallback(): void {\n this.unsubscribers.forEach(u => u());\n }\n\n renderLogEntry(\n entry: InfoEntry,\n index: number,\n log: LogEntry[]\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n class=\"${entry.kind}\"\n graphic=\"icon\"\n ?twoline=${!!entry.message}\n >\n <span>\n <!-- FIXME: replace tt with mwc-chip asap -->\n <tt>${entry.time?.toLocaleString()}</tt>\n ${entry.title}</span\n >\n <span slot=\"secondary\">${entry.message}</span>\n <mwc-icon\n slot=\"graphic\"\n style=\"--mdc-theme-text-icon-on-background:var(${iconColors[\n entry.kind\n ]})\"\n >${icons[entry.kind]}</mwc-icon\n >\n </mwc-list-item></abbr\n >`;\n }\n\n renderHistoryEntry(\n entry: HistoryItem\n ): TemplateResult {\n return html` <abbr title=\"${entry.title}\">\n <mwc-list-item\n ?twoline=${!!entry.message}\n ?activated=${entry.isActive}\n >\n <span>\n <tt>${this.formatTime(entry.time)}</tt>\n ${entry.title}\n </span>\n <span slot=\"secondary\">${entry.message}</span>\n </mwc-list-item>\n </abbr>`;\n }\n\n private formatTime(time: number): string {\n const date = new Date(time);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n }\n\n private renderLog(): TemplateResult[] | TemplateResult {\n if (this.log.length > 0)\n return this.log.slice().reverse().map(this.renderLogEntry, this);\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('log.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderHistory(): TemplateResult[] | TemplateResult {\n if (this.history.length > 0)\n return this.history.slice().reverse().map(e => this.renderHistoryEntry(e));\n else\n return html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('history.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n protected renderIssueEntry(issue: IssueDetail): TemplateResult {\n return html` <abbr title=\"${issue.title + '\\n' + issue.message}\"\n ><mwc-list-item ?twoline=${!!issue.message}>\n <span> ${issue.title}</span>\n <span slot=\"secondary\">${issue.message}</span>\n </mwc-list-item></abbr\n >`;\n }\n\n renderValidatorsIssues(issues: IssueDetail[]): TemplateResult[] {\n if (issues.length === 0) return [html``];\n return [\n html`\n <mwc-list-item noninteractive>\n ${getPluginName(issues[0].validatorId)}\n </mwc-list-item>\n `,\n html`<li divider padded role=\"separator\"></li>`,\n ...issues.map(issue => this.renderIssueEntry(issue)),\n ];\n }\n\n private renderIssues(): TemplateResult[] | TemplateResult {\n const issueItems: TemplateResult[] = [];\n\n this.diagnoses.forEach(issues => {\n this.renderValidatorsIssues(issues).forEach(issueItem =>\n issueItems.push(issueItem)\n );\n });\n\n return issueItems.length\n ? issueItems\n : html`<mwc-list-item disabled graphic=\"icon\">\n <span>${get('diag.placeholder')}</span>\n <mwc-icon slot=\"graphic\">info</mwc-icon>\n </mwc-list-item>`;\n }\n\n private renderFilterButtons() {\n return (<LogEntryType[]>Object.keys(icons)).map(\n kind => html`<mwc-icon-button-toggle id=\"${kind}filter\" on\n >${getFilterIcon(kind, false)}\n ${getFilterIcon(kind, true)}</mwc-icon-button-toggle\n >`\n );\n }\n\n private renderLogDialog(): TemplateResult {\n return html` <mwc-dialog id=\"log\" heading=\"${get('log.name')}\">\n ${this.renderFilterButtons()}\n <mwc-list id=\"content\" wrapFocus>${this.renderLog()}</mwc-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n private renderHistoryUI(): TemplateResult {\n return html` <mwc-dialog id=\"history\" heading=\"${get('history.name')}\">\n <mwc-list id=\"content\" wrapFocus>${this.renderHistory()}</mwc-list>\n <mwc-button\n icon=\"undo\"\n label=\"${get('undo')}\"\n ?disabled=${!this.editor.canUndo}\n @click=${this.undo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button\n icon=\"redo\"\n label=\"${get('redo')}\"\n ?disabled=${!this.editor.canRedo}\n @click=${this.redo}\n slot=\"secondaryAction\"\n ></mwc-button>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\"\n >${get('close')}</mwc-button\n >\n </mwc-dialog>`;\n }\n\n render(): TemplateResult {\n return html`<slot></slot>\n <style>\n #log > mwc-icon-button-toggle {\n position: absolute;\n top: 8px;\n right: 14px;\n }\n #log > mwc-icon-button-toggle:nth-child(2) {\n right: 62px;\n }\n #log > mwc-icon-button-toggle:nth-child(3) {\n right: 110px;\n }\n #log > mwc-icon-button-toggle:nth-child(4) {\n right: 158px;\n }\n #content mwc-list-item.info,\n #content mwc-list-item.warning,\n #content mwc-list-item.error {\n display: none;\n }\n #infofilter[on] ~ #content mwc-list-item.info {\n display: flex;\n }\n #warningfilter[on] ~ #content mwc-list-item.warning {\n display: flex;\n }\n #errorfilter[on] ~ #content mwc-list-item.error {\n display: flex;\n }\n\n #infofilter[on] {\n color: var(--cyan);\n }\n\n #warningfilter[on] {\n color: var(--yellow);\n }\n\n #errorfilter[on] {\n color: var(--red);\n }\n\n #actionfilter[on] {\n color: var(--blue);\n }\n\n #log,\n #history {\n --mdc-dialog-min-width: 92vw;\n }\n\n #log > #filterContainer {\n position: absolute;\n top: 14px;\n right: 14px;\n }\n </style>\n ${this.renderLogDialog()} ${this.renderHistoryUI()}\n <mwc-dialog id=\"diagnostic\" heading=\"${get('diag.name')}\">\n <filtered-list id=\"content\" wrapFocus>\n ${this.renderIssues()}\n </filtered-list>\n <mwc-button slot=\"primaryAction\" dialogaction=\"close\">\n ${get('close')}\n </mwc-button>\n </mwc-dialog>\n\n <mwc-snackbar\n id=\"info\"\n timeoutMs=\"4000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'info')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"warning\"\n timeoutMs=\"6000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'warning')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"error\"\n timeoutMs=\"10000\"\n labelText=\"${this.log\n .slice()\n .reverse()\n .find(le => le.kind === 'error')?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"history\"\n @click=${() => this.logUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>\n <mwc-snackbar\n id=\"issue\"\n timeoutMs=\"10000\"\n labelText=\"${this.latestIssue?.title ??\n get('log.snackbar.placeholder')}\"\n >\n <mwc-button\n slot=\"action\"\n icon=\"rule\"\n @click=${() => this.diagnosticUI.show()}\n >${get('log.snackbar.show')}</mwc-button\n >\n <mwc-icon-button icon=\"close\" slot=\"dismiss\"></mwc-icon-button>\n </mwc-snackbar>`;\n }\n}\n\ndeclare global {\n interface ElementEventMap {\n [historyStateEvent]: HistoryStateEvent;\n 'history-dialog-ui': CustomEvent<HistoryUIDetail>;\n 'empty-issues': CustomEvent<EmptyIssuesDetail>;\n }\n}\n"]}
|
package/dist/addons/Layout.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { customElement, html, LitElement, property, state, query, css, } from 'lit-element';
|
|
3
3
|
import { get } from 'lit-translate';
|
|
4
|
-
import { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter
|
|
5
|
-
import { newSettingsUIEvent } from '@openscd/core/foundation/deprecated/settings
|
|
4
|
+
import { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter';
|
|
5
|
+
import { newSettingsUIEvent } from '@openscd/core/foundation/deprecated/settings';
|
|
6
6
|
import { pluginIcons, } from '../open-scd.js';
|
|
7
7
|
import { HistoryUIKind, newEmptyIssuesEvent, newHistoryUIEvent } from './History.js';
|
|
8
8
|
import { List } from '@material/mwc-list';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/addons/Layout.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,KAAK,EAEL,KAAK,EACL,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAIL,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG1C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,oCAAoC,CAAC;AAE5C,OAAO,0CAA0C,CAAC;AAClD,OAAO,0BAA0B,CAAC;AAK3B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAEL,qCAAqC;QACL,QAAG,GAAuB,IAAI,CAAC;QAC/D,wCAAwC;QACZ,YAAO,GAAG,EAAE,CAAC;QACzC,oDAAoD;QACxB,cAAS,GAAG,CAAC,CAAC,CAAC;QAK3C,wCAAwC;QACb,YAAO,GAAa,EAAE,CAAC;QAKzC,cAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,mBAAc,GAAG,KAAK,CAAC;QACvB,iBAAY,GAAuB,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IA8lB1E,CAAC;IArlBC,MAAM;QACJ,OAAO,IAAI,CAAA;;gCAEiB,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;gCAClC,IAAI,CAAC,2BAA2B;yBACvC,IAAI,CAAC,oBAAoB;;;UAGxC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;UACrE,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;;KAE1E,CAAC;IACJ,CAAC;IAGO,cAAc;QACpB,OAAO,IAAI,CAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACrE,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,yCAAyC;IAC/B,gBAAgB;QACxB,OAAO,IAAI,CAAA;;KAEV,CAAA;IACH,CAAC;IAED;;OAEG;IACO,cAAc;QACtB,OAAO,IAAI,CAAA;yDAC0C,IAAI,CAAC,OAAO;KAChE,CAAA;IACH,CAAC;IAED,sBAAsB;IAEtB,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAClD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACzE,CAAC;IAGD,IAAI,IAAI;QAEN,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO;YACL,SAAS;YACT,GAAG,OAAO;YACV,SAAS;YACT;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrB,CAAC;gBACD,QAAQ,EAAE,GAAY,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC7C,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrB,CAAC;gBACD,QAAQ,EAAE,GAAY,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC7C,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD,GAAG,UAAU;YACb;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,eAAe;gBACrB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD,SAAS;YACT,GAAG,UAAU;YACb;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,GAAS,EAAE;oBACjB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;YACD,GAAG,UAAU;YACb;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,GAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACxC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE;aACtB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CACpD,CAAC;IACJ,CAAC;IAED,qBAAqB;IACb,cAAc,CAAC,CAAgB;QACrC,gEAAgE;QAChE,IAAG,CAAC,CAAC,CAAC,OAAO,EAAC;YAAE,OAAM;SAAE;QAExB,MAAM,cAAc,GAA+B;YACjD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;YAC/C,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAW,qCAAqC,CAAC,EAAE,KAAK,EAAE;YAC9F,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAW,2CAA2C,CAAC,EAAE,KAAK,EAAE;YACpG,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAW,8BAA8B,CAAC,EAAE,KAAK,EAAE;YACvF,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;SAChC,CAAA;QAED,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,IAAG,CAAC,EAAE,EAAC;YAAE,OAAO;SAAE;QAElB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,EAAE,EAAE,CAAC;IACP,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YACpD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,MAAM,IAAI,CAAC,SAAS,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAC;gBAAE,OAAO;aAAE;YAEpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CACjC,IAAI,CAAC,MAAM;iBACR,aAAa,CAAC,UAAU,CAAE;iBAC1B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;iBACpD,GAAG,CAAC,IAAI,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;gBACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAEpD,IAAI,CAAC,kBAAkB,EAAE;oBACvB,OAAO;iBACR;gBAED,OAAQ,kBAA2C,CAAC,QAAQ,EAAE,CAAA;YAChE,CAAC,CAAC,CACL,CAAC,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAGO,YAAY,CAAC,OAAgB,EAAE,IAAiC;QACtE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,EAAE,CAAC,EAAE;oBACX,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3D,IAAI,CAAC,kBAAkB,EAAE;wBACvB,OAAO;qBACR;oBAED,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAE,kBAA4C,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC/F,CAAC;gBACD,QAAQ,EAAE,GAAY,EAAE,CAAC,MAAM,CAAC,UAAW,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;gBAChE,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAG,MAAM,CAAC,OAAO,EAAC;wBAAE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;qBAAE;oBAC9C,OAAO,IAAI,CAAA,EAAE,CAAC;gBAChB,CAAC;gBACD,IAAI,EAAE,IAAI;aACX,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAAiB;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,WAAW,CAAC;gBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,EAAE,CAAC,EAAE;oBACX,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAEpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3D,IAAI,CAAC,kBAAkB,EAAE;wBACvB,OAAO;qBACR;oBAED,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAE,kBAA2C,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACnG,CAAC;gBACD,QAAQ,EAAE,GAAY,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI;gBAC1C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA,EAAE,CAAC;gBACzC,IAAI,EAAE,WAAW;aAClB,CAAA;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,EAAwB;QAC7C,MAAM,SAAS,GAAG,EAAE,KAAK,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,EAAE,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC;QAExD,IAAI,SAAS,EAAE;YAAE,OAAO,IAAI,CAAA,2CAA2C,CAAC;SAAE;QAC1E,IAAI,aAAa,EAAC;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;SAAE;QACpC,OAAO,IAAI,CAAA;;iBAEE,EAAE,CAAC,IAAI;kBACN,EAAE,CAAC,IAAI;;qBAEJ,EAAE,CAAC,IAAI;oBACR,EAAE,CAAC,GAAG,IAAI,EAAE;oBACZ,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;oCACb,EAAE,CAAC,IAAI;gBAC3B,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;UAClB,EAAE,CAAC,IAAI;YACP,CAAC,CAAC,IAAI,CAAA,8BAA8B,EAAE,CAAC,IAAI,cAAc;YACzD,CAAC,CAAC,EAAE;;KAET,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,EAAwB;QACjD,IAAG,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,EAAC;YAAE,OAAO,IAAI,CAAA,EAAE,CAAA;SAAE;QAEvD,OAAO,IAAI,CAAA;;;cAGD,EAAE,CAAC,IAAI;eACN,EAAE,CAAC,IAAI;kBACJ,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;eAChC,EAAE,CAAC,MAAM;wBACA,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAU;QAC5C,OAAO,IAAI,CAAA,kBAAkB,IAAI,SAAS,IAAI,IAAI,MAAM,cAAc,CAAC;IACzE,CAAC;IAED,kGAAkG;IACxF,YAAY;QACpB,OAAO,IAAI,CAAA;;;;;iBAKE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;;QAExC,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,iBAAiB,EAAE;6BACH,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACO,WAAW;QACnB,OAAQ,IAAI,CAAA,gCAAgC,IAAI,CAAC,OAAO,QAAQ,CAAC;IACnE,CAAC;IAED;;;OAGG;IACO,iBAAiB;QACzB,OAAQ,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACxD,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAA;;UAGL,IAAI,CAAC,IAAI;aACN,MAAM,CAAC,CAAC,CAAC,EAAE,CAAE,CAAc,CAAC,OAAO,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAc,CAAC,OAAO,EAAE,CACvC;;KAEH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,WAAW;QAEnB,OAAO,IAAI,CAAA;;6BAEc,GAAG,CAAC,YAAY,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;;oBAGjB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;YAEjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;;KAGzC,CAAC;QAEF,SAAS,WAAW,CAAC,OAAgB;YACnC,IAAG,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA,EAAE,CAAC;YAE3B,OAAO,IAAI,CAAA,yBAAyB,OAAO,SAAS,CAAC;QACvD,CAAC;QAED,SAAS,cAAc,CAAC,SAAkC;YACxD,OAAO,SAAS,UAAU,CAAC,EAA6B;gBACtD,gDAAgD;gBAChD,6EAA6E;gBAC7E,IAAI,EAAE,CAAC,MAAM,YAAY,IAAI;oBAChB,CACT,SAAS,CAAC,MAAM,CACd,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAC/C,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAClB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC,CAAA;QACH,CAAC;IAGH,CAAC;IAEO,iBAAiB;QACvB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,MAAM,CAAC,EAAE;YACf,0DAA0D;YAC1D,oCAAoC;YACpC,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,KAAK,KAAK,CAAA;YACrD,OAAO,iBAAiB,IAAI,YAAY,CAAA;QAC1C,CAAC,CAAC,CAAA;IACN,CAAC;IAED,6EAA6E;IACnE,aAAa;QAErB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE;aAC3C,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE5B,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,IAAG,CAAC,gBAAgB,EAAC;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;SAAE;QAEvC,OAAO,IAAI,CAAA;;mBAEI,IAAI,CAAC,iBAAiB,EAAE;wBACnB,IAAI,CAAC,YAAY;qCACJ,IAAI,CAAC,wBAAwB;;;QAG1D,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAG;KACrD,CAAC;QAEF,SAAS,mBAAmB,CAAC,GAAuB,EAAE,YAAqB;YACzE,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,CAAA;YACrC,IAAG,UAAU,IAAI,CAAC,GAAG,EAAE;gBAAE,OAAO,IAAI,CAAA,EAAE,CAAA;aAAE;YAExC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;YAChC,IAAG,CAAC,OAAO,EAAE;gBAAE,OAAO,IAAI,CAAA,EAAE,CAAA;aAAE;YAE9B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,CAAoB;QACnD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IACrC,CAAC;IAEO,2BAA2B,CAAC,CAA2C;QAC7E,MAAM,EAAC,IAAI,EAAE,GAAG,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QACvF,IAAG,CAAC,YAAY,EAAC;YAAE,OAAO;SAAE,CAAC,kBAAkB;QAE/C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEO,oBAAoB,CAAC,CAA8B;QAEzD,qCAAqC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAgB,CAAA;QAE5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO;SACR;QAEA,kBAA4C,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACO,aAAa;QACrB,IAAG,IAAI,CAAC,GAAG,EAAC;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;SAAE;QAE9B,OAAO,IAAI,CAAA;;UAEL,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;aACpC,CAAA;QAEP,SAAS,eAAe,CAAC,oBAA8C,EAAE,MAAc;YAErF,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAe,CAAC;YAEpF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,KAAK,EAAE,EAAE;gBACzC,IAAG,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE;oBAAE,OAAO,IAAI,CAAA,EAAE,CAAC;iBAAE;gBAE3D,OAAO,IAAI,CAAA;;;wBAGC,EAAE,CAAC,IAAI;0BACL,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;;6CAEP,EAAE,CAAC,IAAI;;aAEvC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,SAAS,aAAa,CAAC,KAAY;gBACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChE,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;QAEL,CAAC;IACH,CAAC;;AAKI,iBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FlB,CAAC;AA9mB8B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;uCAAgC;AAEnC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAc;AAEb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAgB;AAGf;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAoB;AAGpB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;2CAAwB;AAGtB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCAAoB;AAEtC;IAAR,KAAK,EAAE;6CAA8C;AAC7C;IAAR,KAAK,EAAE;kDAAwB;AACvB;IAAR,KAAK,EAAE;gDAAgE;AAExD;IAAf,KAAK,CAAC,OAAO,CAAC;0CAAiB;AACT;IAAtB,KAAK,CAAC,cAAc,CAAC;+CAAoB;AACjB;IAAxB,KAAK,CAAC,gBAAgB,CAAC;4CAA8B;AAChC;IAArB,KAAK,CAAC,aAAa,CAAC;8CAAmB;AACnB;IAApB,KAAK,CAAC,YAAY,CAAC;oDAA2C;AA1BpD,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAknBtB;SAlnBY,UAAU","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n state,\n TemplateResult,\n query,\n css,\n} from 'lit-element';\nimport { get } from 'lit-translate';\nimport { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter.js';\nimport { newSettingsUIEvent } from '@openscd/core/foundation/deprecated/settings.js';\nimport { XMLEditor } from '@openscd/core';\nimport {\n MenuItem,\n Validator,\n MenuPlugin,\n pluginIcons,\n} from '../open-scd.js';\n\nimport {\n Plugin,\n} from \"../plugin.js\"\n\nimport {\n HistoryUIKind,\n newEmptyIssuesEvent,\n newHistoryUIEvent\n} from './History.js';\nimport type { Drawer } from '@material/mwc-drawer';\nimport type { ActionDetail } from '@material/mwc-list';\nimport { List } from '@material/mwc-list';\nimport type { ListItem } from '@material/mwc-list/mwc-list-item';\n\nimport '@material/mwc-drawer';\nimport '@material/mwc-list';\nimport '@material/mwc-dialog';\nimport '@material/mwc-switch';\nimport '@material/mwc-select';\nimport '@material/mwc-textfield';\nimport { pluginTag } from '../plugin-tag.js';\n\nimport {OscdPluginManager} from \"./plugin-manager/plugin-manager.js\";\nimport \"./plugin-manager/plugin-manager.js\";\nimport {OscdCustomPluginDialog} from \"./plugin-manager/custom-plugin-dialog.js\";\nimport \"./plugin-manager/custom-plugin-dialog.js\";\nimport \"./menu-tabs/menu-tabs.js\";\nimport { TabActivatedEvent } from \"./menu-tabs/menu-tabs.js\";\n\n\n@customElement('oscd-layout')\nexport class OscdLayout extends LitElement {\n\n /** The `XMLDocument` to be edited */\n @property({ attribute: false }) doc: XMLDocument | null = null;\n /** The name of the current [[`doc`]] */\n @property({ type: String }) docName = '';\n /** Index of the last [[`EditorAction`]] applied. */\n @property({ type: Number }) editCount = -1;\n\n /** XML Editor to apply changes to the scd */\n @property({ type: Object }) editor!: XMLEditor;\n\n /** The plugins to render the layout. */\n @property({ type: Array }) plugins: Plugin[] = [];\n\n /** The open-scd host element */\n @property({ type: Object }) host!: HTMLElement;\n\n @state() validated: Promise<void> = Promise.resolve();\n @state() shouldValidate = false;\n @state() activeEditor: Plugin | undefined = this.calcActiveEditors()[0];\n\n @query('#menu') menuUI!: Drawer;\n @query('#menuContent') menuContent!: List;\n @query('#pluginManager') pluginUI!: OscdPluginManager;\n @query('#pluginList') pluginList!: List;\n @query('#pluginAdd') pluginDownloadUI!: OscdCustomPluginDialog;\n\n\n render(): TemplateResult {\n return html`\n <div\n @open-plugin-download=${() => this.pluginDownloadUI.show()}\n @oscd-activate-editor=${this.handleActivateEditorByEvent}\n @oscd-run-menu=${this.handleRunMenuByEvent}\n >\n <slot></slot>\n ${this.renderHeader()} ${this.renderAside()} ${this.renderMenuContent()}\n ${this.renderContent()} ${this.renderLanding()} ${this.renderPlugging()}\n </div>\n `;\n }\n\n\n private renderPlugging(): TemplateResult {\n return html` ${this.renderPluginUI()} ${this.renderDownloadUI()} `;\n }\n\n private getMenuContent(src: string) {\n const tag = pluginTag(src);\n return this.menuContent.querySelector(tag);\n }\n\n /** Renders the \"Add Custom Plug-in\" UI*/\n protected renderDownloadUI(): TemplateResult {\n return html`\n <oscd-custom-plugin-dialog id=\"pluginAdd\"></oscd-custom-plugin-dialog>\n `\n }\n\n /**\n * Renders the plug-in management UI (turning plug-ins on/off)\n */\n protected renderPluginUI(): TemplateResult {\n return html`\n <oscd-plugin-manager id=\"pluginManager\" .plugins=${this.plugins}></oscd-plugin-manager>\n `\n }\n\n // Computed properties\n\n get validators(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'validator'\n );\n }\n get menuEntries(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'menu'\n );\n }\n get topMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'top');\n }\n get middleMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'middle');\n }\n get bottomMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'bottom');\n }\n\n\n get menu(): (MenuItem | 'divider')[] {\n\n const topMenu = this.generateMenu(this.topMenu, 'top');\n const middleMenu = this.generateMenu(this.middleMenu, 'middle');\n const bottomMenu = this.generateMenu(this.bottomMenu, 'bottom');\n const validators = this.generateValidatorMenus(this.validators);\n\n if (middleMenu.length > 0) middleMenu.push('divider');\n if (bottomMenu.length > 0) bottomMenu.push('divider');\n\n return [\n 'divider',\n ...topMenu,\n 'divider',\n {\n icon: 'undo',\n name: 'undo',\n actionItem: true,\n action: (): void => {\n this.editor.undo();\n },\n disabled: (): boolean => !this.editor.canUndo,\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'redo',\n name: 'redo',\n actionItem: true,\n action: (): void => {\n this.editor.redo();\n },\n disabled: (): boolean => !this.editor.canRedo,\n kind: 'static',\n content: () => html``,\n },\n ...validators,\n {\n icon: 'list',\n name: 'menu.viewLog',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.log));\n },\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'history',\n name: 'menu.viewHistory',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.history));\n },\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'rule',\n name: 'menu.viewDiag',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.diagnostic));\n },\n kind: 'static',\n content: () => html``,\n },\n 'divider',\n ...middleMenu,\n {\n icon: 'settings',\n name: 'settings.title',\n action: (): void => {\n this.dispatchEvent(newSettingsUIEvent(true));\n },\n kind: 'static',\n content: () => html``,\n },\n ...bottomMenu,\n {\n icon: 'extension',\n name: 'plugins.heading',\n action: (): void => this.pluginUI.show(),\n kind: 'static',\n content: () => html``,\n },\n ];\n }\n\n get editors(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'editor'\n );\n }\n\n // Keyboard Shortcuts\n private handleKeyPress(e: KeyboardEvent): void {\n // currently we only handley key shortcuts when users press ctrl\n if(!e.ctrlKey){ return }\n\n const keyFunctionMap: {[key:string]: () => void} = {\n 'm': () => this.menuUI.open = !this.menuUI.open,\n 'o': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"folder_open\"]')?.click(),\n 'O': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"create_new_folder\"]')?.click(),\n 's': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"save\"]')?.click(),\n 'P': () => this.pluginUI.show(),\n }\n\n const fn = keyFunctionMap[e.key];\n if(!fn){ return; }\n\n e.preventDefault();\n fn();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.host.addEventListener('close-drawer', async () => {\n this.menuUI.open = false;\n });\n this.host.addEventListener('validate', async () => {\n this.shouldValidate = true;\n await this.validated;\n\n if (!this.shouldValidate){ return; }\n\n this.shouldValidate = false;\n\n this.validated = Promise.allSettled(\n this.menuUI\n .querySelector('mwc-list')!\n .items.filter(item => item.className === 'validator')\n .map(item => {\n const src = item.dataset.src ?? '';\n const menuContentElement = this.getMenuContent(src);\n\n if (!menuContentElement) {\n return;\n }\n\n return (menuContentElement as unknown as Validator).validate()\n })\n ).then();\n this.dispatchEvent(newPendingStateEvent(this.validated));\n });\n this.handleKeyPress = this.handleKeyPress.bind(this);\n document.onkeydown = this.handleKeyPress;\n\n document.addEventListener(\"open-plugin-download\", () => {\n this.pluginDownloadUI.show();\n });\n }\n\n\n private generateMenu(plugins:Plugin[], kind: 'top' | 'middle' | 'bottom'): (MenuItem | 'divider')[]{\n return plugins.map(plugin => {\n return {\n icon: plugin.icon || pluginIcons['menu'],\n name: plugin.name,\n src: plugin.src,\n action: ae => {\n const menuContentElement = this.getMenuContent(plugin.src);\n if (!menuContentElement) {\n return;\n }\n\n this.dispatchEvent(newPendingStateEvent((menuContentElement as unknown as MenuPlugin).run()))\n },\n disabled: (): boolean => plugin.requireDoc! && this.doc === null,\n content: () => {\n if(plugin.content){ return plugin.content(); }\n return html``;\n },\n kind: kind,\n }\n })\n }\n\n private generateValidatorMenus(plugins: Plugin[]): (MenuItem | 'divider')[] {\n return plugins.map(plugin =>{\n return {\n icon: plugin.icon || pluginIcons['validator'],\n name: plugin.name,\n src: plugin.src,\n action: ae => {\n this.dispatchEvent(newEmptyIssuesEvent(plugin.src));\n\n const menuContentElement = this.getMenuContent(plugin.src);\n if (!menuContentElement) {\n return;\n }\n\n this.dispatchEvent(newPendingStateEvent((menuContentElement as unknown as Validator).validate()))\n },\n disabled: (): boolean => this.doc === null,\n content: plugin.content ?? (() => html``),\n kind: 'validator',\n }\n });\n }\n\n private renderMenuItem(me: MenuItem | 'divider'): TemplateResult {\n const isDivider = me === 'divider';\n const hasActionItem = me !== 'divider' && me.actionItem;\n\n if (isDivider) { return html`<li divider padded role=\"separator\"></li>`; }\n if (hasActionItem){ return html``; }\n return html`\n <mwc-list-item\n class=\"${me.kind}\"\n iconid=\"${me.icon}\"\n graphic=\"icon\"\n data-name=\"${me.name}\"\n data-src=\"${me.src ?? ''}\"\n .disabled=${me.disabled?.() || !me.action}\n ><mwc-icon slot=\"graphic\">${me.icon}</mwc-icon>\n <span>${get(me.name)}</span>\n ${me.hint\n ? html`<span slot=\"secondary\"><tt>${me.hint}</tt></span>`\n : ''}\n </mwc-list-item>\n `;\n }\n\n protected renderActionItem(me: MenuItem | 'divider'): TemplateResult {\n if(me === 'divider' || !me.actionItem){ return html`` }\n\n return html`\n <mwc-icon-button\n slot=\"actionItems\"\n icon=\"${me.icon}\"\n label=\"${me.name}\"\n ?disabled=${me.disabled?.() || !me.action}\n @click=${me.action}\n ></mwc-icon-button>`;\n }\n\n private renderEditorTab({ name, icon }: Plugin): TemplateResult {\n return html`<mwc-tab label=${name} icon=${icon || 'edit'}> </mwc-tab>`;\n }\n\n /** Renders top bar which features icon buttons for undo, redo, log, scl history and diagnostics*/\n protected renderHeader(): TemplateResult {\n return html`<mwc-top-app-bar-fixed>\n <mwc-icon-button\n icon=\"menu\"\n label=\"Menu\"\n slot=\"navigationIcon\"\n @click=${() => (this.menuUI.open = true)}\n ></mwc-icon-button>\n ${this.renderTitle()}\n ${this.renderActionItems()}\n </mwc-top-app-bar-fixed>`;\n }\n\n /**\n * Renders the title section in the top bar\n * Make sure to use slot=\"title\" for the returned template\n */\n protected renderTitle(): TemplateResult {\n return html`<div slot=\"title\" id=\"title\">${this.docName}</div>`;\n }\n\n /**\n * Renders the action items for the top bar\n * Make sure to use slot=\"actionItems\" for each element\n */\n protected renderActionItems(): TemplateResult {\n return html`${this.menu.map(this.renderActionItem)}`;\n }\n\n protected renderMenuContent(): TemplateResult {\n return html`\n <div id=\"menuContent\">\n ${\n this.menu\n .filter(p => (p as MenuItem).content)\n .map(p => (p as MenuItem).content())\n }\n </div>\n `;\n }\n\n /**\n * Renders a drawer toolbar featuring the scl filename, enabled menu plugins,\n * settings, help, scl history and plug-ins management\n */\n protected renderAside(): TemplateResult {\n\n return html`\n <mwc-drawer class=\"mdc-theme--surface\" hasheader type=\"modal\" id=\"menu\">\n <span slot=\"title\">${get('menu.title')}</span>\n ${renderTitle(this.docName)}\n <mwc-list\n wrapFocus\n @action=${makeListAction(this.menu)}\n >\n ${this.menu.map(this.renderMenuItem)}\n </mwc-list>\n </mwc-drawer>\n `;\n\n function renderTitle(docName?: string){\n if(!docName) return html``;\n\n return html`<span slot=\"subtitle\">${docName}</span>`;\n }\n\n function makeListAction(menuItems : (MenuItem|'divider')[]){\n return function listAction(ae: CustomEvent<ActionDetail>){\n //FIXME: dirty hack to be fixed in open-scd-core\n // if clause not necessary when oscd... components in open-scd not list\n if (ae.target instanceof List)\n (<MenuItem>(\n menuItems.filter(\n item => item !== 'divider' && !item.actionItem\n )[ae.detail.index]\n ))?.action?.(ae);\n }\n }\n\n\n }\n\n private calcActiveEditors(){\n const hasActiveDoc = Boolean(this.doc);\n\n return this.editors\n .filter(editor => {\n // this is necessary because `requireDoc` can be undefined\n // and that is not the same as false\n const doesNotRequireDoc = editor.requireDoc === false\n return doesNotRequireDoc || hasActiveDoc\n })\n }\n\n /** Renders the enabled editor plugins and a tab bar to switch between them*/\n protected renderContent(): TemplateResult {\n\n const activeEditors = this.calcActiveEditors()\n .map(this.renderEditorTab)\n\n const hasActiveEditors = activeEditors.length > 0;\n if(!hasActiveEditors){ return html``; }\n\n return html`\n <oscd-menu-tabs\n .editors=${this.calcActiveEditors()}\n .activeEditor=${this.activeEditor}\n @oscd-editor-tab-activated=${this.handleEditorTabActivated}\n >\n </oscd-menu-tabs>\n ${renderEditorContent(this.doc, this.activeEditor, )}\n `;\n\n function renderEditorContent(doc: XMLDocument | null, activeEditor?: Plugin){\n const editor = activeEditor;\n const requireDoc = editor?.requireDoc\n if(requireDoc && !doc) { return html`` }\n\n const content = editor?.content;\n if(!content) { return html`` }\n\n return html`${content()}`;\n }\n }\n\n private handleEditorTabActivated(e: TabActivatedEvent){\n this.activeEditor = e.detail.editor\n }\n\n private handleActivateEditorByEvent(e: CustomEvent<{name: string, src: string}>): void {\n const {name, src} = e.detail;\n const editors = this.calcActiveEditors()\n const wantedEditor = editors.find(editor => editor.name === name || editor.src === src)\n if(!wantedEditor){ return; } // TODO: log error\n\n this.activeEditor = wantedEditor;\n }\n\n private handleRunMenuByEvent(e: CustomEvent<{name: string}>): void {\n\n // TODO: this is a workaround, fix it\n this.menuUI.open = true;\n const menuEntry = this.menuUI.querySelector(`[data-name=\"${e.detail.name}\"]`) as HTMLElement\n\n const menuContentElement = this.getMenuContent(menuEntry.dataset.src ?? '');\n if (!menuContentElement) {\n return;\n }\n\n (menuContentElement as unknown as MenuPlugin).run();\n }\n\n /**\n * Renders the landing buttons (open project and new project)\n * it no document loaded we display the menu item that are in the position\n * 'top' and are not disabled\n *\n * To enable replacement of this part we have to convert it to either an addon\n * or a plugin\n */\n protected renderLanding(): TemplateResult {\n if(this.doc){ return html``; }\n\n return html`\n <div class=\"landing\">\n ${renderMenuItems(this.menu, this.menuUI)}\n </div>`\n\n function renderMenuItems(menuItemsAndDividers: (MenuItem | 'divider')[], menuUI: Drawer){\n\n const menuItems = menuItemsAndDividers.filter(mi => mi !== 'divider') as MenuItem[];\n\n return menuItems.map((mi: MenuItem, index) => {\n if(mi.kind !== 'top' || mi.disabled?.()) { return html``; }\n\n return html`\n <mwc-icon-button\n class=\"landing_icon\"\n icon=\"${mi.icon}\"\n @click=\"${() => clickListItem(index)}\"\n >\n <div class=\"landing_label\">${mi.name}</div>\n </mwc-icon-button>\n `\n })\n\n function clickListItem(index:number) {\n const listItem = menuUI.querySelector('mwc-list')!.items[index];\n listItem.click();\n }\n\n }\n }\n\n\n\n\n static styles = css`\n mwc-drawer {\n position: absolute;\n top: 0;\n }\n\n mwc-top-app-bar-fixed {\n --mdc-theme-text-disabled-on-light: rgba(255, 255, 255, 0.38);\n } /* hack to fix disabled icon buttons rendering black */\n\n mwc-tab {\n background-color: var(--primary);\n --mdc-theme-primary: var(--mdc-theme-on-primary);\n }\n\n input[type='file'] {\n display: none;\n }\n\n mwc-dialog {\n --mdc-dialog-max-width: 98vw;\n }\n\n mwc-dialog > form {\n display: flex;\n flex-direction: column;\n }\n\n mwc-dialog > form > * {\n display: block;\n margin-top: 16px;\n }\n\n mwc-linear-progress {\n position: fixed;\n --mdc-linear-progress-buffer-color: var(--primary);\n --mdc-theme-primary: var(--secondary);\n left: 0px;\n top: 0px;\n width: 100%;\n pointer-events: none;\n z-index: 1000;\n }\n\n tt {\n font-family: 'Roboto Mono', monospace;\n font-weight: 300;\n }\n\n .landing {\n position: absolute;\n text-align: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n\n .landing_icon:hover {\n box-shadow: 0 12px 17px 2px rgba(0, 0, 0, 0.14),\n 0 5px 22px 4px rgba(0, 0, 0, 0.12), 0 7px 8px -4px rgba(0, 0, 0, 0.2);\n }\n\n .landing_icon {\n margin: 12px;\n border-radius: 16px;\n width: 160px;\n height: 140px;\n text-align: center;\n color: var(--mdc-theme-on-secondary);\n background: var(--secondary);\n --mdc-icon-button-size: 100px;\n --mdc-icon-size: 100px;\n --mdc-ripple-color: rgba(0, 0, 0, 0);\n box-shadow: rgb(0 0 0 / 14%) 0px 6px 10px 0px,\n rgb(0 0 0 / 12%) 0px 1px 18px 0px, rgb(0 0 0 / 20%) 0px 3px 5px -1px;\n transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .landing_label {\n width: 160px;\n height: 50px;\n margin-top: 100px;\n margin-left: -30px;\n font-family: 'Roboto', sans-serif;\n }\n\n .plugin.menu {\n display: flex;\n }\n\n .plugin.validator {\n display: flex;\n }\n `;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/addons/Layout.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n state,\n TemplateResult,\n query,\n css,\n} from 'lit-element';\nimport { get } from 'lit-translate';\nimport { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter';\nimport { newSettingsUIEvent } from '@openscd/core/foundation/deprecated/settings';\nimport { XMLEditor } from '@openscd/core';\nimport {\n MenuItem,\n Validator,\n MenuPlugin,\n pluginIcons,\n} from '../open-scd.js';\n\nimport {\n Plugin,\n} from \"../plugin.js\"\n\nimport {\n HistoryUIKind,\n newEmptyIssuesEvent,\n newHistoryUIEvent\n} from './History.js';\nimport type { Drawer } from '@material/mwc-drawer';\nimport type { ActionDetail } from '@material/mwc-list';\nimport { List } from '@material/mwc-list';\nimport type { ListItem } from '@material/mwc-list/mwc-list-item';\n\nimport '@material/mwc-drawer';\nimport '@material/mwc-list';\nimport '@material/mwc-dialog';\nimport '@material/mwc-switch';\nimport '@material/mwc-select';\nimport '@material/mwc-textfield';\nimport { pluginTag } from '../plugin-tag.js';\n\nimport {OscdPluginManager} from \"./plugin-manager/plugin-manager.js\";\nimport \"./plugin-manager/plugin-manager.js\";\nimport {OscdCustomPluginDialog} from \"./plugin-manager/custom-plugin-dialog.js\";\nimport \"./plugin-manager/custom-plugin-dialog.js\";\nimport \"./menu-tabs/menu-tabs.js\";\nimport { TabActivatedEvent } from \"./menu-tabs/menu-tabs.js\";\n\n\n@customElement('oscd-layout')\nexport class OscdLayout extends LitElement {\n\n /** The `XMLDocument` to be edited */\n @property({ attribute: false }) doc: XMLDocument | null = null;\n /** The name of the current [[`doc`]] */\n @property({ type: String }) docName = '';\n /** Index of the last [[`EditorAction`]] applied. */\n @property({ type: Number }) editCount = -1;\n\n /** XML Editor to apply changes to the scd */\n @property({ type: Object }) editor!: XMLEditor;\n\n /** The plugins to render the layout. */\n @property({ type: Array }) plugins: Plugin[] = [];\n\n /** The open-scd host element */\n @property({ type: Object }) host!: HTMLElement;\n\n @state() validated: Promise<void> = Promise.resolve();\n @state() shouldValidate = false;\n @state() activeEditor: Plugin | undefined = this.calcActiveEditors()[0];\n\n @query('#menu') menuUI!: Drawer;\n @query('#menuContent') menuContent!: List;\n @query('#pluginManager') pluginUI!: OscdPluginManager;\n @query('#pluginList') pluginList!: List;\n @query('#pluginAdd') pluginDownloadUI!: OscdCustomPluginDialog;\n\n\n render(): TemplateResult {\n return html`\n <div\n @open-plugin-download=${() => this.pluginDownloadUI.show()}\n @oscd-activate-editor=${this.handleActivateEditorByEvent}\n @oscd-run-menu=${this.handleRunMenuByEvent}\n >\n <slot></slot>\n ${this.renderHeader()} ${this.renderAside()} ${this.renderMenuContent()}\n ${this.renderContent()} ${this.renderLanding()} ${this.renderPlugging()}\n </div>\n `;\n }\n\n\n private renderPlugging(): TemplateResult {\n return html` ${this.renderPluginUI()} ${this.renderDownloadUI()} `;\n }\n\n private getMenuContent(src: string) {\n const tag = pluginTag(src);\n return this.menuContent.querySelector(tag);\n }\n\n /** Renders the \"Add Custom Plug-in\" UI*/\n protected renderDownloadUI(): TemplateResult {\n return html`\n <oscd-custom-plugin-dialog id=\"pluginAdd\"></oscd-custom-plugin-dialog>\n `\n }\n\n /**\n * Renders the plug-in management UI (turning plug-ins on/off)\n */\n protected renderPluginUI(): TemplateResult {\n return html`\n <oscd-plugin-manager id=\"pluginManager\" .plugins=${this.plugins}></oscd-plugin-manager>\n `\n }\n\n // Computed properties\n\n get validators(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'validator'\n );\n }\n get menuEntries(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'menu'\n );\n }\n get topMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'top');\n }\n get middleMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'middle');\n }\n get bottomMenu(): Plugin[] {\n return this.menuEntries.filter(plugin => plugin.position === 'bottom');\n }\n\n\n get menu(): (MenuItem | 'divider')[] {\n\n const topMenu = this.generateMenu(this.topMenu, 'top');\n const middleMenu = this.generateMenu(this.middleMenu, 'middle');\n const bottomMenu = this.generateMenu(this.bottomMenu, 'bottom');\n const validators = this.generateValidatorMenus(this.validators);\n\n if (middleMenu.length > 0) middleMenu.push('divider');\n if (bottomMenu.length > 0) bottomMenu.push('divider');\n\n return [\n 'divider',\n ...topMenu,\n 'divider',\n {\n icon: 'undo',\n name: 'undo',\n actionItem: true,\n action: (): void => {\n this.editor.undo();\n },\n disabled: (): boolean => !this.editor.canUndo,\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'redo',\n name: 'redo',\n actionItem: true,\n action: (): void => {\n this.editor.redo();\n },\n disabled: (): boolean => !this.editor.canRedo,\n kind: 'static',\n content: () => html``,\n },\n ...validators,\n {\n icon: 'list',\n name: 'menu.viewLog',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.log));\n },\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'history',\n name: 'menu.viewHistory',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.history));\n },\n kind: 'static',\n content: () => html``,\n },\n {\n icon: 'rule',\n name: 'menu.viewDiag',\n actionItem: true,\n action: (): void => {\n this.dispatchEvent(newHistoryUIEvent(true, HistoryUIKind.diagnostic));\n },\n kind: 'static',\n content: () => html``,\n },\n 'divider',\n ...middleMenu,\n {\n icon: 'settings',\n name: 'settings.title',\n action: (): void => {\n this.dispatchEvent(newSettingsUIEvent(true));\n },\n kind: 'static',\n content: () => html``,\n },\n ...bottomMenu,\n {\n icon: 'extension',\n name: 'plugins.heading',\n action: (): void => this.pluginUI.show(),\n kind: 'static',\n content: () => html``,\n },\n ];\n }\n\n get editors(): Plugin[] {\n return this.plugins.filter(\n plugin => plugin.active && plugin.kind === 'editor'\n );\n }\n\n // Keyboard Shortcuts\n private handleKeyPress(e: KeyboardEvent): void {\n // currently we only handley key shortcuts when users press ctrl\n if(!e.ctrlKey){ return }\n\n const keyFunctionMap: {[key:string]: () => void} = {\n 'm': () => this.menuUI.open = !this.menuUI.open,\n 'o': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"folder_open\"]')?.click(),\n 'O': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"create_new_folder\"]')?.click(),\n 's': () => this.menuUI.querySelector<ListItem>('mwc-list-item[iconid=\"save\"]')?.click(),\n 'P': () => this.pluginUI.show(),\n }\n\n const fn = keyFunctionMap[e.key];\n if(!fn){ return; }\n\n e.preventDefault();\n fn();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.host.addEventListener('close-drawer', async () => {\n this.menuUI.open = false;\n });\n this.host.addEventListener('validate', async () => {\n this.shouldValidate = true;\n await this.validated;\n\n if (!this.shouldValidate){ return; }\n\n this.shouldValidate = false;\n\n this.validated = Promise.allSettled(\n this.menuUI\n .querySelector('mwc-list')!\n .items.filter(item => item.className === 'validator')\n .map(item => {\n const src = item.dataset.src ?? '';\n const menuContentElement = this.getMenuContent(src);\n\n if (!menuContentElement) {\n return;\n }\n\n return (menuContentElement as unknown as Validator).validate()\n })\n ).then();\n this.dispatchEvent(newPendingStateEvent(this.validated));\n });\n this.handleKeyPress = this.handleKeyPress.bind(this);\n document.onkeydown = this.handleKeyPress;\n\n document.addEventListener(\"open-plugin-download\", () => {\n this.pluginDownloadUI.show();\n });\n }\n\n\n private generateMenu(plugins:Plugin[], kind: 'top' | 'middle' | 'bottom'): (MenuItem | 'divider')[]{\n return plugins.map(plugin => {\n return {\n icon: plugin.icon || pluginIcons['menu'],\n name: plugin.name,\n src: plugin.src,\n action: ae => {\n const menuContentElement = this.getMenuContent(plugin.src);\n if (!menuContentElement) {\n return;\n }\n\n this.dispatchEvent(newPendingStateEvent((menuContentElement as unknown as MenuPlugin).run()))\n },\n disabled: (): boolean => plugin.requireDoc! && this.doc === null,\n content: () => {\n if(plugin.content){ return plugin.content(); }\n return html``;\n },\n kind: kind,\n }\n })\n }\n\n private generateValidatorMenus(plugins: Plugin[]): (MenuItem | 'divider')[] {\n return plugins.map(plugin =>{\n return {\n icon: plugin.icon || pluginIcons['validator'],\n name: plugin.name,\n src: plugin.src,\n action: ae => {\n this.dispatchEvent(newEmptyIssuesEvent(plugin.src));\n\n const menuContentElement = this.getMenuContent(plugin.src);\n if (!menuContentElement) {\n return;\n }\n\n this.dispatchEvent(newPendingStateEvent((menuContentElement as unknown as Validator).validate()))\n },\n disabled: (): boolean => this.doc === null,\n content: plugin.content ?? (() => html``),\n kind: 'validator',\n }\n });\n }\n\n private renderMenuItem(me: MenuItem | 'divider'): TemplateResult {\n const isDivider = me === 'divider';\n const hasActionItem = me !== 'divider' && me.actionItem;\n\n if (isDivider) { return html`<li divider padded role=\"separator\"></li>`; }\n if (hasActionItem){ return html``; }\n return html`\n <mwc-list-item\n class=\"${me.kind}\"\n iconid=\"${me.icon}\"\n graphic=\"icon\"\n data-name=\"${me.name}\"\n data-src=\"${me.src ?? ''}\"\n .disabled=${me.disabled?.() || !me.action}\n ><mwc-icon slot=\"graphic\">${me.icon}</mwc-icon>\n <span>${get(me.name)}</span>\n ${me.hint\n ? html`<span slot=\"secondary\"><tt>${me.hint}</tt></span>`\n : ''}\n </mwc-list-item>\n `;\n }\n\n protected renderActionItem(me: MenuItem | 'divider'): TemplateResult {\n if(me === 'divider' || !me.actionItem){ return html`` }\n\n return html`\n <mwc-icon-button\n slot=\"actionItems\"\n icon=\"${me.icon}\"\n label=\"${me.name}\"\n ?disabled=${me.disabled?.() || !me.action}\n @click=${me.action}\n ></mwc-icon-button>`;\n }\n\n private renderEditorTab({ name, icon }: Plugin): TemplateResult {\n return html`<mwc-tab label=${name} icon=${icon || 'edit'}> </mwc-tab>`;\n }\n\n /** Renders top bar which features icon buttons for undo, redo, log, scl history and diagnostics*/\n protected renderHeader(): TemplateResult {\n return html`<mwc-top-app-bar-fixed>\n <mwc-icon-button\n icon=\"menu\"\n label=\"Menu\"\n slot=\"navigationIcon\"\n @click=${() => (this.menuUI.open = true)}\n ></mwc-icon-button>\n ${this.renderTitle()}\n ${this.renderActionItems()}\n </mwc-top-app-bar-fixed>`;\n }\n\n /**\n * Renders the title section in the top bar\n * Make sure to use slot=\"title\" for the returned template\n */\n protected renderTitle(): TemplateResult {\n return html`<div slot=\"title\" id=\"title\">${this.docName}</div>`;\n }\n\n /**\n * Renders the action items for the top bar\n * Make sure to use slot=\"actionItems\" for each element\n */\n protected renderActionItems(): TemplateResult {\n return html`${this.menu.map(this.renderActionItem)}`;\n }\n\n protected renderMenuContent(): TemplateResult {\n return html`\n <div id=\"menuContent\">\n ${\n this.menu\n .filter(p => (p as MenuItem).content)\n .map(p => (p as MenuItem).content())\n }\n </div>\n `;\n }\n\n /**\n * Renders a drawer toolbar featuring the scl filename, enabled menu plugins,\n * settings, help, scl history and plug-ins management\n */\n protected renderAside(): TemplateResult {\n\n return html`\n <mwc-drawer class=\"mdc-theme--surface\" hasheader type=\"modal\" id=\"menu\">\n <span slot=\"title\">${get('menu.title')}</span>\n ${renderTitle(this.docName)}\n <mwc-list\n wrapFocus\n @action=${makeListAction(this.menu)}\n >\n ${this.menu.map(this.renderMenuItem)}\n </mwc-list>\n </mwc-drawer>\n `;\n\n function renderTitle(docName?: string){\n if(!docName) return html``;\n\n return html`<span slot=\"subtitle\">${docName}</span>`;\n }\n\n function makeListAction(menuItems : (MenuItem|'divider')[]){\n return function listAction(ae: CustomEvent<ActionDetail>){\n //FIXME: dirty hack to be fixed in open-scd-core\n // if clause not necessary when oscd... components in open-scd not list\n if (ae.target instanceof List)\n (<MenuItem>(\n menuItems.filter(\n item => item !== 'divider' && !item.actionItem\n )[ae.detail.index]\n ))?.action?.(ae);\n }\n }\n\n\n }\n\n private calcActiveEditors(){\n const hasActiveDoc = Boolean(this.doc);\n\n return this.editors\n .filter(editor => {\n // this is necessary because `requireDoc` can be undefined\n // and that is not the same as false\n const doesNotRequireDoc = editor.requireDoc === false\n return doesNotRequireDoc || hasActiveDoc\n })\n }\n\n /** Renders the enabled editor plugins and a tab bar to switch between them*/\n protected renderContent(): TemplateResult {\n\n const activeEditors = this.calcActiveEditors()\n .map(this.renderEditorTab)\n\n const hasActiveEditors = activeEditors.length > 0;\n if(!hasActiveEditors){ return html``; }\n\n return html`\n <oscd-menu-tabs\n .editors=${this.calcActiveEditors()}\n .activeEditor=${this.activeEditor}\n @oscd-editor-tab-activated=${this.handleEditorTabActivated}\n >\n </oscd-menu-tabs>\n ${renderEditorContent(this.doc, this.activeEditor, )}\n `;\n\n function renderEditorContent(doc: XMLDocument | null, activeEditor?: Plugin){\n const editor = activeEditor;\n const requireDoc = editor?.requireDoc\n if(requireDoc && !doc) { return html`` }\n\n const content = editor?.content;\n if(!content) { return html`` }\n\n return html`${content()}`;\n }\n }\n\n private handleEditorTabActivated(e: TabActivatedEvent){\n this.activeEditor = e.detail.editor\n }\n\n private handleActivateEditorByEvent(e: CustomEvent<{name: string, src: string}>): void {\n const {name, src} = e.detail;\n const editors = this.calcActiveEditors()\n const wantedEditor = editors.find(editor => editor.name === name || editor.src === src)\n if(!wantedEditor){ return; } // TODO: log error\n\n this.activeEditor = wantedEditor;\n }\n\n private handleRunMenuByEvent(e: CustomEvent<{name: string}>): void {\n\n // TODO: this is a workaround, fix it\n this.menuUI.open = true;\n const menuEntry = this.menuUI.querySelector(`[data-name=\"${e.detail.name}\"]`) as HTMLElement\n\n const menuContentElement = this.getMenuContent(menuEntry.dataset.src ?? '');\n if (!menuContentElement) {\n return;\n }\n\n (menuContentElement as unknown as MenuPlugin).run();\n }\n\n /**\n * Renders the landing buttons (open project and new project)\n * it no document loaded we display the menu item that are in the position\n * 'top' and are not disabled\n *\n * To enable replacement of this part we have to convert it to either an addon\n * or a plugin\n */\n protected renderLanding(): TemplateResult {\n if(this.doc){ return html``; }\n\n return html`\n <div class=\"landing\">\n ${renderMenuItems(this.menu, this.menuUI)}\n </div>`\n\n function renderMenuItems(menuItemsAndDividers: (MenuItem | 'divider')[], menuUI: Drawer){\n\n const menuItems = menuItemsAndDividers.filter(mi => mi !== 'divider') as MenuItem[];\n\n return menuItems.map((mi: MenuItem, index) => {\n if(mi.kind !== 'top' || mi.disabled?.()) { return html``; }\n\n return html`\n <mwc-icon-button\n class=\"landing_icon\"\n icon=\"${mi.icon}\"\n @click=\"${() => clickListItem(index)}\"\n >\n <div class=\"landing_label\">${mi.name}</div>\n </mwc-icon-button>\n `\n })\n\n function clickListItem(index:number) {\n const listItem = menuUI.querySelector('mwc-list')!.items[index];\n listItem.click();\n }\n\n }\n }\n\n\n\n\n static styles = css`\n mwc-drawer {\n position: absolute;\n top: 0;\n }\n\n mwc-top-app-bar-fixed {\n --mdc-theme-text-disabled-on-light: rgba(255, 255, 255, 0.38);\n } /* hack to fix disabled icon buttons rendering black */\n\n mwc-tab {\n background-color: var(--primary);\n --mdc-theme-primary: var(--mdc-theme-on-primary);\n }\n\n input[type='file'] {\n display: none;\n }\n\n mwc-dialog {\n --mdc-dialog-max-width: 98vw;\n }\n\n mwc-dialog > form {\n display: flex;\n flex-direction: column;\n }\n\n mwc-dialog > form > * {\n display: block;\n margin-top: 16px;\n }\n\n mwc-linear-progress {\n position: fixed;\n --mdc-linear-progress-buffer-color: var(--primary);\n --mdc-theme-primary: var(--secondary);\n left: 0px;\n top: 0px;\n width: 100%;\n pointer-events: none;\n z-index: 1000;\n }\n\n tt {\n font-family: 'Roboto Mono', monospace;\n font-weight: 300;\n }\n\n .landing {\n position: absolute;\n text-align: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n\n .landing_icon:hover {\n box-shadow: 0 12px 17px 2px rgba(0, 0, 0, 0.14),\n 0 5px 22px 4px rgba(0, 0, 0, 0.12), 0 7px 8px -4px rgba(0, 0, 0, 0.2);\n }\n\n .landing_icon {\n margin: 12px;\n border-radius: 16px;\n width: 160px;\n height: 140px;\n text-align: center;\n color: var(--mdc-theme-on-secondary);\n background: var(--secondary);\n --mdc-icon-button-size: 100px;\n --mdc-icon-size: 100px;\n --mdc-ripple-color: rgba(0, 0, 0, 0);\n box-shadow: rgb(0 0 0 / 14%) 0px 6px 10px 0px,\n rgb(0 0 0 / 12%) 0px 1px 18px 0px, rgb(0 0 0 / 20%) 0px 3px 5px -1px;\n transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .landing_label {\n width: 160px;\n height: 50px;\n margin-top: 100px;\n margin-left: -30px;\n font-family: 'Roboto', sans-serif;\n }\n\n .plugin.menu {\n display: flex;\n }\n\n .plugin.validator {\n display: flex;\n }\n `;\n}\n"]}
|
|
@@ -9,7 +9,7 @@ import '@material/mwc-switch';
|
|
|
9
9
|
import { Dialog } from '@material/mwc-dialog';
|
|
10
10
|
import { Select } from '@material/mwc-select';
|
|
11
11
|
import { Switch } from '@material/mwc-switch';
|
|
12
|
-
import { Settings } from '@openscd/core/foundation/deprecated/settings
|
|
12
|
+
import { Settings } from '@openscd/core/foundation/deprecated/settings';
|
|
13
13
|
import { Languages } from '../translations/loader.js';
|
|
14
14
|
import '../WizardDivider.js';
|
|
15
15
|
import { Nsdoc } from '../foundation/nsdoc.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings.d.ts","sourceRoot":"","sources":["../../src/addons/Settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAEd,UAAU,EAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EAA2C,OAAO,EAAO,MAAM,eAAe,CAAC;AAEtF,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EACL,QAAQ,EAOT,MAAM,
|
|
1
|
+
{"version":3,"file":"Settings.d.ts","sourceRoot":"","sources":["../../src/addons/Settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAEd,UAAU,EAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EAA2C,OAAO,EAAO,MAAM,eAAe,CAAC;AAEtF,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EACL,QAAQ,EAOT,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AAEzE,OAAO,qBAAqB,CAAC;AAS7B,OAAO,EAAmB,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEhE,UAAU,cAAc;IACtB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,QAStB,CAAC;AAEF,qBACa,YAAa,SAAQ,UAAU;IAC1C,2EAA2E;IAC3E,IACI,QAAQ,IAAI,QAAQ,CAWvB;IACD,6FAA6F;IAE7F,KAAK,EAAE,KAAK,CAAqB;IAKjC,IAAI,EAAG,WAAW,CAAC;IAGnB,eAAe,UAAQ;IAGvB,cAAc,EAAE,cAAc,CAAyB;IAEvD;;;OAGG;YACW,WAAW;IAuCzB,UAAU,EAAG,MAAM,CAAC;IAEpB,UAAU,EAAG,MAAM,CAAC;IAEpB,WAAW,EAAG,MAAM,CAAC;IAErB,MAAM,EAAG,MAAM,CAAC;IAEhB,UAAU,EAAG,MAAM,CAAC;IAGpB,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,UAAU;IAMlB,kEAAkE;IAClE,UAAU,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ1E,8CAA8C;IAC9C,aAAa,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAUzD,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKxE,OAAO,CAAC,gBAAgB;YAyBV,eAAe;YAef,WAAW;IA4CzB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAQf;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,gBAAgB;IAIxB,iBAAiB,IAAI,IAAI;IAgBzB,MAAM,IAAI,cAAc;IA8ExB,MAAM,CAAC,MAAM,kCAyFX;CACH"}
|
package/dist/addons/Settings.js
CHANGED
|
@@ -8,8 +8,8 @@ import '@material/mwc-list/mwc-list-item';
|
|
|
8
8
|
import '@material/mwc-select';
|
|
9
9
|
import '@material/mwc-switch';
|
|
10
10
|
import { getTheme } from '../themes.js';
|
|
11
|
-
import { newLogEvent } from '@openscd/core/foundation/deprecated/history
|
|
12
|
-
import { newLoadNsdocEvent } from '@openscd/core/foundation/deprecated/settings
|
|
11
|
+
import { newLogEvent } from '@openscd/core/foundation/deprecated/history';
|
|
12
|
+
import { newLoadNsdocEvent } from '@openscd/core/foundation/deprecated/settings';
|
|
13
13
|
import { languages, loader } from '../translations/loader.js';
|
|
14
14
|
import '../WizardDivider.js';
|
|
15
15
|
import { iec6185072, iec6185073, iec6185074, iec6185081, } from '../foundation/nsd.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/addons/Settings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n property,\n query,\n TemplateResult,\n customElement,\n LitElement,\n css,\n} from 'lit-element';\nimport { get, translate, registerTranslateConfig, Strings, use } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-formfield';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-select';\nimport '@material/mwc-switch';\n\nimport { Dialog } from '@material/mwc-dialog';\nimport { Select } from '@material/mwc-select';\nimport { Switch } from '@material/mwc-switch';\n\nimport { getTheme } from '../themes.js';\n\nimport { newLogEvent } from '@openscd/core/foundation/deprecated/history.js';\nimport { \n Settings, \n SettingsUIEvent, \n Language,\n NsdVersions,\n NsdVersion,\n LoadNsdocEvent,\n newLoadNsdocEvent\n} from '@openscd/core/foundation/deprecated/settings.js';\nimport { Languages, languages, loader } from '../translations/loader.js';\n\nimport '../WizardDivider.js';\nimport { WizardDialog } from '../wizard-dialog.js';\n\nimport {\n iec6185072,\n iec6185073,\n iec6185074,\n iec6185081,\n} from '../foundation/nsd.js';\nimport { initializeNsdoc, Nsdoc } from '../foundation/nsdoc.js';\n\ninterface LanguageConfig {\n loader(lang: string): Promise<Strings>;\n languages: Languages;\n}\n\nexport const defaults: Settings = {\n language: 'en',\n theme: 'light',\n mode: 'safe',\n showieds: 'off',\n 'IEC 61850-7-2': undefined,\n 'IEC 61850-7-3': undefined,\n 'IEC 61850-7-4': undefined,\n 'IEC 61850-8-1': undefined,\n};\n\n@customElement('oscd-settings')\nexport class OscdSettings extends LitElement {\n /** Current [[`Settings`]] in `localStorage`, default to [[`defaults`]]. */\n @property()\n get settings(): Settings {\n return {\n language: this.getSetting('language'),\n theme: this.getSetting('theme'),\n mode: this.getSetting('mode'),\n showieds: this.getSetting('showieds'),\n 'IEC 61850-7-2': this.getSetting('IEC 61850-7-2'),\n 'IEC 61850-7-3': this.getSetting('IEC 61850-7-3'),\n 'IEC 61850-7-4': this.getSetting('IEC 61850-7-4'),\n 'IEC 61850-8-1': this.getSetting('IEC 61850-8-1'),\n };\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 @property({\n type: Object,\n })\n host!: HTMLElement;\n\n @property({ type: Boolean })\n nsdUploadButton = true;\n\n @property({ type: Object })\n languageConfig: LanguageConfig = { languages, loader };\n\n /**\n * Get the versions of the current OpenSCD NSD files.\n * @returns Current version, revision and release for all current OpenSCD NSD files.\n */\n private async nsdVersions(): Promise<NsdVersions> {\n const [nsd72, nsd73, nsd74, nsd81] = await Promise.all([\n iec6185072,\n iec6185073,\n iec6185074,\n iec6185081,\n ]);\n const [nsd72Ns, nsd73Ns, nsd74Ns, nsd81Ns] = [\n nsd72.querySelector('NS'),\n nsd73.querySelector('NS'),\n nsd74.querySelector('NS'),\n nsd81.querySelector('ServiceNS'),\n ];\n\n return {\n 'IEC 61850-7-2': {\n version: nsd72Ns?.getAttribute('version') ?? undefined,\n revision: nsd72Ns?.getAttribute('revision') ?? undefined,\n release: nsd72Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-7-3': {\n version: nsd73Ns?.getAttribute('version') ?? undefined,\n revision: nsd73Ns?.getAttribute('revision') ?? undefined,\n release: nsd73Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-7-4': {\n version: nsd74Ns?.getAttribute('version') ?? undefined,\n revision: nsd74Ns?.getAttribute('revision') ?? undefined,\n release: nsd74Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-8-1': {\n version: nsd81Ns?.getAttribute('version') ?? undefined,\n revision: nsd81Ns?.getAttribute('revision') ?? undefined,\n release: nsd81Ns?.getAttribute('release') ?? undefined,\n },\n };\n }\n\n @query('#settings')\n settingsUI!: Dialog;\n @query('#language')\n languageUI!: Select;\n @query('#dark')\n darkThemeUI!: Switch;\n @query('#mode')\n modeUI!: Switch;\n @query('#showieds')\n showiedsUI!: Switch;\n\n @query('#nsdoc-file')\n private nsdocFileUI!: HTMLInputElement;\n\n private getSetting<T extends keyof Settings>(setting: T): Settings[T] {\n return (\n <Settings[T] | null>localStorage.getItem(setting) ?? defaults[setting]\n );\n }\n\n /** Update the `value` of `setting`, storing to `localStorage`. */\n setSetting<T extends keyof Settings>(setting: T, value: Settings[T]): void {\n localStorage.setItem(setting, <string>(<unknown>value));\n this.shadowRoot\n ?.querySelector<WizardDialog>('wizard-dialog')\n ?.requestUpdate();\n this.requestUpdate();\n }\n\n /** Remove the `setting` in `localStorage`. */\n removeSetting<T extends keyof Settings>(setting: T): void {\n localStorage.removeItem(setting);\n this.shadowRoot\n ?.querySelector<WizardDialog>('wizard-dialog')\n ?.requestUpdate();\n this.requestUpdate();\n\n this.nsdoc = initializeNsdoc(); // update nsdoc\n }\n\n private onClosing(ae: CustomEvent<{ action: string } | null>): void {\n if (ae.detail?.action === 'reset') {\n Object.keys(this.settings).forEach(item => localStorage.removeItem(item));\n this.requestUpdate('settings');\n } else if (ae.detail?.action === 'save') {\n this.setSetting('language', <Language>this.languageUI.value);\n this.setSetting('theme', this.darkThemeUI.checked ? 'dark' : 'light');\n this.setSetting('mode', this.modeUI.checked ? 'pro' : 'safe');\n this.setSetting('showieds', this.showiedsUI.checked ? 'on' : 'off');\n this.requestUpdate('settings');\n }\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has('settings')) use(this.settings.language);\n }\n\n private renderFileSelect(): TemplateResult {\n return html`\n <input\n id=\"nsdoc-file\"\n accept=\".nsdoc\"\n type=\"file\"\n hidden\n required\n multiple\n @change=\"${(evt: Event) => this.uploadNsdocFile(evt)}}\"\n />\n <mwc-button\n label=\"${translate('settings.selectFileButton')}\"\n id=\"selectFileButton\"\n @click=${() => {\n const input = <HTMLInputElement | null>(\n this.shadowRoot!.querySelector('#nsdoc-file')\n );\n input?.click();\n }}\n >\n </mwc-button>\n `;\n }\n\n private async uploadNsdocFile(evt: Event): Promise<void> {\n const files = Array.from(\n (<HTMLInputElement | null>evt.target)?.files ?? []\n );\n\n if (files.length == 0) return;\n for (const file of files) {\n const text = await file.text();\n this.dispatchEvent(newLoadNsdocEvent(text, file.name));\n }\n\n this.nsdocFileUI.value = '';\n this.requestUpdate();\n }\n\n private async onLoadNsdoc(event: LoadNsdocEvent) {\n const nsdocElement = this.parseToXmlObject(\n event.detail.nsdoc\n ).querySelector('NSDoc');\n\n const id = nsdocElement?.getAttribute('id');\n if (!id) {\n this.dispatchEvent(\n newLogEvent({\n kind: 'error',\n title: get('settings.invalidFileNoIdFound', {\n filename: event.detail.filename,\n }),\n })\n );\n return;\n }\n\n const nsdVersions = await this.nsdVersions();\n const nsdVersion = nsdVersions[id as keyof NsdVersions];\n const nsdocVersion = {\n version: nsdocElement!.getAttribute('version') ?? '',\n revision: nsdocElement!.getAttribute('revision') ?? '',\n release: nsdocElement!.getAttribute('release') ?? '',\n };\n\n if (!this.isEqual(nsdVersion, nsdocVersion)) {\n this.dispatchEvent(\n newLogEvent({\n kind: 'warning',\n title: get('settings.invalidNsdocVersion', {\n id: id,\n filename: event.detail.filename,\n nsdVersion: `${nsdVersion.version}${nsdVersion.revision}${nsdVersion.release}`,\n nsdocVersion: `${nsdocVersion.version}${nsdocVersion.revision}${nsdocVersion.release}`,\n }),\n })\n );\n }\n\n this.setSetting(id as keyof Settings, event.detail.nsdoc);\n this.nsdoc = initializeNsdoc(); // update nsdoc\n }\n\n /**\n * Check the equality of two NsdVersions.\n * @param versionA - First version to compare.\n * @param versionB - Second version to compare.\n * @returns Are they equal or not.\n */\n private isEqual(versionA: NsdVersion, versionB: NsdVersion): boolean {\n return (\n versionA.version == versionB.version &&\n versionA.revision == versionB.revision &&\n versionA.release == versionB.release\n );\n }\n\n /**\n * Render one .nsdoc item in the Settings wizard\n * @param key - The key of the nsdoc file in the settings.\n * @returns a .nsdoc item for the Settings wizard\n */\n private renderNsdocItem<T extends keyof Settings>(key: T): TemplateResult {\n const nsdSetting = this.settings[key];\n let nsdVersion: string | undefined | null;\n let nsdRevision: string | undefined | null;\n let nsdRelease: string | undefined | null;\n\n if (nsdSetting) {\n const nsdoc = this.parseToXmlObject(nsdSetting)!.querySelector('NSDoc');\n nsdVersion = nsdoc?.getAttribute('version');\n nsdRevision = nsdoc?.getAttribute('revision');\n nsdRelease = nsdoc?.getAttribute('release');\n }\n\n return html`<mwc-list-item\n id=${key}\n graphic=\"avatar\"\n hasMeta\n twoline\n .disabled=${!nsdSetting}\n >\n <span>${key}</span>\n ${nsdSetting\n ? html`<span slot=\"secondary\"\n >${nsdVersion}${nsdRevision}${nsdRelease}</span\n >`\n : html``}\n ${nsdSetting\n ? html`<mwc-icon slot=\"graphic\" style=\"color:green;\">done</mwc-icon>`\n : html`<mwc-icon slot=\"graphic\" style=\"color:red;\">close</mwc-icon>`}\n ${nsdSetting\n ? html`<mwc-icon\n id=\"deleteNsdocItem\"\n slot=\"meta\"\n @click=${() => {\n this.removeSetting(key);\n }}\n >delete</mwc-icon\n >`\n : html``}\n </mwc-list-item>`;\n }\n\n private parseToXmlObject(text: string): XMLDocument {\n return new DOMParser().parseFromString(text, 'application/xml');\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n registerTranslateConfig({ loader: this.languageConfig.loader, empty: key => key });\n use(this.settings.language);\n\n if (this.host) {\n this.host!.addEventListener('oscd-settings', (evt: SettingsUIEvent) => {\n evt.detail.show ? this.settingsUI.show() : this.settingsUI.close();\n });\n (<any>this.host).addEventListener('load-nsdoc', (evt: LoadNsdocEvent) =>\n this.onLoadNsdoc(evt)\n );\n }\n }\n\n render(): TemplateResult {\n return html`<mwc-dialog\n id=\"settings\"\n heading=\"${translate('settings.title')}\"\n @closing=${this.onClosing}\n >\n <form>\n <mwc-select\n fixedMenuPosition\n id=\"language\"\n icon=\"language\"\n label=\"${translate('settings.language')}\"\n >\n ${Object.keys(this.languageConfig.languages).map(\n lang =>\n html`<mwc-list-item\n graphic=\"icon\"\n value=\"${lang}\"\n ?selected=${lang === this.settings.language}\n >${translate(`settings.languages.${lang}`)}</mwc-list-item\n >`\n )}\n </mwc-select>\n <mwc-formfield label=\"${translate('settings.dark')}\">\n <mwc-switch\n id=\"dark\"\n ?checked=${this.settings.theme === 'dark'}\n ></mwc-switch>\n </mwc-formfield>\n <mwc-formfield label=\"${translate('settings.mode')}\">\n <mwc-switch\n id=\"mode\"\n ?checked=${this.settings.mode === 'pro'}\n ></mwc-switch>\n </mwc-formfield>\n <mwc-formfield label=\"${translate('settings.showieds')}\">\n <mwc-switch\n id=\"showieds\"\n ?checked=${this.settings.showieds === 'on'}\n ></mwc-switch>\n </mwc-formfield>\n </form>\n <wizard-divider></wizard-divider>\n ${this.nsdUploadButton\n ? html`<section id=\"shownsdbutton\">\n <h3>${translate('settings.loadNsdTranslations')}</h3>\n ${this.renderFileSelect()}\n </section>`\n : html``}\n <mwc-list id=\"nsdocList\">\n ${this.renderNsdocItem('IEC 61850-7-2')}\n ${this.renderNsdocItem('IEC 61850-7-3')}\n ${this.renderNsdocItem('IEC 61850-7-4')}\n ${this.renderNsdocItem('IEC 61850-8-1')}\n </mwc-list>\n <mwc-button slot=\"secondaryAction\" dialogAction=\"close\">\n ${translate('cancel')}\n </mwc-button>\n <mwc-button\n style=\"--mdc-theme-primary: var(--mdc-theme-error)\"\n slot=\"secondaryAction\"\n dialogAction=\"reset\"\n >\n ${translate('reset')}\n </mwc-button>\n <mwc-button\n icon=\"save\"\n trailingIcon\n slot=\"primaryAction\"\n dialogAction=\"save\"\n >\n ${translate('save')}\n </mwc-button>\n </mwc-dialog>\n <slot></slot>\n ${getTheme(this.settings.theme)}`;\n }\n\n static styles = css`\n mwc-top-app-bar-fixed {\n --mdc-theme-text-disabled-on-light: rgba(255, 255, 255, 0.38);\n } /* hack to fix disabled icon buttons rendering black */\n\n mwc-tab {\n background-color: var(--primary);\n --mdc-theme-primary: var(--mdc-theme-on-primary);\n }\n\n input[type='file'] {\n display: none;\n }\n\n mwc-dialog {\n --mdc-dialog-max-width: 98vw;\n }\n\n mwc-dialog > form {\n display: flex;\n flex-direction: column;\n }\n\n mwc-dialog > form > * {\n display: block;\n margin-top: 16px;\n }\n\n mwc-linear-progress {\n position: fixed;\n --mdc-linear-progress-buffer-color: var(--primary);\n --mdc-theme-primary: var(--secondary);\n left: 0px;\n top: 0px;\n width: 100%;\n pointer-events: none;\n z-index: 1000;\n }\n\n tt {\n font-family: 'Roboto Mono', monospace;\n font-weight: 300;\n }\n\n .landing {\n position: absolute;\n text-align: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n\n .landing_icon:hover {\n box-shadow: 0 12px 17px 2px rgba(0, 0, 0, 0.14),\n 0 5px 22px 4px rgba(0, 0, 0, 0.12), 0 7px 8px -4px rgba(0, 0, 0, 0.2);\n }\n\n .landing_icon {\n margin: 12px;\n border-radius: 16px;\n width: 160px;\n height: 140px;\n text-align: center;\n color: var(--mdc-theme-on-secondary);\n background: var(--secondary);\n --mdc-icon-button-size: 100px;\n --mdc-icon-size: 100px;\n --mdc-ripple-color: rgba(0, 0, 0, 0);\n box-shadow: rgb(0 0 0 / 14%) 0px 6px 10px 0px,\n rgb(0 0 0 / 12%) 0px 1px 18px 0px, rgb(0 0 0 / 20%) 0px 3px 5px -1px;\n transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .landing_label {\n width: 160px;\n height: 50px;\n margin-top: 100px;\n margin-left: -30px;\n font-family: 'Roboto', sans-serif;\n }\n\n .plugin.menu {\n display: flex;\n }\n\n .plugin.validator {\n display: flex;\n }\n `;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/addons/Settings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n property,\n query,\n TemplateResult,\n customElement,\n LitElement,\n css,\n} from 'lit-element';\nimport { get, translate, registerTranslateConfig, Strings, use } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-formfield';\nimport '@material/mwc-list/mwc-list-item';\nimport '@material/mwc-select';\nimport '@material/mwc-switch';\n\nimport { Dialog } from '@material/mwc-dialog';\nimport { Select } from '@material/mwc-select';\nimport { Switch } from '@material/mwc-switch';\n\nimport { getTheme } from '../themes.js';\n\nimport { newLogEvent } from '@openscd/core/foundation/deprecated/history';\nimport { \n Settings, \n SettingsUIEvent, \n Language,\n NsdVersions,\n NsdVersion,\n LoadNsdocEvent,\n newLoadNsdocEvent\n} from '@openscd/core/foundation/deprecated/settings';\nimport { Languages, languages, loader } from '../translations/loader.js';\n\nimport '../WizardDivider.js';\nimport { WizardDialog } from '../wizard-dialog.js';\n\nimport {\n iec6185072,\n iec6185073,\n iec6185074,\n iec6185081,\n} from '../foundation/nsd.js';\nimport { initializeNsdoc, Nsdoc } from '../foundation/nsdoc.js';\n\ninterface LanguageConfig {\n loader(lang: string): Promise<Strings>;\n languages: Languages;\n}\n\nexport const defaults: Settings = {\n language: 'en',\n theme: 'light',\n mode: 'safe',\n showieds: 'off',\n 'IEC 61850-7-2': undefined,\n 'IEC 61850-7-3': undefined,\n 'IEC 61850-7-4': undefined,\n 'IEC 61850-8-1': undefined,\n};\n\n@customElement('oscd-settings')\nexport class OscdSettings extends LitElement {\n /** Current [[`Settings`]] in `localStorage`, default to [[`defaults`]]. */\n @property()\n get settings(): Settings {\n return {\n language: this.getSetting('language'),\n theme: this.getSetting('theme'),\n mode: this.getSetting('mode'),\n showieds: this.getSetting('showieds'),\n 'IEC 61850-7-2': this.getSetting('IEC 61850-7-2'),\n 'IEC 61850-7-3': this.getSetting('IEC 61850-7-3'),\n 'IEC 61850-7-4': this.getSetting('IEC 61850-7-4'),\n 'IEC 61850-8-1': this.getSetting('IEC 61850-8-1'),\n };\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 @property({\n type: Object,\n })\n host!: HTMLElement;\n\n @property({ type: Boolean })\n nsdUploadButton = true;\n\n @property({ type: Object })\n languageConfig: LanguageConfig = { languages, loader };\n\n /**\n * Get the versions of the current OpenSCD NSD files.\n * @returns Current version, revision and release for all current OpenSCD NSD files.\n */\n private async nsdVersions(): Promise<NsdVersions> {\n const [nsd72, nsd73, nsd74, nsd81] = await Promise.all([\n iec6185072,\n iec6185073,\n iec6185074,\n iec6185081,\n ]);\n const [nsd72Ns, nsd73Ns, nsd74Ns, nsd81Ns] = [\n nsd72.querySelector('NS'),\n nsd73.querySelector('NS'),\n nsd74.querySelector('NS'),\n nsd81.querySelector('ServiceNS'),\n ];\n\n return {\n 'IEC 61850-7-2': {\n version: nsd72Ns?.getAttribute('version') ?? undefined,\n revision: nsd72Ns?.getAttribute('revision') ?? undefined,\n release: nsd72Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-7-3': {\n version: nsd73Ns?.getAttribute('version') ?? undefined,\n revision: nsd73Ns?.getAttribute('revision') ?? undefined,\n release: nsd73Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-7-4': {\n version: nsd74Ns?.getAttribute('version') ?? undefined,\n revision: nsd74Ns?.getAttribute('revision') ?? undefined,\n release: nsd74Ns?.getAttribute('release') ?? undefined,\n },\n 'IEC 61850-8-1': {\n version: nsd81Ns?.getAttribute('version') ?? undefined,\n revision: nsd81Ns?.getAttribute('revision') ?? undefined,\n release: nsd81Ns?.getAttribute('release') ?? undefined,\n },\n };\n }\n\n @query('#settings')\n settingsUI!: Dialog;\n @query('#language')\n languageUI!: Select;\n @query('#dark')\n darkThemeUI!: Switch;\n @query('#mode')\n modeUI!: Switch;\n @query('#showieds')\n showiedsUI!: Switch;\n\n @query('#nsdoc-file')\n private nsdocFileUI!: HTMLInputElement;\n\n private getSetting<T extends keyof Settings>(setting: T): Settings[T] {\n return (\n <Settings[T] | null>localStorage.getItem(setting) ?? defaults[setting]\n );\n }\n\n /** Update the `value` of `setting`, storing to `localStorage`. */\n setSetting<T extends keyof Settings>(setting: T, value: Settings[T]): void {\n localStorage.setItem(setting, <string>(<unknown>value));\n this.shadowRoot\n ?.querySelector<WizardDialog>('wizard-dialog')\n ?.requestUpdate();\n this.requestUpdate();\n }\n\n /** Remove the `setting` in `localStorage`. */\n removeSetting<T extends keyof Settings>(setting: T): void {\n localStorage.removeItem(setting);\n this.shadowRoot\n ?.querySelector<WizardDialog>('wizard-dialog')\n ?.requestUpdate();\n this.requestUpdate();\n\n this.nsdoc = initializeNsdoc(); // update nsdoc\n }\n\n private onClosing(ae: CustomEvent<{ action: string } | null>): void {\n if (ae.detail?.action === 'reset') {\n Object.keys(this.settings).forEach(item => localStorage.removeItem(item));\n this.requestUpdate('settings');\n } else if (ae.detail?.action === 'save') {\n this.setSetting('language', <Language>this.languageUI.value);\n this.setSetting('theme', this.darkThemeUI.checked ? 'dark' : 'light');\n this.setSetting('mode', this.modeUI.checked ? 'pro' : 'safe');\n this.setSetting('showieds', this.showiedsUI.checked ? 'on' : 'off');\n this.requestUpdate('settings');\n }\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has('settings')) use(this.settings.language);\n }\n\n private renderFileSelect(): TemplateResult {\n return html`\n <input\n id=\"nsdoc-file\"\n accept=\".nsdoc\"\n type=\"file\"\n hidden\n required\n multiple\n @change=\"${(evt: Event) => this.uploadNsdocFile(evt)}}\"\n />\n <mwc-button\n label=\"${translate('settings.selectFileButton')}\"\n id=\"selectFileButton\"\n @click=${() => {\n const input = <HTMLInputElement | null>(\n this.shadowRoot!.querySelector('#nsdoc-file')\n );\n input?.click();\n }}\n >\n </mwc-button>\n `;\n }\n\n private async uploadNsdocFile(evt: Event): Promise<void> {\n const files = Array.from(\n (<HTMLInputElement | null>evt.target)?.files ?? []\n );\n\n if (files.length == 0) return;\n for (const file of files) {\n const text = await file.text();\n this.dispatchEvent(newLoadNsdocEvent(text, file.name));\n }\n\n this.nsdocFileUI.value = '';\n this.requestUpdate();\n }\n\n private async onLoadNsdoc(event: LoadNsdocEvent) {\n const nsdocElement = this.parseToXmlObject(\n event.detail.nsdoc\n ).querySelector('NSDoc');\n\n const id = nsdocElement?.getAttribute('id');\n if (!id) {\n this.dispatchEvent(\n newLogEvent({\n kind: 'error',\n title: get('settings.invalidFileNoIdFound', {\n filename: event.detail.filename,\n }),\n })\n );\n return;\n }\n\n const nsdVersions = await this.nsdVersions();\n const nsdVersion = nsdVersions[id as keyof NsdVersions];\n const nsdocVersion = {\n version: nsdocElement!.getAttribute('version') ?? '',\n revision: nsdocElement!.getAttribute('revision') ?? '',\n release: nsdocElement!.getAttribute('release') ?? '',\n };\n\n if (!this.isEqual(nsdVersion, nsdocVersion)) {\n this.dispatchEvent(\n newLogEvent({\n kind: 'warning',\n title: get('settings.invalidNsdocVersion', {\n id: id,\n filename: event.detail.filename,\n nsdVersion: `${nsdVersion.version}${nsdVersion.revision}${nsdVersion.release}`,\n nsdocVersion: `${nsdocVersion.version}${nsdocVersion.revision}${nsdocVersion.release}`,\n }),\n })\n );\n }\n\n this.setSetting(id as keyof Settings, event.detail.nsdoc);\n this.nsdoc = initializeNsdoc(); // update nsdoc\n }\n\n /**\n * Check the equality of two NsdVersions.\n * @param versionA - First version to compare.\n * @param versionB - Second version to compare.\n * @returns Are they equal or not.\n */\n private isEqual(versionA: NsdVersion, versionB: NsdVersion): boolean {\n return (\n versionA.version == versionB.version &&\n versionA.revision == versionB.revision &&\n versionA.release == versionB.release\n );\n }\n\n /**\n * Render one .nsdoc item in the Settings wizard\n * @param key - The key of the nsdoc file in the settings.\n * @returns a .nsdoc item for the Settings wizard\n */\n private renderNsdocItem<T extends keyof Settings>(key: T): TemplateResult {\n const nsdSetting = this.settings[key];\n let nsdVersion: string | undefined | null;\n let nsdRevision: string | undefined | null;\n let nsdRelease: string | undefined | null;\n\n if (nsdSetting) {\n const nsdoc = this.parseToXmlObject(nsdSetting)!.querySelector('NSDoc');\n nsdVersion = nsdoc?.getAttribute('version');\n nsdRevision = nsdoc?.getAttribute('revision');\n nsdRelease = nsdoc?.getAttribute('release');\n }\n\n return html`<mwc-list-item\n id=${key}\n graphic=\"avatar\"\n hasMeta\n twoline\n .disabled=${!nsdSetting}\n >\n <span>${key}</span>\n ${nsdSetting\n ? html`<span slot=\"secondary\"\n >${nsdVersion}${nsdRevision}${nsdRelease}</span\n >`\n : html``}\n ${nsdSetting\n ? html`<mwc-icon slot=\"graphic\" style=\"color:green;\">done</mwc-icon>`\n : html`<mwc-icon slot=\"graphic\" style=\"color:red;\">close</mwc-icon>`}\n ${nsdSetting\n ? html`<mwc-icon\n id=\"deleteNsdocItem\"\n slot=\"meta\"\n @click=${() => {\n this.removeSetting(key);\n }}\n >delete</mwc-icon\n >`\n : html``}\n </mwc-list-item>`;\n }\n\n private parseToXmlObject(text: string): XMLDocument {\n return new DOMParser().parseFromString(text, 'application/xml');\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n registerTranslateConfig({ loader: this.languageConfig.loader, empty: key => key });\n use(this.settings.language);\n\n if (this.host) {\n this.host!.addEventListener('oscd-settings', (evt: SettingsUIEvent) => {\n evt.detail.show ? this.settingsUI.show() : this.settingsUI.close();\n });\n (<any>this.host).addEventListener('load-nsdoc', (evt: LoadNsdocEvent) =>\n this.onLoadNsdoc(evt)\n );\n }\n }\n\n render(): TemplateResult {\n return html`<mwc-dialog\n id=\"settings\"\n heading=\"${translate('settings.title')}\"\n @closing=${this.onClosing}\n >\n <form>\n <mwc-select\n fixedMenuPosition\n id=\"language\"\n icon=\"language\"\n label=\"${translate('settings.language')}\"\n >\n ${Object.keys(this.languageConfig.languages).map(\n lang =>\n html`<mwc-list-item\n graphic=\"icon\"\n value=\"${lang}\"\n ?selected=${lang === this.settings.language}\n >${translate(`settings.languages.${lang}`)}</mwc-list-item\n >`\n )}\n </mwc-select>\n <mwc-formfield label=\"${translate('settings.dark')}\">\n <mwc-switch\n id=\"dark\"\n ?checked=${this.settings.theme === 'dark'}\n ></mwc-switch>\n </mwc-formfield>\n <mwc-formfield label=\"${translate('settings.mode')}\">\n <mwc-switch\n id=\"mode\"\n ?checked=${this.settings.mode === 'pro'}\n ></mwc-switch>\n </mwc-formfield>\n <mwc-formfield label=\"${translate('settings.showieds')}\">\n <mwc-switch\n id=\"showieds\"\n ?checked=${this.settings.showieds === 'on'}\n ></mwc-switch>\n </mwc-formfield>\n </form>\n <wizard-divider></wizard-divider>\n ${this.nsdUploadButton\n ? html`<section id=\"shownsdbutton\">\n <h3>${translate('settings.loadNsdTranslations')}</h3>\n ${this.renderFileSelect()}\n </section>`\n : html``}\n <mwc-list id=\"nsdocList\">\n ${this.renderNsdocItem('IEC 61850-7-2')}\n ${this.renderNsdocItem('IEC 61850-7-3')}\n ${this.renderNsdocItem('IEC 61850-7-4')}\n ${this.renderNsdocItem('IEC 61850-8-1')}\n </mwc-list>\n <mwc-button slot=\"secondaryAction\" dialogAction=\"close\">\n ${translate('cancel')}\n </mwc-button>\n <mwc-button\n style=\"--mdc-theme-primary: var(--mdc-theme-error)\"\n slot=\"secondaryAction\"\n dialogAction=\"reset\"\n >\n ${translate('reset')}\n </mwc-button>\n <mwc-button\n icon=\"save\"\n trailingIcon\n slot=\"primaryAction\"\n dialogAction=\"save\"\n >\n ${translate('save')}\n </mwc-button>\n </mwc-dialog>\n <slot></slot>\n ${getTheme(this.settings.theme)}`;\n }\n\n static styles = css`\n mwc-top-app-bar-fixed {\n --mdc-theme-text-disabled-on-light: rgba(255, 255, 255, 0.38);\n } /* hack to fix disabled icon buttons rendering black */\n\n mwc-tab {\n background-color: var(--primary);\n --mdc-theme-primary: var(--mdc-theme-on-primary);\n }\n\n input[type='file'] {\n display: none;\n }\n\n mwc-dialog {\n --mdc-dialog-max-width: 98vw;\n }\n\n mwc-dialog > form {\n display: flex;\n flex-direction: column;\n }\n\n mwc-dialog > form > * {\n display: block;\n margin-top: 16px;\n }\n\n mwc-linear-progress {\n position: fixed;\n --mdc-linear-progress-buffer-color: var(--primary);\n --mdc-theme-primary: var(--secondary);\n left: 0px;\n top: 0px;\n width: 100%;\n pointer-events: none;\n z-index: 1000;\n }\n\n tt {\n font-family: 'Roboto Mono', monospace;\n font-weight: 300;\n }\n\n .landing {\n position: absolute;\n text-align: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n\n .landing_icon:hover {\n box-shadow: 0 12px 17px 2px rgba(0, 0, 0, 0.14),\n 0 5px 22px 4px rgba(0, 0, 0, 0.12), 0 7px 8px -4px rgba(0, 0, 0, 0.2);\n }\n\n .landing_icon {\n margin: 12px;\n border-radius: 16px;\n width: 160px;\n height: 140px;\n text-align: center;\n color: var(--mdc-theme-on-secondary);\n background: var(--secondary);\n --mdc-icon-button-size: 100px;\n --mdc-icon-size: 100px;\n --mdc-ripple-color: rgba(0, 0, 0, 0);\n box-shadow: rgb(0 0 0 / 14%) 0px 6px 10px 0px,\n rgb(0 0 0 / 12%) 0px 1px 18px 0px, rgb(0 0 0 / 20%) 0px 3px 5px -1px;\n transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .landing_label {\n width: 160px;\n height: 50px;\n margin-top: 100px;\n margin-left: -30px;\n font-family: 'Roboto', sans-serif;\n }\n\n .plugin.menu {\n display: flex;\n }\n\n .plugin.validator {\n display: flex;\n }\n `;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Waiter.js","sourceRoot":"","sources":["../../src/addons/Waiter.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,UAAU,EACV,QAAQ,GAET,MAAM,aAAa,CAAC;AAErB,OAAO,+BAA+B,CAAC;AAKhC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAShC,KAAK,CAAC,cAAc,CAAC,CAAkC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAlBV,oEAAoE;QAEpE,YAAO,GAAG,KAAK,CAAC;QAER,SAAI,GAAuB,IAAI,GAAG,EAAE,CAAC;QAC7C,wEAAwE;QACxE,aAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAavC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;kBAEG,CAAC,IAAI,CAAC,OAAO;;8BAED,CAAC;IAC7B,CAAC;CACF,CAAA;AArCC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2CACZ;AAHL,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAwCtB;SAxCY,UAAU","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from 'lit-element';\n\nimport '@material/mwc-linear-progress';\n\nimport { PendingStateDetail } from '@openscd/core/foundation/deprecated/waiter
|
|
1
|
+
{"version":3,"file":"Waiter.js","sourceRoot":"","sources":["../../src/addons/Waiter.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,UAAU,EACV,QAAQ,GAET,MAAM,aAAa,CAAC;AAErB,OAAO,+BAA+B,CAAC;AAKhC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAShC,KAAK,CAAC,cAAc,CAAC,CAAkC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAlBV,oEAAoE;QAEpE,YAAO,GAAG,KAAK,CAAC;QAER,SAAI,GAAuB,IAAI,GAAG,EAAE,CAAC;QAC7C,wEAAwE;QACxE,aAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAavC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;kBAEG,CAAC,IAAI,CAAC,OAAO;;8BAED,CAAC;IAC7B,CAAC;CACF,CAAA;AArCC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2CACZ;AAHL,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAwCtB;SAxCY,UAAU","sourcesContent":["import {\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from 'lit-element';\n\nimport '@material/mwc-linear-progress';\n\nimport { PendingStateDetail } from '@openscd/core/foundation/deprecated/waiter';\n\n@customElement('oscd-waiter')\nexport class OscdWaiter extends LitElement {\n /** Whether the element is currently waiting for some async work. */\n @property({ type: Boolean })\n waiting = false;\n\n private work: Set<Promise<void>> = new Set();\n /** A promise which resolves once all currently pending work is done. */\n workDone = Promise.allSettled(this.work);\n\n private async onPendingState(e: CustomEvent<PendingStateDetail>) {\n this.waiting = true;\n this.work.add(e.detail.promise);\n this.workDone = Promise.allSettled(this.work);\n await e.detail.promise.catch(reason => console.warn(reason));\n this.work.delete(e.detail.promise);\n this.waiting = this.work.size > 0;\n }\n\n constructor() {\n super();\n this.onPendingState = this.onPendingState.bind(this);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('pending-state', this.onPendingState);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('pending-state', this.onPendingState);\n }\n\n render(): TemplateResult {\n return html`<slot></slot>\n <mwc-linear-progress\n .closed=${!this.waiting}\n indeterminate\n ></mwc-linear-progress>`;\n }\n}\n"]}
|
package/dist/foundation/ied.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ied.d.ts","sourceRoot":"","sources":["../../src/foundation/ied.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"ied.d.ts","sourceRoot":"","sources":["../../src/foundation/ied.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAcpE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,+BAA+B,EAAE,OAAO,GACvC,MAAM,CAUR;AAOD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAQ5D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,mBAAmB,EAAE,MAAM,EAAE,GAC5B,MAAM,EAAE,CA4CV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ied.js","sourceRoot":"","sources":["../../src/foundation/ied.ts"],"names":[],"mappings":"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","sourcesContent":["import { find, identity } from '../foundation.js';\nimport { Delete } from '@openscd/core/foundation/deprecated/editor
|
|
1
|
+
{"version":3,"file":"ied.js","sourceRoot":"","sources":["../../src/foundation/ied.ts"],"names":[],"mappings":"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","sourcesContent":["import { find, identity } from '../foundation.js';\nimport { Delete } from '@openscd/core/foundation/deprecated/editor';\n\n/**\n * All available FCDA references that are used to link ExtRefs.\n */\nconst fcdaReferences = [\n 'ldInst',\n 'lnClass',\n 'lnInst',\n 'prefix',\n 'doName',\n 'daName',\n];\n\n/**\n * Get all the FCDA attributes containing values from a specific element.\n *\n * @param elementContainingFcdaReferences - The element to use\n * @returns FCDA references\n */\nexport function getFcdaReferences(\n elementContainingFcdaReferences: Element\n): string {\n return fcdaReferences\n .map(fcdaRef =>\n elementContainingFcdaReferences.getAttribute(fcdaRef)\n ? `[${fcdaRef}=\"${elementContainingFcdaReferences.getAttribute(\n fcdaRef\n )}\"]`\n : ''\n )\n .join('');\n}\n\n/**\n * All available Control references that are used to link ExtRefs.\n */\nconst controlReferences = ['srcLDInst', 'srcLNClass', 'srcLNInst', 'srcCBName'];\n\n/**\n * Get all the Control attributes containing values from a specific element.\n *\n * @param extRef - The element to use\n * @returns Control references\n */\nexport function getControlReferences(extRef: Element): string {\n return controlReferences\n .map(controlRef =>\n extRef.getAttribute(controlRef)\n ? `[${controlRef}=\"${extRef.getAttribute(controlRef)}\"]`\n : ''\n )\n .join('');\n}\n\n/**\n * Creating Delete actions in case Inputs elements are empty.\n *\n * @param extRefDeleteActions - All Delete actions for ExtRefs.\n * @returns Possible delete actions for empty Inputs elements.\n */\nexport function emptyInputsDeleteActions(\n extRefDeleteActions: Delete[]\n): Delete[] {\n if (!extRefDeleteActions.length) return [];\n\n const inputDeleteActions: Delete[] = [];\n const inputsMap: Record<string, Element> = {};\n\n for (const extRefDeleteAction of extRefDeleteActions) {\n const extRef = <Element>extRefDeleteAction.old.element;\n const inputsElement = <Element>extRefDeleteAction.old.parent;\n\n const id = identity(inputsElement);\n if (!inputsMap[id]) inputsMap[id] = <Element>inputsElement.cloneNode(true);\n\n // Search the ExtRef in the Cloned Inputs Element\n const linkedExtRef = inputsMap[id].querySelector(\n `ExtRef${\n extRef.getAttribute('iedName')\n ? `[iedName=\"${extRef.getAttribute('iedName')}\"]`\n : ''\n }${getFcdaReferences(extRef)}${\n extRef.getAttribute('serviceType')\n ? `[serviceType=\"${extRef.getAttribute('serviceType')}\"]`\n : ''\n }${getControlReferences(extRef)}`\n );\n // And if found remove it as child from the Cloned Inputs Element\n if (linkedExtRef) inputsMap[id].removeChild(linkedExtRef);\n }\n\n // Create delete action for each empty inputs\n Object.entries(inputsMap).forEach(([key, value]) => {\n if (value.children.length! == 0) {\n const doc = extRefDeleteActions[0].old.parent.ownerDocument!;\n const inputs = find(doc, 'Inputs', key);\n\n if (inputs && inputs.parentElement) {\n inputDeleteActions.push({\n old: { parent: inputs.parentElement, element: inputs },\n });\n }\n }\n });\n\n return inputDeleteActions;\n}\n"]}
|
package/dist/open-scd.js
CHANGED
|
@@ -18,8 +18,8 @@ import '@material/mwc-list/mwc-radio-list-item';
|
|
|
18
18
|
import '@material/mwc-select';
|
|
19
19
|
import '@material/mwc-switch';
|
|
20
20
|
import '@material/mwc-textfield';
|
|
21
|
-
import { newOpenDocEvent } from '@openscd/core/foundation/deprecated/open-event
|
|
22
|
-
import { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter
|
|
21
|
+
import { newOpenDocEvent } from '@openscd/core/foundation/deprecated/open-event';
|
|
22
|
+
import { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter';
|
|
23
23
|
import './addons/Settings.js';
|
|
24
24
|
import './addons/Waiter.js';
|
|
25
25
|
import './addons/Wizards.js';
|
package/dist/open-scd.js.map
CHANGED
|
@@ -1 +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"]}
|
|
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';\nimport { newPendingStateEvent } from '@openscd/core/foundation/deprecated/waiter';\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"]}
|
package/dist/themes.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { TemplateResult } from 'lit-element';
|
|
2
|
-
import { Settings } from '@openscd/core/foundation/deprecated/settings
|
|
2
|
+
import { Settings } from '@openscd/core/foundation/deprecated/settings';
|
|
3
3
|
export declare function getTheme(theme: Settings['theme']): TemplateResult;
|
|
4
4
|
//# sourceMappingURL=themes.d.ts.map
|
package/dist/themes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAExE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,cAAc,CAqEjE"}
|
package/dist/themes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAGnD,MAAM,UAAU,QAAQ,CAAC,KAAwB;IAC/C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,IAAI,CAAA;MACP,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEhB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAsC;IACpD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;CAC7B,CAAC;AAEF,MAAM,MAAM,GAA8C;IACxD,KAAK,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;GAqBV;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;GAqBT;CACF,CAAC","sourcesContent":["import { html, TemplateResult } from 'lit-element';\nimport { Settings } from '@openscd/core/foundation/deprecated/settings
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAGnD,MAAM,UAAU,QAAQ,CAAC,KAAwB;IAC/C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,IAAI,CAAA;MACP,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEhB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAsC;IACpD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;CAC7B,CAAC;AAEF,MAAM,MAAM,GAA8C;IACxD,KAAK,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;GAqBV;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;GAqBT;CACF,CAAC","sourcesContent":["import { html, TemplateResult } from 'lit-element';\nimport { Settings } from '@openscd/core/foundation/deprecated/settings';\n\nexport function getTheme(theme: Settings['theme']): TemplateResult {\n document.body.style.cssText = bodyStyles[theme];\n return html`\n ${themes[theme]}\n <style>\n * {\n --primary: var(--cyan);\n --secondary: var(--violet);\n --mdc-theme-primary: var(--primary);\n --mdc-theme-secondary: var(--secondary);\n --mdc-theme-background: var(--base3);\n --mdc-theme-surface: var(--base3);\n --mdc-theme-on-primary: var(--base2);\n --mdc-theme-on-secondary: var(--base2);\n --mdc-theme-on-background: var(--base00);\n --mdc-theme-on-surface: var(--base00);\n --mdc-theme-text-primary-on-background: var(--base01);\n --mdc-theme-text-secondary-on-background: var(--base00);\n --mdc-theme-text-icon-on-background: var(--base00);\n --mdc-theme-error: var(--red);\n\n --mdc-button-disabled-ink-color: var(--base1);\n\n --mdc-drawer-heading-ink-color: var(--base00);\n\n --mdc-text-field-fill-color: var(--base2);\n --mdc-text-field-disabled-fill-color: var(--base3);\n --mdc-text-field-ink-color: var(--base00);\n --mdc-text-field-label-ink-color: var(--base00);\n\n --mdc-select-fill-color: var(--base2);\n --mdc-select-disabled-fill-color: var(--base3);\n --mdc-select-ink-color: var(--base00);\n\n --mdc-dialog-heading-ink-color: var(--base00);\n\n --mdc-icon-font: 'Material Icons Outlined';\n\n --oscd-primary: var(--oscd-theme-primary, var(--cyan));\n --oscd-secondary: var(--oscd-theme-secondary, var(--violet));\n --oscd-error: var(--oscd-theme-error, var(--red));\n\n --oscd-base03: var(--oscd-theme-base03, var(--base03));\n --oscd-base02: var(--oscd-theme-base02, var(--base02));\n --oscd-base01: var(--oscd-theme-base01, var(--base01));\n --oscd-base00: var(--oscd-theme-base00, var(--base00));\n --oscd-base0: var(--oscd-theme-base0, var(--base0));\n --oscd-base1: var(--oscd-theme-base1, var(--base1));\n --oscd-base2: var(--oscd-theme-base2, var(--base2));\n --oscd-base3: var(--oscd-theme-base3, var(--base3));\n\n --oscd-text-font: var(--oscd-theme-text-font, 'Roboto');\n --oscd-icon-font: var(--oscd-theme-icon-font, 'Material Icons');\n }\n\n .mdc-drawer span.mdc-drawer__title {\n color: var(--mdc-theme-text-primary-on-background) !important;\n }\n\n abbr {\n text-decoration: none;\n border-bottom: none;\n }\n\n mwc-textfield[iconTrailing='search'] {\n --mdc-shape-small: 28px;\n }\n </style>\n `;\n}\n\nconst bodyStyles: Record<Settings['theme'], string> = {\n dark: 'background: #073642',\n light: 'background: #eee8d5',\n};\n\nconst themes: Record<Settings['theme'], TemplateResult> = {\n light: html`\n <style>\n * {\n --base03: #002b36;\n --base02: #073642;\n --base01: #586e75;\n --base00: #657b83;\n --base0: #839496;\n --base1: #93a1a1;\n --base2: #eee8d5;\n --base3: #fdf6e3;\n --yellow: #b58900;\n --orange: #cb4b16;\n --red: #dc322f;\n --magenta: #d33682;\n --violet: #6c71c4;\n --blue: #268bd2;\n --cyan: #2aa198;\n --green: #859900;\n }\n </style>\n `,\n dark: html`\n <style>\n * {\n --base03: #fdf6e3;\n --base02: #eee8d5;\n --base01: #93a1a1;\n --base00: #839496;\n --base0: #657b83;\n --base1: #586e75;\n --base2: #073642;\n --base3: #002b36;\n --yellow: #b58900;\n --orange: #cb4b16;\n --red: #dc322f;\n --magenta: #d33682;\n --violet: #6c71c4;\n --blue: #268bd2;\n --cyan: #2aa198;\n --green: #859900;\n }\n </style>\n `,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/translations/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAY7B,MAAM,CAAC,MAAM,SAAS,GAAc,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAI/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAW,IAAI,CAAC,CAAC;;QACvE,OAAO,EAAE,CAAC;AACjB,CAAC","sourcesContent":["import { Strings } from 'lit-translate';\nimport { de } from './de.js';\nimport { en } from './en.js';\nimport { Language } from '@openscd/core/foundation/deprecated/settings
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/translations/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAY7B,MAAM,CAAC,MAAM,SAAS,GAAc,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAI/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAW,IAAI,CAAC,CAAC;;QACvE,OAAO,EAAE,CAAC;AACjB,CAAC","sourcesContent":["import { Strings } from 'lit-translate';\nimport { de } from './de.js';\nimport { en } from './en.js';\nimport { Language } from '@openscd/core/foundation/deprecated/settings';\n\nexport interface TranslationObject {\n [key: string]: string | TranslationObject;\n}\n\nexport interface Languages {\n de: TranslationObject;\n en: TranslationObject;\n}\n\nexport const languages: Languages = { en, de };\n\nexport type Translations = typeof en;\n\nexport async function loader(lang: string): Promise<Strings> {\n if (Object.keys(languages).includes(lang)) return languages[<Language>lang];\n else return {};\n}\n"]}
|
package/dist/wizard-dialog.js
CHANGED
|
@@ -13,7 +13,7 @@ import 'ace-custom-element';
|
|
|
13
13
|
import './wizard-checkbox.js';
|
|
14
14
|
import './wizard-textfield.js';
|
|
15
15
|
import './wizard-select.js';
|
|
16
|
-
import { newActionEvent, } from '@openscd/core/foundation/deprecated/editor
|
|
16
|
+
import { newActionEvent, } from '@openscd/core/foundation/deprecated/editor';
|
|
17
17
|
import { newWizardEvent, wizardInputSelector, isWizardFactory, checkValidity, reportValidity, identity, } from './foundation.js';
|
|
18
18
|
function renderWizardInput(input) {
|
|
19
19
|
if (input instanceof TemplateResult)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-dialog.js","sourceRoot":"","sources":["../src/wizard-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n customElement,\n css,\n queryAll,\n LitElement,\n property,\n state,\n TemplateResult,\n html,\n query,\n} from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-icon-button-toggle';\nimport '@material/mwc-menu';\nimport { Dialog } from '@material/mwc-dialog';\nimport { IconButton } from '@material/mwc-icon-button';\nimport { List } from '@material/mwc-list';\nimport { Menu } from '@material/mwc-menu';\n\nimport { formatXml } from '@openscd/xml';\n\nimport 'ace-custom-element';\nimport './wizard-checkbox.js';\nimport './wizard-textfield.js';\nimport './wizard-select.js';\n\nimport {\n newActionEvent,\n Delete,\n Create,\n} from '@openscd/core/foundation/deprecated/editor.js';\nimport {\n Wizard,\n WizardInputElement,\n WizardPage,\n newWizardEvent,\n WizardActor,\n wizardInputSelector,\n isWizardFactory,\n checkValidity,\n reportValidity,\n identity,\n WizardInput,\n WizardMenuActor,\n} from './foundation.js';\n\nfunction renderWizardInput(\n input: TemplateResult | WizardInput\n): TemplateResult {\n if (input instanceof TemplateResult) return input;\n\n if (input.kind === 'Checkbox')\n return html`<wizard-checkbox\n ?nullable=${input.nullable}\n ?defaultChecked=${input.default}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n helper=\"${ifDefined(input.helper)}\"\n .maybeValue=${input.maybeValue}\n ></wizard-checkbox>`;\n\n if (input.kind === 'Select')\n return html`<wizard-select\n ?nullable=${input.nullable}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n helper=\"${ifDefined(input.helper)}\"\n defaultValue=\"${ifDefined(input.default)}\"\n validationMessage=\"${ifDefined(input.valadationMessage)}\"\n .maybeValue=${input.maybeValue}\n >${input.values.map(\n value => html`<mwc-list-item value=\"${value}\">${value}</mwc-list-item>`\n )}</wizard-select\n >`;\n\n return html`<wizard-textfield\n ?nullable=${input.nullable}\n ?required=${input.required}\n ?disabled=${input.disabled}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n defaultValue=\"${ifDefined(input.default)}\"\n helper=\"${ifDefined(input.helper)}\"\n validationMessage=\"${ifDefined(input.helper)}\"\n unit=\"${ifDefined(input.unit)}\"\n .multipliers=${input.multipliers ?? []}\n .multiplier=${input.multiplier ?? null}\n suffix=\"${ifDefined(input.suffix)}\"\n .maybeValue=${input.maybeValue}\n pattern=\"${ifDefined(input.pattern)}\"\n minLength=\"${ifDefined(input.minLength)}\"\n maxLength=\"${ifDefined(input.maxLength)}\"\n type=\"${ifDefined(input.type)}\"\n min=\"${ifDefined(input.min)}\"\n max=\"${ifDefined(input.max)}\"\n ></wizard-textfield>`;\n}\n\nfunction dialogInputs(dialog?: Dialog): WizardInputElement[] {\n return Array.from(dialog?.querySelectorAll(wizardInputSelector) ?? []);\n}\n\nfunction dialogValid(dialog?: Dialog): boolean {\n return dialogInputs(dialog).every(checkValidity);\n}\n\nfunction codeAction(element: Element): WizardActor {\n return inputs => {\n const text = inputs[0].value!;\n if (!text || !element.parentElement) return [];\n const desc = {\n parent: element.parentElement!,\n reference: element.nextSibling,\n element,\n };\n const del: Delete = {\n old: desc,\n checkValidity: () => true,\n };\n const cre: Create = {\n new: {\n ...desc,\n element: new DOMParser().parseFromString(text, 'application/xml')\n .documentElement,\n },\n checkValidity: () => true,\n };\n return [\n {\n actions: [del, cre],\n title: get('code.log', {\n id: identity(element),\n }),\n },\n ];\n };\n}\n\n/** A wizard style dialog consisting of several pages commiting some\n * [[`EditorAction`]] on completion and aborting on dismissal. */\n@customElement('wizard-dialog')\nexport class WizardDialog extends LitElement {\n /** The [[`Wizard`]] implemented by this dialog. */\n @property({ type: Array })\n wizard: Wizard = [];\n /** Index of the currently active [[`WizardPage`]] */\n @state()\n pageIndex = 0;\n\n @queryAll('mwc-dialog') dialogs!: NodeListOf<Dialog>;\n @queryAll(wizardInputSelector) inputs!: NodeListOf<WizardInputElement>;\n @query('.actions-menu') actionsMenu!: Menu;\n @query('mwc-icon-button[icon=\"more_vert\"]') menuButton!: IconButton;\n\n /** The `Dialog` showing the active [[`WizardPage`]]. */\n get dialog(): Dialog | undefined {\n return this.dialogs[this.pageIndex];\n }\n\n get code(): boolean {\n return (\n (this.dialog?.querySelector('mwc-icon-button-toggle')?.on ?? false) &&\n localStorage.getItem('mode') === 'pro'\n );\n }\n\n /** Checks the inputs of all [[`WizardPage`]]s for validity. */\n checkValidity(): boolean {\n return Array.from(this.inputs).every(checkValidity);\n }\n\n private get firstInvalidPage(): number {\n return Array.from(this.dialogs).findIndex(dialog => !dialogValid(dialog));\n }\n\n prev(): void {\n if (this.pageIndex <= 0) return;\n this.pageIndex--;\n this.dialog?.show();\n }\n\n async next(): Promise<void> {\n if (dialogValid(this.dialog)) {\n if (this.wizard.length > this.pageIndex + 1) this.pageIndex++;\n this.dialog?.show();\n } else {\n this.dialog?.show();\n await this.dialog?.updateComplete;\n dialogInputs(this.dialog).map(reportValidity);\n }\n }\n\n /** Commits `action` if all inputs are valid, reports validity otherwise. */\n async act(action?: WizardActor, primary = true): Promise<boolean> {\n if (action === undefined) return false;\n const wizardInputs = Array.from(this.inputs);\n const wizardList = <List | null>(\n this.dialog?.querySelector('filtered-list,mwc-list')\n );\n if (!this.checkValidity()) {\n this.pageIndex = this.firstInvalidPage;\n wizardInputs.map(reportValidity);\n return false;\n }\n\n const wizardActions = action(wizardInputs, this, wizardList);\n if (wizardActions.length > 0) {\n if (primary) this.wizard[this.pageIndex].primary = undefined;\n else this.wizard[this.pageIndex].secondary = undefined;\n this.dispatchEvent(newWizardEvent());\n }\n wizardActions.forEach(wa =>\n isWizardFactory(wa)\n ? this.dispatchEvent(newWizardEvent(wa))\n : this.dispatchEvent(newActionEvent(wa))\n );\n return true;\n }\n\n /** Triggers menu action callback */\n async menuAct(action?: WizardMenuActor): Promise<void> {\n if (!action) return;\n\n action(this);\n }\n\n private onClosed(ae: CustomEvent<{ action: string } | null>): void {\n if (!(ae.target instanceof Dialog && ae.detail?.action)) return;\n if (ae.detail.action === 'close') this.dispatchEvent(newWizardEvent());\n else if (ae.detail.action === 'prev') this.prev();\n else if (ae.detail.action === 'next') this.next();\n }\n\n constructor() {\n super();\n\n this.act = this.act.bind(this);\n this.renderPage = this.renderPage.bind(this);\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has('wizard')) {\n this.pageIndex = 0;\n while (\n this.wizard.findIndex(page => page.initial) > this.pageIndex &&\n dialogValid(this.dialog)\n ) {\n this.dialog?.close();\n this.next();\n }\n this.dialog?.show();\n }\n if (this.wizard[this.pageIndex]?.primary?.auto) {\n this.updateComplete.then(() =>\n this.act(this.wizard[this.pageIndex].primary!.action)\n );\n }\n\n if (this.actionsMenu)\n this.actionsMenu.anchor = <HTMLElement>this.menuButton;\n }\n\n renderMenu(page: WizardPage): TemplateResult {\n const someIconsDefined = page.menuActions?.some(\n menuAction => menuAction.icon\n );\n\n return html` <mwc-icon-button\n icon=\"more_vert\"\n @click=${() => {\n if (!this.actionsMenu.open) this.actionsMenu.show();\n else this.actionsMenu.close();\n }}\n ></mwc-icon-button>\n <mwc-menu class=\"actions-menu\" corner=\"BOTTOM_RIGHT\" menuCorner=\"END\">\n ${page.menuActions!.map(\n menuAction =>\n html`<mwc-list-item\n .graphic=${someIconsDefined ? 'icon' : null}\n @click=${() => this.menuAct(menuAction.action)}\n >\n <span>${menuAction.label}</span>\n ${menuAction.icon\n ? html`<mwc-icon slot=\"graphic\">${menuAction.icon}</mwc-icon>`\n : html``}\n </mwc-list-item>`\n )}\n </mwc-menu>`;\n }\n\n renderPage(page: WizardPage, index: number): TemplateResult {\n const isProMode = localStorage.getItem('mode') === 'pro';\n const hasPageElement = Boolean(page.element);\n const showCodeToggleButton = hasPageElement && isProMode\n\n let extraWidth = 0;\n\n if(showCodeToggleButton && page.menuActions){\n extraWidth = 96;\n }else if(showCodeToggleButton || page.menuActions){\n extraWidth = 48;\n }else{\n extraWidth = 0;\n }\n\n\n return html`<mwc-dialog\n defaultAction=\"next\"\n heading=${page.title}\n @closed=${this.onClosed}\n style=\"--mdc-dialog-min-width:calc(100% + ${extraWidth}px)\"\n >\n ${showCodeToggleButton || page.menuActions\n ? html`<nav>\n ${showCodeToggleButton\n ? html`<mwc-icon-button-toggle\n onicon=\"code\"\n officon=\"code_off\"\n @click=${() => this.requestUpdate()}\n ></mwc-icon-button-toggle>`\n : ''}\n ${page.menuActions ? this.renderMenu(page) : ''}\n </nav>`\n : ''}\n <div id=\"wizard-content\">\n ${this.code && page.element\n ? html`<ace-editor\n base-path=\"/public/ace\"\n wrap\n soft-tabs\n style=\"width: 80vw; height: calc(100vh - 240px);\"\n theme=\"ace/theme/solarized_${localStorage.getItem('theme')}\"\n mode=\"ace/mode/xml\"\n value=\"${formatXml(\n new XMLSerializer().serializeToString(page.element)\n )}\"\n ></ace-editor>`\n : page.content?.map(renderWizardInput)}\n </div>\n ${index > 0\n ? html`<mwc-button\n slot=\"secondaryAction\"\n dialogAction=\"prev\"\n icon=\"navigate_before\"\n label=${this.wizard?.[index - 1].title}\n ></mwc-button>`\n : html``}\n ${page.secondary\n ? html`<mwc-button\n slot=\"secondaryAction\"\n @click=${() => this.act(page.secondary?.action, false)}\n icon=\"${page.secondary.icon}\"\n label=\"${page.secondary.label}\"\n ></mwc-button>`\n : html`<mwc-button\n slot=\"secondaryAction\"\n dialogAction=\"close\"\n label=\"${get('close')}\"\n style=\"--mdc-theme-primary: var(--mdc-theme-error)\"\n ></mwc-button>`}\n ${this.code && page.element\n ? html`<mwc-button\n slot=\"primaryAction\"\n @click=${() => this.act(codeAction(page.element!))}\n icon=\"code\"\n label=\"${get('save')}\"\n trailingIcon\n ></mwc-button>`\n : page.primary\n ? html`<mwc-button\n slot=\"primaryAction\"\n @click=${() => this.act(page.primary?.action)}\n icon=\"${page.primary.icon}\"\n label=\"${page.primary.label}\"\n trailingIcon\n ></mwc-button>`\n : index + 1 < (this.wizard?.length ?? 0)\n ? html`<mwc-button\n slot=\"primaryAction\"\n dialogAction=\"next\"\n icon=\"navigate_next\"\n label=${this.wizard?.[index + 1].title}\n trailingicon\n ></mwc-button>`\n : html``}\n </mwc-dialog>`;\n }\n\n render(): TemplateResult {\n return html`${this.wizard.map(this.renderPage)}`;\n }\n\n static styles = css`\n mwc-dialog {\n --mdc-dialog-max-width: 92vw;\n }\n\n mwc-dialog > nav {\n position: absolute;\n top: 8px;\n right: 14px;\n color: var(--base00);\n }\n\n mwc-dialog > nav > mwc-icon-button-toggle[on] {\n color: var(--mdc-theme-primary);\n }\n\n #wizard-content {\n display: flex;\n flex-direction: column;\n }\n\n #wizard-content > * {\n display: block;\n margin-top: 16px;\n }\n\n *[iconTrailing='search'] {\n --mdc-shape-small: 28px;\n }\n `;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"wizard-dialog.js","sourceRoot":"","sources":["../src/wizard-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n customElement,\n css,\n queryAll,\n LitElement,\n property,\n state,\n TemplateResult,\n html,\n query,\n} from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { get } from 'lit-translate';\n\nimport '@material/mwc-button';\nimport '@material/mwc-dialog';\nimport '@material/mwc-icon-button';\nimport '@material/mwc-icon-button-toggle';\nimport '@material/mwc-menu';\nimport { Dialog } from '@material/mwc-dialog';\nimport { IconButton } from '@material/mwc-icon-button';\nimport { List } from '@material/mwc-list';\nimport { Menu } from '@material/mwc-menu';\n\nimport { formatXml } from '@openscd/xml';\n\nimport 'ace-custom-element';\nimport './wizard-checkbox.js';\nimport './wizard-textfield.js';\nimport './wizard-select.js';\n\nimport {\n newActionEvent,\n Delete,\n Create,\n} from '@openscd/core/foundation/deprecated/editor';\nimport {\n Wizard,\n WizardInputElement,\n WizardPage,\n newWizardEvent,\n WizardActor,\n wizardInputSelector,\n isWizardFactory,\n checkValidity,\n reportValidity,\n identity,\n WizardInput,\n WizardMenuActor,\n} from './foundation.js';\n\nfunction renderWizardInput(\n input: TemplateResult | WizardInput\n): TemplateResult {\n if (input instanceof TemplateResult) return input;\n\n if (input.kind === 'Checkbox')\n return html`<wizard-checkbox\n ?nullable=${input.nullable}\n ?defaultChecked=${input.default}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n helper=\"${ifDefined(input.helper)}\"\n .maybeValue=${input.maybeValue}\n ></wizard-checkbox>`;\n\n if (input.kind === 'Select')\n return html`<wizard-select\n ?nullable=${input.nullable}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n helper=\"${ifDefined(input.helper)}\"\n defaultValue=\"${ifDefined(input.default)}\"\n validationMessage=\"${ifDefined(input.valadationMessage)}\"\n .maybeValue=${input.maybeValue}\n >${input.values.map(\n value => html`<mwc-list-item value=\"${value}\">${value}</mwc-list-item>`\n )}</wizard-select\n >`;\n\n return html`<wizard-textfield\n ?nullable=${input.nullable}\n ?required=${input.required}\n ?disabled=${input.disabled}\n ?dialogInitialFocus=${input.dialogInitialFocus}\n label=\"${input.label}\"\n defaultValue=\"${ifDefined(input.default)}\"\n helper=\"${ifDefined(input.helper)}\"\n validationMessage=\"${ifDefined(input.helper)}\"\n unit=\"${ifDefined(input.unit)}\"\n .multipliers=${input.multipliers ?? []}\n .multiplier=${input.multiplier ?? null}\n suffix=\"${ifDefined(input.suffix)}\"\n .maybeValue=${input.maybeValue}\n pattern=\"${ifDefined(input.pattern)}\"\n minLength=\"${ifDefined(input.minLength)}\"\n maxLength=\"${ifDefined(input.maxLength)}\"\n type=\"${ifDefined(input.type)}\"\n min=\"${ifDefined(input.min)}\"\n max=\"${ifDefined(input.max)}\"\n ></wizard-textfield>`;\n}\n\nfunction dialogInputs(dialog?: Dialog): WizardInputElement[] {\n return Array.from(dialog?.querySelectorAll(wizardInputSelector) ?? []);\n}\n\nfunction dialogValid(dialog?: Dialog): boolean {\n return dialogInputs(dialog).every(checkValidity);\n}\n\nfunction codeAction(element: Element): WizardActor {\n return inputs => {\n const text = inputs[0].value!;\n if (!text || !element.parentElement) return [];\n const desc = {\n parent: element.parentElement!,\n reference: element.nextSibling,\n element,\n };\n const del: Delete = {\n old: desc,\n checkValidity: () => true,\n };\n const cre: Create = {\n new: {\n ...desc,\n element: new DOMParser().parseFromString(text, 'application/xml')\n .documentElement,\n },\n checkValidity: () => true,\n };\n return [\n {\n actions: [del, cre],\n title: get('code.log', {\n id: identity(element),\n }),\n },\n ];\n };\n}\n\n/** A wizard style dialog consisting of several pages commiting some\n * [[`EditorAction`]] on completion and aborting on dismissal. */\n@customElement('wizard-dialog')\nexport class WizardDialog extends LitElement {\n /** The [[`Wizard`]] implemented by this dialog. */\n @property({ type: Array })\n wizard: Wizard = [];\n /** Index of the currently active [[`WizardPage`]] */\n @state()\n pageIndex = 0;\n\n @queryAll('mwc-dialog') dialogs!: NodeListOf<Dialog>;\n @queryAll(wizardInputSelector) inputs!: NodeListOf<WizardInputElement>;\n @query('.actions-menu') actionsMenu!: Menu;\n @query('mwc-icon-button[icon=\"more_vert\"]') menuButton!: IconButton;\n\n /** The `Dialog` showing the active [[`WizardPage`]]. */\n get dialog(): Dialog | undefined {\n return this.dialogs[this.pageIndex];\n }\n\n get code(): boolean {\n return (\n (this.dialog?.querySelector('mwc-icon-button-toggle')?.on ?? false) &&\n localStorage.getItem('mode') === 'pro'\n );\n }\n\n /** Checks the inputs of all [[`WizardPage`]]s for validity. */\n checkValidity(): boolean {\n return Array.from(this.inputs).every(checkValidity);\n }\n\n private get firstInvalidPage(): number {\n return Array.from(this.dialogs).findIndex(dialog => !dialogValid(dialog));\n }\n\n prev(): void {\n if (this.pageIndex <= 0) return;\n this.pageIndex--;\n this.dialog?.show();\n }\n\n async next(): Promise<void> {\n if (dialogValid(this.dialog)) {\n if (this.wizard.length > this.pageIndex + 1) this.pageIndex++;\n this.dialog?.show();\n } else {\n this.dialog?.show();\n await this.dialog?.updateComplete;\n dialogInputs(this.dialog).map(reportValidity);\n }\n }\n\n /** Commits `action` if all inputs are valid, reports validity otherwise. */\n async act(action?: WizardActor, primary = true): Promise<boolean> {\n if (action === undefined) return false;\n const wizardInputs = Array.from(this.inputs);\n const wizardList = <List | null>(\n this.dialog?.querySelector('filtered-list,mwc-list')\n );\n if (!this.checkValidity()) {\n this.pageIndex = this.firstInvalidPage;\n wizardInputs.map(reportValidity);\n return false;\n }\n\n const wizardActions = action(wizardInputs, this, wizardList);\n if (wizardActions.length > 0) {\n if (primary) this.wizard[this.pageIndex].primary = undefined;\n else this.wizard[this.pageIndex].secondary = undefined;\n this.dispatchEvent(newWizardEvent());\n }\n wizardActions.forEach(wa =>\n isWizardFactory(wa)\n ? this.dispatchEvent(newWizardEvent(wa))\n : this.dispatchEvent(newActionEvent(wa))\n );\n return true;\n }\n\n /** Triggers menu action callback */\n async menuAct(action?: WizardMenuActor): Promise<void> {\n if (!action) return;\n\n action(this);\n }\n\n private onClosed(ae: CustomEvent<{ action: string } | null>): void {\n if (!(ae.target instanceof Dialog && ae.detail?.action)) return;\n if (ae.detail.action === 'close') this.dispatchEvent(newWizardEvent());\n else if (ae.detail.action === 'prev') this.prev();\n else if (ae.detail.action === 'next') this.next();\n }\n\n constructor() {\n super();\n\n this.act = this.act.bind(this);\n this.renderPage = this.renderPage.bind(this);\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has('wizard')) {\n this.pageIndex = 0;\n while (\n this.wizard.findIndex(page => page.initial) > this.pageIndex &&\n dialogValid(this.dialog)\n ) {\n this.dialog?.close();\n this.next();\n }\n this.dialog?.show();\n }\n if (this.wizard[this.pageIndex]?.primary?.auto) {\n this.updateComplete.then(() =>\n this.act(this.wizard[this.pageIndex].primary!.action)\n );\n }\n\n if (this.actionsMenu)\n this.actionsMenu.anchor = <HTMLElement>this.menuButton;\n }\n\n renderMenu(page: WizardPage): TemplateResult {\n const someIconsDefined = page.menuActions?.some(\n menuAction => menuAction.icon\n );\n\n return html` <mwc-icon-button\n icon=\"more_vert\"\n @click=${() => {\n if (!this.actionsMenu.open) this.actionsMenu.show();\n else this.actionsMenu.close();\n }}\n ></mwc-icon-button>\n <mwc-menu class=\"actions-menu\" corner=\"BOTTOM_RIGHT\" menuCorner=\"END\">\n ${page.menuActions!.map(\n menuAction =>\n html`<mwc-list-item\n .graphic=${someIconsDefined ? 'icon' : null}\n @click=${() => this.menuAct(menuAction.action)}\n >\n <span>${menuAction.label}</span>\n ${menuAction.icon\n ? html`<mwc-icon slot=\"graphic\">${menuAction.icon}</mwc-icon>`\n : html``}\n </mwc-list-item>`\n )}\n </mwc-menu>`;\n }\n\n renderPage(page: WizardPage, index: number): TemplateResult {\n const isProMode = localStorage.getItem('mode') === 'pro';\n const hasPageElement = Boolean(page.element);\n const showCodeToggleButton = hasPageElement && isProMode\n\n let extraWidth = 0;\n\n if(showCodeToggleButton && page.menuActions){\n extraWidth = 96;\n }else if(showCodeToggleButton || page.menuActions){\n extraWidth = 48;\n }else{\n extraWidth = 0;\n }\n\n\n return html`<mwc-dialog\n defaultAction=\"next\"\n heading=${page.title}\n @closed=${this.onClosed}\n style=\"--mdc-dialog-min-width:calc(100% + ${extraWidth}px)\"\n >\n ${showCodeToggleButton || page.menuActions\n ? html`<nav>\n ${showCodeToggleButton\n ? html`<mwc-icon-button-toggle\n onicon=\"code\"\n officon=\"code_off\"\n @click=${() => this.requestUpdate()}\n ></mwc-icon-button-toggle>`\n : ''}\n ${page.menuActions ? this.renderMenu(page) : ''}\n </nav>`\n : ''}\n <div id=\"wizard-content\">\n ${this.code && page.element\n ? html`<ace-editor\n base-path=\"/public/ace\"\n wrap\n soft-tabs\n style=\"width: 80vw; height: calc(100vh - 240px);\"\n theme=\"ace/theme/solarized_${localStorage.getItem('theme')}\"\n mode=\"ace/mode/xml\"\n value=\"${formatXml(\n new XMLSerializer().serializeToString(page.element)\n )}\"\n ></ace-editor>`\n : page.content?.map(renderWizardInput)}\n </div>\n ${index > 0\n ? html`<mwc-button\n slot=\"secondaryAction\"\n dialogAction=\"prev\"\n icon=\"navigate_before\"\n label=${this.wizard?.[index - 1].title}\n ></mwc-button>`\n : html``}\n ${page.secondary\n ? html`<mwc-button\n slot=\"secondaryAction\"\n @click=${() => this.act(page.secondary?.action, false)}\n icon=\"${page.secondary.icon}\"\n label=\"${page.secondary.label}\"\n ></mwc-button>`\n : html`<mwc-button\n slot=\"secondaryAction\"\n dialogAction=\"close\"\n label=\"${get('close')}\"\n style=\"--mdc-theme-primary: var(--mdc-theme-error)\"\n ></mwc-button>`}\n ${this.code && page.element\n ? html`<mwc-button\n slot=\"primaryAction\"\n @click=${() => this.act(codeAction(page.element!))}\n icon=\"code\"\n label=\"${get('save')}\"\n trailingIcon\n ></mwc-button>`\n : page.primary\n ? html`<mwc-button\n slot=\"primaryAction\"\n @click=${() => this.act(page.primary?.action)}\n icon=\"${page.primary.icon}\"\n label=\"${page.primary.label}\"\n trailingIcon\n ></mwc-button>`\n : index + 1 < (this.wizard?.length ?? 0)\n ? html`<mwc-button\n slot=\"primaryAction\"\n dialogAction=\"next\"\n icon=\"navigate_next\"\n label=${this.wizard?.[index + 1].title}\n trailingicon\n ></mwc-button>`\n : html``}\n </mwc-dialog>`;\n }\n\n render(): TemplateResult {\n return html`${this.wizard.map(this.renderPage)}`;\n }\n\n static styles = css`\n mwc-dialog {\n --mdc-dialog-max-width: 92vw;\n }\n\n mwc-dialog > nav {\n position: absolute;\n top: 8px;\n right: 14px;\n color: var(--base00);\n }\n\n mwc-dialog > nav > mwc-icon-button-toggle[on] {\n color: var(--mdc-theme-primary);\n }\n\n #wizard-content {\n display: flex;\n flex-direction: column;\n }\n\n #wizard-content > * {\n display: block;\n margin-top: 16px;\n }\n\n *[iconTrailing='search'] {\n --mdc-shape-small: 28px;\n }\n `;\n}\n"]}
|