@typespec/playground 0.2.0-dev.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -145,6 +145,25 @@
145
145
  overflow: hidden;
146
146
  }
147
147
 
148
+ .problem-pane-module_problem-pane__GJKF4 {
149
+ height: 100%;
150
+ background-color: var(--colorNeutralBackground3);
151
+ display: flex;
152
+ flex-direction: column;
153
+ max-height: 100%;
154
+ }
155
+
156
+ .problem-pane-module_problem-content__rYzbh {
157
+ overflow-y: auto;
158
+ }
159
+ .problem-pane-module_no-problems__Ub8R- {
160
+ padding: 10px;
161
+ }
162
+
163
+ .problem-pane-module_internal-compiler-error__laE4f {
164
+ padding: 10px;
165
+ }
166
+
148
167
  .file-output-module_file-output__YBaE7 {
149
168
  position: relative;
150
169
  height: 100%;
@@ -176,25 +195,6 @@
176
195
  background-color: var(--colorNeutralBackground5) !important;
177
196
  }
178
197
 
179
- .problem-pane-module_problem-pane__GJKF4 {
180
- height: 100%;
181
- background-color: var(--colorNeutralBackground3);
182
- display: flex;
183
- flex-direction: column;
184
- max-height: 100%;
185
- }
186
-
187
- .problem-pane-module_problem-content__rYzbh {
188
- overflow-y: auto;
189
- }
190
- .problem-pane-module_no-problems__Ub8R- {
191
- padding: 10px;
192
- }
193
-
194
- .problem-pane-module_internal-compiler-error__laE4f {
195
- padding: 10px;
196
- }
197
-
198
198
  .diagnostic-list-module_list__6tVpz {
199
199
  }
200
200
 
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { c as createBrowserHost, a as createUrlStateStorage, r as registerMonacoLanguage } from './state-storage-jySQ9uS5.js';
1
+ export { c as createBrowserHost, a as createUrlStateStorage, r as registerMonacoLanguage } from './state-storage-C_Vk3Rrw.js';
2
2
  import '@typespec/compiler';
3
3
  import 'monaco-editor';
4
4
  import 'vscode-languageserver';
@@ -5,7 +5,7 @@ import debounce from 'debounce';
5
5
  import { editor, Uri, MarkerSeverity, KeyMod, KeyCode } from 'monaco-editor';
6
6
  import { CompletionItemTag } from 'vscode-languageserver';
7
7
  import { Settings24Regular, Save16Regular, Broom16Filled, Bug16Regular, ErrorCircle16Filled, Warning16Filled, ChevronDown16Regular } from '@fluentui/react-icons';
8
- import { g as getMonacoRange, c as createBrowserHost, r as registerMonacoLanguage, a as createUrlStateStorage } from '../state-storage-jySQ9uS5.js';
8
+ import { g as getMonacoRange, c as createBrowserHost, r as registerMonacoLanguage, a as createUrlStateStorage } from '../state-storage-C_Vk3Rrw.js';
9
9
  import { ColorProvider, TypeSpecProgramViewer } from '@typespec/html-program-viewer';
10
10
  import { getSourceLocation } from '@typespec/compiler';
11
11
  import { createRoot } from 'react-dom/client';
@@ -50,7 +50,7 @@ const VersionSelector = memo(({ versions, selected, latest, onChange }) => {
50
50
  const changeVersion = useCallback((ev, data) => {
51
51
  onChange(versions.find((x) => x.name === data.value));
52
52
  }, [versions, onChange]);
53
- return (jsxs("div", { children: [jsx(Title3, { children: "Select release" }), jsx(Select, { value: selected, onChange: changeVersion, children: versions.map((version) => (jsxs("option", { value: version.name, children: [version.label, " ", version.name === latest ? "(latest)" : ""] }, version.name))) })] }));
53
+ return (jsxs("div", { children: [jsx(Title3, { children: "Select release" }), jsx(Select, { value: selected, onChange: changeVersion, "aria-label": "Select version", children: versions.map((version) => (jsxs("option", { value: version.name, children: [version.label, " ", version.name === latest ? "(latest)" : ""] }, version.name))) })] }));
54
54
  });
55
55
 
56
56
  const Footer = ({ className, children }) => {
@@ -64,7 +64,7 @@ const EmitterDropdown = ({ emitters, onSelectedEmitterChange, selectedEmitter, }
64
64
  const handleSelected = useCallback((evt) => {
65
65
  onSelectedEmitterChange(evt.target.value);
66
66
  }, [onSelectedEmitterChange]);
67
- return (jsxs(Select, { className: "sample-dropdown", onChange: handleSelected, value: selectedEmitter, children: [jsx("option", { value: "", disabled: true, children: "Select emitter..." }), options] }));
67
+ return (jsxs(Select, { className: "sample-dropdown", onChange: handleSelected, value: selectedEmitter, "aria-label": "Select an emitter", children: [jsx("option", { value: "", disabled: true, children: "Select emitter..." }), options] }));
68
68
  };
69
69
 
70
70
  const SamplesDropdown = ({ samples, selectedSampleName, onSelectedSampleNameChange, }) => {
@@ -76,7 +76,7 @@ const SamplesDropdown = ({ samples, selectedSampleName, onSelectedSampleNameChan
76
76
  onSelectedSampleNameChange(evt.target.value);
77
77
  }
78
78
  }, [onSelectedSampleNameChange]);
79
- return (jsxs(Select, { className: "sample-dropdown", onChange: handleSelected, value: selectedSampleName !== null && selectedSampleName !== void 0 ? selectedSampleName : "", children: [jsx("option", { value: "", disabled: true, children: "Select sample..." }), options] }));
79
+ return (jsxs(Select, { className: "sample-dropdown", onChange: handleSelected, value: selectedSampleName !== null && selectedSampleName !== void 0 ? selectedSampleName : "", "aria-label": "Select a sample", children: [jsx("option", { value: "", disabled: true, children: "Select sample..." }), options] }));
80
80
  };
81
81
 
82
82
  var style$9 = {"form":"emitter-options-form-module_form__dm2RP","item":"emitter-options-form-module_item__WocHP","switch":"emitter-options-form-module_switch__d4EQs"};
@@ -170,7 +170,7 @@ const CompilerSettings = ({ selectedEmitter, host, options, onOptionsChanged, })
170
170
 
171
171
  const CompilerSettingsDialogButton = ({ selectedEmitter, compilerOptions, onCompilerOptionsChange, }) => {
172
172
  const { host } = usePlaygroundContext();
173
- return (jsxs(Dialog, { children: [jsx(DialogTrigger, { children: jsx(ToolbarButton, { icon: jsx(Settings24Regular, {}) }) }), jsx(DialogSurface, { children: jsxs(DialogBody, { children: [jsx(DialogTitle, { children: "Settings" }), jsx(DialogContent, { children: jsx(CompilerSettings, { host: host, selectedEmitter: selectedEmitter, options: compilerOptions, onOptionsChanged: onCompilerOptionsChange }) })] }) })] }));
173
+ return (jsxs(Dialog, { children: [jsx(DialogTrigger, { children: jsx(ToolbarButton, { icon: jsx(Settings24Regular, {}), "aria-label": "Open Settings" }) }), jsx(DialogSurface, { children: jsxs(DialogBody, { children: [jsx(DialogTitle, { children: "Settings" }), jsx(DialogContent, { children: jsx(CompilerSettings, { host: host, selectedEmitter: selectedEmitter, options: compilerOptions, onOptionsChanged: onCompilerOptionsChange }) })] }) })] }));
174
174
  };
175
175
 
176
176
  var style$8 = {"bar":"editor-command-bar-module_bar__5q4D5","divider":"editor-command-bar-module_divider__iDahk","spacer":"editor-command-bar-module_spacer__hlHE9"};
@@ -300,7 +300,7 @@ const FileOutput = ({ filename, content, viewers }) => {
300
300
  var _a;
301
301
  return (_a = viewers.find((x) => x.key === selected)) === null || _a === void 0 ? void 0 : _a.render;
302
302
  }, [selected, viewers]);
303
- return (jsxs("div", { className: style$7["file-output"], children: [jsx("div", { className: style$7["viewer-selector"], children: jsx(Select, { value: selected, onChange: handleSelected, children: viewers.map(({ key, label }) => (jsx("option", { value: key, children: label }, key))) }) }), selectedRender && selectedRender({ filename, content })] }));
303
+ return (jsxs("div", { className: style$7["file-output"], children: [jsx("div", { className: style$7["viewer-selector"], children: jsx(Select, { value: selected, onChange: handleSelected, "aria-label": "Select viewer", children: viewers.map(({ key, label }) => (jsx("option", { value: key, children: label }, key))) }) }), selectedRender && selectedRender({ filename, content })] }));
304
304
  };
305
305
 
306
306
  var style$6 = {"tabs":"output-tabs-module_tabs__MFCRl","tab-divider":"output-tabs-module_tab-divider__9Fv--","tab":"output-tabs-module_tab__FJ78k","tab--selected":"output-tabs-module_tab--selected__GjCZY"};
@@ -503,7 +503,7 @@ const Container = ({ children, className, status, onClick, collaped }) => {
503
503
  var style$1 = {"problem-pane":"problem-pane-module_problem-pane__GJKF4","problem-content":"problem-pane-module_problem-content__rYzbh","no-problems":"problem-pane-module_no-problems__Ub8R-","internal-compiler-error":"problem-pane-module_internal-compiler-error__laE4f"};
504
504
 
505
505
  const ProblemPane = ({ collapsed, compilationState, onHeaderClick, onDiagnosticSelected, }) => {
506
- return (jsxs("div", { className: style$1["problem-pane"], children: [jsx(ProblemPaneHeader, { compilationState: compilationState, onClick: onHeaderClick, collaped: collapsed }), jsx("div", { className: style$1["problem-content"], children: jsx(ProblemPaneContent, { compilationState: compilationState, onDiagnosticSelected: onDiagnosticSelected }) })] }));
506
+ return (jsxs("div", { className: style$1["problem-pane"], children: [jsx(ProblemPaneHeader, { compilationState: compilationState, onClick: onHeaderClick, collaped: collapsed }), jsx("div", { className: style$1["problem-content"], "aria-hidden": collapsed, children: jsx(ProblemPaneContent, { compilationState: compilationState, onDiagnosticSelected: onDiagnosticSelected }) })] }));
507
507
  };
508
508
  const ProblemPaneContent = ({ compilationState, onDiagnosticSelected, }) => {
509
509
  if (compilationState === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/react/context/playground-context.tsx","../../../src/react/footer/footer-item.tsx","../../../src/react/footer/footer-version-item.tsx","../../../src/react/footer/footer.tsx","../../../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/settings/compiler-settings-dialog-button.tsx","../../../src/editor-command-bar/editor-command-bar.tsx","../../../src/react/default-footer.tsx","../../../src/react/editor.tsx","../../../src/react/hooks.ts","../../../src/react/file-output/file-output.tsx","../../../src/react/output-tabs/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view/output-view.tsx","../../../src/react/diagnostic-list/diagnostic-list.tsx","../../../src/react/problem-pane/header.tsx","../../../src/react/problem-pane/problem-pane.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 { createContext, useContext } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\n\nexport interface PlaygroundContext {\n host: BrowserHost;\n}\n\nconst PlaygroundContext = createContext<PlaygroundContext | undefined>(undefined);\n\nexport const PlaygroundContextProvider = PlaygroundContext.Provider;\n\nexport function usePlaygroundContext(): PlaygroundContext {\n const context = useContext(PlaygroundContext);\n if (context === undefined) {\n throw new Error(\"usePlaygroundContext must be used within a PlaygroundContextProvider\");\n }\n return context;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterItemProps {\n className?: string;\n link?: string;\n children: ReactNode;\n}\n\nexport const FooterItem: FunctionComponent<FooterItemProps> = ({ children, link, className }) => {\n const resolvedClassName = mergeClasses(style[\"footer-item\"], className);\n return link ? (\n <a className={resolvedClassName} href={link} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n ) : (\n <div className={resolvedClassName}>{children}</div>\n );\n};\n","import {\n Popover,\n PopoverSurface,\n PopoverTrigger,\n Select,\n SelectOnChangeData,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableHeaderCell,\n TableRow,\n Title3,\n} from \"@fluentui/react-components\";\nimport { ChangeEvent, FunctionComponent, memo, useCallback } from \"react\";\nimport { usePlaygroundContext } from \"../context/playground-context.js\";\nimport { FooterItem } from \"./footer-item.js\";\nimport style from \"./footer-version-item.module.css\";\n\nexport interface VersionSelectorVersion {\n name: string;\n label: string;\n}\n\nexport interface VersionSelectorProps {\n versions: VersionSelectorVersion[];\n\n /** Currently selected version , must match one of the version name. */\n selected: string;\n\n /** Latest released version, must match one of the version name. */\n latest?: string;\n\n /** Callback when a new version has been selected */\n onChange: (version: VersionSelectorVersion) => void;\n}\n\nexport interface FooterVersionItemProps {\n /** Provide a way to change the version of packages in the playground */\n versionSelector?: VersionSelectorProps;\n}\n\nexport const FooterVersionItem = memo(({ versionSelector }: FooterVersionItemProps) => {\n const { host } = usePlaygroundContext();\n const latest = versionSelector?.latest;\n const selected = versionSelector?.selected ?? host.compiler.MANIFEST.version;\n return (\n <FooterItem className={style[\"version-item\"]}>\n <Popover>\n <PopoverTrigger disableButtonEnhancement>\n <div className={style[\"button\"]}>\n <span>Version </span>\n <span>{selected}</span>\n <span>{latest ? (latest === selected ? \" (latest)\" : \" (old)\") : \"\"}</span>\n </div>\n </PopoverTrigger>\n\n <PopoverSurface>\n <VersionsPopup versionSelector={versionSelector} />\n </PopoverSurface>\n </Popover>\n </FooterItem>\n );\n});\n\ninterface VersionsPopupProps {\n versionSelector?: VersionSelectorProps;\n}\n\nconst VersionsPopup: FunctionComponent<VersionsPopupProps> = memo(({ versionSelector }) => {\n const { host } = usePlaygroundContext();\n\n return (\n <div style={{ maxWidth: \"400px\" }}>\n {versionSelector && <VersionSelector {...versionSelector} />}\n <div>\n <Title3>Loaded libraries</Title3>\n <Table size=\"small\">\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHeaderCell key={column.columnKey}>{column.label}</TableHeaderCell>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Object.values(host.libraries).map((item) => (\n <TableRow key={item.name}>\n <TableCell>{item.name}</TableCell>\n <TableCell>{item.packageJson.version}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n );\n});\n\nconst columns = [\n { columnKey: \"name\", label: \"Library\" },\n { columnKey: \"version\", label: \"Version\" },\n];\n\nconst VersionSelector = memo(({ versions, selected, latest, onChange }: VersionSelectorProps) => {\n const changeVersion = useCallback(\n (ev: ChangeEvent<HTMLSelectElement>, data: SelectOnChangeData) => {\n onChange(versions.find((x) => x.name === data.value)!);\n },\n [versions, onChange]\n );\n return (\n <div>\n <Title3>Select release</Title3>\n <Select value={selected} onChange={changeVersion}>\n {versions.map((version) => (\n <option key={version.name} value={version.name}>\n {version.label} {version.name === latest ? \"(latest)\" : \"\"}\n </option>\n ))}\n </Select>\n </div>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterProps {\n className?: string;\n children: ReactNode;\n}\n\nexport const Footer: FunctionComponent<FooterProps> = ({ className, children }) => {\n return <div className={mergeClasses(style.footer, className)}>{children}</div>;\n};\n","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\";\nimport style from \"./emitter-options-form.module.css\";\n\nexport interface EmitterOptionsFormProps {\n readonly library: PlaygroundTspLibrary;\n readonly options: EmitterOptions;\n readonly optionsChanged: (options: EmitterOptions) => void;\n}\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 className={style[\"form\"]}>\n {entries.map(([key, value]) => {\n return (\n <div key={key} className={style[\"form-item\"]}>\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\ninterface JsonSchemaProperty {\n readonly type: \"string\" | \"boolean\" | \"number\";\n readonly description?: string;\n readonly enum?: string[];\n readonly default?: any;\n}\n\ninterface JsonSchemaPropertyInputProps {\n readonly emitterOptions: Record<string, unknown>;\n readonly name: string;\n readonly prop: JsonSchemaProperty;\n readonly 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 (\n <Switch\n className={style[\"switch\"]}\n label={prettyName}\n labelPosition=\"above\"\n checked={value}\n onChange={handleChange}\n />\n );\n case \"string\":\n default:\n return (\n <div className={style[\"item\"]}>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\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 );\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 // eslint-disable-next-line deprecation/deprecation\n const linter = lib.linter ?? lib.definition?.linter;\n return Object.keys(linter?.ruleSets ?? {}).map((x) => `${lib.name}/${x}`) 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 { Divider } from \"@fluentui/react-components\";\nimport { 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 interface CompilerSettingsProps {\n readonly host: BrowserHost;\n readonly selectedEmitter: string;\n readonly options: CompilerOptions;\n readonly 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>\n <>Emitter: {selectedEmitter}</>\n <Divider style={{ marginTop: 20 }} />\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <Divider style={{ marginTop: 20 }} />\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 DialogContent,\n DialogSurface,\n DialogTitle,\n DialogTrigger,\n ToolbarButton,\n} from \"@fluentui/react-components\";\nimport { Settings24Regular } from \"@fluentui/react-icons\";\nimport type { CompilerOptions } from \"@typespec/compiler\";\nimport { usePlaygroundContext } from \"../context/index.js\";\nimport { CompilerSettings } from \"./compiler-settings.js\";\n\nexport interface CompilerSettingsDialogButtonProps {\n selectedEmitter: string;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n}\n\nexport const CompilerSettingsDialogButton = ({\n selectedEmitter,\n compilerOptions,\n onCompilerOptionsChange,\n}: CompilerSettingsDialogButtonProps) => {\n const { host } = usePlaygroundContext();\n\n return (\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <DialogTitle>Settings</DialogTitle>\n <DialogContent>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={compilerOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogContent>\n </DialogBody>\n </DialogSurface>\n </Dialog>\n );\n};\n","import { Link, Toolbar, ToolbarButton, Tooltip } from \"@fluentui/react-components\";\nimport { Broom16Filled, Bug16Regular, Save16Regular } from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { EmitterDropdown } from \"../react/emitter-dropdown.js\";\nimport { SamplesDropdown } from \"../react/samples-dropdown.js\";\nimport { CompilerSettingsDialogButton } from \"../react/settings/compiler-settings-dialog-button.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport style from \"./editor-command-bar.module.css\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n fileBug?: () => 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 fileBug,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions,\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 = fileBug ? <FileBugButton onClick={fileBug} /> : 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 className={style[\"bar\"]}>\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 <>\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n <div className={style[\"spacer\"]}></div>\n </>\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n\n {documentation && (\n <>\n <div className={style[\"spacer\"]}></div>\n {documentation}\n </>\n )}\n <div className={style[\"divider\"]}></div>\n {bugButton}\n <CompilerSettingsDialogButton\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n selectedEmitter={selectedEmitter}\n />\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 ></ToolbarButton>\n </Tooltip>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport { FooterVersionItem } from \"./footer/footer-version-item.js\";\nimport { Footer } from \"./footer/index.js\";\n\nexport const DefaultFooter: FunctionComponent = () => {\n return (\n <Footer>\n <FooterVersionItem />\n </Footer>\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 style={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n data-tabster='{\"uncontrolled\": {}}' // https://github.com/microsoft/tabster/issues/316\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 { 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 { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"../types.js\";\nimport style from \"./file-output.module.css\";\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 className={style[\"file-output\"]}>\n <div className={style[\"viewer-selector\"]}>\n <Select value={selected} onChange={handleSelected}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n </div>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n","import {\n SelectTabData,\n SelectTabEvent,\n SelectTabEventHandler,\n Tab,\n TabList,\n TabProps,\n mergeClasses,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement, useCallback } from \"react\";\nimport style from \"./output-tabs.module.css\";\n\nexport interface OutputTab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: OutputTab[];\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\n const onTabSelect: SelectTabEventHandler = useCallback(\n (event: SelectTabEvent, data: SelectTabData) => {\n onSelect(data.value as any);\n },\n [onSelect]\n );\n\n return (\n <TabList selectedValue={selected} onTabSelect={onTabSelect} className={style[\"tabs\"]}>\n {leftTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n <div className={style[\"tab-divider\"]}></div>\n {rightTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n </TabList>\n );\n};\n\nconst OutputTabEl = (props: TabProps) => {\n return <Tab {...props} className={mergeClasses(style[\"tab\"], props.className)} />;\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 { tokens } from \"@fluentui/react-components\";\nimport { Program } from \"@typespec/compiler\";\nimport { ColorPalette, ColorProvider, TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { FileOutput } from \"../file-output/file-output.js\";\nimport { OutputTab, OutputTabs } from \"../output-tabs/output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"../playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { OutputEditor } from \"../typespec-editor.js\";\nimport style from \"./output-view.module.css\";\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 <></>;\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: OutputTab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): OutputTab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <div className={style[\"output-view\"]}>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className={style[\"output-content\"]}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </div>\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 default:\n return program && <TypeGraphViewer program={program} />;\n }\n};\n\ntype ViewSelection = { type: \"file\"; filename: string; content: string } | { type: \"type-graph\" };\n\ninterface TypeGraphViewerProps {\n program: Program;\n}\nconst TypeGraphViewer = ({ program }: TypeGraphViewerProps) => {\n return (\n <div className={style[\"type-graph-viewer\"]}>\n <ColorProvider colors={TypeGraphColors}>\n <TypeSpecProgramViewer program={program} />\n </ColorProvider>\n </div>\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 { mergeClasses } from \"@fluentui/react-components\";\nimport {\n getSourceLocation,\n type Diagnostic,\n type DiagnosticTarget,\n type NoTarget,\n} from \"@typespec/compiler\";\nimport { FunctionComponent, memo, useCallback } from \"react\";\nimport style from \"./diagnostic-list.module.css\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({\n diagnostics,\n onDiagnosticSelected,\n}) => {\n if (diagnostics.length === 0) {\n return <div className={style[\"list\"]}>No errors</div>;\n }\n\n const handleItemSelected = useCallback(\n (diagnostic: Diagnostic) => {\n onDiagnosticSelected?.(diagnostic);\n },\n [onDiagnosticSelected]\n );\n return (\n <div className={style[\"list\"]}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} onItemSelected={handleItemSelected} />;\n })}\n </div>\n );\n};\n\ninterface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n readonly onItemSelected: (diagnostic: Diagnostic) => void;\n}\n\nconst DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic, onItemSelected }) => {\n const handleClick = useCallback(() => {\n onItemSelected(diagnostic);\n }, [diagnostic, onItemSelected]);\n return (\n <div tabIndex={0} className={style[\"item\"]} onClick={handleClick}>\n <div\n className={mergeClasses(\n (style[\"item-severity\"],\n style[diagnostic.severity === \"error\" ? \"item--error\" : \"item--warning\"])\n )}\n >\n {diagnostic.severity}\n </div>\n <div className={style[\"item-code\"]}>{diagnostic.code}</div>\n <div className={style[\"item-message\"]}>{diagnostic.message}</div>\n <div className={style[\"item-loc\"]}>\n <DiagnosticTargetLink target={diagnostic.target} />\n </div>\n </div>\n );\n};\n\nconst DiagnosticTargetLink = memo(({ target }: { target: DiagnosticTarget | typeof NoTarget }) => {\n if (typeof target === \"symbol\") {\n return <span></span>;\n }\n const location = getSourceLocation(target);\n const file = location.file.path === \"/test/main.tsp\" ? \"\" : `${location.file.path}:`;\n const { line, character } = location.file.getLineAndCharacterOfPosition(location.pos);\n return (\n <span>\n {file}\n {line + 1}:{character + 1}\n </span>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ChevronDown16Regular, ErrorCircle16Filled, Warning16Filled } from \"@fluentui/react-icons\";\nimport { MouseEventHandler, ReactNode, memo } from \"react\";\nimport { CompilationState } from \"../types.js\";\nimport style from \"./header.module.css\";\n\nexport interface ProblemPaneHeaderProps {\n compilationState: CompilationState | undefined;\n onClick?: MouseEventHandler<HTMLDivElement>;\n collaped: boolean;\n}\n\nexport const ProblemPaneHeader = memo(({ compilationState, ...props }: ProblemPaneHeaderProps) => {\n const noProblem = (\n <Container status=\"none\" {...props}>\n No problems\n </Container>\n );\n if (compilationState === undefined) {\n return noProblem;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <Container status=\"error\" {...props}>\n <ErrorCircle16Filled /> Internal Compiler Error\n </Container>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n if (diagnostics.length === 0) {\n return noProblem;\n }\n const errors = diagnostics.filter((x) => x.severity === \"error\");\n const warnings = diagnostics.filter((x) => x.severity === \"warning\");\n return (\n <Container status={errors.length > 0 ? \"error\" : \"warning\"} {...props}>\n {errors.length > 0 ? (\n <>\n <ErrorCircle16Filled className={style[\"error-icon\"]} /> {errors.length} errors\n </>\n ) : null}\n {warnings.length > 0 ? (\n <>\n <Warning16Filled className={style[\"warning-icon\"]} /> {warnings.length} warnings\n </>\n ) : null}\n </Container>\n );\n});\n\ninterface ContainerProps {\n collaped: boolean;\n onClick?: MouseEventHandler<HTMLDivElement>;\n children?: ReactNode;\n className?: string;\n status: \"error\" | \"warning\" | \"none\";\n}\n\nconst Container = ({ children, className, status, onClick, collaped }: ContainerProps) => {\n return (\n <div\n tabIndex={onClick === undefined ? undefined : 0}\n className={mergeClasses(\n style[\"header\"],\n status === \"error\" && style[\"header--error\"],\n status === \"warning\" && style[\"header--warning\"],\n className\n )}\n onClick={onClick}\n >\n <div className={style[\"header-content\"]}>{children}</div>\n <ChevronDown16Regular\n className={mergeClasses(\n style[\"header-chevron\"],\n collaped && style[\"header-chevron--collapsed\"]\n )}\n />\n </div>\n );\n};\n","import { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent, MouseEventHandler } from \"react\";\nimport { DiagnosticList } from \"../diagnostic-list/diagnostic-list.js\";\nimport { CompilationState } from \"../types.js\";\nimport { ProblemPaneHeader } from \"./header.js\";\nimport style from \"./problem-pane.module.css\";\n\nexport interface ProblemPaneProps {\n readonly collapsed: boolean;\n readonly compilationState: CompilationState | undefined;\n readonly onHeaderClick?: MouseEventHandler<HTMLDivElement>;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nexport const ProblemPane: FunctionComponent<ProblemPaneProps> = ({\n collapsed,\n compilationState,\n onHeaderClick,\n onDiagnosticSelected,\n}) => {\n return (\n <div className={style[\"problem-pane\"]}>\n <ProblemPaneHeader\n compilationState={compilationState}\n onClick={onHeaderClick}\n collaped={collapsed}\n />\n <div className={style[\"problem-content\"]}>\n <ProblemPaneContent\n compilationState={compilationState}\n onDiagnosticSelected={onDiagnosticSelected}\n />\n </div>\n </div>\n );\n};\n\ninterface ProblemPaneContentProps {\n readonly compilationState: CompilationState | undefined;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nconst ProblemPaneContent: FunctionComponent<ProblemPaneContentProps> = ({\n compilationState,\n onDiagnosticSelected,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <pre className={style[\"internal-compiler-error\"]}>\n {String(compilationState.internalCompilerError)}\n </pre>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n return diagnostics.length === 0 ? (\n <div className={style[\"no-problems\"]}> No problems</div>\n ) : (\n <DiagnosticList diagnostics={diagnostics} onDiagnosticSelected={onDiagnosticSelected} />\n );\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 | undefined)[];\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 | undefined)[]>(\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 if (defaultSizes) {\n updateSizes(defaultSizes);\n }\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, Diagnostic } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { EditorCommandBar } from \"../editor-command-bar/editor-command-bar.js\";\nimport { getMonacoRange } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { PlaygroundContextProvider } from \"./context/playground-context.js\";\nimport { DefaultFooter } from \"./default-footer.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view/output-view.js\";\nimport style from \"./playground.module.css\";\nimport { ProblemPane } from \"./problem-pane/index.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 readonly libraries: readonly 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 onFileBug?: () => 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 /**\n * Change the footer of the playground.\n */\n footer?: ReactNode;\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}\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 ...getMonacoRange(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 fileBug = useCallback(async () => {\n if (props.onFileBug) {\n saveCode();\n props.onFileBug();\n }\n }, [saveCode, typespecModel, props.onFileBug]);\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 const [verticalPaneSizes, setVerticalPaneSizes] = useState<(string | number | undefined)[]>(\n verticalPaneSizesConst.collapsed\n );\n const toggleProblemPane = useCallback(() => {\n setVerticalPaneSizes((value) => {\n return value === verticalPaneSizesConst.collapsed\n ? verticalPaneSizesConst.expanded\n : verticalPaneSizesConst.collapsed;\n });\n }, [setVerticalPaneSizes]);\n\n const onVerticalPaneSizeChange = useCallback(\n (sizes: number[]) => {\n setVerticalPaneSizes(sizes);\n },\n [setVerticalPaneSizes]\n );\n const handleDiagnosticSelected = useCallback(\n (diagnostic: Diagnostic) => {\n editorRef.current?.setSelection(getMonacoRange(host.compiler, diagnostic.target));\n },\n [setVerticalPaneSizes]\n );\n\n return (\n <PlaygroundContextProvider value={{ host }}>\n <div className={style[\"layout\"]}>\n <SplitPane sizes={verticalPaneSizes} onChange={onVerticalPaneSizeChange} split=\"horizontal\">\n <Pane>\n <SplitPane initialSizes={[\"50%\", \"50%\"]}>\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 fileBug={props.onFileBug ? fileBug : 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 </Pane>\n <Pane minSize={30}>\n <ProblemPane\n collapsed={verticalPaneSizes[1] === verticalPaneSizesConst.collapsed[1]}\n compilationState={compilationState}\n onHeaderClick={toggleProblemPane}\n onDiagnosticSelected={handleDiagnosticSelected}\n />\n </Pane>\n </SplitPane>\n {props.footer ?? <DefaultFooter />}\n </div>\n </PlaygroundContextProvider>\n );\n};\n\nconst verticalPaneSizesConst = {\n collapsed: [undefined, 30],\n expanded: [undefined, 200],\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 {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useState,\n} 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, UrlStateStorage, 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 readonly libraries: readonly string[];\n readonly importConfig?: LibraryImportOptions;\n /** Content to show while the playground data is loading(Libraries) */\n readonly fallback?: ReactNode;\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 config.fallback;\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(): UrlStateStorage<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 resolveSearchParams: stateStorage.resolveSearchParams,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["style","_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/react/context/playground-context.tsx","../../../src/react/footer/footer-item.tsx","../../../src/react/footer/footer-version-item.tsx","../../../src/react/footer/footer.tsx","../../../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/settings/compiler-settings-dialog-button.tsx","../../../src/editor-command-bar/editor-command-bar.tsx","../../../src/react/default-footer.tsx","../../../src/react/editor.tsx","../../../src/react/hooks.ts","../../../src/react/file-output/file-output.tsx","../../../src/react/output-tabs/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view/output-view.tsx","../../../src/react/diagnostic-list/diagnostic-list.tsx","../../../src/react/problem-pane/header.tsx","../../../src/react/problem-pane/problem-pane.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 { createContext, useContext } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\n\nexport interface PlaygroundContext {\n host: BrowserHost;\n}\n\nconst PlaygroundContext = createContext<PlaygroundContext | undefined>(undefined);\n\nexport const PlaygroundContextProvider = PlaygroundContext.Provider;\n\nexport function usePlaygroundContext(): PlaygroundContext {\n const context = useContext(PlaygroundContext);\n if (context === undefined) {\n throw new Error(\"usePlaygroundContext must be used within a PlaygroundContextProvider\");\n }\n return context;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterItemProps {\n className?: string;\n link?: string;\n children: ReactNode;\n}\n\nexport const FooterItem: FunctionComponent<FooterItemProps> = ({ children, link, className }) => {\n const resolvedClassName = mergeClasses(style[\"footer-item\"], className);\n return link ? (\n <a className={resolvedClassName} href={link} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n ) : (\n <div className={resolvedClassName}>{children}</div>\n );\n};\n","import {\n Popover,\n PopoverSurface,\n PopoverTrigger,\n Select,\n SelectOnChangeData,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableHeaderCell,\n TableRow,\n Title3,\n} from \"@fluentui/react-components\";\nimport { ChangeEvent, FunctionComponent, memo, useCallback } from \"react\";\nimport { usePlaygroundContext } from \"../context/playground-context.js\";\nimport { FooterItem } from \"./footer-item.js\";\nimport style from \"./footer-version-item.module.css\";\n\nexport interface VersionSelectorVersion {\n name: string;\n label: string;\n}\n\nexport interface VersionSelectorProps {\n versions: VersionSelectorVersion[];\n\n /** Currently selected version , must match one of the version name. */\n selected: string;\n\n /** Latest released version, must match one of the version name. */\n latest?: string;\n\n /** Callback when a new version has been selected */\n onChange: (version: VersionSelectorVersion) => void;\n}\n\nexport interface FooterVersionItemProps {\n /** Provide a way to change the version of packages in the playground */\n versionSelector?: VersionSelectorProps;\n}\n\nexport const FooterVersionItem = memo(({ versionSelector }: FooterVersionItemProps) => {\n const { host } = usePlaygroundContext();\n const latest = versionSelector?.latest;\n const selected = versionSelector?.selected ?? host.compiler.MANIFEST.version;\n return (\n <FooterItem className={style[\"version-item\"]}>\n <Popover>\n <PopoverTrigger disableButtonEnhancement>\n <div className={style[\"button\"]}>\n <span>Version </span>\n <span>{selected}</span>\n <span>{latest ? (latest === selected ? \" (latest)\" : \" (old)\") : \"\"}</span>\n </div>\n </PopoverTrigger>\n\n <PopoverSurface>\n <VersionsPopup versionSelector={versionSelector} />\n </PopoverSurface>\n </Popover>\n </FooterItem>\n );\n});\n\ninterface VersionsPopupProps {\n versionSelector?: VersionSelectorProps;\n}\n\nconst VersionsPopup: FunctionComponent<VersionsPopupProps> = memo(({ versionSelector }) => {\n const { host } = usePlaygroundContext();\n\n return (\n <div style={{ maxWidth: \"400px\" }}>\n {versionSelector && <VersionSelector {...versionSelector} />}\n <div>\n <Title3>Loaded libraries</Title3>\n <Table size=\"small\">\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHeaderCell key={column.columnKey}>{column.label}</TableHeaderCell>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Object.values(host.libraries).map((item) => (\n <TableRow key={item.name}>\n <TableCell>{item.name}</TableCell>\n <TableCell>{item.packageJson.version}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n );\n});\n\nconst columns = [\n { columnKey: \"name\", label: \"Library\" },\n { columnKey: \"version\", label: \"Version\" },\n];\n\nconst VersionSelector = memo(({ versions, selected, latest, onChange }: VersionSelectorProps) => {\n const changeVersion = useCallback(\n (ev: ChangeEvent<HTMLSelectElement>, data: SelectOnChangeData) => {\n onChange(versions.find((x) => x.name === data.value)!);\n },\n [versions, onChange]\n );\n return (\n <div>\n <Title3>Select release</Title3>\n <Select value={selected} onChange={changeVersion} aria-label=\"Select version\">\n {versions.map((version) => (\n <option key={version.name} value={version.name}>\n {version.label} {version.name === latest ? \"(latest)\" : \"\"}\n </option>\n ))}\n </Select>\n </div>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterProps {\n className?: string;\n children: ReactNode;\n}\n\nexport const Footer: FunctionComponent<FooterProps> = ({ className, children }) => {\n return <div className={mergeClasses(style.footer, className)}>{children}</div>;\n};\n","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\n className=\"sample-dropdown\"\n onChange={handleSelected}\n value={selectedEmitter}\n aria-label=\"Select an emitter\"\n >\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\n className=\"sample-dropdown\"\n onChange={handleSelected}\n value={selectedSampleName ?? \"\"}\n aria-label=\"Select a sample\"\n >\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\";\nimport style from \"./emitter-options-form.module.css\";\n\nexport interface EmitterOptionsFormProps {\n readonly library: PlaygroundTspLibrary;\n readonly options: EmitterOptions;\n readonly optionsChanged: (options: EmitterOptions) => void;\n}\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 className={style[\"form\"]}>\n {entries.map(([key, value]) => {\n return (\n <div key={key} className={style[\"form-item\"]}>\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\ninterface JsonSchemaProperty {\n readonly type: \"string\" | \"boolean\" | \"number\";\n readonly description?: string;\n readonly enum?: string[];\n readonly default?: any;\n}\n\ninterface JsonSchemaPropertyInputProps {\n readonly emitterOptions: Record<string, unknown>;\n readonly name: string;\n readonly prop: JsonSchemaProperty;\n readonly 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 (\n <Switch\n className={style[\"switch\"]}\n label={prettyName}\n labelPosition=\"above\"\n checked={value}\n onChange={handleChange}\n />\n );\n case \"string\":\n default:\n return (\n <div className={style[\"item\"]}>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\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 );\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 // eslint-disable-next-line deprecation/deprecation\n const linter = lib.linter ?? lib.definition?.linter;\n return Object.keys(linter?.ruleSets ?? {}).map((x) => `${lib.name}/${x}`) 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 { Divider } from \"@fluentui/react-components\";\nimport { 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 interface CompilerSettingsProps {\n readonly host: BrowserHost;\n readonly selectedEmitter: string;\n readonly options: CompilerOptions;\n readonly 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>\n <>Emitter: {selectedEmitter}</>\n <Divider style={{ marginTop: 20 }} />\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <Divider style={{ marginTop: 20 }} />\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 DialogContent,\n DialogSurface,\n DialogTitle,\n DialogTrigger,\n ToolbarButton,\n} from \"@fluentui/react-components\";\nimport { Settings24Regular } from \"@fluentui/react-icons\";\nimport type { CompilerOptions } from \"@typespec/compiler\";\nimport { usePlaygroundContext } from \"../context/index.js\";\nimport { CompilerSettings } from \"./compiler-settings.js\";\n\nexport interface CompilerSettingsDialogButtonProps {\n selectedEmitter: string;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n}\n\nexport const CompilerSettingsDialogButton = ({\n selectedEmitter,\n compilerOptions,\n onCompilerOptionsChange,\n}: CompilerSettingsDialogButtonProps) => {\n const { host } = usePlaygroundContext();\n\n return (\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} aria-label=\"Open Settings\" />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <DialogTitle>Settings</DialogTitle>\n <DialogContent>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={compilerOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogContent>\n </DialogBody>\n </DialogSurface>\n </Dialog>\n );\n};\n","import { Link, Toolbar, ToolbarButton, Tooltip } from \"@fluentui/react-components\";\nimport { Broom16Filled, Bug16Regular, Save16Regular } from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { EmitterDropdown } from \"../react/emitter-dropdown.js\";\nimport { SamplesDropdown } from \"../react/samples-dropdown.js\";\nimport { CompilerSettingsDialogButton } from \"../react/settings/compiler-settings-dialog-button.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport style from \"./editor-command-bar.module.css\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n fileBug?: () => 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 fileBug,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions,\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 = fileBug ? <FileBugButton onClick={fileBug} /> : 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 className={style[\"bar\"]}>\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 <>\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n <div className={style[\"spacer\"]}></div>\n </>\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n\n {documentation && (\n <>\n <div className={style[\"spacer\"]}></div>\n {documentation}\n </>\n )}\n <div className={style[\"divider\"]}></div>\n {bugButton}\n <CompilerSettingsDialogButton\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n selectedEmitter={selectedEmitter}\n />\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 ></ToolbarButton>\n </Tooltip>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport { FooterVersionItem } from \"./footer/footer-version-item.js\";\nimport { Footer } from \"./footer/index.js\";\n\nexport const DefaultFooter: FunctionComponent = () => {\n return (\n <Footer>\n <FooterVersionItem />\n </Footer>\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 style={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n data-tabster='{\"uncontrolled\": {}}' // https://github.com/microsoft/tabster/issues/316\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 { 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 { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"../types.js\";\nimport style from \"./file-output.module.css\";\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 className={style[\"file-output\"]}>\n <div className={style[\"viewer-selector\"]}>\n <Select value={selected} onChange={handleSelected} aria-label=\"Select viewer\">\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n </div>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n","import {\n SelectTabData,\n SelectTabEvent,\n SelectTabEventHandler,\n Tab,\n TabList,\n TabProps,\n mergeClasses,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement, useCallback } from \"react\";\nimport style from \"./output-tabs.module.css\";\n\nexport interface OutputTab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: OutputTab[];\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\n const onTabSelect: SelectTabEventHandler = useCallback(\n (event: SelectTabEvent, data: SelectTabData) => {\n onSelect(data.value as any);\n },\n [onSelect]\n );\n\n return (\n <TabList selectedValue={selected} onTabSelect={onTabSelect} className={style[\"tabs\"]}>\n {leftTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n <div className={style[\"tab-divider\"]}></div>\n {rightTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n </TabList>\n );\n};\n\nconst OutputTabEl = (props: TabProps) => {\n return <Tab {...props} className={mergeClasses(style[\"tab\"], props.className)} />;\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 { tokens } from \"@fluentui/react-components\";\nimport { Program } from \"@typespec/compiler\";\nimport { ColorPalette, ColorProvider, TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { FileOutput } from \"../file-output/file-output.js\";\nimport { OutputTab, OutputTabs } from \"../output-tabs/output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"../playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { OutputEditor } from \"../typespec-editor.js\";\nimport style from \"./output-view.module.css\";\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 <></>;\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: OutputTab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): OutputTab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <div className={style[\"output-view\"]}>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className={style[\"output-content\"]}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </div>\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 default:\n return program && <TypeGraphViewer program={program} />;\n }\n};\n\ntype ViewSelection = { type: \"file\"; filename: string; content: string } | { type: \"type-graph\" };\n\ninterface TypeGraphViewerProps {\n program: Program;\n}\nconst TypeGraphViewer = ({ program }: TypeGraphViewerProps) => {\n return (\n <div className={style[\"type-graph-viewer\"]}>\n <ColorProvider colors={TypeGraphColors}>\n <TypeSpecProgramViewer program={program} />\n </ColorProvider>\n </div>\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 { mergeClasses } from \"@fluentui/react-components\";\nimport {\n getSourceLocation,\n type Diagnostic,\n type DiagnosticTarget,\n type NoTarget,\n} from \"@typespec/compiler\";\nimport { FunctionComponent, memo, useCallback } from \"react\";\nimport style from \"./diagnostic-list.module.css\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({\n diagnostics,\n onDiagnosticSelected,\n}) => {\n if (diagnostics.length === 0) {\n return <div className={style[\"list\"]}>No errors</div>;\n }\n\n const handleItemSelected = useCallback(\n (diagnostic: Diagnostic) => {\n onDiagnosticSelected?.(diagnostic);\n },\n [onDiagnosticSelected]\n );\n return (\n <div className={style[\"list\"]}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} onItemSelected={handleItemSelected} />;\n })}\n </div>\n );\n};\n\ninterface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n readonly onItemSelected: (diagnostic: Diagnostic) => void;\n}\n\nconst DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic, onItemSelected }) => {\n const handleClick = useCallback(() => {\n onItemSelected(diagnostic);\n }, [diagnostic, onItemSelected]);\n return (\n <div tabIndex={0} className={style[\"item\"]} onClick={handleClick}>\n <div\n className={mergeClasses(\n (style[\"item-severity\"],\n style[diagnostic.severity === \"error\" ? \"item--error\" : \"item--warning\"])\n )}\n >\n {diagnostic.severity}\n </div>\n <div className={style[\"item-code\"]}>{diagnostic.code}</div>\n <div className={style[\"item-message\"]}>{diagnostic.message}</div>\n <div className={style[\"item-loc\"]}>\n <DiagnosticTargetLink target={diagnostic.target} />\n </div>\n </div>\n );\n};\n\nconst DiagnosticTargetLink = memo(({ target }: { target: DiagnosticTarget | typeof NoTarget }) => {\n if (typeof target === \"symbol\") {\n return <span></span>;\n }\n const location = getSourceLocation(target);\n const file = location.file.path === \"/test/main.tsp\" ? \"\" : `${location.file.path}:`;\n const { line, character } = location.file.getLineAndCharacterOfPosition(location.pos);\n return (\n <span>\n {file}\n {line + 1}:{character + 1}\n </span>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ChevronDown16Regular, ErrorCircle16Filled, Warning16Filled } from \"@fluentui/react-icons\";\nimport { MouseEventHandler, ReactNode, memo } from \"react\";\nimport { CompilationState } from \"../types.js\";\nimport style from \"./header.module.css\";\n\nexport interface ProblemPaneHeaderProps {\n compilationState: CompilationState | undefined;\n onClick?: MouseEventHandler<HTMLDivElement>;\n collaped: boolean;\n}\n\nexport const ProblemPaneHeader = memo(({ compilationState, ...props }: ProblemPaneHeaderProps) => {\n const noProblem = (\n <Container status=\"none\" {...props}>\n No problems\n </Container>\n );\n if (compilationState === undefined) {\n return noProblem;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <Container status=\"error\" {...props}>\n <ErrorCircle16Filled /> Internal Compiler Error\n </Container>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n if (diagnostics.length === 0) {\n return noProblem;\n }\n const errors = diagnostics.filter((x) => x.severity === \"error\");\n const warnings = diagnostics.filter((x) => x.severity === \"warning\");\n return (\n <Container status={errors.length > 0 ? \"error\" : \"warning\"} {...props}>\n {errors.length > 0 ? (\n <>\n <ErrorCircle16Filled className={style[\"error-icon\"]} /> {errors.length} errors\n </>\n ) : null}\n {warnings.length > 0 ? (\n <>\n <Warning16Filled className={style[\"warning-icon\"]} /> {warnings.length} warnings\n </>\n ) : null}\n </Container>\n );\n});\n\ninterface ContainerProps {\n collaped: boolean;\n onClick?: MouseEventHandler<HTMLDivElement>;\n children?: ReactNode;\n className?: string;\n status: \"error\" | \"warning\" | \"none\";\n}\n\nconst Container = ({ children, className, status, onClick, collaped }: ContainerProps) => {\n return (\n <div\n tabIndex={onClick === undefined ? undefined : 0}\n className={mergeClasses(\n style[\"header\"],\n status === \"error\" && style[\"header--error\"],\n status === \"warning\" && style[\"header--warning\"],\n className\n )}\n onClick={onClick}\n >\n <div className={style[\"header-content\"]}>{children}</div>\n <ChevronDown16Regular\n className={mergeClasses(\n style[\"header-chevron\"],\n collaped && style[\"header-chevron--collapsed\"]\n )}\n />\n </div>\n );\n};\n","import { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent, MouseEventHandler } from \"react\";\nimport { DiagnosticList } from \"../diagnostic-list/diagnostic-list.js\";\nimport { CompilationState } from \"../types.js\";\nimport { ProblemPaneHeader } from \"./header.js\";\nimport style from \"./problem-pane.module.css\";\n\nexport interface ProblemPaneProps {\n readonly collapsed: boolean;\n readonly compilationState: CompilationState | undefined;\n readonly onHeaderClick?: MouseEventHandler<HTMLDivElement>;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nexport const ProblemPane: FunctionComponent<ProblemPaneProps> = ({\n collapsed,\n compilationState,\n onHeaderClick,\n onDiagnosticSelected,\n}) => {\n return (\n <div className={style[\"problem-pane\"]}>\n <ProblemPaneHeader\n compilationState={compilationState}\n onClick={onHeaderClick}\n collaped={collapsed}\n />\n <div className={style[\"problem-content\"]} aria-hidden={collapsed}>\n <ProblemPaneContent\n compilationState={compilationState}\n onDiagnosticSelected={onDiagnosticSelected}\n />\n </div>\n </div>\n );\n};\n\ninterface ProblemPaneContentProps {\n readonly compilationState: CompilationState | undefined;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nconst ProblemPaneContent: FunctionComponent<ProblemPaneContentProps> = ({\n compilationState,\n onDiagnosticSelected,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <pre className={style[\"internal-compiler-error\"]}>\n {String(compilationState.internalCompilerError)}\n </pre>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n return diagnostics.length === 0 ? (\n <div className={style[\"no-problems\"]}> No problems</div>\n ) : (\n <DiagnosticList diagnostics={diagnostics} onDiagnosticSelected={onDiagnosticSelected} />\n );\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 | undefined)[];\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 | undefined)[]>(\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 if (defaultSizes) {\n updateSizes(defaultSizes);\n }\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, Diagnostic } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { EditorCommandBar } from \"../editor-command-bar/editor-command-bar.js\";\nimport { getMonacoRange } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { PlaygroundContextProvider } from \"./context/playground-context.js\";\nimport { DefaultFooter } from \"./default-footer.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view/output-view.js\";\nimport style from \"./playground.module.css\";\nimport { ProblemPane } from \"./problem-pane/index.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 readonly libraries: readonly 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 onFileBug?: () => 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 /**\n * Change the footer of the playground.\n */\n footer?: ReactNode;\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}\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 ...getMonacoRange(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 fileBug = useCallback(async () => {\n if (props.onFileBug) {\n saveCode();\n props.onFileBug();\n }\n }, [saveCode, typespecModel, props.onFileBug]);\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 const [verticalPaneSizes, setVerticalPaneSizes] = useState<(string | number | undefined)[]>(\n verticalPaneSizesConst.collapsed\n );\n const toggleProblemPane = useCallback(() => {\n setVerticalPaneSizes((value) => {\n return value === verticalPaneSizesConst.collapsed\n ? verticalPaneSizesConst.expanded\n : verticalPaneSizesConst.collapsed;\n });\n }, [setVerticalPaneSizes]);\n\n const onVerticalPaneSizeChange = useCallback(\n (sizes: number[]) => {\n setVerticalPaneSizes(sizes);\n },\n [setVerticalPaneSizes]\n );\n const handleDiagnosticSelected = useCallback(\n (diagnostic: Diagnostic) => {\n editorRef.current?.setSelection(getMonacoRange(host.compiler, diagnostic.target));\n },\n [setVerticalPaneSizes]\n );\n\n return (\n <PlaygroundContextProvider value={{ host }}>\n <div className={style[\"layout\"]}>\n <SplitPane sizes={verticalPaneSizes} onChange={onVerticalPaneSizeChange} split=\"horizontal\">\n <Pane>\n <SplitPane initialSizes={[\"50%\", \"50%\"]}>\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 fileBug={props.onFileBug ? fileBug : 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 </Pane>\n <Pane minSize={30}>\n <ProblemPane\n collapsed={verticalPaneSizes[1] === verticalPaneSizesConst.collapsed[1]}\n compilationState={compilationState}\n onHeaderClick={toggleProblemPane}\n onDiagnosticSelected={handleDiagnosticSelected}\n />\n </Pane>\n </SplitPane>\n {props.footer ?? <DefaultFooter />}\n </div>\n </PlaygroundContextProvider>\n );\n};\n\nconst verticalPaneSizesConst = {\n collapsed: [undefined, 30],\n expanded: [undefined, 200],\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 {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useState,\n} 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, UrlStateStorage, 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 readonly libraries: readonly string[];\n readonly importConfig?: LibraryImportOptions;\n /** Content to show while the playground data is loading(Libraries) */\n readonly fallback?: ReactNode;\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 config.fallback;\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(): UrlStateStorage<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 resolveSearchParams: stateStorage.resolveSearchParams,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["style","_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import 'swagger-ui-react/swagger-ui.css';
3
2
  import { lazy, Suspense } from 'react';
3
+ import 'swagger-ui-dist/swagger-ui.css';
4
4
 
5
5
  var style = {"swagger-ui-container":"swagger-ui-module_swagger-ui-container__6pJ6L"};
6
6
 
7
- const LazySwaggerUI = lazy(() => import('swagger-ui-react'));
7
+ const LazySwaggerUI = lazy(() => import('../../react-wrapper-DhFQQ2Do.js'));
8
8
  const SwaggerUI = (props) => {
9
9
  return (jsx(Suspense, { fallback: jsx("div", {}), children: jsx("div", { className: style["swagger-ui-container"], children: jsx(LazySwaggerUI, { spec: props.spec }) }) }));
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/react/viewers/swagger-ui.tsx","../../../../src/react/viewers/index.tsx"],"sourcesContent":["import { FunctionComponent, Suspense, lazy } from \"react\";\nimport style from \"./swagger-ui.module.css\";\n\nexport interface SwaggerUIProps {\n readonly spec: string;\n}\n\nconst LazySwaggerUI = lazy(() => import(\"swagger-ui-react\") as any);\n\nexport const SwaggerUI: FunctionComponent<SwaggerUIProps> = (props) => {\n return (\n <Suspense fallback={<div />}>\n <div className={style[\"swagger-ui-container\"]}>\n <LazySwaggerUI spec={props.spec} />\n </div>\n </Suspense>\n );\n};\n","import \"swagger-ui-react/swagger-ui.css\";\nimport { FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { SwaggerUI } from \"./swagger-ui.js\";\n\nexport const SwaggerUIViewer: FileOutputViewer = {\n key: \"swaggerUI\",\n label: \"Swagger UI\",\n render: ({ content }: ViewerProps) => <SwaggerUI spec={content} />,\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAOA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,OAAO,kBAAkB,CAAQ,CAAC,CAAC;AAE7D,MAAM,SAAS,GAAsC,CAAC,KAAK,KAAI;AACpE,IAAA,QACEA,GAAA,CAAC,QAAQ,EAAA,EAAC,QAAQ,EAAEA,GAAO,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EACzBA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAC3CA,GAAC,CAAA,aAAa,EAAC,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,EAAI,CAAA,EAAA,CAC/B,EACG,CAAA,EACX;AACJ,CAAC;;ACbY,MAAA,eAAe,GAAqB;AAC/C,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,MAAM,EAAE,CAAC,EAAE,OAAO,EAAe,KAAKA,GAAA,CAAC,SAAS,EAAA,EAAC,IAAI,EAAE,OAAO,EAAI,CAAA;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/react/viewers/swagger-ui.tsx","../../../../src/react/viewers/index.tsx"],"sourcesContent":["import { FunctionComponent, Suspense, lazy } from \"react\";\nimport \"swagger-ui-dist/swagger-ui.css\";\nimport style from \"./swagger-ui.module.css\";\n\nexport interface SwaggerUIProps {\n readonly spec: string;\n}\n\nconst LazySwaggerUI = lazy(() => import(\"./react-wrapper.js\"));\n\nexport const SwaggerUI: FunctionComponent<SwaggerUIProps> = (props) => {\n return (\n <Suspense fallback={<div />}>\n <div className={style[\"swagger-ui-container\"]}>\n <LazySwaggerUI spec={props.spec} />\n </div>\n </Suspense>\n );\n};\n","import { FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { SwaggerUI } from \"./swagger-ui.js\";\n\nexport const SwaggerUIViewer: FileOutputViewer = {\n key: \"swaggerUI\",\n label: \"Swagger UI\",\n render: ({ content }: ViewerProps) => <SwaggerUI spec={content} />,\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAQA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,OAAO,iCAAoB,CAAC,CAAC,CAAC;AAExD,MAAM,SAAS,GAAsC,CAAC,KAAK,KAAI;AACpE,IAAA,QACEA,GAAA,CAAC,QAAQ,EAAA,EAAC,QAAQ,EAAEA,GAAO,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EACzBA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAC3CA,GAAC,CAAA,aAAa,EAAC,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,EAAI,CAAA,EAAA,CAC/B,EACG,CAAA,EACX;AACJ,CAAC;;ACfY,MAAA,eAAe,GAAqB;AAC/C,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,MAAM,EAAE,CAAC,EAAE,OAAO,EAAe,KAAKA,GAAA,CAAC,SAAS,EAAA,EAAC,IAAI,EAAE,OAAO,EAAI,CAAA;;;;;"}
@@ -0,0 +1,21 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useRef, useEffect } from 'react';
3
+ import SwaggerUIBundle from 'swagger-ui-dist/swagger-ui-es-bundle.js';
4
+
5
+ var reactWrapper = (props) => {
6
+ const uiRef = useRef(null);
7
+ const uiInstance = useRef(null);
8
+ useEffect(() => {
9
+ if (uiInstance.current === null) {
10
+ uiInstance.current = SwaggerUIBundle({
11
+ domNode: uiRef.current,
12
+ spec: {},
13
+ });
14
+ }
15
+ uiInstance.current.specActions.updateSpec(props.spec);
16
+ }, [uiRef.current, props.spec]);
17
+ return jsx("div", { ref: uiRef });
18
+ };
19
+
20
+ export { reactWrapper as default };
21
+ //# sourceMappingURL=react-wrapper-DhFQQ2Do.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-wrapper-DhFQQ2Do.js","sources":["../../src/react/viewers/react-wrapper.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n// File exists but not describe in the @types package\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SwaggerUIBundle from \"swagger-ui-dist/swagger-ui-es-bundle.js\";\n\nexport default (props: { spec: string }) => {\n const uiRef = useRef(null);\n const uiInstance = useRef<any>(null);\n\n useEffect(() => {\n if (uiInstance.current === null) {\n uiInstance.current = SwaggerUIBundle({\n domNode: uiRef.current,\n spec: {},\n });\n }\n uiInstance.current.specActions.updateSpec(props.spec);\n }, [uiRef.current, props.spec]);\n\n return <div ref={uiRef}></div>;\n};\n"],"names":["_jsx"],"mappings":";;;;AAMA,mBAAe,CAAC,KAAuB,KAAI;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/B,YAAA,UAAU,CAAC,OAAO,GAAG,eAAe,CAAC;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,gBAAA,IAAI,EAAE,EAAE;AACT,aAAA,CAAC,CAAC;SACJ;QACD,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvD,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhC,IAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,KAAK,GAAQ,CAAC;AACjC,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter-dropdown.d.ts","sourceRoot":"","sources":["../../../src/react/emitter-dropdown.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CAuBnE,CAAC"}
1
+ {"version":3,"file":"emitter-dropdown.d.ts","sourceRoot":"","sources":["../../../src/react/emitter-dropdown.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA4BnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"samples-dropdown.d.ts","sourceRoot":"","sources":["../../../src/react/samples-dropdown.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CAyBnE,CAAC"}
1
+ {"version":3,"file":"samples-dropdown.d.ts","sourceRoot":"","sources":["../../../src/react/samples-dropdown.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA8BnE,CAAC"}
@@ -1,4 +1,3 @@
1
- import "swagger-ui-react/swagger-ui.css";
2
1
  import { FileOutputViewer } from "../types.js";
3
2
  export declare const SwaggerUIViewer: FileOutputViewer;
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/viewers/index.tsx"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,eAAe,EAAE,gBAI7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/viewers/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,eAAe,EAAE,gBAI7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ declare const _default: (props: {
2
+ spec: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export default _default;
5
+ //# sourceMappingURL=react-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/react/viewers/react-wrapper.tsx"],"names":[],"mappings":"gCAMuB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAAvC,wBAeE"}
@@ -1,4 +1,5 @@
1
1
  import { FunctionComponent } from "react";
2
+ import "swagger-ui-dist/swagger-ui.css";
2
3
  export interface SwaggerUIProps {
3
4
  readonly spec: string;
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-ui.d.ts","sourceRoot":"","sources":["../../../../src/react/viewers/swagger-ui.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AAG1D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAQvD,CAAC"}
1
+ {"version":3,"file":"swagger-ui.d.ts","sourceRoot":"","sources":["../../../../src/react/viewers/swagger-ui.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,gCAAgC,CAAC;AAGxC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAQvD,CAAC"}
@@ -657,4 +657,4 @@ function createUrlStateStorage(schema) {
657
657
  }
658
658
 
659
659
  export { createUrlStateStorage as a, createBrowserHost as c, getMonacoRange as g, registerMonacoLanguage as r };
660
- //# sourceMappingURL=state-storage-jySQ9uS5.js.map
660
+ //# sourceMappingURL=state-storage-C_Vk3Rrw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-storage-jySQ9uS5.js","sources":["../../src/core.ts","../../src/browser-host.ts","../../src/lsp/lsp-to-monaco.ts","../../src/services.ts","../../src/state-storage.ts"],"sourcesContent":["/**\n * Options for importing libraries.\n */\nexport interface LibraryImportOptions {\n /**\n * Should use es-module-shim importmap-shim instead of built-in import and importmap system.\n * @see https://github.com/guybedford/es-module-shims\n */\n useShim?: boolean;\n}\n\nexport async function importTypeSpecCompiler(\n config: any\n): Promise<typeof import(\"@typespec/compiler\")> {\n return (await importLibrary(\"@typespec/compiler\", config)) as any;\n}\n\n/**\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nexport async function importLibrary(name: string, config: LibraryImportOptions): Promise<unknown> {\n return config.useShim\n ? importShim(name)\n : import(/* @vite-ignore */ /* webpackIgnore: true */ name);\n}\n\n/**\n * Loading external import map doesn't work yet\n *\n * https://github.com/WICG/import-maps/issues/235\n *\n * A polyfill for importmap is loaded but required calling importShim instead of the native import https://github.com/guybedford/es-module-shims\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nasync function importShim(name: string): Promise<unknown> {\n return (window as any).importShim(name);\n}\n","import { createSourceFile, getSourceFileKindFromExt, resolvePath } from \"@typespec/compiler\";\nimport { LibraryImportOptions, importLibrary, importTypeSpecCompiler } from \"./core.js\";\nimport { BrowserHost, PlaygroundTspLibrary } from \"./types.js\";\n\nexport function resolveVirtualPath(path: string, ...paths: string[]) {\n return resolvePath(\"/test\", path, ...paths);\n}\n\n/**\n * Create the browser host from the list of libraries.\n * @param libsToLoad List of libraries to load. Those must be set in the webpage importmap.\n * @param importOptions Import configuration.\n * @returns\n */\nexport async function createBrowserHost(\n libsToLoad: readonly string[],\n importOptions: LibraryImportOptions = {}\n): Promise<BrowserHost> {\n const virtualFs = new Map<string, string>();\n const jsImports = new Map<string, Promise<any>>();\n\n const libraries: Record<string, PlaygroundTspLibrary> = {};\n for (const libName of libsToLoad) {\n const { _TypeSpecLibrary_, $lib, $linter } = (await importLibrary(\n libName,\n importOptions\n )) as any;\n libraries[libName] = {\n name: libName,\n isEmitter: $lib?.emitter,\n definition: $lib,\n packageJson: JSON.parse(_TypeSpecLibrary_.typespecSourceFiles[\"package.json\"]),\n linter: $linter,\n };\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.typespecSourceFiles)) {\n virtualFs.set(`/test/node_modules/${libName}/${key}`, value);\n }\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.jsSourceFiles)) {\n addJsImport(`/test/node_modules/${libName}/${key}`, value);\n }\n virtualFs.set(\n `/test/package.json`,\n JSON.stringify({\n name: \"playground-pkg\",\n dependencies: Object.fromEntries(\n Object.values(libraries).map((x) => [x.name, x.packageJson.version])\n ),\n })\n );\n }\n\n function addJsImport(path: string, value: any) {\n virtualFs.set(path, \"\");\n jsImports.set(path, value);\n }\n return {\n compiler: await importTypeSpecCompiler(importOptions),\n libraries,\n async readUrl(url: string) {\n const contents = virtualFs.get(url);\n if (contents === undefined) {\n const e = new Error(`File ${url} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, url);\n },\n async readFile(path: string) {\n path = resolveVirtualPath(path);\n const contents = virtualFs.get(path);\n if (contents === undefined) {\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, path);\n },\n\n async writeFile(path: string, content: string) {\n path = resolveVirtualPath(path);\n virtualFs.set(path, content);\n },\n\n async readDir(path: string) {\n path = resolveVirtualPath(path);\n const fileFolder = [...virtualFs.keys()]\n .filter((x) => x.startsWith(`${path}/`))\n .map((x) => x.replace(`${path}/`, \"\"))\n .map((x) => {\n const index = x.indexOf(\"/\");\n return index !== -1 ? x.substring(0, index) : x;\n });\n return [...new Set(fileFolder)];\n },\n\n async rm(path: string) {\n path = resolveVirtualPath(path);\n\n for (const key of virtualFs.keys()) {\n if (key === path || key.startsWith(`${path}/`)) {\n virtualFs.delete(key);\n }\n }\n },\n\n getLibDirs() {\n return [resolveVirtualPath(\"/test/node_modules/@typespec/compiler/lib\")];\n },\n\n getExecutionRoot() {\n return resolveVirtualPath(\".tsp\");\n },\n\n async getJsImport(path) {\n path = resolveVirtualPath(path);\n const module = await jsImports.get(path);\n if (module === undefined) {\n const e = new Error(`Module ${path} not found`);\n (e as any).code = \"MODULE_NOT_FOUND\";\n throw e;\n }\n return module;\n },\n\n async stat(path: string) {\n path = resolveVirtualPath(path);\n\n if (virtualFs.has(path)) {\n return {\n isDirectory() {\n return false;\n },\n isFile() {\n return true;\n },\n };\n }\n\n for (const fsPath of virtualFs.keys()) {\n if (fsPath.startsWith(path) && fsPath !== path) {\n return {\n isDirectory() {\n return true;\n },\n isFile() {\n return false;\n },\n };\n }\n }\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n },\n\n // symlinks not supported in test-host\n async realpath(path) {\n return path;\n },\n\n getSourceFileKind: getSourceFileKindFromExt,\n\n logSink: console,\n mkdirp: async (path: string) => path,\n fileURLToPath(path) {\n return path.replace(\"inmemory:/\", \"\");\n },\n pathToFileURL(path) {\n return \"inmemory:/\" + resolveVirtualPath(path);\n },\n };\n}\n","import * as monaco from \"monaco-editor\";\nimport type * as lsp from \"vscode-languageserver\";\nimport { DiagnosticSeverity } from \"vscode-languageserver\";\n\nfunction range(range: lsp.Range): monaco.IRange {\n return {\n startColumn: range.start.character + 1,\n startLineNumber: range.start.line + 1,\n endColumn: range.end.character + 1,\n endLineNumber: range.end.line + 1,\n };\n}\n\nfunction foldingRange(range: lsp.FoldingRange): monaco.languages.FoldingRange {\n return {\n start: range.startLine + 1,\n end: range.endLine + 1,\n kind: range.kind ? new monaco.languages.FoldingRangeKind(range.kind) : undefined,\n };\n}\n\nfunction textEdits(edit: lsp.TextEdit[]): monaco.languages.TextEdit[] {\n return edit.map(textEdit);\n}\n\nfunction textEdit(edit: lsp.TextEdit): monaco.languages.TextEdit {\n return {\n range: range(edit.range),\n text: edit.newText,\n };\n}\n\nfunction signatureHelp(help: lsp.SignatureHelp | undefined): monaco.languages.SignatureHelp {\n return {\n signatures:\n help?.signatures.map((x) => ({\n ...x,\n parameters: x.parameters ?? [],\n })) ?? [],\n activeSignature: help?.activeSignature ?? 0,\n activeParameter: help?.activeParameter ?? 0,\n };\n}\n\nfunction command(command: lsp.Command): monaco.languages.Command {\n return {\n id: command.command,\n title: command.title,\n arguments: command.arguments,\n };\n}\n\nfunction severity(severity: lsp.DiagnosticSeverity): monaco.MarkerSeverity {\n switch (severity) {\n case DiagnosticSeverity.Error:\n return monaco.MarkerSeverity.Error;\n case DiagnosticSeverity.Warning:\n return monaco.MarkerSeverity.Warning;\n case DiagnosticSeverity.Hint:\n return monaco.MarkerSeverity.Hint;\n case DiagnosticSeverity.Information:\n return monaco.MarkerSeverity.Info;\n }\n}\n\nfunction diagnostic(diagnostic: lsp.Diagnostic): monaco.editor.IMarkerData {\n return {\n severity: diagnostic.severity ? severity(diagnostic.severity) : monaco.MarkerSeverity.Error,\n message: diagnostic.message,\n code: diagnostic.code?.toString(),\n source: diagnostic.source,\n startLineNumber: diagnostic.range.start.line + 1,\n startColumn: diagnostic.range.start.character + 1,\n endLineNumber: diagnostic.range.end.line + 1,\n endColumn: diagnostic.range.end.character + 1,\n };\n}\n\nfunction codeAction(action: lsp.CodeAction): monaco.languages.CodeAction {\n return {\n title: action.title,\n kind: action.kind,\n diagnostics: action.diagnostics?.map(diagnostic),\n command: action.command && command(action.command),\n };\n}\n\nexport const LspToMonaco = {\n range,\n foldingRange,\n textEdits,\n textEdit,\n signatureHelp,\n codeAction,\n command,\n} as const;\n","import {\n DiagnosticTarget,\n NoTarget,\n ServerHost,\n TypeSpecLanguageConfiguration,\n} from \"@typespec/compiler\";\nimport * as monaco from \"monaco-editor\";\nimport * as lsp from \"vscode-languageserver\";\nimport { DocumentHighlightKind, FormattingOptions } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { LspToMonaco } from \"./lsp/lsp-to-monaco.js\";\nimport { BrowserHost } from \"./types.js\";\n\nfunction getIndentAction(\n value: \"none\" | \"indent\" | \"indentOutdent\" | \"outdent\"\n): monaco.languages.IndentAction {\n switch (value) {\n case \"none\":\n return monaco.languages.IndentAction.None;\n case \"indent\":\n return monaco.languages.IndentAction.Indent;\n case \"indentOutdent\":\n return monaco.languages.IndentAction.IndentOutdent;\n case \"outdent\":\n return monaco.languages.IndentAction.Outdent;\n }\n}\n\nfunction getTypeSpecLanguageConfiguration(): monaco.languages.LanguageConfiguration {\n return {\n ...(TypeSpecLanguageConfiguration as any),\n onEnterRules: TypeSpecLanguageConfiguration.onEnterRules.map((rule) => {\n return {\n beforeText: new RegExp(rule.beforeText.pattern),\n previousLineText:\n \"previousLineText\" in rule ? new RegExp(rule.previousLineText.pattern) : undefined,\n action: {\n indentAction: getIndentAction(rule.action.indent),\n appendText: \"appendText\" in rule.action ? rule.action.appendText : undefined,\n removeText: \"removeText\" in rule.action ? rule.action.removeText : undefined,\n },\n };\n }),\n };\n}\n\nexport async function registerMonacoLanguage(host: BrowserHost) {\n monaco.languages.register({ id: \"typespec\", extensions: [\".tsp\"] });\n monaco.languages.setLanguageConfiguration(\"typespec\", getTypeSpecLanguageConfiguration());\n\n const serverHost: ServerHost = {\n compilerHost: host,\n getOpenDocumentByURL(url: string) {\n const model = monaco.editor.getModel(monaco.Uri.parse(url));\n return model ? textDocumentForModel(model) : undefined;\n },\n sendDiagnostics() {},\n // eslint-disable-next-line no-console\n log: console.log,\n applyEdit(param) {\n return Promise.resolve({ applied: false });\n },\n };\n\n const { createServer } = host.compiler;\n const serverLib = createServer(serverHost);\n const lsConfig = await serverLib.initialize({\n capabilities: {},\n processId: 1,\n workspaceFolders: [],\n rootUri: \"inmemory://\",\n });\n serverLib.initialized({});\n\n function textDocumentForModel(model: monaco.editor.IModel) {\n return TextDocument.create(\n model.uri.toString(),\n \"typespec\",\n model.getVersionId(),\n model.getValue()\n );\n }\n\n function lspDocumentArgs(model: monaco.editor.ITextModel) {\n return {\n textDocument: textDocumentForModel(model),\n };\n }\n\n function lspArgs(model: monaco.editor.ITextModel, pos: monaco.Position) {\n return {\n ...lspDocumentArgs(model),\n position: lspPosition(pos),\n };\n }\n\n function lspPosition(pos: monaco.Position): lsp.Position {\n return {\n line: pos.lineNumber - 1,\n character: pos.column - 1,\n };\n }\n\n function lspFormattingOptions(options: monaco.languages.FormattingOptions) {\n return FormattingOptions.create(options.tabSize, options.insertSpaces);\n }\n\n function monacoLocation(loc: lsp.Location): monaco.languages.Location {\n return {\n uri: monaco.Uri.parse(loc.uri),\n range: LspToMonaco.range(loc.range),\n };\n }\n\n function monacoDocumentHighlight(\n highlight: lsp.DocumentHighlight\n ): monaco.languages.DocumentHighlight {\n return {\n range: LspToMonaco.range(highlight.range),\n kind: monacoDocumentHighlightKind(highlight.kind),\n };\n }\n\n function monacoDocumentHighlightKind(kind: DocumentHighlightKind | undefined) {\n switch (kind) {\n case DocumentHighlightKind.Text:\n return monaco.languages.DocumentHighlightKind.Text;\n case DocumentHighlightKind.Read:\n return monaco.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco.languages.DocumentHighlightKind.Write;\n default:\n return undefined;\n }\n }\n\n function monacoHoverContents(contents: lsp.MarkupContent): monaco.IMarkdownString[] {\n return [{ value: contents.value }];\n }\n\n function monacoHover(hover: lsp.Hover): monaco.languages.Hover {\n // eslint-disable-next-line deprecation/deprecation\n if (Array.isArray(hover.contents) || lsp.MarkedString.is(hover.contents)) {\n throw new Error(\"MarkedString (deprecated) not supported.\");\n }\n\n return {\n contents: monacoHoverContents(hover.contents),\n range: hover.range ? LspToMonaco.range(hover.range) : undefined,\n };\n }\n\n function monacoWorkspaceEdit(edit: lsp.WorkspaceEdit): monaco.languages.WorkspaceEdit {\n const edits: monaco.languages.IWorkspaceTextEdit[] = [];\n for (const [uri, changes] of Object.entries(edit.changes ?? {})) {\n const resource = monaco.Uri.parse(uri);\n for (const change of changes) {\n edits.push({ resource, textEdit: LspToMonaco.textEdit(change), versionId: undefined });\n }\n }\n return { edits };\n }\n\n monaco.languages.registerDefinitionProvider(\"typespec\", {\n async provideDefinition(model, position) {\n const results = await serverLib.gotoDefinition(lspArgs(model, position));\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerReferenceProvider(\"typespec\", {\n async provideReferences(model, position, context) {\n const results = await serverLib.findReferences({ ...lspArgs(model, position), context });\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerRenameProvider(\"typespec\", {\n async resolveRenameLocation(model, position): Promise<monaco.languages.RenameLocation> {\n const result = await serverLib.prepareRename(lspArgs(model, position));\n if (!result) {\n throw new Error(\"This element can't be renamed.\");\n }\n const text = model.getWordAtPosition(position)?.word;\n if (!text) {\n throw new Error(\"Failed to obtain word at position.\");\n }\n return { text, range: LspToMonaco.range(result) };\n },\n\n async provideRenameEdits(model, position, newName) {\n const result = await serverLib.rename({ ...lspArgs(model, position), newName });\n return monacoWorkspaceEdit(result);\n },\n });\n\n monaco.languages.registerFoldingRangeProvider(\"typespec\", {\n async provideFoldingRanges(model) {\n const ranges = await serverLib.getFoldingRanges(lspDocumentArgs(model));\n const output = ranges.map(LspToMonaco.foldingRange);\n return output;\n },\n });\n\n monaco.languages.registerHoverProvider(\"typespec\", {\n async provideHover(model, position) {\n const hover = await serverLib.getHover(lspArgs(model, position));\n return monacoHover(hover);\n },\n });\n\n monaco.languages.registerSignatureHelpProvider(\"typespec\", {\n signatureHelpTriggerCharacters: [\"(\", \",\", \"<\"],\n signatureHelpRetriggerCharacters: [\")\"],\n async provideSignatureHelp(model, position) {\n const help = await serverLib.getSignatureHelp(lspArgs(model, position));\n return { value: LspToMonaco.signatureHelp(help), dispose: () => {} };\n },\n });\n\n monaco.languages.registerDocumentFormattingEditProvider(\"typespec\", {\n async provideDocumentFormattingEdits(model, options, token) {\n const edits = await serverLib.formatDocument({\n ...lspDocumentArgs(model),\n options: lspFormattingOptions(options),\n });\n return LspToMonaco.textEdits(edits);\n },\n });\n\n monaco.languages.registerDocumentHighlightProvider(\"typespec\", {\n async provideDocumentHighlights(model, position) {\n const highlights = await serverLib.findDocumentHighlight(lspArgs(model, position));\n return highlights.map(monacoDocumentHighlight);\n },\n });\n\n monaco.languages.registerCompletionItemProvider(\"typespec\", {\n triggerCharacters: lsConfig.capabilities.completionProvider!.triggerCharacters,\n async provideCompletionItems(model, position) {\n const result = await serverLib.complete(lspArgs(model, position));\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const suggestions: monaco.languages.CompletionItem[] = [];\n for (const item of result.items) {\n let itemRange = range;\n let insertText = item.insertText!;\n if (item.textEdit && \"range\" in item.textEdit) {\n itemRange = LspToMonaco.range(item.textEdit.range);\n insertText = item.textEdit.newText;\n }\n suggestions.push({\n label: item.label,\n kind: item.kind as any,\n documentation: item.documentation,\n insertText,\n range: itemRange,\n commitCharacters:\n item.commitCharacters ?? lsConfig.capabilities.completionProvider!.allCommitCharacters,\n tags: item.tags,\n });\n }\n\n return { suggestions };\n },\n });\n\n // This doesn't actually work because the lsp is not aware of the diagnostics here as we make our own compilation in the playground.\n // monaco.languages.registerCodeActionProvider(\"typespec\", {\n // async provideCodeActions(model, range, context, token) {\n // const result = await serverLib.getCodeActions({\n // range: MonacoToLsp.range(range),\n // context: MonacoToLsp.codeActionContext(context),\n // textDocument: textDocumentForModel(model),\n // });\n // return { actions: result.map(LspToMonaco.codeAction), dispose: () => {} };\n // },\n // });\n\n monaco.editor.defineTheme(\"typespec\", {\n base: \"vs\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#800000\" },\n { token: \"function\", foreground: \"#795E26\" },\n ],\n });\n monaco.editor.defineTheme(\"typespec-dark\", {\n base: \"vs-dark\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#E06C75\" },\n { token: \"function\", foreground: \"#E06C75\" },\n ],\n });\n monaco.editor.setTheme(\"typespec\");\n\n monaco.languages.registerDocumentSemanticTokensProvider(\"typespec\", {\n getLegend() {\n const legend = lsConfig.capabilities.semanticTokensProvider!.legend;\n return {\n tokenModifiers: legend.tokenModifiers,\n tokenTypes: legend.tokenTypes.map((entry) => {\n switch (entry) {\n case \"namespace\":\n case \"class\":\n case \"enum\":\n case \"typeParameter\":\n case \"struct\":\n case \"interface\":\n return \"type\";\n case \"property\":\n case \"enumMember\":\n return \"variable\";\n case \"docCommentTag\":\n return \"keyword\";\n default:\n return entry;\n }\n }),\n };\n },\n async provideDocumentSemanticTokens(model) {\n const result = await serverLib.buildSemanticTokens(lspDocumentArgs(model));\n return {\n resultId: result.resultId,\n data: new Uint32Array(result.data),\n };\n },\n releaseDocumentSemanticTokens() {},\n });\n}\n\nexport function getMonacoRange(\n typespecCompiler: typeof import(\"@typespec/compiler\"),\n target: DiagnosticTarget | typeof NoTarget\n): monaco.IRange {\n const loc = typespecCompiler.getSourceLocation(target);\n if (loc === undefined || loc.file.path !== \"/test/main.tsp\") {\n return {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n };\n }\n const start = loc.file.getLineAndCharacterOfPosition(loc.pos);\n const end = loc.file.getLineAndCharacterOfPosition(loc.end);\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n}\n","import lzutf8 from \"lzutf8\";\n\nexport interface StateStorage<T extends object> {\n load(): Partial<T>;\n save(t: Partial<T>): void;\n}\n\nexport interface UrlStateStorage<T extends object> extends StateStorage<T> {\n resolveSearchParams(t: Partial<T>): URLSearchParams;\n}\n\nexport type UrlStorageSchema<T> = {\n [key in keyof T]: UrlStorageItem;\n};\n\nexport interface UrlStorageItem {\n /** Name of the query parameter where the data will be serialized. */\n queryParam: string;\n\n type?: \"string\" | \"object\";\n\n /** Encoding the data should be compressed with. If undefined param will not be compressed. */\n compress?: \"lz-base64\";\n}\n\n/**\n * Generic storage mechanism for data in the playground.\n * @param schema Schema of the data to be serialized in the query\n * @returns\n */\nexport function createUrlStateStorage<const T extends object>(\n schema: UrlStorageSchema<T>\n): UrlStateStorage<T> {\n return { load, save, resolveSearchParams };\n\n function load(): Partial<T> {\n const result: Record<string, string> = {};\n const parsed = new URLSearchParams(window.location.search);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = parsed.get(item.queryParam);\n const decompressed = value && decompress(item, value);\n const deserialized = decompressed && deserialize(item, decompressed);\n if (deserialized) {\n result[key] = deserialized;\n }\n }\n return result as Partial<T>;\n }\n\n function decompress(item: UrlStorageItem, value: string): string | undefined {\n if (item.compress) {\n try {\n return lzutf8.decompress(value, { inputEncoding: \"Base64\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function deserialize(item: UrlStorageItem, value: string): any {\n if (item.type === \"object\") {\n try {\n return JSON.parse(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function save(data: T) {\n const params = resolveSearchParams(data, true);\n history.pushState(null, \"\", window.location.pathname + \"?\" + params.toString());\n }\n\n function resolveSearchParams(data: T, mergeWithExisting = false): URLSearchParams {\n const params = new URLSearchParams(mergeWithExisting ? location.search : undefined);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = (data as any)[key];\n\n if (value) {\n const serialized = serialize(item, value);\n const compressed = compress(item, serialized);\n params.set(item.queryParam, compressed);\n } else {\n params.delete(item.queryParam);\n }\n }\n return params;\n }\n\n function compress(item: UrlStorageItem, value: string): string {\n if (item.compress) {\n return lzutf8.compress(value, { outputEncoding: \"Base64\" });\n } else {\n return value;\n }\n }\n\n function serialize(item: UrlStorageItem, value: any): string {\n if (item.type === \"object\") {\n return JSON.stringify(value);\n } else {\n return value;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-storage-C_Vk3Rrw.js","sources":["../../src/core.ts","../../src/browser-host.ts","../../src/lsp/lsp-to-monaco.ts","../../src/services.ts","../../src/state-storage.ts"],"sourcesContent":["/**\n * Options for importing libraries.\n */\nexport interface LibraryImportOptions {\n /**\n * Should use es-module-shim importmap-shim instead of built-in import and importmap system.\n * @see https://github.com/guybedford/es-module-shims\n */\n useShim?: boolean;\n}\n\nexport async function importTypeSpecCompiler(\n config: any\n): Promise<typeof import(\"@typespec/compiler\")> {\n return (await importLibrary(\"@typespec/compiler\", config)) as any;\n}\n\n/**\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nexport async function importLibrary(name: string, config: LibraryImportOptions): Promise<unknown> {\n return config.useShim\n ? importShim(name)\n : import(/* @vite-ignore */ /* webpackIgnore: true */ name);\n}\n\n/**\n * Loading external import map doesn't work yet\n *\n * https://github.com/WICG/import-maps/issues/235\n *\n * A polyfill for importmap is loaded but required calling importShim instead of the native import https://github.com/guybedford/es-module-shims\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nasync function importShim(name: string): Promise<unknown> {\n return (window as any).importShim(name);\n}\n","import { createSourceFile, getSourceFileKindFromExt, resolvePath } from \"@typespec/compiler\";\nimport { LibraryImportOptions, importLibrary, importTypeSpecCompiler } from \"./core.js\";\nimport { BrowserHost, PlaygroundTspLibrary } from \"./types.js\";\n\nexport function resolveVirtualPath(path: string, ...paths: string[]) {\n return resolvePath(\"/test\", path, ...paths);\n}\n\n/**\n * Create the browser host from the list of libraries.\n * @param libsToLoad List of libraries to load. Those must be set in the webpage importmap.\n * @param importOptions Import configuration.\n * @returns\n */\nexport async function createBrowserHost(\n libsToLoad: readonly string[],\n importOptions: LibraryImportOptions = {}\n): Promise<BrowserHost> {\n const virtualFs = new Map<string, string>();\n const jsImports = new Map<string, Promise<any>>();\n\n const libraries: Record<string, PlaygroundTspLibrary> = {};\n for (const libName of libsToLoad) {\n const { _TypeSpecLibrary_, $lib, $linter } = (await importLibrary(\n libName,\n importOptions\n )) as any;\n libraries[libName] = {\n name: libName,\n isEmitter: $lib?.emitter,\n definition: $lib,\n packageJson: JSON.parse(_TypeSpecLibrary_.typespecSourceFiles[\"package.json\"]),\n linter: $linter,\n };\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.typespecSourceFiles)) {\n virtualFs.set(`/test/node_modules/${libName}/${key}`, value);\n }\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.jsSourceFiles)) {\n addJsImport(`/test/node_modules/${libName}/${key}`, value);\n }\n virtualFs.set(\n `/test/package.json`,\n JSON.stringify({\n name: \"playground-pkg\",\n dependencies: Object.fromEntries(\n Object.values(libraries).map((x) => [x.name, x.packageJson.version])\n ),\n })\n );\n }\n\n function addJsImport(path: string, value: any) {\n virtualFs.set(path, \"\");\n jsImports.set(path, value);\n }\n return {\n compiler: await importTypeSpecCompiler(importOptions),\n libraries,\n async readUrl(url: string) {\n const contents = virtualFs.get(url);\n if (contents === undefined) {\n const e = new Error(`File ${url} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, url);\n },\n async readFile(path: string) {\n path = resolveVirtualPath(path);\n const contents = virtualFs.get(path);\n if (contents === undefined) {\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, path);\n },\n\n async writeFile(path: string, content: string) {\n path = resolveVirtualPath(path);\n virtualFs.set(path, content);\n },\n\n async readDir(path: string) {\n path = resolveVirtualPath(path);\n const fileFolder = [...virtualFs.keys()]\n .filter((x) => x.startsWith(`${path}/`))\n .map((x) => x.replace(`${path}/`, \"\"))\n .map((x) => {\n const index = x.indexOf(\"/\");\n return index !== -1 ? x.substring(0, index) : x;\n });\n return [...new Set(fileFolder)];\n },\n\n async rm(path: string) {\n path = resolveVirtualPath(path);\n\n for (const key of virtualFs.keys()) {\n if (key === path || key.startsWith(`${path}/`)) {\n virtualFs.delete(key);\n }\n }\n },\n\n getLibDirs() {\n return [resolveVirtualPath(\"/test/node_modules/@typespec/compiler/lib\")];\n },\n\n getExecutionRoot() {\n return resolveVirtualPath(\".tsp\");\n },\n\n async getJsImport(path) {\n path = resolveVirtualPath(path);\n const module = await jsImports.get(path);\n if (module === undefined) {\n const e = new Error(`Module ${path} not found`);\n (e as any).code = \"MODULE_NOT_FOUND\";\n throw e;\n }\n return module;\n },\n\n async stat(path: string) {\n path = resolveVirtualPath(path);\n\n if (virtualFs.has(path)) {\n return {\n isDirectory() {\n return false;\n },\n isFile() {\n return true;\n },\n };\n }\n\n for (const fsPath of virtualFs.keys()) {\n if (fsPath.startsWith(path) && fsPath !== path) {\n return {\n isDirectory() {\n return true;\n },\n isFile() {\n return false;\n },\n };\n }\n }\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n },\n\n // symlinks not supported in test-host\n async realpath(path) {\n return path;\n },\n\n getSourceFileKind: getSourceFileKindFromExt,\n\n logSink: console,\n mkdirp: async (path: string) => path,\n fileURLToPath(path) {\n return path.replace(\"inmemory:/\", \"\");\n },\n pathToFileURL(path) {\n return \"inmemory:/\" + resolveVirtualPath(path);\n },\n };\n}\n","import * as monaco from \"monaco-editor\";\nimport type * as lsp from \"vscode-languageserver\";\nimport { DiagnosticSeverity } from \"vscode-languageserver\";\n\nfunction range(range: lsp.Range): monaco.IRange {\n return {\n startColumn: range.start.character + 1,\n startLineNumber: range.start.line + 1,\n endColumn: range.end.character + 1,\n endLineNumber: range.end.line + 1,\n };\n}\n\nfunction foldingRange(range: lsp.FoldingRange): monaco.languages.FoldingRange {\n return {\n start: range.startLine + 1,\n end: range.endLine + 1,\n kind: range.kind ? new monaco.languages.FoldingRangeKind(range.kind) : undefined,\n };\n}\n\nfunction textEdits(edit: lsp.TextEdit[]): monaco.languages.TextEdit[] {\n return edit.map(textEdit);\n}\n\nfunction textEdit(edit: lsp.TextEdit): monaco.languages.TextEdit {\n return {\n range: range(edit.range),\n text: edit.newText,\n };\n}\n\nfunction signatureHelp(help: lsp.SignatureHelp | undefined): monaco.languages.SignatureHelp {\n return {\n signatures:\n help?.signatures.map((x) => ({\n ...x,\n parameters: x.parameters ?? [],\n })) ?? [],\n activeSignature: help?.activeSignature ?? 0,\n activeParameter: help?.activeParameter ?? 0,\n };\n}\n\nfunction command(command: lsp.Command): monaco.languages.Command {\n return {\n id: command.command,\n title: command.title,\n arguments: command.arguments,\n };\n}\n\nfunction severity(severity: lsp.DiagnosticSeverity): monaco.MarkerSeverity {\n switch (severity) {\n case DiagnosticSeverity.Error:\n return monaco.MarkerSeverity.Error;\n case DiagnosticSeverity.Warning:\n return monaco.MarkerSeverity.Warning;\n case DiagnosticSeverity.Hint:\n return monaco.MarkerSeverity.Hint;\n case DiagnosticSeverity.Information:\n return monaco.MarkerSeverity.Info;\n }\n}\n\nfunction diagnostic(diagnostic: lsp.Diagnostic): monaco.editor.IMarkerData {\n return {\n severity: diagnostic.severity ? severity(diagnostic.severity) : monaco.MarkerSeverity.Error,\n message: diagnostic.message,\n code: diagnostic.code?.toString(),\n source: diagnostic.source,\n startLineNumber: diagnostic.range.start.line + 1,\n startColumn: diagnostic.range.start.character + 1,\n endLineNumber: diagnostic.range.end.line + 1,\n endColumn: diagnostic.range.end.character + 1,\n };\n}\n\nfunction codeAction(action: lsp.CodeAction): monaco.languages.CodeAction {\n return {\n title: action.title,\n kind: action.kind,\n diagnostics: action.diagnostics?.map(diagnostic),\n command: action.command && command(action.command),\n };\n}\n\nexport const LspToMonaco = {\n range,\n foldingRange,\n textEdits,\n textEdit,\n signatureHelp,\n codeAction,\n command,\n} as const;\n","import {\n DiagnosticTarget,\n NoTarget,\n ServerHost,\n TypeSpecLanguageConfiguration,\n} from \"@typespec/compiler\";\nimport * as monaco from \"monaco-editor\";\nimport * as lsp from \"vscode-languageserver\";\nimport { DocumentHighlightKind, FormattingOptions } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { LspToMonaco } from \"./lsp/lsp-to-monaco.js\";\nimport { BrowserHost } from \"./types.js\";\n\nfunction getIndentAction(\n value: \"none\" | \"indent\" | \"indentOutdent\" | \"outdent\"\n): monaco.languages.IndentAction {\n switch (value) {\n case \"none\":\n return monaco.languages.IndentAction.None;\n case \"indent\":\n return monaco.languages.IndentAction.Indent;\n case \"indentOutdent\":\n return monaco.languages.IndentAction.IndentOutdent;\n case \"outdent\":\n return monaco.languages.IndentAction.Outdent;\n }\n}\n\nfunction getTypeSpecLanguageConfiguration(): monaco.languages.LanguageConfiguration {\n return {\n ...(TypeSpecLanguageConfiguration as any),\n onEnterRules: TypeSpecLanguageConfiguration.onEnterRules.map((rule) => {\n return {\n beforeText: new RegExp(rule.beforeText.pattern),\n previousLineText:\n \"previousLineText\" in rule ? new RegExp(rule.previousLineText.pattern) : undefined,\n action: {\n indentAction: getIndentAction(rule.action.indent),\n appendText: \"appendText\" in rule.action ? rule.action.appendText : undefined,\n removeText: \"removeText\" in rule.action ? rule.action.removeText : undefined,\n },\n };\n }),\n };\n}\n\nexport async function registerMonacoLanguage(host: BrowserHost) {\n monaco.languages.register({ id: \"typespec\", extensions: [\".tsp\"] });\n monaco.languages.setLanguageConfiguration(\"typespec\", getTypeSpecLanguageConfiguration());\n\n const serverHost: ServerHost = {\n compilerHost: host,\n getOpenDocumentByURL(url: string) {\n const model = monaco.editor.getModel(monaco.Uri.parse(url));\n return model ? textDocumentForModel(model) : undefined;\n },\n sendDiagnostics() {},\n // eslint-disable-next-line no-console\n log: console.log,\n applyEdit(param) {\n return Promise.resolve({ applied: false });\n },\n };\n\n const { createServer } = host.compiler;\n const serverLib = createServer(serverHost);\n const lsConfig = await serverLib.initialize({\n capabilities: {},\n processId: 1,\n workspaceFolders: [],\n rootUri: \"inmemory://\",\n });\n serverLib.initialized({});\n\n function textDocumentForModel(model: monaco.editor.IModel) {\n return TextDocument.create(\n model.uri.toString(),\n \"typespec\",\n model.getVersionId(),\n model.getValue()\n );\n }\n\n function lspDocumentArgs(model: monaco.editor.ITextModel) {\n return {\n textDocument: textDocumentForModel(model),\n };\n }\n\n function lspArgs(model: monaco.editor.ITextModel, pos: monaco.Position) {\n return {\n ...lspDocumentArgs(model),\n position: lspPosition(pos),\n };\n }\n\n function lspPosition(pos: monaco.Position): lsp.Position {\n return {\n line: pos.lineNumber - 1,\n character: pos.column - 1,\n };\n }\n\n function lspFormattingOptions(options: monaco.languages.FormattingOptions) {\n return FormattingOptions.create(options.tabSize, options.insertSpaces);\n }\n\n function monacoLocation(loc: lsp.Location): monaco.languages.Location {\n return {\n uri: monaco.Uri.parse(loc.uri),\n range: LspToMonaco.range(loc.range),\n };\n }\n\n function monacoDocumentHighlight(\n highlight: lsp.DocumentHighlight\n ): monaco.languages.DocumentHighlight {\n return {\n range: LspToMonaco.range(highlight.range),\n kind: monacoDocumentHighlightKind(highlight.kind),\n };\n }\n\n function monacoDocumentHighlightKind(kind: DocumentHighlightKind | undefined) {\n switch (kind) {\n case DocumentHighlightKind.Text:\n return monaco.languages.DocumentHighlightKind.Text;\n case DocumentHighlightKind.Read:\n return monaco.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco.languages.DocumentHighlightKind.Write;\n default:\n return undefined;\n }\n }\n\n function monacoHoverContents(contents: lsp.MarkupContent): monaco.IMarkdownString[] {\n return [{ value: contents.value }];\n }\n\n function monacoHover(hover: lsp.Hover): monaco.languages.Hover {\n // eslint-disable-next-line deprecation/deprecation\n if (Array.isArray(hover.contents) || lsp.MarkedString.is(hover.contents)) {\n throw new Error(\"MarkedString (deprecated) not supported.\");\n }\n\n return {\n contents: monacoHoverContents(hover.contents),\n range: hover.range ? LspToMonaco.range(hover.range) : undefined,\n };\n }\n\n function monacoWorkspaceEdit(edit: lsp.WorkspaceEdit): monaco.languages.WorkspaceEdit {\n const edits: monaco.languages.IWorkspaceTextEdit[] = [];\n for (const [uri, changes] of Object.entries(edit.changes ?? {})) {\n const resource = monaco.Uri.parse(uri);\n for (const change of changes) {\n edits.push({ resource, textEdit: LspToMonaco.textEdit(change), versionId: undefined });\n }\n }\n return { edits };\n }\n\n monaco.languages.registerDefinitionProvider(\"typespec\", {\n async provideDefinition(model, position) {\n const results = await serverLib.gotoDefinition(lspArgs(model, position));\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerReferenceProvider(\"typespec\", {\n async provideReferences(model, position, context) {\n const results = await serverLib.findReferences({ ...lspArgs(model, position), context });\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerRenameProvider(\"typespec\", {\n async resolveRenameLocation(model, position): Promise<monaco.languages.RenameLocation> {\n const result = await serverLib.prepareRename(lspArgs(model, position));\n if (!result) {\n throw new Error(\"This element can't be renamed.\");\n }\n const text = model.getWordAtPosition(position)?.word;\n if (!text) {\n throw new Error(\"Failed to obtain word at position.\");\n }\n return { text, range: LspToMonaco.range(result) };\n },\n\n async provideRenameEdits(model, position, newName) {\n const result = await serverLib.rename({ ...lspArgs(model, position), newName });\n return monacoWorkspaceEdit(result);\n },\n });\n\n monaco.languages.registerFoldingRangeProvider(\"typespec\", {\n async provideFoldingRanges(model) {\n const ranges = await serverLib.getFoldingRanges(lspDocumentArgs(model));\n const output = ranges.map(LspToMonaco.foldingRange);\n return output;\n },\n });\n\n monaco.languages.registerHoverProvider(\"typespec\", {\n async provideHover(model, position) {\n const hover = await serverLib.getHover(lspArgs(model, position));\n return monacoHover(hover);\n },\n });\n\n monaco.languages.registerSignatureHelpProvider(\"typespec\", {\n signatureHelpTriggerCharacters: [\"(\", \",\", \"<\"],\n signatureHelpRetriggerCharacters: [\")\"],\n async provideSignatureHelp(model, position) {\n const help = await serverLib.getSignatureHelp(lspArgs(model, position));\n return { value: LspToMonaco.signatureHelp(help), dispose: () => {} };\n },\n });\n\n monaco.languages.registerDocumentFormattingEditProvider(\"typespec\", {\n async provideDocumentFormattingEdits(model, options, token) {\n const edits = await serverLib.formatDocument({\n ...lspDocumentArgs(model),\n options: lspFormattingOptions(options),\n });\n return LspToMonaco.textEdits(edits);\n },\n });\n\n monaco.languages.registerDocumentHighlightProvider(\"typespec\", {\n async provideDocumentHighlights(model, position) {\n const highlights = await serverLib.findDocumentHighlight(lspArgs(model, position));\n return highlights.map(monacoDocumentHighlight);\n },\n });\n\n monaco.languages.registerCompletionItemProvider(\"typespec\", {\n triggerCharacters: lsConfig.capabilities.completionProvider!.triggerCharacters,\n async provideCompletionItems(model, position) {\n const result = await serverLib.complete(lspArgs(model, position));\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const suggestions: monaco.languages.CompletionItem[] = [];\n for (const item of result.items) {\n let itemRange = range;\n let insertText = item.insertText!;\n if (item.textEdit && \"range\" in item.textEdit) {\n itemRange = LspToMonaco.range(item.textEdit.range);\n insertText = item.textEdit.newText;\n }\n suggestions.push({\n label: item.label,\n kind: item.kind as any,\n documentation: item.documentation,\n insertText,\n range: itemRange,\n commitCharacters:\n item.commitCharacters ?? lsConfig.capabilities.completionProvider!.allCommitCharacters,\n tags: item.tags,\n });\n }\n\n return { suggestions };\n },\n });\n\n // This doesn't actually work because the lsp is not aware of the diagnostics here as we make our own compilation in the playground.\n // monaco.languages.registerCodeActionProvider(\"typespec\", {\n // async provideCodeActions(model, range, context, token) {\n // const result = await serverLib.getCodeActions({\n // range: MonacoToLsp.range(range),\n // context: MonacoToLsp.codeActionContext(context),\n // textDocument: textDocumentForModel(model),\n // });\n // return { actions: result.map(LspToMonaco.codeAction), dispose: () => {} };\n // },\n // });\n\n monaco.editor.defineTheme(\"typespec\", {\n base: \"vs\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#800000\" },\n { token: \"function\", foreground: \"#795E26\" },\n ],\n });\n monaco.editor.defineTheme(\"typespec-dark\", {\n base: \"vs-dark\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#E06C75\" },\n { token: \"function\", foreground: \"#E06C75\" },\n ],\n });\n monaco.editor.setTheme(\"typespec\");\n\n monaco.languages.registerDocumentSemanticTokensProvider(\"typespec\", {\n getLegend() {\n const legend = lsConfig.capabilities.semanticTokensProvider!.legend;\n return {\n tokenModifiers: legend.tokenModifiers,\n tokenTypes: legend.tokenTypes.map((entry) => {\n switch (entry) {\n case \"namespace\":\n case \"class\":\n case \"enum\":\n case \"typeParameter\":\n case \"struct\":\n case \"interface\":\n return \"type\";\n case \"property\":\n case \"enumMember\":\n return \"variable\";\n case \"docCommentTag\":\n return \"keyword\";\n default:\n return entry;\n }\n }),\n };\n },\n async provideDocumentSemanticTokens(model) {\n const result = await serverLib.buildSemanticTokens(lspDocumentArgs(model));\n return {\n resultId: result.resultId,\n data: new Uint32Array(result.data),\n };\n },\n releaseDocumentSemanticTokens() {},\n });\n}\n\nexport function getMonacoRange(\n typespecCompiler: typeof import(\"@typespec/compiler\"),\n target: DiagnosticTarget | typeof NoTarget\n): monaco.IRange {\n const loc = typespecCompiler.getSourceLocation(target);\n if (loc === undefined || loc.file.path !== \"/test/main.tsp\") {\n return {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n };\n }\n const start = loc.file.getLineAndCharacterOfPosition(loc.pos);\n const end = loc.file.getLineAndCharacterOfPosition(loc.end);\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n}\n","import lzutf8 from \"lzutf8\";\n\nexport interface StateStorage<T extends object> {\n load(): Partial<T>;\n save(t: Partial<T>): void;\n}\n\nexport interface UrlStateStorage<T extends object> extends StateStorage<T> {\n resolveSearchParams(t: Partial<T>): URLSearchParams;\n}\n\nexport type UrlStorageSchema<T> = {\n [key in keyof T]: UrlStorageItem;\n};\n\nexport interface UrlStorageItem {\n /** Name of the query parameter where the data will be serialized. */\n queryParam: string;\n\n type?: \"string\" | \"object\";\n\n /** Encoding the data should be compressed with. If undefined param will not be compressed. */\n compress?: \"lz-base64\";\n}\n\n/**\n * Generic storage mechanism for data in the playground.\n * @param schema Schema of the data to be serialized in the query\n * @returns\n */\nexport function createUrlStateStorage<const T extends object>(\n schema: UrlStorageSchema<T>\n): UrlStateStorage<T> {\n return { load, save, resolveSearchParams };\n\n function load(): Partial<T> {\n const result: Record<string, string> = {};\n const parsed = new URLSearchParams(window.location.search);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = parsed.get(item.queryParam);\n const decompressed = value && decompress(item, value);\n const deserialized = decompressed && deserialize(item, decompressed);\n if (deserialized) {\n result[key] = deserialized;\n }\n }\n return result as Partial<T>;\n }\n\n function decompress(item: UrlStorageItem, value: string): string | undefined {\n if (item.compress) {\n try {\n return lzutf8.decompress(value, { inputEncoding: \"Base64\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function deserialize(item: UrlStorageItem, value: string): any {\n if (item.type === \"object\") {\n try {\n return JSON.parse(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function save(data: T) {\n const params = resolveSearchParams(data, true);\n history.pushState(null, \"\", window.location.pathname + \"?\" + params.toString());\n }\n\n function resolveSearchParams(data: T, mergeWithExisting = false): URLSearchParams {\n const params = new URLSearchParams(mergeWithExisting ? location.search : undefined);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = (data as any)[key];\n\n if (value) {\n const serialized = serialize(item, value);\n const compressed = compress(item, serialized);\n params.set(item.queryParam, compressed);\n } else {\n params.delete(item.queryParam);\n }\n }\n return params;\n }\n\n function compress(item: UrlStorageItem, value: string): string {\n if (item.compress) {\n return lzutf8.compress(value, { outputEncoding: \"Base64\" });\n } else {\n return value;\n }\n }\n\n function serialize(item: UrlStorageItem, value: any): string {\n if (item.type === \"object\") {\n return JSON.stringify(value);\n } else {\n return value;\n }\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.2.0-dev.3",
3
+ "version": "0.2.1",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://typespec.io",
@@ -55,56 +55,53 @@
55
55
  "!dist/test/**"
56
56
  ],
57
57
  "dependencies": {
58
- "@fluentui/react-components": "~9.46.4",
59
- "@fluentui/react-icons": "^2.0.226",
60
- "@typespec/bundler": "~0.1.0 || >=0.2.0-dev <0.2.0",
61
- "@typespec/compiler": "~0.53.1 || >=0.54.0-dev <0.54.0",
62
- "@typespec/html-program-viewer": "~0.53.0 || >=0.54.0-dev <0.54.0",
63
- "@typespec/http": "~0.53.0 || >=0.54.0-dev <0.54.0",
64
- "@typespec/openapi": "~0.53.0 || >=0.54.0-dev <0.54.0",
65
- "@typespec/openapi3": "~0.53.2 || >=0.54.0-dev <0.54.0",
66
- "@typespec/protobuf": "~0.53.0 || >=0.54.0-dev <0.54.0",
67
- "@typespec/rest": "~0.53.0 || >=0.54.0-dev <0.54.0",
68
- "@typespec/versioning": "~0.53.0 || >=0.54.0-dev <0.54.0",
58
+ "@fluentui/react-components": "~9.47.2",
59
+ "@fluentui/react-icons": "^2.0.233",
69
60
  "clsx": "^2.1.0",
70
61
  "debounce": "~2.0.0",
71
62
  "lzutf8": "0.6.3",
72
- "monaco-editor": "~0.46.0",
63
+ "monaco-editor": "~0.47.0",
73
64
  "react": "~18.2.0",
74
65
  "react-dom": "~18.2.0",
75
- "swagger-ui-react": "~5.11.3",
66
+ "swagger-ui-dist": "^5.13.0",
76
67
  "vscode-languageserver": "~9.0.1",
77
- "vscode-languageserver-textdocument": "~1.0.11"
68
+ "vscode-languageserver-textdocument": "~1.0.11",
69
+ "@typespec/bundler": "~0.1.2",
70
+ "@typespec/compiler": "~0.55.0",
71
+ "@typespec/html-program-viewer": "~0.55.0",
72
+ "@typespec/http": "~0.55.0",
73
+ "@typespec/openapi": "~0.55.0",
74
+ "@typespec/openapi3": "~0.55.0",
75
+ "@typespec/protobuf": "~0.55.0",
76
+ "@typespec/versioning": "~0.55.0",
77
+ "@typespec/rest": "~0.55.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@babel/core": "^7.23.9",
81
- "@playwright/test": "^1.41.2",
80
+ "@babel/core": "^7.24.3",
81
+ "@playwright/test": "^1.42.1",
82
82
  "@rollup/plugin-commonjs": "~25.0.7",
83
83
  "@rollup/plugin-json": "~6.1.0",
84
84
  "@rollup/plugin-node-resolve": "~15.2.3",
85
85
  "@rollup/plugin-typescript": "~11.1.6",
86
86
  "@types/debounce": "~1.2.4",
87
87
  "@types/node": "~18.11.19",
88
- "@types/react": "~18.2.55",
89
- "@types/react-dom": "~18.2.19",
90
- "@types/swagger-ui": "~3.52.4",
91
- "@types/swagger-ui-react": "^4.18.3",
92
- "@typespec/bundler": "~0.1.0 || >=0.2.0-dev <0.2.0",
93
- "@typespec/eslint-config-typespec": "~0.53.0 || >=0.54.0-dev <0.54.0",
88
+ "@types/react": "~18.2.73",
89
+ "@types/react-dom": "~18.2.23",
90
+ "@types/swagger-ui-dist": "~3.30.4",
94
91
  "@vitejs/plugin-react": "~4.2.1",
95
92
  "c8": "^9.1.0",
96
93
  "copyfiles": "~2.4.1",
97
94
  "cross-env": "~7.0.3",
98
- "eslint": "^8.56.0",
95
+ "eslint": "^8.57.0",
99
96
  "rimraf": "~5.0.5",
100
- "rollup": "~4.9.6",
101
- "rollup-plugin-dts": "~6.1.0",
97
+ "rollup": "~4.13.2",
102
98
  "rollup-plugin-postcss": "~4.0.2",
103
99
  "rollup-plugin-visualizer": "~5.12.0",
104
- "typescript": "~5.3.3",
105
- "vite": "^5.1.0"
100
+ "typescript": "~5.4.3",
101
+ "vite": "^5.2.7",
102
+ "@typespec/bundler": "~0.1.2",
103
+ "@typespec/eslint-config-typespec": "~0.55.0"
106
104
  },
107
- "peerDependencies": {},
108
105
  "scripts": {
109
106
  "clean": "rimraf ./dist ./dist-dev ./temp ./typespecContents.json",
110
107
  "build": "rollup --config rollup.config.ts --configPlugin typescript --failAfterWarnings 2>&1",