@omicronenergy/oscd-scl-dialogs 0.0.10 → 0.0.12

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/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.12](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/compare/oscd-scl-dialogs-v0.0.11...oscd-scl-dialogs-v0.0.12) (2026-03-06)
4
+
5
+
6
+ ### Features
7
+
8
+ * add support for editing LNodes ([5eb8a09](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/commit/5eb8a09198678923c1ff0c533dc70917adc1f272))
9
+ * be for user friendly when SCL element is not supported ([2c554ea](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/commit/2c554ea80a9ccff897eb22bb026a16b758215fe3))
10
+
11
+ ## [0.0.11](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/compare/oscd-scl-dialogs-v0.0.10...oscd-scl-dialogs-v0.0.11) (2026-03-04)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * for nullable fields prefer value over maybeValue ([d6caf79](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/commit/d6caf79197e6936bcce7f07ab826968db9374452))
17
+
3
18
  ## [0.0.10](https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs/compare/oscd-scl-dialogs-v0.0.9...oscd-scl-dialogs-v0.0.10) (2026-02-16)
4
19
 
5
20
 
@@ -41,7 +41,7 @@
41
41
  "text": "object"
42
42
  },
43
43
  "static": true,
44
- "default": "{ 'md-dialog': MdDialog, 'md-text-button': MdTextButton, 'md-filled-button': MdFilledButton, 'scl-checkbox': SclCheckbox, 'scl-text-field': SclTextField, 'scl-select': SclSelect, 'md-filled-textfield': MdFilledTextField, 'md-filled-select': MdFilledSelect, 'md-select-option': MdSelectOption, 'md-icon-button': MdIconButton, 'md-icon': MdIcon, 'selection-list': SelectionList, 'action-list': ActionList, 'md-list': MdList, 'md-list-item': MdListItem, 'oscd-text-editor': OscdTextEditor, }"
44
+ "default": "{ 'md-dialog': MdDialog, 'md-text-button': MdTextButton, 'md-filled-button': MdFilledButton, 'md-outlined-button': MdOutlinedButton, 'scl-checkbox': SclCheckbox, 'scl-text-field': SclTextField, 'scl-select': SclSelect, 'md-filled-textfield': MdFilledTextField, 'md-filled-select': MdFilledSelect, 'md-select-option': MdSelectOption, 'md-icon-button': MdIconButton, 'md-icon': MdIcon, 'selection-list': SelectionList, 'action-list': ActionList, 'md-list': MdList, 'md-list-item': MdListItem, 'oscd-text-editor': OscdTextEditor, }"
45
45
  },
46
46
  {
47
47
  "kind": "field",
@@ -215,7 +215,7 @@
215
215
  "kind": "field",
216
216
  "name": "styles",
217
217
  "static": true,
218
- "default": "css` *, md-filled-button * { --md-dialog-container-color: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-dialog-headline-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-dialog-headline-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-dialog-supporting-text-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-dialog-supporting-text-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-sys-color-primary: var(--wizard-dialog-primary, var(--oscd-primary)); --md-sys-color-secondary: var( --wizard-dialog-secondary, var(--oscd-secondary) ); --md-sys-typescale-body-large-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-sys-color-surface-container-highest: var( --wizard-dailog-input-background-color, var(--oscd-base3) ); --md-outlined-text-field-input-text-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-sys-color-on-surface: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-sys-color-on-primary: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-sys-color-surface: var(--wizard-dialog-surface, var(--oscd-base3)); --md-sys-color-on-surface-variant: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-menu-container-color: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-menu-item-selected-container-color: rgb( from var(--wizard-dialog-primary, var(--oscd-primary)) r g b / 0.38 ); } md-dialog { --md-dialog-container-max-height: 100%; --md-dialog-container-max-width: 100%; } md-dialog.editor-mode { width: 80%; height: 80%; } .dialog-header { display: flex; align-items: center; } .dialog-header .title { flex: 1; } .editor-mode form, .editor-content, .editor-content oscd-text-editor { height: 100%; } .editor-mode form { padding-inline: 0px; } .editor-mode form .editor-content { border-top: 1px solid var(--oscd-base0); border-bottom: 1px solid var(--oscd-base0); } .wizard-content { display: flex; flex-direction: column; } .wizard-content > * { display: block; margin-top: 16px; } `"
218
+ "default": "css` *, md-filled-button * { --md-dialog-container-color: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-dialog-headline-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-dialog-headline-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-dialog-supporting-text-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-dialog-supporting-text-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-sys-color-primary: var(--wizard-dialog-primary, var(--oscd-primary)); --md-sys-color-secondary: var( --wizard-dialog-secondary, var(--oscd-secondary) ); --md-sys-typescale-body-large-font: var( --wizard-dialog-text-font, var(--oscd-text-font) ); --md-sys-color-surface-container-highest: var( --wizard-dailog-input-background-color, var(--oscd-base3) ); --md-outlined-text-field-input-text-color: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-sys-color-on-surface: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-sys-color-on-primary: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-sys-color-surface: var(--wizard-dialog-surface, var(--oscd-base3)); --md-sys-color-on-surface-variant: var( --wizard-dialog-text-color, var(--oscd-base00) ); --md-menu-container-color: var( --wizard-dialog-background-color, var(--oscd-base3) ); --md-menu-item-selected-container-color: rgb( from var(--wizard-dialog-primary, var(--oscd-primary)) r g b / 0.38 ); } md-dialog { --md-dialog-container-max-height: 100%; --md-dialog-container-max-width: 100%; } md-dialog.editor-mode { width: 80%; height: 80%; } .dialog-header { display: flex; align-items: center; } .dialog-header .title { flex: 1; } .editor-mode form, .editor-content, .editor-content oscd-text-editor { height: 100%; } .editor-mode form { padding-inline: 0px; } .editor-mode form .editor-content { border-top: 1px solid var(--oscd-base0); border-bottom: 1px solid var(--oscd-base0); } .wizard-content { display: flex; flex-direction: column; } .wizard-content > * { display: block; margin-top: 16px; } .unsupported-message { display: flex; flex-direction: column; align-items: center; gap: 16px; } .unsupported-message md-outlined-button { align-self: flex-end; } `"
219
219
  }
220
220
  ],
221
221
  "superclass": {
@@ -1337,6 +1337,15 @@
1337
1337
  "static": true,
1338
1338
  "default": "{ 'oscd-text-editor': OscdTextEditor, 'oscd-scl-dialogs': OscdSclDialogs, }"
1339
1339
  },
1340
+ {
1341
+ "kind": "field",
1342
+ "name": "storageKeys",
1343
+ "type": {
1344
+ "text": "object"
1345
+ },
1346
+ "static": true,
1347
+ "default": "{ parentSelector: 'demo-editor-parent-selector', newTagName: 'demo-editor-new-tag-name', tagSelector: 'demo-editor-tag-selector', }"
1348
+ },
1340
1349
  {
1341
1350
  "kind": "field",
1342
1351
  "name": "properties",
@@ -1344,7 +1353,7 @@
1344
1353
  "text": "object"
1345
1354
  },
1346
1355
  "static": true,
1347
- "default": "{ doc: { type: Object }, docVersion: { type: Number }, editor: { type: Object }, docsState: { type: Object }, editedText: { state: true }, editorDirty: { state: true }, }"
1356
+ "default": "{ doc: { type: Object }, docVersion: { type: Number }, editor: { type: Object }, docsState: { type: Object }, editedText: { state: true }, editorDirty: { state: true }, parentSelectorValue: { state: true }, newTagNameValue: { state: true }, tagSelectorValue: { state: true }, }"
1348
1357
  },
1349
1358
  {
1350
1359
  "kind": "method",
@@ -1441,6 +1450,18 @@
1441
1450
  "text": "boolean"
1442
1451
  },
1443
1452
  "default": "false"
1453
+ },
1454
+ {
1455
+ "kind": "field",
1456
+ "name": "parentSelectorValue"
1457
+ },
1458
+ {
1459
+ "kind": "field",
1460
+ "name": "newTagNameValue"
1461
+ },
1462
+ {
1463
+ "kind": "field",
1464
+ "name": "tagSelectorValue"
1444
1465
  }
1445
1466
  ],
1446
1467
  "mixins": [
@@ -3179,6 +3200,23 @@
3179
3200
  }
3180
3201
  }
3181
3202
  ]
3203
+ },
3204
+ {
3205
+ "kind": "function",
3206
+ "name": "editLNodeWizard",
3207
+ "return": {
3208
+ "type": {
3209
+ "text": "Wizard"
3210
+ }
3211
+ },
3212
+ "parameters": [
3213
+ {
3214
+ "name": "element",
3215
+ "type": {
3216
+ "text": "Element"
3217
+ }
3218
+ }
3219
+ ]
3182
3220
  }
3183
3221
  ],
3184
3222
  "exports": [
@@ -3189,6 +3227,14 @@
3189
3227
  "name": "createLNodeWizard",
3190
3228
  "module": "wizards/lnode.ts"
3191
3229
  }
3230
+ },
3231
+ {
3232
+ "kind": "js",
3233
+ "name": "editLNodeWizard",
3234
+ "declaration": {
3235
+ "name": "editLNodeWizard",
3236
+ "module": "wizards/lnode.ts"
3237
+ }
3192
3238
  }
3193
3239
  ]
3194
3240
  },
@@ -4285,7 +4331,7 @@
4285
4331
  "type": {
4286
4332
  "text": "Record<\n string,\n {\n edit: SclElementWizard;\n create: SclElementWizard;\n }\n>"
4287
4333
  },
4288
- "default": "{ AccessControl: { edit: emptyWizard, create: emptyWizard, }, AccessPoint: { edit: emptyWizard, create: emptyWizard, }, Address: { edit: emptyWizard, create: emptyWizard, }, Association: { edit: emptyWizard, create: emptyWizard, }, Authentication: { edit: emptyWizard, create: emptyWizard, }, Bay: { edit: editBayWizard, create: createBayWizard, }, BDA: { edit: editBDaWizard, create: emptyWizard, }, BitRate: { edit: emptyWizard, create: emptyWizard, }, ClientLN: { edit: emptyWizard, create: emptyWizard, }, ClientServices: { edit: emptyWizard, create: emptyWizard, }, CommProt: { edit: emptyWizard, create: emptyWizard, }, Communication: { edit: emptyWizard, create: emptyWizard, }, ConductingEquipment: { edit: editConductingEquipmentWizard, create: createConductingEquipmentWizard, }, ConfDataSet: { edit: emptyWizard, create: emptyWizard, }, ConfLdName: { edit: emptyWizard, create: emptyWizard, }, ConfLNs: { edit: emptyWizard, create: emptyWizard, }, ConfLogControl: { edit: emptyWizard, create: emptyWizard, }, ConfReportControl: { edit: emptyWizard, create: emptyWizard, }, ConfSG: { edit: emptyWizard, create: emptyWizard, }, ConfSigRef: { edit: emptyWizard, create: emptyWizard, }, ConnectedAP: { edit: editConnectedApWizard, create: createConnectedApWizard, }, DA: { edit: editDAWizard, create: createDaWizard, }, DAType: { edit: emptyWizard, create: emptyWizard, }, DO: { edit: editDoWizard, create: createDoWizard, }, DOI: { edit: emptyWizard, create: emptyWizard, }, DOType: { edit: emptyWizard, create: createDOTypeWizard, }, DataObjectDirectory: { edit: emptyWizard, create: emptyWizard, }, DataSet: { edit: emptyWizard, create: emptyWizard, }, DataSetDirectory: { edit: emptyWizard, create: emptyWizard, }, DataTypeTemplates: { edit: emptyWizard, create: emptyWizard, }, DynAssociation: { edit: emptyWizard, create: emptyWizard, }, DynDataSet: { edit: emptyWizard, create: emptyWizard, }, EnumType: { edit: emptyWizard, create: createEnumTypeWizard, }, EnumVal: { edit: editEnumValWizard, create: createEnumValWizard, }, EqFunction: { edit: editEqFunctionWizard, create: createEqFunctionWizard, }, EqSubFunction: { edit: editEqSubFunctionWizard, create: createEqSubFunctionWizard, }, ExtRef: { edit: emptyWizard, create: emptyWizard, }, FileHandling: { edit: emptyWizard, create: emptyWizard, }, Function: { edit: editFunctionWizard, create: createFunctionWizard, }, GeneralEquipment: { edit: editGeneralEquipmentWizard, create: createGeneralEquipmentWizard, }, GetCBValues: { edit: emptyWizard, create: emptyWizard, }, GetDataObjectDefinition: { edit: emptyWizard, create: emptyWizard, }, GetDataSetValue: { edit: emptyWizard, create: emptyWizard, }, GetDirectory: { edit: emptyWizard, create: emptyWizard, }, GOOSE: { edit: emptyWizard, create: emptyWizard, }, GOOSESecurity: { edit: emptyWizard, create: emptyWizard, }, GSE: { edit: editGseWizard, create: emptyWizard, }, GSEDir: { edit: emptyWizard, create: emptyWizard, }, GSESettings: { edit: emptyWizard, create: emptyWizard, }, GSSE: { edit: emptyWizard, create: emptyWizard, }, Header: { edit: emptyWizard, create: emptyWizard, }, History: { edit: emptyWizard, create: emptyWizard, }, Hitem: { edit: emptyWizard, create: emptyWizard, }, IED: { edit: editIEDWizard, create: createIEDWizard, }, IEDName: { edit: emptyWizard, create: emptyWizard, }, Inputs: { edit: emptyWizard, create: emptyWizard, }, IssuerName: { edit: emptyWizard, create: emptyWizard, }, KDC: { edit: emptyWizard, create: emptyWizard, }, LDevice: { edit: editLDeviceWizard, create: createLDeviceWizard, }, LN: { edit: updateLNWizard, create: createLNWizard, }, LN0: { edit: updateLN0Wizard, create: emptyWizard, }, LNode: { edit: emptyWizard, create: createLNodeWizard, }, LNodeType: { edit: emptyWizard, create: createLNodeTypeWizard, }, Line: { edit: editLineWizard, create: createLineWizard, }, Log: { edit: emptyWizard, create: emptyWizard, }, LogControl: { edit: emptyWizard, create: emptyWizard, }, LogSettings: { edit: emptyWizard, create: emptyWizard, }, MaxTime: { edit: emptyWizard, create: emptyWizard, }, McSecurity: { edit: emptyWizard, create: emptyWizard, }, MinTime: { edit: emptyWizard, create: emptyWizard, }, NeutralPoint: { edit: emptyWizard, create: emptyWizard, }, P: { edit: emptyWizard, create: emptyWizard, }, PhysConn: { edit: emptyWizard, create: emptyWizard, }, PowerTransformer: { edit: editPowerTransformerWizard, create: createPowerTransformerWizard, }, Private: { edit: emptyWizard, create: emptyWizard, }, Process: { edit: editProcessWizard, create: createProcessWizard, }, ProtNs: { edit: emptyWizard, create: emptyWizard, }, Protocol: { edit: emptyWizard, create: emptyWizard, }, ReadWrite: { edit: emptyWizard, create: emptyWizard, }, RedProt: { edit: emptyWizard, create: emptyWizard, }, ReportControl: { edit: emptyWizard, create: emptyWizard, }, ReportSettings: { edit: emptyWizard, create: emptyWizard, }, RptEnabled: { edit: emptyWizard, create: emptyWizard, }, SamplesPerSec: { edit: emptyWizard, create: emptyWizard, }, SecPerSamples: { edit: emptyWizard, create: emptyWizard, }, SCL: { edit: emptyWizard, create: emptyWizard, }, SDI: { edit: emptyWizard, create: emptyWizard, }, SDO: { edit: editSDoWizard, create: createSDoWizard, }, Server: { edit: emptyWizard, create: emptyWizard, }, ServerAt: { edit: emptyWizard, create: emptyWizard, }, Services: { edit: emptyWizard, create: emptyWizard, }, SetDataSetValue: { edit: emptyWizard, create: emptyWizard, }, SettingControl: { edit: emptyWizard, create: emptyWizard, }, SettingGroups: { edit: emptyWizard, create: emptyWizard, }, SGEdit: { edit: emptyWizard, create: emptyWizard, }, SmpRate: { edit: emptyWizard, create: emptyWizard, }, SMV: { edit: editSMvWizard, create: emptyWizard, }, SmvOpts: { edit: emptyWizard, create: emptyWizard, }, SMVsc: { edit: emptyWizard, create: emptyWizard, }, SMVSecurity: { edit: emptyWizard, create: emptyWizard, }, SMVSettings: { edit: emptyWizard, create: emptyWizard, }, SubEquipment: { edit: editSubEquipmentWizard, create: createSubEquipmentWizard, }, SubFunction: { edit: editSubFunctionWizard, create: createSubFunctionWizard, }, SubNetwork: { edit: editSubNetworkWizard, create: createSubNetworkWizard, }, Subject: { edit: emptyWizard, create: emptyWizard, }, Substation: { edit: editSubstationWizard, create: createSubstationWizard, }, SupSubscription: { edit: emptyWizard, create: emptyWizard, }, TapChanger: { edit: editTapChangerWizard, create: createTapChangerWizard, }, Text: { edit: editTextWizard, create: createTextWizard, }, TimerActivatedControl: { edit: emptyWizard, create: emptyWizard, }, TimeSyncProt: { edit: emptyWizard, create: emptyWizard, }, TransformerWinding: { edit: editTransformerWindingWizard, create: createTransformerWindingWizard, }, Val: { edit: emptyWizard, create: emptyWizard, }, ValueHandling: { edit: emptyWizard, create: emptyWizard, }, Voltage: { edit: emptyWizard, create: emptyWizard, }, VoltageLevel: { edit: editVoltageLevelWizard, create: createVoltageLevelWizard, }, }"
4334
+ "default": "{ AccessControl: { edit: emptyWizard, create: emptyWizard, }, AccessPoint: { edit: emptyWizard, create: emptyWizard, }, Address: { edit: emptyWizard, create: emptyWizard, }, Association: { edit: emptyWizard, create: emptyWizard, }, Authentication: { edit: emptyWizard, create: emptyWizard, }, Bay: { edit: editBayWizard, create: createBayWizard, }, BDA: { edit: editBDaWizard, create: emptyWizard, }, BitRate: { edit: emptyWizard, create: emptyWizard, }, ClientLN: { edit: emptyWizard, create: emptyWizard, }, ClientServices: { edit: emptyWizard, create: emptyWizard, }, CommProt: { edit: emptyWizard, create: emptyWizard, }, Communication: { edit: emptyWizard, create: emptyWizard, }, ConductingEquipment: { edit: editConductingEquipmentWizard, create: createConductingEquipmentWizard, }, ConfDataSet: { edit: emptyWizard, create: emptyWizard, }, ConfLdName: { edit: emptyWizard, create: emptyWizard, }, ConfLNs: { edit: emptyWizard, create: emptyWizard, }, ConfLogControl: { edit: emptyWizard, create: emptyWizard, }, ConfReportControl: { edit: emptyWizard, create: emptyWizard, }, ConfSG: { edit: emptyWizard, create: emptyWizard, }, ConfSigRef: { edit: emptyWizard, create: emptyWizard, }, ConnectedAP: { edit: editConnectedApWizard, create: createConnectedApWizard, }, DA: { edit: editDAWizard, create: createDaWizard, }, DAType: { edit: emptyWizard, create: emptyWizard, }, DO: { edit: editDoWizard, create: createDoWizard, }, DOI: { edit: emptyWizard, create: emptyWizard, }, DOType: { edit: emptyWizard, create: createDOTypeWizard, }, DataObjectDirectory: { edit: emptyWizard, create: emptyWizard, }, DataSet: { edit: emptyWizard, create: emptyWizard, }, DataSetDirectory: { edit: emptyWizard, create: emptyWizard, }, DataTypeTemplates: { edit: emptyWizard, create: emptyWizard, }, DynAssociation: { edit: emptyWizard, create: emptyWizard, }, DynDataSet: { edit: emptyWizard, create: emptyWizard, }, EnumType: { edit: emptyWizard, create: createEnumTypeWizard, }, EnumVal: { edit: editEnumValWizard, create: createEnumValWizard, }, EqFunction: { edit: editEqFunctionWizard, create: createEqFunctionWizard, }, EqSubFunction: { edit: editEqSubFunctionWizard, create: createEqSubFunctionWizard, }, ExtRef: { edit: emptyWizard, create: emptyWizard, }, FileHandling: { edit: emptyWizard, create: emptyWizard, }, Function: { edit: editFunctionWizard, create: createFunctionWizard, }, GeneralEquipment: { edit: editGeneralEquipmentWizard, create: createGeneralEquipmentWizard, }, GetCBValues: { edit: emptyWizard, create: emptyWizard, }, GetDataObjectDefinition: { edit: emptyWizard, create: emptyWizard, }, GetDataSetValue: { edit: emptyWizard, create: emptyWizard, }, GetDirectory: { edit: emptyWizard, create: emptyWizard, }, GOOSE: { edit: emptyWizard, create: emptyWizard, }, GOOSESecurity: { edit: emptyWizard, create: emptyWizard, }, GSE: { edit: editGseWizard, create: emptyWizard, }, GSEDir: { edit: emptyWizard, create: emptyWizard, }, GSESettings: { edit: emptyWizard, create: emptyWizard, }, GSSE: { edit: emptyWizard, create: emptyWizard, }, Header: { edit: emptyWizard, create: emptyWizard, }, History: { edit: emptyWizard, create: emptyWizard, }, Hitem: { edit: emptyWizard, create: emptyWizard, }, IED: { edit: editIEDWizard, create: createIEDWizard, }, IEDName: { edit: emptyWizard, create: emptyWizard, }, Inputs: { edit: emptyWizard, create: emptyWizard, }, IssuerName: { edit: emptyWizard, create: emptyWizard, }, KDC: { edit: emptyWizard, create: emptyWizard, }, LDevice: { edit: editLDeviceWizard, create: createLDeviceWizard, }, LN: { edit: updateLNWizard, create: createLNWizard, }, LN0: { edit: updateLN0Wizard, create: emptyWizard, }, LNode: { edit: editLNodeWizard, create: createLNodeWizard, }, LNodeType: { edit: emptyWizard, create: createLNodeTypeWizard, }, Line: { edit: editLineWizard, create: createLineWizard, }, Log: { edit: emptyWizard, create: emptyWizard, }, LogControl: { edit: emptyWizard, create: emptyWizard, }, LogSettings: { edit: emptyWizard, create: emptyWizard, }, MaxTime: { edit: emptyWizard, create: emptyWizard, }, McSecurity: { edit: emptyWizard, create: emptyWizard, }, MinTime: { edit: emptyWizard, create: emptyWizard, }, NeutralPoint: { edit: emptyWizard, create: emptyWizard, }, P: { edit: emptyWizard, create: emptyWizard, }, PhysConn: { edit: emptyWizard, create: emptyWizard, }, PowerTransformer: { edit: editPowerTransformerWizard, create: createPowerTransformerWizard, }, Private: { edit: emptyWizard, create: emptyWizard, }, Process: { edit: editProcessWizard, create: createProcessWizard, }, ProtNs: { edit: emptyWizard, create: emptyWizard, }, Protocol: { edit: emptyWizard, create: emptyWizard, }, ReadWrite: { edit: emptyWizard, create: emptyWizard, }, RedProt: { edit: emptyWizard, create: emptyWizard, }, ReportControl: { edit: emptyWizard, create: emptyWizard, }, ReportSettings: { edit: emptyWizard, create: emptyWizard, }, RptEnabled: { edit: emptyWizard, create: emptyWizard, }, SamplesPerSec: { edit: emptyWizard, create: emptyWizard, }, SecPerSamples: { edit: emptyWizard, create: emptyWizard, }, SCL: { edit: emptyWizard, create: emptyWizard, }, SDI: { edit: emptyWizard, create: emptyWizard, }, SDO: { edit: editSDoWizard, create: createSDoWizard, }, Server: { edit: emptyWizard, create: emptyWizard, }, ServerAt: { edit: emptyWizard, create: emptyWizard, }, Services: { edit: emptyWizard, create: emptyWizard, }, SetDataSetValue: { edit: emptyWizard, create: emptyWizard, }, SettingControl: { edit: emptyWizard, create: emptyWizard, }, SettingGroups: { edit: emptyWizard, create: emptyWizard, }, SGEdit: { edit: emptyWizard, create: emptyWizard, }, SmpRate: { edit: emptyWizard, create: emptyWizard, }, SMV: { edit: editSMvWizard, create: emptyWizard, }, SmvOpts: { edit: emptyWizard, create: emptyWizard, }, SMVsc: { edit: emptyWizard, create: emptyWizard, }, SMVSecurity: { edit: emptyWizard, create: emptyWizard, }, SMVSettings: { edit: emptyWizard, create: emptyWizard, }, SubEquipment: { edit: editSubEquipmentWizard, create: createSubEquipmentWizard, }, SubFunction: { edit: editSubFunctionWizard, create: createSubFunctionWizard, }, SubNetwork: { edit: editSubNetworkWizard, create: createSubNetworkWizard, }, Subject: { edit: emptyWizard, create: emptyWizard, }, Substation: { edit: editSubstationWizard, create: createSubstationWizard, }, SupSubscription: { edit: emptyWizard, create: emptyWizard, }, TapChanger: { edit: editTapChangerWizard, create: createTapChangerWizard, }, Text: { edit: editTextWizard, create: createTextWizard, }, TimerActivatedControl: { edit: emptyWizard, create: emptyWizard, }, TimeSyncProt: { edit: emptyWizard, create: emptyWizard, }, TransformerWinding: { edit: editTransformerWindingWizard, create: createTransformerWindingWizard, }, Val: { edit: emptyWizard, create: emptyWizard, }, ValueHandling: { edit: emptyWizard, create: emptyWizard, }, Voltage: { edit: emptyWizard, create: emptyWizard, }, VoltageLevel: { edit: editVoltageLevelWizard, create: createVoltageLevelWizard, }, }"
4289
4335
  }
4290
4336
  ],
4291
4337
  "exports": [
@@ -11,6 +11,7 @@ import { MdFilledTextField } from '@scopedelement/material-web/textfield/MdFille
11
11
  import { MdIcon } from '@scopedelement/material-web/icon/MdIcon.js';
12
12
  import { MdIconButton } from '@scopedelement/material-web/iconbutton/MdIconButton.js';
13
13
  import { MdFilledButton } from '@scopedelement/material-web/button/MdFilledButton.js';
14
+ import { MdOutlinedButton } from '@scopedelement/material-web/button/MdOutlinedButton.js';
14
15
  import { MdList } from '@scopedelement/material-web/list/MdList.js';
15
16
  import { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';
16
17
  import { MdSelectOption } from '@scopedelement/material-web/select/MdSelectOption.js';
@@ -35,6 +36,7 @@ export default class OscdSclDialogs extends BaseElement {
35
36
  'md-dialog': typeof MdDialog;
36
37
  'md-text-button': typeof MdTextButton;
37
38
  'md-filled-button': typeof MdFilledButton;
39
+ 'md-outlined-button': typeof MdOutlinedButton;
38
40
  'scl-checkbox': typeof SclCheckbox;
39
41
  'scl-text-field': typeof SclTextField;
40
42
  'scl-select': typeof SclSelect;
@@ -13,6 +13,7 @@ import { MdFilledTextField } from '@scopedelement/material-web/textfield/MdFille
13
13
  import { MdIcon } from '@scopedelement/material-web/icon/MdIcon.js';
14
14
  import { MdIconButton } from '@scopedelement/material-web/iconbutton/MdIconButton.js';
15
15
  import { MdFilledButton } from '@scopedelement/material-web/button/MdFilledButton.js';
16
+ import { MdOutlinedButton } from '@scopedelement/material-web/button/MdOutlinedButton.js';
16
17
  import { MdList } from '@scopedelement/material-web/list/MdList.js';
17
18
  import { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';
18
19
  import { MdSelectOption } from '@scopedelement/material-web/select/MdSelectOption.js';
@@ -43,13 +44,41 @@ function getWizard(wizardType) {
43
44
  return undefined;
44
45
  }
45
46
  function wizardContent(wizardType) {
46
- return ((wizardType && getWizard(wizardType)?.content) || [
47
- html `<div>Invalid wizard type definition</div>`,
48
- ]);
47
+ const wizard = wizardType && getWizard(wizardType);
48
+ if (wizard?.content) {
49
+ return wizard.content;
50
+ }
51
+ if (wizardType && isCreateWizard(wizardType)) {
52
+ return [
53
+ html `<div>
54
+ Creating <strong>${wizardType.tagName}</strong> is not yet supported.
55
+ </div>`,
56
+ ];
57
+ }
58
+ if (wizardType && isEditWizard(wizardType)) {
59
+ return [
60
+ html `<div class="unsupported-message">
61
+ <p>
62
+ Editing <strong>${wizardType.element.tagName}</strong> Elements is not
63
+ yet supported.
64
+ </p>
65
+ </div>`,
66
+ ];
67
+ }
68
+ return [html `<div>Invalid wizard type definition</div>`];
49
69
  }
50
70
  function wizardTitle(wizardType) {
51
- return ((wizardType && getWizard(wizardType)?.title) ||
52
- 'Invalid wizard type definition');
71
+ const wizard = wizardType && getWizard(wizardType);
72
+ if (wizard?.title) {
73
+ return wizard.title;
74
+ }
75
+ if (wizardType && isCreateWizard(wizardType)) {
76
+ return `Add ${wizardType.tagName}`;
77
+ }
78
+ if (wizardType && isEditWizard(wizardType)) {
79
+ return `Edit ${wizardType.element.tagName}`;
80
+ }
81
+ return 'Error';
53
82
  }
54
83
  function wizardAction(wizardType) {
55
84
  if (!wizardType) {
@@ -223,13 +252,22 @@ class OscdSclDialogs extends BaseElement {
223
252
  }}"
224
253
  >Cancel</md-text-button
225
254
  >
226
- <md-filled-button
227
- form="add-data-object"
228
- @click=${() => this.editorMode
229
- ? this.applyTextEdits()
230
- : this.applyFormValues(wizardAction(this.wizardType))}
231
- >Save</md-filled-button
232
- >
255
+ ${!this.editorMode && !(this.wizardType && getWizard(this.wizardType))
256
+ ? html `<md-outlined-button
257
+ @click="${(event) => {
258
+ event.stopImmediatePropagation();
259
+ event.preventDefault();
260
+ this.editorMode = true;
261
+ }}"
262
+ >Use Editor</md-outlined-button
263
+ >`
264
+ : html `<md-filled-button
265
+ form="add-data-object"
266
+ @click=${() => this.editorMode
267
+ ? this.applyTextEdits()
268
+ : this.applyFormValues(wizardAction(this.wizardType))}
269
+ >Save</md-filled-button
270
+ >`}
233
271
  </div>
234
272
  </md-dialog>
235
273
  </div>`;
@@ -239,6 +277,7 @@ OscdSclDialogs.scopedElements = {
239
277
  'md-dialog': MdDialog,
240
278
  'md-text-button': MdTextButton,
241
279
  'md-filled-button': MdFilledButton,
280
+ 'md-outlined-button': MdOutlinedButton,
242
281
  'scl-checkbox': SclCheckbox,
243
282
  'scl-text-field': SclTextField,
244
283
  'scl-select': SclSelect,
@@ -363,6 +402,17 @@ OscdSclDialogs.styles = css `
363
402
  display: block;
364
403
  margin-top: 16px;
365
404
  }
405
+
406
+ .unsupported-message {
407
+ display: flex;
408
+ flex-direction: column;
409
+ align-items: center;
410
+ gap: 16px;
411
+ }
412
+
413
+ .unsupported-message md-outlined-button {
414
+ align-self: flex-end;
415
+ }
366
416
  `;
367
417
  export default OscdSclDialogs;
368
418
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"OscdSclDialogs.js","sourceRoot":"","sources":["../OscdSclDialogs.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { SclCheckbox } from '@openenergytools/scl-checkbox';\nimport { SclSelect } from '@openenergytools/scl-select';\nimport { SclTextField } from '@openenergytools/scl-text-field';\n\nimport { ActionList } from '@openenergytools/filterable-lists/dist/ActionList.js';\nimport { SelectionList } from '@openenergytools/filterable-lists/dist/SelectionList.js';\n\nimport { MdDialog } from '@scopedelement/material-web/dialog/MdDialog.js';\nimport { MdFilledSelect } from '@scopedelement/material-web/select/MdFilledSelect.js';\nimport { MdFilledTextField } from '@scopedelement/material-web/textfield/MdFilledTextField.js';\nimport { MdIcon } from '@scopedelement/material-web/icon/MdIcon.js';\nimport { MdIconButton } from '@scopedelement/material-web/iconbutton/MdIconButton.js';\nimport { MdFilledButton } from '@scopedelement/material-web/button/MdFilledButton.js';\nimport { MdList } from '@scopedelement/material-web/list/MdList.js';\nimport { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';\nimport { MdSelectOption } from '@scopedelement/material-web/select/MdSelectOption.js';\nimport { MdTextButton } from '@scopedelement/material-web/button/MdTextButton.js';\n\nimport { wizards } from './wizards/wizards.js';\n\nimport { Wizard, WizardActor, WizardInputElement } from './foundation.js';\nimport OscdTextEditor, {\n formatXml,\n newOscdTextEditV2,\n serializeXml,\n} from './OscdTextEditor.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nexport type EditWizard = {\n element: Element;\n};\n\nexport type CreateWizard = {\n parent: Element;\n tagName: string;\n};\n\nexport type WizardType = EditWizard | CreateWizard;\n\nfunction isCreateWizard(wizardType: unknown): wizardType is CreateWizard {\n return (\n 'parent' in (wizardType as CreateWizard) &&\n 'tagName' in (wizardType as CreateWizard)\n );\n}\n\nfunction isEditWizard(wizardType: unknown): wizardType is EditWizard {\n return (\n !!wizardType &&\n 'element' in (wizardType as EditWizard) &&\n (wizardType as EditWizard).element instanceof Element\n );\n}\n\nfunction getWizard(wizardType: WizardType): Wizard | undefined {\n if (isCreateWizard(wizardType)) {\n const { parent, tagName } = wizardType;\n const wizard = wizards[tagName].create(parent);\n return wizard;\n }\n\n if (isEditWizard(wizardType)) {\n const { element } = wizardType;\n const wizard = wizards[element.tagName].edit(element);\n\n return wizard;\n }\n\n return undefined;\n}\n\nfunction wizardContent(wizardType: WizardType | null): TemplateResult[] {\n return (\n (wizardType && getWizard(wizardType)?.content) || [\n html`<div>Invalid wizard type definition</div>`,\n ]\n );\n}\n\nfunction wizardTitle(wizardType: WizardType | null): string {\n return (\n (wizardType && getWizard(wizardType)?.title) ||\n 'Invalid wizard type definition'\n );\n}\n\nfunction wizardAction(wizardType: WizardType): WizardActor | undefined {\n if (!wizardType) {\n return undefined;\n }\n return getWizard(wizardType)?.primary?.action;\n}\n\nclass BaseElement extends ScopedElementsMixin(LitElement) {}\n\nexport default class OscdSclDialogs extends BaseElement {\n @property({ type: Object })\n wizardType: EditWizard | CreateWizard | null = null;\n\n private dialogClosePromise: {\n resolve: (value: EditV2[]) => void;\n reject: () => void;\n } | null = null;\n\n static scopedElements = {\n 'md-dialog': MdDialog,\n 'md-text-button': MdTextButton,\n 'md-filled-button': MdFilledButton,\n 'scl-checkbox': SclCheckbox,\n 'scl-text-field': SclTextField,\n 'scl-select': SclSelect,\n 'md-filled-textfield': MdFilledTextField,\n 'md-filled-select': MdFilledSelect,\n 'md-select-option': MdSelectOption,\n 'md-icon-button': MdIconButton,\n 'md-icon': MdIcon,\n 'selection-list': SelectionList,\n 'action-list': ActionList,\n 'md-list': MdList,\n 'md-list-item': MdListItem,\n 'oscd-text-editor': OscdTextEditor,\n };\n\n @state()\n private editorMode: boolean = false;\n\n @query('md-dialog')\n dialog!: MdDialog;\n\n @query('oscd-text-editor')\n textEditor!: OscdTextEditor;\n\n @queryAll(\n 'scl-text-field, scl-select, scl-checkbox, md-filled-textfield, md-filled-select',\n )\n inputs!: WizardInputElement[];\n\n @state()\n private initialEditorText: string | undefined;\n\n @state()\n private currentEditorText: string | undefined;\n\n private checkValidity(): boolean {\n return Array.from(this.inputs).every(input => input.checkValidity());\n }\n\n private reportValidity(): void {\n this.inputs.forEach(input => {\n input.reportValidity();\n });\n }\n\n async create(wizardType: CreateWizard): Promise<EditV2[]> {\n this.wizardType = wizardType;\n let edits: EditV2[] = [];\n try {\n edits = await new Promise<EditV2[]>((resolve, reject) => {\n this.dialogClosePromise = { resolve, reject };\n\n this.dialog.show();\n });\n } catch {\n // ignore\n }\n this.close();\n return edits;\n }\n\n async edit(wizardType: EditWizard): Promise<EditV2[]> {\n this.wizardType = wizardType;\n let edits: EditV2[] = [];\n this.initialEditorText = formatXml(serializeXml(this.wizardType.element));\n try {\n edits = await new Promise<EditV2[]>((resolve, reject) => {\n this.dialogClosePromise = { resolve, reject };\n\n this.dialog.show();\n });\n this.close();\n } catch {\n // ignore\n }\n return edits;\n }\n\n /**\n * Close triggers the dialog to close, which in turn triggers the `closed` event that resets the state of the dialog.\n * Why? Because click-away will also close the dialog - no matter how it closes, we want to reset.\n */\n close(): void {\n this.dialog.close();\n }\n\n /**\n * No need to call this directly as the `closed` event will trigger a reset of the dialog's state, but this can be\n * used to manually reset the dialog if needed.\n */\n reset(): void {\n this.editorMode = false;\n this.initialEditorText = undefined;\n this.currentEditorText = undefined;\n this.wizardType = null;\n this.inputs.forEach(input => {\n input.value = '';\n if ('setCustomValidity' in input) {\n input.setCustomValidity('');\n }\n input.reportValidity();\n });\n }\n\n private async applyTextEdits(): Promise<void> {\n if (\n !this.wizardType ||\n !isEditWizard(this.wizardType) ||\n !this.currentEditorText ||\n this.currentEditorText === this.initialEditorText\n ) {\n return;\n }\n\n const element = this.wizardType.element;\n const edits = newOscdTextEditV2({\n element,\n newText: this.currentEditorText,\n });\n if (edits) {\n this.dialogClosePromise?.resolve(edits);\n }\n\n this.close();\n }\n\n private async applyFormValues(action?: WizardActor): Promise<boolean> {\n if (action === undefined) {\n return false;\n }\n\n if (!this.checkValidity()) {\n this.reportValidity();\n return false;\n }\n\n const edits = action(Array.from(this.inputs), this.dialog);\n this.dialogClosePromise?.resolve(edits);\n return true;\n }\n\n private handleToggleEditorMode(): void {\n if (this.editorMode && this.currentEditorText !== this.initialEditorText) {\n const confirmLeave = window.confirm(\n 'You have unsaved changes. Are you sure you want to switch to form view? Your changes will be lost.',\n );\n if (!confirmLeave) {\n return;\n }\n }\n this.editorMode = !this.editorMode;\n // Until we can safely sync edits between the Form and the Editor, we will need to\n // reset the editor text. If the user navigated away from the Editor mode with changes\n // they were already warned those changes would be lost.\n if (this.editorMode && isEditWizard(this.wizardType)) {\n this.currentEditorText = this.initialEditorText;\n }\n }\n\n render(): TemplateResult {\n return html`<div>\n <md-dialog\n class=\"${classMap({\n 'editor-mode': this.editorMode,\n })}\"\n @closed=\"${() => {\n this.reset();\n }}\"\n @cancel=\"${() => {\n this.dialogClosePromise?.reject();\n }}\"\n >\n <div slot=\"headline\" class=\"dialog-header\">\n <span class=\"title\">${wizardTitle(this.wizardType)}</span>\n\n <span class=\"header-actions\">\n <md-icon-button\n ?disabled=\"${!isEditWizard(this.wizardType)}\"\n aria-label=\"Code\"\n @click=\"${() => this.handleToggleEditorMode()}\"\n >\n <md-icon>code</md-icon>\n </md-icon-button>\n </span>\n </div>\n <form slot=\"content\" method=\"dialog\">\n ${this.editorMode\n ? html`<div class=\"editor-content\">\n <oscd-text-editor\n .value=${this.initialEditorText}\n @change=${(e: CustomEvent<string>) => {\n this.currentEditorText = e.detail;\n }}\n ></oscd-text-editor>\n </div>`\n : html`<div class=\"wizard-content\">\n ${wizardContent(this.wizardType)}\n </div>`}\n </form>\n <div slot=\"actions\">\n <md-text-button\n id=\"close-button\"\n form=\"add-data-object\"\n @click=\"${(event: Event) => {\n event.stopImmediatePropagation();\n this.close();\n }}\"\n >Cancel</md-text-button\n >\n <md-filled-button\n form=\"add-data-object\"\n @click=${() =>\n this.editorMode\n ? this.applyTextEdits()\n : this.applyFormValues(wizardAction(this.wizardType!))}\n >Save</md-filled-button\n >\n </div>\n </md-dialog>\n </div>`;\n }\n\n static styles = css`\n *,\n md-filled-button * {\n --md-dialog-container-color: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n --md-dialog-headline-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-dialog-headline-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n --md-dialog-supporting-text-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-dialog-supporting-text-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n\n --md-sys-color-primary: var(--wizard-dialog-primary, var(--oscd-primary));\n --md-sys-color-secondary: var(\n --wizard-dialog-secondary,\n var(--oscd-secondary)\n );\n --md-sys-typescale-body-large-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n\n --md-sys-color-surface-container-highest: var(\n --wizard-dailog-input-background-color,\n var(--oscd-base3)\n );\n --md-outlined-text-field-input-text-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-sys-color-on-surface: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-sys-color-on-primary: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n\n --md-sys-color-surface: var(--wizard-dialog-surface, var(--oscd-base3));\n --md-sys-color-on-surface-variant: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n\n --md-menu-container-color: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n\n --md-menu-item-selected-container-color: rgb(\n from var(--wizard-dialog-primary, var(--oscd-primary)) r g b / 0.38\n );\n }\n\n md-dialog {\n --md-dialog-container-max-height: 100%;\n --md-dialog-container-max-width: 100%;\n }\n\n md-dialog.editor-mode {\n width: 80%;\n height: 80%;\n }\n\n .dialog-header {\n display: flex;\n align-items: center;\n }\n\n .dialog-header .title {\n flex: 1;\n }\n\n .editor-mode form,\n .editor-content,\n .editor-content oscd-text-editor {\n height: 100%;\n }\n\n .editor-mode form {\n padding-inline: 0px;\n }\n\n .editor-mode form .editor-content {\n border-top: 1px solid var(--oscd-base0);\n border-bottom: 1px solid var(--oscd-base0);\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}\n"]}
1
+ {"version":3,"file":"OscdSclDialogs.js","sourceRoot":"","sources":["../OscdSclDialogs.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { SclCheckbox } from '@openenergytools/scl-checkbox';\nimport { SclSelect } from '@openenergytools/scl-select';\nimport { SclTextField } from '@openenergytools/scl-text-field';\n\nimport { ActionList } from '@openenergytools/filterable-lists/dist/ActionList.js';\nimport { SelectionList } from '@openenergytools/filterable-lists/dist/SelectionList.js';\n\nimport { MdDialog } from '@scopedelement/material-web/dialog/MdDialog.js';\nimport { MdFilledSelect } from '@scopedelement/material-web/select/MdFilledSelect.js';\nimport { MdFilledTextField } from '@scopedelement/material-web/textfield/MdFilledTextField.js';\nimport { MdIcon } from '@scopedelement/material-web/icon/MdIcon.js';\nimport { MdIconButton } from '@scopedelement/material-web/iconbutton/MdIconButton.js';\nimport { MdFilledButton } from '@scopedelement/material-web/button/MdFilledButton.js';\nimport { MdOutlinedButton } from '@scopedelement/material-web/button/MdOutlinedButton.js';\nimport { MdList } from '@scopedelement/material-web/list/MdList.js';\nimport { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';\nimport { MdSelectOption } from '@scopedelement/material-web/select/MdSelectOption.js';\nimport { MdTextButton } from '@scopedelement/material-web/button/MdTextButton.js';\n\nimport { wizards } from './wizards/wizards.js';\n\nimport { Wizard, WizardActor, WizardInputElement } from './foundation.js';\nimport OscdTextEditor, {\n formatXml,\n newOscdTextEditV2,\n serializeXml,\n} from './OscdTextEditor.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nexport type EditWizard = {\n element: Element;\n};\n\nexport type CreateWizard = {\n parent: Element;\n tagName: string;\n};\n\nexport type WizardType = EditWizard | CreateWizard;\n\nfunction isCreateWizard(wizardType: unknown): wizardType is CreateWizard {\n return (\n 'parent' in (wizardType as CreateWizard) &&\n 'tagName' in (wizardType as CreateWizard)\n );\n}\n\nfunction isEditWizard(wizardType: unknown): wizardType is EditWizard {\n return (\n !!wizardType &&\n 'element' in (wizardType as EditWizard) &&\n (wizardType as EditWizard).element instanceof Element\n );\n}\n\nfunction getWizard(wizardType: WizardType): Wizard | undefined {\n if (isCreateWizard(wizardType)) {\n const { parent, tagName } = wizardType;\n const wizard = wizards[tagName].create(parent);\n return wizard;\n }\n\n if (isEditWizard(wizardType)) {\n const { element } = wizardType;\n const wizard = wizards[element.tagName].edit(element);\n\n return wizard;\n }\n\n return undefined;\n}\n\nfunction wizardContent(wizardType: WizardType | null): TemplateResult[] {\n const wizard = wizardType && getWizard(wizardType);\n\n if (wizard?.content) {\n return wizard.content;\n }\n\n if (wizardType && isCreateWizard(wizardType)) {\n return [\n html`<div>\n Creating <strong>${wizardType.tagName}</strong> is not yet supported.\n </div>`,\n ];\n }\n\n if (wizardType && isEditWizard(wizardType)) {\n return [\n html`<div class=\"unsupported-message\">\n <p>\n Editing <strong>${wizardType.element.tagName}</strong> Elements is not\n yet supported.\n </p>\n </div>`,\n ];\n }\n\n return [html`<div>Invalid wizard type definition</div>`];\n}\n\nfunction wizardTitle(wizardType: WizardType | null): string {\n const wizard = wizardType && getWizard(wizardType);\n\n if (wizard?.title) {\n return wizard.title;\n }\n\n if (wizardType && isCreateWizard(wizardType)) {\n return `Add ${wizardType.tagName}`;\n }\n\n if (wizardType && isEditWizard(wizardType)) {\n return `Edit ${wizardType.element.tagName}`;\n }\n\n return 'Error';\n}\n\nfunction wizardAction(wizardType: WizardType): WizardActor | undefined {\n if (!wizardType) {\n return undefined;\n }\n return getWizard(wizardType)?.primary?.action;\n}\n\nclass BaseElement extends ScopedElementsMixin(LitElement) {}\n\nexport default class OscdSclDialogs extends BaseElement {\n @property({ type: Object })\n wizardType: EditWizard | CreateWizard | null = null;\n\n private dialogClosePromise: {\n resolve: (value: EditV2[]) => void;\n reject: () => void;\n } | null = null;\n\n static scopedElements = {\n 'md-dialog': MdDialog,\n 'md-text-button': MdTextButton,\n 'md-filled-button': MdFilledButton,\n 'md-outlined-button': MdOutlinedButton,\n 'scl-checkbox': SclCheckbox,\n 'scl-text-field': SclTextField,\n 'scl-select': SclSelect,\n 'md-filled-textfield': MdFilledTextField,\n 'md-filled-select': MdFilledSelect,\n 'md-select-option': MdSelectOption,\n 'md-icon-button': MdIconButton,\n 'md-icon': MdIcon,\n 'selection-list': SelectionList,\n 'action-list': ActionList,\n 'md-list': MdList,\n 'md-list-item': MdListItem,\n 'oscd-text-editor': OscdTextEditor,\n };\n\n @state()\n private editorMode: boolean = false;\n\n @query('md-dialog')\n dialog!: MdDialog;\n\n @query('oscd-text-editor')\n textEditor!: OscdTextEditor;\n\n @queryAll(\n 'scl-text-field, scl-select, scl-checkbox, md-filled-textfield, md-filled-select',\n )\n inputs!: WizardInputElement[];\n\n @state()\n private initialEditorText: string | undefined;\n\n @state()\n private currentEditorText: string | undefined;\n\n private checkValidity(): boolean {\n return Array.from(this.inputs).every(input => input.checkValidity());\n }\n\n private reportValidity(): void {\n this.inputs.forEach(input => {\n input.reportValidity();\n });\n }\n\n async create(wizardType: CreateWizard): Promise<EditV2[]> {\n this.wizardType = wizardType;\n let edits: EditV2[] = [];\n try {\n edits = await new Promise<EditV2[]>((resolve, reject) => {\n this.dialogClosePromise = { resolve, reject };\n\n this.dialog.show();\n });\n } catch {\n // ignore\n }\n this.close();\n return edits;\n }\n\n async edit(wizardType: EditWizard): Promise<EditV2[]> {\n this.wizardType = wizardType;\n let edits: EditV2[] = [];\n this.initialEditorText = formatXml(serializeXml(this.wizardType.element));\n try {\n edits = await new Promise<EditV2[]>((resolve, reject) => {\n this.dialogClosePromise = { resolve, reject };\n\n this.dialog.show();\n });\n this.close();\n } catch {\n // ignore\n }\n return edits;\n }\n\n /**\n * Close triggers the dialog to close, which in turn triggers the `closed` event that resets the state of the dialog.\n * Why? Because click-away will also close the dialog - no matter how it closes, we want to reset.\n */\n close(): void {\n this.dialog.close();\n }\n\n /**\n * No need to call this directly as the `closed` event will trigger a reset of the dialog's state, but this can be\n * used to manually reset the dialog if needed.\n */\n reset(): void {\n this.editorMode = false;\n this.initialEditorText = undefined;\n this.currentEditorText = undefined;\n this.wizardType = null;\n this.inputs.forEach(input => {\n input.value = '';\n if ('setCustomValidity' in input) {\n input.setCustomValidity('');\n }\n input.reportValidity();\n });\n }\n\n private async applyTextEdits(): Promise<void> {\n if (\n !this.wizardType ||\n !isEditWizard(this.wizardType) ||\n !this.currentEditorText ||\n this.currentEditorText === this.initialEditorText\n ) {\n return;\n }\n\n const element = this.wizardType.element;\n const edits = newOscdTextEditV2({\n element,\n newText: this.currentEditorText,\n });\n if (edits) {\n this.dialogClosePromise?.resolve(edits);\n }\n\n this.close();\n }\n\n private async applyFormValues(action?: WizardActor): Promise<boolean> {\n if (action === undefined) {\n return false;\n }\n\n if (!this.checkValidity()) {\n this.reportValidity();\n return false;\n }\n\n const edits = action(Array.from(this.inputs), this.dialog);\n this.dialogClosePromise?.resolve(edits);\n return true;\n }\n\n private handleToggleEditorMode(): void {\n if (this.editorMode && this.currentEditorText !== this.initialEditorText) {\n const confirmLeave = window.confirm(\n 'You have unsaved changes. Are you sure you want to switch to form view? Your changes will be lost.',\n );\n if (!confirmLeave) {\n return;\n }\n }\n this.editorMode = !this.editorMode;\n // Until we can safely sync edits between the Form and the Editor, we will need to\n // reset the editor text. If the user navigated away from the Editor mode with changes\n // they were already warned those changes would be lost.\n if (this.editorMode && isEditWizard(this.wizardType)) {\n this.currentEditorText = this.initialEditorText;\n }\n }\n\n render(): TemplateResult {\n return html`<div>\n <md-dialog\n class=\"${classMap({\n 'editor-mode': this.editorMode,\n })}\"\n @closed=\"${() => {\n this.reset();\n }}\"\n @cancel=\"${() => {\n this.dialogClosePromise?.reject();\n }}\"\n >\n <div slot=\"headline\" class=\"dialog-header\">\n <span class=\"title\">${wizardTitle(this.wizardType)}</span>\n\n <span class=\"header-actions\">\n <md-icon-button\n ?disabled=\"${!isEditWizard(this.wizardType)}\"\n aria-label=\"Code\"\n @click=\"${() => this.handleToggleEditorMode()}\"\n >\n <md-icon>code</md-icon>\n </md-icon-button>\n </span>\n </div>\n <form slot=\"content\" method=\"dialog\">\n ${this.editorMode\n ? html`<div class=\"editor-content\">\n <oscd-text-editor\n .value=${this.initialEditorText}\n @change=${(e: CustomEvent<string>) => {\n this.currentEditorText = e.detail;\n }}\n ></oscd-text-editor>\n </div>`\n : html`<div class=\"wizard-content\">\n ${wizardContent(this.wizardType)}\n </div>`}\n </form>\n <div slot=\"actions\">\n <md-text-button\n id=\"close-button\"\n form=\"add-data-object\"\n @click=\"${(event: Event) => {\n event.stopImmediatePropagation();\n this.close();\n }}\"\n >Cancel</md-text-button\n >\n ${!this.editorMode && !(this.wizardType && getWizard(this.wizardType))\n ? html`<md-outlined-button\n @click=\"${(event: Event) => {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.editorMode = true;\n }}\"\n >Use Editor</md-outlined-button\n >`\n : html`<md-filled-button\n form=\"add-data-object\"\n @click=${() =>\n this.editorMode\n ? this.applyTextEdits()\n : this.applyFormValues(wizardAction(this.wizardType!))}\n >Save</md-filled-button\n >`}\n </div>\n </md-dialog>\n </div>`;\n }\n\n static styles = css`\n *,\n md-filled-button * {\n --md-dialog-container-color: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n --md-dialog-headline-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-dialog-headline-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n --md-dialog-supporting-text-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-dialog-supporting-text-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n\n --md-sys-color-primary: var(--wizard-dialog-primary, var(--oscd-primary));\n --md-sys-color-secondary: var(\n --wizard-dialog-secondary,\n var(--oscd-secondary)\n );\n --md-sys-typescale-body-large-font: var(\n --wizard-dialog-text-font,\n var(--oscd-text-font)\n );\n\n --md-sys-color-surface-container-highest: var(\n --wizard-dailog-input-background-color,\n var(--oscd-base3)\n );\n --md-outlined-text-field-input-text-color: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-sys-color-on-surface: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n --md-sys-color-on-primary: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n\n --md-sys-color-surface: var(--wizard-dialog-surface, var(--oscd-base3));\n --md-sys-color-on-surface-variant: var(\n --wizard-dialog-text-color,\n var(--oscd-base00)\n );\n\n --md-menu-container-color: var(\n --wizard-dialog-background-color,\n var(--oscd-base3)\n );\n\n --md-menu-item-selected-container-color: rgb(\n from var(--wizard-dialog-primary, var(--oscd-primary)) r g b / 0.38\n );\n }\n\n md-dialog {\n --md-dialog-container-max-height: 100%;\n --md-dialog-container-max-width: 100%;\n }\n\n md-dialog.editor-mode {\n width: 80%;\n height: 80%;\n }\n\n .dialog-header {\n display: flex;\n align-items: center;\n }\n\n .dialog-header .title {\n flex: 1;\n }\n\n .editor-mode form,\n .editor-content,\n .editor-content oscd-text-editor {\n height: 100%;\n }\n\n .editor-mode form {\n padding-inline: 0px;\n }\n\n .editor-mode form .editor-content {\n border-top: 1px solid var(--oscd-base0);\n border-bottom: 1px solid var(--oscd-base0);\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 .unsupported-message {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n }\n\n .unsupported-message md-outlined-button {\n align-self: flex-end;\n }\n `;\n}\n"]}
@@ -1,16 +1,6 @@
1
1
  import { LitElement, type PropertyValueMap, PropertyValues } from 'lit';
2
- import type * as AceGlobal from 'ace-builds';
3
- import 'ace-builds/src-noconflict/ace.js';
4
- import 'ace-builds/src-noconflict/theme-sqlserver.js';
5
- import 'ace-builds/src-noconflict/mode-xml.js';
6
- import 'ace-builds/src-noconflict/ext-searchbox.js';
7
2
  import AceEditor from './ace-editor/AceEditor.js';
8
3
  import { EditV2 } from '@openscd/oscd-api';
9
- declare global {
10
- interface Window {
11
- ace: typeof AceGlobal;
12
- }
13
- }
14
4
  export declare function parseXml(xml: string): XMLDocument;
15
5
  export declare function serializeXml(xml: XMLDocument | Element): string;
16
6
  export declare function formatXml(rawXml: string | undefined, initialIndent?: string): string;
@@ -2,10 +2,6 @@ import { __decorate } from "tslib";
2
2
  import { LitElement, html, css, } from 'lit';
3
3
  import { property, query } from 'lit/decorators.js';
4
4
  import { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';
5
- import 'ace-builds/src-noconflict/ace.js';
6
- import 'ace-builds/src-noconflict/theme-sqlserver.js';
7
- import 'ace-builds/src-noconflict/mode-xml.js';
8
- import 'ace-builds/src-noconflict/ext-searchbox.js';
9
5
  import AceEditor from './ace-editor/AceEditor.js';
10
6
  const serializer = new XMLSerializer();
11
7
  const parser = new DOMParser();
@@ -1 +1 @@
1
- {"version":3,"file":"OscdTextEditor.js","sourceRoot":"","sources":["../OscdTextEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n html,\n css,\n type PropertyValueMap,\n PropertyValues,\n} from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\nimport type * as AceGlobal from 'ace-builds';\nimport 'ace-builds/src-noconflict/ace.js';\nimport 'ace-builds/src-noconflict/theme-sqlserver.js';\nimport 'ace-builds/src-noconflict/mode-xml.js';\nimport 'ace-builds/src-noconflict/ext-searchbox.js';\n\nimport AceEditor from './ace-editor/AceEditor.js';\n\nimport { EditV2 } from '@openscd/oscd-api';\n\ndeclare global {\n interface Window {\n ace: typeof AceGlobal;\n }\n}\n\nconst serializer = new XMLSerializer();\nconst parser = new DOMParser();\n\nconst ACE_DEFAULT_OPTIONS = {\n fontSize: '14',\n theme: 'ace/theme/sqlserver',\n mode: 'ace/mode/xml',\n};\nconst storageKey = 'oscd:ace-options';\n\nconst getStoredAceOptions = (): Omit<\n Partial<AceGlobal.Ace.EditorOptions>,\n 'theme' | 'mode'\n> &\n Pick<AceGlobal.Ace.EditorOptions, 'theme' | 'mode'> => {\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored) {\n return {\n ...ACE_DEFAULT_OPTIONS,\n ...JSON.parse(stored),\n };\n }\n } catch (error) {\n console.warn('Failed to retrieve Ace options from storage:', error);\n }\n return ACE_DEFAULT_OPTIONS;\n};\n\nlet aceOptions = getStoredAceOptions();\n\nfunction manageAceOptionChange(editor: AceGlobal.Ace.Editor) {\n editor.setOptions(aceOptions);\n\n const originalSetOption = editor.setOption.bind(editor);\n const originalSetOptions = editor.setOptions.bind(editor);\n const persistOptions = () => {\n try {\n aceOptions = {\n ...ACE_DEFAULT_OPTIONS,\n ...editor.getOptions(),\n };\n localStorage.setItem(storageKey, JSON.stringify(aceOptions));\n } catch (error) {\n console.warn('Failed to store Ace options:', error);\n }\n };\n\n editor.setOption = (name: string, value: unknown) => {\n originalSetOption(\n name as keyof AceGlobal.Ace.EditorOptions,\n value as never,\n );\n persistOptions();\n };\n\n editor.setOptions = (options: Partial<AceGlobal.Ace.EditorOptions>) => {\n originalSetOptions(options);\n persistOptions();\n };\n}\n\nexport function parseXml(xml: string): XMLDocument {\n const parsed = parser.parseFromString(xml, 'application/xml');\n const parseError = parsed.querySelector('parsererror');\n if (parseError) {\n const error = new Error(parseError.textContent ?? 'Invalid XML');\n console.error('XML Parsing Error:', error);\n }\n return parsed;\n}\n\nexport function serializeXml(xml: XMLDocument | Element): string {\n return serializer.serializeToString(xml);\n}\n\nexport function formatXml(\n rawXml: string | undefined,\n initialIndent: string = '',\n): string {\n if (!rawXml) {\n return '';\n }\n\n // Trim leading and trailing whitespace to avoid injecting extra < or >\n const xml = rawXml.trim();\n\n let formatted = '';\n let indent = '';\n\n const tab = '\\t';\n const nodes = xml.split(/>\\s*</);\n nodes.forEach(function (node, index) {\n // Remove leading < from first node and trailing > from last node. Allow for selection leading or trailing whitespace.\n if (index === 0) {\n node = node.replace(/^\\s*</, '');\n }\n if (index === nodes.length - 1) {\n node = node.replace(/>\\s*$/, '');\n }\n\n if (node.match(/^\\/\\w/)) {\n indent = indent.substring(tab!.length);\n }\n formatted += initialIndent + indent + '<' + node + '>\\r\\n';\n if (node.match(/^<?\\w[^>]*[^/]$/)) {\n indent += tab;\n }\n });\n\n return formatted.trim();\n}\n\nexport function newOscdTextEditV2({\n element,\n newText,\n}: {\n element: Element;\n newText: string;\n}): EditV2[] | null {\n let newDoc: XMLDocument | null = null;\n try {\n newDoc = newText ? parseXml(newText) : null;\n } catch (error) {\n console.error('Failed to parse XML:', error);\n return null;\n }\n if (element) {\n // get the parent and if we don't have a parent, use the documentElement\n const parent = element.parentElement ?? element.ownerDocument;\n const nextSibling = element.nextSibling ?? null;\n const newElement = newDoc\n ? element.ownerDocument.importNode(newDoc?.documentElement, true)\n : null;\n\n return [\n { node: element },\n ...(newElement\n ? [\n {\n node: newElement,\n parent,\n reference: nextSibling,\n },\n ]\n : []),\n ] as EditV2[];\n }\n return null;\n}\n\nclass BaseElement extends ScopedElementsMixin(LitElement) {}\n\n/**\n * Intent is to keep this generic so it can be migrated to oscd-ui.\n */\nexport default class OscdTextEditor extends BaseElement {\n static scopedElements = {\n // Left here for clarity sake. We need to dyn-import this so we have a chance of overriding the customElements.define to prevent\n // ace-editor from being registered globally and causing issues with other instances of ace-editor in the same document.\n 'ace-editor': AceEditor,\n };\n\n // constructor() {\n // super();\n // // Special handling to prevent ace-editor from being registered globally, which would cause issues with multiple instances in the same document.\n // // This will all go away once the oscd-ui version is implemented and this project is migrated to oscd-ui\n // const customElementsDefineFn = window.customElements.define;\n // window.customElements.define = (name, constructor) => {\n // if (name !== 'ace-editor') {\n // return customElementsDefineFn(name, constructor);\n // }\n // };\n // import('ace-custom-element').then(AceEditor => {\n // if (!this.registry?.get('ace-editor')) {\n // this.registry?.define('ace-editor', AceEditor.default);\n // this.requestUpdate();\n // }\n // });\n // }\n\n @property()\n value: string | undefined;\n\n @query('ace-editor')\n aceEditor!: AceEditor;\n\n public format() {\n const rawXml =\n this.aceEditor?.editor?.getSelectedText() ||\n this.aceEditor.editor?.getValue() ||\n this.value ||\n '';\n\n let initialIndent = '';\n if (this.aceEditor?.editor?.getSelectedText()) {\n const range = this.aceEditor.editor.getSelectionRange();\n // Get the starting line of the selection and detect its leading whitespace\n const startLine = range.start.row;\n const lineContent = this.aceEditor.editor.session.getLine(startLine);\n initialIndent = lineContent.match(/^(\\s*)/)?.[1] || '';\n }\n\n const formatted = formatXml(rawXml, initialIndent);\n if (this.aceEditor?.editor?.getSelectedText()) {\n const range = this.aceEditor.editor.getSelectionRange();\n // Remove the trailing \\r\\n\n this.aceEditor.editor.session.replace(\n range,\n formatted.substring(0, formatted.length - 2),\n );\n } else {\n this.value = formatted;\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n window.ace?.config?.addEventListener?.('editor', manageAceOptionChange);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.ace?.config?.removeEventListener?.('editor', manageAceOptionChange);\n }\n\n private handleAceChange(e: CustomEvent<string>): void {\n if (typeof e.detail !== 'string') {\n return;\n }\n\n if (this.value !== e.detail) {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: e.detail,\n }),\n );\n }\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n this.clearSelection();\n }\n\n private clearSelection() {\n // Clear selection when content updates\n setTimeout(() => {\n /* For reasons unknown the ace editor initially selects all code, so we need to clear that*/\n const editor = this.aceEditor.editor;\n if (editor) {\n editor.selection.clearSelection();\n editor.moveCursorTo(0, 0);\n }\n }, 100);\n }\n\n protected updated(changedProps: PropertyValueMap<OscdTextEditor>): void {\n if (changedProps.has('value')) {\n const editor = this.aceEditor.editor;\n\n if (!editor) {\n return;\n }\n\n // Only update if content actually changed (prevents cursor jump)\n // if (editor.getValue() !== this.value) {\n // editor.setValue(this.value ?? '');\n // }\n\n editor.selection.clearSelection();\n editor.moveCursorTo(0, 0);\n }\n }\n\n render() {\n return html`\n <ace-editor\n .value=${this.value}\n mode=${aceOptions.mode}\n theme=${aceOptions.theme}\n @change=${(e: CustomEvent<string>) => {\n this.handleAceChange(e);\n }}\n >\n </ace-editor>\n `;\n }\n\n static styles = css`\n :host {\n height: 100%;\n width: 100%;\n overflow: auto;\n }\n\n ace-editor {\n height: 100%;\n width: 100%;\n }\n `;\n}\n"]}
1
+ {"version":3,"file":"OscdTextEditor.js","sourceRoot":"","sources":["../OscdTextEditor.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,IAAI,EACJ,GAAG,GAGJ,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAI9E,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAIlD,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;AACvC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;AAE/B,MAAM,mBAAmB,GAAG;IAC1B,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,cAAc;CACrB,CAAC;AACF,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAEtC,MAAM,mBAAmB,GAAG,GAI0B,EAAE;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,GAAG,mBAAmB;gBACtB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAEF,IAAI,UAAU,GAAG,mBAAmB,EAAE,CAAC;AAEvC,SAAS,qBAAqB,CAAC,MAA4B;IACzD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE9B,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC;YACH,UAAU,GAAG;gBACX,GAAG,mBAAmB;gBACtB,GAAG,MAAM,CAAC,UAAU,EAAE;aACvB,CAAC;YACF,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE;QAClD,iBAAiB,CACf,IAAyC,EACzC,KAAc,CACf,CAAC;QACF,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,CAAC,OAA6C,EAAE,EAAE;QACpE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAA0B;IACrD,OAAO,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAA0B,EAC1B,gBAAwB,EAAE;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uEAAuE;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE1B,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,KAAK;QACjC,sHAAsH;QACtH,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,SAAS,IAAI,aAAa,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,EACP,OAAO,GAIR;IACC,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,wEAAwE;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;QAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM;YACvB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,EAAE,IAAI,EAAE,OAAO,EAAE;YACjB,GAAG,CAAC,UAAU;gBACZ,CAAC,CAAC;oBACE;wBACE,IAAI,EAAE,UAAU;wBAChB,MAAM;wBACN,SAAS,EAAE,WAAW;qBACvB;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAY,SAAQ,mBAAmB,CAAC,UAAU,CAAC;CAAG;AAE5D;;GAEG;AACH,MAAqB,cAAe,SAAQ,WAAW;IA+B9C,MAAM;QACX,MAAM,MAAM,GACV,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE;YACzC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE;YACjC,IAAI,CAAC,KAAK;YACV,EAAE,CAAC;QAEL,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,2EAA2E;YAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,2BAA2B;YAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CACnC,KAAK,EACL,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAC7E,CAAC;IAEO,eAAe,CAAC,CAAsB;QAC5C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;gBACxB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAES,YAAY,CAAC,kBAAkC;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,cAAc;QACpB,uCAAuC;QACvC,UAAU,CAAC,GAAG,EAAE;YACd,4FAA4F;YAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAES,OAAO,CAAC,YAA8C;QAC9D,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAErC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,iEAAiE;YACjE,0CAA0C;YAC1C,uCAAuC;YACvC,IAAI;YAEJ,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAClC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,KAAK;eACZ,UAAU,CAAC,IAAI;gBACd,UAAU,CAAC,KAAK;kBACd,CAAC,CAAsB,EAAE,EAAE;YACnC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;;;KAGJ,CAAC;IACJ,CAAC;;AAjIM,6BAAc,GAAG;IACtB,gIAAgI;IAChI,wHAAwH;IACxH,YAAY,EAAE,SAAS;CACxB,CAAC;AA+HK,qBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;GAWlB,CAAC;eA/IiB,cAAc;AA0BjC;IADC,QAAQ,EAAE;6CACe;AAG1B;IADC,KAAK,CAAC,YAAY,CAAC;iDACE","sourcesContent":["import {\n LitElement,\n html,\n css,\n type PropertyValueMap,\n PropertyValues,\n} from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements/lit-element.js';\n\nimport type * as AceGlobal from 'ace-builds';\n\nimport AceEditor from './ace-editor/AceEditor.js';\n\nimport { EditV2 } from '@openscd/oscd-api';\n\nconst serializer = new XMLSerializer();\nconst parser = new DOMParser();\n\nconst ACE_DEFAULT_OPTIONS = {\n fontSize: '14',\n theme: 'ace/theme/sqlserver',\n mode: 'ace/mode/xml',\n};\nconst storageKey = 'oscd:ace-options';\n\nconst getStoredAceOptions = (): Omit<\n Partial<AceGlobal.Ace.EditorOptions>,\n 'theme' | 'mode'\n> &\n Pick<AceGlobal.Ace.EditorOptions, 'theme' | 'mode'> => {\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored) {\n return {\n ...ACE_DEFAULT_OPTIONS,\n ...JSON.parse(stored),\n };\n }\n } catch (error) {\n console.warn('Failed to retrieve Ace options from storage:', error);\n }\n return ACE_DEFAULT_OPTIONS;\n};\n\nlet aceOptions = getStoredAceOptions();\n\nfunction manageAceOptionChange(editor: AceGlobal.Ace.Editor) {\n editor.setOptions(aceOptions);\n\n const originalSetOption = editor.setOption.bind(editor);\n const originalSetOptions = editor.setOptions.bind(editor);\n const persistOptions = () => {\n try {\n aceOptions = {\n ...ACE_DEFAULT_OPTIONS,\n ...editor.getOptions(),\n };\n localStorage.setItem(storageKey, JSON.stringify(aceOptions));\n } catch (error) {\n console.warn('Failed to store Ace options:', error);\n }\n };\n\n editor.setOption = (name: string, value: unknown) => {\n originalSetOption(\n name as keyof AceGlobal.Ace.EditorOptions,\n value as never,\n );\n persistOptions();\n };\n\n editor.setOptions = (options: Partial<AceGlobal.Ace.EditorOptions>) => {\n originalSetOptions(options);\n persistOptions();\n };\n}\n\nexport function parseXml(xml: string): XMLDocument {\n const parsed = parser.parseFromString(xml, 'application/xml');\n const parseError = parsed.querySelector('parsererror');\n if (parseError) {\n const error = new Error(parseError.textContent ?? 'Invalid XML');\n console.error('XML Parsing Error:', error);\n }\n return parsed;\n}\n\nexport function serializeXml(xml: XMLDocument | Element): string {\n return serializer.serializeToString(xml);\n}\n\nexport function formatXml(\n rawXml: string | undefined,\n initialIndent: string = '',\n): string {\n if (!rawXml) {\n return '';\n }\n\n // Trim leading and trailing whitespace to avoid injecting extra < or >\n const xml = rawXml.trim();\n\n let formatted = '';\n let indent = '';\n\n const tab = '\\t';\n const nodes = xml.split(/>\\s*</);\n nodes.forEach(function (node, index) {\n // Remove leading < from first node and trailing > from last node. Allow for selection leading or trailing whitespace.\n if (index === 0) {\n node = node.replace(/^\\s*</, '');\n }\n if (index === nodes.length - 1) {\n node = node.replace(/>\\s*$/, '');\n }\n\n if (node.match(/^\\/\\w/)) {\n indent = indent.substring(tab!.length);\n }\n formatted += initialIndent + indent + '<' + node + '>\\r\\n';\n if (node.match(/^<?\\w[^>]*[^/]$/)) {\n indent += tab;\n }\n });\n\n return formatted.trim();\n}\n\nexport function newOscdTextEditV2({\n element,\n newText,\n}: {\n element: Element;\n newText: string;\n}): EditV2[] | null {\n let newDoc: XMLDocument | null = null;\n try {\n newDoc = newText ? parseXml(newText) : null;\n } catch (error) {\n console.error('Failed to parse XML:', error);\n return null;\n }\n if (element) {\n // get the parent and if we don't have a parent, use the documentElement\n const parent = element.parentElement ?? element.ownerDocument;\n const nextSibling = element.nextSibling ?? null;\n const newElement = newDoc\n ? element.ownerDocument.importNode(newDoc?.documentElement, true)\n : null;\n\n return [\n { node: element },\n ...(newElement\n ? [\n {\n node: newElement,\n parent,\n reference: nextSibling,\n },\n ]\n : []),\n ] as EditV2[];\n }\n return null;\n}\n\nclass BaseElement extends ScopedElementsMixin(LitElement) {}\n\n/**\n * Intent is to keep this generic so it can be migrated to oscd-ui.\n */\nexport default class OscdTextEditor extends BaseElement {\n static scopedElements = {\n // Left here for clarity sake. We need to dyn-import this so we have a chance of overriding the customElements.define to prevent\n // ace-editor from being registered globally and causing issues with other instances of ace-editor in the same document.\n 'ace-editor': AceEditor,\n };\n\n // constructor() {\n // super();\n // // Special handling to prevent ace-editor from being registered globally, which would cause issues with multiple instances in the same document.\n // // This will all go away once the oscd-ui version is implemented and this project is migrated to oscd-ui\n // const customElementsDefineFn = window.customElements.define;\n // window.customElements.define = (name, constructor) => {\n // if (name !== 'ace-editor') {\n // return customElementsDefineFn(name, constructor);\n // }\n // };\n // import('ace-custom-element').then(AceEditor => {\n // if (!this.registry?.get('ace-editor')) {\n // this.registry?.define('ace-editor', AceEditor.default);\n // this.requestUpdate();\n // }\n // });\n // }\n\n @property()\n value: string | undefined;\n\n @query('ace-editor')\n aceEditor!: AceEditor;\n\n public format() {\n const rawXml =\n this.aceEditor?.editor?.getSelectedText() ||\n this.aceEditor.editor?.getValue() ||\n this.value ||\n '';\n\n let initialIndent = '';\n if (this.aceEditor?.editor?.getSelectedText()) {\n const range = this.aceEditor.editor.getSelectionRange();\n // Get the starting line of the selection and detect its leading whitespace\n const startLine = range.start.row;\n const lineContent = this.aceEditor.editor.session.getLine(startLine);\n initialIndent = lineContent.match(/^(\\s*)/)?.[1] || '';\n }\n\n const formatted = formatXml(rawXml, initialIndent);\n if (this.aceEditor?.editor?.getSelectedText()) {\n const range = this.aceEditor.editor.getSelectionRange();\n // Remove the trailing \\r\\n\n this.aceEditor.editor.session.replace(\n range,\n formatted.substring(0, formatted.length - 2),\n );\n } else {\n this.value = formatted;\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n window.ace?.config?.addEventListener?.('editor', manageAceOptionChange);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.ace?.config?.removeEventListener?.('editor', manageAceOptionChange);\n }\n\n private handleAceChange(e: CustomEvent<string>): void {\n if (typeof e.detail !== 'string') {\n return;\n }\n\n if (this.value !== e.detail) {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: e.detail,\n }),\n );\n }\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n this.clearSelection();\n }\n\n private clearSelection() {\n // Clear selection when content updates\n setTimeout(() => {\n /* For reasons unknown the ace editor initially selects all code, so we need to clear that*/\n const editor = this.aceEditor.editor;\n if (editor) {\n editor.selection.clearSelection();\n editor.moveCursorTo(0, 0);\n }\n }, 100);\n }\n\n protected updated(changedProps: PropertyValueMap<OscdTextEditor>): void {\n if (changedProps.has('value')) {\n const editor = this.aceEditor.editor;\n\n if (!editor) {\n return;\n }\n\n // Only update if content actually changed (prevents cursor jump)\n // if (editor.getValue() !== this.value) {\n // editor.setValue(this.value ?? '');\n // }\n\n editor.selection.clearSelection();\n editor.moveCursorTo(0, 0);\n }\n }\n\n render() {\n return html`\n <ace-editor\n .value=${this.value}\n mode=${aceOptions.mode}\n theme=${aceOptions.theme}\n @change=${(e: CustomEvent<string>) => {\n this.handleAceChange(e);\n }}\n >\n </ace-editor>\n `;\n }\n\n static styles = css`\n :host {\n height: 100%;\n width: 100%;\n overflow: auto;\n }\n\n ace-editor {\n height: 100%;\n width: 100%;\n }\n `;\n}\n"]}
@@ -1,4 +1,7 @@
1
1
  import 'ace-builds/src-noconflict/ace';
2
+ import 'ace-builds/src-noconflict/theme-sqlserver.js';
3
+ import 'ace-builds/src-noconflict/mode-xml.js';
4
+ import 'ace-builds/src-noconflict/ext-searchbox.js';
2
5
  import { Ace } from 'ace-builds';
3
6
  import type * as AceGlobal from 'ace-builds';
4
7
  declare global {
@@ -2,6 +2,9 @@ import { __decorate } from "tslib";
2
2
  /* eslint-disable class-methods-use-this */
3
3
  /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
4
4
  import 'ace-builds/src-noconflict/ace';
5
+ import 'ace-builds/src-noconflict/theme-sqlserver.js';
6
+ import 'ace-builds/src-noconflict/mode-xml.js';
7
+ import 'ace-builds/src-noconflict/ext-searchbox.js';
5
8
  import { NotifyAttribute, NotifyBooleanAttribute, NotifyNumericAttribute, } from './property-decorators.js';
6
9
  import { debounce } from './debounce.js';
7
10
  var ValueUpdateMode;
@@ -1 +1 @@
1
- {"version":3,"file":"AceEditor.js","sourceRoot":"","sources":["../../ace-editor/AceEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\n/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport 'ace-builds/src-noconflict/ace';\n\nimport {\n NotifyAttribute,\n NotifyBooleanAttribute,\n NotifyNumericAttribute,\n} from './property-decorators.js';\n\nimport { Ace } from 'ace-builds';\nimport { debounce } from './debounce.js';\nimport type * as AceGlobal from 'ace-builds';\n\ndeclare global {\n interface Window {\n ace: typeof AceGlobal;\n }\n}\n\nenum ValueUpdateMode {\n start = 'start',\n end = 'end',\n select = 'select',\n}\n\nfunction getValueUpdateNumber(mode?: ValueUpdateMode): number {\n if (mode === ValueUpdateMode.start) return -1;\n if (mode === ValueUpdateMode.end) return 1;\n return 0;\n}\n\n/**\n * Custom element Ace code editor\n */\nclass AceEditor extends HTMLElement {\n private static _observedAttributes: string[] = [];\n\n private _editor?: Ace.Editor;\n get editor(): Ace.Editor | undefined {\n return this._editor;\n }\n\n get version(): { [key: string]: string } {\n return {\n ace: window.ace?.version || 'unknown',\n };\n }\n\n @NotifyAttribute()\n value?: string;\n\n @NotifyAttribute()\n mode?: string;\n\n @NotifyAttribute()\n theme?: string;\n\n @NotifyNumericAttribute()\n tabSize?: number;\n\n @NotifyBooleanAttribute()\n readonly?: boolean;\n\n @NotifyBooleanAttribute()\n softTabs?: boolean;\n\n @NotifyBooleanAttribute()\n wrap?: boolean;\n\n @NotifyAttribute()\n valueUpdateMode?: ValueUpdateMode;\n\n @NotifyBooleanAttribute()\n hideActiveLineHighlight?: boolean;\n\n @NotifyBooleanAttribute()\n hideGutter?: boolean;\n\n @NotifyBooleanAttribute()\n hideGutterLineHighlight?: boolean;\n\n @NotifyBooleanAttribute()\n hidePrintMargin?: boolean;\n\n @NotifyAttribute()\n basePath?: string;\n\n static get observedAttributes(): string[] {\n return AceEditor._observedAttributes;\n }\n\n /**\n * Registers an attribute to be observed.\n *\n * @param name Attribute name to observe.\n * @internal\n */\n addObservedAttribute(name: string): void {\n AceEditor._observedAttributes.push(name);\n }\n\n private dispatch<T>(type: string, detail: T): void {\n this.dispatchEvent(\n new CustomEvent(type, {\n bubbles: true,\n cancelable: false,\n detail,\n }),\n );\n }\n\n private initializeEditor = debounce(() => {\n const basePath = this.basePath || import.meta.url.replace(/[^/]+$/, 'ace/');\n window.ace.config.set('basePath', basePath);\n\n const editor = this._editor || window.ace.edit(this);\n\n this.appendStyles();\n\n editor.session.setMode(this.mode || 'ace/mode/javascript');\n editor.setTheme(this.theme || 'ace/theme/eclipse');\n\n const text = editor.getValue() || '';\n if (text !== this.value) {\n editor.setValue(\n this.value || '',\n getValueUpdateNumber(this.valueUpdateMode),\n );\n }\n\n editor.getSession().setTabSize(this.tabSize || 2);\n editor.getSession().setUseSoftTabs(!!this.softTabs);\n\n editor.renderer.setShowGutter(!this.hideGutter);\n editor.renderer.setShowPrintMargin(!this.hidePrintMargin);\n editor.setHighlightActiveLine(!this.hideActiveLineHighlight);\n editor.setHighlightGutterLine(!this.hideGutterLineHighlight);\n\n editor.setReadOnly(!!this.readonly);\n if (this.readonly) {\n editor.setHighlightActiveLine(!this.readonly);\n editor.setHighlightGutterLine(!this.readonly);\n }\n\n editor.getSession().setUseWrapMode(!!this.wrap);\n\n editor.off('change', this.handleChange);\n editor.on('change', this.handleChange);\n editor.off('blur', this.handleBlur);\n editor.on('blur', this.handleBlur);\n\n this.resize();\n\n this._editor = editor;\n });\n\n private appendStyles() {\n const rootNode = this.getRootNode() as Document | ShadowRoot | undefined;\n const aceStyleId = `ace_editor.css`;\n const customStyleId = `ace-custom-element-style`;\n\n // initialize styles if rendering on the client:\n if (rootNode) {\n if (!rootNode.getElementById?.(customStyleId)) {\n const style = document.createElement('style');\n style.id = customStyleId;\n style.type = 'text/css';\n style.innerHTML = `\n ace-editor {\n display: block;\n width: 100%;\n height: 250px;\n }\n `;\n\n if (rootNode instanceof Document && rootNode.head) {\n rootNode.head.appendChild(style);\n } else {\n rootNode.appendChild(style);\n }\n }\n\n if (!rootNode.getElementById?.(aceStyleId)) {\n const editorStyle = document.getElementById(aceStyleId);\n if (editorStyle) {\n if (rootNode instanceof Document && rootNode.head) {\n rootNode.head.appendChild(editorStyle.cloneNode(true));\n } else {\n rootNode.appendChild(editorStyle.cloneNode(true));\n }\n }\n }\n }\n }\n\n connectedCallback(): void {\n this.initializeEditor().then(() => {\n this.dispatch('ready', {\n editor: this.editor,\n });\n });\n }\n\n disconnectedCallback(): void {\n if (!this._editor) return;\n\n this._editor.off('change', this.handleChange);\n this._editor.off('blur', this.handleBlur);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attributeChangedCallback(name: string): void {\n this.initializeEditor();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n notifyPropertyChanged(name: string): void {\n this.initializeEditor();\n }\n\n resize(): void {\n this._editor?.resize();\n }\n\n private handleChange = debounce(() => {\n const text = this._editor?.getValue() || '';\n if (text !== this.value) {\n if (text) {\n this.setAttribute('value', text);\n } else {\n this.removeAttribute('value');\n }\n\n this.dispatch('change', text);\n }\n });\n\n private handleBlur = () => {\n this.dispatchEvent(new FocusEvent('blur'));\n };\n}\n\ninterface AceEditor {\n addEventListener(\n type: 'change',\n listener: (event: CustomEvent<string>) => void,\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n removeEventListener(\n type: 'change',\n listener: (event: CustomEvent<string>) => void,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n}\n\nexport default AceEditor;\n"]}
1
+ {"version":3,"file":"AceEditor.js","sourceRoot":"","sources":["../../ace-editor/AceEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\n/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport 'ace-builds/src-noconflict/ace';\nimport 'ace-builds/src-noconflict/theme-sqlserver.js';\nimport 'ace-builds/src-noconflict/mode-xml.js';\nimport 'ace-builds/src-noconflict/ext-searchbox.js';\n\nimport {\n NotifyAttribute,\n NotifyBooleanAttribute,\n NotifyNumericAttribute,\n} from './property-decorators.js';\n\nimport { Ace } from 'ace-builds';\nimport { debounce } from './debounce.js';\nimport type * as AceGlobal from 'ace-builds';\n\ndeclare global {\n interface Window {\n ace: typeof AceGlobal;\n }\n}\n\nenum ValueUpdateMode {\n start = 'start',\n end = 'end',\n select = 'select',\n}\n\nfunction getValueUpdateNumber(mode?: ValueUpdateMode): number {\n if (mode === ValueUpdateMode.start) return -1;\n if (mode === ValueUpdateMode.end) return 1;\n return 0;\n}\n\n/**\n * Custom element Ace code editor\n */\nclass AceEditor extends HTMLElement {\n private static _observedAttributes: string[] = [];\n\n private _editor?: Ace.Editor;\n get editor(): Ace.Editor | undefined {\n return this._editor;\n }\n\n get version(): { [key: string]: string } {\n return {\n ace: window.ace?.version || 'unknown',\n };\n }\n\n @NotifyAttribute()\n value?: string;\n\n @NotifyAttribute()\n mode?: string;\n\n @NotifyAttribute()\n theme?: string;\n\n @NotifyNumericAttribute()\n tabSize?: number;\n\n @NotifyBooleanAttribute()\n readonly?: boolean;\n\n @NotifyBooleanAttribute()\n softTabs?: boolean;\n\n @NotifyBooleanAttribute()\n wrap?: boolean;\n\n @NotifyAttribute()\n valueUpdateMode?: ValueUpdateMode;\n\n @NotifyBooleanAttribute()\n hideActiveLineHighlight?: boolean;\n\n @NotifyBooleanAttribute()\n hideGutter?: boolean;\n\n @NotifyBooleanAttribute()\n hideGutterLineHighlight?: boolean;\n\n @NotifyBooleanAttribute()\n hidePrintMargin?: boolean;\n\n @NotifyAttribute()\n basePath?: string;\n\n static get observedAttributes(): string[] {\n return AceEditor._observedAttributes;\n }\n\n /**\n * Registers an attribute to be observed.\n *\n * @param name Attribute name to observe.\n * @internal\n */\n addObservedAttribute(name: string): void {\n AceEditor._observedAttributes.push(name);\n }\n\n private dispatch<T>(type: string, detail: T): void {\n this.dispatchEvent(\n new CustomEvent(type, {\n bubbles: true,\n cancelable: false,\n detail,\n }),\n );\n }\n\n private initializeEditor = debounce(() => {\n const basePath = this.basePath || import.meta.url.replace(/[^/]+$/, 'ace/');\n window.ace.config.set('basePath', basePath);\n\n const editor = this._editor || window.ace.edit(this);\n\n this.appendStyles();\n\n editor.session.setMode(this.mode || 'ace/mode/javascript');\n editor.setTheme(this.theme || 'ace/theme/eclipse');\n\n const text = editor.getValue() || '';\n if (text !== this.value) {\n editor.setValue(\n this.value || '',\n getValueUpdateNumber(this.valueUpdateMode),\n );\n }\n\n editor.getSession().setTabSize(this.tabSize || 2);\n editor.getSession().setUseSoftTabs(!!this.softTabs);\n\n editor.renderer.setShowGutter(!this.hideGutter);\n editor.renderer.setShowPrintMargin(!this.hidePrintMargin);\n editor.setHighlightActiveLine(!this.hideActiveLineHighlight);\n editor.setHighlightGutterLine(!this.hideGutterLineHighlight);\n\n editor.setReadOnly(!!this.readonly);\n if (this.readonly) {\n editor.setHighlightActiveLine(!this.readonly);\n editor.setHighlightGutterLine(!this.readonly);\n }\n\n editor.getSession().setUseWrapMode(!!this.wrap);\n\n editor.off('change', this.handleChange);\n editor.on('change', this.handleChange);\n editor.off('blur', this.handleBlur);\n editor.on('blur', this.handleBlur);\n\n this.resize();\n\n this._editor = editor;\n });\n\n private appendStyles() {\n const rootNode = this.getRootNode() as Document | ShadowRoot | undefined;\n const aceStyleId = `ace_editor.css`;\n const customStyleId = `ace-custom-element-style`;\n\n // initialize styles if rendering on the client:\n if (rootNode) {\n if (!rootNode.getElementById?.(customStyleId)) {\n const style = document.createElement('style');\n style.id = customStyleId;\n style.type = 'text/css';\n style.innerHTML = `\n ace-editor {\n display: block;\n width: 100%;\n height: 250px;\n }\n `;\n\n if (rootNode instanceof Document && rootNode.head) {\n rootNode.head.appendChild(style);\n } else {\n rootNode.appendChild(style);\n }\n }\n\n if (!rootNode.getElementById?.(aceStyleId)) {\n const editorStyle = document.getElementById(aceStyleId);\n if (editorStyle) {\n if (rootNode instanceof Document && rootNode.head) {\n rootNode.head.appendChild(editorStyle.cloneNode(true));\n } else {\n rootNode.appendChild(editorStyle.cloneNode(true));\n }\n }\n }\n }\n }\n\n connectedCallback(): void {\n this.initializeEditor().then(() => {\n this.dispatch('ready', {\n editor: this.editor,\n });\n });\n }\n\n disconnectedCallback(): void {\n if (!this._editor) return;\n\n this._editor.off('change', this.handleChange);\n this._editor.off('blur', this.handleBlur);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attributeChangedCallback(name: string): void {\n this.initializeEditor();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n notifyPropertyChanged(name: string): void {\n this.initializeEditor();\n }\n\n resize(): void {\n this._editor?.resize();\n }\n\n private handleChange = debounce(() => {\n const text = this._editor?.getValue() || '';\n if (text !== this.value) {\n if (text) {\n this.setAttribute('value', text);\n } else {\n this.removeAttribute('value');\n }\n\n this.dispatch('change', text);\n }\n });\n\n private handleBlur = () => {\n this.dispatchEvent(new FocusEvent('blur'));\n };\n}\n\ninterface AceEditor {\n addEventListener(\n type: 'change',\n listener: (event: CustomEvent<string>) => void,\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void;\n\n removeEventListener(\n type: 'change',\n listener: (event: CustomEvent<string>) => void,\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void;\n}\n\nexport default AceEditor;\n"]}
@@ -34,7 +34,7 @@ export function createDOTypeWizard(parent) {
34
34
  ></scl-text-field>`,
35
35
  html `<scl-text-field
36
36
  label="desc"
37
- .maybeValue=${null}
37
+ .value=${null}
38
38
  nullable
39
39
  pattern="${patterns.normalizedString}"
40
40
  ></scl-text-field>`,
@@ -1 +1 @@
1
- {"version":3,"file":"dotype.js","sourceRoot":"","sources":["../../wizards/dotype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,QAAQ,GAIT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,SAAS,kBAAkB,CAAC,MAAe;IACzC,OAAO,CAAC,MAA4B,EAAY,EAAE;QAChD,MAAM,WAAW,GAAkC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE1E,OAAO;YACL,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;SACpE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;SACnC;QACD,OAAO,EAAE;YACP,IAAI,CAAA;;iBAEO,EAAE;;;;mBAIA,QAAQ,CAAC,OAAO;yBACV;YACnB,IAAI,CAAA;;sBAEY,IAAI;;mBAEP,QAAQ,CAAC,gBAAgB;yBACnB;YACnB,IAAI,CAAA;;iBAEO,KAAK;mBACH,QAAQ,CAAC,GAAG;yBACN;SACpB;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { html } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\nimport { patterns } from './patterns.js';\n\nfunction createDOTypeAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const doTypeAttrs: Record<string, string | null> = {};\n const doTypeKeys = ['id', 'desc', 'cdc'];\n doTypeKeys.forEach(key => {\n doTypeAttrs[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const doType = createElement(parent.ownerDocument, 'DOType', doTypeAttrs);\n\n return [\n { parent, node: doType, reference: getReference(parent, 'DOType') },\n ];\n };\n}\n\nexport function createDOTypeWizard(parent: Element): Wizard {\n return {\n title: 'Add DOType',\n primary: {\n icon: 'save',\n label: 'Save',\n action: createDOTypeAction(parent),\n },\n content: [\n html`<scl-text-field\n label=\"id\"\n .value=${''}\n required\n maxlength=\"127\"\n minlength=\"1\"\n pattern=\"${patterns.nmToken}\"\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .maybeValue=${null}\n nullable\n pattern=\"${patterns.normalizedString}\"\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"cdc\"\n .value=${'ENS'}\n pattern=\"${patterns.cdc}\"\n ></scl-text-field>`,\n ],\n };\n}\n"]}
1
+ {"version":3,"file":"dotype.js","sourceRoot":"","sources":["../../wizards/dotype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,QAAQ,GAIT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,SAAS,kBAAkB,CAAC,MAAe;IACzC,OAAO,CAAC,MAA4B,EAAY,EAAE;QAChD,MAAM,WAAW,GAAkC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE1E,OAAO;YACL,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;SACpE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;SACnC;QACD,OAAO,EAAE;YACP,IAAI,CAAA;;iBAEO,EAAE;;;;mBAIA,QAAQ,CAAC,OAAO;yBACV;YACnB,IAAI,CAAA;;iBAEO,IAAI;;mBAEF,QAAQ,CAAC,gBAAgB;yBACnB;YACnB,IAAI,CAAA;;iBAEO,KAAK;mBACH,QAAQ,CAAC,GAAG;yBACN;SACpB;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { html } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\nimport { patterns } from './patterns.js';\n\nfunction createDOTypeAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const doTypeAttrs: Record<string, string | null> = {};\n const doTypeKeys = ['id', 'desc', 'cdc'];\n doTypeKeys.forEach(key => {\n doTypeAttrs[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const doType = createElement(parent.ownerDocument, 'DOType', doTypeAttrs);\n\n return [\n { parent, node: doType, reference: getReference(parent, 'DOType') },\n ];\n };\n}\n\nexport function createDOTypeWizard(parent: Element): Wizard {\n return {\n title: 'Add DOType',\n primary: {\n icon: 'save',\n label: 'Save',\n action: createDOTypeAction(parent),\n },\n content: [\n html`<scl-text-field\n label=\"id\"\n .value=${''}\n required\n maxlength=\"127\"\n minlength=\"1\"\n pattern=\"${patterns.nmToken}\"\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .value=${null}\n nullable\n pattern=\"${patterns.normalizedString}\"\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"cdc\"\n .value=${'ENS'}\n pattern=\"${patterns.cdc}\"\n ></scl-text-field>`,\n ],\n };\n}\n"]}
@@ -12,12 +12,12 @@ export function contentFunctionWizard(options) {
12
12
  ></scl-text-field>`,
13
13
  html `<scl-text-field
14
14
  label="desc"
15
- .maybeValue=${options.desc}
15
+ .value=${options.desc}
16
16
  nullable
17
17
  ></scl-text-field>`,
18
18
  html `<scl-text-field
19
19
  label="type"
20
- .maybeValue=${options.type}
20
+ .value=${options.type}
21
21
  nullable
22
22
  ></scl-text-field>`,
23
23
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"function.js","sourceRoot":"","sources":["../../wizards/function.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n reservedNames,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\n\ntype RenderOptions = {\n name: string | null;\n desc: string | null;\n type: string | null;\n reservedValues: string[];\n};\n\nexport function contentFunctionWizard(\n options: RenderOptions,\n): TemplateResult[] {\n return [\n html`<scl-text-field\n label=\"name\"\n .value=${options.name}\n required\n .reservedValues=${options.reservedValues}\n dialogInitialFocus\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .maybeValue=${options.desc}\n nullable\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"type\"\n .maybeValue=${options.type}\n nullable\n ></scl-text-field>`,\n ];\n}\n\nfunction createFunctionAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const functionAttrs: Record<string, string | null> = {};\n const functionKeys = ['name', 'desc', 'type'];\n functionKeys.forEach(key => {\n functionAttrs[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const fUnction = createElement(\n parent.ownerDocument,\n 'Function',\n functionAttrs,\n );\n\n return [\n { parent, node: fUnction, reference: getReference(parent, 'Function') },\n ];\n };\n}\n\nexport function createFunctionWizard(parent: Element): Wizard {\n const name = '';\n const desc = null;\n const type = null;\n\n return {\n title: 'Add Function',\n primary: {\n icon: 'save',\n label: 'save',\n action: createFunctionAction(parent),\n },\n content: [\n ...contentFunctionWizard({\n name,\n desc,\n type,\n reservedValues: reservedNames(parent, 'Function'),\n }),\n ],\n };\n}\n\nfunction updateFunction(element: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const functionKeys = ['name', 'desc', 'type'];\n functionKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n if (\n functionKeys.some(key => attributes[key] !== element.getAttribute(key))\n ) {\n return [{ element, attributes }];\n }\n\n return [];\n };\n}\n\nexport function editFunctionWizard(element: Element): Wizard {\n const name = element.getAttribute('name');\n const desc = element.getAttribute('desc');\n const type = element.getAttribute('type');\n\n return {\n title: 'Edit Function',\n primary: {\n icon: 'save',\n label: 'save',\n action: updateFunction(element),\n },\n content: [\n ...contentFunctionWizard({\n name,\n desc,\n type,\n reservedValues: reservedNames(element),\n }),\n ],\n };\n}\n"]}
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../wizards/function.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n reservedNames,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\n\ntype RenderOptions = {\n name: string | null;\n desc: string | null;\n type: string | null;\n reservedValues: string[];\n};\n\nexport function contentFunctionWizard(\n options: RenderOptions,\n): TemplateResult[] {\n return [\n html`<scl-text-field\n label=\"name\"\n .value=${options.name}\n required\n .reservedValues=${options.reservedValues}\n dialogInitialFocus\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .value=${options.desc}\n nullable\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"type\"\n .value=${options.type}\n nullable\n ></scl-text-field>`,\n ];\n}\n\nfunction createFunctionAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const functionAttrs: Record<string, string | null> = {};\n const functionKeys = ['name', 'desc', 'type'];\n functionKeys.forEach(key => {\n functionAttrs[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const fUnction = createElement(\n parent.ownerDocument,\n 'Function',\n functionAttrs,\n );\n\n return [\n { parent, node: fUnction, reference: getReference(parent, 'Function') },\n ];\n };\n}\n\nexport function createFunctionWizard(parent: Element): Wizard {\n const name = '';\n const desc = null;\n const type = null;\n\n return {\n title: 'Add Function',\n primary: {\n icon: 'save',\n label: 'save',\n action: createFunctionAction(parent),\n },\n content: [\n ...contentFunctionWizard({\n name,\n desc,\n type,\n reservedValues: reservedNames(parent, 'Function'),\n }),\n ],\n };\n}\n\nfunction updateFunction(element: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const functionKeys = ['name', 'desc', 'type'];\n functionKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n if (\n functionKeys.some(key => attributes[key] !== element.getAttribute(key))\n ) {\n return [{ element, attributes }];\n }\n\n return [];\n };\n}\n\nexport function editFunctionWizard(element: Element): Wizard {\n const name = element.getAttribute('name');\n const desc = element.getAttribute('desc');\n const type = element.getAttribute('type');\n\n return {\n title: 'Edit Function',\n primary: {\n icon: 'save',\n label: 'save',\n action: updateFunction(element),\n },\n content: [\n ...contentFunctionWizard({\n name,\n desc,\n type,\n reservedValues: reservedNames(element),\n }),\n ],\n };\n}\n"]}
@@ -12,7 +12,7 @@ export function contentGeneralEquipmentWizard(options) {
12
12
  ></scl-text-field>`,
13
13
  html `<scl-text-field
14
14
  label="desc"
15
- .maybeValue=${options.desc}
15
+ .value=${options.desc}
16
16
  nullable
17
17
  ></scl-text-field>`,
18
18
  html `<scl-text-field
@@ -1 +1 @@
1
- {"version":3,"file":"generalEquipment.js","sourceRoot":"","sources":["../../wizards/generalEquipment.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n reservedNames,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\n\ntype RenderOptions = {\n name: string | null;\n desc: string | null;\n type: string | null;\n virtual: string | null;\n reservedValues: string[];\n};\n\nexport function contentGeneralEquipmentWizard(\n options: RenderOptions,\n): TemplateResult[] {\n return [\n html`<scl-text-field\n label=\"name\"\n .value=${options.name}\n required\n .reservedValues=${options.reservedValues}\n dialogInitialFocus\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .maybeValue=${options.desc}\n nullable\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"type\"\n .value=${options.type}\n minLength=\"3\"\n pattern=\"AXN|BAT|MOT|FAN|FIL|PMP|TNK|VLV|E[A-Z]*\"\n required\n ></scl-text-field>`,\n html`<scl-checkbox\n label=\"virtual\"\n .value=${options.virtual}\n nullable\n ></scl-checkbox>`,\n ];\n}\n\nfunction createAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const generalEquipmentKeys = ['name', 'desc', 'type', 'virtual'];\n generalEquipmentKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const generalEquipment = createElement(\n parent.ownerDocument,\n 'GeneralEquipment',\n attributes,\n );\n\n return [\n {\n parent,\n node: generalEquipment,\n reference: getReference(parent, 'GeneralEquipment'),\n },\n ];\n };\n}\n\nexport function createGeneralEquipmentWizard(parent: Element): Wizard {\n const name = '';\n const desc = null;\n const type = null;\n const virtual = null;\n\n return {\n title: 'Add GeneralEquipment',\n primary: {\n icon: 'save',\n label: 'save',\n action: createAction(parent),\n },\n content: [\n ...contentGeneralEquipmentWizard({\n name,\n desc,\n type,\n virtual,\n reservedValues: reservedNames(parent, 'GeneralEquipment'),\n }),\n ],\n };\n}\n\nfunction updateAction(element: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const generalEquipmentKeys = ['name', 'desc', 'type', 'virtual'];\n generalEquipmentKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n if (\n generalEquipmentKeys.some(\n key => attributes[key] !== element.getAttribute(key),\n )\n ) {\n return [{ element, attributes }];\n }\n\n return [];\n };\n}\n\nexport function editGeneralEquipmentWizard(element: Element): Wizard {\n const name = element.getAttribute('name');\n const desc = element.getAttribute('desc');\n const type = element.getAttribute('type');\n const virtual = element.getAttribute('virtual');\n\n return {\n title: 'Edit GeneralEquipment',\n primary: {\n icon: 'save',\n label: 'save',\n action: updateAction(element),\n },\n content: [\n ...contentGeneralEquipmentWizard({\n name,\n desc,\n type,\n virtual,\n reservedValues: reservedNames(element),\n }),\n ],\n };\n}\n"]}
1
+ {"version":3,"file":"generalEquipment.js","sourceRoot":"","sources":["../../wizards/generalEquipment.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport { EditV2 } from '@openscd/oscd-api';\nimport { getReference } from '@openscd/scl-lib';\n\nimport {\n createElement,\n getValue,\n reservedNames,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\n\ntype RenderOptions = {\n name: string | null;\n desc: string | null;\n type: string | null;\n virtual: string | null;\n reservedValues: string[];\n};\n\nexport function contentGeneralEquipmentWizard(\n options: RenderOptions,\n): TemplateResult[] {\n return [\n html`<scl-text-field\n label=\"name\"\n .value=${options.name}\n required\n .reservedValues=${options.reservedValues}\n dialogInitialFocus\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"desc\"\n .value=${options.desc}\n nullable\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"type\"\n .value=${options.type}\n minLength=\"3\"\n pattern=\"AXN|BAT|MOT|FAN|FIL|PMP|TNK|VLV|E[A-Z]*\"\n required\n ></scl-text-field>`,\n html`<scl-checkbox\n label=\"virtual\"\n .value=${options.virtual}\n nullable\n ></scl-checkbox>`,\n ];\n}\n\nfunction createAction(parent: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const generalEquipmentKeys = ['name', 'desc', 'type', 'virtual'];\n generalEquipmentKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n const generalEquipment = createElement(\n parent.ownerDocument,\n 'GeneralEquipment',\n attributes,\n );\n\n return [\n {\n parent,\n node: generalEquipment,\n reference: getReference(parent, 'GeneralEquipment'),\n },\n ];\n };\n}\n\nexport function createGeneralEquipmentWizard(parent: Element): Wizard {\n const name = '';\n const desc = null;\n const type = null;\n const virtual = null;\n\n return {\n title: 'Add GeneralEquipment',\n primary: {\n icon: 'save',\n label: 'save',\n action: createAction(parent),\n },\n content: [\n ...contentGeneralEquipmentWizard({\n name,\n desc,\n type,\n virtual,\n reservedValues: reservedNames(parent, 'GeneralEquipment'),\n }),\n ],\n };\n}\n\nfunction updateAction(element: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const generalEquipmentKeys = ['name', 'desc', 'type', 'virtual'];\n generalEquipmentKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n if (\n generalEquipmentKeys.some(\n key => attributes[key] !== element.getAttribute(key),\n )\n ) {\n return [{ element, attributes }];\n }\n\n return [];\n };\n}\n\nexport function editGeneralEquipmentWizard(element: Element): Wizard {\n const name = element.getAttribute('name');\n const desc = element.getAttribute('desc');\n const type = element.getAttribute('type');\n const virtual = element.getAttribute('virtual');\n\n return {\n title: 'Edit GeneralEquipment',\n primary: {\n icon: 'save',\n label: 'save',\n action: updateAction(element),\n },\n content: [\n ...contentGeneralEquipmentWizard({\n name,\n desc,\n type,\n virtual,\n reservedValues: reservedNames(element),\n }),\n ],\n };\n}\n"]}
@@ -1,2 +1,3 @@
1
1
  import { Wizard } from '../foundation.js';
2
2
  export declare function createLNodeWizard(parent: Element): Wizard;
3
+ export declare function editLNodeWizard(element: Element): Wizard;
@@ -1,6 +1,7 @@
1
1
  import { html } from 'lit';
2
2
  import { getReference, lnInstGenerator } from '@openscd/scl-lib';
3
- import { createElement, } from '../foundation.js';
3
+ import { cloneElement, createElement, getChildElementsByTagName, getValue, } from '../foundation.js';
4
+ import { patterns } from './patterns.js';
4
5
  // global variables
5
6
  const selectedIEDs = [];
6
7
  let isLogicalNodeInstance = true;
@@ -272,4 +273,103 @@ export function createLNodeWizard(parent) {
272
273
  ],
273
274
  };
274
275
  }
276
+ function contentLNodeWizard(options) {
277
+ const isIedRef = options.iedName !== 'None';
278
+ return [
279
+ html `<scl-text-field
280
+ label="iedName"
281
+ .value=${options.iedName}
282
+ helper="iedName"
283
+ disabled
284
+ ></scl-text-field>`,
285
+ html `<scl-text-field
286
+ label="ldInst"
287
+ .value=${options.ldInst}
288
+ helper="ldInst"
289
+ nullable
290
+ disabled
291
+ ></scl-text-field>`,
292
+ html `<scl-text-field
293
+ label="prefix"
294
+ .value=${options.prefix}
295
+ helper="prefix"
296
+ pattern="${patterns.normalizedString}"
297
+ maxLength="11"
298
+ nullable
299
+ ?disabled=${isIedRef}
300
+ ></scl-text-field>`,
301
+ html `<scl-text-field
302
+ label="lnClass"
303
+ .value=${options.lnClass}
304
+ helper="lnClass"
305
+ disabled
306
+ ></scl-text-field>`,
307
+ html `<scl-text-field
308
+ label="lnInst"
309
+ .value=${options.lnInst}
310
+ helper="lnInst"
311
+ type="number"
312
+ min="1"
313
+ max="99"
314
+ .reservedValues=${options.reservedLnInst}
315
+ ?disabled=${isIedRef}
316
+ ></scl-text-field>`,
317
+ ];
318
+ }
319
+ function updateLNodeAction(element) {
320
+ return (inputs) => {
321
+ const attributes = {};
322
+ const attributeKeys = ['iedName', 'ldInst', 'prefix', 'lnClass', 'lnInst'];
323
+ attributeKeys.forEach(key => {
324
+ attributes[key] = getValue(inputs.find(i => i.label === key));
325
+ });
326
+ if (attributeKeys.some(key => attributes[key] !== element.getAttribute(key))) {
327
+ const newElement = cloneElement(element, attributes);
328
+ const parent = element.parentElement ?? element.ownerDocument;
329
+ const nextSibling = element.nextSibling ?? null;
330
+ return [
331
+ { node: element },
332
+ ...(newElement
333
+ ? [
334
+ {
335
+ node: newElement,
336
+ parent,
337
+ reference: nextSibling,
338
+ },
339
+ ]
340
+ : []),
341
+ ];
342
+ }
343
+ return [];
344
+ };
345
+ }
346
+ export function editLNodeWizard(element) {
347
+ const [iedName, ldInst, prefix, lnClass, lnInst] = [
348
+ 'iedName',
349
+ 'ldInst',
350
+ 'prefix',
351
+ 'lnClass',
352
+ 'lnInst',
353
+ ].map(attr => element.getAttribute(attr));
354
+ const reservedLnInst = getChildElementsByTagName(element.parentElement, 'LNode')
355
+ .filter(sibling => sibling !== element &&
356
+ sibling.getAttribute('lnClass') === element.getAttribute('lnClass'))
357
+ .map(sibling => sibling.getAttribute('lnInst'));
358
+ return {
359
+ title: 'LNode',
360
+ primary: {
361
+ label: 'Save',
362
+ icon: 'save',
363
+ action: updateLNodeAction(element),
364
+ },
365
+ content: contentLNodeWizard({
366
+ iedName,
367
+ ldInst,
368
+ prefix,
369
+ lnClass,
370
+ lnInst,
371
+ reservedLnInst,
372
+ }),
373
+ };
374
+ }
275
375
  //# sourceMappingURL=lnode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lnode.js","sourceRoot":"","sources":["../../wizards/lnode.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport {\n SelectionList,\n SelectItem,\n} from '@openenergytools/filterable-lists/dist/SelectionList.js';\nimport { MdList } from '@scopedelement/material-web/list/MdList.js';\nimport { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';\n\nimport { EditV2, Insert } from '@openscd/oscd-api';\n\nimport { getReference, lnInstGenerator } from '@openscd/scl-lib';\n\nimport {\n createElement,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\n\ntype LNodeCandidate = {\n anyLn: Element;\n existInScope: boolean;\n existOutOfScope: boolean;\n};\n\n// global variables\nconst selectedIEDs: Element[] = [];\nlet isLogicalNodeInstance = true;\nlet isIedListVisable = true;\n\nfunction lNodeItems(doc: XMLDocument): SelectItem[] {\n return Array.from(\n doc.querySelectorAll(':root > DataTypeTemplates > LNodeType'),\n ).map(lNodeType => {\n const lnClass = lNodeType.getAttribute('lnClass');\n const id = lNodeType.getAttribute('id');\n\n return {\n headline: `${lnClass}`,\n supportingText: `#${id}`,\n attachedElement: lNodeType,\n selected: false,\n disabled: false,\n };\n });\n}\n\nfunction anyLnAttrs(anyLn: Element): {\n prefix: string;\n lnClass: string;\n inst: string;\n iedName: string;\n ldInst: string;\n lnType: string;\n} {\n const prefix = anyLn.getAttribute('prefix') ?? '';\n const lnClass = anyLn.getAttribute('lnClass') ?? '';\n const inst = anyLn.getAttribute('inst') ?? '';\n const lnType = anyLn.getAttribute('lnType') ?? '';\n\n const iedName = anyLn.closest('IED')?.getAttribute('name') ?? '';\n const ldInst = anyLn.closest('LDevice')?.getAttribute('inst') ?? '';\n\n return { prefix, lnClass, inst, iedName, ldInst, lnType };\n}\n\nfunction createSelectedItem(lNode: LNodeCandidate): SelectItem {\n const { iedName, ldInst, prefix, lnClass, inst } = anyLnAttrs(lNode.anyLn);\n\n return {\n headline: `${prefix}${lnClass}${inst}`,\n supportingText: `${iedName} | ${ldInst}`,\n attachedElement: lNode.anyLn,\n selected: lNode.existInScope,\n disabled: lNode.existOutOfScope || lNode.existInScope,\n };\n}\n\nfunction compare(\n a: { anyLn: Element; existOutOfScope: boolean; existInScope: boolean },\n b: { anyLn: Element; existOutOfScope: boolean; existInScope: boolean },\n): number {\n if (a.existInScope !== b.existInScope) {\n return a.existInScope ? -1 : 1;\n }\n\n if (a.existOutOfScope !== b.existOutOfScope) {\n return b.existOutOfScope ? -1 : 1;\n }\n\n return 0;\n}\n\nfunction lNodeCandidates(parent: Element, anyLn: Element): LNodeCandidate {\n const { iedName, ldInst, prefix, lnClass, inst } = anyLnAttrs(anyLn);\n\n // const title = `${prefix}${lnClass}${inst}`;\n\n const lNode = Array.from(\n parent.closest('Substation')?.querySelectorAll('LNode') ?? [],\n ).find(child => {\n if (child.tagName !== 'LNode') {\n return false;\n }\n return (\n child.getAttribute('iedName') === iedName &&\n child.getAttribute('ldInst') === ldInst &&\n (child.getAttribute('prefix') ?? '') === prefix &&\n child.getAttribute('lnClass') === lnClass &&\n (child.getAttribute('lnInst') ?? '') === inst\n );\n });\n\n const existInScope = !!lNode && lNode.parentElement === parent;\n const existOutOfScope = !!lNode && lNode.parentElement !== parent;\n\n return { anyLn, existInScope, existOutOfScope };\n}\n\nfunction anyLnItems(parent: Element): SelectItem[] {\n const ldSelector = ':scope > AccessPoint > Server > LDevice';\n\n return selectedIEDs.flatMap(ied => {\n const anyLns = ied.querySelectorAll(\n `${ldSelector} > LN0, ${ldSelector} > LN`,\n )!;\n\n return Array.from(anyLns)\n .map(anyLn => lNodeCandidates(parent, anyLn))\n .sort(compare)\n .map(createSelectedItem);\n });\n}\n\nfunction lNodeList(target: HTMLElement): SelectionList {\n return target\n .closest('#createLNodeWizardContent')\n ?.querySelector('#lnList') as SelectionList;\n}\n\nfunction iedContainer(target: HTMLElement): Element {\n return target\n .closest('#createLNodeWizardContent')\n ?.querySelector('#iedContainer') as Element;\n}\n\nfunction showLogicalNodeTypes(evt: Event, parent: Element): void {\n isLogicalNodeInstance = !isLogicalNodeInstance;\n\n const target = evt.target as HTMLElement;\n\n if (isLogicalNodeInstance) {\n iedContainer(target).classList.remove('hidden');\n } else {\n iedContainer(target).classList.add('hidden');\n }\n\n const items = isLogicalNodeInstance\n ? anyLnItems(parent)\n : lNodeItems(parent.ownerDocument);\n\n lNodeList(target).items = []; // reset for better update performance\n lNodeList(target).items = items;\n}\n\nfunction addIED(evt: Event, ied: Element, sclParent: Element): void {\n const target = evt.target as HTMLElement;\n if (selectedIEDs.includes(ied)) {\n const index = selectedIEDs.indexOf(ied);\n selectedIEDs.splice(index, 1);\n // Updated list items\n (target.closest('md-list-item') as MdListItem).activated = false;\n } else {\n selectedIEDs.push(ied);\n // Updated list items\n (target.closest('md-list-item') as MdListItem).activated = true;\n }\n\n lNodeList(target).items = [];\n lNodeList(target).items = anyLnItems(sclParent);\n}\n\nfunction renderIEDItems(parent: Element): TemplateResult[] {\n const doc = parent.ownerDocument;\n\n return Array.from(doc.querySelectorAll(':root > IED')).map(ied => {\n const [iedName, manufacturer] = ['name', 'manufacturer'].map(value =>\n ied.getAttribute(value),\n );\n\n return html`<md-list-item\n .activated=${selectedIEDs.includes(ied)}\n type=\"button\"\n @click=\"${(evt: Event) => {\n addIED(evt, ied, parent);\n }}\"\n >\n <div slot=\"headline\">${iedName ?? 'unknown IED'}</div>\n <div slot=\"supporting-text\">\n ${manufacturer ?? 'unknown manufacturer'}\n </div>\n </md-list-item>`;\n });\n}\n\nfunction showIEdFilterList(evt: Event): void {\n isIedListVisable = !isIedListVisable;\n\n const ieds = (evt.target as HTMLElement)\n .closest('#createLNodeWizardContent')\n ?.querySelector('#iedList') as MdList;\n\n if (!isIedListVisable) {\n ieds.classList.remove('hidden');\n } else {\n ieds.classList.add('hidden');\n }\n}\n\nfunction createAction(parent: Element): WizardActor {\n function createSingleLNode(lNode: Element): Insert | null {\n if (lNode.tagName === 'LNodeType') {\n const lnClass = lNode.getAttribute('lnClass');\n if (!lnClass) {\n return null;\n }\n\n const lnType = lNode.getAttribute('id');\n const lnInst = lnInstGenerator(parent, 'LNode')(lnClass);\n if (!lnInst) {\n return null;\n }\n\n const node = createElement(parent.ownerDocument, 'LNode', {\n iedName: 'None',\n lnClass,\n lnInst,\n lnType,\n });\n\n return {\n parent,\n node,\n reference: getReference(parent, 'LNode'),\n };\n }\n\n const { iedName, ldInst, prefix, lnClass, inst, lnType } =\n anyLnAttrs(lNode);\n const node = createElement(parent.ownerDocument, 'LNode', {\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst: inst,\n lnType,\n });\n\n return {\n parent,\n node,\n reference: getReference(parent, 'LNode'),\n };\n }\n\n return (_: WizardInputElement[], wizard: Element): EditV2[] => {\n const list = wizard.querySelector('#lnList') as SelectionList;\n\n const selectedLNs = list.items\n .filter(item => item.selected)\n .filter(item => !item.disabled)\n .map(item => item.attachedElement!);\n\n return selectedLNs\n .map(lNode => createSingleLNode(lNode))\n .filter(insert => insert) as Insert[];\n };\n}\n\nexport function createLNodeWizard(parent: Element): Wizard {\n // const iedNames = Array.from(parent.children)\n // .filter(child => child.tagName === 'LNode' && child.getAttribute('iedName'))\n // .map(lNode => lNode.getAttribute('iedName')!);\n\n return {\n title: 'Add LNode',\n primary: {\n icon: 'save',\n label: 'save',\n action: createAction(parent),\n },\n content: [\n html`<div id=\"createLNodeWizardContent\" style=\"min-height: fit-content;\">\n <style>\n .hidden {\n display: none;\n }\n </style>\n <div\n id=\"radioContainer\"\n style=\"display: flex; align-items: center; gap: 16px;\"\n >\n <label\n style=\"display: flex; align-items: center; cursor: pointer; font-size: 14px;\"\n >\n <input\n type=\"radio\"\n name=\"nodeType\"\n value=\"type\"\n style=\"margin-right: 8px; cursor: pointer;\"\n @change=\"${(evt: Event) => showLogicalNodeTypes(evt, parent)}\"\n checked\n />\n Logical Node Type\n </label>\n <label\n style=\"display: flex; align-items: center; cursor: pointer; font-size: 14px;\"\n >\n <input\n type=\"radio\"\n name=\"nodeType\"\n value=\"instance\"\n style=\"margin-right: 8px; cursor: pointer;\"\n @change=\"${(evt: Event) => showLogicalNodeTypes(evt, parent)}\"\n />\n Logical Node Instance\n </label>\n </div>\n <div style=\"display: flex; flex-direction: row;\">\n <div id=\"iedContainer\">\n s\n <div\n id=\"iedFilterButton\"\n tabindex=\"0\"\n style=\"cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 4px; border: 1px solid #ccc; border-radius: 4px; margin-top: 20px;\"\n @click=\"${showIEdFilterList}\"\n @keydown=\"${(evt: KeyboardEvent) => {\n if (evt.key === 'Enter' || evt.key === ' ') {\n evt.preventDefault();\n showIEdFilterList(evt);\n }\n }}\"\n >\n <md-icon>filter_list</md-icon>\n </div>\n <md-list id=\"iedList\"> ${renderIEDItems(parent)} </md-list>\n </div>\n <selection-list\n id=\"lnList\"\n multi\n .items=${anyLnItems(parent)}\n filterable\n ></selection-list>\n </div>\n </div>`,\n ],\n };\n}\n"]}
1
+ {"version":3,"file":"lnode.js","sourceRoot":"","sources":["../../wizards/lnode.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from 'lit';\n\nimport {\n SelectionList,\n SelectItem,\n} from '@openenergytools/filterable-lists/dist/SelectionList.js';\nimport { MdList } from '@scopedelement/material-web/list/MdList.js';\nimport { MdListItem } from '@scopedelement/material-web/list/MdListItem.js';\n\nimport { EditV2, Insert } from '@openscd/oscd-api';\n\nimport { getReference, lnInstGenerator } from '@openscd/scl-lib';\n\nimport {\n cloneElement,\n createElement,\n getChildElementsByTagName,\n getValue,\n Wizard,\n WizardActor,\n WizardInputElement,\n} from '../foundation.js';\nimport { patterns } from './patterns.js';\n\ntype LNodeCandidate = {\n anyLn: Element;\n existInScope: boolean;\n existOutOfScope: boolean;\n};\n\n// global variables\nconst selectedIEDs: Element[] = [];\nlet isLogicalNodeInstance = true;\nlet isIedListVisable = true;\n\nfunction lNodeItems(doc: XMLDocument): SelectItem[] {\n return Array.from(\n doc.querySelectorAll(':root > DataTypeTemplates > LNodeType'),\n ).map(lNodeType => {\n const lnClass = lNodeType.getAttribute('lnClass');\n const id = lNodeType.getAttribute('id');\n\n return {\n headline: `${lnClass}`,\n supportingText: `#${id}`,\n attachedElement: lNodeType,\n selected: false,\n disabled: false,\n };\n });\n}\n\nfunction anyLnAttrs(anyLn: Element): {\n prefix: string;\n lnClass: string;\n inst: string;\n iedName: string;\n ldInst: string;\n lnType: string;\n} {\n const prefix = anyLn.getAttribute('prefix') ?? '';\n const lnClass = anyLn.getAttribute('lnClass') ?? '';\n const inst = anyLn.getAttribute('inst') ?? '';\n const lnType = anyLn.getAttribute('lnType') ?? '';\n\n const iedName = anyLn.closest('IED')?.getAttribute('name') ?? '';\n const ldInst = anyLn.closest('LDevice')?.getAttribute('inst') ?? '';\n\n return { prefix, lnClass, inst, iedName, ldInst, lnType };\n}\n\nfunction createSelectedItem(lNode: LNodeCandidate): SelectItem {\n const { iedName, ldInst, prefix, lnClass, inst } = anyLnAttrs(lNode.anyLn);\n\n return {\n headline: `${prefix}${lnClass}${inst}`,\n supportingText: `${iedName} | ${ldInst}`,\n attachedElement: lNode.anyLn,\n selected: lNode.existInScope,\n disabled: lNode.existOutOfScope || lNode.existInScope,\n };\n}\n\nfunction compare(\n a: { anyLn: Element; existOutOfScope: boolean; existInScope: boolean },\n b: { anyLn: Element; existOutOfScope: boolean; existInScope: boolean },\n): number {\n if (a.existInScope !== b.existInScope) {\n return a.existInScope ? -1 : 1;\n }\n\n if (a.existOutOfScope !== b.existOutOfScope) {\n return b.existOutOfScope ? -1 : 1;\n }\n\n return 0;\n}\n\nfunction lNodeCandidates(parent: Element, anyLn: Element): LNodeCandidate {\n const { iedName, ldInst, prefix, lnClass, inst } = anyLnAttrs(anyLn);\n\n // const title = `${prefix}${lnClass}${inst}`;\n\n const lNode = Array.from(\n parent.closest('Substation')?.querySelectorAll('LNode') ?? [],\n ).find(child => {\n if (child.tagName !== 'LNode') {\n return false;\n }\n return (\n child.getAttribute('iedName') === iedName &&\n child.getAttribute('ldInst') === ldInst &&\n (child.getAttribute('prefix') ?? '') === prefix &&\n child.getAttribute('lnClass') === lnClass &&\n (child.getAttribute('lnInst') ?? '') === inst\n );\n });\n\n const existInScope = !!lNode && lNode.parentElement === parent;\n const existOutOfScope = !!lNode && lNode.parentElement !== parent;\n\n return { anyLn, existInScope, existOutOfScope };\n}\n\nfunction anyLnItems(parent: Element): SelectItem[] {\n const ldSelector = ':scope > AccessPoint > Server > LDevice';\n\n return selectedIEDs.flatMap(ied => {\n const anyLns = ied.querySelectorAll(\n `${ldSelector} > LN0, ${ldSelector} > LN`,\n )!;\n\n return Array.from(anyLns)\n .map(anyLn => lNodeCandidates(parent, anyLn))\n .sort(compare)\n .map(createSelectedItem);\n });\n}\n\nfunction lNodeList(target: HTMLElement): SelectionList {\n return target\n .closest('#createLNodeWizardContent')\n ?.querySelector('#lnList') as SelectionList;\n}\n\nfunction iedContainer(target: HTMLElement): Element {\n return target\n .closest('#createLNodeWizardContent')\n ?.querySelector('#iedContainer') as Element;\n}\n\nfunction showLogicalNodeTypes(evt: Event, parent: Element): void {\n isLogicalNodeInstance = !isLogicalNodeInstance;\n\n const target = evt.target as HTMLElement;\n\n if (isLogicalNodeInstance) {\n iedContainer(target).classList.remove('hidden');\n } else {\n iedContainer(target).classList.add('hidden');\n }\n\n const items = isLogicalNodeInstance\n ? anyLnItems(parent)\n : lNodeItems(parent.ownerDocument);\n\n lNodeList(target).items = []; // reset for better update performance\n lNodeList(target).items = items;\n}\n\nfunction addIED(evt: Event, ied: Element, sclParent: Element): void {\n const target = evt.target as HTMLElement;\n if (selectedIEDs.includes(ied)) {\n const index = selectedIEDs.indexOf(ied);\n selectedIEDs.splice(index, 1);\n // Updated list items\n (target.closest('md-list-item') as MdListItem).activated = false;\n } else {\n selectedIEDs.push(ied);\n // Updated list items\n (target.closest('md-list-item') as MdListItem).activated = true;\n }\n\n lNodeList(target).items = [];\n lNodeList(target).items = anyLnItems(sclParent);\n}\n\nfunction renderIEDItems(parent: Element): TemplateResult[] {\n const doc = parent.ownerDocument;\n\n return Array.from(doc.querySelectorAll(':root > IED')).map(ied => {\n const [iedName, manufacturer] = ['name', 'manufacturer'].map(value =>\n ied.getAttribute(value),\n );\n\n return html`<md-list-item\n .activated=${selectedIEDs.includes(ied)}\n type=\"button\"\n @click=\"${(evt: Event) => {\n addIED(evt, ied, parent);\n }}\"\n >\n <div slot=\"headline\">${iedName ?? 'unknown IED'}</div>\n <div slot=\"supporting-text\">\n ${manufacturer ?? 'unknown manufacturer'}\n </div>\n </md-list-item>`;\n });\n}\n\nfunction showIEdFilterList(evt: Event): void {\n isIedListVisable = !isIedListVisable;\n\n const ieds = (evt.target as HTMLElement)\n .closest('#createLNodeWizardContent')\n ?.querySelector('#iedList') as MdList;\n\n if (!isIedListVisable) {\n ieds.classList.remove('hidden');\n } else {\n ieds.classList.add('hidden');\n }\n}\n\nfunction createAction(parent: Element): WizardActor {\n function createSingleLNode(lNode: Element): Insert | null {\n if (lNode.tagName === 'LNodeType') {\n const lnClass = lNode.getAttribute('lnClass');\n if (!lnClass) {\n return null;\n }\n\n const lnType = lNode.getAttribute('id');\n const lnInst = lnInstGenerator(parent, 'LNode')(lnClass);\n if (!lnInst) {\n return null;\n }\n\n const node = createElement(parent.ownerDocument, 'LNode', {\n iedName: 'None',\n lnClass,\n lnInst,\n lnType,\n });\n\n return {\n parent,\n node,\n reference: getReference(parent, 'LNode'),\n };\n }\n\n const { iedName, ldInst, prefix, lnClass, inst, lnType } =\n anyLnAttrs(lNode);\n const node = createElement(parent.ownerDocument, 'LNode', {\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst: inst,\n lnType,\n });\n\n return {\n parent,\n node,\n reference: getReference(parent, 'LNode'),\n };\n }\n\n return (_: WizardInputElement[], wizard: Element): EditV2[] => {\n const list = wizard.querySelector('#lnList') as SelectionList;\n\n const selectedLNs = list.items\n .filter(item => item.selected)\n .filter(item => !item.disabled)\n .map(item => item.attachedElement!);\n\n return selectedLNs\n .map(lNode => createSingleLNode(lNode))\n .filter(insert => insert) as Insert[];\n };\n}\n\nexport function createLNodeWizard(parent: Element): Wizard {\n // const iedNames = Array.from(parent.children)\n // .filter(child => child.tagName === 'LNode' && child.getAttribute('iedName'))\n // .map(lNode => lNode.getAttribute('iedName')!);\n\n return {\n title: 'Add LNode',\n primary: {\n icon: 'save',\n label: 'save',\n action: createAction(parent),\n },\n content: [\n html`<div id=\"createLNodeWizardContent\" style=\"min-height: fit-content;\">\n <style>\n .hidden {\n display: none;\n }\n </style>\n <div\n id=\"radioContainer\"\n style=\"display: flex; align-items: center; gap: 16px;\"\n >\n <label\n style=\"display: flex; align-items: center; cursor: pointer; font-size: 14px;\"\n >\n <input\n type=\"radio\"\n name=\"nodeType\"\n value=\"type\"\n style=\"margin-right: 8px; cursor: pointer;\"\n @change=\"${(evt: Event) => showLogicalNodeTypes(evt, parent)}\"\n checked\n />\n Logical Node Type\n </label>\n <label\n style=\"display: flex; align-items: center; cursor: pointer; font-size: 14px;\"\n >\n <input\n type=\"radio\"\n name=\"nodeType\"\n value=\"instance\"\n style=\"margin-right: 8px; cursor: pointer;\"\n @change=\"${(evt: Event) => showLogicalNodeTypes(evt, parent)}\"\n />\n Logical Node Instance\n </label>\n </div>\n <div style=\"display: flex; flex-direction: row;\">\n <div id=\"iedContainer\">\n s\n <div\n id=\"iedFilterButton\"\n tabindex=\"0\"\n style=\"cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 4px; border: 1px solid #ccc; border-radius: 4px; margin-top: 20px;\"\n @click=\"${showIEdFilterList}\"\n @keydown=\"${(evt: KeyboardEvent) => {\n if (evt.key === 'Enter' || evt.key === ' ') {\n evt.preventDefault();\n showIEdFilterList(evt);\n }\n }}\"\n >\n <md-icon>filter_list</md-icon>\n </div>\n <md-list id=\"iedList\"> ${renderIEDItems(parent)} </md-list>\n </div>\n <selection-list\n id=\"lnList\"\n multi\n .items=${anyLnItems(parent)}\n filterable\n ></selection-list>\n </div>\n </div>`,\n ],\n };\n}\n\ninterface ContentOptions {\n iedName: string | null;\n ldInst: string | null;\n prefix: string | null;\n lnClass: string | null;\n lnInst: string | null;\n reservedLnInst: string[];\n}\n\nfunction contentLNodeWizard(options: ContentOptions): TemplateResult[] {\n const isIedRef = options.iedName !== 'None';\n\n return [\n html`<scl-text-field\n label=\"iedName\"\n .value=${options.iedName}\n helper=\"iedName\"\n disabled\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"ldInst\"\n .value=${options.ldInst}\n helper=\"ldInst\"\n nullable\n disabled\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"prefix\"\n .value=${options.prefix}\n helper=\"prefix\"\n pattern=\"${patterns.normalizedString}\"\n maxLength=\"11\"\n nullable\n ?disabled=${isIedRef}\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"lnClass\"\n .value=${options.lnClass}\n helper=\"lnClass\"\n disabled\n ></scl-text-field>`,\n html`<scl-text-field\n label=\"lnInst\"\n .value=${options.lnInst}\n helper=\"lnInst\"\n type=\"number\"\n min=\"1\"\n max=\"99\"\n .reservedValues=${options.reservedLnInst}\n ?disabled=${isIedRef}\n ></scl-text-field>`,\n ];\n}\n\nfunction updateLNodeAction(element: Element): WizardActor {\n return (inputs: WizardInputElement[]): EditV2[] => {\n const attributes: Record<string, string | null> = {};\n const attributeKeys = ['iedName', 'ldInst', 'prefix', 'lnClass', 'lnInst'];\n\n attributeKeys.forEach(key => {\n attributes[key] = getValue(inputs.find(i => i.label === key)!);\n });\n\n if (\n attributeKeys.some(key => attributes[key] !== element.getAttribute(key))\n ) {\n const newElement = cloneElement(element, attributes);\n\n const parent = element.parentElement ?? element.ownerDocument;\n const nextSibling = element.nextSibling ?? null;\n\n return [\n { node: element },\n ...(newElement\n ? [\n {\n node: newElement,\n parent,\n reference: nextSibling,\n },\n ]\n : []),\n ] as EditV2[];\n }\n return [];\n };\n}\n\nexport function editLNodeWizard(element: Element): Wizard {\n const [iedName, ldInst, prefix, lnClass, lnInst] = [\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n ].map(attr => element.getAttribute(attr));\n\n const reservedLnInst = getChildElementsByTagName(\n element.parentElement,\n 'LNode',\n )\n .filter(\n sibling =>\n sibling !== element &&\n sibling.getAttribute('lnClass') === element.getAttribute('lnClass'),\n )\n .map(sibling => sibling.getAttribute('lnInst')!);\n\n return {\n title: 'LNode',\n primary: {\n label: 'Save',\n icon: 'save',\n action: updateLNodeAction(element),\n },\n content: contentLNodeWizard({\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n reservedLnInst,\n }),\n };\n}\n"]}
@@ -27,7 +27,7 @@ import { editSMvWizard } from './smv.js';
27
27
  import { createDOTypeWizard } from './dotype.js';
28
28
  import { createEnumTypeWizard } from './enumtype.js';
29
29
  import { createLNodeTypeWizard } from './lnodetype.js';
30
- import { createLNodeWizard } from './lnode.js';
30
+ import { createLNodeWizard, editLNodeWizard } from './lnode.js';
31
31
  import { createLNWizard, updateLNWizard } from './ln.js';
32
32
  import { updateLN0Wizard } from './ln0.js';
33
33
  import { editBDaWizard } from './bda.js';
@@ -280,7 +280,7 @@ export const wizards = {
280
280
  create: emptyWizard,
281
281
  },
282
282
  LNode: {
283
- edit: emptyWizard,
283
+ edit: editLNodeWizard,
284
284
  create: createLNodeWizard,
285
285
  },
286
286
  LNodeType: {
@@ -1 +1 @@
1
- {"version":3,"file":"wizards.js","sourceRoot":"","sources":["../../wizards/wizards.ts"],"names":[],"mappings":"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","sourcesContent":["import { Wizard } from '../foundation.js';\n\nimport { createBayWizard, editBayWizard } from './bay.js';\nimport {\n createConductingEquipmentWizard,\n editConductingEquipmentWizard,\n} from './conductingequipment.js';\nimport {\n createConnectedApWizard,\n editConnectedApWizard,\n} from './connectedap.js';\nimport { createDaWizard, editDAWizard } from './da.js';\nimport { createDoWizard, editDoWizard } from './do.js';\nimport { createEnumValWizard, editEnumValWizard } from './enumval.js';\nimport { createEqFunctionWizard, editEqFunctionWizard } from './eqfunction.js';\nimport {\n createEqSubFunctionWizard,\n editEqSubFunctionWizard,\n} from './eqsubfunction.js';\nimport { createFunctionWizard, editFunctionWizard } from './function.js';\nimport {\n createGeneralEquipmentWizard,\n editGeneralEquipmentWizard,\n} from './generalEquipment.js';\nimport { createLineWizard, editLineWizard } from './line.js';\nimport {\n createPowerTransformerWizard,\n editPowerTransformerWizard,\n} from './powertransformer.js';\nimport { createProcessWizard, editProcessWizard } from './process.js';\nimport { createSDoWizard, editSDoWizard } from './sdo.js';\nimport {\n createSubEquipmentWizard,\n editSubEquipmentWizard,\n} from './subequipment.js';\nimport {\n createSubFunctionWizard,\n editSubFunctionWizard,\n} from './subfunction.js';\nimport { createSubNetworkWizard, editSubNetworkWizard } from './subnetwork.js';\nimport { createSubstationWizard, editSubstationWizard } from './substation.js';\nimport { createTapChangerWizard, editTapChangerWizard } from './tapchanger.js';\nimport { createTextWizard, editTextWizard } from './text.js';\nimport {\n createTransformerWindingWizard,\n editTransformerWindingWizard,\n} from './transformerWinding.js';\nimport {\n createVoltageLevelWizard,\n editVoltageLevelWizard,\n} from './voltagelevel.js';\n\nimport { editGseWizard } from './gse.js';\nimport { createIEDWizard, editIEDWizard } from './ied.js';\nimport { editLDeviceWizard, createLDeviceWizard } from './ldevice.js';\nimport { editSMvWizard } from './smv.js';\n\nimport { createDOTypeWizard } from './dotype.js';\nimport { createEnumTypeWizard } from './enumtype.js';\nimport { createLNodeTypeWizard } from './lnodetype.js';\nimport { createLNodeWizard } from './lnode.js';\nimport { createLNWizard, updateLNWizard } from './ln.js';\nimport { updateLN0Wizard } from './ln0.js';\nimport { editBDaWizard } from './bda.js';\n\ntype SclElementWizard = (\n element: Element,\n subWizard?: boolean,\n instanceElement?: Element,\n) => Wizard | undefined;\n\nexport function emptyWizard(): Wizard | undefined {\n return undefined;\n}\n\nexport const wizards: Record<\n string,\n {\n edit: SclElementWizard;\n create: SclElementWizard;\n }\n> = {\n AccessControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n AccessPoint: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Address: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Association: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Authentication: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Bay: {\n edit: editBayWizard,\n create: createBayWizard,\n },\n BDA: {\n edit: editBDaWizard,\n create: emptyWizard,\n },\n BitRate: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ClientLN: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ClientServices: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n CommProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Communication: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConductingEquipment: {\n edit: editConductingEquipmentWizard,\n create: createConductingEquipmentWizard,\n },\n ConfDataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLdName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLNs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLogControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfReportControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfSG: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfSigRef: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConnectedAP: {\n edit: editConnectedApWizard,\n create: createConnectedApWizard,\n },\n DA: {\n edit: editDAWizard,\n create: createDaWizard,\n },\n DAType: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DO: {\n edit: editDoWizard,\n create: createDoWizard,\n },\n DOI: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DOType: {\n edit: emptyWizard,\n create: createDOTypeWizard,\n },\n DataObjectDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataSetDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataTypeTemplates: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DynAssociation: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DynDataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n EnumType: {\n edit: emptyWizard,\n create: createEnumTypeWizard,\n },\n EnumVal: {\n edit: editEnumValWizard,\n create: createEnumValWizard,\n },\n EqFunction: {\n edit: editEqFunctionWizard,\n create: createEqFunctionWizard,\n },\n EqSubFunction: {\n edit: editEqSubFunctionWizard,\n create: createEqSubFunctionWizard,\n },\n ExtRef: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n FileHandling: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Function: {\n edit: editFunctionWizard,\n create: createFunctionWizard,\n },\n GeneralEquipment: {\n edit: editGeneralEquipmentWizard,\n create: createGeneralEquipmentWizard,\n },\n GetCBValues: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDataObjectDefinition: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDataSetValue: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GOOSE: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GOOSESecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSE: {\n edit: editGseWizard,\n create: emptyWizard,\n },\n GSEDir: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSESettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSSE: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Header: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n History: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Hitem: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n IED: {\n edit: editIEDWizard,\n create: createIEDWizard,\n },\n IEDName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Inputs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n IssuerName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n KDC: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LDevice: {\n edit: editLDeviceWizard,\n create: createLDeviceWizard,\n },\n LN: {\n edit: updateLNWizard,\n create: createLNWizard,\n },\n LN0: {\n edit: updateLN0Wizard,\n create: emptyWizard,\n },\n LNode: {\n edit: emptyWizard,\n create: createLNodeWizard,\n },\n LNodeType: {\n edit: emptyWizard,\n create: createLNodeTypeWizard,\n },\n Line: {\n edit: editLineWizard,\n create: createLineWizard,\n },\n Log: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LogControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LogSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n MaxTime: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n McSecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n MinTime: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n NeutralPoint: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n P: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n PhysConn: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n PowerTransformer: {\n edit: editPowerTransformerWizard,\n create: createPowerTransformerWizard,\n },\n Private: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Process: {\n edit: editProcessWizard,\n create: createProcessWizard,\n },\n ProtNs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Protocol: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReadWrite: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n RedProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReportControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReportSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n RptEnabled: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SamplesPerSec: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SecPerSamples: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SCL: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SDI: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SDO: {\n edit: editSDoWizard,\n create: createSDoWizard,\n },\n Server: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ServerAt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Services: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SetDataSetValue: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SettingControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SettingGroups: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SGEdit: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SmpRate: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMV: {\n edit: editSMvWizard,\n create: emptyWizard,\n },\n SmvOpts: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVsc: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVSecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SubEquipment: {\n edit: editSubEquipmentWizard,\n create: createSubEquipmentWizard,\n },\n SubFunction: {\n edit: editSubFunctionWizard,\n create: createSubFunctionWizard,\n },\n SubNetwork: {\n edit: editSubNetworkWizard,\n create: createSubNetworkWizard,\n },\n Subject: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Substation: {\n edit: editSubstationWizard,\n create: createSubstationWizard,\n },\n SupSubscription: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TapChanger: {\n edit: editTapChangerWizard,\n create: createTapChangerWizard,\n },\n Text: {\n edit: editTextWizard,\n create: createTextWizard,\n },\n TimerActivatedControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TimeSyncProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TransformerWinding: {\n edit: editTransformerWindingWizard,\n create: createTransformerWindingWizard,\n },\n Val: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ValueHandling: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Voltage: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n VoltageLevel: {\n edit: editVoltageLevelWizard,\n create: createVoltageLevelWizard,\n },\n};\n"]}
1
+ {"version":3,"file":"wizards.js","sourceRoot":"","sources":["../../wizards/wizards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC,MAAM,UAAU,WAAW;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAMhB;IACF,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;KACxB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,6BAA6B;QACnC,MAAM,EAAE,+BAA+B;KACxC;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,uBAAuB;KAChC;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,cAAc;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,cAAc;KACvB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,kBAAkB;KAC3B;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,oBAAoB;KAC7B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,mBAAmB;KAC5B;IACD,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,sBAAsB;KAC/B;IACD,aAAa,EAAE;QACb,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,yBAAyB;KAClC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,oBAAoB;KAC7B;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,4BAA4B;KACrC;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;KACxB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,mBAAmB;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,cAAc;KACvB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,WAAW;KACpB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,iBAAiB;KAC1B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,qBAAqB;KAC9B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,gBAAgB;KACzB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,CAAC,EAAE;QACD,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,4BAA4B;KACrC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,mBAAmB;KAC5B;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;KACxB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,wBAAwB;KACjC;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,uBAAuB;KAChC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,sBAAsB;KAC/B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,sBAAsB;KAC/B;IACD,eAAe,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,sBAAsB;KAC/B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,gBAAgB;KACzB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,4BAA4B;QAClC,MAAM,EAAE,8BAA8B;KACvC;IACD,GAAG,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,WAAW;KACpB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,wBAAwB;KACjC;CACF,CAAC","sourcesContent":["import { Wizard } from '../foundation.js';\n\nimport { createBayWizard, editBayWizard } from './bay.js';\nimport {\n createConductingEquipmentWizard,\n editConductingEquipmentWizard,\n} from './conductingequipment.js';\nimport {\n createConnectedApWizard,\n editConnectedApWizard,\n} from './connectedap.js';\nimport { createDaWizard, editDAWizard } from './da.js';\nimport { createDoWizard, editDoWizard } from './do.js';\nimport { createEnumValWizard, editEnumValWizard } from './enumval.js';\nimport { createEqFunctionWizard, editEqFunctionWizard } from './eqfunction.js';\nimport {\n createEqSubFunctionWizard,\n editEqSubFunctionWizard,\n} from './eqsubfunction.js';\nimport { createFunctionWizard, editFunctionWizard } from './function.js';\nimport {\n createGeneralEquipmentWizard,\n editGeneralEquipmentWizard,\n} from './generalEquipment.js';\nimport { createLineWizard, editLineWizard } from './line.js';\nimport {\n createPowerTransformerWizard,\n editPowerTransformerWizard,\n} from './powertransformer.js';\nimport { createProcessWizard, editProcessWizard } from './process.js';\nimport { createSDoWizard, editSDoWizard } from './sdo.js';\nimport {\n createSubEquipmentWizard,\n editSubEquipmentWizard,\n} from './subequipment.js';\nimport {\n createSubFunctionWizard,\n editSubFunctionWizard,\n} from './subfunction.js';\nimport { createSubNetworkWizard, editSubNetworkWizard } from './subnetwork.js';\nimport { createSubstationWizard, editSubstationWizard } from './substation.js';\nimport { createTapChangerWizard, editTapChangerWizard } from './tapchanger.js';\nimport { createTextWizard, editTextWizard } from './text.js';\nimport {\n createTransformerWindingWizard,\n editTransformerWindingWizard,\n} from './transformerWinding.js';\nimport {\n createVoltageLevelWizard,\n editVoltageLevelWizard,\n} from './voltagelevel.js';\n\nimport { editGseWizard } from './gse.js';\nimport { createIEDWizard, editIEDWizard } from './ied.js';\nimport { editLDeviceWizard, createLDeviceWizard } from './ldevice.js';\nimport { editSMvWizard } from './smv.js';\n\nimport { createDOTypeWizard } from './dotype.js';\nimport { createEnumTypeWizard } from './enumtype.js';\nimport { createLNodeTypeWizard } from './lnodetype.js';\nimport { createLNodeWizard, editLNodeWizard } from './lnode.js';\nimport { createLNWizard, updateLNWizard } from './ln.js';\nimport { updateLN0Wizard } from './ln0.js';\nimport { editBDaWizard } from './bda.js';\n\ntype SclElementWizard = (\n element: Element,\n subWizard?: boolean,\n instanceElement?: Element,\n) => Wizard | undefined;\n\nexport function emptyWizard(): Wizard | undefined {\n return undefined;\n}\n\nexport const wizards: Record<\n string,\n {\n edit: SclElementWizard;\n create: SclElementWizard;\n }\n> = {\n AccessControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n AccessPoint: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Address: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Association: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Authentication: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Bay: {\n edit: editBayWizard,\n create: createBayWizard,\n },\n BDA: {\n edit: editBDaWizard,\n create: emptyWizard,\n },\n BitRate: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ClientLN: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ClientServices: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n CommProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Communication: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConductingEquipment: {\n edit: editConductingEquipmentWizard,\n create: createConductingEquipmentWizard,\n },\n ConfDataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLdName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLNs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfLogControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfReportControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfSG: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConfSigRef: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ConnectedAP: {\n edit: editConnectedApWizard,\n create: createConnectedApWizard,\n },\n DA: {\n edit: editDAWizard,\n create: createDaWizard,\n },\n DAType: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DO: {\n edit: editDoWizard,\n create: createDoWizard,\n },\n DOI: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DOType: {\n edit: emptyWizard,\n create: createDOTypeWizard,\n },\n DataObjectDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataSetDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DataTypeTemplates: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DynAssociation: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n DynDataSet: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n EnumType: {\n edit: emptyWizard,\n create: createEnumTypeWizard,\n },\n EnumVal: {\n edit: editEnumValWizard,\n create: createEnumValWizard,\n },\n EqFunction: {\n edit: editEqFunctionWizard,\n create: createEqFunctionWizard,\n },\n EqSubFunction: {\n edit: editEqSubFunctionWizard,\n create: createEqSubFunctionWizard,\n },\n ExtRef: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n FileHandling: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Function: {\n edit: editFunctionWizard,\n create: createFunctionWizard,\n },\n GeneralEquipment: {\n edit: editGeneralEquipmentWizard,\n create: createGeneralEquipmentWizard,\n },\n GetCBValues: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDataObjectDefinition: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDataSetValue: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GetDirectory: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GOOSE: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GOOSESecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSE: {\n edit: editGseWizard,\n create: emptyWizard,\n },\n GSEDir: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSESettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n GSSE: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Header: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n History: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Hitem: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n IED: {\n edit: editIEDWizard,\n create: createIEDWizard,\n },\n IEDName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Inputs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n IssuerName: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n KDC: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LDevice: {\n edit: editLDeviceWizard,\n create: createLDeviceWizard,\n },\n LN: {\n edit: updateLNWizard,\n create: createLNWizard,\n },\n LN0: {\n edit: updateLN0Wizard,\n create: emptyWizard,\n },\n LNode: {\n edit: editLNodeWizard,\n create: createLNodeWizard,\n },\n LNodeType: {\n edit: emptyWizard,\n create: createLNodeTypeWizard,\n },\n Line: {\n edit: editLineWizard,\n create: createLineWizard,\n },\n Log: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LogControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n LogSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n MaxTime: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n McSecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n MinTime: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n NeutralPoint: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n P: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n PhysConn: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n PowerTransformer: {\n edit: editPowerTransformerWizard,\n create: createPowerTransformerWizard,\n },\n Private: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Process: {\n edit: editProcessWizard,\n create: createProcessWizard,\n },\n ProtNs: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Protocol: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReadWrite: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n RedProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReportControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ReportSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n RptEnabled: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SamplesPerSec: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SecPerSamples: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SCL: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SDI: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SDO: {\n edit: editSDoWizard,\n create: createSDoWizard,\n },\n Server: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ServerAt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Services: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SetDataSetValue: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SettingControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SettingGroups: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SGEdit: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SmpRate: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMV: {\n edit: editSMvWizard,\n create: emptyWizard,\n },\n SmvOpts: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVsc: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVSecurity: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SMVSettings: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n SubEquipment: {\n edit: editSubEquipmentWizard,\n create: createSubEquipmentWizard,\n },\n SubFunction: {\n edit: editSubFunctionWizard,\n create: createSubFunctionWizard,\n },\n SubNetwork: {\n edit: editSubNetworkWizard,\n create: createSubNetworkWizard,\n },\n Subject: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Substation: {\n edit: editSubstationWizard,\n create: createSubstationWizard,\n },\n SupSubscription: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TapChanger: {\n edit: editTapChangerWizard,\n create: createTapChangerWizard,\n },\n Text: {\n edit: editTextWizard,\n create: createTextWizard,\n },\n TimerActivatedControl: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TimeSyncProt: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n TransformerWinding: {\n edit: editTransformerWindingWizard,\n create: createTransformerWindingWizard,\n },\n Val: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n ValueHandling: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n Voltage: {\n edit: emptyWizard,\n create: emptyWizard,\n },\n VoltageLevel: {\n edit: editVoltageLevelWizard,\n create: createVoltageLevelWizard,\n },\n};\n"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@omicronenergy/oscd-scl-dialogs",
3
3
  "description": "Provides a resuable dialog for adding and editing SCL elements in OpenSCD.",
4
4
  "displayName": "OpenSCD Edit Dialog",
5
- "version": "0.0.10",
5
+ "version": "0.0.12",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/OMICRONEnergyOSS/oscd-scl-dialogs.git"