@knime/kds-code-editor 11.0.0 → 11.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["$slots","$slots"],"sources":["../src/CodeEditor/enums.ts","../src/_helper/BaseCodeEditor.vue","../src/_helper/BaseCodeEditor.vue","../../styles/dist/tokens/ts/color.js","../../styles/dist/tokens/ts/font.js","../src/_helper/monacoCommon.ts","../src/CodeEditor/tomlLanguage.ts","../src/CodeEditor/monacoEnvironment.ts","../src/CodeEditor/KdsCodeEditor.vue","../src/CodeEditor/KdsCodeEditor.vue","../src/CodeDiffEditor/KdsCodeDiffEditor.vue","../src/CodeDiffEditor/KdsCodeDiffEditor.vue","../src/Console/utils/buildTheme.ts","../src/Console/utils/shouldFocusBePainted.ts","../src/Console/KdsConsole.vue","../src/Console/KdsConsole.vue"],"sourcesContent":["export const kdsCodeEditorState = {\n DEFAULT: \"default\",\n ERROR: \"error\",\n WARNING: \"warning\",\n} as const;\n\nexport const kdsCodeEditorStates = Object.values(kdsCodeEditorState);\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef } from \"vue\";\n\nimport {\n KdsButton,\n KdsMenuButton,\n KdsProgressButton,\n KdsSubText,\n KdsToggleButton,\n} from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\n\nimport type { BaseCodeEditorProps } from \"./types\";\n\n// Internal base component shared by KdsCodeEditor and KdsCodeDiffEditor: the\n// header (label, read-only hint, action buttons, copy button), the code\n// container Monaco mounts into, the state / focus styling, the optional\n// footer, and the sub-text below.\nconst {\n headerLabel,\n subTextId,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n copied = false,\n copyButtonAriaLabel = \"\",\n editorActions = undefined,\n showFocusHighlight = false,\n fill = false,\n codeHeight = undefined,\n changeSummary = undefined,\n addedLines = undefined,\n removedLines = undefined,\n collapsed = false,\n} = defineProps<BaseCodeEditorProps>();\n\nconst emit = defineEmits<{\n /** The built-in copy button was clicked. */\n copy: [];\n /** The collapse toggle in the change-summary header was clicked. */\n collapsedToggle: [];\n}>();\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to `headerLabel` — e.g.\n * the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\nconst codeContainer = useTemplateRef(\"code-container\");\n\n// Links the collapse toggle to the code area via `aria-controls`.\nconst codeContainerId = useId();\n\ndefineExpose({\n /** The element Monaco should be mounted into. */\n getCodeContainer: () => codeContainer.value,\n});\n</script>\n\n<template>\n <div :class=\"['kds-code-editor', { fill }]\">\n <div :class=\"['editor', state, { focused: showFocusHighlight, collapsed }]\">\n <div v-if=\"!hideHeader\" class=\"header\">\n <div class=\"left-block\">\n <!-- Visual only — the editor's accessible name comes from Monaco's\n `ariaLabel` option (managed by the owning component). -->\n <span class=\"title\">{{ changeSummary ?? headerLabel }}</span>\n <span v-if=\"readOnly === true\" class=\"title\">(Read-only)</span>\n <slot name=\"labelActions\" />\n <template v-if=\"changeSummary !== undefined\">\n <!-- The compact \"+3 -2\" is purely visual (added / removed only\n distinguishable by color and sign); the hidden sibling\n carries the meaning for assistive technology. -->\n <template\n v-if=\"addedLines !== undefined && removedLines !== undefined\"\n >\n <span class=\"change-counts\" aria-hidden=\"true\">\n <span class=\"added-lines\">+{{ addedLines }}</span>\n <span class=\"removed-lines\">-{{ removedLines }}</span>\n </span>\n <span class=\"change-counts-for-screen-readers\">\n {{ addedLines }} added and {{ removedLines }} removed lines\n </span>\n </template>\n <KdsButton\n v-bind=\"{\n ariaLabel: collapsed\n ? 'Expand code diff'\n : 'Collapse code diff',\n }\"\n :aria-expanded=\"!collapsed\"\n :aria-controls=\"codeContainerId\"\n :leading-icon=\"collapsed ? 'chevron-left' : 'chevron-down'\"\n size=\"small\"\n variant=\"transparent\"\n @click=\"emit('collapsedToggle')\"\n />\n </template>\n </div>\n <div class=\"action-buttons\">\n <template\n v-for=\"(action, index) in editorActions\"\n :key=\"`editor-action-${index}`\"\n >\n <KdsButton\n v-if=\"action.type === 'button'\"\n v-bind=\"action.props\"\n size=\"small\"\n @click=\"action.onClick\"\n />\n <KdsToggleButton\n v-else-if=\"action.type === 'toggleButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @update:model-value=\"action.onUpdateModelValue\"\n />\n <KdsMenuButton\n v-else-if=\"action.type === 'menuButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @item-click=\"action.onItemClick\"\n />\n </template>\n <KdsProgressButton\n v-if=\"copyable\"\n v-bind=\"{ ariaLabel: copyButtonAriaLabel }\"\n :leading-icon=\"copied ? 'checkmark' : 'copy'\"\n :state=\"copied ? 'success' : 'default'\"\n size=\"small\"\n variant=\"transparent\"\n tooltip=\"Copy to clipboard\"\n @click=\"emit('copy')\"\n />\n </div>\n </div>\n <!-- `v-show` (not `v-if`): Monaco stays mounted while collapsed so the\n diff (and its line counts) keeps being computed. -->\n <div\n v-show=\"!collapsed\"\n :id=\"codeContainerId\"\n ref=\"code-container\"\n class=\"code\"\n :style=\"codeHeight ? { height: codeHeight } : undefined\"\n />\n <div v-if=\"$slots.footer\" v-show=\"!collapsed\" class=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n <!-- No `v-if` needed: `KdsSubText` renders itself only when `subText` or\n `preserveSubTextSpace` is set (same pattern as the form fields'\n `BaseFormFieldWrapper`). -->\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :error=\"state === kdsCodeEditorState.ERROR\"\n :warning=\"state === kdsCodeEditorState.WARNING\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-code-editor {\n display: flex;\n flex-direction: column;\n\n .editor {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n border-radius: var(--kds-border-radius-container-0-50x);\n\n /* Outline the whole editor while the code area (Monaco) is focused, or\n while the owning component keeps the highlight on without it — header\n buttons keep their own focus ring either way. */\n &.focused {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-75x);\n\n .left-block {\n display: flex;\n flex: 1;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n min-width: 0;\n\n /* Keep the header height constant whether or not the copy / action\n buttons are present (matches the small button height). */\n min-height: var(--kds-dimension-component-height-1-5x);\n }\n\n .action-buttons {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-interactive-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n .change-counts {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n\n /* Together with the left-block gap this makes up the 0-5x gap between\n the summary text and the counts from the design. */\n margin-left: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-interactive-small);\n\n .added-lines {\n color: var(--kds-color-text-and-icon-success);\n }\n\n .removed-lines {\n color: var(--kds-color-text-and-icon-danger);\n }\n }\n\n /* Visually hidden, still announced by screen readers. */\n .change-counts-for-screen-readers {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip-path: inset(50%);\n }\n }\n\n &.error .header {\n background-color: var(--kds-color-background-static-danger-muted);\n }\n\n &.warning .header {\n background-color: var(--kds-color-background-static-warning-muted);\n }\n\n .code {\n width: 100%;\n }\n\n /* Keeps its natural height — in fill mode only the code area grows /\n shrinks with the container. */\n .footer {\n flex-shrink: 0;\n width: 100%;\n }\n }\n\n /* No row bounds set: fill the width and height of the container. */\n &.fill {\n width: 100%;\n height: 100%;\n\n .editor,\n .code {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n /* A collapsed editor keeps its header height instead of stretching. */\n .editor.collapsed {\n flex: 0 0 auto;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef } from \"vue\";\n\nimport {\n KdsButton,\n KdsMenuButton,\n KdsProgressButton,\n KdsSubText,\n KdsToggleButton,\n} from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\n\nimport type { BaseCodeEditorProps } from \"./types\";\n\n// Internal base component shared by KdsCodeEditor and KdsCodeDiffEditor: the\n// header (label, read-only hint, action buttons, copy button), the code\n// container Monaco mounts into, the state / focus styling, the optional\n// footer, and the sub-text below.\nconst {\n headerLabel,\n subTextId,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n copied = false,\n copyButtonAriaLabel = \"\",\n editorActions = undefined,\n showFocusHighlight = false,\n fill = false,\n codeHeight = undefined,\n changeSummary = undefined,\n addedLines = undefined,\n removedLines = undefined,\n collapsed = false,\n} = defineProps<BaseCodeEditorProps>();\n\nconst emit = defineEmits<{\n /** The built-in copy button was clicked. */\n copy: [];\n /** The collapse toggle in the change-summary header was clicked. */\n collapsedToggle: [];\n}>();\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to `headerLabel` — e.g.\n * the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\nconst codeContainer = useTemplateRef(\"code-container\");\n\n// Links the collapse toggle to the code area via `aria-controls`.\nconst codeContainerId = useId();\n\ndefineExpose({\n /** The element Monaco should be mounted into. */\n getCodeContainer: () => codeContainer.value,\n});\n</script>\n\n<template>\n <div :class=\"['kds-code-editor', { fill }]\">\n <div :class=\"['editor', state, { focused: showFocusHighlight, collapsed }]\">\n <div v-if=\"!hideHeader\" class=\"header\">\n <div class=\"left-block\">\n <!-- Visual only — the editor's accessible name comes from Monaco's\n `ariaLabel` option (managed by the owning component). -->\n <span class=\"title\">{{ changeSummary ?? headerLabel }}</span>\n <span v-if=\"readOnly === true\" class=\"title\">(Read-only)</span>\n <slot name=\"labelActions\" />\n <template v-if=\"changeSummary !== undefined\">\n <!-- The compact \"+3 -2\" is purely visual (added / removed only\n distinguishable by color and sign); the hidden sibling\n carries the meaning for assistive technology. -->\n <template\n v-if=\"addedLines !== undefined && removedLines !== undefined\"\n >\n <span class=\"change-counts\" aria-hidden=\"true\">\n <span class=\"added-lines\">+{{ addedLines }}</span>\n <span class=\"removed-lines\">-{{ removedLines }}</span>\n </span>\n <span class=\"change-counts-for-screen-readers\">\n {{ addedLines }} added and {{ removedLines }} removed lines\n </span>\n </template>\n <KdsButton\n v-bind=\"{\n ariaLabel: collapsed\n ? 'Expand code diff'\n : 'Collapse code diff',\n }\"\n :aria-expanded=\"!collapsed\"\n :aria-controls=\"codeContainerId\"\n :leading-icon=\"collapsed ? 'chevron-left' : 'chevron-down'\"\n size=\"small\"\n variant=\"transparent\"\n @click=\"emit('collapsedToggle')\"\n />\n </template>\n </div>\n <div class=\"action-buttons\">\n <template\n v-for=\"(action, index) in editorActions\"\n :key=\"`editor-action-${index}`\"\n >\n <KdsButton\n v-if=\"action.type === 'button'\"\n v-bind=\"action.props\"\n size=\"small\"\n @click=\"action.onClick\"\n />\n <KdsToggleButton\n v-else-if=\"action.type === 'toggleButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @update:model-value=\"action.onUpdateModelValue\"\n />\n <KdsMenuButton\n v-else-if=\"action.type === 'menuButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @item-click=\"action.onItemClick\"\n />\n </template>\n <KdsProgressButton\n v-if=\"copyable\"\n v-bind=\"{ ariaLabel: copyButtonAriaLabel }\"\n :leading-icon=\"copied ? 'checkmark' : 'copy'\"\n :state=\"copied ? 'success' : 'default'\"\n size=\"small\"\n variant=\"transparent\"\n tooltip=\"Copy to clipboard\"\n @click=\"emit('copy')\"\n />\n </div>\n </div>\n <!-- `v-show` (not `v-if`): Monaco stays mounted while collapsed so the\n diff (and its line counts) keeps being computed. -->\n <div\n v-show=\"!collapsed\"\n :id=\"codeContainerId\"\n ref=\"code-container\"\n class=\"code\"\n :style=\"codeHeight ? { height: codeHeight } : undefined\"\n />\n <div v-if=\"$slots.footer\" v-show=\"!collapsed\" class=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n <!-- No `v-if` needed: `KdsSubText` renders itself only when `subText` or\n `preserveSubTextSpace` is set (same pattern as the form fields'\n `BaseFormFieldWrapper`). -->\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :error=\"state === kdsCodeEditorState.ERROR\"\n :warning=\"state === kdsCodeEditorState.WARNING\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-code-editor {\n display: flex;\n flex-direction: column;\n\n .editor {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n border-radius: var(--kds-border-radius-container-0-50x);\n\n /* Outline the whole editor while the code area (Monaco) is focused, or\n while the owning component keeps the highlight on without it — header\n buttons keep their own focus ring either way. */\n &.focused {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-75x);\n\n .left-block {\n display: flex;\n flex: 1;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n min-width: 0;\n\n /* Keep the header height constant whether or not the copy / action\n buttons are present (matches the small button height). */\n min-height: var(--kds-dimension-component-height-1-5x);\n }\n\n .action-buttons {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-interactive-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n .change-counts {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n\n /* Together with the left-block gap this makes up the 0-5x gap between\n the summary text and the counts from the design. */\n margin-left: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-interactive-small);\n\n .added-lines {\n color: var(--kds-color-text-and-icon-success);\n }\n\n .removed-lines {\n color: var(--kds-color-text-and-icon-danger);\n }\n }\n\n /* Visually hidden, still announced by screen readers. */\n .change-counts-for-screen-readers {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip-path: inset(50%);\n }\n }\n\n &.error .header {\n background-color: var(--kds-color-background-static-danger-muted);\n }\n\n &.warning .header {\n background-color: var(--kds-color-background-static-warning-muted);\n }\n\n .code {\n width: 100%;\n }\n\n /* Keeps its natural height — in fill mode only the code area grows /\n shrinks with the container. */\n .footer {\n flex-shrink: 0;\n width: 100%;\n }\n }\n\n /* No row bounds set: fill the width and height of the container. */\n &.fill {\n width: 100%;\n height: 100%;\n\n .editor,\n .code {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n /* A collapsed editor keeps its header height instead of stretching. */\n .editor.collapsed {\n flex: 0 0 auto;\n }\n }\n}\n</style>\n","/**\n * Do not edit directly, this file was auto-generated\n * from the design token sources in src/tokens.\n */\nexport const color = {\n surface: {\n default: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-surface-default)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 94.1, a: 1 },\n dark: { h: 0, s: 0, l: 18.8, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 94.1%), hsl(0, 0%, 18.8%))\",\n variable: \"var(--kds-color-surface-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-surface-subtle)\",\n },\n },\n },\n page: {\n default: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-page-default)\",\n },\n },\n },\n background: {\n neutral: {\n initial: {\n light: { h: 0, s: 0, l: 11.4, a: 0 },\n dark: { h: 0, s: 0, l: 11.4, a: 0 },\n css: {\n value: \"hsl(0 0% 11.4% / 0)\",\n variable: \"var(--kds-color-background-neutral-initial)\",\n },\n },\n hover: {\n light: { h: 0, s: 0, l: 48.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 90.2, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 48.2% / 0.1), hsl(0 0% 90.2% / 0.1))\",\n variable: \"var(--kds-color-background-neutral-hover)\",\n },\n },\n active: {\n light: { h: 0, s: 0, l: 48.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 48.2, a: 0.36 },\n css: {\n value: \"light-dark(hsl(0 0% 48.2% / 0.2), hsl(0 0% 48.2% / 0.36))\",\n variable: \"var(--kds-color-background-neutral-active)\",\n },\n },\n },\n \"neutral-bold\": {\n initial: {\n light: { h: 0, s: 0, l: 72.5, a: 0.4 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0 0% 72.5% / 0.4), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-background-neutral-bold-initial)\",\n },\n },\n hover: {\n light: { h: 210, s: 0, l: 62.977, a: 0.4 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(210 0% 62.977% / 0.4), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-background-neutral-bold-hover)\",\n },\n },\n active: {\n light: { h: 0, s: 0, l: 59.859, a: 0.4 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0 0% 59.859% / 0.4), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-background-neutral-bold-active)\",\n },\n },\n },\n primary: {\n initial: {\n light: { h: 168, s: 46.7, l: 85.3, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(168, 46.7%, 85.3%), hsl(169.8, 30.6%, 66.1%))\",\n variable: \"var(--kds-color-background-primary-initial)\",\n },\n },\n hover: {\n light: { h: 167.99, s: 27.818, l: 77.703, a: 1 },\n dark: { h: 169.6, s: 30.517, l: 68.835, a: 1 },\n css: {\n value: \"light-dark(hsl(167.99 27.818% 77.703%), hsl(169.6 30.517% 68.835%))\",\n variable: \"var(--kds-color-background-primary-hover)\",\n },\n },\n active: {\n light: { h: 167.97, s: 18.664, l: 70.242, a: 1 },\n dark: { h: 168.98, s: 30.352, l: 78.334, a: 1 },\n css: {\n value: \"light-dark(hsl(167.97 18.664% 70.242%), hsl(168.98 30.352% 78.334%))\",\n variable: \"var(--kds-color-background-primary-active)\",\n },\n },\n },\n \"primary-bold\": {\n initial: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(174.4, 47.8%, 30.8%))\",\n variable: \"var(--kds-color-background-primary-bold-initial)\",\n },\n },\n hover: {\n light: { h: 175.79, s: 58.284, l: 19.792, a: 1 },\n dark: { h: 173.26, s: 27.023, l: 42.409, a: 1 },\n css: {\n value: \"light-dark(hsl(175.79 58.284% 19.792%), hsl(173.26 27.023% 42.409%))\",\n variable: \"var(--kds-color-background-primary-bold-hover)\",\n },\n },\n active: {\n light: { h: 175.36, s: 48.936, l: 16.164, a: 1 },\n dark: { h: 171.91, s: 19.296, l: 64.061, a: 1 },\n css: {\n value: \"light-dark(hsl(175.36 48.936% 16.164%), hsl(171.91 19.296% 64.061%))\",\n variable: \"var(--kds-color-background-primary-bold-active)\",\n },\n },\n },\n selected: {\n initial: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 0.32 },\n css: {\n value: \"light-dark(hsl(165.6, 67.6%, 92.7%), hsl(176.1 66.7% 22.4% / 0.32))\",\n variable: \"var(--kds-color-background-selected-initial)\",\n },\n },\n hover: {\n light: { h: 168, s: 46.7, l: 85.3, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 0.56 },\n css: {\n value: \"light-dark(hsl(168, 46.7%, 85.3%), hsl(174.4 47.8% 30.8% / 0.56))\",\n variable: \"var(--kds-color-background-selected-hover)\",\n },\n },\n active: {\n light: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 0.72 },\n css: {\n value: \"light-dark(hsl(168.8, 34.4%, 75.5%), hsl(171.8 27% 47.8% / 0.72))\",\n variable: \"var(--kds-color-background-selected-active)\",\n },\n },\n },\n \"selected-bold\": {\n initial: {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-background-selected-bold-initial)\",\n },\n },\n hover: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(174.4, 47.8%, 30.8%))\",\n variable: \"var(--kds-color-background-selected-bold-hover)\",\n },\n },\n active: {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.7, 82%, 17.5%), hsl(171.8, 27%, 47.8%))\",\n variable: \"var(--kds-color-background-selected-bold-active)\",\n },\n },\n },\n danger: {\n initial: {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 356.76, s: 65.215, l: 15.117, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(356.76 65.215% 15.117%))\",\n variable: \"var(--kds-color-background-danger-initial)\",\n },\n },\n hover: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 348.8, s: 90.9, l: 34.5, a: 0.72 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(348.8 90.9% 34.5% / 0.72))\",\n variable: \"var(--kds-color-background-danger-hover)\",\n },\n },\n active: {\n light: { h: 3.4, s: 100, l: 86.1, a: 1 },\n dark: { h: 353, s: 74.7, l: 44.9, a: 0.72 },\n css: {\n value: \"light-dark(hsl(3.4, 100%, 86.1%), hsl(353 74.7% 44.9% / 0.72))\",\n variable: \"var(--kds-color-background-danger-active)\",\n },\n },\n },\n \"danger-bold\": {\n initial: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-background-danger-bold-initial)\",\n },\n },\n hover: {\n light: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n dark: { h: 353, s: 74.7, l: 44.9, a: 0.8 },\n css: {\n value: \"light-dark(hsl(347.6, 97.1%, 27.3%), hsl(353 74.7% 44.9% / 0.8))\",\n variable: \"var(--kds-color-background-danger-bold-hover)\",\n },\n },\n active: {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 356.3, s: 76.8, l: 54.3, a: 0.8 },\n css: {\n value: \"light-dark(hsl(348, 94.3%, 20.8%), hsl(356.3 76.8% 54.3% / 0.8))\",\n variable: \"var(--kds-color-background-danger-bold-active)\",\n },\n },\n },\n input: {\n initial: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-background-input-initial)\",\n },\n },\n hover: {\n light: { h: 330, s: 0, l: 94.521, a: 1 },\n dark: { h: 330, s: 0, l: 30.187, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 94.521%), hsl(330 0% 30.187%))\",\n variable: \"var(--kds-color-background-input-hover)\",\n },\n },\n active: {\n light: { h: 330, s: 0, l: 85.683, a: 1 },\n dark: { h: 336, s: 0, l: 38.771, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 85.683%), hsl(336 0% 38.771%))\",\n variable: \"var(--kds-color-background-input-active)\",\n },\n },\n },\n disabled: {\n default: {\n light: { h: 0, s: 0, l: 48.2, a: 0.48 },\n dark: { h: 0, s: 0, l: 48.2, a: 0.48 },\n css: {\n value: \"hsl(0 0% 48.2% / 0.48)\",\n variable: \"var(--kds-color-background-disabled-default)\",\n },\n },\n primary: {\n light: { h: 173.91, s: 18.134, l: 40.592, a: 1 },\n dark: { h: 173.91, s: 18.134, l: 40.592, a: 1 },\n css: {\n value: \"hsl(173.91 18.134% 40.592%)\",\n variable: \"var(--kds-color-background-disabled-primary)\",\n },\n },\n danger: {\n light: { h: 1.3489, s: 43.031, l: 37.79, a: 1 },\n dark: { h: 1.3489, s: 43.031, l: 37.79, a: 1 },\n css: {\n value: \"hsl(1.3489 43.031% 37.79%)\",\n variable: \"var(--kds-color-background-disabled-danger)\",\n },\n },\n },\n \"success-bold\": {\n initial: {\n light: { h: 111.3, s: 47.5, l: 31.4, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(111.3, 47.5%, 31.4%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-background-success-bold-initial)\",\n },\n },\n },\n \"info-bold\": {\n initial: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 212.1, s: 78.2, l: 67.6, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(212.1, 78.2%, 67.6%))\",\n variable: \"var(--kds-color-background-info-bold-initial)\",\n },\n },\n hover: {\n light: { h: 208.2, s: 62.9, l: 41.2, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(208.2, 62.9%, 41.2%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-background-info-bold-hover)\",\n },\n },\n active: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-background-info-bold-active)\",\n },\n },\n },\n },\n \"background-static\": {\n info: {\n light: { h: 216.7, s: 100, l: 96.5, a: 1 },\n dark: { h: 210, s: 50, l: 27.5, a: 1 },\n css: {\n value: \"light-dark(hsl(216.7, 100%, 96.5%), hsl(210, 50%, 27.5%))\",\n variable: \"var(--kds-color-background-static-info)\",\n },\n },\n \"info-muted\": {\n light: { h: 216.83, s: 100.14, l: 97.347, a: 1 },\n dark: { h: 211.86, s: 40.97, l: 17.58, a: 1 },\n css: {\n value: \"light-dark(hsl(216.83 100.14% 97.347%), hsl(211.86 40.97% 17.58%))\",\n variable: \"var(--kds-color-background-static-info-muted)\",\n },\n },\n warning: {\n light: { h: 30, s: 95.2, l: 91.8, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"light-dark(hsl(30, 95.2%, 91.8%), hsl(13.1, 66.1%, 23.1%))\",\n variable: \"var(--kds-color-background-static-warning)\",\n },\n },\n \"warning-muted\": {\n light: { h: 29.601, s: 98.108, l: 95.778, a: 1 },\n dark: { h: 14.687, s: 60.252, l: 14.775, a: 1 },\n css: {\n value: \"light-dark(hsl(29.601 98.108% 95.778%), hsl(14.687 60.252% 14.775%))\",\n variable: \"var(--kds-color-background-static-warning-muted)\",\n },\n },\n danger: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-background-static-danger)\",\n },\n },\n \"danger-muted\": {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 356.76, s: 65.215, l: 15.117, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(356.76 65.215% 15.117%))\",\n variable: \"var(--kds-color-background-static-danger-muted)\",\n },\n },\n success: {\n light: { h: 119.4, s: 96.139, l: 93.64, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(119.4 96.139% 93.64%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-background-static-success)\",\n },\n },\n \"success-muted\": {\n light: { h: 125.38, s: 64.795, l: 97.496, a: 1 },\n dark: { h: 128.3, s: 38.542, l: 10.352, a: 1 },\n css: {\n value: \"light-dark(hsl(125.38 64.795% 97.496%), hsl(128.3 38.542% 10.352%))\",\n variable: \"var(--kds-color-background-static-success-muted)\",\n },\n },\n brand: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-background-static-brand)\",\n },\n },\n overlay: {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-background-static-overlay)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-text-and-icon-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-text-and-icon-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-text-and-icon-subtle)\",\n },\n },\n \"neutral-inverted\": {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-text-and-icon-neutral-inverted)\",\n },\n },\n primary: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"hsl(176.1, 66.7%, 22.4%)\",\n variable: \"var(--kds-color-text-and-icon-primary)\",\n },\n },\n \"primary-inverted\": {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n css: {\n value: \"hsl(165.6, 67.6%, 92.7%)\",\n variable: \"var(--kds-color-text-and-icon-primary-inverted)\",\n },\n },\n selected: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-text-and-icon-selected)\",\n },\n },\n \"selected-inverted\": {\n light: { h: 165, s: 80, l: 96.1, a: 1 },\n dark: { h: 165, s: 80, l: 96.1, a: 1 },\n css: {\n value: \"hsl(165, 80%, 96.1%)\",\n variable: \"var(--kds-color-text-and-icon-selected-inverted)\",\n },\n },\n warning: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-text-and-icon-warning)\",\n },\n },\n \"warning-inverted\": {\n light: { h: 31, s: 100, l: 82.5, a: 1 },\n dark: { h: 31, s: 100, l: 82.5, a: 1 },\n css: {\n value: \"hsl(31, 100%, 82.5%)\",\n variable: \"var(--kds-color-text-and-icon-warning-inverted)\",\n },\n },\n danger: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-text-and-icon-danger)\",\n },\n },\n \"danger-inverted\": {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 1.5, s: 100, l: 92.4, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(1.5, 100%, 92.4%))\",\n variable: \"var(--kds-color-text-and-icon-danger-inverted)\",\n },\n },\n success: {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-text-and-icon-success)\",\n },\n },\n \"success-inverted\": {\n light: { h: 120, s: 95.3, l: 91.6, a: 1 },\n dark: { h: 120, s: 95.3, l: 91.6, a: 1 },\n css: {\n value: \"hsl(120, 95.3%, 91.6%)\",\n variable: \"var(--kds-color-text-and-icon-success-inverted)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 64%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-text-and-icon-disabled)\",\n },\n },\n \"disabled-inverted\": {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"hsl(0, 0%, 72.5%)\",\n variable: \"var(--kds-color-text-and-icon-disabled-inverted)\",\n },\n },\n info: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-text-and-icon-info)\",\n },\n },\n editor: {\n light: { h: 0, s: 0, l: 11.4, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 11.4%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-text-and-icon-editor)\",\n },\n },\n },\n border: {\n neutral: {\n light: { h: 0, s: 0, l: 10.2, a: 0.4 },\n dark: { h: 0, s: 0, l: 99, a: 0.5 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.4), hsl(0 0% 99% / 0.5))\",\n variable: \"var(--kds-color-border-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 10.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 99, a: 0.2 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.2), hsl(0 0% 99% / 0.2))\",\n variable: \"var(--kds-color-border-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-border-subtle)\",\n },\n },\n \"primary-bold\": {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 176.7, s: 82, l: 17.5, a: 1 },\n css: {\n value: \"hsl(176.7, 82%, 17.5%)\",\n variable: \"var(--kds-color-border-primary-bold)\",\n },\n },\n primary: {\n light: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(169.8, 30.6%, 66.1%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-border-primary)\",\n },\n },\n \"selected-bold\": {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-border-selected-bold)\",\n },\n },\n selected: {\n light: { h: 171.8, s: 27, l: 47.8, a: 1 },\n dark: { h: 168, s: 46.7, l: 85.3, a: 1 },\n css: {\n value: \"light-dark(hsl(171.8, 27%, 47.8%), hsl(168, 46.7%, 85.3%))\",\n variable: \"var(--kds-color-border-selected)\",\n },\n },\n \"selected-accent\": {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-border-selected-accent)\",\n },\n },\n \"warning-bold\": {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31, s: 100, l: 82.5, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31, 100%, 82.5%))\",\n variable: \"var(--kds-color-border-warning-bold)\",\n },\n },\n warning: {\n light: { h: 30.8, s: 79.3, l: 73.5, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"light-dark(hsl(30.8, 79.3%, 73.5%), hsl(13.1, 66.1%, 23.1%))\",\n variable: \"var(--kds-color-border-warning)\",\n },\n },\n \"danger-bold\": {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-border-danger-bold)\",\n },\n },\n danger: {\n light: { h: 3.4, s: 100, l: 86.1, a: 1 },\n dark: { h: 348, s: 94.3, l: 20.8, a: 1 },\n css: {\n value: \"light-dark(hsl(3.4, 100%, 86.1%), hsl(348, 94.3%, 20.8%))\",\n variable: \"var(--kds-color-border-danger)\",\n },\n },\n \"success-bold\": {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 112, s: 56.5, l: 71.2, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(112, 56.5%, 71.2%))\",\n variable: \"var(--kds-color-border-success-bold)\",\n },\n },\n success: {\n light: { h: 112, s: 56.5, l: 71.2, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(112, 56.5%, 71.2%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-border-success)\",\n },\n },\n \"info-bold\": {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-border-info-bold)\",\n },\n },\n info: {\n light: { h: 214.5, s: 100, l: 84.3, a: 1 },\n dark: { h: 210, s: 50, l: 27.5, a: 1 },\n css: {\n value: \"light-dark(hsl(214.5, 100%, 84.3%), hsl(210, 50%, 27.5%))\",\n variable: \"var(--kds-color-border-info)\",\n },\n },\n transparent: {\n light: { h: 0, s: 0, l: 11.4, a: 0 },\n dark: { h: 0, s: 0, l: 11.4, a: 0 },\n css: {\n value: \"hsl(0 0% 11.4% / 0)\",\n variable: \"var(--kds-color-border-transparent)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-border-disabled)\",\n },\n },\n brand: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-border-brand)\",\n },\n },\n \"neutral-bold-initial\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.4 },\n dark: { h: 0, s: 0, l: 99, a: 0.4 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.4), hsl(0 0% 99% / 0.4))\",\n variable: \"var(--kds-color-border-neutral-bold-initial)\",\n },\n },\n \"neutral-bold-hover\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.64 },\n dark: { h: 0, s: 0, l: 99, a: 0.58 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.64), hsl(0 0% 99% / 0.58))\",\n variable: \"var(--kds-color-border-neutral-bold-hover)\",\n },\n },\n \"neutral-bold-active\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.74 },\n dark: { h: 0, s: 0, l: 99, a: 0.68 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.74), hsl(0 0% 99% / 0.68))\",\n variable: \"var(--kds-color-border-neutral-bold-active)\",\n },\n },\n },\n focus: {\n outline: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-focus-outline)\",\n },\n },\n background: {\n light: { h: 215.7, s: 100, l: 91.8, a: 0.4 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 0.5 },\n css: {\n value: \"light-dark(hsl(215.7 100% 91.8% / 0.4), hsl(209.4 49.5% 20.2% / 0.5))\",\n variable: \"var(--kds-color-focus-background)\",\n },\n },\n },\n blanket: {\n default: {\n light: { h: 0, s: 0, l: 11.4, a: 0.8 },\n dark: { h: 0, s: 0, l: 11.4, a: 0.8 },\n css: {\n value: \"hsl(0 0% 11.4% / 0.8)\",\n variable: \"var(--kds-color-blanket-default)\",\n },\n },\n },\n chart: {\n data: {\n \"series-1\": {\n light: { h: 173.4, s: 37.1, l: 38.6, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(173.4, 37.1%, 38.6%), hsl(169.8, 30.6%, 66.1%))\",\n variable: \"var(--kds-color-chart-data-series-1)\",\n },\n },\n \"series-2\": {\n light: { h: 211.3, s: 67.3, l: 59.2, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(211.3, 67.3%, 59.2%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-chart-data-series-2)\",\n },\n },\n \"series-3\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 2.6, s: 100, l: 72.4, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(2.6, 100%, 72.4%))\",\n variable: \"var(--kds-color-chart-data-series-3)\",\n },\n },\n \"series-4\": {\n light: { h: 0, s: 0, l: 22, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 22%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-data-series-4)\",\n },\n },\n \"series-5\": {\n light: { h: 28, s: 39, l: 50, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(28, 39%, 50%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-chart-data-series-5)\",\n },\n },\n \"series-6\": {\n light: { h: 208.2, s: 62.9, l: 41.2, a: 1 },\n dark: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n css: {\n value: \"light-dark(hsl(208.2, 62.9%, 41.2%), hsl(209.4, 57.3%, 49.6%))\",\n variable: \"var(--kds-color-chart-data-series-6)\",\n },\n },\n \"series-7\": {\n light: { h: 71.1, s: 46.3, l: 32.2, a: 1 },\n dark: { h: 68.6, s: 61, l: 47.3, a: 1 },\n css: {\n value: \"light-dark(hsl(71.1, 46.3%, 32.2%), hsl(68.6, 61.0%, 47.3%))\",\n variable: \"var(--kds-color-chart-data-series-7)\",\n },\n },\n \"series-8\": {\n light: { h: 308.3, s: 31.6, l: 55.3, a: 1 },\n dark: { h: 316.1, s: 40.6, l: 72.9, a: 1 },\n css: {\n value: \"light-dark(hsl(308.3, 31.6%, 55.3%), hsl(316.1, 40.6%, 72.9%))\",\n variable: \"var(--kds-color-chart-data-series-8)\",\n },\n },\n \"series-9\": {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-chart-data-series-9)\",\n },\n },\n track: {\n light: { h: 0, s: 0, l: 94.1, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 94.1%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-chart-data-track)\",\n },\n },\n },\n status: {\n positive: {\n light: { h: 107.4, s: 42.2, l: 44.1, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(107.4, 42.2%, 44.1%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-chart-status-positive)\",\n },\n },\n negative: {\n light: { h: 356.3, s: 76.8, l: 54.3, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(356.3, 76.8%, 54.3%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-chart-status-negative)\",\n },\n },\n warning: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-chart-status-warning)\",\n },\n },\n error: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-chart-status-error)\",\n },\n },\n },\n scaffolding: {\n axis: {\n light: { h: 0, s: 0, l: 10.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 99, a: 0.2 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.2), hsl(0 0% 99% / 0.2))\",\n variable: \"var(--kds-color-chart-scaffolding-axis)\",\n },\n },\n grid: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-chart-scaffolding-grid)\",\n },\n },\n border: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-chart-scaffolding-border)\",\n },\n },\n segment: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-chart-scaffolding-segment)\",\n },\n },\n surface: {\n light: { h: 0, s: 0, l: 100, a: 1 },\n dark: { h: 0, s: 0, l: 0, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 100%), hsl(0, 0%, 0%))\",\n variable: \"var(--kds-color-chart-scaffolding-surface)\",\n },\n },\n \"tooltip-surface\": {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-chart-scaffolding-tooltip-surface)\",\n },\n },\n },\n control: {\n default: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-control-default)\",\n },\n },\n hover: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-control-hover)\",\n },\n },\n selected: {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-chart-control-selected)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 64%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-chart-control-disabled)\",\n },\n },\n },\n text: {\n title: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-title)\",\n },\n },\n subtitle: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-subtitle)\",\n },\n },\n \"axis-name\": {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-axis-name)\",\n },\n },\n \"axis-label\": {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-axis-label)\",\n },\n },\n legend: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-legend)\",\n },\n },\n tooltip: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-tooltip)\",\n },\n },\n label: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-label)\",\n },\n },\n \"on-fill-dark\": {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"hsl(0, 0%, 15.7%)\",\n variable: \"var(--kds-color-chart-text-on-fill-dark)\",\n },\n },\n \"on-fill-light\": {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 98, a: 1 },\n css: {\n value: \"hsl(0, 0%, 98%)\",\n variable: \"var(--kds-color-chart-text-on-fill-light)\",\n },\n },\n },\n },\n \"nodes-and-variables\": {\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-flow-variable)\",\n },\n },\n loop: {\n light: { h: 187.7, s: 51.7, l: 76.5, a: 1 },\n dark: { h: 187.7, s: 51.7, l: 76.5, a: 1 },\n css: {\n value: \"hsl(187.7, 51.7%, 76.5%)\",\n variable: \"var(--kds-color-nodes-and-variables-loop)\",\n },\n },\n manipulator: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-nodes-and-variables-manipulator)\",\n },\n },\n predictor: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-nodes-and-variables-predictor)\",\n },\n },\n source: {\n light: { h: 30, s: 80.4, l: 60, a: 1 },\n dark: { h: 30, s: 80.4, l: 60, a: 1 },\n css: {\n value: \"hsl(30, 80.4%, 60%)\",\n variable: \"var(--kds-color-nodes-and-variables-source)\",\n },\n },\n visualizer: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-visualizer)\",\n },\n },\n widget: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-widget)\",\n },\n },\n scope: {\n light: { h: 304.6, s: 27.4, l: 46.5, a: 1 },\n dark: { h: 308.3, s: 31.6, l: 55.3, a: 1 },\n css: {\n value: \"light-dark(hsl(304.6, 27.4%, 46.5%), hsl(308.3, 31.6%, 55.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-scope)\",\n },\n },\n learner: {\n light: { h: 67.3, s: 67.8, l: 54.9, a: 1 },\n dark: { h: 65.4, s: 68.5, l: 65.1, a: 1 },\n css: {\n value: \"light-dark(hsl(67.3, 67.8%, 54.9%), hsl(65.4, 68.5%, 65.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-learner)\",\n },\n },\n sink: {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-sink)\",\n },\n },\n container: {\n light: { h: 69.4, s: 53.5, l: 39.6, a: 1 },\n dark: { h: 69.4, s: 53.5, l: 39.6, a: 1 },\n css: {\n value: \"hsl(69.4, 53.5%, 39.6%)\",\n variable: \"var(--kds-color-nodes-and-variables-container)\",\n },\n },\n unknown: {\n light: { h: 353, s: 74.7, l: 44.9, a: 1 },\n dark: { h: 356.3, s: 76.8, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(353, 74.7%, 44.9%), hsl(356.3, 76.8%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-unknown)\",\n },\n },\n other: {\n light: { h: 29, s: 43, l: 58, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(29, 43%, 58%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-nodes-and-variables-other)\",\n },\n },\n metanode: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-metanode)\",\n },\n },\n metanodeBorder: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-metanode-border)\",\n },\n },\n component: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 43, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 43%))\",\n variable: \"var(--kds-color-nodes-and-variables-component)\",\n },\n },\n specialState: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-special-state)\",\n },\n },\n forbiddenBorder: {\n light: { h: 0, s: 0, l: 18.8, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 18.8%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-nodes-and-variables-forbidden-border)\",\n },\n },\n forbidden: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-forbidden)\",\n },\n },\n warningBorder: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-warning-border)\",\n },\n },\n warning: {\n light: { h: 31, s: 100, l: 82.5, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(31, 100%, 82.5%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-warning)\",\n },\n },\n errorBorder: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-error-border)\",\n },\n },\n error: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-error)\",\n },\n },\n loadingBorder: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-loading-border)\",\n },\n },\n loading: {\n light: { h: 215.7, s: 100, l: 91.8, a: 1 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n css: {\n value: \"light-dark(hsl(215.7, 100%, 91.8%), hsl(209.4, 49.5%, 20.2%))\",\n variable: \"var(--kds-color-nodes-and-variables-loading)\",\n },\n },\n configuration: {\n light: { h: 64.6, s: 68.6, l: 70, a: 1 },\n dark: { h: 69.5, s: 59.5, l: 85.5, a: 1 },\n css: {\n value: \"light-dark(hsl(64.6, 68.6%, 70.0%), hsl(69.5, 59.5%, 85.5%))\",\n variable: \"var(--kds-color-nodes-and-variables-configuration)\",\n },\n },\n quickform: {\n light: { h: 212.1, s: 78.2, l: 67.6, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(212.1, 78.2%, 67.6%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-quickform)\",\n },\n },\n },\n port: {\n data: {\n light: { h: 0, s: 0, l: 11.4, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 11.4%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-port-data)\",\n },\n },\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n css: {\n value: \"hsl(359.6, 84.3%, 62.5%)\",\n variable: \"var(--kds-color-port-flow-variable)\",\n },\n },\n \"neutral-inverted\": {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-port-neutral-inverted)\",\n },\n },\n },\n annotations: {\n specialNodes: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-annotations-special-nodes)\",\n },\n },\n specialNodesBold: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-annotations-special-nodes-bold)\",\n },\n },\n visualizer: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-annotations-visualizer)\",\n },\n },\n loadingBold: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-annotations-loading-bold)\",\n },\n },\n manipulator: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-annotations-manipulator)\",\n },\n },\n source: {\n light: { h: 30, s: 80.4, l: 60, a: 1 },\n dark: { h: 30, s: 80.4, l: 60, a: 1 },\n css: {\n value: \"hsl(30, 80.4%, 60%)\",\n variable: \"var(--kds-color-annotations-source)\",\n },\n },\n sink: {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-annotations-sink)\",\n },\n },\n learner: {\n light: { h: 67.3, s: 67.8, l: 54.9, a: 1 },\n dark: { h: 65.4, s: 68.5, l: 65.1, a: 1 },\n css: {\n value: \"light-dark(hsl(67.3, 67.8%, 54.9%), hsl(65.4, 68.5%, 65.1%))\",\n variable: \"var(--kds-color-annotations-learner)\",\n },\n },\n predictor: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-annotations-predictor)\",\n },\n },\n container: {\n light: { h: 66.5, s: 64.4, l: 80.2, a: 1 },\n dark: { h: 69.5, s: 59.5, l: 85.5, a: 1 },\n css: {\n value: \"light-dark(hsl(66.5, 64.4%, 80.2%), hsl(69.5, 59.5%, 85.5%))\",\n variable: \"var(--kds-color-annotations-container)\",\n },\n },\n \"flow-variable\": {\n light: { h: 173.4, s: 37.1, l: 38.6, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 1 },\n css: {\n value: \"light-dark(hsl(173.4, 37.1%, 38.6%), hsl(171.8, 27%, 47.8%))\",\n variable: \"var(--kds-color-annotations-flow-variable)\",\n },\n },\n tealDark: {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(176.7, 82%, 17.5%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-annotations-teal-dark)\",\n },\n },\n other: {\n light: { h: 29, s: 43, l: 58, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(29, 43%, 58%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-annotations-other)\",\n },\n },\n loop: {\n light: { h: 25, s: 30, l: 35, a: 1 },\n dark: { h: 27, s: 35, l: 44, a: 1 },\n css: {\n value: \"light-dark(hsl(25, 30%, 35%), hsl(27, 35%, 44%))\",\n variable: \"var(--kds-color-annotations-loop)\",\n },\n },\n },\n state: {\n error: {\n light: { h: 353, s: 74.7, l: 44.9, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(353, 74.7%, 44.9%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-state-error)\",\n },\n },\n \"error-border\": {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 2.6, s: 100, l: 72.4, a: 1 },\n css: {\n value: \"light-dark(hsl(348, 94.3%, 20.8%), hsl(2.6, 100%, 72.4%))\",\n variable: \"var(--kds-color-state-error-border)\",\n },\n },\n warning: {\n light: { h: 47.6, s: 100, l: 67.6, a: 1 },\n dark: { h: 43.9, s: 100, l: 26.3, a: 1 },\n css: {\n value: \"light-dark(hsl(47.6, 100%, 67.6%), hsl(43.9, 100%, 26.3%))\",\n variable: \"var(--kds-color-state-warning)\",\n },\n },\n \"warning-border\": {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 49.1, s: 99.1, l: 43.7, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(49.1, 99.1%, 43.7%))\",\n variable: \"var(--kds-color-state-warning-border)\",\n },\n },\n success: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 107.6, s: 46, l: 37.1, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(107.6, 46%, 37.1%))\",\n variable: \"var(--kds-color-state-success)\",\n },\n },\n \"success-border\": {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(106.5, 42.6%, 54.9%))\",\n variable: \"var(--kds-color-state-success-border)\",\n },\n },\n loading: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-state-loading)\",\n },\n },\n inactive: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 11.4, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 11.4%))\",\n variable: \"var(--kds-color-state-inactive)\",\n },\n },\n \"inactive-border\": {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-state-inactive-border)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-state-disabled)\",\n },\n },\n \"disabled-border\": {\n light: { h: 0, s: 0, l: 48.2, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 48.2%)\",\n variable: \"var(--kds-color-state-disabled-border)\",\n },\n },\n background: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-state-background)\",\n },\n },\n },\n connector: {\n data: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-connector-data)\",\n },\n },\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n css: {\n value: \"hsl(359.6, 84.3%, 62.5%)\",\n variable: \"var(--kds-color-connector-flow-variable)\",\n },\n },\n selected: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-connector-selected)\",\n },\n },\n highlighted: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-connector-highlighted)\",\n },\n },\n insertable: {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(106.5, 42.6%, 54.9%))\",\n variable: \"var(--kds-color-connector-insertable)\",\n },\n },\n },\n elevation: {\n top: {\n light: { h: 0, s: 0, l: 72.5, a: 0.32 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.9 },\n css: {\n value: \"light-dark(hsl(0 0% 72.5% / 0.32), hsl(0 0% 10.2% / 0.9))\",\n variable: \"var(--kds-color-elevation-top)\",\n },\n },\n middle: {\n light: { h: 0, s: 0, l: 32.2, a: 0.14 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.94 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.14), hsl(0 0% 10.2% / 0.94))\",\n variable: \"var(--kds-color-elevation-middle)\",\n },\n },\n bottom: {\n light: { h: 0, s: 0, l: 32.2, a: 0.12 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.98 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.12), hsl(0 0% 10.2% / 0.98))\",\n variable: \"var(--kds-color-elevation-bottom)\",\n },\n },\n knob: {\n light: { h: 0, s: 0, l: 32.2, a: 0.5 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.6 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.5), hsl(0 0% 10.2% / 0.6))\",\n variable: \"var(--kds-color-elevation-knob)\",\n },\n },\n },\n DesktopHeader: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 10.2, a: 1 },\n dark: { h: 0, s: 0, l: 10.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 10.2%)\",\n variable: \"var(--kds-color-desktop-header-background-default)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-desktop-header-background-muted)\",\n },\n },\n accent: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-desktop-header-background-accent)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-desktop-header-text-and-icon-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-desktop-header-text-and-icon-muted)\",\n },\n },\n },\n border: {\n default: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-desktop-header-border-default)\",\n },\n },\n },\n },\n TableHeader: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 99, a: 1 },\n css: {\n value: \"hsl(0, 0%, 99%)\",\n variable: \"var(--kds-color-table-header-background-default)\",\n },\n },\n },\n },\n ToggleSwitch: {\n knob: {\n initial: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 99, a: 1 },\n css: {\n value: \"hsl(0, 0%, 99%)\",\n variable: \"var(--kds-color-toggle-switch-knob-initial)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 90.2%)\",\n variable: \"var(--kds-color-toggle-switch-knob-disabled)\",\n },\n },\n },\n icon: {\n on: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"hsl(176.1, 66.7%, 22.4%)\",\n variable: \"var(--kds-color-toggle-switch-icon-on)\",\n },\n },\n off: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 43, a: 1 },\n css: {\n value: \"hsl(0, 0%, 43%)\",\n variable: \"var(--kds-color-toggle-switch-icon-off)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 64, a: 1 },\n css: {\n value: \"hsl(0, 0%, 64%)\",\n variable: \"var(--kds-color-toggle-switch-icon-disabled)\",\n },\n },\n },\n },\n LoadingSpinner: {\n progress: {\n onPrimary: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n css: {\n value: \"hsl(165.6 67.6% 92.7%)\",\n variable: \"var(--kds-color-loading-spinner-progress-on-primary)\",\n },\n },\n onSurface: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-loading-spinner-progress-on-surface)\",\n },\n },\n },\n track: {\n onPrimary: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 0.24 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 0.24 },\n css: {\n value: \"hsl(165.6 67.6% 92.7% / 0.24)\",\n variable: \"var(--kds-color-loading-spinner-track-on-primary)\",\n },\n },\n onSurface: {\n light: { h: 0, s: 0, l: 15.7, a: 0.24 },\n dark: { h: 0, s: 0, l: 94.1, a: 0.24 },\n css: {\n value: \"light-dark(hsl(0 0% 15.7% / 0.24), hsl(0 0% 94.1% / 0.24))\",\n variable: \"var(--kds-color-loading-spinner-track-on-surface)\",\n },\n },\n },\n },\n Tooltip: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-tooltip-background-default)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 98, a: 1 },\n css: {\n value: \"hsl(0, 0%, 98%)\",\n variable: \"var(--kds-color-tooltip-text-and-icon-neutral)\",\n },\n },\n },\n },\n TextHighlight: {\n background: {\n default: {\n light: { h: 212.1, s: 78.2, l: 67.6, a: 0.6 },\n dark: { h: 212.1, s: 78.2, l: 67.6, a: 0.6 },\n css: {\n value: \"hsl(212.1 78.2% 67.6% / 0.6)\",\n variable: \"var(--kds-color-text-highlight-background-default)\",\n },\n },\n },\n },\n Avatar: {\n background: {\n red: {\n light: { h: 3.5, s: 100, l: 79.6, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"hsl(3.5, 100%, 79.6%)\",\n variable: \"var(--kds-color-avatar-background-red)\",\n },\n },\n orange: {\n light: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"hsl(31.2, 82.8%, 65.9%)\",\n variable: \"var(--kds-color-avatar-background-orange)\",\n },\n },\n yellow: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-avatar-background-yellow)\",\n },\n },\n green: {\n light: { h: 109, s: 47.2, l: 61.4, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"hsl(109, 47.2%, 61.4%)\",\n variable: \"var(--kds-color-avatar-background-green)\",\n },\n },\n teal: {\n light: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"hsl(169.8, 30.6%, 66.1%)\",\n variable: \"var(--kds-color-avatar-background-teal)\",\n },\n },\n blue: {\n light: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"hsl(213.6, 91.6%, 76.7%)\",\n variable: \"var(--kds-color-avatar-background-blue)\",\n },\n },\n purple: {\n light: { h: 320, s: 44.7, l: 81.6, a: 1 },\n dark: { h: 320, s: 44.7, l: 81.6, a: 1 },\n css: {\n value: \"hsl(320.0, 44.7%, 81.6%)\",\n variable: \"var(--kds-color-avatar-background-purple)\",\n },\n },\n aquamarine: {\n light: { h: 185.8, s: 49.2, l: 87.6, a: 1 },\n dark: { h: 185.8, s: 49.2, l: 87.6, a: 1 },\n css: {\n value: \"hsl(185.8, 49.2%, 87.6%)\",\n variable: \"var(--kds-color-avatar-background-aquamarine)\",\n },\n },\n grassgreen: {\n light: { h: 63.4, s: 68.5, l: 75.1, a: 1 },\n dark: { h: 63.4, s: 68.5, l: 75.1, a: 1 },\n css: {\n value: \"hsl(63.4, 68.5%, 75.1%)\",\n variable: \"var(--kds-color-avatar-background-grassgreen)\",\n },\n },\n brown: {\n light: { h: 30, s: 47, l: 68, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"hsl(30, 47%, 68%)\",\n variable: \"var(--kds-color-avatar-background-brown)\",\n },\n },\n empty: {\n light: { h: 330, s: 0, l: 94.521, a: 1 },\n dark: { h: 330, s: 0, l: 30.187, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 94.521%), hsl(330 0% 30.187%))\",\n variable: \"var(--kds-color-avatar-background-empty)\",\n },\n },\n },\n \"text-and-icon\": {\n red: {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 348, s: 94.3, l: 20.8, a: 1 },\n css: {\n value: \"hsl(348, 94.3%, 20.8%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-red)\",\n },\n },\n orange: {\n light: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"hsl(13.1, 66.1%, 23.1%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-orange)\",\n },\n },\n yellow: {\n light: { h: 44.3, s: 94.2, l: 13.5, a: 1 },\n dark: { h: 44.3, s: 94.2, l: 13.5, a: 1 },\n css: {\n value: \"hsl(44.3, 94.2%, 13.5%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-yellow)\",\n },\n },\n green: {\n light: { h: 132.3, s: 52, l: 14.7, a: 1 },\n dark: { h: 132.3, s: 52, l: 14.7, a: 1 },\n css: {\n value: \"hsl(132.3, 52%, 14.7%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-green)\",\n },\n },\n teal: {\n light: { h: 174.5, s: 93.2, l: 11.6, a: 1 },\n dark: { h: 174.5, s: 93.2, l: 11.6, a: 1 },\n css: {\n value: \"hsl(174.5, 93.2%, 11.6%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-teal)\",\n },\n },\n blue: {\n light: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n css: {\n value: \"hsl(209.4, 49.5%, 20.2%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-blue)\",\n },\n },\n purple: {\n light: { h: 295.5, s: 33.9, l: 23.1, a: 1 },\n dark: { h: 295.5, s: 33.9, l: 23.1, a: 1 },\n css: {\n value: \"hsl(295.5, 33.9%, 23.1%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-purple)\",\n },\n },\n aquamarine: {\n light: { h: 200.9, s: 63.2, l: 26.7, a: 1 },\n dark: { h: 200.9, s: 63.2, l: 26.7, a: 1 },\n css: {\n value: \"hsl(200.9, 63.2%, 26.7%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-aquamarine)\",\n },\n },\n grassgreen: {\n light: { h: 72.2, s: 39.2, l: 24.5, a: 1 },\n dark: { h: 72.2, s: 39.2, l: 24.5, a: 1 },\n css: {\n value: \"hsl(72.2, 39.2%, 24.5%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-grassgreen)\",\n },\n },\n brown: {\n light: { h: 23, s: 27, l: 24, a: 1 },\n dark: { h: 23, s: 27, l: 24, a: 1 },\n css: {\n value: \"hsl(23, 27%, 24%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-brown)\",\n },\n },\n },\n },\n};\n","/**\n * Do not edit directly, this file was auto-generated\n * from the design token sources in src/tokens.\n */\nexport const font = {\n base: {\n display: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 18, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 18px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 20, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 20px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-small)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 24, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 24px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-medium)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 32, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 32px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-large)\",\n },\n },\n xlarge: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 40, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 40px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-xlarge)\",\n },\n },\n },\n title: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-small)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-small-strong)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-large-strong)\",\n },\n },\n },\n body: {\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-strong)\",\n },\n },\n \"small-strong-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 700 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-strong-italic)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 14px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 14px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-large-strong)\",\n },\n },\n xlarge: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 20, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 20px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-xlarge)\",\n },\n },\n },\n subtext: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 9, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 9px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-small)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-medium)\",\n },\n },\n },\n interactive: {\n \"xsmall-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-xsmall-strong)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small-strong)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-large-strong)\",\n },\n },\n },\n code: {\n xsmall: {\n fontFamily: \"Roboto Mono\",\n fontWeight: 300,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"300 10px/normal 'Roboto Mono', monospace\",\n variable: \"var(--kds-font-base-code-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto Mono\",\n fontWeight: 300,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"300 12px/normal 'Roboto Mono', monospace\",\n variable: \"var(--kds-font-base-code-small)\",\n },\n },\n },\n },\n workflow: {\n annotation: {\n headline: {\n H1: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h1)\",\n },\n },\n H2: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h2)\",\n },\n },\n H3: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h3)\",\n },\n },\n H4: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h4)\",\n },\n },\n H5: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h5)\",\n },\n },\n \"H1-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h1-italic)\",\n },\n },\n \"H2-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h2-italic)\",\n },\n },\n \"H3-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h3-italic)\",\n },\n },\n \"H4-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h4-italic)\",\n },\n },\n \"H5-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h5-italic)\",\n },\n },\n H6: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h6)\",\n },\n },\n \"H6-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h6-italic)\",\n },\n },\n },\n body: {\n small: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-strong)\",\n },\n },\n \"small-strong-Italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-strong-italic)\",\n },\n },\n },\n },\n node: {\n name: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n css: {\n value: \"700 13px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-name)\",\n },\n },\n label: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n css: {\n value: \"400 12px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-label)\",\n },\n },\n status: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 8, unit: \"px\" },\n css: {\n value: \"400 8px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-status)\",\n },\n },\n },\n },\n dataapp: {\n H1: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h1)\",\n },\n },\n H2: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h2)\",\n },\n },\n H3: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h3)\",\n },\n },\n H4: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h4)\",\n },\n },\n H5: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h5)\",\n },\n },\n H6: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h6)\",\n },\n },\n body: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-body)\",\n },\n },\n \"body-small\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 10px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-body-small)\",\n },\n },\n },\n chart: {\n title: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 18, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 18px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-title)\",\n },\n },\n subtitle: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-subtitle)\",\n },\n },\n \"axis-name\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-axis-name)\",\n },\n },\n \"axis-label\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-axis-label)\",\n },\n },\n legend: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-legend)\",\n },\n },\n tooltip: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-tooltip)\",\n },\n },\n label: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-label)\",\n },\n },\n },\n};\n","import type { editor } from \"monaco-editor\";\nimport { KeyCode } from \"monaco-editor\";\n\nimport { font } from \"@knime/kds-styles/tokens\";\n\nexport const INITIAL_LINE_HEIGHT = 18; // Default line height in Monaco Editor\nexport const EXTRA_PADDING = 3; // Additional padding to prevent scrollbar\nexport const DEFAULT_OVERVIEW_RULER_LANES = 3; // Monaco default\n\n// Monaco is styled via JS options, not CSS, so the KDS code typography is\n// passed to the editor constructors from the design-token constants. Exported\n// for the font pre-load in `monacoEnvironment.ts`, which has to pre-load the\n// very font the options below select.\nexport const codeFont = font.base.code.small;\n\n/**\n * Construction options shared by `KdsCodeEditor` and `KdsCodeDiffEditor`.\n */\nexport const COMMON_EDITOR_OPTIONS = {\n automaticLayout: true,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbersMinChars: 3,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n fontWeight: `${codeFont.fontWeight}`,\n fontSize: codeFont.fontSize.value,\n // Keep suggest / hover widgets visible when the editor sits in a clipping\n // container (the editor wrapper itself uses `overflow: hidden`).\n fixedOverflowWidgets: true,\n // Don't swallow wheel events once the editor cannot scroll any further,\n // so the surrounding dialog / page continues to scroll.\n scrollbar: { alwaysConsumeMouseWheel: false },\n // Standalone Monaco cannot detect screen readers in the browser; with the\n // default \"auto\" it would replace `ariaLabel` with a \"The editor is not\n // accessible at this time\" message and skip the screen-reader content\n // mirror. Force it on so assistive technology always works.\n accessibilitySupport: \"on\",\n} satisfies editor.IEditorConstructionOptions;\n\n// Update the editor theme based on the current dark mode setting\nexport const MONACO_THEME_LIGHT = \"vs-light\";\nexport const MONACO_THEME_DARK = \"vs-dark\";\nexport const getMonacoTheme = (isDark: boolean) =>\n isDark ? MONACO_THEME_DARK : MONACO_THEME_LIGHT;\n\n/**\n * Monaco's overflow widgets (error tooltips, autocomplete) can clip or appear\n * far away from the pointer in certain containers (such as stories in\n * Storybook, or ancestors with a CSS `transform`). Hosting them in an\n * external node on `document.body` avoids that; the node needs the\n * `monaco-editor` class to keep the popover styling. The caller owns the\n * returned node and must remove it on unmount.\n */\nexport const createOverflowWidgetsDomNode = (): HTMLElement => {\n const node = document.createElement(\"div\");\n node.classList.add(\"monaco-editor\");\n document.body.appendChild(node);\n return node;\n};\n\n/**\n * Accessibility: Escape arms tab-focus mode on the given editor so the next\n * Tab (or Shift+Tab) moves focus out of the editor instead of indenting;\n * any other key press or re-entering the editor restores Tab-as-indentation.\n */\nexport const setupTabFocusHandling = (editorInstance: editor.ICodeEditor) => {\n let tabFocusArmed = false;\n const setTabFocus = (armed: boolean) => {\n if (tabFocusArmed !== armed) {\n tabFocusArmed = armed;\n editorInstance.updateOptions({ tabFocusMode: armed });\n }\n };\n // Keys that must not disarm tab-focus mode: Tab itself (so the armed Tab\n // can leave the editor) and lone modifiers (so Escape → Shift+Tab works).\n const tabFocusNeutralKeys = [\n KeyCode.Tab,\n KeyCode.Shift,\n KeyCode.Ctrl,\n KeyCode.Alt,\n KeyCode.Meta,\n ];\n editorInstance.onKeyDown((event) => {\n if (event.keyCode === KeyCode.Escape) {\n setTabFocus(true);\n } else if (!tabFocusNeutralKeys.includes(event.keyCode)) {\n setTabFocus(false);\n }\n });\n editorInstance.onDidFocusEditorText(() => {\n setTabFocus(false);\n });\n};\n","/**\n * Monarch syntax definition for TOML (v1.1.0).\n * Registers \"toml\" as a language with Monaco Editor.\n *\n * Uses compound patterns (like GitHub's TextMate TOML grammar) to distinguish\n * table headers, keys, and values without relying on end-of-line state pops:\n * - Table headers: matched as whole `[key.path]` / `[[key.path]]` patterns\n * - Key assignments: matched as `key =` compound patterns\n * - Values: matched directly in root (strings, numbers, booleans, dates)\n * - Arrays / inline tables: use sub-states for bracket matching\n *\n * Spec: https://toml.io/en/v1.1.0\n * Monarch docs: https://microsoft.github.io/monaco-editor/monarch.html\n */\nimport { languages } from \"monaco-editor\";\n\n/**\n * Registers the TOML language with Monaco. Idempotent — registering is\n * page-global, so the first call wins and later calls return early.\n *\n * Called explicitly (from `setupMonacoEnvironment`) rather than as a\n * module side effect: the package declares `sideEffects` in its\n * package.json, so bundlers are allowed to drop bare side-effect imports\n * of this module in production builds.\n */\nexport const registerTomlLanguage = () => {\n if (languages.getLanguages().some((language) => language.id === \"toml\")) {\n return;\n }\n\n languages.register({ id: \"toml\" });\n\n languages.setLanguageConfiguration(\"toml\", {\n comments: {\n lineComment: \"#\",\n },\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"],\n ],\n autoClosingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: '\"\"\"', close: '\"\"\"' },\n { open: \"'''\", close: \"'''\" },\n { open: '\"', close: '\"', notIn: [\"string\"] },\n { open: \"'\", close: \"'\", notIn: [\"string\"] },\n ],\n surroundingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n });\n\n languages.setMonarchTokensProvider(\"toml\", {\n defaultToken: \"\",\n\n brackets: [\n { open: \"[\", close: \"]\", token: \"delimiter.square\" },\n { open: \"{\", close: \"}\", token: \"delimiter.curly\" },\n ],\n\n escapes:\n /\\\\(?:[btnfre\"\\\\]|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n\n tokenizer: {\n // --------------- Root: table headers, key = value lines, values ----------\n root: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n\n // Array-of-tables header: [[key.path]] (bare keys only, won't match arrays)\n [\n /(\\[\\[)(\\s*[A-Za-z0-9_-]+(?:\\s*\\.\\s*[A-Za-z0-9_-]+)*\\s*)(\\]\\])/,\n [\"metatag.delimiter\", \"metatag\", \"metatag.delimiter\"],\n ],\n\n // Table header: [key.path] (bare keys only, won't match arrays like [\"str\"])\n [\n /(\\[)(\\s*[A-Za-z0-9_-]+(?:\\s*\\.\\s*[A-Za-z0-9_-]+)*\\s*)(\\])/,\n [\"metatag.delimiter\", \"metatag\", \"metatag.delimiter\"],\n ],\n\n // Key = (compound: bare key followed by =)\n [/([A-Za-z0-9_-]+)(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n // Key = (compound: quoted basic key followed by =)\n [/(\"[^\"]*\")(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n // Key = (compound: quoted literal key followed by =)\n [/('[^']*')(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n\n // Dotted key part: bare key followed by .\n [/([A-Za-z0-9_-]+)(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n // Dotted key part: quoted basic key followed by .\n [/(\"[^\"]*\")(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n // Dotted key part: quoted literal key followed by .\n [/('[^']*')(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n\n // Compound value structures (push sub-states for bracket matching)\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n\n // Simple values\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n\n // Fallback punctuation\n [/[=,]/, \"delimiter\"],\n ],\n\n // --------------- Inline table: { key = value, ... } ---------------\n inlineTable: [\n { include: \"@whitespace\" },\n // TOML v1.1 allows newlines — and therefore comments — inside\n // multi-line inline tables.\n { include: \"@comment\" },\n [/\\}/, \"@brackets\", \"@pop\"],\n [/,/, \"delimiter\"],\n\n // Keys inside inline table (compound patterns)\n [/([A-Za-z0-9_-]+)(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/(\"[^\"]*\")(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/('[^']*')(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/([A-Za-z0-9_-]+)(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n [/(\"[^\"]*\")(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n [/('[^']*')(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n\n // Values inside inline table\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n ],\n\n // --------------- Array: [ value, value, ... ] ---------------\n array: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n [/\\]/, \"@brackets\", \"@pop\"],\n [/,/, \"delimiter\"],\n\n // Nested structures\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n ],\n\n // --------------- Shared includes ---------------\n whitespace: [[/[ \\t\\r\\n]+/, \"white\"]],\n\n comment: [[/#.*$/, \"comment\"]],\n\n booleans: [[/(?:true|false)(?![A-Za-z0-9_-])/, \"keyword\"]],\n\n dateTime: [\n [\n /\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})?/,\n \"number\",\n ],\n [/\\d{4}-\\d{2}-\\d{2}/, \"number\"],\n [/\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?/, \"number\"],\n ],\n\n numbers: [\n [/0x[0-9A-Fa-f][0-9A-Fa-f_]*/, \"number.hex\"],\n [/0o[0-7][0-7_]*/, \"number.octal\"],\n [/0b[01][01_]*/, \"number.binary\"],\n [/[+-]?(?:inf|nan)(?![A-Za-z0-9_-])/, \"number.float\"],\n [/[+-]?\\d[\\d_]*\\.\\d[\\d_]*([eE][+-]?\\d[\\d_]*)?/, \"number.float\"],\n [/[+-]?\\d[\\d_]*[eE][+-]?\\d[\\d_]*/, \"number.float\"],\n [/[+-]?\\d[\\d_]*/, \"number\"],\n ],\n\n strings: [\n [/\"\"\"/, \"string\", \"@string.multiBasic\"],\n [/'''/, \"string\", \"@string.multiLiteral\"],\n [/\"/, \"string\", \"@string.basic\"],\n [/'/, \"string\", \"@string.literal\"],\n ],\n\n // --------------- String value states ---------------\n \"string.basic\": [\n // Basic strings are single-line by spec: an unterminated string ends\n // (as invalid) at the end of the line instead of painting the rest of\n // the document.\n [/[^\\\\\"]*$/, \"string.invalid\", \"@pop\"],\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, \"string\", \"@pop\"],\n ],\n\n \"string.multiBasic\": [\n [/\"\"\"/, \"string\", \"@pop\"],\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, \"string\"],\n ],\n\n \"string.literal\": [\n // Literal strings are single-line by spec (see `string.basic`).\n [/[^']*$/, \"string.invalid\", \"@pop\"],\n [/[^']+/, \"string\"],\n [/'/, \"string\", \"@pop\"],\n ],\n\n \"string.multiLiteral\": [\n [/'''/, \"string\", \"@pop\"],\n [/[^']+/, \"string\"],\n [/'/, \"string\"],\n ],\n },\n });\n};\n","import { editor } from \"monaco-editor\";\n\nimport { codeFont } from \"../_helper/monacoCommon\";\n\nimport { registerTomlLanguage } from \"./tomlLanguage\";\n\n// The characters Monaco measures when it reads the font info. They are passed\n// to `load()` explicitly because a web font is split into `unicode-range`\n// subsets, of which only those covering the requested text are fetched.\nconst MEASURED_CHARACTERS = \"n 0123456789|/-_ilm%·\";\n\nlet fontRemeasureScheduled = false;\n\n/**\n * Monaco measures character widths when an editor is created, caches them for\n * the whole page, and derives cursor placement and selection width from them.\n * That measurement is also the first use of the code font, so it happens\n * before the font is loaded and keeps the fallback font's metrics — cursor and\n * selection then drift away from the glyphs (KDS-1002).\n *\n * `document.fonts.ready` does not help: it resolves while nothing is pending,\n * which is the case before any editor exists. So load the code font explicitly\n * and re-measure once it is there — also when loading failed, in which case\n * the fallback metrics are at least measured consistently.\n */\nconst remeasureFontsWhenCodeFontLoaded = () => {\n if (fontRemeasureScheduled || !document.fonts) {\n return;\n }\n fontRemeasureScheduled = true;\n document.fonts\n .load(codeFont.css.value, MEASURED_CHARACTERS)\n .catch(() => [])\n .then(() => {\n editor.remeasureFonts();\n });\n};\n\n// Setup Monaco Environment to load web workers for different languages.\n// Monaco's getWorker supports returning a Promise<Worker>, so language-specific\n// workers are bundled as separate chunks and loaded on demand.\nexport const setupMonacoEnvironment = () => {\n // Custom language registration happens before the early return below, so\n // the languages are also available when the host app defined its own\n // MonacoEnvironment. (Registered here explicitly — a module-side-effect\n // import would be dropped by bundlers because of the package's\n // `sideEffects` declaration.)\n registerTomlLanguage();\n\n // Not at module evaluation time: the consuming app may register the KDS\n // `@font-face` rules after this module is imported, and `load()` resolves\n // right away (without loading anything) for a family it does not know yet.\n remeasureFontsWhenCodeFontLoaded();\n\n if (self.MonacoEnvironment) {\n return;\n }\n self.MonacoEnvironment = {\n getWorker: async (_workerId: string, label: string) => {\n if (label === \"json\") {\n const { default: JSONWorker } =\n await import(\"monaco-editor/esm/vs/language/json/json.worker?worker&inline\");\n return new JSONWorker();\n }\n const { default: EditorWorker } =\n await import(\"monaco-editor/esm/vs/editor/editor.worker?worker&inline\");\n return new EditorWorker();\n },\n };\n};\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { useClipboard } from \"@vueuse/core\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n DEFAULT_OVERVIEW_RULER_LANES,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport { kdsCodeEditorState } from \"./enums\";\nimport { setupMonacoEnvironment } from \"./monacoEnvironment\";\nimport type { KdsCodeEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n overviewRuler = false,\n readOnly = false,\n highlighted = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n} = defineProps<KdsCodeEditorProps>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to the language label —\n * e.g. the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\n// Links the sub-text to the editor's text input via `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet editorInstance: editor.IStandaloneCodeEditor | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether the Monaco code area (not a header button) currently has focus.\nconst isEditorFocused = ref(false);\n\nconst showFocusHighlight = computed(() => isEditorFocused.value || highlighted);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible name for Monaco's focusable element (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announces the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst editorAriaLabel = computed(\n () =>\n `${headerLabel.value} code editor${readOnly ? \", read-only\" : \"\"}. ` +\n \"Press Escape followed by Tab to move focus out of the editor.\",\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\nconst contentLineCount = ref(1);\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getEditorInputElement = () =>\n baseCodeEditor.value?.getCodeContainer()?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the `ariaLabel` option) but not\n// `aria-describedby` / `aria-invalid` / `aria-current`, so those are\n// maintained here.\nconst syncEditorInputAria = () => {\n const input = getEditorInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n // The highlight marks this editor as the current one of a list, which is\n // otherwise only visible — assistive technology needs it announced.\n if (highlighted) {\n input.setAttribute(\"aria-current\", \"true\");\n } else {\n input.removeAttribute(\"aria-current\");\n }\n};\n\nwatch([() => subText, () => state, () => highlighted], syncEditorInputAria);\n\n// Copy-to-clipboard handling\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 });\nconst copyButtonAriaLabel = computed(() =>\n copied.value\n ? `Copied ${headerLabel.value} to clipboard`\n : `Copy ${headerLabel.value} to clipboard`,\n);\nconst copyToClipboard = () => {\n // Copy unconditionally — even an empty editor gives \"Copied\" feedback\n // instead of a dead button.\n copy(editorInstance?.getModel()?.getValue() ?? \"\");\n};\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n editorInstance = editor.create(container, {\n ...COMMON_EDITOR_OPTIONS,\n value: modelValue.value,\n language,\n overviewRulerLanes: overviewRuler ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n overflowWidgetsDomNode,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n ariaLabel: editorAriaLabel.value,\n });\n\n syncEditorInputAria();\n\n lineHeight.value = editorInstance.getOption(editor.EditorOption.lineHeight);\n contentLineCount.value = editorInstance.getModel()?.getLineCount() ?? 1;\n\n editorInstance.onDidChangeModelContent(() => {\n const value = editorInstance?.getModel()?.getValue() ?? \"\";\n contentLineCount.value = editorInstance?.getModel()?.getLineCount() ?? 1;\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n setupTabFocusHandling(editorInstance);\n editorInstance.onDidFocusEditorText(() => {\n isEditorFocused.value = true;\n });\n editorInstance.onDidBlurEditorText(() => {\n isEditorFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (editorInstance) {\n editorInstance.updateOptions({ theme: getMonacoTheme(dark) });\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n editorInstance?.updateOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(editorAriaLabel, (ariaLabel) => {\n editorInstance?.updateOptions({ ariaLabel });\n});\n\nwatch(\n () => overviewRuler,\n (enabled) => {\n editorInstance?.updateOptions({\n overviewRulerLanes: enabled ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n const model = editorInstance?.getModel();\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or flow-variable\n// overwrite would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n const model = editorInstance?.getModel();\n if (model && newValue !== model.getValue()) {\n model.pushStackElement();\n model.pushEditOperations(\n [],\n [{ range: model.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n editorInstance?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco editor instance, available after mount. */\n getEditor: () => editorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"copyable\"\n :copied=\"copied\"\n :copy-button-aria-label=\"copyButtonAriaLabel\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"showFocusHighlight\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n @copy=\"copyToClipboard\"\n >\n <template v-if=\"$slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n <template v-if=\"$slots.labelActions\" #labelActions>\n <slot name=\"labelActions\" />\n </template>\n </BaseCodeEditor>\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { useClipboard } from \"@vueuse/core\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n DEFAULT_OVERVIEW_RULER_LANES,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport { kdsCodeEditorState } from \"./enums\";\nimport { setupMonacoEnvironment } from \"./monacoEnvironment\";\nimport type { KdsCodeEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n overviewRuler = false,\n readOnly = false,\n highlighted = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n} = defineProps<KdsCodeEditorProps>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to the language label —\n * e.g. the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\n// Links the sub-text to the editor's text input via `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet editorInstance: editor.IStandaloneCodeEditor | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether the Monaco code area (not a header button) currently has focus.\nconst isEditorFocused = ref(false);\n\nconst showFocusHighlight = computed(() => isEditorFocused.value || highlighted);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible name for Monaco's focusable element (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announces the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst editorAriaLabel = computed(\n () =>\n `${headerLabel.value} code editor${readOnly ? \", read-only\" : \"\"}. ` +\n \"Press Escape followed by Tab to move focus out of the editor.\",\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\nconst contentLineCount = ref(1);\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getEditorInputElement = () =>\n baseCodeEditor.value?.getCodeContainer()?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the `ariaLabel` option) but not\n// `aria-describedby` / `aria-invalid` / `aria-current`, so those are\n// maintained here.\nconst syncEditorInputAria = () => {\n const input = getEditorInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n // The highlight marks this editor as the current one of a list, which is\n // otherwise only visible — assistive technology needs it announced.\n if (highlighted) {\n input.setAttribute(\"aria-current\", \"true\");\n } else {\n input.removeAttribute(\"aria-current\");\n }\n};\n\nwatch([() => subText, () => state, () => highlighted], syncEditorInputAria);\n\n// Copy-to-clipboard handling\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 });\nconst copyButtonAriaLabel = computed(() =>\n copied.value\n ? `Copied ${headerLabel.value} to clipboard`\n : `Copy ${headerLabel.value} to clipboard`,\n);\nconst copyToClipboard = () => {\n // Copy unconditionally — even an empty editor gives \"Copied\" feedback\n // instead of a dead button.\n copy(editorInstance?.getModel()?.getValue() ?? \"\");\n};\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n editorInstance = editor.create(container, {\n ...COMMON_EDITOR_OPTIONS,\n value: modelValue.value,\n language,\n overviewRulerLanes: overviewRuler ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n overflowWidgetsDomNode,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n ariaLabel: editorAriaLabel.value,\n });\n\n syncEditorInputAria();\n\n lineHeight.value = editorInstance.getOption(editor.EditorOption.lineHeight);\n contentLineCount.value = editorInstance.getModel()?.getLineCount() ?? 1;\n\n editorInstance.onDidChangeModelContent(() => {\n const value = editorInstance?.getModel()?.getValue() ?? \"\";\n contentLineCount.value = editorInstance?.getModel()?.getLineCount() ?? 1;\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n setupTabFocusHandling(editorInstance);\n editorInstance.onDidFocusEditorText(() => {\n isEditorFocused.value = true;\n });\n editorInstance.onDidBlurEditorText(() => {\n isEditorFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (editorInstance) {\n editorInstance.updateOptions({ theme: getMonacoTheme(dark) });\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n editorInstance?.updateOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(editorAriaLabel, (ariaLabel) => {\n editorInstance?.updateOptions({ ariaLabel });\n});\n\nwatch(\n () => overviewRuler,\n (enabled) => {\n editorInstance?.updateOptions({\n overviewRulerLanes: enabled ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n const model = editorInstance?.getModel();\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or flow-variable\n// overwrite would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n const model = editorInstance?.getModel();\n if (model && newValue !== model.getValue()) {\n model.pushStackElement();\n model.pushEditOperations(\n [],\n [{ range: model.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n editorInstance?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco editor instance, available after mount. */\n getEditor: () => editorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"copyable\"\n :copied=\"copied\"\n :copy-button-aria-label=\"copyButtonAriaLabel\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"showFocusHighlight\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n @copy=\"copyToClipboard\"\n >\n <template v-if=\"$slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n <template v-if=\"$slots.labelActions\" #labelActions>\n <slot name=\"labelActions\" />\n </template>\n </BaseCodeEditor>\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\nimport { setupMonacoEnvironment } from \"../CodeEditor/monacoEnvironment\";\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport type { KdsCodeDiffEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n original = \"\",\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n sideBySide = true,\n overviewRuler = false,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n changeSummary = undefined,\n} = defineProps<KdsCodeDiffEditorProps>();\n\n/** The modified content — the editable side of the diff. */\nconst modelValue = defineModel<string>({ default: \"\" });\n\n/**\n * Whether the editor is collapsed to just its change-summary header. Only\n * effective when `changeSummary` is set (which renders the collapse toggle).\n *\n * @default false\n */\nconst collapsed = defineModel<boolean>(\"collapsed\", { default: false });\n\n// Links the sub-text to the modified editor's text input via\n// `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet diffEditorInstance: editor.IStandaloneDiffEditor | undefined;\nlet originalModel: editor.ITextModel | undefined;\nlet modifiedModel: editor.ITextModel | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether one of the Monaco code areas (not a header button) has focus.\nconst isOriginalFocused = ref(false);\nconst isModifiedFocused = ref(false);\nconst isEditorFocused = computed(\n () => isOriginalFocused.value || isModifiedFocused.value,\n);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible names for Monaco's focusable elements (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announce the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst tabEscapeHint =\n \"Press Escape followed by Tab to move focus out of the editor.\";\nconst originalAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, original version, read-only. ${\n tabEscapeHint\n }`,\n);\nconst modifiedAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, modified version` +\n `${readOnly ? \", read-only\" : \"\"}. ${tabEscapeHint}`,\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\n// Line count of the larger side. Deliberately NOT derived from Monaco's\n// content height: that includes the asynchronously computed diff view zones\n// and scrollbar reservations, which would make the editor height flicker\n// once the diff arrives. The inline view may scroll internally when the\n// removed lines exceed the remaining row budget.\nconst contentLineCount = ref(1);\nconst updateContentLineCount = () => {\n contentLineCount.value = Math.max(\n originalModel?.getLineCount() ?? 1,\n modifiedModel?.getLineCount() ?? 1,\n );\n};\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Without the header there is no summary line to collapse to (and no toggle\n// to expand again), so `hideHeader` disables collapsing entirely.\nconst isCollapsed = computed(\n () => changeSummary !== undefined && !hideHeader && collapsed.value,\n);\n\n// Added / removed line counts of the current diff, shown in the\n// change-summary header. A changed line counts on both sides. `undefined`\n// (counts not rendered) until the asynchronously computed diff is available.\nconst addedLineCount = ref<number>();\nconst removedLineCount = ref<number>();\nconst updateChangeCounts = () => {\n const lineChanges = diffEditorInstance?.getLineChanges();\n if (!lineChanges) {\n return;\n }\n let added = 0;\n let removed = 0;\n for (const change of lineChanges) {\n // An end line number of 0 marks an empty range on that side (pure\n // insertion / deletion).\n if (change.modifiedEndLineNumber > 0) {\n added +=\n change.modifiedEndLineNumber - change.modifiedStartLineNumber + 1;\n }\n if (change.originalEndLineNumber > 0) {\n removed +=\n change.originalEndLineNumber - change.originalStartLineNumber + 1;\n }\n }\n addedLineCount.value = added;\n removedLineCount.value = removed;\n};\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// The aria-label options must go through `updateOptions`: the diff editor\n// creates its inner editors before applying the construction options'\n// `originalAriaLabel` / `modifiedAriaLabel`, so passing them at creation\n// leaves the inner editors unlabeled. They are only *declared* on the\n// construction options type (which extends the update options type), while\n// the runtime option-change path applies them fine.\nconst getAriaLabelOptions = (): editor.IDiffEditorConstructionOptions => ({\n originalAriaLabel: originalAriaLabel.value,\n modifiedAriaLabel: modifiedAriaLabel.value,\n});\n\n// Monaco re-derives both inner editors' options on every partial\n// `updateOptions` call and resets their `aria-label` to \"\" unless the\n// aria-label options are part of that same call — so every runtime option\n// update has to go through here.\nconst updateDiffEditorOptions = (options: editor.IDiffEditorOptions = {}) => {\n diffEditorInstance?.updateOptions({ ...options, ...getAriaLabelOptions() });\n};\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getModifiedInputElement = () =>\n diffEditorInstance\n ?.getModifiedEditor()\n .getDomNode()\n ?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the aria-label options) but not\n// `aria-describedby` / `aria-invalid`, so those are maintained here — on the\n// modified side, which holds the value the sub-text refers to.\nconst syncEditorInputAria = () => {\n const input = getModifiedInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n};\n\nwatch([() => subText, () => state], syncEditorInputAria);\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n\n originalModel = editor.createModel(original, language);\n modifiedModel = editor.createModel(modelValue.value, language);\n\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n diffEditorInstance = editor.createDiffEditor(container, {\n ...COMMON_EDITOR_OPTIONS,\n overflowWidgetsDomNode,\n renderSideBySide: sideBySide,\n renderOverviewRuler: overviewRuler,\n // The original side is never editable; `readOnly` governs the modified\n // side only.\n originalEditable: false,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n });\n diffEditorInstance.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n diffEditorInstance.updateOptions(getAriaLabelOptions());\n\n syncEditorInputAria();\n\n diffEditorInstance.onDidUpdateDiff(updateChangeCounts);\n\n const modifiedEditor = diffEditorInstance.getModifiedEditor();\n const originalEditor = diffEditorInstance.getOriginalEditor();\n\n lineHeight.value = modifiedEditor.getOption(editor.EditorOption.lineHeight);\n updateContentLineCount();\n\n originalModel.onDidChangeContent(updateContentLineCount);\n modifiedModel.onDidChangeContent(() => {\n const value = modifiedModel?.getValue() ?? \"\";\n updateContentLineCount();\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n for (const editorSide of [originalEditor, modifiedEditor]) {\n setupTabFocusHandling(editorSide);\n }\n originalEditor.onDidFocusEditorText(() => {\n isOriginalFocused.value = true;\n });\n originalEditor.onDidBlurEditorText(() => {\n isOriginalFocused.value = false;\n });\n modifiedEditor.onDidFocusEditorText(() => {\n isModifiedFocused.value = true;\n });\n modifiedEditor.onDidBlurEditorText(() => {\n isModifiedFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (diffEditorInstance) {\n editor.setTheme(getMonacoTheme(dark));\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n updateDiffEditorOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(modifiedAriaLabel, () => {\n updateDiffEditorOptions();\n});\n\nwatch(\n () => sideBySide,\n (renderSideBySide) => {\n updateDiffEditorOptions({ renderSideBySide });\n },\n);\n\nwatch(\n () => overviewRuler,\n (renderOverviewRuler) => {\n updateDiffEditorOptions({ renderOverviewRuler });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n for (const model of [originalModel, modifiedModel]) {\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n }\n },\n);\n\n// External `original` updates replace the original content. It is not\n// user-editable, so no undo stack needs to be preserved.\nwatch(\n () => original,\n (newOriginal) => {\n if (originalModel && newOriginal !== originalModel.getValue()) {\n originalModel.setValue(newOriginal);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or an \"apply\n// suggestion\" action would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n if (modifiedModel && newValue !== modifiedModel.getValue()) {\n modifiedModel.pushStackElement();\n modifiedModel.pushEditOperations(\n [],\n [{ range: modifiedModel.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n diffEditorInstance?.dispose();\n // The models are owned by this component (explicitly attached models are\n // never disposed by the editor itself).\n originalModel?.dispose();\n modifiedModel?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco diff editor instance, available after mount. */\n getEditor: () => diffEditorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"false\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"isEditorFocused\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n :change-summary=\"changeSummary\"\n :added-lines=\"addedLineCount\"\n :removed-lines=\"removedLineCount\"\n :collapsed=\"isCollapsed\"\n @collapsed-toggle=\"collapsed = !collapsed\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\nimport { setupMonacoEnvironment } from \"../CodeEditor/monacoEnvironment\";\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport type { KdsCodeDiffEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n original = \"\",\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n sideBySide = true,\n overviewRuler = false,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n changeSummary = undefined,\n} = defineProps<KdsCodeDiffEditorProps>();\n\n/** The modified content — the editable side of the diff. */\nconst modelValue = defineModel<string>({ default: \"\" });\n\n/**\n * Whether the editor is collapsed to just its change-summary header. Only\n * effective when `changeSummary` is set (which renders the collapse toggle).\n *\n * @default false\n */\nconst collapsed = defineModel<boolean>(\"collapsed\", { default: false });\n\n// Links the sub-text to the modified editor's text input via\n// `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet diffEditorInstance: editor.IStandaloneDiffEditor | undefined;\nlet originalModel: editor.ITextModel | undefined;\nlet modifiedModel: editor.ITextModel | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether one of the Monaco code areas (not a header button) has focus.\nconst isOriginalFocused = ref(false);\nconst isModifiedFocused = ref(false);\nconst isEditorFocused = computed(\n () => isOriginalFocused.value || isModifiedFocused.value,\n);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible names for Monaco's focusable elements (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announce the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst tabEscapeHint =\n \"Press Escape followed by Tab to move focus out of the editor.\";\nconst originalAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, original version, read-only. ${\n tabEscapeHint\n }`,\n);\nconst modifiedAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, modified version` +\n `${readOnly ? \", read-only\" : \"\"}. ${tabEscapeHint}`,\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\n// Line count of the larger side. Deliberately NOT derived from Monaco's\n// content height: that includes the asynchronously computed diff view zones\n// and scrollbar reservations, which would make the editor height flicker\n// once the diff arrives. The inline view may scroll internally when the\n// removed lines exceed the remaining row budget.\nconst contentLineCount = ref(1);\nconst updateContentLineCount = () => {\n contentLineCount.value = Math.max(\n originalModel?.getLineCount() ?? 1,\n modifiedModel?.getLineCount() ?? 1,\n );\n};\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Without the header there is no summary line to collapse to (and no toggle\n// to expand again), so `hideHeader` disables collapsing entirely.\nconst isCollapsed = computed(\n () => changeSummary !== undefined && !hideHeader && collapsed.value,\n);\n\n// Added / removed line counts of the current diff, shown in the\n// change-summary header. A changed line counts on both sides. `undefined`\n// (counts not rendered) until the asynchronously computed diff is available.\nconst addedLineCount = ref<number>();\nconst removedLineCount = ref<number>();\nconst updateChangeCounts = () => {\n const lineChanges = diffEditorInstance?.getLineChanges();\n if (!lineChanges) {\n return;\n }\n let added = 0;\n let removed = 0;\n for (const change of lineChanges) {\n // An end line number of 0 marks an empty range on that side (pure\n // insertion / deletion).\n if (change.modifiedEndLineNumber > 0) {\n added +=\n change.modifiedEndLineNumber - change.modifiedStartLineNumber + 1;\n }\n if (change.originalEndLineNumber > 0) {\n removed +=\n change.originalEndLineNumber - change.originalStartLineNumber + 1;\n }\n }\n addedLineCount.value = added;\n removedLineCount.value = removed;\n};\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// The aria-label options must go through `updateOptions`: the diff editor\n// creates its inner editors before applying the construction options'\n// `originalAriaLabel` / `modifiedAriaLabel`, so passing them at creation\n// leaves the inner editors unlabeled. They are only *declared* on the\n// construction options type (which extends the update options type), while\n// the runtime option-change path applies them fine.\nconst getAriaLabelOptions = (): editor.IDiffEditorConstructionOptions => ({\n originalAriaLabel: originalAriaLabel.value,\n modifiedAriaLabel: modifiedAriaLabel.value,\n});\n\n// Monaco re-derives both inner editors' options on every partial\n// `updateOptions` call and resets their `aria-label` to \"\" unless the\n// aria-label options are part of that same call — so every runtime option\n// update has to go through here.\nconst updateDiffEditorOptions = (options: editor.IDiffEditorOptions = {}) => {\n diffEditorInstance?.updateOptions({ ...options, ...getAriaLabelOptions() });\n};\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getModifiedInputElement = () =>\n diffEditorInstance\n ?.getModifiedEditor()\n .getDomNode()\n ?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the aria-label options) but not\n// `aria-describedby` / `aria-invalid`, so those are maintained here — on the\n// modified side, which holds the value the sub-text refers to.\nconst syncEditorInputAria = () => {\n const input = getModifiedInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n};\n\nwatch([() => subText, () => state], syncEditorInputAria);\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n\n originalModel = editor.createModel(original, language);\n modifiedModel = editor.createModel(modelValue.value, language);\n\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n diffEditorInstance = editor.createDiffEditor(container, {\n ...COMMON_EDITOR_OPTIONS,\n overflowWidgetsDomNode,\n renderSideBySide: sideBySide,\n renderOverviewRuler: overviewRuler,\n // The original side is never editable; `readOnly` governs the modified\n // side only.\n originalEditable: false,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n });\n diffEditorInstance.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n diffEditorInstance.updateOptions(getAriaLabelOptions());\n\n syncEditorInputAria();\n\n diffEditorInstance.onDidUpdateDiff(updateChangeCounts);\n\n const modifiedEditor = diffEditorInstance.getModifiedEditor();\n const originalEditor = diffEditorInstance.getOriginalEditor();\n\n lineHeight.value = modifiedEditor.getOption(editor.EditorOption.lineHeight);\n updateContentLineCount();\n\n originalModel.onDidChangeContent(updateContentLineCount);\n modifiedModel.onDidChangeContent(() => {\n const value = modifiedModel?.getValue() ?? \"\";\n updateContentLineCount();\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n for (const editorSide of [originalEditor, modifiedEditor]) {\n setupTabFocusHandling(editorSide);\n }\n originalEditor.onDidFocusEditorText(() => {\n isOriginalFocused.value = true;\n });\n originalEditor.onDidBlurEditorText(() => {\n isOriginalFocused.value = false;\n });\n modifiedEditor.onDidFocusEditorText(() => {\n isModifiedFocused.value = true;\n });\n modifiedEditor.onDidBlurEditorText(() => {\n isModifiedFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (diffEditorInstance) {\n editor.setTheme(getMonacoTheme(dark));\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n updateDiffEditorOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(modifiedAriaLabel, () => {\n updateDiffEditorOptions();\n});\n\nwatch(\n () => sideBySide,\n (renderSideBySide) => {\n updateDiffEditorOptions({ renderSideBySide });\n },\n);\n\nwatch(\n () => overviewRuler,\n (renderOverviewRuler) => {\n updateDiffEditorOptions({ renderOverviewRuler });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n for (const model of [originalModel, modifiedModel]) {\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n }\n },\n);\n\n// External `original` updates replace the original content. It is not\n// user-editable, so no undo stack needs to be preserved.\nwatch(\n () => original,\n (newOriginal) => {\n if (originalModel && newOriginal !== originalModel.getValue()) {\n originalModel.setValue(newOriginal);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or an \"apply\n// suggestion\" action would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n if (modifiedModel && newValue !== modifiedModel.getValue()) {\n modifiedModel.pushStackElement();\n modifiedModel.pushEditOperations(\n [],\n [{ range: modifiedModel.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n diffEditorInstance?.dispose();\n // The models are owned by this component (explicitly attached models are\n // never disposed by the editor itself).\n originalModel?.dispose();\n modifiedModel?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco diff editor instance, available after mount. */\n getEditor: () => diffEditorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"false\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"isEditorFocused\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n :change-summary=\"changeSummary\"\n :added-lines=\"addedLineCount\"\n :removed-lines=\"removedLineCount\"\n :collapsed=\"isCollapsed\"\n @collapsed-toggle=\"collapsed = !collapsed\"\n />\n</template>\n","import type { ITheme } from \"@xterm/xterm\";\n\nimport {\n type KdsColorValue,\n type KdsMode,\n color,\n} from \"@knime/kds-styles/tokens\";\n\n/**\n * Convert a generated KDS color token's HSL component representation to a CSS\n * color string. xterm.js renders to a canvas and therefore cannot read CSS\n * custom properties — resolved color strings are required.\n *\n * xterm.js's `css.toColor` only parses hex and comma-separated `rgb()/rgba()`\n * (the canvas fallback rejects non-opaque pixels), so HSL values are converted\n * to RGB and emitted as `rgb()`. Alpha colors are blended onto the terminal\n * background to produce an opaque color.\n */\nconst hslToRgb = (\n h: number,\n s: number,\n l: number,\n): [number, number, number] => {\n const sNorm = s / 100;\n const lNorm = l / 100;\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;\n const hPrime = h / 60;\n const x = c * (1 - Math.abs((hPrime % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hPrime < 1) {\n [r1, g1, b1] = [c, x, 0];\n } else if (hPrime < 2) {\n [r1, g1, b1] = [x, c, 0];\n } else if (hPrime < 3) {\n [r1, g1, b1] = [0, c, x];\n } else if (hPrime < 4) {\n [r1, g1, b1] = [0, x, c];\n } else if (hPrime < 5) {\n [r1, g1, b1] = [x, 0, c];\n } else {\n [r1, g1, b1] = [c, 0, x];\n }\n const m = lNorm - c / 2;\n return [\n Math.round((r1 + m) * 255),\n Math.round((g1 + m) * 255),\n Math.round((b1 + m) * 255),\n ];\n};\n\nconst blend = (\n fg: [number, number, number],\n bg: [number, number, number],\n alpha: number,\n): [number, number, number] => [\n Math.round(fg[0] * alpha + bg[0] * (1 - alpha)),\n Math.round(fg[1] * alpha + bg[1] * (1 - alpha)),\n Math.round(fg[2] * alpha + bg[2] * (1 - alpha)),\n];\n\nconst toCssColor = (\n c: KdsColorValue,\n bg?: [number, number, number],\n): string => {\n const [r, g, b] =\n c.a === 1 || !bg\n ? hslToRgb(c.h, c.s, c.l)\n : blend(hslToRgb(c.h, c.s, c.l), bg, c.a);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\n/**\n * Build the xterm.js `ITheme` from generated KDS color tokens for the given\n * mode. Only colors with KDS semantic mappings are overridden; all other ANSI\n * slots fall back to the xterm.js defaults.\n */\nexport const buildTheme = (mode: KdsMode): ITheme => {\n const t = color[\"text-and-icon\"];\n const surface = color.surface.default;\n const selectedBg = color.TextHighlight.background.default;\n const bgRgb = hslToRgb(surface[mode].h, surface[mode].s, surface[mode].l);\n\n return {\n background: toCssColor(surface[mode]),\n foreground: toCssColor(t.neutral[mode]),\n cursor: toCssColor(t.neutral[mode]),\n cursorAccent: toCssColor(surface[mode]),\n selectionBackground: toCssColor(selectedBg[mode], bgRgb),\n selectionForeground: toCssColor(t.selected[mode]),\n black: toCssColor(t.neutral[mode]),\n red: toCssColor(t.danger[mode]),\n yellow: toCssColor(t.warning[mode]),\n };\n};\n","import { onMounted, onUnmounted, ref } from \"vue\";\n\n// Only turn on focus highlighting when we hear one of these.\nconst listOfFocusKeys = [\n \"Tab\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \" \",\n \"Enter\",\n];\n\n/**\n * Composable that returns whether focus is currently painted. It turns focus\n * painting on when the document is navigated using key presses, and off again\n * when the document is clicked — so that focus rings only appear for keyboard\n * navigation, not for mouse interactions.\n */\nconst useShouldFocusBePainted = () => {\n const shouldFocusBePainted = ref<boolean>(false);\n\n const turnFocusPaintingOn = (evt: KeyboardEvent) => {\n if (listOfFocusKeys.includes(evt.key)) {\n shouldFocusBePainted.value = true;\n }\n };\n\n const turnFocusPaintingOff = () => {\n shouldFocusBePainted.value = false;\n };\n\n onMounted(() => {\n document.addEventListener(\"keydown\", turnFocusPaintingOn);\n document.addEventListener(\"mousedown\", turnFocusPaintingOff);\n });\n\n onUnmounted(() => {\n document.removeEventListener(\"keydown\", turnFocusPaintingOn);\n document.removeEventListener(\"mousedown\", turnFocusPaintingOff);\n });\n\n return shouldFocusBePainted;\n};\n\nexport default useShouldFocusBePainted;\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, useTemplateRef, watchEffect } from \"vue\";\nimport { useDebounceFn, useResizeObserver } from \"@vueuse/core\";\nimport { FitAddon } from \"@xterm/addon-fit\";\nimport { Unicode11Addon } from \"@xterm/addon-unicode11\";\nimport type { ITerminalInitOnlyOptions, ITerminalOptions } from \"@xterm/xterm\";\nimport { Terminal } from \"@xterm/xterm\";\nimport \"@xterm/xterm/css/xterm.css\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\nimport { font } from \"@knime/kds-styles/tokens\";\n\nimport type { KdsConsoleEmits, KdsConsoleText } from \"./types\";\nimport { buildTheme } from \"./utils/buildTheme\";\nimport useShouldFocusBePainted from \"./utils/shouldFocusBePainted\";\n\nconst DEBOUNCE_TIME = 300;\n\nconst emit = defineEmits<KdsConsoleEmits>();\n\n// Use the effective, resolved dark state so the terminal theme follows\n// 'system' (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\nconst codeFont = font.base.code.small;\n\nconst options: ITerminalOptions & ITerminalInitOnlyOptions = {\n letterSpacing: 0,\n allowProposedApi: true,\n fontSize: codeFont.fontSize.value,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n convertEol: true,\n disableStdin: true,\n cursorBlink: false,\n theme: buildTheme(isDark.value ? \"dark\" : \"light\"),\n};\n\nconst term = new Terminal(options);\n\nconst unicode11Addon = new Unicode11Addon();\nterm.loadAddon(unicode11Addon);\nterm.unicode.activeVersion = \"11\";\n\nconst fitAddon = new FitAddon();\nterm.loadAddon(fitAddon);\n\nconst terminalContainer = useTemplateRef<HTMLElement>(\"terminal-container\");\n\nconst updateConsole = useDebounceFn(() => {\n fitAddon.fit();\n}, DEBOUNCE_TIME);\n\nuseResizeObserver(terminalContainer, () => {\n updateConsole();\n});\n\nconst copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n};\n\nterm.attachCustomKeyEventHandler((e) => {\n if ((e.key === \"c\" || e.key === \"C\") && e.ctrlKey) {\n const selection = term.getSelection();\n if (selection) {\n copyToClipboard(selection);\n }\n return false;\n } else if (e.key === \"Tab\") {\n return false;\n } else if (e.key === \"Escape\") {\n term.blur();\n return false;\n }\n return true;\n});\n\nterm.onWriteParsed(() => term.scrollToBottom());\n\nwatchEffect(() => {\n term.options.theme = buildTheme(isDark.value ? \"dark\" : \"light\");\n});\n\nconst format = (text: KdsConsoleText) => {\n if (\"error\" in text) {\n return `\\x1b[31m[ERROR] ${text.error}\\x1b[0m`;\n } else if (\"warning\" in text) {\n return `\\x1b[33m[WARNING] ${text.warning}\\x1b[0m`;\n } else {\n return text.text;\n }\n};\n\nonMounted(() => {\n term.open(terminalContainer.value as HTMLElement);\n emit(\"console-created\", {\n write: (text) => term.write(format(text)),\n writeln: (text) => term.writeln(format(text)),\n clear: () => term.reset(),\n });\n const listener = term.onLineFeed(() => {\n fitAddon.fit();\n listener.dispose();\n });\n});\n\nonUnmounted(() => {\n term?.dispose();\n});\n\nconst paintFocus = useShouldFocusBePainted();\n</script>\n\n<template>\n <div\n ref=\"terminal-container\"\n class=\"terminal\"\n :class=\"{ 'focus-painted': paintFocus }\"\n />\n</template>\n\n<style scoped>\n.terminal {\n height: 100%;\n overflow: hidden;\n border-radius: var(--kds-border-radius-container-0-12x);\n\n /* Only paint a focus ring when the user navigated to the terminal with the\n keyboard (mouse focus doesn't need the extra ring). */\n &.focus-painted:focus-within {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, useTemplateRef, watchEffect } from \"vue\";\nimport { useDebounceFn, useResizeObserver } from \"@vueuse/core\";\nimport { FitAddon } from \"@xterm/addon-fit\";\nimport { Unicode11Addon } from \"@xterm/addon-unicode11\";\nimport type { ITerminalInitOnlyOptions, ITerminalOptions } from \"@xterm/xterm\";\nimport { Terminal } from \"@xterm/xterm\";\nimport \"@xterm/xterm/css/xterm.css\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\nimport { font } from \"@knime/kds-styles/tokens\";\n\nimport type { KdsConsoleEmits, KdsConsoleText } from \"./types\";\nimport { buildTheme } from \"./utils/buildTheme\";\nimport useShouldFocusBePainted from \"./utils/shouldFocusBePainted\";\n\nconst DEBOUNCE_TIME = 300;\n\nconst emit = defineEmits<KdsConsoleEmits>();\n\n// Use the effective, resolved dark state so the terminal theme follows\n// 'system' (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\nconst codeFont = font.base.code.small;\n\nconst options: ITerminalOptions & ITerminalInitOnlyOptions = {\n letterSpacing: 0,\n allowProposedApi: true,\n fontSize: codeFont.fontSize.value,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n convertEol: true,\n disableStdin: true,\n cursorBlink: false,\n theme: buildTheme(isDark.value ? \"dark\" : \"light\"),\n};\n\nconst term = new Terminal(options);\n\nconst unicode11Addon = new Unicode11Addon();\nterm.loadAddon(unicode11Addon);\nterm.unicode.activeVersion = \"11\";\n\nconst fitAddon = new FitAddon();\nterm.loadAddon(fitAddon);\n\nconst terminalContainer = useTemplateRef<HTMLElement>(\"terminal-container\");\n\nconst updateConsole = useDebounceFn(() => {\n fitAddon.fit();\n}, DEBOUNCE_TIME);\n\nuseResizeObserver(terminalContainer, () => {\n updateConsole();\n});\n\nconst copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n};\n\nterm.attachCustomKeyEventHandler((e) => {\n if ((e.key === \"c\" || e.key === \"C\") && e.ctrlKey) {\n const selection = term.getSelection();\n if (selection) {\n copyToClipboard(selection);\n }\n return false;\n } else if (e.key === \"Tab\") {\n return false;\n } else if (e.key === \"Escape\") {\n term.blur();\n return false;\n }\n return true;\n});\n\nterm.onWriteParsed(() => term.scrollToBottom());\n\nwatchEffect(() => {\n term.options.theme = buildTheme(isDark.value ? \"dark\" : \"light\");\n});\n\nconst format = (text: KdsConsoleText) => {\n if (\"error\" in text) {\n return `\\x1b[31m[ERROR] ${text.error}\\x1b[0m`;\n } else if (\"warning\" in text) {\n return `\\x1b[33m[WARNING] ${text.warning}\\x1b[0m`;\n } else {\n return text.text;\n }\n};\n\nonMounted(() => {\n term.open(terminalContainer.value as HTMLElement);\n emit(\"console-created\", {\n write: (text) => term.write(format(text)),\n writeln: (text) => term.writeln(format(text)),\n clear: () => term.reset(),\n });\n const listener = term.onLineFeed(() => {\n fitAddon.fit();\n listener.dispose();\n });\n});\n\nonUnmounted(() => {\n term?.dispose();\n});\n\nconst paintFocus = useShouldFocusBePainted();\n</script>\n\n<template>\n <div\n ref=\"terminal-container\"\n class=\"terminal\"\n :class=\"{ 'focus-painted': paintFocus }\"\n />\n</template>\n\n<style scoped>\n.terminal {\n height: 100%;\n overflow: hidden;\n border-radius: var(--kds-border-radius-container-0-12x);\n\n /* Only paint a focus ring when the user navigated to the terminal with the\n keyboard (mouse focus doesn't need the extra ring). */\n &.focus-painted:focus-within {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n</style>\n"],"mappings":";;;;;;;;AAAA,IAAa,qBAAqB;CAChC,SAAS;CACT,OAAO;CACP,SAAS;AACX;AAEA,IAAa,sBAAsB,OAAO,OAAO,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECkCnE,MAAM,OAAO;EAqBb,MAAM,gBAAgB,eAAe,gBAAgB;EAGrD,MAAM,kBAAkB,MAAM;EAE9B,SAAa;;AAEX,wBAAwB,cAAc,MACxC,CAAC;;uBAIC,mBAkGM,OAAA,EAlGA,OAAK,eAAA,CAAA,mBAAA,EAAA,MAAwB,QAAA,KAAI,CAAA,CAAA,EAAA,GAAA,CACrC,mBAsFM,OAAA,EAtFA,OAAK,eAAA;IAAA;IAAa,QAAA;IAAK;KAAA,SAAa,QAAA;KAAkB,WAAE,QAAA;IAAS;GAAA,CAAA,EAAA,GAAA;KACzD,QAAA,cAAA,UAAA,GAAZ,mBAwEM,OAxEN,YAwEM,CAvEJ,mBAmCM,OAnCN,YAmCM;KAhCJ,mBAA6D,QAA7D,YAA6D,gBAAtC,QAAA,iBAAiB,QAAA,WAAW,GAAA,CAAA;KACvC,QAAA,aAAQ,QAAA,UAAA,GAApB,mBAA+D,QAA/D,YAA6C,aAAW,KAAA,mBAAA,IAAA,IAAA;KACxD,WAA4B,KAAA,QAAA,gBAAA,CAAA,GAAA,KAAA,GAAA,IAAA;KACZ,QAAA,kBAAkB,KAAA,KAAA,UAAA,GAAlC,mBA4BW,UAAA,EAAA,KAAA,EAAA,GAAA,CAvBD,QAAA,eAAe,KAAA,KAAa,QAAA,iBAAiB,KAAA,KAAA,UAAA,GADrD,mBAUW,UAAA,EAAA,KAAA,EAAA,GAAA,CAPT,mBAGO,QAHP,YAGO,CAFL,mBAAkD,QAAlD,YAA0B,MAAC,gBAAG,QAAA,UAAU,GAAA,CAAA,GACxC,mBAAsD,QAAtD,YAA4B,MAAC,gBAAG,QAAA,YAAY,GAAA,CAAA,CAAA,CAAA,GAE9C,mBAEO,QAFP,YAEO,gBADF,QAAA,UAAU,IAAG,gBAAW,gBAAG,QAAA,YAAY,IAAG,mBAC/C,CAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,IAAA,IAAA,GAEF,YAYE,MAAA,SAAA,GAZF,WAYE,EAAA,WAXqC,QAAA,YAAA,qBAAA,qBAAA,GAAA;MAKpC,iBAAa,CAAG,QAAA;MAChB,iBAAe,MAAA,eAAA;MACf,gBAAc,QAAA,YAAS,iBAAA;MACxB,MAAK;MACL,SAAQ;MACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,iBAAA;;;;;;QAIlB,mBAkCM,OAlCN,YAkCM,EAAA,UAAA,IAAA,GAjCJ,mBAsBW,UAAA,MAAA,WArBiB,QAAA,gBAAlB,QAAQ,UAAK;8EACE,QAAA,GAAA,CAGf,OAAO,SAAI,YAAA,UAAA,GADnB,YAKE,MAAA,SAAA,GALF,WAKE;;;QAHQ,OAAO,OAAK;MACpB,MAAK;MACJ,SAAO,OAAO;mCAGJ,OAAO,SAAI,kBAAA,UAAA,GADxB,YAKE,MAAA,eAAA,GALF,WAKE;;;QAHQ,OAAO,OAAK;MACpB,MAAK;MACJ,uBAAoB,OAAO;+CAGjB,OAAO,SAAI,gBAAA,UAAA,GADxB,YAKE,MAAA,aAAA,GALF,WAKE;;;QAHQ,OAAO,OAAK;MACpB,MAAK;MACJ,aAAY,OAAO;;eAIhB,QAAA,YAAA,UAAA,GADR,YASE,MAAA,iBAAA,GATF,WASE,EAAA,KAAA,EAAA,GAAA,EAAA,WAPqB,QAAA,oBAAmB,GAAA;KACvC,gBAAc,QAAA,SAAM,cAAA;KACpB,OAAO,QAAA,SAAM,YAAA;KACd,MAAK;KACL,SAAQ;KACR,SAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,MAAA;;mBAMlB,mBAME,OAAA;KAJC,IAAI,MAAA,eAAA;KACL,KAAI;KACJ,OAAM;KACL,OAAK,eAAE,QAAA,aAAU,EAAA,QAAa,QAAA,WAAU,IAAK,KAAA,CAAS;yCAJ9C,QAAA,SAAS,CAAA,CAAA;IAMTA,KAAAA,OAAO,SAAA,gBAAA,UAAA,GAAlB,mBAEM,OAFN,aAEM,CADJ,WAAsB,KAAA,QAAA,UAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,GAAA,GAAA,IAAA,CAAA,CAAA,OAAA,CADW,QAAA,SAAS,CAAA,CAAA,IAAA,mBAAA,IAAA,IAAA;UAO9C,YAME,MAAA,UAAA,GAAA;IALC,IAAI,QAAA;IACJ,YAAU,QAAA;IACV,2BAAyB,QAAA;IACzB,OAAO,QAAA,UAAU,MAAA,kBAAA,CAAkB,CAAC;IACpC,SAAS,QAAA,UAAU,MAAA,kBAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AErK7C,IAAa,QAAQ;CACjB,SAAS;EACL,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,MAAM,EACF,SAAS;EACL,OAAO;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAI,GAAG;EAAE;EACjC,MAAM;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAM,GAAG;EAAE;EAClC,KAAK;GACD,OAAO;GACP,UAAU;EACd;CACJ,EACJ;CACA,YAAY;EACR,SAAS;GACL,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACpC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAK;IACrC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,gBAAgB;GACZ,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAI;IACzC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAI;IACvC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,SAAS;GACL,SAAS;IACL,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC/C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC7C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC/C,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC9C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,gBAAgB;GACZ,SAAS;IACL,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC/C,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC9C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC/C,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC9C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,UAAU;GACN,SAAS;IACL,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC5C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC5C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAI,GAAG;KAAM,GAAG;IAAK;IAC1C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,iBAAiB;GACb,SAAS;IACL,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAO,GAAG;KAAI,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAI,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,QAAQ;GACJ,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACrC,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC9C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC5C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC1C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,eAAe;GACX,SAAS;IACL,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAI;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAI;IAC3C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,OAAO;GACH,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,UAAU;GACN,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAK;IACtC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAK;IACrC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,SAAS;IACL,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC/C,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAQ,GAAG;IAAE;IAC9C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAO,GAAG;IAAE;IAC9C,MAAM;KAAE,GAAG;KAAQ,GAAG;KAAQ,GAAG;KAAO,GAAG;IAAE;IAC7C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,gBAAgB,EACZ,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ,EACJ;EACA,aAAa;GACT,SAAS;IACL,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,qBAAqB;EACjB,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,cAAc;GACV,OAAO;IAAE,GAAG;IAAQ,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC/C,MAAM;IAAE,GAAG;IAAQ,GAAG;IAAO,GAAG;IAAO,GAAG;GAAE;GAC5C,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAQ,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC/C,MAAM;IAAE,GAAG;IAAQ,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC9C,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACrC,MAAM;IAAE,GAAG;IAAQ,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC9C,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAQ,GAAG;IAAO,GAAG;GAAE;GAC7C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAQ,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC/C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAQ,GAAG;IAAQ,GAAG;GAAE;GAC7C,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,iBAAiB;EACb,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,oBAAoB;GAChB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,oBAAoB;GAChB,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,qBAAqB;GACjB,OAAO;IAAE,GAAG;IAAK,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,oBAAoB;GAChB,OAAO;IAAE,GAAG;IAAI,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,mBAAmB;GACf,OAAO;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACrC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,oBAAoB;GAChB,OAAO;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,qBAAqB;GACjB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,QAAQ;EACJ,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAI;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAI;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAI;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,mBAAmB;GACf,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,eAAe;GACX,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,wBAAwB;GACpB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAI;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,sBAAsB;GAClB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAK;GACnC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,uBAAuB;GACnB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAK;GACnC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,OAAO;EACH,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,YAAY;GACR,OAAO;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAI;GAC3C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAI;GAC3C,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,SAAS,EACL,SAAS;EACL,OAAO;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAM,GAAG;EAAI;EACrC,MAAM;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAM,GAAG;EAAI;EACpC,KAAK;GACD,OAAO;GACP,UAAU;EACd;CACJ,EACJ;CACA,OAAO;EACH,MAAM;GACF,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAI,GAAG;KAAM,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,QAAQ;GACJ,UAAU;IACN,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAG,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACpC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,SAAS;IACL,OAAO;KAAE,GAAG;KAAI,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,aAAa;GACT,MAAM;IACF,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAI;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,MAAM;IACF,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAI;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAI;IACrC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAI;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAK,GAAG;IAAE;IAClC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG,GAAG;IAAE;IAC/B,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,mBAAmB;IACf,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,SAAS;GACL,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,MAAM;GACF,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,aAAa;IACT,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,cAAc;IACV,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,iBAAiB;IACb,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,uBAAuB;EACnB,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAI,GAAG;GAAE;GACrC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAI,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,YAAY;GACR,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,cAAc;GACV,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,eAAe;GACX,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAI,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,eAAe;GACX,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,eAAe;GACX,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAI,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,MAAM;EACF,MAAM;GACF,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,oBAAoB;GAChB,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,aAAa;EACT,cAAc;GACV,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,kBAAkB;GACd,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,YAAY;GACR,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACtC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAI,GAAG;GAAE;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAI,GAAG;GAAE;GACrC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAI,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAG,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,WAAW;GACP,OAAO;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,OAAO;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAI,GAAG;IAAI,GAAG;IAAI,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,OAAO;EACH,OAAO;GACH,OAAO;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,gBAAgB;GACZ,OAAO;IAAE,GAAG;IAAK,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAK,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACtC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,kBAAkB;GACd,OAAO;IAAE,GAAG;IAAI,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACvC,MAAM;IAAE,GAAG;IAAM,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAI,GAAG;IAAM,GAAG;GAAE;GACvC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,kBAAkB;GACd,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAK,GAAG;IAAM,GAAG;GAAE;GACxC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,mBAAmB;GACf,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,mBAAmB;GACf,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,YAAY;GACR,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,WAAW;EACP,MAAM;GACF,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,iBAAiB;GACb,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,YAAY;GACR,OAAO;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GAC1C,MAAM;IAAE,GAAG;IAAO,GAAG;IAAM,GAAG;IAAM,GAAG;GAAE;GACzC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,WAAW;EACP,KAAK;GACD,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACtC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAK;GACrC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACpC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,eAAe;EACX,YAAY;GACR,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,iBAAiB;GACb,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,QAAQ,EACJ,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAI;GACrC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAI;GAClC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ,EACJ;CACJ;CACA,aAAa,EACT,YAAY,EACR,SAAS;EACL,OAAO;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAI,GAAG;EAAE;EACjC,MAAM;GAAE,GAAG;GAAG,GAAG;GAAG,GAAG;GAAI,GAAG;EAAE;EAChC,KAAK;GACD,OAAO;GACP,UAAU;EACd;CACJ,EACJ,EACJ;CACA,cAAc;EACV,MAAM;GACF,SAAS;IACL,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,MAAM;GACF,IAAI;IACA,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,KAAK;IACD,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,UAAU;IACN,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IACjC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;IAAE;IAChC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,gBAAgB;EACZ,UAAU;GACN,WAAW;IACP,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,WAAW;IACP,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,OAAO;GACH,WAAW;IACP,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC7C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAK;IAC5C,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,WAAW;IACP,OAAO;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAK;IACtC,MAAM;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAM,GAAG;IAAK;IACrC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,SAAS;EACL,YAAY,EACR,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAM,GAAG;GAAE;GACnC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ,EACJ;EACA,iBAAiB,EACb,SAAS;GACL,OAAO;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GACjC,MAAM;IAAE,GAAG;IAAG,GAAG;IAAG,GAAG;IAAI,GAAG;GAAE;GAChC,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ,EACJ;CACJ;CACA,eAAe,EACX,YAAY,EACR,SAAS;EACL,OAAO;GAAE,GAAG;GAAO,GAAG;GAAM,GAAG;GAAM,GAAG;EAAI;EAC5C,MAAM;GAAE,GAAG;GAAO,GAAG;GAAM,GAAG;GAAM,GAAG;EAAI;EAC3C,KAAK;GACD,OAAO;GACP,UAAU;EACd;CACJ,EACJ,EACJ;CACA,QAAQ;EACJ,YAAY;GACR,KAAK;IACD,OAAO;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAK,GAAG;KAAM,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAM,GAAG;KAAK,GAAG;KAAI,GAAG;IAAE;IACtC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAK,GAAG;KAAI,GAAG;IAAE;IACrC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,MAAM;IACF,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,MAAM;IACF,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACvC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAG,GAAG;KAAQ,GAAG;IAAE;IACtC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,iBAAiB;GACb,KAAK;IACD,OAAO;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAK,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAO,GAAG;KAAI,GAAG;KAAM,GAAG;IAAE;IACxC,MAAM;KAAE,GAAG;KAAO,GAAG;KAAI,GAAG;KAAM,GAAG;IAAE;IACvC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,MAAM;IACF,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,MAAM;IACF,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IAC1C,MAAM;KAAE,GAAG;KAAO,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,YAAY;IACR,OAAO;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACzC,MAAM;KAAE,GAAG;KAAM,GAAG;KAAM,GAAG;KAAM,GAAG;IAAE;IACxC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,OAAO;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IACnC,MAAM;KAAE,GAAG;KAAI,GAAG;KAAI,GAAG;KAAI,GAAG;IAAE;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;AACJ;;;;;;;ACj5DA,IAAa,OAAO;CAChB,MAAM;EACF,SAAS;GACL,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,OAAO;GACH,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,iBAAiB;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,MAAM;GACF,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,WAAW;IACX,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,uBAAuB;IACnB,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,WAAW;IACX,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,iBAAiB;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,SAAS;GACL,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAG,MAAM;IAAK;IACjC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,aAAa;GACT,iBAAiB;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,WAAW;IACX,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,iBAAiB;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,gBAAgB;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;EACA,MAAM;GACF,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,YAAY;IACZ,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,UAAU;EACN,YAAY;GACR,UAAU;IACN,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,IAAI;KACA,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,aAAa;KACT,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;GACJ;GACA,MAAM;IACF,OAAO;KACH,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,gBAAgB;KACZ,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,WAAW;KACX,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,gBAAgB;KACZ,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;IACA,uBAAuB;KACnB,YAAY;KACZ,YAAY;KACZ,UAAU;MAAE,OAAO;MAAI,MAAM;KAAK;KAClC,YAAY;KACZ,WAAW;KACX,KAAK;MACD,OAAO;MACP,UAAU;KACd;IACJ;GACJ;EACJ;EACA,MAAM;GACF,MAAM;IACF,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,OAAO;IACH,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAI,MAAM;IAAK;IAClC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;GACA,QAAQ;IACJ,YAAY;IACZ,YAAY;IACZ,UAAU;KAAE,OAAO;KAAG,MAAM;IAAK;IACjC,KAAK;KACD,OAAO;KACP,UAAU;IACd;GACJ;EACJ;CACJ;CACA,SAAS;EACL,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,IAAI;GACA,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,MAAM;GACF,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,cAAc;GACV,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;CACA,OAAO;EACH,OAAO;GACH,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,UAAU;GACN,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,aAAa;GACT,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,cAAc;GACV,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,QAAQ;GACJ,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,SAAS;GACL,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;EACA,OAAO;GACH,YAAY;GACZ,YAAY;GACZ,UAAU;IAAE,OAAO;IAAI,MAAM;GAAK;GAClC,YAAY;GACZ,KAAK;IACD,OAAO;IACP,UAAU;GACd;EACJ;CACJ;AACJ;;;AC9rBA,IAAa,WAAW,KAAK,KAAK,KAAK;;;;AAKvC,IAAa,wBAAwB;CACnC,iBAAiB;CACjB,SAAS,EAAE,SAAS,MAAM;CAC1B,sBAAsB;CACtB,qBAAqB;CACrB,YAAY,IAAI,SAAS,WAAW;CACpC,YAAY,GAAG,SAAS;CACxB,UAAU,SAAS,SAAS;CAG5B,sBAAsB;CAGtB,WAAW,EAAE,yBAAyB,MAAM;CAK5C,sBAAsB;AACxB;AAGA,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;AACjC,IAAa,kBAAkB,WAC7B,SAAS,oBAAoB;;;;;;;;;AAU/B,IAAa,qCAAkD;CAC7D,MAAM,OAAO,SAAS,cAAc,KAAK;CACzC,KAAK,UAAU,IAAI,eAAe;CAClC,SAAS,KAAK,YAAY,IAAI;CAC9B,OAAO;AACT;;;;;;AAOA,IAAa,yBAAyB,mBAAuC;CAC3E,IAAI,gBAAgB;CACpB,MAAM,eAAe,UAAmB;EACtC,IAAI,kBAAkB,OAAO;GAC3B,gBAAgB;GAChB,eAAe,cAAc,EAAE,cAAc,MAAM,CAAC;EACtD;CACF;CAGA,MAAM,sBAAsB;EAC1B,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;CACV;CACA,eAAe,WAAW,UAAU;EAClC,IAAI,MAAM,YAAY,QAAQ,QAC5B,YAAY,IAAI;OACX,IAAI,CAAC,oBAAoB,SAAS,MAAM,OAAO,GACpD,YAAY,KAAK;CAErB,CAAC;CACD,eAAe,2BAA2B;EACxC,YAAY,KAAK;CACnB,CAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEA,IAAa,6BAA6B;CACxC,IAAI,UAAU,aAAa,CAAC,CAAC,MAAM,aAAa,SAAS,OAAO,MAAM,GACpE;CAGF,UAAU,SAAS,EAAE,IAAI,OAAO,CAAC;CAEjC,UAAU,yBAAyB,QAAQ;EACzC,UAAU,EACR,aAAa,IACf;EACA,UAAU,CACR,CAAC,KAAK,GAAG,GACT,CAAC,KAAK,GAAG,CACX;EACA,kBAAkB;GAChB;IAAE,MAAM;IAAK,OAAO;GAAI;GACxB;IAAE,MAAM;IAAK,OAAO;GAAI;GACxB;IAAE,MAAM;IAAO,OAAO;GAAM;GAC5B;IAAE,MAAM;IAAO,OAAO;GAAM;GAC5B;IAAE,MAAM;IAAK,OAAO;IAAK,OAAO,CAAC,QAAQ;GAAE;GAC3C;IAAE,MAAM;IAAK,OAAO;IAAK,OAAO,CAAC,QAAQ;GAAE;EAC7C;EACA,kBAAkB;GAChB;IAAE,MAAM;IAAK,OAAO;GAAI;GACxB;IAAE,MAAM;IAAK,OAAO;GAAI;GACxB;IAAE,MAAM;IAAK,OAAO;GAAI;GACxB;IAAE,MAAM;IAAK,OAAO;GAAI;EAC1B;CACF,CAAC;CAED,UAAU,yBAAyB,QAAQ;EACzC,cAAc;EAEd,UAAU,CACR;GAAE,MAAM;GAAK,OAAO;GAAK,OAAO;EAAmB,GACnD;GAAE,MAAM;GAAK,OAAO;GAAK,OAAO;EAAkB,CACpD;EAEA,SACE;EAEF,WAAW;GAET,MAAM;IACJ,EAAE,SAAS,cAAc;IACzB,EAAE,SAAS,WAAW;IAGtB,CACE,iEACA;KAAC;KAAqB;KAAW;IAAmB,CACtD;IAGA,CACE,6DACA;KAAC;KAAqB;KAAW;IAAmB,CACtD;IAGA,CAAC,4BAA4B;KAAC;KAAQ;KAAS;IAAW,CAAC;IAE3D,CAAC,qBAAqB;KAAC;KAAQ;KAAS;IAAW,CAAC;IAEpD,CAAC,qBAAqB;KAAC;KAAQ;KAAS;IAAW,CAAC;IAGpD,CAAC,6BAA6B;KAAC;KAAQ;KAAS;IAAW,CAAC;IAE5D,CAAC,sBAAsB;KAAC;KAAQ;KAAS;IAAW,CAAC;IAErD,CAAC,sBAAsB;KAAC;KAAQ;KAAS;IAAW,CAAC;IAGrD;KAAC;KAAM;KAAa;IAAc;IAClC;KAAC;KAAM;KAAa;IAAQ;IAG5B,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;IACvB,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;IAGvB,CAAC,QAAQ,WAAW;GACtB;GAGA,aAAa;IACX,EAAE,SAAS,cAAc;IAGzB,EAAE,SAAS,WAAW;IACtB;KAAC;KAAM;KAAa;IAAM;IAC1B,CAAC,KAAK,WAAW;IAGjB,CAAC,4BAA4B;KAAC;KAAQ;KAAS;IAAW,CAAC;IAC3D,CAAC,qBAAqB;KAAC;KAAQ;KAAS;IAAW,CAAC;IACpD,CAAC,qBAAqB;KAAC;KAAQ;KAAS;IAAW,CAAC;IACpD,CAAC,6BAA6B;KAAC;KAAQ;KAAS;IAAW,CAAC;IAC5D,CAAC,sBAAsB;KAAC;KAAQ;KAAS;IAAW,CAAC;IACrD,CAAC,sBAAsB;KAAC;KAAQ;KAAS;IAAW,CAAC;IAGrD;KAAC;KAAM;KAAa;IAAc;IAClC;KAAC;KAAM;KAAa;IAAQ;IAC5B,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;IACvB,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;GACzB;GAGA,OAAO;IACL,EAAE,SAAS,cAAc;IACzB,EAAE,SAAS,WAAW;IACtB;KAAC;KAAM;KAAa;IAAM;IAC1B,CAAC,KAAK,WAAW;IAGjB;KAAC;KAAM;KAAa;IAAc;IAClC;KAAC;KAAM;KAAa;IAAQ;IAE5B,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;IACvB,EAAE,SAAS,WAAW;IACtB,EAAE,SAAS,YAAY;GACzB;GAGA,YAAY,CAAC,CAAC,cAAc,OAAO,CAAC;GAEpC,SAAS,CAAC,CAAC,QAAQ,SAAS,CAAC;GAE7B,UAAU,CAAC,CAAC,mCAAmC,SAAS,CAAC;GAEzD,UAAU;IACR,CACE,yEACA,QACF;IACA,CAAC,qBAAqB,QAAQ;IAC9B,CAAC,gCAAgC,QAAQ;GAC3C;GAEA,SAAS;IACP,CAAC,8BAA8B,YAAY;IAC3C,CAAC,kBAAkB,cAAc;IACjC,CAAC,gBAAgB,eAAe;IAChC,CAAC,qCAAqC,cAAc;IACpD,CAAC,+CAA+C,cAAc;IAC9D,CAAC,kCAAkC,cAAc;IACjD,CAAC,iBAAiB,QAAQ;GAC5B;GAEA,SAAS;IACP;KAAC;KAAO;KAAU;IAAoB;IACtC;KAAC;KAAO;KAAU;IAAsB;IACxC;KAAC;KAAK;KAAU;IAAe;IAC/B;KAAC;KAAK;KAAU;IAAiB;GACnC;GAGA,gBAAgB;IAId;KAAC;KAAY;KAAkB;IAAM;IACrC,CAAC,WAAW,QAAQ;IACpB,CAAC,YAAY,eAAe;IAC5B,CAAC,OAAO,uBAAuB;IAC/B;KAAC;KAAK;KAAU;IAAM;GACxB;GAEA,qBAAqB;IACnB;KAAC;KAAO;KAAU;IAAM;IACxB,CAAC,WAAW,QAAQ;IACpB,CAAC,YAAY,eAAe;IAC5B,CAAC,OAAO,uBAAuB;IAC/B,CAAC,KAAK,QAAQ;GAChB;GAEA,kBAAkB;IAEhB;KAAC;KAAU;KAAkB;IAAM;IACnC,CAAC,SAAS,QAAQ;IAClB;KAAC;KAAK;KAAU;IAAM;GACxB;GAEA,uBAAuB;IACrB;KAAC;KAAO;KAAU;IAAM;IACxB,CAAC,SAAS,QAAQ;IAClB,CAAC,KAAK,QAAQ;GAChB;EACF;CACF,CAAC;AACH;;;ACtNA,IAAM,sBAAsB;AAE5B,IAAI,yBAAyB;;;;;;;;;;;;;AAc7B,IAAM,yCAAyC;CAC7C,IAAI,0BAA0B,CAAC,SAAS,OACtC;CAEF,yBAAyB;CACzB,SAAS,MACN,KAAK,SAAS,IAAI,OAAO,mBAAmB,CAAC,CAC7C,YAAY,CAAC,CAAC,CAAC,CACf,WAAW;EACV,OAAO,eAAe;CACxB,CAAC;AACL;AAKA,IAAa,+BAA+B;CAM1C,qBAAqB;CAKrB,iCAAiC;CAEjC,IAAI,KAAK,mBACP;CAEF,KAAK,oBAAoB,EACvB,WAAW,OAAO,WAAmB,UAAkB;EACrD,IAAI,UAAU,QAAQ;GACpB,MAAM,EAAE,SAAS,eACf,MAAM,OAAO;GACf,OAAO,IAAI,WAAW;EACxB;EACA,MAAM,EAAE,SAAS,iBACf,MAAM,OAAO;EACf,OAAO,IAAI,aAAa;CAC1B,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvCA,uBAAuB;EAkBvB,MAAM,aAAa,SAAmB,SAAA,YAAgB;EAiBtD,MAAM,YAAY,MAAM;EAExB,MAAM,iBAAiB,eAAe,kBAAkB;EACxD,IAAI;EAMJ,IAAI;EAGJ,MAAM,kBAAkB,IAAI,KAAK;EAEjC,MAAM,qBAAqB,eAAe,gBAAgB,SAAS,QAAA,WAAW;EAE9E,MAAM,cAAc,eAAe,QAAA,iBAAiB,QAAA,SAAS,YAAY,CAAC;EAM1E,MAAM,kBAAkB,eAEpB,GAAG,YAAY,MAAM,cAAc,QAAA,WAAW,gBAAgB,GAAG,gEAErE;EAOA,MAAM,gBAAgB,eACd,QAAA,YAAY,KAAA,KAAa,QAAA,YAAY,KAAA,CAC7C;EAEA,MAAM,aAAa,IAAA,EAAuB;EAC1C,MAAM,mBAAmB,IAAI,CAAC;EAC9B,MAAM,eAAe,eAAe;GAClC,IAAI,cAAc,OAChB;GAEF,MAAM,QAAQ,KAAK,IAAI,QAAA,WAAW,GAAG,CAAC;GACtC,MAAM,MAAM,QAAA,WAAW;GACvB,MAAM,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,OAAO,iBAAiB,KAAK,CAAC;GAClE,OAAO,GAAG,WAAW,QAAQ,OAAA,EAAqB;EACpD,CAAC;EAID,MAAM,EAAE,WAAW,eAAe;EAMlC,MAAM,8BACJ,eAAe,OAAO,iBAAiB,CAAC,EAAE,cAAc,oBAAkB;EAK5E,MAAM,4BAA4B;GAChC,MAAM,QAAQ,sBAAsB;GACpC,IAAI,CAAC,OACH;GAEF,IAAI,QAAA,SACF,MAAM,aAAa,oBAAoB,SAAS;QAEhD,MAAM,gBAAgB,kBAAkB;GAE1C,IAAI,QAAA,UAAU,mBAAmB,OAC/B,MAAM,aAAa,gBAAgB,MAAM;QAEzC,MAAM,gBAAgB,cAAc;GAItC,IAAI,QAAA,aACF,MAAM,aAAa,gBAAgB,MAAM;QAEzC,MAAM,gBAAgB,cAAc;EAExC;EAEA,MAAM;SAAO,QAAA;SAAe,QAAA;SAAa,QAAA;EAAW,GAAG,mBAAmB;EAG1E,MAAM,EAAE,MAAM,WAAW,aAAa,EAAE,cAAc,IAAK,CAAC;EAC5D,MAAM,sBAAsB,eAC1B,OAAO,QACH,UAAU,YAAY,MAAM,iBAC5B,QAAQ,YAAY,MAAM,cAChC;EACA,MAAM,wBAAwB;GAG5B,KAAK,gBAAgB,SAAS,CAAC,EAAE,SAAS,KAAK,EAAE;EACnD;EAEA,gBAAgB;GACd,MAAM,YAAY,eAAe,OAAO,iBAAiB;GACzD,IAAI,CAAC,WACH;GAEF,yBAAyB,6BAA6B;GAEtD,iBAAiB,OAAO,OAAO,WAAW;IACxC,GAAG;IACH,OAAO,WAAW;IAClB,UAAO,QAAA;IACP,oBAAoB,QAAA,gBAAA,IAA+C;IACnE;IACA,UAAO,QAAA;IACP,OAAO,eAAe,OAAO,KAAK;IAClC,WAAW,gBAAgB;GAC7B,CAAC;GAED,oBAAoB;GAEpB,WAAW,QAAQ,eAAe,UAAU,OAAO,aAAa,UAAU;GAC1E,iBAAiB,QAAQ,eAAe,SAAS,CAAC,EAAE,aAAa,KAAK;GAEtE,eAAe,8BAA8B;IAC3C,MAAM,QAAQ,gBAAgB,SAAS,CAAC,EAAE,SAAS,KAAK;IACxD,iBAAiB,QAAQ,gBAAgB,SAAS,CAAC,EAAE,aAAa,KAAK;IACvE,IAAI,UAAU,WAAW,OACvB,WAAW,QAAQ;GAEvB,CAAC;GAED,sBAAsB,cAAc;GACpC,eAAe,2BAA2B;IACxC,gBAAgB,QAAQ;GAC1B,CAAC;GACD,eAAe,0BAA0B;IACvC,gBAAgB,QAAQ;GAC1B,CAAC;EACH,CAAC;EAED,MAAM,SAAS,SAAS;GACtB,IAAI,gBACF,eAAe,cAAc,EAAE,OAAO,eAAe,IAAI,EAAE,CAAC;EAEhE,CAAC;EAED,YACQ,QAAA,WACL,eAAe;GACd,gBAAgB,cAAc,EAAE,UAAU,WAAW,CAAC;EACxD,CACF;EAEA,MAAM,kBAAkB,cAAc;GACpC,gBAAgB,cAAc,EAAE,UAAU,CAAC;EAC7C,CAAC;EAED,YACQ,QAAA,gBACL,YAAY;GACX,gBAAgB,cAAc,EAC5B,oBAAoB,UAAA,IAAyC,EAC/D,CAAC;EACH,CACF;EAEA,YACQ,QAAA,WACL,gBAAgB;GACf,MAAM,QAAQ,gBAAgB,SAAS;GACvC,IAAI,OACF,OAAO,iBAAiB,OAAO,WAAW;EAE9C,CACF;EAKA,MAAM,aAAa,aAAa;GAC9B,MAAM,QAAQ,gBAAgB,SAAS;GACvC,IAAI,SAAS,aAAa,MAAM,SAAS,GAAG;IAC1C,MAAM,iBAAiB;IACvB,MAAM,mBACJ,CAAC,GACD,CAAC;KAAE,OAAO,MAAM,kBAAkB;KAAG,MAAM,YAAY;IAAG,CAAC,SACrD,IACR;GACF;EACF,CAAC;EAED,kBAAkB;GAChB,gBAAgB,QAAQ;GACxB,wBAAwB,OAAO;EACjC,CAAC;EAED,SAAa;;AAEX,iBAAiB,eACnB,CAAC;;uBAIC,YAwBiB,wBAAA;IAvBf,KAAI;IACH,gBAAc,YAAA;IACd,eAAa,MAAA,SAAA;IACb,eAAa,QAAA;IACb,OAAO,QAAA;IACP,aAAW,QAAA;IACX,YAAU,QAAA;IACV,2BAAyB,QAAA;IACzB,UAAU,QAAA;IACV,QAAQ,MAAA,MAAA;IACR,0BAAwB,oBAAA;IACxB,kBAAgB,QAAA;IAChB,wBAAsB,mBAAA;IACtB,MAAM,cAAA;IACN,eAAa,aAAA;IACb,QAAM;6BAESC,KAAAA,OAAO,SAAA;UAAS;sBACR,CAAtB,WAAsB,KAAA,QAAA,QAAA,CAAA,CAAA;;eAERA,KAAAA,OAAO,eAAA;UAAe;sBACR,CAA5B,WAA4B,KAAA,QAAA,cAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;AE9MlC,IAAM,gBACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA3DF,uBAAuB;;EAoBvB,MAAM,aAAa,SAAmB,SAAA,YAAgB;;;;;;;EAQtD,MAAM,YAAY,SAAoB,SAAC,WAA+B;EAItE,MAAM,YAAY,MAAM;EAExB,MAAM,iBAAiB,eAAe,kBAAkB;EACxD,IAAI;EACJ,IAAI;EACJ,IAAI;EAMJ,IAAI;EAGJ,MAAM,oBAAoB,IAAI,KAAK;EACnC,MAAM,oBAAoB,IAAI,KAAK;EACnC,MAAM,kBAAkB,eAChB,kBAAkB,SAAS,kBAAkB,KACrD;EAEA,MAAM,cAAc,eAAe,QAAA,iBAAiB,QAAA,SAAS,YAAY,CAAC;EAQ1E,MAAM,oBAAoB,eAEtB,GAAG,YAAY,MAAM,kDACnB,eAEN;EACA,MAAM,oBAAoB,eAEtB,GAAG,YAAY,MAAM,qCAClB,QAAA,WAAW,gBAAgB,GAAG,IAAI,eACzC;EAOA,MAAM,gBAAgB,eACd,QAAA,YAAY,KAAA,KAAa,QAAA,YAAY,KAAA,CAC7C;EAEA,MAAM,aAAa,IAAA,EAAuB;EAM1C,MAAM,mBAAmB,IAAI,CAAC;EAC9B,MAAM,+BAA+B;GACnC,iBAAiB,QAAQ,KAAK,IAC5B,eAAe,aAAa,KAAK,GACjC,eAAe,aAAa,KAAK,CACnC;EACF;EACA,MAAM,eAAe,eAAe;GAClC,IAAI,cAAc,OAChB;GAEF,MAAM,QAAQ,KAAK,IAAI,QAAA,WAAW,GAAG,CAAC;GACtC,MAAM,MAAM,QAAA,WAAW;GACvB,MAAM,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,OAAO,iBAAiB,KAAK,CAAC;GAClE,OAAO,GAAG,WAAW,QAAQ,OAAA,EAAqB;EACpD,CAAC;EAID,MAAM,cAAc,eACZ,QAAA,kBAAkB,KAAA,KAAa,CAAC,QAAA,cAAc,UAAU,KAChE;EAKA,MAAM,iBAAiB,IAAY;EACnC,MAAM,mBAAmB,IAAY;EACrC,MAAM,2BAA2B;GAC/B,MAAM,cAAc,oBAAoB,eAAe;GACvD,IAAI,CAAC,aACH;GAEF,IAAI,QAAQ;GACZ,IAAI,UAAU;GACd,KAAK,MAAM,UAAU,aAAa;IAGhC,IAAI,OAAO,wBAAwB,GACjC,SACE,OAAO,wBAAwB,OAAO,0BAA0B;IAEpE,IAAI,OAAO,wBAAwB,GACjC,WACE,OAAO,wBAAwB,OAAO,0BAA0B;GAEtE;GACA,eAAe,QAAQ;GACvB,iBAAiB,QAAQ;EAC3B;EAIA,MAAM,EAAE,WAAW,eAAe;EAQlC,MAAM,6BAAoE;GACxE,mBAAmB,kBAAkB;GACrC,mBAAmB,kBAAkB;EACvC;EAMA,MAAM,2BAA2B,UAAqC,CAAC,MAAM;GAC3E,oBAAoB,cAAc;IAAE,GAAG;IAAS,GAAG,oBAAoB;GAAE,CAAC;EAC5E;EAMA,MAAM,gCACJ,oBACI,kBAAkB,CAAA,CACnB,WAAW,CAAA,EACV,cAAc,oBAAkB;EAKtC,MAAM,4BAA4B;GAChC,MAAM,QAAQ,wBAAwB;GACtC,IAAI,CAAC,OACH;GAEF,IAAI,QAAA,SACF,MAAM,aAAa,oBAAoB,SAAS;QAEhD,MAAM,gBAAgB,kBAAkB;GAE1C,IAAI,QAAA,UAAU,mBAAmB,OAC/B,MAAM,aAAa,gBAAgB,MAAM;QAEzC,MAAM,gBAAgB,cAAc;EAExC;EAEA,MAAM,OAAO,QAAA,eAAe,QAAA,KAAK,GAAG,mBAAmB;EAEvD,gBAAgB;GACd,MAAM,YAAY,eAAe,OAAO,iBAAiB;GACzD,IAAI,CAAC,WACH;GAGF,gBAAgB,OAAO,YAAY,QAAA,UAAU,QAAA,QAAQ;GACrD,gBAAgB,OAAO,YAAY,WAAW,OAAO,QAAA,QAAQ;GAE7D,yBAAyB,6BAA6B;GAEtD,qBAAqB,OAAO,iBAAiB,WAAW;IACtD,GAAG;IACH;IACA,kBAAkB,QAAA;IAClB,qBAAqB,QAAA;IAGrB,kBAAkB;IAClB,UAAO,QAAA;IACP,OAAO,eAAe,OAAO,KAAK;GACpC,CAAC;GACD,mBAAmB,SAAS;IAC1B,UAAU;IACV,UAAU;GACZ,CAAC;GACD,mBAAmB,cAAc,oBAAoB,CAAC;GAEtD,oBAAoB;GAEpB,mBAAmB,gBAAgB,kBAAkB;GAErD,MAAM,iBAAiB,mBAAmB,kBAAkB;GAC5D,MAAM,iBAAiB,mBAAmB,kBAAkB;GAE5D,WAAW,QAAQ,eAAe,UAAU,OAAO,aAAa,UAAU;GAC1E,uBAAuB;GAEvB,cAAc,mBAAmB,sBAAsB;GACvD,cAAc,yBAAyB;IACrC,MAAM,QAAQ,eAAe,SAAS,KAAK;IAC3C,uBAAuB;IACvB,IAAI,UAAU,WAAW,OACvB,WAAW,QAAQ;GAEvB,CAAC;GAED,KAAK,MAAM,cAAc,CAAC,gBAAgB,cAAc,GACtD,sBAAsB,UAAU;GAElC,eAAe,2BAA2B;IACxC,kBAAkB,QAAQ;GAC5B,CAAC;GACD,eAAe,0BAA0B;IACvC,kBAAkB,QAAQ;GAC5B,CAAC;GACD,eAAe,2BAA2B;IACxC,kBAAkB,QAAQ;GAC5B,CAAC;GACD,eAAe,0BAA0B;IACvC,kBAAkB,QAAQ;GAC5B,CAAC;EACH,CAAC;EAED,MAAM,SAAS,SAAS;GACtB,IAAI,oBACF,OAAO,SAAS,eAAe,IAAI,CAAC;EAExC,CAAC;EAED,YACQ,QAAA,WACL,eAAe;GACd,wBAAwB,EAAE,UAAU,WAAW,CAAC;EAClD,CACF;EAEA,MAAM,yBAAyB;GAC7B,wBAAwB;EAC1B,CAAC;EAED,YACQ,QAAA,aACL,qBAAqB;GACpB,wBAAwB,EAAE,iBAAiB,CAAC;EAC9C,CACF;EAEA,YACQ,QAAA,gBACL,wBAAwB;GACvB,wBAAwB,EAAE,oBAAoB,CAAC;EACjD,CACF;EAEA,YACQ,QAAA,WACL,gBAAgB;GACf,KAAK,MAAM,SAAS,CAAC,eAAe,aAAa,GAC/C,IAAI,OACF,OAAO,iBAAiB,OAAO,WAAW;EAGhD,CACF;EAIA,YACQ,QAAA,WACL,gBAAgB;GACf,IAAI,iBAAiB,gBAAgB,cAAc,SAAS,GAC1D,cAAc,SAAS,WAAW;EAEtC,CACF;EAKA,MAAM,aAAa,aAAa;GAC9B,IAAI,iBAAiB,aAAa,cAAc,SAAS,GAAG;IAC1D,cAAc,iBAAiB;IAC/B,cAAc,mBACZ,CAAC,GACD,CAAC;KAAE,OAAO,cAAc,kBAAkB;KAAG,MAAM,YAAY;IAAG,CAAC,SAC7D,IACR;GACF;EACF,CAAC;EAED,kBAAkB;GAChB,oBAAoB,QAAQ;GAG5B,eAAe,QAAQ;GACvB,eAAe,QAAQ;GACvB,wBAAwB,OAAO;EACjC,CAAC;EAED,SAAa;;AAEX,iBAAiB,mBACnB,CAAC;;uBAIC,YAmBE,wBAAA;IAlBA,KAAI;IACH,gBAAc,YAAA;IACd,eAAa,MAAA,SAAA;IACb,eAAa,QAAA;IACb,OAAO,QAAA;IACP,aAAW,QAAA;IACX,YAAU,QAAA;IACV,2BAAyB,QAAA;IACzB,UAAU;IACV,kBAAgB,QAAA;IAChB,wBAAsB,gBAAA;IACtB,MAAM,cAAA;IACN,eAAa,aAAA;IACb,kBAAgB,QAAA;IAChB,eAAa,eAAA;IACb,iBAAe,iBAAA;IACf,WAAW,YAAA;IACX,mBAAgB,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS,CAAI,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEhXpC,IAAM,YACJ,GACA,GACA,MAC6B;CAC7B,MAAM,QAAQ,IAAI;CAClB,MAAM,QAAQ,IAAI;CAClB,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK;CAC1C,MAAM,SAAS,IAAI;CACnB,MAAM,IAAI,KAAK,IAAI,KAAK,IAAK,SAAS,IAAK,CAAC;CAC5C,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,SAAS,GACX,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;MAClB,IAAI,SAAS,GAClB,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;MAClB,IAAI,SAAS,GAClB,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;MAClB,IAAI,SAAS,GAClB,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;MAClB,IAAI,SAAS,GAClB,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;MAEvB,CAAC,IAAI,IAAI,MAAM;EAAC;EAAG;EAAG;CAAC;CAEzB,MAAM,IAAI,QAAQ,IAAI;CACtB,OAAO;EACL,KAAK,OAAO,KAAK,KAAK,GAAG;EACzB,KAAK,OAAO,KAAK,KAAK,GAAG;EACzB,KAAK,OAAO,KAAK,KAAK,GAAG;CAC3B;AACF;AAEA,IAAM,SACJ,IACA,IACA,UAC6B;CAC7B,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,MAAM,IAAI,MAAM;CAC9C,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,MAAM,IAAI,MAAM;CAC9C,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,MAAM,IAAI,MAAM;AAChD;AAEA,IAAM,cACJ,GACA,OACW;CACX,MAAM,CAAC,GAAG,GAAG,KACX,EAAE,MAAM,KAAK,CAAC,KACV,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IACtB,MAAM,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;CAC5C,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9B;;;;;;AAOA,IAAa,cAAc,SAA0B;CACnD,MAAM,IAAI,MAAM;CAChB,MAAM,UAAU,MAAM,QAAQ;CAC9B,MAAM,aAAa,MAAM,cAAc,WAAW;CAClD,MAAM,QAAQ,SAAS,QAAQ,KAAK,CAAC,GAAG,QAAQ,KAAK,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC;CAExE,OAAO;EACL,YAAY,WAAW,QAAQ,KAAK;EACpC,YAAY,WAAW,EAAE,QAAQ,KAAK;EACtC,QAAQ,WAAW,EAAE,QAAQ,KAAK;EAClC,cAAc,WAAW,QAAQ,KAAK;EACtC,qBAAqB,WAAW,WAAW,OAAO,KAAK;EACvD,qBAAqB,WAAW,EAAE,SAAS,KAAK;EAChD,OAAO,WAAW,EAAE,QAAQ,KAAK;EACjC,KAAK,WAAW,EAAE,OAAO,KAAK;EAC9B,QAAQ,WAAW,EAAE,QAAQ,KAAK;CACpC;AACF;;;AC5FA,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;;AAQA,IAAM,gCAAgC;CACpC,MAAM,uBAAuB,IAAa,KAAK;CAE/C,MAAM,uBAAuB,QAAuB;EAClD,IAAI,gBAAgB,SAAS,IAAI,GAAG,GAClC,qBAAqB,QAAQ;CAEjC;CAEA,MAAM,6BAA6B;EACjC,qBAAqB,QAAQ;CAC/B;CAEA,gBAAgB;EACd,SAAS,iBAAiB,WAAW,mBAAmB;EACxD,SAAS,iBAAiB,aAAa,oBAAoB;CAC7D,CAAC;CAED,kBAAkB;EAChB,SAAS,oBAAoB,WAAW,mBAAmB;EAC3D,SAAS,oBAAoB,aAAa,oBAAoB;CAChE,CAAC;CAED,OAAO;AACT;;;AC3BA,IAAM,gBAAgB;;;;;;;EAEtB,MAAM,OAAO;EAIb,MAAM,EAAE,WAAW,eAAe;EAElC,MAAM,WAAW,KAAK,KAAK,KAAK;EAahC,MAAM,OAAO,IAAI,SAAS;GAVxB,eAAe;GACf,kBAAkB;GAClB,UAAU,SAAS,SAAS;GAC5B,YAAY,IAAI,SAAS,WAAW;GACpC,YAAY;GACZ,cAAc;GACd,aAAa;GACb,OAAO,WAAW,OAAO,QAAQ,SAAS,OAAO;EAGzB,CAAO;EAEjC,MAAM,iBAAiB,IAAI,eAAe;EAC1C,KAAK,UAAU,cAAc;EAC7B,KAAK,QAAQ,gBAAgB;EAE7B,MAAM,WAAW,IAAI,SAAS;EAC9B,KAAK,UAAU,QAAQ;EAEvB,MAAM,oBAAoB,eAA4B,oBAAoB;EAE1E,MAAM,gBAAgB,oBAAoB;GACxC,SAAS,IAAI;EACf,GAAG,aAAa;EAEhB,kBAAkB,yBAAyB;GACzC,cAAc;EAChB,CAAC;EAED,MAAM,mBAAmB,SAAiB;GACxC,UAAU,UAAU,UAAU,IAAI;EACpC;EAEA,KAAK,6BAA6B,MAAM;GACtC,KAAK,EAAE,QAAQ,OAAO,EAAE,QAAQ,QAAQ,EAAE,SAAS;IACjD,MAAM,YAAY,KAAK,aAAa;IACpC,IAAI,WACF,gBAAgB,SAAS;IAE3B,OAAO;GACT,OAAO,IAAI,EAAE,QAAQ,OACnB,OAAO;QACF,IAAI,EAAE,QAAQ,UAAU;IAC7B,KAAK,KAAK;IACV,OAAO;GACT;GACA,OAAO;EACT,CAAC;EAED,KAAK,oBAAoB,KAAK,eAAe,CAAC;EAE9C,kBAAkB;GAChB,KAAK,QAAQ,QAAQ,WAAW,OAAO,QAAQ,SAAS,OAAO;EACjE,CAAC;EAED,MAAM,UAAU,SAAyB;GACvC,IAAI,WAAW,MACb,OAAO,mBAAmB,KAAK,MAAM;QAChC,IAAI,aAAa,MACtB,OAAO,qBAAqB,KAAK,QAAQ;QAEzC,OAAO,KAAK;EAEhB;EAEA,gBAAgB;GACd,KAAK,KAAK,kBAAkB,KAAoB;GAChD,KAAK,mBAAmB;IACtB,QAAQ,SAAS,KAAK,MAAM,OAAO,IAAI,CAAC;IACxC,UAAU,SAAS,KAAK,QAAQ,OAAO,IAAI,CAAC;IAC5C,aAAa,KAAK,MAAM;GAC1B,CAAC;GACD,MAAM,WAAW,KAAK,iBAAiB;IACrC,SAAS,IAAI;IACb,SAAS,QAAQ;GACnB,CAAC;EACH,CAAC;EAED,kBAAkB;GAChB,MAAM,QAAQ;EAChB,CAAC;EAED,MAAM,aAAa,wBAAwB;;uBAIzC,mBAIE,OAAA;IAHA,KAAI;IACJ,OAAK,eAAA,CAAC,YAAU,EAAA,iBACW,MAAA,UAAA,EAAU,CAAA,CAAA"}
1
+ {"version":3,"file":"index.js","names":["$slots","$slots"],"sources":["../src/CodeEditor/enums.ts","../src/_helper/BaseCodeEditor.vue","../src/_helper/BaseCodeEditor.vue","../../styles/dist/tokens/ts/color.js","../../styles/dist/tokens/ts/font.js","../src/_helper/monacoCommon.ts","../src/CodeEditor/tomlLanguage.ts","../src/CodeEditor/monacoEnvironment.ts","../src/CodeEditor/KdsCodeEditor.vue","../src/CodeEditor/KdsCodeEditor.vue","../src/CodeDiffEditor/KdsCodeDiffEditor.vue","../src/CodeDiffEditor/KdsCodeDiffEditor.vue","../src/Console/utils/buildTheme.ts","../src/Console/utils/shouldFocusBePainted.ts","../src/Console/KdsConsole.vue","../src/Console/KdsConsole.vue"],"sourcesContent":["export const kdsCodeEditorState = {\n DEFAULT: \"default\",\n ERROR: \"error\",\n WARNING: \"warning\",\n} as const;\n\nexport const kdsCodeEditorStates = Object.values(kdsCodeEditorState);\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef } from \"vue\";\n\nimport {\n KdsButton,\n KdsMenuButton,\n KdsProgressButton,\n KdsSubText,\n KdsToggleButton,\n} from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\n\nimport type { BaseCodeEditorProps } from \"./types\";\n\n// Internal base component shared by KdsCodeEditor and KdsCodeDiffEditor: the\n// header (label, read-only hint, action buttons, copy button), the code\n// container Monaco mounts into, the state / focus styling, the optional\n// footer, and the sub-text below.\nconst {\n headerLabel,\n subTextId,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n copied = false,\n copyButtonAriaLabel = \"\",\n editorActions = undefined,\n showFocusHighlight = false,\n fill = false,\n codeHeight = undefined,\n changeSummary = undefined,\n addedLines = undefined,\n removedLines = undefined,\n collapsed = false,\n} = defineProps<BaseCodeEditorProps>();\n\nconst emit = defineEmits<{\n /** The built-in copy button was clicked. */\n copy: [];\n /** The collapse toggle in the change-summary header was clicked. */\n collapsedToggle: [];\n}>();\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to `headerLabel` — e.g.\n * the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\nconst codeContainer = useTemplateRef(\"code-container\");\n\n// Links the collapse toggle to the code area via `aria-controls`.\nconst codeContainerId = useId();\n\ndefineExpose({\n /** The element Monaco should be mounted into. */\n getCodeContainer: () => codeContainer.value,\n});\n</script>\n\n<template>\n <div :class=\"['kds-code-editor', { fill }]\">\n <div :class=\"['editor', state, { focused: showFocusHighlight, collapsed }]\">\n <div v-if=\"!hideHeader\" class=\"header\">\n <div class=\"left-block\">\n <!-- Visual only — the editor's accessible name comes from Monaco's\n `ariaLabel` option (managed by the owning component). -->\n <span class=\"title\">{{ changeSummary ?? headerLabel }}</span>\n <span v-if=\"readOnly === true\" class=\"title\">(Read-only)</span>\n <slot name=\"labelActions\" />\n <template v-if=\"changeSummary !== undefined\">\n <!-- The compact \"+3 -2\" is purely visual (added / removed only\n distinguishable by color and sign); the hidden sibling\n carries the meaning for assistive technology. -->\n <template\n v-if=\"addedLines !== undefined && removedLines !== undefined\"\n >\n <span class=\"change-counts\" aria-hidden=\"true\">\n <span class=\"added-lines\">+{{ addedLines }}</span>\n <span class=\"removed-lines\">-{{ removedLines }}</span>\n </span>\n <span class=\"change-counts-for-screen-readers\">\n {{ addedLines }} added and {{ removedLines }} removed lines\n </span>\n </template>\n <KdsButton\n v-bind=\"{\n ariaLabel: collapsed\n ? 'Expand code diff'\n : 'Collapse code diff',\n }\"\n :aria-expanded=\"!collapsed\"\n :aria-controls=\"codeContainerId\"\n :leading-icon=\"collapsed ? 'chevron-left' : 'chevron-down'\"\n size=\"small\"\n variant=\"transparent\"\n @click=\"emit('collapsedToggle')\"\n />\n </template>\n </div>\n <div class=\"action-buttons\">\n <template\n v-for=\"(action, index) in editorActions\"\n :key=\"`editor-action-${index}`\"\n >\n <KdsButton\n v-if=\"action.type === 'button'\"\n v-bind=\"action.props\"\n size=\"small\"\n @click=\"action.onClick\"\n />\n <KdsToggleButton\n v-else-if=\"action.type === 'toggleButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @update:model-value=\"action.onUpdateModelValue\"\n />\n <KdsMenuButton\n v-else-if=\"action.type === 'menuButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @item-click=\"action.onItemClick\"\n />\n </template>\n <KdsProgressButton\n v-if=\"copyable\"\n v-bind=\"{ ariaLabel: copyButtonAriaLabel }\"\n :leading-icon=\"copied ? 'checkmark' : 'copy'\"\n :state=\"copied ? 'success' : 'default'\"\n size=\"small\"\n variant=\"transparent\"\n tooltip=\"Copy to clipboard\"\n @click=\"emit('copy')\"\n />\n </div>\n </div>\n <!-- `v-show` (not `v-if`): Monaco stays mounted while collapsed so the\n diff (and its line counts) keeps being computed. -->\n <div\n v-show=\"!collapsed\"\n :id=\"codeContainerId\"\n ref=\"code-container\"\n class=\"code\"\n :style=\"codeHeight ? { height: codeHeight } : undefined\"\n />\n <div v-if=\"$slots.footer\" v-show=\"!collapsed\" class=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n <!-- No `v-if` needed: `KdsSubText` renders itself only when `subText` or\n `preserveSubTextSpace` is set (same pattern as the form fields'\n `BaseFormFieldWrapper`). -->\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :error=\"state === kdsCodeEditorState.ERROR\"\n :warning=\"state === kdsCodeEditorState.WARNING\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-code-editor {\n display: flex;\n flex-direction: column;\n\n .editor {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n border-radius: var(--kds-border-radius-container-0-50x);\n\n /* Outline the whole editor while the code area (Monaco) is focused, or\n while the owning component keeps the highlight on without it — header\n buttons keep their own focus ring either way. */\n &.focused {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-75x);\n\n .left-block {\n display: flex;\n flex: 1;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n min-width: 0;\n\n /* Keep the header height constant whether or not the copy / action\n buttons are present (matches the small button height). */\n min-height: var(--kds-dimension-component-height-1-5x);\n }\n\n .action-buttons {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-interactive-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n .change-counts {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n\n /* Together with the left-block gap this makes up the 0-5x gap between\n the summary text and the counts from the design. */\n margin-left: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-interactive-small);\n\n .added-lines {\n color: var(--kds-color-text-and-icon-success);\n }\n\n .removed-lines {\n color: var(--kds-color-text-and-icon-danger);\n }\n }\n\n /* Visually hidden, still announced by screen readers. */\n .change-counts-for-screen-readers {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip-path: inset(50%);\n }\n }\n\n &.error .header {\n background-color: var(--kds-color-background-static-danger-muted);\n }\n\n &.warning .header {\n background-color: var(--kds-color-background-static-warning-muted);\n }\n\n .code {\n width: 100%;\n }\n\n /* Keeps its natural height — in fill mode only the code area grows /\n shrinks with the container. */\n .footer {\n flex-shrink: 0;\n width: 100%;\n }\n }\n\n /* No row bounds set: fill the width and height of the container. */\n &.fill {\n width: 100%;\n height: 100%;\n\n .editor,\n .code {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n /* A collapsed editor keeps its header height instead of stretching. */\n .editor.collapsed {\n flex: 0 0 auto;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef } from \"vue\";\n\nimport {\n KdsButton,\n KdsMenuButton,\n KdsProgressButton,\n KdsSubText,\n KdsToggleButton,\n} from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\n\nimport type { BaseCodeEditorProps } from \"./types\";\n\n// Internal base component shared by KdsCodeEditor and KdsCodeDiffEditor: the\n// header (label, read-only hint, action buttons, copy button), the code\n// container Monaco mounts into, the state / focus styling, the optional\n// footer, and the sub-text below.\nconst {\n headerLabel,\n subTextId,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n copied = false,\n copyButtonAriaLabel = \"\",\n editorActions = undefined,\n showFocusHighlight = false,\n fill = false,\n codeHeight = undefined,\n changeSummary = undefined,\n addedLines = undefined,\n removedLines = undefined,\n collapsed = false,\n} = defineProps<BaseCodeEditorProps>();\n\nconst emit = defineEmits<{\n /** The built-in copy button was clicked. */\n copy: [];\n /** The collapse toggle in the change-summary header was clicked. */\n collapsedToggle: [];\n}>();\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to `headerLabel` — e.g.\n * the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\nconst codeContainer = useTemplateRef(\"code-container\");\n\n// Links the collapse toggle to the code area via `aria-controls`.\nconst codeContainerId = useId();\n\ndefineExpose({\n /** The element Monaco should be mounted into. */\n getCodeContainer: () => codeContainer.value,\n});\n</script>\n\n<template>\n <div :class=\"['kds-code-editor', { fill }]\">\n <div :class=\"['editor', state, { focused: showFocusHighlight, collapsed }]\">\n <div v-if=\"!hideHeader\" class=\"header\">\n <div class=\"left-block\">\n <!-- Visual only — the editor's accessible name comes from Monaco's\n `ariaLabel` option (managed by the owning component). -->\n <span class=\"title\">{{ changeSummary ?? headerLabel }}</span>\n <span v-if=\"readOnly === true\" class=\"title\">(Read-only)</span>\n <slot name=\"labelActions\" />\n <template v-if=\"changeSummary !== undefined\">\n <!-- The compact \"+3 -2\" is purely visual (added / removed only\n distinguishable by color and sign); the hidden sibling\n carries the meaning for assistive technology. -->\n <template\n v-if=\"addedLines !== undefined && removedLines !== undefined\"\n >\n <span class=\"change-counts\" aria-hidden=\"true\">\n <span class=\"added-lines\">+{{ addedLines }}</span>\n <span class=\"removed-lines\">-{{ removedLines }}</span>\n </span>\n <span class=\"change-counts-for-screen-readers\">\n {{ addedLines }} added and {{ removedLines }} removed lines\n </span>\n </template>\n <KdsButton\n v-bind=\"{\n ariaLabel: collapsed\n ? 'Expand code diff'\n : 'Collapse code diff',\n }\"\n :aria-expanded=\"!collapsed\"\n :aria-controls=\"codeContainerId\"\n :leading-icon=\"collapsed ? 'chevron-left' : 'chevron-down'\"\n size=\"small\"\n variant=\"transparent\"\n @click=\"emit('collapsedToggle')\"\n />\n </template>\n </div>\n <div class=\"action-buttons\">\n <template\n v-for=\"(action, index) in editorActions\"\n :key=\"`editor-action-${index}`\"\n >\n <KdsButton\n v-if=\"action.type === 'button'\"\n v-bind=\"action.props\"\n size=\"small\"\n @click=\"action.onClick\"\n />\n <KdsToggleButton\n v-else-if=\"action.type === 'toggleButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @update:model-value=\"action.onUpdateModelValue\"\n />\n <KdsMenuButton\n v-else-if=\"action.type === 'menuButton'\"\n v-bind=\"action.props\"\n size=\"small\"\n @item-click=\"action.onItemClick\"\n />\n </template>\n <KdsProgressButton\n v-if=\"copyable\"\n v-bind=\"{ ariaLabel: copyButtonAriaLabel }\"\n :leading-icon=\"copied ? 'checkmark' : 'copy'\"\n :state=\"copied ? 'success' : 'default'\"\n size=\"small\"\n variant=\"transparent\"\n tooltip=\"Copy to clipboard\"\n @click=\"emit('copy')\"\n />\n </div>\n </div>\n <!-- `v-show` (not `v-if`): Monaco stays mounted while collapsed so the\n diff (and its line counts) keeps being computed. -->\n <div\n v-show=\"!collapsed\"\n :id=\"codeContainerId\"\n ref=\"code-container\"\n class=\"code\"\n :style=\"codeHeight ? { height: codeHeight } : undefined\"\n />\n <div v-if=\"$slots.footer\" v-show=\"!collapsed\" class=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n <!-- No `v-if` needed: `KdsSubText` renders itself only when `subText` or\n `preserveSubTextSpace` is set (same pattern as the form fields'\n `BaseFormFieldWrapper`). -->\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :error=\"state === kdsCodeEditorState.ERROR\"\n :warning=\"state === kdsCodeEditorState.WARNING\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-code-editor {\n display: flex;\n flex-direction: column;\n\n .editor {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n border-radius: var(--kds-border-radius-container-0-50x);\n\n /* Outline the whole editor while the code area (Monaco) is focused, or\n while the owning component keeps the highlight on without it — header\n buttons keep their own focus ring either way. */\n &.focused {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-75x);\n\n .left-block {\n display: flex;\n flex: 1;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n min-width: 0;\n\n /* Keep the header height constant whether or not the copy / action\n buttons are present (matches the small button height). */\n min-height: var(--kds-dimension-component-height-1-5x);\n }\n\n .action-buttons {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-interactive-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n .change-counts {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n\n /* Together with the left-block gap this makes up the 0-5x gap between\n the summary text and the counts from the design. */\n margin-left: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-interactive-small);\n\n .added-lines {\n color: var(--kds-color-text-and-icon-success);\n }\n\n .removed-lines {\n color: var(--kds-color-text-and-icon-danger);\n }\n }\n\n /* Visually hidden, still announced by screen readers. */\n .change-counts-for-screen-readers {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n clip-path: inset(50%);\n }\n }\n\n &.error .header {\n background-color: var(--kds-color-background-static-danger-muted);\n }\n\n &.warning .header {\n background-color: var(--kds-color-background-static-warning-muted);\n }\n\n .code {\n width: 100%;\n }\n\n /* Keeps its natural height — in fill mode only the code area grows /\n shrinks with the container. */\n .footer {\n flex-shrink: 0;\n width: 100%;\n }\n }\n\n /* No row bounds set: fill the width and height of the container. */\n &.fill {\n width: 100%;\n height: 100%;\n\n .editor,\n .code {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n /* A collapsed editor keeps its header height instead of stretching. */\n .editor.collapsed {\n flex: 0 0 auto;\n }\n }\n}\n</style>\n","/**\n * Do not edit directly, this file was auto-generated\n * from the design token sources in src/tokens.\n */\nexport const color = {\n surface: {\n default: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-surface-default)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 94.1, a: 1 },\n dark: { h: 0, s: 0, l: 18.8, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 94.1%), hsl(0, 0%, 18.8%))\",\n variable: \"var(--kds-color-surface-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-surface-subtle)\",\n },\n },\n },\n page: {\n default: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-page-default)\",\n },\n },\n },\n background: {\n neutral: {\n initial: {\n light: { h: 0, s: 0, l: 11.4, a: 0 },\n dark: { h: 0, s: 0, l: 11.4, a: 0 },\n css: {\n value: \"hsl(0 0% 11.4% / 0)\",\n variable: \"var(--kds-color-background-neutral-initial)\",\n },\n },\n hover: {\n light: { h: 0, s: 0, l: 48.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 90.2, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 48.2% / 0.1), hsl(0 0% 90.2% / 0.1))\",\n variable: \"var(--kds-color-background-neutral-hover)\",\n },\n },\n active: {\n light: { h: 0, s: 0, l: 48.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 48.2, a: 0.36 },\n css: {\n value: \"light-dark(hsl(0 0% 48.2% / 0.2), hsl(0 0% 48.2% / 0.36))\",\n variable: \"var(--kds-color-background-neutral-active)\",\n },\n },\n },\n \"neutral-bold\": {\n initial: {\n light: { h: 0, s: 0, l: 72.5, a: 0.4 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0 0% 72.5% / 0.4), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-background-neutral-bold-initial)\",\n },\n },\n hover: {\n light: { h: 210, s: 0, l: 62.977, a: 0.4 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(210 0% 62.977% / 0.4), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-background-neutral-bold-hover)\",\n },\n },\n active: {\n light: { h: 0, s: 0, l: 59.859, a: 0.4 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0 0% 59.859% / 0.4), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-background-neutral-bold-active)\",\n },\n },\n },\n \"neutral-opaque\": {\n initial: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-background-neutral-opaque-initial)\",\n },\n },\n hover: {\n light: { h: 0, s: 0, l: 94.1, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 94.1%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-background-neutral-opaque-hover)\",\n },\n },\n active: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 43, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 43%))\",\n variable: \"var(--kds-color-background-neutral-opaque-active)\",\n },\n },\n },\n primary: {\n initial: {\n light: { h: 168, s: 46.7, l: 85.3, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(168, 46.7%, 85.3%), hsl(169.8, 30.6%, 66.1%))\",\n variable: \"var(--kds-color-background-primary-initial)\",\n },\n },\n hover: {\n light: { h: 167.99, s: 27.818, l: 77.703, a: 1 },\n dark: { h: 169.6, s: 30.517, l: 68.835, a: 1 },\n css: {\n value: \"light-dark(hsl(167.99 27.818% 77.703%), hsl(169.6 30.517% 68.835%))\",\n variable: \"var(--kds-color-background-primary-hover)\",\n },\n },\n active: {\n light: { h: 167.97, s: 18.664, l: 70.242, a: 1 },\n dark: { h: 168.98, s: 30.352, l: 78.334, a: 1 },\n css: {\n value: \"light-dark(hsl(167.97 18.664% 70.242%), hsl(168.98 30.352% 78.334%))\",\n variable: \"var(--kds-color-background-primary-active)\",\n },\n },\n },\n \"primary-bold\": {\n initial: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(174.4, 47.8%, 30.8%))\",\n variable: \"var(--kds-color-background-primary-bold-initial)\",\n },\n },\n hover: {\n light: { h: 175.79, s: 58.284, l: 19.792, a: 1 },\n dark: { h: 173.26, s: 27.023, l: 42.409, a: 1 },\n css: {\n value: \"light-dark(hsl(175.79 58.284% 19.792%), hsl(173.26 27.023% 42.409%))\",\n variable: \"var(--kds-color-background-primary-bold-hover)\",\n },\n },\n active: {\n light: { h: 175.36, s: 48.936, l: 16.164, a: 1 },\n dark: { h: 171.91, s: 19.296, l: 64.061, a: 1 },\n css: {\n value: \"light-dark(hsl(175.36 48.936% 16.164%), hsl(171.91 19.296% 64.061%))\",\n variable: \"var(--kds-color-background-primary-bold-active)\",\n },\n },\n },\n selected: {\n initial: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 0.32 },\n css: {\n value: \"light-dark(hsl(165.6, 67.6%, 92.7%), hsl(176.1 66.7% 22.4% / 0.32))\",\n variable: \"var(--kds-color-background-selected-initial)\",\n },\n },\n hover: {\n light: { h: 168, s: 46.7, l: 85.3, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 0.56 },\n css: {\n value: \"light-dark(hsl(168, 46.7%, 85.3%), hsl(174.4 47.8% 30.8% / 0.56))\",\n variable: \"var(--kds-color-background-selected-hover)\",\n },\n },\n active: {\n light: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 0.72 },\n css: {\n value: \"light-dark(hsl(168.8, 34.4%, 75.5%), hsl(171.8 27% 47.8% / 0.72))\",\n variable: \"var(--kds-color-background-selected-active)\",\n },\n },\n },\n \"selected-bold\": {\n initial: {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-background-selected-bold-initial)\",\n },\n },\n hover: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(174.4, 47.8%, 30.8%))\",\n variable: \"var(--kds-color-background-selected-bold-hover)\",\n },\n },\n active: {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 1 },\n css: {\n value: \"light-dark(hsl(176.7, 82%, 17.5%), hsl(171.8, 27%, 47.8%))\",\n variable: \"var(--kds-color-background-selected-bold-active)\",\n },\n },\n },\n danger: {\n initial: {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 356.76, s: 65.215, l: 15.117, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(356.76 65.215% 15.117%))\",\n variable: \"var(--kds-color-background-danger-initial)\",\n },\n },\n hover: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 348.8, s: 90.9, l: 34.5, a: 0.72 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(348.8 90.9% 34.5% / 0.72))\",\n variable: \"var(--kds-color-background-danger-hover)\",\n },\n },\n active: {\n light: { h: 3.4, s: 100, l: 86.1, a: 1 },\n dark: { h: 353, s: 74.7, l: 44.9, a: 0.72 },\n css: {\n value: \"light-dark(hsl(3.4, 100%, 86.1%), hsl(353 74.7% 44.9% / 0.72))\",\n variable: \"var(--kds-color-background-danger-active)\",\n },\n },\n },\n \"danger-bold\": {\n initial: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-background-danger-bold-initial)\",\n },\n },\n hover: {\n light: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n dark: { h: 353, s: 74.7, l: 44.9, a: 0.8 },\n css: {\n value: \"light-dark(hsl(347.6, 97.1%, 27.3%), hsl(353 74.7% 44.9% / 0.8))\",\n variable: \"var(--kds-color-background-danger-bold-hover)\",\n },\n },\n active: {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 356.3, s: 76.8, l: 54.3, a: 0.8 },\n css: {\n value: \"light-dark(hsl(348, 94.3%, 20.8%), hsl(356.3 76.8% 54.3% / 0.8))\",\n variable: \"var(--kds-color-background-danger-bold-active)\",\n },\n },\n },\n input: {\n initial: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-background-input-initial)\",\n },\n },\n hover: {\n light: { h: 330, s: 0, l: 94.521, a: 1 },\n dark: { h: 330, s: 0, l: 30.187, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 94.521%), hsl(330 0% 30.187%))\",\n variable: \"var(--kds-color-background-input-hover)\",\n },\n },\n active: {\n light: { h: 330, s: 0, l: 85.683, a: 1 },\n dark: { h: 336, s: 0, l: 38.771, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 85.683%), hsl(336 0% 38.771%))\",\n variable: \"var(--kds-color-background-input-active)\",\n },\n },\n },\n disabled: {\n default: {\n light: { h: 0, s: 0, l: 48.2, a: 0.48 },\n dark: { h: 0, s: 0, l: 48.2, a: 0.48 },\n css: {\n value: \"hsl(0 0% 48.2% / 0.48)\",\n variable: \"var(--kds-color-background-disabled-default)\",\n },\n },\n primary: {\n light: { h: 173.91, s: 18.134, l: 40.592, a: 1 },\n dark: { h: 173.91, s: 18.134, l: 40.592, a: 1 },\n css: {\n value: \"hsl(173.91 18.134% 40.592%)\",\n variable: \"var(--kds-color-background-disabled-primary)\",\n },\n },\n danger: {\n light: { h: 1.3489, s: 43.031, l: 37.79, a: 1 },\n dark: { h: 1.3489, s: 43.031, l: 37.79, a: 1 },\n css: {\n value: \"hsl(1.3489 43.031% 37.79%)\",\n variable: \"var(--kds-color-background-disabled-danger)\",\n },\n },\n },\n \"success-bold\": {\n initial: {\n light: { h: 111.3, s: 47.5, l: 31.4, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(111.3, 47.5%, 31.4%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-background-success-bold-initial)\",\n },\n },\n },\n \"info-bold\": {\n initial: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 212.1, s: 78.2, l: 67.6, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(212.1, 78.2%, 67.6%))\",\n variable: \"var(--kds-color-background-info-bold-initial)\",\n },\n },\n hover: {\n light: { h: 208.2, s: 62.9, l: 41.2, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(208.2, 62.9%, 41.2%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-background-info-bold-hover)\",\n },\n },\n active: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-background-info-bold-active)\",\n },\n },\n },\n },\n \"background-static\": {\n info: {\n light: { h: 216.7, s: 100, l: 96.5, a: 1 },\n dark: { h: 210, s: 50, l: 27.5, a: 1 },\n css: {\n value: \"light-dark(hsl(216.7, 100%, 96.5%), hsl(210, 50%, 27.5%))\",\n variable: \"var(--kds-color-background-static-info)\",\n },\n },\n \"info-muted\": {\n light: { h: 216.83, s: 100.14, l: 97.347, a: 1 },\n dark: { h: 211.86, s: 40.97, l: 17.58, a: 1 },\n css: {\n value: \"light-dark(hsl(216.83 100.14% 97.347%), hsl(211.86 40.97% 17.58%))\",\n variable: \"var(--kds-color-background-static-info-muted)\",\n },\n },\n warning: {\n light: { h: 30, s: 95.2, l: 91.8, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"light-dark(hsl(30, 95.2%, 91.8%), hsl(13.1, 66.1%, 23.1%))\",\n variable: \"var(--kds-color-background-static-warning)\",\n },\n },\n \"warning-muted\": {\n light: { h: 29.601, s: 98.108, l: 95.778, a: 1 },\n dark: { h: 14.687, s: 60.252, l: 14.775, a: 1 },\n css: {\n value: \"light-dark(hsl(29.601 98.108% 95.778%), hsl(14.687 60.252% 14.775%))\",\n variable: \"var(--kds-color-background-static-warning-muted)\",\n },\n },\n danger: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-background-static-danger)\",\n },\n },\n \"danger-muted\": {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 356.76, s: 65.215, l: 15.117, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(356.76 65.215% 15.117%))\",\n variable: \"var(--kds-color-background-static-danger-muted)\",\n },\n },\n success: {\n light: { h: 119.4, s: 96.139, l: 93.64, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(119.4 96.139% 93.64%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-background-static-success)\",\n },\n },\n \"success-muted\": {\n light: { h: 125.38, s: 64.795, l: 97.496, a: 1 },\n dark: { h: 128.3, s: 38.542, l: 10.352, a: 1 },\n css: {\n value: \"light-dark(hsl(125.38 64.795% 97.496%), hsl(128.3 38.542% 10.352%))\",\n variable: \"var(--kds-color-background-static-success-muted)\",\n },\n },\n brand: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-background-static-brand)\",\n },\n },\n overlay: {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-background-static-overlay)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-text-and-icon-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-text-and-icon-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-text-and-icon-subtle)\",\n },\n },\n \"neutral-inverted\": {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-text-and-icon-neutral-inverted)\",\n },\n },\n primary: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"hsl(176.1, 66.7%, 22.4%)\",\n variable: \"var(--kds-color-text-and-icon-primary)\",\n },\n },\n \"primary-inverted\": {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n css: {\n value: \"hsl(165.6, 67.6%, 92.7%)\",\n variable: \"var(--kds-color-text-and-icon-primary-inverted)\",\n },\n },\n selected: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(176.1, 66.7%, 22.4%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-text-and-icon-selected)\",\n },\n },\n \"selected-inverted\": {\n light: { h: 165, s: 80, l: 96.1, a: 1 },\n dark: { h: 165, s: 80, l: 96.1, a: 1 },\n css: {\n value: \"hsl(165, 80%, 96.1%)\",\n variable: \"var(--kds-color-text-and-icon-selected-inverted)\",\n },\n },\n warning: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-text-and-icon-warning)\",\n },\n },\n \"warning-inverted\": {\n light: { h: 31, s: 100, l: 82.5, a: 1 },\n dark: { h: 31, s: 100, l: 82.5, a: 1 },\n css: {\n value: \"hsl(31, 100%, 82.5%)\",\n variable: \"var(--kds-color-text-and-icon-warning-inverted)\",\n },\n },\n danger: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-text-and-icon-danger)\",\n },\n },\n \"danger-inverted\": {\n light: { h: 0, s: 100, l: 97.1, a: 1 },\n dark: { h: 1.5, s: 100, l: 92.4, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 100%, 97.1%), hsl(1.5, 100%, 92.4%))\",\n variable: \"var(--kds-color-text-and-icon-danger-inverted)\",\n },\n },\n success: {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-text-and-icon-success)\",\n },\n },\n \"success-inverted\": {\n light: { h: 120, s: 95.3, l: 91.6, a: 1 },\n dark: { h: 120, s: 95.3, l: 91.6, a: 1 },\n css: {\n value: \"hsl(120, 95.3%, 91.6%)\",\n variable: \"var(--kds-color-text-and-icon-success-inverted)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 64%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-text-and-icon-disabled)\",\n },\n },\n \"disabled-inverted\": {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"hsl(0, 0%, 72.5%)\",\n variable: \"var(--kds-color-text-and-icon-disabled-inverted)\",\n },\n },\n info: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-text-and-icon-info)\",\n },\n },\n editor: {\n light: { h: 0, s: 0, l: 11.4, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 11.4%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-text-and-icon-editor)\",\n },\n },\n },\n border: {\n neutral: {\n light: { h: 0, s: 0, l: 10.2, a: 0.4 },\n dark: { h: 0, s: 0, l: 99, a: 0.5 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.4), hsl(0 0% 99% / 0.5))\",\n variable: \"var(--kds-color-border-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 10.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 99, a: 0.2 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.2), hsl(0 0% 99% / 0.2))\",\n variable: \"var(--kds-color-border-muted)\",\n },\n },\n subtle: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-border-subtle)\",\n },\n },\n \"primary-bold\": {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 176.7, s: 82, l: 17.5, a: 1 },\n css: {\n value: \"hsl(176.7, 82%, 17.5%)\",\n variable: \"var(--kds-color-border-primary-bold)\",\n },\n },\n primary: {\n light: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(169.8, 30.6%, 66.1%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-border-primary)\",\n },\n },\n \"selected-bold\": {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 168.8, s: 34.4, l: 75.5, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(168.8, 34.4%, 75.5%))\",\n variable: \"var(--kds-color-border-selected-bold)\",\n },\n },\n selected: {\n light: { h: 171.8, s: 27, l: 47.8, a: 1 },\n dark: { h: 168, s: 46.7, l: 85.3, a: 1 },\n css: {\n value: \"light-dark(hsl(171.8, 27%, 47.8%), hsl(168, 46.7%, 85.3%))\",\n variable: \"var(--kds-color-border-selected)\",\n },\n },\n \"selected-accent\": {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-border-selected-accent)\",\n },\n },\n \"warning-bold\": {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31, s: 100, l: 82.5, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31, 100%, 82.5%))\",\n variable: \"var(--kds-color-border-warning-bold)\",\n },\n },\n warning: {\n light: { h: 30.8, s: 79.3, l: 73.5, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"light-dark(hsl(30.8, 79.3%, 73.5%), hsl(13.1, 66.1%, 23.1%))\",\n variable: \"var(--kds-color-border-warning)\",\n },\n },\n \"danger-bold\": {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-border-danger-bold)\",\n },\n },\n danger: {\n light: { h: 3.4, s: 100, l: 86.1, a: 1 },\n dark: { h: 348, s: 94.3, l: 20.8, a: 1 },\n css: {\n value: \"light-dark(hsl(3.4, 100%, 86.1%), hsl(348, 94.3%, 20.8%))\",\n variable: \"var(--kds-color-border-danger)\",\n },\n },\n \"success-bold\": {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 112, s: 56.5, l: 71.2, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(112, 56.5%, 71.2%))\",\n variable: \"var(--kds-color-border-success-bold)\",\n },\n },\n success: {\n light: { h: 112, s: 56.5, l: 71.2, a: 1 },\n dark: { h: 123.7, s: 46.7, l: 20.6, a: 1 },\n css: {\n value: \"light-dark(hsl(112, 56.5%, 71.2%), hsl(123.7, 46.7%, 20.6%))\",\n variable: \"var(--kds-color-border-success)\",\n },\n },\n \"info-bold\": {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-border-info-bold)\",\n },\n },\n info: {\n light: { h: 214.5, s: 100, l: 84.3, a: 1 },\n dark: { h: 210, s: 50, l: 27.5, a: 1 },\n css: {\n value: \"light-dark(hsl(214.5, 100%, 84.3%), hsl(210, 50%, 27.5%))\",\n variable: \"var(--kds-color-border-info)\",\n },\n },\n transparent: {\n light: { h: 0, s: 0, l: 11.4, a: 0 },\n dark: { h: 0, s: 0, l: 11.4, a: 0 },\n css: {\n value: \"hsl(0 0% 11.4% / 0)\",\n variable: \"var(--kds-color-border-transparent)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-border-disabled)\",\n },\n },\n brand: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-border-brand)\",\n },\n },\n \"neutral-bold-initial\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.4 },\n dark: { h: 0, s: 0, l: 99, a: 0.4 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.4), hsl(0 0% 99% / 0.4))\",\n variable: \"var(--kds-color-border-neutral-bold-initial)\",\n },\n },\n \"neutral-bold-hover\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.64 },\n dark: { h: 0, s: 0, l: 99, a: 0.58 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.64), hsl(0 0% 99% / 0.58))\",\n variable: \"var(--kds-color-border-neutral-bold-hover)\",\n },\n },\n \"neutral-bold-active\": {\n light: { h: 0, s: 0, l: 10.2, a: 0.74 },\n dark: { h: 0, s: 0, l: 99, a: 0.68 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.74), hsl(0 0% 99% / 0.68))\",\n variable: \"var(--kds-color-border-neutral-bold-active)\",\n },\n },\n \"neutral-opaque-initial\": {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 64, a: 1 },\n css: {\n value: \"hsl(0, 0%, 64%)\",\n variable: \"var(--kds-color-border-neutral-opaque-initial)\",\n },\n },\n \"neutral-opaque-hover\": {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-border-neutral-opaque-hover)\",\n },\n },\n \"neutral-opaque-active\": {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-border-neutral-opaque-active)\",\n },\n },\n },\n focus: {\n outline: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-focus-outline)\",\n },\n },\n background: {\n light: { h: 215.7, s: 100, l: 91.8, a: 0.4 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 0.5 },\n css: {\n value: \"light-dark(hsl(215.7 100% 91.8% / 0.4), hsl(209.4 49.5% 20.2% / 0.5))\",\n variable: \"var(--kds-color-focus-background)\",\n },\n },\n },\n blanket: {\n default: {\n light: { h: 0, s: 0, l: 11.4, a: 0.8 },\n dark: { h: 0, s: 0, l: 11.4, a: 0.8 },\n css: {\n value: \"hsl(0 0% 11.4% / 0.8)\",\n variable: \"var(--kds-color-blanket-default)\",\n },\n },\n },\n chart: {\n data: {\n \"series-1\": {\n light: { h: 173.4, s: 37.1, l: 38.6, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(173.4, 37.1%, 38.6%), hsl(169.8, 30.6%, 66.1%))\",\n variable: \"var(--kds-color-chart-data-series-1)\",\n },\n },\n \"series-2\": {\n light: { h: 211.3, s: 67.3, l: 59.2, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(211.3, 67.3%, 59.2%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-chart-data-series-2)\",\n },\n },\n \"series-3\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 2.6, s: 100, l: 72.4, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(2.6, 100%, 72.4%))\",\n variable: \"var(--kds-color-chart-data-series-3)\",\n },\n },\n \"series-4\": {\n light: { h: 0, s: 0, l: 22, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 22%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-data-series-4)\",\n },\n },\n \"series-5\": {\n light: { h: 28, s: 39, l: 50, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(28, 39%, 50%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-chart-data-series-5)\",\n },\n },\n \"series-6\": {\n light: { h: 208.2, s: 62.9, l: 41.2, a: 1 },\n dark: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n css: {\n value: \"light-dark(hsl(208.2, 62.9%, 41.2%), hsl(209.4, 57.3%, 49.6%))\",\n variable: \"var(--kds-color-chart-data-series-6)\",\n },\n },\n \"series-7\": {\n light: { h: 71.1, s: 46.3, l: 32.2, a: 1 },\n dark: { h: 68.6, s: 61, l: 47.3, a: 1 },\n css: {\n value: \"light-dark(hsl(71.1, 46.3%, 32.2%), hsl(68.6, 61.0%, 47.3%))\",\n variable: \"var(--kds-color-chart-data-series-7)\",\n },\n },\n \"series-8\": {\n light: { h: 308.3, s: 31.6, l: 55.3, a: 1 },\n dark: { h: 316.1, s: 40.6, l: 72.9, a: 1 },\n css: {\n value: \"light-dark(hsl(308.3, 31.6%, 55.3%), hsl(316.1, 40.6%, 72.9%))\",\n variable: \"var(--kds-color-chart-data-series-8)\",\n },\n },\n \"series-9\": {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-chart-data-series-9)\",\n },\n },\n track: {\n light: { h: 0, s: 0, l: 94.1, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 94.1%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-chart-data-track)\",\n },\n },\n },\n status: {\n positive: {\n light: { h: 107.4, s: 42.2, l: 44.1, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(107.4, 42.2%, 44.1%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-chart-status-positive)\",\n },\n },\n negative: {\n light: { h: 356.3, s: 76.8, l: 54.3, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(356.3, 76.8%, 54.3%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-chart-status-negative)\",\n },\n },\n warning: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-chart-status-warning)\",\n },\n },\n error: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(3.5, 100%, 79.6%))\",\n variable: \"var(--kds-color-chart-status-error)\",\n },\n },\n },\n scaffolding: {\n axis: {\n light: { h: 0, s: 0, l: 10.2, a: 0.2 },\n dark: { h: 0, s: 0, l: 99, a: 0.2 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.2), hsl(0 0% 99% / 0.2))\",\n variable: \"var(--kds-color-chart-scaffolding-axis)\",\n },\n },\n grid: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-chart-scaffolding-grid)\",\n },\n },\n border: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-chart-scaffolding-border)\",\n },\n },\n segment: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-chart-scaffolding-segment)\",\n },\n },\n surface: {\n light: { h: 0, s: 0, l: 100, a: 1 },\n dark: { h: 0, s: 0, l: 0, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 100%), hsl(0, 0%, 0%))\",\n variable: \"var(--kds-color-chart-scaffolding-surface)\",\n },\n },\n \"tooltip-surface\": {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-chart-scaffolding-tooltip-surface)\",\n },\n },\n },\n control: {\n default: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-control-default)\",\n },\n },\n hover: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-control-hover)\",\n },\n },\n selected: {\n light: { h: 174.4, s: 47.8, l: 30.8, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(174.4, 47.8%, 30.8%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-chart-control-selected)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 64%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-chart-control-disabled)\",\n },\n },\n },\n text: {\n title: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-title)\",\n },\n },\n subtitle: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-subtitle)\",\n },\n },\n \"axis-name\": {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-axis-name)\",\n },\n },\n \"axis-label\": {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 72.5, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 72.5%))\",\n variable: \"var(--kds-color-chart-text-axis-label)\",\n },\n },\n legend: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-legend)\",\n },\n },\n tooltip: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-tooltip)\",\n },\n },\n label: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-chart-text-label)\",\n },\n },\n \"on-fill-dark\": {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"hsl(0, 0%, 15.7%)\",\n variable: \"var(--kds-color-chart-text-on-fill-dark)\",\n },\n },\n \"on-fill-light\": {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 98, a: 1 },\n css: {\n value: \"hsl(0, 0%, 98%)\",\n variable: \"var(--kds-color-chart-text-on-fill-light)\",\n },\n },\n },\n },\n \"nodes-and-variables\": {\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-flow-variable)\",\n },\n },\n loop: {\n light: { h: 187.7, s: 51.7, l: 76.5, a: 1 },\n dark: { h: 187.7, s: 51.7, l: 76.5, a: 1 },\n css: {\n value: \"hsl(187.7, 51.7%, 76.5%)\",\n variable: \"var(--kds-color-nodes-and-variables-loop)\",\n },\n },\n manipulator: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-nodes-and-variables-manipulator)\",\n },\n },\n predictor: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-nodes-and-variables-predictor)\",\n },\n },\n source: {\n light: { h: 30, s: 80.4, l: 60, a: 1 },\n dark: { h: 30, s: 80.4, l: 60, a: 1 },\n css: {\n value: \"hsl(30, 80.4%, 60%)\",\n variable: \"var(--kds-color-nodes-and-variables-source)\",\n },\n },\n visualizer: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-visualizer)\",\n },\n },\n widget: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-widget)\",\n },\n },\n scope: {\n light: { h: 304.6, s: 27.4, l: 46.5, a: 1 },\n dark: { h: 308.3, s: 31.6, l: 55.3, a: 1 },\n css: {\n value: \"light-dark(hsl(304.6, 27.4%, 46.5%), hsl(308.3, 31.6%, 55.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-scope)\",\n },\n },\n learner: {\n light: { h: 67.3, s: 67.8, l: 54.9, a: 1 },\n dark: { h: 65.4, s: 68.5, l: 65.1, a: 1 },\n css: {\n value: \"light-dark(hsl(67.3, 67.8%, 54.9%), hsl(65.4, 68.5%, 65.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-learner)\",\n },\n },\n sink: {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-sink)\",\n },\n },\n container: {\n light: { h: 69.4, s: 53.5, l: 39.6, a: 1 },\n dark: { h: 69.4, s: 53.5, l: 39.6, a: 1 },\n css: {\n value: \"hsl(69.4, 53.5%, 39.6%)\",\n variable: \"var(--kds-color-nodes-and-variables-container)\",\n },\n },\n unknown: {\n light: { h: 353, s: 74.7, l: 44.9, a: 1 },\n dark: { h: 356.3, s: 76.8, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(353, 74.7%, 44.9%), hsl(356.3, 76.8%, 54.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-unknown)\",\n },\n },\n other: {\n light: { h: 29, s: 43, l: 58, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(29, 43%, 58%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-nodes-and-variables-other)\",\n },\n },\n metanode: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-metanode)\",\n },\n },\n metanodeBorder: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-metanode-border)\",\n },\n },\n component: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 43, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 43%))\",\n variable: \"var(--kds-color-nodes-and-variables-component)\",\n },\n },\n specialState: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-special-state)\",\n },\n },\n forbiddenBorder: {\n light: { h: 0, s: 0, l: 18.8, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 18.8%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-nodes-and-variables-forbidden-border)\",\n },\n },\n forbidden: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-forbidden)\",\n },\n },\n warningBorder: {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(31.2, 82.8%, 65.9%))\",\n variable: \"var(--kds-color-nodes-and-variables-warning-border)\",\n },\n },\n warning: {\n light: { h: 31, s: 100, l: 82.5, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(31, 100%, 82.5%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-warning)\",\n },\n },\n errorBorder: {\n light: { h: 348.8, s: 90.9, l: 34.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(348.8, 90.9%, 34.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-nodes-and-variables-error-border)\",\n },\n },\n error: {\n light: { h: 1.5, s: 100, l: 92.4, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(1.5, 100%, 92.4%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-nodes-and-variables-error)\",\n },\n },\n loadingBorder: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-loading-border)\",\n },\n },\n loading: {\n light: { h: 215.7, s: 100, l: 91.8, a: 1 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n css: {\n value: \"light-dark(hsl(215.7, 100%, 91.8%), hsl(209.4, 49.5%, 20.2%))\",\n variable: \"var(--kds-color-nodes-and-variables-loading)\",\n },\n },\n configuration: {\n light: { h: 64.6, s: 68.6, l: 70, a: 1 },\n dark: { h: 69.5, s: 59.5, l: 85.5, a: 1 },\n css: {\n value: \"light-dark(hsl(64.6, 68.6%, 70.0%), hsl(69.5, 59.5%, 85.5%))\",\n variable: \"var(--kds-color-nodes-and-variables-configuration)\",\n },\n },\n quickform: {\n light: { h: 212.1, s: 78.2, l: 67.6, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(212.1, 78.2%, 67.6%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-nodes-and-variables-quickform)\",\n },\n },\n },\n port: {\n data: {\n light: { h: 0, s: 0, l: 11.4, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 11.4%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-port-data)\",\n },\n },\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n css: {\n value: \"hsl(359.6, 84.3%, 62.5%)\",\n variable: \"var(--kds-color-port-flow-variable)\",\n },\n },\n \"neutral-inverted\": {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 12.9, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 12.9%))\",\n variable: \"var(--kds-color-port-neutral-inverted)\",\n },\n },\n },\n annotations: {\n specialNodes: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-annotations-special-nodes)\",\n },\n },\n specialNodesBold: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-annotations-special-nodes-bold)\",\n },\n },\n visualizer: {\n light: { h: 193.1, s: 60.2, l: 43.3, a: 1 },\n dark: { h: 191.3, s: 57.1, l: 54.3, a: 1 },\n css: {\n value: \"light-dark(hsl(193.1, 60.2%, 43.3%), hsl(191.3, 57.1%, 54.3%))\",\n variable: \"var(--kds-color-annotations-visualizer)\",\n },\n },\n loadingBold: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-annotations-loading-bold)\",\n },\n },\n manipulator: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-annotations-manipulator)\",\n },\n },\n source: {\n light: { h: 30, s: 80.4, l: 60, a: 1 },\n dark: { h: 30, s: 80.4, l: 60, a: 1 },\n css: {\n value: \"hsl(30, 80.4%, 60%)\",\n variable: \"var(--kds-color-annotations-source)\",\n },\n },\n sink: {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 0, s: 100, l: 66.1, a: 1 },\n css: {\n value: \"light-dark(hsl(359.6, 84.3%, 62.5%), hsl(0, 100%, 66.1%))\",\n variable: \"var(--kds-color-annotations-sink)\",\n },\n },\n learner: {\n light: { h: 67.3, s: 67.8, l: 54.9, a: 1 },\n dark: { h: 65.4, s: 68.5, l: 65.1, a: 1 },\n css: {\n value: \"light-dark(hsl(67.3, 67.8%, 54.9%), hsl(65.4, 68.5%, 65.1%))\",\n variable: \"var(--kds-color-annotations-learner)\",\n },\n },\n predictor: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(109, 47.2%, 61.4%))\",\n variable: \"var(--kds-color-annotations-predictor)\",\n },\n },\n container: {\n light: { h: 66.5, s: 64.4, l: 80.2, a: 1 },\n dark: { h: 69.5, s: 59.5, l: 85.5, a: 1 },\n css: {\n value: \"light-dark(hsl(66.5, 64.4%, 80.2%), hsl(69.5, 59.5%, 85.5%))\",\n variable: \"var(--kds-color-annotations-container)\",\n },\n },\n \"flow-variable\": {\n light: { h: 173.4, s: 37.1, l: 38.6, a: 1 },\n dark: { h: 171.8, s: 27, l: 47.8, a: 1 },\n css: {\n value: \"light-dark(hsl(173.4, 37.1%, 38.6%), hsl(171.8, 27%, 47.8%))\",\n variable: \"var(--kds-color-annotations-flow-variable)\",\n },\n },\n tealDark: {\n light: { h: 176.7, s: 82, l: 17.5, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"light-dark(hsl(176.7, 82%, 17.5%), hsl(176.1, 66.7%, 22.4%))\",\n variable: \"var(--kds-color-annotations-teal-dark)\",\n },\n },\n other: {\n light: { h: 29, s: 43, l: 58, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"light-dark(hsl(29, 43%, 58%), hsl(30, 47%, 68%))\",\n variable: \"var(--kds-color-annotations-other)\",\n },\n },\n loop: {\n light: { h: 25, s: 30, l: 35, a: 1 },\n dark: { h: 27, s: 35, l: 44, a: 1 },\n css: {\n value: \"light-dark(hsl(25, 30%, 35%), hsl(27, 35%, 44%))\",\n variable: \"var(--kds-color-annotations-loop)\",\n },\n },\n },\n state: {\n error: {\n light: { h: 353, s: 74.7, l: 44.9, a: 1 },\n dark: { h: 347.6, s: 97.1, l: 27.3, a: 1 },\n css: {\n value: \"light-dark(hsl(353, 74.7%, 44.9%), hsl(347.6, 97.1%, 27.3%))\",\n variable: \"var(--kds-color-state-error)\",\n },\n },\n \"error-border\": {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 2.6, s: 100, l: 72.4, a: 1 },\n css: {\n value: \"light-dark(hsl(348, 94.3%, 20.8%), hsl(2.6, 100%, 72.4%))\",\n variable: \"var(--kds-color-state-error-border)\",\n },\n },\n warning: {\n light: { h: 47.6, s: 100, l: 67.6, a: 1 },\n dark: { h: 43.9, s: 100, l: 26.3, a: 1 },\n css: {\n value: \"light-dark(hsl(47.6, 100%, 67.6%), hsl(43.9, 100%, 26.3%))\",\n variable: \"var(--kds-color-state-warning)\",\n },\n },\n \"warning-border\": {\n light: { h: 19, s: 63.1, l: 38.2, a: 1 },\n dark: { h: 49.1, s: 99.1, l: 43.7, a: 1 },\n css: {\n value: \"light-dark(hsl(19, 63.1%, 38.2%), hsl(49.1, 99.1%, 43.7%))\",\n variable: \"var(--kds-color-state-warning-border)\",\n },\n },\n success: {\n light: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n dark: { h: 107.6, s: 46, l: 37.1, a: 1 },\n css: {\n value: \"light-dark(hsl(106.5, 42.6%, 54.9%), hsl(107.6, 46%, 37.1%))\",\n variable: \"var(--kds-color-state-success)\",\n },\n },\n \"success-border\": {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(106.5, 42.6%, 54.9%))\",\n variable: \"var(--kds-color-state-success-border)\",\n },\n },\n loading: {\n light: { h: 208.3, s: 60.5, l: 33.7, a: 1 },\n dark: { h: 214.5, s: 100, l: 84.3, a: 1 },\n css: {\n value: \"light-dark(hsl(208.3, 60.5%, 33.7%), hsl(214.5, 100%, 84.3%))\",\n variable: \"var(--kds-color-state-loading)\",\n },\n },\n inactive: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 11.4, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 99%), hsl(0, 0%, 11.4%))\",\n variable: \"var(--kds-color-state-inactive)\",\n },\n },\n \"inactive-border\": {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-state-inactive-border)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 72.5, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 72.5%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-state-disabled)\",\n },\n },\n \"disabled-border\": {\n light: { h: 0, s: 0, l: 48.2, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 48.2%)\",\n variable: \"var(--kds-color-state-disabled-border)\",\n },\n },\n background: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 32.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 90.2%), hsl(0, 0%, 32.2%))\",\n variable: \"var(--kds-color-state-background)\",\n },\n },\n },\n connector: {\n data: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 48.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 43%), hsl(0, 0%, 48.2%))\",\n variable: \"var(--kds-color-connector-data)\",\n },\n },\n \"flow-variable\": {\n light: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n dark: { h: 359.6, s: 84.3, l: 62.5, a: 1 },\n css: {\n value: \"hsl(359.6, 84.3%, 62.5%)\",\n variable: \"var(--kds-color-connector-flow-variable)\",\n },\n },\n selected: {\n light: { h: 209.4, s: 57.3, l: 49.6, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"light-dark(hsl(209.4, 57.3%, 49.6%), hsl(213.6, 91.6%, 76.7%))\",\n variable: \"var(--kds-color-connector-selected)\",\n },\n },\n highlighted: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-connector-highlighted)\",\n },\n },\n insertable: {\n light: { h: 116.1, s: 46.6, l: 25.7, a: 1 },\n dark: { h: 106.5, s: 42.6, l: 54.9, a: 1 },\n css: {\n value: \"light-dark(hsl(116.1, 46.6%, 25.7%), hsl(106.5, 42.6%, 54.9%))\",\n variable: \"var(--kds-color-connector-insertable)\",\n },\n },\n },\n elevation: {\n top: {\n light: { h: 0, s: 0, l: 72.5, a: 0.32 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.9 },\n css: {\n value: \"light-dark(hsl(0 0% 72.5% / 0.32), hsl(0 0% 10.2% / 0.9))\",\n variable: \"var(--kds-color-elevation-top)\",\n },\n },\n middle: {\n light: { h: 0, s: 0, l: 32.2, a: 0.14 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.94 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.14), hsl(0 0% 10.2% / 0.94))\",\n variable: \"var(--kds-color-elevation-middle)\",\n },\n },\n bottom: {\n light: { h: 0, s: 0, l: 32.2, a: 0.12 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.98 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.12), hsl(0 0% 10.2% / 0.98))\",\n variable: \"var(--kds-color-elevation-bottom)\",\n },\n },\n knob: {\n light: { h: 0, s: 0, l: 32.2, a: 0.5 },\n dark: { h: 0, s: 0, l: 10.2, a: 0.6 },\n css: {\n value: \"light-dark(hsl(0 0% 32.2% / 0.5), hsl(0 0% 10.2% / 0.6))\",\n variable: \"var(--kds-color-elevation-knob)\",\n },\n },\n },\n DesktopHeader: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 10.2, a: 1 },\n dark: { h: 0, s: 0, l: 10.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 10.2%)\",\n variable: \"var(--kds-color-desktop-header-background-default)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-desktop-header-background-muted)\",\n },\n },\n accent: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 15.7, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 98%), hsl(0, 0%, 15.7%))\",\n variable: \"var(--kds-color-desktop-header-background-accent)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-desktop-header-text-and-icon-neutral)\",\n },\n },\n muted: {\n light: { h: 0, s: 0, l: 32.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 32.2%), hsl(0, 0%, 90.2%))\",\n variable: \"var(--kds-color-desktop-header-text-and-icon-muted)\",\n },\n },\n },\n border: {\n default: {\n light: { h: 0, s: 0, l: 10.2, a: 0.1 },\n dark: { h: 0, s: 0, l: 99, a: 0.1 },\n css: {\n value: \"light-dark(hsl(0 0% 10.2% / 0.1), hsl(0 0% 99% / 0.1))\",\n variable: \"var(--kds-color-desktop-header-border-default)\",\n },\n },\n },\n },\n TableHeader: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 99, a: 1 },\n css: {\n value: \"hsl(0, 0%, 99%)\",\n variable: \"var(--kds-color-table-header-background-default)\",\n },\n },\n },\n },\n ToggleSwitch: {\n knob: {\n initial: {\n light: { h: 0, s: 0, l: 99, a: 1 },\n dark: { h: 0, s: 0, l: 99, a: 1 },\n css: {\n value: \"hsl(0, 0%, 99%)\",\n variable: \"var(--kds-color-toggle-switch-knob-initial)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 90.2, a: 1 },\n dark: { h: 0, s: 0, l: 90.2, a: 1 },\n css: {\n value: \"hsl(0, 0%, 90.2%)\",\n variable: \"var(--kds-color-toggle-switch-knob-disabled)\",\n },\n },\n },\n icon: {\n on: {\n light: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n dark: { h: 176.1, s: 66.7, l: 22.4, a: 1 },\n css: {\n value: \"hsl(176.1, 66.7%, 22.4%)\",\n variable: \"var(--kds-color-toggle-switch-icon-on)\",\n },\n },\n off: {\n light: { h: 0, s: 0, l: 43, a: 1 },\n dark: { h: 0, s: 0, l: 43, a: 1 },\n css: {\n value: \"hsl(0, 0%, 43%)\",\n variable: \"var(--kds-color-toggle-switch-icon-off)\",\n },\n },\n disabled: {\n light: { h: 0, s: 0, l: 64, a: 1 },\n dark: { h: 0, s: 0, l: 64, a: 1 },\n css: {\n value: \"hsl(0, 0%, 64%)\",\n variable: \"var(--kds-color-toggle-switch-icon-disabled)\",\n },\n },\n },\n },\n LoadingSpinner: {\n progress: {\n onPrimary: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 1 },\n css: {\n value: \"hsl(165.6 67.6% 92.7%)\",\n variable: \"var(--kds-color-loading-spinner-progress-on-primary)\",\n },\n },\n onSurface: {\n light: { h: 0, s: 0, l: 15.7, a: 1 },\n dark: { h: 0, s: 0, l: 94.1, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 15.7%), hsl(0, 0%, 94.1%))\",\n variable: \"var(--kds-color-loading-spinner-progress-on-surface)\",\n },\n },\n },\n track: {\n onPrimary: {\n light: { h: 165.6, s: 67.6, l: 92.7, a: 0.24 },\n dark: { h: 165.6, s: 67.6, l: 92.7, a: 0.24 },\n css: {\n value: \"hsl(165.6 67.6% 92.7% / 0.24)\",\n variable: \"var(--kds-color-loading-spinner-track-on-primary)\",\n },\n },\n onSurface: {\n light: { h: 0, s: 0, l: 15.7, a: 0.24 },\n dark: { h: 0, s: 0, l: 94.1, a: 0.24 },\n css: {\n value: \"light-dark(hsl(0 0% 15.7% / 0.24), hsl(0 0% 94.1% / 0.24))\",\n variable: \"var(--kds-color-loading-spinner-track-on-surface)\",\n },\n },\n },\n },\n Tooltip: {\n background: {\n default: {\n light: { h: 0, s: 0, l: 12.9, a: 1 },\n dark: { h: 0, s: 0, l: 22, a: 1 },\n css: {\n value: \"light-dark(hsl(0, 0%, 12.9%), hsl(0, 0%, 22%))\",\n variable: \"var(--kds-color-tooltip-background-default)\",\n },\n },\n },\n \"text-and-icon\": {\n neutral: {\n light: { h: 0, s: 0, l: 98, a: 1 },\n dark: { h: 0, s: 0, l: 98, a: 1 },\n css: {\n value: \"hsl(0, 0%, 98%)\",\n variable: \"var(--kds-color-tooltip-text-and-icon-neutral)\",\n },\n },\n },\n },\n TextHighlight: {\n background: {\n default: {\n light: { h: 212.1, s: 78.2, l: 67.6, a: 0.6 },\n dark: { h: 212.1, s: 78.2, l: 67.6, a: 0.6 },\n css: {\n value: \"hsl(212.1 78.2% 67.6% / 0.6)\",\n variable: \"var(--kds-color-text-highlight-background-default)\",\n },\n },\n },\n },\n Avatar: {\n background: {\n red: {\n light: { h: 3.5, s: 100, l: 79.6, a: 1 },\n dark: { h: 3.5, s: 100, l: 79.6, a: 1 },\n css: {\n value: \"hsl(3.5, 100%, 79.6%)\",\n variable: \"var(--kds-color-avatar-background-red)\",\n },\n },\n orange: {\n light: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n dark: { h: 31.2, s: 82.8, l: 65.9, a: 1 },\n css: {\n value: \"hsl(31.2, 82.8%, 65.9%)\",\n variable: \"var(--kds-color-avatar-background-orange)\",\n },\n },\n yellow: {\n light: { h: 50.8, s: 100, l: 50, a: 1 },\n dark: { h: 50.8, s: 100, l: 50, a: 1 },\n css: {\n value: \"hsl(50.8, 100%, 50%)\",\n variable: \"var(--kds-color-avatar-background-yellow)\",\n },\n },\n green: {\n light: { h: 109, s: 47.2, l: 61.4, a: 1 },\n dark: { h: 109, s: 47.2, l: 61.4, a: 1 },\n css: {\n value: \"hsl(109, 47.2%, 61.4%)\",\n variable: \"var(--kds-color-avatar-background-green)\",\n },\n },\n teal: {\n light: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n dark: { h: 169.8, s: 30.6, l: 66.1, a: 1 },\n css: {\n value: \"hsl(169.8, 30.6%, 66.1%)\",\n variable: \"var(--kds-color-avatar-background-teal)\",\n },\n },\n blue: {\n light: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n dark: { h: 213.6, s: 91.6, l: 76.7, a: 1 },\n css: {\n value: \"hsl(213.6, 91.6%, 76.7%)\",\n variable: \"var(--kds-color-avatar-background-blue)\",\n },\n },\n purple: {\n light: { h: 320, s: 44.7, l: 81.6, a: 1 },\n dark: { h: 320, s: 44.7, l: 81.6, a: 1 },\n css: {\n value: \"hsl(320.0, 44.7%, 81.6%)\",\n variable: \"var(--kds-color-avatar-background-purple)\",\n },\n },\n aquamarine: {\n light: { h: 185.8, s: 49.2, l: 87.6, a: 1 },\n dark: { h: 185.8, s: 49.2, l: 87.6, a: 1 },\n css: {\n value: \"hsl(185.8, 49.2%, 87.6%)\",\n variable: \"var(--kds-color-avatar-background-aquamarine)\",\n },\n },\n grassgreen: {\n light: { h: 63.4, s: 68.5, l: 75.1, a: 1 },\n dark: { h: 63.4, s: 68.5, l: 75.1, a: 1 },\n css: {\n value: \"hsl(63.4, 68.5%, 75.1%)\",\n variable: \"var(--kds-color-avatar-background-grassgreen)\",\n },\n },\n brown: {\n light: { h: 30, s: 47, l: 68, a: 1 },\n dark: { h: 30, s: 47, l: 68, a: 1 },\n css: {\n value: \"hsl(30, 47%, 68%)\",\n variable: \"var(--kds-color-avatar-background-brown)\",\n },\n },\n empty: {\n light: { h: 330, s: 0, l: 94.521, a: 1 },\n dark: { h: 330, s: 0, l: 30.187, a: 1 },\n css: {\n value: \"light-dark(hsl(330 0% 94.521%), hsl(330 0% 30.187%))\",\n variable: \"var(--kds-color-avatar-background-empty)\",\n },\n },\n },\n \"text-and-icon\": {\n red: {\n light: { h: 348, s: 94.3, l: 20.8, a: 1 },\n dark: { h: 348, s: 94.3, l: 20.8, a: 1 },\n css: {\n value: \"hsl(348, 94.3%, 20.8%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-red)\",\n },\n },\n orange: {\n light: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n dark: { h: 13.1, s: 66.1, l: 23.1, a: 1 },\n css: {\n value: \"hsl(13.1, 66.1%, 23.1%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-orange)\",\n },\n },\n yellow: {\n light: { h: 44.3, s: 94.2, l: 13.5, a: 1 },\n dark: { h: 44.3, s: 94.2, l: 13.5, a: 1 },\n css: {\n value: \"hsl(44.3, 94.2%, 13.5%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-yellow)\",\n },\n },\n green: {\n light: { h: 132.3, s: 52, l: 14.7, a: 1 },\n dark: { h: 132.3, s: 52, l: 14.7, a: 1 },\n css: {\n value: \"hsl(132.3, 52%, 14.7%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-green)\",\n },\n },\n teal: {\n light: { h: 174.5, s: 93.2, l: 11.6, a: 1 },\n dark: { h: 174.5, s: 93.2, l: 11.6, a: 1 },\n css: {\n value: \"hsl(174.5, 93.2%, 11.6%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-teal)\",\n },\n },\n blue: {\n light: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n dark: { h: 209.4, s: 49.5, l: 20.2, a: 1 },\n css: {\n value: \"hsl(209.4, 49.5%, 20.2%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-blue)\",\n },\n },\n purple: {\n light: { h: 295.5, s: 33.9, l: 23.1, a: 1 },\n dark: { h: 295.5, s: 33.9, l: 23.1, a: 1 },\n css: {\n value: \"hsl(295.5, 33.9%, 23.1%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-purple)\",\n },\n },\n aquamarine: {\n light: { h: 200.9, s: 63.2, l: 26.7, a: 1 },\n dark: { h: 200.9, s: 63.2, l: 26.7, a: 1 },\n css: {\n value: \"hsl(200.9, 63.2%, 26.7%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-aquamarine)\",\n },\n },\n grassgreen: {\n light: { h: 72.2, s: 39.2, l: 24.5, a: 1 },\n dark: { h: 72.2, s: 39.2, l: 24.5, a: 1 },\n css: {\n value: \"hsl(72.2, 39.2%, 24.5%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-grassgreen)\",\n },\n },\n brown: {\n light: { h: 23, s: 27, l: 24, a: 1 },\n dark: { h: 23, s: 27, l: 24, a: 1 },\n css: {\n value: \"hsl(23, 27%, 24%)\",\n variable: \"var(--kds-color-avatar-text-and-icon-brown)\",\n },\n },\n },\n },\n};\n","/**\n * Do not edit directly, this file was auto-generated\n * from the design token sources in src/tokens.\n */\nexport const font = {\n base: {\n display: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 18, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 18px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 20, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 20px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-small)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 24, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 24px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-medium)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 32, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 32px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-large)\",\n },\n },\n xlarge: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 40, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 40px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-display-xlarge)\",\n },\n },\n },\n title: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-small)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-small-strong)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-title-large-strong)\",\n },\n },\n },\n body: {\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-strong)\",\n },\n },\n \"small-strong-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 700 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-small-strong-italic)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 14px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 14px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-large-strong)\",\n },\n },\n xlarge: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 20, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 20px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-base-body-xlarge)\",\n },\n },\n },\n subtext: {\n xsmall: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 9, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 9px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-small)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-subtext-medium)\",\n },\n },\n },\n interactive: {\n \"xsmall-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-xsmall-strong)\",\n },\n },\n small: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 12px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-small-strong)\",\n },\n },\n medium: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-medium)\",\n },\n },\n \"medium-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 14, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 14px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-medium-strong)\",\n },\n },\n large: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-large)\",\n },\n },\n \"large-strong\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 16px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-base-interactive-large-strong)\",\n },\n },\n },\n code: {\n xsmall: {\n fontFamily: \"Roboto Mono\",\n fontWeight: 300,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"300 10px/normal 'Roboto Mono', monospace\",\n variable: \"var(--kds-font-base-code-xsmall)\",\n },\n },\n small: {\n fontFamily: \"Roboto Mono\",\n fontWeight: 300,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"300 12px/normal 'Roboto Mono', monospace\",\n variable: \"var(--kds-font-base-code-small)\",\n },\n },\n },\n },\n workflow: {\n annotation: {\n headline: {\n H1: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h1)\",\n },\n },\n H2: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h2)\",\n },\n },\n H3: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h3)\",\n },\n },\n H4: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h4)\",\n },\n },\n H5: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h5)\",\n },\n },\n \"H1-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h1-italic)\",\n },\n },\n \"H2-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h2-italic)\",\n },\n },\n \"H3-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h3-italic)\",\n },\n },\n \"H4-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h4-italic)\",\n },\n },\n \"H5-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h5-italic)\",\n },\n },\n H6: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h6)\",\n },\n },\n \"H6-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-headline-h6-italic)\",\n },\n },\n },\n body: {\n small: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small)\",\n },\n },\n \"small-italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 400 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-italic)\",\n },\n },\n \"small-strong\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-strong)\",\n },\n },\n \"small-strong-Italic\": {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n fontStyle: \"italic\",\n css: {\n value: \"italic 700 13px/1.5 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-annotation-body-small-strong-italic)\",\n },\n },\n },\n },\n node: {\n name: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n css: {\n value: \"700 13px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-name)\",\n },\n },\n label: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n css: {\n value: \"400 12px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-label)\",\n },\n },\n status: {\n fontFamily: \"Roboto Condensed\",\n fontWeight: 400,\n fontSize: { value: 8, unit: \"px\" },\n css: {\n value: \"400 8px 'Roboto Condensed', sans-serif\",\n variable: \"var(--kds-font-workflow-node-status)\",\n },\n },\n },\n },\n dataapp: {\n H1: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 36, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 36px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h1)\",\n },\n },\n H2: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 30, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 30px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h2)\",\n },\n },\n H3: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 26, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 26px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h3)\",\n },\n },\n H4: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 22, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 22px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h4)\",\n },\n },\n H5: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 16, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 16px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h5)\",\n },\n },\n H6: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-h6)\",\n },\n },\n body: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 13, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 13px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-body)\",\n },\n },\n \"body-small\": {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"700 10px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-dataapp-body-small)\",\n },\n },\n },\n chart: {\n title: {\n fontFamily: \"Roboto\",\n fontWeight: 700,\n fontSize: { value: 18, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"700 18px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-title)\",\n },\n },\n subtitle: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-subtitle)\",\n },\n },\n \"axis-name\": {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-axis-name)\",\n },\n },\n \"axis-label\": {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-axis-label)\",\n },\n },\n legend: {\n fontFamily: \"Roboto\",\n fontWeight: 500,\n fontSize: { value: 11, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"500 11px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-legend)\",\n },\n },\n tooltip: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 12, unit: \"px\" },\n lineHeight: 1.5,\n css: {\n value: \"400 12px/1.5 Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-tooltip)\",\n },\n },\n label: {\n fontFamily: \"Roboto\",\n fontWeight: 400,\n fontSize: { value: 10, unit: \"px\" },\n lineHeight: \"normal\",\n css: {\n value: \"400 10px/normal Roboto, sans-serif\",\n variable: \"var(--kds-font-chart-label)\",\n },\n },\n },\n};\n","import type { editor } from \"monaco-editor\";\nimport { KeyCode } from \"monaco-editor\";\n\nimport { font } from \"@knime/kds-styles/tokens\";\n\nexport const INITIAL_LINE_HEIGHT = 18; // Default line height in Monaco Editor\nexport const EXTRA_PADDING = 3; // Additional padding to prevent scrollbar\nexport const DEFAULT_OVERVIEW_RULER_LANES = 3; // Monaco default\n\n// Monaco is styled via JS options, not CSS, so the KDS code typography is\n// passed to the editor constructors from the design-token constants. Exported\n// for the font pre-load in `monacoEnvironment.ts`, which has to pre-load the\n// very font the options below select.\nexport const codeFont = font.base.code.small;\n\n/**\n * Construction options shared by `KdsCodeEditor` and `KdsCodeDiffEditor`.\n */\nexport const COMMON_EDITOR_OPTIONS = {\n automaticLayout: true,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbersMinChars: 3,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n fontWeight: `${codeFont.fontWeight}`,\n fontSize: codeFont.fontSize.value,\n // Keep suggest / hover widgets visible when the editor sits in a clipping\n // container (the editor wrapper itself uses `overflow: hidden`).\n fixedOverflowWidgets: true,\n // Don't swallow wheel events once the editor cannot scroll any further,\n // so the surrounding dialog / page continues to scroll.\n scrollbar: { alwaysConsumeMouseWheel: false },\n // Standalone Monaco cannot detect screen readers in the browser; with the\n // default \"auto\" it would replace `ariaLabel` with a \"The editor is not\n // accessible at this time\" message and skip the screen-reader content\n // mirror. Force it on so assistive technology always works.\n accessibilitySupport: \"on\",\n} satisfies editor.IEditorConstructionOptions;\n\n// Update the editor theme based on the current dark mode setting\nexport const MONACO_THEME_LIGHT = \"vs-light\";\nexport const MONACO_THEME_DARK = \"vs-dark\";\nexport const getMonacoTheme = (isDark: boolean) =>\n isDark ? MONACO_THEME_DARK : MONACO_THEME_LIGHT;\n\n/**\n * Monaco's overflow widgets (error tooltips, autocomplete) can clip or appear\n * far away from the pointer in certain containers (such as stories in\n * Storybook, or ancestors with a CSS `transform`). Hosting them in an\n * external node on `document.body` avoids that; the node needs the\n * `monaco-editor` class to keep the popover styling. The caller owns the\n * returned node and must remove it on unmount.\n */\nexport const createOverflowWidgetsDomNode = (): HTMLElement => {\n const node = document.createElement(\"div\");\n node.classList.add(\"monaco-editor\");\n document.body.appendChild(node);\n return node;\n};\n\n/**\n * Accessibility: Escape arms tab-focus mode on the given editor so the next\n * Tab (or Shift+Tab) moves focus out of the editor instead of indenting;\n * any other key press or re-entering the editor restores Tab-as-indentation.\n */\nexport const setupTabFocusHandling = (editorInstance: editor.ICodeEditor) => {\n let tabFocusArmed = false;\n const setTabFocus = (armed: boolean) => {\n if (tabFocusArmed !== armed) {\n tabFocusArmed = armed;\n editorInstance.updateOptions({ tabFocusMode: armed });\n }\n };\n // Keys that must not disarm tab-focus mode: Tab itself (so the armed Tab\n // can leave the editor) and lone modifiers (so Escape → Shift+Tab works).\n const tabFocusNeutralKeys = [\n KeyCode.Tab,\n KeyCode.Shift,\n KeyCode.Ctrl,\n KeyCode.Alt,\n KeyCode.Meta,\n ];\n editorInstance.onKeyDown((event) => {\n if (event.keyCode === KeyCode.Escape) {\n setTabFocus(true);\n } else if (!tabFocusNeutralKeys.includes(event.keyCode)) {\n setTabFocus(false);\n }\n });\n editorInstance.onDidFocusEditorText(() => {\n setTabFocus(false);\n });\n};\n","/**\n * Monarch syntax definition for TOML (v1.1.0).\n * Registers \"toml\" as a language with Monaco Editor.\n *\n * Uses compound patterns (like GitHub's TextMate TOML grammar) to distinguish\n * table headers, keys, and values without relying on end-of-line state pops:\n * - Table headers: matched as whole `[key.path]` / `[[key.path]]` patterns\n * - Key assignments: matched as `key =` compound patterns\n * - Values: matched directly in root (strings, numbers, booleans, dates)\n * - Arrays / inline tables: use sub-states for bracket matching\n *\n * Spec: https://toml.io/en/v1.1.0\n * Monarch docs: https://microsoft.github.io/monaco-editor/monarch.html\n */\nimport { languages } from \"monaco-editor\";\n\n/**\n * Registers the TOML language with Monaco. Idempotent — registering is\n * page-global, so the first call wins and later calls return early.\n *\n * Called explicitly (from `setupMonacoEnvironment`) rather than as a\n * module side effect: the package declares `sideEffects` in its\n * package.json, so bundlers are allowed to drop bare side-effect imports\n * of this module in production builds.\n */\nexport const registerTomlLanguage = () => {\n if (languages.getLanguages().some((language) => language.id === \"toml\")) {\n return;\n }\n\n languages.register({ id: \"toml\" });\n\n languages.setLanguageConfiguration(\"toml\", {\n comments: {\n lineComment: \"#\",\n },\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"],\n ],\n autoClosingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: '\"\"\"', close: '\"\"\"' },\n { open: \"'''\", close: \"'''\" },\n { open: '\"', close: '\"', notIn: [\"string\"] },\n { open: \"'\", close: \"'\", notIn: [\"string\"] },\n ],\n surroundingPairs: [\n { open: \"{\", close: \"}\" },\n { open: \"[\", close: \"]\" },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n });\n\n languages.setMonarchTokensProvider(\"toml\", {\n defaultToken: \"\",\n\n brackets: [\n { open: \"[\", close: \"]\", token: \"delimiter.square\" },\n { open: \"{\", close: \"}\", token: \"delimiter.curly\" },\n ],\n\n escapes:\n /\\\\(?:[btnfre\"\\\\]|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n\n tokenizer: {\n // --------------- Root: table headers, key = value lines, values ----------\n root: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n\n // Array-of-tables header: [[key.path]] (bare keys only, won't match arrays)\n [\n /(\\[\\[)(\\s*[A-Za-z0-9_-]+(?:\\s*\\.\\s*[A-Za-z0-9_-]+)*\\s*)(\\]\\])/,\n [\"metatag.delimiter\", \"metatag\", \"metatag.delimiter\"],\n ],\n\n // Table header: [key.path] (bare keys only, won't match arrays like [\"str\"])\n [\n /(\\[)(\\s*[A-Za-z0-9_-]+(?:\\s*\\.\\s*[A-Za-z0-9_-]+)*\\s*)(\\])/,\n [\"metatag.delimiter\", \"metatag\", \"metatag.delimiter\"],\n ],\n\n // Key = (compound: bare key followed by =)\n [/([A-Za-z0-9_-]+)(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n // Key = (compound: quoted basic key followed by =)\n [/(\"[^\"]*\")(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n // Key = (compound: quoted literal key followed by =)\n [/('[^']*')(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n\n // Dotted key part: bare key followed by .\n [/([A-Za-z0-9_-]+)(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n // Dotted key part: quoted basic key followed by .\n [/(\"[^\"]*\")(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n // Dotted key part: quoted literal key followed by .\n [/('[^']*')(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n\n // Compound value structures (push sub-states for bracket matching)\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n\n // Simple values\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n\n // Fallback punctuation\n [/[=,]/, \"delimiter\"],\n ],\n\n // --------------- Inline table: { key = value, ... } ---------------\n inlineTable: [\n { include: \"@whitespace\" },\n // TOML v1.1 allows newlines — and therefore comments — inside\n // multi-line inline tables.\n { include: \"@comment\" },\n [/\\}/, \"@brackets\", \"@pop\"],\n [/,/, \"delimiter\"],\n\n // Keys inside inline table (compound patterns)\n [/([A-Za-z0-9_-]+)(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/(\"[^\"]*\")(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/('[^']*')(\\s*)(=)/, [\"type\", \"white\", \"operators\"]],\n [/([A-Za-z0-9_-]+)(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n [/(\"[^\"]*\")(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n [/('[^']*')(\\s*)(\\.)/, [\"type\", \"white\", \"delimiter\"]],\n\n // Values inside inline table\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n ],\n\n // --------------- Array: [ value, value, ... ] ---------------\n array: [\n { include: \"@whitespace\" },\n { include: \"@comment\" },\n [/\\]/, \"@brackets\", \"@pop\"],\n [/,/, \"delimiter\"],\n\n // Nested structures\n [/\\{/, \"@brackets\", \"@inlineTable\"],\n [/\\[/, \"@brackets\", \"@array\"],\n\n { include: \"@strings\" },\n { include: \"@dateTime\" },\n { include: \"@numbers\" },\n { include: \"@booleans\" },\n ],\n\n // --------------- Shared includes ---------------\n whitespace: [[/[ \\t\\r\\n]+/, \"white\"]],\n\n comment: [[/#.*$/, \"comment\"]],\n\n booleans: [[/(?:true|false)(?![A-Za-z0-9_-])/, \"keyword\"]],\n\n dateTime: [\n [\n /\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})?/,\n \"number\",\n ],\n [/\\d{4}-\\d{2}-\\d{2}/, \"number\"],\n [/\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?/, \"number\"],\n ],\n\n numbers: [\n [/0x[0-9A-Fa-f][0-9A-Fa-f_]*/, \"number.hex\"],\n [/0o[0-7][0-7_]*/, \"number.octal\"],\n [/0b[01][01_]*/, \"number.binary\"],\n [/[+-]?(?:inf|nan)(?![A-Za-z0-9_-])/, \"number.float\"],\n [/[+-]?\\d[\\d_]*\\.\\d[\\d_]*([eE][+-]?\\d[\\d_]*)?/, \"number.float\"],\n [/[+-]?\\d[\\d_]*[eE][+-]?\\d[\\d_]*/, \"number.float\"],\n [/[+-]?\\d[\\d_]*/, \"number\"],\n ],\n\n strings: [\n [/\"\"\"/, \"string\", \"@string.multiBasic\"],\n [/'''/, \"string\", \"@string.multiLiteral\"],\n [/\"/, \"string\", \"@string.basic\"],\n [/'/, \"string\", \"@string.literal\"],\n ],\n\n // --------------- String value states ---------------\n \"string.basic\": [\n // Basic strings are single-line by spec: an unterminated string ends\n // (as invalid) at the end of the line instead of painting the rest of\n // the document.\n [/[^\\\\\"]*$/, \"string.invalid\", \"@pop\"],\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, \"string\", \"@pop\"],\n ],\n\n \"string.multiBasic\": [\n [/\"\"\"/, \"string\", \"@pop\"],\n [/[^\\\\\"]+/, \"string\"],\n [/@escapes/, \"string.escape\"],\n [/\\\\./, \"string.escape.invalid\"],\n [/\"/, \"string\"],\n ],\n\n \"string.literal\": [\n // Literal strings are single-line by spec (see `string.basic`).\n [/[^']*$/, \"string.invalid\", \"@pop\"],\n [/[^']+/, \"string\"],\n [/'/, \"string\", \"@pop\"],\n ],\n\n \"string.multiLiteral\": [\n [/'''/, \"string\", \"@pop\"],\n [/[^']+/, \"string\"],\n [/'/, \"string\"],\n ],\n },\n });\n};\n","import { editor } from \"monaco-editor\";\n\nimport { codeFont } from \"../_helper/monacoCommon\";\n\nimport { registerTomlLanguage } from \"./tomlLanguage\";\n\n// The characters Monaco measures when it reads the font info. They are passed\n// to `load()` explicitly because a web font is split into `unicode-range`\n// subsets, of which only those covering the requested text are fetched.\nconst MEASURED_CHARACTERS = \"n 0123456789|/-_ilm%·\";\n\nlet fontRemeasureScheduled = false;\n\n/**\n * Monaco measures character widths when an editor is created, caches them for\n * the whole page, and derives cursor placement and selection width from them.\n * That measurement is also the first use of the code font, so it happens\n * before the font is loaded and keeps the fallback font's metrics — cursor and\n * selection then drift away from the glyphs (KDS-1002).\n *\n * `document.fonts.ready` does not help: it resolves while nothing is pending,\n * which is the case before any editor exists. So load the code font explicitly\n * and re-measure once it is there — also when loading failed, in which case\n * the fallback metrics are at least measured consistently.\n */\nconst remeasureFontsWhenCodeFontLoaded = () => {\n if (fontRemeasureScheduled || !document.fonts) {\n return;\n }\n fontRemeasureScheduled = true;\n document.fonts\n .load(codeFont.css.value, MEASURED_CHARACTERS)\n .catch(() => [])\n .then(() => {\n editor.remeasureFonts();\n });\n};\n\n// Setup Monaco Environment to load web workers for different languages.\n// Monaco's getWorker supports returning a Promise<Worker>, so language-specific\n// workers are bundled as separate chunks and loaded on demand.\nexport const setupMonacoEnvironment = () => {\n // Custom language registration happens before the early return below, so\n // the languages are also available when the host app defined its own\n // MonacoEnvironment. (Registered here explicitly — a module-side-effect\n // import would be dropped by bundlers because of the package's\n // `sideEffects` declaration.)\n registerTomlLanguage();\n\n // Not at module evaluation time: the consuming app may register the KDS\n // `@font-face` rules after this module is imported, and `load()` resolves\n // right away (without loading anything) for a family it does not know yet.\n remeasureFontsWhenCodeFontLoaded();\n\n if (self.MonacoEnvironment) {\n return;\n }\n self.MonacoEnvironment = {\n getWorker: async (_workerId: string, label: string) => {\n if (label === \"json\") {\n const { default: JSONWorker } =\n await import(\"monaco-editor/esm/vs/language/json/json.worker?worker&inline\");\n return new JSONWorker();\n }\n const { default: EditorWorker } =\n await import(\"monaco-editor/esm/vs/editor/editor.worker?worker&inline\");\n return new EditorWorker();\n },\n };\n};\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { useClipboard } from \"@vueuse/core\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n DEFAULT_OVERVIEW_RULER_LANES,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport { kdsCodeEditorState } from \"./enums\";\nimport { setupMonacoEnvironment } from \"./monacoEnvironment\";\nimport type { KdsCodeEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n overviewRuler = false,\n readOnly = false,\n highlighted = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n} = defineProps<KdsCodeEditorProps>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to the language label —\n * e.g. the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\n// Links the sub-text to the editor's text input via `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet editorInstance: editor.IStandaloneCodeEditor | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether the Monaco code area (not a header button) currently has focus.\nconst isEditorFocused = ref(false);\n\nconst showFocusHighlight = computed(() => isEditorFocused.value || highlighted);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible name for Monaco's focusable element (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announces the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst editorAriaLabel = computed(\n () =>\n `${headerLabel.value} code editor${readOnly ? \", read-only\" : \"\"}. ` +\n \"Press Escape followed by Tab to move focus out of the editor.\",\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\nconst contentLineCount = ref(1);\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getEditorInputElement = () =>\n baseCodeEditor.value?.getCodeContainer()?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the `ariaLabel` option) but not\n// `aria-describedby` / `aria-invalid` / `aria-current`, so those are\n// maintained here.\nconst syncEditorInputAria = () => {\n const input = getEditorInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n // The highlight marks this editor as the current one of a list, which is\n // otherwise only visible — assistive technology needs it announced.\n if (highlighted) {\n input.setAttribute(\"aria-current\", \"true\");\n } else {\n input.removeAttribute(\"aria-current\");\n }\n};\n\nwatch([() => subText, () => state, () => highlighted], syncEditorInputAria);\n\n// Copy-to-clipboard handling\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 });\nconst copyButtonAriaLabel = computed(() =>\n copied.value\n ? `Copied ${headerLabel.value} to clipboard`\n : `Copy ${headerLabel.value} to clipboard`,\n);\nconst copyToClipboard = () => {\n // Copy unconditionally — even an empty editor gives \"Copied\" feedback\n // instead of a dead button.\n copy(editorInstance?.getModel()?.getValue() ?? \"\");\n};\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n editorInstance = editor.create(container, {\n ...COMMON_EDITOR_OPTIONS,\n value: modelValue.value,\n language,\n overviewRulerLanes: overviewRuler ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n overflowWidgetsDomNode,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n ariaLabel: editorAriaLabel.value,\n });\n\n syncEditorInputAria();\n\n lineHeight.value = editorInstance.getOption(editor.EditorOption.lineHeight);\n contentLineCount.value = editorInstance.getModel()?.getLineCount() ?? 1;\n\n editorInstance.onDidChangeModelContent(() => {\n const value = editorInstance?.getModel()?.getValue() ?? \"\";\n contentLineCount.value = editorInstance?.getModel()?.getLineCount() ?? 1;\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n setupTabFocusHandling(editorInstance);\n editorInstance.onDidFocusEditorText(() => {\n isEditorFocused.value = true;\n });\n editorInstance.onDidBlurEditorText(() => {\n isEditorFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (editorInstance) {\n editorInstance.updateOptions({ theme: getMonacoTheme(dark) });\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n editorInstance?.updateOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(editorAriaLabel, (ariaLabel) => {\n editorInstance?.updateOptions({ ariaLabel });\n});\n\nwatch(\n () => overviewRuler,\n (enabled) => {\n editorInstance?.updateOptions({\n overviewRulerLanes: enabled ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n const model = editorInstance?.getModel();\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or flow-variable\n// overwrite would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n const model = editorInstance?.getModel();\n if (model && newValue !== model.getValue()) {\n model.pushStackElement();\n model.pushEditOperations(\n [],\n [{ range: model.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n editorInstance?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco editor instance, available after mount. */\n getEditor: () => editorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"copyable\"\n :copied=\"copied\"\n :copy-button-aria-label=\"copyButtonAriaLabel\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"showFocusHighlight\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n @copy=\"copyToClipboard\"\n >\n <template v-if=\"$slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n <template v-if=\"$slots.labelActions\" #labelActions>\n <slot name=\"labelActions\" />\n </template>\n </BaseCodeEditor>\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { useClipboard } from \"@vueuse/core\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n DEFAULT_OVERVIEW_RULER_LANES,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport { kdsCodeEditorState } from \"./enums\";\nimport { setupMonacoEnvironment } from \"./monacoEnvironment\";\nimport type { KdsCodeEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n overviewRuler = false,\n readOnly = false,\n highlighted = false,\n subText = undefined,\n preserveSubTextSpace = false,\n copyable = true,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n} = defineProps<KdsCodeEditorProps>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\ndefineSlots<{\n /**\n * Additional content rendered inside the editor frame, below the code\n * area — e.g. the output-column controls of the KNIME expression nodes.\n * The slot content brings its own padding and background.\n */\n footer?(): unknown;\n /**\n * Additional content rendered left-aligned, next to the language label —\n * e.g. the flow-variable and info buttons of the KNIME expression nodes.\n */\n labelActions?(): unknown;\n}>();\n\n// Links the sub-text to the editor's text input via `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet editorInstance: editor.IStandaloneCodeEditor | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether the Monaco code area (not a header button) currently has focus.\nconst isEditorFocused = ref(false);\n\nconst showFocusHighlight = computed(() => isEditorFocused.value || highlighted);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible name for Monaco's focusable element (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announces the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst editorAriaLabel = computed(\n () =>\n `${headerLabel.value} code editor${readOnly ? \", read-only\" : \"\"}. ` +\n \"Press Escape followed by Tab to move focus out of the editor.\",\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\nconst contentLineCount = ref(1);\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getEditorInputElement = () =>\n baseCodeEditor.value?.getCodeContainer()?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the `ariaLabel` option) but not\n// `aria-describedby` / `aria-invalid` / `aria-current`, so those are\n// maintained here.\nconst syncEditorInputAria = () => {\n const input = getEditorInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n // The highlight marks this editor as the current one of a list, which is\n // otherwise only visible — assistive technology needs it announced.\n if (highlighted) {\n input.setAttribute(\"aria-current\", \"true\");\n } else {\n input.removeAttribute(\"aria-current\");\n }\n};\n\nwatch([() => subText, () => state, () => highlighted], syncEditorInputAria);\n\n// Copy-to-clipboard handling\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 });\nconst copyButtonAriaLabel = computed(() =>\n copied.value\n ? `Copied ${headerLabel.value} to clipboard`\n : `Copy ${headerLabel.value} to clipboard`,\n);\nconst copyToClipboard = () => {\n // Copy unconditionally — even an empty editor gives \"Copied\" feedback\n // instead of a dead button.\n copy(editorInstance?.getModel()?.getValue() ?? \"\");\n};\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n editorInstance = editor.create(container, {\n ...COMMON_EDITOR_OPTIONS,\n value: modelValue.value,\n language,\n overviewRulerLanes: overviewRuler ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n overflowWidgetsDomNode,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n ariaLabel: editorAriaLabel.value,\n });\n\n syncEditorInputAria();\n\n lineHeight.value = editorInstance.getOption(editor.EditorOption.lineHeight);\n contentLineCount.value = editorInstance.getModel()?.getLineCount() ?? 1;\n\n editorInstance.onDidChangeModelContent(() => {\n const value = editorInstance?.getModel()?.getValue() ?? \"\";\n contentLineCount.value = editorInstance?.getModel()?.getLineCount() ?? 1;\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n setupTabFocusHandling(editorInstance);\n editorInstance.onDidFocusEditorText(() => {\n isEditorFocused.value = true;\n });\n editorInstance.onDidBlurEditorText(() => {\n isEditorFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (editorInstance) {\n editorInstance.updateOptions({ theme: getMonacoTheme(dark) });\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n editorInstance?.updateOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(editorAriaLabel, (ariaLabel) => {\n editorInstance?.updateOptions({ ariaLabel });\n});\n\nwatch(\n () => overviewRuler,\n (enabled) => {\n editorInstance?.updateOptions({\n overviewRulerLanes: enabled ? DEFAULT_OVERVIEW_RULER_LANES : 0,\n });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n const model = editorInstance?.getModel();\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or flow-variable\n// overwrite would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n const model = editorInstance?.getModel();\n if (model && newValue !== model.getValue()) {\n model.pushStackElement();\n model.pushEditOperations(\n [],\n [{ range: model.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n editorInstance?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco editor instance, available after mount. */\n getEditor: () => editorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"copyable\"\n :copied=\"copied\"\n :copy-button-aria-label=\"copyButtonAriaLabel\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"showFocusHighlight\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n @copy=\"copyToClipboard\"\n >\n <template v-if=\"$slots.footer\" #footer>\n <slot name=\"footer\" />\n </template>\n <template v-if=\"$slots.labelActions\" #labelActions>\n <slot name=\"labelActions\" />\n </template>\n </BaseCodeEditor>\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\nimport { setupMonacoEnvironment } from \"../CodeEditor/monacoEnvironment\";\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport type { KdsCodeDiffEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n original = \"\",\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n sideBySide = true,\n overviewRuler = false,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n changeSummary = undefined,\n} = defineProps<KdsCodeDiffEditorProps>();\n\n/** The modified content — the editable side of the diff. */\nconst modelValue = defineModel<string>({ default: \"\" });\n\n/**\n * Whether the editor is collapsed to just its change-summary header. Only\n * effective when `changeSummary` is set (which renders the collapse toggle).\n *\n * @default false\n */\nconst collapsed = defineModel<boolean>(\"collapsed\", { default: false });\n\n// Links the sub-text to the modified editor's text input via\n// `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet diffEditorInstance: editor.IStandaloneDiffEditor | undefined;\nlet originalModel: editor.ITextModel | undefined;\nlet modifiedModel: editor.ITextModel | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether one of the Monaco code areas (not a header button) has focus.\nconst isOriginalFocused = ref(false);\nconst isModifiedFocused = ref(false);\nconst isEditorFocused = computed(\n () => isOriginalFocused.value || isModifiedFocused.value,\n);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible names for Monaco's focusable elements (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announce the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst tabEscapeHint =\n \"Press Escape followed by Tab to move focus out of the editor.\";\nconst originalAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, original version, read-only. ${\n tabEscapeHint\n }`,\n);\nconst modifiedAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, modified version` +\n `${readOnly ? \", read-only\" : \"\"}. ${tabEscapeHint}`,\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\n// Line count of the larger side. Deliberately NOT derived from Monaco's\n// content height: that includes the asynchronously computed diff view zones\n// and scrollbar reservations, which would make the editor height flicker\n// once the diff arrives. The inline view may scroll internally when the\n// removed lines exceed the remaining row budget.\nconst contentLineCount = ref(1);\nconst updateContentLineCount = () => {\n contentLineCount.value = Math.max(\n originalModel?.getLineCount() ?? 1,\n modifiedModel?.getLineCount() ?? 1,\n );\n};\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Without the header there is no summary line to collapse to (and no toggle\n// to expand again), so `hideHeader` disables collapsing entirely.\nconst isCollapsed = computed(\n () => changeSummary !== undefined && !hideHeader && collapsed.value,\n);\n\n// Added / removed line counts of the current diff, shown in the\n// change-summary header. A changed line counts on both sides. `undefined`\n// (counts not rendered) until the asynchronously computed diff is available.\nconst addedLineCount = ref<number>();\nconst removedLineCount = ref<number>();\nconst updateChangeCounts = () => {\n const lineChanges = diffEditorInstance?.getLineChanges();\n if (!lineChanges) {\n return;\n }\n let added = 0;\n let removed = 0;\n for (const change of lineChanges) {\n // An end line number of 0 marks an empty range on that side (pure\n // insertion / deletion).\n if (change.modifiedEndLineNumber > 0) {\n added +=\n change.modifiedEndLineNumber - change.modifiedStartLineNumber + 1;\n }\n if (change.originalEndLineNumber > 0) {\n removed +=\n change.originalEndLineNumber - change.originalStartLineNumber + 1;\n }\n }\n addedLineCount.value = added;\n removedLineCount.value = removed;\n};\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// The aria-label options must go through `updateOptions`: the diff editor\n// creates its inner editors before applying the construction options'\n// `originalAriaLabel` / `modifiedAriaLabel`, so passing them at creation\n// leaves the inner editors unlabeled. They are only *declared* on the\n// construction options type (which extends the update options type), while\n// the runtime option-change path applies them fine.\nconst getAriaLabelOptions = (): editor.IDiffEditorConstructionOptions => ({\n originalAriaLabel: originalAriaLabel.value,\n modifiedAriaLabel: modifiedAriaLabel.value,\n});\n\n// Monaco re-derives both inner editors' options on every partial\n// `updateOptions` call and resets their `aria-label` to \"\" unless the\n// aria-label options are part of that same call — so every runtime option\n// update has to go through here.\nconst updateDiffEditorOptions = (options: editor.IDiffEditorOptions = {}) => {\n diffEditorInstance?.updateOptions({ ...options, ...getAriaLabelOptions() });\n};\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getModifiedInputElement = () =>\n diffEditorInstance\n ?.getModifiedEditor()\n .getDomNode()\n ?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the aria-label options) but not\n// `aria-describedby` / `aria-invalid`, so those are maintained here — on the\n// modified side, which holds the value the sub-text refers to.\nconst syncEditorInputAria = () => {\n const input = getModifiedInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n};\n\nwatch([() => subText, () => state], syncEditorInputAria);\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n\n originalModel = editor.createModel(original, language);\n modifiedModel = editor.createModel(modelValue.value, language);\n\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n diffEditorInstance = editor.createDiffEditor(container, {\n ...COMMON_EDITOR_OPTIONS,\n overflowWidgetsDomNode,\n renderSideBySide: sideBySide,\n renderOverviewRuler: overviewRuler,\n // The original side is never editable; `readOnly` governs the modified\n // side only.\n originalEditable: false,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n });\n diffEditorInstance.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n diffEditorInstance.updateOptions(getAriaLabelOptions());\n\n syncEditorInputAria();\n\n diffEditorInstance.onDidUpdateDiff(updateChangeCounts);\n\n const modifiedEditor = diffEditorInstance.getModifiedEditor();\n const originalEditor = diffEditorInstance.getOriginalEditor();\n\n lineHeight.value = modifiedEditor.getOption(editor.EditorOption.lineHeight);\n updateContentLineCount();\n\n originalModel.onDidChangeContent(updateContentLineCount);\n modifiedModel.onDidChangeContent(() => {\n const value = modifiedModel?.getValue() ?? \"\";\n updateContentLineCount();\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n for (const editorSide of [originalEditor, modifiedEditor]) {\n setupTabFocusHandling(editorSide);\n }\n originalEditor.onDidFocusEditorText(() => {\n isOriginalFocused.value = true;\n });\n originalEditor.onDidBlurEditorText(() => {\n isOriginalFocused.value = false;\n });\n modifiedEditor.onDidFocusEditorText(() => {\n isModifiedFocused.value = true;\n });\n modifiedEditor.onDidBlurEditorText(() => {\n isModifiedFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (diffEditorInstance) {\n editor.setTheme(getMonacoTheme(dark));\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n updateDiffEditorOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(modifiedAriaLabel, () => {\n updateDiffEditorOptions();\n});\n\nwatch(\n () => sideBySide,\n (renderSideBySide) => {\n updateDiffEditorOptions({ renderSideBySide });\n },\n);\n\nwatch(\n () => overviewRuler,\n (renderOverviewRuler) => {\n updateDiffEditorOptions({ renderOverviewRuler });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n for (const model of [originalModel, modifiedModel]) {\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n }\n },\n);\n\n// External `original` updates replace the original content. It is not\n// user-editable, so no undo stack needs to be preserved.\nwatch(\n () => original,\n (newOriginal) => {\n if (originalModel && newOriginal !== originalModel.getValue()) {\n originalModel.setValue(newOriginal);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or an \"apply\n// suggestion\" action would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n if (modifiedModel && newValue !== modifiedModel.getValue()) {\n modifiedModel.pushStackElement();\n modifiedModel.pushEditOperations(\n [],\n [{ range: modifiedModel.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n diffEditorInstance?.dispose();\n // The models are owned by this component (explicitly attached models are\n // never disposed by the editor itself).\n originalModel?.dispose();\n modifiedModel?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco diff editor instance, available after mount. */\n getEditor: () => diffEditorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"false\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"isEditorFocused\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n :change-summary=\"changeSummary\"\n :added-lines=\"addedLineCount\"\n :removed-lines=\"removedLineCount\"\n :collapsed=\"isCollapsed\"\n @collapsed-toggle=\"collapsed = !collapsed\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport {\n computed,\n onMounted,\n onUnmounted,\n ref,\n useId,\n useTemplateRef,\n watch,\n} from \"vue\";\nimport { editor } from \"monaco-editor\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\n\nimport { kdsCodeEditorState } from \"../CodeEditor/enums\";\nimport { setupMonacoEnvironment } from \"../CodeEditor/monacoEnvironment\";\nimport BaseCodeEditor from \"../_helper/BaseCodeEditor.vue\";\nimport {\n COMMON_EDITOR_OPTIONS,\n EXTRA_PADDING,\n INITIAL_LINE_HEIGHT,\n createOverflowWidgetsDomNode,\n getMonacoTheme,\n setupTabFocusHandling,\n} from \"../_helper/monacoCommon\";\n\nimport type { KdsCodeDiffEditorProps } from \"./types\";\n\nsetupMonacoEnvironment();\n\nconst {\n original = \"\",\n language = \"plaintext\",\n languageLabel = undefined,\n hideHeader = false,\n state = kdsCodeEditorState.DEFAULT,\n sideBySide = true,\n overviewRuler = false,\n readOnly = false,\n subText = undefined,\n preserveSubTextSpace = false,\n editorActions = undefined,\n minRows = undefined,\n maxRows = undefined,\n changeSummary = undefined,\n} = defineProps<KdsCodeDiffEditorProps>();\n\n/** The modified content — the editable side of the diff. */\nconst modelValue = defineModel<string>({ default: \"\" });\n\n/**\n * Whether the editor is collapsed to just its change-summary header. Only\n * effective when `changeSummary` is set (which renders the collapse toggle).\n *\n * @default false\n */\nconst collapsed = defineModel<boolean>(\"collapsed\", { default: false });\n\n// Links the sub-text to the modified editor's text input via\n// `aria-describedby`.\nconst subTextId = useId();\n\nconst baseCodeEditor = useTemplateRef(\"base-code-editor\");\nlet diffEditorInstance: editor.IStandaloneDiffEditor | undefined;\nlet originalModel: editor.ITextModel | undefined;\nlet modifiedModel: editor.ITextModel | undefined;\n\n// There is a known issue with monaco's popovers (error tooltips,\n// autocomplete) clipping or appearing far away from the pointer\n// in certain containers (such as stories in storybook).\n// A workaround is hosting the popover inside an external DOM node.\nlet overflowWidgetsDomNode: HTMLElement | undefined;\n\n// Whether one of the Monaco code areas (not a header button) has focus.\nconst isOriginalFocused = ref(false);\nconst isModifiedFocused = ref(false);\nconst isEditorFocused = computed(\n () => isOriginalFocused.value || isModifiedFocused.value,\n);\n\nconst headerLabel = computed(() => languageLabel ?? language.toUpperCase());\n\n// Accessible names for Monaco's focusable elements (`<label for>` cannot be\n// used: Monaco overrides it with its own `aria-label`, and in EditContext\n// mode the focusable element is a non-labelable `<div>`). Also announce the\n// read-only state and the non-standard keyboard exit (WCAG 2.1.2).\nconst tabEscapeHint =\n \"Press Escape followed by Tab to move focus out of the editor.\";\nconst originalAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, original version, read-only. ${\n tabEscapeHint\n }`,\n);\nconst modifiedAriaLabel = computed(\n () =>\n `${headerLabel.value} code diff editor, modified version` +\n `${readOnly ? \", read-only\" : \"\"}. ${tabEscapeHint}`,\n);\n\n// Sizing modes:\n// - neither `minRows` nor `maxRows` set → fill the container's height.\n// - otherwise the editor grows with its content (floored at `minRows`):\n// - `maxRows` unset → grows with all content, avoiding nested scrollbars.\n// - `maxRows` set → caps there and scrolls past it.\nconst fillContainer = computed(\n () => minRows === undefined && maxRows === undefined,\n);\n\nconst lineHeight = ref(INITIAL_LINE_HEIGHT);\n// Line count of the larger side. Deliberately NOT derived from Monaco's\n// content height: that includes the asynchronously computed diff view zones\n// and scrollbar reservations, which would make the editor height flicker\n// once the diff arrives. The inline view may scroll internally when the\n// removed lines exceed the remaining row budget.\nconst contentLineCount = ref(1);\nconst updateContentLineCount = () => {\n contentLineCount.value = Math.max(\n originalModel?.getLineCount() ?? 1,\n modifiedModel?.getLineCount() ?? 1,\n );\n};\nconst editorHeight = computed(() => {\n if (fillContainer.value) {\n return undefined;\n }\n const floor = Math.max(minRows ?? 1, 1);\n const cap = maxRows ?? Infinity;\n const rows = Math.min(cap, Math.max(floor, contentLineCount.value));\n return `${lineHeight.value * rows + EXTRA_PADDING}px`;\n});\n\n// Without the header there is no summary line to collapse to (and no toggle\n// to expand again), so `hideHeader` disables collapsing entirely.\nconst isCollapsed = computed(\n () => changeSummary !== undefined && !hideHeader && collapsed.value,\n);\n\n// Added / removed line counts of the current diff, shown in the\n// change-summary header. A changed line counts on both sides. `undefined`\n// (counts not rendered) until the asynchronously computed diff is available.\nconst addedLineCount = ref<number>();\nconst removedLineCount = ref<number>();\nconst updateChangeCounts = () => {\n const lineChanges = diffEditorInstance?.getLineChanges();\n if (!lineChanges) {\n return;\n }\n let added = 0;\n let removed = 0;\n for (const change of lineChanges) {\n // An end line number of 0 marks an empty range on that side (pure\n // insertion / deletion).\n if (change.modifiedEndLineNumber > 0) {\n added +=\n change.modifiedEndLineNumber - change.modifiedStartLineNumber + 1;\n }\n if (change.originalEndLineNumber > 0) {\n removed +=\n change.originalEndLineNumber - change.originalStartLineNumber + 1;\n }\n }\n addedLineCount.value = added;\n removedLineCount.value = removed;\n};\n\n// Use the effective, resolved dark state so the editor theme follows 'system'\n// (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\n// The aria-label options must go through `updateOptions`: the diff editor\n// creates its inner editors before applying the construction options'\n// `originalAriaLabel` / `modifiedAriaLabel`, so passing them at creation\n// leaves the inner editors unlabeled. They are only *declared* on the\n// construction options type (which extends the update options type), while\n// the runtime option-change path applies them fine.\nconst getAriaLabelOptions = (): editor.IDiffEditorConstructionOptions => ({\n originalAriaLabel: originalAriaLabel.value,\n modifiedAriaLabel: modifiedAriaLabel.value,\n});\n\n// Monaco re-derives both inner editors' options on every partial\n// `updateOptions` call and resets their `aria-label` to \"\" unless the\n// aria-label options are part of that same call — so every runtime option\n// update has to go through here.\nconst updateDiffEditorOptions = (options: editor.IDiffEditorOptions = {}) => {\n diffEditorInstance?.updateOptions({ ...options, ...getAriaLabelOptions() });\n};\n\n// Monaco's focusable element carries `role=\"textbox\"`: a `<div>` in\n// EditContext mode (Chromium), the fallback `<textarea>` elsewhere. The\n// additional `<textarea>` present in EditContext mode is only a hidden IME\n// helper that assistive technology never sees.\nconst getModifiedInputElement = () =>\n diffEditorInstance\n ?.getModifiedEditor()\n .getDomNode()\n ?.querySelector('[role=\"textbox\"]');\n\n// Monaco manages `aria-label` (via the aria-label options) but not\n// `aria-describedby` / `aria-invalid`, so those are maintained here — on the\n// modified side, which holds the value the sub-text refers to.\nconst syncEditorInputAria = () => {\n const input = getModifiedInputElement();\n if (!input) {\n return;\n }\n if (subText) {\n input.setAttribute(\"aria-describedby\", subTextId);\n } else {\n input.removeAttribute(\"aria-describedby\");\n }\n if (state === kdsCodeEditorState.ERROR) {\n input.setAttribute(\"aria-invalid\", \"true\");\n } else {\n input.removeAttribute(\"aria-invalid\");\n }\n};\n\nwatch([() => subText, () => state], syncEditorInputAria);\n\nonMounted(() => {\n const container = baseCodeEditor.value?.getCodeContainer();\n if (!container) {\n return;\n }\n\n originalModel = editor.createModel(original, language);\n modifiedModel = editor.createModel(modelValue.value, language);\n\n overflowWidgetsDomNode = createOverflowWidgetsDomNode();\n\n diffEditorInstance = editor.createDiffEditor(container, {\n ...COMMON_EDITOR_OPTIONS,\n overflowWidgetsDomNode,\n renderSideBySide: sideBySide,\n renderOverviewRuler: overviewRuler,\n // The original side is never editable; `readOnly` governs the modified\n // side only.\n originalEditable: false,\n readOnly,\n theme: getMonacoTheme(isDark.value),\n });\n diffEditorInstance.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n diffEditorInstance.updateOptions(getAriaLabelOptions());\n\n syncEditorInputAria();\n\n diffEditorInstance.onDidUpdateDiff(updateChangeCounts);\n\n const modifiedEditor = diffEditorInstance.getModifiedEditor();\n const originalEditor = diffEditorInstance.getOriginalEditor();\n\n lineHeight.value = modifiedEditor.getOption(editor.EditorOption.lineHeight);\n updateContentLineCount();\n\n originalModel.onDidChangeContent(updateContentLineCount);\n modifiedModel.onDidChangeContent(() => {\n const value = modifiedModel?.getValue() ?? \"\";\n updateContentLineCount();\n if (value !== modelValue.value) {\n modelValue.value = value;\n }\n });\n\n for (const editorSide of [originalEditor, modifiedEditor]) {\n setupTabFocusHandling(editorSide);\n }\n originalEditor.onDidFocusEditorText(() => {\n isOriginalFocused.value = true;\n });\n originalEditor.onDidBlurEditorText(() => {\n isOriginalFocused.value = false;\n });\n modifiedEditor.onDidFocusEditorText(() => {\n isModifiedFocused.value = true;\n });\n modifiedEditor.onDidBlurEditorText(() => {\n isModifiedFocused.value = false;\n });\n});\n\nwatch(isDark, (dark) => {\n if (diffEditorInstance) {\n editor.setTheme(getMonacoTheme(dark));\n }\n});\n\nwatch(\n () => readOnly,\n (isReadOnly) => {\n updateDiffEditorOptions({ readOnly: isReadOnly });\n },\n);\n\nwatch(modifiedAriaLabel, () => {\n updateDiffEditorOptions();\n});\n\nwatch(\n () => sideBySide,\n (renderSideBySide) => {\n updateDiffEditorOptions({ renderSideBySide });\n },\n);\n\nwatch(\n () => overviewRuler,\n (renderOverviewRuler) => {\n updateDiffEditorOptions({ renderOverviewRuler });\n },\n);\n\nwatch(\n () => language,\n (newLanguage) => {\n for (const model of [originalModel, modifiedModel]) {\n if (model) {\n editor.setModelLanguage(model, newLanguage);\n }\n }\n },\n);\n\n// External `original` updates replace the original content. It is not\n// user-editable, so no undo stack needs to be preserved.\nwatch(\n () => original,\n (newOriginal) => {\n if (originalModel && newOriginal !== originalModel.getValue()) {\n originalModel.setValue(newOriginal);\n }\n },\n);\n\n// External `modelValue` updates are applied as regular, undoable edits —\n// `setValue` would clear the undo stack, so a form reset or an \"apply\n// suggestion\" action would destroy the user's typing history.\nwatch(modelValue, (newValue) => {\n if (modifiedModel && newValue !== modifiedModel.getValue()) {\n modifiedModel.pushStackElement();\n modifiedModel.pushEditOperations(\n [],\n [{ range: modifiedModel.getFullModelRange(), text: newValue ?? \"\" }],\n () => null,\n );\n }\n});\n\nonUnmounted(() => {\n diffEditorInstance?.dispose();\n // The models are owned by this component (explicitly attached models are\n // never disposed by the editor itself).\n originalModel?.dispose();\n modifiedModel?.dispose();\n overflowWidgetsDomNode?.remove();\n});\n\ndefineExpose({\n /** The underlying Monaco diff editor instance, available after mount. */\n getEditor: () => diffEditorInstance,\n});\n</script>\n\n<template>\n <BaseCodeEditor\n ref=\"base-code-editor\"\n :header-label=\"headerLabel\"\n :sub-text-id=\"subTextId\"\n :hide-header=\"hideHeader\"\n :state=\"state\"\n :read-only=\"readOnly\"\n :sub-text=\"subText\"\n :preserve-sub-text-space=\"preserveSubTextSpace\"\n :copyable=\"false\"\n :editor-actions=\"editorActions\"\n :show-focus-highlight=\"isEditorFocused\"\n :fill=\"fillContainer\"\n :code-height=\"editorHeight\"\n :change-summary=\"changeSummary\"\n :added-lines=\"addedLineCount\"\n :removed-lines=\"removedLineCount\"\n :collapsed=\"isCollapsed\"\n @collapsed-toggle=\"collapsed = !collapsed\"\n />\n</template>\n","import type { ITheme } from \"@xterm/xterm\";\n\nimport {\n type KdsColorValue,\n type KdsMode,\n color,\n} from \"@knime/kds-styles/tokens\";\n\n/**\n * Convert a generated KDS color token's HSL component representation to a CSS\n * color string. xterm.js renders to a canvas and therefore cannot read CSS\n * custom properties — resolved color strings are required.\n *\n * xterm.js's `css.toColor` only parses hex and comma-separated `rgb()/rgba()`\n * (the canvas fallback rejects non-opaque pixels), so HSL values are converted\n * to RGB and emitted as `rgb()`. Alpha colors are blended onto the terminal\n * background to produce an opaque color.\n */\nconst hslToRgb = (\n h: number,\n s: number,\n l: number,\n): [number, number, number] => {\n const sNorm = s / 100;\n const lNorm = l / 100;\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;\n const hPrime = h / 60;\n const x = c * (1 - Math.abs((hPrime % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hPrime < 1) {\n [r1, g1, b1] = [c, x, 0];\n } else if (hPrime < 2) {\n [r1, g1, b1] = [x, c, 0];\n } else if (hPrime < 3) {\n [r1, g1, b1] = [0, c, x];\n } else if (hPrime < 4) {\n [r1, g1, b1] = [0, x, c];\n } else if (hPrime < 5) {\n [r1, g1, b1] = [x, 0, c];\n } else {\n [r1, g1, b1] = [c, 0, x];\n }\n const m = lNorm - c / 2;\n return [\n Math.round((r1 + m) * 255),\n Math.round((g1 + m) * 255),\n Math.round((b1 + m) * 255),\n ];\n};\n\nconst blend = (\n fg: [number, number, number],\n bg: [number, number, number],\n alpha: number,\n): [number, number, number] => [\n Math.round(fg[0] * alpha + bg[0] * (1 - alpha)),\n Math.round(fg[1] * alpha + bg[1] * (1 - alpha)),\n Math.round(fg[2] * alpha + bg[2] * (1 - alpha)),\n];\n\nconst toCssColor = (\n c: KdsColorValue,\n bg?: [number, number, number],\n): string => {\n const [r, g, b] =\n c.a === 1 || !bg\n ? hslToRgb(c.h, c.s, c.l)\n : blend(hslToRgb(c.h, c.s, c.l), bg, c.a);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\n/**\n * Build the xterm.js `ITheme` from generated KDS color tokens for the given\n * mode. Only colors with KDS semantic mappings are overridden; all other ANSI\n * slots fall back to the xterm.js defaults.\n */\nexport const buildTheme = (mode: KdsMode): ITheme => {\n const t = color[\"text-and-icon\"];\n const surface = color.surface.default;\n const selectedBg = color.TextHighlight.background.default;\n const bgRgb = hslToRgb(surface[mode].h, surface[mode].s, surface[mode].l);\n\n return {\n background: toCssColor(surface[mode]),\n foreground: toCssColor(t.neutral[mode]),\n cursor: toCssColor(t.neutral[mode]),\n cursorAccent: toCssColor(surface[mode]),\n selectionBackground: toCssColor(selectedBg[mode], bgRgb),\n selectionForeground: toCssColor(t.selected[mode]),\n black: toCssColor(t.neutral[mode]),\n red: toCssColor(t.danger[mode]),\n yellow: toCssColor(t.warning[mode]),\n };\n};\n","import { onMounted, onUnmounted, ref } from \"vue\";\n\n// Only turn on focus highlighting when we hear one of these.\nconst listOfFocusKeys = [\n \"Tab\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \" \",\n \"Enter\",\n];\n\n/**\n * Composable that returns whether focus is currently painted. It turns focus\n * painting on when the document is navigated using key presses, and off again\n * when the document is clicked — so that focus rings only appear for keyboard\n * navigation, not for mouse interactions.\n */\nconst useShouldFocusBePainted = () => {\n const shouldFocusBePainted = ref<boolean>(false);\n\n const turnFocusPaintingOn = (evt: KeyboardEvent) => {\n if (listOfFocusKeys.includes(evt.key)) {\n shouldFocusBePainted.value = true;\n }\n };\n\n const turnFocusPaintingOff = () => {\n shouldFocusBePainted.value = false;\n };\n\n onMounted(() => {\n document.addEventListener(\"keydown\", turnFocusPaintingOn);\n document.addEventListener(\"mousedown\", turnFocusPaintingOff);\n });\n\n onUnmounted(() => {\n document.removeEventListener(\"keydown\", turnFocusPaintingOn);\n document.removeEventListener(\"mousedown\", turnFocusPaintingOff);\n });\n\n return shouldFocusBePainted;\n};\n\nexport default useShouldFocusBePainted;\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, useTemplateRef, watchEffect } from \"vue\";\nimport { useDebounceFn, useResizeObserver } from \"@vueuse/core\";\nimport { FitAddon } from \"@xterm/addon-fit\";\nimport { Unicode11Addon } from \"@xterm/addon-unicode11\";\nimport type { ITerminalInitOnlyOptions, ITerminalOptions } from \"@xterm/xterm\";\nimport { Terminal } from \"@xterm/xterm\";\nimport \"@xterm/xterm/css/xterm.css\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\nimport { font } from \"@knime/kds-styles/tokens\";\n\nimport type { KdsConsoleEmits, KdsConsoleText } from \"./types\";\nimport { buildTheme } from \"./utils/buildTheme\";\nimport useShouldFocusBePainted from \"./utils/shouldFocusBePainted\";\n\nconst DEBOUNCE_TIME = 300;\n\nconst emit = defineEmits<KdsConsoleEmits>();\n\n// Use the effective, resolved dark state so the terminal theme follows\n// 'system' (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\nconst codeFont = font.base.code.small;\n\nconst options: ITerminalOptions & ITerminalInitOnlyOptions = {\n letterSpacing: 0,\n allowProposedApi: true,\n fontSize: codeFont.fontSize.value,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n convertEol: true,\n disableStdin: true,\n cursorBlink: false,\n theme: buildTheme(isDark.value ? \"dark\" : \"light\"),\n};\n\nconst term = new Terminal(options);\n\nconst unicode11Addon = new Unicode11Addon();\nterm.loadAddon(unicode11Addon);\nterm.unicode.activeVersion = \"11\";\n\nconst fitAddon = new FitAddon();\nterm.loadAddon(fitAddon);\n\nconst terminalContainer = useTemplateRef<HTMLElement>(\"terminal-container\");\n\nconst updateConsole = useDebounceFn(() => {\n fitAddon.fit();\n}, DEBOUNCE_TIME);\n\nuseResizeObserver(terminalContainer, () => {\n updateConsole();\n});\n\nconst copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n};\n\nterm.attachCustomKeyEventHandler((e) => {\n if ((e.key === \"c\" || e.key === \"C\") && e.ctrlKey) {\n const selection = term.getSelection();\n if (selection) {\n copyToClipboard(selection);\n }\n return false;\n } else if (e.key === \"Tab\") {\n return false;\n } else if (e.key === \"Escape\") {\n term.blur();\n return false;\n }\n return true;\n});\n\nterm.onWriteParsed(() => term.scrollToBottom());\n\nwatchEffect(() => {\n term.options.theme = buildTheme(isDark.value ? \"dark\" : \"light\");\n});\n\nconst format = (text: KdsConsoleText) => {\n if (\"error\" in text) {\n return `\\x1b[31m[ERROR] ${text.error}\\x1b[0m`;\n } else if (\"warning\" in text) {\n return `\\x1b[33m[WARNING] ${text.warning}\\x1b[0m`;\n } else {\n return text.text;\n }\n};\n\nonMounted(() => {\n term.open(terminalContainer.value as HTMLElement);\n emit(\"console-created\", {\n write: (text) => term.write(format(text)),\n writeln: (text) => term.writeln(format(text)),\n clear: () => term.reset(),\n });\n const listener = term.onLineFeed(() => {\n fitAddon.fit();\n listener.dispose();\n });\n});\n\nonUnmounted(() => {\n term?.dispose();\n});\n\nconst paintFocus = useShouldFocusBePainted();\n</script>\n\n<template>\n <div\n ref=\"terminal-container\"\n class=\"terminal\"\n :class=\"{ 'focus-painted': paintFocus }\"\n />\n</template>\n\n<style scoped>\n.terminal {\n height: 100%;\n overflow: hidden;\n border-radius: var(--kds-border-radius-container-0-12x);\n\n /* Only paint a focus ring when the user navigated to the terminal with the\n keyboard (mouse focus doesn't need the extra ring). */\n &.focus-painted:focus-within {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, useTemplateRef, watchEffect } from \"vue\";\nimport { useDebounceFn, useResizeObserver } from \"@vueuse/core\";\nimport { FitAddon } from \"@xterm/addon-fit\";\nimport { Unicode11Addon } from \"@xterm/addon-unicode11\";\nimport type { ITerminalInitOnlyOptions, ITerminalOptions } from \"@xterm/xterm\";\nimport { Terminal } from \"@xterm/xterm\";\nimport \"@xterm/xterm/css/xterm.css\";\n\nimport { useKdsDarkMode } from \"@knime/kds-components\";\nimport { font } from \"@knime/kds-styles/tokens\";\n\nimport type { KdsConsoleEmits, KdsConsoleText } from \"./types\";\nimport { buildTheme } from \"./utils/buildTheme\";\nimport useShouldFocusBePainted from \"./utils/shouldFocusBePainted\";\n\nconst DEBOUNCE_TIME = 300;\n\nconst emit = defineEmits<KdsConsoleEmits>();\n\n// Use the effective, resolved dark state so the terminal theme follows\n// 'system' (OS) mode too, not just an explicit dark/light preference.\nconst { isDark } = useKdsDarkMode();\n\nconst codeFont = font.base.code.small;\n\nconst options: ITerminalOptions & ITerminalInitOnlyOptions = {\n letterSpacing: 0,\n allowProposedApi: true,\n fontSize: codeFont.fontSize.value,\n fontFamily: `\"${codeFont.fontFamily}\", monospace`,\n convertEol: true,\n disableStdin: true,\n cursorBlink: false,\n theme: buildTheme(isDark.value ? \"dark\" : \"light\"),\n};\n\nconst term = new Terminal(options);\n\nconst unicode11Addon = new Unicode11Addon();\nterm.loadAddon(unicode11Addon);\nterm.unicode.activeVersion = \"11\";\n\nconst fitAddon = new FitAddon();\nterm.loadAddon(fitAddon);\n\nconst terminalContainer = useTemplateRef<HTMLElement>(\"terminal-container\");\n\nconst updateConsole = useDebounceFn(() => {\n fitAddon.fit();\n}, DEBOUNCE_TIME);\n\nuseResizeObserver(terminalContainer, () => {\n updateConsole();\n});\n\nconst copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text);\n};\n\nterm.attachCustomKeyEventHandler((e) => {\n if ((e.key === \"c\" || e.key === \"C\") && e.ctrlKey) {\n const selection = term.getSelection();\n if (selection) {\n copyToClipboard(selection);\n }\n return false;\n } else if (e.key === \"Tab\") {\n return false;\n } else if (e.key === \"Escape\") {\n term.blur();\n return false;\n }\n return true;\n});\n\nterm.onWriteParsed(() => term.scrollToBottom());\n\nwatchEffect(() => {\n term.options.theme = buildTheme(isDark.value ? \"dark\" : \"light\");\n});\n\nconst format = (text: KdsConsoleText) => {\n if (\"error\" in text) {\n return `\\x1b[31m[ERROR] ${text.error}\\x1b[0m`;\n } else if (\"warning\" in text) {\n return `\\x1b[33m[WARNING] ${text.warning}\\x1b[0m`;\n } else {\n return text.text;\n }\n};\n\nonMounted(() => {\n term.open(terminalContainer.value as HTMLElement);\n emit(\"console-created\", {\n write: (text) => term.write(format(text)),\n writeln: (text) => term.writeln(format(text)),\n clear: () => term.reset(),\n });\n const listener = term.onLineFeed(() => {\n fitAddon.fit();\n listener.dispose();\n });\n});\n\nonUnmounted(() => {\n term?.dispose();\n});\n\nconst paintFocus = useShouldFocusBePainted();\n</script>\n\n<template>\n <div\n ref=\"terminal-container\"\n class=\"terminal\"\n :class=\"{ 'focus-painted': paintFocus }\"\n />\n</template>\n\n<style scoped>\n.terminal {\n height: 100%;\n overflow: hidden;\n border-radius: var(--kds-border-radius-container-0-12x);\n\n /* Only paint a focus ring when the user navigated to the terminal with the\n keyboard (mouse focus doesn't need the extra ring). */\n &.focus-painted:focus-within {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n</style>\n"],"mappings":"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"}