@typespec/playground 0.1.0-alpha.4-dev.14 → 0.1.0-alpha.4-dev.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/index.js +33 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.js +30 -35
- package/dist/react/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/monaco-worker.d.ts +1 -1
- package/dist/src/monaco-worker.d.ts.map +1 -1
- package/dist/src/react/editor-command-bar.d.ts +2 -2
- package/dist/src/react/editor-command-bar.d.ts.map +1 -1
- package/dist/src/react/playground.d.ts.map +1 -1
- package/dist/src/react/settings/compiler-settings.d.ts +2 -2
- package/dist/src/react/settings/compiler-settings.d.ts.map +1 -1
- package/dist/src/react/settings/emitter-options-form.d.ts +2 -2
- package/dist/src/react/settings/emitter-options-form.d.ts.map +1 -1
- package/dist/src/react/settings/linter-form.d.ts +1 -1
- package/dist/src/react/settings/linter-form.d.ts.map +1 -1
- package/dist/src/react/standalone.d.ts.map +1 -1
- package/dist/src/services.d.ts.map +1 -1
- package/dist/{state-storage-e765354d.js → state-storage-1ccb8536.js} +11 -32
- package/dist/state-storage-1ccb8536.js.map +1 -0
- package/package.json +1 -1
- package/dist/state-storage-e765354d.js.map +0 -1
package/README.md
CHANGED
|
@@ -42,6 +42,7 @@ export default config;
|
|
|
42
42
|
In `src/main.tsx`:
|
|
43
43
|
|
|
44
44
|
```tsx
|
|
45
|
+
import { registerMonacoDefaultWorkersForVite } from "@typespec/playground";
|
|
45
46
|
import PlaygroundManifest from "@typespec/playground/manifest";
|
|
46
47
|
import { renderReactPlayground } from "@typespec/playground/react";
|
|
47
48
|
import { SwaggerUIViewer } from "@typespec/playground/react/viewers";
|
|
@@ -49,6 +50,8 @@ import { SwaggerUIViewer } from "@typespec/playground/react/viewers";
|
|
|
49
50
|
// Import styles
|
|
50
51
|
import "@typespec/playground/styles.css";
|
|
51
52
|
|
|
53
|
+
registerMonacoDefaultWorkersForVite();
|
|
54
|
+
|
|
52
55
|
await renderReactPlayground({
|
|
53
56
|
...PlaygroundManifest,
|
|
54
57
|
emitterViewers: {
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,39 @@
|
|
|
1
|
-
export { c as createBrowserHost,
|
|
1
|
+
export { c as createBrowserHost, a as createUrlStateStorage, r as registerMonacoLanguage } from './state-storage-1ccb8536.js';
|
|
2
2
|
import '@typespec/compiler';
|
|
3
3
|
import 'monaco-editor';
|
|
4
4
|
import 'vscode-languageserver';
|
|
5
5
|
import 'vscode-languageserver-textdocument';
|
|
6
6
|
import 'lzutf8';
|
|
7
|
+
|
|
8
|
+
function registerMonacoDefaultWorkersForVite() {
|
|
9
|
+
self.MonacoEnvironment = {
|
|
10
|
+
getWorker: function (workerId, label) {
|
|
11
|
+
const getWorkerModule = (moduleUrl, label) => {
|
|
12
|
+
return new Worker(self.MonacoEnvironment.getWorkerUrl(moduleUrl), {
|
|
13
|
+
name: label,
|
|
14
|
+
type: "module",
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
switch (label) {
|
|
18
|
+
case "json":
|
|
19
|
+
return getWorkerModule("/monaco-editor/esm/vs/language/json/json.worker?worker", label);
|
|
20
|
+
case "css":
|
|
21
|
+
case "scss":
|
|
22
|
+
case "less":
|
|
23
|
+
return getWorkerModule("/monaco-editor/esm/vs/language/css/css.worker?worker", label);
|
|
24
|
+
case "html":
|
|
25
|
+
case "handlebars":
|
|
26
|
+
case "razor":
|
|
27
|
+
return getWorkerModule("/monaco-editor/esm/vs/language/html/html.worker?worker", label);
|
|
28
|
+
case "typescript":
|
|
29
|
+
case "javascript":
|
|
30
|
+
return getWorkerModule("/monaco-editor/esm/vs/language/typescript/ts.worker?worker", label);
|
|
31
|
+
default:
|
|
32
|
+
return getWorkerModule("/monaco-editor/esm/vs/editor/editor.worker?worker", label);
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { registerMonacoDefaultWorkersForVite };
|
|
7
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/monaco-worker.ts"],"sourcesContent":["export function registerMonacoDefaultWorkersForVite() {\n self.MonacoEnvironment = {\n getWorker: function (workerId, label) {\n const getWorkerModule = (moduleUrl: string, label: string) => {\n return new Worker((self.MonacoEnvironment as any).getWorkerUrl(moduleUrl), {\n name: label,\n type: \"module\",\n });\n };\n\n switch (label) {\n case \"json\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/json/json.worker?worker\", label);\n case \"css\":\n case \"scss\":\n case \"less\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/css/css.worker?worker\", label);\n case \"html\":\n case \"handlebars\":\n case \"razor\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/html/html.worker?worker\", label);\n case \"typescript\":\n case \"javascript\":\n return getWorkerModule(\n \"/monaco-editor/esm/vs/language/typescript/ts.worker?worker\",\n label\n );\n default:\n return getWorkerModule(\"/monaco-editor/esm/vs/editor/editor.worker?worker\", label);\n }\n },\n };\n}\n"],"names":[],"mappings":";;;;;;;SAAgB,mCAAmC,GAAA;IACjD,IAAI,CAAC,iBAAiB,GAAG;AACvB,QAAA,SAAS,EAAE,UAAU,QAAQ,EAAE,KAAK,EAAA;AAClC,YAAA,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,KAAa,KAAI;gBAC3D,OAAO,IAAI,MAAM,CAAE,IAAI,CAAC,iBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACzE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,IAAI,EAAE,QAAQ;AACf,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC;AAEF,YAAA,QAAQ,KAAK;AACX,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,eAAe,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;AAC1F,gBAAA,KAAK,KAAK,CAAC;AACX,gBAAA,KAAK,MAAM,CAAC;AACZ,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,eAAe,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;AACxF,gBAAA,KAAK,MAAM,CAAC;AACZ,gBAAA,KAAK,YAAY,CAAC;AAClB,gBAAA,KAAK,OAAO;AACV,oBAAA,OAAO,eAAe,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;AAC1F,gBAAA,KAAK,YAAY,CAAC;AAClB,gBAAA,KAAK,YAAY;AACf,oBAAA,OAAO,eAAe,CACpB,4DAA4D,EAC5D,KAAK,CACN,CAAC;AACJ,gBAAA;AACE,oBAAA,OAAO,eAAe,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;AACtF,aAAA;SACF;KACF,CAAC;AACJ;;;;"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
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,
|
|
4
|
+
import { useCallback, useMemo, useRef, useEffect, useState, useId as useId$1 } from 'react';
|
|
5
5
|
import { CompletionItemTag } from 'vscode-languageserver';
|
|
6
|
-
import {
|
|
6
|
+
import { g as getMarkerLocation, c as createBrowserHost, r as registerMonacoLanguage, a as createUrlStateStorage } from '../state-storage-1ccb8536.js';
|
|
7
7
|
import { Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Link, tokens, Toolbar, Tooltip, ToolbarButton, Dialog, DialogTrigger, DialogSurface, DialogBody, mergeClasses, useToastController, Toast, ToastTitle, ToastBody, Toaster, FluentProvider, webLightTheme } from '@fluentui/react-components';
|
|
8
8
|
import { Save16Regular, Broom16Filled, Settings24Regular, Bug16Regular } from '@fluentui/react-icons';
|
|
9
9
|
import { css } from '@emotion/react';
|
|
10
|
-
import { TypeSpecProgramViewer } from '@typespec/html-program-viewer';
|
|
10
|
+
import { ColorProvider, TypeSpecProgramViewer } from '@typespec/html-program-viewer';
|
|
11
11
|
import { createRoot } from 'react-dom/client';
|
|
12
12
|
import '@typespec/compiler';
|
|
13
13
|
import 'vscode-languageserver-textdocument';
|
|
@@ -36,8 +36,8 @@ const SamplesDropdown = ({ samples, selectedSampleName, onSelectedSampleNameChan
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
const EmitterOptionsForm = ({ library, options, optionsChanged, }) => {
|
|
39
|
-
var _a, _b;
|
|
40
|
-
const emitterOptionsSchema = (_b = (_a = library.
|
|
39
|
+
var _a, _b, _c;
|
|
40
|
+
const emitterOptionsSchema = (_c = (_b = (_a = library.definition) === null || _a === void 0 ? void 0 : _a.emitter) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.properties;
|
|
41
41
|
if (emitterOptionsSchema === undefined) {
|
|
42
42
|
return jsx(Fragment, { children: "\"No options\"" });
|
|
43
43
|
}
|
|
@@ -72,7 +72,7 @@ const JsonSchemaPropertyInput = ({ emitterOptions, name, prop, onChange, }) => {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
const LinterForm = ({ libraries, linterRuleSet, onLinterRuleSetChanged, }) => {
|
|
75
|
-
const rulesets = libraries.flatMap((lib) => {
|
|
75
|
+
const rulesets = Object.values(libraries).flatMap((lib) => {
|
|
76
76
|
var _a, _b, _c;
|
|
77
77
|
return Object.keys((_c = (_b = (_a = lib.definition) === null || _a === void 0 ? void 0 : _a.linter) === null || _b === void 0 ? void 0 : _b.ruleSets) !== null && _c !== void 0 ? _c : {}).map((x) => `${lib.name}/${x}`);
|
|
78
78
|
});
|
|
@@ -101,7 +101,7 @@ const RuleSetCheckbox = ({ ruleSet, checked, onChange }) => {
|
|
|
101
101
|
return jsx(Checkbox, { label: ruleSet, checked: checked, onChange: handleChange });
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
const CompilerSettings = ({ selectedEmitter,
|
|
104
|
+
const CompilerSettings = ({ selectedEmitter, host, options, onOptionsChanged, }) => {
|
|
105
105
|
var _a, _b;
|
|
106
106
|
const emitterOptionsChanged = useCallback((emitterOptions) => {
|
|
107
107
|
onOptionsChanged({
|
|
@@ -109,7 +109,7 @@ const CompilerSettings = ({ selectedEmitter, libraries, options, onOptionsChange
|
|
|
109
109
|
options: emitterOptions,
|
|
110
110
|
});
|
|
111
111
|
}, [options]);
|
|
112
|
-
const library =
|
|
112
|
+
const library = host.libraries[selectedEmitter];
|
|
113
113
|
const linterRuleSet = (_a = options.linterRuleSet) !== null && _a !== void 0 ? _a : {};
|
|
114
114
|
const linterRuleSetChanged = useCallback((linterRuleSet) => {
|
|
115
115
|
onOptionsChanged({
|
|
@@ -117,32 +117,16 @@ const CompilerSettings = ({ selectedEmitter, libraries, options, onOptionsChange
|
|
|
117
117
|
linterRuleSet,
|
|
118
118
|
});
|
|
119
119
|
}, [options]);
|
|
120
|
-
return (jsxs("div", { css: { padding: 10 }, children: [jsx("h2", { children: "Settings" }), jsxs(Fragment, { children: ["Emitter: ", selectedEmitter] }), jsx("h3", { children: "Options" }), library && (jsx(EmitterOptionsForm, { library: library, options: (_b = options.options) !== null && _b !== void 0 ? _b : {}, optionsChanged: emitterOptionsChanged })), jsx("h3", { children: "Linter" }), jsx(LinterForm, { libraries: libraries, linterRuleSet: linterRuleSet, onLinterRuleSetChanged: linterRuleSetChanged })] }));
|
|
120
|
+
return (jsxs("div", { css: { padding: 10 }, children: [jsx("h2", { children: "Settings" }), jsxs(Fragment, { children: ["Emitter: ", selectedEmitter] }), jsx("h3", { children: "Options" }), library && (jsx(EmitterOptionsForm, { library: library, options: (_b = options.options) !== null && _b !== void 0 ? _b : {}, optionsChanged: emitterOptionsChanged })), jsx("h3", { children: "Linter" }), jsx(LinterForm, { libraries: host.libraries, linterRuleSet: linterRuleSet, onLinterRuleSetChanged: linterRuleSetChanged })] }));
|
|
121
121
|
};
|
|
122
|
-
function useTypeSpecLibrary(name) {
|
|
123
|
-
const [lib, setLib] = useState();
|
|
124
|
-
useEffect(() => {
|
|
125
|
-
setLib(undefined);
|
|
126
|
-
importLibrary(name, {})
|
|
127
|
-
.then((module) => {
|
|
128
|
-
if (module.$lib === undefined) {
|
|
129
|
-
// eslint-disable-next-line no-console
|
|
130
|
-
console.error(`Couldn't load library ${name} missing $lib export`);
|
|
131
|
-
}
|
|
132
|
-
setLib(module.$lib);
|
|
133
|
-
})
|
|
134
|
-
.catch((e) => {
|
|
135
|
-
// eslint-disable-next-line no-console
|
|
136
|
-
console.error("Failed to load library", name);
|
|
137
|
-
});
|
|
138
|
-
}, [name]);
|
|
139
|
-
return lib;
|
|
140
|
-
}
|
|
141
122
|
|
|
142
|
-
const EditorCommandBar = ({ documentationUrl, saveCode, formatCode, newIssue,
|
|
123
|
+
const EditorCommandBar = ({ documentationUrl, saveCode, formatCode, newIssue, host, selectedEmitter, onSelectedEmitterChange, compilerOptions: emitterOptions, onCompilerOptionsChange, samples, selectedSampleName, onSelectedSampleNameChange, }) => {
|
|
143
124
|
const documentation = documentationUrl ? (jsx("label", { children: jsx(Link, { href: documentationUrl, target: "_blank", children: "Docs" }) })) : undefined;
|
|
144
125
|
const bugButton = newIssue ? jsx(FileBugButton, { onClick: newIssue }) : undefined;
|
|
145
|
-
|
|
126
|
+
const emitters = useMemo(() => Object.values(host.libraries)
|
|
127
|
+
.filter((x) => x.isEmitter)
|
|
128
|
+
.map((x) => x.name), [host.libraries]);
|
|
129
|
+
return (jsx("div", { css: { borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }, 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: emitters, onSelectedEmitterChange: onSelectedEmitterChange, selectedEmitter: selectedEmitter }), jsxs(Dialog, { children: [jsx(DialogTrigger, { children: jsx(ToolbarButton, { icon: jsx(Settings24Regular, {}) }) }), jsx(DialogSurface, { children: jsx(DialogBody, { children: jsx(CompilerSettings, { host: host, selectedEmitter: selectedEmitter, options: emitterOptions, onOptionsChanged: onCompilerOptionsChange }) }) })] }), documentation, jsx("div", { css: { flex: "1" } }), bugButton] }) }));
|
|
146
130
|
};
|
|
147
131
|
const FileBugButton = ({ onClick }) => {
|
|
148
132
|
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" }) }));
|
|
@@ -161,7 +145,7 @@ const Editor = ({ model, options, actions, onMount }) => {
|
|
|
161
145
|
}, []);
|
|
162
146
|
useEffect(() => {
|
|
163
147
|
var _a;
|
|
164
|
-
editor.setTheme((_a = options.theme) !== null && _a !== void 0 ? _a : "
|
|
148
|
+
editor.setTheme((_a = options.theme) !== null && _a !== void 0 ? _a : "typespec");
|
|
165
149
|
}, [options.theme]);
|
|
166
150
|
useEffect(() => {
|
|
167
151
|
const disposables = [];
|
|
@@ -464,7 +448,7 @@ const OutputContent = ({ viewSelection, program, viewers, editorOptions, }) => {
|
|
|
464
448
|
return (jsx("div", { css: {
|
|
465
449
|
height: "100%",
|
|
466
450
|
overflow: "scroll",
|
|
467
|
-
}, children: program && jsx(
|
|
451
|
+
}, children: program && jsx(TypeGraphViewer, { program: program }) }));
|
|
468
452
|
}
|
|
469
453
|
};
|
|
470
454
|
const ErrorTabLabel = ({ diagnostics }) => {
|
|
@@ -477,6 +461,19 @@ const ErrorTabCountStyles = css({
|
|
|
477
461
|
padding: "0 5px",
|
|
478
462
|
borderRadius: "20px",
|
|
479
463
|
});
|
|
464
|
+
const TypeGraphViewer = ({ program }) => {
|
|
465
|
+
return (jsx(ColorProvider, { colors: TypeGraphColors, children: jsx(TypeSpecProgramViewer, { program: program }) }));
|
|
466
|
+
};
|
|
467
|
+
const TypeGraphColors = {
|
|
468
|
+
background: tokens.colorNeutralBackground1,
|
|
469
|
+
typeKind: tokens.colorPaletteBerryForeground2,
|
|
470
|
+
typeName: tokens.colorNeutralForeground2,
|
|
471
|
+
dataKey: tokens.colorNeutralForeground2,
|
|
472
|
+
ref: tokens.colorBrandForeground1,
|
|
473
|
+
literal: tokens.colorPaletteLightGreenForeground2,
|
|
474
|
+
indentationGuide: tokens.colorNeutralForeground4,
|
|
475
|
+
property: tokens.colorPaletteMarigoldForeground2,
|
|
476
|
+
};
|
|
480
477
|
|
|
481
478
|
function Pane({ children, ...props }) {
|
|
482
479
|
return jsx("div", { ...props, children: children });
|
|
@@ -739,7 +736,6 @@ const Playground = (props) => {
|
|
|
739
736
|
const onTypeSpecEditorMount = useCallback(({ editor }) => {
|
|
740
737
|
editorRef.current = editor;
|
|
741
738
|
}, []);
|
|
742
|
-
const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);
|
|
743
739
|
return (jsxs("div", { css: {
|
|
744
740
|
display: "grid",
|
|
745
741
|
gridTemplateColumns: "1",
|
|
@@ -749,7 +745,7 @@ const Playground = (props) => {
|
|
|
749
745
|
height: "100%",
|
|
750
746
|
overflow: "hidden",
|
|
751
747
|
fontFamily: `"Segoe UI", Tahoma, Geneva, Verdana, sans-serif`,
|
|
752
|
-
}, children: [jsxs(SplitPane, { initialSizes: ["50%", "50%"], css: { gridArea: "typespeceditor", width: "100%", height: "100%", overflow: "hidden" }, children: [jsxs(Pane, { children: [jsx(EditorCommandBar, {
|
|
748
|
+
}, children: [jsxs(SplitPane, { initialSizes: ["50%", "50%"], css: { gridArea: "typespeceditor", width: "100%", height: "100%", overflow: "hidden" }, children: [jsxs(Pane, { children: [jsx(EditorCommandBar, { host: host, 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, options: props.editorOptions, onMount: onTypeSpecEditorMount })] }), jsx(Pane, { children: jsx(OutputView, { compilationState: compilationState, editorOptions: props.editorOptions, viewers: (_d = props.emitterViewers) === null || _d === void 0 ? void 0 : _d[selectedEmitter] }) })] }), jsx(Footer, { host: host })] }));
|
|
753
749
|
};
|
|
754
750
|
const outputDir = "./tsp-output";
|
|
755
751
|
async function compile(host, content, selectedEmitter, options) {
|
|
@@ -816,7 +812,6 @@ function useStandalonePlaygroundContext(config) {
|
|
|
816
812
|
const load = async () => {
|
|
817
813
|
const host = await createBrowserHost(config.libraries, config.importConfig);
|
|
818
814
|
await registerMonacoLanguage(host);
|
|
819
|
-
registerMonacoDefaultWorkers();
|
|
820
815
|
const stateStorage = createStandalonePlaygroundStateStorage();
|
|
821
816
|
const initialState = stateStorage.load();
|
|
822
817
|
setContext({ host, initialState, stateStorage });
|
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 { importLibrary } from \"../../core.js\";\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 importLibrary(name, {})\n .then((module: any) => {\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 tokens,\n} from \"@fluentui/react-components\";\nimport {\n Broom16Filled,\n Bug16Regular,\n Save16Regular,\n Settings24Regular,\n} from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent } 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 ${tokens.colorNeutralStroke1}` }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={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 editor.setTheme(options.theme ?? \"vs\");\n }, [options.theme]);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\nimport { BrowserHost } from \"../types.js\";\n\nexport interface FooterProps {\n host: BrowserHost;\n}\nexport const Footer: FunctionComponent<FooterProps> = ({ host }) => {\n const { MANIFEST } = host.compiler;\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: tokens.colorNeutralForeground2 }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: tokens.colorStatusDangerForeground1 });\nconst warningColor = css({ color: tokens.colorStatusWarningForeground1 });\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: `1px solid ${tokens.colorStatusDangerBorder1}`,\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { tokens } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: `1px solid ${tokens.colorNeutralStroke1}` }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <div\n tabIndex={0}\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: `1px solid ${tokens.colorNeutralStroke1}`,\n borderTop: \"none\",\n borderBottom: \"none\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: tokens.colorNeutralBackground5 } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </div>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\n\nexport interface TypeSpecEditorProps extends Omit<EditorProps, \"options\"> {\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = ({\n actions,\n options,\n ...other\n}) => {\n const resolvedOptions: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n ...options,\n };\n return <Editor actions={actions} options={resolvedOptions} {...other}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{\n filename: string;\n value: string;\n editorOptions?: PlaygroundEditorsOptions;\n}> = ({ filename, value, editorOptions }) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n ...editorOptions,\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeSpecProgramViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: tokens.colorStatusDangerBackground3,\n color: tokens.colorNeutralForegroundOnBrand,\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);\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 options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer host={host} />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoDefaultWorkers } from \"../monaco-worker.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n registerMonacoDefaultWorkers();\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return <></>;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/editor-command-bar.tsx","../../../src/react/editor.tsx","../../../src/react/footer.tsx","../../../src/react/hooks.ts","../../../src/react/diagnostic-list.tsx","../../../src/react/error-tab.tsx","../../../src/react/file-output.tsx","../../../src/react/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedEmitter}>\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select className=\"sample-dropdown\" onChange={handleSelected} value={selectedSampleName ?? \"\"}>\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\n\nexport interface EmitterOptionsFormProps {\n library: PlaygroundTspLibrary;\n options: EmitterOptions;\n optionsChanged: (options: EmitterOptions) => void;\n}\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.definition?.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div>\n {entries.map(([key, value]) => {\n return (\n <div key={key} css={{ margin: \"16px 0\" }}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ntype JsonSchemaProperty = {\n type: \"string\" | \"boolean\" | \"number\";\n description?: string;\n enum?: string[];\n default?: any;\n};\n\ntype JsonSchemaPropertyInputProps = {\n emitterOptions: Record<string, unknown>;\n name: string;\n prop: JsonSchemaProperty;\n onChange: (data: { name: string; value: unknown }) => void;\n};\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return <Switch label={prettyName} checked={value} onChange={handleChange} />;\n case \"string\":\n default:\n return (\n <div>\n <div>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n </div>\n <div>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: Record<string, PlaygroundTspLibrary>;\n linterRuleSet: LinterRuleSet;\n onLinterRuleSetChanged: (options: LinterRuleSet) => void;\n}\n\nexport const LinterForm: FunctionComponent<LinterFormProps> = ({\n libraries,\n linterRuleSet,\n onLinterRuleSetChanged,\n}) => {\n const rulesets = Object.values(libraries).flatMap((lib) => {\n return Object.keys(lib.definition?.linter?.ruleSets ?? {}).map(\n (x) => `${lib.name}/${x}`\n ) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { CompilerOptions, LinterRuleSet } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport type CompilerSettingsProps = {\n host: BrowserHost;\n selectedEmitter: string;\n options: CompilerOptions;\n onOptionsChanged: (options: CompilerOptions) => void;\n};\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n host,\n options,\n onOptionsChanged,\n}) => {\n const emitterOptionsChanged = useCallback(\n (emitterOptions: EmitterOptions) => {\n onOptionsChanged({\n ...options,\n options: emitterOptions,\n });\n },\n [options]\n );\n const library = host.libraries[selectedEmitter];\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div css={{ padding: 10 }}>\n <h2>Settings</h2>\n <>Emitter: {selectedEmitter}</>\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <h3>Linter</h3>\n <LinterForm\n libraries={host.libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n","import {\n Dialog,\n DialogBody,\n DialogSurface,\n DialogTrigger,\n Link,\n Toolbar,\n ToolbarButton,\n Tooltip,\n tokens,\n} from \"@fluentui/react-components\";\nimport {\n Broom16Filled,\n Bug16Regular,\n Save16Regular,\n Settings24Regular,\n} from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EmitterDropdown } from \"./emitter-dropdown.js\";\nimport { SamplesDropdown } from \"./samples-dropdown.js\";\nimport { CompilerSettings } from \"./settings/compiler-settings.js\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n newIssue?: () => Promise<void> | void;\n host: BrowserHost;\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n\n samples?: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\nexport const EditorCommandBar: FunctionComponent<EditorCommandBarProps> = ({\n documentationUrl,\n saveCode,\n formatCode,\n newIssue,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions: emitterOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = newIssue ? <FileBugButton onClick={newIssue} /> : undefined;\n\n const emitters = useMemo(\n () =>\n Object.values(host.libraries)\n .filter((x) => x.isEmitter)\n .map((x) => x.name),\n [host.libraries]\n );\n\n return (\n <div css={{ borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={emitterOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogBody>\n </DialogSurface>\n </Dialog>\n {documentation}\n <div css={{ flex: \"1\" }}></div>\n {bugButton}\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n >\n File bug\n </ToolbarButton>\n </Tooltip>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n onMount?: (data: OnMountData) => void;\n}\n\nexport interface OnMountData {\n editor: editor.IStandaloneCodeEditor;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions, onMount }) => {\n const editorContainerRef = useRef(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n\n useEffect(() => {\n editorRef.current = editor.create(editorContainerRef.current!, {\n model,\n automaticLayout: true,\n ...options,\n });\n onMount?.({ editor: editorRef.current });\n }, []);\n\n useEffect(() => {\n editor.setTheme(options.theme ?? \"typespec\");\n }, [options.theme]);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { css } from \"@emotion/react\";\nimport { FunctionComponent, PropsWithChildren } from \"react\";\nimport { BrowserHost } from \"../types.js\";\n\nexport interface FooterProps {\n host: BrowserHost;\n}\nexport const Footer: FunctionComponent<FooterProps> = ({ host }) => {\n const { MANIFEST } = host.compiler;\n const prItem = MANIFEST.pr ? (\n <FooterItem link={`https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`}>\n <span>PR </span>\n <span>{MANIFEST.pr}</span>\n </FooterItem>\n ) : (\n <></>\n );\n return (\n <div\n css={[\n {\n gridArea: \"footer\",\n gridRow: \"3\",\n backgroundColor: \"#007acc\",\n display: \"flex\",\n fontSize: \"14px\",\n },\n MANIFEST.pr ? { backgroundColor: \"#ce662a\" } : {},\n ]}\n >\n {prItem}\n <FooterItem>\n <span>TypeSpec Version </span>\n <span>{MANIFEST.version}</span>\n </FooterItem>\n <FooterItem link={`https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`}>\n <span>Commit </span>\n <span>{MANIFEST.commit.slice(0, 6)}</span>\n </FooterItem>\n </div>\n );\n};\n\ninterface FooterItemProps {\n link?: string;\n}\nconst FooterItem: FunctionComponent<PropsWithChildren<FooterItemProps>> = ({ children, link }) => {\n return link ? (\n <a css={FooterItemStyles} href={link} target=\"_blank\">\n {children}\n </a>\n ) : (\n <div css={FooterItemStyles}>{children}</div>\n );\n};\n\nconst FooterItemStyles = css({\n textDecoration: \"none\",\n color: \"#fefefe\",\n borderRight: \"1px solid #d5d5d5\",\n padding: \"0 5px\",\n \"&:hover\": {\n backgroundColor: \"#063a5c\",\n },\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({ diagnostics }) => {\n if (diagnostics.length === 0) {\n return <div className=\"center\">No errors</div>;\n }\n return (\n <div css={{ height: \"100%\", overflow: \"auto\" }}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} />;\n })}\n </div>\n );\n};\n\nexport interface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n}\n\nexport const DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic }) => {\n return (\n <div css={{ display: \"flex\" }}>\n <div\n css={[{ padding: \"0 5px\" }, diagnostic.severity === \"error\" ? errorColor : warningColor]}\n >\n {diagnostic.severity}\n </div>\n <div css={{ padding: \"0 5px\", color: tokens.colorNeutralForeground2 }}>{diagnostic.code}</div>\n <div css={{ padding: \"0 5px\" }}>{diagnostic.message}</div>\n </div>\n );\n};\n\nconst errorColor = css({ color: tokens.colorStatusDangerForeground1 });\nconst warningColor = css({ color: tokens.colorStatusWarningForeground1 });\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport type { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent } from \"react\";\nimport { DiagnosticList } from \"./diagnostic-list.js\";\n\nexport interface ErrorTabProps {\n readonly internalCompilerError?: any;\n readonly diagnostics?: readonly Diagnostic[];\n}\n\nexport const ErrorTab: FunctionComponent<ErrorTabProps> = ({\n internalCompilerError,\n diagnostics,\n}) => {\n return (\n <>\n {internalCompilerError && <InternalCompilerError error={internalCompilerError} />}\n {diagnostics && <DiagnosticList diagnostics={diagnostics} />}\n </>\n );\n};\nexport interface InternalCompilerErrorProps {\n readonly error?: any;\n}\n\nexport const InternalCompilerError: FunctionComponent<InternalCompilerErrorProps> = ({ error }) => {\n return (\n <div css={{ CenterStyles }}>\n <div\n css={{\n border: `1px solid ${tokens.colorStatusDangerBorder1}`,\n padding: \"10px\",\n margin: \"20px\",\n }}\n >\n <h3>Internal Compiler error</h3>\n <div>File issue at https://github.com/microsoft/typespec</div>\n <hr />\n <div>{error.stack}</div>\n </div>\n </div>\n );\n};\n\nconst CenterStyles = css({\n display: \"flex\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n","import { css } from \"@emotion/react\";\nimport { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"./types.js\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <Select value={selected} onChange={handleSelected} css={DropdownStyle}>\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n\nconst DropdownStyle = css({\n margin: \"0.5rem 1.5rem\",\n position: \"absolute\",\n \"z-index\": 1,\n right: 0,\n});\n","import { tokens } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement } from \"react\";\n\nexport interface Tab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: Tab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n return (\n <div css={{ display: \"flex\", borderBottom: `1px solid ${tokens.colorNeutralStroke1}` }}>\n {leftTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n <span css={{ flex: 1, borderRight: `1px solid ${tokens.colorNeutralStroke1}` }}></span>\n {rightTabs.map((tab) => {\n return (\n <OutputTab key={tab.id} tab={tab} selected={selected === tab.id} onSelect={onSelect} />\n );\n })}\n </div>\n );\n};\nexport interface OutputTabProps {\n tab: Tab;\n selected: boolean;\n onSelect: (id: string) => void;\n}\nexport const OutputTab: FunctionComponent<OutputTabProps> = ({ tab, selected, onSelect }) => {\n return (\n <div\n tabIndex={0}\n css={[\n {\n height: \"26px\",\n padding: \"0 5px\",\n borderRight: `1px solid ${tokens.colorNeutralStroke1}`,\n borderTop: \"none\",\n borderBottom: \"none\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n selected ? { fontWeight: \"bold\", backgroundColor: tokens.colorNeutralBackground5 } : {},\n ]}\n onClick={() => onSelect(tab.id)}\n >\n {tab.name}\n </div>\n );\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\n\nexport interface TypeSpecEditorProps extends Omit<EditorProps, \"options\"> {\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = ({\n actions,\n options,\n ...other\n}) => {\n const resolvedOptions: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n ...options,\n };\n return <Editor actions={actions} options={resolvedOptions} {...other}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{\n filename: string;\n value: string;\n editorOptions?: PlaygroundEditorsOptions;\n}> = ({ filename, value, editorOptions }) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n ...editorOptions,\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { css } from \"@emotion/react\";\nimport { tokens } from \"@fluentui/react-components\";\nimport { Diagnostic, Program } from \"@typespec/compiler\";\nimport { ColorPalette, ColorProvider, TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeGraphViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: tokens.colorStatusDangerBackground3,\n color: tokens.colorNeutralForegroundOnBrand,\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n\ninterface TypeGraphViewerProps {\n program: Program;\n}\nconst TypeGraphViewer = ({ program }: TypeGraphViewerProps) => {\n return (\n <ColorProvider colors={TypeGraphColors}>\n <TypeSpecProgramViewer program={program} />\n </ColorProvider>\n );\n};\n\nconst TypeGraphColors: ColorPalette = {\n background: tokens.colorNeutralBackground1,\n typeKind: tokens.colorPaletteBerryForeground2,\n typeName: tokens.colorNeutralForeground2,\n dataKey: tokens.colorNeutralForeground2,\n ref: tokens.colorBrandForeground1,\n literal: tokens.colorPaletteLightGreenForeground2,\n indentationGuide: tokens.colorNeutralForeground4,\n property: tokens.colorPaletteMarigoldForeground2,\n};\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n host={host}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer host={host} />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return <></>;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createBrowserHost } from "./browser-host.js";
|
|
2
|
-
export {
|
|
2
|
+
export { registerMonacoDefaultWorkersForVite } from "./monaco-worker.js";
|
|
3
3
|
export { registerMonacoLanguage } from "./services.js";
|
|
4
4
|
export { StateStorage, createUrlStateStorage } from "./state-storage.js";
|
|
5
5
|
export type { BrowserHost, PlaygroundSample } from "./types.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function registerMonacoDefaultWorkersForVite(): void;
|
|
2
2
|
//# sourceMappingURL=monaco-worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monaco-worker.d.ts","sourceRoot":"","sources":["../../src/monaco-worker.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"monaco-worker.d.ts","sourceRoot":"","sources":["../../src/monaco-worker.ts"],"names":[],"mappings":"AAAA,wBAAgB,mCAAmC,SAgClD"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CompilerOptions } from "@typespec/compiler";
|
|
2
2
|
import { FunctionComponent } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { BrowserHost, PlaygroundSample } from "../types.js";
|
|
4
4
|
export interface EditorCommandBarProps {
|
|
5
5
|
documentationUrl?: string;
|
|
6
6
|
saveCode: () => Promise<void> | void;
|
|
7
7
|
formatCode: () => Promise<void> | void;
|
|
8
8
|
newIssue?: () => Promise<void> | void;
|
|
9
|
-
|
|
9
|
+
host: BrowserHost;
|
|
10
10
|
selectedEmitter: string;
|
|
11
11
|
onSelectedEmitterChange: (emitter: string) => void;
|
|
12
12
|
compilerOptions: CompilerOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/react/editor-command-bar.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"editor-command-bar.d.ts","sourceRoot":"","sources":["../../../src/react/editor-command-bar.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK5D,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,IAAI,EAAE,WAAW,CAAC;IAClB,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,CA0ErE,CAAC"}
|
|
@@ -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,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;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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,
|
|
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;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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,8 +1,8 @@
|
|
|
1
1
|
import { CompilerOptions } from "@typespec/compiler";
|
|
2
2
|
import { FunctionComponent } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { BrowserHost } from "../../types.js";
|
|
4
4
|
export type CompilerSettingsProps = {
|
|
5
|
-
|
|
5
|
+
host: BrowserHost;
|
|
6
6
|
selectedEmitter: string;
|
|
7
7
|
options: CompilerOptions;
|
|
8
8
|
onOptionsChanged: (options: CompilerOptions) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-settings.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/compiler-settings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"compiler-settings.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/compiler-settings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CA8CrE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { TypeSpecLibrary } from "@typespec/compiler";
|
|
2
1
|
import { FunctionComponent } from "react";
|
|
2
|
+
import { PlaygroundTspLibrary } from "../../types.js";
|
|
3
3
|
import { EmitterOptions } from "../types.js";
|
|
4
4
|
export interface EmitterOptionsFormProps {
|
|
5
|
-
library:
|
|
5
|
+
library: PlaygroundTspLibrary;
|
|
6
6
|
options: EmitterOptions;
|
|
7
7
|
optionsChanged: (options: EmitterOptions) => void;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-options-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/emitter-options-form.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"emitter-options-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/emitter-options-form.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AACD,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,uBAAuB,CAuCzE,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { LinterRuleSet } from "@typespec/compiler";
|
|
|
2
2
|
import { FunctionComponent } from "react";
|
|
3
3
|
import { PlaygroundTspLibrary } from "../../types.js";
|
|
4
4
|
export interface LinterFormProps {
|
|
5
|
-
libraries: PlaygroundTspLibrary
|
|
5
|
+
libraries: Record<string, PlaygroundTspLibrary>;
|
|
6
6
|
linterRuleSet: LinterRuleSet;
|
|
7
7
|
onLinterRuleSetChanged: (options: LinterRuleSet) => void;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/linter-form.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAW,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"linter-form.d.ts","sourceRoot":"","sources":["../../../../src/react/settings/linter-form.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAW,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAChD,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAuCzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/react/standalone.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/react/standalone.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,OAAO,CAAC;AAG5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;AAE1E,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;AAyBD,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,qBAAqB,CAmDzE,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,6DAExE;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,iBASxE;AAED,wBAAgB,sCAAsC,IAAI,YAAY,CAAC,kBAAkB,CAAC,CA0BzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmCzC,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmCzC,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,WAAW,iBA0T7D;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,cAAc,oBAAoB,CAAC,EACrD,MAAM,EAAE,gBAAgB,GAAG,OAAO,QAAQ,GACzC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC,CAkB7F"}
|
|
@@ -162,36 +162,6 @@ async function createBrowserHost(libsToLoad, importOptions = {}) {
|
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
function registerMonacoDefaultWorkers() {
|
|
166
|
-
self.MonacoEnvironment = {
|
|
167
|
-
getWorker: function (workerId, label) {
|
|
168
|
-
const getWorkerModule = (moduleUrl, label) => {
|
|
169
|
-
return new Worker(self.MonacoEnvironment.getWorkerUrl(moduleUrl), {
|
|
170
|
-
name: label,
|
|
171
|
-
type: "module",
|
|
172
|
-
});
|
|
173
|
-
};
|
|
174
|
-
switch (label) {
|
|
175
|
-
case "json":
|
|
176
|
-
return getWorkerModule("/monaco-editor/esm/vs/language/json/json.worker?worker", label);
|
|
177
|
-
case "css":
|
|
178
|
-
case "scss":
|
|
179
|
-
case "less":
|
|
180
|
-
return getWorkerModule("/monaco-editor/esm/vs/language/css/css.worker?worker", label);
|
|
181
|
-
case "html":
|
|
182
|
-
case "handlebars":
|
|
183
|
-
case "razor":
|
|
184
|
-
return getWorkerModule("/monaco-editor/esm/vs/language/html/html.worker?worker", label);
|
|
185
|
-
case "typescript":
|
|
186
|
-
case "javascript":
|
|
187
|
-
return getWorkerModule("/monaco-editor/esm/vs/language/typescript/ts.worker?worker", label);
|
|
188
|
-
default:
|
|
189
|
-
return getWorkerModule("/monaco-editor/esm/vs/editor/editor.worker?worker", label);
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
|
|
195
165
|
function getIndentAction(value) {
|
|
196
166
|
switch (value) {
|
|
197
167
|
case "none":
|
|
@@ -453,6 +423,15 @@ async function registerMonacoLanguage(host) {
|
|
|
453
423
|
{ token: "function", foreground: "#795E26" },
|
|
454
424
|
],
|
|
455
425
|
});
|
|
426
|
+
monaco.editor.defineTheme("typespec-dark", {
|
|
427
|
+
base: "vs-dark",
|
|
428
|
+
inherit: true,
|
|
429
|
+
colors: {},
|
|
430
|
+
rules: [
|
|
431
|
+
{ token: "macro", foreground: "#E06C75" },
|
|
432
|
+
{ token: "function", foreground: "#E06C75" },
|
|
433
|
+
],
|
|
434
|
+
});
|
|
456
435
|
monaco.editor.setTheme("typespec");
|
|
457
436
|
monaco.languages.registerDocumentSemanticTokensProvider("typespec", {
|
|
458
437
|
getLegend() {
|
|
@@ -589,5 +568,5 @@ function createUrlStateStorage(schema) {
|
|
|
589
568
|
}
|
|
590
569
|
}
|
|
591
570
|
|
|
592
|
-
export {
|
|
593
|
-
//# sourceMappingURL=state-storage-
|
|
571
|
+
export { createUrlStateStorage as a, createBrowserHost as c, getMarkerLocation as g, registerMonacoLanguage as r };
|
|
572
|
+
//# sourceMappingURL=state-storage-1ccb8536.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-storage-1ccb8536.js","sources":["../../src/core.ts","../../src/browser-host.ts","../../src/services.ts","../../src/state-storage.ts"],"sourcesContent":["/**\n * Options for importing libraries.\n */\nexport interface LibraryImportOptions {\n /**\n * Should use es-module-shim importmap-shim instead of built-in import and importmap system.\n * @see https://github.com/guybedford/es-module-shims\n */\n useShim?: boolean;\n}\n\nexport async function importTypeSpecCompiler(\n config: any\n): Promise<typeof import(\"@typespec/compiler\")> {\n return (await importLibrary(\"@typespec/compiler\", config)) as any;\n}\n\n/**\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nexport async function importLibrary(name: string, config: LibraryImportOptions): Promise<unknown> {\n return config.useShim\n ? importShim(name)\n : import(/* @vite-ignore */ /* webpackIgnore: true */ name);\n}\n\n/**\n * Loading external import map doesn't work yet\n *\n * https://github.com/WICG/import-maps/issues/235\n *\n * A polyfill for importmap is loaded but required calling importShim instead of the native import https://github.com/guybedford/es-module-shims\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nasync function importShim(name: string): Promise<unknown> {\n return (window as any).importShim(name);\n}\n","import { createSourceFile, getSourceFileKindFromExt, resolvePath } from \"@typespec/compiler\";\nimport { LibraryImportOptions, importLibrary, importTypeSpecCompiler } from \"./core.js\";\nimport { BrowserHost, PlaygroundTspLibrary } from \"./types.js\";\n\nexport function resolveVirtualPath(path: string, ...paths: string[]) {\n return resolvePath(\"/test\", path, ...paths);\n}\n\n/**\n * Create the browser host from the list of libraries.\n * @param libsToLoad List of libraries to load. Those must be set in the webpage importmap.\n * @param importOptions Import configuration.\n * @returns\n */\nexport async function createBrowserHost(\n libsToLoad: string[],\n importOptions: LibraryImportOptions = {}\n): Promise<BrowserHost> {\n const virtualFs = new Map<string, string>();\n const jsImports = new Map<string, Promise<any>>();\n\n const libraries: Record<string, PlaygroundTspLibrary> = {};\n for (const libName of libsToLoad) {\n const { _TypeSpecLibrary_, $lib } = (await importLibrary(libName, importOptions)) as any;\n libraries[libName] = { name: libName, isEmitter: $lib?.emitter, definition: $lib };\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.typespecSourceFiles)) {\n virtualFs.set(`/test/node_modules/${libName}/${key}`, value);\n }\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.jsSourceFiles)) {\n addJsImport(`/test/node_modules/${libName}/${key}`, value);\n }\n }\n\n function addJsImport(path: string, value: any) {\n virtualFs.set(path, \"\");\n jsImports.set(path, value);\n }\n return {\n compiler: await importTypeSpecCompiler(importOptions),\n libraries,\n async readUrl(url: string) {\n const contents = virtualFs.get(url);\n if (contents === undefined) {\n const e = new Error(`File ${url} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, url);\n },\n async readFile(path: string) {\n path = resolveVirtualPath(path);\n const contents = virtualFs.get(path);\n if (contents === undefined) {\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, path);\n },\n\n async writeFile(path: string, content: string) {\n path = resolveVirtualPath(path);\n virtualFs.set(path, content);\n },\n\n async readDir(path: string) {\n path = resolveVirtualPath(path);\n const fileFolder = [...virtualFs.keys()]\n .filter((x) => x.startsWith(`${path}/`))\n .map((x) => x.replace(`${path}/`, \"\"))\n .map((x) => {\n const index = x.indexOf(\"/\");\n return index !== -1 ? x.substring(0, index) : x;\n });\n return [...new Set(fileFolder)];\n },\n\n async rm(path: string) {\n path = resolveVirtualPath(path);\n\n for (const key of virtualFs.keys()) {\n if (key === path || key.startsWith(`${path}/`)) {\n virtualFs.delete(key);\n }\n }\n },\n\n getLibDirs() {\n return [resolveVirtualPath(\"/test/node_modules/@typespec/compiler/lib\")];\n },\n\n getExecutionRoot() {\n return resolveVirtualPath(\".tsp\");\n },\n\n async getJsImport(path) {\n path = resolveVirtualPath(path);\n const module = await jsImports.get(path);\n if (module === undefined) {\n const e = new Error(`Module ${path} not found`);\n (e as any).code = \"MODULE_NOT_FOUND\";\n throw e;\n }\n return module;\n },\n\n async stat(path: string) {\n path = resolveVirtualPath(path);\n\n if (virtualFs.has(path)) {\n return {\n isDirectory() {\n return false;\n },\n isFile() {\n return true;\n },\n };\n }\n\n for (const fsPath of virtualFs.keys()) {\n if (fsPath.startsWith(path) && fsPath !== path) {\n return {\n isDirectory() {\n return true;\n },\n isFile() {\n return false;\n },\n };\n }\n }\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n },\n\n // symlinks not supported in test-host\n async realpath(path) {\n return path;\n },\n\n getSourceFileKind: getSourceFileKindFromExt,\n\n logSink: console,\n mkdirp: async (path: string) => path,\n fileURLToPath(path) {\n return path.replace(\"inmemory:/\", \"\");\n },\n pathToFileURL(path) {\n return \"inmemory:/\" + resolveVirtualPath(path);\n },\n };\n}\n","import {\n DiagnosticTarget,\n NoTarget,\n ServerHost,\n TypeSpecLanguageConfiguration,\n} from \"@typespec/compiler\";\nimport * as monaco from \"monaco-editor\";\nimport { editor } from \"monaco-editor\";\nimport * as lsp from \"vscode-languageserver\";\nimport { DocumentHighlightKind, FormattingOptions } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { BrowserHost } from \"./types.js\";\n\nfunction getIndentAction(\n value: \"none\" | \"indent\" | \"indentOutdent\" | \"outdent\"\n): monaco.languages.IndentAction {\n switch (value) {\n case \"none\":\n return monaco.languages.IndentAction.None;\n case \"indent\":\n return monaco.languages.IndentAction.Indent;\n case \"indentOutdent\":\n return monaco.languages.IndentAction.IndentOutdent;\n case \"outdent\":\n return monaco.languages.IndentAction.Outdent;\n }\n}\n\nfunction getTypeSpecLanguageConfiguration(): monaco.languages.LanguageConfiguration {\n return {\n ...(TypeSpecLanguageConfiguration as any),\n onEnterRules: TypeSpecLanguageConfiguration.onEnterRules.map((rule) => {\n return {\n beforeText: new RegExp(rule.beforeText.pattern),\n previousLineText:\n \"previousLineText\" in rule ? new RegExp(rule.previousLineText.pattern) : undefined,\n action: {\n indentAction: getIndentAction(rule.action.indent),\n appendText: \"appendText\" in rule.action ? rule.action.appendText : undefined,\n removeText: \"removeText\" in rule.action ? rule.action.removeText : undefined,\n },\n };\n }),\n };\n}\n\nexport async function registerMonacoLanguage(host: BrowserHost) {\n monaco.languages.register({ id: \"typespec\", extensions: [\".tsp\"] });\n monaco.languages.setLanguageConfiguration(\"typespec\", getTypeSpecLanguageConfiguration());\n\n const serverHost: ServerHost = {\n compilerHost: host,\n getOpenDocumentByURL(url: string) {\n const model = monaco.editor.getModel(monaco.Uri.parse(url));\n return model ? textDocumentForModel(model) : undefined;\n },\n sendDiagnostics() {},\n // eslint-disable-next-line no-console\n log: console.log,\n };\n\n const { createServer } = host.compiler;\n const serverLib = createServer(serverHost);\n const lsConfig = await serverLib.initialize({\n capabilities: {},\n processId: 1,\n workspaceFolders: [],\n rootUri: \"inmemory://\",\n });\n serverLib.initialized({});\n\n function textDocumentForModel(model: monaco.editor.IModel) {\n return TextDocument.create(\n model.uri.toString(),\n \"typespec\",\n model.getVersionId(),\n model.getValue()\n );\n }\n\n function lspDocumentArgs(model: monaco.editor.ITextModel) {\n return {\n textDocument: textDocumentForModel(model),\n };\n }\n\n function lspArgs(model: monaco.editor.ITextModel, pos: monaco.Position) {\n return {\n ...lspDocumentArgs(model),\n position: lspPosition(pos),\n };\n }\n\n function lspPosition(pos: monaco.Position): lsp.Position {\n return {\n line: pos.lineNumber - 1,\n character: pos.column - 1,\n };\n }\n\n function lspFormattingOptions(options: monaco.languages.FormattingOptions) {\n return FormattingOptions.create(options.tabSize, options.insertSpaces);\n }\n\n function monacoLocation(loc: lsp.Location): monaco.languages.Location {\n return {\n uri: monaco.Uri.parse(loc.uri),\n range: monacoRange(loc.range),\n };\n }\n\n function monacoDocumentHighlight(\n highlight: lsp.DocumentHighlight\n ): monaco.languages.DocumentHighlight {\n return {\n range: monacoRange(highlight.range),\n kind: monacoDocumentHighlightKind(highlight.kind),\n };\n }\n\n function monacoDocumentHighlightKind(kind: DocumentHighlightKind | undefined) {\n switch (kind) {\n case DocumentHighlightKind.Text:\n return monaco.languages.DocumentHighlightKind.Text;\n case DocumentHighlightKind.Read:\n return monaco.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco.languages.DocumentHighlightKind.Write;\n default:\n return undefined;\n }\n }\n\n function monacoHoverContents(contents: lsp.MarkupContent): monaco.IMarkdownString[] {\n return [{ value: contents.value }];\n }\n\n function monacoHover(hover: lsp.Hover): monaco.languages.Hover {\n // eslint-disable-next-line deprecation/deprecation\n if (Array.isArray(hover.contents) || lsp.MarkedString.is(hover.contents)) {\n throw new Error(\"MarkedString (deprecated) not supported.\");\n }\n\n return {\n contents: monacoHoverContents(hover.contents),\n range: hover.range ? monacoRange(hover.range) : undefined,\n };\n }\n\n function monacoSignatureHelp(\n help: lsp.SignatureHelp | undefined\n ): monaco.languages.SignatureHelp {\n return {\n signatures:\n help?.signatures.map((x) => ({\n ...x,\n parameters: x.parameters ?? [],\n })) ?? [],\n activeSignature: help?.activeSignature ?? 0,\n activeParameter: help?.activeParameter ?? 0,\n };\n }\n\n function monacoRange(range: lsp.Range): monaco.IRange {\n return {\n startColumn: range.start.character + 1,\n startLineNumber: range.start.line + 1,\n endColumn: range.end.character + 1,\n endLineNumber: range.end.line + 1,\n };\n }\n\n function monacoFoldingRange(range: lsp.FoldingRange): monaco.languages.FoldingRange {\n return {\n start: range.startLine + 1,\n end: range.endLine + 1,\n kind: range.kind ? new monaco.languages.FoldingRangeKind(range.kind) : undefined,\n };\n }\n\n function monacoTextEdits(edit: lsp.TextEdit[]): monaco.languages.TextEdit[] {\n return edit.map(monacoTextEdit);\n }\n\n function monacoTextEdit(edit: lsp.TextEdit): monaco.languages.TextEdit {\n return {\n range: monacoRange(edit.range),\n text: edit.newText,\n };\n }\n\n function monacoWorkspaceEdit(edit: lsp.WorkspaceEdit): monaco.languages.WorkspaceEdit {\n const edits: monaco.languages.IWorkspaceTextEdit[] = [];\n for (const [uri, changes] of Object.entries(edit.changes ?? {})) {\n const resource = monaco.Uri.parse(uri);\n for (const change of changes) {\n edits.push({ resource, textEdit: monacoTextEdit(change), versionId: undefined });\n }\n }\n return { edits };\n }\n\n monaco.languages.registerDefinitionProvider(\"typespec\", {\n async provideDefinition(model, position) {\n const results = await serverLib.gotoDefinition(lspArgs(model, position));\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerReferenceProvider(\"typespec\", {\n async provideReferences(model, position, context) {\n const results = await serverLib.findReferences({ ...lspArgs(model, position), context });\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerRenameProvider(\"typespec\", {\n async resolveRenameLocation(model, position): Promise<monaco.languages.RenameLocation> {\n const result = await serverLib.prepareRename(lspArgs(model, position));\n if (!result) {\n throw new Error(\"This element can't be renamed.\");\n }\n const text = model.getWordAtPosition(position)?.word;\n if (!text) {\n throw new Error(\"Failed to obtain word at position.\");\n }\n return { text, range: monacoRange(result) };\n },\n\n async provideRenameEdits(model, position, newName) {\n const result = await serverLib.rename({ ...lspArgs(model, position), newName });\n return monacoWorkspaceEdit(result);\n },\n });\n\n monaco.languages.registerFoldingRangeProvider(\"typespec\", {\n async provideFoldingRanges(model) {\n const ranges = await serverLib.getFoldingRanges(lspDocumentArgs(model));\n const output = ranges.map(monacoFoldingRange);\n return output;\n },\n });\n\n monaco.languages.registerHoverProvider(\"typespec\", {\n async provideHover(model, position) {\n const hover = await serverLib.getHover(lspArgs(model, position));\n return monacoHover(hover);\n },\n });\n\n monaco.languages.registerSignatureHelpProvider(\"typespec\", {\n signatureHelpTriggerCharacters: [\"(\", \",\", \"<\"],\n signatureHelpRetriggerCharacters: [\")\"],\n async provideSignatureHelp(model, position) {\n const help = await serverLib.getSignatureHelp(lspArgs(model, position));\n return { value: monacoSignatureHelp(help), dispose: () => {} };\n },\n });\n\n monaco.languages.registerDocumentFormattingEditProvider(\"typespec\", {\n async provideDocumentFormattingEdits(model, options, token) {\n const edits = await serverLib.formatDocument({\n ...lspDocumentArgs(model),\n options: lspFormattingOptions(options),\n });\n return monacoTextEdits(edits);\n },\n });\n\n monaco.languages.registerDocumentHighlightProvider(\"typespec\", {\n async provideDocumentHighlights(model, position) {\n const highlights = await serverLib.findDocumentHighlight(lspArgs(model, position));\n return highlights.map(monacoDocumentHighlight);\n },\n });\n\n monaco.languages.registerCompletionItemProvider(\"typespec\", {\n triggerCharacters: lsConfig.capabilities.completionProvider!.triggerCharacters,\n async provideCompletionItems(model, position) {\n const result = await serverLib.complete(lspArgs(model, position));\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const suggestions: monaco.languages.CompletionItem[] = [];\n for (const item of result.items) {\n suggestions.push({\n label: item.label,\n kind: item.kind as any,\n documentation: item.documentation,\n insertText: item.insertText!,\n range,\n commitCharacters:\n item.commitCharacters ?? lsConfig.capabilities.completionProvider!.allCommitCharacters,\n tags: item.tags,\n });\n }\n\n return { suggestions };\n },\n });\n\n monaco.editor.defineTheme(\"typespec\", {\n base: \"vs\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#800000\" },\n { token: \"function\", foreground: \"#795E26\" },\n ],\n });\n monaco.editor.defineTheme(\"typespec-dark\", {\n base: \"vs-dark\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#E06C75\" },\n { token: \"function\", foreground: \"#E06C75\" },\n ],\n });\n monaco.editor.setTheme(\"typespec\");\n\n monaco.languages.registerDocumentSemanticTokensProvider(\"typespec\", {\n getLegend() {\n const legend = lsConfig.capabilities.semanticTokensProvider!.legend;\n return {\n tokenModifiers: legend.tokenModifiers,\n tokenTypes: legend.tokenTypes.map((entry) => {\n switch (entry) {\n case \"namespace\":\n case \"class\":\n case \"enum\":\n case \"typeParameter\":\n case \"struct\":\n case \"interface\":\n return \"type\";\n case \"property\":\n case \"enumMember\":\n return \"variable\";\n case \"docCommentTag\":\n return \"keyword\";\n default:\n return entry;\n }\n }),\n };\n },\n async provideDocumentSemanticTokens(model) {\n const result = await serverLib.buildSemanticTokens(lspDocumentArgs(model));\n return {\n resultId: result.resultId,\n data: new Uint32Array(result.data),\n };\n },\n releaseDocumentSemanticTokens() {},\n });\n}\n\nexport function getMarkerLocation(\n typespecCompiler: typeof import(\"@typespec/compiler\"),\n target: DiagnosticTarget | typeof NoTarget\n): Pick<editor.IMarkerData, \"startLineNumber\" | \"startColumn\" | \"endLineNumber\" | \"endColumn\"> {\n const loc = typespecCompiler.getSourceLocation(target);\n if (loc === undefined || loc.file.path !== \"/test/main.tsp\") {\n return {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n };\n }\n const start = loc.file.getLineAndCharacterOfPosition(loc.pos);\n const end = loc.file.getLineAndCharacterOfPosition(loc.end);\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n}\n","import lzutf8 from \"lzutf8\";\n\nexport interface StateStorage<T extends object> {\n load(): Partial<T>;\n save(t: Partial<T>): void;\n}\n\nexport type UrlStorageSchema<T> = {\n [key in keyof T]: UrlStorageItem;\n};\n\nexport interface UrlStorageItem {\n /** Name of the query parameter where the data will be serialized. */\n queryParam: string;\n\n type?: \"string\" | \"object\";\n\n /** Encoding the data should be compressed with. If undefined param will not be compressed. */\n compress?: \"lz-base64\";\n}\n\n/**\n * Generic storage mechanism for data in the playground.\n * @param schema Schema of the data to be serialized in the query\n * @returns\n */\nexport function createUrlStateStorage<const T extends object>(\n schema: UrlStorageSchema<T>\n): StateStorage<T> {\n return { load, save };\n\n function load(): Partial<T> {\n const result: Record<string, string> = {};\n const parsed = new URLSearchParams(window.location.search);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = parsed.get(item.queryParam);\n const decompressed = value && decompress(item, value);\n const deserialized = decompressed && deserialize(item, decompressed);\n if (deserialized) {\n result[key] = deserialized;\n }\n }\n return result as Partial<T>;\n }\n\n function decompress(item: UrlStorageItem, value: string): string | undefined {\n if (item.compress) {\n try {\n return lzutf8.decompress(value, { inputEncoding: \"Base64\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function deserialize(item: UrlStorageItem, value: string): any {\n if (item.type === \"object\") {\n try {\n return JSON.parse(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function save(data: T) {\n const params = new URLSearchParams();\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = (data as any)[key];\n\n if (value) {\n const serialized = serialize(item, value);\n const compressed = compress(item, serialized);\n params.append(item.queryParam, compressed);\n }\n }\n history.pushState(null, \"\", window.location.pathname + \"?\" + params.toString());\n }\n\n function compress(item: UrlStorageItem, value: string): string {\n if (item.compress) {\n return lzutf8.compress(value, { outputEncoding: \"Base64\" });\n } else {\n return value;\n }\n }\n\n function serialize(item: UrlStorageItem, value: any): string {\n if (item.type === \"object\") {\n return JSON.stringify(value);\n } else {\n return value;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-storage-e765354d.js","sources":["../../src/core.ts","../../src/browser-host.ts","../../src/monaco-worker.ts","../../src/services.ts","../../src/state-storage.ts"],"sourcesContent":["/**\n * Options for importing libraries.\n */\nexport interface LibraryImportOptions {\n /**\n * Should use es-module-shim importmap-shim instead of built-in import and importmap system.\n * @see https://github.com/guybedford/es-module-shims\n */\n useShim?: boolean;\n}\n\nexport async function importTypeSpecCompiler(\n config: any\n): Promise<typeof import(\"@typespec/compiler\")> {\n return (await importLibrary(\"@typespec/compiler\", config)) as any;\n}\n\n/**\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nexport async function importLibrary(name: string, config: LibraryImportOptions): Promise<unknown> {\n return config.useShim\n ? importShim(name)\n : import(/* @vite-ignore */ /* webpackIgnore: true */ name);\n}\n\n/**\n * Loading external import map doesn't work yet\n *\n * https://github.com/WICG/import-maps/issues/235\n *\n * A polyfill for importmap is loaded but required calling importShim instead of the native import https://github.com/guybedford/es-module-shims\n * @param name Import name.\n * @returns Promise with the loaded module.\n */\nasync function importShim(name: string): Promise<unknown> {\n return (window as any).importShim(name);\n}\n","import { createSourceFile, getSourceFileKindFromExt, resolvePath } from \"@typespec/compiler\";\nimport { LibraryImportOptions, importLibrary, importTypeSpecCompiler } from \"./core.js\";\nimport { BrowserHost, PlaygroundTspLibrary } from \"./types.js\";\n\nexport function resolveVirtualPath(path: string, ...paths: string[]) {\n return resolvePath(\"/test\", path, ...paths);\n}\n\n/**\n * Create the browser host from the list of libraries.\n * @param libsToLoad List of libraries to load. Those must be set in the webpage importmap.\n * @param importOptions Import configuration.\n * @returns\n */\nexport async function createBrowserHost(\n libsToLoad: string[],\n importOptions: LibraryImportOptions = {}\n): Promise<BrowserHost> {\n const virtualFs = new Map<string, string>();\n const jsImports = new Map<string, Promise<any>>();\n\n const libraries: Record<string, PlaygroundTspLibrary> = {};\n for (const libName of libsToLoad) {\n const { _TypeSpecLibrary_, $lib } = (await importLibrary(libName, importOptions)) as any;\n libraries[libName] = { name: libName, isEmitter: $lib?.emitter, definition: $lib };\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.typespecSourceFiles)) {\n virtualFs.set(`/test/node_modules/${libName}/${key}`, value);\n }\n for (const [key, value] of Object.entries<any>(_TypeSpecLibrary_.jsSourceFiles)) {\n addJsImport(`/test/node_modules/${libName}/${key}`, value);\n }\n }\n\n function addJsImport(path: string, value: any) {\n virtualFs.set(path, \"\");\n jsImports.set(path, value);\n }\n return {\n compiler: await importTypeSpecCompiler(importOptions),\n libraries,\n async readUrl(url: string) {\n const contents = virtualFs.get(url);\n if (contents === undefined) {\n const e = new Error(`File ${url} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, url);\n },\n async readFile(path: string) {\n path = resolveVirtualPath(path);\n const contents = virtualFs.get(path);\n if (contents === undefined) {\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n }\n return createSourceFile(contents, path);\n },\n\n async writeFile(path: string, content: string) {\n path = resolveVirtualPath(path);\n virtualFs.set(path, content);\n },\n\n async readDir(path: string) {\n path = resolveVirtualPath(path);\n const fileFolder = [...virtualFs.keys()]\n .filter((x) => x.startsWith(`${path}/`))\n .map((x) => x.replace(`${path}/`, \"\"))\n .map((x) => {\n const index = x.indexOf(\"/\");\n return index !== -1 ? x.substring(0, index) : x;\n });\n return [...new Set(fileFolder)];\n },\n\n async rm(path: string) {\n path = resolveVirtualPath(path);\n\n for (const key of virtualFs.keys()) {\n if (key === path || key.startsWith(`${path}/`)) {\n virtualFs.delete(key);\n }\n }\n },\n\n getLibDirs() {\n return [resolveVirtualPath(\"/test/node_modules/@typespec/compiler/lib\")];\n },\n\n getExecutionRoot() {\n return resolveVirtualPath(\".tsp\");\n },\n\n async getJsImport(path) {\n path = resolveVirtualPath(path);\n const module = await jsImports.get(path);\n if (module === undefined) {\n const e = new Error(`Module ${path} not found`);\n (e as any).code = \"MODULE_NOT_FOUND\";\n throw e;\n }\n return module;\n },\n\n async stat(path: string) {\n path = resolveVirtualPath(path);\n\n if (virtualFs.has(path)) {\n return {\n isDirectory() {\n return false;\n },\n isFile() {\n return true;\n },\n };\n }\n\n for (const fsPath of virtualFs.keys()) {\n if (fsPath.startsWith(path) && fsPath !== path) {\n return {\n isDirectory() {\n return true;\n },\n isFile() {\n return false;\n },\n };\n }\n }\n const e = new Error(`File ${path} not found.`);\n (e as any).code = \"ENOENT\";\n throw e;\n },\n\n // symlinks not supported in test-host\n async realpath(path) {\n return path;\n },\n\n getSourceFileKind: getSourceFileKindFromExt,\n\n logSink: console,\n mkdirp: async (path: string) => path,\n fileURLToPath(path) {\n return path.replace(\"inmemory:/\", \"\");\n },\n pathToFileURL(path) {\n return \"inmemory:/\" + resolveVirtualPath(path);\n },\n };\n}\n","export function registerMonacoDefaultWorkers() {\n self.MonacoEnvironment = {\n getWorker: function (workerId, label) {\n const getWorkerModule = (moduleUrl: string, label: string) => {\n return new Worker((self.MonacoEnvironment as any).getWorkerUrl(moduleUrl), {\n name: label,\n type: \"module\",\n });\n };\n\n switch (label) {\n case \"json\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/json/json.worker?worker\", label);\n case \"css\":\n case \"scss\":\n case \"less\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/css/css.worker?worker\", label);\n case \"html\":\n case \"handlebars\":\n case \"razor\":\n return getWorkerModule(\"/monaco-editor/esm/vs/language/html/html.worker?worker\", label);\n case \"typescript\":\n case \"javascript\":\n return getWorkerModule(\n \"/monaco-editor/esm/vs/language/typescript/ts.worker?worker\",\n label\n );\n default:\n return getWorkerModule(\"/monaco-editor/esm/vs/editor/editor.worker?worker\", label);\n }\n },\n };\n}\n","import {\n DiagnosticTarget,\n NoTarget,\n ServerHost,\n TypeSpecLanguageConfiguration,\n} from \"@typespec/compiler\";\nimport * as monaco from \"monaco-editor\";\nimport { editor } from \"monaco-editor\";\nimport * as lsp from \"vscode-languageserver\";\nimport { DocumentHighlightKind, FormattingOptions } from \"vscode-languageserver\";\nimport { TextDocument } from \"vscode-languageserver-textdocument\";\nimport { BrowserHost } from \"./types.js\";\n\nfunction getIndentAction(\n value: \"none\" | \"indent\" | \"indentOutdent\" | \"outdent\"\n): monaco.languages.IndentAction {\n switch (value) {\n case \"none\":\n return monaco.languages.IndentAction.None;\n case \"indent\":\n return monaco.languages.IndentAction.Indent;\n case \"indentOutdent\":\n return monaco.languages.IndentAction.IndentOutdent;\n case \"outdent\":\n return monaco.languages.IndentAction.Outdent;\n }\n}\n\nfunction getTypeSpecLanguageConfiguration(): monaco.languages.LanguageConfiguration {\n return {\n ...(TypeSpecLanguageConfiguration as any),\n onEnterRules: TypeSpecLanguageConfiguration.onEnterRules.map((rule) => {\n return {\n beforeText: new RegExp(rule.beforeText.pattern),\n previousLineText:\n \"previousLineText\" in rule ? new RegExp(rule.previousLineText.pattern) : undefined,\n action: {\n indentAction: getIndentAction(rule.action.indent),\n appendText: \"appendText\" in rule.action ? rule.action.appendText : undefined,\n removeText: \"removeText\" in rule.action ? rule.action.removeText : undefined,\n },\n };\n }),\n };\n}\n\nexport async function registerMonacoLanguage(host: BrowserHost) {\n monaco.languages.register({ id: \"typespec\", extensions: [\".tsp\"] });\n monaco.languages.setLanguageConfiguration(\"typespec\", getTypeSpecLanguageConfiguration());\n\n const serverHost: ServerHost = {\n compilerHost: host,\n getOpenDocumentByURL(url: string) {\n const model = monaco.editor.getModel(monaco.Uri.parse(url));\n return model ? textDocumentForModel(model) : undefined;\n },\n sendDiagnostics() {},\n // eslint-disable-next-line no-console\n log: console.log,\n };\n\n const { createServer } = host.compiler;\n const serverLib = createServer(serverHost);\n const lsConfig = await serverLib.initialize({\n capabilities: {},\n processId: 1,\n workspaceFolders: [],\n rootUri: \"inmemory://\",\n });\n serverLib.initialized({});\n\n function textDocumentForModel(model: monaco.editor.IModel) {\n return TextDocument.create(\n model.uri.toString(),\n \"typespec\",\n model.getVersionId(),\n model.getValue()\n );\n }\n\n function lspDocumentArgs(model: monaco.editor.ITextModel) {\n return {\n textDocument: textDocumentForModel(model),\n };\n }\n\n function lspArgs(model: monaco.editor.ITextModel, pos: monaco.Position) {\n return {\n ...lspDocumentArgs(model),\n position: lspPosition(pos),\n };\n }\n\n function lspPosition(pos: monaco.Position): lsp.Position {\n return {\n line: pos.lineNumber - 1,\n character: pos.column - 1,\n };\n }\n\n function lspFormattingOptions(options: monaco.languages.FormattingOptions) {\n return FormattingOptions.create(options.tabSize, options.insertSpaces);\n }\n\n function monacoLocation(loc: lsp.Location): monaco.languages.Location {\n return {\n uri: monaco.Uri.parse(loc.uri),\n range: monacoRange(loc.range),\n };\n }\n\n function monacoDocumentHighlight(\n highlight: lsp.DocumentHighlight\n ): monaco.languages.DocumentHighlight {\n return {\n range: monacoRange(highlight.range),\n kind: monacoDocumentHighlightKind(highlight.kind),\n };\n }\n\n function monacoDocumentHighlightKind(kind: DocumentHighlightKind | undefined) {\n switch (kind) {\n case DocumentHighlightKind.Text:\n return monaco.languages.DocumentHighlightKind.Text;\n case DocumentHighlightKind.Read:\n return monaco.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco.languages.DocumentHighlightKind.Write;\n default:\n return undefined;\n }\n }\n\n function monacoHoverContents(contents: lsp.MarkupContent): monaco.IMarkdownString[] {\n return [{ value: contents.value }];\n }\n\n function monacoHover(hover: lsp.Hover): monaco.languages.Hover {\n // eslint-disable-next-line deprecation/deprecation\n if (Array.isArray(hover.contents) || lsp.MarkedString.is(hover.contents)) {\n throw new Error(\"MarkedString (deprecated) not supported.\");\n }\n\n return {\n contents: monacoHoverContents(hover.contents),\n range: hover.range ? monacoRange(hover.range) : undefined,\n };\n }\n\n function monacoSignatureHelp(\n help: lsp.SignatureHelp | undefined\n ): monaco.languages.SignatureHelp {\n return {\n signatures:\n help?.signatures.map((x) => ({\n ...x,\n parameters: x.parameters ?? [],\n })) ?? [],\n activeSignature: help?.activeSignature ?? 0,\n activeParameter: help?.activeParameter ?? 0,\n };\n }\n\n function monacoRange(range: lsp.Range): monaco.IRange {\n return {\n startColumn: range.start.character + 1,\n startLineNumber: range.start.line + 1,\n endColumn: range.end.character + 1,\n endLineNumber: range.end.line + 1,\n };\n }\n\n function monacoFoldingRange(range: lsp.FoldingRange): monaco.languages.FoldingRange {\n return {\n start: range.startLine + 1,\n end: range.endLine + 1,\n kind: range.kind ? new monaco.languages.FoldingRangeKind(range.kind) : undefined,\n };\n }\n\n function monacoTextEdits(edit: lsp.TextEdit[]): monaco.languages.TextEdit[] {\n return edit.map(monacoTextEdit);\n }\n\n function monacoTextEdit(edit: lsp.TextEdit): monaco.languages.TextEdit {\n return {\n range: monacoRange(edit.range),\n text: edit.newText,\n };\n }\n\n function monacoWorkspaceEdit(edit: lsp.WorkspaceEdit): monaco.languages.WorkspaceEdit {\n const edits: monaco.languages.IWorkspaceTextEdit[] = [];\n for (const [uri, changes] of Object.entries(edit.changes ?? {})) {\n const resource = monaco.Uri.parse(uri);\n for (const change of changes) {\n edits.push({ resource, textEdit: monacoTextEdit(change), versionId: undefined });\n }\n }\n return { edits };\n }\n\n monaco.languages.registerDefinitionProvider(\"typespec\", {\n async provideDefinition(model, position) {\n const results = await serverLib.gotoDefinition(lspArgs(model, position));\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerReferenceProvider(\"typespec\", {\n async provideReferences(model, position, context) {\n const results = await serverLib.findReferences({ ...lspArgs(model, position), context });\n return results.map(monacoLocation);\n },\n });\n\n monaco.languages.registerRenameProvider(\"typespec\", {\n async resolveRenameLocation(model, position): Promise<monaco.languages.RenameLocation> {\n const result = await serverLib.prepareRename(lspArgs(model, position));\n if (!result) {\n throw new Error(\"This element can't be renamed.\");\n }\n const text = model.getWordAtPosition(position)?.word;\n if (!text) {\n throw new Error(\"Failed to obtain word at position.\");\n }\n return { text, range: monacoRange(result) };\n },\n\n async provideRenameEdits(model, position, newName) {\n const result = await serverLib.rename({ ...lspArgs(model, position), newName });\n return monacoWorkspaceEdit(result);\n },\n });\n\n monaco.languages.registerFoldingRangeProvider(\"typespec\", {\n async provideFoldingRanges(model) {\n const ranges = await serverLib.getFoldingRanges(lspDocumentArgs(model));\n const output = ranges.map(monacoFoldingRange);\n return output;\n },\n });\n\n monaco.languages.registerHoverProvider(\"typespec\", {\n async provideHover(model, position) {\n const hover = await serverLib.getHover(lspArgs(model, position));\n return monacoHover(hover);\n },\n });\n\n monaco.languages.registerSignatureHelpProvider(\"typespec\", {\n signatureHelpTriggerCharacters: [\"(\", \",\", \"<\"],\n signatureHelpRetriggerCharacters: [\")\"],\n async provideSignatureHelp(model, position) {\n const help = await serverLib.getSignatureHelp(lspArgs(model, position));\n return { value: monacoSignatureHelp(help), dispose: () => {} };\n },\n });\n\n monaco.languages.registerDocumentFormattingEditProvider(\"typespec\", {\n async provideDocumentFormattingEdits(model, options, token) {\n const edits = await serverLib.formatDocument({\n ...lspDocumentArgs(model),\n options: lspFormattingOptions(options),\n });\n return monacoTextEdits(edits);\n },\n });\n\n monaco.languages.registerDocumentHighlightProvider(\"typespec\", {\n async provideDocumentHighlights(model, position) {\n const highlights = await serverLib.findDocumentHighlight(lspArgs(model, position));\n return highlights.map(monacoDocumentHighlight);\n },\n });\n\n monaco.languages.registerCompletionItemProvider(\"typespec\", {\n triggerCharacters: lsConfig.capabilities.completionProvider!.triggerCharacters,\n async provideCompletionItems(model, position) {\n const result = await serverLib.complete(lspArgs(model, position));\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const suggestions: monaco.languages.CompletionItem[] = [];\n for (const item of result.items) {\n suggestions.push({\n label: item.label,\n kind: item.kind as any,\n documentation: item.documentation,\n insertText: item.insertText!,\n range,\n commitCharacters:\n item.commitCharacters ?? lsConfig.capabilities.completionProvider!.allCommitCharacters,\n tags: item.tags,\n });\n }\n\n return { suggestions };\n },\n });\n\n monaco.editor.defineTheme(\"typespec\", {\n base: \"vs\",\n inherit: true,\n colors: {},\n rules: [\n { token: \"macro\", foreground: \"#800000\" },\n { token: \"function\", foreground: \"#795E26\" },\n ],\n });\n monaco.editor.setTheme(\"typespec\");\n\n monaco.languages.registerDocumentSemanticTokensProvider(\"typespec\", {\n getLegend() {\n const legend = lsConfig.capabilities.semanticTokensProvider!.legend;\n return {\n tokenModifiers: legend.tokenModifiers,\n tokenTypes: legend.tokenTypes.map((entry) => {\n switch (entry) {\n case \"namespace\":\n case \"class\":\n case \"enum\":\n case \"typeParameter\":\n case \"struct\":\n case \"interface\":\n return \"type\";\n case \"property\":\n case \"enumMember\":\n return \"variable\";\n case \"docCommentTag\":\n return \"keyword\";\n default:\n return entry;\n }\n }),\n };\n },\n async provideDocumentSemanticTokens(model) {\n const result = await serverLib.buildSemanticTokens(lspDocumentArgs(model));\n return {\n resultId: result.resultId,\n data: new Uint32Array(result.data),\n };\n },\n releaseDocumentSemanticTokens() {},\n });\n}\n\nexport function getMarkerLocation(\n typespecCompiler: typeof import(\"@typespec/compiler\"),\n target: DiagnosticTarget | typeof NoTarget\n): Pick<editor.IMarkerData, \"startLineNumber\" | \"startColumn\" | \"endLineNumber\" | \"endColumn\"> {\n const loc = typespecCompiler.getSourceLocation(target);\n if (loc === undefined || loc.file.path !== \"/test/main.tsp\") {\n return {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n };\n }\n const start = loc.file.getLineAndCharacterOfPosition(loc.pos);\n const end = loc.file.getLineAndCharacterOfPosition(loc.end);\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n}\n","import lzutf8 from \"lzutf8\";\n\nexport interface StateStorage<T extends object> {\n load(): Partial<T>;\n save(t: Partial<T>): void;\n}\n\nexport type UrlStorageSchema<T> = {\n [key in keyof T]: UrlStorageItem;\n};\n\nexport interface UrlStorageItem {\n /** Name of the query parameter where the data will be serialized. */\n queryParam: string;\n\n type?: \"string\" | \"object\";\n\n /** Encoding the data should be compressed with. If undefined param will not be compressed. */\n compress?: \"lz-base64\";\n}\n\n/**\n * Generic storage mechanism for data in the playground.\n * @param schema Schema of the data to be serialized in the query\n * @returns\n */\nexport function createUrlStateStorage<const T extends object>(\n schema: UrlStorageSchema<T>\n): StateStorage<T> {\n return { load, save };\n\n function load(): Partial<T> {\n const result: Record<string, string> = {};\n const parsed = new URLSearchParams(window.location.search);\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = parsed.get(item.queryParam);\n const decompressed = value && decompress(item, value);\n const deserialized = decompressed && deserialize(item, decompressed);\n if (deserialized) {\n result[key] = deserialized;\n }\n }\n return result as Partial<T>;\n }\n\n function decompress(item: UrlStorageItem, value: string): string | undefined {\n if (item.compress) {\n try {\n return lzutf8.decompress(value, { inputEncoding: \"Base64\" });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function deserialize(item: UrlStorageItem, value: string): any {\n if (item.type === \"object\") {\n try {\n return JSON.parse(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `Error decompressing query parameter ${item.queryParam} with content:`,\n value\n );\n return undefined;\n }\n } else {\n return value;\n }\n }\n\n function save(data: T) {\n const params = new URLSearchParams();\n for (const [key, item] of Object.entries<UrlStorageItem>(schema)) {\n const value = (data as any)[key];\n\n if (value) {\n const serialized = serialize(item, value);\n const compressed = compress(item, serialized);\n params.append(item.queryParam, compressed);\n }\n }\n history.pushState(null, \"\", window.location.pathname + \"?\" + params.toString());\n }\n\n function compress(item: UrlStorageItem, value: string): string {\n if (item.compress) {\n return lzutf8.compress(value, { outputEncoding: \"Base64\" });\n } else {\n return value;\n }\n }\n\n function serialize(item: UrlStorageItem, value: any): string {\n if (item.type === \"object\") {\n return JSON.stringify(value);\n } else {\n return value;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|