@typespec/playground 0.1.0-alpha.3-dev.10 → 0.1.0-alpha.3-dev.12
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/react/index.js +40 -26
- package/dist/react/index.js.map +1 -1
- package/dist/src/react/editor-command-bar.d.ts +1 -0
- package/dist/src/react/editor-command-bar.d.ts.map +1 -1
- package/dist/src/react/editor.d.ts +4 -0
- package/dist/src/react/editor.d.ts.map +1 -1
- package/dist/src/react/playground.d.ts.map +1 -1
- package/dist/src/react/standalone.d.ts.map +1 -1
- package/dist/src/react/typespec-editor.d.ts +3 -3
- package/dist/src/react/typespec-editor.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import debounce from 'debounce';
|
|
3
3
|
import { editor, Uri, MarkerSeverity, KeyMod, KeyCode } from 'monaco-editor';
|
|
4
|
-
import { useCallback, useMemo, useState, useEffect, useRef } from 'react';
|
|
4
|
+
import { useCallback, useMemo, useState, useEffect, useRef, useId as useId$1 } from 'react';
|
|
5
5
|
import { CompletionItemTag } from 'vscode-languageserver';
|
|
6
6
|
import { g as getMarkerLocation, c as createBrowserHost, a as registerMonacoLanguage, r as registerMonacoDefaultWorkers, b as createUrlStateStorage } from '../state-storage-ad8a9d39.js';
|
|
7
|
-
import { Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Link, Toolbar, Tooltip, ToolbarButton, Dialog, DialogTrigger,
|
|
8
|
-
import { Save16Regular, Settings24Regular, Bug16Regular } from '@fluentui/react-icons';
|
|
7
|
+
import { Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Link, Toolbar, Tooltip, ToolbarButton, Dialog, DialogTrigger, DialogSurface, DialogBody, mergeClasses, useToastController, Toast, ToastTitle, ToastBody, FluentProvider, webLightTheme, Toaster } from '@fluentui/react-components';
|
|
8
|
+
import { Save16Regular, Broom16Filled, Settings24Regular, Bug16Regular } from '@fluentui/react-icons';
|
|
9
9
|
import { css } from '@emotion/react';
|
|
10
10
|
import { MANIFEST } from '@typespec/compiler';
|
|
11
11
|
import { TypeSpecProgramViewer } from '@typespec/html-program-viewer';
|
|
@@ -139,16 +139,16 @@ function useTypeSpecLibrary(name) {
|
|
|
139
139
|
return lib;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
const EditorCommandBar = ({ documentationUrl, saveCode, newIssue, libraries, selectedEmitter, onSelectedEmitterChange, compilerOptions: emitterOptions, onCompilerOptionsChange, samples, selectedSampleName, onSelectedSampleNameChange, }) => {
|
|
142
|
+
const EditorCommandBar = ({ documentationUrl, saveCode, formatCode, newIssue, libraries, selectedEmitter, onSelectedEmitterChange, compilerOptions: emitterOptions, onCompilerOptionsChange, samples, selectedSampleName, onSelectedSampleNameChange, }) => {
|
|
143
143
|
const documentation = documentationUrl ? (jsx("label", { children: jsx(Link, { href: documentationUrl, target: "_blank", children: "Docs" }) })) : undefined;
|
|
144
144
|
const bugButton = newIssue ? jsx(FileBugButton, { onClick: newIssue }) : undefined;
|
|
145
|
-
return (jsx("div", { css: { borderBottom: "1px solid #f5f5f5" }, children: jsxs(Toolbar, { children: [jsx(Tooltip, { content: "Save", relationship: "description", withArrow: true, children: jsx(ToolbarButton, {
|
|
145
|
+
return (jsx("div", { css: { borderBottom: "1px solid #f5f5f5" }, children: jsxs(Toolbar, { children: [jsx(Tooltip, { content: "Save", relationship: "description", withArrow: true, children: jsx(ToolbarButton, { "aria-label": "Save", icon: jsx(Save16Regular, {}), onClick: saveCode }) }), jsx(Tooltip, { content: "Format", relationship: "description", withArrow: true, children: jsx(ToolbarButton, { "aria-label": "Format", icon: jsx(Broom16Filled, {}), onClick: formatCode }) }), samples && (jsx(SamplesDropdown, { samples: samples, selectedSampleName: selectedSampleName, onSelectedSampleNameChange: onSelectedSampleNameChange })), jsx(EmitterDropdown, { emitters: libraries.filter((x) => x.isEmitter).map((x) => x.name), onSelectedEmitterChange: onSelectedEmitterChange, selectedEmitter: selectedEmitter }), jsxs(Dialog, { children: [jsx(DialogTrigger, { children: jsx(ToolbarButton, { icon: jsx(Settings24Regular, {}) }) }), jsx(DialogSurface, { children: jsx(DialogBody, { children: jsx(CompilerSettings, { libraries: libraries, selectedEmitter: selectedEmitter, options: emitterOptions, onOptionsChanged: onCompilerOptionsChange }) }) })] }), documentation, jsx("div", { css: { flex: "1" } }), bugButton] }) }));
|
|
146
146
|
};
|
|
147
147
|
const FileBugButton = ({ onClick }) => {
|
|
148
148
|
return (jsx(Tooltip, { content: "File Bug Report", relationship: "description", withArrow: true, children: jsx(ToolbarButton, { appearance: "subtle", "aria-label": "File Bug Report", icon: jsx(Bug16Regular, {}), onClick: onClick, children: "File bug" }) }));
|
|
149
149
|
};
|
|
150
150
|
|
|
151
|
-
const Editor = ({ model, options, actions }) => {
|
|
151
|
+
const Editor = ({ model, options, actions, onMount }) => {
|
|
152
152
|
const editorContainerRef = useRef(null);
|
|
153
153
|
const editorRef = useRef(null);
|
|
154
154
|
useEffect(() => {
|
|
@@ -157,6 +157,7 @@ const Editor = ({ model, options, actions }) => {
|
|
|
157
157
|
automaticLayout: true,
|
|
158
158
|
...options,
|
|
159
159
|
});
|
|
160
|
+
onMount === null || onMount === void 0 ? void 0 : onMount({ editor: editorRef.current });
|
|
160
161
|
}, []);
|
|
161
162
|
useEffect(() => {
|
|
162
163
|
const disposables = [];
|
|
@@ -352,17 +353,17 @@ function chunk(items, condition) {
|
|
|
352
353
|
return [match, unMatch];
|
|
353
354
|
}
|
|
354
355
|
|
|
355
|
-
const TypeSpecEditor = (
|
|
356
|
-
const
|
|
356
|
+
const TypeSpecEditor = ({ actions, options, ...other }) => {
|
|
357
|
+
const resolvedOptions = {
|
|
357
358
|
"semanticHighlighting.enabled": true,
|
|
358
359
|
automaticLayout: true,
|
|
359
360
|
tabSize: 2,
|
|
360
361
|
minimap: {
|
|
361
362
|
enabled: false,
|
|
362
363
|
},
|
|
364
|
+
...options,
|
|
363
365
|
};
|
|
364
|
-
|
|
365
|
-
return jsx(Editor, { model: props.model, actions: props.actions, options: options });
|
|
366
|
+
return jsx(Editor, { actions: actions, options: resolvedOptions, ...other });
|
|
366
367
|
};
|
|
367
368
|
const OutputEditor = ({ filename, value, }) => {
|
|
368
369
|
if (filename === "") {
|
|
@@ -632,6 +633,7 @@ function assertsSize(size, sum, defaultValue = Infinity) {
|
|
|
632
633
|
const Playground = (props) => {
|
|
633
634
|
var _a, _b, _c, _d;
|
|
634
635
|
const { host, onSave } = props;
|
|
636
|
+
const editorRef = useRef(undefined);
|
|
635
637
|
const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(props.emitter, props.defaultEmitter, props.onEmitterChange);
|
|
636
638
|
const [compilerOptions, onCompilerOptionsChange] = useControllableValue(props.compilerOptions, (_a = props.defaultCompilerOptions) !== null && _a !== void 0 ? _a : {}, props.onCompilerOptionsChange);
|
|
637
639
|
const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(props.sampleName, props.defaultSampleName, props.onSampleNameChange);
|
|
@@ -712,6 +714,10 @@ const Playground = (props) => {
|
|
|
712
714
|
selectedSampleName,
|
|
713
715
|
isSampleUntouched,
|
|
714
716
|
]);
|
|
717
|
+
const formatCode = useCallback(() => {
|
|
718
|
+
var _a, _b;
|
|
719
|
+
void ((_b = (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getAction("editor.action.formatDocument")) === null || _b === void 0 ? void 0 : _b.run());
|
|
720
|
+
}, [typespecModel]);
|
|
715
721
|
const newIssue = useCallback(async () => {
|
|
716
722
|
var _a;
|
|
717
723
|
saveCode();
|
|
@@ -723,6 +729,9 @@ const Playground = (props) => {
|
|
|
723
729
|
// ctrl/cmd+S => save
|
|
724
730
|
{ id: "save", label: "Save", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },
|
|
725
731
|
], [saveCode]);
|
|
732
|
+
const onTypeSpecEditorMount = useCallback(({ editor }) => {
|
|
733
|
+
editorRef.current = editor;
|
|
734
|
+
}, []);
|
|
726
735
|
const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);
|
|
727
736
|
return (jsxs("div", { css: {
|
|
728
737
|
display: "grid",
|
|
@@ -733,7 +742,7 @@ const Playground = (props) => {
|
|
|
733
742
|
height: "100%",
|
|
734
743
|
overflow: "hidden",
|
|
735
744
|
fontFamily: `"Segoe UI", Tahoma, Geneva, Verdana, sans-serif`,
|
|
736
|
-
}, children: [jsxs(SplitPane, { initialSizes: ["50%", "50%"], css: { gridArea: "typespeceditor", width: "100%", height: "100%", overflow: "hidden" }, children: [jsxs(Pane, { children: [jsx(EditorCommandBar, { libraries: libraries, selectedEmitter: selectedEmitter, onSelectedEmitterChange: onSelectedEmitterChange, compilerOptions: compilerOptions, onCompilerOptionsChange: onCompilerOptionsChange, samples: props.samples, selectedSampleName: selectedSampleName, onSelectedSampleNameChange: onSelectedSampleNameChange, saveCode: saveCode, newIssue: ((_b = props === null || props === void 0 ? void 0 : props.links) === null || _b === void 0 ? void 0 : _b.githubIssueUrl) ? newIssue : undefined, documentationUrl: (_c = props.links) === null || _c === void 0 ? void 0 : _c.documentationUrl }), jsx(TypeSpecEditor, { model: typespecModel, actions: typespecEditorActions })] }), jsx(Pane, { children: jsx(OutputView, { compilationState: compilationState, viewers: (_d = props.emitterViewers) === null || _d === void 0 ? void 0 : _d[selectedEmitter] }) })] }), jsx(Footer, {})] }));
|
|
745
|
+
}, children: [jsxs(SplitPane, { initialSizes: ["50%", "50%"], css: { gridArea: "typespeceditor", width: "100%", height: "100%", overflow: "hidden" }, children: [jsxs(Pane, { children: [jsx(EditorCommandBar, { libraries: libraries, selectedEmitter: selectedEmitter, onSelectedEmitterChange: onSelectedEmitterChange, compilerOptions: compilerOptions, onCompilerOptionsChange: onCompilerOptionsChange, samples: props.samples, selectedSampleName: selectedSampleName, onSelectedSampleNameChange: onSelectedSampleNameChange, saveCode: saveCode, formatCode: formatCode, newIssue: ((_b = props === null || props === void 0 ? void 0 : props.links) === null || _b === void 0 ? void 0 : _b.githubIssueUrl) ? newIssue : undefined, documentationUrl: (_c = props.links) === null || _c === void 0 ? void 0 : _c.documentationUrl }), jsx(TypeSpecEditor, { model: typespecModel, actions: typespecEditorActions, onMount: onTypeSpecEditorMount })] }), jsx(Pane, { children: jsx(OutputView, { compilationState: compilationState, viewers: (_d = props.emitterViewers) === null || _d === void 0 ? void 0 : _d[selectedEmitter] }) })] }), jsx(Footer, {})] }));
|
|
737
746
|
};
|
|
738
747
|
const outputDir = "./tsp-output";
|
|
739
748
|
async function compile(host, content, selectedEmitter, options) {
|
|
@@ -795,27 +804,32 @@ async function emptyOutputDir(host) {
|
|
|
795
804
|
}
|
|
796
805
|
|
|
797
806
|
async function createReactPlayground(config) {
|
|
798
|
-
var _a;
|
|
799
807
|
const host = await createBrowserHost(config.libraries, config.importConfig);
|
|
800
808
|
await registerMonacoLanguage(host);
|
|
801
809
|
registerMonacoDefaultWorkers();
|
|
802
810
|
const stateStorage = createStandalonePlaygroundStateStorage();
|
|
803
811
|
const initialState = stateStorage.load();
|
|
804
|
-
const options = {
|
|
805
|
-
...config,
|
|
806
|
-
host,
|
|
807
|
-
libraries: config.libraries,
|
|
808
|
-
defaultContent: initialState.content,
|
|
809
|
-
defaultEmitter: (_a = initialState.emitter) !== null && _a !== void 0 ? _a : config.defaultEmitter,
|
|
810
|
-
defaultCompilerOptions: initialState.options,
|
|
811
|
-
defaultSampleName: initialState.sampleName,
|
|
812
|
-
onSave: (value) => {
|
|
813
|
-
stateStorage.save(value);
|
|
814
|
-
void navigator.clipboard.writeText(window.location.toString());
|
|
815
|
-
},
|
|
816
|
-
};
|
|
817
812
|
const App = () => {
|
|
818
|
-
|
|
813
|
+
const toasterId = useId$1();
|
|
814
|
+
const { dispatchToast } = useToastController(toasterId);
|
|
815
|
+
const options = useMemo(() => {
|
|
816
|
+
var _a;
|
|
817
|
+
return ({
|
|
818
|
+
...config,
|
|
819
|
+
host,
|
|
820
|
+
libraries: config.libraries,
|
|
821
|
+
defaultContent: initialState.content,
|
|
822
|
+
defaultEmitter: (_a = initialState.emitter) !== null && _a !== void 0 ? _a : config.defaultEmitter,
|
|
823
|
+
defaultCompilerOptions: initialState.options,
|
|
824
|
+
defaultSampleName: initialState.sampleName,
|
|
825
|
+
onSave: (value) => {
|
|
826
|
+
stateStorage.save(value);
|
|
827
|
+
void navigator.clipboard.writeText(window.location.toString());
|
|
828
|
+
dispatchToast(jsxs(Toast, { children: [jsx(ToastTitle, { children: "Saved!" }), jsx(ToastBody, { children: "Playground link has been copied to the clipboard." })] }), { intent: "success" });
|
|
829
|
+
},
|
|
830
|
+
});
|
|
831
|
+
}, [dispatchToast]);
|
|
832
|
+
return (jsxs(FluentProvider, { theme: webLightTheme, children: [jsx(Toaster, { toasterId: toasterId }), jsx("div", { css: { height: "100vh" }, children: jsx(Playground, { ...options }) })] }));
|
|
819
833
|
};
|
|
820
834
|
return jsx(App, {});
|
|
821
835
|
}
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/editor-command-bar.tsx","../../../src/react/editor.tsx","../../../src/react/footer.tsx","../../../src/react/hooks.ts","../../../src/react/diagnostic-list.tsx","../../../src/react/error-tab.tsx","../../../src/react/file-output.tsx","../../../src/react/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedEmitter}>\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedSampleName ?? \"\"}>\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { TypeSpecLibrary } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { EmitterOptions } from \"../types.js\";\n\nexport interface EmitterOptionsFormProps {\n library: TypeSpecLibrary<any>;\n options: EmitterOptions;\n optionsChanged: (options: EmitterOptions) => void;\n}\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div>\n {entries.map(([key, value]) => {\n return (\n <div key={key} css={{ margin: \"16px 0\" }}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ntype JsonSchemaProperty = {\n type: \"string\" | \"boolean\" | \"number\";\n description?: string;\n enum?: string[];\n default?: any;\n};\n\ntype JsonSchemaPropertyInputProps = {\n emitterOptions: Record<string, unknown>;\n name: string;\n prop: JsonSchemaProperty;\n onChange: (data: { name: string; value: unknown }) => void;\n};\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return <Switch label={prettyName} checked={value} onChange={handleChange} />;\n case \"string\":\n default:\n return (\n <div>\n <div>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n </div>\n <div>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: 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 = libraries.flatMap((lib) => {\n return Object.keys(lib.definition?.linter?.ruleSets ?? {}).map(\n (x) => `${lib.name}/${x}`\n ) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { CompilerOptions, LinterRuleSet, TypeSpecLibrary } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback, useEffect, useState } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport type CompilerSettingsProps = {\n libraries: PlaygroundTspLibrary[];\n selectedEmitter: string;\n options: CompilerOptions;\n onOptionsChanged: (options: CompilerOptions) => void;\n};\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n libraries,\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 = useTypeSpecLibrary(selectedEmitter);\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div css={{ padding: 10 }}>\n <h2>Settings</h2>\n <>Emitter: {selectedEmitter}</>\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <h3>Linter</h3>\n <LinterForm\n libraries={libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n\nfunction useTypeSpecLibrary(name: string): TypeSpecLibrary<any> | undefined {\n const [lib, setLib] = useState<TypeSpecLibrary<any>>();\n\n useEffect(() => {\n setLib(undefined);\n import(/* @vite-ignore */ name)\n .then((module) => {\n if (module.$lib === undefined) {\n // eslint-disable-next-line no-console\n console.error(`Couldn't load library ${name} missing $lib export`);\n }\n setLib(module.$lib);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to load library\", name);\n });\n }, [name]);\n return lib;\n}\n","import {\n Button,\n Dialog,\n DialogBody,\n DialogSurface,\n DialogTrigger,\n Link,\n Toolbar,\n ToolbarButton,\n Tooltip,\n} from \"@fluentui/react-components\";\nimport { Bug16Regular, Save16Regular, Settings24Regular } from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { PlaygroundSample, PlaygroundTspLibrary } from \"../types.js\";\nimport { EmitterDropdown } from \"./emitter-dropdown.js\";\nimport { SamplesDropdown } from \"./samples-dropdown.js\";\nimport { CompilerSettings } from \"./settings/compiler-settings.js\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n newIssue?: () => Promise<void> | void;\n libraries: PlaygroundTspLibrary[];\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 newIssue,\n libraries,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions: emitterOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = newIssue ? <FileBugButton onClick={newIssue} /> : undefined;\n\n return (\n <div css={{ borderBottom: \"1px solid #f5f5f5\" }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"primary\"\n aria-label=\"Save\"\n icon={<Save16Regular />}\n onClick={saveCode as any}\n />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={libraries.filter((x) => x.isEmitter).map((x) => x.name)}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n <Dialog>\n <DialogTrigger>\n <Button icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <CompilerSettings\n libraries={libraries}\n selectedEmitter={selectedEmitter}\n options={emitterOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogBody>\n </DialogSurface>\n </Dialog>\n {documentation}\n <div css={{ flex: \"1\" }}></div>\n {bugButton}\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n >\n File bug\n </ToolbarButton>\n </Tooltip>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions }) => {\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 }, []);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { MANIFEST } from \"@typespec/compiler\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\n\nexport const Footer: FunctionComponent = () => {\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: \"#333333\" }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: \"#cc2222\" });\nconst warningColor = css({ color: \"orange\" });\n","import { css } from \"@emotion/react\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: \"1px solid #cc2222\",\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: \"1px solid #c5c5c5\" }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: \"1px solid #ccc\" }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <a\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: \"1px solid #ccc\",\n borderTop: \"none\",\n borderBottom: \"none\",\n color: \"#000\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: \"#eee\" } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </a>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, useMonacoModel } from \"./editor.js\";\n\nexport interface TypeSpecEditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = (props) => {\n const options: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n };\n // Add shortcuts\n return <Editor model={props.model} actions={props.actions} options={options}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{ filename: string; value: string }> = ({\n filename,\n value,\n}) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({ compilationState, viewers }) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return <OutputViewInternal compilationResult={compilationState} viewers={viewers} />;\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent viewSelection={viewSelection} program={program} viewers={viewers} />\n </div>\n </>\n );\n};\n\nconst rawFileViewer = {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor filename={filename} value={content} />\n ),\n};\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n}) => {\n const resolvedViewers = useMemo(() => [rawFileViewer, ...(viewers ?? [])], [viewers]);\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeSpecProgramViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: \"#cc2222\",\n color: \"#f5f5f5\",\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n libraries={libraries}\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 newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor model={typespecModel} actions={typespecEditorActions} />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import { FluentProvider, webLightTheme } from \"@fluentui/react-components\";\nimport { FunctionComponent } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoDefaultWorkers } from \"../monaco-worker.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n registerMonacoDefaultWorkers();\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n const options: PlaygroundProps = {\n ...config,\n host,\n libraries: config.libraries,\n defaultContent: initialState.content,\n defaultEmitter: initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: initialState.options,\n defaultSampleName: initialState.sampleName,\n onSave: (value) => {\n stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n },\n };\n\n const App: FunctionComponent = () => {\n return (\n <FluentProvider theme={webLightTheme}>\n <div css={{ height: \"100vh\" }}>\n <Playground {...options} />\n </div>\n </FluentProvider>\n );\n };\n\n return <App />;\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(app);\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/editor-command-bar.tsx","../../../src/react/editor.tsx","../../../src/react/footer.tsx","../../../src/react/hooks.ts","../../../src/react/diagnostic-list.tsx","../../../src/react/error-tab.tsx","../../../src/react/file-output.tsx","../../../src/react/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedEmitter}>\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedSampleName ?? \"\"}>\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { TypeSpecLibrary } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { EmitterOptions } from \"../types.js\";\n\nexport interface EmitterOptionsFormProps {\n library: TypeSpecLibrary<any>;\n options: EmitterOptions;\n optionsChanged: (options: EmitterOptions) => void;\n}\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div>\n {entries.map(([key, value]) => {\n return (\n <div key={key} css={{ margin: \"16px 0\" }}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ntype JsonSchemaProperty = {\n type: \"string\" | \"boolean\" | \"number\";\n description?: string;\n enum?: string[];\n default?: any;\n};\n\ntype JsonSchemaPropertyInputProps = {\n emitterOptions: Record<string, unknown>;\n name: string;\n prop: JsonSchemaProperty;\n onChange: (data: { name: string; value: unknown }) => void;\n};\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return <Switch label={prettyName} checked={value} onChange={handleChange} />;\n case \"string\":\n default:\n return (\n <div>\n <div>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n </div>\n <div>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: 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 = libraries.flatMap((lib) => {\n return Object.keys(lib.definition?.linter?.ruleSets ?? {}).map(\n (x) => `${lib.name}/${x}`\n ) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { CompilerOptions, LinterRuleSet, TypeSpecLibrary } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback, useEffect, useState } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport type CompilerSettingsProps = {\n libraries: PlaygroundTspLibrary[];\n selectedEmitter: string;\n options: CompilerOptions;\n onOptionsChanged: (options: CompilerOptions) => void;\n};\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n libraries,\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 = useTypeSpecLibrary(selectedEmitter);\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div css={{ padding: 10 }}>\n <h2>Settings</h2>\n <>Emitter: {selectedEmitter}</>\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <h3>Linter</h3>\n <LinterForm\n libraries={libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n\nfunction useTypeSpecLibrary(name: string): TypeSpecLibrary<any> | undefined {\n const [lib, setLib] = useState<TypeSpecLibrary<any>>();\n\n useEffect(() => {\n setLib(undefined);\n import(/* @vite-ignore */ name)\n .then((module) => {\n if (module.$lib === undefined) {\n // eslint-disable-next-line no-console\n console.error(`Couldn't load library ${name} missing $lib export`);\n }\n setLib(module.$lib);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"Failed to load library\", name);\n });\n }, [name]);\n return lib;\n}\n","import {\n Dialog,\n DialogBody,\n DialogSurface,\n DialogTrigger,\n Link,\n Toolbar,\n ToolbarButton,\n Tooltip,\n} from \"@fluentui/react-components\";\nimport {\n Broom16Filled,\n Bug16Regular,\n Save16Regular,\n Settings24Regular,\n} from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { PlaygroundSample, PlaygroundTspLibrary } from \"../types.js\";\nimport { EmitterDropdown } from \"./emitter-dropdown.js\";\nimport { SamplesDropdown } from \"./samples-dropdown.js\";\nimport { CompilerSettings } from \"./settings/compiler-settings.js\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n newIssue?: () => Promise<void> | void;\n libraries: PlaygroundTspLibrary[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n\n samples?: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\nexport const EditorCommandBar: FunctionComponent<EditorCommandBarProps> = ({\n documentationUrl,\n saveCode,\n formatCode,\n newIssue,\n libraries,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions: emitterOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = newIssue ? <FileBugButton onClick={newIssue} /> : undefined;\n\n return (\n <div css={{ borderBottom: \"1px solid #f5f5f5\" }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={libraries.filter((x) => x.isEmitter).map((x) => x.name)}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <CompilerSettings\n libraries={libraries}\n selectedEmitter={selectedEmitter}\n options={emitterOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogBody>\n </DialogSurface>\n </Dialog>\n {documentation}\n <div css={{ flex: \"1\" }}></div>\n {bugButton}\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n >\n File bug\n </ToolbarButton>\n </Tooltip>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n onMount?: (data: OnMountData) => void;\n}\n\nexport interface OnMountData {\n editor: editor.IStandaloneCodeEditor;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions, onMount }) => {\n const editorContainerRef = useRef(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n\n useEffect(() => {\n editorRef.current = editor.create(editorContainerRef.current!, {\n model,\n automaticLayout: true,\n ...options,\n });\n onMount?.({ editor: editorRef.current });\n }, []);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { MANIFEST } from \"@typespec/compiler\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\n\nexport const Footer: FunctionComponent = () => {\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: \"#333333\" }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: \"#cc2222\" });\nconst warningColor = css({ color: \"orange\" });\n","import { css } from \"@emotion/react\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: \"1px solid #cc2222\",\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: \"1px solid #c5c5c5\" }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: \"1px solid #ccc\" }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <a\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: \"1px solid #ccc\",\n borderTop: \"none\",\n borderBottom: \"none\",\n color: \"#000\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: \"#eee\" } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </a>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\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<{ filename: string; value: string }> = ({\n filename,\n value,\n}) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({ compilationState, viewers }) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return <OutputViewInternal compilationResult={compilationState} viewers={viewers} />;\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent viewSelection={viewSelection} program={program} viewers={viewers} />\n </div>\n </>\n );\n};\n\nconst rawFileViewer = {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor filename={filename} value={content} />\n ),\n};\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n}) => {\n const resolvedViewers = useMemo(() => [rawFileViewer, ...(viewers ?? [])], [viewers]);\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeSpecProgramViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: \"#cc2222\",\n color: \"#f5f5f5\",\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n libraries={libraries}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useId, useMemo } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoDefaultWorkers } from \"../monaco-worker.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n registerMonacoDefaultWorkers();\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n\n const App: FunctionComponent = () => {\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const options: PlaygroundProps = useMemo(\n () => ({\n ...config,\n host,\n libraries: config.libraries,\n defaultContent: initialState.content,\n defaultEmitter: initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: initialState.options,\n defaultSampleName: initialState.sampleName,\n onSave: (value) => {\n 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 }),\n [dispatchToast]\n );\n\n return (\n <FluentProvider theme={webLightTheme}>\n <Toaster toasterId={toasterId} />\n <div css={{ height: \"100vh\" }}>\n <Playground {...options} />\n </div>\n </FluentProvider>\n );\n };\n\n return <App />;\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(app);\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { PlaygroundSample, PlaygroundTspLibrary } from "../types.js";
|
|
|
4
4
|
export interface EditorCommandBarProps {
|
|
5
5
|
documentationUrl?: string;
|
|
6
6
|
saveCode: () => Promise<void> | void;
|
|
7
|
+
formatCode: () => Promise<void> | void;
|
|
7
8
|
newIssue?: () => Promise<void> | void;
|
|
8
9
|
libraries: PlaygroundTspLibrary[];
|
|
9
10
|
selectedEmitter: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/react/editor-command-bar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/react/editor-command-bar.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAKrE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAE5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AACD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAkErE,CAAC"}
|
|
@@ -4,6 +4,10 @@ export interface EditorProps {
|
|
|
4
4
|
model: editor.IModel;
|
|
5
5
|
actions?: editor.IActionDescriptor[];
|
|
6
6
|
options: editor.IStandaloneEditorConstructionOptions;
|
|
7
|
+
onMount?: (data: OnMountData) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface OnMountData {
|
|
10
|
+
editor: editor.IStandaloneCodeEditor;
|
|
7
11
|
}
|
|
8
12
|
export interface EditorCommand {
|
|
9
13
|
binding: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/react/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,OAAO,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/react/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,OAAO,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,oCAAoC,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,qBAAqB,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAoCjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAK5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAqD,MAAM,OAAO,CAAC;AAG7F,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ5D,OAAO,EAAoB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5C,sBAAsB;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,eAAe,CAAC;IACzC,2CAA2C;IAC3C,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAE7D,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE3C,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAElD,uBAAuB;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEpD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAkLzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/react/standalone.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/react/standalone.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAc,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAElF,MAAM,WAAW,qBAAsB,SAAQ,OAAO,CAAC,eAAe,CAAC;IACrE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,6DA+CxE;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,iBAKxE;AAED,wBAAgB,sCAAsC,IAAI,YAAY,CAAC,kBAAkB,CAAC,CA0BzF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { editor } from "monaco-editor";
|
|
2
2
|
import { FunctionComponent } from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { EditorProps } from "./editor.js";
|
|
4
|
+
export interface TypeSpecEditorProps extends Omit<EditorProps, "options"> {
|
|
5
|
+
options?: editor.IStandaloneEditorConstructionOptions;
|
|
6
6
|
}
|
|
7
7
|
export declare const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps>;
|
|
8
8
|
export declare const OutputEditor: FunctionComponent<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typespec-editor.d.ts","sourceRoot":"","sources":["../../../src/react/typespec-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"typespec-editor.d.ts","sourceRoot":"","sources":["../../../src/react/typespec-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAU,WAAW,EAAkB,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,oCAAoC,CAAC;CACvD;AAED,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,mBAAmB,CAejE,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiB/E,CAAC"}
|
package/package.json
CHANGED