@typespec/playground 0.3.0-dev.9 → 0.4.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.storybook/main.d.ts +5 -0
- package/dist/.storybook/main.d.ts.map +1 -0
- package/dist/.storybook/preview.d.ts +5 -0
- package/dist/.storybook/preview.d.ts.map +1 -0
- package/dist/index.js +31 -34
- package/dist/react/index.js +1430 -783
- package/dist/react/viewers/index.js +8 -7
- package/dist/react-wrapper-CT3xxCSW.js +20 -0
- package/dist/src/browser-host.d.ts +3 -2
- package/dist/src/browser-host.d.ts.map +1 -1
- package/dist/src/core.d.ts +1 -1
- package/dist/src/core.d.ts.map +1 -1
- package/dist/src/editor-command-bar/editor-command-bar.d.ts +4 -3
- package/dist/src/editor-command-bar/editor-command-bar.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/lsp/monaco-to-lsp.d.ts +1 -1
- package/dist/src/manifest.d.ts +2 -4
- package/dist/src/manifest.d.ts.map +1 -1
- package/dist/src/react/context/index.d.ts +1 -1
- package/dist/src/react/context/index.d.ts.map +1 -1
- package/dist/src/react/context/playground-context.d.ts +4 -4
- package/dist/src/react/context/playground-context.d.ts.map +1 -1
- package/dist/src/react/default-footer.d.ts +2 -1
- package/dist/src/react/default-footer.d.ts.map +1 -1
- package/dist/src/react/diagnostic-list/diagnostic-list.d.ts +3 -2
- package/dist/src/react/diagnostic-list/diagnostic-list.d.ts.map +1 -1
- package/dist/src/react/editor.d.ts +3 -2
- package/dist/src/react/editor.d.ts.map +1 -1
- package/dist/src/react/emitter-dropdown.d.ts +2 -1
- package/dist/src/react/emitter-dropdown.d.ts.map +1 -1
- package/dist/src/react/file-output/file-output.d.ts +6 -5
- package/dist/src/react/file-output/file-output.d.ts.map +1 -1
- package/dist/src/react/footer/footer-item.d.ts +2 -1
- package/dist/src/react/footer/footer-item.d.ts.map +1 -1
- package/dist/src/react/footer/footer-version-item.d.ts +1 -1
- package/dist/src/react/footer/footer.d.ts +2 -1
- package/dist/src/react/footer/footer.d.ts.map +1 -1
- package/dist/src/react/footer/index.d.ts +3 -3
- package/dist/src/react/footer/index.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +6 -6
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/output-tabs/output-tabs.d.ts +3 -7
- package/dist/src/react/output-tabs/output-tabs.d.ts.map +1 -1
- package/dist/src/react/output-view/file-viewer.d.ts +4 -0
- package/dist/src/react/output-view/file-viewer.d.ts.map +1 -0
- package/dist/src/react/output-view/output-view.d.ts +9 -4
- package/dist/src/react/output-view/output-view.d.ts.map +1 -1
- package/dist/src/react/output-view/type-graph-viewer.d.ts +4 -0
- package/dist/src/react/output-view/type-graph-viewer.d.ts.map +1 -0
- package/dist/src/react/playground.d.ts +8 -5
- package/dist/src/react/playground.d.ts.map +1 -1
- package/dist/src/react/problem-pane/header.d.ts +4 -3
- package/dist/src/react/problem-pane/header.d.ts.map +1 -1
- package/dist/src/react/problem-pane/index.d.ts +1 -1
- package/dist/src/react/problem-pane/problem-pane.d.ts +4 -3
- package/dist/src/react/problem-pane/problem-pane.d.ts.map +1 -1
- package/dist/src/react/samples-dropdown.d.ts +3 -2
- package/dist/src/react/samples-dropdown.d.ts.map +1 -1
- package/dist/src/react/settings/compiler-settings-dialog-button.d.ts +2 -1
- package/dist/src/react/settings/compiler-settings.d.ts +4 -3
- package/dist/src/react/settings/compiler-settings.d.ts.map +1 -1
- package/dist/src/react/settings/emitter-options-form.d.ts +4 -3
- package/dist/src/react/settings/emitter-options-form.d.ts.map +1 -1
- package/dist/src/react/settings/linter-form.d.ts +4 -3
- package/dist/src/react/settings/linter-form.d.ts.map +1 -1
- package/dist/src/react/split-pane/index.d.ts +1 -1
- package/dist/src/react/split-pane/index.d.ts.map +1 -1
- package/dist/src/react/split-pane/pane.d.ts +2 -1
- package/dist/src/react/split-pane/pane.d.ts.map +1 -1
- package/dist/src/react/split-pane/sash-content.d.ts +2 -1
- package/dist/src/react/split-pane/sash-content.d.ts.map +1 -1
- package/dist/src/react/split-pane/sash.d.ts +2 -1
- package/dist/src/react/split-pane/sash.d.ts.map +1 -1
- package/dist/src/react/split-pane/split-pane.d.ts +2 -1
- package/dist/src/react/split-pane/split-pane.d.ts.map +1 -1
- package/dist/src/react/standalone.d.ts +5 -4
- package/dist/src/react/standalone.d.ts.map +1 -1
- package/dist/src/react/types.d.ts +20 -8
- package/dist/src/react/types.d.ts.map +1 -1
- package/dist/src/react/typespec-editor.d.ts +5 -4
- package/dist/src/react/typespec-editor.d.ts.map +1 -1
- package/dist/src/react/viewers/index.d.ts +2 -1
- package/dist/src/react/viewers/index.d.ts.map +1 -1
- package/dist/src/react/viewers/swagger-ui.d.ts +2 -2
- package/dist/src/react/viewers/swagger-ui.d.ts.map +1 -1
- package/dist/src/services.d.ts +3 -2
- package/dist/src/services.d.ts.map +1 -1
- package/dist/src/tooling/index.d.ts +2 -1
- package/dist/src/tooling/index.d.ts.map +1 -1
- package/dist/src/tooling/types.d.ts +2 -1
- package/dist/src/tooling/types.d.ts.map +1 -1
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/vite/index.d.ts +3 -2
- package/dist/src/vite/index.d.ts.map +1 -1
- package/dist/src/vite/types.d.ts +4 -3
- package/dist/src/vite/types.d.ts.map +1 -1
- package/dist/state-storage-BjOULkS3.js +654 -0
- package/dist/stories/footer/footer-item.stories.d.ts +9 -0
- package/dist/stories/footer/footer-item.stories.d.ts.map +1 -0
- package/dist/stories/footer/footer-version-item.stories.d.ts +9 -0
- package/dist/stories/footer/footer-version-item.stories.d.ts.map +1 -0
- package/dist/stories/footer/footer.stories.d.ts +9 -0
- package/dist/stories/footer/footer.stories.d.ts.map +1 -0
- package/dist/stories/playground.stories.d.ts +9 -0
- package/dist/stories/playground.stories.d.ts.map +1 -0
- package/dist/{index.css → style.css} +168 -161
- package/dist/tooling/index.js +18 -23
- package/dist/vite/index.js +74 -76
- package/dist/vite.config.d.ts +3 -0
- package/dist/vite.config.d.ts.map +1 -0
- package/package.json +38 -36
- package/dist/index.js.map +0 -1
- package/dist/react/index.js.map +0 -1
- package/dist/react/viewers/index.js.map +0 -1
- package/dist/react-wrapper-uSmRU7Jg.js +0 -21
- package/dist/react-wrapper-uSmRU7Jg.js.map +0 -1
- package/dist/state-storage-CObxFEXn.js +0 -657
- package/dist/state-storage-CObxFEXn.js.map +0 -1
- package/dist/tooling/index.js.map +0 -1
- package/dist/vite/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/playground",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-dev.0",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec playground UI components.",
|
|
6
6
|
"homepage": "https://typespec.io",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"types": "./dist/src/react/viewers/index.d.ts",
|
|
44
44
|
"default": "./dist/react/viewers/index.js"
|
|
45
45
|
},
|
|
46
|
-
"./style.css": "./dist/
|
|
47
|
-
"./styles.css": "./dist/
|
|
46
|
+
"./style.css": "./dist/style.css",
|
|
47
|
+
"./styles.css": "./dist/style.css"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=18.0.0"
|
|
@@ -55,57 +55,59 @@
|
|
|
55
55
|
"!dist/test/**"
|
|
56
56
|
],
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@fluentui/react-components": "~9.
|
|
59
|
-
"@fluentui/react-icons": "^2.0.
|
|
60
|
-
"@typespec/bundler": "~0.1.
|
|
61
|
-
"@typespec/compiler": "~0.
|
|
62
|
-
"@typespec/html-program-viewer": "~0.
|
|
63
|
-
"@typespec/http": "~0.
|
|
64
|
-
"@typespec/openapi": "~0.
|
|
65
|
-
"@typespec/openapi3": "~0.
|
|
66
|
-
"@typespec/protobuf": "~0.
|
|
67
|
-
"@typespec/rest": "~0.
|
|
68
|
-
"@typespec/versioning": "~0.
|
|
69
|
-
"clsx": "^2.1.
|
|
58
|
+
"@fluentui/react-components": "~9.52.0",
|
|
59
|
+
"@fluentui/react-icons": "^2.0.240",
|
|
60
|
+
"@typespec/bundler": "~0.1.4 || >=0.2.0-dev <0.2.0",
|
|
61
|
+
"@typespec/compiler": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
62
|
+
"@typespec/html-program-viewer": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
63
|
+
"@typespec/http": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
64
|
+
"@typespec/openapi": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
65
|
+
"@typespec/openapi3": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
66
|
+
"@typespec/protobuf": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
67
|
+
"@typespec/rest": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
68
|
+
"@typespec/versioning": "~0.57.0 || >=0.58.0-dev <0.58.0",
|
|
69
|
+
"clsx": "^2.1.1",
|
|
70
70
|
"debounce": "~2.0.0",
|
|
71
71
|
"lzutf8": "0.6.3",
|
|
72
72
|
"monaco-editor": "~0.46.0",
|
|
73
|
-
"react": "~18.
|
|
74
|
-
"react-dom": "~18.
|
|
75
|
-
"swagger-ui-dist": "^5.
|
|
73
|
+
"react": "~18.3.1",
|
|
74
|
+
"react-dom": "~18.3.1",
|
|
75
|
+
"swagger-ui-dist": "^5.17.10",
|
|
76
76
|
"vscode-languageserver": "~9.0.1",
|
|
77
77
|
"vscode-languageserver-textdocument": "~1.0.11"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@babel/core": "^7.24.
|
|
81
|
-
"@playwright/test": "^1.
|
|
82
|
-
"@
|
|
83
|
-
"@
|
|
84
|
-
"@
|
|
85
|
-
"@
|
|
80
|
+
"@babel/core": "^7.24.5",
|
|
81
|
+
"@playwright/test": "^1.44.0",
|
|
82
|
+
"@storybook/addon-actions": "^8.1.2",
|
|
83
|
+
"@storybook/cli": "^8.1.2",
|
|
84
|
+
"@storybook/react": "^8.1.2",
|
|
85
|
+
"@storybook/react-vite": "^8.1.2",
|
|
86
|
+
"@storybook/test": "^8.1.2",
|
|
87
|
+
"@storybook/types": "^8.1.2",
|
|
86
88
|
"@types/debounce": "~1.2.4",
|
|
87
89
|
"@types/node": "~18.11.19",
|
|
88
|
-
"@types/react": "~18.2
|
|
89
|
-
"@types/react-dom": "~18.
|
|
90
|
+
"@types/react": "~18.3.2",
|
|
91
|
+
"@types/react-dom": "~18.3.0",
|
|
90
92
|
"@types/swagger-ui-dist": "~3.30.4",
|
|
91
|
-
"@typespec/bundler": "~0.1.
|
|
93
|
+
"@typespec/bundler": "~0.1.4 || >=0.2.0-dev <0.2.0",
|
|
92
94
|
"@vitejs/plugin-react": "~4.2.1",
|
|
93
95
|
"c8": "^9.1.0",
|
|
94
|
-
"copyfiles": "~2.4.1",
|
|
95
96
|
"cross-env": "~7.0.3",
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"rollup-plugin-postcss": "~4.0.2",
|
|
99
|
-
"rollup-plugin-visualizer": "~5.12.0",
|
|
97
|
+
"es-module-shims": "~1.10.0",
|
|
98
|
+
"rimraf": "~5.0.7",
|
|
100
99
|
"typescript": "~5.4.5",
|
|
101
|
-
"vite": "^5.2.
|
|
100
|
+
"vite": "^5.2.11",
|
|
101
|
+
"vite-plugin-checker": "^0.6.4",
|
|
102
|
+
"vite-plugin-dts": "^3.9.1"
|
|
102
103
|
},
|
|
103
104
|
"peerDependencies": {},
|
|
104
105
|
"scripts": {
|
|
105
106
|
"clean": "rimraf ./dist ./dist-dev ./temp ./typespecContents.json",
|
|
106
|
-
"build": "
|
|
107
|
-
"watch": "
|
|
108
|
-
"
|
|
107
|
+
"build": "vite build",
|
|
108
|
+
"watch": "vite build --watch",
|
|
109
|
+
"storybook": "sb dev",
|
|
110
|
+
"build: storybook": "sb build",
|
|
109
111
|
"preview": "npm run build && vite preview",
|
|
110
112
|
"start": "vite",
|
|
111
113
|
"test": "echo 'no tests'",
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;YAEF,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;SACF;KACF,CAAC;AACJ;;;;"}
|
package/dist/react/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/react/context/playground-context.tsx","../../../src/react/footer/footer-item.tsx","../../../src/react/footer/footer-version-item.tsx","../../../src/react/footer/footer.tsx","../../../src/react/emitter-dropdown.tsx","../../../src/react/samples-dropdown.tsx","../../../src/react/settings/emitter-options-form.tsx","../../../src/react/settings/linter-form.tsx","../../../src/react/settings/compiler-settings.tsx","../../../src/react/settings/compiler-settings-dialog-button.tsx","../../../src/editor-command-bar/editor-command-bar.tsx","../../../src/react/default-footer.tsx","../../../src/react/editor.tsx","../../../src/react/hooks.ts","../../../src/react/file-output/file-output.tsx","../../../src/react/output-tabs/output-tabs.tsx","../../../src/react/typespec-editor.tsx","../../../src/react/output-view/output-view.tsx","../../../src/react/diagnostic-list/diagnostic-list.tsx","../../../src/react/problem-pane/header.tsx","../../../src/react/problem-pane/problem-pane.tsx","../../../src/react/split-pane/pane.tsx","../../../src/react/split-pane/sash-content.tsx","../../../src/react/split-pane/sash.tsx","../../../src/react/split-pane/split-pane.tsx","../../../src/react/playground.tsx","../../../src/react/standalone.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\n\nexport interface PlaygroundContext {\n host: BrowserHost;\n}\n\nconst PlaygroundContext = createContext<PlaygroundContext | undefined>(undefined);\n\nexport const PlaygroundContextProvider = PlaygroundContext.Provider;\n\nexport function usePlaygroundContext(): PlaygroundContext {\n const context = useContext(PlaygroundContext);\n if (context === undefined) {\n throw new Error(\"usePlaygroundContext must be used within a PlaygroundContextProvider\");\n }\n return context;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterItemProps {\n className?: string;\n link?: string;\n children: ReactNode;\n}\n\nexport const FooterItem: FunctionComponent<FooterItemProps> = ({ children, link, className }) => {\n const resolvedClassName = mergeClasses(style[\"footer-item\"], className);\n return link ? (\n <a className={resolvedClassName} href={link} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n ) : (\n <div className={resolvedClassName}>{children}</div>\n );\n};\n","import {\n Popover,\n PopoverSurface,\n PopoverTrigger,\n Select,\n SelectOnChangeData,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableHeaderCell,\n TableRow,\n Title3,\n} from \"@fluentui/react-components\";\nimport { ChangeEvent, FunctionComponent, memo, useCallback } from \"react\";\nimport { usePlaygroundContext } from \"../context/playground-context.js\";\nimport { FooterItem } from \"./footer-item.js\";\nimport style from \"./footer-version-item.module.css\";\n\nexport interface VersionSelectorVersion {\n name: string;\n label: string;\n}\n\nexport interface VersionSelectorProps {\n versions: VersionSelectorVersion[];\n\n /** Currently selected version , must match one of the version name. */\n selected: string;\n\n /** Latest released version, must match one of the version name. */\n latest?: string;\n\n /** Callback when a new version has been selected */\n onChange: (version: VersionSelectorVersion) => void;\n}\n\nexport interface FooterVersionItemProps {\n /** Provide a way to change the version of packages in the playground */\n versionSelector?: VersionSelectorProps;\n}\n\nexport const FooterVersionItem = memo(({ versionSelector }: FooterVersionItemProps) => {\n const { host } = usePlaygroundContext();\n const latest = versionSelector?.latest;\n const selected = versionSelector?.selected ?? host.compiler.MANIFEST.version;\n return (\n <FooterItem className={style[\"version-item\"]}>\n <Popover>\n <PopoverTrigger disableButtonEnhancement>\n <div className={style[\"button\"]}>\n <span>Version </span>\n <span>{selected}</span>\n <span>{latest ? (latest === selected ? \" (latest)\" : \" (old)\") : \"\"}</span>\n </div>\n </PopoverTrigger>\n\n <PopoverSurface>\n <VersionsPopup versionSelector={versionSelector} />\n </PopoverSurface>\n </Popover>\n </FooterItem>\n );\n});\n\ninterface VersionsPopupProps {\n versionSelector?: VersionSelectorProps;\n}\n\nconst VersionsPopup: FunctionComponent<VersionsPopupProps> = memo(({ versionSelector }) => {\n const { host } = usePlaygroundContext();\n\n return (\n <div style={{ maxWidth: \"400px\" }}>\n {versionSelector && <VersionSelector {...versionSelector} />}\n <div>\n <Title3>Loaded libraries</Title3>\n <Table size=\"small\">\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHeaderCell key={column.columnKey}>{column.label}</TableHeaderCell>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Object.values(host.libraries).map((item) => (\n <TableRow key={item.name}>\n <TableCell>{item.name}</TableCell>\n <TableCell>{item.packageJson.version}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n );\n});\n\nconst columns = [\n { columnKey: \"name\", label: \"Library\" },\n { columnKey: \"version\", label: \"Version\" },\n];\n\nconst VersionSelector = memo(({ versions, selected, latest, onChange }: VersionSelectorProps) => {\n const changeVersion = useCallback(\n (ev: ChangeEvent<HTMLSelectElement>, data: SelectOnChangeData) => {\n onChange(versions.find((x) => x.name === data.value)!);\n },\n [versions, onChange]\n );\n return (\n <div>\n <Title3>Select release</Title3>\n <Select value={selected} onChange={changeVersion} aria-label=\"Select version\">\n {versions.map((version) => (\n <option key={version.name} value={version.name}>\n {version.label} {version.name === latest ? \"(latest)\" : \"\"}\n </option>\n ))}\n </Select>\n </div>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactNode } from \"react\";\nimport style from \"./footer.module.css\";\n\nexport interface FooterProps {\n className?: string;\n children: ReactNode;\n}\n\nexport const Footer: FunctionComponent<FooterProps> = ({ className, children }) => {\n return <div className={mergeClasses(style.footer, className)}>{children}</div>;\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\n\nexport type EmitterDropdownProps = {\n emitters: string[];\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n};\n\nexport const EmitterDropdown: FunctionComponent<EmitterDropdownProps> = ({\n emitters,\n onSelectedEmitterChange,\n selectedEmitter,\n}) => {\n const options = emitters.map((emitterName) => {\n return <option key={emitterName}>{emitterName}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n onSelectedEmitterChange(evt.target.value);\n },\n [onSelectedEmitterChange]\n );\n return (\n <Select\n className=\"sample-dropdown\"\n onChange={handleSelected}\n value={selectedEmitter}\n aria-label=\"Select an emitter\"\n >\n <option value=\"\" disabled>\n Select emitter...\n </option>\n {options}\n </Select>\n );\n};\n","import { Select } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundSample } from \"../types.js\";\n\nexport interface SamplesDropdownProps {\n samples: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\n\nexport const SamplesDropdown: FunctionComponent<SamplesDropdownProps> = ({\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const options = Object.keys(samples).map((sample) => {\n return <option key={sample}>{sample}</option>;\n });\n\n const handleSelected = useCallback(\n (evt: any) => {\n if (samples[evt.target.value]) {\n onSelectedSampleNameChange(evt.target.value);\n }\n },\n [onSelectedSampleNameChange]\n );\n return (\n <Select\n className=\"sample-dropdown\"\n onChange={handleSelected}\n value={selectedSampleName ?? \"\"}\n aria-label=\"Select a sample\"\n >\n <option value=\"\" disabled>\n Select sample...\n </option>\n {options}\n </Select>\n );\n};\n","import {\n Input,\n InputOnChangeData,\n Label,\n Radio,\n RadioGroup,\n RadioGroupOnChangeData,\n Switch,\n SwitchOnChangeData,\n useId,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport style from \"./emitter-options-form.module.css\";\n\nexport interface EmitterOptionsFormProps {\n readonly library: PlaygroundTspLibrary;\n readonly options: EmitterOptions;\n readonly optionsChanged: (options: EmitterOptions) => void;\n}\n\nexport const EmitterOptionsForm: FunctionComponent<EmitterOptionsFormProps> = ({\n library,\n options,\n optionsChanged,\n}) => {\n const emitterOptionsSchema = library.definition?.emitter?.options?.properties;\n if (emitterOptionsSchema === undefined) {\n return <>\"No options\"</>;\n }\n const entries = Object.entries(emitterOptionsSchema);\n\n const handleChange = useCallback(\n ({ name, value }: { name: string; value: unknown }) => {\n optionsChanged({\n ...options,\n [library.name]: {\n ...options[library.name],\n [name]: value,\n },\n });\n },\n [options, optionsChanged]\n );\n return (\n <div className={style[\"form\"]}>\n {entries.map(([key, value]) => {\n return (\n <div key={key} className={style[\"form-item\"]}>\n <JsonSchemaPropertyInput\n emitterOptions={options[library.name] ?? {}}\n name={key}\n prop={value as any}\n onChange={handleChange}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\ninterface JsonSchemaProperty {\n readonly type: \"string\" | \"boolean\" | \"number\";\n readonly description?: string;\n readonly enum?: string[];\n readonly default?: any;\n}\n\ninterface JsonSchemaPropertyInputProps {\n readonly emitterOptions: Record<string, unknown>;\n readonly name: string;\n readonly prop: JsonSchemaProperty;\n readonly onChange: (data: { name: string; value: unknown }) => void;\n}\n\nconst JsonSchemaPropertyInput: FunctionComponent<JsonSchemaPropertyInputProps> = ({\n emitterOptions,\n name,\n prop,\n onChange,\n}) => {\n const prettyName = useMemo(\n () => name[0].toUpperCase() + name.slice(1).replace(/-/g, \" \"),\n [name]\n );\n const inputId = useId(\"input\");\n const value = emitterOptions[name] ?? prop.default;\n const handleChange = useCallback(\n (_: unknown, data: RadioGroupOnChangeData | SwitchOnChangeData | InputOnChangeData) =>\n onChange({ name, value: \"value\" in data ? data.value : data.checked }),\n [onChange]\n );\n\n switch (prop.type) {\n case \"boolean\":\n return (\n <Switch\n className={style[\"switch\"]}\n label={prettyName}\n labelPosition=\"above\"\n checked={value}\n onChange={handleChange}\n />\n );\n case \"string\":\n default:\n return (\n <div className={style[\"item\"]}>\n <Label htmlFor={inputId} title={name}>\n {prettyName}\n </Label>\n {prop.enum ? (\n <RadioGroup layout=\"horizontal\" id={inputId} value={value} onChange={handleChange}>\n {prop.enum.map((x) => (\n <Radio key={x} value={x} label={x} />\n ))}\n </RadioGroup>\n ) : (\n <Input id={inputId} value={value} onChange={handleChange} />\n )}\n </div>\n );\n }\n};\n","import { Checkbox, CheckboxOnChangeData } from \"@fluentui/react-components\";\nimport { LinterRuleSet, RuleRef } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { PlaygroundTspLibrary } from \"../../types.js\";\n\nexport interface LinterFormProps {\n libraries: Record<string, PlaygroundTspLibrary>;\n linterRuleSet: LinterRuleSet;\n onLinterRuleSetChanged: (options: LinterRuleSet) => void;\n}\n\nexport const LinterForm: FunctionComponent<LinterFormProps> = ({\n libraries,\n linterRuleSet,\n onLinterRuleSetChanged,\n}) => {\n const rulesets = Object.values(libraries).flatMap((lib) => {\n // eslint-disable-next-line deprecation/deprecation\n const linter = lib.linter ?? lib.definition?.linter;\n return Object.keys(linter?.ruleSets ?? {}).map((x) => `${lib.name}/${x}`) as RuleRef[];\n });\n if (rulesets.length === 0) {\n return <>No ruleset available</>;\n }\n\n const handleChange = (ruleSet: RuleRef, checked: boolean) => {\n const ruleSets = linterRuleSet.extends ?? [];\n\n const updatedRuleSets = checked\n ? [...ruleSets, ruleSet]\n : ruleSets.filter((x) => x !== ruleSet);\n\n onLinterRuleSetChanged({\n extends: updatedRuleSets,\n });\n };\n return (\n <>\n {rulesets.map((ruleSet) => {\n return (\n <RuleSetCheckbox\n key={ruleSet}\n ruleSet={ruleSet}\n checked={linterRuleSet.extends?.includes(ruleSet)}\n onChange={handleChange}\n />\n );\n })}\n </>\n );\n};\n\ninterface RuleSetCheckbox {\n ruleSet: RuleRef;\n checked?: boolean;\n onChange(ruleSet: RuleRef, checked: boolean): void;\n}\nconst RuleSetCheckbox = ({ ruleSet, checked, onChange }: RuleSetCheckbox) => {\n const handleChange = useCallback(\n (_: any, data: CheckboxOnChangeData) => {\n onChange(ruleSet, !!data.checked);\n },\n [ruleSet, checked, onChange]\n );\n return <Checkbox label={ruleSet} checked={checked} onChange={handleChange} />;\n};\n","import { Divider } from \"@fluentui/react-components\";\nimport { CompilerOptions, LinterRuleSet } from \"@typespec/compiler\";\nimport { FunctionComponent, useCallback } from \"react\";\nimport { BrowserHost } from \"../../types.js\";\nimport { EmitterOptions } from \"../types.js\";\nimport { EmitterOptionsForm } from \"./emitter-options-form.js\";\nimport { LinterForm } from \"./linter-form.js\";\n\nexport interface CompilerSettingsProps {\n readonly host: BrowserHost;\n readonly selectedEmitter: string;\n readonly options: CompilerOptions;\n readonly onOptionsChanged: (options: CompilerOptions) => void;\n}\n\nexport const CompilerSettings: FunctionComponent<CompilerSettingsProps> = ({\n selectedEmitter,\n host,\n options,\n onOptionsChanged,\n}) => {\n const emitterOptionsChanged = useCallback(\n (emitterOptions: EmitterOptions) => {\n onOptionsChanged({\n ...options,\n options: emitterOptions,\n });\n },\n [options]\n );\n const library = host.libraries[selectedEmitter];\n const linterRuleSet = options.linterRuleSet ?? {};\n const linterRuleSetChanged = useCallback(\n (linterRuleSet: LinterRuleSet) => {\n onOptionsChanged({\n ...options,\n linterRuleSet,\n });\n },\n [options]\n );\n return (\n <div>\n <>Emitter: {selectedEmitter}</>\n <Divider style={{ marginTop: 20 }} />\n <h3>Options</h3>\n {library && (\n <EmitterOptionsForm\n library={library}\n options={options.options ?? {}}\n optionsChanged={emitterOptionsChanged}\n />\n )}\n <Divider style={{ marginTop: 20 }} />\n <h3>Linter</h3>\n <LinterForm\n libraries={host.libraries}\n linterRuleSet={linterRuleSet}\n onLinterRuleSetChanged={linterRuleSetChanged}\n />\n </div>\n );\n};\n","import {\n Dialog,\n DialogBody,\n DialogContent,\n DialogSurface,\n DialogTitle,\n DialogTrigger,\n ToolbarButton,\n} from \"@fluentui/react-components\";\nimport { Settings24Regular } from \"@fluentui/react-icons\";\nimport type { CompilerOptions } from \"@typespec/compiler\";\nimport { usePlaygroundContext } from \"../context/index.js\";\nimport { CompilerSettings } from \"./compiler-settings.js\";\n\nexport interface CompilerSettingsDialogButtonProps {\n selectedEmitter: string;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n}\n\nexport const CompilerSettingsDialogButton = ({\n selectedEmitter,\n compilerOptions,\n onCompilerOptionsChange,\n}: CompilerSettingsDialogButtonProps) => {\n const { host } = usePlaygroundContext();\n\n return (\n <Dialog>\n <DialogTrigger>\n <ToolbarButton icon={<Settings24Regular />} aria-label=\"Open Settings\" />\n </DialogTrigger>\n <DialogSurface>\n <DialogBody>\n <DialogTitle>Settings</DialogTitle>\n <DialogContent>\n <CompilerSettings\n host={host}\n selectedEmitter={selectedEmitter}\n options={compilerOptions}\n onOptionsChanged={onCompilerOptionsChange}\n />\n </DialogContent>\n </DialogBody>\n </DialogSurface>\n </Dialog>\n );\n};\n","import { Link, Toolbar, ToolbarButton, Tooltip } from \"@fluentui/react-components\";\nimport { Broom16Filled, Bug16Regular, Save16Regular } from \"@fluentui/react-icons\";\nimport { CompilerOptions } from \"@typespec/compiler\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { EmitterDropdown } from \"../react/emitter-dropdown.js\";\nimport { SamplesDropdown } from \"../react/samples-dropdown.js\";\nimport { CompilerSettingsDialogButton } from \"../react/settings/compiler-settings-dialog-button.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport style from \"./editor-command-bar.module.css\";\n\nexport interface EditorCommandBarProps {\n documentationUrl?: string;\n saveCode: () => Promise<void> | void;\n formatCode: () => Promise<void> | void;\n fileBug?: () => Promise<void> | void;\n host: BrowserHost;\n selectedEmitter: string;\n onSelectedEmitterChange: (emitter: string) => void;\n compilerOptions: CompilerOptions;\n onCompilerOptionsChange: (options: CompilerOptions) => void;\n\n samples?: Record<string, PlaygroundSample>;\n selectedSampleName: string;\n onSelectedSampleNameChange: (sampleName: string) => void;\n}\nexport const EditorCommandBar: FunctionComponent<EditorCommandBarProps> = ({\n documentationUrl,\n saveCode,\n formatCode,\n fileBug,\n host,\n selectedEmitter,\n onSelectedEmitterChange,\n compilerOptions,\n onCompilerOptionsChange,\n samples,\n selectedSampleName,\n onSelectedSampleNameChange,\n}) => {\n const documentation = documentationUrl ? (\n <label>\n <Link href={documentationUrl} target=\"_blank\">\n Docs\n </Link>\n </label>\n ) : undefined;\n\n const bugButton = fileBug ? <FileBugButton onClick={fileBug} /> : undefined;\n\n const emitters = useMemo(\n () =>\n Object.values(host.libraries)\n .filter((x) => x.isEmitter)\n .map((x) => x.name),\n [host.libraries]\n );\n\n return (\n <div className={style[\"bar\"]}>\n <Toolbar>\n <Tooltip content=\"Save\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Save\" icon={<Save16Regular />} onClick={saveCode as any} />\n </Tooltip>\n <Tooltip content=\"Format\" relationship=\"description\" withArrow>\n <ToolbarButton aria-label=\"Format\" icon={<Broom16Filled />} onClick={formatCode as any} />\n </Tooltip>\n {samples && (\n <>\n <SamplesDropdown\n samples={samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n />\n <div className={style[\"spacer\"]}></div>\n </>\n )}\n <EmitterDropdown\n emitters={emitters}\n onSelectedEmitterChange={onSelectedEmitterChange}\n selectedEmitter={selectedEmitter}\n />\n\n {documentation && (\n <>\n <div className={style[\"spacer\"]}></div>\n {documentation}\n </>\n )}\n <div className={style[\"divider\"]}></div>\n {bugButton}\n <CompilerSettingsDialogButton\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n selectedEmitter={selectedEmitter}\n />\n </Toolbar>\n </div>\n );\n};\n\ninterface FileBugButtonProps {\n onClick: () => Promise<void> | void;\n}\nconst FileBugButton: FunctionComponent<FileBugButtonProps> = ({ onClick }) => {\n return (\n <Tooltip content=\"File Bug Report\" relationship=\"description\" withArrow>\n <ToolbarButton\n appearance=\"subtle\"\n aria-label=\"File Bug Report\"\n icon={<Bug16Regular />}\n onClick={onClick as any}\n ></ToolbarButton>\n </Tooltip>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport { FooterVersionItem } from \"./footer/footer-version-item.js\";\nimport { Footer } from \"./footer/index.js\";\n\nexport const DefaultFooter: FunctionComponent = () => {\n return (\n <Footer>\n <FooterVersionItem />\n </Footer>\n );\n};\n","import { editor, IDisposable, Uri } from \"monaco-editor\";\nimport { FunctionComponent, useEffect, useMemo, useRef } from \"react\";\n\nexport interface EditorProps {\n model: editor.IModel;\n actions?: editor.IActionDescriptor[];\n options: editor.IStandaloneEditorConstructionOptions;\n onMount?: (data: OnMountData) => void;\n}\n\nexport interface OnMountData {\n editor: editor.IStandaloneCodeEditor;\n}\n\nexport interface EditorCommand {\n binding: number;\n handle: () => void;\n}\n\nexport const Editor: FunctionComponent<EditorProps> = ({ model, options, actions, onMount }) => {\n const editorContainerRef = useRef(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n\n useEffect(() => {\n editorRef.current = editor.create(editorContainerRef.current!, {\n model,\n automaticLayout: true,\n ...options,\n });\n onMount?.({ editor: editorRef.current });\n }, []);\n\n useEffect(() => {\n editor.setTheme(options.theme ?? \"typespec\");\n }, [options.theme]);\n\n useEffect(() => {\n const disposables: IDisposable[] = [];\n for (const command of actions ?? []) {\n disposables.push(editorRef.current!.addAction(command));\n }\n return () => {\n disposables.forEach((x) => x.dispose());\n };\n }, [actions]);\n\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.setModel(model);\n }\n }, [model]);\n\n return (\n <div\n className=\"monaco-editor-container\"\n style={{ width: \"100%\", height: \"100%\", overflow: \"hidden\" }}\n ref={editorContainerRef}\n data-tabster='{\"uncontrolled\": {}}' // https://github.com/microsoft/tabster/issues/316\n ></div>\n );\n};\n\nexport function useMonacoModel(uri: string, language?: string): editor.IModel {\n return useMemo(() => {\n const monacoUri = Uri.parse(uri);\n return editor.getModel(monacoUri) ?? editor.createModel(\"\", language, monacoUri);\n }, [uri, language]);\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: (value: TValue) => void | undefined\n): readonly [TValue, (update: TValue) => void] {\n const [value, setValue] = useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useMemo(() => controlledValue !== undefined, []);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = useRef(currentValue);\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useMemo(\n () => (update: React.SetStateAction<TValue | undefined>) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === \"function\" ? (update as any)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n },\n []\n );\n\n return [currentValue, setValueOrCallOnChange] as any;\n}\n\nexport function useAsyncMemo<T>(\n callback: () => Promise<T>,\n defaultValue: T,\n deps?: React.DependencyList\n): T {\n const [value, setValue] = useState<T>(defaultValue);\n useEffect(() => {\n callback()\n .then(setValue)\n // eslint-disable-next-line no-console\n .catch(() => console.error(\"Failed to load async memo\"));\n }, deps);\n return value;\n}\n","import { Select, SelectOnChangeData } from \"@fluentui/react-components\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { FileOutputViewer } from \"../types.js\";\nimport style from \"./file-output.module.css\";\n\nexport interface FileOutputProps {\n filename: string;\n content: string;\n viewers: FileOutputViewer[];\n}\n\n/**\n * Display a file output using different viewers.\n */\nexport const FileOutput: FunctionComponent<FileOutputProps> = ({ filename, content, viewers }) => {\n if (viewers.length === 0) {\n return <>No viewers</>;\n } else if (viewers.length === 1) {\n return viewers[0].render({ filename, content });\n }\n\n const [selected, setSelected] = useState<string>(viewers[0].key);\n\n const handleSelected = useCallback(\n (_: unknown, data: SelectOnChangeData) => {\n setSelected(data.value);\n },\n [selected]\n );\n\n const selectedRender = useMemo(() => {\n return viewers.find((x) => x.key === selected)?.render;\n }, [selected, viewers]);\n return (\n <div className={style[\"file-output\"]}>\n <div className={style[\"viewer-selector\"]}>\n <Select value={selected} onChange={handleSelected} aria-label=\"Select viewer\">\n {viewers.map(({ key, label }) => (\n <option key={key} value={key}>\n {label}\n </option>\n ))}\n </Select>\n </div>\n\n {selectedRender && selectedRender({ filename, content })}\n </div>\n );\n};\n","import {\n SelectTabData,\n SelectTabEvent,\n SelectTabEventHandler,\n Tab,\n TabList,\n TabProps,\n mergeClasses,\n} from \"@fluentui/react-components\";\nimport { FunctionComponent, ReactElement, useCallback } from \"react\";\nimport style from \"./output-tabs.module.css\";\n\nexport interface OutputTab {\n id: string;\n name: string | ReactElement<any, any>;\n align: \"left\" | \"right\";\n}\nexport interface OutputTabsProps {\n tabs: OutputTab[];\n selected: string;\n onSelect: (file: string) => void;\n}\n\nexport const OutputTabs: FunctionComponent<OutputTabsProps> = ({ tabs, selected, onSelect }) => {\n const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === \"left\");\n\n const onTabSelect: SelectTabEventHandler = useCallback(\n (event: SelectTabEvent, data: SelectTabData) => {\n onSelect(data.value as any);\n },\n [onSelect]\n );\n\n return (\n <TabList selectedValue={selected} onTabSelect={onTabSelect} className={style[\"tabs\"]}>\n {leftTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n <div className={style[\"tab-divider\"]}></div>\n {rightTabs.map((tab) => {\n return (\n <OutputTabEl\n key={tab.id}\n value={tab.id}\n className={tab.id === selected && style[\"tab--selected\"]}\n >\n {tab.name}\n </OutputTabEl>\n );\n })}\n </TabList>\n );\n};\n\nconst OutputTabEl = (props: TabProps) => {\n return <Tab {...props} className={mergeClasses(style[\"tab\"], props.className)} />;\n};\n\nfunction chunk<T>(items: T[], condition: (item: T) => boolean) {\n const match = [];\n const unMatch = [];\n for (const item of items) {\n if (condition(item)) {\n match.push(item);\n } else {\n unMatch.push(item);\n }\n }\n return [match, unMatch];\n}\n","import { editor } from \"monaco-editor\";\nimport { FunctionComponent } from \"react\";\nimport { Editor, EditorProps, useMonacoModel } from \"./editor.js\";\nimport { PlaygroundEditorsOptions } from \"./playground.js\";\n\nexport interface TypeSpecEditorProps extends Omit<EditorProps, \"options\"> {\n options?: editor.IStandaloneEditorConstructionOptions;\n}\n\nexport const TypeSpecEditor: FunctionComponent<TypeSpecEditorProps> = ({\n actions,\n options,\n ...other\n}) => {\n const resolvedOptions: editor.IStandaloneEditorConstructionOptions = {\n \"semanticHighlighting.enabled\": true,\n automaticLayout: true,\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n ...options,\n };\n return <Editor actions={actions} options={resolvedOptions} {...other}></Editor>;\n};\n\nexport const OutputEditor: FunctionComponent<{\n filename: string;\n value: string;\n editorOptions?: PlaygroundEditorsOptions;\n}> = ({ filename, value, editorOptions }) => {\n if (filename === \"\") {\n return null;\n }\n const options: editor.IStandaloneEditorConstructionOptions = {\n ...editorOptions,\n readOnly: true,\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n };\n const model = useMonacoModel(filename);\n model.setValue(value);\n return <Editor model={model} options={options}></Editor>;\n};\n","import { tokens } from \"@fluentui/react-components\";\nimport { Program } from \"@typespec/compiler\";\nimport { ColorPalette, ColorProvider, TypeSpecProgramViewer } from \"@typespec/html-program-viewer\";\nimport { FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { FileOutput } from \"../file-output/file-output.js\";\nimport { OutputTab, OutputTabs } from \"../output-tabs/output-tabs.js\";\nimport { PlaygroundEditorsOptions } from \"../playground.js\";\nimport { CompilationState, CompileResult, FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { OutputEditor } from \"../typespec-editor.js\";\nimport style from \"./output-view.module.css\";\n\nexport interface OutputViewProps {\n compilationState: CompilationState | undefined;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nexport const OutputView: FunctionComponent<OutputViewProps> = ({\n compilationState,\n viewers,\n editorOptions,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return <></>;\n }\n return (\n <OutputViewInternal\n compilationResult={compilationState}\n viewers={viewers}\n editorOptions={editorOptions}\n />\n );\n};\n\nconst OutputViewInternal: FunctionComponent<{\n compilationResult: CompileResult;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}> = ({ compilationResult, viewers, editorOptions }) => {\n const { program, outputFiles } = compilationResult;\n\n const [viewSelection, setViewSelection] = useState<ViewSelection>({\n type: \"file\",\n filename: \"\",\n content: \"\",\n });\n\n useEffect(() => {\n if (viewSelection.type === \"file\") {\n if (outputFiles.length > 0) {\n const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);\n void loadOutputFile(fileStillThere ?? outputFiles[0]);\n } else {\n setViewSelection({ type: \"file\", filename: viewSelection.filename, content: \"\" });\n }\n }\n }, [program, outputFiles]);\n\n async function loadOutputFile(path: string) {\n const contents = await program.host.readFile(\"./tsp-output/\" + path);\n setViewSelection({ type: \"file\", filename: path, content: contents.text });\n }\n\n const diagnostics = program.diagnostics;\n const tabs: OutputTab[] = useMemo(() => {\n return [\n ...outputFiles.map(\n (x): OutputTab => ({\n align: \"left\",\n name: x,\n id: x,\n })\n ),\n { id: \"type-graph\", name: \"Type Graph\", align: \"right\" },\n ];\n }, [outputFiles, diagnostics]);\n const handleTabSelection = useCallback((tabId: string) => {\n if (tabId === \"type-graph\") {\n setViewSelection({ type: \"type-graph\" });\n } else {\n void loadOutputFile(tabId);\n }\n }, []);\n\n return (\n <div className={style[\"output-view\"]}>\n <OutputTabs\n tabs={tabs}\n selected={viewSelection.type === \"file\" ? viewSelection.filename : viewSelection.type}\n onSelect={handleTabSelection}\n />\n <div className={style[\"output-content\"]}>\n <OutputContent\n viewSelection={viewSelection}\n editorOptions={editorOptions}\n program={program}\n viewers={viewers}\n />\n </div>\n </div>\n );\n};\n\nfunction getRawFileViewer(editorOptions?: PlaygroundEditorsOptions) {\n return {\n key: \"raw\",\n label: \"File\",\n render: ({ filename, content }: ViewerProps) => (\n <OutputEditor editorOptions={editorOptions} filename={filename} value={content} />\n ),\n };\n}\n\ninterface OutputContentProps {\n viewSelection: ViewSelection;\n program: Program | undefined;\n internalCompilerError?: any;\n editorOptions?: PlaygroundEditorsOptions;\n viewers?: FileOutputViewer[];\n}\n\nconst OutputContent: FunctionComponent<OutputContentProps> = ({\n viewSelection,\n program,\n viewers,\n editorOptions,\n}) => {\n const resolvedViewers = useMemo(\n () => [getRawFileViewer(editorOptions), ...(viewers ?? [])],\n [viewers]\n );\n switch (viewSelection.type) {\n case \"file\":\n return (\n <FileOutput\n filename={viewSelection.filename}\n content={viewSelection.content}\n viewers={resolvedViewers}\n />\n );\n default:\n return program && <TypeGraphViewer program={program} />;\n }\n};\n\ntype ViewSelection = { type: \"file\"; filename: string; content: string } | { type: \"type-graph\" };\n\ninterface TypeGraphViewerProps {\n program: Program;\n}\nconst TypeGraphViewer = ({ program }: TypeGraphViewerProps) => {\n return (\n <div className={style[\"type-graph-viewer\"]}>\n <ColorProvider colors={TypeGraphColors}>\n <TypeSpecProgramViewer program={program} />\n </ColorProvider>\n </div>\n );\n};\n\nconst TypeGraphColors: ColorPalette = {\n background: tokens.colorNeutralBackground1,\n typeKind: tokens.colorPaletteBerryForeground2,\n typeName: tokens.colorNeutralForeground2,\n dataKey: tokens.colorNeutralForeground2,\n ref: tokens.colorBrandForeground1,\n literal: tokens.colorPaletteLightGreenForeground2,\n indentationGuide: tokens.colorNeutralForeground4,\n property: tokens.colorPaletteMarigoldForeground2,\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n getSourceLocation,\n type Diagnostic,\n type DiagnosticTarget,\n type NoTarget,\n} from \"@typespec/compiler\";\nimport { FunctionComponent, memo, useCallback } from \"react\";\nimport style from \"./diagnostic-list.module.css\";\n\nexport interface DiagnosticListProps {\n readonly diagnostics: readonly Diagnostic[];\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\n\nexport const DiagnosticList: FunctionComponent<DiagnosticListProps> = ({\n diagnostics,\n onDiagnosticSelected,\n}) => {\n if (diagnostics.length === 0) {\n return <div className={style[\"list\"]}>No errors</div>;\n }\n\n const handleItemSelected = useCallback(\n (diagnostic: Diagnostic) => {\n onDiagnosticSelected?.(diagnostic);\n },\n [onDiagnosticSelected]\n );\n return (\n <div className={style[\"list\"]}>\n {diagnostics.map((x, i) => {\n return <DiagnosticItem key={i} diagnostic={x} onItemSelected={handleItemSelected} />;\n })}\n </div>\n );\n};\n\ninterface DiagnosticItemProps {\n readonly diagnostic: Diagnostic;\n readonly onItemSelected: (diagnostic: Diagnostic) => void;\n}\n\nconst DiagnosticItem: FunctionComponent<DiagnosticItemProps> = ({ diagnostic, onItemSelected }) => {\n const handleClick = useCallback(() => {\n onItemSelected(diagnostic);\n }, [diagnostic, onItemSelected]);\n return (\n <div tabIndex={0} className={style[\"item\"]} onClick={handleClick}>\n <div\n className={mergeClasses(\n (style[\"item-severity\"],\n style[diagnostic.severity === \"error\" ? \"item--error\" : \"item--warning\"])\n )}\n >\n {diagnostic.severity}\n </div>\n <div className={style[\"item-code\"]}>{diagnostic.code}</div>\n <div className={style[\"item-message\"]}>{diagnostic.message}</div>\n <div className={style[\"item-loc\"]}>\n <DiagnosticTargetLink target={diagnostic.target} />\n </div>\n </div>\n );\n};\n\nconst DiagnosticTargetLink = memo(({ target }: { target: DiagnosticTarget | typeof NoTarget }) => {\n if (typeof target === \"symbol\") {\n return <span></span>;\n }\n const location = getSourceLocation(target);\n const file = location.file.path === \"/test/main.tsp\" ? \"\" : `${location.file.path}:`;\n const { line, character } = location.file.getLineAndCharacterOfPosition(location.pos);\n return (\n <span>\n {file}\n {line + 1}:{character + 1}\n </span>\n );\n});\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ChevronDown16Regular, ErrorCircle16Filled, Warning16Filled } from \"@fluentui/react-icons\";\nimport { MouseEventHandler, ReactNode, memo } from \"react\";\nimport { CompilationState } from \"../types.js\";\nimport style from \"./header.module.css\";\n\nexport interface ProblemPaneHeaderProps {\n compilationState: CompilationState | undefined;\n onClick?: MouseEventHandler<HTMLDivElement>;\n collaped: boolean;\n}\n\nexport const ProblemPaneHeader = memo(({ compilationState, ...props }: ProblemPaneHeaderProps) => {\n const noProblem = (\n <Container status=\"none\" {...props}>\n No problems\n </Container>\n );\n if (compilationState === undefined) {\n return noProblem;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <Container status=\"error\" {...props}>\n <ErrorCircle16Filled /> Internal Compiler Error\n </Container>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n if (diagnostics.length === 0) {\n return noProblem;\n }\n const errors = diagnostics.filter((x) => x.severity === \"error\");\n const warnings = diagnostics.filter((x) => x.severity === \"warning\");\n return (\n <Container status={errors.length > 0 ? \"error\" : \"warning\"} {...props}>\n {errors.length > 0 ? (\n <>\n <ErrorCircle16Filled className={style[\"error-icon\"]} /> {errors.length} errors\n </>\n ) : null}\n {warnings.length > 0 ? (\n <>\n <Warning16Filled className={style[\"warning-icon\"]} /> {warnings.length} warnings\n </>\n ) : null}\n </Container>\n );\n});\n\ninterface ContainerProps {\n collaped: boolean;\n onClick?: MouseEventHandler<HTMLDivElement>;\n children?: ReactNode;\n className?: string;\n status: \"error\" | \"warning\" | \"none\";\n}\n\nconst Container = ({ children, className, status, onClick, collaped }: ContainerProps) => {\n return (\n <div\n tabIndex={onClick === undefined ? undefined : 0}\n className={mergeClasses(\n style[\"header\"],\n status === \"error\" && style[\"header--error\"],\n status === \"warning\" && style[\"header--warning\"],\n className\n )}\n onClick={onClick}\n >\n <div className={style[\"header-content\"]}>{children}</div>\n <ChevronDown16Regular\n className={mergeClasses(\n style[\"header-chevron\"],\n collaped && style[\"header-chevron--collapsed\"]\n )}\n />\n </div>\n );\n};\n","import { Diagnostic } from \"@typespec/compiler\";\nimport { FunctionComponent, MouseEventHandler } from \"react\";\nimport { DiagnosticList } from \"../diagnostic-list/diagnostic-list.js\";\nimport { CompilationState } from \"../types.js\";\nimport { ProblemPaneHeader } from \"./header.js\";\nimport style from \"./problem-pane.module.css\";\n\nexport interface ProblemPaneProps {\n readonly collapsed: boolean;\n readonly compilationState: CompilationState | undefined;\n readonly onHeaderClick?: MouseEventHandler<HTMLDivElement>;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nexport const ProblemPane: FunctionComponent<ProblemPaneProps> = ({\n collapsed,\n compilationState,\n onHeaderClick,\n onDiagnosticSelected,\n}) => {\n return (\n <div className={style[\"problem-pane\"]}>\n <ProblemPaneHeader\n compilationState={compilationState}\n onClick={onHeaderClick}\n collaped={collapsed}\n />\n <div className={style[\"problem-content\"]} aria-hidden={collapsed}>\n <ProblemPaneContent\n compilationState={compilationState}\n onDiagnosticSelected={onDiagnosticSelected}\n />\n </div>\n </div>\n );\n};\n\ninterface ProblemPaneContentProps {\n readonly compilationState: CompilationState | undefined;\n readonly onDiagnosticSelected?: (diagnostic: Diagnostic) => void;\n}\nconst ProblemPaneContent: FunctionComponent<ProblemPaneContentProps> = ({\n compilationState,\n onDiagnosticSelected,\n}) => {\n if (compilationState === undefined) {\n return <></>;\n }\n if (\"internalCompilerError\" in compilationState) {\n return (\n <pre className={style[\"internal-compiler-error\"]}>\n {String(compilationState.internalCompilerError)}\n </pre>\n );\n }\n const diagnostics = compilationState.program.diagnostics;\n return diagnostics.length === 0 ? (\n <div className={style[\"no-problems\"]}> No problems</div>\n ) : (\n <DiagnosticList diagnostics={diagnostics} onDiagnosticSelected={onDiagnosticSelected} />\n );\n};\n","import { HTMLAttributes, PropsWithChildren } from \"react\";\n\nexport interface PaneProps {\n maxSize?: number | string;\n minSize?: number | string;\n}\n\nexport default function Pane({\n children,\n ...props\n}: PropsWithChildren<HTMLAttributes<HTMLDivElement> & PaneProps>) {\n return <div {...props}>{children}</div>;\n}\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashContentProps {\n className?: string;\n dragging?: boolean;\n children?: ReactNode;\n}\n\nexport const SashContent: React.FunctionComponent<SashContentProps> = ({\n className,\n children,\n dragging,\n ...others\n}: SashContentProps) => {\n return (\n <div\n className={mergeClasses(\n style[\"sash-content\"],\n dragging && style[\"sash-content-dragging\"],\n className\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport { ReactNode, useState } from \"react\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SashProps {\n className?: string;\n style: React.CSSProperties;\n render: (dragging: boolean) => ReactNode;\n onReset: () => void;\n onDragStart: React.MouseEventHandler<HTMLDivElement>;\n onDragging: React.MouseEventHandler<HTMLDivElement>;\n onDragEnd: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Sash = ({\n className,\n render,\n onDragStart,\n onDragging,\n onDragEnd,\n onReset,\n ...others\n}: SashProps) => {\n const [draging, setDrag] = useState(false);\n\n const handleMouseMove = (e: any) => {\n onDragging(e);\n };\n\n const handleMouseUp = (e: any) => {\n setDrag(false);\n onDragEnd(e);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n className={mergeClasses(style[\"sash\"], className)}\n onMouseDown={(e) => {\n setDrag(true);\n onDragStart(e);\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n onDoubleClick={onReset}\n {...others}\n >\n {render(draging)}\n </div>\n );\n};\n","import { mergeClasses } from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n JSX,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableValue } from \"../hooks.js\";\nimport Pane, { PaneProps } from \"./pane.js\";\nimport { SashContent } from \"./sash-content.js\";\nimport { Sash } from \"./sash.js\";\nimport style from \"./split-pane.module.css\";\n\nexport interface SplitPaneProps {\n children: JSX.Element[];\n allowResize?: boolean;\n split?: \"vertical\" | \"horizontal\";\n initialSizes?: (string | number)[];\n sizes?: (string | number | undefined)[];\n sashRender?: (index: number, active: boolean) => React.ReactNode;\n onChange?: (sizes: number[]) => void;\n onDragStart?: (e: MouseEvent) => void;\n onDragEnd?: (e: MouseEvent) => void;\n className?: string;\n sashClassName?: string;\n performanceMode?: boolean;\n resizerSize?: number;\n}\n\ninterface Axis {\n x: number;\n y: number;\n}\n\ninterface CacheSizes {\n sizes: (string | number)[];\n sashPosSizes: (string | number)[];\n}\n\nexport const SplitPane: FunctionComponent<SplitPaneProps> = ({\n children,\n sizes: propSizes,\n initialSizes: defaultSizes,\n allowResize = true,\n split = \"vertical\",\n className: wrapClassName,\n sashRender = (_, active) => <SashContent dragging={active} />,\n resizerSize = 4,\n performanceMode = false,\n onChange = () => null,\n onDragStart = () => null,\n onDragEnd = () => null,\n ...others\n}: SplitPaneProps) => {\n const [resolvedPropSize, updateSizes] = useControllableValue<(string | number | undefined)[]>(\n propSizes,\n defaultSizes,\n onChange as any\n );\n const axis = useRef<Axis>({ x: 0, y: 0 });\n const wrapper = useRef<HTMLDivElement>(null);\n const cacheSizes = useRef<CacheSizes>({ sizes: [], sashPosSizes: [] });\n const [wrapperRect, setWrapperRect] = useState<Record<string, number>>({});\n const [isDragging, setDragging] = useState<boolean>(false);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n setWrapperRect(wrapper?.current?.getBoundingClientRect() ?? ({} as any));\n });\n resizeObserver.observe(wrapper.current!);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const { sizeName, splitPos, splitAxis } = useMemo(\n () =>\n ({\n sizeName: split === \"vertical\" ? \"width\" : \"height\",\n splitPos: split === \"vertical\" ? \"left\" : \"top\",\n splitAxis: split === \"vertical\" ? \"x\" : \"y\",\n }) as const,\n [split]\n );\n\n const wrapSize: number = wrapperRect[sizeName] ?? 0;\n\n // Get limit sizes via children\n const paneLimitSizes = useMemo(\n () =>\n children.map((childNode) => {\n const limits = [0, Infinity];\n if (childNode?.type === Pane) {\n const { minSize, maxSize } = childNode.props as PaneProps;\n limits[0] = assertsSize(minSize, wrapSize, 0);\n limits[1] = assertsSize(maxSize, wrapSize);\n }\n return limits;\n }),\n [children, wrapSize]\n );\n\n const sizes = useMemo(\n function () {\n let count = 0;\n let curSum = 0;\n const res = children.map((_, index) => {\n const size = assertsSize(resolvedPropSize[index], wrapSize);\n size === Infinity ? count++ : (curSum += size);\n return size;\n });\n\n // resize or illegal size input,recalculate pane sizes\n if (curSum > wrapSize || (!count && curSum < wrapSize)) {\n const cacheNum = (curSum - wrapSize) / curSum;\n return res.map((size) => {\n return size === Infinity ? 0 : size - size * cacheNum;\n });\n }\n\n if (count > 0) {\n const average = (wrapSize - curSum) / count;\n return res.map((size) => {\n return size === Infinity ? average : size;\n });\n }\n\n return res;\n },\n [...resolvedPropSize, children.length, wrapSize]\n );\n\n const sashPosSizes = useMemo(\n () => sizes.reduce((a, b) => [...a, a[a.length - 1] + b], [0]),\n [...sizes]\n );\n\n const dragStart = useCallback(\n (e: any) => {\n document?.body?.classList?.add(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(true);\n onDragStart(e);\n },\n [onDragStart, sizes, sashPosSizes]\n );\n\n const resetPosition = useCallback(() => {\n if (defaultSizes) {\n updateSizes(defaultSizes);\n }\n }, [defaultSizes, updateSizes]);\n\n const dragEnd = useCallback(\n (e: any) => {\n document?.body?.classList?.remove(style[\"split-disabled\"]);\n axis.current = { x: e.pageX, y: e.pageY };\n cacheSizes.current = { sizes, sashPosSizes };\n setDragging(false);\n onDragEnd(e);\n },\n [onDragEnd, sizes, sashPosSizes]\n );\n\n const onDragging = useCallback(\n function (e: MouseEvent<HTMLDivElement>, i: number) {\n const curAxis = { x: e.pageX, y: e.pageY };\n let distanceX = curAxis[splitAxis] - axis.current[splitAxis];\n\n const leftBorder = -Math.min(\n sizes[i] - paneLimitSizes[i][0],\n paneLimitSizes[i + 1][1] - sizes[i + 1]\n );\n const rightBorder = Math.min(\n sizes[i + 1] - paneLimitSizes[i + 1][0],\n paneLimitSizes[i][1] - sizes[i]\n );\n\n if (distanceX < leftBorder) {\n distanceX = leftBorder;\n }\n if (distanceX > rightBorder) {\n distanceX = rightBorder;\n }\n\n const nextSizes = [...sizes];\n nextSizes[i] += distanceX;\n nextSizes[i + 1] -= distanceX;\n\n updateSizes(nextSizes);\n },\n [paneLimitSizes, onChange]\n );\n\n const paneFollow = !(performanceMode && isDragging);\n const paneSizes = paneFollow ? sizes : cacheSizes.current.sizes;\n const panePoses = paneFollow ? sashPosSizes : cacheSizes.current.sashPosSizes;\n\n return (\n <div\n className={mergeClasses(\n style[\"split-pane\"],\n split === \"vertical\" && style[\"split-pane-vertical\"],\n split === \"horizontal\" && style[\"split-pane-horizontal\"],\n isDragging && style[\"split-pane-dragging\"],\n wrapClassName\n )}\n ref={wrapper}\n {...others}\n >\n {children.map((childNode, childIndex) => {\n const isPane = childNode.type === Pane;\n const paneProps = isPane ? childNode.props : {};\n\n return (\n <Pane\n key={childIndex}\n className={mergeClasses(style[\"pane\"], paneProps.className)}\n style={{\n ...paneProps.style,\n [sizeName]: paneSizes[childIndex],\n [splitPos]: panePoses[childIndex],\n }}\n >\n {isPane ? paneProps.children : childNode}\n </Pane>\n );\n })}\n {sashPosSizes.slice(1, -1).map((posSize, index) => (\n <Sash\n key={index}\n className={mergeClasses(\n !allowResize && style[\"sash-disabled\"],\n split === \"vertical\" ? style[\"sash-vertical\"] : style[\"sash-horizontal\"]\n )}\n style={{\n [sizeName]: resizerSize,\n [splitPos]: posSize - resizerSize / 2,\n }}\n render={sashRender.bind(null, index)}\n onReset={resetPosition}\n onDragStart={dragStart}\n onDragging={(e) => onDragging(e, index)}\n onDragEnd={dragEnd}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Convert size to absolute number or Infinity\n * SplitPane allows sizes in string and number, but the state sizes only support number,\n * so convert string and number to number in here\n * 'auto' -> divide the remaining space equally\n * 'xxx px' -> xxx\n * 'xxx%' -> wrapper.size * xxx/100\n * xxx -> xxx\n */\nfunction assertsSize(size: string | number | undefined, sum: number, defaultValue = Infinity) {\n if (typeof size === \"undefined\") return defaultValue;\n if (typeof size === \"number\") return size;\n if (size.endsWith(\"%\")) return sum * (+size.replace(\"%\", \"\") / 100);\n if (size.endsWith(\"px\")) return +size.replace(\"px\", \"\");\n return defaultValue;\n}\n","import { CompilerOptions, Diagnostic } from \"@typespec/compiler\";\nimport debounce from \"debounce\";\nimport { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from \"monaco-editor\";\nimport {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { CompletionItemTag } from \"vscode-languageserver\";\nimport { EditorCommandBar } from \"../editor-command-bar/editor-command-bar.js\";\nimport { getMonacoRange } from \"../services.js\";\nimport { BrowserHost, PlaygroundSample } from \"../types.js\";\nimport { PlaygroundContextProvider } from \"./context/playground-context.js\";\nimport { DefaultFooter } from \"./default-footer.js\";\nimport { OnMountData, useMonacoModel } from \"./editor.js\";\nimport { useControllableValue } from \"./hooks.js\";\nimport { OutputView } from \"./output-view/output-view.js\";\nimport style from \"./playground.module.css\";\nimport { ProblemPane } from \"./problem-pane/index.js\";\nimport Pane from \"./split-pane/pane.js\";\nimport { SplitPane } from \"./split-pane/split-pane.js\";\nimport { CompilationState, FileOutputViewer } from \"./types.js\";\nimport { TypeSpecEditor } from \"./typespec-editor.js\";\n\nexport interface PlaygroundProps {\n host: BrowserHost;\n\n /** Default emitter if leaving this unmanaged. */\n defaultContent?: string;\n\n /** List of available libraries */\n readonly libraries: readonly string[];\n\n /** Emitter to use */\n emitter?: string;\n /** Default emitter if leaving this unmanaged. */\n defaultEmitter?: string;\n /** Callback when emitter change */\n onEmitterChange?: (emitter: string) => void;\n\n /** Emitter options */\n compilerOptions?: CompilerOptions;\n /** Default emitter options if leaving this unmanaged. */\n defaultCompilerOptions?: CompilerOptions;\n /** Callback when emitter options change */\n onCompilerOptionsChange?: (emitter: CompilerOptions) => void;\n\n /** Samples available */\n samples?: Record<string, PlaygroundSample>;\n\n /** Sample to use */\n sampleName?: string;\n /** Default sample if leaving this unmanaged. */\n defaultSampleName?: string;\n /** Callback when sample change */\n onSampleNameChange?: (sampleName: string) => void;\n\n onFileBug?: () => void;\n\n /** Playground links */\n links?: PlaygroundLinks;\n\n /** Custom viewers that enabled for certain emitters. Key of the map is emitter name */\n emitterViewers?: Record<string, FileOutputViewer[]>;\n\n onSave?: (value: PlaygroundSaveData) => void;\n\n editorOptions?: PlaygroundEditorsOptions;\n\n /**\n * Change the footer of the playground.\n */\n footer?: ReactNode;\n}\n\nexport interface PlaygroundEditorsOptions {\n theme?: string;\n}\n\nexport interface PlaygroundSaveData {\n /** Current content of the playground. */\n content: string;\n\n /** Emitter name. */\n emitter: string;\n\n /** Emitter options. */\n options?: CompilerOptions;\n\n /** If a sample is selected and the content hasn't changed since. */\n sampleName?: string;\n}\n\nexport interface PlaygroundLinks {\n /** Link to documentation */\n documentationUrl?: string;\n}\n\nexport const Playground: FunctionComponent<PlaygroundProps> = (props) => {\n const { host, onSave } = props;\n const editorRef = useRef<editor.IStandaloneCodeEditor | undefined>(undefined);\n\n const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(\n props.emitter,\n props.defaultEmitter,\n props.onEmitterChange\n );\n const [compilerOptions, onCompilerOptionsChange] = useControllableValue(\n props.compilerOptions,\n props.defaultCompilerOptions ?? {},\n props.onCompilerOptionsChange\n );\n const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(\n props.sampleName,\n props.defaultSampleName,\n props.onSampleNameChange\n );\n const [content, setContent] = useState(props.defaultContent);\n const isSampleUntouched = useMemo(() => {\n return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);\n }, [content, selectedSampleName, props.samples]);\n const typespecModel = useMonacoModel(\"inmemory://test/main.tsp\", \"typespec\");\n const [compilationState, setCompilationState] = useState<CompilationState | undefined>(undefined);\n\n const doCompile = useCallback(async () => {\n const content = typespecModel.getValue();\n setContent(content);\n const typespecCompiler = host.compiler;\n\n const state = await compile(host, content, selectedEmitter, compilerOptions);\n setCompilationState(state);\n if (\"program\" in state) {\n const markers: editor.IMarkerData[] = state.program.diagnostics.map((diag) => ({\n ...getMonacoRange(typespecCompiler, diag.target),\n message: diag.message,\n severity: diag.severity === \"error\" ? MarkerSeverity.Error : MarkerSeverity.Warning,\n tags: diag.code === \"deprecated\" ? [CompletionItemTag.Deprecated] : undefined,\n }));\n\n editor.setModelMarkers(typespecModel, \"owner\", markers ?? []);\n } else {\n editor.setModelMarkers(typespecModel, \"owner\", []);\n }\n }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);\n\n const updateTypeSpec = useCallback(\n (value: string) => {\n if (typespecModel.getValue() !== value) {\n typespecModel.setValue(value);\n }\n },\n [typespecModel]\n );\n useEffect(() => {\n updateTypeSpec(props.defaultContent ?? \"\");\n }, []);\n\n useEffect(() => {\n if (selectedSampleName && props.samples) {\n const config = props.samples[selectedSampleName];\n if (config.content) {\n updateTypeSpec(config.content);\n if (config.preferredEmitter) {\n onSelectedEmitterChange(config.preferredEmitter);\n }\n if (config.compilerOptions) {\n onCompilerOptionsChange(config.compilerOptions);\n }\n }\n }\n }, [updateTypeSpec, selectedSampleName]);\n\n useEffect(() => {\n const debouncer = debounce(() => doCompile(), 200);\n const disposable = typespecModel.onDidChangeContent(debouncer);\n return () => {\n debouncer.clear();\n disposable.dispose();\n };\n }, [typespecModel, doCompile]);\n\n useEffect(() => {\n void doCompile();\n }, [doCompile]);\n\n const saveCode = useCallback(() => {\n if (onSave) {\n onSave({\n content: typespecModel.getValue(),\n emitter: selectedEmitter,\n options: compilerOptions,\n sampleName: isSampleUntouched ? selectedSampleName : undefined,\n });\n }\n }, [\n typespecModel,\n onSave,\n selectedEmitter,\n compilerOptions,\n selectedSampleName,\n isSampleUntouched,\n ]);\n\n const formatCode = useCallback(() => {\n void editorRef.current?.getAction(\"editor.action.formatDocument\")?.run();\n }, [typespecModel]);\n\n const fileBug = useCallback(async () => {\n if (props.onFileBug) {\n saveCode();\n props.onFileBug();\n }\n }, [saveCode, typespecModel, props.onFileBug]);\n\n const typespecEditorActions = useMemo(\n (): editor.IActionDescriptor[] => [\n // ctrl/cmd+S => save\n { id: \"save\", label: \"Save\", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },\n ],\n [saveCode]\n );\n\n const onTypeSpecEditorMount = useCallback(({ editor }: OnMountData) => {\n editorRef.current = editor;\n }, []);\n\n const [verticalPaneSizes, setVerticalPaneSizes] = useState<(string | number | undefined)[]>(\n verticalPaneSizesConst.collapsed\n );\n const toggleProblemPane = useCallback(() => {\n setVerticalPaneSizes((value) => {\n return value === verticalPaneSizesConst.collapsed\n ? verticalPaneSizesConst.expanded\n : verticalPaneSizesConst.collapsed;\n });\n }, [setVerticalPaneSizes]);\n\n const onVerticalPaneSizeChange = useCallback(\n (sizes: number[]) => {\n setVerticalPaneSizes(sizes);\n },\n [setVerticalPaneSizes]\n );\n const handleDiagnosticSelected = useCallback(\n (diagnostic: Diagnostic) => {\n editorRef.current?.setSelection(getMonacoRange(host.compiler, diagnostic.target));\n },\n [setVerticalPaneSizes]\n );\n\n return (\n <PlaygroundContextProvider value={{ host }}>\n <div className={style[\"layout\"]}>\n <SplitPane sizes={verticalPaneSizes} onChange={onVerticalPaneSizeChange} split=\"horizontal\">\n <Pane>\n <SplitPane initialSizes={[\"50%\", \"50%\"]}>\n <Pane>\n <EditorCommandBar\n host={host}\n selectedEmitter={selectedEmitter}\n onSelectedEmitterChange={onSelectedEmitterChange}\n compilerOptions={compilerOptions}\n onCompilerOptionsChange={onCompilerOptionsChange}\n samples={props.samples}\n selectedSampleName={selectedSampleName}\n onSelectedSampleNameChange={onSelectedSampleNameChange}\n saveCode={saveCode}\n formatCode={formatCode}\n fileBug={props.onFileBug ? fileBug : undefined}\n documentationUrl={props.links?.documentationUrl}\n />\n <TypeSpecEditor\n model={typespecModel}\n actions={typespecEditorActions}\n options={props.editorOptions}\n onMount={onTypeSpecEditorMount}\n />\n </Pane>\n <Pane>\n <OutputView\n compilationState={compilationState}\n editorOptions={props.editorOptions}\n viewers={props.emitterViewers?.[selectedEmitter]}\n />\n </Pane>\n </SplitPane>\n </Pane>\n <Pane minSize={30}>\n <ProblemPane\n collapsed={verticalPaneSizes[1] === verticalPaneSizesConst.collapsed[1]}\n compilationState={compilationState}\n onHeaderClick={toggleProblemPane}\n onDiagnosticSelected={handleDiagnosticSelected}\n />\n </Pane>\n </SplitPane>\n {props.footer ?? <DefaultFooter />}\n </div>\n </PlaygroundContextProvider>\n );\n};\n\nconst verticalPaneSizesConst = {\n collapsed: [undefined, 30],\n expanded: [undefined, 200],\n};\nconst outputDir = \"./tsp-output\";\n\nasync function compile(\n host: BrowserHost,\n content: string,\n selectedEmitter: string,\n options: CompilerOptions\n): Promise<CompilationState> {\n await host.writeFile(\"main.tsp\", content);\n await emptyOutputDir(host);\n try {\n const typespecCompiler = host.compiler;\n const program = await typespecCompiler.compile(host, \"main.tsp\", {\n ...options,\n options: {\n ...options.options,\n [selectedEmitter]: {\n ...options.options?.[selectedEmitter],\n \"emitter-output-dir\": \"tsp-output\",\n },\n },\n outputDir: \"tsp-output\",\n emit: [selectedEmitter],\n });\n const outputFiles = await findOutputFiles(host);\n return { program, outputFiles };\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Internal compiler error\", error);\n return { internalCompilerError: error };\n }\n}\nasync function findOutputFiles(host: BrowserHost): Promise<string[]> {\n const files: string[] = [];\n\n async function addFiles(dir: string) {\n const items = await host.readDir(outputDir + dir);\n for (const item of items) {\n const itemPath = `${dir}/${item}`;\n if ((await host.stat(outputDir + itemPath)).isDirectory()) {\n await addFiles(itemPath);\n } else {\n files.push(dir === \"\" ? item : `${dir}/${item}`);\n }\n }\n }\n await addFiles(\"\");\n return files;\n}\n\nasync function emptyOutputDir(host: BrowserHost) {\n // empty output directory\n const dirs = await host.readDir(\"./tsp-output\");\n for (const file of dirs) {\n const path = \"./tsp-output/\" + file;\n const uri = Uri.parse(host.pathToFileURL(path));\n const model = editor.getModel(uri);\n if (model) {\n model.dispose();\n }\n await host.rm(path, { recursive: true });\n }\n}\n","import {\n FluentProvider,\n Toast,\n ToastBody,\n ToastTitle,\n Toaster,\n useToastController,\n webLightTheme,\n} from \"@fluentui/react-components\";\nimport {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useState,\n} from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { createBrowserHost } from \"../browser-host.js\";\nimport { LibraryImportOptions } from \"../core.js\";\nimport { registerMonacoLanguage } from \"../services.js\";\nimport { StateStorage, UrlStateStorage, createUrlStateStorage } from \"../state-storage.js\";\nimport { BrowserHost } from \"../types.js\";\nimport { Playground, PlaygroundProps, PlaygroundSaveData } from \"./playground.js\";\n\nexport interface ReactPlaygroundConfig extends Partial<PlaygroundProps> {\n readonly libraries: readonly string[];\n readonly importConfig?: LibraryImportOptions;\n /** Content to show while the playground data is loading(Libraries) */\n readonly fallback?: ReactNode;\n}\n\ninterface StandalonePlaygroundContext {\n host: BrowserHost;\n initialState: Partial<PlaygroundSaveData>;\n stateStorage: StateStorage<PlaygroundSaveData>;\n}\nfunction useStandalonePlaygroundContext(\n config: ReactPlaygroundConfig\n): StandalonePlaygroundContext | undefined {\n const [context, setContext] = useState<StandalonePlaygroundContext | undefined>();\n useEffect(() => {\n const load = async () => {\n const host = await createBrowserHost(config.libraries, config.importConfig);\n await registerMonacoLanguage(host);\n\n const stateStorage = createStandalonePlaygroundStateStorage();\n const initialState = stateStorage.load();\n setContext({ host, initialState, stateStorage });\n };\n void load();\n }, []);\n return context;\n}\n\nexport const StandalonePlayground: FunctionComponent<ReactPlaygroundConfig> = (config) => {\n const context = useStandalonePlaygroundContext(config);\n const toasterId = useId();\n const { dispatchToast } = useToastController(toasterId);\n\n const onSave = useCallback(\n (value: PlaygroundSaveData) => {\n if (!context) {\n return;\n }\n context.stateStorage.save(value);\n void navigator.clipboard.writeText(window.location.toString());\n dispatchToast(\n <Toast>\n <ToastTitle>Saved!</ToastTitle>\n <ToastBody>Playground link has been copied to the clipboard.</ToastBody>\n </Toast>,\n { intent: \"success\" }\n );\n },\n [dispatchToast, context]\n );\n\n const fixedOptions: PlaygroundProps | undefined = useMemo(\n () =>\n context && {\n host: context.host,\n libraries: config.libraries,\n defaultContent: context.initialState.content,\n defaultEmitter: context.initialState.emitter ?? config.defaultEmitter,\n defaultCompilerOptions: context.initialState.options,\n defaultSampleName: context.initialState.sampleName,\n },\n [context]\n );\n if (context === undefined || fixedOptions === undefined) {\n return config.fallback;\n }\n\n const options: PlaygroundProps = {\n ...config,\n ...fixedOptions,\n onSave,\n };\n\n return (\n <>\n <Toaster toasterId={toasterId} />\n {options && <Playground {...options} />}\n </>\n );\n};\n\nexport async function createReactPlayground(config: ReactPlaygroundConfig) {\n return <StandalonePlayground {...config} />;\n}\n\nexport async function renderReactPlayground(config: ReactPlaygroundConfig) {\n const app = await createReactPlayground(config);\n\n const root = createRoot(document.getElementById(\"root\")!);\n root.render(\n <FluentProvider theme={webLightTheme} style={{ height: \"100vh\" }}>\n {app}\n </FluentProvider>\n );\n}\n\nexport function createStandalonePlaygroundStateStorage(): UrlStateStorage<PlaygroundSaveData> {\n const stateStorage = createUrlStateStorage<PlaygroundSaveData>({\n content: {\n queryParam: \"c\",\n compress: \"lz-base64\",\n },\n emitter: {\n queryParam: \"e\",\n },\n options: {\n type: \"object\",\n queryParam: \"options\",\n },\n sampleName: {\n queryParam: \"sample\",\n },\n });\n\n return {\n load: stateStorage.load,\n resolveSearchParams: stateStorage.resolveSearchParams,\n save(data: PlaygroundSaveData) {\n stateStorage.save(\n data.sampleName ? { sampleName: data.sampleName, options: data.options } : data\n );\n },\n };\n}\n"],"names":["style","_jsx","_jsxs","_Fragment","useId"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/react/viewers/swagger-ui.tsx","../../../../src/react/viewers/index.tsx"],"sourcesContent":["import { FunctionComponent, Suspense, lazy } from \"react\";\nimport \"swagger-ui-dist/swagger-ui.css\";\nimport style from \"./swagger-ui.module.css\";\n\nexport interface SwaggerUIProps {\n readonly spec: string;\n}\n\nconst LazySwaggerUI = lazy(() => import(\"./react-wrapper.js\"));\n\nexport const SwaggerUI: FunctionComponent<SwaggerUIProps> = (props) => {\n return (\n <Suspense fallback={<div />}>\n <div className={style[\"swagger-ui-container\"]}>\n <LazySwaggerUI spec={props.spec} />\n </div>\n </Suspense>\n );\n};\n","import { FileOutputViewer, ViewerProps } from \"../types.js\";\nimport { SwaggerUI } from \"./swagger-ui.js\";\n\nexport const SwaggerUIViewer: FileOutputViewer = {\n key: \"swaggerUI\",\n label: \"Swagger UI\",\n render: ({ content }: ViewerProps) => <SwaggerUI spec={content} />,\n};\n"],"names":["_jsx"],"mappings":";;;;;;AAQA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,OAAO,iCAAoB,CAAC,CAAC,CAAC;AAExD,MAAM,SAAS,GAAsC,CAAC,KAAK,KAAI;AACpE,IAAA,QACEA,GAAA,CAAC,QAAQ,EAAA,EAAC,QAAQ,EAAEA,GAAO,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EACzBA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAC3CA,GAAC,CAAA,aAAa,EAAC,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,EAAI,CAAA,EAAA,CAC/B,EACG,CAAA,EACX;AACJ,CAAC;;ACfY,MAAA,eAAe,GAAqB;AAC/C,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,MAAM,EAAE,CAAC,EAAE,OAAO,EAAe,KAAKA,GAAA,CAAC,SAAS,EAAA,EAAC,IAAI,EAAE,OAAO,EAAI,CAAA;;;;;"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useRef, useEffect } from 'react';
|
|
3
|
-
import SwaggerUIBundle from 'swagger-ui-dist/swagger-ui-es-bundle.js';
|
|
4
|
-
|
|
5
|
-
var reactWrapper = (props) => {
|
|
6
|
-
const uiRef = useRef(null);
|
|
7
|
-
const uiInstance = useRef(null);
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
if (uiInstance.current === null) {
|
|
10
|
-
uiInstance.current = SwaggerUIBundle({
|
|
11
|
-
domNode: uiRef.current,
|
|
12
|
-
spec: {},
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
uiInstance.current.specActions.updateSpec(props.spec);
|
|
16
|
-
}, [uiRef.current, props.spec]);
|
|
17
|
-
return jsx("div", { ref: uiRef });
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export { reactWrapper as default };
|
|
21
|
-
//# sourceMappingURL=react-wrapper-uSmRU7Jg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-wrapper-uSmRU7Jg.js","sources":["../../src/react/viewers/react-wrapper.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n// File exists but not describe in the @types package\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SwaggerUIBundle from \"swagger-ui-dist/swagger-ui-es-bundle.js\";\n\nexport default (props: { spec: string }) => {\n const uiRef = useRef(null);\n const uiInstance = useRef<any>(null);\n\n useEffect(() => {\n if (uiInstance.current === null) {\n uiInstance.current = SwaggerUIBundle({\n domNode: uiRef.current,\n spec: {},\n });\n }\n uiInstance.current.specActions.updateSpec(props.spec);\n }, [uiRef.current, props.spec]);\n\n return <div ref={uiRef}></div>;\n};\n"],"names":["_jsx"],"mappings":";;;;AAMA,mBAAe,CAAC,KAAuB,KAAI;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/B,YAAA,UAAU,CAAC,OAAO,GAAG,eAAe,CAAC;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,gBAAA,IAAI,EAAE,EAAE;AACT,aAAA,CAAC,CAAC;SACJ;QACD,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvD,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhC,IAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,KAAK,GAAQ,CAAC;AACjC,CAAC;;;;"}
|