@typespec/playground 0.4.0-dev.0 → 0.4.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,12 @@
1
1
  import { createContext, useContext, memo, useCallback, useMemo, useRef, useEffect, useState, useId as useId$1 } from 'react';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import { mergeClasses, Popover, PopoverTrigger, PopoverSurface, Title3, Table, TableHeader, TableRow, TableHeaderCell, TableBody, TableCell, Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Divider, Dialog, DialogTrigger, ToolbarButton, DialogSurface, DialogBody, DialogTitle, DialogContent, Toolbar, Tooltip, Link, TabList, Tab, tokens, useToastController, Toast, ToastTitle, ToastBody, Toaster, FluentProvider, webLightTheme } from '@fluentui/react-components';
3
+ import { mergeClasses, Popover, PopoverTrigger, PopoverSurface, Title3, Table, TableHeader, TableRow, TableHeaderCell, TableBody, TableCell, Select, useId, Label, RadioGroup, Radio, Input, Switch, Checkbox, Divider, Dialog, DialogTrigger, ToolbarButton, DialogSurface, DialogBody, DialogTitle, DialogContent, Toolbar, Tooltip, Link, TabList, Tab, tokens, Button, useToastController, Toast, ToastTitle, ToastBody, Toaster, FluentProvider, webLightTheme } from '@fluentui/react-components';
4
4
  import debounce from 'debounce';
5
5
  import { Uri, editor, MarkerSeverity, KeyMod, KeyCode } from 'monaco-editor';
6
6
  import { CompletionItemTag } from 'vscode-languageserver';
7
7
  import { Settings24Regular, Save16Regular, Broom16Filled, Bug16Regular, FolderListRegular, DataLineRegular, ErrorCircle16Filled, Warning16Filled, ChevronDown16Regular } from '@fluentui/react-icons';
8
8
  import { g as getMonacoRange, a as createUrlStateStorage, c as createBrowserHost, r as registerMonacoLanguage } from '../state-storage-BjOULkS3.js';
9
+ import { ErrorBoundary } from 'react-error-boundary';
9
10
  import { ColorProvider, TypeSpecProgramViewer } from '@typespec/html-program-viewer';
10
11
  import { getSourceLocation } from '@typespec/compiler';
11
12
  import { createRoot } from 'react-dom/client';
@@ -608,12 +609,13 @@ const OutputTabs = ({
608
609
  };
609
610
 
610
611
  const style$5 = {
611
- "output-view": "_output-view_18pnu_1",
612
- "file-viewer": "_file-viewer_18pnu_6",
613
- "output-content": "_output-content_18pnu_12",
614
- "file-viewer-content": "_file-viewer-content_18pnu_16",
615
- "type-graph-viewer": "_type-graph-viewer_18pnu_21",
616
- "viewer-tabs-container": "_viewer-tabs-container_18pnu_26"
612
+ "output-view": "_output-view_omce4_1",
613
+ "file-viewer": "_file-viewer_omce4_6",
614
+ "output-content": "_output-content_omce4_12",
615
+ "file-viewer-content": "_file-viewer-content_omce4_16",
616
+ "type-graph-viewer": "_type-graph-viewer_omce4_21",
617
+ "viewer-tabs-container": "_viewer-tabs-container_omce4_26",
618
+ "viewer-error": "_viewer-error_omce4_30"
617
619
  };
618
620
 
619
621
  const FileViewerComponent = ({
@@ -730,13 +732,13 @@ const OutputViewInternal = ({ compilationResult, viewers, editorOptions }) => {
730
732
  return viewers.programViewers[selected];
731
733
  }, [viewers.programViewers, selected]);
732
734
  return /* @__PURE__ */ jsxs("div", { className: style$5["output-view"], children: [
733
- /* @__PURE__ */ jsx("div", { className: style$5["output-content"], children: /* @__PURE__ */ jsx(
735
+ /* @__PURE__ */ jsx("div", { className: style$5["output-content"], children: /* @__PURE__ */ jsx(ErrorBoundary, { fallbackRender, children: /* @__PURE__ */ jsx(
734
736
  viewer.render,
735
737
  {
736
738
  program: compilationResult.program,
737
739
  outputFiles: compilationResult.outputFiles
738
740
  }
739
- ) }),
741
+ ) }) }),
740
742
  /* @__PURE__ */ jsx("div", { className: style$5["viewer-tabs-container"], children: /* @__PURE__ */ jsx(
741
743
  TabList,
742
744
  {
@@ -752,6 +754,13 @@ const OutputViewInternal = ({ compilationResult, viewers, editorOptions }) => {
752
754
  ) })
753
755
  ] });
754
756
  };
757
+ function fallbackRender({ error, resetErrorBoundary }) {
758
+ return /* @__PURE__ */ jsxs("div", { role: "alert", className: style$5["viewer-error"], children: [
759
+ /* @__PURE__ */ jsx("h2", { children: "Something went wrong:" }),
760
+ /* @__PURE__ */ jsx("div", { style: { color: "red" }, children: error.toString() }),
761
+ /* @__PURE__ */ jsx(Button, { onClick: resetErrorBoundary, children: "Try again" })
762
+ ] });
763
+ }
755
764
 
756
765
  const layout = "_layout_l03ni_1";
757
766
  const style$4 = {
@@ -1 +1 @@
1
- {"version":3,"file":"output-view.d.ts","sourceRoot":"","sources":["../../../../src/react/output-view/output-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAiB,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMpG,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAoBzD,CAAC"}
1
+ {"version":3,"file":"output-view.d.ts","sourceRoot":"","sources":["../../../../src/react/output-view/output-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAiB,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMpG,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAoBzD,CAAC"}
package/dist/style.css CHANGED
@@ -80,34 +80,38 @@
80
80
  ._tab--selected_1x6x2_18 {
81
81
  background-color: var(--colorNeutralBackground5) !important;
82
82
  }
83
- ._output-view_18pnu_1 {
83
+ ._output-view_omce4_1 {
84
84
  display: flex;
85
85
  flex-direction: row;
86
86
  height: 100%;
87
87
  }
88
- ._file-viewer_18pnu_6 {
88
+ ._file-viewer_omce4_6 {
89
89
  display: flex;
90
90
  flex-direction: column;
91
91
  height: 100%;
92
92
  }
93
93
 
94
- ._output-content_18pnu_12 {
94
+ ._output-content_omce4_12 {
95
95
  flex: 1;
96
96
  min-width: 0;
97
97
  }
98
- ._file-viewer-content_18pnu_16 {
98
+ ._file-viewer-content_omce4_16 {
99
99
  flex: 1;
100
100
  min-height: 0;
101
101
  }
102
102
 
103
- ._type-graph-viewer_18pnu_21 {
103
+ ._type-graph-viewer_omce4_21 {
104
104
  height: 100%;
105
105
  overflow-y: auto;
106
106
  }
107
107
 
108
- ._viewer-tabs-container_18pnu_26 {
108
+ ._viewer-tabs-container_omce4_26 {
109
109
  background-color: var(--colorNeutralBackground3);
110
110
  }
111
+
112
+ ._viewer-error_omce4_30 {
113
+ padding: 20px;
114
+ }
111
115
  ._layout_l03ni_1 {
112
116
  display: flex;
113
117
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.4.0-dev.0",
3
+ "version": "0.4.0-dev.1",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://typespec.io",
@@ -72,6 +72,7 @@
72
72
  "monaco-editor": "~0.46.0",
73
73
  "react": "~18.3.1",
74
74
  "react-dom": "~18.3.1",
75
+ "react-error-boundary": "^4.0.13",
75
76
  "swagger-ui-dist": "^5.17.10",
76
77
  "vscode-languageserver": "~9.0.1",
77
78
  "vscode-languageserver-textdocument": "~1.0.11"