@typespec/playground 0.15.1-dev.1 → 0.15.1-dev.3

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/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { i as createBrowserHost, n as registerMonacoLanguage } from "./services-CtYDGH-a.js";
1
+ import { i as createBrowserHost, n as registerMonacoLanguage } from "./services-okAeHMZK.js";
2
2
  import { createUrlStateStorage } from "./state-storage.js";
3
3
  //#region src/monaco-worker.ts
4
4
  function registerMonacoDefaultWorkersForVite() {
@@ -1,8 +1,7 @@
1
- import { a as resolveVirtualPath, i as createBrowserHost, n as registerMonacoLanguage, o as debugGlobals, r as updateDiagnosticsForCodeFixes, s as printDebugInfo, t as getMonacoRange } from "../services-CtYDGH-a.js";
1
+ import { a as resolveVirtualPath, i as createBrowserHost, n as registerMonacoLanguage, o as debugGlobals, r as updateDiagnosticsForCodeFixes, s as printDebugInfo, t as getMonacoRange } from "../services-okAeHMZK.js";
2
2
  import { createUrlStateStorage } from "../state-storage.js";
3
3
  import { getSourceLocation } from "@typespec/compiler";
4
- import { KeyCode, KeyMod, MarkerSeverity, Range, Uri, editor } from "monaco-editor";
5
- import { CompletionItemTag } from "vscode-languageserver";
4
+ import { KeyCode, KeyMod, MarkerSeverity, MarkerTag, Range, Uri, editor } from "monaco-editor";
6
5
  import { Fragment, createContext, memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
7
6
  import { Button, Card, Checkbox, DrawerBody, DrawerHeader, DrawerHeaderTitle, FluentProvider, Input, Label, Menu, MenuDivider, MenuItem, MenuList, MenuPopover, MenuTrigger, OverlayDrawer, Popover, PopoverSurface, PopoverTrigger, Radio, RadioGroup, SearchBox, Select, Spinner, Subtitle2, Switch, Tab, TabList, Table, TableBody, TableCell, TableHeader, TableHeaderCell, TableRow, Text, Title3, Toast, ToastBody, ToastTitle, Toaster, Toolbar, ToolbarButton, Tooltip, mergeClasses, tokens, useId as useId$1, useToastController, webLightTheme } from "@fluentui/react-components";
8
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -961,7 +960,7 @@ var SampleIcon = ({ name }) => {
961
960
  opacity: .12
962
961
  });
963
962
  case "hexagon": return /* @__PURE__ */ jsx("polygon", {
964
- points: `${half},4 ${size - 6},${half / 2 + 4} ${size - 6},${size - half / 2 - 4} ${half},${size - 4} 6,${size - half / 2 - 4} 6,${half / 2 + 4}`,
963
+ points: `${half},4 ${size - 6},16 ${size - 6},${size - half / 2 - 4} ${half},${size - 4} 6,${size - half / 2 - 4} 6,16`,
965
964
  fill: colors.fg,
966
965
  opacity: .12
967
966
  });
@@ -2565,20 +2564,32 @@ var Playground = (props) => {
2565
2564
  lastSuccessfulOutputRef.current = [];
2566
2565
  setIsOutputStale(false);
2567
2566
  }, [selectedEmitter]);
2567
+ const isModelDrivenChangeRef = useRef(false);
2568
2568
  useEffect(() => {
2569
+ if (isModelDrivenChangeRef.current) {
2570
+ isModelDrivenChangeRef.current = false;
2571
+ return;
2572
+ }
2569
2573
  if (typespecModel.getValue() !== (content ?? "")) typespecModel.setValue(content ?? "");
2570
2574
  }, [content, typespecModel]);
2575
+ const contentRef = useRef(content);
2576
+ const onContentChangeRef = useRef(onContentChange);
2577
+ useEffect(() => {
2578
+ contentRef.current = content;
2579
+ }, [content]);
2580
+ useEffect(() => {
2581
+ onContentChangeRef.current = onContentChange;
2582
+ }, [onContentChange]);
2571
2583
  useEffect(() => {
2572
2584
  const disposable = typespecModel.onDidChangeContent(() => {
2573
2585
  const newContent = typespecModel.getValue();
2574
- if (newContent !== content) onContentChange(newContent);
2586
+ if (newContent !== contentRef.current) {
2587
+ isModelDrivenChangeRef.current = true;
2588
+ onContentChangeRef.current(newContent);
2589
+ }
2575
2590
  });
2576
2591
  return () => disposable.dispose();
2577
- }, [
2578
- typespecModel,
2579
- content,
2580
- onContentChange
2581
- ]);
2592
+ }, [typespecModel]);
2582
2593
  const isSampleUntouched = useMemo(() => {
2583
2594
  return Boolean(selectedSampleName && content === props.samples?.[selectedSampleName]?.content);
2584
2595
  }, [
@@ -2632,7 +2643,7 @@ var Playground = (props) => {
2632
2643
  ...getMonacoRange(typespecCompiler, diag.target),
2633
2644
  message: diag.message,
2634
2645
  severity: diag.severity === "error" ? MarkerSeverity.Error : MarkerSeverity.Warning,
2635
- tags: diag.code === "deprecated" ? [CompletionItemTag.Deprecated] : void 0
2646
+ tags: diag.code === "deprecated" ? [MarkerTag.Deprecated] : void 0
2636
2647
  }));
2637
2648
  updateDiagnosticsForCodeFixes(typespecCompiler, state.program.diagnostics);
2638
2649
  debugGlobals().program = state.program;
@@ -2673,7 +2684,7 @@ var Playground = (props) => {
2673
2684
  }, [doCompile]);
2674
2685
  const saveCode = useCallback(() => {
2675
2686
  if (onSave) onSave({
2676
- content: content ?? "",
2687
+ content: typespecModel.getValue(),
2677
2688
  emitter: selectedEmitter,
2678
2689
  compilerOptions,
2679
2690
  sampleName: isSampleUntouched ? selectedSampleName : void 0,
@@ -2681,7 +2692,7 @@ var Playground = (props) => {
2681
2692
  viewerState
2682
2693
  });
2683
2694
  }, [
2684
- content,
2695
+ typespecModel,
2685
2696
  onSave,
2686
2697
  selectedEmitter,
2687
2698
  compilerOptions,
@@ -5,7 +5,7 @@ import "swagger-ui-dist/swagger-ui.css";
5
5
  var swagger_ui_module_default = { "swagger-ui-container": "_swagger-ui-container_1c81n_1" };
6
6
  //#endregion
7
7
  //#region src/react/viewers/swagger-ui.tsx
8
- var LazySwaggerUI = lazy(() => import("../../react-wrapper-B-poU4Lv.js"));
8
+ var LazySwaggerUI = lazy(() => import("../../react-wrapper-D1icSVtJ.js"));
9
9
  var SwaggerUI = (props) => {
10
10
  return /* @__PURE__ */ jsx(Suspense, {
11
11
  fallback: /* @__PURE__ */ jsx("div", {}),
@@ -394,7 +394,20 @@ async function registerMonacoLanguage(host) {
394
394
  const model = monaco.editor.getModel(monaco.Uri.parse(url));
395
395
  return model ? MonacoToLsp.textDocumentForModel(model) : void 0;
396
396
  },
397
- sendDiagnostics() {},
397
+ sendDiagnostics({ uri, diagnostics }) {
398
+ const model = monaco.editor.getModel(monaco.Uri.parse(uri));
399
+ if (!model) return;
400
+ const taggedMarkers = diagnostics.filter((d) => d.tags !== void 0 && d.tags.length > 0).map((d) => ({
401
+ severity: monaco.MarkerSeverity.Hint,
402
+ message: d.message,
403
+ startLineNumber: d.range.start.line + 1,
404
+ startColumn: d.range.start.character + 1,
405
+ endLineNumber: d.range.end.line + 1,
406
+ endColumn: d.range.end.character + 1,
407
+ tags: d.tags?.map((t) => t)
408
+ }));
409
+ monaco.editor.setModelMarkers(model, "lsp-tags", taggedMarkers);
410
+ },
398
411
  log: (log) => {
399
412
  switch (log.level) {
400
413
  case "error":
@@ -1 +1 @@
1
- {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAGA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAoB,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpF,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIrF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE3C,oCAAoC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,eAAe,CAAC;IACzC,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAE3D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,kDAAkD;IAClD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEpD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAE1D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAoWzD,CAAC"}
1
+ {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"AAGA,OAAO,sCAAsC,CAAC;AAG9C,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAoB,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpF,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIrF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE3C,oCAAoC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,eAAe,CAAC;IACzC,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAE3D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,kDAAkD;IAClD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEpD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAE1D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAE7C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,CA0XzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,cAAc,oBAAoB,CAAC,EAC7C,WAAW,EAAE,SAAS,UAAU,EAAE,QAInC;AAmCD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,WAAW,iBA4X7D;AAED,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,cAAc,oBAAoB,CAAC,EACrD,MAAM,EAAE,gBAAgB,GAAG,OAAO,QAAQ,GACzC,MAAM,CAAC,MAAM,CAkBf"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,cAAc,oBAAoB,CAAC,EAC7C,WAAW,EAAE,SAAS,UAAU,EAAE,QAInC;AAmCD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,WAAW,iBAgZ7D;AAED,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,cAAc,oBAAoB,CAAC,EACrD,MAAM,EAAE,gBAAgB,GAAG,OAAO,QAAQ,GACzC,MAAM,CAAC,MAAM,CAkBf"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../vite.config.ts"],"names":[],"mappings":";AAwBA,wBAuCG"}
1
+ {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../vite.config.ts"],"names":[],"mappings":";AAwBA,wBAqCG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/playground",
3
- "version": "0.15.1-dev.1",
3
+ "version": "0.15.1-dev.3",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec playground UI components.",
6
6
  "homepage": "https://typespec.io",
@@ -62,11 +62,11 @@
62
62
  "@fluentui/react-components": "^9.73.7",
63
63
  "@fluentui/react-icons": "^2.0.323",
64
64
  "@typespec/bundler": "^0.6.0 || >= 0.6.1-dev.0",
65
- "@typespec/compiler": "^1.12.0 || >= 1.13.0-dev.4",
66
- "@typespec/html-program-viewer": "^0.82.0 || >= 0.83.0-dev.1",
65
+ "@typespec/compiler": "^1.12.0 || >= 1.13.0-dev.10",
66
+ "@typespec/html-program-viewer": "^0.82.0 || >= 0.83.0-dev.2",
67
67
  "@typespec/http": "^1.12.0 || >= 1.13.0-dev.0",
68
- "@typespec/openapi": "^1.12.0 || >= 1.13.0-dev.0",
69
- "@typespec/openapi3": "^1.12.0 || >= 1.13.0-dev.2",
68
+ "@typespec/openapi": "^1.12.0 || >= 1.13.0-dev.3",
69
+ "@typespec/openapi3": "^1.12.0 || >= 1.13.0-dev.6",
70
70
  "@typespec/protobuf": "^0.82.0 || >= 0.83.0-dev.0",
71
71
  "@typespec/rest": "^0.82.0 || >= 0.83.0-dev.0",
72
72
  "@typespec/versioning": "^0.82.0 || >= 0.83.0-dev.0",
@@ -84,7 +84,7 @@
84
84
  },
85
85
  "devDependencies": {
86
86
  "@babel/core": "^7.29.0",
87
- "@playwright/test": "^1.59.1",
87
+ "@playwright/test": "^1.60.0",
88
88
  "@storybook/cli": "^10.3.5",
89
89
  "@storybook/react-vite": "^10.3.5",
90
90
  "@testing-library/dom": "^10.4.1",
@@ -103,8 +103,8 @@
103
103
  "storybook": "^10.3.5",
104
104
  "typescript": "~6.0.2",
105
105
  "vite": "^8.0.8",
106
- "vite-plugin-checker": "^0.12.0",
107
- "vite-plugin-dts": "4.5.4",
106
+ "vite-plugin-checker": "^0.14.1",
107
+ "vite-plugin-dts": "5.0.1",
108
108
  "vitest": "^4.1.3",
109
109
  "@typespec/react-components": "^0.57.0"
110
110
  },