@harnessio/yaml-editor 0.13.0 → 0.15.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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../src/hooks/useTheme.tsx","../src/utils/utils.ts","../src/utils/blame-editor-utils.ts","../src/components/BlameEditor.tsx","../src/components/CodeEditor.tsx","../src/components/DiffEditor.tsx","../src/types/selectors.ts","../src/utils/codelens-utils.ts","../src/utils/monaco-globals.ts","../src/utils/outline-model-to-path.ts","../src/hooks/useCodeLens.tsx","../src/hooks/useDecoration.tsx","../src/components/YamlProvider.tsx","../src/hooks/useProblems.tsx","../src/utils/schema-utils.ts","../src/hooks/useSchema.tsx","../src/components/YamlEditor.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { RefObject, useEffect, useState } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { ThemeDefinition } from '../types/themes'\n\nexport type UseTheme = (arg: {\n monacoRef: RefObject<typeof monaco | undefined>\n themeConfig?: {\n rootElementSelector?: string\n defaultTheme?: string\n themes?: ThemeDefinition[]\n }\n theme?: string\n editor: any\n}) => { theme: string }\n\nexport const useTheme: UseTheme = (props): { theme: string } => {\n const { themeConfig, editor, theme } = props\n const { defaultTheme } = themeConfig ?? {}\n\n const [themeInternal, setThemeInternal] = useState(theme ?? defaultTheme ?? 'vs-dark')\n\n useEffect(() => {\n themeConfig?.themes?.forEach(themeItem => {\n monaco.editor.defineTheme(themeItem.themeName, themeItem.themeData)\n })\n }, [monaco])\n\n useEffect(() => {\n if (monaco.editor && theme) {\n monaco.editor.setTheme(theme)\n setThemeInternal(theme)\n }\n }, [editor, theme])\n\n return { theme: themeInternal }\n}\n","export function createRandomString(length: number) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\nexport function escapeSingleQuote(str: string) {\n return str.replace(`'`, `&#39;`)\n}\n","import { BlameItem } from '../types/blame'\nimport { escapeSingleQuote } from './utils'\n\nexport function getMonacoEditorCss({\n instanceId,\n lineNumbersPosition\n}: {\n instanceId: string\n lineNumbersPosition: 'left' | 'center'\n}) {\n let css = ''\n\n // we move '.margin' element and update left/width of monaco editor\n if (lineNumbersPosition === 'center') {\n css += `\n .monaco-editor-${instanceId} .monaco-scrollable-element.editor-scrollable {\n width: 100% !important;\n left: 0px !important;\n }\n\n .monaco-editor-${instanceId} .view-lines, .view-zones {\n width: 100% !important;\n }\n \n .monaco-editor-${instanceId} .margin {\n z-index: 1000;\n background: transparent !important;\n }`\n }\n\n css += `\n .monaco-editor-${instanceId} .blame-editor-separator {\n right: 14px;\n pointer-events: none;\n }\n\n .monaco-editor-${instanceId} {\n outline: none !important;\n }\n \n .monaco-editor-${instanceId} .view-line .blame-editor-commit {\n display: inline-block;\n color: white;\n }`\n\n return css\n}\n\nexport function getMonacoEditorCommitCss({\n instanceId,\n blameData,\n dateWidth,\n avatarSize\n}: {\n instanceId: string\n blameData: BlameItem[]\n dateWidth: number\n avatarSize: number\n}) {\n let css = ''\n blameData.forEach(blameItem => {\n const avatarUrl = blameItem?.commitInfo?.author?.avatarUrl\n const initials = blameItem?.commitInfo?.author?.initials\n\n const avatarBackgroundCss = avatarUrl ? `background: url('${blameItem?.commitInfo?.author?.avatarUrl}');` : ''\n\n for (let lineNo = blameItem.fromLineNumber; lineNo <= blameItem.toLineNumber; lineNo++) {\n if (lineNo === blameItem.fromLineNumber) {\n css += `\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:before {\n content: '${escapeSingleQuote(blameItem?.commitInfo?.author?.when || '')}';\n position: absolute;\n left: 10px;\n top: 0px;\n color: hsl(var(--canary-foreground-03));\n }\n\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:after {\n content: '${initials ?? ' '}';\n position: absolute;\n border-radius: 50%;\n padding: 4px;\n text-align: center;\n background: hsl(var(--canary-background-11));\n line-height: 17px;\n left: ${dateWidth + 10}px;\n top: -4px;\n color: hsl(var(--canary-foreground-03));\n width: ${avatarSize}px;\n height: ${avatarSize}px;\n ${avatarBackgroundCss}\n background-size: 100% 100%;\n }`\n } else {\n css += `\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:before {\n content: ' ';\n left: 10px;\n top: 0px;\n color: gray;\n }`\n }\n }\n })\n\n return css\n}\n\nexport function createCommitMessage(msg: string, commitMsgLength: number) {\n let ret = ''\n if (msg.length > commitMsgLength) {\n ret = msg.slice(0, commitMsgLength - 3) + '...'\n } else if (msg.length < commitMsgLength) {\n ret = msg + ' '.repeat(commitMsgLength - msg.length)\n } else {\n ret = msg\n }\n\n return ' '.repeat(25) + ret + ' '.repeat(10)\n}\n","import { useEffect, useMemo, useRef, useState } from 'react'\n\nimport Editor, { loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { useTheme } from '../hooks/useTheme'\nimport { BlameItem } from '../types/blame'\nimport { ThemeDefinition } from '../types/themes'\nimport { createCommitMessage, getMonacoEditorCommitCss, getMonacoEditorCss } from '../utils/blame-editor-utils'\nimport { createRandomString } from '../utils/utils'\n\nloader.config({ monaco })\n\nconst BLAME_MESSAGE_WIDTH = 450\nconst COMMIT_MESSAGE_LENGTH = 30\nconst DATE_WIDTH = 140\nconst AVATAR_SIZE = 24\n\nconst LINE_NUMBERS_HOLDER_WIDTH = 46\n\nconst defaultOptions: monaco.editor.IStandaloneEditorConstructionOptions = {\n selectOnLineNumbers: true,\n readOnly: true,\n matchBrackets: 'never',\n renderValidationDecorations: 'off',\n guides: { indentation: false },\n folding: false,\n stickyScroll: { enabled: false },\n renderWhitespace: 'none',\n renderLineHighlight: 'none',\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n fontSize: 14,\n fontFamily: '\"JetBrains Mono\", \"monospace\"',\n lineHeight: 20\n}\n\nexport interface BlameEditorProps<_> {\n code: string\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n lineNumbersPosition?: 'left' | 'center'\n blameData: BlameItem[]\n showSeparators?: boolean\n}\n\nexport function BlameEditor<T>(props: BlameEditorProps<T>): JSX.Element {\n const {\n code,\n language,\n themeConfig,\n lineNumbersPosition = 'left',\n blameData,\n showSeparators = true,\n theme: themeFromProps\n } = props\n const blameDataRef = useRef(blameData)\n blameDataRef.current = blameData\n\n const instanceId = useRef(createRandomString(5))\n const monaco = useMonaco()\n const [editor, setEditor] = useState<monaco.editor.IStandaloneCodeEditor | undefined>()\n\n const [lineNumbersDelta, setLineNumbersDelta] = useState(0)\n\n const monacoRef = useRef<typeof monaco | null>(null)\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n\n function setupBlameEditor() {\n const editor = editorRef.current\n const monaco = monacoRef.current\n\n if (!editor || !monaco) return\n\n // separators\n if (showSeparators) {\n editor.changeViewZones(function (changeAccessor) {\n // space before first line\n changeAccessor.addZone({\n afterLineNumber: 0,\n heightInPx: 10,\n domNode: document.createElement('div')\n })\n\n blameDataRef.current.forEach((blameItem, index) => {\n if (index !== blameDataRef.current.length - 1) {\n const domNode = document.createElement('div')\n domNode.style.borderTop = '1px solid hsl(var(--canary-border-01))'\n domNode.style.marginTop = '9px'\n domNode.className = 'blame-editor-separator'\n\n changeAccessor.addZone({\n afterLineNumber: blameItem.toLineNumber,\n heightInPx: 20,\n domNode: domNode\n })\n }\n })\n })\n }\n\n const decoratorItems: monaco.editor.IModelDeltaDecoration[] = []\n blameDataRef.current.forEach(blameItem => {\n for (let lineNo = blameItem.fromLineNumber; lineNo <= blameItem.toLineNumber; lineNo++) {\n decoratorItems.push({\n range: new monaco.Range(lineNo, 0, lineNo + 1, 0),\n options: {\n before: {\n content: createCommitMessage(\n lineNo === blameItem.fromLineNumber ? blameItem?.commitInfo?.title || '' : '',\n COMMIT_MESSAGE_LENGTH\n ),\n cursorStops: monaco.editor.InjectedTextCursorStops.None,\n inlineClassName: `blame-editor-commit blame-editor-commit-${lineNo}`\n }\n }\n })\n }\n })\n\n // TODO: on unmount clear decorators, on blameData change recreate\n editor.createDecorationsCollection(decoratorItems)\n }\n\n function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n editorRef.current = editor\n monacoRef.current = monaco\n\n editor.setValue(code)\n setEditor(editor)\n\n monaco.languages.typescript?.typescriptDefaults?.setDiagnosticsOptions?.({ noSuggestionDiagnostics: true })\n monaco.languages.typescript?.javascriptDefaults?.setDiagnosticsOptions?.({ noSuggestionDiagnostics: true })\n\n setupBlameEditor()\n }\n\n useEffect(() => {\n editor?.setValue(code)\n }, [code])\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const monacoEditorCss = useMemo(\n () =>\n getMonacoEditorCss({\n instanceId: instanceId.current,\n lineNumbersPosition\n }),\n [blameData]\n )\n\n const monacoEditorCommitInfoCss = useMemo(\n () =>\n getMonacoEditorCommitCss({\n instanceId: instanceId.current,\n blameData,\n avatarSize: AVATAR_SIZE,\n dateWidth: DATE_WIDTH\n }),\n [blameData]\n )\n\n // set adjustment for lines numbers position\n useEffect(() => {\n if (lineNumbersPosition === 'center') {\n const scrollableEl = document.getElementsByClassName('lines-content')[0]\n\n if (scrollableEl) {\n const config = { attributes: true }\n\n const callback: MutationCallback = mutationList => {\n for (const _ of mutationList) {\n const left = parseInt(getComputedStyle(scrollableEl).left)\n setLineNumbersDelta(left)\n }\n }\n\n const observer = new MutationObserver(callback)\n observer.observe(scrollableEl, config)\n\n return () => {\n observer.disconnect()\n }\n }\n }\n })\n\n // adjust lines numbers position\n const lineNumbersCss = useMemo(() => {\n return `\n .monaco-editor-${instanceId.current} .margin {\n left: ${BLAME_MESSAGE_WIDTH - LINE_NUMBERS_HOLDER_WIDTH + lineNumbersDelta}px !important;\n pointer-events: none;\n }`\n }, [lineNumbersDelta])\n\n const clipSelection = `\n .monaco-editor-${instanceId.current} .view-overlays {\n clip-path: polygon(${BLAME_MESSAGE_WIDTH + 16}px 0, 100% 0%, 100% 100%, ${BLAME_MESSAGE_WIDTH + 16}px 100%);\n height:100% !important;\n }`\n\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `${monacoEditorCss} ${monacoEditorCommitInfoCss} ${lineNumbersCss} ${clipSelection}`\n }}\n />\n <Editor\n height=\"75vh\"\n className={`monaco-editor-${instanceId.current} overflow-hidden rounded-b-md border-x border-b`}\n language={language}\n theme={theme}\n options={defaultOptions}\n onMount={handleEditorDidMount}\n />\n </>\n )\n}\n","import { useEffect, useMemo, useRef, useState } from 'react'\n\nimport Editor, { loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { useTheme } from '../hooks/useTheme'\nimport { ThemeDefinition } from '../types/themes'\n\nloader.config({ monaco })\n\nexport interface CodeRevision {\n code: string\n revisionId?: number\n}\n\nconst defaultOptions: monaco.editor.IStandaloneEditorConstructionOptions = {\n selectOnLineNumbers: true,\n scrollBeyondLastLine: false,\n padding: {\n top: 10\n },\n minimap: { enabled: false },\n fontSize: 14,\n fontFamily: '\"JetBrains Mono\", \"monospace\"',\n lineHeight: 20\n}\n\nexport interface CodeEditorProps<_> {\n codeRevision: CodeRevision\n onCodeRevisionChange: (codeRevision: CodeRevision | undefined, ev: monaco.editor.IModelContentChangedEvent) => void\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n options?: {\n readOnly?: boolean\n }\n}\n\nexport function CodeEditor<T>(props: CodeEditorProps<T>): JSX.Element {\n const { codeRevision, onCodeRevisionChange, language, themeConfig, options, theme: themeFromProps } = props\n const monaco = useMonaco()\n const [editor, setEditor] = useState<monaco.editor.IStandaloneCodeEditor | undefined>()\n\n const monacoRef = useRef<typeof monaco>()\n const currentRevisionRef = useRef<CodeRevision>({ code: '', revisionId: 0 })\n\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n\n function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n editorRef.current = editor\n monacoRef.current = monaco\n\n editor.setValue(codeRevision.code)\n\n setEditor(editor)\n }\n\n useEffect(() => {\n if (editorRef.current) {\n if (!codeRevision.revisionId || codeRevision.revisionId > Number(currentRevisionRef.current?.revisionId)) {\n const model = editorRef.current.getModel()\n if (model) {\n // NOTE: if it's a readonly no need to create undo stop points\n if (options?.readOnly) {\n editorRef.current?.setValue(codeRevision.code)\n } else {\n editorRef.current.pushUndoStop()\n editorRef.current.executeEdits('edit', [\n {\n range: model.getFullModelRange(),\n text: codeRevision.code\n }\n ])\n editorRef.current.pushUndoStop()\n }\n }\n }\n }\n }, [codeRevision, editorRef.current])\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const mergedOptions = useMemo(() => {\n return { ...defaultOptions, ...(options ? options : {}) }\n }, [options])\n\n return (\n <>\n <Editor\n className=\"overflow-hidden rounded-b-md border-x border-b\"\n height={'75vh'}\n onChange={(value, data) => {\n currentRevisionRef.current = { code: value ?? '', revisionId: data.versionId }\n onCodeRevisionChange({ ...currentRevisionRef.current }, data)\n }}\n language={language}\n theme={theme}\n options={mergedOptions}\n onMount={handleEditorDidMount}\n />\n </>\n )\n}\n","import { useMemo, useRef, useState } from 'react'\n\nimport { DiffEditor, loader, MonacoDiffEditor, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { useTheme } from '../hooks/useTheme'\nimport { ThemeDefinition } from '../types/themes'\n\nloader.config({ monaco })\n\nexport interface CodeRevision {\n code: string\n revisionId?: number\n}\n\nconst defaultOptions: monaco.editor.IStandaloneDiffEditorConstructionOptions = {\n selectOnLineNumbers: true,\n minimap: { enabled: false },\n codeLens: false,\n scrollBeyondLastLine: false,\n smartSelect: {\n selectLeadingAndTrailingWhitespace: true\n },\n originalEditable: false,\n overviewRulerBorder: false,\n padding: {\n top: 10\n },\n fontSize: 14,\n fontFamily: '\"JetBrains Mono\", \"monospace\"',\n lineHeight: 20\n}\n\nexport interface DiffEditorProps<_> {\n original: string\n modified: string\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n options?: {\n readOnly?: boolean\n }\n}\n\nexport function CodeDiffEditor<T>(props: DiffEditorProps<T>): JSX.Element {\n const { original, modified, language, themeConfig, options, theme: themeFromProps } = props\n const monaco = useMonaco()\n const [editor, setEditor] = useState<MonacoDiffEditor | undefined>()\n\n const monacoRef = useRef<typeof monaco>()\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const mergedOptions = useMemo(() => {\n return { ...defaultOptions, ...(options ? options : {}) }\n }, [options])\n\n return (\n <>\n <DiffEditor\n className=\"overflow-hidden rounded-b-md border-x border-b\"\n language={language}\n theme={theme}\n original={original}\n modified={modified}\n height=\"75vh\"\n options={mergedOptions}\n onMount={setEditor}\n />\n </>\n )\n}\n","export enum SelectorType {\n //AbsolutePath = 'AbsolutePath',\n ContainsPath = 'ContainsPath'\n}\n\nexport interface ContainsPathSelector {\n type: SelectorType.ContainsPath\n /** Path have to starts with `basePath`*/\n basePath: string\n /** Path have to contains one of provided path. Base path is not included in match.*/\n paths: RegExp[]\n}\n\n// export interface AbsolutePathSelector {\n// type: SelectorType.AbsolutePath\n// /** Path have to be equal with `absolutePaths`*/\n// absolutePaths: string[]\n// }\n\nexport type PathSelector = ContainsPathSelector // | AbsolutePathSelector\n","import * as monaco from 'monaco-editor'\n\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector, SelectorType } from '../types/selectors'\n\nexport interface CommandArg<T> extends Pick<InlineAction<T>, 'onClick' | 'data'> {\n range: monaco.IRange\n symbols: monaco.languages.DocumentSymbol[]\n path: string\n}\n\nexport interface GetCodeLensProps<T> {\n pathSymbolMap: Map<string, monaco.languages.DocumentSymbol>\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n commandId: string | any // TODO\n}\n\nexport function getCodeLens<T>(props: GetCodeLensProps<T>) {\n const { pathSymbolMap, inlineActions = [], commandId } = props\n\n const pathSymbolMapObj = Object.fromEntries(pathSymbolMap.entries())\n\n const lenses: monaco.languages.CodeLens[] = []\n\n inlineActions?.forEach(inlineAction => {\n const actions = inlineAction.actions\n const selectors = inlineAction.selectors\n\n selectors.forEach(selector => {\n switch (selector.type) {\n case SelectorType.ContainsPath: {\n selector.paths.forEach(partRegexp => {\n const pathSymbolArr = Object.keys(pathSymbolMapObj).map(path => ({\n fullPath: path,\n path,\n symbol: pathSymbolMapObj[path]\n }))\n\n //console.log(pathSymbolArr)\n\n let candidateRelativePaths = pathSymbolArr.filter(pathSymbol => {\n return pathSymbol.path.startsWith(selector.basePath)\n })\n\n candidateRelativePaths = candidateRelativePaths.map(pathSymbol => ({\n ...pathSymbol,\n path: pathSymbol.path.substring(selector.basePath.length)\n }))\n\n //console.log(candidateRelativePaths)\n\n const finalPaths = candidateRelativePaths.filter(pathSymbol => {\n return partRegexp.test(pathSymbol.path)\n })\n\n //console.log(finalPaths, 'finalPaths')\n\n finalPaths.forEach(pathSymbol => {\n const path = pathSymbol.fullPath\n const symbol = pathSymbol.symbol\n const range = symbol.range\n\n actions.forEach(action => {\n const commandArg = {\n range,\n symbols: [symbol],\n onClick: action.onClick,\n data: action.data,\n path: path\n }\n\n lenses.push({\n range,\n command: {\n id: commandId,\n title: action.title,\n arguments: [commandArg]\n }\n })\n })\n })\n })\n break\n }\n }\n })\n })\n\n return lenses\n}\n","import { ILanguageFeaturesService } from 'monaco-editor/esm/vs/editor/common/services/languageFeatures.js'\nimport { OutlineModel } from 'monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/outlineModel.js'\nimport { StandaloneServices } from 'monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js'\n\nexport interface MonacoGlobalsData {\n ILanguageFeaturesService: typeof ILanguageFeaturesService\n OutlineModel: typeof OutlineModel\n StandaloneServices: typeof StandaloneServices\n}\n\nexport class MonacoGlobals {\n static data: MonacoGlobalsData = {} as MonacoGlobalsData\n\n static set(data: MonacoGlobalsData) {\n MonacoGlobals.data = data\n }\n\n static get(): MonacoGlobalsData {\n return MonacoGlobals.data\n }\n}\n","import { editor, languages } from 'monaco-editor'\n\nimport { OutlineModelValueInternal, RootOutlineModelInternal } from '../types/monaco'\nimport { MonacoGlobals } from './monaco-globals'\n\nexport async function getOutlineModel(model: editor.ITextModel): Promise<RootOutlineModelInternal> {\n const monacoGlobals = MonacoGlobals.get()\n const { documentSymbolProvider } = monacoGlobals.StandaloneServices.get(monacoGlobals.ILanguageFeaturesService)\n const outlineModel = await monacoGlobals.OutlineModel.create(documentSymbolProvider, model)\n return outlineModel as unknown as RootOutlineModelInternal\n}\n\nexport function processOutlineModel(outlineModel: RootOutlineModelInternal) {\n const pathSymbolMap: Map<string, languages.DocumentSymbol> = new Map()\n\n processChildrenRec({\n pathSymbolMap,\n parentPath: '',\n children: outlineModel.children,\n parentKind: languages.SymbolKind.Module\n })\n\n return pathSymbolMap\n}\n\nfunction processChildrenRec(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n switch (props.parentKind) {\n case languages.SymbolKind.Module: {\n processObject(props)\n break\n }\n case languages.SymbolKind.Array: {\n processArray(props)\n break\n }\n default: {\n processPrimitive(props)\n }\n }\n}\n\nfunction processObject(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n props.children.forEach(child => {\n let childPath = props.parentPath\n\n if (child.symbol) {\n childPath = props.parentPath ? `${props.parentPath}.${child.symbol.name}` : child.symbol.name\n\n props.pathSymbolMap.set(childPath, child.symbol)\n }\n\n processChildrenRec({\n pathSymbolMap: props.pathSymbolMap,\n parentPath: childPath,\n children: child.children,\n parentKind: child?.symbol?.kind ?? props.parentKind\n })\n })\n}\n\nfunction processArray(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n let idx = 0\n props.children.forEach(child => {\n const childPath = props.parentPath ? `${props.parentPath}.${idx}` : `${idx}`\n\n props.pathSymbolMap.set(childPath, child.symbol)\n\n idx += 1\n\n processChildrenRec({\n pathSymbolMap: props.pathSymbolMap,\n parentPath: childPath,\n children: child.children,\n parentKind: child.symbol.kind\n })\n })\n}\n\nfunction processPrimitive(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n const child = props.children.get('0')\n\n if (child) {\n const childPath = props.parentPath ? `${props.parentPath}.${child.symbol.name}` : child?.symbol.name\n\n props.pathSymbolMap.set(childPath, child.symbol)\n }\n}\n","import { RefObject, useEffect } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector } from '../types/selectors'\nimport { getCodeLens } from '../utils/codelens-utils'\nimport { getOutlineModel, processOutlineModel } from '../utils/outline-model-to-path'\n\nexport function useCodeLenses<T>({\n editorRef,\n inlineActions\n}: {\n editorRef: RefObject<monaco.editor.IStandaloneCodeEditor | undefined | null>\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n}): void {\n useEffect(() => {\n const disposable = monaco.languages.registerCodeLensProvider('yaml', {\n provideCodeLenses: async model => {\n const outlineModel = await getOutlineModel(model)\n const pathSymbolMap = processOutlineModel(outlineModel)\n\n const commandId = editorRef?.current?.addCommand(0, (_, { onClick, path, range, data }) => {\n onClick({ path, range, data })\n })\n\n if (!commandId) return\n\n const lenses = getCodeLens({ pathSymbolMap, inlineActions, commandId })\n\n return {\n lenses,\n dispose: () => undefined\n }\n }\n })\n\n return disposable.dispose\n }, [inlineActions, editorRef])\n}\n","import { RefObject, useEffect, useMemo, useState } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { getOutlineModel, processOutlineModel } from '../utils/outline-model-to-path'\n\ntype UseDecoration = (arg: {\n editorRef?: RefObject<monaco.editor.IStandaloneCodeEditor>\n selection?: {\n path: string\n className: string\n revealInCenter?: boolean\n }\n}) => void\n\nexport const useDecoration: UseDecoration = ({ editorRef, selection }) => {\n const [range, setRange] = useState<monaco.IRange>()\n\n const computeRange = useMemo(\n () =>\n async (_editorRef?: RefObject<monaco.editor.IStandaloneCodeEditor>, path?: string, revealInCenter?: boolean) => {\n const model = editorRef?.current?.getModel()\n\n if (!model || !path) {\n return setRange(undefined)\n }\n\n const outlineModel = await getOutlineModel(model)\n const pathSymbolMap = processOutlineModel(outlineModel)\n const range = pathSymbolMap.get(path)?.range\n\n if (range) {\n setRange(range)\n\n if (revealInCenter) {\n editorRef?.current?.revealLineInCenter(range.startLineNumber)\n }\n }\n },\n []\n )\n\n useEffect(() => {\n if ('requestIdleCallback' in window) {\n const handle = requestIdleCallback(() => {\n computeRange(editorRef, selection?.path, selection?.revealInCenter)\n })\n return () => cancelIdleCallback(handle)\n }\n // fallback for safari\n else {\n const handle = setTimeout(() => {\n computeRange(editorRef, selection?.path, selection?.revealInCenter)\n }, 100)\n return () => clearTimeout(handle)\n }\n }, [selection?.path, selection?.revealInCenter, editorRef, computeRange])\n\n useEffect(() => {\n if (!range) return\n\n const decorations = editorRef?.current?.createDecorationsCollection([\n {\n // TODO: check why startColumn is set to \"end of row\"\n range: { ...range, startColumn: 1 },\n options: {\n isWholeLine: false,\n className: selection?.className\n }\n }\n ])\n\n return () => decorations?.clear()\n }, [range, editorRef, selection?.className])\n}\n","import { createContext, useCallback, useContext, useState } from 'react'\n\nimport type { editor } from 'monaco-editor'\n\nexport interface YamlEditorContextInterface {\n markers: editor.IMarker[]\n setMarkers: (markets: editor.IMarker[]) => void\n editor: editor.IStandaloneCodeEditor | null\n setEditor: (monacoEditor: editor.IStandaloneCodeEditor) => void\n updateCursorPosition: (position: { column: number; lineNumber: number }) => void\n}\n\nexport const YamlEditorContext = createContext<YamlEditorContextInterface>({\n markers: [],\n setMarkers: () => undefined,\n editor: null,\n setEditor: (_monacoEditor: editor.IStandaloneCodeEditor) => undefined,\n updateCursorPosition: (_position: { column: number; lineNumber: number }) => undefined\n})\n\nexport function YamlEditorContextProvider({ children }: React.PropsWithChildren): React.ReactElement {\n const [markers, setMarkers] = useState<editor.IMarker[]>([])\n const [monacoEditor, setMonacoEditor] = useState<editor.IStandaloneCodeEditor | null>(null)\n\n const updateCursorPosition = useCallback(\n (position: { column: number; lineNumber: number }) => {\n monacoEditor?.setPosition(position)\n monacoEditor?.focus()\n },\n [monacoEditor]\n )\n\n return (\n <YamlEditorContext.Provider\n value={{\n markers,\n setMarkers,\n editor: monacoEditor,\n setEditor: setMonacoEditor,\n updateCursorPosition\n }}\n >\n {children}\n </YamlEditorContext.Provider>\n )\n}\n\nexport function useYamlEditorContext(): YamlEditorContextInterface {\n return useContext(YamlEditorContext)\n}\n","import { RefObject, useEffect } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { useYamlEditorContext } from '../components/YamlProvider'\n\nexport type UseProblems = (arg: { monacoRef: RefObject<typeof monaco | undefined> }) => void\n\nexport const useProblems: UseProblems = ({ monacoRef }): void => {\n const { setMarkers } = useYamlEditorContext()\n\n useEffect(() => {\n let handle: monaco.IDisposable\n\n const timeoutHandle = setTimeout(() => {\n const editor = monacoRef.current?.editor\n\n if (!editor) return\n\n handle = editor.onDidChangeMarkers(([resource]) => {\n const markers = editor.getModelMarkers({ resource })\n setMarkers(markers)\n })\n }, 100)\n\n return () => {\n clearTimeout(timeoutHandle)\n handle?.dispose()\n }\n }, [monacoRef])\n}\n","import { Uri } from 'monaco-editor'\nimport * as monaco from 'monaco-editor'\nimport { configureMonacoYaml } from 'monaco-yaml'\n\nlet isYamlMonacoConfigured = false\n\nexport function configureSchema(schemaConfig: any) {\n if (isYamlMonacoConfigured) return\n\n const config = {\n hover: true,\n completion: true,\n enableSchemaRequest: false,\n validate: true,\n schemas: [schemaConfig]\n }\n\n isYamlMonacoConfigured = true\n\n return configureMonacoYaml(monaco, config)\n}\n\nexport const schemaIdToUrl = (id: string): string => {\n return Uri.parse(`file://${id}`).toString()\n}\n\nexport const schemaIdToUri = (id: string): Uri => {\n return Uri.parse(schemaIdToUrl(id))\n}\n","import { useEffect } from 'react'\n\nimport { configureSchema, schemaIdToUrl } from '../utils/schema-utils'\n\nexport type UseSchema = (arg: { schemaConfig?: { schema: any; uri: string }; instanceId: string }) => void\n\nexport const useSchema: UseSchema = (props): void => {\n const { schemaConfig, instanceId } = props\n\n useEffect(() => {\n if (schemaConfig?.schema) {\n configureSchema({\n // If YAML file is opened matching this glob\n fileMatch: [schemaIdToUrl(instanceId.toString())],\n ...schemaConfig\n })\n }\n }, [schemaConfig?.schema, instanceId])\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport Editor, { loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { useCodeLenses } from '../hooks/useCodeLens'\nimport { useDecoration } from '../hooks/useDecoration'\nimport { useProblems } from '../hooks/useProblems'\nimport { useSchema } from '../hooks/useSchema'\nimport { useTheme } from '../hooks/useTheme'\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector } from '../types/selectors'\nimport { ThemeDefinition } from '../types/themes'\nimport { schemaIdToUrl } from '../utils/schema-utils'\nimport { useYamlEditorContext } from './YamlProvider'\n\nloader.config({ monaco })\n\nexport interface YamlRevision {\n yaml: string\n revisionId?: number\n}\n\nconst options: monaco.editor.IStandaloneEditorConstructionOptions = {\n selectOnLineNumbers: true\n}\n\nexport interface YamlEditorProps<T> {\n yamlRevision: YamlRevision\n onYamlRevisionChange: (yamlRevision: YamlRevision | undefined, ev: monaco.editor.IModelContentChangedEvent) => void\n schemaConfig?: { schema: any; uri: string }\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n selection?: {\n path: string\n className: string\n revealInCenter?: boolean\n }\n}\n\nexport function YamlEditor<T>(props: YamlEditorProps<T>): JSX.Element {\n const {\n yamlRevision,\n schemaConfig,\n inlineActions,\n themeConfig,\n onYamlRevisionChange,\n selection,\n theme: themeFromProps\n } = props\n const monaco = useMonaco()\n const [instanceId] = useState('yaml')\n const { editor, setEditor } = useYamlEditorContext()\n\n const monacoRef = useRef<typeof monaco>()\n const currentRevisionRef = useRef<YamlRevision>({ yaml: '', revisionId: 0 })\n\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n\n function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n editorRef.current = editor\n monacoRef.current = monaco\n\n editor.setValue(yamlRevision.yaml)\n\n setEditor(editor)\n }\n\n useEffect(() => {\n if (editorRef.current) {\n if (!yamlRevision.revisionId || yamlRevision.revisionId > Number(currentRevisionRef.current?.revisionId)) {\n // editorRef.current?.setValue(yamlRevision.yaml)\n\n const model = editorRef.current.getModel()\n if (model) {\n editorRef.current.pushUndoStop()\n editorRef.current.executeEdits('edit', [\n {\n range: model.getFullModelRange(),\n text: yamlRevision.yaml\n }\n ])\n editorRef.current.pushUndoStop()\n }\n }\n }\n }, [yamlRevision, editorRef.current])\n\n useSchema({ schemaConfig, instanceId })\n\n useCodeLenses({ editorRef, inlineActions })\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n useProblems({ monacoRef })\n\n useDecoration({ editorRef, selection })\n\n return (\n <>\n <Editor\n onChange={(value, data) => {\n currentRevisionRef.current = { yaml: value ?? '', revisionId: data.versionId }\n onYamlRevisionChange({ ...currentRevisionRef.current }, data)\n }}\n language=\"yaml\"\n theme={theme}\n options={options}\n path={schemaIdToUrl(instanceId)}\n onMount={handleEditorDidMount}\n />\n </>\n )\n}\n"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","jsxRuntimeModule","useTheme","props","themeConfig","editor","theme","defaultTheme","themeInternal","setThemeInternal","useState","useEffect","_a","themeItem","monaco","createRandomString","length","chars","result","i","escapeSingleQuote","str","getMonacoEditorCss","instanceId","lineNumbersPosition","css","getMonacoEditorCommitCss","blameData","dateWidth","avatarSize","blameItem","avatarUrl","_b","initials","_d","_c","avatarBackgroundCss","_f","_e","lineNo","_h","_g","createCommitMessage","msg","commitMsgLength","ret","loader","BLAME_MESSAGE_WIDTH","COMMIT_MESSAGE_LENGTH","DATE_WIDTH","AVATAR_SIZE","LINE_NUMBERS_HOLDER_WIDTH","defaultOptions","BlameEditor","code","language","showSeparators","themeFromProps","blameDataRef","useRef","useMonaco","setEditor","lineNumbersDelta","setLineNumbersDelta","monacoRef","editorRef","setupBlameEditor","changeAccessor","index","domNode","decoratorItems","handleEditorDidMount","monacoEditorCss","useMemo","monacoEditorCommitInfoCss","scrollableEl","config","callback","mutationList","_","left","observer","lineNumbersCss","clipSelection","jsxs","Fragment","jsx","Editor","CodeEditor","codeRevision","onCodeRevisionChange","options","currentRevisionRef","model","mergedOptions","value","data","CodeDiffEditor","original","modified","DiffEditor","SelectorType","getCodeLens","pathSymbolMap","inlineActions","commandId","pathSymbolMapObj","lenses","inlineAction","actions","selector","partRegexp","candidateRelativePaths","path","pathSymbol","symbol","range","action","commandArg","_MonacoGlobals","__publicField","MonacoGlobals","getOutlineModel","monacoGlobals","documentSymbolProvider","processOutlineModel","outlineModel","processChildrenRec","languages","processObject","processArray","processPrimitive","child","childPath","idx","useCodeLenses","onClick","useDecoration","selection","setRange","computeRange","_editorRef","revealInCenter","handle","decorations","YamlEditorContext","createContext","_monacoEditor","_position","YamlEditorContextProvider","children","markers","setMarkers","monacoEditor","setMonacoEditor","updateCursorPosition","useCallback","position","useYamlEditorContext","useContext","useProblems","timeoutHandle","resource","isYamlMonacoConfigured","configureSchema","schemaConfig","configureMonacoYaml","schemaIdToUrl","id","Uri","useSchema","YamlEditor","yamlRevision","onYamlRevisionChange"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js","../src/constants/monaco-common-default-options.ts","../src/hooks/useTheme.tsx","../src/utils/utils.ts","../src/utils/blame-editor-utils.ts","../src/components/BlameEditor.tsx","../src/components/CodeEditor.tsx","../src/components/DiffEditor.tsx","../src/types/selectors.ts","../src/utils/codelens-utils.ts","../src/utils/monaco-globals.ts","../src/utils/outline-model-to-path.ts","../src/hooks/useCodeLens.tsx","../src/hooks/useDecoration.tsx","../src/components/YamlProvider.tsx","../src/hooks/useProblems.tsx","../src/utils/schema-utils.ts","../src/hooks/useSchema.tsx","../src/components/YamlEditor.tsx"],"sourcesContent":["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import * as monaco from 'monaco-editor'\n\nexport const MonacoCommonDefaultOptions: monaco.editor.IStandaloneDiffEditorConstructionOptions = {\n selectOnLineNumbers: true,\n scrollBeyondLastLine: false,\n padding: {\n top: 16,\n bottom: 16\n },\n minimap: { enabled: false },\n fontSize: 13,\n fontFamily: '\"JetBrains Mono\", \"monospace\"',\n lineHeight: 20,\n scrollbar: {\n verticalScrollbarSize: 14,\n horizontalScrollbarSize: 14,\n verticalSliderSize: 6,\n horizontalSliderSize: 6\n },\n overviewRulerBorder: false,\n overviewRulerLanes: 0,\n renderLineHighlight: 'none'\n}\n","import { RefObject, useEffect, useState } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { ThemeDefinition } from '../types/themes'\n\nexport type UseTheme = (arg: {\n monacoRef: RefObject<typeof monaco | undefined>\n themeConfig?: {\n rootElementSelector?: string\n defaultTheme?: string\n themes?: ThemeDefinition[]\n }\n theme?: string\n editor: any\n}) => { theme: string }\n\nexport const useTheme: UseTheme = (props): { theme: string } => {\n const { themeConfig, editor, theme } = props\n const { defaultTheme } = themeConfig ?? {}\n\n const [themeInternal, setThemeInternal] = useState(theme ?? defaultTheme ?? 'vs-dark')\n\n useEffect(() => {\n themeConfig?.themes?.forEach(themeItem => {\n monaco.editor.defineTheme(themeItem.themeName, themeItem.themeData)\n })\n }, [monaco])\n\n useEffect(() => {\n if (monaco.editor && theme) {\n monaco.editor.setTheme(theme)\n setThemeInternal(theme)\n }\n }, [editor, theme])\n\n return { theme: themeInternal }\n}\n","export function createRandomString(length: number) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length))\n }\n return result\n}\n\nexport function escapeSingleQuote(str: string) {\n return str.replace(`'`, `&#39;`)\n}\n","import { BlameItem } from '../types/blame'\nimport { escapeSingleQuote } from './utils'\n\nexport function getMonacoEditorCss({\n instanceId,\n lineNumbersPosition\n}: {\n instanceId: string\n lineNumbersPosition: 'left' | 'center'\n}) {\n let css = ''\n\n // we move '.margin' element and update left/width of monaco editor\n if (lineNumbersPosition === 'center') {\n css += `\n .monaco-editor-${instanceId} .monaco-scrollable-element.editor-scrollable {\n width: 100% !important;\n left: 0px !important;\n }\n\n .monaco-editor-${instanceId} .view-lines, .view-zones {\n width: 100% !important;\n }\n \n .monaco-editor-${instanceId} .margin {\n z-index: 1000;\n background: transparent !important;\n }`\n }\n\n css += `\n .monaco-editor-${instanceId} .blame-editor-separator {\n right: 14px;\n pointer-events: none;\n }\n\n .monaco-editor-${instanceId} {\n outline: none !important;\n }\n \n .monaco-editor-${instanceId} .view-line .blame-editor-commit {\n display: inline-block;\n color: var(--canary-foreground-01);\n }`\n\n return css\n}\n\nexport function getMonacoEditorCommitCss({\n instanceId,\n blameData,\n dateWidth,\n avatarSize\n}: {\n instanceId: string\n blameData: BlameItem[]\n dateWidth: number\n avatarSize: number\n}) {\n let css = ''\n blameData.forEach(blameItem => {\n const avatarUrl = blameItem?.commitInfo?.author?.avatarUrl\n const initials = blameItem?.commitInfo?.author?.initials\n\n const avatarBackgroundCss = avatarUrl ? `background: url('${blameItem?.commitInfo?.author?.avatarUrl}');` : ''\n\n for (let lineNo = blameItem.fromLineNumber; lineNo <= blameItem.toLineNumber; lineNo++) {\n if (lineNo === blameItem.fromLineNumber) {\n css += `\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:before {\n content: '${escapeSingleQuote(blameItem?.commitInfo?.author?.when || '')}';\n position: absolute;\n left: 10px;\n top: 0px;\n color: hsl(var(--canary-foreground-03));\n }\n\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:after {\n content: '${initials ?? ' '}';\n position: absolute;\n border-radius: 50%;\n padding: 4px;\n text-align: center;\n background: hsl(var(--canary-background-11));\n line-height: 17px;\n left: ${dateWidth + 10}px;\n top: -4px;\n color: hsl(var(--canary-foreground-03));\n width: ${avatarSize}px;\n height: ${avatarSize}px;\n ${avatarBackgroundCss}\n background-size: 100% 100%;\n }`\n } else {\n css += `\n .monaco-editor-${instanceId} .view-line .blame-editor-commit-${lineNo}:before {\n content: ' ';\n left: 10px;\n top: 0px;\n color: gray;\n }`\n }\n }\n })\n\n return css\n}\n\nexport function createCommitMessage(msg: string, commitMsgLength: number) {\n let ret = ''\n if (msg.length > commitMsgLength) {\n ret = msg.slice(0, commitMsgLength - 3) + '...'\n } else if (msg.length < commitMsgLength) {\n ret = msg + ' '.repeat(commitMsgLength - msg.length)\n } else {\n ret = msg\n }\n\n return ' '.repeat(25) + ret + ' '.repeat(10)\n}\n","import { useEffect, useMemo, useRef, useState } from 'react'\n\nimport Editor, { EditorProps, loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { MonacoCommonDefaultOptions } from '../constants/monaco-common-default-options'\nimport { useTheme } from '../hooks/useTheme'\nimport { BlameItem } from '../types/blame'\nimport { ThemeDefinition } from '../types/themes'\nimport { createCommitMessage, getMonacoEditorCommitCss, getMonacoEditorCss } from '../utils/blame-editor-utils'\nimport { createRandomString } from '../utils/utils'\n\nloader.config({ monaco })\n\nconst BLAME_MESSAGE_WIDTH = 450\nconst COMMIT_MESSAGE_LENGTH = 30\nconst DATE_WIDTH = 140\nconst AVATAR_SIZE = 24\n\nconst defaultOptions: monaco.editor.IStandaloneEditorConstructionOptions = {\n ...MonacoCommonDefaultOptions,\n readOnly: true,\n matchBrackets: 'never',\n renderValidationDecorations: 'off',\n guides: { indentation: false },\n folding: false,\n stickyScroll: { enabled: false },\n renderWhitespace: 'none',\n renderLineHighlight: 'none'\n}\n\nexport interface BlameEditorProps {\n code: string\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n lineNumbersPosition?: 'left' | 'center'\n blameData: BlameItem[]\n showSeparators?: boolean\n height?: EditorProps['height']\n options?: monaco.editor.IStandaloneEditorConstructionOptions\n}\n\nexport function BlameEditor({\n code,\n language,\n themeConfig,\n lineNumbersPosition = 'left',\n blameData,\n showSeparators = true,\n theme: themeFromProps,\n height = '75vh',\n options\n}: BlameEditorProps): JSX.Element {\n const blameDataRef = useRef(blameData)\n\n const instanceId = useRef(createRandomString(5))\n const monaco = useMonaco()\n const [editor, setEditor] = useState<monaco.editor.IStandaloneCodeEditor | undefined>()\n\n const [lineNumbersDelta, setLineNumbersDelta] = useState(0)\n\n const monacoRef = useRef<typeof monaco | null>(null)\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n\n useEffect(() => {\n blameDataRef.current = blameData\n }, [blameData])\n\n function setupBlameEditor() {\n const editor = editorRef.current\n const monaco = monacoRef.current\n\n if (!editor || !monaco) return\n\n // separators\n if (showSeparators) {\n editor.changeViewZones(function (changeAccessor) {\n // space before first line\n changeAccessor.addZone({\n afterLineNumber: 0,\n heightInPx: 10,\n domNode: document.createElement('div')\n })\n\n blameDataRef.current.forEach((blameItem, index) => {\n if (index !== blameDataRef.current.length - 1) {\n const domNode = document.createElement('div')\n domNode.style.borderTop = '1px solid hsl(var(--canary-border-01))'\n domNode.style.marginTop = '9px'\n domNode.className = 'blame-editor-separator'\n\n changeAccessor.addZone({\n afterLineNumber: blameItem.toLineNumber,\n heightInPx: 20,\n domNode: domNode\n })\n }\n })\n })\n }\n\n const decoratorItems: monaco.editor.IModelDeltaDecoration[] = []\n blameDataRef.current.forEach(blameItem => {\n for (let lineNo = blameItem.fromLineNumber; lineNo <= blameItem.toLineNumber; lineNo++) {\n decoratorItems.push({\n range: new monaco.Range(lineNo, 0, lineNo + 1, 0),\n options: {\n before: {\n content: createCommitMessage(\n lineNo === blameItem.fromLineNumber ? blameItem?.commitInfo?.title || '' : '',\n COMMIT_MESSAGE_LENGTH\n ),\n cursorStops: monaco.editor.InjectedTextCursorStops.None,\n inlineClassName: `blame-editor-commit blame-editor-commit-${lineNo}`\n }\n }\n })\n }\n })\n\n // TODO: on unmount clear decorators, on blameData change recreate\n editor.createDecorationsCollection(decoratorItems)\n }\n\n function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n editorRef.current = editor\n monacoRef.current = monaco\n\n editor.setValue(code)\n setEditor(editor)\n\n monaco.languages.typescript?.typescriptDefaults?.setDiagnosticsOptions?.({\n noSuggestionDiagnostics: true,\n noSyntaxValidation: true,\n noSemanticValidation: true\n })\n monaco.languages.typescript?.javascriptDefaults?.setDiagnosticsOptions?.({\n noSuggestionDiagnostics: true,\n noSyntaxValidation: true,\n noSemanticValidation: true\n })\n\n setupBlameEditor()\n }\n\n useEffect(() => {\n editor?.setValue(code)\n }, [code])\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const monacoEditorCss = useMemo(\n () =>\n getMonacoEditorCss({\n instanceId: instanceId.current,\n lineNumbersPosition\n }),\n [blameData]\n )\n\n const monacoEditorCommitInfoCss = useMemo(\n () =>\n getMonacoEditorCommitCss({\n instanceId: instanceId.current,\n blameData,\n avatarSize: AVATAR_SIZE,\n dateWidth: DATE_WIDTH\n }),\n [blameData]\n )\n\n // set adjustment for lines numbers position\n useEffect(() => {\n if (lineNumbersPosition === 'center') {\n const scrollableEl = document.getElementsByClassName('lines-content')[0]\n\n if (scrollableEl) {\n const config = { attributes: true }\n\n const callback: MutationCallback = mutationList => {\n for (const _ of mutationList) {\n const left = parseInt(getComputedStyle(scrollableEl).left)\n setLineNumbersDelta(left)\n }\n }\n\n const observer = new MutationObserver(callback)\n observer.observe(scrollableEl, config)\n\n return () => {\n observer.disconnect()\n }\n }\n }\n })\n\n // adjust lines numbers position\n const lineNumbersCss = useMemo(() => {\n return `\n .monaco-editor-${instanceId.current} .margin {\n left: ${BLAME_MESSAGE_WIDTH + 16 + lineNumbersDelta}px !important;\n pointer-events: none;\n }`\n }, [lineNumbersDelta])\n\n const clipSelection = `\n .monaco-editor-${instanceId.current} .view-overlays {\n clip-path: polygon(${BLAME_MESSAGE_WIDTH + 16}px 0, 100% 0%, 100% 100%, ${BLAME_MESSAGE_WIDTH + 16}px 100%);\n height:100% !important;\n }`\n\n const mergedOptions = useMemo(\n () => ({\n ...defaultOptions,\n ...options\n }),\n [options]\n )\n\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `${monacoEditorCss} ${monacoEditorCommitInfoCss} ${lineNumbersCss} ${clipSelection}`\n }}\n />\n <Editor\n className={`monaco-editor-${instanceId.current} overflow-hidden rounded-b-md border-x border-b`}\n height={height}\n language={language}\n theme={theme}\n options={mergedOptions}\n onMount={handleEditorDidMount}\n />\n </>\n )\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport Editor, { EditorProps, loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { MonacoCommonDefaultOptions } from '../constants/monaco-common-default-options'\nimport { useTheme } from '../hooks/useTheme'\nimport { ThemeDefinition } from '../types/themes'\n\nloader.config({ monaco })\n\nexport interface CodeRevision {\n code: string\n revisionId?: number\n}\n\nconst defaultOptions: monaco.editor.IStandaloneEditorConstructionOptions = {\n ...MonacoCommonDefaultOptions\n}\n\nexport interface CodeEditorProps<_> {\n codeRevision: CodeRevision\n onCodeRevisionChange: (codeRevision: CodeRevision | undefined, ev: monaco.editor.IModelContentChangedEvent) => void\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n options?: monaco.editor.IStandaloneEditorConstructionOptions\n height?: EditorProps['height']\n}\n\nexport function CodeEditor<T>({\n codeRevision,\n onCodeRevisionChange,\n language,\n themeConfig,\n options,\n theme: themeFromProps,\n height = '75vh'\n}: CodeEditorProps<T>): JSX.Element {\n const monaco = useMonaco()\n const [editor, setEditor] = useState<monaco.editor.IStandaloneCodeEditor | undefined>()\n const monacoRef = useRef<typeof monaco>()\n const currentRevisionRef = useRef<CodeRevision>({ code: '', revisionId: 0 })\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n\n const handleEditorDidMount = useCallback(\n (editorVal: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) => {\n editorRef.current = editorVal\n monacoRef.current = monaco\n\n editorVal.setValue(codeRevision.code)\n\n setEditor(editorVal)\n\n monaco.languages.typescript?.typescriptDefaults?.setDiagnosticsOptions?.({\n noSuggestionDiagnostics: true,\n noSyntaxValidation: true,\n noSemanticValidation: true\n })\n monaco.languages.typescript?.javascriptDefaults?.setDiagnosticsOptions?.({\n noSuggestionDiagnostics: true,\n noSyntaxValidation: true,\n noSemanticValidation: true\n })\n },\n [codeRevision.code]\n )\n\n useEffect(() => {\n if (!editorRef.current) return\n\n if (!codeRevision.revisionId || codeRevision.revisionId > Number(currentRevisionRef.current?.revisionId)) {\n const model = editorRef.current.getModel()\n\n if (model) {\n // NOTE: if it's a readonly no need to create undo stop points\n if (options?.readOnly) {\n editorRef.current?.setValue(codeRevision.code)\n } else {\n editorRef.current.pushUndoStop()\n editorRef.current.executeEdits('edit', [\n {\n range: model.getFullModelRange(),\n text: codeRevision.code\n }\n ])\n editorRef.current.pushUndoStop()\n }\n }\n }\n }, [codeRevision, editorRef.current])\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const mergedOptions = useMemo(() => {\n return { ...defaultOptions, ...(options ? options : {}) }\n }, [options])\n\n return (\n <>\n <Editor\n className=\"overflow-hidden rounded-b-md border-x border-b\"\n height={height}\n onChange={(value, data) => {\n currentRevisionRef.current = { code: value ?? '', revisionId: data.versionId }\n onCodeRevisionChange({ ...currentRevisionRef.current }, data)\n }}\n language={language}\n theme={theme}\n options={mergedOptions}\n onMount={handleEditorDidMount}\n />\n </>\n )\n}\n","import { useMemo, useRef, useState } from 'react'\n\nimport { DiffEditor, EditorProps, loader, MonacoDiffEditor, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { MonacoCommonDefaultOptions } from '../constants/monaco-common-default-options'\nimport { useTheme } from '../hooks/useTheme'\nimport { ThemeDefinition } from '../types/themes'\n\nloader.config({ monaco })\n\nexport interface CodeRevision {\n code: string\n revisionId?: number\n}\n\nconst defaultOptions: monaco.editor.IStandaloneDiffEditorConstructionOptions = {\n ...MonacoCommonDefaultOptions,\n codeLens: false,\n smartSelect: {\n selectLeadingAndTrailingWhitespace: true\n },\n originalEditable: false,\n overviewRulerBorder: false\n}\n\nexport interface DiffEditorProps<_> {\n original: string\n modified: string\n language: string\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n options?: monaco.editor.IStandaloneEditorConstructionOptions\n height?: EditorProps['height']\n}\n\nexport function CodeDiffEditor<T>({\n original,\n modified,\n language,\n themeConfig,\n options,\n theme: themeFromProps,\n height = '75vh'\n}: DiffEditorProps<T>): JSX.Element {\n const monaco = useMonaco()\n const [editor, setEditor] = useState<MonacoDiffEditor | undefined>()\n\n const monacoRef = useRef<typeof monaco>()\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n const mergedOptions = useMemo(() => {\n return { ...defaultOptions, ...(options ? options : {}) }\n }, [options])\n\n return (\n <>\n <DiffEditor\n className=\"overflow-hidden rounded-b-md border-x border-b\"\n language={language}\n theme={theme}\n original={original}\n modified={modified}\n height={height}\n options={mergedOptions}\n onMount={setEditor}\n />\n </>\n )\n}\n","export enum SelectorType {\n //AbsolutePath = 'AbsolutePath',\n ContainsPath = 'ContainsPath'\n}\n\nexport interface ContainsPathSelector {\n type: SelectorType.ContainsPath\n /** Path have to starts with `basePath`*/\n basePath: string\n /** Path have to contains one of provided path. Base path is not included in match.*/\n paths: RegExp[]\n}\n\n// export interface AbsolutePathSelector {\n// type: SelectorType.AbsolutePath\n// /** Path have to be equal with `absolutePaths`*/\n// absolutePaths: string[]\n// }\n\nexport type PathSelector = ContainsPathSelector // | AbsolutePathSelector\n","import * as monaco from 'monaco-editor'\n\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector, SelectorType } from '../types/selectors'\n\nexport interface CommandArg<T> extends Pick<InlineAction<T>, 'onClick' | 'data'> {\n range: monaco.IRange\n symbols: monaco.languages.DocumentSymbol[]\n path: string\n}\n\nexport interface GetCodeLensProps<T> {\n pathSymbolMap: Map<string, monaco.languages.DocumentSymbol>\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n commandId: string | any // TODO\n}\n\nexport function getCodeLens<T>(props: GetCodeLensProps<T>) {\n const { pathSymbolMap, inlineActions = [], commandId } = props\n\n const pathSymbolMapObj = Object.fromEntries(pathSymbolMap.entries())\n\n const lenses: monaco.languages.CodeLens[] = []\n\n inlineActions?.forEach(inlineAction => {\n const actions = inlineAction.actions\n const selectors = inlineAction.selectors\n\n selectors.forEach(selector => {\n switch (selector.type) {\n case SelectorType.ContainsPath: {\n selector.paths.forEach(partRegexp => {\n const pathSymbolArr = Object.keys(pathSymbolMapObj).map(path => ({\n fullPath: path,\n path,\n symbol: pathSymbolMapObj[path]\n }))\n\n //console.log(pathSymbolArr)\n\n let candidateRelativePaths = pathSymbolArr.filter(pathSymbol => {\n return pathSymbol.path.startsWith(selector.basePath)\n })\n\n candidateRelativePaths = candidateRelativePaths.map(pathSymbol => ({\n ...pathSymbol,\n path: pathSymbol.path.substring(selector.basePath.length)\n }))\n\n //console.log(candidateRelativePaths)\n\n const finalPaths = candidateRelativePaths.filter(pathSymbol => {\n return partRegexp.test(pathSymbol.path)\n })\n\n //console.log(finalPaths, 'finalPaths')\n\n finalPaths.forEach(pathSymbol => {\n const path = pathSymbol.fullPath\n const symbol = pathSymbol.symbol\n const range = symbol.range\n\n actions.forEach(action => {\n const commandArg = {\n range,\n symbols: [symbol],\n onClick: action.onClick,\n data: action.data,\n path: path\n }\n\n lenses.push({\n range,\n command: {\n id: commandId,\n title: action.title,\n arguments: [commandArg]\n }\n })\n })\n })\n })\n break\n }\n }\n })\n })\n\n return lenses\n}\n","import { ILanguageFeaturesService } from 'monaco-editor/esm/vs/editor/common/services/languageFeatures.js'\nimport { OutlineModel } from 'monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/outlineModel.js'\nimport { StandaloneServices } from 'monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js'\n\nexport interface MonacoGlobalsData {\n ILanguageFeaturesService: typeof ILanguageFeaturesService\n OutlineModel: typeof OutlineModel\n StandaloneServices: typeof StandaloneServices\n}\n\nexport class MonacoGlobals {\n static data: MonacoGlobalsData = {} as MonacoGlobalsData\n\n static set(data: MonacoGlobalsData) {\n MonacoGlobals.data = data\n }\n\n static get(): MonacoGlobalsData {\n return MonacoGlobals.data\n }\n}\n","import { editor, languages } from 'monaco-editor'\n\nimport { OutlineModelValueInternal, RootOutlineModelInternal } from '../types/monaco'\nimport { MonacoGlobals } from './monaco-globals'\n\nexport async function getOutlineModel(model: editor.ITextModel): Promise<RootOutlineModelInternal> {\n const monacoGlobals = MonacoGlobals.get()\n const { documentSymbolProvider } = monacoGlobals.StandaloneServices.get(monacoGlobals.ILanguageFeaturesService)\n const outlineModel = await monacoGlobals.OutlineModel.create(documentSymbolProvider, model)\n return outlineModel as unknown as RootOutlineModelInternal\n}\n\nexport function processOutlineModel(outlineModel: RootOutlineModelInternal) {\n const pathSymbolMap: Map<string, languages.DocumentSymbol> = new Map()\n\n processChildrenRec({\n pathSymbolMap,\n parentPath: '',\n children: outlineModel.children,\n parentKind: languages.SymbolKind.Module\n })\n\n return pathSymbolMap\n}\n\nfunction processChildrenRec(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n switch (props.parentKind) {\n case languages.SymbolKind.Module: {\n processObject(props)\n break\n }\n case languages.SymbolKind.Array: {\n processArray(props)\n break\n }\n default: {\n processPrimitive(props)\n }\n }\n}\n\nfunction processObject(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n props.children.forEach(child => {\n let childPath = props.parentPath\n\n if (child.symbol) {\n childPath = props.parentPath ? `${props.parentPath}.${child.symbol.name}` : child.symbol.name\n\n props.pathSymbolMap.set(childPath, child.symbol)\n }\n\n processChildrenRec({\n pathSymbolMap: props.pathSymbolMap,\n parentPath: childPath,\n children: child.children,\n parentKind: child?.symbol?.kind ?? props.parentKind\n })\n })\n}\n\nfunction processArray(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n let idx = 0\n props.children.forEach(child => {\n const childPath = props.parentPath ? `${props.parentPath}.${idx}` : `${idx}`\n\n props.pathSymbolMap.set(childPath, child.symbol)\n\n idx += 1\n\n processChildrenRec({\n pathSymbolMap: props.pathSymbolMap,\n parentPath: childPath,\n children: child.children,\n parentKind: child.symbol.kind\n })\n })\n}\n\nfunction processPrimitive(props: {\n pathSymbolMap: Map<string, languages.DocumentSymbol>\n parentPath: string\n children: Map<string, OutlineModelValueInternal>\n parentKind: languages.SymbolKind\n}) {\n const child = props.children.get('0')\n\n if (child) {\n const childPath = props.parentPath ? `${props.parentPath}.${child.symbol.name}` : child?.symbol.name\n\n props.pathSymbolMap.set(childPath, child.symbol)\n }\n}\n","import { RefObject, useEffect } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector } from '../types/selectors'\nimport { getCodeLens } from '../utils/codelens-utils'\nimport { getOutlineModel, processOutlineModel } from '../utils/outline-model-to-path'\n\nexport function useCodeLenses<T>({\n editorRef,\n inlineActions\n}: {\n editorRef: RefObject<monaco.editor.IStandaloneCodeEditor | undefined | null>\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n}): void {\n useEffect(() => {\n const disposable = monaco.languages.registerCodeLensProvider('yaml', {\n provideCodeLenses: async model => {\n const outlineModel = await getOutlineModel(model)\n const pathSymbolMap = processOutlineModel(outlineModel)\n\n const commandId = editorRef?.current?.addCommand(0, (_, { onClick, path, range, data }) => {\n onClick({ path, range, data })\n })\n\n if (!commandId) return\n\n const lenses = getCodeLens({ pathSymbolMap, inlineActions, commandId })\n\n return {\n lenses,\n dispose: () => undefined\n }\n }\n })\n\n return disposable.dispose\n }, [inlineActions, editorRef])\n}\n","import { RefObject, useEffect, useMemo, useState } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { getOutlineModel, processOutlineModel } from '../utils/outline-model-to-path'\n\ntype UseDecoration = (arg: {\n editorRef?: RefObject<monaco.editor.IStandaloneCodeEditor>\n selection?: {\n path: string\n className: string\n revealInCenter?: boolean\n }\n}) => void\n\nexport const useDecoration: UseDecoration = ({ editorRef, selection }) => {\n const [range, setRange] = useState<monaco.IRange>()\n\n const computeRange = useMemo(\n () =>\n async (_editorRef?: RefObject<monaco.editor.IStandaloneCodeEditor>, path?: string, revealInCenter?: boolean) => {\n const model = editorRef?.current?.getModel()\n\n if (!model || !path) {\n return setRange(undefined)\n }\n\n const outlineModel = await getOutlineModel(model)\n const pathSymbolMap = processOutlineModel(outlineModel)\n const range = pathSymbolMap.get(path)?.range\n\n if (range) {\n setRange(range)\n\n if (revealInCenter) {\n editorRef?.current?.revealLineInCenter(range.startLineNumber)\n }\n }\n },\n []\n )\n\n useEffect(() => {\n if ('requestIdleCallback' in window) {\n const handle = requestIdleCallback(() => {\n computeRange(editorRef, selection?.path, selection?.revealInCenter)\n })\n return () => cancelIdleCallback(handle)\n }\n // fallback for safari\n else {\n const handle = setTimeout(() => {\n computeRange(editorRef, selection?.path, selection?.revealInCenter)\n }, 100)\n return () => clearTimeout(handle)\n }\n }, [selection?.path, selection?.revealInCenter, editorRef, computeRange])\n\n useEffect(() => {\n if (!range) return\n\n const decorations = editorRef?.current?.createDecorationsCollection([\n {\n // TODO: check why startColumn is set to \"end of row\"\n range: { ...range, startColumn: 1 },\n options: {\n isWholeLine: false,\n className: selection?.className\n }\n }\n ])\n\n return () => decorations?.clear()\n }, [range, editorRef, selection?.className])\n}\n","import { createContext, useCallback, useContext, useState } from 'react'\n\nimport type { editor } from 'monaco-editor'\n\nexport interface YamlEditorContextInterface {\n markers: editor.IMarker[]\n setMarkers: (markets: editor.IMarker[]) => void\n editor: editor.IStandaloneCodeEditor | null\n setEditor: (monacoEditor: editor.IStandaloneCodeEditor) => void\n updateCursorPosition: (position: { column: number; lineNumber: number }) => void\n}\n\nexport const YamlEditorContext = createContext<YamlEditorContextInterface>({\n markers: [],\n setMarkers: () => undefined,\n editor: null,\n setEditor: (_monacoEditor: editor.IStandaloneCodeEditor) => undefined,\n updateCursorPosition: (_position: { column: number; lineNumber: number }) => undefined\n})\n\nexport function YamlEditorContextProvider({\n children\n}: React.PropsWithChildren<React.HTMLAttributes<HTMLElement>>): React.ReactElement {\n const [markers, setMarkers] = useState<editor.IMarker[]>([])\n const [monacoEditor, setMonacoEditor] = useState<editor.IStandaloneCodeEditor | null>(null)\n\n const updateCursorPosition = useCallback(\n (position: { column: number; lineNumber: number }) => {\n monacoEditor?.setPosition(position)\n monacoEditor?.focus()\n },\n [monacoEditor]\n )\n\n return (\n <YamlEditorContext.Provider\n value={{\n markers,\n setMarkers,\n editor: monacoEditor,\n setEditor: setMonacoEditor,\n updateCursorPosition\n }}\n >\n {children}\n </YamlEditorContext.Provider>\n )\n}\n\nexport function useYamlEditorContext(): YamlEditorContextInterface {\n return useContext(YamlEditorContext)\n}\n","import { RefObject, useEffect } from 'react'\n\nimport * as monaco from 'monaco-editor'\n\nimport { useYamlEditorContext } from '../components/YamlProvider'\n\nexport type UseProblems = (arg: { monacoRef: RefObject<typeof monaco | undefined> }) => void\n\nexport const useProblems: UseProblems = ({ monacoRef }): void => {\n const { setMarkers } = useYamlEditorContext()\n\n useEffect(() => {\n let handle: monaco.IDisposable\n\n const timeoutHandle = setTimeout(() => {\n const editor = monacoRef.current?.editor\n\n if (!editor) return\n\n handle = editor.onDidChangeMarkers(([resource]) => {\n const markers = editor.getModelMarkers({ resource })\n setMarkers(markers)\n })\n }, 100)\n\n return () => {\n clearTimeout(timeoutHandle)\n handle?.dispose()\n }\n }, [monacoRef])\n}\n","import { Uri } from 'monaco-editor'\nimport { yamlDefaults } from 'monaco-yaml'\n\nlet isYamlMonacoConfigured = false\n\nexport function configureSchema(schemaConfig: any) {\n if (isYamlMonacoConfigured) return\n\n const config = {\n hover: true,\n completion: true,\n enableSchemaRequest: false,\n validate: true,\n schemas: [schemaConfig]\n }\n\n isYamlMonacoConfigured = true\n\n // NOTE: this is for monaco-editor@0.50.0 version\n // return configureMonacoYaml(monaco, config)\n\n yamlDefaults.setDiagnosticsOptions({ ...config })\n}\n\nexport const schemaIdToUrl = (id: string): string => {\n return Uri.parse(`file://${id}`).toString()\n}\n\nexport const schemaIdToUri = (id: string): Uri => {\n return Uri.parse(schemaIdToUrl(id))\n}\n","import { useEffect } from 'react'\n\nimport { configureSchema, schemaIdToUrl } from '../utils/schema-utils'\n\nexport type UseSchema = (arg: { schemaConfig?: { schema: any; uri: string }; instanceId: string }) => void\n\nexport const useSchema: UseSchema = (props): void => {\n const { schemaConfig, instanceId } = props\n\n useEffect(() => {\n if (schemaConfig?.schema) {\n configureSchema({\n // If YAML file is opened matching this glob\n fileMatch: [schemaIdToUrl(instanceId.toString())],\n ...schemaConfig\n })\n }\n }, [schemaConfig?.schema, instanceId])\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport Editor, { loader, Monaco, useMonaco } from '@monaco-editor/react'\nimport * as monaco from 'monaco-editor'\n\nimport { MonacoCommonDefaultOptions } from '../constants/monaco-common-default-options'\nimport { useCodeLenses } from '../hooks/useCodeLens'\nimport { useDecoration } from '../hooks/useDecoration'\nimport { useProblems } from '../hooks/useProblems'\nimport { useSchema } from '../hooks/useSchema'\nimport { useTheme } from '../hooks/useTheme'\nimport { InlineAction } from '../types/inline-actions'\nimport { PathSelector } from '../types/selectors'\nimport { ThemeDefinition } from '../types/themes'\nimport { schemaIdToUrl } from '../utils/schema-utils'\nimport { useYamlEditorContext } from './YamlProvider'\n\nloader.config({ monaco })\n\nexport interface YamlRevision {\n yaml: string\n revisionId?: number\n}\n\nconst options: monaco.editor.IStandaloneEditorConstructionOptions = {\n ...MonacoCommonDefaultOptions,\n folding: true\n}\n\nexport interface YamlEditorProps<T> {\n yamlRevision: YamlRevision\n onYamlRevisionChange: (yamlRevision: YamlRevision | undefined, ev: monaco.editor.IModelContentChangedEvent) => void\n schemaConfig?: { schema: any; uri: string }\n inlineActions?: { selectors: PathSelector[]; actions: InlineAction<T>[] }[]\n themeConfig?: { rootElementSelector?: string; defaultTheme?: string; themes?: ThemeDefinition[] }\n theme?: string\n options?: monaco.editor.IStandaloneEditorConstructionOptions\n selection?: {\n path: string\n className: string\n revealInCenter?: boolean\n }\n animateOnUpdate?: boolean\n onAnimateEnd?: () => void\n}\n\nexport const YamlEditor = function YamlEditor<T>(props: YamlEditorProps<T>): JSX.Element {\n const {\n yamlRevision,\n schemaConfig,\n inlineActions,\n themeConfig,\n onYamlRevisionChange,\n selection,\n theme: themeFromProps,\n options: userOptions,\n animateOnUpdate = false,\n onAnimateEnd\n } = props\n const monaco = useMonaco()\n const [instanceId] = useState('yaml')\n const { editor, setEditor } = useYamlEditorContext()\n\n const rootDivRef = useRef<HTMLDivElement | null>(null)\n\n const monacoRef = useRef<typeof monaco>()\n const currentRevisionRef = useRef<YamlRevision>({ yaml: '', revisionId: 0 })\n\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor | null>(null)\n const intervalIdRef = useRef<number | null>(null)\n\n const replaceYamlWithAnimation = useCallback(\n (yaml: string) => {\n const lines = yaml.split('\\n')\n const model = editorRef.current?.getModel()\n if (model) {\n editorRef.current?.pushUndoStop()\n model.setValue('')\n let index = 0\n intervalIdRef.current = window.setInterval(() => {\n if (index < lines.length) {\n if (monaco) {\n editorRef.current?.executeEdits('addLine', [\n {\n range: new monaco.Range(index + 1, 1, index + 1, 1),\n text: lines[index] + '\\n'\n }\n ])\n }\n index++\n } else {\n if (intervalIdRef.current) {\n clearInterval(intervalIdRef.current)\n onAnimateEnd?.()\n }\n }\n }, 100) // 100ms delay between each line\n editorRef.current?.pushUndoStop()\n }\n },\n [monaco]\n )\n\n useEffect(() => {\n return () => {\n if (intervalIdRef.current) {\n clearInterval(intervalIdRef.current)\n }\n }\n }, [])\n\n function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n editorRef.current = editor\n monacoRef.current = monaco\n\n editor.setValue(yamlRevision.yaml)\n\n setEditor(editor)\n\n // NOTE: to prevent initial flickering (left line) we use opacity to show editor with delay\n setTimeout(() => {\n if (rootDivRef.current?.style) {\n rootDivRef.current.style.opacity = '1'\n }\n }, 50)\n }\n\n useEffect(() => {\n if (editorRef.current) {\n if (!yamlRevision.revisionId || yamlRevision.revisionId > Number(currentRevisionRef.current?.revisionId)) {\n // editorRef.current?.setValue(yamlRevision.yaml)\n\n const model = editorRef.current.getModel()\n if (model) {\n // editorRef.current.pushUndoStop()\n editorRef.current.executeEdits('edit', [\n {\n range: model.getFullModelRange(),\n text: animateOnUpdate ? '' : yamlRevision.yaml\n }\n ])\n // editorRef.current.pushUndoStop()\n if (animateOnUpdate) {\n replaceYamlWithAnimation(yamlRevision.yaml)\n }\n }\n }\n }\n }, [replaceYamlWithAnimation, yamlRevision, animateOnUpdate])\n\n useSchema({ schemaConfig, instanceId })\n\n useCodeLenses({ editorRef, inlineActions })\n\n const { theme } = useTheme({ monacoRef, themeConfig, editor, theme: themeFromProps })\n\n useProblems({ monacoRef })\n\n useDecoration({ editorRef, selection })\n\n const mergedOptions = useMemo(\n () => ({\n ...options,\n ...userOptions\n }),\n [userOptions]\n )\n\n return (\n <div style={{ width: '100%', height: '100%', opacity: 0 }} ref={rootDivRef}>\n <Editor\n onChange={(value, data) => {\n currentRevisionRef.current = { yaml: value ?? '', revisionId: data.versionId }\n onYamlRevisionChange({ ...currentRevisionRef.current }, data)\n }}\n language=\"yaml\"\n theme={theme}\n options={mergedOptions}\n path={schemaIdToUrl(instanceId)}\n onMount={handleEditorDidMount}\n />\n </div>\n )\n}\n"],"names":["getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","i","order2","n","test3","letter","f","require$$1","g","reactJsxRuntime_production_min","h","m","p","q","c","a","k","b","d","e","l","jsxRuntimeModule","require$$0","MonacoCommonDefaultOptions","useTheme","props","themeConfig","editor","theme","defaultTheme","themeInternal","setThemeInternal","useState","useEffect","_a","themeItem","monaco","createRandomString","length","chars","result","escapeSingleQuote","str","getMonacoEditorCss","instanceId","lineNumbersPosition","css","getMonacoEditorCommitCss","blameData","dateWidth","avatarSize","blameItem","avatarUrl","_b","initials","_d","_c","avatarBackgroundCss","_f","_e","lineNo","_h","_g","createCommitMessage","msg","commitMsgLength","ret","loader","BLAME_MESSAGE_WIDTH","COMMIT_MESSAGE_LENGTH","DATE_WIDTH","AVATAR_SIZE","defaultOptions","BlameEditor","code","language","showSeparators","themeFromProps","height","options","blameDataRef","useRef","useMonaco","setEditor","lineNumbersDelta","setLineNumbersDelta","monacoRef","editorRef","setupBlameEditor","changeAccessor","index","domNode","decoratorItems","handleEditorDidMount","monacoEditorCss","useMemo","monacoEditorCommitInfoCss","scrollableEl","config","callback","mutationList","_","left","observer","lineNumbersCss","clipSelection","mergedOptions","jsxs","Fragment","jsx","Editor","CodeEditor","codeRevision","onCodeRevisionChange","currentRevisionRef","useCallback","editorVal","model","value","data","CodeDiffEditor","original","modified","DiffEditor","SelectorType","getCodeLens","pathSymbolMap","inlineActions","commandId","pathSymbolMapObj","lenses","inlineAction","actions","selector","partRegexp","candidateRelativePaths","path","pathSymbol","symbol","range","action","commandArg","_MonacoGlobals","__publicField","MonacoGlobals","getOutlineModel","monacoGlobals","documentSymbolProvider","processOutlineModel","outlineModel","processChildrenRec","languages","processObject","processArray","processPrimitive","child","childPath","idx","useCodeLenses","onClick","useDecoration","selection","setRange","computeRange","_editorRef","revealInCenter","handle","decorations","YamlEditorContext","createContext","_monacoEditor","_position","YamlEditorContextProvider","children","markers","setMarkers","monacoEditor","setMonacoEditor","updateCursorPosition","position","useYamlEditorContext","useContext","useProblems","timeoutHandle","resource","isYamlMonacoConfigured","configureSchema","schemaConfig","yamlDefaults","schemaIdToUrl","id","Uri","useSchema","YamlEditor","yamlRevision","onYamlRevisionChange","userOptions","animateOnUpdate","onAnimateEnd","rootDivRef","intervalIdRef","replaceYamlWithAnimation","yaml","lines"],"mappings":";;;;;;;;;;;;;;AAQA,IAAIA,IAAwB,OAAO,uBAC/BC,KAAiB,OAAO,UAAU,gBAClCC,KAAmB,OAAO,UAAU;AAExC,SAASC,GAASC,GAAK;AACtB,MAAIA,KAAQ;AACX,UAAM,IAAI,UAAU,uDAAuD;AAG5E,SAAO,OAAOA,CAAG;AAClB;AAEA,SAASC,KAAkB;AAC1B,MAAI;AACH,QAAI,CAAC,OAAO;AACX,aAAO;AAMR,QAAIC,IAAQ,IAAI,OAAO,KAAK;AAE5B,QADAA,EAAM,CAAC,IAAI,MACP,OAAO,oBAAoBA,CAAK,EAAE,CAAC,MAAM;AAC5C,aAAO;AAKR,aADIC,IAAQ,CAAA,GACHC,IAAI,GAAGA,IAAI,IAAIA;AACvB,MAAAD,EAAM,MAAM,OAAO,aAAaC,CAAC,CAAC,IAAIA;AAEvC,QAAIC,IAAS,OAAO,oBAAoBF,CAAK,EAAE,IAAI,SAAUG,GAAG;AAC/D,aAAOH,EAAMG,CAAC;AAAA,IACjB,CAAG;AACD,QAAID,EAAO,KAAK,EAAE,MAAM;AACvB,aAAO;AAIR,QAAIE,IAAQ,CAAA;AAIZ,WAHA,uBAAuB,MAAM,EAAE,EAAE,QAAQ,SAAUC,GAAQ;AAC1D,MAAAD,EAAMC,CAAM,IAAIA;AAAA,IACnB,CAAG,GACG,OAAO,KAAK,OAAO,OAAO,CAAE,GAAED,CAAK,CAAC,EAAE,KAAK,EAAE,MAC/C;AAAA,EAKF,QAAa;AAEb,WAAO;AAAA,EACP;AACF;AAEiBN,GAAe;;;;;;;;;ACxDM,IAAIQ,KAAEC,IAAiBC,KAAE;AAAMC,EAAA,WAAiB;AAAM,IAAgB,OAAO,UAApB,cAA4B,OAAO,KAAI;AAAC,MAAIC,IAAE,OAAO;AAAI,EAAAF,KAAEE,EAAE,eAAe,GAAED,EAAA,WAAiBC,EAAE,gBAAgB;AAAC;AAAC,IAAIC,KAAEL,GAAE,mDAAmD,mBAAkBH,KAAE,OAAO,UAAU,gBAAeS,KAAE,EAAC,KAAI,IAAG,KAAI,IAAG,QAAO,IAAG,UAAS,GAAE;AACvW,SAASC,GAAEC,GAAEC,GAAEC,GAAE;AAAC,MAAIC,GAAEC,IAAE,IAAGC,IAAE,MAAKC,IAAE;AAAK,EAASJ,MAAT,WAAaG,IAAE,KAAGH,IAAYD,EAAE,QAAX,WAAiBI,IAAE,KAAGJ,EAAE,MAAcA,EAAE,QAAX,WAAiBK,IAAEL,EAAE;AAAK,OAAIE,KAAKF;AAAE,IAAAZ,GAAE,KAAKY,GAAEE,CAAC,KAAG,CAACL,GAAE,eAAeK,CAAC,MAAIC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,MAAGH,KAAGA,EAAE;AAAa,SAAIG,KAAKF,IAAED,EAAE,cAAaC;AAAE,MAASG,EAAED,CAAC,MAAZ,WAAgBC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,SAAM,EAAC,UAAST,IAAE,MAAKM,GAAE,KAAIK,GAAE,KAAIC,GAAE,OAAMF,GAAE,QAAOP,GAAE,QAAO;AAAC;AAAYF,EAAA,MAACI;AAAEJ,EAAA,OAAaI;ACNrVQ,GAAA,UAAiBC;;ACDZ,MAAMC,IAAqF;AAAA,EAChG,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,SAAS;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,SAAS,EAAE,SAAS,GAAM;AAAA,EAC1B,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,IACT,uBAAuB;AAAA,IACvB,yBAAyB;AAAA,IACzB,oBAAoB;AAAA,IACpB,sBAAsB;AAAA,EACxB;AAAA,EACA,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,qBAAqB;AACvB,GCLaC,IAAqB,CAACC,MAA6B;AAC9D,QAAM,EAAE,aAAAC,GAAa,QAAAC,GAAQ,OAAAC,EAAA,IAAUH,GACjC,EAAE,cAAAI,EAAA,IAAiBH,KAAe,IAElC,CAACI,GAAeC,CAAgB,IAAIC,EAASJ,KAASC,KAAgB,SAAS;AAErF,SAAAI,EAAU,MAAM;;AACD,KAAAC,IAAAR,KAAA,gBAAAA,EAAA,WAAA,QAAAQ,EAAQ,QAAQ,CAAaC,MAAA;AACxC,MAAAC,EAAO,OAAO,YAAYD,EAAU,WAAWA,EAAU,SAAS;AAAA,IAAA;AAAA,EACnE,GACA,CAACC,CAAM,CAAC,GAEXH,EAAU,MAAM;AACV,IAAAG,EAAO,UAAUR,MACZQ,EAAA,OAAO,SAASR,CAAK,GAC5BG,EAAiBH,CAAK;AAAA,EACxB,GACC,CAACD,GAAQC,CAAK,CAAC,GAEX,EAAE,OAAOE;AAClB;ACrCO,SAASO,GAAmBC,GAAgB;AACjD,QAAMC,IAAQ;AACd,MAAIC,IAAS;AACb,WAASvC,IAAI,GAAGA,IAAIqC,GAAQrC;AAChB,IAAAuC,KAAAD,EAAM,OAAO,KAAK,MAAM,KAAK,WAAWA,EAAM,MAAM,CAAC;AAE1D,SAAAC;AACT;AAEO,SAASC,GAAkBC,GAAa;AACtC,SAAAA,EAAI,QAAQ,KAAK,OAAO;AACjC;ACRO,SAASC,GAAmB;AAAA,EACjC,YAAAC;AAAA,EACA,qBAAAC;AACF,GAGG;AACD,MAAIC,IAAM;AAGV,SAAID,MAAwB,aACnBC,KAAA;AAAA,uBACYF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKVA,CAAU;AAAA;AAAA;AAAA;AAAA,uBAIVA,CAAU;AAAA;AAAA;AAAA,WAMxBE,KAAA;AAAA,uBACcF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKVA,CAAU;AAAA;AAAA;AAAA;AAAA,uBAIVA,CAAU;AAAA;AAAA;AAAA,UAKxBE;AACT;AAEO,SAASC,GAAyB;AAAA,EACvC,YAAAH;AAAA,EACA,WAAAI;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AACF,GAKG;AACD,MAAIJ,IAAM;AACV,SAAAE,EAAU,QAAQ,CAAaG,MAAA;;AACvB,UAAAC,KAAYC,KAAAnB,IAAAiB,KAAA,gBAAAA,EAAW,eAAX,gBAAAjB,EAAuB,WAAvB,gBAAAmB,EAA+B,WAC3CC,KAAWC,KAAAC,IAAAL,KAAA,gBAAAA,EAAW,eAAX,gBAAAK,EAAuB,WAAvB,gBAAAD,EAA+B,UAE1CE,IAAsBL,IAAY,qBAAoBM,KAAAC,IAAAR,KAAA,gBAAAA,EAAW,eAAX,gBAAAQ,EAAuB,WAAvB,gBAAAD,EAA+B,SAAS,QAAQ;AAE5G,aAASE,IAAST,EAAU,gBAAgBS,KAAUT,EAAU,cAAcS;AACxE,MAAAA,MAAWT,EAAU,iBAChBL,KAAA;AAAA,2BACYF,CAAU,oCAAoCgB,CAAM;AAAA,wBACvDnB,KAAkBoB,KAAAC,IAAAX,KAAA,gBAAAA,EAAW,eAAX,gBAAAW,EAAuB,WAAvB,gBAAAD,EAA+B,SAAQ,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAOzDjB,CAAU,oCAAoCgB,CAAM;AAAA,wBACvDN,KAAY,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOnBL,IAAY,EAAE;AAAA;AAAA;AAAA,qBAGbC,CAAU;AAAA,sBACTA,CAAU;AAAA,cAClBO,CAAmB;AAAA;AAAA,eAIlBX,KAAA;AAAA,2BACYF,CAAU,oCAAoCgB,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO3E,CACD,GAEMd;AACT;AAEgB,SAAAiB,GAAoBC,GAAaC,GAAyB;AACxE,MAAIC,IAAM;AACN,SAAAF,EAAI,SAASC,IACfC,IAAMF,EAAI,MAAM,GAAGC,IAAkB,CAAC,IAAI,QACjCD,EAAI,SAASC,IACtBC,IAAMF,IAAM,IAAI,OAAOC,IAAkBD,EAAI,MAAM,IAE7CE,IAAAF,GAGD,IAAI,OAAO,EAAE,IAAIE,IAAM,IAAI,OAAO,EAAE;AAC7C;AC3GAC,EAAO,OAAO,EAAE,QAAA/B,EAAA,CAAQ;AAExB,MAAMgC,IAAsB,KACtBC,KAAwB,IACxBC,KAAa,KACbC,KAAc,IAEdC,KAAqE;AAAA,EACzE,GAAGjD;AAAA,EACH,UAAU;AAAA,EACV,eAAe;AAAA,EACf,6BAA6B;AAAA,EAC7B,QAAQ,EAAE,aAAa,GAAM;AAAA,EAC7B,SAAS;AAAA,EACT,cAAc,EAAE,SAAS,GAAM;AAAA,EAC/B,kBAAkB;AAAA,EAClB,qBAAqB;AACvB;AAcO,SAASkD,GAAY;AAAA,EAC1B,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAjD;AAAA,EACA,qBAAAmB,IAAsB;AAAA,EACtB,WAAAG;AAAA,EACA,gBAAA4B,IAAiB;AAAA,EACjB,OAAOC;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,SAAAC;AACF,GAAkC;AAC1B,QAAAC,IAAeC,EAAOjC,CAAS,GAE/BJ,IAAaqC,EAAO5C,GAAmB,CAAC,CAAC;AAChC,EAAA6C,EAAU;AACzB,QAAM,CAACvD,GAAQwD,CAAS,IAAInD,EAA0D,GAEhF,CAACoD,GAAkBC,CAAmB,IAAIrD,EAAS,CAAC,GAEpDsD,IAAYL,EAA6B,IAAI,GAC7CM,IAAYN,EAAmD,IAAI;AAEzE,EAAAhD,EAAU,MAAM;AACd,IAAA+C,EAAa,UAAUhC;AAAA,EAAA,GACtB,CAACA,CAAS,CAAC;AAEd,WAASwC,IAAmB;AAC1B,UAAM7D,IAAS4D,EAAU,SACnBnD,IAASkD,EAAU;AAErB,QAAA,CAAC3D,KAAU,CAACS;AAAQ;AAGxB,IAAIwC,KACFjD,EAAO,gBAAgB,SAAU8D,GAAgB;AAE/C,MAAAA,EAAe,QAAQ;AAAA,QACrB,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,SAAS,SAAS,cAAc,KAAK;AAAA,MAAA,CACtC,GAEDT,EAAa,QAAQ,QAAQ,CAAC7B,GAAWuC,MAAU;AACjD,YAAIA,MAAUV,EAAa,QAAQ,SAAS,GAAG;AACvC,gBAAAW,IAAU,SAAS,cAAc,KAAK;AAC5C,UAAAA,EAAQ,MAAM,YAAY,0CAC1BA,EAAQ,MAAM,YAAY,OAC1BA,EAAQ,YAAY,0BAEpBF,EAAe,QAAQ;AAAA,YACrB,iBAAiBtC,EAAU;AAAA,YAC3B,YAAY;AAAA,YACZ,SAAAwC;AAAA,UAAA,CACD;AAAA,QACH;AAAA,MAAA,CACD;AAAA,IAAA,CACF;AAGH,UAAMC,IAAwD,CAAA;AACjD,IAAAZ,EAAA,QAAQ,QAAQ,CAAa7B,MAAA;;AACxC,eAASS,IAAST,EAAU,gBAAgBS,KAAUT,EAAU,cAAcS;AAC5E,QAAAgC,EAAe,KAAK;AAAA,UAClB,OAAO,IAAIxD,EAAO,MAAMwB,GAAQ,GAAGA,IAAS,GAAG,CAAC;AAAA,UAChD,SAAS;AAAA,YACP,QAAQ;AAAA,cACN,SAASG;AAAA,gBACPH,MAAWT,EAAU,oBAAiBjB,IAAAiB,KAAA,gBAAAA,EAAW,eAAX,gBAAAjB,EAAuB,UAAS;AAAA,gBACtEmC;AAAA,cACF;AAAA,cACA,aAAajC,EAAO,OAAO,wBAAwB;AAAA,cACnD,iBAAiB,2CAA2CwB,CAAM;AAAA,YACpE;AAAA,UACF;AAAA,QAAA,CACD;AAAA,IACH,CACD,GAGDjC,EAAO,4BAA4BiE,CAAc;AAAA,EACnD;AAES,WAAAC,EAAqBlE,GAA6CS,GAAgB;;AACzF,IAAAmD,EAAU,UAAU5D,GACpB2D,EAAU,UAAUlD,GAEpBT,EAAO,SAAS+C,CAAI,GACpBS,EAAUxD,CAAM,IAEhBS,KAAAA,KAAAA,IAAAA,EAAO,UAAU,eAAjBA,gBAAAA,EAA6B,uBAA7BA,gBAAAA,EAAiD,0BAAjDA,QAAAA,EAAAA,KAAAA,GAAyE;AAAA,MACvE,yBAAyB;AAAA,MACzB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,IAAA,KAExBA,KAAAA,KAAAA,IAAAA,EAAO,UAAU,eAAjBA,gBAAAA,EAA6B,uBAA7BA,gBAAAA,EAAiD,0BAAjDA,QAAAA,EAAAA,KAAAA,GAAyE;AAAA,MACvE,yBAAyB;AAAA,MACzB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,IAAA,IAGPoD;EACnB;AAEA,EAAAvD,EAAU,MAAM;AACd,IAAAN,KAAA,QAAAA,EAAQ,SAAS+C;AAAA,EAAI,GACpB,CAACA,CAAI,CAAC;AAEH,QAAA,EAAE,OAAA9C,MAAUJ,EAAS,EAAE,WAAA8D,GAAW,aAAA5D,GAAa,QAAAC,GAAQ,OAAOkD,EAAA,CAAgB,GAE9EiB,IAAkBC;AAAA,IACtB,MACEpD,GAAmB;AAAA,MACjB,YAAYC,EAAW;AAAA,MACvB,qBAAAC;AAAA,IAAA,CACD;AAAA,IACH,CAACG,CAAS;AAAA,EAAA,GAGNgD,IAA4BD;AAAA,IAChC,MACEhD,GAAyB;AAAA,MACvB,YAAYH,EAAW;AAAA,MACvB,WAAAI;AAAA,MACA,YAAYuB;AAAA,MACZ,WAAWD;AAAA,IAAA,CACZ;AAAA,IACH,CAACtB,CAAS;AAAA,EAAA;AAIZ,EAAAf,EAAU,MAAM;AACd,QAAIY,MAAwB,UAAU;AACpC,YAAMoD,IAAe,SAAS,uBAAuB,eAAe,EAAE,CAAC;AAEvE,UAAIA,GAAc;AACV,cAAAC,IAAS,EAAE,YAAY,MAEvBC,IAA6B,CAAgBC,MAAA;AACjD,qBAAWC,KAAKD,GAAc;AAC5B,kBAAME,IAAO,SAAS,iBAAiBL,CAAY,EAAE,IAAI;AACzD,YAAAZ,EAAoBiB,CAAI;AAAA,UAC1B;AAAA,QAAA,GAGIC,IAAW,IAAI,iBAAiBJ,CAAQ;AACrC,eAAAI,EAAA,QAAQN,GAAcC,CAAM,GAE9B,MAAM;AACX,UAAAK,EAAS,WAAW;AAAA,QAAA;AAAA,MAExB;AAAA,IACF;AAAA,EAAA,CACD;AAGK,QAAAC,IAAiBT,EAAQ,MACtB;AAAA,uBACYnD,EAAW,OAAO;AAAA,gBACzBwB,IAAsB,KAAKgB,CAAgB;AAAA;AAAA,UAGtD,CAACA,CAAgB,CAAC,GAEfqB,IAAgB;AAAA,oBACJ7D,EAAW,OAAO;AAAA,yBACbwB,IAAsB,EAAE,6BAA6BA,IAAsB,EAAE;AAAA;AAAA,OAI9FsC,IAAgBX;AAAA,IACpB,OAAO;AAAA,MACL,GAAGvB;AAAAA,MACH,GAAGO;AAAA,IAAA;AAAA,IAEL,CAACA,CAAO;AAAA,EAAA;AAGV,SAEI4B,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,IAAAC,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ,GAAGf,CAAe,IAAIE,CAAyB,IAAIQ,CAAc,IAAIC,CAAa;AAAA,QAC5F;AAAA,MAAA;AAAA,IACF;AAAA,IACAI,gBAAAA,EAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAW,iBAAiBlE,EAAW,OAAO;AAAA,QAC9C,QAAAkC;AAAA,QACA,UAAAH;AAAA,QACA,OAAA/C;AAAA,QACA,SAAS8E;AAAA,QACT,SAASb;AAAA,MAAA;AAAA,IACX;AAAA,EACF,EAAA,CAAA;AAEJ;ACpOA1B,EAAO,OAAO,EAAE,QAAA/B,EAAA,CAAQ;AAOxB,MAAMoC,KAAqE;AAAA,EACzE,GAAGjD;AACL;AAYO,SAASwF,GAAc;AAAA,EAC5B,cAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,UAAAtC;AAAA,EACA,aAAAjD;AAAA,EACA,SAAAqD;AAAA,EACA,OAAOF;AAAA,EACP,QAAAC,IAAS;AACX,GAAoC;AACnB,EAAAI,EAAU;AACzB,QAAM,CAACvD,GAAQwD,CAAS,IAAInD,EAA0D,GAChFsD,IAAYL,KACZiC,IAAqBjC,EAAqB,EAAE,MAAM,IAAI,YAAY,GAAG,GACrEM,IAAYN,EAAmD,IAAI,GAEnEY,IAAuBsB;AAAA,IAC3B,CAACC,GAAgDhF,MAAmB;;AAClE,MAAAmD,EAAU,UAAU6B,GACpB9B,EAAU,UAAUlD,GAEVgF,EAAA,SAASJ,EAAa,IAAI,GAEpC7B,EAAUiC,CAAS,IAEnBhF,KAAAA,KAAAA,IAAAA,EAAO,UAAU,eAAjBA,gBAAAA,EAA6B,uBAA7BA,gBAAAA,EAAiD,0BAAjDA,QAAAA,EAAAA,KAAAA,GAAyE;AAAA,QACvE,yBAAyB;AAAA,QACzB,oBAAoB;AAAA,QACpB,sBAAsB;AAAA,MAAA,KAExBA,KAAAA,KAAAA,IAAAA,EAAO,UAAU,eAAjBA,gBAAAA,EAA6B,uBAA7BA,gBAAAA,EAAiD,0BAAjDA,QAAAA,EAAAA,KAAAA,GAAyE;AAAA,QACvE,yBAAyB;AAAA,QACzB,oBAAoB;AAAA,QACpB,sBAAsB;AAAA,MAAA;AAAA,IAE1B;AAAA,IACA,CAAC4E,EAAa,IAAI;AAAA,EAAA;AAGpB,EAAA/E,EAAU,MAAM;;AACd,QAAKsD,EAAU,YAEX,CAACyB,EAAa,cAAcA,EAAa,aAAa,QAAO9E,IAAAgF,EAAmB,YAAnB,gBAAAhF,EAA4B,UAAU,IAAG;AAClG,YAAAmF,IAAQ9B,EAAU,QAAQ,SAAS;AAEzC,MAAI8B,MAEEtC,KAAA,QAAAA,EAAS,YACD1B,IAAAkC,EAAA,YAAA,QAAAlC,EAAS,SAAS2D,EAAa,SAEzCzB,EAAU,QAAQ,gBACRA,EAAA,QAAQ,aAAa,QAAQ;AAAA,QACrC;AAAA,UACE,OAAO8B,EAAM,kBAAkB;AAAA,UAC/B,MAAML,EAAa;AAAA,QACrB;AAAA,MAAA,CACD,GACDzB,EAAU,QAAQ;IAGxB;AAAA,EACC,GAAA,CAACyB,GAAczB,EAAU,OAAO,CAAC;AAE9B,QAAA,EAAE,OAAA3D,MAAUJ,EAAS,EAAE,WAAA8D,GAAW,aAAA5D,GAAa,QAAAC,GAAQ,OAAOkD,EAAA,CAAgB,GAE9E6B,IAAgBX,EAAQ,OACrB,EAAE,GAAGvB,IAAgB,GAAIO,KAAoB,CAAI,EAAA,IACvD,CAACA,CAAO,CAAC;AAEZ,SAEI8B,gBAAAA,MAAAD,EAAAA,UAAA,EAAA,UAAAC,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,QAAAhC;AAAA,MACA,UAAU,CAACwC,GAAOC,MAAS;AACzB,QAAAL,EAAmB,UAAU,EAAE,MAAMI,KAAS,IAAI,YAAYC,EAAK,aACnEN,EAAqB,EAAE,GAAGC,EAAmB,WAAWK,CAAI;AAAA,MAC9D;AAAA,MACA,UAAA5C;AAAA,MACA,OAAA/C;AAAA,MACA,SAAS8E;AAAA,MACT,SAASb;AAAA,IAAA;AAAA,EAEb,EAAA,CAAA;AAEJ;ACzGA1B,EAAO,OAAO,EAAE,QAAA/B,EAAA,CAAQ;AAOxB,MAAMoC,KAAyE;AAAA,EAC7E,GAAGjD;AAAA,EACH,UAAU;AAAA,EACV,aAAa;AAAA,IACX,oCAAoC;AAAA,EACtC;AAAA,EACA,kBAAkB;AAAA,EAClB,qBAAqB;AACvB;AAYO,SAASiG,GAAkB;AAAA,EAChC,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAA/C;AAAA,EACA,aAAAjD;AAAA,EACA,SAAAqD;AAAA,EACA,OAAOF;AAAA,EACP,QAAAC,IAAS;AACX,GAAoC;AACnB,EAAAI,EAAU;AACzB,QAAM,CAACvD,GAAQwD,CAAS,IAAInD,EAAuC,GAE7DsD,IAAYL,KAEZ,EAAE,OAAArD,MAAUJ,EAAS,EAAE,WAAA8D,GAAW,aAAA5D,GAAa,QAAAC,GAAQ,OAAOkD,EAAA,CAAgB,GAE9E6B,IAAgBX,EAAQ,OACrB,EAAE,GAAGvB,IAAgB,GAAIO,KAAoB,CAAI,EAAA,IACvD,CAACA,CAAO,CAAC;AAEZ,SAEI8B,gBAAAA,MAAAD,EAAAA,UAAA,EAAA,UAAAC,gBAAAA,EAAA;AAAA,IAACc;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAAhD;AAAA,MACA,OAAA/C;AAAA,MACA,UAAA6F;AAAA,MACA,UAAAC;AAAA,MACA,QAAA5C;AAAA,MACA,SAAS4B;AAAA,MACT,SAASvB;AAAA,IAAA;AAAA,EAEb,EAAA,CAAA;AAEJ;ACtEY,IAAAyC,uBAAAA,OAEVA,EAAA,eAAe,gBAFLA,IAAAA,MAAA,CAAA,CAAA;ACiBL,SAASC,GAAepG,GAA4B;AACzD,QAAM,EAAE,eAAAqG,GAAe,eAAAC,IAAgB,CAAC,GAAG,WAAAC,MAAcvG,GAEnDwG,IAAmB,OAAO,YAAYH,EAAc,QAAS,CAAA,GAE7DI,IAAsC,CAAA;AAE5C,SAAAH,KAAA,QAAAA,EAAe,QAAQ,CAAgBI,MAAA;AACrC,UAAMC,IAAUD,EAAa;AAG7B,IAFkBA,EAAa,UAErB,QAAQ,CAAYE,MAAA;AAC5B,cAAQA,EAAS,MAAM;AAAA,QACrB,KAAKT,GAAa,cAAc;AACrB,UAAAS,EAAA,MAAM,QAAQ,CAAcC,MAAA;AAS/B,gBAAAC,IARkB,OAAO,KAAKN,CAAgB,EAAE,IAAI,CAASO,OAAA;AAAA,cAC/D,UAAUA;AAAA,cACV,MAAAA;AAAA,cACA,QAAQP,EAAiBO,CAAI;AAAA,YAC7B,EAAA,EAIyC,OAAO,CAAcC,MACvDA,EAAW,KAAK,WAAWJ,EAAS,QAAQ,CACpD;AAEwB,YAAAE,IAAAA,EAAuB,IAAI,CAAeE,OAAA;AAAA,cACjE,GAAGA;AAAA,cACH,MAAMA,EAAW,KAAK,UAAUJ,EAAS,SAAS,MAAM;AAAA,YACxD,EAAA,GAIiBE,EAAuB,OAAO,CAAcE,MACtDH,EAAW,KAAKG,EAAW,IAAI,CACvC,EAIU,QAAQ,CAAcA,MAAA;AAC/B,oBAAMD,IAAOC,EAAW,UAClBC,IAASD,EAAW,QACpBE,IAAQD,EAAO;AAErB,cAAAN,EAAQ,QAAQ,CAAUQ,MAAA;AACxB,sBAAMC,IAAa;AAAA,kBACjB,OAAAF;AAAA,kBACA,SAAS,CAACD,CAAM;AAAA,kBAChB,SAASE,EAAO;AAAA,kBAChB,MAAMA,EAAO;AAAA,kBACb,MAAAJ;AAAA,gBAAA;AAGF,gBAAAN,EAAO,KAAK;AAAA,kBACV,OAAAS;AAAA,kBACA,SAAS;AAAA,oBACP,IAAIX;AAAA,oBACJ,OAAOY,EAAO;AAAA,oBACd,WAAW,CAACC,CAAU;AAAA,kBACxB;AAAA,gBAAA,CACD;AAAA,cAAA,CACF;AAAA,YAAA,CACF;AAAA,UAAA,CACF;AACD;AAAA,QACF;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAAA,IAGIX;AACT;AC/EO,MAAMY,IAAN,MAAMA,EAAc;AAAA,EAGzB,OAAO,IAAIvB,GAAyB;AAClC,IAAAuB,EAAc,OAAOvB;AAAA,EACvB;AAAA,EAEA,OAAO,MAAyB;AAC9B,WAAOuB,EAAc;AAAA,EACvB;AACF;AATEC,EADWD,GACJ,QAA0B,CAAA;AAD5B,IAAME,IAANF;ACLP,eAAsBG,GAAgB5B,GAA6D;AAC3F,QAAA6B,IAAgBF,EAAc,OAC9B,EAAE,wBAAAG,EAAuB,IAAID,EAAc,mBAAmB,IAAIA,EAAc,wBAAwB;AAEvG,SADc,MAAMA,EAAc,aAAa,OAAOC,GAAwB9B,CAAK;AAE5F;AAEO,SAAS+B,GAAoBC,GAAwC;AACpE,QAAAvB,wBAA2D;AAE9C,SAAAwB,EAAA;AAAA,IACjB,eAAAxB;AAAA,IACA,YAAY;AAAA,IACZ,UAAUuB,EAAa;AAAA,IACvB,YAAYE,EAAU,WAAW;AAAA,EAAA,CAClC,GAEMzB;AACT;AAEA,SAASwB,EAAmB7H,GAKzB;AACD,UAAQA,EAAM,YAAY;AAAA,IACxB,KAAK8H,EAAU,WAAW,QAAQ;AAChC,MAAAC,GAAc/H,CAAK;AACnB;AAAA,IACF;AAAA,IACA,KAAK8H,EAAU,WAAW,OAAO;AAC/B,MAAAE,GAAahI,CAAK;AAClB;AAAA,IACF;AAAA,IACA;AACE,MAAAiI,GAAiBjI,CAAK;AAAA,EAE1B;AACF;AAEA,SAAS+H,GAAc/H,GAKpB;AACK,EAAAA,EAAA,SAAS,QAAQ,CAASkI,MAAA;;AAC9B,QAAIC,IAAYnI,EAAM;AAEtB,IAAIkI,EAAM,WACIC,IAAAnI,EAAM,aAAa,GAAGA,EAAM,UAAU,IAAIkI,EAAM,OAAO,IAAI,KAAKA,EAAM,OAAO,MAEzFlI,EAAM,cAAc,IAAImI,GAAWD,EAAM,MAAM,IAG9BL,EAAA;AAAA,MACjB,eAAe7H,EAAM;AAAA,MACrB,YAAYmI;AAAA,MACZ,UAAUD,EAAM;AAAA,MAChB,cAAYzH,IAAAyH,KAAA,gBAAAA,EAAO,WAAP,gBAAAzH,EAAe,SAAQT,EAAM;AAAA,IAAA,CAC1C;AAAA,EAAA,CACF;AACH;AAEA,SAASgI,GAAahI,GAKnB;AACD,MAAIoI,IAAM;AACJ,EAAApI,EAAA,SAAS,QAAQ,CAASkI,MAAA;AACxB,UAAAC,IAAYnI,EAAM,aAAa,GAAGA,EAAM,UAAU,IAAIoI,CAAG,KAAK,GAAGA,CAAG;AAE1E,IAAApI,EAAM,cAAc,IAAImI,GAAWD,EAAM,MAAM,GAExCE,KAAA,GAEYP,EAAA;AAAA,MACjB,eAAe7H,EAAM;AAAA,MACrB,YAAYmI;AAAA,MACZ,UAAUD,EAAM;AAAA,MAChB,YAAYA,EAAM,OAAO;AAAA,IAAA,CAC1B;AAAA,EAAA,CACF;AACH;AAEA,SAASD,GAAiBjI,GAKvB;AACD,QAAMkI,IAAQlI,EAAM,SAAS,IAAI,GAAG;AAEpC,MAAIkI,GAAO;AACT,UAAMC,IAAYnI,EAAM,aAAa,GAAGA,EAAM,UAAU,IAAIkI,EAAM,OAAO,IAAI,KAAKA,KAAA,gBAAAA,EAAO,OAAO;AAEhG,IAAAlI,EAAM,cAAc,IAAImI,GAAWD,EAAM,MAAM;AAAA,EACjD;AACF;ACjGO,SAASG,GAAiB;AAAA,EAC/B,WAAAvE;AAAA,EACA,eAAAwC;AACF,GAGS;AACP,EAAA9F,EAAU,MACWG,EAAO,UAAU,yBAAyB,QAAQ;AAAA,IACnE,mBAAmB,OAAMiF,MAAS;;AAC1B,YAAAgC,IAAe,MAAMJ,GAAgB5B,CAAK,GAC1CS,IAAgBsB,GAAoBC,CAAY,GAEhDrB,KAAY9F,IAAAqD,KAAA,gBAAAA,EAAW,YAAX,gBAAArD,EAAoB,WAAW,GAAG,CAACmE,GAAG,EAAE,SAAA0D,GAAS,MAAAvB,GAAM,OAAAG,GAAO,MAAApB,EAAA,MAAW;AACzF,QAAAwC,EAAQ,EAAE,MAAAvB,GAAM,OAAAG,GAAO,MAAApB,EAAM,CAAA;AAAA,MAAA;AAG/B,aAAKS,IAIE;AAAA,QACL,QAHaH,GAAY,EAAE,eAAAC,GAAe,eAAAC,GAAe,WAAAC,GAAW;AAAA,QAIpE,SAAS,MAAM;AAAA;AAAA,MAAA,IAND;AAAA,IAQlB;AAAA,EAAA,CACD,EAEiB,SACjB,CAACD,GAAexC,CAAS,CAAC;AAC/B;ACxBO,MAAMyE,KAA+B,CAAC,EAAE,WAAAzE,GAAW,WAAA0E,QAAgB;AACxE,QAAM,CAACtB,GAAOuB,CAAQ,IAAIlI,EAAwB,GAE5CmI,IAAepE;AAAA,IACnB,MACE,OAAOqE,GAA6D5B,GAAe6B,MAA6B;;AACxG,YAAAhD,KAAQnF,IAAAqD,KAAA,gBAAAA,EAAW,YAAX,gBAAArD,EAAoB;AAE9B,UAAA,CAACmF,KAAS,CAACmB;AACb,eAAO0B,EAAS,MAAS;AAGrB,YAAAb,IAAe,MAAMJ,GAAgB5B,CAAK,GAE1CsB,KAAQtF,IADQ+F,GAAoBC,CAAY,EAC1B,IAAIb,CAAI,MAAtB,gBAAAnF,EAAyB;AAEvC,MAAIsF,MACFuB,EAASvB,CAAK,GAEV0B,OACS7G,IAAA+B,KAAA,gBAAAA,EAAA,YAAA,QAAA/B,EAAS,mBAAmBmF,EAAM;AAAA,IAGnD;AAAA,IACF,CAAC;AAAA,EAAA;AAGH,EAAA1G,EAAU,MAAM;AACd,QAAI,yBAAyB,QAAQ;AAC7B,YAAAqI,IAAS,oBAAoB,MAAM;AACvC,QAAAH,EAAa5E,GAAW0E,KAAA,gBAAAA,EAAW,MAAMA,KAAA,gBAAAA,EAAW,cAAc;AAAA,MAAA,CACnE;AACM,aAAA,MAAM,mBAAmBK,CAAM;AAAA,IAAA,OAGnC;AACG,YAAAA,IAAS,WAAW,MAAM;AAC9B,QAAAH,EAAa5E,GAAW0E,KAAA,gBAAAA,EAAW,MAAMA,KAAA,gBAAAA,EAAW,cAAc;AAAA,SACjE,GAAG;AACC,aAAA,MAAM,aAAaK,CAAM;AAAA,IAClC;AAAA,EAAA,GACC,CAACL,KAAA,gBAAAA,EAAW,MAAMA,KAAA,gBAAAA,EAAW,gBAAgB1E,GAAW4E,CAAY,CAAC,GAExElI,EAAU,MAAM;;AACd,QAAI,CAAC0G;AAAO;AAEN,UAAA4B,KAAcrI,IAAAqD,KAAA,gBAAAA,EAAW,YAAX,gBAAArD,EAAoB,4BAA4B;AAAA,MAClE;AAAA;AAAA,QAEE,OAAO,EAAE,GAAGyG,GAAO,aAAa,EAAE;AAAA,QAClC,SAAS;AAAA,UACP,aAAa;AAAA,UACb,WAAWsB,KAAA,gBAAAA,EAAW;AAAA,QACxB;AAAA,MACF;AAAA,IAAA;AAGK,WAAA,MAAMM,KAAA,gBAAAA,EAAa;AAAA,KACzB,CAAC5B,GAAOpD,GAAW0E,KAAA,gBAAAA,EAAW,SAAS,CAAC;AAC7C,GC9DaO,KAAoBC,GAA0C;AAAA,EACzE,SAAS,CAAC;AAAA,EACV,YAAY,MAAM;AAAA;AAAA,EAClB,QAAQ;AAAA,EACR,WAAW,CAACC,MAAgD;AAAA;AAAA,EAC5D,sBAAsB,CAACC,MAAsD;AAAA;AAC/E,CAAC;AAEM,SAASC,GAA0B;AAAA,EACxC,UAAAC;AACF,GAAmF;AACjF,QAAM,CAACC,GAASC,CAAU,IAAI/I,EAA2B,CAAE,CAAA,GACrD,CAACgJ,GAAcC,CAAe,IAAIjJ,EAA8C,IAAI,GAEpFkJ,IAAuB/D;AAAA,IAC3B,CAACgE,MAAqD;AACpD,MAAAH,KAAA,QAAAA,EAAc,YAAYG,IAC1BH,KAAA,QAAAA,EAAc;AAAA,IAChB;AAAA,IACA,CAACA,CAAY;AAAA,EAAA;AAIb,SAAAnE,gBAAAA,EAAA;AAAA,IAAC2D,GAAkB;AAAA,IAAlB;AAAA,MACC,OAAO;AAAA,QACL,SAAAM;AAAA,QACA,YAAAC;AAAA,QACA,QAAQC;AAAA,QACR,WAAWC;AAAA,QACX,sBAAAC;AAAA,MACF;AAAA,MAEC,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,SAASO,KAAmD;AACjE,SAAOC,GAAWb,EAAiB;AACrC;AC3CO,MAAMc,KAA2B,CAAC,EAAE,WAAAhG,QAAsB;AACzD,QAAA,EAAE,YAAAyF,MAAeK;AAEvB,EAAAnJ,EAAU,MAAM;AACV,QAAAqI;AAEE,UAAAiB,IAAgB,WAAW,MAAM;;AAC/B,YAAA5J,KAASO,IAAAoD,EAAU,YAAV,gBAAApD,EAAmB;AAElC,MAAKP,MAEL2I,IAAS3I,EAAO,mBAAmB,CAAC,CAAC6J,CAAQ,MAAM;AACjD,cAAMV,IAAUnJ,EAAO,gBAAgB,EAAE,UAAA6J,EAAU,CAAA;AACnD,QAAAT,EAAWD,CAAO;AAAA,MAAA,CACnB;AAAA,OACA,GAAG;AAEN,WAAO,MAAM;AACX,mBAAaS,CAAa,GAC1BjB,KAAA,QAAAA,EAAQ;AAAA,IAAQ;AAAA,EAClB,GACC,CAAChF,CAAS,CAAC;AAChB;AC3BA,IAAImG,KAAyB;AAEtB,SAASC,GAAgBC,GAAmB;AAC7C,MAAAF;AAAwB;AAE5B,QAAMvF,IAAS;AAAA,IACb,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,SAAS,CAACyF,CAAY;AAAA,EAAA;AAGC,EAAAF,KAAA,IAKzBG,GAAa,sBAAsB,EAAE,GAAG1F,EAAQ,CAAA;AAClD;AAEa,MAAA2F,KAAgB,CAACC,MACrBC,GAAI,MAAM,UAAUD,CAAE,EAAE,EAAE,YCnBtBE,KAAuB,CAACvK,MAAgB;AAC7C,QAAA,EAAE,cAAAkK,GAAc,YAAA/I,EAAe,IAAAnB;AAErC,EAAAQ,EAAU,MAAM;AACd,IAAI0J,KAAA,QAAAA,EAAc,UACAD,GAAA;AAAA;AAAA,MAEd,WAAW,CAACG,GAAcjJ,EAAW,SAAU,CAAA,CAAC;AAAA,MAChD,GAAG+I;AAAA,IAAA,CACJ;AAAA,EAEF,GAAA,CAACA,KAAA,gBAAAA,EAAc,QAAQ/I,CAAU,CAAC;AACvC;ACDAuB,EAAO,OAAO,EAAE,QAAA/B,EAAA,CAAQ;AAOxB,MAAM2C,KAA8D;AAAA,EAClE,GAAGxD;AAAA,EACH,SAAS;AACX,GAmBa0K,KAAa,SAAuBxK,GAAwC;AACjF,QAAA;AAAA,IACJ,cAAAyK;AAAA,IACA,cAAAP;AAAA,IACA,eAAA5D;AAAA,IACA,aAAArG;AAAA,IACA,sBAAAyK;AAAA,IACA,WAAAlC;AAAA,IACA,OAAOpF;AAAA,IACP,SAASuH;AAAA,IACT,iBAAAC,IAAkB;AAAA,IAClB,cAAAC;AAAA,EACE,IAAA7K,GACEW,IAAS8C,KACT,CAACtC,CAAU,IAAIZ,EAAS,MAAM,GAC9B,EAAE,QAAAL,GAAQ,WAAAwD,EAAU,IAAIiG,GAAqB,GAE7CmB,IAAatH,EAA8B,IAAI,GAE/CK,IAAYL,KACZiC,IAAqBjC,EAAqB,EAAE,MAAM,IAAI,YAAY,GAAG,GAErEM,IAAYN,EAAmD,IAAI,GACnEuH,IAAgBvH,EAAsB,IAAI,GAE1CwH,IAA2BtF;AAAA,IAC/B,CAACuF,MAAiB;;AACV,YAAAC,IAAQD,EAAK,MAAM;AAAA,CAAI,GACvBrF,KAAQnF,IAAAqD,EAAU,YAAV,gBAAArD,EAAmB;AACjC,UAAImF,GAAO;AACT,SAAAhE,IAAAkC,EAAU,YAAV,QAAAlC,EAAmB,gBACnBgE,EAAM,SAAS,EAAE;AACjB,YAAI3B,IAAQ;AACE,QAAA8G,EAAA,UAAU,OAAO,YAAY,MAAM;;AAC3C,UAAA9G,IAAQiH,EAAM,UACZvK,OACQF,IAAAqD,EAAA,YAAA,QAAArD,EAAS,aAAa,WAAW;AAAA,YACzC;AAAA,cACE,OAAO,IAAIE,EAAO,MAAMsD,IAAQ,GAAG,GAAGA,IAAQ,GAAG,CAAC;AAAA,cAClD,MAAMiH,EAAMjH,CAAK,IAAI;AAAA;AAAA,YACvB;AAAA,UAAA,KAGJA,OAEI8G,EAAc,YAChB,cAAcA,EAAc,OAAO,GACpBF,KAAA,QAAAA;AAAA,WAGlB,GAAG,IACN9I,IAAA+B,EAAU,YAAV,QAAA/B,EAAmB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAACpB,CAAM;AAAA,EAAA;AAGT,EAAAH,EAAU,MACD,MAAM;AACX,IAAIuK,EAAc,WAChB,cAAcA,EAAc,OAAO;AAAA,EACrC,GAED,CAAE,CAAA;AAEI,WAAA3G,EAAqBlE,GAA6CS,GAAgB;AACzF,IAAAmD,EAAU,UAAU5D,GACpB2D,EAAU,UAAUlD,GAEpBT,EAAO,SAASuK,EAAa,IAAI,GAEjC/G,EAAUxD,CAAM,GAGhB,WAAW,MAAM;;AACX,OAAAO,IAAAqK,EAAW,YAAX,QAAArK,EAAoB,UACXqK,EAAA,QAAQ,MAAM,UAAU;AAAA,OAEpC,EAAE;AAAA,EACP;AAEA,EAAAtK,EAAU,MAAM;;AACd,QAAIsD,EAAU,YACR,CAAC2G,EAAa,cAAcA,EAAa,aAAa,QAAOhK,IAAAgF,EAAmB,YAAnB,gBAAAhF,EAA4B,UAAU,IAAG;AAGlG,YAAAmF,IAAQ9B,EAAU,QAAQ,SAAS;AACzC,MAAI8B,MAEQ9B,EAAA,QAAQ,aAAa,QAAQ;AAAA,QACrC;AAAA,UACE,OAAO8B,EAAM,kBAAkB;AAAA,UAC/B,MAAMgF,IAAkB,KAAKH,EAAa;AAAA,QAC5C;AAAA,MAAA,CACD,GAEGG,KACFI,EAAyBP,EAAa,IAAI;AAAA,IAGhD;AAAA,EAED,GAAA,CAACO,GAA0BP,GAAcG,CAAe,CAAC,GAElDL,GAAA,EAAE,cAAAL,GAAc,YAAA/I,EAAA,CAAY,GAExBkH,GAAA,EAAE,WAAAvE,GAAW,eAAAwC,EAAA,CAAe;AAEpC,QAAA,EAAE,OAAAnG,MAAUJ,EAAS,EAAE,WAAA8D,GAAW,aAAA5D,GAAa,QAAAC,GAAQ,OAAOkD,EAAA,CAAgB;AAExE,EAAAyG,GAAA,EAAE,WAAAhG,GAAW,GAEX0E,GAAA,EAAE,WAAAzE,GAAW,WAAA0E,EAAA,CAAW;AAEtC,QAAMvD,IAAgBX;AAAA,IACpB,OAAO;AAAA,MACL,GAAGhB;AAAA,MACH,GAAGqH;AAAA,IAAA;AAAA,IAEL,CAACA,CAAW;AAAA,EAAA;AAGd,SACGvF,gBAAAA,EAAAA,IAAA,OAAA,EAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,SAAS,EAAK,GAAA,KAAK0F,GAC9D,UAAA1F,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UAAU,CAACQ,GAAOC,MAAS;AACzB,QAAAL,EAAmB,UAAU,EAAE,MAAMI,KAAS,IAAI,YAAYC,EAAK,aACnE4E,EAAqB,EAAE,GAAGjF,EAAmB,WAAWK,CAAI;AAAA,MAC9D;AAAA,MACA,UAAS;AAAA,MACT,OAAA3F;AAAA,MACA,SAAS8E;AAAA,MACT,MAAMmF,GAAcjJ,CAAU;AAAA,MAC9B,SAASiD;AAAA,IAAA;AAAA,EAEb,EAAA,CAAA;AAEJ;","x_google_ignoreList":[0,1,2]}