@mantine-vue/code-highlight 3.5.0 → 3.6.0
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/cjs/index.cjs +735 -27
- package/cjs/index.cjs.map +1 -1
- package/esm/index.mjs +729 -30
- package/esm/index.mjs.map +1 -1
- package/lib/JsonViewer/JsonViewer.d.ts +11 -0
- package/lib/JsonViewer/JsonViewer.types.d.ts +80 -0
- package/lib/JsonViewer/JsonViewer.vue.d.ts +14 -0
- package/lib/JsonViewer/JsonViewerNode.vue.d.ts +32 -0
- package/lib/JsonViewer/index.d.ts +2 -0
- package/lib/JsonViewer/json-viewer-utils.d.ts +22 -0
- package/lib/index.d.mts +1 -0
- package/lib/index.d.ts +1 -0
- package/package.json +3 -3
- package/styles.css +562 -0
- package/styles.layer.css +562 -0
package/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["$attrs","$attrs","$attrs","$slots"],"sources":["../src/CodeHighlightProvider/adapters/plain-text-adapter.ts","../src/CodeHighlightProvider/CodeHighlightAdapterProvider.vue","../src/CodeHighlightProvider/CodeHighlightAdapterProvider.vue","../src/CodeHighlightProvider/CodeHighlightProvider.ts","../src/normalize-code.ts","../src/CodeHighlight/CodeHighlight.context.ts","../src/CodeHighlight/CodeHighlightControl/CodeHighlightControl.vue","../src/CodeHighlight/CodeHighlightControl/CodeHighlightControl.vue","../src/CodeHighlight/CopyCodeButton/CopyIcon.vue","../src/CodeHighlight/CopyCodeButton/CopyIcon.vue","../src/CodeHighlight/CopyCodeButton/CopyCodeButton.vue","../src/CodeHighlight/CopyCodeButton/CopyCodeButton.vue","../src/CodeHighlight/ExpandCodeButton/ExpandIcon.vue","../src/CodeHighlight/ExpandCodeButton/ExpandIcon.vue","../src/CodeHighlight/ExpandCodeButton/ExpandCodeButton.vue","../src/CodeHighlight/ExpandCodeButton/ExpandCodeButton.vue","../src/CodeHighlight.module.css","../src/CodeHighlight/CodeHighlight.vue","../src/CodeHighlight/CodeHighlight.vue","../src/CodeHighlight/CodeHighlight.ts","../src/CodeHighlight/InlineCodeHighlight.vue","../src/CodeHighlight/InlineCodeHighlight.vue","../src/CodeHighlight/InlineCodeHighlight.ts","../src/CodeHighlightTabs/FileIcon.vue","../src/CodeHighlightTabs/FileIcon.vue","../src/CodeHighlightTabs/CodeHighlightTabs.vue","../src/CodeHighlightTabs/CodeHighlightTabs.vue","../src/CodeHighlightTabs/CodeHighlightTabs.ts","../src/CodeHighlightProvider/adapters/highlight-js-adapter.ts","../src/CodeHighlightProvider/adapters/shiki-themes.ts","../src/CodeHighlightProvider/adapters/shiki-adapter.ts"],"sourcesContent":["import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\n\nexport const plainTextAdapter: CodeHighlightAdapter = {\n getHighlighter:\n () =>\n ({ code }) => ({ highlightedCode: code, isHighlighted: false }),\n}\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { provideCodeHighlightAdapterContext } from './CodeHighlightProvider'\nimport type { CodeHighlightAdapterProviderProps } from './CodeHighlightProvider.types'\n\ndefineOptions({ name: 'CodeHighlightAdapterProvider' })\nconst props = defineProps<CodeHighlightAdapterProviderProps>()\nconst context = ref<any>(null)\nconst contextLoaded = ref(false)\nconst loadedLanguages = ref<string[]>([])\nconst requestedLanguages = new Set<string>()\nlet generation = 0\nconst highlight = computed(() => props.adapter.getHighlighter(context.value))\n\nwatch(\n () => props.adapter,\n async (adapter) => {\n const currentGeneration = ++generation\n context.value = null\n contextLoaded.value = !adapter.loadContext\n loadedLanguages.value = []\n requestedLanguages.clear()\n if (adapter.loadContext) {\n const value = await adapter.loadContext()\n if (currentGeneration === generation) {\n context.value = value\n contextLoaded.value = true\n }\n }\n },\n { immediate: true },\n)\n\nfunction loadLanguage(language: string | undefined) {\n if (\n !contextLoaded.value ||\n !language ||\n !props.adapter.loadLanguage ||\n requestedLanguages.has(language)\n ) {\n return\n }\n const currentGeneration = generation\n requestedLanguages.add(language)\n let result: Promise<any> | undefined\n try {\n result = props.adapter.loadLanguage(context.value, language)\n } catch {\n requestedLanguages.delete(language)\n return\n }\n result?.then(\n () => {\n if (currentGeneration === generation && !loadedLanguages.value.includes(language)) {\n loadedLanguages.value = [...loadedLanguages.value, language]\n }\n },\n () => currentGeneration === generation && requestedLanguages.delete(language),\n )\n}\n\nprovideCodeHighlightAdapterContext({\n get adapter() {\n return props.adapter\n },\n get highlight() {\n return highlight.value\n },\n loadLanguage,\n isLanguageLoaded: (language) =>\n !language || !props.adapter.loadLanguage || loadedLanguages.value.includes(language),\n})\n</script>\n\n<template>\n <div style=\"display: contents\"><slot /></div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { provideCodeHighlightAdapterContext } from './CodeHighlightProvider'\nimport type { CodeHighlightAdapterProviderProps } from './CodeHighlightProvider.types'\n\ndefineOptions({ name: 'CodeHighlightAdapterProvider' })\nconst props = defineProps<CodeHighlightAdapterProviderProps>()\nconst context = ref<any>(null)\nconst contextLoaded = ref(false)\nconst loadedLanguages = ref<string[]>([])\nconst requestedLanguages = new Set<string>()\nlet generation = 0\nconst highlight = computed(() => props.adapter.getHighlighter(context.value))\n\nwatch(\n () => props.adapter,\n async (adapter) => {\n const currentGeneration = ++generation\n context.value = null\n contextLoaded.value = !adapter.loadContext\n loadedLanguages.value = []\n requestedLanguages.clear()\n if (adapter.loadContext) {\n const value = await adapter.loadContext()\n if (currentGeneration === generation) {\n context.value = value\n contextLoaded.value = true\n }\n }\n },\n { immediate: true },\n)\n\nfunction loadLanguage(language: string | undefined) {\n if (\n !contextLoaded.value ||\n !language ||\n !props.adapter.loadLanguage ||\n requestedLanguages.has(language)\n ) {\n return\n }\n const currentGeneration = generation\n requestedLanguages.add(language)\n let result: Promise<any> | undefined\n try {\n result = props.adapter.loadLanguage(context.value, language)\n } catch {\n requestedLanguages.delete(language)\n return\n }\n result?.then(\n () => {\n if (currentGeneration === generation && !loadedLanguages.value.includes(language)) {\n loadedLanguages.value = [...loadedLanguages.value, language]\n }\n },\n () => currentGeneration === generation && requestedLanguages.delete(language),\n )\n}\n\nprovideCodeHighlightAdapterContext({\n get adapter() {\n return props.adapter\n },\n get highlight() {\n return highlight.value\n },\n loadLanguage,\n isLanguageLoaded: (language) =>\n !language || !props.adapter.loadLanguage || loadedLanguages.value.includes(language),\n})\n</script>\n\n<template>\n <div style=\"display: contents\"><slot /></div>\n</template>\n","import { inject, provide } from 'vue'\nimport { plainTextAdapter } from './adapters/plain-text-adapter'\nimport CodeHighlightAdapterProviderComponent from './CodeHighlightAdapterProvider.vue'\nimport type { CodeHighlightProviderContext } from './CodeHighlightProvider.types'\n\nconst CodeHighlightContext = Symbol('CodeHighlightContext')\n\nexport function provideCodeHighlightAdapterContext(value: CodeHighlightProviderContext) {\n provide(CodeHighlightContext, value)\n}\n\nexport function useHighlight() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n const fallback = plainTextAdapter.getHighlighter(null)\n return (input: Parameters<CodeHighlightProviderContext['highlight']>[0]) =>\n (ctx?.highlight || fallback)(input)\n}\n\nexport function useLoadLanguage() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n return ctx?.loadLanguage || (() => {})\n}\n\nexport function useIsLanguageLoaded() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n return ctx?.isLanguageLoaded || (() => true)\n}\n\nexport const CodeHighlightAdapterProvider = CodeHighlightAdapterProviderComponent\nexport type * from './CodeHighlightProvider.types'\n","export interface NormalizeCodeOptions {\n /** If set, indentation of the first line is preserved. @default false */\n withFirstLineIndentation?: boolean\n}\n\n/** Removes blank leading lines and trailing whitespace before highlighting or copying code. */\nexport function normalizeCode(\n code: string,\n { withFirstLineIndentation }: NormalizeCodeOptions = {},\n) {\n return withFirstLineIndentation ? code.replace(/^(?:[^\\S\\r\\n]*\\r?\\n)+|\\s+$/g, '') : code.trim()\n}\n","import { createSafeContext } from '@mantine-vue/core'\n\nexport interface CodeHighlightContextValue {\n getStyles: (selector: string, options?: Record<string, any>) => Record<string, any>\n codeColorScheme: 'light' | 'dark' | (string & {}) | undefined\n}\n\nexport const [provideCodeHighlightContext, useCodeHighlightContext] =\n createSafeContext<CodeHighlightContextValue>(\n 'CodeHighlightProvider was not found in the component tree',\n )\n","<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue'\nimport { ActionIcon, Tooltip, useProps } from '@mantine-vue/core'\nimport { useCodeHighlightContext } from '../CodeHighlight.context'\nimport type {\n CodeHighlightControlEmits,\n CodeHighlightControlProps,\n CodeHighlightControlSlots,\n} from './CodeHighlightControl.types'\n\ndefineOptions({ name: 'CodeHighlightControl', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightControlProps>(), { component: 'button' })\ndefineSlots<CodeHighlightControlSlots>()\nconst emit = defineEmits<CodeHighlightControlEmits>()\nconst props = useProps('CodeHighlightControl', null, rawProps)\nconst attrs = useAttrs()\nconst ctx = useCodeHighlightContext()\nconst tooltipStyles = computed(() => ctx.getStyles('controlTooltip'))\n</script>\n\n<template>\n <Tooltip\n v-if=\"props.tooltipLabel\"\n :label=\"props.tooltipLabel\"\n fz=\"sm\"\n position=\"bottom\"\n :class-names=\"{ tooltip: tooltipStyles.class }\"\n :styles=\"{ tooltip: tooltipStyles.style }\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n :transition-props=\"{ duration: 0 }\"\n >\n <ActionIcon\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n </Tooltip>\n <ActionIcon\n v-else\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue'\nimport { ActionIcon, Tooltip, useProps } from '@mantine-vue/core'\nimport { useCodeHighlightContext } from '../CodeHighlight.context'\nimport type {\n CodeHighlightControlEmits,\n CodeHighlightControlProps,\n CodeHighlightControlSlots,\n} from './CodeHighlightControl.types'\n\ndefineOptions({ name: 'CodeHighlightControl', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightControlProps>(), { component: 'button' })\ndefineSlots<CodeHighlightControlSlots>()\nconst emit = defineEmits<CodeHighlightControlEmits>()\nconst props = useProps('CodeHighlightControl', null, rawProps)\nconst attrs = useAttrs()\nconst ctx = useCodeHighlightContext()\nconst tooltipStyles = computed(() => ctx.getStyles('controlTooltip'))\n</script>\n\n<template>\n <Tooltip\n v-if=\"props.tooltipLabel\"\n :label=\"props.tooltipLabel\"\n fz=\"sm\"\n position=\"bottom\"\n :class-names=\"{ tooltip: tooltipStyles.class }\"\n :styles=\"{ tooltip: tooltipStyles.style }\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n :transition-props=\"{ duration: 0 }\"\n >\n <ActionIcon\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n </Tooltip>\n <ActionIcon\n v-else\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'CopyIcon', inheritAttrs: false })\ndefineProps<{ copied: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'CopyIcon', inheritAttrs: false })\ndefineProps<{ copied: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { useClipboard } from '@mantine-vue/hooks'\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport CopyIcon from './CopyIcon.vue'\n\nexport interface CopyCodeButtonProps {\n code: string\n copiedLabel?: string\n copyLabel?: string\n}\n\ndefineOptions({ name: 'CopyCodeButton' })\nconst props = withDefaults(defineProps<CopyCodeButtonProps>(), {\n copiedLabel: 'Copied',\n copyLabel: 'Copy',\n})\nconst clipboard = useClipboard()\n</script>\n\n<template>\n <CodeHighlightControl\n variant=\"none\"\n :tooltip-label=\"clipboard.copied.value ? props.copiedLabel : props.copyLabel\"\n :aria-label=\"clipboard.copied.value ? props.copiedLabel : `${props.copyLabel} code`\"\n @click=\"clipboard.copy(props.code)\"\n >\n <CopyIcon :copied=\"clipboard.copied.value\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\nimport { useClipboard } from '@mantine-vue/hooks'\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport CopyIcon from './CopyIcon.vue'\n\nexport interface CopyCodeButtonProps {\n code: string\n copiedLabel?: string\n copyLabel?: string\n}\n\ndefineOptions({ name: 'CopyCodeButton' })\nconst props = withDefaults(defineProps<CopyCodeButtonProps>(), {\n copiedLabel: 'Copied',\n copyLabel: 'Copy',\n})\nconst clipboard = useClipboard()\n</script>\n\n<template>\n <CodeHighlightControl\n variant=\"none\"\n :tooltip-label=\"clipboard.copied.value ? props.copiedLabel : props.copyLabel\"\n :aria-label=\"clipboard.copied.value ? props.copiedLabel : `${props.copyLabel} code`\"\n @click=\"clipboard.copy(props.code)\"\n >\n <CopyIcon :copied=\"clipboard.copied.value\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'ExpandIcon', inheritAttrs: false })\ndefineProps<{ expanded: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <template v-if=\"expanded\">\n <path d=\"M12 13v-8l-3 3m6 0l-3 -3\" />\n <path d=\"M9 17l1 0\" />\n <path d=\"M14 17l1 0\" />\n <path d=\"M19 17l1 0\" />\n <path d=\"M4 17l1 0\" />\n </template>\n <template v-else>\n <path d=\"M12 11v8l3 -3m-6 0l3 3\" />\n <path d=\"M9 7l1 0\" />\n <path d=\"M14 7l1 0\" />\n <path d=\"M19 7l1 0\" />\n <path d=\"M4 7l1 0\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'ExpandIcon', inheritAttrs: false })\ndefineProps<{ expanded: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <template v-if=\"expanded\">\n <path d=\"M12 13v-8l-3 3m6 0l-3 -3\" />\n <path d=\"M9 17l1 0\" />\n <path d=\"M14 17l1 0\" />\n <path d=\"M19 17l1 0\" />\n <path d=\"M4 17l1 0\" />\n </template>\n <template v-else>\n <path d=\"M12 11v8l3 -3m-6 0l3 3\" />\n <path d=\"M9 7l1 0\" />\n <path d=\"M14 7l1 0\" />\n <path d=\"M19 7l1 0\" />\n <path d=\"M4 7l1 0\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport ExpandIcon from './ExpandIcon.vue'\n\nexport interface ExpandCodeButtonProps {\n expanded: boolean\n collapseCodeLabel?: string\n expandCodeLabel?: string\n}\nexport interface ExpandCodeButtonEmits {\n expand: [value: boolean]\n}\n\ndefineOptions({ name: 'ExpandCodeButton' })\nconst props = withDefaults(defineProps<ExpandCodeButtonProps>(), {\n collapseCodeLabel: 'Collapse code',\n expandCodeLabel: 'Expand code',\n})\nconst emit = defineEmits<ExpandCodeButtonEmits>()\n</script>\n\n<template>\n <CodeHighlightControl\n :tooltip-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n :aria-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n @click=\"emit('expand', !props.expanded)\"\n >\n <ExpandIcon :expanded=\"props.expanded\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport ExpandIcon from './ExpandIcon.vue'\n\nexport interface ExpandCodeButtonProps {\n expanded: boolean\n collapseCodeLabel?: string\n expandCodeLabel?: string\n}\nexport interface ExpandCodeButtonEmits {\n expand: [value: boolean]\n}\n\ndefineOptions({ name: 'ExpandCodeButton' })\nconst props = withDefaults(defineProps<ExpandCodeButtonProps>(), {\n collapseCodeLabel: 'Collapse code',\n expandCodeLabel: 'Expand code',\n})\nconst emit = defineEmits<ExpandCodeButtonEmits>()\n</script>\n\n<template>\n <CodeHighlightControl\n :tooltip-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n :aria-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n @click=\"emit('expand', !props.expanded)\"\n >\n <ExpandIcon :expanded=\"props.expanded\" />\n </CodeHighlightControl>\n</template>\n",".root {\n position: relative;\n}\n\n.codeHighlight {\n position: relative;\n border-radius: var(--ch-radius, 0px);\n overflow: hidden;\n\n &:where([data-with-border]) {\n @mixin where-light {\n border: 1px solid var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='dark']) {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='light']) {\n border: 1px solid var(--mantine-color-gray-2);\n }\n }\n\n @mixin where-light {\n --ch-background: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n --ch-background: var(--mantine-color-dark-8);\n }\n}\n\n.inlineCodeHighlight {\n border-radius: var(--ch-radius, var(--mantine-radius-sm));\n overflow: hidden;\n background-color: var(--ch-background);\n font-size: 13px;\n padding: 3px 5px;\n\n &:where([data-with-border]) {\n @mixin where-light {\n border: 1px solid var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='dark']) {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='light']) {\n border: 1px solid var(--mantine-color-gray-2);\n }\n }\n\n @mixin where-light {\n --ch-background: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n --ch-background: var(--mantine-color-dark-8);\n }\n}\n\n.pre {\n --code-line-height: 1.7;\n\n display: block;\n margin: 0;\n flex: 1;\n min-width: 0;\n\n &[data-with-offset] .code {\n padding-top: 50px;\n }\n}\n\n.code {\n display: block;\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-md);\n background-color: var(--ch-background);\n font-size: 13px;\n line-height: var(--code-line-height, var(--mantine-line-height));\n font-family: var(--mantine-font-family-monospace);\n width: fit-content;\n min-width: 100%;\n\n &:where([data-inline]) {\n display: inline-block;\n padding: 3px 5px;\n background-color: var(--ch-background);\n }\n}\n\n.controls {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 1;\n background-color: var(--ch-background);\n border-bottom-left-radius: var(--mantine-radius-md);\n\n &:where([data-with-offset]) {\n top: 12px;\n }\n}\n\n.control {\n color: var(--mantine-color-text);\n opacity: 0.5;\n\n @mixin hover {\n color: var(--mantine-color-bright);\n opacity: 1;\n }\n\n &:where([data-code-color-scheme='dark']) {\n color: var(--mantine-color-dark-0);\n\n @mixin hover {\n color: var(--mantine-color-white);\n }\n }\n\n &:where([data-code-color-scheme='light']) {\n color: var(--mantine-color-black);\n\n @mixin hover {\n color: var(--mantine-color-black);\n }\n }\n\n & :where(svg) {\n width: 18px;\n height: 18px;\n display: block;\n }\n}\n\n.controlTooltip {\n &:where([data-code-color-scheme='light']) {\n background-color: var(--mantine-color-gray-9);\n color: var(--mantine-color-white);\n }\n\n &:where([data-code-color-scheme='dark']) {\n background-color: var(--mantine-color-gray-2);\n color: var(--mantine-color-black);\n }\n}\n\n.codeWrapper {\n --code-line-height: 1.7;\n\n display: flex;\n flex-direction: row;\n}\n\n.lineNumbers {\n user-select: none;\n text-align: right;\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-xs);\n padding-left: var(--mantine-spacing-md);\n font-family: var(--mantine-font-family-monospace);\n font-size: 13px;\n line-height: var(--code-line-height, var(--mantine-line-height));\n color: var(--mantine-color-dimmed);\n background-color: var(--ch-background);\n flex-shrink: 0;\n\n &[data-with-offset] {\n padding-top: 50px;\n }\n}\n\n.scrollarea {\n &[data-collapsed] {\n max-height: var(--ch-max-height, 180px);\n overflow: hidden;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 80px;\n pointer-events: none;\n background: linear-gradient(\n 0deg,\n var(--ch-background) 0%,\n var(--ch-background) 25%,\n transparent 100%\n );\n z-index: 1;\n }\n }\n}\n\n.showCodeButton {\n position: absolute;\n z-index: 2;\n bottom: 0;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n font-size: var(--mantine-font-size-sm);\n color: var(--mantine-color-anchor);\n width: 100%;\n text-align: center;\n padding-top: var(--mantine-spacing-xs);\n padding-bottom: var(--mantine-spacing-xs);\n white-space: nowrap;\n\n &[data-hidden] {\n display: none;\n }\n\n &:where([data-code-color-scheme='dark']) {\n color: var(--mantine-primary-color-5);\n }\n\n &:where([data-code-color-scheme='light']) {\n color: var(--mantine-primary-color-6);\n }\n}\n\n.file {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--mantine-font-size-xs);\n gap: 7px;\n padding: 5px 9px;\n font-family: var(--mantine-font-family-monospace);\n font-weight: var(--mantine-font-weight-bold);\n line-height: 1;\n user-select: none;\n cursor: pointer;\n opacity: 0.8;\n border: 1px solid transparent;\n white-space: nowrap;\n margin: 0;\n border-radius: var(--mantine-radius-default);\n\n &:where([data-active]) {\n opacity: 1;\n }\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n color: var(--mantine-color-gray-8);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-white);\n color: var(--mantine-color-black);\n }\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n color: var(--mantine-color-dark-0);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-dark-5);\n color: var(--mantine-color-white);\n }\n }\n\n &:where([data-color-scheme='light']) {\n border-color: var(--mantine-color-gray-3);\n color: var(--mantine-color-gray-8);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-white);\n color: var(--mantine-color-black);\n }\n }\n\n &:where([data-color-scheme='dark']) {\n border-color: var(--mantine-color-dark-4);\n color: var(--mantine-color-dark-0);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-dark-5);\n color: var(--mantine-color-white);\n }\n }\n\n @mixin hover {\n opacity: 1;\n }\n\n &:where(:only-child) {\n cursor: default;\n }\n}\n\n.fileIcon {\n & :where(svg) {\n display: block;\n }\n}\n\n.filesScrollarea {\n position: absolute;\n z-index: 2;\n top: 0;\n left: 0;\n right: 70px;\n}\n\n.files {\n display: flex;\n padding: 12px 10px;\n padding-bottom: 0;\n gap: var(--mantine-spacing-xs);\n}\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor, rem } from '@mantine-vue/core'\n\nconst varsResolver = createVarsResolver<any>(\n (theme, { maxCollapsedHeight, background, radius }) => ({\n codeHighlight: {\n '--ch-max-height': rem(maxCollapsedHeight),\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n }),\n)\n\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watchEffect } from 'vue'\nimport {\n Box,\n ScrollArea,\n UnstyledButton,\n useMantineContext,\n useProps,\n useStyles,\n} from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport {\n useHighlight,\n useIsLanguageLoaded,\n useLoadLanguage,\n} from '../CodeHighlightProvider/CodeHighlightProvider'\nimport { normalizeCode } from '../normalize-code'\nimport { provideCodeHighlightContext } from './CodeHighlight.context'\nimport CopyCodeButton from './CopyCodeButton/CopyCodeButton.vue'\nimport ExpandCodeButton from './ExpandCodeButton/ExpandCodeButton.vue'\nimport type {\n CodeHighlightEmits,\n CodeHighlightFactory,\n CodeHighlightProps,\n CodeHighlightSlots,\n} from './CodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withCopyButton: true,\n withExpandButton: false,\n expandCodeLabel: 'Expand code',\n collapseCodeLabel: 'Collapse code',\n withBorder: false,\n withLineNumbers: false,\n __withOffset: false,\n __inline: false,\n})\ndefineSlots<CodeHighlightSlots>()\nconst emit = defineEmits<CodeHighlightEmits>()\nconst props = useProps('CodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst mantine = useMantineContext()\nconst getStyles = useStyles<CodeHighlightFactory>({\n name: props.__staticSelector || 'CodeHighlight',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n vars: props.vars,\n unstyled: props.unstyled,\n varsResolver,\n rootSelector: 'codeHighlight',\n} as any)\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n value: () => props.expanded,\n defaultValue: props.defaultExpanded,\n finalValue: true,\n onChange: (value) => {\n emit('update:expanded', value)\n emit('expanded-change', value)\n },\n})\nconst highlight = useHighlight()\nconst loadLanguage = useLoadLanguage()\nconst isLanguageLoaded = useIsLanguageLoaded()\nconst normalizedCode = computed(() =>\n normalizeCode(props.code, { withFirstLineIndentation: props.withFirstLineIndentation }),\n)\n\nwatchEffect(() => loadLanguage(props.language))\n\nfunction resolveColorScheme(value: 'light' | 'dark' | 'auto'): 'light' | 'dark' {\n if (value !== 'auto') return value\n return typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n}\n\nconst highlighted = computed(() => {\n isLanguageLoaded(props.language)\n return highlight({\n code: normalizedCode.value,\n language: props.language,\n colorScheme: props.codeColorScheme ?? resolveColorScheme(mantine.colorScheme.value),\n })\n})\nconst renderedControls = computed(() => {\n const value =\n props.controls !== undefined\n ? typeof props.controls === 'function'\n ? props.controls()\n : props.controls\n : slots.controls?.()\n return Array.isArray(value) ? value : value ? [value] : []\n})\nconst shouldDisplayControls = computed(\n () => renderedControls.value.length > 0 || props.withExpandButton || props.withCopyButton,\n)\nconst lineNumbers = computed(() => normalizedCode.value.split('\\n').map((_, index) => index + 1))\nconst renderControls = () => renderedControls.value\n\nprovideCodeHighlightContext({\n getStyles,\n get codeColorScheme() {\n return props.codeColorScheme\n },\n})\n</script>\n\n<template>\n <code\n v-if=\"props.__inline && highlighted.isHighlighted\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n v-html=\"highlighted.highlightedCode\"\n />\n <code\n v-else-if=\"props.__inline\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n >{{ normalizedCode }}</code\n >\n <Box\n v-else\n v-bind=\"{ ...attrs, ...getStyles('codeHighlight') }\"\n dir=\"ltr\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n :data-with-border=\"props.withBorder || undefined\"\n >\n <div\n v-if=\"shouldDisplayControls\"\n v-bind=\"getStyles('controls')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <component :is=\"renderControls\" />\n <ExpandCodeButton\n v-if=\"props.withExpandButton\"\n :expanded=\"expanded\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n @expand=\"setExpanded\"\n />\n <CopyCodeButton\n v-if=\"props.withCopyButton\"\n :code=\"normalizedCode\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n />\n </div>\n <ScrollArea\n type=\"hover\"\n :scrollbar-size=\"4\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n :data-collapsed=\"!expanded || undefined\"\n :styles=\"{ viewport: { overscrollBehaviorInline: 'none' } }\"\n v-bind=\"getStyles('scrollarea')\"\n >\n <div v-bind=\"getStyles('codeWrapper')\">\n <div\n v-if=\"props.withLineNumbers\"\n v-bind=\"getStyles('lineNumbers')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <div v-for=\"line in lineNumbers\" :key=\"line\">{{ line }}</div>\n </div>\n <pre v-bind=\"getStyles('pre')\" :data-with-offset=\"props.__withOffset || undefined\"><code\n v-if=\"highlighted.isHighlighted\"\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n v-html=\"highlighted.highlightedCode\"\n /><code\n v-else\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n >{{ normalizedCode }}</code></pre>\n </div>\n </ScrollArea>\n <UnstyledButton\n v-bind=\"getStyles('showCodeButton')\"\n :mod=\"{ hidden: expanded }\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n @click=\"setExpanded(true)\"\n >\n {{ props.expandCodeLabel }}\n </UnstyledButton>\n </Box>\n</template>\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor, rem } from '@mantine-vue/core'\n\nconst varsResolver = createVarsResolver<any>(\n (theme, { maxCollapsedHeight, background, radius }) => ({\n codeHighlight: {\n '--ch-max-height': rem(maxCollapsedHeight),\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n }),\n)\n\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watchEffect } from 'vue'\nimport {\n Box,\n ScrollArea,\n UnstyledButton,\n useMantineContext,\n useProps,\n useStyles,\n} from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport {\n useHighlight,\n useIsLanguageLoaded,\n useLoadLanguage,\n} from '../CodeHighlightProvider/CodeHighlightProvider'\nimport { normalizeCode } from '../normalize-code'\nimport { provideCodeHighlightContext } from './CodeHighlight.context'\nimport CopyCodeButton from './CopyCodeButton/CopyCodeButton.vue'\nimport ExpandCodeButton from './ExpandCodeButton/ExpandCodeButton.vue'\nimport type {\n CodeHighlightEmits,\n CodeHighlightFactory,\n CodeHighlightProps,\n CodeHighlightSlots,\n} from './CodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withCopyButton: true,\n withExpandButton: false,\n expandCodeLabel: 'Expand code',\n collapseCodeLabel: 'Collapse code',\n withBorder: false,\n withLineNumbers: false,\n __withOffset: false,\n __inline: false,\n})\ndefineSlots<CodeHighlightSlots>()\nconst emit = defineEmits<CodeHighlightEmits>()\nconst props = useProps('CodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst mantine = useMantineContext()\nconst getStyles = useStyles<CodeHighlightFactory>({\n name: props.__staticSelector || 'CodeHighlight',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n vars: props.vars,\n unstyled: props.unstyled,\n varsResolver,\n rootSelector: 'codeHighlight',\n} as any)\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n value: () => props.expanded,\n defaultValue: props.defaultExpanded,\n finalValue: true,\n onChange: (value) => {\n emit('update:expanded', value)\n emit('expanded-change', value)\n },\n})\nconst highlight = useHighlight()\nconst loadLanguage = useLoadLanguage()\nconst isLanguageLoaded = useIsLanguageLoaded()\nconst normalizedCode = computed(() =>\n normalizeCode(props.code, { withFirstLineIndentation: props.withFirstLineIndentation }),\n)\n\nwatchEffect(() => loadLanguage(props.language))\n\nfunction resolveColorScheme(value: 'light' | 'dark' | 'auto'): 'light' | 'dark' {\n if (value !== 'auto') return value\n return typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n}\n\nconst highlighted = computed(() => {\n isLanguageLoaded(props.language)\n return highlight({\n code: normalizedCode.value,\n language: props.language,\n colorScheme: props.codeColorScheme ?? resolveColorScheme(mantine.colorScheme.value),\n })\n})\nconst renderedControls = computed(() => {\n const value =\n props.controls !== undefined\n ? typeof props.controls === 'function'\n ? props.controls()\n : props.controls\n : slots.controls?.()\n return Array.isArray(value) ? value : value ? [value] : []\n})\nconst shouldDisplayControls = computed(\n () => renderedControls.value.length > 0 || props.withExpandButton || props.withCopyButton,\n)\nconst lineNumbers = computed(() => normalizedCode.value.split('\\n').map((_, index) => index + 1))\nconst renderControls = () => renderedControls.value\n\nprovideCodeHighlightContext({\n getStyles,\n get codeColorScheme() {\n return props.codeColorScheme\n },\n})\n</script>\n\n<template>\n <code\n v-if=\"props.__inline && highlighted.isHighlighted\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n v-html=\"highlighted.highlightedCode\"\n />\n <code\n v-else-if=\"props.__inline\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n >{{ normalizedCode }}</code\n >\n <Box\n v-else\n v-bind=\"{ ...attrs, ...getStyles('codeHighlight') }\"\n dir=\"ltr\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n :data-with-border=\"props.withBorder || undefined\"\n >\n <div\n v-if=\"shouldDisplayControls\"\n v-bind=\"getStyles('controls')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <component :is=\"renderControls\" />\n <ExpandCodeButton\n v-if=\"props.withExpandButton\"\n :expanded=\"expanded\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n @expand=\"setExpanded\"\n />\n <CopyCodeButton\n v-if=\"props.withCopyButton\"\n :code=\"normalizedCode\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n />\n </div>\n <ScrollArea\n type=\"hover\"\n :scrollbar-size=\"4\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n :data-collapsed=\"!expanded || undefined\"\n :styles=\"{ viewport: { overscrollBehaviorInline: 'none' } }\"\n v-bind=\"getStyles('scrollarea')\"\n >\n <div v-bind=\"getStyles('codeWrapper')\">\n <div\n v-if=\"props.withLineNumbers\"\n v-bind=\"getStyles('lineNumbers')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <div v-for=\"line in lineNumbers\" :key=\"line\">{{ line }}</div>\n </div>\n <pre v-bind=\"getStyles('pre')\" :data-with-offset=\"props.__withOffset || undefined\"><code\n v-if=\"highlighted.isHighlighted\"\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n v-html=\"highlighted.highlightedCode\"\n /><code\n v-else\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n >{{ normalizedCode }}</code></pre>\n </div>\n </ScrollArea>\n <UnstyledButton\n v-bind=\"getStyles('showCodeButton')\"\n :mod=\"{ hidden: expanded }\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n @click=\"setExpanded(true)\"\n >\n {{ props.expandCodeLabel }}\n </UnstyledButton>\n </Box>\n</template>\n","import CodeHighlightComponent, { varsResolver } from './CodeHighlight.vue'\nimport { CodeHighlightControl } from './CodeHighlightControl/CodeHighlightControl'\nimport classes from '../CodeHighlight.module.css'\n\nexport const CodeHighlight = Object.assign(CodeHighlightComponent, {\n classes,\n varsResolver,\n Control: CodeHighlightControl,\n})\nexport type * from './CodeHighlight.types'\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((theme, { background, radius }) => ({\n inlineCodeHighlight: {\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from 'vue'\nimport { useProps, useStyles } from '@mantine-vue/core'\nimport CodeHighlightComponent from './CodeHighlight.vue'\nimport type {\n InlineCodeHighlightFactory,\n InlineCodeHighlightProps,\n} from './InlineCodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'InlineCodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<InlineCodeHighlightProps>(), { withBorder: false })\nconst props = useProps('InlineCodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst getStyles = useStyles<InlineCodeHighlightFactory>({\n name: 'InlineCodeHighlight',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n varsResolver,\n rootSelector: 'inlineCodeHighlight',\n} as any)\n</script>\n\n<template>\n <CodeHighlightComponent\n v-bind=\"{ ...attrs, ...props, ...getStyles('inlineCodeHighlight') }\"\n __inline\n />\n</template>\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((theme, { background, radius }) => ({\n inlineCodeHighlight: {\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from 'vue'\nimport { useProps, useStyles } from '@mantine-vue/core'\nimport CodeHighlightComponent from './CodeHighlight.vue'\nimport type {\n InlineCodeHighlightFactory,\n InlineCodeHighlightProps,\n} from './InlineCodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'InlineCodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<InlineCodeHighlightProps>(), { withBorder: false })\nconst props = useProps('InlineCodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst getStyles = useStyles<InlineCodeHighlightFactory>({\n name: 'InlineCodeHighlight',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n varsResolver,\n rootSelector: 'inlineCodeHighlight',\n} as any)\n</script>\n\n<template>\n <CodeHighlightComponent\n v-bind=\"{ ...attrs, ...props, ...getStyles('inlineCodeHighlight') }\"\n __inline\n />\n</template>\n","import InlineCodeHighlightComponent, { varsResolver } from './InlineCodeHighlight.vue'\nimport classes from '../CodeHighlight.module.css'\nexport const InlineCodeHighlight = Object.assign(InlineCodeHighlightComponent, {\n classes,\n varsResolver,\n})\nexport type * from './InlineCodeHighlight.types'\n","<script setup lang=\"ts\">\nimport type { VNodeChild } from 'vue'\ndefineOptions({ name: 'FileIcon', inheritAttrs: false })\nconst props = defineProps<{\n fileName?: string\n getFileIcon?: (fileName: string) => VNodeChild\n fileIcon?: VNodeChild\n}>()\nconst slots = defineSlots<{\n fileIcon?: () => VNodeChild\n getFileIcon?: (input: { fileName: string }) => VNodeChild\n}>()\nconst renderIcon = () => {\n if (props.fileIcon) return props.fileIcon\n if (props.getFileIcon && props.fileName) return props.getFileIcon(props.fileName)\n if (slots.fileIcon) return slots.fileIcon()\n if (slots.getFileIcon && props.fileName) return slots.getFileIcon({ fileName: props.fileName })\n return null\n}\n</script>\n\n<template>\n <span v-if=\"renderIcon()\" v-bind=\"$attrs\"><component :is=\"renderIcon\" /></span>\n</template>\n","<script setup lang=\"ts\">\nimport type { VNodeChild } from 'vue'\ndefineOptions({ name: 'FileIcon', inheritAttrs: false })\nconst props = defineProps<{\n fileName?: string\n getFileIcon?: (fileName: string) => VNodeChild\n fileIcon?: VNodeChild\n}>()\nconst slots = defineSlots<{\n fileIcon?: () => VNodeChild\n getFileIcon?: (input: { fileName: string }) => VNodeChild\n}>()\nconst renderIcon = () => {\n if (props.fileIcon) return props.fileIcon\n if (props.getFileIcon && props.fileName) return props.getFileIcon(props.fileName)\n if (slots.fileIcon) return slots.fileIcon()\n if (slots.getFileIcon && props.fileName) return slots.getFileIcon({ fileName: props.fileName })\n return null\n}\n</script>\n\n<template>\n <span v-if=\"renderIcon()\" v-bind=\"$attrs\"><component :is=\"renderIcon\" /></span>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watch } from 'vue'\nimport { Box, ScrollArea, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport CodeHighlightComponent from '../CodeHighlight/CodeHighlight.vue'\nimport FileIcon from './FileIcon.vue'\nimport type {\n CodeHighlightTabsEmits,\n CodeHighlightTabsFactory,\n CodeHighlightTabsProps,\n CodeHighlightTabsSlots,\n} from './CodeHighlightTabs.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlightTabs', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightTabsProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withExpandButton: false,\n withBorder: false,\n withLineNumbers: false,\n})\ndefineSlots<CodeHighlightTabsSlots>()\nconst emit = defineEmits<CodeHighlightTabsEmits>()\nconst props = useProps('CodeHighlightTabs', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst getStyles = useStyles<CodeHighlightTabsFactory>({\n name: 'CodeHighlightTabs',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n})\nconst [value, setValue] = useUncontrolled<number>({\n defaultValue: props.defaultActiveTab,\n value: () => props.activeTab,\n finalValue: 0,\n onChange: (tab) => {\n emit('update:activeTab', tab)\n emit('tab-change', tab)\n },\n})\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n defaultValue: props.defaultExpanded,\n value: () => props.expanded,\n finalValue: true,\n onChange: (next) => {\n emit('update:expanded', next)\n emit('expanded-change', next)\n },\n})\nwatch(\n () => [value.value, props.code.length] as const,\n ([current, length]) => {\n if (current >= length) setValue(length - 1)\n },\n { immediate: true },\n)\nconst currentCode = computed(\n () => props.code[value.value] || { code: '', language: 'tsx', fileName: '' },\n)\nconst fileIconResolver = computed(\n () =>\n props.getFileIcon ??\n (slots.getFileIcon ? (fileName: string) => slots.getFileIcon?.({ fileName }) : undefined),\n)\n</script>\n\n<template>\n <Box v-if=\"props.code.length\" v-bind=\"{ ...attrs, ...getStyles('root') }\">\n <ScrollArea\n type=\"never\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n v-bind=\"getStyles('filesScrollarea')\"\n >\n <div v-bind=\"getStyles('files')\">\n <UnstyledButton\n v-for=\"(node, index) in props.code\"\n :key=\"node.fileName ?? index\"\n v-bind=\"getStyles('file')\"\n :mod=\"{ active: index === value }\"\n :data-color-scheme=\"props.codeColorScheme\"\n @click=\"setValue(index)\"\n >\n <FileIcon\n :file-icon=\"node.icon\"\n :get-file-icon=\"fileIconResolver\"\n :file-name=\"node.fileName\"\n v-bind=\"getStyles('fileIcon')\"\n />\n <span>{{ node.fileName }}</span>\n </UnstyledButton>\n </div>\n </ScrollArea>\n <CodeHighlightComponent\n :code=\"currentCode.code\"\n :language=\"currentCode.language\"\n :expanded=\"expanded\"\n :with-copy-button=\"props.withCopyButton\"\n :with-expand-button=\"props.withExpandButton\"\n :with-border=\"props.withBorder\"\n :radius=\"props.radius\"\n :max-collapsed-height=\"props.maxCollapsedHeight\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n :background=\"props.background\"\n :controls=\"props.controls\"\n :code-color-scheme=\"props.codeColorScheme\"\n :with-line-numbers=\"props.withLineNumbers\"\n :with-first-line-indentation=\"props.withFirstLineIndentation\"\n __with-offset\n __static-selector=\"CodeHighlightTabs\"\n @expanded-change=\"setExpanded\"\n :class-names=\"props.classNames\"\n :styles=\"props.styles\"\n >\n <template v-if=\"$slots.controls\" #controls><slot name=\"controls\" /></template>\n </CodeHighlightComponent>\n </Box>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watch } from 'vue'\nimport { Box, ScrollArea, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport CodeHighlightComponent from '../CodeHighlight/CodeHighlight.vue'\nimport FileIcon from './FileIcon.vue'\nimport type {\n CodeHighlightTabsEmits,\n CodeHighlightTabsFactory,\n CodeHighlightTabsProps,\n CodeHighlightTabsSlots,\n} from './CodeHighlightTabs.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlightTabs', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightTabsProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withExpandButton: false,\n withBorder: false,\n withLineNumbers: false,\n})\ndefineSlots<CodeHighlightTabsSlots>()\nconst emit = defineEmits<CodeHighlightTabsEmits>()\nconst props = useProps('CodeHighlightTabs', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst getStyles = useStyles<CodeHighlightTabsFactory>({\n name: 'CodeHighlightTabs',\n classes,\n props,\n className: attrs.class,\n style: attrs.style as any,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n})\nconst [value, setValue] = useUncontrolled<number>({\n defaultValue: props.defaultActiveTab,\n value: () => props.activeTab,\n finalValue: 0,\n onChange: (tab) => {\n emit('update:activeTab', tab)\n emit('tab-change', tab)\n },\n})\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n defaultValue: props.defaultExpanded,\n value: () => props.expanded,\n finalValue: true,\n onChange: (next) => {\n emit('update:expanded', next)\n emit('expanded-change', next)\n },\n})\nwatch(\n () => [value.value, props.code.length] as const,\n ([current, length]) => {\n if (current >= length) setValue(length - 1)\n },\n { immediate: true },\n)\nconst currentCode = computed(\n () => props.code[value.value] || { code: '', language: 'tsx', fileName: '' },\n)\nconst fileIconResolver = computed(\n () =>\n props.getFileIcon ??\n (slots.getFileIcon ? (fileName: string) => slots.getFileIcon?.({ fileName }) : undefined),\n)\n</script>\n\n<template>\n <Box v-if=\"props.code.length\" v-bind=\"{ ...attrs, ...getStyles('root') }\">\n <ScrollArea\n type=\"never\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n v-bind=\"getStyles('filesScrollarea')\"\n >\n <div v-bind=\"getStyles('files')\">\n <UnstyledButton\n v-for=\"(node, index) in props.code\"\n :key=\"node.fileName ?? index\"\n v-bind=\"getStyles('file')\"\n :mod=\"{ active: index === value }\"\n :data-color-scheme=\"props.codeColorScheme\"\n @click=\"setValue(index)\"\n >\n <FileIcon\n :file-icon=\"node.icon\"\n :get-file-icon=\"fileIconResolver\"\n :file-name=\"node.fileName\"\n v-bind=\"getStyles('fileIcon')\"\n />\n <span>{{ node.fileName }}</span>\n </UnstyledButton>\n </div>\n </ScrollArea>\n <CodeHighlightComponent\n :code=\"currentCode.code\"\n :language=\"currentCode.language\"\n :expanded=\"expanded\"\n :with-copy-button=\"props.withCopyButton\"\n :with-expand-button=\"props.withExpandButton\"\n :with-border=\"props.withBorder\"\n :radius=\"props.radius\"\n :max-collapsed-height=\"props.maxCollapsedHeight\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n :background=\"props.background\"\n :controls=\"props.controls\"\n :code-color-scheme=\"props.codeColorScheme\"\n :with-line-numbers=\"props.withLineNumbers\"\n :with-first-line-indentation=\"props.withFirstLineIndentation\"\n __with-offset\n __static-selector=\"CodeHighlightTabs\"\n @expanded-change=\"setExpanded\"\n :class-names=\"props.classNames\"\n :styles=\"props.styles\"\n >\n <template v-if=\"$slots.controls\" #controls><slot name=\"controls\" /></template>\n </CodeHighlightComponent>\n </Box>\n</template>\n","import CodeHighlightTabsComponent from './CodeHighlightTabs.vue'\nimport classes from '../CodeHighlight.module.css'\nexport const CodeHighlightTabs = Object.assign(CodeHighlightTabsComponent, { classes })\nexport type * from './CodeHighlightTabs.types'\n","import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\n\nexport function createHighlightJsAdapter(hljs: any): CodeHighlightAdapter {\n return {\n getHighlighter:\n () =>\n ({ code, language }) => {\n const lang = hljs.getLanguage(language) ? language : 'plaintext'\n return {\n highlightedCode: hljs.highlight(code, { language: lang }).value,\n isHighlighted: true,\n codeElementProps: { class: `hljs ${lang}` },\n }\n },\n }\n}\n","export const light = {\n colors: {\n 'activityBar.activeBorder': '#fd8c73',\n 'activityBar.background': '#ffffff',\n 'activityBar.border': '#d0d7de',\n 'activityBar.foreground': '#1f2328',\n 'activityBar.inactiveForeground': '#656d76',\n 'activityBarBadge.background': '#0969da',\n 'activityBarBadge.foreground': '#ffffff',\n 'badge.background': '#0969da',\n 'badge.foreground': '#ffffff',\n 'breadcrumb.activeSelectionForeground': '#656d76',\n 'breadcrumb.focusForeground': '#1f2328',\n 'breadcrumb.foreground': '#656d76',\n 'breadcrumbPicker.background': '#ffffff',\n 'button.background': '#1f883d',\n 'button.foreground': '#ffffff',\n 'button.hoverBackground': '#1a7f37',\n 'button.secondaryBackground': '#ebecf0',\n 'button.secondaryForeground': '#24292f',\n 'button.secondaryHoverBackground': '#f3f4f6',\n 'checkbox.background': '#f6f8fa',\n 'checkbox.border': '#d0d7de',\n 'debugConsole.errorForeground': '#cf222e',\n 'debugConsole.infoForeground': '#57606a',\n 'debugConsole.sourceForeground': '#9a6700',\n 'debugConsole.warningForeground': '#7d4e00',\n 'debugConsoleInputIcon.foreground': '#6639ba',\n 'debugIcon.breakpointForeground': '#cf222e',\n 'debugTokenExpression.boolean': '#116329',\n 'debugTokenExpression.error': '#a40e26',\n 'debugTokenExpression.name': '#0550ae',\n 'debugTokenExpression.number': '#116329',\n 'debugTokenExpression.string': '#0a3069',\n 'debugTokenExpression.value': '#0a3069',\n 'debugToolBar.background': '#ffffff',\n descriptionForeground: '#656d76',\n 'diffEditor.insertedLineBackground': '#aceebb4d',\n 'diffEditor.insertedTextBackground': '#6fdd8b80',\n 'diffEditor.removedLineBackground': '#ffcecb4d',\n 'diffEditor.removedTextBackground': '#ff818266',\n 'dropdown.background': '#ffffff',\n 'dropdown.border': '#d0d7de',\n 'dropdown.foreground': '#1f2328',\n 'dropdown.listBackground': '#ffffff',\n 'editor.background': '#ffffff',\n 'editor.findMatchBackground': '#bf8700',\n 'editor.findMatchHighlightBackground': '#fae17d80',\n 'editor.focusedStackFrameHighlightBackground': '#4ac26b66',\n 'editor.foldBackground': '#6e77811a',\n 'editor.foreground': '#1f2328',\n 'editor.lineHighlightBackground': '#eaeef280',\n 'editor.linkedEditingBackground': '#0969da12',\n 'editor.selectionHighlightBackground': '#4ac26b40',\n 'editor.stackFrameHighlightBackground': '#d4a72c66',\n 'editor.wordHighlightBackground': '#eaeef280',\n 'editor.wordHighlightBorder': '#afb8c199',\n 'editor.wordHighlightStrongBackground': '#afb8c14d',\n 'editor.wordHighlightStrongBorder': '#afb8c199',\n 'editorBracketHighlight.foreground1': '#0969da',\n 'editorBracketHighlight.foreground2': '#1a7f37',\n 'editorBracketHighlight.foreground3': '#9a6700',\n 'editorBracketHighlight.foreground4': '#cf222e',\n 'editorBracketHighlight.foreground5': '#bf3989',\n 'editorBracketHighlight.foreground6': '#8250df',\n 'editorBracketHighlight.unexpectedBracket.foreground': '#656d76',\n 'editorBracketMatch.background': '#4ac26b40',\n 'editorBracketMatch.border': '#4ac26b99',\n 'editorCursor.foreground': '#0969da',\n 'editorGroup.border': '#d0d7de',\n 'editorGroupHeader.tabsBackground': '#f6f8fa',\n 'editorGroupHeader.tabsBorder': '#d0d7de',\n 'editorGutter.addedBackground': '#4ac26b66',\n 'editorGutter.deletedBackground': '#ff818266',\n 'editorGutter.modifiedBackground': '#d4a72c66',\n 'editorIndentGuide.activeBackground': '#1f23283d',\n 'editorIndentGuide.background': '#1f23281f',\n 'editorInlayHint.background': '#afb8c133',\n 'editorInlayHint.foreground': '#656d76',\n 'editorInlayHint.paramBackground': '#afb8c133',\n 'editorInlayHint.paramForeground': '#656d76',\n 'editorInlayHint.typeBackground': '#afb8c133',\n 'editorInlayHint.typeForeground': '#656d76',\n 'editorLineNumber.activeForeground': '#1f2328',\n 'editorLineNumber.foreground': '#8c959f',\n 'editorOverviewRuler.border': '#ffffff',\n 'editorWhitespace.foreground': '#afb8c1',\n 'editorWidget.background': '#ffffff',\n errorForeground: '#cf222e',\n focusBorder: '#0969da',\n foreground: '#1f2328',\n 'gitDecoration.addedResourceForeground': '#1a7f37',\n 'gitDecoration.conflictingResourceForeground': '#bc4c00',\n 'gitDecoration.deletedResourceForeground': '#cf222e',\n 'gitDecoration.ignoredResourceForeground': '#6e7781',\n 'gitDecoration.modifiedResourceForeground': '#9a6700',\n 'gitDecoration.submoduleResourceForeground': '#656d76',\n 'gitDecoration.untrackedResourceForeground': '#1a7f37',\n 'icon.foreground': '#656d76',\n 'input.background': '#ffffff',\n 'input.border': '#d0d7de',\n 'input.foreground': '#1f2328',\n 'input.placeholderForeground': '#6e7781',\n 'keybindingLabel.foreground': '#1f2328',\n 'list.activeSelectionBackground': '#afb8c133',\n 'list.activeSelectionForeground': '#1f2328',\n 'list.focusBackground': '#ddf4ff',\n 'list.focusForeground': '#1f2328',\n 'list.highlightForeground': '#0969da',\n 'list.hoverBackground': '#eaeef280',\n 'list.hoverForeground': '#1f2328',\n 'list.inactiveFocusBackground': '#ddf4ff',\n 'list.inactiveSelectionBackground': '#afb8c133',\n 'list.inactiveSelectionForeground': '#1f2328',\n 'minimapSlider.activeBackground': '#8c959f47',\n 'minimapSlider.background': '#8c959f33',\n 'minimapSlider.hoverBackground': '#8c959f3d',\n 'notificationCenterHeader.background': '#f6f8fa',\n 'notificationCenterHeader.foreground': '#656d76',\n 'notifications.background': '#ffffff',\n 'notifications.border': '#d0d7de',\n 'notifications.foreground': '#1f2328',\n 'notificationsErrorIcon.foreground': '#cf222e',\n 'notificationsInfoIcon.foreground': '#0969da',\n 'notificationsWarningIcon.foreground': '#9a6700',\n 'panel.background': '#f6f8fa',\n 'panel.border': '#d0d7de',\n 'panelInput.border': '#d0d7de',\n 'panelTitle.activeBorder': '#fd8c73',\n 'panelTitle.activeForeground': '#1f2328',\n 'panelTitle.inactiveForeground': '#656d76',\n 'pickerGroup.border': '#d0d7de',\n 'pickerGroup.foreground': '#656d76',\n 'progressBar.background': '#0969da',\n 'quickInput.background': '#ffffff',\n 'quickInput.foreground': '#1f2328',\n 'scrollbar.shadow': '#6e778133',\n 'scrollbarSlider.activeBackground': '#8c959f47',\n 'scrollbarSlider.background': '#8c959f33',\n 'scrollbarSlider.hoverBackground': '#8c959f3d',\n 'settings.headerForeground': '#1f2328',\n 'settings.modifiedItemIndicator': '#d4a72c66',\n 'sideBar.background': '#f6f8fa',\n 'sideBar.border': '#d0d7de',\n 'sideBar.foreground': '#1f2328',\n 'sideBarSectionHeader.background': '#f6f8fa',\n 'sideBarSectionHeader.border': '#d0d7de',\n 'sideBarSectionHeader.foreground': '#1f2328',\n 'sideBarTitle.foreground': '#1f2328',\n 'statusBar.background': '#ffffff',\n 'statusBar.border': '#d0d7de',\n 'statusBar.debuggingBackground': '#cf222e',\n 'statusBar.debuggingForeground': '#ffffff',\n 'statusBar.focusBorder': '#0969da80',\n 'statusBar.foreground': '#656d76',\n 'statusBar.noFolderBackground': '#ffffff',\n 'statusBarItem.activeBackground': '#1f23281f',\n 'statusBarItem.focusBorder': '#0969da',\n 'statusBarItem.hoverBackground': '#1f232814',\n 'statusBarItem.prominentBackground': '#afb8c133',\n 'statusBarItem.remoteBackground': '#eaeef2',\n 'statusBarItem.remoteForeground': '#1f2328',\n 'symbolIcon.arrayForeground': '#953800',\n 'symbolIcon.booleanForeground': '#0550ae',\n 'symbolIcon.classForeground': '#953800',\n 'symbolIcon.colorForeground': '#0a3069',\n 'symbolIcon.constantForeground': '#116329',\n 'symbolIcon.constructorForeground': '#3e1f79',\n 'symbolIcon.enumeratorForeground': '#953800',\n 'symbolIcon.enumeratorMemberForeground': '#0550ae',\n 'symbolIcon.eventForeground': '#57606a',\n 'symbolIcon.fieldForeground': '#953800',\n 'symbolIcon.fileForeground': '#7d4e00',\n 'symbolIcon.folderForeground': '#7d4e00',\n 'symbolIcon.functionForeground': '#6639ba',\n 'symbolIcon.interfaceForeground': '#953800',\n 'symbolIcon.keyForeground': '#0550ae',\n 'symbolIcon.keywordForeground': '#a40e26',\n 'symbolIcon.methodForeground': '#6639ba',\n 'symbolIcon.moduleForeground': '#a40e26',\n 'symbolIcon.namespaceForeground': '#a40e26',\n 'symbolIcon.nullForeground': '#0550ae',\n 'symbolIcon.numberForeground': '#116329',\n 'symbolIcon.objectForeground': '#953800',\n 'symbolIcon.operatorForeground': '#0a3069',\n 'symbolIcon.packageForeground': '#953800',\n 'symbolIcon.propertyForeground': '#953800',\n 'symbolIcon.referenceForeground': '#0550ae',\n 'symbolIcon.snippetForeground': '#0550ae',\n 'symbolIcon.stringForeground': '#0a3069',\n 'symbolIcon.structForeground': '#953800',\n 'symbolIcon.textForeground': '#0a3069',\n 'symbolIcon.typeParameterForeground': '#0a3069',\n 'symbolIcon.unitForeground': '#0550ae',\n 'symbolIcon.variableForeground': '#953800',\n 'tab.activeBackground': '#ffffff',\n 'tab.activeBorder': '#ffffff',\n 'tab.activeBorderTop': '#fd8c73',\n 'tab.activeForeground': '#1f2328',\n 'tab.border': '#d0d7de',\n 'tab.hoverBackground': '#ffffff',\n 'tab.inactiveBackground': '#f6f8fa',\n 'tab.inactiveForeground': '#656d76',\n 'tab.unfocusedActiveBorder': '#ffffff',\n 'tab.unfocusedActiveBorderTop': '#d0d7de',\n 'tab.unfocusedHoverBackground': '#eaeef280',\n 'terminal.ansiBlack': '#24292f',\n 'terminal.ansiBlue': '#0969da',\n 'terminal.ansiBrightBlack': '#57606a',\n 'terminal.ansiBrightBlue': '#218bff',\n 'terminal.ansiBrightCyan': '#3192aa',\n 'terminal.ansiBrightGreen': '#1a7f37',\n 'terminal.ansiBrightMagenta': '#a475f9',\n 'terminal.ansiBrightRed': '#a40e26',\n 'terminal.ansiBrightWhite': '#8c959f',\n 'terminal.ansiBrightYellow': '#633c01',\n 'terminal.ansiCyan': '#1b7c83',\n 'terminal.ansiGreen': '#116329',\n 'terminal.ansiMagenta': '#8250df',\n 'terminal.ansiRed': '#cf222e',\n 'terminal.ansiWhite': '#6e7781',\n 'terminal.ansiYellow': '#4d2d00',\n 'terminal.foreground': '#1f2328',\n 'textBlockQuote.background': '#f6f8fa',\n 'textBlockQuote.border': '#d0d7de',\n 'textCodeBlock.background': '#afb8c133',\n 'textLink.activeForeground': '#0969da',\n 'textLink.foreground': '#0969da',\n 'textPreformat.foreground': '#656d76',\n 'textSeparator.foreground': '#d8dee4',\n 'titleBar.activeBackground': '#ffffff',\n 'titleBar.activeForeground': '#656d76',\n 'titleBar.border': '#d0d7de',\n 'titleBar.inactiveBackground': '#f6f8fa',\n 'titleBar.inactiveForeground': '#656d76',\n 'tree.indentGuidesStroke': '#d8dee4',\n 'welcomePage.buttonBackground': '#f6f8fa',\n 'welcomePage.buttonHoverBackground': '#f3f4f6',\n },\n displayName: 'GitHub Light Default',\n semanticHighlighting: true,\n tokenColors: [\n {\n scope: ['comment', 'punctuation.definition.comment', 'string.comment'],\n settings: {\n foreground: '#6e7781',\n },\n },\n {\n scope: ['constant.other.placeholder', 'constant.character'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: [\n 'constant',\n 'entity.name.constant',\n 'variable.other.constant',\n 'variable.other.enummember',\n 'variable.language',\n 'entity',\n ],\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['entity.name', 'meta.export.default', 'meta.definition.variable'],\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: [\n 'variable.parameter.function',\n 'meta.jsx.children',\n 'meta.block',\n 'meta.tag.attributes',\n 'entity.name.constant',\n 'meta.object.member',\n 'meta.embedded.expression',\n ],\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: 'entity.name.function',\n settings: {\n foreground: '#8250df',\n },\n },\n {\n scope: ['entity.name.tag', 'support.class.component'],\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'keyword',\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['storage', 'storage.type'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: ['string', 'string punctuation.section.embedded source'],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: 'support',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.property-name',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'variable',\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: 'variable.other',\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: 'invalid.broken',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.deprecated',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.illegal',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.unimplemented',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'carriage-return',\n settings: {\n background: '#cf222e',\n content: '^M',\n fontStyle: 'italic underline',\n foreground: '#f6f8fa',\n },\n },\n {\n scope: 'message.error',\n settings: {\n foreground: '#82071e',\n },\n },\n {\n scope: 'string variable',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['source.regexp', 'string.regexp'],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: [\n 'string.regexp.character-class',\n 'string.regexp constant.character.escape',\n 'string.regexp source.ruby.embedded',\n 'string.regexp string.regexp.arbitrary-repitition',\n ],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: 'string.regexp constant.character.escape',\n settings: {\n fontStyle: 'bold',\n foreground: '#116329',\n },\n },\n {\n scope: 'support.constant',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'support.variable',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'support.type.property-name.json',\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'meta.module-reference',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'punctuation.definition.list.begin.markdown',\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: ['markup.heading', 'markup.heading entity.name'],\n settings: {\n fontStyle: 'bold',\n foreground: '#0550ae',\n },\n },\n {\n scope: 'markup.quote',\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'markup.italic',\n settings: {\n fontStyle: 'italic',\n foreground: '#1f2328',\n },\n },\n {\n scope: 'markup.bold',\n settings: {\n fontStyle: 'bold',\n foreground: '#1f2328',\n },\n },\n {\n scope: ['markup.underline'],\n settings: {\n fontStyle: 'underline',\n },\n },\n {\n scope: ['markup.strikethrough'],\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n scope: 'markup.inline.raw',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],\n settings: {\n background: '#ffebe9',\n foreground: '#82071e',\n },\n },\n {\n scope: ['punctuation.section.embedded'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],\n settings: {\n background: '#dafbe1',\n foreground: '#116329',\n },\n },\n {\n scope: ['markup.changed', 'punctuation.definition.changed'],\n settings: {\n background: '#ffd8b5',\n foreground: '#953800',\n },\n },\n {\n scope: ['markup.ignored', 'markup.untracked'],\n settings: {\n background: '#0550ae',\n foreground: '#eaeef2',\n },\n },\n {\n scope: 'meta.diff.range',\n settings: {\n fontStyle: 'bold',\n foreground: '#8250df',\n },\n },\n {\n scope: 'meta.diff.header',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.separator',\n settings: {\n fontStyle: 'bold',\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.output',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: [\n 'brackethighlighter.tag',\n 'brackethighlighter.curly',\n 'brackethighlighter.round',\n 'brackethighlighter.square',\n 'brackethighlighter.angle',\n 'brackethighlighter.quote',\n ],\n settings: {\n foreground: '#57606a',\n },\n },\n {\n scope: 'brackethighlighter.unmatched',\n settings: {\n foreground: '#82071e',\n },\n },\n {\n scope: ['constant.other.reference.link', 'string.other.link'],\n settings: {\n foreground: '#0a3069',\n },\n },\n ],\n type: 'light',\n}\n\nexport const dark = {\n type: 'dark',\n colors: {\n 'dropdown.background': '#525252',\n 'list.activeSelectionBackground': '#707070',\n 'quickInputList.focusBackground': '#707070',\n 'list.inactiveSelectionBackground': '#4e4e4e',\n 'list.hoverBackground': '#444444',\n 'list.highlightForeground': '#e58520',\n 'button.background': '#565656',\n 'editor.background': '#1e1e1e',\n 'editor.foreground': '#c5c8c6',\n 'editor.selectionBackground': '#676b7180',\n 'minimap.selectionHighlight': '#676b7180',\n 'editor.selectionHighlightBackground': '#575b6180',\n 'editor.lineHighlightBackground': '#303030',\n 'editorLineNumber.activeForeground': '#949494',\n 'editor.wordHighlightBackground': '#4747a180',\n 'editor.wordHighlightStrongBackground': '#6767ce80',\n 'editorCursor.foreground': '#c07020',\n 'editorWhitespace.foreground': '#505037',\n 'editorIndentGuide.background': '#505037',\n 'editorIndentGuide.activeBackground': '#707057',\n 'editorGroupHeader.tabsBackground': '#282828',\n 'tab.inactiveBackground': '#404040',\n 'tab.border': '#303030',\n 'tab.inactiveForeground': '#d8d8d8',\n 'tab.lastPinnedBorder': '#505050',\n 'peekView.border': '#3655b5',\n 'panelTitle.activeForeground': '#ffffff',\n 'statusBar.background': '#505050',\n 'statusBar.debuggingBackground': '#505050',\n 'statusBar.noFolderBackground': '#505050',\n 'titleBar.activeBackground': '#505050',\n 'statusBarItem.remoteBackground': '#3655b5',\n 'ports.iconRunningProcessForeground': '#CCCCCC',\n 'activityBar.background': '#353535',\n 'activityBar.foreground': '#ffffff',\n 'activityBarBadge.background': '#3655b5',\n 'sideBar.background': '#272727',\n 'sideBarSectionHeader.background': '#505050',\n 'menu.background': '#272727',\n 'menu.foreground': '#CCCCCC',\n 'pickerGroup.foreground': '#b0b0b0',\n 'inputOption.activeBorder': '#3655b5',\n focusBorder: '#3655b5',\n 'terminal.ansiBlack': '#1e1e1e',\n 'terminal.ansiRed': '#C4265E', // the bright color with ~75% transparent on the background\n 'terminal.ansiGreen': '#86B42B',\n 'terminal.ansiYellow': '#B3B42B',\n 'terminal.ansiBlue': '#6A7EC8',\n 'terminal.ansiMagenta': '#8C6BC8',\n 'terminal.ansiCyan': '#56ADBC',\n 'terminal.ansiWhite': '#e3e3dd',\n 'terminal.ansiBrightBlack': '#666666',\n 'terminal.ansiBrightRed': '#f92672',\n 'terminal.ansiBrightGreen': '#A6E22E',\n 'terminal.ansiBrightYellow': '#e2e22e', // hue shifted #A6E22E\n 'terminal.ansiBrightBlue': '#819aff', // hue shifted #AE81FF\n 'terminal.ansiBrightMagenta': '#AE81FF',\n 'terminal.ansiBrightCyan': '#66D9EF',\n 'terminal.ansiBrightWhite': '#f8f8f2',\n 'terminal.inactiveSelectionBackground': '#676b7140',\n },\n tokenColors: [\n {\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n scope: ['meta.embedded', 'source.groovy.embedded', 'variable.legacy.builtin.python'],\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n name: 'Comment',\n scope: 'comment',\n settings: {\n fontStyle: '',\n foreground: '#9A9B99',\n },\n },\n {\n name: 'String',\n scope: 'string',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'String Embedded Source',\n scope: 'string source',\n settings: {\n fontStyle: '',\n foreground: '#D08442',\n },\n },\n {\n name: 'Number',\n scope: 'constant.numeric',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Built-in constant',\n scope: 'constant.language',\n settings: {\n fontStyle: '',\n foreground: '#408080',\n },\n },\n {\n name: 'User-defined constant',\n scope: 'constant.character, constant.other',\n settings: {\n fontStyle: '',\n foreground: '#8080FF',\n },\n },\n {\n name: 'Keyword',\n scope: 'keyword',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Support',\n scope: 'support',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'Storage',\n scope: 'storage',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Class name',\n scope:\n 'entity.name.class, entity.name.type, entity.name.namespace, entity.name.scope-resolution',\n settings: {\n fontStyle: '',\n foreground: '#9B0000',\n },\n },\n {\n name: 'Inherited class',\n scope: 'entity.other.inherited-class',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'Function name',\n scope: 'entity.name.function',\n settings: {\n fontStyle: '',\n foreground: '#CE6700',\n },\n },\n {\n name: 'Function argument',\n scope: 'variable.parameter',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Tag name',\n scope: 'entity.name.tag',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag attribute',\n scope: 'entity.other.attribute-name',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Library function',\n scope: 'support.function',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Keyword',\n scope: 'keyword',\n settings: {\n fontStyle: '',\n foreground: '#676867',\n },\n },\n {\n name: 'Class Variable',\n scope: 'variable.other, variable.js, punctuation.separator.variable',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Meta Brace',\n scope:\n 'punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html',\n settings: {\n fontStyle: '',\n foreground: '#008200',\n },\n },\n {\n name: 'Invalid',\n scope: 'invalid',\n settings: {\n fontStyle: '',\n foreground: '#FF0B00',\n },\n },\n {\n name: 'Normal Variable',\n scope: 'variable.other.php, variable.other.normal',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Function Object',\n scope: 'meta.function-call.object',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Function Call Variable',\n scope: 'variable.other.property',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Keyword Control / Special',\n scope: [\n 'keyword.control',\n 'keyword.operator.new.cpp',\n 'keyword.operator.delete.cpp',\n 'keyword.other.using',\n 'keyword.other.directive.using',\n 'keyword.other.operator',\n ],\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag',\n scope: 'meta.tag',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Tag Name',\n scope: 'entity.name.tag',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Doctype',\n scope: 'meta.doctype, meta.tag.sgml-declaration.doctype, meta.tag.sgml.doctype',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Tag Inline Source',\n scope: 'meta.tag.inline source, text.html.php.source',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Tag Other',\n scope:\n 'meta.tag.other, entity.name.tag.style, entity.name.tag.script, meta.tag.block.script, source.js.embedded punctuation.definition.tag.html, source.css.embedded punctuation.definition.tag.html',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag Attribute',\n scope: 'entity.other.attribute-name, meta.tag punctuation.definition.string',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Tag Value',\n scope: 'meta.tag string -source -punctuation, text source text meta.tag string -punctuation',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Meta Brace',\n scope:\n 'punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'HTML ID',\n scope: 'meta.toc-list.id',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'HTML String',\n scope:\n 'string.quoted.double.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html, punctuation.definition.string.end.html source, string.quoted.double.html source',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'HTML Tags',\n scope:\n 'punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'CSS ID',\n scope: 'meta.selector entity.other.attribute-name.id',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'CSS Property Name',\n scope: 'source.css support.type.property-name',\n settings: {\n fontStyle: '',\n foreground: '#676867',\n },\n },\n {\n name: 'CSS Property Value',\n scope:\n 'meta.property-group support.constant.property-value, meta.property-value support.constant.property-value',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'JavaScript Variable',\n scope: 'variable.language.js',\n settings: {\n foreground: '#CC555A',\n },\n },\n {\n name: 'Template Definition',\n scope: ['punctuation.definition.template-expression', 'punctuation.section.embedded.coffee'],\n settings: {\n foreground: '#D08442',\n },\n },\n {\n name: 'Reset JavaScript string interpolation expression',\n scope: ['meta.template.expression'],\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n name: 'PHP Function Call',\n scope: 'meta.function-call.object.php',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'PHP Single Quote HMTL Fix',\n scope: 'punctuation.definition.string.end.php, punctuation.definition.string.begin.php',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'PHP Parenthesis HMTL Fix',\n scope: 'source.php.embedded.line.html',\n settings: {\n foreground: '#676867',\n },\n },\n {\n name: 'PHP Punctuation Embedded',\n scope: 'punctuation.section.embedded.begin.php, punctuation.section.embedded.end.php',\n settings: {\n fontStyle: '',\n foreground: '#D08442',\n },\n },\n {\n name: 'Ruby Symbol',\n scope: 'constant.other.symbol.ruby',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Ruby Variable',\n scope: 'variable.language.ruby',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Ruby Special Method',\n scope: 'keyword.other.special-method.ruby',\n settings: {\n fontStyle: '',\n foreground: '#D9B700',\n },\n },\n {\n name: 'Ruby Embedded Source',\n scope: ['punctuation.section.embedded.begin.ruby', 'punctuation.section.embedded.end.ruby'],\n settings: {\n foreground: '#D08442',\n },\n },\n {\n name: 'SQL',\n scope: 'keyword.other.DML.sql',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'diff: header',\n scope: 'meta.diff, meta.diff.header',\n settings: {\n fontStyle: 'italic',\n foreground: '#E0EDDD',\n },\n },\n {\n name: 'diff: deleted',\n scope: 'markup.deleted',\n settings: {\n fontStyle: '',\n foreground: '#dc322f',\n },\n },\n {\n name: 'diff: changed',\n scope: 'markup.changed',\n settings: {\n fontStyle: '',\n foreground: '#cb4b16',\n },\n },\n {\n name: 'diff: inserted',\n scope: 'markup.inserted',\n settings: {\n foreground: '#219186',\n },\n },\n {\n name: 'Markup Quote',\n scope: 'markup.quote',\n settings: {\n foreground: '#9872A2',\n },\n },\n {\n name: 'Markup Lists',\n scope: 'markup.list',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Markup Styling',\n scope: 'markup.bold, markup.italic',\n settings: {\n foreground: '#6089B4',\n },\n },\n {\n name: 'Markup Inline',\n scope: 'markup.inline.raw',\n settings: {\n fontStyle: '',\n foreground: '#FF0080',\n },\n },\n {\n name: 'Markup Headings',\n scope: 'markup.heading',\n settings: {\n foreground: '#D0B344',\n },\n },\n {\n name: 'Markup Setext Header',\n scope: 'markup.heading.setext',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Markdown Headings',\n scope: 'markup.heading.markdown',\n settings: {\n fontStyle: 'bold',\n },\n },\n {\n name: 'Markdown Quote',\n scope: 'markup.quote.markdown',\n settings: {\n fontStyle: 'italic',\n foreground: '',\n },\n },\n {\n name: 'Markdown Bold',\n scope: 'markup.bold.markdown',\n settings: {\n fontStyle: 'bold',\n },\n },\n {\n name: 'Markdown Link Title/Description',\n scope: 'string.other.link.title.markdown,string.other.link.description.markdown',\n settings: {\n foreground: '#AE81FF',\n },\n },\n {\n name: 'Markdown Underline Link/Image',\n scope: 'markup.underline.link.markdown,markup.underline.link.image.markdown',\n settings: {\n foreground: '',\n },\n },\n {\n name: 'Markdown Emphasis',\n scope: 'markup.italic.markdown',\n settings: {\n fontStyle: 'italic',\n },\n },\n {\n scope: 'markup.strikethrough',\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n name: 'Markdown Punctuation Definition Link',\n scope: 'markup.list.unnumbered.markdown, markup.list.numbered.markdown',\n settings: {\n foreground: '',\n },\n },\n {\n name: 'Markdown List Punctuation',\n scope: ['punctuation.definition.list.begin.markdown'],\n settings: {\n foreground: '',\n },\n },\n {\n scope: 'token.info-token',\n settings: {\n foreground: '#6796e6',\n },\n },\n {\n scope: 'token.warn-token',\n settings: {\n foreground: '#cd9731',\n },\n },\n {\n scope: 'token.error-token',\n settings: {\n foreground: '#f44747',\n },\n },\n {\n scope: 'token.debug-token',\n settings: {\n foreground: '#b267e6',\n },\n },\n {\n name: 'this.self',\n scope: 'variable.language',\n settings: {\n foreground: '#c7444a',\n },\n },\n ],\n semanticHighlighting: true,\n}\n","import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\nimport { dark, light } from './shiki-themes'\n\nfunction stripElement(openTag: string, data: string) {\n const openIndex = data.indexOf(`<${openTag}`)\n let closeIndex = openIndex + openTag.length\n\n for (let i = openIndex; i < data.length; i += 1) {\n if (data[i] === '>') {\n closeIndex = i\n break\n }\n }\n\n const striped = data.slice(0, openIndex) + data.slice(closeIndex + 1)\n return striped.replace(`</${openTag}>`, '')\n}\n\nexport function stripShikiCodeBlocks(data: string) {\n return stripElement('code', stripElement('pre', data))\n}\n\ninterface CreateShikiAdapterOptions {\n forceColorScheme?: 'dark' | 'light' | (string & {})\n resolveLanguage?: (language: string) => any\n}\n\nconst specialLanguages = ['text', 'plaintext', 'txt', 'plain', 'ansi']\n\nfunction isLanguageAvailable(ctx: any, language: string | undefined) {\n return (\n !language ||\n specialLanguages.includes(language) ||\n typeof ctx.getLoadedLanguages !== 'function' ||\n ctx.getLoadedLanguages().includes(language)\n )\n}\n\nexport const createShikiAdapter = (\n loadShiki: () => Promise<any>,\n { forceColorScheme, resolveLanguage }: CreateShikiAdapterOptions = {},\n): CodeHighlightAdapter => {\n const warnedLanguages = new Set<string>()\n const warnUnavailable = (language: string, reason: string) => {\n if (warnedLanguages.has(language)) return\n warnedLanguages.add(language)\n // oxlint-disable-next-line no-console\n console.warn(\n `[@mantine-vue/code-highlight] Language \\`${language}\\` ${reason}, code is rendered as plain text.`,\n )\n }\n\n return {\n loadContext: loadShiki,\n loadLanguage: resolveLanguage\n ? (ctx, language) => {\n if (isLanguageAvailable(ctx, language)) return undefined\n const onLoadError = (error: unknown) => {\n warnUnavailable(language, 'could not be loaded')\n throw error\n }\n try {\n const grammar = resolveLanguage(language)\n if (!grammar) {\n warnUnavailable(language, 'was not resolved by `resolveLanguage`')\n return undefined\n }\n return Promise.resolve(ctx.loadLanguage(grammar)).catch(onLoadError)\n } catch (error) {\n return Promise.reject(error).catch(onLoadError)\n }\n }\n : undefined,\n getHighlighter: (ctx) => {\n if (!ctx) {\n return ({ code }) => ({ highlightedCode: code, isHighlighted: false })\n }\n\n return ({ code, language, colorScheme }) => {\n if (!isLanguageAvailable(ctx, language)) {\n if (!resolveLanguage && language) warnUnavailable(language, 'is not loaded')\n return { highlightedCode: code, isHighlighted: false }\n }\n let _colorScheme: any = colorScheme\n\n if (colorScheme === 'light') {\n _colorScheme = light\n } else if (colorScheme === 'dark') {\n _colorScheme = dark\n }\n\n return {\n isHighlighted: true,\n highlightedCode: stripShikiCodeBlocks(\n ctx.codeToHtml(code, {\n lang: language,\n theme: forceColorScheme || _colorScheme,\n }),\n ),\n }\n }\n },\n }\n}\n"],"mappings":";;;;;AAEA,IAAa,mBAAyC,EACpD,uBAEG,EAAE,YAAY;CAAE,iBAAiB;CAAM,eAAe;AAAM,GACjE;;;;;;;;;;;ECAA,MAAM,QAAQ;EACd,MAAM,WAAA,GAAA,IAAA,KAAmB,IAAI;EAC7B,MAAM,iBAAA,GAAA,IAAA,KAAoB,KAAK;EAC/B,MAAM,mBAAA,GAAA,IAAA,KAAgC,CAAC,CAAC;EACxC,MAAM,qCAAqB,IAAI,IAAY;EAC3C,IAAI,aAAa;EACjB,MAAM,aAAA,GAAA,IAAA,gBAA2B,MAAM,QAAQ,eAAe,QAAQ,KAAK,CAAC;EAE5E,CAAA,GAAA,IAAA,aACQ,MAAM,SACZ,OAAO,YAAY;GACjB,MAAM,oBAAoB,EAAE;GAC5B,QAAQ,QAAQ;GAChB,cAAc,QAAQ,CAAC,QAAQ;GAC/B,gBAAgB,QAAQ,CAAC;GACzB,mBAAmB,MAAM;GACzB,IAAI,QAAQ,aAAa;IACvB,MAAM,QAAQ,MAAM,QAAQ,YAAY;IACxC,IAAI,sBAAsB,YAAY;KACpC,QAAQ,QAAQ;KAChB,cAAc,QAAQ;IACxB;GACF;EACF,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,SAAS,aAAa,UAA8B;GAClD,IACE,CAAC,cAAc,SACf,CAAC,YACD,CAAC,MAAM,QAAQ,gBACf,mBAAmB,IAAI,QAAQ,GAE/B;GAEF,MAAM,oBAAoB;GAC1B,mBAAmB,IAAI,QAAQ;GAC/B,IAAI;GACJ,IAAI;IACF,SAAS,MAAM,QAAQ,aAAa,QAAQ,OAAO,QAAQ;GAC7D,QAAQ;IACN,mBAAmB,OAAO,QAAQ;IAClC;GACF;GACA,QAAQ,WACA;IACJ,IAAI,sBAAsB,cAAc,CAAC,gBAAgB,MAAM,SAAS,QAAQ,GAC9E,gBAAgB,QAAQ,CAAC,GAAG,gBAAgB,OAAO,QAAQ;GAE/D,SACM,sBAAsB,cAAc,mBAAmB,OAAO,QAAQ,CAC9E;EACF;EAEA,mCAAmC;GACjC,IAAI,UAAU;IACZ,OAAO,MAAM;GACf;GACA,IAAI,YAAY;IACd,OAAO,UAAU;GACnB;GACA;GACA,mBAAmB,aACjB,CAAC,YAAY,CAAC,MAAM,QAAQ,gBAAgB,gBAAgB,MAAM,SAAS,QAAQ;EACvF,CAAC;;4DAI8C,OAA7C,cAA6C,EAAA,GAAA,IAAA,YAAN,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;AEtEzC,IAAM,uBAAuB,OAAO,sBAAsB;AAE1D,SAAgB,mCAAmC,OAAqC;CACtF,CAAA,GAAA,IAAA,SAAQ,sBAAsB,KAAK;AACrC;AAEA,SAAgB,eAAe;CAC7B,MAAM,OAAA,GAAA,IAAA,QAAkD,sBAAsB,IAAI;CAClF,MAAM,WAAW,iBAAiB,eAAe,IAAI;CACrD,QAAQ,WACL,KAAK,aAAa,UAAU,KAAK;AACtC;AAEA,SAAgB,kBAAkB;CAEhC,QAAA,GAAA,IAAA,QADwD,sBAAsB,IACvE,GAAK,uBAAuB,CAAC;AACtC;AAEA,SAAgB,sBAAsB;CAEpC,QAAA,GAAA,IAAA,QADwD,sBAAsB,IACvE,GAAK,2BAA2B;AACzC;AAEA,IAAa,+BAA+B;;;;ACtB5C,SAAgB,cACd,MACA,EAAE,6BAAmD,CAAC,GACtD;CACA,OAAO,2BAA2B,KAAK,QAAQ,+BAA+B,EAAE,IAAI,KAAK,KAAK;AAChG;;;ACJA,IAAa,CAAC,6BAA6B,4BAAA,GAAA,kBAAA,mBAEvC,2DACF;;;;;;;;;;;;;;;;ECCF,MAAM,WAAW;EAEjB,MAAM,OAAO;EACb,MAAM,SAAA,GAAA,kBAAA,UAAiB,wBAAwB,MAAM,QAAQ;EAC7D,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,MAAM,wBAAwB;EACpC,MAAM,iBAAA,GAAA,IAAA,gBAA+B,IAAI,UAAU,gBAAgB,CAAC;;yBAK1D,KAAA,EAAM,iBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OAkBJ,kBAAA,OAAA,GAAA;;IAjBP,QAAA,GAAA,IAAA,OAAO,KAAA,EAAM;IACd,IAAG;IACH,UAAS;IACR,eAAW,EAAA,SAAa,cAAA,MAAc,MAAK;IAC3C,QAAM,EAAA,SAAa,cAAA,MAAc,MAAK;IACtC,2BAAA,GAAA,IAAA,OAAwB,GAAA,EAAI;IAC5B,oBAAkB,EAAA,UAAA,EAAA;;oCAUN,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OAAA,kBAAA,UAAA,IAAA,GAAA,IAAA,YAAA;KAAA,IAAA,GAAA,IAAA,OAPE,GAAA,EAAI,UAAS,SAAA;KAAA,IAAA,GAAA,IAAA,OAAgB,KAAA;IAAK,GAAA;KAC9C,YAAA,GAAA,IAAA,OAAW,KAAA,EAAM;KACjB,SAAS;KACT,2BAAA,GAAA,IAAA,OAAwB,GAAA,EAAI;KAC5B,SAAK,OAAA,OAAA,OAAA,MAAG,UAAsB,KAAI,SAAU,KAAK;;qCAE1C,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;;;;oEAYC,kBAAA,UAAA,IAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;IAAA,IAAA,GAAA,IAAA,OAPE,GAAA,EAAI,UAAS,SAAA;IAAA,IAAA,GAAA,IAAA,OAAgB,KAAA;GAAK,GAAA;IAC9C,YAAA,GAAA,IAAA,OAAW,KAAA,EAAM;IACjB,SAAS;IACT,2BAAA,GAAA,IAAA,OAAwB,GAAA,EAAI;IAC5B,SAAK,OAAA,OAAA,OAAA,MAAG,UAAsB,KAAI,SAAU,KAAK;;oCAE1C,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;;;;;;;;;;4DExBJ,QAAA,GAAA,IAAA,YAlBIA,KAkBJ,QAlBU;IACd,OAAM;IACN,SAAQ;IACR,gBAAa;IACb,QAAO;IACP,MAAK;IACL,kBAAe;IACf,mBAAgB;QAEA,QAAA,WAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAGL,IAAA,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,oBAF2C,QAAA;IAA9C,QAAO;IAAO,GAAE;IAAgB,MAAK;wEACd,QAAA,EAAvB,GAAE,mBAAkB,GAAA,MAAA,EAAA,EAAA,GAAA,EAAA,OAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAMjB,IAAA,UAAA,EAAA,KAAA,EAAA,GAAA;0DAH2C,QAAA;KAA9C,QAAO;KAAO,GAAE;KAAgB,MAAK;;0DAC8C,QAAA,EAAnF,GAAE,+EAA8E,GAAA,MAAA,EAAA;0DACb,QAAA,EAAnE,GAAE,+DAA8D,GAAA,MAAA,EAAA;;;;;;;;;;;;;;;;EEX5E,MAAM,QAAQ;EAId,MAAM,aAAA,GAAA,mBAAA,cAAyB;;qDAWN,8BAAA;IANrB,SAAQ;IACP,kBAAA,GAAA,IAAA,OAAe,SAAA,EAAU,OAAO,QAAQ,MAAM,cAAc,MAAM;IAClE,eAAA,GAAA,IAAA,OAAY,SAAA,EAAU,OAAO,QAAQ,MAAM,cAAW,GAAM,MAAM,UAAS;IAC3E,SAAK,OAAA,OAAA,OAAA,MAAA,YAAA,GAAA,IAAA,OAAE,SAAA,EAAU,KAAK,MAAM,IAAI;;oCAEY,EAAA,GAAA,IAAA,aAAA,kBAAA,EAAlC,SAAA,GAAA,IAAA,OAAQ,SAAA,EAAU,OAAO,MAAA,GAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;4DEKhC,QAAA,GAAA,IAAA,YAxBIC,KAwBJ,QAxBU;IACd,OAAM;IACN,SAAQ;IACR,gBAAa;IACb,QAAO;IACP,MAAK;IACL,kBAAe;IACf,mBAAgB;8DAEoC,QAAA;IAA9C,QAAO;IAAO,GAAE;IAAgB,MAAK;kBAC3B,QAAA,aAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAML,IAAA,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,mBAAA,sKAAA,CAAA,EAAA,GAAA,EAAA,OAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAOA,IAAA,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,mBAAA,gKAAA,CAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA;;;;;;;;;;;;;;;;EEhBf,MAAM,QAAQ;EAId,MAAM,OAAO;;qDAUY,8BAAA;IALpB,iBAAe,MAAM,WAAW,MAAM,oBAAoB,MAAM;IAChE,cAAY,MAAM,WAAW,MAAM,oBAAoB,MAAM;IAC7D,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAA,CAAY,MAAM,QAAQ;;oCAEG,EAAA,GAAA,IAAA,aAAA,oBAAA,EAA5B,UAAU,MAAM,SAAA,GAAA,MAAA,GAAA,CAAA,UAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGxBjC,IAAM,kBAAA,GAAA,kBAAA,qBACH,OAAO,EAAE,oBAAoB,YAAY,cAAc,EACtD,eAAe;CACb,oBAAA,GAAA,kBAAA,KAAuB,kBAAkB;CACzC,mBAAmB,cAAA,GAAA,kBAAA,eAA2B,YAAY,KAAK,IAAI,KAAA;CACnE,eAAe,OAAO,WAAW,eAAA,GAAA,kBAAA,WAAwB,MAAM,IAAI,KAAA;AACrE,EACF,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCA,MAAM,WAAW;EAcjB,MAAM,OAAO;EACb,MAAM,SAAA,GAAA,kBAAA,UAAiB,iBAAiB,MAAM,QAAQ;EACtD,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,WAAA,GAAA,kBAAA,mBAA4B;EAClC,MAAM,aAAA,GAAA,kBAAA,WAA4C;GAChD,MAAM,MAAM,oBAAoB;GAChC,SAAA;GACA;GACA,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,YAAY,MAAM;GAClB,QAAQ,MAAM;GACd,MAAM,MAAM;GACZ,UAAU,MAAM;GAChB,cAAA;GACA,cAAc;EAChB,CAAQ;EACR,MAAM,CAAC,UAAU,gBAAA,GAAA,mBAAA,iBAAwC;GACvD,aAAa,MAAM;GACnB,cAAc,MAAM;GACpB,YAAY;GACZ,WAAW,UAAU;IACnB,KAAK,mBAAmB,KAAK;IAC7B,KAAK,mBAAmB,KAAK;GAC/B;EACF,CAAC;EACD,MAAM,YAAY,aAAa;EAC/B,MAAM,eAAe,gBAAgB;EACrC,MAAM,mBAAmB,oBAAoB;EAC7C,MAAM,kBAAA,GAAA,IAAA,gBACJ,cAAc,MAAM,MAAM,EAAE,0BAA0B,MAAM,yBAAyB,CAAC,CACxF;EAEA,CAAA,GAAA,IAAA,mBAAkB,aAAa,MAAM,QAAQ,CAAC;EAE9C,SAAS,mBAAmB,OAAoD;GAC9E,IAAI,UAAU,QAAQ,OAAO;GAC7B,OAAO,OAAO,WAAW,eACvB,OAAO,aAAa,8BAA8B,EAAE,UAClD,SACA;EACN;EAEA,MAAM,eAAA,GAAA,IAAA,gBAA6B;GACjC,iBAAiB,MAAM,QAAQ;GAC/B,OAAO,UAAU;IACf,MAAM,eAAe;IACrB,UAAU,MAAM;IAChB,aAAa,MAAM,mBAAmB,mBAAmB,QAAQ,YAAY,KAAK;GACpF,CAAC;EACH,CAAC;EACD,MAAM,oBAAA,GAAA,IAAA,gBAAkC;GACtC,MAAM,QACJ,MAAM,aAAa,KAAA,IACf,OAAO,MAAM,aAAa,aACxB,MAAM,SAAS,IACf,MAAM,WACR,MAAM,WAAW;GACvB,OAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC,KAAK,IAAI,CAAC;EAC3D,CAAC;EACD,MAAM,yBAAA,GAAA,IAAA,gBACE,iBAAiB,MAAM,SAAS,KAAK,MAAM,oBAAoB,MAAM,cAC7E;EACA,MAAM,eAAA,GAAA,IAAA,gBAA6B,eAAe,MAAM,MAAM,IAAI,EAAE,KAAK,GAAG,UAAU,QAAQ,CAAC,CAAC;EAChG,MAAM,uBAAuB,iBAAiB;EAE9C,4BAA4B;GAC1B;GACA,IAAI,kBAAkB;IACpB,OAAO,MAAM;GACf;EACF,CAAC;;yBAKS,KAAA,EAAM,YAAY,YAAA,MAAY,kBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAWpC,SAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;sBAVmB,KAAA;OAAgB,YAAA,MAAY;sBAA2B,SAAA,EAAS,iBAAA;iBAAwC,YAAA,MAAY,kBAAkB,QAAA,GAAA,IAAA,OAAO,KAAA,EAAM,KAAK;aAAmB,YAAA,MAAY,kBAAkB,QAAA,GAAA,IAAA,OAAO,KAAA,EAAM,KAAK;;;IAQ7O,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,cAAc,KAAA;IACvC,WAAQ,YAAA,MAAY;+CAGT,KAAA,EAAM,aAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAWlB,SAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;sBAVoB,KAAA;OAAgB,YAAA,MAAY;sBAA2B,SAAA,EAAS,iBAAA;iBAAwC,YAAA,MAAY,kBAAkB,QAAA,GAAA,IAAA,OAAO,KAAA,EAAM,KAAK;aAAmB,YAAA,MAAY,kBAAkB,QAAA,GAAA,IAAA,OAAO,KAAA,EAAM,KAAK;;QAQ7O,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,cAAc,KAAA,EAAA,CAAA,IAAA,GAAA,IAAA,iBACnC,eAAA,KAAc,GAAA,IAAA,UAAA,OAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OA4Ed,kBAAA,GAAA,IAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;IAAA,IAAA,GAAA,IAAA,OAxES,KAAA;IAAK,IAAA,GAAA,IAAA,OAAK,SAAA,EAAS,eAAA;GAAA,GAAA;IAChC,KAAI;IACH,2BAAA,GAAA,IAAA,OAAwB,KAAA,EAAM;IAC9B,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,cAAc,KAAA;;oCAqBjC;KAlBE,sBAAA,UAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAkBF,QAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,IAAA,GAAA,IAAA,OAjBI,SAAA,EAAS,UAAA,GAAA,EAChB,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,gBAAgB,KAAA,EAAA,CAAA,GAAA;mFAEzB,cAAc,CAAA;qBAEtB,KAAA,EAAM,qBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,aAKZ,0BAAA;;OAJC,WAAA,GAAA,IAAA,OAAU,QAAA;OACV,sBAAA,GAAA,IAAA,OAAmB,KAAA,EAAM;OACzB,wBAAA,GAAA,IAAA,OAAqB,KAAA,EAAM;OAC3B,WAAA,GAAA,IAAA,OAAQ,WAAA;;;;;;;qBAGH,KAAA,EAAM,mBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,aAIZ,wBAAA;;OAHC,MAAM,eAAA;OACN,iBAAA,GAAA,IAAA,OAAc,KAAA,EAAM;OACpB,eAAA,GAAA,IAAA,OAAY,KAAA,EAAM;;;;;;;yCAyCV,kBAAA,UAAA,IAAA,GAAA,IAAA,YAAA;MArCX,MAAK;MACJ,kBAAgB;MACjB,KAAI;MACH,qBAAmB;MACnB,kBAAc,EAAA,GAAA,IAAA,OAAG,QAAA,KAAY,KAAA;MAC7B,QAAQ,EAAA,UAAA,EAAA,0BAAA,OAAA,EAAA;uBACD,SAAA,EAAS,YAAA,CAAA,GAAA;sCA8BX,EAAA,GAAA,IAAA,oBAAA,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,qBAAA,GAAA,IAAA,OA5BO,SAAA,EAAS,aAAA,CAAA,CAAA,GAAA,EAAA,GAAA,IAAA,OAEZ,KAAA,EAAM,oBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAKR,QAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,IAAA,GAAA,IAAA,OAJI,SAAA,EAAS,aAAA,GAAA,EAChB,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,gBAAgB,KAAA,EAAA,CAAA,GAAA,GAAA,GAAA,IAAA,WAAA,IAAA,IAAA,GAAA,IAAA,oBAEoB,IAAA,UAAA,OAAA,GAAA,IAAA,YAAzC,YAAA,QAAR,SAAI;gEAA6C,OAAA,EAA3B,KAAK,KAAI,IAAA,GAAA,IAAA,iBAAK,IAAI,GAAA,CAAA;wGAqBpB,QAAA,GAAA,IAAA,aAAA,GAAA,IAAA,OAAA,SAAA,EAnBZ,KAAA,GAAA,EAAU,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM,gBAAgB,KAAA,EAAA,CAAA,GAAA,CAChE,YAAA,MAAY,kBAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBASlB,SAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;UARyB,YAAA,MAAY;yBAAiC,SAAA,EAAS,QAAA;mBAAoC,YAAA,MAAY,kBAAkB;eAA4B,YAAA,MAAY,kBAAkB;;WAO3M,WAAQ,YAAA,MAAY,gBAAA,CAAA,GAAA,MAAA,IAAA,UAAA,OAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAUM,SAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;UAPD,YAAA,MAAY;yBAAiC,SAAA,EAAS,QAAA;mBAAoC,YAAA,MAAY,kBAAkB;eAA4B,YAAA,MAAY,kBAAkB;;oCAOzM,eAAA,KAAc,GAAA,EAAA,EAAA,GAAA,IAAA,UAAA,CAAA,GAAA,EAAA,CAAA,CAAA;;;yCAUL,kBAAA,cAAA,IAAA,GAAA,IAAA,aAAA,GAAA,IAAA,OAAA,SAAA,EANE,gBAAA,GAAA;MAChB,KAAG,EAAA,SAAA,GAAA,IAAA,OAAY,QAAA,EAAQ;MACvB,2BAAA,GAAA,IAAA,OAAwB,KAAA,EAAM;MAC9B,SAAK,OAAA,OAAA,OAAA,MAAA,YAAA,GAAA,IAAA,OAAE,WAAA,EAAW,IAAA;;sCAEQ,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OAAxB,KAAA,EAAM,eAAe,GAAA,CAAA,CAAA,CAAA;;;;;;;;;;;AErO9B,IAAa,gBAAgB,OAAO,OAAO,uBAAwB;CACjE,SAAA;CACA,cAAA;CACA,SAAS;AACX,CAAC;;;ACND,IAAM,gBAAA,GAAA,kBAAA,qBAAwC,OAAO,EAAE,YAAY,cAAc,EAC/E,qBAAqB;CACnB,mBAAmB,cAAA,GAAA,kBAAA,eAA2B,YAAY,KAAK,IAAI,KAAA;CACnE,eAAe,OAAO,WAAW,eAAA,GAAA,kBAAA,WAAwB,MAAM,IAAI,KAAA;AACrE,EACF,EAAE;;;AELF,IAAa,sBAAsB,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;EFqBjD,MAAM,SAAA,GAAA,kBAAA,UAAiB,uBAAuB,MAAM,OAAQ;EAC5D,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,aAAA,GAAA,kBAAA,WAAkD;GACtD,MAAM;GACN,SAAA;GACA;GACA,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,YAAY,MAAM;GAClB,QAAQ,MAAM;GACd,UAAU,MAAM;GAChB,MAAM,MAAM;GACZ;GACA,cAAc;EAChB,CAAQ;;qDAOJ,wBAAA,GAAA,IAAA,YAAA;IAAA,IAAA,GAAA,IAAA,OAFa,KAAA;IAAK,IAAA,GAAA,IAAA,OAAK,KAAA;IAAK,IAAA,GAAA,IAAA,OAAK,SAAA,EAAS,qBAAA;GAAA,GAAA,EAC1C,UAAA,GAAQ,CAAA,GAAA,MAAA,EAAA;;;CEzCqC,GAA8B;CAC7E,SAAA;CACA;AACF,CAAC;;;;;;;;;;;;;;;;;;;;ECFD,MAAM,QAAQ;EAKd,MAAM,SAAA,GAAA,IAAA,UAAQ;EAId,MAAM,mBAAmB;GACvB,IAAI,MAAM,UAAU,OAAO,MAAM;GACjC,IAAI,MAAM,eAAe,MAAM,UAAU,OAAO,MAAM,YAAY,MAAM,QAAQ;GAChF,IAAI,MAAM,UAAU,OAAO,MAAM,SAAS;GAC1C,IAAI,MAAM,eAAe,MAAM,UAAU,OAAO,MAAM,YAAY,EAAE,UAAU,MAAM,SAAS,CAAC;GAC9F,OAAO;EACT;;UAIc,WAAU,MAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,oBAAyD,SAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAA7CC,KAAAA,MAAM,CAAA,GAAA,GAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,cAAA,GAAA,IAAA,yBAAkB,UAAU,CAAA,EAAA,GAAA,EAAA,MAAA,GAAA,IAAA,oBAAA,IAAA,IAAA;;;;;;AIpBtE,IAAa,oBAAoB,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EFa/C,MAAM,WAAW;EASjB,MAAM,OAAO;EACb,MAAM,SAAA,GAAA,kBAAA,UAAiB,qBAAqB,MAAM,QAAQ;EAC1D,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,SAAA,GAAA,IAAA,UAAiB;EACvB,MAAM,aAAA,GAAA,kBAAA,WAAgD;GACpD,MAAM;GACN,SAAA;GACA;GACA,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,YAAY,MAAM;GAClB,QAAQ,MAAM;GACd,UAAU,MAAM;GAChB,MAAM,MAAM;EACd,CAAC;EACD,MAAM,CAAC,OAAO,aAAA,GAAA,mBAAA,iBAAoC;GAChD,cAAc,MAAM;GACpB,aAAa,MAAM;GACnB,YAAY;GACZ,WAAW,QAAQ;IACjB,KAAK,oBAAoB,GAAG;IAC5B,KAAK,cAAc,GAAG;GACxB;EACF,CAAC;EACD,MAAM,CAAC,UAAU,gBAAA,GAAA,mBAAA,iBAAwC;GACvD,cAAc,MAAM;GACpB,aAAa,MAAM;GACnB,YAAY;GACZ,WAAW,SAAS;IAClB,KAAK,mBAAmB,IAAI;IAC5B,KAAK,mBAAmB,IAAI;GAC9B;EACF,CAAC;EACD,CAAA,GAAA,IAAA,aACQ,CAAC,MAAM,OAAO,MAAM,KAAK,MAAM,IACpC,CAAC,SAAS,YAAY;GACrB,IAAI,WAAW,QAAQ,SAAS,SAAS,CAAC;EAC5C,GACA,EAAE,WAAW,KAAK,CACpB;EACA,MAAM,eAAA,GAAA,IAAA,gBACE,MAAM,KAAK,MAAM,UAAU;GAAE,MAAM;GAAI,UAAU;GAAO,UAAU;EAAG,CAC7E;EACA,MAAM,oBAAA,GAAA,IAAA,gBAEF,MAAM,gBACL,MAAM,eAAe,aAAqB,MAAM,cAAc,EAAE,SAAS,CAAC,IAAI,KAAA,EACnF;;yBAIa,KAAA,EAAM,KAAK,WAAA,GAAA,IAAA,WAAA,IAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OAoDhB,kBAAA,GAAA,IAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,YAAA,EAAA,KAAA,EAAA,GAAA;IAAA,IAAA,GAAA,IAAA,OApDqC,KAAA;IAAK,IAAA,GAAA,IAAA,OAAK,SAAA,EAAS,MAAA;GAAA,CAAA,CAAA,GAAA;oCAyB/C,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OAAA,kBAAA,UAAA,IAAA,GAAA,IAAA,YAAA;KAvBX,MAAK;KACL,KAAI;KACH,qBAAmB;sBACZ,SAAA,EAAS,iBAAA,CAAA,GAAA;qCAmBX,EAAA,GAAA,IAAA,oBAAA,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,qBAAA,GAAA,IAAA,OAjBO,SAAA,EAAS,OAAA,CAAA,CAAA,GAAA,GAAA,GAAA,IAAA,WAAA,IAAA,IAAA,GAAA,IAAA,oBAgBH,IAAA,UAAA,OAAA,GAAA,IAAA,aAAA,GAAA,IAAA,OAdS,KAAA,EAAM,OAAtB,MAAM,UAAK;uEAcJ,kBAAA,cAAA,IAAA,GAAA,IAAA,YAAA,EAbd,KAAK,KAAK,YAAY,MAAA,GAAA,EAAA,SAAA,KAAA,IAAA,GAAA,IAAA,OACf,SAAA,EAAS,MAAA,GAAA;OAChB,KAAG,EAAA,QAAY,WAAA,GAAA,IAAA,OAAU,KAAA,EAAK;OAC9B,sBAAA,GAAA,IAAA,OAAmB,KAAA,EAAM;OACzB,UAAK,YAAA,GAAA,IAAA,OAAE,QAAA,EAAS,KAAK;;uCAOpB,EAAA,GAAA,IAAA,aAAA,mBAAA,GAAA,IAAA,YAAA;QAJC,aAAW,KAAK;QAChB,iBAAe,iBAAA;QACf,aAAW,KAAK;4CACT,SAAA,EAAS,UAAA,CAAA,GAAA,MAAA,IAAA;QAAA;QAAA;QAAA;OAAA,CAAA,IAAA,GAAA,IAAA,oBAEa,QAAA,OAAA,GAAA,IAAA,iBAAvB,KAAK,QAAQ,GAAA,CAAA,CAAA,CAAA;;;;;;;;;iCA6BH,uBAAA;KAxBtB,MAAM,YAAA,MAAY;KAClB,UAAU,YAAA,MAAY;KACtB,WAAA,GAAA,IAAA,OAAU,QAAA;KACV,qBAAA,GAAA,IAAA,OAAkB,KAAA,EAAM;KACxB,uBAAA,GAAA,IAAA,OAAoB,KAAA,EAAM;KAC1B,gBAAA,GAAA,IAAA,OAAa,KAAA,EAAM;KACnB,SAAA,GAAA,IAAA,OAAQ,KAAA,EAAM;KACd,yBAAA,GAAA,IAAA,OAAsB,KAAA,EAAM;KAC5B,iBAAA,GAAA,IAAA,OAAc,KAAA,EAAM;KACpB,eAAA,GAAA,IAAA,OAAY,KAAA,EAAM;KAClB,sBAAA,GAAA,IAAA,OAAmB,KAAA,EAAM;KACzB,wBAAA,GAAA,IAAA,OAAqB,KAAA,EAAM;KAC3B,aAAA,GAAA,IAAA,OAAY,KAAA,EAAM;KAClB,WAAA,GAAA,IAAA,OAAU,KAAA,EAAM;KAChB,sBAAA,GAAA,IAAA,OAAmB,KAAA,EAAM;KACzB,sBAAA,GAAA,IAAA,OAAmB,KAAA,EAAM;KACzB,gCAAA,GAAA,IAAA,OAA6B,KAAA,EAAM;KACpC,iBAAA;KACA,qBAAkB;KACjB,mBAAA,GAAA,IAAA,OAAiB,WAAA;KACjB,gBAAA,GAAA,IAAA,OAAa,KAAA,EAAM;KACnB,SAAA,GAAA,IAAA,OAAQ,KAAA,EAAM;uCAECC,KAAAA,OAAO,WAAA;WAAW;gCAAiC,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;CE3H1B,GAA4B,EAAE,SAAA,6BAAQ,CAAC;;;ACAtF,SAAgB,yBAAyB,MAAiC;CACxE,OAAO,EACL,uBAEG,EAAE,MAAM,eAAe;EACtB,MAAM,OAAO,KAAK,YAAY,QAAQ,IAAI,WAAW;EACrD,OAAO;GACL,iBAAiB,KAAK,UAAU,MAAM,EAAE,UAAU,KAAK,CAAC,EAAE;GAC1D,eAAe;GACf,kBAAkB,EAAE,OAAO,QAAQ,OAAO;EAC5C;CACF,EACJ;AACF;;;ACfA,IAAa,QAAQ;CACnB,QAAQ;EACN,4BAA4B;EAC5B,0BAA0B;EAC1B,sBAAsB;EACtB,0BAA0B;EAC1B,kCAAkC;EAClC,+BAA+B;EAC/B,+BAA+B;EAC/B,oBAAoB;EACpB,oBAAoB;EACpB,wCAAwC;EACxC,8BAA8B;EAC9B,yBAAyB;EACzB,+BAA+B;EAC/B,qBAAqB;EACrB,qBAAqB;EACrB,0BAA0B;EAC1B,8BAA8B;EAC9B,8BAA8B;EAC9B,mCAAmC;EACnC,uBAAuB;EACvB,mBAAmB;EACnB,gCAAgC;EAChC,+BAA+B;EAC/B,iCAAiC;EACjC,kCAAkC;EAClC,oCAAoC;EACpC,kCAAkC;EAClC,gCAAgC;EAChC,8BAA8B;EAC9B,6BAA6B;EAC7B,+BAA+B;EAC/B,+BAA+B;EAC/B,8BAA8B;EAC9B,2BAA2B;EAC3B,uBAAuB;EACvB,qCAAqC;EACrC,qCAAqC;EACrC,oCAAoC;EACpC,oCAAoC;EACpC,uBAAuB;EACvB,mBAAmB;EACnB,uBAAuB;EACvB,2BAA2B;EAC3B,qBAAqB;EACrB,8BAA8B;EAC9B,uCAAuC;EACvC,+CAA+C;EAC/C,yBAAyB;EACzB,qBAAqB;EACrB,kCAAkC;EAClC,kCAAkC;EAClC,uCAAuC;EACvC,wCAAwC;EACxC,kCAAkC;EAClC,8BAA8B;EAC9B,wCAAwC;EACxC,oCAAoC;EACpC,sCAAsC;EACtC,sCAAsC;EACtC,sCAAsC;EACtC,sCAAsC;EACtC,sCAAsC;EACtC,sCAAsC;EACtC,uDAAuD;EACvD,iCAAiC;EACjC,6BAA6B;EAC7B,2BAA2B;EAC3B,sBAAsB;EACtB,oCAAoC;EACpC,gCAAgC;EAChC,gCAAgC;EAChC,kCAAkC;EAClC,mCAAmC;EACnC,sCAAsC;EACtC,gCAAgC;EAChC,8BAA8B;EAC9B,8BAA8B;EAC9B,mCAAmC;EACnC,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,qCAAqC;EACrC,+BAA+B;EAC/B,8BAA8B;EAC9B,+BAA+B;EAC/B,2BAA2B;EAC3B,iBAAiB;EACjB,aAAa;EACb,YAAY;EACZ,yCAAyC;EACzC,+CAA+C;EAC/C,2CAA2C;EAC3C,2CAA2C;EAC3C,4CAA4C;EAC5C,6CAA6C;EAC7C,6CAA6C;EAC7C,mBAAmB;EACnB,oBAAoB;EACpB,gBAAgB;EAChB,oBAAoB;EACpB,+BAA+B;EAC/B,8BAA8B;EAC9B,kCAAkC;EAClC,kCAAkC;EAClC,wBAAwB;EACxB,wBAAwB;EACxB,4BAA4B;EAC5B,wBAAwB;EACxB,wBAAwB;EACxB,gCAAgC;EAChC,oCAAoC;EACpC,oCAAoC;EACpC,kCAAkC;EAClC,4BAA4B;EAC5B,iCAAiC;EACjC,uCAAuC;EACvC,uCAAuC;EACvC,4BAA4B;EAC5B,wBAAwB;EACxB,4BAA4B;EAC5B,qCAAqC;EACrC,oCAAoC;EACpC,uCAAuC;EACvC,oBAAoB;EACpB,gBAAgB;EAChB,qBAAqB;EACrB,2BAA2B;EAC3B,+BAA+B;EAC/B,iCAAiC;EACjC,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,yBAAyB;EACzB,yBAAyB;EACzB,oBAAoB;EACpB,oCAAoC;EACpC,8BAA8B;EAC9B,mCAAmC;EACnC,6BAA6B;EAC7B,kCAAkC;EAClC,sBAAsB;EACtB,kBAAkB;EAClB,sBAAsB;EACtB,mCAAmC;EACnC,+BAA+B;EAC/B,mCAAmC;EACnC,2BAA2B;EAC3B,wBAAwB;EACxB,oBAAoB;EACpB,iCAAiC;EACjC,iCAAiC;EACjC,yBAAyB;EACzB,wBAAwB;EACxB,gCAAgC;EAChC,kCAAkC;EAClC,6BAA6B;EAC7B,iCAAiC;EACjC,qCAAqC;EACrC,kCAAkC;EAClC,kCAAkC;EAClC,8BAA8B;EAC9B,gCAAgC;EAChC,8BAA8B;EAC9B,8BAA8B;EAC9B,iCAAiC;EACjC,oCAAoC;EACpC,mCAAmC;EACnC,yCAAyC;EACzC,8BAA8B;EAC9B,8BAA8B;EAC9B,6BAA6B;EAC7B,+BAA+B;EAC/B,iCAAiC;EACjC,kCAAkC;EAClC,4BAA4B;EAC5B,gCAAgC;EAChC,+BAA+B;EAC/B,+BAA+B;EAC/B,kCAAkC;EAClC,6BAA6B;EAC7B,+BAA+B;EAC/B,+BAA+B;EAC/B,iCAAiC;EACjC,gCAAgC;EAChC,iCAAiC;EACjC,kCAAkC;EAClC,gCAAgC;EAChC,+BAA+B;EAC/B,+BAA+B;EAC/B,6BAA6B;EAC7B,sCAAsC;EACtC,6BAA6B;EAC7B,iCAAiC;EACjC,wBAAwB;EACxB,oBAAoB;EACpB,uBAAuB;EACvB,wBAAwB;EACxB,cAAc;EACd,uBAAuB;EACvB,0BAA0B;EAC1B,0BAA0B;EAC1B,6BAA6B;EAC7B,gCAAgC;EAChC,gCAAgC;EAChC,sBAAsB;EACtB,qBAAqB;EACrB,4BAA4B;EAC5B,2BAA2B;EAC3B,2BAA2B;EAC3B,4BAA4B;EAC5B,8BAA8B;EAC9B,0BAA0B;EAC1B,4BAA4B;EAC5B,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,wBAAwB;EACxB,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,uBAAuB;EACvB,6BAA6B;EAC7B,yBAAyB;EACzB,4BAA4B;EAC5B,6BAA6B;EAC7B,uBAAuB;EACvB,4BAA4B;EAC5B,4BAA4B;EAC5B,6BAA6B;EAC7B,6BAA6B;EAC7B,mBAAmB;EACnB,+BAA+B;EAC/B,+BAA+B;EAC/B,2BAA2B;EAC3B,gCAAgC;EAChC,qCAAqC;CACvC;CACA,aAAa;CACb,sBAAsB;CACtB,aAAa;EACX;GACE,OAAO;IAAC;IAAW;IAAkC;GAAgB;GACrE,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,8BAA8B,oBAAoB;GAC1D,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAe;IAAuB;GAA0B;GACxE,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,mBAAmB,yBAAyB;GACpD,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,WAAW,cAAc;GACjC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAA4B;IAA2B;GAAmB;GAClF,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,UAAU,4CAA4C;GAC9D,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,YAAY;IACZ,SAAS;IACT,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,iBAAiB,eAAe;GACxC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,4BAA4B;GACtD,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB;GAC1B,UAAU,EACR,WAAW,YACb;EACF;EACA;GACE,OAAO,CAAC,sBAAsB;GAC9B,UAAU,EACR,WAAW,gBACb;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAkB;IAA8B;GAAgC;GACxF,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,8BAA8B;GACtC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAmB;IAA4B;GAAiC;GACxF,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,gCAAgC;GAC1D,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,kBAAkB;GAC5C,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,iCAAiC,mBAAmB;GAC5D,UAAU,EACR,YAAY,UACd;EACF;CACF;CACA,MAAM;AACR;AAEA,IAAa,OAAO;CAClB,MAAM;CACN,QAAQ;EACN,uBAAuB;EACvB,kCAAkC;EAClC,kCAAkC;EAClC,oCAAoC;EACpC,wBAAwB;EACxB,4BAA4B;EAC5B,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EACrB,8BAA8B;EAC9B,8BAA8B;EAC9B,uCAAuC;EACvC,kCAAkC;EAClC,qCAAqC;EACrC,kCAAkC;EAClC,wCAAwC;EACxC,2BAA2B;EAC3B,+BAA+B;EAC/B,gCAAgC;EAChC,sCAAsC;EACtC,oCAAoC;EACpC,0BAA0B;EAC1B,cAAc;EACd,0BAA0B;EAC1B,wBAAwB;EACxB,mBAAmB;EACnB,+BAA+B;EAC/B,wBAAwB;EACxB,iCAAiC;EACjC,gCAAgC;EAChC,6BAA6B;EAC7B,kCAAkC;EAClC,sCAAsC;EACtC,0BAA0B;EAC1B,0BAA0B;EAC1B,+BAA+B;EAC/B,sBAAsB;EACtB,mCAAmC;EACnC,mBAAmB;EACnB,mBAAmB;EACnB,0BAA0B;EAC1B,4BAA4B;EAC5B,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,qBAAqB;EACrB,wBAAwB;EACxB,qBAAqB;EACrB,sBAAsB;EACtB,4BAA4B;EAC5B,0BAA0B;EAC1B,4BAA4B;EAC5B,6BAA6B;EAC7B,2BAA2B;EAC3B,8BAA8B;EAC9B,2BAA2B;EAC3B,4BAA4B;EAC5B,wCAAwC;CAC1C;CACA,aAAa;EACX,EACE,UAAU,EACR,YAAY,UACd,EACF;EACA;GACE,OAAO;IAAC;IAAiB;IAA0B;GAAgC;GACnF,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,8CAA8C,qCAAqC;GAC3F,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,0BAA0B;GAClC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,2CAA2C,uCAAuC;GAC1F,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;G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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["$attrs","$attrs","$attrs","$slots"],"sources":["../src/CodeHighlightProvider/adapters/plain-text-adapter.ts","../src/CodeHighlightProvider/CodeHighlightAdapterProvider.vue","../src/CodeHighlightProvider/CodeHighlightAdapterProvider.vue","../src/CodeHighlightProvider/CodeHighlightProvider.ts","../src/normalize-code.ts","../src/CodeHighlight/CodeHighlight.context.ts","../src/CodeHighlight/CodeHighlightControl/CodeHighlightControl.vue","../src/CodeHighlight/CodeHighlightControl/CodeHighlightControl.vue","../src/CodeHighlight/CopyCodeButton/CopyIcon.vue","../src/CodeHighlight/CopyCodeButton/CopyIcon.vue","../src/CodeHighlight/CopyCodeButton/CopyCodeButton.vue","../src/CodeHighlight/CopyCodeButton/CopyCodeButton.vue","../src/CodeHighlight/ExpandCodeButton/ExpandIcon.vue","../src/CodeHighlight/ExpandCodeButton/ExpandIcon.vue","../src/CodeHighlight/ExpandCodeButton/ExpandCodeButton.vue","../src/CodeHighlight/ExpandCodeButton/ExpandCodeButton.vue","../src/CodeHighlight.module.css","../src/CodeHighlight/CodeHighlight.vue","../src/CodeHighlight/CodeHighlight.vue","../src/CodeHighlight/CodeHighlight.ts","../src/CodeHighlight/InlineCodeHighlight.vue","../src/CodeHighlight/InlineCodeHighlight.vue","../src/CodeHighlight/InlineCodeHighlight.ts","../src/CodeHighlightTabs/FileIcon.vue","../src/CodeHighlightTabs/FileIcon.vue","../src/CodeHighlightTabs/CodeHighlightTabs.vue","../src/CodeHighlightTabs/CodeHighlightTabs.vue","../src/CodeHighlightTabs/CodeHighlightTabs.ts","../src/JsonViewer/json-viewer-utils.ts","../src/JsonViewer/JsonViewerNode.vue","../src/JsonViewer/JsonViewerNode.vue","../src/JsonViewer/JsonViewer.module.css","../src/JsonViewer/JsonViewer.vue","../src/JsonViewer/JsonViewer.vue","../src/JsonViewer/JsonViewer.ts","../src/CodeHighlightProvider/adapters/highlight-js-adapter.ts","../src/CodeHighlightProvider/adapters/shiki-themes.ts","../src/CodeHighlightProvider/adapters/shiki-adapter.ts"],"sourcesContent":["import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\n\nexport const plainTextAdapter: CodeHighlightAdapter = {\n getHighlighter:\n () =>\n ({ code }) => ({ highlightedCode: code, isHighlighted: false }),\n}\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { provideCodeHighlightAdapterContext } from './CodeHighlightProvider'\nimport type { CodeHighlightAdapterProviderProps } from './CodeHighlightProvider.types'\n\ndefineOptions({ name: 'CodeHighlightAdapterProvider' })\nconst props = defineProps<CodeHighlightAdapterProviderProps>()\nconst context = ref<any>(null)\nconst contextLoaded = ref(false)\nconst loadedLanguages = ref<string[]>([])\nconst requestedLanguages = new Set<string>()\nlet generation = 0\nconst highlight = computed(() => props.adapter.getHighlighter(context.value))\n\nwatch(\n () => props.adapter,\n async (adapter) => {\n const currentGeneration = ++generation\n context.value = null\n contextLoaded.value = !adapter.loadContext\n loadedLanguages.value = []\n requestedLanguages.clear()\n if (adapter.loadContext) {\n const value = await adapter.loadContext()\n if (currentGeneration === generation) {\n context.value = value\n contextLoaded.value = true\n }\n }\n },\n { immediate: true },\n)\n\nfunction loadLanguage(language: string | undefined) {\n if (\n !contextLoaded.value ||\n !language ||\n !props.adapter.loadLanguage ||\n requestedLanguages.has(language)\n ) {\n return\n }\n const currentGeneration = generation\n requestedLanguages.add(language)\n let result: Promise<any> | undefined\n try {\n result = props.adapter.loadLanguage(context.value, language)\n } catch {\n requestedLanguages.delete(language)\n return\n }\n result?.then(\n () => {\n if (currentGeneration === generation && !loadedLanguages.value.includes(language)) {\n loadedLanguages.value = [...loadedLanguages.value, language]\n }\n },\n () => currentGeneration === generation && requestedLanguages.delete(language),\n )\n}\n\nprovideCodeHighlightAdapterContext({\n get adapter() {\n return props.adapter\n },\n get highlight() {\n return highlight.value\n },\n loadLanguage,\n isLanguageLoaded: (language) =>\n !language || !props.adapter.loadLanguage || loadedLanguages.value.includes(language),\n})\n</script>\n\n<template>\n <div style=\"display: contents\"><slot /></div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { provideCodeHighlightAdapterContext } from './CodeHighlightProvider'\nimport type { CodeHighlightAdapterProviderProps } from './CodeHighlightProvider.types'\n\ndefineOptions({ name: 'CodeHighlightAdapterProvider' })\nconst props = defineProps<CodeHighlightAdapterProviderProps>()\nconst context = ref<any>(null)\nconst contextLoaded = ref(false)\nconst loadedLanguages = ref<string[]>([])\nconst requestedLanguages = new Set<string>()\nlet generation = 0\nconst highlight = computed(() => props.adapter.getHighlighter(context.value))\n\nwatch(\n () => props.adapter,\n async (adapter) => {\n const currentGeneration = ++generation\n context.value = null\n contextLoaded.value = !adapter.loadContext\n loadedLanguages.value = []\n requestedLanguages.clear()\n if (adapter.loadContext) {\n const value = await adapter.loadContext()\n if (currentGeneration === generation) {\n context.value = value\n contextLoaded.value = true\n }\n }\n },\n { immediate: true },\n)\n\nfunction loadLanguage(language: string | undefined) {\n if (\n !contextLoaded.value ||\n !language ||\n !props.adapter.loadLanguage ||\n requestedLanguages.has(language)\n ) {\n return\n }\n const currentGeneration = generation\n requestedLanguages.add(language)\n let result: Promise<any> | undefined\n try {\n result = props.adapter.loadLanguage(context.value, language)\n } catch {\n requestedLanguages.delete(language)\n return\n }\n result?.then(\n () => {\n if (currentGeneration === generation && !loadedLanguages.value.includes(language)) {\n loadedLanguages.value = [...loadedLanguages.value, language]\n }\n },\n () => currentGeneration === generation && requestedLanguages.delete(language),\n )\n}\n\nprovideCodeHighlightAdapterContext({\n get adapter() {\n return props.adapter\n },\n get highlight() {\n return highlight.value\n },\n loadLanguage,\n isLanguageLoaded: (language) =>\n !language || !props.adapter.loadLanguage || loadedLanguages.value.includes(language),\n})\n</script>\n\n<template>\n <div style=\"display: contents\"><slot /></div>\n</template>\n","import { inject, provide } from 'vue'\nimport { plainTextAdapter } from './adapters/plain-text-adapter'\nimport CodeHighlightAdapterProviderComponent from './CodeHighlightAdapterProvider.vue'\nimport type { CodeHighlightProviderContext } from './CodeHighlightProvider.types'\n\nconst CodeHighlightContext = Symbol('CodeHighlightContext')\n\nexport function provideCodeHighlightAdapterContext(value: CodeHighlightProviderContext) {\n provide(CodeHighlightContext, value)\n}\n\nexport function useHighlight() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n const fallback = plainTextAdapter.getHighlighter(null)\n return (input: Parameters<CodeHighlightProviderContext['highlight']>[0]) =>\n (ctx?.highlight || fallback)(input)\n}\n\nexport function useLoadLanguage() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n return ctx?.loadLanguage || (() => {})\n}\n\nexport function useIsLanguageLoaded() {\n const ctx = inject<CodeHighlightProviderContext | null>(CodeHighlightContext, null)\n return ctx?.isLanguageLoaded || (() => true)\n}\n\nexport const CodeHighlightAdapterProvider = CodeHighlightAdapterProviderComponent\nexport type * from './CodeHighlightProvider.types'\n","export interface NormalizeCodeOptions {\n /** If set, indentation of the first line is preserved. @default false */\n withFirstLineIndentation?: boolean\n}\n\n/** Removes blank leading lines and trailing whitespace before highlighting or copying code. */\nexport function normalizeCode(\n code: string,\n { withFirstLineIndentation }: NormalizeCodeOptions = {},\n) {\n return withFirstLineIndentation\n ? code.replace(/^(?:[^\\S\\r\\n]*\\r?\\n)+/, '').trimEnd()\n : code.trim()\n}\n","import { createSafeContext } from '@mantine-vue/core'\n\nexport interface CodeHighlightContextValue {\n getStyles: (selector: string, options?: Record<string, any>) => Record<string, any>\n codeColorScheme: 'light' | 'dark' | (string & {}) | undefined\n}\n\nexport const [provideCodeHighlightContext, useCodeHighlightContext] =\n createSafeContext<CodeHighlightContextValue>(\n 'CodeHighlightProvider was not found in the component tree',\n )\n","<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue'\nimport { ActionIcon, Tooltip, useProps } from '@mantine-vue/core'\nimport { useCodeHighlightContext } from '../CodeHighlight.context'\nimport type {\n CodeHighlightControlEmits,\n CodeHighlightControlProps,\n CodeHighlightControlSlots,\n} from './CodeHighlightControl.types'\n\ndefineOptions({ name: 'CodeHighlightControl', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightControlProps>(), { component: 'button' })\ndefineSlots<CodeHighlightControlSlots>()\nconst emit = defineEmits<CodeHighlightControlEmits>()\nconst props = useProps('CodeHighlightControl', null, rawProps)\nconst attrs = useAttrs()\nconst ctx = useCodeHighlightContext()\nconst tooltipStyles = computed(() => ctx.getStyles('controlTooltip'))\n</script>\n\n<template>\n <Tooltip\n v-if=\"props.tooltipLabel\"\n :label=\"props.tooltipLabel\"\n fz=\"sm\"\n position=\"bottom\"\n :class-names=\"{ tooltip: tooltipStyles.class }\"\n :styles=\"{ tooltip: tooltipStyles.style }\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n :transition-props=\"{ duration: 0 }\"\n >\n <ActionIcon\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n </Tooltip>\n <ActionIcon\n v-else\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs } from 'vue'\nimport { ActionIcon, Tooltip, useProps } from '@mantine-vue/core'\nimport { useCodeHighlightContext } from '../CodeHighlight.context'\nimport type {\n CodeHighlightControlEmits,\n CodeHighlightControlProps,\n CodeHighlightControlSlots,\n} from './CodeHighlightControl.types'\n\ndefineOptions({ name: 'CodeHighlightControl', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightControlProps>(), { component: 'button' })\ndefineSlots<CodeHighlightControlSlots>()\nconst emit = defineEmits<CodeHighlightControlEmits>()\nconst props = useProps('CodeHighlightControl', null, rawProps)\nconst attrs = useAttrs()\nconst ctx = useCodeHighlightContext()\nconst tooltipStyles = computed(() => ctx.getStyles('controlTooltip'))\n</script>\n\n<template>\n <Tooltip\n v-if=\"props.tooltipLabel\"\n :label=\"props.tooltipLabel\"\n fz=\"sm\"\n position=\"bottom\"\n :class-names=\"{ tooltip: tooltipStyles.class }\"\n :styles=\"{ tooltip: tooltipStyles.style }\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n :transition-props=\"{ duration: 0 }\"\n >\n <ActionIcon\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n </Tooltip>\n <ActionIcon\n v-else\n v-bind=\"{ ...ctx.getStyles('control'), ...attrs }\"\n :component=\"props.component\"\n :variant=\"'none' as any\"\n :data-code-color-scheme=\"ctx.codeColorScheme\"\n @click=\"(event: MouseEvent) => emit('click', event)\"\n >\n <slot />\n </ActionIcon>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'CopyIcon', inheritAttrs: false })\ndefineProps<{ copied: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'CopyIcon', inheritAttrs: false })\ndefineProps<{ copied: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { useClipboard } from '@mantine-vue/hooks'\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport CopyIcon from './CopyIcon.vue'\n\nexport interface CopyCodeButtonProps {\n code: string\n copiedLabel?: string\n copyLabel?: string\n}\n\ndefineOptions({ name: 'CopyCodeButton' })\nconst props = withDefaults(defineProps<CopyCodeButtonProps>(), {\n copiedLabel: 'Copied',\n copyLabel: 'Copy',\n})\nconst clipboard = useClipboard()\n</script>\n\n<template>\n <CodeHighlightControl\n variant=\"none\"\n :tooltip-label=\"clipboard.copied.value ? props.copiedLabel : props.copyLabel\"\n :aria-label=\"clipboard.copied.value ? props.copiedLabel : `${props.copyLabel} code`\"\n @click=\"clipboard.copy(props.code)\"\n >\n <CopyIcon :copied=\"clipboard.copied.value\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\nimport { useClipboard } from '@mantine-vue/hooks'\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport CopyIcon from './CopyIcon.vue'\n\nexport interface CopyCodeButtonProps {\n code: string\n copiedLabel?: string\n copyLabel?: string\n}\n\ndefineOptions({ name: 'CopyCodeButton' })\nconst props = withDefaults(defineProps<CopyCodeButtonProps>(), {\n copiedLabel: 'Copied',\n copyLabel: 'Copy',\n})\nconst clipboard = useClipboard()\n</script>\n\n<template>\n <CodeHighlightControl\n variant=\"none\"\n :tooltip-label=\"clipboard.copied.value ? props.copiedLabel : props.copyLabel\"\n :aria-label=\"clipboard.copied.value ? props.copiedLabel : `${props.copyLabel} code`\"\n @click=\"clipboard.copy(props.code)\"\n >\n <CopyIcon :copied=\"clipboard.copied.value\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'ExpandIcon', inheritAttrs: false })\ndefineProps<{ expanded: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <template v-if=\"expanded\">\n <path d=\"M12 13v-8l-3 3m6 0l-3 -3\" />\n <path d=\"M9 17l1 0\" />\n <path d=\"M14 17l1 0\" />\n <path d=\"M19 17l1 0\" />\n <path d=\"M4 17l1 0\" />\n </template>\n <template v-else>\n <path d=\"M12 11v8l3 -3m-6 0l3 3\" />\n <path d=\"M9 7l1 0\" />\n <path d=\"M14 7l1 0\" />\n <path d=\"M19 7l1 0\" />\n <path d=\"M4 7l1 0\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ name: 'ExpandIcon', inheritAttrs: false })\ndefineProps<{ expanded: boolean }>()\n</script>\n\n<template>\n <svg\n v-bind=\"$attrs\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <template v-if=\"expanded\">\n <path d=\"M12 13v-8l-3 3m6 0l-3 -3\" />\n <path d=\"M9 17l1 0\" />\n <path d=\"M14 17l1 0\" />\n <path d=\"M19 17l1 0\" />\n <path d=\"M4 17l1 0\" />\n </template>\n <template v-else>\n <path d=\"M12 11v8l3 -3m-6 0l3 3\" />\n <path d=\"M9 7l1 0\" />\n <path d=\"M14 7l1 0\" />\n <path d=\"M19 7l1 0\" />\n <path d=\"M4 7l1 0\" />\n </template>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport ExpandIcon from './ExpandIcon.vue'\n\nexport interface ExpandCodeButtonProps {\n expanded: boolean\n collapseCodeLabel?: string\n expandCodeLabel?: string\n}\nexport interface ExpandCodeButtonEmits {\n expand: [value: boolean]\n}\n\ndefineOptions({ name: 'ExpandCodeButton' })\nconst props = withDefaults(defineProps<ExpandCodeButtonProps>(), {\n collapseCodeLabel: 'Collapse code',\n expandCodeLabel: 'Expand code',\n})\nconst emit = defineEmits<ExpandCodeButtonEmits>()\n</script>\n\n<template>\n <CodeHighlightControl\n :tooltip-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n :aria-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n @click=\"emit('expand', !props.expanded)\"\n >\n <ExpandIcon :expanded=\"props.expanded\" />\n </CodeHighlightControl>\n</template>\n","<script setup lang=\"ts\">\nimport CodeHighlightControl from '../CodeHighlightControl/CodeHighlightControl.vue'\nimport ExpandIcon from './ExpandIcon.vue'\n\nexport interface ExpandCodeButtonProps {\n expanded: boolean\n collapseCodeLabel?: string\n expandCodeLabel?: string\n}\nexport interface ExpandCodeButtonEmits {\n expand: [value: boolean]\n}\n\ndefineOptions({ name: 'ExpandCodeButton' })\nconst props = withDefaults(defineProps<ExpandCodeButtonProps>(), {\n collapseCodeLabel: 'Collapse code',\n expandCodeLabel: 'Expand code',\n})\nconst emit = defineEmits<ExpandCodeButtonEmits>()\n</script>\n\n<template>\n <CodeHighlightControl\n :tooltip-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n :aria-label=\"props.expanded ? props.collapseCodeLabel : props.expandCodeLabel\"\n @click=\"emit('expand', !props.expanded)\"\n >\n <ExpandIcon :expanded=\"props.expanded\" />\n </CodeHighlightControl>\n</template>\n",".root {\n position: relative;\n}\n\n.codeHighlight {\n position: relative;\n border-radius: var(--ch-radius, 0px);\n overflow: hidden;\n\n &:where([data-with-border]) {\n @mixin where-light {\n border: 1px solid var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='dark']) {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='light']) {\n border: 1px solid var(--mantine-color-gray-2);\n }\n }\n\n @mixin where-light {\n --ch-background: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n --ch-background: var(--mantine-color-dark-8);\n }\n}\n\n.inlineCodeHighlight {\n border-radius: var(--ch-radius, var(--mantine-radius-sm));\n overflow: hidden;\n background-color: var(--ch-background);\n font-size: 13px;\n padding: 3px 5px;\n\n &:where([data-with-border]) {\n @mixin where-light {\n border: 1px solid var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='dark']) {\n border: 1px solid var(--mantine-color-dark-6);\n }\n\n &:where([data-code-color-scheme='light']) {\n border: 1px solid var(--mantine-color-gray-2);\n }\n }\n\n @mixin where-light {\n --ch-background: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n --ch-background: var(--mantine-color-dark-8);\n }\n}\n\n.pre {\n --code-line-height: 1.7;\n\n display: block;\n margin: 0;\n flex: 1;\n min-width: 0;\n\n &[data-with-offset] .code {\n padding-top: 50px;\n }\n}\n\n.code {\n display: block;\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-md);\n background-color: var(--ch-background);\n font-size: 13px;\n line-height: var(--code-line-height, var(--mantine-line-height));\n font-family: var(--mantine-font-family-monospace);\n width: fit-content;\n min-width: 100%;\n\n &:where([data-inline]) {\n display: inline-block;\n padding: 3px 5px;\n background-color: var(--ch-background);\n }\n}\n\n.controls {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 1;\n background-color: var(--ch-background);\n border-bottom-left-radius: var(--mantine-radius-md);\n\n &:where([data-with-offset]) {\n top: 12px;\n }\n}\n\n.control {\n color: var(--mantine-color-text);\n opacity: 0.5;\n\n @mixin hover {\n color: var(--mantine-color-bright);\n opacity: 1;\n }\n\n &:where([data-code-color-scheme='dark']) {\n color: var(--mantine-color-dark-0);\n\n @mixin hover {\n color: var(--mantine-color-white);\n }\n }\n\n &:where([data-code-color-scheme='light']) {\n color: var(--mantine-color-black);\n\n @mixin hover {\n color: var(--mantine-color-black);\n }\n }\n\n & :where(svg) {\n width: 18px;\n height: 18px;\n display: block;\n }\n}\n\n.controlTooltip {\n &:where([data-code-color-scheme='light']) {\n background-color: var(--mantine-color-gray-9);\n color: var(--mantine-color-white);\n }\n\n &:where([data-code-color-scheme='dark']) {\n background-color: var(--mantine-color-gray-2);\n color: var(--mantine-color-black);\n }\n}\n\n.codeWrapper {\n --code-line-height: 1.7;\n\n display: flex;\n flex-direction: row;\n}\n\n.lineNumbers {\n user-select: none;\n text-align: right;\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-xs);\n padding-left: var(--mantine-spacing-md);\n font-family: var(--mantine-font-family-monospace);\n font-size: 13px;\n line-height: var(--code-line-height, var(--mantine-line-height));\n color: var(--mantine-color-dimmed);\n background-color: var(--ch-background);\n flex-shrink: 0;\n\n &[data-with-offset] {\n padding-top: 50px;\n }\n}\n\n.scrollarea {\n &[data-collapsed] {\n max-height: var(--ch-max-height, 180px);\n overflow: hidden;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 80px;\n pointer-events: none;\n background: linear-gradient(\n 0deg,\n var(--ch-background) 0%,\n var(--ch-background) 25%,\n transparent 100%\n );\n z-index: 1;\n }\n }\n}\n\n.showCodeButton {\n position: absolute;\n z-index: 2;\n bottom: 0;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n font-size: var(--mantine-font-size-sm);\n color: var(--mantine-color-anchor);\n width: 100%;\n text-align: center;\n padding-top: var(--mantine-spacing-xs);\n padding-bottom: var(--mantine-spacing-xs);\n white-space: nowrap;\n\n &[data-hidden] {\n display: none;\n }\n\n &:where([data-code-color-scheme='dark']) {\n color: var(--mantine-primary-color-5);\n }\n\n &:where([data-code-color-scheme='light']) {\n color: var(--mantine-primary-color-6);\n }\n}\n\n.file {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--mantine-font-size-xs);\n gap: 7px;\n padding: 5px 9px;\n font-family: var(--mantine-font-family-monospace);\n font-weight: var(--mantine-font-weight-bold);\n line-height: 1;\n user-select: none;\n cursor: pointer;\n opacity: 0.8;\n border: 1px solid transparent;\n white-space: nowrap;\n margin: 0;\n border-radius: var(--mantine-radius-default);\n\n &:where([data-active]) {\n opacity: 1;\n }\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n color: var(--mantine-color-gray-8);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-white);\n color: var(--mantine-color-black);\n }\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n color: var(--mantine-color-dark-0);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-dark-5);\n color: var(--mantine-color-white);\n }\n }\n\n &:where([data-color-scheme='light']) {\n border-color: var(--mantine-color-gray-3);\n color: var(--mantine-color-gray-8);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-white);\n color: var(--mantine-color-black);\n }\n }\n\n &:where([data-color-scheme='dark']) {\n border-color: var(--mantine-color-dark-4);\n color: var(--mantine-color-dark-0);\n\n &:where([data-active]) {\n background-color: var(--mantine-color-dark-5);\n color: var(--mantine-color-white);\n }\n }\n\n @mixin hover {\n opacity: 1;\n }\n\n &:where(:only-child) {\n cursor: default;\n }\n}\n\n.fileIcon {\n & :where(svg) {\n display: block;\n }\n}\n\n.filesScrollarea {\n position: absolute;\n z-index: 2;\n top: 0;\n left: 0;\n right: 70px;\n}\n\n.files {\n display: flex;\n padding: 12px 10px;\n padding-bottom: 0;\n gap: var(--mantine-spacing-xs);\n}\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor, rem } from '@mantine-vue/core'\n\nconst varsResolver = createVarsResolver<any>(\n (theme, { maxCollapsedHeight, background, radius }) => ({\n codeHighlight: {\n '--ch-max-height': rem(maxCollapsedHeight),\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n }),\n)\n\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watchEffect } from 'vue'\nimport {\n Box,\n ScrollArea,\n UnstyledButton,\n useMantineContext,\n useProps,\n useStyles,\n} from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport {\n useHighlight,\n useIsLanguageLoaded,\n useLoadLanguage,\n} from '../CodeHighlightProvider/CodeHighlightProvider'\nimport { normalizeCode } from '../normalize-code'\nimport { provideCodeHighlightContext } from './CodeHighlight.context'\nimport CopyCodeButton from './CopyCodeButton/CopyCodeButton.vue'\nimport ExpandCodeButton from './ExpandCodeButton/ExpandCodeButton.vue'\nimport type {\n CodeHighlightEmits,\n CodeHighlightFactory,\n CodeHighlightProps,\n CodeHighlightSlots,\n} from './CodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withCopyButton: true,\n withExpandButton: false,\n expandCodeLabel: 'Expand code',\n collapseCodeLabel: 'Collapse code',\n withBorder: false,\n withLineNumbers: false,\n __withOffset: false,\n __inline: false,\n})\ndefineSlots<CodeHighlightSlots>()\nconst emit = defineEmits<CodeHighlightEmits>()\nconst props = useProps('CodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst mantine = useMantineContext()\nconst getStyles = useStyles<CodeHighlightFactory>({\n name: props.__staticSelector || 'CodeHighlight',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n vars: props.vars,\n unstyled: props.unstyled,\n varsResolver,\n rootSelector: 'codeHighlight',\n} as any)\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n value: () => props.expanded,\n defaultValue: props.defaultExpanded,\n finalValue: true,\n onChange: (value) => {\n emit('update:expanded', value)\n emit('expanded-change', value)\n },\n})\nconst highlight = useHighlight()\nconst loadLanguage = useLoadLanguage()\nconst isLanguageLoaded = useIsLanguageLoaded()\nconst normalizedCode = computed(() =>\n normalizeCode(props.code, { withFirstLineIndentation: props.withFirstLineIndentation }),\n)\n\nwatchEffect(() => loadLanguage(props.language))\n\nfunction resolveColorScheme(value: 'light' | 'dark' | 'auto'): 'light' | 'dark' {\n if (value !== 'auto') return value\n return typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n}\n\nconst highlighted = computed(() => {\n isLanguageLoaded(props.language)\n return highlight({\n code: normalizedCode.value,\n language: props.language,\n colorScheme: props.codeColorScheme ?? resolveColorScheme(mantine.colorScheme.value),\n })\n})\nconst renderedControls = computed(() => {\n const value =\n props.controls !== undefined\n ? typeof props.controls === 'function'\n ? props.controls()\n : props.controls\n : slots.controls?.()\n return Array.isArray(value) ? value : value ? [value] : []\n})\nconst shouldDisplayControls = computed(\n () => renderedControls.value.length > 0 || props.withExpandButton || props.withCopyButton,\n)\nconst lineNumbers = computed(() => normalizedCode.value.split('\\n').map((_, index) => index + 1))\nconst renderControls = () => renderedControls.value\n\nprovideCodeHighlightContext({\n getStyles,\n get codeColorScheme() {\n return props.codeColorScheme\n },\n})\n</script>\n\n<template>\n <code\n v-if=\"props.__inline && highlighted.isHighlighted\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n v-html=\"highlighted.highlightedCode\"\n />\n <code\n v-else-if=\"props.__inline\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n >{{ normalizedCode }}</code\n >\n <Box\n v-else\n v-bind=\"{ ...attrs, ...getStyles('codeHighlight') }\"\n dir=\"ltr\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n :data-with-border=\"props.withBorder || undefined\"\n >\n <div\n v-if=\"shouldDisplayControls\"\n v-bind=\"getStyles('controls')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <component :is=\"renderControls\" />\n <ExpandCodeButton\n v-if=\"props.withExpandButton\"\n :expanded=\"expanded\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n @expand=\"setExpanded\"\n />\n <CopyCodeButton\n v-if=\"props.withCopyButton\"\n :code=\"normalizedCode\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n />\n </div>\n <ScrollArea\n type=\"hover\"\n :scrollbar-size=\"4\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n :data-collapsed=\"!expanded || undefined\"\n :styles=\"{ viewport: { overscrollBehaviorInline: 'none' } }\"\n v-bind=\"getStyles('scrollarea')\"\n >\n <div v-bind=\"getStyles('codeWrapper')\">\n <div\n v-if=\"props.withLineNumbers\"\n v-bind=\"getStyles('lineNumbers')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <div v-for=\"line in lineNumbers\" :key=\"line\">{{ line }}</div>\n </div>\n <pre v-bind=\"getStyles('pre')\" :data-with-offset=\"props.__withOffset || undefined\"><code\n v-if=\"highlighted.isHighlighted\"\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n v-html=\"highlighted.highlightedCode\"\n /><code\n v-else\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n >{{ normalizedCode }}</code></pre>\n </div>\n </ScrollArea>\n <UnstyledButton\n v-bind=\"getStyles('showCodeButton')\"\n :mod=\"{ hidden: expanded }\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n @click=\"setExpanded(true)\"\n >\n {{ props.expandCodeLabel }}\n </UnstyledButton>\n </Box>\n</template>\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor, rem } from '@mantine-vue/core'\n\nconst varsResolver = createVarsResolver<any>(\n (theme, { maxCollapsedHeight, background, radius }) => ({\n codeHighlight: {\n '--ch-max-height': rem(maxCollapsedHeight),\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n }),\n)\n\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watchEffect } from 'vue'\nimport {\n Box,\n ScrollArea,\n UnstyledButton,\n useMantineContext,\n useProps,\n useStyles,\n} from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport {\n useHighlight,\n useIsLanguageLoaded,\n useLoadLanguage,\n} from '../CodeHighlightProvider/CodeHighlightProvider'\nimport { normalizeCode } from '../normalize-code'\nimport { provideCodeHighlightContext } from './CodeHighlight.context'\nimport CopyCodeButton from './CopyCodeButton/CopyCodeButton.vue'\nimport ExpandCodeButton from './ExpandCodeButton/ExpandCodeButton.vue'\nimport type {\n CodeHighlightEmits,\n CodeHighlightFactory,\n CodeHighlightProps,\n CodeHighlightSlots,\n} from './CodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withCopyButton: true,\n withExpandButton: false,\n expandCodeLabel: 'Expand code',\n collapseCodeLabel: 'Collapse code',\n withBorder: false,\n withLineNumbers: false,\n __withOffset: false,\n __inline: false,\n})\ndefineSlots<CodeHighlightSlots>()\nconst emit = defineEmits<CodeHighlightEmits>()\nconst props = useProps('CodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst mantine = useMantineContext()\nconst getStyles = useStyles<CodeHighlightFactory>({\n name: props.__staticSelector || 'CodeHighlight',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n vars: props.vars,\n unstyled: props.unstyled,\n varsResolver,\n rootSelector: 'codeHighlight',\n} as any)\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n value: () => props.expanded,\n defaultValue: props.defaultExpanded,\n finalValue: true,\n onChange: (value) => {\n emit('update:expanded', value)\n emit('expanded-change', value)\n },\n})\nconst highlight = useHighlight()\nconst loadLanguage = useLoadLanguage()\nconst isLanguageLoaded = useIsLanguageLoaded()\nconst normalizedCode = computed(() =>\n normalizeCode(props.code, { withFirstLineIndentation: props.withFirstLineIndentation }),\n)\n\nwatchEffect(() => loadLanguage(props.language))\n\nfunction resolveColorScheme(value: 'light' | 'dark' | 'auto'): 'light' | 'dark' {\n if (value !== 'auto') return value\n return typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n}\n\nconst highlighted = computed(() => {\n isLanguageLoaded(props.language)\n return highlight({\n code: normalizedCode.value,\n language: props.language,\n colorScheme: props.codeColorScheme ?? resolveColorScheme(mantine.colorScheme.value),\n })\n})\nconst renderedControls = computed(() => {\n const value =\n props.controls !== undefined\n ? typeof props.controls === 'function'\n ? props.controls()\n : props.controls\n : slots.controls?.()\n return Array.isArray(value) ? value : value ? [value] : []\n})\nconst shouldDisplayControls = computed(\n () => renderedControls.value.length > 0 || props.withExpandButton || props.withCopyButton,\n)\nconst lineNumbers = computed(() => normalizedCode.value.split('\\n').map((_, index) => index + 1))\nconst renderControls = () => renderedControls.value\n\nprovideCodeHighlightContext({\n getStyles,\n get codeColorScheme() {\n return props.codeColorScheme\n },\n})\n</script>\n\n<template>\n <code\n v-if=\"props.__inline && highlighted.isHighlighted\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n v-html=\"highlighted.highlightedCode\"\n />\n <code\n v-else-if=\"props.__inline\"\n v-bind=\"{\n ...attrs,\n ...highlighted.codeElementProps,\n ...getStyles('codeHighlight', {\n className: [highlighted.codeElementProps?.class, attrs.class],\n style: [highlighted.codeElementProps?.style, attrs.style],\n }),\n }\"\n :data-with-border=\"props.withBorder || undefined\"\n >{{ normalizedCode }}</code\n >\n <Box\n v-else\n v-bind=\"{ ...attrs, ...getStyles('codeHighlight') }\"\n dir=\"ltr\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n :data-with-border=\"props.withBorder || undefined\"\n >\n <div\n v-if=\"shouldDisplayControls\"\n v-bind=\"getStyles('controls')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <component :is=\"renderControls\" />\n <ExpandCodeButton\n v-if=\"props.withExpandButton\"\n :expanded=\"expanded\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n @expand=\"setExpanded\"\n />\n <CopyCodeButton\n v-if=\"props.withCopyButton\"\n :code=\"normalizedCode\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n />\n </div>\n <ScrollArea\n type=\"hover\"\n :scrollbar-size=\"4\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n :data-collapsed=\"!expanded || undefined\"\n :styles=\"{ viewport: { overscrollBehaviorInline: 'none' } }\"\n v-bind=\"getStyles('scrollarea')\"\n >\n <div v-bind=\"getStyles('codeWrapper')\">\n <div\n v-if=\"props.withLineNumbers\"\n v-bind=\"getStyles('lineNumbers')\"\n :data-with-offset=\"props.__withOffset || undefined\"\n >\n <div v-for=\"line in lineNumbers\" :key=\"line\">{{ line }}</div>\n </div>\n <pre v-bind=\"getStyles('pre')\" :data-with-offset=\"props.__withOffset || undefined\"><code\n v-if=\"highlighted.isHighlighted\"\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n v-html=\"highlighted.highlightedCode\"\n /><code\n v-else\n v-bind=\"{\n ...highlighted.codeElementProps,\n ...getStyles('code', {\n className: highlighted.codeElementProps?.class,\n style: highlighted.codeElementProps?.style,\n }),\n }\"\n >{{ normalizedCode }}</code></pre>\n </div>\n </ScrollArea>\n <UnstyledButton\n v-bind=\"getStyles('showCodeButton')\"\n :mod=\"{ hidden: expanded }\"\n :data-code-color-scheme=\"props.codeColorScheme\"\n @click=\"setExpanded(true)\"\n >\n {{ props.expandCodeLabel }}\n </UnstyledButton>\n </Box>\n</template>\n","import CodeHighlightComponent, { varsResolver } from './CodeHighlight.vue'\nimport { CodeHighlightControl } from './CodeHighlightControl/CodeHighlightControl'\nimport classes from '../CodeHighlight.module.css'\n\nexport const CodeHighlight = Object.assign(CodeHighlightComponent, {\n classes,\n varsResolver,\n Control: CodeHighlightControl,\n})\nexport type * from './CodeHighlight.types'\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((theme, { background, radius }) => ({\n inlineCodeHighlight: {\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from 'vue'\nimport { useProps, useStyles } from '@mantine-vue/core'\nimport CodeHighlightComponent from './CodeHighlight.vue'\nimport type {\n InlineCodeHighlightFactory,\n InlineCodeHighlightProps,\n} from './InlineCodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'InlineCodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<InlineCodeHighlightProps>(), { withBorder: false })\nconst props = useProps('InlineCodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst getStyles = useStyles<InlineCodeHighlightFactory>({\n name: 'InlineCodeHighlight',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n varsResolver,\n rootSelector: 'inlineCodeHighlight',\n} as any)\n</script>\n\n<template>\n <CodeHighlightComponent\n v-bind=\"{ ...attrs, ...props, ...getStyles('inlineCodeHighlight') }\"\n __inline\n />\n</template>\n","<script lang=\"ts\">\nimport { createVarsResolver, getRadius, getThemeColor } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((theme, { background, radius }) => ({\n inlineCodeHighlight: {\n '--ch-background': background ? getThemeColor(background, theme) : undefined,\n '--ch-radius': typeof radius !== 'undefined' ? getRadius(radius) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n\n<script setup lang=\"ts\">\nimport { useAttrs } from 'vue'\nimport { useProps, useStyles } from '@mantine-vue/core'\nimport CodeHighlightComponent from './CodeHighlight.vue'\nimport type {\n InlineCodeHighlightFactory,\n InlineCodeHighlightProps,\n} from './InlineCodeHighlight.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'InlineCodeHighlight', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<InlineCodeHighlightProps>(), { withBorder: false })\nconst props = useProps('InlineCodeHighlight', null, rawProps)\nconst attrs = useAttrs()\nconst getStyles = useStyles<InlineCodeHighlightFactory>({\n name: 'InlineCodeHighlight',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n varsResolver,\n rootSelector: 'inlineCodeHighlight',\n} as any)\n</script>\n\n<template>\n <CodeHighlightComponent\n v-bind=\"{ ...attrs, ...props, ...getStyles('inlineCodeHighlight') }\"\n __inline\n />\n</template>\n","import InlineCodeHighlightComponent, { varsResolver } from './InlineCodeHighlight.vue'\nimport classes from '../CodeHighlight.module.css'\nexport const InlineCodeHighlight = Object.assign(InlineCodeHighlightComponent, {\n classes,\n varsResolver,\n})\nexport type * from './InlineCodeHighlight.types'\n","<script setup lang=\"ts\">\nimport type { VNodeChild } from 'vue'\ndefineOptions({ name: 'FileIcon', inheritAttrs: false })\nconst props = defineProps<{\n fileName?: string\n getFileIcon?: (fileName: string) => VNodeChild\n fileIcon?: VNodeChild\n}>()\nconst slots = defineSlots<{\n fileIcon?: () => VNodeChild\n getFileIcon?: (input: { fileName: string }) => VNodeChild\n}>()\nconst renderIcon = () => {\n if (props.fileIcon) return props.fileIcon\n if (props.getFileIcon && props.fileName) return props.getFileIcon(props.fileName)\n if (slots.fileIcon) return slots.fileIcon()\n if (slots.getFileIcon && props.fileName) return slots.getFileIcon({ fileName: props.fileName })\n return null\n}\n</script>\n\n<template>\n <span v-if=\"renderIcon()\" v-bind=\"$attrs\"><component :is=\"renderIcon\" /></span>\n</template>\n","<script setup lang=\"ts\">\nimport type { VNodeChild } from 'vue'\ndefineOptions({ name: 'FileIcon', inheritAttrs: false })\nconst props = defineProps<{\n fileName?: string\n getFileIcon?: (fileName: string) => VNodeChild\n fileIcon?: VNodeChild\n}>()\nconst slots = defineSlots<{\n fileIcon?: () => VNodeChild\n getFileIcon?: (input: { fileName: string }) => VNodeChild\n}>()\nconst renderIcon = () => {\n if (props.fileIcon) return props.fileIcon\n if (props.getFileIcon && props.fileName) return props.getFileIcon(props.fileName)\n if (slots.fileIcon) return slots.fileIcon()\n if (slots.getFileIcon && props.fileName) return slots.getFileIcon({ fileName: props.fileName })\n return null\n}\n</script>\n\n<template>\n <span v-if=\"renderIcon()\" v-bind=\"$attrs\"><component :is=\"renderIcon\" /></span>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watch } from 'vue'\nimport { Box, ScrollArea, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport CodeHighlightComponent from '../CodeHighlight/CodeHighlight.vue'\nimport FileIcon from './FileIcon.vue'\nimport type {\n CodeHighlightTabsEmits,\n CodeHighlightTabsFactory,\n CodeHighlightTabsProps,\n CodeHighlightTabsSlots,\n} from './CodeHighlightTabs.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlightTabs', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightTabsProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withExpandButton: false,\n withBorder: false,\n withLineNumbers: false,\n})\ndefineSlots<CodeHighlightTabsSlots>()\nconst emit = defineEmits<CodeHighlightTabsEmits>()\nconst props = useProps('CodeHighlightTabs', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst getStyles = useStyles<CodeHighlightTabsFactory>({\n name: 'CodeHighlightTabs',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n})\nconst [value, setValue] = useUncontrolled<number>({\n defaultValue: props.defaultActiveTab,\n value: () => props.activeTab,\n finalValue: 0,\n onChange: (tab) => {\n emit('update:activeTab', tab)\n emit('tab-change', tab)\n },\n})\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n defaultValue: props.defaultExpanded,\n value: () => props.expanded,\n finalValue: true,\n onChange: (next) => {\n emit('update:expanded', next)\n emit('expanded-change', next)\n },\n})\nwatch(\n () => [value.value, props.code.length] as const,\n ([current, length]) => {\n if (current >= length) setValue(length - 1)\n },\n { immediate: true },\n)\nconst currentCode = computed(\n () => props.code[value.value] || { code: '', language: 'tsx', fileName: '' },\n)\nconst fileIconResolver = computed(\n () =>\n props.getFileIcon ??\n (slots.getFileIcon ? (fileName: string) => slots.getFileIcon?.({ fileName }) : undefined),\n)\n</script>\n\n<template>\n <Box v-if=\"props.code.length\" v-bind=\"{ ...attrs, ...getStyles('root') }\">\n <ScrollArea\n type=\"never\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n v-bind=\"getStyles('filesScrollarea')\"\n >\n <div v-bind=\"getStyles('files')\">\n <UnstyledButton\n v-for=\"(node, index) in props.code\"\n :key=\"node.fileName ?? index\"\n v-bind=\"getStyles('file')\"\n :mod=\"{ active: index === value }\"\n :data-color-scheme=\"props.codeColorScheme\"\n @click=\"setValue(index)\"\n >\n <FileIcon\n :file-icon=\"node.icon\"\n :get-file-icon=\"fileIconResolver\"\n :file-name=\"node.fileName\"\n v-bind=\"getStyles('fileIcon')\"\n />\n <span>{{ node.fileName }}</span>\n </UnstyledButton>\n </div>\n </ScrollArea>\n <CodeHighlightComponent\n :code=\"currentCode.code\"\n :language=\"currentCode.language\"\n :expanded=\"expanded\"\n :with-copy-button=\"props.withCopyButton\"\n :with-expand-button=\"props.withExpandButton\"\n :with-border=\"props.withBorder\"\n :radius=\"props.radius\"\n :max-collapsed-height=\"props.maxCollapsedHeight\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n :background=\"props.background\"\n :controls=\"props.controls\"\n :code-color-scheme=\"props.codeColorScheme\"\n :with-line-numbers=\"props.withLineNumbers\"\n :with-first-line-indentation=\"props.withFirstLineIndentation\"\n __with-offset\n __static-selector=\"CodeHighlightTabs\"\n @expanded-change=\"setExpanded\"\n :class-names=\"props.classNames\"\n :styles=\"props.styles\"\n >\n <template v-if=\"$slots.controls\" #controls><slot name=\"controls\" /></template>\n </CodeHighlightComponent>\n </Box>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots, watch } from 'vue'\nimport { Box, ScrollArea, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport { useUncontrolled } from '@mantine-vue/hooks'\nimport CodeHighlightComponent from '../CodeHighlight/CodeHighlight.vue'\nimport FileIcon from './FileIcon.vue'\nimport type {\n CodeHighlightTabsEmits,\n CodeHighlightTabsFactory,\n CodeHighlightTabsProps,\n CodeHighlightTabsSlots,\n} from './CodeHighlightTabs.types'\nimport classes from '../CodeHighlight.module.css'\n\ndefineOptions({ name: 'CodeHighlightTabs', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<CodeHighlightTabsProps>(), {\n // Keep optional Boolean props uncontrolled when they are not provided.\n defaultExpanded: undefined,\n expanded: undefined,\n withExpandButton: false,\n withBorder: false,\n withLineNumbers: false,\n})\ndefineSlots<CodeHighlightTabsSlots>()\nconst emit = defineEmits<CodeHighlightTabsEmits>()\nconst props = useProps('CodeHighlightTabs', null, rawProps)\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst getStyles = useStyles<CodeHighlightTabsFactory>({\n name: 'CodeHighlightTabs',\n classes,\n props,\n attrs,\n classNames: props.classNames,\n styles: props.styles,\n unstyled: props.unstyled,\n vars: props.vars,\n})\nconst [value, setValue] = useUncontrolled<number>({\n defaultValue: props.defaultActiveTab,\n value: () => props.activeTab,\n finalValue: 0,\n onChange: (tab) => {\n emit('update:activeTab', tab)\n emit('tab-change', tab)\n },\n})\nconst [expanded, setExpanded] = useUncontrolled<boolean>({\n defaultValue: props.defaultExpanded,\n value: () => props.expanded,\n finalValue: true,\n onChange: (next) => {\n emit('update:expanded', next)\n emit('expanded-change', next)\n },\n})\nwatch(\n () => [value.value, props.code.length] as const,\n ([current, length]) => {\n if (current >= length) setValue(length - 1)\n },\n { immediate: true },\n)\nconst currentCode = computed(\n () => props.code[value.value] || { code: '', language: 'tsx', fileName: '' },\n)\nconst fileIconResolver = computed(\n () =>\n props.getFileIcon ??\n (slots.getFileIcon ? (fileName: string) => slots.getFileIcon?.({ fileName }) : undefined),\n)\n</script>\n\n<template>\n <Box v-if=\"props.code.length\" v-bind=\"{ ...attrs, ...getStyles('root') }\">\n <ScrollArea\n type=\"never\"\n dir=\"ltr\"\n :offset-scrollbars=\"false\"\n v-bind=\"getStyles('filesScrollarea')\"\n >\n <div v-bind=\"getStyles('files')\">\n <UnstyledButton\n v-for=\"(node, index) in props.code\"\n :key=\"node.fileName ?? index\"\n v-bind=\"getStyles('file')\"\n :mod=\"{ active: index === value }\"\n :data-color-scheme=\"props.codeColorScheme\"\n @click=\"setValue(index)\"\n >\n <FileIcon\n :file-icon=\"node.icon\"\n :get-file-icon=\"fileIconResolver\"\n :file-name=\"node.fileName\"\n v-bind=\"getStyles('fileIcon')\"\n />\n <span>{{ node.fileName }}</span>\n </UnstyledButton>\n </div>\n </ScrollArea>\n <CodeHighlightComponent\n :code=\"currentCode.code\"\n :language=\"currentCode.language\"\n :expanded=\"expanded\"\n :with-copy-button=\"props.withCopyButton\"\n :with-expand-button=\"props.withExpandButton\"\n :with-border=\"props.withBorder\"\n :radius=\"props.radius\"\n :max-collapsed-height=\"props.maxCollapsedHeight\"\n :copied-label=\"props.copiedLabel\"\n :copy-label=\"props.copyLabel\"\n :expand-code-label=\"props.expandCodeLabel\"\n :collapse-code-label=\"props.collapseCodeLabel\"\n :background=\"props.background\"\n :controls=\"props.controls\"\n :code-color-scheme=\"props.codeColorScheme\"\n :with-line-numbers=\"props.withLineNumbers\"\n :with-first-line-indentation=\"props.withFirstLineIndentation\"\n __with-offset\n __static-selector=\"CodeHighlightTabs\"\n @expanded-change=\"setExpanded\"\n :class-names=\"props.classNames\"\n :styles=\"props.styles\"\n >\n <template v-if=\"$slots.controls\" #controls><slot name=\"controls\" /></template>\n </CodeHighlightComponent>\n </Box>\n</template>\n","import CodeHighlightTabsComponent from './CodeHighlightTabs.vue'\nimport classes from '../CodeHighlight.module.css'\nexport const CodeHighlightTabs = Object.assign(CodeHighlightTabsComponent, { classes })\nexport type * from './CodeHighlightTabs.types'\n","export const PATH_SEPARATOR = '\\0'\nexport const serializePath = (segments: string[]) => segments.join(PATH_SEPARATOR)\nexport interface JsonViewerArrayChunk {\n start: number\n end: number\n}\nexport function getArrayChunks(length: number, groupArraysAfterLength: number | false) {\n if (groupArraysAfterLength === false) return null\n const size = Math.floor(groupArraysAfterLength)\n if (!(size >= 1) || length <= groupArraysAfterLength) return null\n const chunks: JsonViewerArrayChunk[] = []\n for (let start = 0; start < length; start += size)\n chunks.push({ start, end: Math.min(start + size, length) - 1 })\n return chunks\n}\nexport const getChunkSegment = (chunk: JsonViewerArrayChunk) => `[${chunk.start}...${chunk.end}]`\nexport function resolveDisplayValue(value: any) {\n if (value !== null && typeof value === 'object' && typeof value.toJSON === 'function') {\n try {\n return value.toJSON()\n } catch {\n return value\n }\n }\n return value\n}\nexport const isExpandableValue = (value: any): value is object =>\n value !== null && typeof value === 'object'\nexport const getEntries = (value: object): [string, any][] =>\n Array.isArray(value) ? value.map((item, index) => [String(index), item]) : Object.entries(value)\nexport function getExpandablePaths(\n value: any,\n {\n depth = Infinity,\n groupArraysAfterLength = false,\n }: { depth?: number; groupArraysAfterLength?: number | false } = {},\n) {\n const paths: string[] = []\n const ancestors = new WeakSet<object>()\n const visit = (node: any, path: string[], level: number) => {\n const resolved = resolveDisplayValue(node)\n if (!isExpandableValue(resolved) || ancestors.has(resolved) || level > depth) return\n const entries = getEntries(resolved)\n if (!entries.length) return\n if (path.length) paths.push(serializePath(path))\n ancestors.add(resolved)\n const chunks = Array.isArray(resolved)\n ? getArrayChunks(entries.length, groupArraysAfterLength)\n : null\n if (chunks && level + 1 <= depth) {\n for (const chunk of chunks) {\n paths.push(serializePath([...path, getChunkSegment(chunk)]))\n entries\n .slice(chunk.start, chunk.end + 1)\n .forEach(([key, child]) => visit(child, [...path, key], level + 2))\n }\n } else entries.forEach(([key, child]) => visit(child, [...path, key], level + 1))\n ancestors.delete(resolved)\n }\n visit(value, [], 1)\n return paths\n}\nexport function getValueType(value: any) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value\n}\nexport function getTypeLabel(value: any) {\n const type = getValueType(value)\n return type === 'number'\n ? Number.isInteger(value)\n ? 'int'\n : 'float'\n : type === 'boolean'\n ? 'bool'\n : type\n}\nexport function formatValue(\n value: any,\n withQuotes: boolean,\n collapseStringsAfterLength: number | false,\n) {\n if (value === null) return { display: 'null', collapsed: false }\n if (value === undefined) return { display: 'undefined', collapsed: false }\n if (typeof value !== 'string') return { display: String(value), collapsed: false }\n if (collapseStringsAfterLength !== false && value.length > collapseStringsAfterLength) {\n const splitsPair = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(\n value.slice(collapseStringsAfterLength - 1),\n )\n const truncated = value.slice(0, collapseStringsAfterLength - (splitsPair ? 1 : 0))\n return {\n display: withQuotes ? `${JSON.stringify(truncated).slice(0, -1)}...\"` : `${truncated}...`,\n collapsed: true,\n }\n }\n return { display: withQuotes ? JSON.stringify(value) : value, collapsed: false }\n}\nexport function safeStringify(value: any) {\n const ancestors: object[] = []\n try {\n return (\n JSON.stringify(\n value,\n function (_key, item) {\n if (typeof item === 'bigint') return item.toString()\n if (typeof item !== 'object' || item === null) return item\n while (ancestors.length && ancestors.at(-1) !== this) ancestors.pop()\n if (ancestors.includes(item)) return '[Circular]'\n ancestors.push(item)\n return item\n },\n 2,\n ) ?? String(value)\n )\n } catch {\n return String(value)\n }\n}\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Tooltip, UnstyledButton } from '@mantine-vue/core'\nimport { useClipboard } from '@mantine-vue/hooks'\nimport {\n formatValue,\n getArrayChunks,\n getChunkSegment,\n getEntries,\n getTypeLabel,\n getValueType,\n isExpandableValue,\n resolveDisplayValue,\n safeStringify,\n serializePath,\n type JsonViewerArrayChunk,\n} from './json-viewer-utils'\n\ndefineOptions({ name: 'JsonViewerNode' })\nconst props = defineProps<{\n value: any\n path: string[]\n nodeKey?: string\n level: number\n ancestors: object[]\n expandedPaths: string[]\n togglePath: (path: string) => void\n getStyles: any\n maxDisplayLength: number\n withTypes: boolean\n withSize: boolean\n withCopy: boolean\n withQuotes: boolean\n withKeyQuotes: boolean\n collapseStringsAfterLength: number | false\n sortKeys: boolean | ((a: string, b: string) => number)\n groupArraysAfterLength: number | false\n copyLabel: string\n copiedLabel: string\n onValueSelect?: (path: string[], value: any) => void\n highlightItems?: Record<string, 'added' | 'removed'>\n allExpanded: boolean\n withChevrons: boolean\n isRoot?: boolean\n chunk?: JsonViewerArrayChunk\n chunkEntries?: [string, any][]\n}>()\n\nconst { copy: copyToClipboard, copied } = useClipboard({ timeout: 1000 })\nconst stringExpanded = ref(false)\nconst resolved = computed(() =>\n props.chunk ? props.chunkEntries : resolveDisplayValue(props.value),\n)\nconst circular = computed(\n () =>\n !props.chunk && isExpandableValue(resolved.value) && props.ancestors.includes(resolved.value),\n)\nconst expandable = computed(\n () => props.chunk || (!circular.value && isExpandableValue(resolved.value)),\n)\nconst array = computed(() => props.chunk || Array.isArray(resolved.value))\nconst pathString = computed(() => serializePath(props.path))\nconst entries = computed<[string, any][]>(() => {\n if (props.chunk) return props.chunkEntries ?? []\n if (!expandable.value) return []\n const result = getEntries(resolved.value)\n if (!array.value && props.sortKeys) {\n const compare =\n typeof props.sortKeys === 'function'\n ? props.sortKeys\n : (a: string, b: string) => a.localeCompare(b)\n result.sort((a, b) => compare(a[0], b[0]))\n }\n return result\n})\nconst empty = computed(() => expandable.value && entries.value.length === 0)\nconst expanded = computed(\n () =>\n !empty.value &&\n (props.isRoot || props.allExpanded || props.expandedPaths.includes(pathString.value)),\n)\nconst canCollapse = computed(() => !empty.value && !props.isRoot && !props.allExpanded)\nconst chunks = computed(() =>\n !props.chunk && array.value\n ? getArrayChunks(entries.value.length, props.groupArraysAfterLength)\n : null,\n)\nconst shownEntries = computed(() =>\n chunks.value ? entries.value : entries.value.slice(0, props.maxDisplayLength),\n)\nconst primitiveType = computed(() => (circular.value ? 'circular' : getValueType(resolved.value)))\nconst shouldCollapseString = computed(\n () =>\n typeof resolved.value === 'string' &&\n props.collapseStringsAfterLength !== false &&\n resolved.value.length > props.collapseStringsAfterLength,\n)\nconst formatted = computed(() =>\n circular.value\n ? { display: '[Circular]', collapsed: false }\n : formatValue(\n resolved.value,\n props.withQuotes,\n stringExpanded.value ? false : props.collapseStringsAfterLength,\n ),\n)\nconst openBracket = computed(() => (array.value ? '[' : '{'))\nconst closeBracket = computed(() => (array.value ? ']' : '}'))\nconst childAncestors = computed(() =>\n props.chunk ? props.ancestors : [...props.ancestors, resolved.value],\n)\nfunction toggle() {\n if (canCollapse.value) props.togglePath(pathString.value)\n}\nfunction copy(event: Event) {\n event.stopPropagation()\n copyToClipboard(safeStringify(resolved.value))\n}\nfunction select(event?: Event) {\n event?.stopPropagation()\n props.onValueSelect?.(props.path, resolved.value)\n}\nfunction stopCopyKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') event.stopPropagation()\n}\nfunction focusSibling(row: HTMLElement, direction: number) {\n const root = row.closest('[data-jv-root]')\n const rows = Array.from(root?.querySelectorAll<HTMLElement>('[data-jv-node]') ?? [])\n const index = rows.indexOf(row)\n rows[index + direction]?.focus()\n}\nfunction onKeydown(event: KeyboardEvent) {\n const row = event.currentTarget as HTMLElement\n if (\n (event.ctrlKey || event.metaKey) &&\n event.code === 'KeyC' &&\n !window.getSelection()?.toString()\n ) {\n event.preventDefault()\n row.querySelector<HTMLElement>('[data-jv-copy]')?.click()\n return\n }\n if (event.key === 'Enter' || event.key === ' ') {\n if (event.target !== row) return\n event.preventDefault()\n if (expandable.value) toggle()\n else select()\n return\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n focusSibling(row, event.key === 'ArrowDown' ? 1 : -1)\n return\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n if (expanded.value)\n row.parentElement\n ?.querySelector<HTMLElement>(':scope > [role=\"group\"] [data-jv-node]')\n ?.focus()\n else toggle()\n return\n }\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n if (expanded.value && canCollapse.value) toggle()\n else\n row.parentElement?.parentElement\n ?.closest('[data-jv-node-wrapper]')\n ?.querySelector<HTMLElement>(':scope > [data-jv-node]')\n ?.focus()\n }\n}\n</script>\n\n<template>\n <div\n v-if=\"expandable\"\n v-bind=\"props.getStyles('node')\"\n data-jv-node-wrapper\n :data-type=\"array ? 'array' : 'object'\"\n :data-highlight=\"props.highlightItems?.[pathString]\"\n >\n <div\n v-bind=\"props.getStyles('row')\"\n role=\"treeitem\"\n :aria-expanded=\"empty ? undefined : expanded\"\n :aria-level=\"props.level\"\n data-jv-node\n data-jv-row\n data-hoverable\n :data-root=\"props.isRoot || undefined\"\n :tabindex=\"props.isRoot ? 0 : -1\"\n @click.stop=\"toggle\"\n @keydown=\"onKeydown\"\n >\n <span\n v-if=\"canCollapse && props.withChevrons\"\n v-bind=\"props.getStyles('toggle')\"\n :data-expanded=\"expanded || undefined\"\n >\n <svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" fill=\"currentColor\">\n <path\n d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"\n />\n </svg>\n </span>\n <span\n v-if=\"props.nodeKey !== undefined || props.chunk\"\n v-bind=\"props.getStyles('key')\"\n data-key\n >{{\n props.chunk\n ? getChunkSegment(props.chunk)\n : props.withKeyQuotes\n ? JSON.stringify(props.nodeKey)\n : props.nodeKey\n }}<template v-if=\"!props.chunk\">: </template></span\n >\n <span v-bind=\"props.getStyles('bracket')\">{{ openBracket }}</span>\n <span v-if=\"!empty && !expanded\" v-bind=\"props.getStyles('ellipsis')\">...</span>\n <span v-if=\"empty || !expanded\" v-bind=\"props.getStyles('bracket')\">{{ closeBracket }}</span>\n <span\n v-if=\"props.withTypes\"\n v-bind=\"props.getStyles('type')\"\n :data-value-type=\"array ? 'array' : 'object'\"\n >{{ array ? 'array' : 'object' }}</span\n >\n <span v-if=\"props.withSize\" v-bind=\"props.getStyles('size')\"\n >{{ entries.length }} {{ array ? 'items' : 'keys' }}</span\n >\n <Tooltip\n v-if=\"props.withCopy && !props.chunk\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"top\"\n fz=\"xs\"\n >\n <UnstyledButton\n tabindex=\"-1\"\n data-jv-copy\n v-bind=\"props.getStyles('copyButton')\"\n :aria-label=\"copied ? props.copiedLabel : props.copyLabel\"\n @click=\"copy\"\n @keydown=\"stopCopyKeydown\"\n >\n <svg v-if=\"copied\" viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"\n />\n </svg>\n <svg v-else viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\n />\n <path\n d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\n />\n </svg>\n </UnstyledButton>\n </Tooltip>\n </div>\n <template v-if=\"expanded\">\n <div role=\"group\" :style=\"{ paddingLeft: 'var(--jv-indent)' }\">\n <JsonViewerNode\n v-for=\"chunkItem in chunks\"\n :key=\"chunkItem.start\"\n v-bind=\"props\"\n :path=\"[...props.path, getChunkSegment(chunkItem)]\"\n :level=\"props.level + 1\"\n :ancestors=\"childAncestors\"\n :chunk=\"chunkItem\"\n :chunk-entries=\"entries.slice(chunkItem.start, chunkItem.end + 1)\"\n :is-root=\"false\"\n />\n <JsonViewerNode\n v-for=\"[key, item] in chunks ? [] : shownEntries\"\n :key=\"key\"\n v-bind=\"props\"\n :value=\"item\"\n :path=\"props.chunk ? [...props.path.slice(0, -1), key] : [...props.path, key]\"\n :node-key=\"array ? undefined : key\"\n :level=\"props.level + 1\"\n :ancestors=\"childAncestors\"\n :chunk=\"undefined\"\n :chunk-entries=\"undefined\"\n :is-root=\"false\"\n />\n <div\n v-if=\"!chunks && entries.length > props.maxDisplayLength\"\n v-bind=\"props.getStyles('row')\"\n data-jv-row\n >\n <span v-bind=\"props.getStyles('size')\"\n >... {{ entries.length - props.maxDisplayLength }} more\n {{ array ? 'items' : 'keys' }}</span\n >\n </div>\n </div>\n <div v-bind=\"props.getStyles('row')\" data-jv-row aria-hidden=\"true\">\n <span v-bind=\"props.getStyles('bracket')\">{{ closeBracket }}</span>\n </div>\n </template>\n </div>\n <div\n v-else\n v-bind=\"props.getStyles('node')\"\n data-jv-node-wrapper\n :data-type=\"primitiveType\"\n :data-highlight=\"props.highlightItems?.[pathString]\"\n >\n <div\n v-bind=\"props.getStyles('row')\"\n role=\"treeitem\"\n :aria-level=\"props.level\"\n data-jv-node\n data-jv-row\n data-hoverable\n :data-root=\"props.isRoot || undefined\"\n :tabindex=\"props.isRoot ? 0 : -1\"\n @click=\"select\"\n @keydown=\"onKeydown\"\n >\n <span v-if=\"props.nodeKey !== undefined\" v-bind=\"props.getStyles('key')\"\n >{{ props.withKeyQuotes ? JSON.stringify(props.nodeKey) : props.nodeKey }}:\n </span>\n <span\n v-bind=\"props.getStyles('value')\"\n :data-value-type=\"primitiveType\"\n :data-wrap=\"primitiveType === 'string' && formatted.display.length > 20 ? true : undefined\"\n >{{ formatted.display }}</span\n >\n <UnstyledButton\n v-if=\"shouldCollapseString\"\n v-bind=\"props.getStyles('ellipsis')\"\n :aria-expanded=\"stringExpanded\"\n data-clickable\n @click.stop=\"stringExpanded = !stringExpanded\"\n >\n {{ stringExpanded ? 'show less' : 'show more' }}\n </UnstyledButton>\n <span\n v-if=\"props.withTypes\"\n v-bind=\"props.getStyles('type')\"\n :data-value-type=\"primitiveType\"\n >{{ circular ? 'circular' : getTypeLabel(resolved) }}</span\n >\n <Tooltip\n v-if=\"props.withCopy\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"top\"\n fz=\"xs\"\n >\n <UnstyledButton\n tabindex=\"-1\"\n data-jv-copy\n v-bind=\"props.getStyles('copyButton')\"\n :aria-label=\"copied ? props.copiedLabel : props.copyLabel\"\n @click=\"copy\"\n @keydown=\"stopCopyKeydown\"\n >\n <svg v-if=\"copied\" viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"\n />\n </svg>\n <svg v-else viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\n />\n <path\n d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\n />\n </svg>\n </UnstyledButton>\n </Tooltip>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Tooltip, UnstyledButton } from '@mantine-vue/core'\nimport { useClipboard } from '@mantine-vue/hooks'\nimport {\n formatValue,\n getArrayChunks,\n getChunkSegment,\n getEntries,\n getTypeLabel,\n getValueType,\n isExpandableValue,\n resolveDisplayValue,\n safeStringify,\n serializePath,\n type JsonViewerArrayChunk,\n} from './json-viewer-utils'\n\ndefineOptions({ name: 'JsonViewerNode' })\nconst props = defineProps<{\n value: any\n path: string[]\n nodeKey?: string\n level: number\n ancestors: object[]\n expandedPaths: string[]\n togglePath: (path: string) => void\n getStyles: any\n maxDisplayLength: number\n withTypes: boolean\n withSize: boolean\n withCopy: boolean\n withQuotes: boolean\n withKeyQuotes: boolean\n collapseStringsAfterLength: number | false\n sortKeys: boolean | ((a: string, b: string) => number)\n groupArraysAfterLength: number | false\n copyLabel: string\n copiedLabel: string\n onValueSelect?: (path: string[], value: any) => void\n highlightItems?: Record<string, 'added' | 'removed'>\n allExpanded: boolean\n withChevrons: boolean\n isRoot?: boolean\n chunk?: JsonViewerArrayChunk\n chunkEntries?: [string, any][]\n}>()\n\nconst { copy: copyToClipboard, copied } = useClipboard({ timeout: 1000 })\nconst stringExpanded = ref(false)\nconst resolved = computed(() =>\n props.chunk ? props.chunkEntries : resolveDisplayValue(props.value),\n)\nconst circular = computed(\n () =>\n !props.chunk && isExpandableValue(resolved.value) && props.ancestors.includes(resolved.value),\n)\nconst expandable = computed(\n () => props.chunk || (!circular.value && isExpandableValue(resolved.value)),\n)\nconst array = computed(() => props.chunk || Array.isArray(resolved.value))\nconst pathString = computed(() => serializePath(props.path))\nconst entries = computed<[string, any][]>(() => {\n if (props.chunk) return props.chunkEntries ?? []\n if (!expandable.value) return []\n const result = getEntries(resolved.value)\n if (!array.value && props.sortKeys) {\n const compare =\n typeof props.sortKeys === 'function'\n ? props.sortKeys\n : (a: string, b: string) => a.localeCompare(b)\n result.sort((a, b) => compare(a[0], b[0]))\n }\n return result\n})\nconst empty = computed(() => expandable.value && entries.value.length === 0)\nconst expanded = computed(\n () =>\n !empty.value &&\n (props.isRoot || props.allExpanded || props.expandedPaths.includes(pathString.value)),\n)\nconst canCollapse = computed(() => !empty.value && !props.isRoot && !props.allExpanded)\nconst chunks = computed(() =>\n !props.chunk && array.value\n ? getArrayChunks(entries.value.length, props.groupArraysAfterLength)\n : null,\n)\nconst shownEntries = computed(() =>\n chunks.value ? entries.value : entries.value.slice(0, props.maxDisplayLength),\n)\nconst primitiveType = computed(() => (circular.value ? 'circular' : getValueType(resolved.value)))\nconst shouldCollapseString = computed(\n () =>\n typeof resolved.value === 'string' &&\n props.collapseStringsAfterLength !== false &&\n resolved.value.length > props.collapseStringsAfterLength,\n)\nconst formatted = computed(() =>\n circular.value\n ? { display: '[Circular]', collapsed: false }\n : formatValue(\n resolved.value,\n props.withQuotes,\n stringExpanded.value ? false : props.collapseStringsAfterLength,\n ),\n)\nconst openBracket = computed(() => (array.value ? '[' : '{'))\nconst closeBracket = computed(() => (array.value ? ']' : '}'))\nconst childAncestors = computed(() =>\n props.chunk ? props.ancestors : [...props.ancestors, resolved.value],\n)\nfunction toggle() {\n if (canCollapse.value) props.togglePath(pathString.value)\n}\nfunction copy(event: Event) {\n event.stopPropagation()\n copyToClipboard(safeStringify(resolved.value))\n}\nfunction select(event?: Event) {\n event?.stopPropagation()\n props.onValueSelect?.(props.path, resolved.value)\n}\nfunction stopCopyKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') event.stopPropagation()\n}\nfunction focusSibling(row: HTMLElement, direction: number) {\n const root = row.closest('[data-jv-root]')\n const rows = Array.from(root?.querySelectorAll<HTMLElement>('[data-jv-node]') ?? [])\n const index = rows.indexOf(row)\n rows[index + direction]?.focus()\n}\nfunction onKeydown(event: KeyboardEvent) {\n const row = event.currentTarget as HTMLElement\n if (\n (event.ctrlKey || event.metaKey) &&\n event.code === 'KeyC' &&\n !window.getSelection()?.toString()\n ) {\n event.preventDefault()\n row.querySelector<HTMLElement>('[data-jv-copy]')?.click()\n return\n }\n if (event.key === 'Enter' || event.key === ' ') {\n if (event.target !== row) return\n event.preventDefault()\n if (expandable.value) toggle()\n else select()\n return\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n focusSibling(row, event.key === 'ArrowDown' ? 1 : -1)\n return\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n if (expanded.value)\n row.parentElement\n ?.querySelector<HTMLElement>(':scope > [role=\"group\"] [data-jv-node]')\n ?.focus()\n else toggle()\n return\n }\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n if (expanded.value && canCollapse.value) toggle()\n else\n row.parentElement?.parentElement\n ?.closest('[data-jv-node-wrapper]')\n ?.querySelector<HTMLElement>(':scope > [data-jv-node]')\n ?.focus()\n }\n}\n</script>\n\n<template>\n <div\n v-if=\"expandable\"\n v-bind=\"props.getStyles('node')\"\n data-jv-node-wrapper\n :data-type=\"array ? 'array' : 'object'\"\n :data-highlight=\"props.highlightItems?.[pathString]\"\n >\n <div\n v-bind=\"props.getStyles('row')\"\n role=\"treeitem\"\n :aria-expanded=\"empty ? undefined : expanded\"\n :aria-level=\"props.level\"\n data-jv-node\n data-jv-row\n data-hoverable\n :data-root=\"props.isRoot || undefined\"\n :tabindex=\"props.isRoot ? 0 : -1\"\n @click.stop=\"toggle\"\n @keydown=\"onKeydown\"\n >\n <span\n v-if=\"canCollapse && props.withChevrons\"\n v-bind=\"props.getStyles('toggle')\"\n :data-expanded=\"expanded || undefined\"\n >\n <svg viewBox=\"0 0 16 16\" width=\"12\" height=\"12\" fill=\"currentColor\">\n <path\n d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"\n />\n </svg>\n </span>\n <span\n v-if=\"props.nodeKey !== undefined || props.chunk\"\n v-bind=\"props.getStyles('key')\"\n data-key\n >{{\n props.chunk\n ? getChunkSegment(props.chunk)\n : props.withKeyQuotes\n ? JSON.stringify(props.nodeKey)\n : props.nodeKey\n }}<template v-if=\"!props.chunk\">: </template></span\n >\n <span v-bind=\"props.getStyles('bracket')\">{{ openBracket }}</span>\n <span v-if=\"!empty && !expanded\" v-bind=\"props.getStyles('ellipsis')\">...</span>\n <span v-if=\"empty || !expanded\" v-bind=\"props.getStyles('bracket')\">{{ closeBracket }}</span>\n <span\n v-if=\"props.withTypes\"\n v-bind=\"props.getStyles('type')\"\n :data-value-type=\"array ? 'array' : 'object'\"\n >{{ array ? 'array' : 'object' }}</span\n >\n <span v-if=\"props.withSize\" v-bind=\"props.getStyles('size')\"\n >{{ entries.length }} {{ array ? 'items' : 'keys' }}</span\n >\n <Tooltip\n v-if=\"props.withCopy && !props.chunk\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"top\"\n fz=\"xs\"\n >\n <UnstyledButton\n tabindex=\"-1\"\n data-jv-copy\n v-bind=\"props.getStyles('copyButton')\"\n :aria-label=\"copied ? props.copiedLabel : props.copyLabel\"\n @click=\"copy\"\n @keydown=\"stopCopyKeydown\"\n >\n <svg v-if=\"copied\" viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"\n />\n </svg>\n <svg v-else viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\n />\n <path\n d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\n />\n </svg>\n </UnstyledButton>\n </Tooltip>\n </div>\n <template v-if=\"expanded\">\n <div role=\"group\" :style=\"{ paddingLeft: 'var(--jv-indent)' }\">\n <JsonViewerNode\n v-for=\"chunkItem in chunks\"\n :key=\"chunkItem.start\"\n v-bind=\"props\"\n :path=\"[...props.path, getChunkSegment(chunkItem)]\"\n :level=\"props.level + 1\"\n :ancestors=\"childAncestors\"\n :chunk=\"chunkItem\"\n :chunk-entries=\"entries.slice(chunkItem.start, chunkItem.end + 1)\"\n :is-root=\"false\"\n />\n <JsonViewerNode\n v-for=\"[key, item] in chunks ? [] : shownEntries\"\n :key=\"key\"\n v-bind=\"props\"\n :value=\"item\"\n :path=\"props.chunk ? [...props.path.slice(0, -1), key] : [...props.path, key]\"\n :node-key=\"array ? undefined : key\"\n :level=\"props.level + 1\"\n :ancestors=\"childAncestors\"\n :chunk=\"undefined\"\n :chunk-entries=\"undefined\"\n :is-root=\"false\"\n />\n <div\n v-if=\"!chunks && entries.length > props.maxDisplayLength\"\n v-bind=\"props.getStyles('row')\"\n data-jv-row\n >\n <span v-bind=\"props.getStyles('size')\"\n >... {{ entries.length - props.maxDisplayLength }} more\n {{ array ? 'items' : 'keys' }}</span\n >\n </div>\n </div>\n <div v-bind=\"props.getStyles('row')\" data-jv-row aria-hidden=\"true\">\n <span v-bind=\"props.getStyles('bracket')\">{{ closeBracket }}</span>\n </div>\n </template>\n </div>\n <div\n v-else\n v-bind=\"props.getStyles('node')\"\n data-jv-node-wrapper\n :data-type=\"primitiveType\"\n :data-highlight=\"props.highlightItems?.[pathString]\"\n >\n <div\n v-bind=\"props.getStyles('row')\"\n role=\"treeitem\"\n :aria-level=\"props.level\"\n data-jv-node\n data-jv-row\n data-hoverable\n :data-root=\"props.isRoot || undefined\"\n :tabindex=\"props.isRoot ? 0 : -1\"\n @click=\"select\"\n @keydown=\"onKeydown\"\n >\n <span v-if=\"props.nodeKey !== undefined\" v-bind=\"props.getStyles('key')\"\n >{{ props.withKeyQuotes ? JSON.stringify(props.nodeKey) : props.nodeKey }}:\n </span>\n <span\n v-bind=\"props.getStyles('value')\"\n :data-value-type=\"primitiveType\"\n :data-wrap=\"primitiveType === 'string' && formatted.display.length > 20 ? true : undefined\"\n >{{ formatted.display }}</span\n >\n <UnstyledButton\n v-if=\"shouldCollapseString\"\n v-bind=\"props.getStyles('ellipsis')\"\n :aria-expanded=\"stringExpanded\"\n data-clickable\n @click.stop=\"stringExpanded = !stringExpanded\"\n >\n {{ stringExpanded ? 'show less' : 'show more' }}\n </UnstyledButton>\n <span\n v-if=\"props.withTypes\"\n v-bind=\"props.getStyles('type')\"\n :data-value-type=\"primitiveType\"\n >{{ circular ? 'circular' : getTypeLabel(resolved) }}</span\n >\n <Tooltip\n v-if=\"props.withCopy\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"top\"\n fz=\"xs\"\n >\n <UnstyledButton\n tabindex=\"-1\"\n data-jv-copy\n v-bind=\"props.getStyles('copyButton')\"\n :aria-label=\"copied ? props.copiedLabel : props.copyLabel\"\n @click=\"copy\"\n @keydown=\"stopCopyKeydown\"\n >\n <svg v-if=\"copied\" viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"\n />\n </svg>\n <svg v-else viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"currentColor\">\n <path\n d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"\n />\n <path\n d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"\n />\n </svg>\n </UnstyledButton>\n </Tooltip>\n </div>\n </div>\n</template>\n",".root {\n --jv-radius: var(--mantine-radius-sm);\n --jv-fz: 13px;\n --jv-indent: 16px;\n\n position: relative;\n direction: ltr;\n font-family: var(--mantine-font-family-monospace);\n font-size: var(--jv-fz);\n line-height: 1.55;\n border-radius: var(--jv-radius);\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-8);\n }\n\n &[data-with-border] {\n border: 1px solid;\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n }\n}\n\n.controls {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mantine-spacing-xs);\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n border-bottom: 1px solid;\n\n .copyAllButton ~ & {\n padding-right: calc(44px + var(--mantine-spacing-xs));\n }\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n}\n\n.control {\n font-size: var(--mantine-font-size-xs);\n white-space: nowrap;\n padding: 2px 8px;\n border-radius: var(--mantine-radius-sm);\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-1);\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n color: var(--mantine-color-dark-1);\n }\n\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-5);\n }\n }\n}\n\n.scrollarea {\n max-width: 100%;\n}\n\n.content {\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n overflow: hidden;\n\n .wrapper > & {\n flex: 1;\n min-width: min-content;\n }\n}\n\n.lineNumbers {\n display: flex;\n flex-direction: column;\n user-select: none;\n text-align: right;\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-xs);\n padding-left: var(--mantine-spacing-sm);\n margin-right: var(--mantine-spacing-xs);\n border-right: 1px solid;\n box-sizing: content-box;\n min-width: 2ch;\n\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-2);\n border-color: var(--mantine-color-dark-4);\n }\n\n & > div {\n padding: 1px 0;\n line-height: 1.55;\n display: flex;\n align-items: flex-start;\n justify-content: flex-end;\n box-sizing: border-box;\n }\n}\n\n.wrapper {\n display: flex;\n align-items: stretch;\n}\n\n.node {\n position: relative;\n\n &[data-highlight] > .row {\n position: relative;\n\n & > * {\n z-index: 1;\n }\n\n & > :not(.toggle) {\n position: relative;\n }\n\n &::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: -1000px;\n right: -1000px;\n z-index: 0;\n pointer-events: none;\n }\n }\n\n &[data-highlight='added'] > .row::before {\n @mixin where-light {\n background-color: var(--mantine-color-green-1);\n }\n\n @mixin where-dark {\n background-color: rgba(64, 192, 87, 0.15);\n }\n }\n\n &[data-highlight='removed'] > .row::before {\n @mixin where-light {\n background-color: var(--mantine-color-red-1);\n }\n\n @mixin where-dark {\n background-color: rgba(250, 82, 82, 0.15);\n }\n }\n}\n\n.row {\n display: flex;\n align-items: flex-start;\n gap: 6px;\n min-height: 24px;\n padding: 1px 4px;\n border-radius: var(--mantine-radius-sm);\n width: 100%;\n text-align: left;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n\n &:focus-visible {\n outline: 2px solid var(--mantine-primary-color-filled);\n outline-offset: -2px;\n }\n\n .copyButton {\n opacity: 0;\n transition: opacity 100ms ease;\n }\n\n &:focus-within .copyButton {\n opacity: 1;\n }\n\n &[data-hoverable] {\n @mixin hover {\n .copyButton {\n opacity: 1;\n }\n }\n }\n\n &[data-hoverable]:not([data-root]) {\n cursor: default;\n\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-1);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n }\n }\n}\n\n.toggle {\n position: absolute;\n left: calc(var(--mantine-spacing-sm) * -1 - 4px);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 24px;\n flex-shrink: 0;\n cursor: pointer;\n\n @mixin where-light {\n color: var(--mantine-color-gray-6);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-3);\n }\n\n &[data-expanded] {\n transform: rotate(90deg);\n }\n}\n\n.key {\n @mixin where-light {\n color: var(--mantine-color-violet-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-violet-4);\n }\n\n white-space: nowrap;\n line-height: 1.55;\n}\n\n.value {\n white-space: pre;\n line-height: 1.55;\n\n &[data-wrap] {\n min-width: 20ch;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n }\n\n &[data-value-type='string'] {\n @mixin where-light {\n color: var(--mantine-color-teal-8);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-teal-4);\n }\n }\n\n &[data-value-type='number'] {\n @mixin where-light {\n color: var(--mantine-color-blue-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-blue-4);\n }\n }\n\n &[data-value-type='boolean'] {\n @mixin where-light {\n color: var(--mantine-color-orange-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-orange-4);\n }\n }\n\n &[data-value-type='null'],\n &[data-value-type='undefined'] {\n @mixin where-light {\n color: var(--mantine-color-red-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-red-4);\n }\n }\n\n &[data-value-type='bigint'] {\n @mixin where-light {\n color: var(--mantine-color-blue-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-blue-4);\n }\n }\n\n &[data-value-type='circular'] {\n font-style: italic;\n\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-2);\n }\n }\n}\n\n.bracket {\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-2);\n }\n}\n\n.type {\n font-size: calc(var(--jv-fz) * 0.85);\n padding: 0 4px;\n border-radius: var(--mantine-radius-xs);\n white-space: nowrap;\n flex-shrink: 0;\n align-self: center;\n\n &[data-value-type='string'] {\n @mixin where-light {\n background-color: var(--mantine-color-teal-0);\n color: var(--mantine-color-teal-8);\n }\n\n @mixin where-dark {\n background-color: rgba(18, 184, 134, 0.15);\n color: var(--mantine-color-teal-4);\n }\n }\n\n &[data-value-type='number'],\n &[data-value-type='bigint'] {\n @mixin where-light {\n background-color: var(--mantine-color-blue-0);\n color: var(--mantine-color-blue-7);\n }\n\n @mixin where-dark {\n background-color: rgba(34, 139, 230, 0.15);\n color: var(--mantine-color-blue-4);\n }\n }\n\n &[data-value-type='boolean'] {\n @mixin where-light {\n background-color: var(--mantine-color-orange-0);\n color: var(--mantine-color-orange-7);\n }\n\n @mixin where-dark {\n background-color: rgba(253, 126, 20, 0.15);\n color: var(--mantine-color-orange-4);\n }\n }\n\n &[data-value-type='null'],\n &[data-value-type='undefined'] {\n @mixin where-light {\n background-color: var(--mantine-color-red-0);\n color: var(--mantine-color-red-7);\n }\n\n @mixin where-dark {\n background-color: rgba(250, 82, 82, 0.15);\n color: var(--mantine-color-red-4);\n }\n }\n\n &[data-value-type='circular'] {\n @mixin where-light {\n background-color: var(--mantine-color-gray-1);\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n color: var(--mantine-color-dark-2);\n }\n }\n\n &[data-value-type='array'] {\n @mixin where-light {\n background-color: var(--mantine-color-cyan-0);\n color: var(--mantine-color-cyan-8);\n }\n\n @mixin where-dark {\n background-color: rgba(21, 170, 191, 0.15);\n color: var(--mantine-color-cyan-4);\n }\n }\n\n &[data-value-type='object'] {\n @mixin where-light {\n background-color: var(--mantine-color-grape-0);\n color: var(--mantine-color-grape-8);\n }\n\n @mixin where-dark {\n background-color: rgba(190, 75, 219, 0.15);\n color: var(--mantine-color-grape-4);\n }\n }\n}\n\n.size {\n font-size: calc(var(--jv-fz) * 0.85);\n white-space: nowrap;\n flex-shrink: 0;\n align-self: center;\n\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-3);\n }\n}\n\n.ellipsis {\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-3);\n }\n\n &[data-clickable] {\n font-size: calc(var(--jv-fz) * 0.85);\n cursor: pointer;\n text-decoration: underline;\n text-decoration-style: dotted;\n white-space: nowrap;\n flex-shrink: 0;\n\n @mixin hover {\n text-decoration-style: solid;\n }\n }\n}\n\n.copyButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n cursor: pointer;\n border-radius: var(--mantine-radius-xs);\n\n @mixin where-light {\n color: var(--mantine-color-gray-6);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-3);\n }\n\n @mixin hover {\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n background-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-1);\n background-color: var(--mantine-color-dark-5);\n }\n }\n}\n\n.copyAllButton {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: var(--mantine-radius-sm);\n opacity: 0.5;\n\n @mixin where-light {\n color: var(--mantine-color-gray-7);\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n color: var(--mantine-color-dark-1);\n background-color: var(--mantine-color-dark-8);\n }\n\n @mixin hover {\n opacity: 1;\n }\n}\n","<script lang=\"ts\">\nimport { createVarsResolver, getFontSize, getRadius, rem } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((_, { radius, fontSize, indentWidth }) => ({\n root: {\n '--jv-radius': radius !== undefined ? getRadius(radius) : undefined,\n '--jv-fz': fontSize !== undefined ? getFontSize(fontSize) : undefined,\n '--jv-indent': indentWidth !== undefined ? rem(indentWidth) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue'\nimport { useClipboard, useUncontrolled } from '@mantine-vue/hooks'\nimport { Box, ScrollArea, Tooltip, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport JsonViewerNode from './JsonViewerNode.vue'\nimport { getExpandablePaths, safeStringify } from './json-viewer-utils'\nimport type { JsonViewerOwnProps } from './JsonViewer.types'\nimport classes from './JsonViewer.module.css'\n\ndefineOptions({ name: 'JsonViewer', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<JsonViewerOwnProps>(), {\n rootName: false,\n defaultExpandDepth: 1,\n expandedPaths: undefined,\n maxDisplayLength: 100,\n withTypes: false,\n withSize: false,\n withCopy: false,\n withCopyButton: false,\n withQuotes: true,\n withKeyQuotes: false,\n collapseStringsAfterLength: false,\n sortKeys: false,\n groupArraysAfterLength: false,\n indentWidth: 16,\n withBorder: false,\n copyLabel: 'Copy',\n copiedLabel: 'Copied',\n expandAllLabel: 'Expand all',\n collapseAllLabel: 'Collapse all',\n withControls: false,\n allExpanded: false,\n withLineNumbers: false,\n withChevrons: false,\n unstyled: false,\n})\nconst emit = defineEmits<{\n 'update:expandedPaths': [paths: string[]]\n expandedPathsChange: [paths: string[]]\n valueSelect: [path: string[], value: any]\n}>()\nconst attrs = useAttrs()\nconst props = useProps('JsonViewer', null, rawProps)\nconst initial = getExpandablePaths(props.value, {\n depth: props.defaultExpandDepth,\n groupArraysAfterLength: props.groupArraysAfterLength,\n})\nconst [expanded, setExpanded] = useUncontrolled<string[]>({\n value: () => props.expandedPaths,\n defaultValue: initial,\n finalValue: [],\n onChange: (paths) => {\n emit('update:expandedPaths', paths)\n emit('expandedPathsChange', paths)\n },\n})\nfunction togglePath(path: string) {\n if (!props.allExpanded)\n setExpanded(\n expanded.value.includes(path)\n ? expanded.value.filter((item) => item !== path)\n : [...expanded.value, path],\n )\n}\nfunction expandAll() {\n setExpanded(\n getExpandablePaths(props.value, { groupArraysAfterLength: props.groupArraysAfterLength }),\n )\n}\nfunction collapseAll() {\n setExpanded([])\n}\nconst getStyles = useStyles({\n name: 'JsonViewer',\n classes,\n props,\n attrs,\n classNames: props.classNames as any,\n styles: props.styles as any,\n vars: props.vars as any,\n unstyled: props.unstyled,\n varsResolver,\n})\nconst { copy: copyToClipboard, copied } = useClipboard()\nconst content = ref<HTMLElement | null>(null)\nconst lineHeights = ref<number[]>([])\nlet observer: ResizeObserver | undefined\nfunction syncLines() {\n lineHeights.value =\n props.withLineNumbers && content.value\n ? Array.from(content.value.querySelectorAll<HTMLElement>(':scope [data-jv-row]')).map(\n (row) => row.getBoundingClientRect().height,\n )\n : []\n}\nwatch([expanded, () => props.allExpanded, () => props.value], () => nextTick(syncLines), {\n deep: true,\n})\nonMounted(() => {\n syncLines()\n if (content.value && typeof ResizeObserver !== 'undefined') {\n observer = new ResizeObserver(syncLines)\n observer.observe(content.value)\n }\n})\nonBeforeUnmount(() => observer?.disconnect())\n</script>\n<template>\n <Box\n v-bind=\"{ ...attrs, ...getStyles('root') }\"\n :data-with-border=\"props.withBorder || undefined\"\n data-jv-root\n >\n <Tooltip\n v-if=\"props.withCopyButton\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"left\"\n fz=\"xs\"\n >\n <UnstyledButton\n v-bind=\"getStyles('copyAllButton')\"\n :aria-label=\"copied ? props.copiedLabel : `${props.copyLabel} JSON`\"\n @click=\"copyToClipboard(safeStringify(props.value))\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n width=\"16\"\n height=\"16\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\"\n />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n </UnstyledButton>\n </Tooltip>\n <div v-if=\"props.withControls && !props.allExpanded\" v-bind=\"getStyles('controls')\">\n <UnstyledButton v-bind=\"getStyles('control')\" @click=\"expandAll\">{{\n props.expandAllLabel\n }}</UnstyledButton>\n <UnstyledButton v-bind=\"getStyles('control')\" @click=\"collapseAll\">{{\n props.collapseAllLabel\n }}</UnstyledButton>\n </div>\n <ScrollArea type=\"hover\" :scrollbar-size=\"4\" v-bind=\"getStyles('scrollarea')\">\n <div v-bind=\"getStyles('wrapper')\">\n <div v-if=\"props.withLineNumbers\" v-bind=\"getStyles('lineNumbers')\" aria-hidden=\"true\">\n <div\n v-for=\"(height, index) in lineHeights\"\n :key=\"index\"\n :style=\"{ height: `${height}px` }\"\n >\n {{ index + 1 }}\n </div>\n </div>\n <div\n :ref=\"(node) => (content = node as HTMLElement | null)\"\n v-bind=\"getStyles('content')\"\n role=\"tree\"\n :aria-label=\"props.rootName || 'JSON'\"\n >\n <JsonViewerNode\n :value=\"props.value\"\n :path=\"[]\"\n :node-key=\"props.rootName || undefined\"\n :level=\"1\"\n :ancestors=\"[]\"\n :expanded-paths=\"expanded\"\n :toggle-path=\"togglePath\"\n :get-styles=\"getStyles\"\n :max-display-length=\"props.maxDisplayLength\"\n :with-types=\"props.withTypes\"\n :with-size=\"props.withSize\"\n :with-copy=\"props.withCopy\"\n :with-quotes=\"props.withQuotes\"\n :with-key-quotes=\"props.withKeyQuotes\"\n :collapse-strings-after-length=\"props.collapseStringsAfterLength\"\n :sort-keys=\"props.sortKeys\"\n :group-arrays-after-length=\"props.groupArraysAfterLength\"\n :copy-label=\"props.copyLabel\"\n :copied-label=\"props.copiedLabel\"\n :on-value-select=\"(path, value) => emit('valueSelect', path, value)\"\n :highlight-items=\"props.highlightItems\"\n :all-expanded=\"props.allExpanded\"\n :with-chevrons=\"props.withChevrons\"\n is-root\n />\n </div>\n </div>\n </ScrollArea>\n </Box>\n</template>\n","<script lang=\"ts\">\nimport { createVarsResolver, getFontSize, getRadius, rem } from '@mantine-vue/core'\nconst varsResolver = createVarsResolver<any>((_, { radius, fontSize, indentWidth }) => ({\n root: {\n '--jv-radius': radius !== undefined ? getRadius(radius) : undefined,\n '--jv-fz': fontSize !== undefined ? getFontSize(fontSize) : undefined,\n '--jv-indent': indentWidth !== undefined ? rem(indentWidth) : undefined,\n },\n}))\nexport { varsResolver }\n</script>\n<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue'\nimport { useClipboard, useUncontrolled } from '@mantine-vue/hooks'\nimport { Box, ScrollArea, Tooltip, UnstyledButton, useProps, useStyles } from '@mantine-vue/core'\nimport JsonViewerNode from './JsonViewerNode.vue'\nimport { getExpandablePaths, safeStringify } from './json-viewer-utils'\nimport type { JsonViewerOwnProps } from './JsonViewer.types'\nimport classes from './JsonViewer.module.css'\n\ndefineOptions({ name: 'JsonViewer', inheritAttrs: false })\nconst rawProps = withDefaults(defineProps<JsonViewerOwnProps>(), {\n rootName: false,\n defaultExpandDepth: 1,\n expandedPaths: undefined,\n maxDisplayLength: 100,\n withTypes: false,\n withSize: false,\n withCopy: false,\n withCopyButton: false,\n withQuotes: true,\n withKeyQuotes: false,\n collapseStringsAfterLength: false,\n sortKeys: false,\n groupArraysAfterLength: false,\n indentWidth: 16,\n withBorder: false,\n copyLabel: 'Copy',\n copiedLabel: 'Copied',\n expandAllLabel: 'Expand all',\n collapseAllLabel: 'Collapse all',\n withControls: false,\n allExpanded: false,\n withLineNumbers: false,\n withChevrons: false,\n unstyled: false,\n})\nconst emit = defineEmits<{\n 'update:expandedPaths': [paths: string[]]\n expandedPathsChange: [paths: string[]]\n valueSelect: [path: string[], value: any]\n}>()\nconst attrs = useAttrs()\nconst props = useProps('JsonViewer', null, rawProps)\nconst initial = getExpandablePaths(props.value, {\n depth: props.defaultExpandDepth,\n groupArraysAfterLength: props.groupArraysAfterLength,\n})\nconst [expanded, setExpanded] = useUncontrolled<string[]>({\n value: () => props.expandedPaths,\n defaultValue: initial,\n finalValue: [],\n onChange: (paths) => {\n emit('update:expandedPaths', paths)\n emit('expandedPathsChange', paths)\n },\n})\nfunction togglePath(path: string) {\n if (!props.allExpanded)\n setExpanded(\n expanded.value.includes(path)\n ? expanded.value.filter((item) => item !== path)\n : [...expanded.value, path],\n )\n}\nfunction expandAll() {\n setExpanded(\n getExpandablePaths(props.value, { groupArraysAfterLength: props.groupArraysAfterLength }),\n )\n}\nfunction collapseAll() {\n setExpanded([])\n}\nconst getStyles = useStyles({\n name: 'JsonViewer',\n classes,\n props,\n attrs,\n classNames: props.classNames as any,\n styles: props.styles as any,\n vars: props.vars as any,\n unstyled: props.unstyled,\n varsResolver,\n})\nconst { copy: copyToClipboard, copied } = useClipboard()\nconst content = ref<HTMLElement | null>(null)\nconst lineHeights = ref<number[]>([])\nlet observer: ResizeObserver | undefined\nfunction syncLines() {\n lineHeights.value =\n props.withLineNumbers && content.value\n ? Array.from(content.value.querySelectorAll<HTMLElement>(':scope [data-jv-row]')).map(\n (row) => row.getBoundingClientRect().height,\n )\n : []\n}\nwatch([expanded, () => props.allExpanded, () => props.value], () => nextTick(syncLines), {\n deep: true,\n})\nonMounted(() => {\n syncLines()\n if (content.value && typeof ResizeObserver !== 'undefined') {\n observer = new ResizeObserver(syncLines)\n observer.observe(content.value)\n }\n})\nonBeforeUnmount(() => observer?.disconnect())\n</script>\n<template>\n <Box\n v-bind=\"{ ...attrs, ...getStyles('root') }\"\n :data-with-border=\"props.withBorder || undefined\"\n data-jv-root\n >\n <Tooltip\n v-if=\"props.withCopyButton\"\n :label=\"copied ? props.copiedLabel : props.copyLabel\"\n position=\"left\"\n fz=\"xs\"\n >\n <UnstyledButton\n v-bind=\"getStyles('copyAllButton')\"\n :aria-label=\"copied ? props.copiedLabel : `${props.copyLabel} JSON`\"\n @click=\"copyToClipboard(safeStringify(props.value))\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n width=\"16\"\n height=\"16\"\n >\n <template v-if=\"copied\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M5 12l5 5l10 -10\" />\n </template>\n <template v-else>\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\"\n />\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </template>\n </svg>\n </UnstyledButton>\n </Tooltip>\n <div v-if=\"props.withControls && !props.allExpanded\" v-bind=\"getStyles('controls')\">\n <UnstyledButton v-bind=\"getStyles('control')\" @click=\"expandAll\">{{\n props.expandAllLabel\n }}</UnstyledButton>\n <UnstyledButton v-bind=\"getStyles('control')\" @click=\"collapseAll\">{{\n props.collapseAllLabel\n }}</UnstyledButton>\n </div>\n <ScrollArea type=\"hover\" :scrollbar-size=\"4\" v-bind=\"getStyles('scrollarea')\">\n <div v-bind=\"getStyles('wrapper')\">\n <div v-if=\"props.withLineNumbers\" v-bind=\"getStyles('lineNumbers')\" aria-hidden=\"true\">\n <div\n v-for=\"(height, index) in lineHeights\"\n :key=\"index\"\n :style=\"{ height: `${height}px` }\"\n >\n {{ index + 1 }}\n </div>\n </div>\n <div\n :ref=\"(node) => (content = node as HTMLElement | null)\"\n v-bind=\"getStyles('content')\"\n role=\"tree\"\n :aria-label=\"props.rootName || 'JSON'\"\n >\n <JsonViewerNode\n :value=\"props.value\"\n :path=\"[]\"\n :node-key=\"props.rootName || undefined\"\n :level=\"1\"\n :ancestors=\"[]\"\n :expanded-paths=\"expanded\"\n :toggle-path=\"togglePath\"\n :get-styles=\"getStyles\"\n :max-display-length=\"props.maxDisplayLength\"\n :with-types=\"props.withTypes\"\n :with-size=\"props.withSize\"\n :with-copy=\"props.withCopy\"\n :with-quotes=\"props.withQuotes\"\n :with-key-quotes=\"props.withKeyQuotes\"\n :collapse-strings-after-length=\"props.collapseStringsAfterLength\"\n :sort-keys=\"props.sortKeys\"\n :group-arrays-after-length=\"props.groupArraysAfterLength\"\n :copy-label=\"props.copyLabel\"\n :copied-label=\"props.copiedLabel\"\n :on-value-select=\"(path, value) => emit('valueSelect', path, value)\"\n :highlight-items=\"props.highlightItems\"\n :all-expanded=\"props.allExpanded\"\n :with-chevrons=\"props.withChevrons\"\n is-root\n />\n </div>\n </div>\n </ScrollArea>\n </Box>\n</template>\n","import { factory } from '@mantine-vue/core'\nimport JsonViewerComponent, { varsResolver } from './JsonViewer.vue'\nimport type { JsonViewerFactory } from './JsonViewer.types'\nimport classes from './JsonViewer.module.css'\nexport const JsonViewer = factory<JsonViewerFactory>(JsonViewerComponent, { classes, varsResolver })\nexport type * from './JsonViewer.types'\nexport { PATH_SEPARATOR, serializePath } from './json-viewer-utils'\nexport { serializePath as serializeJsonViewerPath } from './json-viewer-utils'\n","import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\n\nexport function createHighlightJsAdapter(hljs: any): CodeHighlightAdapter {\n return {\n getHighlighter:\n () =>\n ({ code, language }) => {\n const lang = hljs.getLanguage(language) ? language : 'plaintext'\n return {\n highlightedCode: hljs.highlight(code, { language: lang }).value,\n isHighlighted: true,\n codeElementProps: { class: `hljs ${lang}` },\n }\n },\n }\n}\n","export const light = {\n colors: {\n 'activityBar.activeBorder': '#fd8c73',\n 'activityBar.background': '#ffffff',\n 'activityBar.border': '#d0d7de',\n 'activityBar.foreground': '#1f2328',\n 'activityBar.inactiveForeground': '#656d76',\n 'activityBarBadge.background': '#0969da',\n 'activityBarBadge.foreground': '#ffffff',\n 'badge.background': '#0969da',\n 'badge.foreground': '#ffffff',\n 'breadcrumb.activeSelectionForeground': '#656d76',\n 'breadcrumb.focusForeground': '#1f2328',\n 'breadcrumb.foreground': '#656d76',\n 'breadcrumbPicker.background': '#ffffff',\n 'button.background': '#1f883d',\n 'button.foreground': '#ffffff',\n 'button.hoverBackground': '#1a7f37',\n 'button.secondaryBackground': '#ebecf0',\n 'button.secondaryForeground': '#24292f',\n 'button.secondaryHoverBackground': '#f3f4f6',\n 'checkbox.background': '#f6f8fa',\n 'checkbox.border': '#d0d7de',\n 'debugConsole.errorForeground': '#cf222e',\n 'debugConsole.infoForeground': '#57606a',\n 'debugConsole.sourceForeground': '#9a6700',\n 'debugConsole.warningForeground': '#7d4e00',\n 'debugConsoleInputIcon.foreground': '#6639ba',\n 'debugIcon.breakpointForeground': '#cf222e',\n 'debugTokenExpression.boolean': '#116329',\n 'debugTokenExpression.error': '#a40e26',\n 'debugTokenExpression.name': '#0550ae',\n 'debugTokenExpression.number': '#116329',\n 'debugTokenExpression.string': '#0a3069',\n 'debugTokenExpression.value': '#0a3069',\n 'debugToolBar.background': '#ffffff',\n descriptionForeground: '#656d76',\n 'diffEditor.insertedLineBackground': '#aceebb4d',\n 'diffEditor.insertedTextBackground': '#6fdd8b80',\n 'diffEditor.removedLineBackground': '#ffcecb4d',\n 'diffEditor.removedTextBackground': '#ff818266',\n 'dropdown.background': '#ffffff',\n 'dropdown.border': '#d0d7de',\n 'dropdown.foreground': '#1f2328',\n 'dropdown.listBackground': '#ffffff',\n 'editor.background': '#ffffff',\n 'editor.findMatchBackground': '#bf8700',\n 'editor.findMatchHighlightBackground': '#fae17d80',\n 'editor.focusedStackFrameHighlightBackground': '#4ac26b66',\n 'editor.foldBackground': '#6e77811a',\n 'editor.foreground': '#1f2328',\n 'editor.lineHighlightBackground': '#eaeef280',\n 'editor.linkedEditingBackground': '#0969da12',\n 'editor.selectionHighlightBackground': '#4ac26b40',\n 'editor.stackFrameHighlightBackground': '#d4a72c66',\n 'editor.wordHighlightBackground': '#eaeef280',\n 'editor.wordHighlightBorder': '#afb8c199',\n 'editor.wordHighlightStrongBackground': '#afb8c14d',\n 'editor.wordHighlightStrongBorder': '#afb8c199',\n 'editorBracketHighlight.foreground1': '#0969da',\n 'editorBracketHighlight.foreground2': '#1a7f37',\n 'editorBracketHighlight.foreground3': '#9a6700',\n 'editorBracketHighlight.foreground4': '#cf222e',\n 'editorBracketHighlight.foreground5': '#bf3989',\n 'editorBracketHighlight.foreground6': '#8250df',\n 'editorBracketHighlight.unexpectedBracket.foreground': '#656d76',\n 'editorBracketMatch.background': '#4ac26b40',\n 'editorBracketMatch.border': '#4ac26b99',\n 'editorCursor.foreground': '#0969da',\n 'editorGroup.border': '#d0d7de',\n 'editorGroupHeader.tabsBackground': '#f6f8fa',\n 'editorGroupHeader.tabsBorder': '#d0d7de',\n 'editorGutter.addedBackground': '#4ac26b66',\n 'editorGutter.deletedBackground': '#ff818266',\n 'editorGutter.modifiedBackground': '#d4a72c66',\n 'editorIndentGuide.activeBackground': '#1f23283d',\n 'editorIndentGuide.background': '#1f23281f',\n 'editorInlayHint.background': '#afb8c133',\n 'editorInlayHint.foreground': '#656d76',\n 'editorInlayHint.paramBackground': '#afb8c133',\n 'editorInlayHint.paramForeground': '#656d76',\n 'editorInlayHint.typeBackground': '#afb8c133',\n 'editorInlayHint.typeForeground': '#656d76',\n 'editorLineNumber.activeForeground': '#1f2328',\n 'editorLineNumber.foreground': '#8c959f',\n 'editorOverviewRuler.border': '#ffffff',\n 'editorWhitespace.foreground': '#afb8c1',\n 'editorWidget.background': '#ffffff',\n errorForeground: '#cf222e',\n focusBorder: '#0969da',\n foreground: '#1f2328',\n 'gitDecoration.addedResourceForeground': '#1a7f37',\n 'gitDecoration.conflictingResourceForeground': '#bc4c00',\n 'gitDecoration.deletedResourceForeground': '#cf222e',\n 'gitDecoration.ignoredResourceForeground': '#6e7781',\n 'gitDecoration.modifiedResourceForeground': '#9a6700',\n 'gitDecoration.submoduleResourceForeground': '#656d76',\n 'gitDecoration.untrackedResourceForeground': '#1a7f37',\n 'icon.foreground': '#656d76',\n 'input.background': '#ffffff',\n 'input.border': '#d0d7de',\n 'input.foreground': '#1f2328',\n 'input.placeholderForeground': '#6e7781',\n 'keybindingLabel.foreground': '#1f2328',\n 'list.activeSelectionBackground': '#afb8c133',\n 'list.activeSelectionForeground': '#1f2328',\n 'list.focusBackground': '#ddf4ff',\n 'list.focusForeground': '#1f2328',\n 'list.highlightForeground': '#0969da',\n 'list.hoverBackground': '#eaeef280',\n 'list.hoverForeground': '#1f2328',\n 'list.inactiveFocusBackground': '#ddf4ff',\n 'list.inactiveSelectionBackground': '#afb8c133',\n 'list.inactiveSelectionForeground': '#1f2328',\n 'minimapSlider.activeBackground': '#8c959f47',\n 'minimapSlider.background': '#8c959f33',\n 'minimapSlider.hoverBackground': '#8c959f3d',\n 'notificationCenterHeader.background': '#f6f8fa',\n 'notificationCenterHeader.foreground': '#656d76',\n 'notifications.background': '#ffffff',\n 'notifications.border': '#d0d7de',\n 'notifications.foreground': '#1f2328',\n 'notificationsErrorIcon.foreground': '#cf222e',\n 'notificationsInfoIcon.foreground': '#0969da',\n 'notificationsWarningIcon.foreground': '#9a6700',\n 'panel.background': '#f6f8fa',\n 'panel.border': '#d0d7de',\n 'panelInput.border': '#d0d7de',\n 'panelTitle.activeBorder': '#fd8c73',\n 'panelTitle.activeForeground': '#1f2328',\n 'panelTitle.inactiveForeground': '#656d76',\n 'pickerGroup.border': '#d0d7de',\n 'pickerGroup.foreground': '#656d76',\n 'progressBar.background': '#0969da',\n 'quickInput.background': '#ffffff',\n 'quickInput.foreground': '#1f2328',\n 'scrollbar.shadow': '#6e778133',\n 'scrollbarSlider.activeBackground': '#8c959f47',\n 'scrollbarSlider.background': '#8c959f33',\n 'scrollbarSlider.hoverBackground': '#8c959f3d',\n 'settings.headerForeground': '#1f2328',\n 'settings.modifiedItemIndicator': '#d4a72c66',\n 'sideBar.background': '#f6f8fa',\n 'sideBar.border': '#d0d7de',\n 'sideBar.foreground': '#1f2328',\n 'sideBarSectionHeader.background': '#f6f8fa',\n 'sideBarSectionHeader.border': '#d0d7de',\n 'sideBarSectionHeader.foreground': '#1f2328',\n 'sideBarTitle.foreground': '#1f2328',\n 'statusBar.background': '#ffffff',\n 'statusBar.border': '#d0d7de',\n 'statusBar.debuggingBackground': '#cf222e',\n 'statusBar.debuggingForeground': '#ffffff',\n 'statusBar.focusBorder': '#0969da80',\n 'statusBar.foreground': '#656d76',\n 'statusBar.noFolderBackground': '#ffffff',\n 'statusBarItem.activeBackground': '#1f23281f',\n 'statusBarItem.focusBorder': '#0969da',\n 'statusBarItem.hoverBackground': '#1f232814',\n 'statusBarItem.prominentBackground': '#afb8c133',\n 'statusBarItem.remoteBackground': '#eaeef2',\n 'statusBarItem.remoteForeground': '#1f2328',\n 'symbolIcon.arrayForeground': '#953800',\n 'symbolIcon.booleanForeground': '#0550ae',\n 'symbolIcon.classForeground': '#953800',\n 'symbolIcon.colorForeground': '#0a3069',\n 'symbolIcon.constantForeground': '#116329',\n 'symbolIcon.constructorForeground': '#3e1f79',\n 'symbolIcon.enumeratorForeground': '#953800',\n 'symbolIcon.enumeratorMemberForeground': '#0550ae',\n 'symbolIcon.eventForeground': '#57606a',\n 'symbolIcon.fieldForeground': '#953800',\n 'symbolIcon.fileForeground': '#7d4e00',\n 'symbolIcon.folderForeground': '#7d4e00',\n 'symbolIcon.functionForeground': '#6639ba',\n 'symbolIcon.interfaceForeground': '#953800',\n 'symbolIcon.keyForeground': '#0550ae',\n 'symbolIcon.keywordForeground': '#a40e26',\n 'symbolIcon.methodForeground': '#6639ba',\n 'symbolIcon.moduleForeground': '#a40e26',\n 'symbolIcon.namespaceForeground': '#a40e26',\n 'symbolIcon.nullForeground': '#0550ae',\n 'symbolIcon.numberForeground': '#116329',\n 'symbolIcon.objectForeground': '#953800',\n 'symbolIcon.operatorForeground': '#0a3069',\n 'symbolIcon.packageForeground': '#953800',\n 'symbolIcon.propertyForeground': '#953800',\n 'symbolIcon.referenceForeground': '#0550ae',\n 'symbolIcon.snippetForeground': '#0550ae',\n 'symbolIcon.stringForeground': '#0a3069',\n 'symbolIcon.structForeground': '#953800',\n 'symbolIcon.textForeground': '#0a3069',\n 'symbolIcon.typeParameterForeground': '#0a3069',\n 'symbolIcon.unitForeground': '#0550ae',\n 'symbolIcon.variableForeground': '#953800',\n 'tab.activeBackground': '#ffffff',\n 'tab.activeBorder': '#ffffff',\n 'tab.activeBorderTop': '#fd8c73',\n 'tab.activeForeground': '#1f2328',\n 'tab.border': '#d0d7de',\n 'tab.hoverBackground': '#ffffff',\n 'tab.inactiveBackground': '#f6f8fa',\n 'tab.inactiveForeground': '#656d76',\n 'tab.unfocusedActiveBorder': '#ffffff',\n 'tab.unfocusedActiveBorderTop': '#d0d7de',\n 'tab.unfocusedHoverBackground': '#eaeef280',\n 'terminal.ansiBlack': '#24292f',\n 'terminal.ansiBlue': '#0969da',\n 'terminal.ansiBrightBlack': '#57606a',\n 'terminal.ansiBrightBlue': '#218bff',\n 'terminal.ansiBrightCyan': '#3192aa',\n 'terminal.ansiBrightGreen': '#1a7f37',\n 'terminal.ansiBrightMagenta': '#a475f9',\n 'terminal.ansiBrightRed': '#a40e26',\n 'terminal.ansiBrightWhite': '#8c959f',\n 'terminal.ansiBrightYellow': '#633c01',\n 'terminal.ansiCyan': '#1b7c83',\n 'terminal.ansiGreen': '#116329',\n 'terminal.ansiMagenta': '#8250df',\n 'terminal.ansiRed': '#cf222e',\n 'terminal.ansiWhite': '#6e7781',\n 'terminal.ansiYellow': '#4d2d00',\n 'terminal.foreground': '#1f2328',\n 'textBlockQuote.background': '#f6f8fa',\n 'textBlockQuote.border': '#d0d7de',\n 'textCodeBlock.background': '#afb8c133',\n 'textLink.activeForeground': '#0969da',\n 'textLink.foreground': '#0969da',\n 'textPreformat.foreground': '#656d76',\n 'textSeparator.foreground': '#d8dee4',\n 'titleBar.activeBackground': '#ffffff',\n 'titleBar.activeForeground': '#656d76',\n 'titleBar.border': '#d0d7de',\n 'titleBar.inactiveBackground': '#f6f8fa',\n 'titleBar.inactiveForeground': '#656d76',\n 'tree.indentGuidesStroke': '#d8dee4',\n 'welcomePage.buttonBackground': '#f6f8fa',\n 'welcomePage.buttonHoverBackground': '#f3f4f6',\n },\n displayName: 'GitHub Light Default',\n semanticHighlighting: true,\n tokenColors: [\n {\n scope: ['comment', 'punctuation.definition.comment', 'string.comment'],\n settings: {\n foreground: '#6e7781',\n },\n },\n {\n scope: ['constant.other.placeholder', 'constant.character'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: [\n 'constant',\n 'entity.name.constant',\n 'variable.other.constant',\n 'variable.other.enummember',\n 'variable.language',\n 'entity',\n ],\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['entity.name', 'meta.export.default', 'meta.definition.variable'],\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: [\n 'variable.parameter.function',\n 'meta.jsx.children',\n 'meta.block',\n 'meta.tag.attributes',\n 'entity.name.constant',\n 'meta.object.member',\n 'meta.embedded.expression',\n ],\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: 'entity.name.function',\n settings: {\n foreground: '#8250df',\n },\n },\n {\n scope: ['entity.name.tag', 'support.class.component'],\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'keyword',\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['storage', 'storage.type'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['storage.modifier.package', 'storage.modifier.import', 'storage.type.java'],\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: ['string', 'string punctuation.section.embedded source'],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: 'support',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.property-name',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'variable',\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: 'variable.other',\n settings: {\n foreground: '#1f2328',\n },\n },\n {\n scope: 'invalid.broken',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.deprecated',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.illegal',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'invalid.unimplemented',\n settings: {\n fontStyle: 'italic',\n foreground: '#82071e',\n },\n },\n {\n scope: 'carriage-return',\n settings: {\n background: '#cf222e',\n content: '^M',\n fontStyle: 'italic underline',\n foreground: '#f6f8fa',\n },\n },\n {\n scope: 'message.error',\n settings: {\n foreground: '#82071e',\n },\n },\n {\n scope: 'string variable',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['source.regexp', 'string.regexp'],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: [\n 'string.regexp.character-class',\n 'string.regexp constant.character.escape',\n 'string.regexp source.ruby.embedded',\n 'string.regexp string.regexp.arbitrary-repitition',\n ],\n settings: {\n foreground: '#0a3069',\n },\n },\n {\n scope: 'string.regexp constant.character.escape',\n settings: {\n fontStyle: 'bold',\n foreground: '#116329',\n },\n },\n {\n scope: 'support.constant',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'support.variable',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'support.type.property-name.json',\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'meta.module-reference',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'punctuation.definition.list.begin.markdown',\n settings: {\n foreground: '#953800',\n },\n },\n {\n scope: ['markup.heading', 'markup.heading entity.name'],\n settings: {\n fontStyle: 'bold',\n foreground: '#0550ae',\n },\n },\n {\n scope: 'markup.quote',\n settings: {\n foreground: '#116329',\n },\n },\n {\n scope: 'markup.italic',\n settings: {\n fontStyle: 'italic',\n foreground: '#1f2328',\n },\n },\n {\n scope: 'markup.bold',\n settings: {\n fontStyle: 'bold',\n foreground: '#1f2328',\n },\n },\n {\n scope: ['markup.underline'],\n settings: {\n fontStyle: 'underline',\n },\n },\n {\n scope: ['markup.strikethrough'],\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n scope: 'markup.inline.raw',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: ['markup.deleted', 'meta.diff.header.from-file', 'punctuation.definition.deleted'],\n settings: {\n background: '#ffebe9',\n foreground: '#82071e',\n },\n },\n {\n scope: ['punctuation.section.embedded'],\n settings: {\n foreground: '#cf222e',\n },\n },\n {\n scope: ['markup.inserted', 'meta.diff.header.to-file', 'punctuation.definition.inserted'],\n settings: {\n background: '#dafbe1',\n foreground: '#116329',\n },\n },\n {\n scope: ['markup.changed', 'punctuation.definition.changed'],\n settings: {\n background: '#ffd8b5',\n foreground: '#953800',\n },\n },\n {\n scope: ['markup.ignored', 'markup.untracked'],\n settings: {\n background: '#0550ae',\n foreground: '#eaeef2',\n },\n },\n {\n scope: 'meta.diff.range',\n settings: {\n fontStyle: 'bold',\n foreground: '#8250df',\n },\n },\n {\n scope: 'meta.diff.header',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.separator',\n settings: {\n fontStyle: 'bold',\n foreground: '#0550ae',\n },\n },\n {\n scope: 'meta.output',\n settings: {\n foreground: '#0550ae',\n },\n },\n {\n scope: [\n 'brackethighlighter.tag',\n 'brackethighlighter.curly',\n 'brackethighlighter.round',\n 'brackethighlighter.square',\n 'brackethighlighter.angle',\n 'brackethighlighter.quote',\n ],\n settings: {\n foreground: '#57606a',\n },\n },\n {\n scope: 'brackethighlighter.unmatched',\n settings: {\n foreground: '#82071e',\n },\n },\n {\n scope: ['constant.other.reference.link', 'string.other.link'],\n settings: {\n foreground: '#0a3069',\n },\n },\n ],\n type: 'light',\n}\n\nexport const dark = {\n type: 'dark',\n colors: {\n 'dropdown.background': '#525252',\n 'list.activeSelectionBackground': '#707070',\n 'quickInputList.focusBackground': '#707070',\n 'list.inactiveSelectionBackground': '#4e4e4e',\n 'list.hoverBackground': '#444444',\n 'list.highlightForeground': '#e58520',\n 'button.background': '#565656',\n 'editor.background': '#1e1e1e',\n 'editor.foreground': '#c5c8c6',\n 'editor.selectionBackground': '#676b7180',\n 'minimap.selectionHighlight': '#676b7180',\n 'editor.selectionHighlightBackground': '#575b6180',\n 'editor.lineHighlightBackground': '#303030',\n 'editorLineNumber.activeForeground': '#949494',\n 'editor.wordHighlightBackground': '#4747a180',\n 'editor.wordHighlightStrongBackground': '#6767ce80',\n 'editorCursor.foreground': '#c07020',\n 'editorWhitespace.foreground': '#505037',\n 'editorIndentGuide.background': '#505037',\n 'editorIndentGuide.activeBackground': '#707057',\n 'editorGroupHeader.tabsBackground': '#282828',\n 'tab.inactiveBackground': '#404040',\n 'tab.border': '#303030',\n 'tab.inactiveForeground': '#d8d8d8',\n 'tab.lastPinnedBorder': '#505050',\n 'peekView.border': '#3655b5',\n 'panelTitle.activeForeground': '#ffffff',\n 'statusBar.background': '#505050',\n 'statusBar.debuggingBackground': '#505050',\n 'statusBar.noFolderBackground': '#505050',\n 'titleBar.activeBackground': '#505050',\n 'statusBarItem.remoteBackground': '#3655b5',\n 'ports.iconRunningProcessForeground': '#CCCCCC',\n 'activityBar.background': '#353535',\n 'activityBar.foreground': '#ffffff',\n 'activityBarBadge.background': '#3655b5',\n 'sideBar.background': '#272727',\n 'sideBarSectionHeader.background': '#505050',\n 'menu.background': '#272727',\n 'menu.foreground': '#CCCCCC',\n 'pickerGroup.foreground': '#b0b0b0',\n 'inputOption.activeBorder': '#3655b5',\n focusBorder: '#3655b5',\n 'terminal.ansiBlack': '#1e1e1e',\n 'terminal.ansiRed': '#C4265E', // the bright color with ~75% transparent on the background\n 'terminal.ansiGreen': '#86B42B',\n 'terminal.ansiYellow': '#B3B42B',\n 'terminal.ansiBlue': '#6A7EC8',\n 'terminal.ansiMagenta': '#8C6BC8',\n 'terminal.ansiCyan': '#56ADBC',\n 'terminal.ansiWhite': '#e3e3dd',\n 'terminal.ansiBrightBlack': '#666666',\n 'terminal.ansiBrightRed': '#f92672',\n 'terminal.ansiBrightGreen': '#A6E22E',\n 'terminal.ansiBrightYellow': '#e2e22e', // hue shifted #A6E22E\n 'terminal.ansiBrightBlue': '#819aff', // hue shifted #AE81FF\n 'terminal.ansiBrightMagenta': '#AE81FF',\n 'terminal.ansiBrightCyan': '#66D9EF',\n 'terminal.ansiBrightWhite': '#f8f8f2',\n 'terminal.inactiveSelectionBackground': '#676b7140',\n },\n tokenColors: [\n {\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n scope: ['meta.embedded', 'source.groovy.embedded', 'variable.legacy.builtin.python'],\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n name: 'Comment',\n scope: 'comment',\n settings: {\n fontStyle: '',\n foreground: '#9A9B99',\n },\n },\n {\n name: 'String',\n scope: 'string',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'String Embedded Source',\n scope: 'string source',\n settings: {\n fontStyle: '',\n foreground: '#D08442',\n },\n },\n {\n name: 'Number',\n scope: 'constant.numeric',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Built-in constant',\n scope: 'constant.language',\n settings: {\n fontStyle: '',\n foreground: '#408080',\n },\n },\n {\n name: 'User-defined constant',\n scope: 'constant.character, constant.other',\n settings: {\n fontStyle: '',\n foreground: '#8080FF',\n },\n },\n {\n name: 'Keyword',\n scope: 'keyword',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Support',\n scope: 'support',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'Storage',\n scope: 'storage',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Class name',\n scope:\n 'entity.name.class, entity.name.type, entity.name.namespace, entity.name.scope-resolution',\n settings: {\n fontStyle: '',\n foreground: '#9B0000',\n },\n },\n {\n name: 'Inherited class',\n scope: 'entity.other.inherited-class',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'Function name',\n scope: 'entity.name.function',\n settings: {\n fontStyle: '',\n foreground: '#CE6700',\n },\n },\n {\n name: 'Function argument',\n scope: 'variable.parameter',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Tag name',\n scope: 'entity.name.tag',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag attribute',\n scope: 'entity.other.attribute-name',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Library function',\n scope: 'support.function',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Keyword',\n scope: 'keyword',\n settings: {\n fontStyle: '',\n foreground: '#676867',\n },\n },\n {\n name: 'Class Variable',\n scope: 'variable.other, variable.js, punctuation.separator.variable',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Meta Brace',\n scope:\n 'punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html',\n settings: {\n fontStyle: '',\n foreground: '#008200',\n },\n },\n {\n name: 'Invalid',\n scope: 'invalid',\n settings: {\n fontStyle: '',\n foreground: '#FF0B00',\n },\n },\n {\n name: 'Normal Variable',\n scope: 'variable.other.php, variable.other.normal',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Function Object',\n scope: 'meta.function-call.object',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Function Call Variable',\n scope: 'variable.other.property',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Keyword Control / Special',\n scope: [\n 'keyword.control',\n 'keyword.operator.new.cpp',\n 'keyword.operator.delete.cpp',\n 'keyword.other.using',\n 'keyword.other.directive.using',\n 'keyword.other.operator',\n ],\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag',\n scope: 'meta.tag',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Tag Name',\n scope: 'entity.name.tag',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Doctype',\n scope: 'meta.doctype, meta.tag.sgml-declaration.doctype, meta.tag.sgml.doctype',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Tag Inline Source',\n scope: 'meta.tag.inline source, text.html.php.source',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Tag Other',\n scope:\n 'meta.tag.other, entity.name.tag.style, entity.name.tag.script, meta.tag.block.script, source.js.embedded punctuation.definition.tag.html, source.css.embedded punctuation.definition.tag.html',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'Tag Attribute',\n scope: 'entity.other.attribute-name, meta.tag punctuation.definition.string',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Tag Value',\n scope: 'meta.tag string -source -punctuation, text source text meta.tag string -punctuation',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'Meta Brace',\n scope:\n 'punctuation.section.embedded -(source string source punctuation.section.embedded), meta.brace.erb.html',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'HTML ID',\n scope: 'meta.toc-list.id',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'HTML String',\n scope:\n 'string.quoted.double.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html, punctuation.definition.string.end.html source, string.quoted.double.html source',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'HTML Tags',\n scope:\n 'punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end',\n settings: {\n fontStyle: '',\n foreground: '#6089B4',\n },\n },\n {\n name: 'CSS ID',\n scope: 'meta.selector entity.other.attribute-name.id',\n settings: {\n fontStyle: '',\n foreground: '#9872A2',\n },\n },\n {\n name: 'CSS Property Name',\n scope: 'source.css support.type.property-name',\n settings: {\n fontStyle: '',\n foreground: '#676867',\n },\n },\n {\n name: 'CSS Property Value',\n scope:\n 'meta.property-group support.constant.property-value, meta.property-value support.constant.property-value',\n settings: {\n fontStyle: '',\n foreground: '#C7444A',\n },\n },\n {\n name: 'JavaScript Variable',\n scope: 'variable.language.js',\n settings: {\n foreground: '#CC555A',\n },\n },\n {\n name: 'Template Definition',\n scope: ['punctuation.definition.template-expression', 'punctuation.section.embedded.coffee'],\n settings: {\n foreground: '#D08442',\n },\n },\n {\n name: 'Reset JavaScript string interpolation expression',\n scope: ['meta.template.expression'],\n settings: {\n foreground: '#C5C8C6',\n },\n },\n {\n name: 'PHP Function Call',\n scope: 'meta.function-call.object.php',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'PHP Single Quote HMTL Fix',\n scope: 'punctuation.definition.string.end.php, punctuation.definition.string.begin.php',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'PHP Parenthesis HMTL Fix',\n scope: 'source.php.embedded.line.html',\n settings: {\n foreground: '#676867',\n },\n },\n {\n name: 'PHP Punctuation Embedded',\n scope: 'punctuation.section.embedded.begin.php, punctuation.section.embedded.end.php',\n settings: {\n fontStyle: '',\n foreground: '#D08442',\n },\n },\n {\n name: 'Ruby Symbol',\n scope: 'constant.other.symbol.ruby',\n settings: {\n fontStyle: '',\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Ruby Variable',\n scope: 'variable.language.ruby',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Ruby Special Method',\n scope: 'keyword.other.special-method.ruby',\n settings: {\n fontStyle: '',\n foreground: '#D9B700',\n },\n },\n {\n name: 'Ruby Embedded Source',\n scope: ['punctuation.section.embedded.begin.ruby', 'punctuation.section.embedded.end.ruby'],\n settings: {\n foreground: '#D08442',\n },\n },\n {\n name: 'SQL',\n scope: 'keyword.other.DML.sql',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'diff: header',\n scope: 'meta.diff, meta.diff.header',\n settings: {\n fontStyle: 'italic',\n foreground: '#E0EDDD',\n },\n },\n {\n name: 'diff: deleted',\n scope: 'markup.deleted',\n settings: {\n fontStyle: '',\n foreground: '#dc322f',\n },\n },\n {\n name: 'diff: changed',\n scope: 'markup.changed',\n settings: {\n fontStyle: '',\n foreground: '#cb4b16',\n },\n },\n {\n name: 'diff: inserted',\n scope: 'markup.inserted',\n settings: {\n foreground: '#219186',\n },\n },\n {\n name: 'Markup Quote',\n scope: 'markup.quote',\n settings: {\n foreground: '#9872A2',\n },\n },\n {\n name: 'Markup Lists',\n scope: 'markup.list',\n settings: {\n foreground: '#9AA83A',\n },\n },\n {\n name: 'Markup Styling',\n scope: 'markup.bold, markup.italic',\n settings: {\n foreground: '#6089B4',\n },\n },\n {\n name: 'Markup Inline',\n scope: 'markup.inline.raw',\n settings: {\n fontStyle: '',\n foreground: '#FF0080',\n },\n },\n {\n name: 'Markup Headings',\n scope: 'markup.heading',\n settings: {\n foreground: '#D0B344',\n },\n },\n {\n name: 'Markup Setext Header',\n scope: 'markup.heading.setext',\n settings: {\n fontStyle: '',\n foreground: '#D0B344',\n },\n },\n {\n name: 'Markdown Headings',\n scope: 'markup.heading.markdown',\n settings: {\n fontStyle: 'bold',\n },\n },\n {\n name: 'Markdown Quote',\n scope: 'markup.quote.markdown',\n settings: {\n fontStyle: 'italic',\n foreground: '',\n },\n },\n {\n name: 'Markdown Bold',\n scope: 'markup.bold.markdown',\n settings: {\n fontStyle: 'bold',\n },\n },\n {\n name: 'Markdown Link Title/Description',\n scope: 'string.other.link.title.markdown,string.other.link.description.markdown',\n settings: {\n foreground: '#AE81FF',\n },\n },\n {\n name: 'Markdown Underline Link/Image',\n scope: 'markup.underline.link.markdown,markup.underline.link.image.markdown',\n settings: {\n foreground: '',\n },\n },\n {\n name: 'Markdown Emphasis',\n scope: 'markup.italic.markdown',\n settings: {\n fontStyle: 'italic',\n },\n },\n {\n scope: 'markup.strikethrough',\n settings: {\n fontStyle: 'strikethrough',\n },\n },\n {\n name: 'Markdown Punctuation Definition Link',\n scope: 'markup.list.unnumbered.markdown, markup.list.numbered.markdown',\n settings: {\n foreground: '',\n },\n },\n {\n name: 'Markdown List Punctuation',\n scope: ['punctuation.definition.list.begin.markdown'],\n settings: {\n foreground: '',\n },\n },\n {\n scope: 'token.info-token',\n settings: {\n foreground: '#6796e6',\n },\n },\n {\n scope: 'token.warn-token',\n settings: {\n foreground: '#cd9731',\n },\n },\n {\n scope: 'token.error-token',\n settings: {\n foreground: '#f44747',\n },\n },\n {\n scope: 'token.debug-token',\n settings: {\n foreground: '#b267e6',\n },\n },\n {\n name: 'this.self',\n scope: 'variable.language',\n settings: {\n foreground: '#c7444a',\n },\n },\n ],\n semanticHighlighting: true,\n}\n","import type { CodeHighlightAdapter } from '../CodeHighlightProvider'\nimport { dark, light } from './shiki-themes'\n\nfunction stripElement(openTag: string, data: string) {\n const openIndex = data.indexOf(`<${openTag}`)\n let closeIndex = openIndex + openTag.length\n\n for (let i = openIndex; i < data.length; i += 1) {\n if (data[i] === '>') {\n closeIndex = i\n break\n }\n }\n\n const striped = data.slice(0, openIndex) + data.slice(closeIndex + 1)\n return striped.replace(`</${openTag}>`, '')\n}\n\nexport function stripShikiCodeBlocks(data: string) {\n return stripElement('code', stripElement('pre', data))\n}\n\ninterface CreateShikiAdapterOptions {\n forceColorScheme?: 'dark' | 'light' | (string & {})\n resolveLanguage?: (language: string) => any\n}\n\nconst specialLanguages = ['text', 'plaintext', 'txt', 'plain', 'ansi']\n\nfunction isLanguageAvailable(ctx: any, language: string | undefined) {\n return (\n !language ||\n specialLanguages.includes(language) ||\n typeof ctx.getLoadedLanguages !== 'function' ||\n ctx.getLoadedLanguages().includes(language)\n )\n}\n\nexport const createShikiAdapter = (\n loadShiki: () => Promise<any>,\n { forceColorScheme, resolveLanguage }: CreateShikiAdapterOptions = {},\n): CodeHighlightAdapter => {\n const warnedLanguages = new Set<string>()\n const warnUnavailable = (language: string, reason: string) => {\n if (warnedLanguages.has(language)) return\n warnedLanguages.add(language)\n // oxlint-disable-next-line no-console\n console.warn(\n `[@mantine-vue/code-highlight] Language \\`${language}\\` ${reason}, code is rendered as plain text.`,\n )\n }\n\n return {\n loadContext: loadShiki,\n loadLanguage: resolveLanguage\n ? (ctx, language) => {\n if (isLanguageAvailable(ctx, language)) return undefined\n const onLoadError = (error: unknown) => {\n warnUnavailable(language, 'could not be loaded')\n throw error\n }\n try {\n const grammar = resolveLanguage(language)\n if (!grammar) {\n warnUnavailable(language, 'was not resolved by `resolveLanguage`')\n return undefined\n }\n return Promise.resolve(ctx.loadLanguage(grammar)).catch(onLoadError)\n } catch (error) {\n return Promise.reject(error).catch(onLoadError)\n }\n }\n : undefined,\n getHighlighter: (ctx) => {\n if (!ctx) {\n return ({ code }) => ({ highlightedCode: code, isHighlighted: false })\n }\n\n return ({ code, language, colorScheme }) => {\n if (!isLanguageAvailable(ctx, language)) {\n if (!resolveLanguage && language) warnUnavailable(language, 'is not loaded')\n return { highlightedCode: code, isHighlighted: false }\n }\n let _colorScheme: any = colorScheme\n\n if (colorScheme === 'light') {\n _colorScheme = light\n } else if (colorScheme === 'dark') {\n _colorScheme = dark\n }\n\n return {\n isHighlighted: true,\n highlightedCode: stripShikiCodeBlocks(\n ctx.codeToHtml(code, {\n lang: language,\n theme: forceColorScheme || _colorScheme,\n }),\n ),\n }\n }\n },\n }\n}\n"],"mappings":"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;EAC5B,4BAA4B;EAC5B,6BAA6B;EAC7B,6BAA6B;EAC7B,mBAAmB;EACnB,+BAA+B;EAC/B,+BAA+B;EAC/B,2BAA2B;EAC3B,gCAAgC;EAChC,qCAAqC;CACvC;CACA,aAAa;CACb,sBAAsB;CACtB,aAAa;EACX;GACE,OAAO;IAAC;IAAW;IAAkC;GAAgB;GACrE,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,8BAA8B,oBAAoB;GAC1D,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAe;IAAuB;GAA0B;GACxE,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,mBAAmB,yBAAyB;GACpD,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,WAAW,cAAc;GACjC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAA4B;IAA2B;GAAmB;GAClF,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,UAAU,4CAA4C;GAC9D,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,YAAY;IACZ,SAAS;IACT,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,iBAAiB,eAAe;GACxC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,4BAA4B;GACtD,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB;GAC1B,UAAU,EACR,WAAW,YACb;EACF;EACA;GACE,OAAO,CAAC,sBAAsB;GAC9B,UAAU,EACR,WAAW,gBACb;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAkB;IAA8B;GAAgC;GACxF,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,8BAA8B;GACtC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IAAC;IAAmB;IAA4B;GAAiC;GACxF,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,gCAAgC;GAC1D,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO,CAAC,kBAAkB,kBAAkB;GAC5C,UAAU;IACR,YAAY;IACZ,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO,CAAC,iCAAiC,mBAAmB;GAC5D,UAAU,EACR,YAAY,UACd;EACF;CACF;CACA,MAAM;AACR;AAEA,IAAa,OAAO;CAClB,MAAM;CACN,QAAQ;EACN,uBAAuB;EACvB,kCAAkC;EAClC,kCAAkC;EAClC,oCAAoC;EACpC,wBAAwB;EACxB,4BAA4B;EAC5B,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EACrB,8BAA8B;EAC9B,8BAA8B;EAC9B,uCAAuC;EACvC,kCAAkC;EAClC,qCAAqC;EACrC,kCAAkC;EAClC,wCAAwC;EACxC,2BAA2B;EAC3B,+BAA+B;EAC/B,gCAAgC;EAChC,sCAAsC;EACtC,oCAAoC;EACpC,0BAA0B;EAC1B,cAAc;EACd,0BAA0B;EAC1B,wBAAwB;EACxB,mBAAmB;EACnB,+BAA+B;EAC/B,wBAAwB;EACxB,iCAAiC;EACjC,gCAAgC;EAChC,6BAA6B;EAC7B,kCAAkC;EAClC,sCAAsC;EACtC,0BAA0B;EAC1B,0BAA0B;EAC1B,+BAA+B;EAC/B,sBAAsB;EACtB,mCAAmC;EACnC,mBAAmB;EACnB,mBAAmB;EACnB,0BAA0B;EAC1B,4BAA4B;EAC5B,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,qBAAqB;EACrB,wBAAwB;EACxB,qBAAqB;EACrB,sBAAsB;EACtB,4BAA4B;EAC5B,0BAA0B;EAC1B,4BAA4B;EAC5B,6BAA6B;EAC7B,2BAA2B;EAC3B,8BAA8B;EAC9B,2BAA2B;EAC3B,4BAA4B;EAC5B,wCAAwC;CAC1C;CACA,aAAa;EACX,EACE,UAAU,EACR,YAAY,UACd,EACF;EACA;GACE,OAAO;IAAC;IAAiB;IAA0B;GAAgC;GACnF,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;GACF;GACA,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OACE;GACF,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,8CAA8C,qCAAqC;GAC3F,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,0BAA0B;GAClC,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,2CAA2C,uCAAuC;GAC1F,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,WAAW,OACb;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU;IACR,WAAW;IACX,YAAY;GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,WAAW,OACb;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,GACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,WAAW,SACb;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,WAAW,gBACb;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,GACd;EACF;EACA;GACE,MAAM;GACN,OAAO,CAAC,4CAA4C;GACpD,UAAU,EACR,YAAY,GACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;EACA;GACE,MAAM;GACN,OAAO;GACP,UAAU,EACR,YAAY,UACd;EACF;CACF;CACA,sBAAsB;AACxB;;;ACntCA,SAAS,aAAa,SAAiB,MAAc;CACnD,MAAM,YAAY,KAAK,QAAQ,IAAI,SAAS;CAC5C,IAAI,aAAa,YAAY,QAAQ;CAErC,KAAK,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK,GAC5C,IAAI,KAAK,OAAO,KAAK;EACnB,aAAa;EACb;CACF;CAIF,QADgB,KAAK,MAAM,GAAG,SAAS,IAAI,KAAK,MAAM,aAAa,CAAC,GACrD,QAAQ,KAAK,QAAQ,IAAI,EAAE;AAC5C;AAEA,SAAgB,qBAAqB,MAAc;CACjD,OAAO,aAAa,QAAQ,aAAa,OAAO,IAAI,CAAC;AACvD;AAOA,IAAM,mBAAmB;CAAC;CAAQ;CAAa;CAAO;CAAS;AAAM;AAErE,SAAS,oBAAoB,KAAU,UAA8B;CACnE,OACE,CAAC,YACD,iBAAiB,SAAS,QAAQ,KAClC,OAAO,IAAI,uBAAuB,cAClC,IAAI,mBAAmB,EAAE,SAAS,QAAQ;AAE9C;AAEA,IAAa,sBACX,WACA,EAAE,kBAAkB,oBAA+C,CAAC,MAC3C;CACzB,MAAM,kCAAkB,IAAI,IAAY;CACxC,MAAM,mBAAmB,UAAkB,WAAmB;EAC5D,IAAI,gBAAgB,IAAI,QAAQ,GAAG;EACnC,gBAAgB,IAAI,QAAQ;EAE5B,QAAQ,KACN,4CAA4C,SAAS,KAAK,OAAO,kCACnE;CACF;CAEA,OAAO;EACL,aAAa;EACb,cAAc,mBACT,KAAK,aAAa;GACjB,IAAI,oBAAoB,KAAK,QAAQ,GAAG,OAAO,KAAA;GAC/C,MAAM,eAAe,UAAmB;IACtC,gBAAgB,UAAU,qBAAqB;IAC/C,MAAM;GACR;GACA,IAAI;IACF,MAAM,UAAU,gBAAgB,QAAQ;IACxC,IAAI,CAAC,SAAS;KACZ,gBAAgB,UAAU,uCAAuC;KACjE;IACF;IACA,OAAO,QAAQ,QAAQ,IAAI,aAAa,OAAO,CAAC,EAAE,MAAM,WAAW;GACrE,SAAS,OAAO;IACd,OAAO,QAAQ,OAAO,KAAK,EAAE,MAAM,WAAW;GAChD;EACF,IACA,KAAA;EACJ,iBAAiB,QAAQ;GACvB,IAAI,CAAC,KACH,QAAQ,EAAE,YAAY;IAAE,iBAAiB;IAAM,eAAe;GAAM;GAGtE,QAAQ,EAAE,MAAM,UAAU,kBAAkB;IAC1C,IAAI,CAAC,oBAAoB,KAAK,QAAQ,GAAG;KACvC,IAAI,CAAC,mBAAmB,UAAU,gBAAgB,UAAU,eAAe;KAC3E,OAAO;MAAE,iBAAiB;MAAM,eAAe;KAAM;IACvD;IACA,IAAI,eAAoB;IAExB,IAAI,gBAAgB,SAClB,eAAe;SACV,IAAI,gBAAgB,QACzB,eAAe;IAGjB,OAAO;KACL,eAAe;KACf,iBAAiB,qBACf,IAAI,WAAW,MAAM;MACnB,MAAM;MACN,OAAO,oBAAoB;KAC7B,CAAC,CACH;IACF;GACF;EACF;CACF;AACF"}
|