@compas-oscd/open-scd 0.34.16 → 0.34.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/WizardDivider.d.ts +8 -8
  2. package/dist/WizardDivider.js +26 -26
  3. package/dist/Wizarding.js +36 -36
  4. package/dist/Wizarding.js.map +1 -1
  5. package/dist/action-icon.d.ts +25 -25
  6. package/dist/action-icon.js +51 -51
  7. package/dist/action-pane.d.ts +25 -25
  8. package/dist/action-pane.js +86 -86
  9. package/dist/addons/Editor.d.ts +25 -25
  10. package/dist/addons/Editor.js +105 -105
  11. package/dist/addons/Editor.js.map +1 -1
  12. package/dist/addons/History.d.ts +86 -93
  13. package/dist/addons/History.js +301 -302
  14. package/dist/addons/History.js.map +1 -1
  15. package/dist/addons/Layout.d.ts +96 -96
  16. package/dist/addons/Layout.js +448 -448
  17. package/dist/addons/Layout.js.map +1 -1
  18. package/dist/addons/Settings.d.ts +68 -68
  19. package/dist/addons/Settings.js +272 -272
  20. package/dist/addons/Settings.js.map +1 -1
  21. package/dist/addons/Waiter.d.ts +14 -14
  22. package/dist/addons/Waiter.js +40 -40
  23. package/dist/addons/Waiter.js.map +1 -1
  24. package/dist/addons/Wizards.d.ts +15 -15
  25. package/dist/addons/Wizards.js +46 -46
  26. package/dist/addons/editor/edit-action-to-v1-converter.d.ts +3 -3
  27. package/dist/addons/editor/edit-action-to-v1-converter.js +95 -95
  28. package/dist/addons/editor/edit-action-to-v1-converter.js.map +1 -1
  29. package/dist/addons/editor/edit-v1-to-v2-converter.d.ts +2 -2
  30. package/dist/addons/editor/edit-v1-to-v2-converter.js +36 -36
  31. package/dist/addons/editor/edit-v1-to-v2-converter.js.map +1 -1
  32. package/dist/addons/history/get-log-text.d.ts +5 -5
  33. package/dist/addons/history/get-log-text.js +25 -25
  34. package/dist/addons/history/get-log-text.js.map +1 -1
  35. package/dist/addons/menu-tabs/menu-tabs.d.ts +22 -22
  36. package/dist/addons/menu-tabs/menu-tabs.js +59 -59
  37. package/dist/addons/plugin-manager/custom-plugin-dialog.d.ts +28 -28
  38. package/dist/addons/plugin-manager/custom-plugin-dialog.js +71 -71
  39. package/dist/addons/plugin-manager/plugin-manager.d.ts +20 -20
  40. package/dist/addons/plugin-manager/plugin-manager.js +77 -77
  41. package/dist/core/api/api.js +7 -0
  42. package/dist/core/api/api.js.map +1 -0
  43. package/dist/core/api/editor/subject.js +22 -0
  44. package/dist/core/api/editor/subject.js.map +1 -0
  45. package/dist/core/api/editor/xml-editor.js +82 -0
  46. package/dist/core/api/editor/xml-editor.js.map +1 -0
  47. package/dist/core/api/plugin-state-api.js +27 -0
  48. package/dist/core/api/plugin-state-api.js.map +1 -0
  49. package/dist/core/foundation/cyrb64.js +26 -0
  50. package/dist/core/foundation/cyrb64.js.map +1 -0
  51. package/dist/core/foundation/deprecated/edit-event.js +44 -0
  52. package/dist/core/foundation/deprecated/edit-event.js.map +1 -0
  53. package/dist/core/foundation/deprecated/editor.js +94 -0
  54. package/dist/core/foundation/deprecated/editor.js.map +1 -0
  55. package/dist/core/foundation/deprecated/history.js +17 -0
  56. package/dist/core/foundation/deprecated/history.js.map +1 -0
  57. package/dist/core/foundation/deprecated/open-event.js +9 -0
  58. package/dist/core/foundation/deprecated/open-event.js.map +1 -0
  59. package/dist/core/foundation/deprecated/settings.js +19 -0
  60. package/dist/core/foundation/deprecated/settings.js.map +1 -0
  61. package/dist/core/foundation/deprecated/validation.js +8 -0
  62. package/dist/core/foundation/deprecated/validation.js.map +1 -0
  63. package/dist/core/foundation/deprecated/waiter.js +12 -0
  64. package/dist/core/foundation/deprecated/waiter.js.map +1 -0
  65. package/dist/core/foundation/edit-completed-event.js +11 -0
  66. package/dist/core/foundation/edit-completed-event.js.map +1 -0
  67. package/dist/core/foundation/edit-event.js +8 -0
  68. package/dist/core/foundation/edit-event.js.map +1 -0
  69. package/dist/core/foundation/edit.js +31 -0
  70. package/dist/core/foundation/edit.js.map +1 -0
  71. package/dist/core/foundation/handle-edit.js +151 -0
  72. package/dist/core/foundation/handle-edit.js.map +1 -0
  73. package/dist/core/foundation/open-event.js +8 -0
  74. package/dist/core/foundation/open-event.js.map +1 -0
  75. package/dist/core/foundation/plugin.js +2 -0
  76. package/dist/core/foundation/plugin.js.map +1 -0
  77. package/dist/core/foundation.js +14 -0
  78. package/dist/core/foundation.js.map +1 -0
  79. package/dist/core/locales.js +21 -0
  80. package/dist/core/locales.js.map +1 -0
  81. package/dist/filtered-list.d.ts +27 -27
  82. package/dist/filtered-list.js +118 -118
  83. package/dist/finder-list.d.ts +37 -37
  84. package/dist/finder-list.js +153 -153
  85. package/dist/foundation/compare.d.ts +79 -79
  86. package/dist/foundation/compare.js +216 -216
  87. package/dist/foundation/dai.d.ts +30 -30
  88. package/dist/foundation/dai.js +126 -126
  89. package/dist/foundation/generators.d.ts +13 -13
  90. package/dist/foundation/generators.js +66 -66
  91. package/dist/foundation/ied.d.ts +22 -22
  92. package/dist/foundation/ied.js +83 -83
  93. package/dist/foundation/ied.js.map +1 -1
  94. package/dist/foundation/nsd.d.ts +4 -4
  95. package/dist/foundation/nsd.js +12 -12
  96. package/dist/foundation/nsdoc.d.ts +14 -14
  97. package/dist/foundation/nsdoc.js +178 -178
  98. package/dist/foundation/scl.d.ts +1 -1
  99. package/dist/foundation/scl.js +63 -63
  100. package/dist/foundation.d.ts +230 -230
  101. package/dist/foundation.js +1921 -1921
  102. package/dist/foundation.js.map +1 -1
  103. package/dist/icons/compare.d.ts +3 -3
  104. package/dist/icons/compare.js +4 -4
  105. package/dist/icons/icons.d.ts +41 -41
  106. package/dist/icons/icons.js +92 -92
  107. package/dist/icons/ied-icons.d.ts +3 -3
  108. package/dist/icons/ied-icons.js +4 -4
  109. package/dist/icons/lnode.d.ts +16 -16
  110. package/dist/icons/lnode.js +17 -17
  111. package/dist/open-scd.d.ts +131 -131
  112. package/dist/open-scd.js +438 -438
  113. package/dist/open-scd.js.map +1 -1
  114. package/dist/openscd/src/WizardDivider.js +37 -0
  115. package/dist/openscd/src/WizardDivider.js.map +1 -0
  116. package/dist/openscd/src/Wizarding.js +38 -0
  117. package/dist/openscd/src/Wizarding.js.map +1 -0
  118. package/dist/openscd/src/action-icon.js +220 -0
  119. package/dist/openscd/src/action-icon.js.map +1 -0
  120. package/dist/openscd/src/action-pane.js +176 -0
  121. package/dist/openscd/src/action-pane.js.map +1 -0
  122. package/dist/openscd/src/addons/Editor.js +106 -0
  123. package/dist/openscd/src/addons/Editor.js.map +1 -0
  124. package/dist/openscd/src/addons/History.js +490 -0
  125. package/dist/openscd/src/addons/History.js.map +1 -0
  126. package/dist/openscd/src/addons/Layout.js +619 -0
  127. package/dist/openscd/src/addons/Layout.js.map +1 -0
  128. package/dist/openscd/src/addons/Settings.js +465 -0
  129. package/dist/openscd/src/addons/Settings.js.map +1 -0
  130. package/dist/openscd/src/addons/Waiter.js +45 -0
  131. package/dist/openscd/src/addons/Waiter.js.map +1 -0
  132. package/dist/openscd/src/addons/Wizards.js +48 -0
  133. package/dist/openscd/src/addons/Wizards.js.map +1 -0
  134. package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js +96 -0
  135. package/dist/openscd/src/addons/editor/edit-action-to-v1-converter.js.map +1 -0
  136. package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js +37 -0
  137. package/dist/openscd/src/addons/editor/edit-v1-to-v2-converter.js.map +1 -0
  138. package/dist/openscd/src/addons/history/get-log-text.js +26 -0
  139. package/dist/openscd/src/addons/history/get-log-text.js.map +1 -0
  140. package/dist/openscd/src/addons/menu-tabs/menu-tabs.js +74 -0
  141. package/dist/openscd/src/addons/menu-tabs/menu-tabs.js.map +1 -0
  142. package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js +177 -0
  143. package/dist/openscd/src/addons/plugin-manager/custom-plugin-dialog.js.map +1 -0
  144. package/dist/openscd/src/addons/plugin-manager/plugin-manager.js +165 -0
  145. package/dist/openscd/src/addons/plugin-manager/plugin-manager.js.map +1 -0
  146. package/dist/openscd/src/filtered-list.js +168 -0
  147. package/dist/openscd/src/filtered-list.js.map +1 -0
  148. package/dist/openscd/src/finder-list.js +207 -0
  149. package/dist/openscd/src/finder-list.js.map +1 -0
  150. package/dist/openscd/src/foundation/compare.js +273 -0
  151. package/dist/openscd/src/foundation/compare.js.map +1 -0
  152. package/dist/openscd/src/foundation/dai.js +127 -0
  153. package/dist/openscd/src/foundation/dai.js.map +1 -0
  154. package/dist/openscd/src/foundation/generators.js +67 -0
  155. package/dist/openscd/src/foundation/generators.js.map +1 -0
  156. package/dist/openscd/src/foundation/ied.js +84 -0
  157. package/dist/openscd/src/foundation/ied.js.map +1 -0
  158. package/dist/openscd/src/foundation/nsd.js +13 -0
  159. package/dist/openscd/src/foundation/nsd.js.map +1 -0
  160. package/dist/openscd/src/foundation/nsdoc.js +180 -0
  161. package/dist/openscd/src/foundation/nsdoc.js.map +1 -0
  162. package/dist/openscd/src/foundation/scl.js +64 -0
  163. package/dist/openscd/src/foundation/scl.js.map +1 -0
  164. package/dist/openscd/src/foundation.js +1922 -0
  165. package/dist/openscd/src/foundation.js.map +1 -0
  166. package/dist/openscd/src/icons/compare.js +11 -0
  167. package/dist/openscd/src/icons/compare.js.map +1 -0
  168. package/dist/openscd/src/icons/icons.js +611 -0
  169. package/dist/openscd/src/icons/icons.js.map +1 -0
  170. package/dist/openscd/src/icons/ied-icons.js +11 -0
  171. package/dist/openscd/src/icons/ied-icons.js.map +1 -0
  172. package/dist/openscd/src/icons/lnode.js +50 -0
  173. package/dist/openscd/src/icons/lnode.js.map +1 -0
  174. package/dist/openscd/src/open-scd.js +483 -0
  175. package/dist/openscd/src/open-scd.js.map +1 -0
  176. package/dist/openscd/src/oscd-filter-button.js +89 -0
  177. package/dist/openscd/src/oscd-filter-button.js.map +1 -0
  178. package/dist/openscd/src/plain-compare-list.js +132 -0
  179. package/dist/openscd/src/plain-compare-list.js.map +1 -0
  180. package/dist/openscd/src/plugin-tag.js +23 -0
  181. package/dist/openscd/src/plugin-tag.js.map +1 -0
  182. package/dist/openscd/src/plugin.events.js +12 -0
  183. package/dist/openscd/src/plugin.events.js.map +1 -0
  184. package/dist/openscd/src/plugin.js +2 -0
  185. package/dist/openscd/src/plugin.js.map +1 -0
  186. package/dist/openscd/src/plugins.js +256 -0
  187. package/dist/openscd/src/plugins.js.map +1 -0
  188. package/dist/openscd/src/schemas.js +9325 -0
  189. package/dist/openscd/src/schemas.js.map +1 -0
  190. package/dist/openscd/src/themes.js +122 -0
  191. package/dist/openscd/src/themes.js.map +1 -0
  192. package/dist/openscd/src/translations/de.js +954 -0
  193. package/dist/openscd/src/translations/de.js.map +1 -0
  194. package/dist/openscd/src/translations/en.js +950 -0
  195. package/dist/openscd/src/translations/en.js.map +1 -0
  196. package/dist/openscd/src/translations/loader.js +10 -0
  197. package/dist/openscd/src/translations/loader.js.map +1 -0
  198. package/dist/openscd/src/wizard-checkbox.js +152 -0
  199. package/dist/openscd/src/wizard-checkbox.js.map +1 -0
  200. package/dist/openscd/src/wizard-dialog.js +374 -0
  201. package/dist/openscd/src/wizard-dialog.js.map +1 -0
  202. package/dist/openscd/src/wizard-select.js +115 -0
  203. package/dist/openscd/src/wizard-select.js.map +1 -0
  204. package/dist/openscd/src/wizard-textfield.js +191 -0
  205. package/dist/openscd/src/wizard-textfield.js.map +1 -0
  206. package/dist/openscd/src/wizards.js +196 -0
  207. package/dist/openscd/src/wizards.js.map +1 -0
  208. package/dist/oscd-filter-button.d.ts +27 -27
  209. package/dist/oscd-filter-button.js +59 -59
  210. package/dist/plain-compare-list.d.ts +36 -36
  211. package/dist/plain-compare-list.js +70 -70
  212. package/dist/plugin-tag.d.ts +6 -6
  213. package/dist/plugin-tag.js +22 -22
  214. package/dist/plugin.d.ts +23 -23
  215. package/dist/plugin.events.d.ts +15 -15
  216. package/dist/plugin.events.js +11 -11
  217. package/dist/plugin.js +1 -1
  218. package/dist/plugin.js.map +1 -1
  219. package/dist/plugins.d.ts +3 -3
  220. package/dist/plugins.js +255 -255
  221. package/dist/schemas.d.ts +58 -58
  222. package/dist/schemas.js +59 -59
  223. package/dist/themes.d.ts +3 -3
  224. package/dist/themes.js +13 -13
  225. package/dist/themes.js.map +1 -1
  226. package/dist/translations/de.d.ts +2 -2
  227. package/dist/translations/de.js +952 -952
  228. package/dist/translations/en.d.ts +963 -963
  229. package/dist/translations/en.js +948 -948
  230. package/dist/translations/loader.d.ts +12 -12
  231. package/dist/translations/loader.js +9 -9
  232. package/dist/translations/loader.js.map +1 -1
  233. package/dist/wizard-checkbox.d.ts +37 -37
  234. package/dist/wizard-checkbox.js +130 -130
  235. package/dist/wizard-dialog.d.ts +45 -45
  236. package/dist/wizard-dialog.js +235 -235
  237. package/dist/wizard-dialog.js.map +1 -1
  238. package/dist/wizard-select.d.ts +31 -31
  239. package/dist/wizard-select.js +102 -102
  240. package/dist/wizard-textfield.d.ts +50 -50
  241. package/dist/wizard-textfield.js +162 -162
  242. package/dist/wizards.d.ts +23 -23
  243. package/dist/wizards.js +148 -148
  244. package/dist/wizards.js.map +1 -1
  245. package/dist/xml/src/foundation.js +67 -0
  246. package/dist/xml/src/foundation.js.map +1 -0
  247. package/dist/xml/src/index.js +2 -0
  248. package/dist/xml/src/index.js.map +1 -0
  249. package/package.json +29 -127
  250. package/dist/Wizarding.d.ts +0 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../../src/foundation.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, TemplateResult } from 'lit-element';\nimport { directive, Part } from 'lit-html';\n\nimport { List } from '@material/mwc-list';\nimport { Select } from '@material/mwc-select';\nimport { TextField } from '@material/mwc-textfield';\nimport AceEditor from 'ace-custom-element';\n\nimport { getChildElementsByTagName } from '@openscd/xml';\n\nimport { WizardTextField } from './wizard-textfield.js';\nimport { WizardSelect } from './wizard-select.js';\nimport { WizardCheckbox } from './wizard-checkbox.js';\n\nimport { EditorAction } from '@openscd/core/foundation/deprecated/editor.js';\n\nexport const wizardInputSelector =\n 'wizard-textfield, mwc-textfield, ace-editor, mwc-select, wizard-select, wizard-checkbox';\nexport type WizardInputElement =\n | WizardTextField\n | TextField\n | (AceEditor & {\n checkValidity: () => boolean;\n validityTransform: (\n newValue: string,\n nativeValidity: ValidityState\n ) => ValidityState;\n validationMessage: string;\n validity: ValidityState;\n label: string;\n requestUpdate(name?: PropertyKey, oldValue?: unknown): Promise<unknown>;\n })\n // TODO(c-dinkel): extend component\n | Select\n | WizardSelect;\n\nexport type WizardAction = EditorAction | WizardFactory;\n\n/** @returns [[`EditorAction`]]s to dispatch on [[`WizardDialog`]] commit. */\nexport type WizardActor = (\n inputs: WizardInputElement[],\n wizard: Element,\n list?: List | null\n) => WizardAction[];\n\nexport function isWizardFactory(\n maybeFactory: WizardAction | Wizard | null\n): maybeFactory is WizardFactory {\n return typeof maybeFactory === 'function';\n}\n\n/** @returns the validity of `input` depending on type. */\nexport function checkValidity(input: WizardInputElement): boolean {\n if (input instanceof WizardTextField || input instanceof Select)\n return input.checkValidity();\n else return true;\n}\n\n/** reports the validity of `input` depending on type. */\nexport function reportValidity(input: WizardInputElement): boolean {\n if (input instanceof WizardTextField || input instanceof Select)\n return input.reportValidity();\n else return true;\n}\n\n/** @returns the `value` or `maybeValue` of `input` depending on type. */\nexport function getValue(input: WizardInputElement): string | null {\n if (\n input instanceof WizardTextField ||\n input instanceof WizardSelect ||\n input instanceof WizardCheckbox\n )\n return input.maybeValue;\n else return input.value ?? null;\n}\n\n/** @returns the `multiplier` of `input` if available. */\nexport function getMultiplier(input: WizardInputElement): string | null {\n if (input instanceof WizardTextField) return input.multiplier;\n else return null;\n}\n\n/** Inputs as `TextField`, `Select` or `Checkbox `used in`wizard-dialog` */\nexport type WizardInput =\n | WizardInputTextField\n | WizardInputSelect\n | WizardInputCheckbox;\n\ninterface WizardInputBase {\n /** maps attribute key */\n label: string;\n /** maps attribute value */\n maybeValue: string | null;\n /** whether attribute is optional */\n nullable?: boolean;\n /** whether the input shall be disabled */\n disabled?: boolean;\n /** helper text */\n helper?: string;\n /** initial focused element in `wizard-dialog` (once per dialog) */\n dialogInitialFocus?: boolean;\n}\n\ninterface WizardInputTextField extends WizardInputBase {\n kind: 'TextField';\n /** wether the input might be empty string */\n required?: boolean;\n /** pattern definition from schema */\n pattern?: string;\n /** minimal characters allowed */\n minLength?: number;\n /** maximal characters allowed */\n maxLength?: number;\n /** message text explaining invalid inputs */\n validationMessage?: string;\n /** suffix definition - overwrites unit multiplier definition */\n suffix?: string;\n /** SI unit for specific suffix definition */\n unit?: string;\n /** in comibination with unit defines specific suffix */\n multiplier?: string | null;\n /** array of multipliers allowed for the input */\n multipliers?: (string | null)[];\n /** used for specific input type e.g. number */\n type?: string;\n /** minimal valid number in combination with type number */\n min?: number;\n /** maximal valid number in combination with type number */\n max?: number;\n /** value displaxed when input is nulled */\n default?: string;\n}\n\ninterface WizardInputSelect extends WizardInputBase {\n kind: 'Select';\n /** selectabled values */\n values: string[];\n /** value displayed with input is nulled */\n default?: string;\n /** message explaining invalid inputs */\n valadationMessage?: string;\n}\n\ninterface WizardInputCheckbox extends WizardInputBase {\n kind: 'Checkbox';\n /** wether checkbox is checked with nulled input */\n default?: boolean;\n}\n\n/** @returns [[`WizardAction`]]s to dispatch on [[`WizardDialog`]] menu action. */\nexport type WizardMenuActor = (wizard: Element) => void;\n\n/** User interactions rendered in the wizard-dialog menu */\nexport interface MenuAction {\n label: string;\n icon?: string;\n action: WizardMenuActor;\n}\n\n/** Represents a page of a wizard dialog */\nexport interface WizardPage {\n title: string;\n content?: (TemplateResult | WizardInput)[];\n primary?: {\n icon: string;\n label: string;\n action: WizardActor;\n auto?: boolean;\n };\n secondary?: {\n icon: string;\n label: string;\n action: WizardActor;\n };\n initial?: boolean;\n element?: Element;\n menuActions?: MenuAction[];\n}\nexport type Wizard = WizardPage[];\nexport type WizardFactory = () => Wizard;\n\n/** If `wizard === null`, close the current wizard, else queue `wizard`. */\nexport interface WizardDetail {\n wizard: WizardFactory | null;\n subwizard?: boolean;\n}\nexport type WizardEvent = CustomEvent<WizardDetail>;\nexport function newWizardEvent(\n wizardOrFactory?: Wizard | WizardFactory,\n eventInitDict?: CustomEventInit<Partial<WizardDetail>>\n): WizardEvent {\n if (!wizardOrFactory)\n return new CustomEvent<WizardDetail>('wizard', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { wizard: null, ...eventInitDict?.detail },\n });\n\n const wizard = isWizardFactory(wizardOrFactory)\n ? wizardOrFactory\n : () => wizardOrFactory;\n\n return new CustomEvent<WizardDetail>('wizard', {\n bubbles: true,\n composed: true,\n ...eventInitDict,\n detail: { wizard, ...eventInitDict?.detail },\n });\n}\n\nexport function newSubWizardEvent(\n wizardOrFactory?: Wizard | WizardFactory\n): WizardEvent {\n return newWizardEvent(wizardOrFactory, { detail: { subwizard: true } });\n}\n\n/** @returns a reference to `element` with segments delimited by '/'. */\n// TODO(c-dinkel): replace with identity (FIXME)\nexport function referencePath(element: Element): string {\n let path = '';\n let nextParent: Element | null = element.parentElement;\n while (nextParent?.getAttribute('name')) {\n path = '/' + nextParent.getAttribute('name') + path;\n nextParent = nextParent.parentElement;\n }\n return path;\n}\n\nexport type SclEdition = '2003' | '2007B' | '2007B4';\nexport function getSclSchemaVersion(doc: Document): SclEdition {\n const scl: Element = doc.documentElement;\n const edition =\n (scl.getAttribute('version') ?? '2003') +\n (scl.getAttribute('revision') ?? '') +\n (scl.getAttribute('release') ?? '');\n return <SclEdition>edition;\n}\n\n/**\n * Extract the 'name' attribute from the given XML element.\n * @param element - The element to extract name from.\n * @returns the name, or undefined if there is no name.\n */\nexport function getNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('name');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'ldName' attribute from the given XML element.\n * @param element - The element to extract ldName from.\n * @returns the ldName, or undefined if there is no ldName.\n */\nexport function getLdNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('ldName');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'desc' attribute from the given XML element.\n * @param element - The element to extract description from.\n * @returns the name, or undefined if there is no description.\n */\nexport function getDescriptionAttribute(element: Element): string | undefined {\n const name = element.getAttribute('desc');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'pathName' attribute from the given XML element.\n * @param element - The element to extract path name from.\n * @returns the name, or undefined if there is no path name.\n */\nexport function getPathNameAttribute(element: Element): string | undefined {\n const name = element.getAttribute('pathName');\n return name ? name : undefined;\n}\n\n/**\n * Extract the 'inst' attribute from the given XML element.\n * @param element - The element to extract instance from.\n * @returns the instance, or undefined if there is no instance.\n */\nexport function getInstanceAttribute(element: Element): string | undefined {\n const inst = element.getAttribute('inst');\n return inst ? inst : undefined;\n}\n\nexport function pathParts(identity: string): [string, string] {\n const path = identity.split('>');\n const end = path.pop() ?? '';\n const start = path.join('>');\n return [start, end];\n}\n\nconst voidSelector = ':not(*)';\n\nfunction hitemIdentity(e: Element): string {\n return `${e.getAttribute('version')}\\t${e.getAttribute('revision')}`;\n}\n\nfunction hitemSelector(tagName: SCLTag, identity: string): string {\n const [version, revision] = identity.split('\\t');\n\n if (!version || !revision) return voidSelector;\n\n return `${tagName}[version=\"${version}\"][revision=\"${revision}\"]`;\n}\n\nfunction terminalIdentity(e: Element): string {\n return identity(e.parentElement) + '>' + e.getAttribute('connectivityNode');\n}\n\nfunction terminalSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, connectivityNode] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [`${tagName}[connectivityNode=\"${connectivityNode}\"]`]\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction lNodeIdentity(e: Element): string {\n const [iedName, ldInst, prefix, lnClass, lnInst, lnType] = [\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'lnType',\n ].map(name => e.getAttribute(name));\n if (iedName === 'None')\n return `${identity(e.parentElement)}>(${lnClass} ${lnType} ${lnInst})`;\n return `${iedName} ${ldInst || '(Client)'}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n }`;\n}\n\nfunction lNodeSelector(tagName: SCLTag, identity: string): string {\n if (identity.endsWith(')')) {\n const [parentIdentity, childIdentity] = pathParts(identity);\n const [lnClass, lnType, lnInst] = childIdentity\n .substring(1, childIdentity.length - 1)\n .split(' ');\n\n if (!lnClass || !lnType) return voidSelector;\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [`${tagName}[iedName=\"None\"][lnClass=\"${lnClass}\"][lnType=\"${lnType}\"][lnInst=\"${lnInst}\"]`]\n )\n .map(strings => strings.join(''))\n .join(',');\n }\n\n const [iedName, ldInst, prefix, lnClass, lnInst] = identity.split(/[ /]/);\n\n if (!iedName || !ldInst || !lnClass) return voidSelector;\n\n const [\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n [`[iedName=\"${iedName}\"]`],\n ldInst === '(Client)'\n ? [':not([ldInst])', '[ldInst=\"\"]']\n : [`[ldInst=\"${ldInst}\"]`],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n [tagName],\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction kDCIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute(\n 'iedName'\n )} ${e.getAttribute('apName')}`;\n}\n\nfunction kDCSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n const [iedName, apName] = childIdentity.split(' ');\n return `${selector(\n 'IED',\n parentIdentity\n )}>${tagName}[iedName=\"${iedName}\"][apName=\"${apName}\"]`;\n}\n\nfunction associationIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${\n e.getAttribute('associationID') ?? ''\n }`;\n}\n\nfunction associationSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, associationID] = pathParts(identity);\n\n if (!associationID) return voidSelector;\n\n return `${selector(\n 'Server',\n parentIdentity\n )}>${tagName}[associationID=\"${associationID}\"]`;\n}\n\nfunction lDeviceIdentity(e: Element): string {\n return `${identity(e.closest('IED')!)}>>${e.getAttribute('inst')}`;\n}\n\nfunction lDeviceSelector(tagName: SCLTag, identity: string): string {\n const [iedName, inst] = identity.split('>>');\n\n if (!inst) return voidSelector;\n\n return `IED[name=\"${iedName}\"] ${tagName}[inst=\"${inst}\"]`;\n}\n\nfunction iEDNameIdentity(e: Element): string {\n const iedName = e.textContent;\n const [apRef, ldInst, prefix, lnClass, lnInst] = [\n 'apRef',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n ].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${iedName} ${apRef ? apRef : ''} ${\n ldInst ? ldInst : ''\n }/${prefix ?? ''} ${lnClass ?? ''} ${lnInst ?? ''}`;\n}\n\nfunction iEDNameSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [iedName, apRef, ldInst, prefix, lnClass, lnInst] =\n childIdentity.split(/[ /]/);\n\n const [\n parentSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`${iedName}`],\n apRef ? [`[apRef=\"${apRef}\"]`] : [':not([apRef])', '[apRef=\"\"]'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction fCDAIdentity(e: Element): string {\n const [ldInst, prefix, lnClass, lnInst, doName, daName, fc, ix] = [\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n 'fc',\n 'ix',\n ].map(name => e.getAttribute(name));\n const dataPath = `${ldInst}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n }.${doName} ${daName ? daName : ''}`;\n return `${identity(e.parentElement)}>${dataPath} (${fc}${\n ix ? ' [' + ix + ']' : ''\n })`;\n}\n\nfunction fCDASelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [ldInst, prefix, lnClass, lnInst] = childIdentity.split(/[ /.]/);\n\n const matchDoDa = childIdentity.match(\n /.([A-Z][A-Za-z0-9.]*) ([A-Za-z0-9.]*) \\(/\n );\n const doName = matchDoDa && matchDoDa[1] ? matchDoDa[1] : '';\n const daName = matchDoDa && matchDoDa[2] ? matchDoDa[2] : '';\n\n const matchFx = childIdentity.match(/\\(([A-Z]{2})/);\n const matchIx = childIdentity.match(/ \\[([0-9]{1,2})\\]/);\n\n const fc = matchFx && matchFx[1] ? matchFx[1] : '';\n const ix = matchIx && matchIx[1] ? matchIx[1] : '';\n\n const [\n parentSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n fcSelectors,\n ixSelectors,\n ] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`[ldInst=\"${ldInst}\"]`],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n [`[doName=\"${doName}\"]`],\n daName ? [`[daName=\"${daName}\"]`] : [':not([daName])', '[daName=\"\"]'],\n [`[fc=\"${fc}\"]`],\n ix ? [`[ix=\"${ix}\"]`] : [':not([ix])', '[ix=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n fcSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction extRefIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const parentIdentity = identity(e.parentElement);\n const iedName = e.getAttribute('iedName');\n const intAddr = e.getAttribute('intAddr');\n const intAddrIndex = Array.from(\n e.parentElement.querySelectorAll(`ExtRef[intAddr=\"${intAddr}\"]`)\n ).indexOf(e);\n if (intAddr) return `${parentIdentity}>${intAddr}[${intAddrIndex}]`;\n const [\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n serviceType,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n srcCBName,\n ] = [\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n 'serviceType',\n 'srcLDInst',\n 'srcPrefix',\n 'srcLNClass',\n 'srcLNInst',\n 'srcCBName',\n ].map(name => e.getAttribute(name));\n\n const cbPath = srcCBName\n ? `${serviceType}:${srcCBName} ${srcLDInst ?? ''}/${srcPrefix ?? ''} ${\n srcLNClass ?? ''\n } ${srcLNInst ?? ''}`\n : '';\n const dataPath = `${iedName} ${ldInst}/${prefix ?? ''} ${lnClass} ${\n lnInst ?? ''\n } ${doName} ${daName ? daName : ''}`;\n return `${parentIdentity}>${cbPath ? cbPath + ' ' : ''}${dataPath}${\n intAddr ? '@' + `${intAddr}` : ''\n }`;\n}\n\nfunction extRefSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n if (childIdentity.endsWith(']')) {\n const [intAddr] = childIdentity.split('[');\n const intAddrSelectors = [`[intAddr=\"${intAddr}\"]`];\n\n return crossProduct(parentSelectors, ['>'], [tagName], intAddrSelectors)\n .map(strings => strings.join(''))\n .join(',');\n }\n\n let iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n intAddr;\n\n if (!childIdentity.includes(':') && !childIdentity.includes('@')) {\n [iedName, ldInst, prefix, lnClass, lnInst, doName, daName] =\n childIdentity.split(/[ /]/);\n } else if (childIdentity.includes(':') && !childIdentity.includes('@')) {\n [\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n ] = childIdentity.split(/[ /:]/);\n } else if (!childIdentity.includes(':') && childIdentity.includes('@')) {\n [iedName, ldInst, prefix, lnClass, lnInst, doName, daName, intAddr] =\n childIdentity.split(/[ /@]/);\n } else {\n [\n serviceType,\n srcCBName,\n srcLDInst,\n srcPrefix,\n srcLNClass,\n srcLNInst,\n iedName,\n ldInst,\n prefix,\n lnClass,\n lnInst,\n doName,\n daName,\n intAddr,\n ] = childIdentity.split(/[ /:@]/);\n }\n\n const [\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n serviceTypeSelectors,\n srcCBNameSelectors,\n srcLDInstSelectors,\n srcPrefixSelectors,\n srcLNClassSelectors,\n srcLNInstSelectors,\n intAddrSelectors,\n ] = [\n iedName ? [`[iedName=\"${iedName}\"]`] : [':not([iedName])'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n lnClass ? [`[lnClass=\"${lnClass}\"]`] : [':not([lnClass])'],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n doName ? [`[doName=\"${doName}\"]`] : [':not([doName])'],\n daName ? [`[daName=\"${daName}\"]`] : [':not([daName])', '[daName=\"\"]'],\n serviceType\n ? [`[serviceType=\"${serviceType}\"]`]\n : [':not([serviceType])', '[serviceType=\"\"]'],\n srcCBName\n ? [`[srcCBName=\"${srcCBName}\"]`]\n : [':not([srcCBName])', '[srcCBName=\"\"]'],\n srcLDInst\n ? [`[srcLDInst=\"${srcLDInst}\"]`]\n : [':not([srcLDInst])', '[srcLDInst=\"\"]'],\n srcPrefix\n ? [`[srcPrefix=\"${srcPrefix}\"]`]\n : [':not([srcPrefix])', '[srcPrefix=\"\"]'],\n srcLNClass\n ? [`[srcLNClass=\"${srcLNClass}\"]`]\n : [':not([srcLNClass])', '[srcLNClass=\"\"]'],\n srcLNInst\n ? [`[srcLNInst=\"${srcLNInst}\"]`]\n : [':not([srcLNInst])', '[srcLNInst=\"\"]'],\n intAddr ? [`[intAddr=\"${intAddr}\"]`] : [':not([intAddr])', '[intAddr=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n iedNameSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n doNameSelectors,\n daNameSelectors,\n serviceTypeSelectors,\n srcCBNameSelectors,\n srcLDInstSelectors,\n srcPrefixSelectors,\n srcLNClassSelectors,\n srcLNInstSelectors,\n intAddrSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction lNIdentity(e: Element): string {\n const [prefix, lnClass, inst] = ['prefix', 'lnClass', 'inst'].map(name =>\n e.getAttribute(name)\n );\n return `${identity(e.parentElement)}>${prefix ?? ''} ${lnClass} ${inst}`;\n}\n\nfunction lNSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [prefix, lnClass, inst] = childIdentity.split(' ');\n\n if (!lnClass) return voidSelector;\n\n const [prefixSelectors, lnClassSelectors, instSelectors] = [\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n [`[inst=\"${inst}\"]`],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n prefixSelectors,\n lnClassSelectors,\n instSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction clientLNIdentity(e: Element): string {\n const [apRef, iedName, ldInst, prefix, lnClass, lnInst] = [\n 'apRef',\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n ].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${iedName} ${\n apRef ? apRef : ''\n } ${ldInst}/${prefix ?? ''} ${lnClass} ${lnInst}`;\n}\n\nfunction clientLNSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [iedName, apRef, ldInst, prefix, lnClass, lnInst] =\n childIdentity.split(/[ /]/);\n\n const [\n iedNameSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors,\n ] = [\n iedName ? [`[iedName=\"${iedName}\"]`] : [':not([iedName])', '[iedName=\"\"]'],\n apRef ? [`[apRef=\"${apRef}\"]`] : [':not([apRef])', '[apRef=\"\"]'],\n ldInst ? [`[ldInst=\"${ldInst}\"]`] : [':not([ldInst])', '[ldInst=\"\"]'],\n prefix ? [`[prefix=\"${prefix}\"]`] : [':not([prefix])', '[prefix=\"\"]'],\n [`[lnClass=\"${lnClass}\"]`],\n lnInst ? [`[lnInst=\"${lnInst}\"]`] : [':not([lnInst])', '[lnInst=\"\"]'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n iedNameSelectors,\n apRefSelectors,\n ldInstSelectors,\n prefixSelectors,\n lnClassSelectors,\n lnInstSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction ixNamingIdentity(e: Element): string {\n const [name, ix] = ['name', 'ix'].map(name => e.getAttribute(name));\n return `${identity(e.parentElement)}>${name}${ix ? '[' + ix + ']' : ''}`;\n}\n\nfunction ixNamingSelector(\n tagName: SCLTag,\n identity: string,\n depth = -1\n): string {\n if (depth === -1) depth = identity.split('>').length;\n\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [_0, name, _1, ix] =\n childIdentity.match(/([^[]*)(\\[([0-9]*)\\])?/) ?? [];\n\n if (!name) return voidSelector;\n\n if (depth === 0) return `${tagName}[name=\"${name}\"]`;\n\n const parentSelectors = tags[tagName].parents\n .flatMap(parentTag =>\n parentTag === 'SDI'\n ? ixNamingSelector(parentTag, parentIdentity, depth - 1).split(',')\n : selector(parentTag, parentIdentity).split(',')\n )\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n const [nameSelectors, ixSelectors] = [\n [`[name=\"${name}\"]`],\n ix ? [`[ix=\"${ix}\"]`] : ['[ix=\"\"]', ':not([ix])'],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n nameSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction valIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const sGroup = e.getAttribute('sGroup');\n const index = Array.from(e.parentElement.children)\n .filter(child => child.getAttribute('sGroup') === sGroup)\n .findIndex(child => child.isSameNode(e));\n return `${identity(e.parentElement)}>${sGroup ? sGroup + '.' : ''} ${index}`;\n}\n\nfunction valSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [sGroup, indexText] = childIdentity.split(' ');\n const index = parseFloat(indexText);\n\n const parentSelectors = tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n );\n\n const [nameSelectors, ixSelectors] = [\n sGroup ? [`[sGroup=\"${sGroup}\"]`] : [''],\n index ? [`:nth-child(${index + 1})`] : [''],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n nameSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction connectedAPIdentity(e: Element): string {\n const [iedName, apName] = ['iedName', 'apName'].map(name =>\n e.getAttribute(name)\n );\n return `${iedName} ${apName}`;\n}\n\nfunction connectedAPSelector(tagName: SCLTag, identity: string): string {\n const [iedName, apName] = identity.split(' ');\n if (!iedName || !apName) return voidSelector;\n return `${tagName}[iedName=\"${iedName}\"][apName=\"${apName}\"]`;\n}\n\nfunction controlBlockIdentity(e: Element): string {\n const [ldInst, cbName] = ['ldInst', 'cbName'].map(name =>\n e.getAttribute(name)\n );\n return `${ldInst} ${cbName}`;\n}\n\nfunction controlBlockSelector(tagName: SCLTag, identity: string): string {\n const [ldInst, cbName] = identity.split(' ');\n\n if (!ldInst || !cbName) return voidSelector;\n\n return `${tagName}[ldInst=\"${ldInst}\"][cbName=\"${cbName}\"]`;\n}\n\nfunction physConnIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n if (!e.parentElement.querySelector('PhysConn[type=\"RedConn\"]')) return NaN;\n const pcType = e.getAttribute('type');\n if (\n e.parentElement.children.length > 1 &&\n pcType !== 'Connection' &&\n pcType !== 'RedConn'\n )\n return NaN;\n return `${identity(e.parentElement)}>${pcType}`;\n}\n\nfunction physConnSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, pcType] = pathParts(identity);\n\n const [parentSelectors, typeSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n pcType ? [`[type=\"${pcType}\"]`] : [''],\n ];\n\n return crossProduct(parentSelectors, ['>'], [tagName], typeSelectors)\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction pIdentity(e: Element): string | number {\n if (!e.parentElement) return NaN;\n const eParent = e.parentElement;\n const eType = e.getAttribute('type');\n if (eParent.tagName === 'PhysConn')\n return `${identity(e.parentElement)}>${eType}`;\n const index = Array.from(e.parentElement.children)\n .filter(child => child.getAttribute('type') === eType)\n .findIndex(child => child.isSameNode(e));\n return `${identity(e.parentElement)}>${eType} [${index}]`;\n}\n\nfunction pSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [type] = childIdentity.split(' ');\n const index =\n childIdentity &&\n childIdentity.match(/\\[([0-9]+)\\]/) &&\n childIdentity.match(/\\[([0-9]+)\\]/)![1]\n ? parseFloat(childIdentity.match(/\\[([0-9]+)\\]/)![1])\n : NaN;\n\n const [parentSelectors, typeSelectors, ixSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n [`[type=\"${type}\"]`],\n index ? [`:nth-child(${index + 1})`] : [''],\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n typeSelectors,\n ixSelectors\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction enumValIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute('ord')}`;\n}\n\nfunction enumValSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, ord] = pathParts(identity);\n return `${selector('EnumType', parentIdentity)}>${tagName}[ord=\"${ord}\"]`;\n}\n\nfunction protNsIdentity(e: Element): string {\n return `${identity(e.parentElement)}>${e.getAttribute('type') || '8-MMS'}\\t${\n e.textContent\n }`;\n}\n\nfunction protNsSelector(tagName: SCLTag, identity: string): string {\n const [parentIdentity, childIdentity] = pathParts(identity);\n\n const [type, value] = childIdentity.split('\\t');\n\n const [parentSelectors] = [\n tags[tagName].parents.flatMap(parentTag =>\n selector(parentTag, parentIdentity).split(',')\n ),\n ];\n\n return crossProduct(\n parentSelectors,\n ['>'],\n [tagName],\n [`[type=\"${type}\"]`],\n ['>'],\n [value]\n )\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction sCLIdentity(): string {\n return '';\n}\n\nfunction sCLSelector(): string {\n return ':root';\n}\n\nfunction namingIdentity(e: Element): string {\n return e.parentElement!.tagName === 'SCL'\n ? e.getAttribute('name')!\n : `${identity(e.parentElement)}>${e.getAttribute('name')}`;\n}\n\nfunction namingSelector(tagName: SCLTag, identity: string, depth = -1): string {\n if (depth === -1) depth = identity.split('>').length;\n\n const [parentIdentity, name] = pathParts(identity);\n if (!name) return voidSelector;\n if (depth === 0) return `${tagName}[name=\"${name}\"]`;\n\n const parents = tags[tagName].parents;\n if (!parents) return voidSelector;\n\n const parentSelectors = parents\n .flatMap(parentTag =>\n tags[parentTag].selector === tags['Substation'].selector\n ? namingSelector(parentTag, parentIdentity, depth - 1).split(',')\n : selector(parentTag, parentIdentity).split(',')\n )\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n return crossProduct(parentSelectors, ['>'], [tagName], [`[name=\"${name}\"]`])\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction singletonIdentity(e: Element): string {\n return identity(e.parentElement).toString();\n}\n\nfunction singletonSelector(tagName: SCLTag, identity: string): string {\n const parents = tags[tagName].parents;\n if (!parents) return voidSelector;\n\n const parentSelectors = parents\n .flatMap(parentTag => selector(parentTag, identity).split(','))\n .filter(selector => !selector.startsWith(voidSelector));\n\n if (parentSelectors.length === 0) return voidSelector;\n\n return crossProduct(parentSelectors, ['>'], [tagName])\n .map(strings => strings.join(''))\n .join(',');\n}\n\nfunction idNamingIdentity(e: Element): string {\n return `#${e.id}`;\n}\n\nfunction idNamingSelector(tagName: SCLTag, identity: string): string {\n const id = identity.replace(/^#/, '');\n\n if (!id) return voidSelector;\n\n return `${tagName}[id=\"${id}\"]`;\n}\n\ntype IdentityFunction = (e: Element) => string | number;\ntype SelectorFunction = (tagName: SCLTag, identity: string) => string;\n\nconst tAbstractConductingEquipment = [\n 'TransformerWinding',\n 'ConductingEquipment',\n] as const;\n\nconst tEquipment = [\n 'GeneralEquipment',\n 'PowerTransformer',\n ...tAbstractConductingEquipment,\n] as const;\nconst tEquipmentContainer = ['Substation', 'VoltageLevel', 'Bay'] as const;\nconst tGeneralEquipmentContainer = ['Process', 'Line'] as const;\nconst tAbstractEqFuncSubFunc = ['EqSubFunction', 'EqFunction'] as const;\n\nconst tPowerSystemResource = [\n 'SubFunction',\n 'Function',\n 'TapChanger',\n 'SubEquipment',\n ...tEquipment,\n ...tEquipmentContainer,\n ...tGeneralEquipmentContainer,\n ...tAbstractEqFuncSubFunc,\n] as const;\nconst tLNodeContainer = ['ConnectivityNode', ...tPowerSystemResource] as const;\nconst tCertificate = ['GOOSESecurity', 'SMVSecurity'] as const;\nconst tNaming = ['SubNetwork', ...tCertificate, ...tLNodeContainer] as const;\n\nconst tAbstractDataAttribute = ['BDA', 'DA'] as const;\nconst tControlWithIEDName = ['SampledValueControl', 'GSEControl'] as const;\nconst tControlWithTriggerOpt = ['LogControl', 'ReportControl'] as const;\nconst tControl = [...tControlWithIEDName, ...tControlWithTriggerOpt] as const;\nconst tControlBlock = ['GSE', 'SMV'] as const;\nconst tUnNaming = [\n 'ConnectedAP',\n 'PhysConn',\n 'SDO',\n 'DO',\n 'DAI',\n 'SDI',\n 'DOI',\n 'Inputs',\n 'RptEnabled',\n 'Server',\n 'ServerAt',\n 'SettingControl',\n 'Communication',\n 'Log',\n 'LDevice',\n 'DataSet',\n 'AccessPoint',\n 'IED',\n 'NeutralPoint',\n ...tControl,\n ...tControlBlock,\n ...tAbstractDataAttribute,\n] as const;\n\nconst tAnyLN = ['LN0', 'LN'] as const;\n\nconst tAnyContentFromOtherNamespace = [\n 'Text',\n 'Private',\n 'Hitem',\n 'AccessControl',\n] as const;\n\nconst tCert = ['Subject', 'IssuerName'] as const;\nconst tDurationInMilliSec = ['MinTime', 'MaxTime'] as const;\n\nconst tIDNaming = ['LNodeType', 'DOType', 'DAType', 'EnumType'] as const;\n\nconst tServiceYesNo = [\n 'FileHandling',\n 'TimeSyncProt',\n 'CommProt',\n 'SGEdit',\n 'ConfSG',\n 'GetDirectory',\n 'GetDataObjectDefinition',\n 'DataObjectDirectory',\n 'GetDataSetValue',\n 'SetDataSetValue',\n 'DataSetDirectory',\n 'ReadWrite',\n 'TimerActivatedControl',\n 'GetCBValues',\n 'GSEDir',\n 'ConfLdName',\n] as const;\n\nconst tServiceWithMaxAndMaxAttributes = ['DynDataSet', 'ConfDataSet'] as const;\n\nconst tServiceWithMax = [\n 'GSSE',\n 'GOOSE',\n 'ConfReportControl',\n 'SMVsc',\n ...tServiceWithMaxAndMaxAttributes,\n] as const;\n\nconst tServiceWithMaxNonZero = ['ConfLogControl', 'ConfSigRef'] as const;\n\nconst tServiceSettings = [\n 'ReportSettings',\n 'LogSettings',\n 'GSESettings',\n 'SMVSettings',\n] as const;\n\nconst tBaseElement = ['SCL', ...tNaming, ...tUnNaming, ...tIDNaming] as const;\n\nconst sCLTags = [\n ...tBaseElement,\n ...tAnyContentFromOtherNamespace,\n 'Header',\n 'LNode',\n 'Val',\n 'Voltage',\n 'Services',\n ...tCert,\n ...tDurationInMilliSec,\n 'Association',\n 'FCDA',\n 'ClientLN',\n 'IEDName',\n 'ExtRef',\n 'Protocol',\n ...tAnyLN,\n ...tServiceYesNo,\n 'DynAssociation',\n 'SettingGroups',\n ...tServiceWithMax,\n ...tServiceWithMaxNonZero,\n ...tServiceSettings,\n 'ConfLNs',\n 'ClientServices',\n 'SupSubscription',\n 'ValueHandling',\n 'RedProt',\n 'McSecurity',\n 'KDC',\n 'Address',\n 'P',\n 'ProtNs',\n 'EnumVal',\n 'Terminal',\n 'BitRate',\n 'Authentication',\n 'DataTypeTemplates',\n 'History',\n 'OptFields',\n 'SmvOpts',\n 'TrgOps',\n 'SamplesPerSec',\n 'SmpRate',\n 'SecPerSamples',\n] as const;\n\nexport type SCLTag = (typeof sCLTags)[number];\n\nconst tagSet = new Set<string>(sCLTags);\n\nfunction isSCLTag(tag: string): tag is SCLTag {\n return tagSet.has(tag);\n}\n\nconst tBaseNameSequence = ['Text', 'Private'] as const;\nconst tNamingSequence = [...tBaseNameSequence] as const;\nconst tUnNamingSequence = [...tBaseNameSequence] as const;\nconst tIDNamingSequence = [...tBaseNameSequence] as const;\n\nconst tAbstractDataAttributeSequence = [...tUnNamingSequence, 'Val'] as const;\nconst tLNodeContainerSequence = [...tNamingSequence, 'LNode'] as const;\nconst tPowerSystemResourceSequence = [...tLNodeContainerSequence] as const;\nconst tEquipmentSequence = [...tPowerSystemResourceSequence] as const;\nconst tEquipmentContainerSequence = [\n ...tPowerSystemResourceSequence,\n 'PowerTransformer',\n 'GeneralEquipment',\n] as const;\nconst tAbstractConductingEquipmentSequence = [\n ...tEquipmentSequence,\n 'Terminal',\n] as const;\nconst tControlBlockSequence = [...tUnNamingSequence, 'Address'] as const;\nconst tControlSequence = [...tNamingSequence] as const;\nconst tControlWithIEDNameSequence = [...tControlSequence, 'IEDName'] as const;\nconst tAnyLNSequence = [\n ...tUnNamingSequence,\n 'DataSet',\n 'ReportControl',\n 'LogControl',\n 'DOI',\n 'Inputs',\n 'Log',\n] as const;\nconst tGeneralEquipmentContainerSequence = [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'Function',\n] as const;\nconst tControlWithTriggerOptSequence = [...tControlSequence, 'TrgOps'] as const;\nconst tAbstractEqFuncSubFuncSequence = [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'EqSubFunction',\n] as const;\n\nexport const tags: Record<\n SCLTag,\n {\n identity: IdentityFunction;\n selector: SelectorFunction;\n parents: SCLTag[];\n children: SCLTag[];\n }\n> = {\n AccessControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LDevice'],\n children: [],\n },\n AccessPoint: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['IED'],\n children: [\n ...tNamingSequence,\n 'Server',\n 'LN',\n 'ServerAt',\n 'Services',\n 'GOOSESecurity',\n 'SMVSecurity',\n ],\n },\n Address: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ConnectedAP', 'GSE', 'SMV'],\n children: ['P'],\n },\n Association: {\n identity: associationIdentity,\n selector: associationSelector,\n parents: ['Server'],\n children: [],\n },\n Authentication: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Server'],\n children: [],\n },\n BDA: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DAType'],\n children: [...tAbstractDataAttributeSequence],\n },\n BitRate: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SubNetwork'],\n children: [],\n },\n Bay: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['VoltageLevel'],\n children: [\n ...tEquipmentContainerSequence,\n 'ConductingEquipment',\n 'ConnectivityNode',\n 'Function',\n ],\n },\n ClientLN: {\n identity: clientLNIdentity,\n selector: clientLNSelector,\n parents: ['RptEnabled'],\n children: [],\n },\n ClientServices: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['TimeSyncProt', 'McSecurity'],\n },\n CommProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Communication: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: [...tUnNamingSequence, 'SubNetwork'],\n },\n ConductingEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'Line', 'SubFunction', 'Function', 'Bay'],\n children: [\n ...tAbstractConductingEquipmentSequence,\n 'EqFunction',\n 'SubEquipment',\n ],\n },\n ConfDataSet: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLdName: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLNs: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfLogControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfReportControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConfSG: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SettingGroups'],\n children: [],\n },\n ConfSigRef: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ConnectedAP: {\n identity: connectedAPIdentity,\n selector: connectedAPSelector,\n parents: ['SubNetwork'],\n children: [...tUnNamingSequence, 'Address', 'GSE', 'SMV', 'PhysConn'],\n },\n ConnectivityNode: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Bay', 'Line'],\n children: [...tLNodeContainerSequence],\n },\n DA: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DOType'],\n children: [...tAbstractDataAttributeSequence],\n },\n DAI: {\n identity: ixNamingIdentity,\n selector: ixNamingSelector,\n parents: ['DOI', 'SDI'],\n children: [...tUnNamingSequence, 'Val'],\n },\n DAType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'BDA', 'ProtNs'],\n },\n DO: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LNodeType'],\n children: [...tUnNamingSequence],\n },\n DOI: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence, 'SDI', 'DAI'],\n },\n DOType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'SDO', 'DA'],\n },\n DataObjectDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DataSet: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tNamingSequence, 'FCDA'],\n },\n DataSetDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DataTypeTemplates: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: ['LNodeType', 'DOType', 'DAType', 'EnumType'],\n },\n DynAssociation: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n DynDataSet: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n EnumType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'EnumVal'],\n },\n EnumVal: {\n identity: enumValIdentity,\n selector: enumValSelector,\n parents: ['EnumType'],\n children: [],\n },\n EqFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'GeneralEquipment',\n 'TapChanger',\n 'TransformerWinding',\n 'PowerTransformer',\n 'SubEquipment',\n 'ConductingEquipment',\n ],\n children: [...tAbstractEqFuncSubFuncSequence],\n },\n EqSubFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['EqSubFunction', 'EqFunction'],\n children: [...tAbstractEqFuncSubFuncSequence],\n },\n ExtRef: {\n identity: extRefIdentity,\n selector: extRefSelector,\n parents: ['Inputs'],\n children: [],\n },\n FCDA: {\n identity: fCDAIdentity,\n selector: fCDASelector,\n parents: ['DataSet'],\n children: [],\n },\n FileHandling: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Function: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Bay', 'VoltageLevel', 'Substation', 'Process', 'Line'],\n children: [\n ...tPowerSystemResourceSequence,\n 'SubFunction',\n 'GeneralEquipment',\n 'ConductingEquipment',\n ],\n },\n GeneralEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'SubFunction',\n 'Function',\n ...tGeneralEquipmentContainer,\n ...tAbstractEqFuncSubFunc,\n ...tEquipmentContainer,\n ],\n children: [...tEquipmentSequence, 'EqFunction'],\n },\n GetCBValues: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDataObjectDefinition: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDataSetValue: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GetDirectory: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GOOSE: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GOOSESecurity: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['AccessPoint'],\n children: [...tNamingSequence, 'Subject', 'IssuerName'],\n },\n GSE: {\n identity: controlBlockIdentity,\n selector: controlBlockSelector,\n parents: ['ConnectedAP'],\n children: [...tControlBlockSequence, 'MinTime', 'MaxTime'],\n },\n GSEDir: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GSEControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LN0'],\n children: [...tControlWithIEDNameSequence, 'Protocol'],\n },\n GSESettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n GSSE: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Header: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SCL'],\n children: ['Text', 'History'],\n },\n History: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Header'],\n children: ['Hitem'],\n },\n Hitem: {\n identity: hitemIdentity,\n selector: hitemSelector,\n parents: ['History'],\n children: [],\n },\n IED: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SCL'],\n children: [...tUnNamingSequence, 'Services', 'AccessPoint', 'KDC'],\n },\n IEDName: {\n identity: iEDNameIdentity,\n selector: iEDNameSelector,\n parents: ['GSEControl', 'SampledValueControl'],\n children: [],\n },\n Inputs: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence, 'ExtRef'],\n },\n IssuerName: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GOOSESecurity', 'SMVSecurity'],\n children: [],\n },\n KDC: {\n identity: kDCIdentity,\n selector: kDCSelector,\n parents: ['IED'],\n children: [],\n },\n LDevice: {\n identity: lDeviceIdentity,\n selector: lDeviceSelector,\n parents: ['Server'],\n children: [...tUnNamingSequence, 'LN0', 'LN', 'AccessControl'],\n },\n LN: {\n identity: lNIdentity,\n selector: lNSelector,\n parents: ['AccessPoint', 'LDevice'],\n children: [...tAnyLNSequence],\n },\n LN0: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LDevice'],\n children: [\n ...tAnyLNSequence,\n 'GSEControl',\n 'SampledValueControl',\n 'SettingControl',\n ],\n },\n LNode: {\n identity: lNodeIdentity,\n selector: lNodeSelector,\n parents: [...tLNodeContainer],\n children: [...tUnNamingSequence],\n },\n LNodeType: {\n identity: idNamingIdentity,\n selector: idNamingSelector,\n parents: ['DataTypeTemplates'],\n children: [...tIDNamingSequence, 'DO'],\n },\n Line: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'SCL'],\n children: [\n ...tGeneralEquipmentContainerSequence,\n 'Voltage',\n 'ConductingEquipment',\n ],\n },\n Log: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tUnNamingSequence],\n },\n LogControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tControlWithTriggerOptSequence],\n },\n LogSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n MaxTime: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSE'],\n children: [],\n },\n McSecurity: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSESettings', 'SMVSettings', 'ClientServices'],\n children: [],\n },\n MinTime: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSE'],\n children: [],\n },\n NeutralPoint: {\n identity: terminalIdentity,\n selector: terminalSelector,\n parents: ['TransformerWinding'],\n children: [...tUnNamingSequence],\n },\n OptFields: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [],\n },\n P: {\n identity: pIdentity,\n selector: pSelector,\n parents: ['Address', 'PhysConn'],\n children: [],\n },\n PhysConn: {\n identity: physConnIdentity,\n selector: physConnSelector,\n parents: ['ConnectedAP'],\n children: [...tUnNamingSequence, 'P'],\n },\n PowerTransformer: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tEquipmentContainer],\n children: [\n ...tEquipmentSequence,\n 'TransformerWinding',\n 'SubEquipment',\n 'EqFunction',\n ],\n },\n Private: {\n identity: () => NaN,\n selector: () => voidSelector,\n parents: [],\n children: [],\n },\n Process: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Process', 'SCL'],\n children: [\n ...tGeneralEquipmentContainerSequence,\n 'ConductingEquipment',\n 'Substation',\n 'Line',\n 'Process',\n ],\n },\n ProtNs: {\n identity: protNsIdentity,\n selector: protNsSelector,\n parents: ['DAType', 'DA'],\n children: [],\n },\n Protocol: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GSEControl', 'SampledValueControl'],\n children: [],\n },\n ReadWrite: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n RedProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n ReportControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [...tAnyLN],\n children: [...tControlWithTriggerOptSequence, 'OptFields', 'RptEnabled'],\n },\n ReportSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n RptEnabled: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [...tUnNamingSequence, 'ClientLN'],\n },\n SamplesPerSec: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SampledValueControl: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['LN0'],\n children: [...tControlWithIEDNameSequence, 'SmvOpts'],\n },\n SecPerSamples: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SCL: {\n identity: sCLIdentity,\n selector: sCLSelector,\n parents: [],\n children: [\n ...tBaseNameSequence,\n 'Header',\n 'Substation',\n 'Communication',\n 'IED',\n 'DataTypeTemplates',\n 'Line',\n 'Process',\n ],\n },\n SDI: {\n identity: ixNamingIdentity,\n selector: ixNamingSelector,\n parents: ['DOI', 'SDI'],\n children: [...tUnNamingSequence, 'SDI', 'DAI'],\n },\n SDO: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['DOType'],\n children: [...tNamingSequence],\n },\n Server: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['AccessPoint'],\n children: [\n ...tUnNamingSequence,\n 'Authentication',\n 'LDevice',\n 'Association',\n ],\n },\n ServerAt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['AccessPoint'],\n children: [...tUnNamingSequence],\n },\n Services: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['IED', 'AccessPoint'],\n children: [\n 'DynAssociation',\n 'SettingGroups',\n 'GetDirectory',\n 'GetDataObjectDefinition',\n 'DataObjectDirectory',\n 'GetDataSetValue',\n 'SetDataSetValue',\n 'DataSetDirectory',\n 'ConfDataSet',\n 'DynDataSet',\n 'ReadWrite',\n 'TimerActivatedControl',\n 'ConfReportControl',\n 'GetCBValues',\n 'ConfLogControl',\n 'ReportSettings',\n 'LogSettings',\n 'GSESettings',\n 'SMVSettings',\n 'GSEDir',\n 'GOOSE',\n 'GSSE',\n 'SMVsc',\n 'FileHandling',\n 'ConfLNs',\n 'ClientServices',\n 'ConfLdName',\n 'SupSubscription',\n 'ConfSigRef',\n 'ValueHandling',\n 'RedProt',\n 'TimeSyncProt',\n 'CommProt',\n ],\n },\n SetDataSetValue: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n SettingControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['LN0'],\n children: [...tUnNamingSequence],\n },\n SettingGroups: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['SGEdit', 'ConfSG'],\n },\n SGEdit: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SettingGroups'],\n children: [],\n },\n SmpRate: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SMVSettings'],\n children: [],\n },\n SMV: {\n identity: controlBlockIdentity,\n selector: controlBlockSelector,\n parents: ['ConnectedAP'],\n children: [...tControlBlockSequence],\n },\n SmvOpts: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['SampledValueControl'],\n children: [],\n },\n SMVsc: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n SMVSecurity: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['AccessPoint'],\n children: [...tNamingSequence, 'Subject', 'IssuerName'],\n },\n SMVSettings: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: ['SmpRate', 'SamplesPerSec', 'SecPerSamples', 'McSecurity'],\n },\n SubEquipment: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: [\n 'TapChanger',\n 'PowerTransformer',\n 'ConductingEquipment',\n 'TransformerWinding',\n ...tAbstractConductingEquipment,\n ],\n children: [...tPowerSystemResourceSequence, 'EqFunction'],\n },\n SubFunction: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SubFunction', 'Function'],\n children: [\n ...tPowerSystemResourceSequence,\n 'GeneralEquipment',\n 'ConductingEquipment',\n 'SubFunction',\n ],\n },\n SubNetwork: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Communication'],\n children: [...tNamingSequence, 'BitRate', 'ConnectedAP'],\n },\n Subject: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['GOOSESecurity', 'SMVSecurity'],\n children: [],\n },\n Substation: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['SCL'],\n children: [...tEquipmentContainerSequence, 'VoltageLevel', 'Function'],\n },\n SupSubscription: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n TapChanger: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['TransformerWinding'],\n children: [...tPowerSystemResourceSequence, 'SubEquipment', 'EqFunction'],\n },\n Terminal: {\n identity: terminalIdentity,\n selector: terminalSelector,\n parents: [...tEquipment],\n children: [...tUnNamingSequence],\n },\n Text: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: sCLTags.filter(tag => tag !== 'Text' && tag !== 'Private'),\n children: [],\n },\n TimerActivatedControl: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n TimeSyncProt: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services', 'ClientServices'],\n children: [],\n },\n TransformerWinding: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['PowerTransformer'],\n children: [\n ...tAbstractConductingEquipmentSequence,\n 'TapChanger',\n 'NeutralPoint',\n 'EqFunction',\n 'SubEquipment',\n ],\n },\n TrgOps: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['ReportControl'],\n children: [],\n },\n Val: {\n identity: valIdentity,\n selector: valSelector,\n parents: ['DAI', 'DA', 'BDA'],\n children: [],\n },\n ValueHandling: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['Services'],\n children: [],\n },\n Voltage: {\n identity: singletonIdentity,\n selector: singletonSelector,\n parents: ['VoltageLevel'],\n children: [],\n },\n VoltageLevel: {\n identity: namingIdentity,\n selector: namingSelector,\n parents: ['Substation'],\n children: [...tEquipmentContainerSequence, 'Voltage', 'Bay', 'Function'],\n },\n};\n\nexport function getReference(parent: Element, tag: SCLTag): Element | null {\n const parentTag = parent.tagName;\n const children = Array.from(parent.children);\n\n if (\n parentTag === 'Services' ||\n parentTag === 'SettingGroups' ||\n !isSCLTag(parentTag)\n )\n return children.find(child => child.tagName === tag) ?? null;\n\n const sequence = tags[parentTag]?.children ?? [];\n let index = sequence.findIndex(element => element === tag);\n\n if (index < 0) return null;\n\n let nextSibling: Element | undefined;\n while (index < sequence.length && !nextSibling) {\n nextSibling = children.find(child => child.tagName === sequence[index]);\n index++;\n }\n\n return nextSibling ?? null;\n}\n\nfunction selector(tagName: string, identity: string | number): string {\n if (typeof identity !== 'string') return voidSelector;\n\n if (isSCLTag(tagName)) return tags[tagName].selector(tagName, identity);\n\n return tagName;\n}\n\nexport function find(\n root: XMLDocument | Element | DocumentFragment,\n tagName: string,\n identity: string | number\n): Element | null {\n if (typeof identity !== 'string' || !isSCLTag(tagName)) return null;\n\n const element = root.querySelector(tags[tagName].selector(tagName, identity));\n\n if (element === null || isPublic(element)) return element;\n\n return (\n Array.from(\n root.querySelectorAll(tags[tagName].selector(tagName, identity))\n ).find(isPublic) ?? null\n );\n}\n\n/** @returns a string uniquely identifying `e` in its document, or NaN if `e`\n * is unidentifiable. */\nexport function identity(e: Element | null): string | number {\n if (e === null) return NaN;\n if (e.closest('Private')) return NaN;\n const tag = e.tagName;\n\n if (isSCLTag(tag)) return tags[tag].identity(e);\n\n return NaN;\n}\n\n/** @returns whether `a` and `b` are considered identical by IEC-61850 */\nexport function isSame(a: Element, b: Element): boolean {\n if (a.tagName === 'Private')\n return isSame(a.parentElement!, b.parentElement!) && a.isEqualNode(b);\n return a.tagName === b.tagName && identity(a) === identity(b);\n}\n\nexport function isEqual(a: Element, b: Element): boolean {\n if (a.closest('Private') || b.closest('Private')) return a.isEqualNode(b);\n\n const attributeNames = new Set(\n a.getAttributeNames().concat(b.getAttributeNames())\n );\n for (const name of attributeNames)\n if (a.getAttribute(name) !== b.getAttribute(name)) return false;\n\n if (a.childElementCount === 0)\n return (\n b.childElementCount === 0 &&\n a.textContent?.trim() === b.textContent?.trim()\n );\n\n const aChildren = Array.from(a.children);\n const bChildren = Array.from(b.children);\n\n for (const aChild of aChildren) {\n const twindex = bChildren.findIndex(bChild => isEqual(aChild, bChild));\n if (twindex === -1) return false;\n bChildren.splice(twindex, 1);\n }\n\n for (const bChild of bChildren)\n if (!aChildren.find(aChild => isEqual(bChild, aChild))) return false;\n\n return true;\n}\n\n/** A directive rendering its argument `rendered` only if `rendered !== {}`. */\nexport const ifImplemented = directive(rendered => (part: Part) => {\n if (Object.keys(rendered).length) part.setValue(rendered);\n else part.setValue('');\n});\n\n/** Constructor type for defining `LitElement` mixins. */\nexport type LitElementConstructor = new (...args: any[]) => LitElement;\n\n/** The type returned by `MyMixin(...)` is `Mixin<typeof MyMixin>`. */\nexport type Mixin<T extends (...args: any[]) => any> = InstanceType<\n ReturnType<T>\n>;\n\nconst nameStartChar =\n '[:_A-Za-z]|[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|[\\u0370-\\u037D]' +\n '|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]' +\n '|[\\u3001-\\uD7FF]|[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]';\nconst nameChar =\n nameStartChar + '|[.0-9\\\\-]|\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]';\nconst name = nameStartChar + '(' + nameChar + ')*';\nconst nmToken = '\\\\S+';\n\nexport const patterns = {\n string:\n '([\\u0009-\\u000A]|[\\u000D]|[\\u0020-\\u007E]|[\\u0085]|[\\u00A0-\\uD7FF]' +\n '|[\\uE000-\\uFFFD])*',\n normalizedString:\n '([\\u0020-\\u007E]|[\\u0085]|[\\u00A0-\\uD7FF]|[\\uE000-\\uFFFD])*',\n name,\n nmToken,\n names: name + '( ' + name + ')*',\n nmTokens: nmToken + '( ' + nmToken + ')*',\n decimal: '[+\\\\-]?[0-9]+(([.][0-9]*)?|([.][0-9]+))',\n unsigned: '[+]?[0-9]+(([.][0-9]*)?|([.][0-9]+))',\n integer: '[+\\\\-]?[0-9]+([0-9]*)',\n alphanumericFirstUpperCase: '[A-Z][0-9,A-Z,a-z]*',\n alphanumericFirstLowerCase: '[a-z][0-9,A-Z,a-z]*',\n lnClass: '(LLN0)|[A-Z]{4,4}',\n};\n\n/** Sorts selected `ListItem`s to the top and disabled ones to the bottom. */\nexport function compareNames(a: Element | string, b: Element | string): number {\n if (typeof a === 'string' && typeof b === 'string') return a.localeCompare(b);\n\n if (typeof a === 'object' && typeof b === 'string')\n return (a.getAttribute('name') ?? '').localeCompare(b);\n\n if (typeof a === 'string' && typeof b === 'object')\n return a.localeCompare(b.getAttribute('name')!);\n\n if (typeof a === 'object' && typeof b === 'object')\n return (a.getAttribute('name') ?? '').localeCompare(\n b.getAttribute('name') ?? ''\n );\n\n return 0;\n}\n\n/** @returns the cartesian product of `arrays` */\nexport function crossProduct<T>(...arrays: T[][]): T[][] {\n return arrays.reduce<T[][]>(\n (a, b) => <T[][]>a.flatMap(d => b.map(e => [d, e].flat())),\n [[]]\n );\n}\n\n/** @returns the depth of `t` if it is an object or array, zero otherwise. */\nexport function depth(t: Record<string, unknown>, mem = new WeakSet()): number {\n if (mem.has(t)) return Infinity;\n else\n switch (t?.constructor) {\n case Object:\n case Array:\n mem.add(t);\n return (\n 1 +\n Math.max(\n -1,\n ...Object.values(t).map(_ => depth(<Record<string, unknown>>_, mem))\n )\n );\n default:\n return 0;\n }\n}\n\nexport function findFCDAs(extRef: Element): Element[] {\n if (extRef.tagName !== 'ExtRef' || extRef.closest('Private')) return [];\n\n const [iedName, ldInst, prefix, lnClass, lnInst, doName, daName] = [\n 'iedName',\n 'ldInst',\n 'prefix',\n 'lnClass',\n 'lnInst',\n 'doName',\n 'daName',\n ].map(name => extRef.getAttribute(name));\n const ied = Array.from(extRef.ownerDocument.getElementsByTagName('IED')).find(\n element =>\n element.getAttribute('name') === iedName && !element.closest('Private')\n );\n if (!ied) return [];\n\n return Array.from(ied.getElementsByTagName('FCDA'))\n .filter(item => !item.closest('Private'))\n .filter(\n fcda =>\n (fcda.getAttribute('ldInst') ?? '') === (ldInst ?? '') &&\n (fcda.getAttribute('prefix') ?? '') === (prefix ?? '') &&\n (fcda.getAttribute('lnClass') ?? '') === (lnClass ?? '') &&\n (fcda.getAttribute('lnInst') ?? '') === (lnInst ?? '') &&\n (fcda.getAttribute('doName') ?? '') === (doName ?? '') &&\n (fcda.getAttribute('daName') ?? '') === (daName ?? '')\n );\n}\n\nconst serviceTypeControlBlockTags: Partial<Record<string, string[]>> = {\n GOOSE: ['GSEControl'],\n SMV: ['SampledValueControl'],\n Report: ['ReportControl'],\n NONE: ['LogControl', 'GSEControl', 'SampledValueControl', 'ReportControl'],\n};\n\nexport function findControlBlocks(extRef: Element): Set<Element> {\n const fcdas = findFCDAs(extRef);\n const cbTags =\n serviceTypeControlBlockTags[extRef.getAttribute('serviceType') ?? 'NONE'] ??\n [];\n const controlBlocks = new Set(\n fcdas.flatMap(fcda => {\n const dataSet = fcda.parentElement!;\n const dsName = dataSet.getAttribute('name') ?? '';\n const anyLN = dataSet.parentElement!;\n return cbTags\n .flatMap(tag => Array.from(anyLN.getElementsByTagName(tag)))\n .filter(cb => cb.getAttribute('datSet') === dsName);\n })\n );\n return controlBlocks;\n}\n\nexport function isPublic(element: Element): boolean {\n return !element.closest('Private');\n}\n\n/** @returns the version of the SCL project */\nexport function getVersion(element: Element): string {\n const header = Array.from(\n element.ownerDocument.getElementsByTagName('Header')\n ).filter(item => !item.closest('Private'));\n\n return header[0].getAttribute('version') ?? '2003';\n}\n\n/** maximum value for `lnInst` attribute */\nconst maxLnInst = 99;\nconst lnInstRange = Array(maxLnInst)\n .fill(1)\n .map((_, i) => `${i + 1}`);\n\n/**\n * @param parent - The LNodes' parent element to be scanned once for `lnInst`\n * values already in use. Be sure to create a new generator every time the\n * children of this element change.\n * @returns a function generating increasing unused `lnInst` values for\n * `lnClass` LNodes within `parent` on subsequent invocations\n */\nexport function newLnInstGenerator(\n parent: Element\n): (lnClass: string) => string | undefined {\n const generators = new Map<string, () => string | undefined>();\n\n return (lnClass: string) => {\n if (!generators.has(lnClass)) {\n const lnInsts = new Set(\n getChildElementsByTagName(parent, 'LNode')\n .filter(lnode => lnode.getAttribute('lnClass') === lnClass)\n .map(lNode => lNode.getAttribute('lnInst')!)\n );\n\n generators.set(lnClass, () => {\n const uniqueLnInst = lnInstRange.find(lnInst => !lnInsts.has(lnInst));\n if (uniqueLnInst) lnInsts.add(uniqueLnInst);\n return uniqueLnInst;\n });\n }\n\n return generators.get(lnClass)!();\n };\n}\n\n/**\n * @param lnElements - The LN elements to be scanned for `inst`\n * values already in use.\n * @returns first available inst value for LN or undefined if no inst is available\n */\nexport function minAvailableLogicalNodeInstance(\n lnElements: Element[]\n): string | undefined {\n const lnInsts = new Set(lnElements.map(ln => ln.getAttribute('inst') || ''));\n return lnInstRange.find(lnInst => !lnInsts.has(lnInst));\n}\n\ndeclare global {\n interface ElementEventMap {\n ['wizard']: WizardEvent;\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { svg } from "lit-html";
2
+ export const elementIcon = svg `<svg style="width:24px;height:24px" viewBox="0 0 24 24">
3
+ <path fill="currentColor" d="M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" />
4
+ </svg>`;
5
+ export const attributeIcon = svg `<svg viewBox="0 0 24 24">
6
+ <path fill="currentColor" d="M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" />
7
+ </svg>`;
8
+ export const contentIcon = svg `<svg viewBox="0 0 24 24">
9
+ <path fill="currentColor" d="M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" />
10
+ </svg>`;
11
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../src/icons/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;OAEvB,CAAC;AAER,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;OAEzB,CAAC;AAER,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;OAEvB,CAAC","sourcesContent":["import { svg } from \"lit-html\";\n\nexport const elementIcon = svg`<svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n\nexport const attributeIcon = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z\" />\n</svg>`;\n\nexport const contentIcon = svg`<svg viewBox=\"0 0 24 24\">\n<path fill=\"currentColor\" d=\"M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z\" />\n</svg>`;\n"]}