@typespec/playground 0.1.0-alpha.4-dev.15 → 0.1.0-alpha.4-dev.16

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.
@@ -7,7 +7,7 @@ import { g as getMarkerLocation, c as createBrowserHost, r as registerMonacoLang
7
7
  import { Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Link, tokens, Toolbar, Tooltip, ToolbarButton, Dialog, DialogTrigger, DialogSurface, DialogBody, mergeClasses, useToastController, Toast, ToastTitle, ToastBody, Toaster, FluentProvider, webLightTheme } from '@fluentui/react-components';
8
8
  import { Save16Regular, Broom16Filled, Settings24Regular, Bug16Regular } from '@fluentui/react-icons';
9
9
  import { css } from '@emotion/react';
10
- import { TypeSpecProgramViewer } from '@typespec/html-program-viewer';
10
+ import { ColorProvider, TypeSpecProgramViewer } from '@typespec/html-program-viewer';
11
11
  import { createRoot } from 'react-dom/client';
12
12
  import '@typespec/compiler';
13
13
  import 'vscode-languageserver-textdocument';
@@ -448,7 +448,7 @@ const OutputContent = ({ viewSelection, program, viewers, editorOptions, }) => {
448
448
  return (jsx("div", { css: {
449
449
  height: "100%",
450
450
  overflow: "scroll",
451
- }, children: program && jsx(TypeSpecProgramViewer, { program: program }) }));
451
+ }, children: program && jsx(TypeGraphViewer, { program: program }) }));
452
452
  }
453
453
  };
454
454
  const ErrorTabLabel = ({ diagnostics }) => {
@@ -461,6 +461,19 @@ const ErrorTabCountStyles = css({
461
461
  padding: "0 5px",
462
462
  borderRadius: "20px",
463
463
  });
464
+ const TypeGraphViewer = ({ program }) => {
465
+ return (jsx(ColorProvider, { colors: TypeGraphColors, children: jsx(TypeSpecProgramViewer, { program: program }) }));
466
+ };
467
+ const TypeGraphColors = {
468
+ background: tokens.colorNeutralBackground1,
469
+ typeKind: tokens.colorPaletteBerryForeground2,
470
+ typeName: tokens.colorNeutralForeground2,
471
+ dataKey: tokens.colorNeutralForeground2,
472
+ ref: tokens.colorBrandForeground1,
473
+ literal: tokens.colorPaletteLightGreenForeground2,
474
+ indentationGuide: tokens.colorNeutralForeground4,
475
+ property: tokens.colorPaletteMarigoldForeground2,
476
+ };
464
477
 
465
478
  function Pane({ children, ...props }) {
466
479
  return jsx("div", { ...props, children: children });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/editor-command-bar.tsx","../../../src/react/editor.tsx","../../../src/react/footer.tsx","../../../src/react/hooks.ts","../../../src/react/diagnostic-list.tsx","../../../src/react/error-tab.tsx","../../../src/react/file-output.tsx","../../../src/react/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedEmitter}>\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedSampleName ?? \"\"}>\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\n\nexport interface EmitterOptionsFormProps {\n library: PlaygroundTspLibrary;\n options: EmitterOptions;\n optionsChanged: (options: EmitterOptions) => void;\n}\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.definition?.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div>\n {entries.map(([key, value]) => {\n return (\n <div key={key} css={{ margin: \"16px 0\" }}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ntype JsonSchemaProperty = {\n type: \"string\" | \"boolean\" | \"number\";\n description?: string;\n enum?: string[];\n default?: any;\n};\n\ntype JsonSchemaPropertyInputProps = {\n emitterOptions: Record<string, unknown>;\n name: string;\n prop: JsonSchemaProperty;\n onChange: (data: { name: string; value: unknown }) => void;\n};\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return <Switch label={prettyName} checked={value} onChange={handleChange} />;\n case \"string\":\n default:\n return (\n <div>\n <div>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n </div>\n <div>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: Record<string, PlaygroundTspLibrary>;\n linterRuleSet: LinterRuleSet;\n onLinterRuleSetChanged: (options: LinterRuleSet) => void;\n}\n\nexport const LinterForm: FunctionComponent<LinterFormProps> = ({\n libraries,\n linterRuleSet,\n onLinterRuleSetChanged,\n}) => {\n const rulesets = Object.values(libraries).flatMap((lib) => {\n return Object.keys(lib.definition?.linter?.ruleSets ?? {}).map(\n (x) => `${lib.name}/${x}`\n ) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { CompilerOptions, LinterRuleSet } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport type CompilerSettingsProps = {\n host: BrowserHost;\n selectedEmitter: string;\n options: CompilerOptions;\n onOptionsChanged: (options: CompilerOptions) => void;\n};\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n host,\n options,\n onOptionsChanged,\n}) => {\n const emitterOptionsChanged = useCallback(\n (emitterOptions: EmitterOptions) => {\n onOptionsChanged({\n ...options,\n options: emitterOptions,\n });\n },\n [options]\n );\n const library = host.libraries[selectedEmitter];\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div css={{ padding: 10 }}>\n <h2>Settings</h2>\n <>Emitter: {selectedEmitter}</>\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <h3>Linter</h3>\n <LinterForm\n libraries={host.libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n","import {\n Dialog,\n DialogBody,\n DialogSurface,\n DialogTrigger,\n Link,\n Toolbar,\n ToolbarButton,\n Tooltip,\n tokens,\n} from \"@fluentui/react-components\";\nimport {\n Broom16Filled,\n Bug16Regular,\n Save16Regular,\n Settings24Regular,\n} from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EmitterDropdown } from \"./emitter-dropdown.js\";\nimport { SamplesDropdown } from \"./samples-dropdown.js\";\nimport { CompilerSettings } from \"./settings/compiler-settings.js\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n newIssue?: () => Promise<void> | void;\n host: BrowserHost;\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n\n samples?: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\nexport const EditorCommandBar: FunctionComponent<EditorCommandBarProps> = ({\n documentationUrl,\n saveCode,\n formatCode,\n newIssue,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions: emitterOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = newIssue ? <FileBugButton onClick={newIssue} /> : undefined;\n\n const emitters = useMemo(\n () =>\n Object.values(host.libraries)\n .filter((x) => x.isEmitter)\n .map((x) => x.name),\n [host.libraries]\n );\n\n return (\n <div css={{ borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={emitterOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogBody>\n </DialogSurface>\n </Dialog>\n {documentation}\n <div css={{ flex: \"1\" }}></div>\n {bugButton}\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n >\n File bug\n </ToolbarButton>\n </Tooltip>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n onMount?: (data: OnMountData) => void;\n}\n\nexport interface OnMountData {\n editor: editor.IStandaloneCodeEditor;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions, onMount }) => {\n const editorContainerRef = useRef(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n\n useEffect(() => {\n editorRef.current = editor.create(editorContainerRef.current!, {\n model,\n automaticLayout: true,\n ...options,\n });\n onMount?.({ editor: editorRef.current });\n }, []);\n\n useEffect(() => {\n editor.setTheme(options.theme ?? \"typespec\");\n }, [options.theme]);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\nimport { BrowserHost } from \"../types.js\";\n\nexport interface FooterProps {\n host: BrowserHost;\n}\nexport const Footer: FunctionComponent<FooterProps> = ({ host }) => {\n const { MANIFEST } = host.compiler;\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: tokens.colorNeutralForeground2 }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: tokens.colorStatusDangerForeground1 });\nconst warningColor = css({ color: tokens.colorStatusWarningForeground1 });\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: `1px solid ${tokens.colorStatusDangerBorder1}`,\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { tokens } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: `1px solid ${tokens.colorNeutralStroke1}` }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <div\n tabIndex={0}\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: `1px solid ${tokens.colorNeutralStroke1}`,\n borderTop: \"none\",\n borderBottom: \"none\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: tokens.colorNeutralBackground5 } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </div>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\n\nexport interface TypeSpecEditorProps extends Omit<EditorProps, \"options\"> {\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = ({\n actions,\n options,\n ...other\n}) => {\n const resolvedOptions: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n ...options,\n };\n return <Editor actions={actions} options={resolvedOptions} {...other}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{\n filename: string;\n value: string;\n editorOptions?: PlaygroundEditorsOptions;\n}> = ({ filename, value, editorOptions }) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n ...editorOptions,\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeSpecProgramViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: tokens.colorStatusDangerBackground3,\n color: tokens.colorNeutralForegroundOnBrand,\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n host={host}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer host={host} />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return <></>;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/editor-command-bar.tsx","../../../src/react/editor.tsx","../../../src/react/footer.tsx","../../../src/react/hooks.ts","../../../src/react/diagnostic-list.tsx","../../../src/react/error-tab.tsx","../../../src/react/file-output.tsx","../../../src/react/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedEmitter}>\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedSampleName ?? \"\"}>\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\n\nexport interface EmitterOptionsFormProps {\n library: PlaygroundTspLibrary;\n options: EmitterOptions;\n optionsChanged: (options: EmitterOptions) => void;\n}\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.definition?.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div>\n {entries.map(([key, value]) => {\n return (\n <div key={key} css={{ margin: \"16px 0\" }}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ntype JsonSchemaProperty = {\n type: \"string\" | \"boolean\" | \"number\";\n description?: string;\n enum?: string[];\n default?: any;\n};\n\ntype JsonSchemaPropertyInputProps = {\n emitterOptions: Record<string, unknown>;\n name: string;\n prop: JsonSchemaProperty;\n onChange: (data: { name: string; value: unknown }) => void;\n};\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return <Switch label={prettyName} checked={value} onChange={handleChange} />;\n case \"string\":\n default:\n return (\n <div>\n <div>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n </div>\n <div>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: Record<string, PlaygroundTspLibrary>;\n linterRuleSet: LinterRuleSet;\n onLinterRuleSetChanged: (options: LinterRuleSet) => void;\n}\n\nexport const LinterForm: FunctionComponent<LinterFormProps> = ({\n libraries,\n linterRuleSet,\n onLinterRuleSetChanged,\n}) => {\n const rulesets = Object.values(libraries).flatMap((lib) => {\n return Object.keys(lib.definition?.linter?.ruleSets ?? {}).map(\n (x) => `${lib.name}/${x}`\n ) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { CompilerOptions, LinterRuleSet } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport type CompilerSettingsProps = {\n host: BrowserHost;\n selectedEmitter: string;\n options: CompilerOptions;\n onOptionsChanged: (options: CompilerOptions) => void;\n};\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n host,\n options,\n onOptionsChanged,\n}) => {\n const emitterOptionsChanged = useCallback(\n (emitterOptions: EmitterOptions) => {\n onOptionsChanged({\n ...options,\n options: emitterOptions,\n });\n },\n [options]\n );\n const library = host.libraries[selectedEmitter];\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div css={{ padding: 10 }}>\n <h2>Settings</h2>\n <>Emitter: {selectedEmitter}</>\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <h3>Linter</h3>\n <LinterForm\n libraries={host.libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n","import {\n Dialog,\n DialogBody,\n DialogSurface,\n DialogTrigger,\n Link,\n Toolbar,\n ToolbarButton,\n Tooltip,\n tokens,\n} from \"@fluentui/react-components\";\nimport {\n Broom16Filled,\n Bug16Regular,\n Save16Regular,\n Settings24Regular,\n} from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EmitterDropdown } from \"./emitter-dropdown.js\";\nimport { SamplesDropdown } from \"./samples-dropdown.js\";\nimport { CompilerSettings } from \"./settings/compiler-settings.js\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n newIssue?: () => Promise<void> | void;\n host: BrowserHost;\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n\n samples?: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\nexport const EditorCommandBar: FunctionComponent<EditorCommandBarProps> = ({\n documentationUrl,\n saveCode,\n formatCode,\n newIssue,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions: emitterOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = newIssue ? <FileBugButton onClick={newIssue} /> : undefined;\n\n const emitters = useMemo(\n () =>\n Object.values(host.libraries)\n .filter((x) => x.isEmitter)\n .map((x) => x.name),\n [host.libraries]\n );\n\n return (\n <div css={{ borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={emitterOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogBody>\n </DialogSurface>\n </Dialog>\n {documentation}\n <div css={{ flex: \"1\" }}></div>\n {bugButton}\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n >\n File bug\n </ToolbarButton>\n </Tooltip>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n onMount?: (data: OnMountData) => void;\n}\n\nexport interface OnMountData {\n editor: editor.IStandaloneCodeEditor;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions, onMount }) => {\n const editorContainerRef = useRef(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n\n useEffect(() => {\n editorRef.current = editor.create(editorContainerRef.current!, {\n model,\n automaticLayout: true,\n ...options,\n });\n onMount?.({ editor: editorRef.current });\n }, []);\n\n useEffect(() => {\n editor.setTheme(options.theme ?? \"typespec\");\n }, [options.theme]);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\nimport { BrowserHost } from \"../types.js\";\n\nexport interface FooterProps {\n host: BrowserHost;\n}\nexport const Footer: FunctionComponent<FooterProps> = ({ host }) => {\n const { MANIFEST } = host.compiler;\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: tokens.colorNeutralForeground2 }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: tokens.colorStatusDangerForeground1 });\nconst warningColor = css({ color: tokens.colorStatusWarningForeground1 });\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: `1px solid ${tokens.colorStatusDangerBorder1}`,\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { tokens } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: `1px solid ${tokens.colorNeutralStroke1}` }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <div\n tabIndex={0}\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: `1px solid ${tokens.colorNeutralStroke1}`,\n borderTop: \"none\",\n borderBottom: \"none\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: tokens.colorNeutralBackground5 } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </div>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\n\nexport interface TypeSpecEditorProps extends Omit<EditorProps, \"options\"> {\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = ({\n actions,\n options,\n ...other\n}) => {\n const resolvedOptions: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n ...options,\n };\n return <Editor actions={actions} options={resolvedOptions} {...other}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{\n filename: string;\n value: string;\n editorOptions?: PlaygroundEditorsOptions;\n}> = ({ filename, value, editorOptions }) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n ...editorOptions,\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { ColorPalette, ColorProvider, TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeGraphViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: tokens.colorStatusDangerBackground3,\n color: tokens.colorNeutralForegroundOnBrand,\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n\ninterface TypeGraphViewerProps {\n program: Program;\n}\nconst TypeGraphViewer = ({ program }: TypeGraphViewerProps) => {\n return (\n <ColorProvider colors={TypeGraphColors}>\n <TypeSpecProgramViewer program={program} />\n </ColorProvider>\n );\n};\n\nconst TypeGraphColors: ColorPalette = {\n background: tokens.colorNeutralBackground1,\n typeKind: tokens.colorPaletteBerryForeground2,\n typeName: tokens.colorNeutralForeground2,\n dataKey: tokens.colorNeutralForeground2,\n ref: tokens.colorBrandForeground1,\n literal: tokens.colorPaletteLightGreenForeground2,\n indentationGuide: tokens.colorNeutralForeground4,\n property: tokens.colorPaletteMarigoldForeground2,\n};\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n host={host}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer host={host} />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return <></>;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":";;;;;;;;;;;;;;;AASO,MAAM,eAAe,GAA4C,CAAC,EACvE,QAAQ,EACR,uBAAuB,EACvB,eAAe,GAChB,KAAI;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;AAC3C,QAAA,OAAOA,GAA2B,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,WAAW,EAAzB,EAAA,WAAW,CAAwB,CAAC;AAC1D,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,GAAQ,KAAI;AACX,QAAA,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAC,EACD,CAAC,uBAAuB,CAAC,CAC1B,CAAC;IACF,QACEC,IAAC,CAAA,MAAM,EAAC,EAAA,SAAS,EAAC,iBAAiB,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAClF,QAAA,EAAA,CAAAD,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAEhB,EACR,OAAO,CACD,EAAA,CAAA,EACT;AACJ,CAAC;;ACtBM,MAAM,eAAe,GAA4C,CAAC,EACvE,OAAO,EACP,kBAAkB,EAClB,0BAA0B,GAC3B,KAAI;AACH,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAClD,QAAA,OAAOA,GAAsB,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,MAAM,EAAf,EAAA,MAAM,CAAmB,CAAC;AAChD,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,GAAQ,KAAI;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,SAAA;AACH,KAAC,EACD,CAAC,0BAA0B,CAAC,CAC7B,CAAC;AACF,IAAA,QACEC,IAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,iBAAiB,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,KAAA,IAAA,IAAlB,kBAAkB,KAAA,KAAA,CAAA,GAAlB,kBAAkB,GAAI,EAAE,EAAA,QAAA,EAAA,CAC3FD,gBAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAEhB,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EACR,OAAO,CAAA,EAAA,CACD,EACT;AACJ,CAAC;;ACfM,MAAM,kBAAkB,GAA+C,CAAC,EAC7E,OAAO,EACP,OAAO,EACP,cAAc,GACf,KAAI;;AACH,IAAA,MAAM,oBAAoB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,OAAO,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC;IAC9E,IAAI,oBAAoB,KAAK,SAAS,EAAE;AACtC,QAAA,OAAOA,6CAAiB,CAAC;AAC1B,KAAA;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAoC,KAAI;AACpD,QAAA,cAAc,CAAC;AACb,YAAA,GAAG,OAAO;AACV,YAAA,CAAC,OAAO,CAAC,IAAI,GAAG;AACd,gBAAA,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBACxB,CAAC,IAAI,GAAG,KAAK;AACd,aAAA;AACF,SAAA,CAAC,CAAC;AACL,KAAC,EACD,CAAC,OAAO,EAAE,cAAc,CAAC,CAC1B,CAAC;AACF,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EACG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;;AAC5B,YAAA,QACEA,GAAe,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EACtC,QAAA,EAAAA,GAAA,CAAC,uBAAuB,EACtB,EAAA,cAAc,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAI,EAAE,EAC3C,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,KAAY,EAClB,QAAQ,EAAE,YAAY,EAAA,CACtB,IANM,GAAG,CAOP,EACN;SACH,CAAC,EACE,CAAA,EACN;AACJ,CAAC,CAAC;AAgBF,MAAM,uBAAuB,GAAoD,CAAC,EAChF,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,KAAI;;AACH,IAAA,MAAM,UAAU,GAAG,OAAO,CACxB,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAC9D,CAAC,IAAI,CAAC,CACP,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,cAAc,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC;AACnD,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAU,EAAE,IAAqE,KAChF,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EACxE,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,SAAS;AACZ,YAAA,OAAOA,GAAC,CAAA,MAAM,EAAC,EAAA,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAI,CAAC;AAC/E,QAAA,KAAK,QAAQ,CAAC;AACd,QAAA;YACE,QACEC,yBACED,GACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,KAAK,EAAC,EAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,YACjC,UAAU,EAAA,CACL,GACJ,EACNA,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EACG,IAAI,CAAC,IAAI,IACRA,IAAC,UAAU,EAAA,EAAC,MAAM,EAAC,YAAY,EAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAC9E,QAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MACfA,IAAC,KAAK,EAAA,EAAS,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAArB,EAAA,CAAC,CAAwB,CACtC,CAAC,EAAA,CACS,KAEbA,GAAA,CAAC,KAAK,EAAC,EAAA,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAI,CAC7D,EAAA,CACG,CACF,EAAA,CAAA,EACN;AACL,KAAA;AACH,CAAC;;AC5GM,MAAM,UAAU,GAAuC,CAAC,EAC7D,SAAS,EACT,aAAa,EACb,sBAAsB,GACvB,KAAI;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;;AACxD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC,GAAG,CAC5D,CAAC,CAAC,KAAK,CAAG,EAAA,GAAG,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CACb,CAAC;AACjB,KAAC,CAAC,CAAC;AACH,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAOA,mDAAyB,CAAC;AAClC,KAAA;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,OAAgB,KAAI;;QAC1D,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;QAE7C,MAAM,eAAe,GAAG,OAAO;AAC7B,cAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC;AACxB,cAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;AAE1C,QAAA,sBAAsB,CAAC;AACrB,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA,CAAC,CAAC;AACL,KAAC,CAAC;IACF,QACEA,0BACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;;YACxB,QACEA,GAAC,CAAA,eAAe,EAEd,EAAA,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,OAAO,CAAC,EACjD,QAAQ,EAAE,YAAY,EAHjB,EAAA,OAAO,CAIZ,EACF;SACH,CAAC,EACD,CAAA,EACH;AACJ,CAAC,CAAC;AAOF,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAmB,KAAI;IAC1E,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,CAAM,EAAE,IAA0B,KAAI;QACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC7B,CAAC;AACF,IAAA,OAAOA,GAAC,CAAA,QAAQ,EAAC,EAAA,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAI,CAAC;AAChF,CAAC;;ACnDM,MAAM,gBAAgB,GAA6C,CAAC,EACzE,eAAe,EACf,IAAI,EACJ,OAAO,EACP,gBAAgB,GACjB,KAAI;;AACH,IAAA,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,cAA8B,KAAI;AACjC,QAAA,gBAAgB,CAAC;AACf,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA,CAAC,CAAC;AACL,KAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAClD,IAAA,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,aAA4B,KAAI;AAC/B,QAAA,gBAAgB,CAAC;AACf,YAAA,GAAG,OAAO;YACV,aAAa;AACd,SAAA,CAAC,CAAC;AACL,KAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;AACF,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAA,QAAA,EAAA,CACvBD,GAAiB,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EACjBC,yCAAY,eAAe,CAAA,EAAA,CAAI,EAC/BD,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,EACf,OAAO,KACNA,GAAC,CAAA,kBAAkB,EACjB,EAAA,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAC9B,cAAc,EAAE,qBAAqB,EACrC,CAAA,CACH,EACDA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAe,EACfA,GAAA,CAAC,UAAU,EACT,EAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,aAAa,EAAE,aAAa,EAC5B,sBAAsB,EAAE,oBAAoB,EAC5C,CAAA,CAAA,EAAA,CACE,EACN;AACJ,CAAC;;ACrBM,MAAM,gBAAgB,GAA6C,CAAC,EACzE,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,uBAAuB,EACvB,eAAe,EAAE,cAAc,EAC/B,uBAAuB,EACvB,OAAO,EACP,kBAAkB,EAClB,0BAA0B,GAC3B,KAAI;IACH,MAAM,aAAa,GAAG,gBAAgB,IACpCA,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EACEA,GAAC,CAAA,IAAI,EAAC,EAAA,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAC,QAAQ,EAAA,QAAA,EAAA,MAAA,EAAA,CAEtC,EACD,CAAA,IACN,SAAS,CAAC;AAEd,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAGA,GAAC,CAAA,aAAa,EAAC,EAAA,OAAO,EAAE,QAAQ,EAAA,CAAI,GAAG,SAAS,CAAC;AAE9E,IAAA,MAAM,QAAQ,GAAG,OAAO,CACtB,MACE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC1B,SAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EACvB,CAAC,IAAI,CAAC,SAAS,CAAC,CACjB,CAAC;AAEF,IAAA,QACEA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,YAAY,EAAE,CAAa,UAAA,EAAA,MAAM,CAAC,mBAAmB,EAAE,EAAE,EAAA,QAAA,EACnEC,KAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,IAAC,OAAO,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,YAAY,EAAC,aAAa,EAAC,SAAS,EAC1D,IAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,aAAa,EAAA,EAAA,YAAA,EAAY,MAAM,EAAC,IAAI,EAAEA,GAAC,CAAA,aAAa,KAAG,EAAE,OAAO,EAAE,QAAe,GAAI,EAC9E,CAAA,EACVA,IAAC,OAAO,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAC,YAAY,EAAC,aAAa,EAAC,SAAS,EAC5D,IAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,aAAa,EAAY,EAAA,YAAA,EAAA,QAAQ,EAAC,IAAI,EAAEA,GAAC,CAAA,aAAa,KAAG,EAAE,OAAO,EAAE,UAAiB,EAAA,CAAI,GAClF,EACT,OAAO,KACNA,GAAA,CAAC,eAAe,EACd,EAAA,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,0BAA0B,EAAE,0BAA0B,EAAA,CACtD,CACH,EACDA,GAAA,CAAC,eAAe,EAAA,EACd,QAAQ,EAAE,QAAQ,EAClB,uBAAuB,EAAE,uBAAuB,EAChD,eAAe,EAAE,eAAe,GAChC,EACFC,IAAA,CAAC,MAAM,EACL,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,aAAa,EACZ,EAAA,QAAA,EAAAA,GAAA,CAAC,aAAa,EAAC,EAAA,IAAI,EAAEA,GAAC,CAAA,iBAAiB,KAAG,EAAI,CAAA,EAAA,CAChC,EAChBA,GAAC,CAAA,aAAa,EACZ,EAAA,QAAA,EAAAA,GAAA,CAAC,UAAU,EACT,EAAA,QAAA,EAAAA,GAAA,CAAC,gBAAgB,EACf,EAAA,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,cAAc,EACvB,gBAAgB,EAAE,uBAAuB,EACzC,CAAA,EAAA,CACS,GACC,CACT,EAAA,CAAA,EACR,aAAa,EACdA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAQ,CAAA,EAC9B,SAAS,CACF,EAAA,CAAA,EAAA,CACN,EACN;AACJ,CAAC,CAAC;AAKF,MAAM,aAAa,GAA0C,CAAC,EAAE,OAAO,EAAE,KAAI;AAC3E,IAAA,QACEA,GAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAC,iBAAiB,EAAC,YAAY,EAAC,aAAa,EAAC,SAAS,EAAA,IAAA,EAAA,QAAA,EACrEA,IAAC,aAAa,EAAA,EACZ,UAAU,EAAC,QAAQ,EACR,YAAA,EAAA,iBAAiB,EAC5B,IAAI,EAAEA,GAAC,CAAA,YAAY,EAAG,EAAA,CAAA,EACtB,OAAO,EAAE,OAAc,EAGT,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CACR,EACV;AACJ,CAAC;;AChHM,MAAM,MAAM,GAAmC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAI;AAC7F,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,IAAA,MAAM,SAAS,GAAG,MAAM,CAAsC,IAAI,CAAC,CAAC;IAEpE,SAAS,CAAC,MAAK;QACb,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAQ,EAAE;YAC7D,KAAK;AACL,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,GAAG,OAAO;AACX,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAG,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;KAC1C,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;;QACb,MAAM,CAAC,QAAQ,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,UAAU,CAAC,CAAC;AAC/C,KAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,MAAK;QACb,MAAM,WAAW,GAAkB,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,EAAE,EAAE;AACnC,YAAA,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,SAAA;AACD,QAAA,OAAO,MAAK;AACV,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1C,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,MAAK;QACb,IAAI,SAAS,CAAC,OAAO,EAAE;AACrB,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,SAAA;AACH,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,EACnC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC1D,GAAG,EAAE,kBAAkB,EAClB,CAAA,EACP;AACJ,CAAC,CAAC;AAEc,SAAA,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAA;IAC3D,OAAO,OAAO,CAAC,MAAK;;QAClB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,OAAO,MAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnF,KAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtB;;AC3DO,MAAM,MAAM,GAAmC,CAAC,EAAE,IAAI,EAAE,KAAI;AACjE,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,IACxBC,KAAC,UAAU,EAAA,EAAC,IAAI,EAAE,8CAA8C,QAAQ,CAAC,EAAE,CAAA,CAAE,aAC3ED,GAAgB,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAChBA,GAAO,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAQ,CAAC,EAAE,EAAA,CAAQ,CACf,EAAA,CAAA,KAEbA,GAAA,CAAAE,QAAA,EAAA,EAAA,CAAK,CACN,CAAC;IACF,QACED,IACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE;AACH,YAAA;AACE,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,QAAQ,EAAE,MAAM;AACjB,aAAA;AACD,YAAA,QAAQ,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE;AAClD,SAAA,EAAA,QAAA,EAAA,CAEA,MAAM,EACPA,IAAA,CAAC,UAAU,EACT,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAA8B,EAC9BA,GAAO,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAQ,CAAC,OAAO,EAAA,CAAQ,IACpB,EACbC,IAAA,CAAC,UAAU,EAAC,EAAA,IAAI,EAAE,CAAgD,6CAAA,EAAA,QAAQ,CAAC,MAAM,EAAE,EACjF,QAAA,EAAA,CAAAD,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,EACpBA,GAAO,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAQ,CAC/B,EAAA,CAAA,CAAA,EAAA,CACT,EACN;AACJ,CAAC,CAAC;AAKF,MAAM,UAAU,GAA0D,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAI;AAC/F,IAAA,OAAO,IAAI,IACTA,GAAG,CAAA,GAAA,EAAA,EAAA,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAA,QAAA,EAClD,QAAQ,EAAA,CACP,KAEJA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,gBAAgB,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAO,CAC7C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC3B,IAAA,cAAc,EAAE,MAAM;AACtB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,WAAW,EAAE,mBAAmB;AAChC,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,SAAS,EAAE;AACT,QAAA,eAAe,EAAE,SAAS;AAC3B,KAAA;AACF,CAAA,CAAC;;AC9DF;;;;;;;;;;AAUG;SACa,oBAAoB,CAClC,eAAmC,EACnC,wBAA4C,EAC5C,QAA8C,EAAA;IAE9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,wBAAwB,CAAC,CAAC;AACjF,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,eAAe,KAAK,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,KAAK,CAAC;;;AAI5D,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,MAAK;AACb,QAAA,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;AAChC,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;AACjC,KAAC,CAAC,CAAC;;;IAIH,MAAM,sBAAsB,GAAG,OAAO,CACpC,MAAM,CAAC,MAAgD,KAAI;;;AAGzD,QAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,GAAI,MAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAE3F,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,YAAY,EAAE;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpB,SAAA;KACF,EACD,EAAE,CACH,CAAC;AAEF,IAAA,OAAO,CAAC,YAAY,EAAE,sBAAsB,CAAQ,CAAC;AACvD,CAAC;SAEe,YAAY,CAC1B,QAA0B,EAC1B,YAAe,EACf,IAA2B,EAAA;IAE3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpD,SAAS,CAAC,MAAK;AACb,QAAA,QAAQ,EAAE;aACP,IAAI,CAAC,QAAQ,CAAC;;aAEd,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;KAC5D,EAAE,IAAI,CAAC,CAAC;AACT,IAAA,OAAO,KAAK,CAAC;AACf;;ACzDO,MAAM,cAAc,GAA2C,CAAC,EAAE,WAAW,EAAE,KAAI;AACxF,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,QAAQ,0BAAgB,CAAC;AAChD,KAAA;IACD,QACEA,aAAK,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAC3C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACxB,OAAOA,GAAA,CAAC,cAAc,EAAS,EAAA,UAAU,EAAE,CAAC,EAAA,EAAhB,CAAC,CAAmB,CAAC;SAClD,CAAC,EACE,CAAA,EACN;AACJ,CAAC,CAAC;AAMK,MAAM,cAAc,GAA2C,CAAC,EAAE,UAAU,EAAE,KAAI;AACvF,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAC3BD,GACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,QAAQ,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC,YAEvF,UAAU,CAAC,QAAQ,EAAA,CAChB,EACNA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,uBAAuB,EAAE,YAAG,UAAU,CAAC,IAAI,EAAA,CAAO,EAC9FA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAA,QAAA,EAAG,UAAU,CAAC,OAAO,EAAO,CAAA,CAAA,EAAA,CACtD,EACN;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,4BAA4B,EAAE,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,6BAA6B,EAAE,CAAC;;AC9BlE,MAAM,QAAQ,GAAqC,CAAC,EACzD,qBAAqB,EACrB,WAAW,GACZ,KAAI;IACH,QACEC,4BACG,qBAAqB,IAAID,IAAC,qBAAqB,EAAA,EAAC,KAAK,EAAE,qBAAqB,EAAA,CAAI,EAChF,WAAW,IAAIA,GAAC,CAAA,cAAc,EAAC,EAAA,WAAW,EAAE,WAAW,EAAA,CAAI,CAC3D,EAAA,CAAA,EACH;AACJ,CAAC,CAAC;AAKK,MAAM,qBAAqB,GAAkD,CAAC,EAAE,KAAK,EAAE,KAAI;IAChG,QACEA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,YAAY,EAAE,EAAA,QAAA,EACxBC,IACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE;AACH,gBAAA,MAAM,EAAE,CAAA,UAAA,EAAa,MAAM,CAAC,wBAAwB,CAAE,CAAA;AACtD,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,EAAA,QAAA,EAAA,CAEDD,GAAgC,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAChCA,GAA8D,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,CAAA,EAC9DA,aAAM,EACNA,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAM,KAAK,CAAC,KAAK,EAAA,CAAO,CACpB,EAAA,CAAA,EAAA,CACF,EACN;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAG,CAAC;AACvB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACzB,CAAA,CAAC;;ACvCF;;AAEG;AACI,MAAM,UAAU,GAAuC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAI;AAC/F,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,OAAOA,yCAAe,CAAC;AACxB,KAAA;AAAM,SAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,KAAA;AAED,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,CAAU,EAAE,IAAwB,KAAI;AACvC,QAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAK;;AAClC,QAAA,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC;AACzD,KAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACxB,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC7D,QAAA,EAAA,CAAAD,GAAA,CAAC,MAAM,EAAA,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAA,QAAA,EAClE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAC1BA,gBAAkB,KAAK,EAAE,GAAG,EAAA,QAAA,EACzB,KAAK,EADK,EAAA,GAAG,CAEP,CACV,CAAC,EAAA,CACK,EAER,cAAc,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA,EAAA,CACpD,EACN;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,CAAC;AACxB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,KAAK,EAAE,CAAC;AACT,CAAA,CAAC;;ACvCK,MAAM,UAAU,GAAuC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI;IAC7F,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACrE,QACEC,IAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA,UAAA,EAAa,MAAM,CAAC,mBAAmB,CAAE,CAAA,EAAE,EACnF,QAAA,EAAA,CAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACpB,QACED,GAAC,CAAA,SAAS,EAAc,EAAA,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAnE,EAAA,GAAG,CAAC,EAAE,CAAiE,EACvF;aACH,CAAC,EACFA,GAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAA,UAAA,EAAa,MAAM,CAAC,mBAAmB,CAAA,CAAE,EAAE,EAAA,CAAS,EACtF,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACrB,QACEA,GAAC,CAAA,SAAS,EAAc,EAAA,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAnE,EAAA,GAAG,CAAC,EAAE,CAAiE,EACvF;aACH,CAAC,CACE,EAAA,CAAA,EACN;AACJ,CAAC,CAAC;AAMK,MAAM,SAAS,GAAsC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI;AAC1F,IAAA,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE;AACH,YAAA;AACE,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,CAAA,UAAA,EAAa,MAAM,CAAC,mBAAmB,CAAE,CAAA;AACtD,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,QAAQ,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE;AACxF,SAAA,EACD,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAE9B,QAAA,EAAA,GAAG,CAAC,IAAI,EAAA,CACL,EACN;AACJ,CAAC,CAAC;AAEF,SAAS,KAAK,CAAI,KAAU,EAAE,SAA+B,EAAA;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AACnB,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B;;AC9DO,MAAM,cAAc,GAA2C,CAAC,EACrE,OAAO,EACP,OAAO,EACP,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,eAAe,GAAgD;AACnE,QAAA,8BAA8B,EAAE,IAAI;AACpC,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD,QAAA,GAAG,OAAO;KACX,CAAC;AACF,IAAA,OAAOA,GAAC,CAAA,MAAM,EAAC,EAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAM,GAAA,KAAK,GAAW,CAAC;AAClF,CAAC,CAAC;AAEK,MAAM,YAAY,GAIpB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAI;IAC1C,IAAI,QAAQ,KAAK,EAAE,EAAE;AACnB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,MAAM,OAAO,GAAgD;AAC3D,QAAA,GAAG,aAAa;AAChB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;KACF,CAAC;AACF,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AACvC,IAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,OAAOA,GAAA,CAAC,MAAM,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAA,CAAW,CAAC;AAC3D,CAAC;;AC3BM,MAAM,UAAU,GAAuC,CAAC,EAC7D,gBAAgB,EAChB,OAAO,EACP,aAAa,GACd,KAAI;IACH,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,QAAA,OAAOA,iBAAK,CAAC;AACd,KAAA;IACD,IAAI,uBAAuB,IAAI,gBAAgB,EAAE;QAC/C,OAAOA,GAAA,CAAC,qBAAqB,EAAC,EAAA,KAAK,EAAE,gBAAgB,CAAC,qBAAqB,EAAA,CAAI,CAAC;AACjF,KAAA;AACD,IAAA,QACEA,GAAC,CAAA,kBAAkB,EACjB,EAAA,iBAAiB,EAAE,gBAAgB,EACnC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAAA,CAC5B,EACF;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAInB,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,KAAI;AACrD,IAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;AAEnD,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB;AAChE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,OAAO,EAAE,EAAE;AACZ,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7E,gBAAA,KAAK,cAAc,CAAC,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAd,cAAc,GAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AACnF,aAAA;AACF,SAAA;AACH,KAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3B,eAAe,cAAc,CAAC,IAAY,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AACrE,QAAA,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KAC5E;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACxC,IAAA,MAAM,IAAI,GAAU,OAAO,CAAC,MAAK;QAC/B,OAAO;YACL,GAAG,WAAW,CAAC,GAAG,CAChB,CAAC,CAAC,MAAW;AACX,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA,CAAC,CACH;YACD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;AACxD,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,IAAI,EAAEA,GAAC,CAAA,aAAa,IAAC,WAAW,EAAE,WAAW,EAAI,CAAA;AACjD,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;SACF,CAAC;AACJ,KAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAC/B,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,KAAa,KAAI;QACvD,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1C,SAAA;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,QACEC,IACE,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,CAAC,IAAI,KAAK,MAAM,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,EACrF,QAAQ,EAAE,kBAAkB,EAAA,CAC5B,EACFA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAA,QAAA,EACxFA,IAAC,aAAa,EAAA,EACZ,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,EACE,CAAA,CAAA,EAAA,CACL,EACH;AACJ,CAAC,CAAC;AAEF,SAAS,gBAAgB,CAAC,aAAwC,EAAA;IAChE,OAAO;AACL,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAe,MACzCA,GAAC,CAAA,YAAY,IAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAA,CAAI,CACnF;KACF,CAAC;AACJ,CAAC;AAUD,MAAM,aAAa,GAA0C,CAAC,EAC5D,aAAa,EACb,OAAO,EACP,OAAO,EACP,aAAa,GACd,KAAI;AACH,IAAA,MAAM,eAAe,GAAG,OAAO,CAC7B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,IAAI,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,EAAE,CAAC,CAAC,EAC3D,CAAC,OAAO,CAAC,CACV,CAAC;IACF,QAAQ,aAAa,CAAC,IAAI;AACxB,QAAA,KAAK,MAAM;YACT,QACEA,IAAC,UAAU,EAAA,EACT,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAChC,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,OAAO,EAAE,eAAe,EACxB,CAAA,EACF;AACJ,QAAA,KAAK,QAAQ;AACX,YAAA,OAAOA,GAAC,CAAA,QAAQ,EAAC,EAAA,WAAW,EAAE,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,GAAI,CAAC;AACzD,QAAA;YACE,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE;AACH,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,QAAQ,EAAE,QAAQ;iBACnB,EAEA,QAAA,EAAA,OAAO,IAAIA,GAAA,CAAC,eAAe,EAAA,EAAC,OAAO,EAAE,OAAO,EAAA,CAAI,EAC7C,CAAA,EACN;AACL,KAAA;AACH,CAAC,CAAC;AAOF,MAAM,aAAa,GAEd,CAAC,EAAE,WAAW,EAAE,KAAI;AACvB,IAAA,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,QACEC,oCAAa,UAAU,GAAG,CAAC,GAAGD,GAAM,CAAA,MAAA,EAAA,EAAA,GAAG,EAAE,mBAAmB,EAAA,QAAA,EAAG,UAAU,EAAQ,CAAA,GAAG,EAAE,CAAO,EAAA,CAAA,EAC7F;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC,4BAA4B;IACpD,KAAK,EAAE,MAAM,CAAC,6BAA6B;AAC3C,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,YAAY,EAAE,MAAM;AACrB,CAAA,CAAC,CAAC;AAKH,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAwB,KAAI;AAC5D,IAAA,QACEA,GAAC,CAAA,aAAa,EAAC,EAAA,MAAM,EAAE,eAAe,EAAA,QAAA,EACpCA,GAAC,CAAA,qBAAqB,IAAC,OAAO,EAAE,OAAO,EAAI,CAAA,EAAA,CAC7B,EAChB;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAiB;IACpC,UAAU,EAAE,MAAM,CAAC,uBAAuB;IAC1C,QAAQ,EAAE,MAAM,CAAC,4BAA4B;IAC7C,QAAQ,EAAE,MAAM,CAAC,uBAAuB;IACxC,OAAO,EAAE,MAAM,CAAC,uBAAuB;IACvC,GAAG,EAAE,MAAM,CAAC,qBAAqB;IACjC,OAAO,EAAE,MAAM,CAAC,iCAAiC;IACjD,gBAAgB,EAAE,MAAM,CAAC,uBAAuB;IAChD,QAAQ,EAAE,MAAM,CAAC,+BAA+B;CACjD;;ACzMa,SAAU,IAAI,CAAC,EAC3B,QAAQ,EACR,GAAG,KAAK,EACsD,EAAA;AAC9D,IAAA,OAAOA,GAAS,CAAA,KAAA,EAAA,EAAA,GAAA,KAAK,EAAG,QAAA,EAAA,QAAQ,GAAO,CAAC;AAC1C;;;;ACFO,MAAM,WAAW,GAA8C,CAAC,EACrE,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,GAAG,MAAM,EACQ,KAAI;IACrB,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,YAAY,CACrB,KAAK,CAAC,cAAc,CAAC,EACrB,QAAQ,IAAI,KAAK,CAAC,uBAAuB,CAAC,EAC1C,SAAS,CACV,EACG,GAAA,MAAM,EAET,QAAA,EAAA,QAAQ,EACL,CAAA,EACN;AACJ,CAAC;;ACdM,MAAM,IAAI,GAAG,CAAC,EACnB,SAAS,EACT,MAAM,EACN,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,GAAG,MAAM,EACC,KAAI;IACd,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE3C,IAAA,MAAM,eAAe,GAAG,CAAC,CAAM,KAAI;QACjC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,KAAC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,CAAC,CAAM,KAAI;QAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,SAAS,CAAC,CAAC,CAAC,CAAC;AACb,QAAA,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACzD,QAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACvD,KAAC,CAAC;AAEF,IAAA,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,EACjD,WAAW,EAAE,CAAC,CAAC,KAAI;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC,CAAC;AAEf,YAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACtD,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACpD,SAAC,EACD,aAAa,EAAE,OAAO,EAClB,GAAA,MAAM,EAET,QAAA,EAAA,MAAM,CAAC,OAAO,CAAC,EAAA,CACZ,EACN;AACJ,CAAC;;ACTM,MAAM,SAAS,GAAsC,CAAC,EAC3D,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,GAAG,IAAI,EAClB,KAAK,GAAG,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,KAAKA,GAAC,CAAA,WAAW,EAAC,EAAA,QAAQ,EAAE,MAAM,EAAA,CAAI,EAC7D,WAAW,GAAG,CAAC,EACf,eAAe,GAAG,KAAK,EACvB,QAAQ,GAAG,MAAM,IAAI,EACrB,WAAW,GAAG,MAAM,IAAI,EACxB,SAAS,GAAG,MAAM,IAAI,EACtB,GAAG,MAAM,EACM,KAAI;;AACnB,IAAA,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,oBAAoB,CAC1D,SAAS,EACT,YAAY,EACZ,QAAe,CAChB,CAAC;AACF,IAAA,MAAM,IAAI,GAAG,MAAM,CAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AAC7C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE3D,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;;AAC7C,YAAA,cAAc,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,0CAAE,qBAAqB,EAAE,MAAK,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAU,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;AACH,QAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAQ,CAAC,CAAC;AACzC,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;AAC9B,SAAC,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAC/C,OACG;QACC,QAAQ,EAAE,KAAK,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ;QACnD,QAAQ,EAAE,KAAK,KAAK,UAAU,GAAG,MAAM,GAAG,KAAK;QAC/C,SAAS,EAAE,KAAK,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG;AAC5C,KAAA,CAAU,EACb,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,QAAQ,GAAW,CAAA,EAAA,GAAA,WAAW,CAAC,QAAQ,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC;;AAGpD,IAAA,MAAM,cAAc,GAAG,OAAO,CAC5B,MACE,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AACzB,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,IAAI,MAAK,IAAI,EAAE;YAC5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,KAAkB,CAAC;AAC1D,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf,CAAC,EACJ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CACnB,YAAA;QACE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;YACpC,MAAM,IAAI,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,YAAA,IAAI,KAAK,QAAQ,GAAG,KAAK,EAAE,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;AAC/C,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,MAAM,GAAG,QAAQ,KAAK,CAAC,KAAK,IAAI,MAAM,GAAG,QAAQ,CAAC,EAAE;YACtD,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,QAAQ,IAAI,MAAM,CAAC;AAC9C,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACtB,gBAAA,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;AACxD,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,MAAM,IAAI,KAAK,CAAC;AAC5C,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBACtB,OAAO,IAAI,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAC5C,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;AACb,KAAC,EACD,CAAC,GAAG,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CACjD,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC1B,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC9D,CAAC,GAAG,KAAK,CAAC,CACX,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,CAAM,KAAI;;AACT,QAAA,CAAA,EAAA,GAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,UAAU,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAC7C,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,CAAC,CAAC,CAAC;KAChB,EACD,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CACnC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;QACrC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC5B,KAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,CAAM,KAAI;;AACT,QAAA,CAAA,EAAA,GAAA,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,UAAU,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAC7C,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,SAAS,CAAC,CAAC,CAAC,CAAC;KACd,EACD,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CACjC,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,UAAU,CAA6B,EAAE,CAAS,EAAA;AAChD,QAAA,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3C,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAE7D,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CACxC,CAAC;AACF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAChC,CAAC;QAEF,IAAI,SAAS,GAAG,UAAU,EAAE;YAC1B,SAAS,GAAG,UAAU,CAAC;AACxB,SAAA;QACD,IAAI,SAAS,GAAG,WAAW,EAAE;YAC3B,SAAS,GAAG,WAAW,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7B,QAAA,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAC1B,QAAA,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;QAE9B,WAAW,CAAC,SAAS,CAAC,CAAC;AACzB,KAAC,EACD,CAAC,cAAc,EAAE,QAAQ,CAAC,CAC3B,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,eAAe,IAAI,UAAU,CAAC,CAAC;AACpD,IAAA,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;IAE9E,QACEC,IACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,YAAY,CACrB,KAAK,CAAC,YAAY,CAAC,EACnB,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,qBAAqB,CAAC,EACpD,KAAK,KAAK,YAAY,IAAI,KAAK,CAAC,uBAAuB,CAAC,EACxD,UAAU,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAC1C,aAAa,CACd,EACD,GAAG,EAAE,OAAO,EACR,GAAA,MAAM,EAET,QAAA,EAAA,CAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,KAAI;AACtC,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;AACvC,gBAAA,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;AAEhD,gBAAA,QACED,GAAC,CAAA,IAAI,IAEH,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,EAC3D,KAAK,EAAE;wBACL,GAAG,SAAS,CAAC,KAAK;AAClB,wBAAA,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC;AACjC,wBAAA,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC;AAClC,qBAAA,EAAA,QAAA,EAEA,MAAM,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAA,EARnC,UAAU,CASV,EACP;aACH,CAAC,EACD,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,MAC5CA,GAAC,CAAA,IAAI,EAEH,EAAA,SAAS,EAAE,YAAY,CACrB,CAAC,WAAW,IAAI,KAAK,CAAC,eAAe,CAAC,EACtC,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,CACzE,EACD,KAAK,EAAE;oBACL,CAAC,QAAQ,GAAG,WAAW;AACvB,oBAAA,CAAC,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,CAAC;AACtC,iBAAA,EACD,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EACpC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EACvC,SAAS,EAAE,OAAO,IAbb,KAAK,CAcV,CACH,CAAC,CAAA,EAAA,CACE,EACN;AACJ,CAAC,CAAC;AAEF;;;;;;;;AAQG;AACH,SAAS,WAAW,CAAC,IAAiC,EAAE,GAAW,EAAE,YAAY,GAAG,QAAQ,EAAA;IAC1F,IAAI,OAAO,IAAI,KAAK,WAAW;AAAE,QAAA,OAAO,YAAY,CAAC;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;AAC1C,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AACpE,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACxD,IAAA,OAAO,YAAY,CAAC;AACtB;;ACtLa,MAAA,UAAU,GAAuC,CAAC,KAAK,KAAI;;AACtE,IAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;AAC/B,IAAA,MAAM,SAAS,GAAG,MAAM,CAA2C,SAAS,CAAC,CAAC;IAE9E,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,GAAG,oBAAoB,CACrE,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,GAAG,oBAAoB,CACrE,KAAK,CAAC,eAAe,EACrB,CAAA,EAAA,GAAA,KAAK,CAAC,sBAAsB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAClC,KAAK,CAAC,uBAAuB,CAC9B,CAAC;IACF,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,GAAG,oBAAoB,CAC3E,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,kBAAkB,CACzB,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7D,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAK;;AACrC,QAAA,OAAO,OAAO,CAAC,kBAAkB,IAAI,OAAO,MAAK,MAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,0CAAG,kBAAkB,CAAC,0CAAE,OAAO,CAAA,CAAC,CAAC;KAChG,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,cAAc,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA+B,SAAS,CAAC,CAAC;AAElG,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,YAAW;AACvC,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QACzC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEvC,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAC7E,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,SAAS,IAAI,KAAK,EAAE;AACtB,YAAA,MAAM,OAAO,GAAyB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC7E,gBAAA,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;gBACnD,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO;AACnF,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,SAAS;AAC9E,aAAA,CAAC,CAAC,CAAC;AAEJ,YAAA,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,EAAE,CAAC,CAAC;AAC/D,SAAA;AAAM,aAAA;YACL,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACpD,SAAA;AACH,KAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;AAExE,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,KAAa,KAAI;AAChB,QAAA,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;AACtC,YAAA,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AACH,KAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IACF,SAAS,CAAC,MAAK;;QACb,cAAc,CAAC,MAAA,KAAK,CAAC,cAAc,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC;KAC5C,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,gBAAA,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC3B,oBAAA,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClD,iBAAA;gBACD,IAAI,MAAM,CAAC,eAAe,EAAE;AAC1B,oBAAA,uBAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACjD,iBAAA;AACF,aAAA;AACF,SAAA;AACH,KAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzC,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC/D,QAAA,OAAO,MAAK;YACV,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,UAAU,CAAC,OAAO,EAAE,CAAC;AACvB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,MAAK;QACb,KAAK,SAAS,EAAE,CAAC;AACnB,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;AAChC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC;AACL,gBAAA,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;AACjC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,SAAS;AAC/D,aAAA,CAAC,CAAC;AACJ,SAAA;AACH,KAAC,EAAE;QACD,aAAa;QACb,MAAM;QACN,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,iBAAiB;AAClB,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAK;;AAClC,QAAA,MAAK,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,8BAA8B,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,EAAE,CAAA,CAAC;AAC3E,KAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAW;;AACtC,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAA2B,wBAAA,EAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAG,CAAA,CAAA,CAAC,CAAC;AAC7F,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,CAAS,MAAA,EAAA,WAAW,EAAE,CAAC;AAClE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7B,KAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAE9B,IAAA,MAAM,qBAAqB,GAAG,OAAO,CACnC,MAAkC;;QAEhC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC3F,KAAA,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAe,KAAI;AACpE,QAAA,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;KAC5B,EAAE,EAAE,CAAC,CAAC;IAEP,QACEC,IACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE;AACH,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,mBAAmB,EAAE,GAAG;AACxB,YAAA,gBAAgB,EAAE,UAAU;AAC5B,YAAA,iBAAiB,EAAE,gCAAgC;AACnD,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,CAAiD,+CAAA,CAAA;AAC9D,SAAA,EAAA,QAAA,EAAA,CAEDA,KAAC,SAAS,EAAA,EACR,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAC5B,GAAG,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CAEtFA,IAAC,CAAA,IAAI,eACHD,GAAC,CAAA,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,uBAAuB,EAAE,uBAAuB,EAChD,eAAe,EAAE,eAAe,EAChC,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,kBAAkB,EAAE,kBAAkB,EACtC,0BAA0B,EAAE,0BAA0B,EACtD,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,IAAG,QAAQ,GAAG,SAAS,EAC7D,gBAAgB,EAAE,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,EAAA,CAC/C,EACFA,GAAC,CAAA,cAAc,IACb,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,KAAK,CAAC,aAAa,EAC5B,OAAO,EAAE,qBAAqB,EAAA,CAC9B,IACG,EACPA,GAAA,CAAC,IAAI,EACH,EAAA,QAAA,EAAAA,GAAA,CAAC,UAAU,EACT,EAAA,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,OAAO,EAAE,CAAA,EAAA,GAAA,KAAK,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,eAAe,CAAC,EAAA,CAChD,GACG,CACG,EAAA,CAAA,EACZA,GAAC,CAAA,MAAM,IAAC,IAAI,EAAE,IAAI,EAAI,CAAA,CAAA,EAAA,CAClB,EACN;AACJ,EAAE;AAEF,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,eAAe,OAAO,CACpB,IAAiB,EACjB,OAAe,EACf,eAAuB,EACvB,OAAwB,EAAA;;IAExB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC1C,IAAA,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI;AACF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE;AAC/D,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE;gBACP,GAAG,OAAO,CAAC,OAAO;gBAClB,CAAC,eAAe,GAAG;AACjB,oBAAA,GAAG,MAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,eAAe,CAAC;AACrC,oBAAA,oBAAoB,EAAE,YAAY;AACnC,iBAAA;AACF,aAAA;AACD,YAAA,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,CAAC,eAAe,CAAC;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACjC,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;;AAEd,QAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAChD,QAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AACzC,KAAA;AACH,CAAC;AACD,eAAe,eAAe,CAAC,IAAiB,EAAA;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,eAAe,QAAQ,CAAC,GAAW,EAAA;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;AAClD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE;AACzD,gBAAA,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,CAAG,EAAA,GAAG,IAAI,IAAI,CAAA,CAAE,CAAC,CAAC;AAClD,aAAA;AACF,SAAA;KACF;AACD,IAAA,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnB,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED,eAAe,cAAc,CAAC,IAAiB,EAAA;;IAE7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAChD,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC;AACpC,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,QAAA,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,EAAE,CAAC;AACjB,SAAA;AACD,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,KAAA;AACH;;AC5SA,SAAS,8BAA8B,CACrC,MAA6B,EAAA;IAE7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAA2C,CAAC;IAClF,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,YAAW;AACtB,YAAA,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5E,YAAA,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAEnC,YAAA,MAAM,YAAY,GAAG,sCAAsC,EAAE,CAAC;AAC9D,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YACzC,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;AACnD,SAAC,CAAC;QACF,KAAK,IAAI,EAAE,CAAC;KACb,EAAE,EAAE,CAAC,CAAC;AACP,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAEY,MAAA,oBAAoB,GAA6C,CAAC,MAAM,KAAI;AACvF,IAAA,MAAM,OAAO,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;AACvD,IAAA,MAAM,SAAS,GAAGG,OAAK,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAExD,IAAA,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,KAAyB,KAAI;QAC5B,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;AACR,SAAA;AACD,QAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,KAAK,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,QAAA,aAAa,CACXF,IAAC,CAAA,KAAK,eACJD,GAAC,CAAA,UAAU,yBAAoB,EAC/BA,GAAA,CAAC,SAAS,EAA8D,EAAA,QAAA,EAAA,mDAAA,EAAA,CAAA,CAAA,EAAA,CAClE,EACR,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;AACJ,KAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;AAEF,IAAA,MAAM,YAAY,GAAgC,OAAO,CACvD,MAAK;;AACH,QAAA,OAAA,OAAO,IAAI;YACT,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,YAAA,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO;YAC5C,cAAc,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,cAAc;AACrE,YAAA,sBAAsB,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO;AACpD,YAAA,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU;SACnD,CAAA;AAAA,KAAA,EACH,CAAC,OAAO,CAAC,CACV,CAAC;AACF,IAAA,IAAI,OAAO,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AACvD,QAAA,OAAOA,iBAAK,CAAC;AACd,KAAA;AAED,IAAA,MAAM,OAAO,GAAoB;AAC/B,QAAA,GAAG,MAAM;AACT,QAAA,GAAG,YAAY;QACf,MAAM;KACP,CAAC;AAEF,IAAA,QACEC,IACE,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,OAAO,EAAC,EAAA,SAAS,EAAE,SAAS,EAAA,CAAI,EAChC,OAAO,IAAIA,IAAC,UAAU,EAAA,EAAA,GAAK,OAAO,EAAI,CAAA,CAAA,EAAA,CACtC,EACH;AACJ,EAAE;AAEK,eAAe,qBAAqB,CAAC,MAA6B,EAAA;AACvE,IAAA,OAAOA,GAAC,CAAA,oBAAoB,EAAK,EAAA,GAAA,MAAM,GAAI,CAAC;AAC9C,CAAC;AAEM,eAAe,qBAAqB,CAAC,MAA6B,EAAA;AACvE,IAAA,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CACTA,GAAA,CAAC,cAAc,EAAC,EAAA,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAC7D,QAAA,EAAA,GAAG,EACW,CAAA,CAClB,CAAC;AACJ,CAAC;SAEe,sCAAsC,GAAA;IACpD,MAAM,YAAY,GAAG,qBAAqB,CAAqB;AAC7D,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,WAAW;AACtB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,SAAS;AACtB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,UAAU,EAAE,QAAQ;AACrB,SAAA;AACF,KAAA,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,QAAA,IAAI,CAAC,IAAwB,EAAA;YAC3B,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAChF,CAAC;SACH;KACF,CAAC;AACJ;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.1.0-alpha.4-dev.15",
3
+ "version": "0.1.0-alpha.4-dev.16",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://microsoft.github.io/typespec",