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

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 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, b as createUrlStateStorage, r as registerMonacoDefaultWorkers, a as registerMonacoLanguage } from './state-storage-e765354d.js';
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;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
2
2
  import debounce from 'debounce';
3
3
  import { editor, Uri, MarkerSeverity, KeyMod, KeyCode } from 'monaco-editor';
4
- import { useCallback, useMemo, useState, useEffect, useRef, useId as useId$1 } from 'react';
4
+ import { useCallback, useMemo, useRef, useEffect, useState, useId as useId$1 } from 'react';
5
5
  import { CompletionItemTag } from 'vscode-languageserver';
6
- import { i as importLibrary, g as getMarkerLocation, c as createBrowserHost, a as registerMonacoLanguage, r as registerMonacoDefaultWorkers, b as createUrlStateStorage } from '../state-storage-e765354d.js';
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';
@@ -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.emitter) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.properties;
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, libraries, options, onOptionsChanged, }) => {
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 = useTypeSpecLibrary(selectedEmitter);
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, libraries, selectedEmitter, onSelectedEmitterChange, compilerOptions: emitterOptions, onCompilerOptionsChange, samples, selectedSampleName, onSelectedSampleNameChange, }) => {
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
- 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: libraries.filter((x) => x.isEmitter).map((x) => x.name), onSelectedEmitterChange: onSelectedEmitterChange, selectedEmitter: selectedEmitter }), jsxs(Dialog, { children: [jsx(DialogTrigger, { children: jsx(ToolbarButton, { icon: jsx(Settings24Regular, {}) }) }), jsx(DialogSurface, { children: jsx(DialogBody, { children: jsx(CompilerSettings, { libraries: libraries, selectedEmitter: selectedEmitter, options: emitterOptions, onOptionsChanged: onCompilerOptionsChange }) }) })] }), documentation, jsx("div", { css: { flex: "1" } }), bugButton] }) }));
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 : "vs");
148
+ editor.setTheme((_a = options.theme) !== null && _a !== void 0 ? _a : "typespec");
165
149
  }, [options.theme]);
166
150
  useEffect(() => {
167
151
  const disposables = [];
@@ -739,7 +723,6 @@ const Playground = (props) => {
739
723
  const onTypeSpecEditorMount = useCallback(({ editor }) => {
740
724
  editorRef.current = editor;
741
725
  }, []);
742
- const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);
743
726
  return (jsxs("div", { css: {
744
727
  display: "grid",
745
728
  gridTemplateColumns: "1",
@@ -749,7 +732,7 @@ const Playground = (props) => {
749
732
  height: "100%",
750
733
  overflow: "hidden",
751
734
  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, { libraries: libraries, selectedEmitter: selectedEmitter, onSelectedEmitterChange: onSelectedEmitterChange, compilerOptions: compilerOptions, onCompilerOptionsChange: onCompilerOptionsChange, samples: props.samples, selectedSampleName: selectedSampleName, onSelectedSampleNameChange: onSelectedSampleNameChange, saveCode: saveCode, formatCode: formatCode, newIssue: ((_b = props === null || props === void 0 ? void 0 : props.links) === null || _b === void 0 ? void 0 : _b.githubIssueUrl) ? newIssue : undefined, documentationUrl: (_c = props.links) === null || _c === void 0 ? void 0 : _c.documentationUrl }), jsx(TypeSpecEditor, { model: typespecModel, actions: typespecEditorActions, 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 })] }));
735
+ }, 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
736
  };
754
737
  const outputDir = "./tsp-output";
755
738
  async function compile(host, content, selectedEmitter, options) {
@@ -816,7 +799,6 @@ function useStandalonePlaygroundContext(config) {
816
799
  const load = async () => {
817
800
  const host = await createBrowserHost(config.libraries, config.importConfig);
818
801
  await registerMonacoLanguage(host);
819
- registerMonacoDefaultWorkers();
820
802
  const stateStorage = createStandalonePlaygroundStateStorage();
821
803
  const initialState = stateStorage.load();
822
804
  setContext({ host, initialState, stateStorage });
@@ -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 { TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ErrorTab, InternalCompilerError } from \"./error-tab.js\";\nimport { FileOutput } from \"./file-output.js\";\nimport { OutputTabs, Tab } from \"./output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"./types.js\";\nimport { OutputEditor } from \"./typespec-editor.js\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <InternalCompilerError error={compilationState.internalCompilerError} />;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: Tab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): Tab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n {\n id: \"errors\",\n name: <ErrorTabLabel diagnostics={diagnostics} />,\n align: \"right\",\n },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else if (tabId === \"errors\") {\n setViewSelection({ type: \"errors\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className=\"output-content\" css={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n case \"errors\":\n return <ErrorTab diagnostics={program?.diagnostics} />;\n default:\n return (\n <div\n css={{\n height: \"100%\",\n overflow: \"scroll\",\n }}\n >\n {program && <TypeSpecProgramViewer program={program} />}\n </div>\n );\n }\n};\n\ntype ViewSelection =\n | { type: \"file\"; filename: string; content: string }\n | { type: \"type-graph\" }\n | { type: \"errors\" };\n\nconst ErrorTabLabel: FunctionComponent<{\n diagnostics?: readonly Diagnostic[];\n}> = ({ diagnostics }) => {\n const errorCount = diagnostics ? diagnostics.length : 0;\n return (\n <div>Errors {errorCount > 0 ? <span css={ErrorTabCountStyles}>{errorCount}</span> : \"\"}</div>\n );\n};\n\nconst ErrorTabCountStyles = css({\n backgroundColor: tokens.colorStatusDangerBackground3,\n color: tokens.colorNeutralForegroundOnBrand,\n padding: \"0 5px\",\n borderRadius: \"20px\",\n});\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes: (string | number)[];\n sizes?: (string | number)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n updateSizes(defaultSizes);\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { getMarkerLocation } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { EditorCommandBar } from \"./editor-command-bar.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { Footer } from \"./footer.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n libraries: string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n /** Issue to github issue to open a new issue. */\n githubIssueUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMarkerLocation(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const newIssue = useCallback(async () => {\n saveCode();\n const bodyPayload = encodeURIComponent(`\\n\\n\\n[Playground Link](${document.location.href})`);\n const url = `${props?.links?.githubIssueUrl}?body=${bodyPayload}`;\n window.open(url, \"_blank\");\n }, [saveCode, typespecModel]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n return (\n <div\n css={{\n display: \"grid\",\n gridTemplateColumns: \"1\",\n gridTemplateRows: \"1fr auto\",\n gridTemplateAreas: '\"typespeceditor\"\\n \"footer\"',\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n fontFamily: `\"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif`,\n }}\n >\n <SplitPane\n initialSizes={[\"50%\", \"50%\"]}\n css={{ gridArea: \"typespeceditor\", width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n >\n <Pane>\n <EditorCommandBar\n host={host}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n newIssue={props?.links?.githubIssueUrl ? newIssue : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n <Footer host={host} />\n </div>\n );\n};\n\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useEffect, useId, useMemo, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n libraries: string[];\n importConfig?: LibraryImportOptions;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return <></>;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): StateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { createBrowserHost } from "./browser-host.js";
2
- export { registerMonacoDefaultWorkers } from "./monaco-worker.js";
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";
@@ -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,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,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
+ {"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 registerMonacoDefaultWorkers(): void;
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,4BAA4B,SAgC3C"}
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 { PlaygroundSample, PlaygroundTspLibrary } from "../types.js";
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
- libraries: PlaygroundTspLibrary[];
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,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAKrE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,eAAe,EAAE,eAAe,CAAC;IACjC,uBAAuB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAE5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AACD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,CAkErE,CAAC"}
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,CAmLzD,CAAC"}
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 { PlaygroundTspLibrary } from "../../types.js";
3
+ import { BrowserHost } from "../../types.js";
4
4
  export type CompilerSettingsProps = {
5
- libraries: PlaygroundTspLibrary[];
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,EAAkC,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAoC,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAKtD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,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
+ {"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: TypeSpecLibrary<any>;
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,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,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"}
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,oBAAoB,EAAE,CAAC;IAClC,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
+ {"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;AAGlD,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;AA0BD,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
+ {"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,iBAiT7D;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"}
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 { registerMonacoLanguage as a, createUrlStateStorage as b, createBrowserHost as c, getMarkerLocation as g, importLibrary as i, registerMonacoDefaultWorkers as r };
593
- //# sourceMappingURL=state-storage-e765354d.js.map
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.1.0-alpha.4-dev.14",
3
+ "version": "0.1.0-alpha.4-dev.15",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://microsoft.github.io/typespec",
@@ -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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"}