@compas-oscd/open-scd 0.34.13 → 0.34.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/addons/Editor.d.ts +2 -2
  2. package/dist/addons/Editor.js +4 -4
  3. package/dist/addons/Editor.js.map +1 -1
  4. package/dist/addons/History.d.ts +2 -2
  5. package/dist/addons/History.js.map +1 -1
  6. package/dist/addons/Layout.d.ts +1 -1
  7. package/dist/addons/Layout.js +2 -2
  8. package/dist/addons/Layout.js.map +1 -1
  9. package/dist/addons/Settings.d.ts +1 -1
  10. package/dist/addons/Settings.js +2 -2
  11. package/dist/addons/Settings.js.map +1 -1
  12. package/dist/addons/Waiter.js.map +1 -1
  13. package/dist/addons/editor/edit-action-to-v1-converter.d.ts +2 -2
  14. package/dist/addons/editor/edit-action-to-v1-converter.js +1 -1
  15. package/dist/addons/editor/edit-action-to-v1-converter.js.map +1 -1
  16. package/dist/addons/editor/edit-v1-to-v2-converter.d.ts +1 -1
  17. package/dist/addons/editor/edit-v1-to-v2-converter.js +1 -1
  18. package/dist/addons/editor/edit-v1-to-v2-converter.js.map +1 -1
  19. package/dist/addons/history/get-log-text.d.ts +1 -1
  20. package/dist/addons/history/get-log-text.js +1 -1
  21. package/dist/addons/history/get-log-text.js.map +1 -1
  22. package/dist/foundation/ied.d.ts +1 -1
  23. package/dist/foundation/ied.js.map +1 -1
  24. package/dist/foundation.d.ts +1 -1
  25. package/dist/foundation.js.map +1 -1
  26. package/dist/open-scd.d.ts +2 -2
  27. package/dist/open-scd.js +4 -4
  28. package/dist/open-scd.js.map +1 -1
  29. package/dist/plugin.d.ts +1 -1
  30. package/dist/plugin.js.map +1 -1
  31. package/dist/themes.d.ts +1 -1
  32. package/dist/themes.js.map +1 -1
  33. package/dist/translations/loader.js.map +1 -1
  34. package/dist/wizard-dialog.js +1 -1
  35. package/dist/wizard-dialog.js.map +1 -1
  36. package/dist/wizards.js.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/src/WizardDivider.d.ts +0 -8
  39. package/dist/src/WizardDivider.js +0 -37
  40. package/dist/src/WizardDivider.js.map +0 -1
  41. package/dist/src/Wizarding.d.ts +0 -10
  42. package/dist/src/Wizarding.js +0 -38
  43. package/dist/src/Wizarding.js.map +0 -1
  44. package/dist/src/action-icon.d.ts +0 -25
  45. package/dist/src/action-icon.js +0 -220
  46. package/dist/src/action-icon.js.map +0 -1
  47. package/dist/src/action-pane.d.ts +0 -25
  48. package/dist/src/action-pane.js +0 -176
  49. package/dist/src/action-pane.js.map +0 -1
  50. package/dist/src/addons/Editor.d.ts +0 -25
  51. package/dist/src/addons/Editor.js +0 -106
  52. package/dist/src/addons/Editor.js.map +0 -1
  53. package/dist/src/addons/History.d.ts +0 -93
  54. package/dist/src/addons/History.js +0 -491
  55. package/dist/src/addons/History.js.map +0 -1
  56. package/dist/src/addons/Layout.d.ts +0 -96
  57. package/dist/src/addons/Layout.js +0 -619
  58. package/dist/src/addons/Layout.js.map +0 -1
  59. package/dist/src/addons/Settings.d.ts +0 -68
  60. package/dist/src/addons/Settings.js +0 -465
  61. package/dist/src/addons/Settings.js.map +0 -1
  62. package/dist/src/addons/Waiter.d.ts +0 -14
  63. package/dist/src/addons/Waiter.js +0 -45
  64. package/dist/src/addons/Waiter.js.map +0 -1
  65. package/dist/src/addons/Wizards.d.ts +0 -15
  66. package/dist/src/addons/Wizards.js +0 -48
  67. package/dist/src/addons/Wizards.js.map +0 -1
  68. package/dist/src/addons/editor/edit-action-to-v1-converter.d.ts +0 -3
  69. package/dist/src/addons/editor/edit-action-to-v1-converter.js +0 -96
  70. package/dist/src/addons/editor/edit-action-to-v1-converter.js.map +0 -1
  71. package/dist/src/addons/editor/edit-v1-to-v2-converter.d.ts +0 -2
  72. package/dist/src/addons/editor/edit-v1-to-v2-converter.js +0 -37
  73. package/dist/src/addons/editor/edit-v1-to-v2-converter.js.map +0 -1
  74. package/dist/src/addons/history/get-log-text.d.ts +0 -5
  75. package/dist/src/addons/history/get-log-text.js +0 -26
  76. package/dist/src/addons/history/get-log-text.js.map +0 -1
  77. package/dist/src/addons/menu-tabs/menu-tabs.d.ts +0 -22
  78. package/dist/src/addons/menu-tabs/menu-tabs.js +0 -74
  79. package/dist/src/addons/menu-tabs/menu-tabs.js.map +0 -1
  80. package/dist/src/addons/plugin-manager/custom-plugin-dialog.d.ts +0 -28
  81. package/dist/src/addons/plugin-manager/custom-plugin-dialog.js +0 -177
  82. package/dist/src/addons/plugin-manager/custom-plugin-dialog.js.map +0 -1
  83. package/dist/src/addons/plugin-manager/plugin-manager.d.ts +0 -20
  84. package/dist/src/addons/plugin-manager/plugin-manager.js +0 -165
  85. package/dist/src/addons/plugin-manager/plugin-manager.js.map +0 -1
  86. package/dist/src/filtered-list.d.ts +0 -27
  87. package/dist/src/filtered-list.js +0 -168
  88. package/dist/src/filtered-list.js.map +0 -1
  89. package/dist/src/finder-list.d.ts +0 -37
  90. package/dist/src/finder-list.js +0 -207
  91. package/dist/src/finder-list.js.map +0 -1
  92. package/dist/src/foundation/compare.d.ts +0 -79
  93. package/dist/src/foundation/compare.js +0 -273
  94. package/dist/src/foundation/compare.js.map +0 -1
  95. package/dist/src/foundation/dai.d.ts +0 -30
  96. package/dist/src/foundation/dai.js +0 -127
  97. package/dist/src/foundation/dai.js.map +0 -1
  98. package/dist/src/foundation/generators.d.ts +0 -13
  99. package/dist/src/foundation/generators.js +0 -67
  100. package/dist/src/foundation/generators.js.map +0 -1
  101. package/dist/src/foundation/ied.d.ts +0 -22
  102. package/dist/src/foundation/ied.js +0 -84
  103. package/dist/src/foundation/ied.js.map +0 -1
  104. package/dist/src/foundation/nsd.d.ts +0 -4
  105. package/dist/src/foundation/nsd.js +0 -13
  106. package/dist/src/foundation/nsd.js.map +0 -1
  107. package/dist/src/foundation/nsdoc.d.ts +0 -14
  108. package/dist/src/foundation/nsdoc.js +0 -180
  109. package/dist/src/foundation/nsdoc.js.map +0 -1
  110. package/dist/src/foundation/scl.d.ts +0 -1
  111. package/dist/src/foundation/scl.js +0 -64
  112. package/dist/src/foundation/scl.js.map +0 -1
  113. package/dist/src/foundation.d.ts +0 -230
  114. package/dist/src/foundation.js +0 -1922
  115. package/dist/src/foundation.js.map +0 -1
  116. package/dist/src/icons/compare.d.ts +0 -3
  117. package/dist/src/icons/compare.js +0 -11
  118. package/dist/src/icons/compare.js.map +0 -1
  119. package/dist/src/icons/icons.d.ts +0 -41
  120. package/dist/src/icons/icons.js +0 -611
  121. package/dist/src/icons/icons.js.map +0 -1
  122. package/dist/src/icons/ied-icons.d.ts +0 -3
  123. package/dist/src/icons/ied-icons.js +0 -11
  124. package/dist/src/icons/ied-icons.js.map +0 -1
  125. package/dist/src/icons/lnode.d.ts +0 -16
  126. package/dist/src/icons/lnode.js +0 -50
  127. package/dist/src/icons/lnode.js.map +0 -1
  128. package/dist/src/open-scd.d.ts +0 -131
  129. package/dist/src/open-scd.js +0 -483
  130. package/dist/src/open-scd.js.map +0 -1
  131. package/dist/src/oscd-filter-button.d.ts +0 -27
  132. package/dist/src/oscd-filter-button.js +0 -89
  133. package/dist/src/oscd-filter-button.js.map +0 -1
  134. package/dist/src/plain-compare-list.d.ts +0 -36
  135. package/dist/src/plain-compare-list.js +0 -132
  136. package/dist/src/plain-compare-list.js.map +0 -1
  137. package/dist/src/plugin-tag.d.ts +0 -6
  138. package/dist/src/plugin-tag.js +0 -23
  139. package/dist/src/plugin-tag.js.map +0 -1
  140. package/dist/src/plugin.d.ts +0 -23
  141. package/dist/src/plugin.events.d.ts +0 -15
  142. package/dist/src/plugin.events.js +0 -12
  143. package/dist/src/plugin.events.js.map +0 -1
  144. package/dist/src/plugin.js +0 -2
  145. package/dist/src/plugin.js.map +0 -1
  146. package/dist/src/plugins.d.ts +0 -3
  147. package/dist/src/plugins.js +0 -256
  148. package/dist/src/plugins.js.map +0 -1
  149. package/dist/src/schemas.d.ts +0 -58
  150. package/dist/src/schemas.js +0 -9325
  151. package/dist/src/schemas.js.map +0 -1
  152. package/dist/src/themes.d.ts +0 -3
  153. package/dist/src/themes.js +0 -122
  154. package/dist/src/themes.js.map +0 -1
  155. package/dist/src/translations/de.d.ts +0 -2
  156. package/dist/src/translations/de.js +0 -954
  157. package/dist/src/translations/de.js.map +0 -1
  158. package/dist/src/translations/en.d.ts +0 -963
  159. package/dist/src/translations/en.js +0 -950
  160. package/dist/src/translations/en.js.map +0 -1
  161. package/dist/src/translations/loader.d.ts +0 -12
  162. package/dist/src/translations/loader.js +0 -10
  163. package/dist/src/translations/loader.js.map +0 -1
  164. package/dist/src/wizard-checkbox.d.ts +0 -37
  165. package/dist/src/wizard-checkbox.js +0 -152
  166. package/dist/src/wizard-checkbox.js.map +0 -1
  167. package/dist/src/wizard-dialog.d.ts +0 -45
  168. package/dist/src/wizard-dialog.js +0 -374
  169. package/dist/src/wizard-dialog.js.map +0 -1
  170. package/dist/src/wizard-select.d.ts +0 -31
  171. package/dist/src/wizard-select.js +0 -115
  172. package/dist/src/wizard-select.js.map +0 -1
  173. package/dist/src/wizard-textfield.d.ts +0 -50
  174. package/dist/src/wizard-textfield.js +0 -191
  175. package/dist/src/wizard-textfield.js.map +0 -1
  176. package/dist/src/wizards.d.ts +0 -23
  177. package/dist/src/wizards.js +0 -196
  178. package/dist/src/wizards.js.map +0 -1
@@ -1 +0,0 @@
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.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,68 +0,0 @@
1
- import { TemplateResult, LitElement } from 'lit-element';
2
- import { Strings } from 'lit-translate';
3
- import '@material/mwc-button';
4
- import '@material/mwc-dialog';
5
- import '@material/mwc-formfield';
6
- import '@material/mwc-list/mwc-list-item';
7
- import '@material/mwc-select';
8
- import '@material/mwc-switch';
9
- import { Dialog } from '@material/mwc-dialog';
10
- import { Select } from '@material/mwc-select';
11
- import { Switch } from '@material/mwc-switch';
12
- import { Settings } from '@openscd/core/foundation/deprecated/settings.js';
13
- import { Languages } from '../translations/loader.js';
14
- import '../WizardDivider.js';
15
- import { Nsdoc } from '../foundation/nsdoc.js';
16
- interface LanguageConfig {
17
- loader(lang: string): Promise<Strings>;
18
- languages: Languages;
19
- }
20
- export declare const defaults: Settings;
21
- export declare class OscdSettings extends LitElement {
22
- /** Current [[`Settings`]] in `localStorage`, default to [[`defaults`]]. */
23
- get settings(): Settings;
24
- /** Object containing all *.nsdoc files and a function extracting element's label form them*/
25
- nsdoc: Nsdoc;
26
- host: HTMLElement;
27
- nsdUploadButton: boolean;
28
- languageConfig: LanguageConfig;
29
- /**
30
- * Get the versions of the current OpenSCD NSD files.
31
- * @returns Current version, revision and release for all current OpenSCD NSD files.
32
- */
33
- private nsdVersions;
34
- settingsUI: Dialog;
35
- languageUI: Select;
36
- darkThemeUI: Switch;
37
- modeUI: Switch;
38
- showiedsUI: Switch;
39
- private nsdocFileUI;
40
- private getSetting;
41
- /** Update the `value` of `setting`, storing to `localStorage`. */
42
- setSetting<T extends keyof Settings>(setting: T, value: Settings[T]): void;
43
- /** Remove the `setting` in `localStorage`. */
44
- removeSetting<T extends keyof Settings>(setting: T): void;
45
- private onClosing;
46
- updated(changedProperties: Map<string | number | symbol, unknown>): void;
47
- private renderFileSelect;
48
- private uploadNsdocFile;
49
- private onLoadNsdoc;
50
- /**
51
- * Check the equality of two NsdVersions.
52
- * @param versionA - First version to compare.
53
- * @param versionB - Second version to compare.
54
- * @returns Are they equal or not.
55
- */
56
- private isEqual;
57
- /**
58
- * Render one .nsdoc item in the Settings wizard
59
- * @param key - The key of the nsdoc file in the settings.
60
- * @returns a .nsdoc item for the Settings wizard
61
- */
62
- private renderNsdocItem;
63
- private parseToXmlObject;
64
- connectedCallback(): void;
65
- render(): TemplateResult;
66
- static styles: import("lit-element").CSSResult;
67
- }
68
- export {};
@@ -1,465 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { html, property, query, customElement, LitElement, css, } from 'lit-element';
3
- import { get, translate, registerTranslateConfig, use } from 'lit-translate';
4
- import '@material/mwc-button';
5
- import '@material/mwc-dialog';
6
- import '@material/mwc-formfield';
7
- import '@material/mwc-list/mwc-list-item';
8
- import '@material/mwc-select';
9
- import '@material/mwc-switch';
10
- import { getTheme } from '../themes.js';
11
- import { newLogEvent } from '@openscd/core/foundation/deprecated/history.js';
12
- import { newLoadNsdocEvent } from '@openscd/core/foundation/deprecated/settings.js';
13
- import { languages, loader } from '../translations/loader.js';
14
- import '../WizardDivider.js';
15
- import { iec6185072, iec6185073, iec6185074, iec6185081, } from '../foundation/nsd.js';
16
- import { initializeNsdoc } from '../foundation/nsdoc.js';
17
- export const defaults = {
18
- language: 'en',
19
- theme: 'light',
20
- mode: 'safe',
21
- showieds: 'off',
22
- 'IEC 61850-7-2': undefined,
23
- 'IEC 61850-7-3': undefined,
24
- 'IEC 61850-7-4': undefined,
25
- 'IEC 61850-8-1': undefined,
26
- };
27
- let OscdSettings = class OscdSettings extends LitElement {
28
- constructor() {
29
- super(...arguments);
30
- /** Object containing all *.nsdoc files and a function extracting element's label form them*/
31
- this.nsdoc = initializeNsdoc();
32
- this.nsdUploadButton = true;
33
- this.languageConfig = { languages, loader };
34
- }
35
- /** Current [[`Settings`]] in `localStorage`, default to [[`defaults`]]. */
36
- get settings() {
37
- return {
38
- language: this.getSetting('language'),
39
- theme: this.getSetting('theme'),
40
- mode: this.getSetting('mode'),
41
- showieds: this.getSetting('showieds'),
42
- 'IEC 61850-7-2': this.getSetting('IEC 61850-7-2'),
43
- 'IEC 61850-7-3': this.getSetting('IEC 61850-7-3'),
44
- 'IEC 61850-7-4': this.getSetting('IEC 61850-7-4'),
45
- 'IEC 61850-8-1': this.getSetting('IEC 61850-8-1'),
46
- };
47
- }
48
- /**
49
- * Get the versions of the current OpenSCD NSD files.
50
- * @returns Current version, revision and release for all current OpenSCD NSD files.
51
- */
52
- async nsdVersions() {
53
- const [nsd72, nsd73, nsd74, nsd81] = await Promise.all([
54
- iec6185072,
55
- iec6185073,
56
- iec6185074,
57
- iec6185081,
58
- ]);
59
- const [nsd72Ns, nsd73Ns, nsd74Ns, nsd81Ns] = [
60
- nsd72.querySelector('NS'),
61
- nsd73.querySelector('NS'),
62
- nsd74.querySelector('NS'),
63
- nsd81.querySelector('ServiceNS'),
64
- ];
65
- return {
66
- 'IEC 61850-7-2': {
67
- version: nsd72Ns?.getAttribute('version') ?? undefined,
68
- revision: nsd72Ns?.getAttribute('revision') ?? undefined,
69
- release: nsd72Ns?.getAttribute('release') ?? undefined,
70
- },
71
- 'IEC 61850-7-3': {
72
- version: nsd73Ns?.getAttribute('version') ?? undefined,
73
- revision: nsd73Ns?.getAttribute('revision') ?? undefined,
74
- release: nsd73Ns?.getAttribute('release') ?? undefined,
75
- },
76
- 'IEC 61850-7-4': {
77
- version: nsd74Ns?.getAttribute('version') ?? undefined,
78
- revision: nsd74Ns?.getAttribute('revision') ?? undefined,
79
- release: nsd74Ns?.getAttribute('release') ?? undefined,
80
- },
81
- 'IEC 61850-8-1': {
82
- version: nsd81Ns?.getAttribute('version') ?? undefined,
83
- revision: nsd81Ns?.getAttribute('revision') ?? undefined,
84
- release: nsd81Ns?.getAttribute('release') ?? undefined,
85
- },
86
- };
87
- }
88
- getSetting(setting) {
89
- return (localStorage.getItem(setting) ?? defaults[setting]);
90
- }
91
- /** Update the `value` of `setting`, storing to `localStorage`. */
92
- setSetting(setting, value) {
93
- localStorage.setItem(setting, value);
94
- this.shadowRoot
95
- ?.querySelector('wizard-dialog')
96
- ?.requestUpdate();
97
- this.requestUpdate();
98
- }
99
- /** Remove the `setting` in `localStorage`. */
100
- removeSetting(setting) {
101
- localStorage.removeItem(setting);
102
- this.shadowRoot
103
- ?.querySelector('wizard-dialog')
104
- ?.requestUpdate();
105
- this.requestUpdate();
106
- this.nsdoc = initializeNsdoc(); // update nsdoc
107
- }
108
- onClosing(ae) {
109
- if (ae.detail?.action === 'reset') {
110
- Object.keys(this.settings).forEach(item => localStorage.removeItem(item));
111
- this.requestUpdate('settings');
112
- }
113
- else if (ae.detail?.action === 'save') {
114
- this.setSetting('language', this.languageUI.value);
115
- this.setSetting('theme', this.darkThemeUI.checked ? 'dark' : 'light');
116
- this.setSetting('mode', this.modeUI.checked ? 'pro' : 'safe');
117
- this.setSetting('showieds', this.showiedsUI.checked ? 'on' : 'off');
118
- this.requestUpdate('settings');
119
- }
120
- }
121
- updated(changedProperties) {
122
- super.updated(changedProperties);
123
- if (changedProperties.has('settings'))
124
- use(this.settings.language);
125
- }
126
- renderFileSelect() {
127
- return html `
128
- <input
129
- id="nsdoc-file"
130
- accept=".nsdoc"
131
- type="file"
132
- hidden
133
- required
134
- multiple
135
- @change="${(evt) => this.uploadNsdocFile(evt)}}"
136
- />
137
- <mwc-button
138
- label="${translate('settings.selectFileButton')}"
139
- id="selectFileButton"
140
- @click=${() => {
141
- const input = (this.shadowRoot.querySelector('#nsdoc-file'));
142
- input?.click();
143
- }}
144
- >
145
- </mwc-button>
146
- `;
147
- }
148
- async uploadNsdocFile(evt) {
149
- const files = Array.from(evt.target?.files ?? []);
150
- if (files.length == 0)
151
- return;
152
- for (const file of files) {
153
- const text = await file.text();
154
- this.dispatchEvent(newLoadNsdocEvent(text, file.name));
155
- }
156
- this.nsdocFileUI.value = '';
157
- this.requestUpdate();
158
- }
159
- async onLoadNsdoc(event) {
160
- const nsdocElement = this.parseToXmlObject(event.detail.nsdoc).querySelector('NSDoc');
161
- const id = nsdocElement?.getAttribute('id');
162
- if (!id) {
163
- this.dispatchEvent(newLogEvent({
164
- kind: 'error',
165
- title: get('settings.invalidFileNoIdFound', {
166
- filename: event.detail.filename,
167
- }),
168
- }));
169
- return;
170
- }
171
- const nsdVersions = await this.nsdVersions();
172
- const nsdVersion = nsdVersions[id];
173
- const nsdocVersion = {
174
- version: nsdocElement.getAttribute('version') ?? '',
175
- revision: nsdocElement.getAttribute('revision') ?? '',
176
- release: nsdocElement.getAttribute('release') ?? '',
177
- };
178
- if (!this.isEqual(nsdVersion, nsdocVersion)) {
179
- this.dispatchEvent(newLogEvent({
180
- kind: 'warning',
181
- title: get('settings.invalidNsdocVersion', {
182
- id: id,
183
- filename: event.detail.filename,
184
- nsdVersion: `${nsdVersion.version}${nsdVersion.revision}${nsdVersion.release}`,
185
- nsdocVersion: `${nsdocVersion.version}${nsdocVersion.revision}${nsdocVersion.release}`,
186
- }),
187
- }));
188
- }
189
- this.setSetting(id, event.detail.nsdoc);
190
- this.nsdoc = initializeNsdoc(); // update nsdoc
191
- }
192
- /**
193
- * Check the equality of two NsdVersions.
194
- * @param versionA - First version to compare.
195
- * @param versionB - Second version to compare.
196
- * @returns Are they equal or not.
197
- */
198
- isEqual(versionA, versionB) {
199
- return (versionA.version == versionB.version &&
200
- versionA.revision == versionB.revision &&
201
- versionA.release == versionB.release);
202
- }
203
- /**
204
- * Render one .nsdoc item in the Settings wizard
205
- * @param key - The key of the nsdoc file in the settings.
206
- * @returns a .nsdoc item for the Settings wizard
207
- */
208
- renderNsdocItem(key) {
209
- const nsdSetting = this.settings[key];
210
- let nsdVersion;
211
- let nsdRevision;
212
- let nsdRelease;
213
- if (nsdSetting) {
214
- const nsdoc = this.parseToXmlObject(nsdSetting).querySelector('NSDoc');
215
- nsdVersion = nsdoc?.getAttribute('version');
216
- nsdRevision = nsdoc?.getAttribute('revision');
217
- nsdRelease = nsdoc?.getAttribute('release');
218
- }
219
- return html `<mwc-list-item
220
- id=${key}
221
- graphic="avatar"
222
- hasMeta
223
- twoline
224
- .disabled=${!nsdSetting}
225
- >
226
- <span>${key}</span>
227
- ${nsdSetting
228
- ? html `<span slot="secondary"
229
- >${nsdVersion}${nsdRevision}${nsdRelease}</span
230
- >`
231
- : html ``}
232
- ${nsdSetting
233
- ? html `<mwc-icon slot="graphic" style="color:green;">done</mwc-icon>`
234
- : html `<mwc-icon slot="graphic" style="color:red;">close</mwc-icon>`}
235
- ${nsdSetting
236
- ? html `<mwc-icon
237
- id="deleteNsdocItem"
238
- slot="meta"
239
- @click=${() => {
240
- this.removeSetting(key);
241
- }}
242
- >delete</mwc-icon
243
- >`
244
- : html ``}
245
- </mwc-list-item>`;
246
- }
247
- parseToXmlObject(text) {
248
- return new DOMParser().parseFromString(text, 'application/xml');
249
- }
250
- connectedCallback() {
251
- super.connectedCallback();
252
- registerTranslateConfig({ loader: this.languageConfig.loader, empty: key => key });
253
- use(this.settings.language);
254
- if (this.host) {
255
- this.host.addEventListener('oscd-settings', (evt) => {
256
- evt.detail.show ? this.settingsUI.show() : this.settingsUI.close();
257
- });
258
- this.host.addEventListener('load-nsdoc', (evt) => this.onLoadNsdoc(evt));
259
- }
260
- }
261
- render() {
262
- return html `<mwc-dialog
263
- id="settings"
264
- heading="${translate('settings.title')}"
265
- @closing=${this.onClosing}
266
- >
267
- <form>
268
- <mwc-select
269
- fixedMenuPosition
270
- id="language"
271
- icon="language"
272
- label="${translate('settings.language')}"
273
- >
274
- ${Object.keys(this.languageConfig.languages).map(lang => html `<mwc-list-item
275
- graphic="icon"
276
- value="${lang}"
277
- ?selected=${lang === this.settings.language}
278
- >${translate(`settings.languages.${lang}`)}</mwc-list-item
279
- >`)}
280
- </mwc-select>
281
- <mwc-formfield label="${translate('settings.dark')}">
282
- <mwc-switch
283
- id="dark"
284
- ?checked=${this.settings.theme === 'dark'}
285
- ></mwc-switch>
286
- </mwc-formfield>
287
- <mwc-formfield label="${translate('settings.mode')}">
288
- <mwc-switch
289
- id="mode"
290
- ?checked=${this.settings.mode === 'pro'}
291
- ></mwc-switch>
292
- </mwc-formfield>
293
- <mwc-formfield label="${translate('settings.showieds')}">
294
- <mwc-switch
295
- id="showieds"
296
- ?checked=${this.settings.showieds === 'on'}
297
- ></mwc-switch>
298
- </mwc-formfield>
299
- </form>
300
- <wizard-divider></wizard-divider>
301
- ${this.nsdUploadButton
302
- ? html `<section id="shownsdbutton">
303
- <h3>${translate('settings.loadNsdTranslations')}</h3>
304
- ${this.renderFileSelect()}
305
- </section>`
306
- : html ``}
307
- <mwc-list id="nsdocList">
308
- ${this.renderNsdocItem('IEC 61850-7-2')}
309
- ${this.renderNsdocItem('IEC 61850-7-3')}
310
- ${this.renderNsdocItem('IEC 61850-7-4')}
311
- ${this.renderNsdocItem('IEC 61850-8-1')}
312
- </mwc-list>
313
- <mwc-button slot="secondaryAction" dialogAction="close">
314
- ${translate('cancel')}
315
- </mwc-button>
316
- <mwc-button
317
- style="--mdc-theme-primary: var(--mdc-theme-error)"
318
- slot="secondaryAction"
319
- dialogAction="reset"
320
- >
321
- ${translate('reset')}
322
- </mwc-button>
323
- <mwc-button
324
- icon="save"
325
- trailingIcon
326
- slot="primaryAction"
327
- dialogAction="save"
328
- >
329
- ${translate('save')}
330
- </mwc-button>
331
- </mwc-dialog>
332
- <slot></slot>
333
- ${getTheme(this.settings.theme)}`;
334
- }
335
- };
336
- OscdSettings.styles = css `
337
- mwc-top-app-bar-fixed {
338
- --mdc-theme-text-disabled-on-light: rgba(255, 255, 255, 0.38);
339
- } /* hack to fix disabled icon buttons rendering black */
340
-
341
- mwc-tab {
342
- background-color: var(--primary);
343
- --mdc-theme-primary: var(--mdc-theme-on-primary);
344
- }
345
-
346
- input[type='file'] {
347
- display: none;
348
- }
349
-
350
- mwc-dialog {
351
- --mdc-dialog-max-width: 98vw;
352
- }
353
-
354
- mwc-dialog > form {
355
- display: flex;
356
- flex-direction: column;
357
- }
358
-
359
- mwc-dialog > form > * {
360
- display: block;
361
- margin-top: 16px;
362
- }
363
-
364
- mwc-linear-progress {
365
- position: fixed;
366
- --mdc-linear-progress-buffer-color: var(--primary);
367
- --mdc-theme-primary: var(--secondary);
368
- left: 0px;
369
- top: 0px;
370
- width: 100%;
371
- pointer-events: none;
372
- z-index: 1000;
373
- }
374
-
375
- tt {
376
- font-family: 'Roboto Mono', monospace;
377
- font-weight: 300;
378
- }
379
-
380
- .landing {
381
- position: absolute;
382
- text-align: center;
383
- top: 50%;
384
- left: 50%;
385
- transform: translate(-50%, -50%);
386
- width: 100%;
387
- }
388
-
389
- .landing_icon:hover {
390
- box-shadow: 0 12px 17px 2px rgba(0, 0, 0, 0.14),
391
- 0 5px 22px 4px rgba(0, 0, 0, 0.12), 0 7px 8px -4px rgba(0, 0, 0, 0.2);
392
- }
393
-
394
- .landing_icon {
395
- margin: 12px;
396
- border-radius: 16px;
397
- width: 160px;
398
- height: 140px;
399
- text-align: center;
400
- color: var(--mdc-theme-on-secondary);
401
- background: var(--secondary);
402
- --mdc-icon-button-size: 100px;
403
- --mdc-icon-size: 100px;
404
- --mdc-ripple-color: rgba(0, 0, 0, 0);
405
- box-shadow: rgb(0 0 0 / 14%) 0px 6px 10px 0px,
406
- rgb(0 0 0 / 12%) 0px 1px 18px 0px, rgb(0 0 0 / 20%) 0px 3px 5px -1px;
407
- transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
408
- }
409
-
410
- .landing_label {
411
- width: 160px;
412
- height: 50px;
413
- margin-top: 100px;
414
- margin-left: -30px;
415
- font-family: 'Roboto', sans-serif;
416
- }
417
-
418
- .plugin.menu {
419
- display: flex;
420
- }
421
-
422
- .plugin.validator {
423
- display: flex;
424
- }
425
- `;
426
- __decorate([
427
- property()
428
- ], OscdSettings.prototype, "settings", null);
429
- __decorate([
430
- property({ attribute: false })
431
- ], OscdSettings.prototype, "nsdoc", void 0);
432
- __decorate([
433
- property({
434
- type: Object,
435
- })
436
- ], OscdSettings.prototype, "host", void 0);
437
- __decorate([
438
- property({ type: Boolean })
439
- ], OscdSettings.prototype, "nsdUploadButton", void 0);
440
- __decorate([
441
- property({ type: Object })
442
- ], OscdSettings.prototype, "languageConfig", void 0);
443
- __decorate([
444
- query('#settings')
445
- ], OscdSettings.prototype, "settingsUI", void 0);
446
- __decorate([
447
- query('#language')
448
- ], OscdSettings.prototype, "languageUI", void 0);
449
- __decorate([
450
- query('#dark')
451
- ], OscdSettings.prototype, "darkThemeUI", void 0);
452
- __decorate([
453
- query('#mode')
454
- ], OscdSettings.prototype, "modeUI", void 0);
455
- __decorate([
456
- query('#showieds')
457
- ], OscdSettings.prototype, "showiedsUI", void 0);
458
- __decorate([
459
- query('#nsdoc-file')
460
- ], OscdSettings.prototype, "nsdocFileUI", void 0);
461
- OscdSettings = __decorate([
462
- customElement('oscd-settings')
463
- ], OscdSettings);
464
- export { OscdSettings };
465
- //# sourceMappingURL=Settings.js.map