@typespec/playground 0.1.0-alpha.3-dev.8 → 0.1.0-alpha.3-dev.10

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.
Files changed (94) hide show
  1. package/README.md +3 -1
  2. package/dist/index.css +58 -0
  3. package/dist/index.js +7 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/react/index.js +853 -0
  6. package/dist/react/index.js.map +1 -0
  7. package/dist/react/viewers.js +29 -0
  8. package/dist/react/viewers.js.map +1 -0
  9. package/dist/src/react/playground.d.ts +0 -1
  10. package/dist/src/react/playground.d.ts.map +1 -1
  11. package/dist/src/react/standalone.d.ts +1 -1
  12. package/dist/src/react/standalone.d.ts.map +1 -1
  13. package/dist/src/react/viewers.d.ts +1 -0
  14. package/dist/src/react/viewers.d.ts.map +1 -1
  15. package/dist/{src/services.js → state-storage-ad8a9d39.js} +277 -8
  16. package/dist/state-storage-ad8a9d39.js.map +1 -0
  17. package/dist/{src/vite → vite}/index.js +8 -5
  18. package/dist/vite/index.js.map +1 -0
  19. package/package.json +34 -10
  20. package/dist/src/browser-host.js +0 -134
  21. package/dist/src/browser-host.js.map +0 -1
  22. package/dist/src/core.js +0 -23
  23. package/dist/src/core.js.map +0 -1
  24. package/dist/src/index.js +0 -5
  25. package/dist/src/index.js.map +0 -1
  26. package/dist/src/manifest.js +0 -3
  27. package/dist/src/manifest.js.map +0 -1
  28. package/dist/src/monaco-worker.js +0 -30
  29. package/dist/src/monaco-worker.js.map +0 -1
  30. package/dist/src/react/diagnostic-list.js +0 -16
  31. package/dist/src/react/diagnostic-list.js.map +0 -1
  32. package/dist/src/react/editor-command-bar.js +0 -15
  33. package/dist/src/react/editor-command-bar.js.map +0 -1
  34. package/dist/src/react/editor.js +0 -37
  35. package/dist/src/react/editor.js.map +0 -1
  36. package/dist/src/react/emitter-dropdown.js +0 -13
  37. package/dist/src/react/emitter-dropdown.js.map +0 -1
  38. package/dist/src/react/error-tab.js +0 -20
  39. package/dist/src/react/error-tab.js.map +0 -1
  40. package/dist/src/react/file-output.js +0 -31
  41. package/dist/src/react/file-output.js.map +0 -1
  42. package/dist/src/react/footer.js +0 -29
  43. package/dist/src/react/footer.js.map +0 -1
  44. package/dist/src/react/hooks.js +0 -50
  45. package/dist/src/react/hooks.js.map +0 -1
  46. package/dist/src/react/index.js +0 -4
  47. package/dist/src/react/index.js.map +0 -1
  48. package/dist/src/react/output-tabs.js +0 -38
  49. package/dist/src/react/output-tabs.js.map +0 -1
  50. package/dist/src/react/output-view.js +0 -98
  51. package/dist/src/react/output-view.js.map +0 -1
  52. package/dist/src/react/playground.js +0 -180
  53. package/dist/src/react/playground.js.map +0 -1
  54. package/dist/src/react/samples-dropdown.js +0 -15
  55. package/dist/src/react/samples-dropdown.js.map +0 -1
  56. package/dist/src/react/settings/compiler-settings.js +0 -42
  57. package/dist/src/react/settings/compiler-settings.js.map +0 -1
  58. package/dist/src/react/settings/emitter-options-form.js +0 -39
  59. package/dist/src/react/settings/emitter-options-form.js.map +0 -1
  60. package/dist/src/react/settings/linter-form.js +0 -33
  61. package/dist/src/react/settings/linter-form.js.map +0 -1
  62. package/dist/src/react/split-pane/index.js +0 -2
  63. package/dist/src/react/split-pane/index.js.map +0 -1
  64. package/dist/src/react/split-pane/pane.js +0 -5
  65. package/dist/src/react/split-pane/pane.js.map +0 -1
  66. package/dist/src/react/split-pane/sash-content.js +0 -7
  67. package/dist/src/react/split-pane/sash-content.js.map +0 -1
  68. package/dist/src/react/split-pane/sash.js +0 -23
  69. package/dist/src/react/split-pane/sash.js.map +0 -1
  70. package/dist/src/react/split-pane/split-pane.js +0 -138
  71. package/dist/src/react/split-pane/split-pane.js.map +0 -1
  72. package/dist/src/react/split-pane/split-pane.module.css +0 -58
  73. package/dist/src/react/standalone.js +0 -63
  74. package/dist/src/react/standalone.js.map +0 -1
  75. package/dist/src/react/swagger-ui.js +0 -19
  76. package/dist/src/react/swagger-ui.js.map +0 -1
  77. package/dist/src/react/types.js +0 -2
  78. package/dist/src/react/types.js.map +0 -1
  79. package/dist/src/react/typespec-editor.js +0 -30
  80. package/dist/src/react/typespec-editor.js.map +0 -1
  81. package/dist/src/react/viewers.js +0 -8
  82. package/dist/src/react/viewers.js.map +0 -1
  83. package/dist/src/services.js.map +0 -1
  84. package/dist/src/state-storage.js +0 -81
  85. package/dist/src/state-storage.js.map +0 -1
  86. package/dist/src/types.js +0 -2
  87. package/dist/src/types.js.map +0 -1
  88. package/dist/src/vite/index.js.map +0 -1
  89. package/dist/src/vite/types.js +0 -2
  90. package/dist/src/vite/types.js.map +0 -1
  91. package/dist/vite.config.d.ts +0 -3
  92. package/dist/vite.config.d.ts.map +0 -1
  93. package/dist/vite.config.js +0 -38
  94. package/dist/vite.config.js.map +0 -1
@@ -1,31 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { css } from "@emotion/react";
3
- import { Select } from "@fluentui/react-components";
4
- import { useCallback, useMemo, useState } from "react";
5
- /**
6
- * Display a file output using different viewers.
7
- */
8
- export const FileOutput = ({ filename, content, viewers }) => {
9
- if (viewers.length === 0) {
10
- return _jsx(_Fragment, { children: "No viewers" });
11
- }
12
- else if (viewers.length === 1) {
13
- return viewers[0].render({ filename, content });
14
- }
15
- const [selected, setSelected] = useState(viewers[0].key);
16
- const handleSelected = useCallback((_, data) => {
17
- setSelected(data.value);
18
- }, [selected]);
19
- const selectedRender = useMemo(() => {
20
- var _a;
21
- return (_a = viewers.find((x) => x.key === selected)) === null || _a === void 0 ? void 0 : _a.render;
22
- }, [selected, viewers]);
23
- return (_jsxs("div", { css: { width: "100%", height: "100%", overflow: "hidden" }, children: [_jsx(Select, { value: selected, onChange: handleSelected, css: DropdownStyle, children: viewers.map(({ key, label }) => (_jsx("option", { value: key, children: label }, key))) }), selectedRender && selectedRender({ filename, content })] }));
24
- };
25
- const DropdownStyle = css({
26
- margin: "0.5rem 1.5rem",
27
- position: "absolute",
28
- "z-index": 1,
29
- right: 0,
30
- });
31
- //# sourceMappingURL=file-output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-output.js","sourceRoot":"","sources":["../../../src/react/file-output.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAsB,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAqB,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAS1E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAuC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,2CAAe,CAAC;KACxB;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;KACjD;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,CAAU,EAAE,IAAwB,EAAE,EAAE;QACvC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;;QAClC,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,0CAAE,MAAM,CAAC;IACzD,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxB,OAAO,CACL,eAAK,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAC7D,KAAC,MAAM,IAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,YAClE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC/B,iBAAkB,KAAK,EAAE,GAAG,YACzB,KAAK,IADK,GAAG,CAEP,CACV,CAAC,GACK,EAER,cAAc,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,IACpD,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,CAAC;IACxB,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;CACT,CAAC,CAAC"}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/react/jsx-runtime";
2
- import { css } from "@emotion/react";
3
- import { MANIFEST } from "@typespec/compiler";
4
- export const Footer = () => {
5
- const prItem = MANIFEST.pr ? (_jsxs(FooterItem, { link: `https://github.com/microsoft/typespec/pull/${MANIFEST.pr}`, children: [_jsx("span", { children: "PR " }), _jsx("span", { children: MANIFEST.pr })] })) : (_jsx(_Fragment, {}));
6
- return (_jsxs("div", { css: [
7
- {
8
- gridArea: "footer",
9
- gridRow: "3",
10
- backgroundColor: "#007acc",
11
- display: "flex",
12
- fontSize: "14px",
13
- },
14
- MANIFEST.pr ? { backgroundColor: "#ce662a" } : {},
15
- ], children: [prItem, _jsxs(FooterItem, { children: [_jsx("span", { children: "TypeSpec Version " }), _jsx("span", { children: MANIFEST.version })] }), _jsxs(FooterItem, { link: `https://github.com/microsoft/typespec/commit/${MANIFEST.commit}`, children: [_jsx("span", { children: "Commit " }), _jsx("span", { children: MANIFEST.commit.slice(0, 6) })] })] }));
16
- };
17
- const FooterItem = ({ children, link }) => {
18
- return link ? (_jsx("a", { css: FooterItemStyles, href: link, target: "_blank", children: children })) : (_jsx("div", { css: FooterItemStyles, children: children }));
19
- };
20
- const FooterItemStyles = css({
21
- textDecoration: "none",
22
- color: "#fefefe",
23
- borderRight: "1px solid #d5d5d5",
24
- padding: "0 5px",
25
- "&:hover": {
26
- backgroundColor: "#063a5c",
27
- },
28
- });
29
- //# sourceMappingURL=footer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../src/react/footer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,CAAC,MAAM,MAAM,GAAsB,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAC3B,MAAC,UAAU,IAAC,IAAI,EAAE,8CAA8C,QAAQ,CAAC,EAAE,EAAE,aAC3E,iCAAgB,EAChB,yBAAO,QAAQ,CAAC,EAAE,GAAQ,IACf,CACd,CAAC,CAAC,CAAC,CACF,mBAAK,CACN,CAAC;IACF,OAAO,CACL,eACE,GAAG,EAAE;YACH;gBACE,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,GAAG;gBACZ,eAAe,EAAE,SAAS;gBAC1B,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,MAAM;aACjB;YACD,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;SAClD,aAEA,MAAM,EACP,MAAC,UAAU,eACT,+CAA8B,EAC9B,yBAAO,QAAQ,CAAC,OAAO,GAAQ,IACpB,EACb,MAAC,UAAU,IAAC,IAAI,EAAE,gDAAgD,QAAQ,CAAC,MAAM,EAAE,aACjF,qCAAoB,EACpB,yBAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAQ,IAC/B,IACT,CACP,CAAC;AACJ,CAAC,CAAC;AAKF,MAAM,UAAU,GAA0D,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;IAC/F,OAAO,IAAI,CAAC,CAAC,CAAC,CACZ,YAAG,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,YAClD,QAAQ,GACP,CACL,CAAC,CAAC,CAAC,CACF,cAAK,GAAG,EAAE,gBAAgB,YAAG,QAAQ,GAAO,CAC7C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,CAAC;IAC3B,cAAc,EAAE,MAAM;IACtB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE;QACT,eAAe,EAAE,SAAS;KAC3B;CACF,CAAC,CAAC"}
@@ -1,50 +0,0 @@
1
- import { useEffect, useMemo, useRef, useState } from "react";
2
- /**
3
- * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or
4
- * text box string.
5
- * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,
6
- * and the internal state will be updated to reflect it.
7
- * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.
8
- * @returns An array of the current value and an updater callback. Like `React.useState`, the updater
9
- * callback always has the same identity, and it can take either a new value, or a function which
10
- * is passed the previous value and returns the new value.
11
- * @see https://reactjs.org/docs/uncontrolled-components.html
12
- */
13
- export function useControllableValue(controlledValue, defaultUncontrolledValue, onChange) {
14
- const [value, setValue] = useState(defaultUncontrolledValue);
15
- const isControlled = useMemo(() => controlledValue !== undefined, []);
16
- const currentValue = isControlled ? controlledValue : value;
17
- // Duplicate the current value and onChange in refs so they're accessible from
18
- // setValueOrCallOnChange without creating a new callback every time
19
- const valueRef = useRef(currentValue);
20
- const onChangeRef = useRef(onChange);
21
- useEffect(() => {
22
- valueRef.current = currentValue;
23
- onChangeRef.current = onChange;
24
- });
25
- // To match the behavior of the setter returned by React.useState, this callback's identity
26
- // should never change. This means it MUST NOT directly reference variables that can change.
27
- const setValueOrCallOnChange = useMemo(() => (update) => {
28
- // Assuming here that TValue is not a function, because a controllable value will typically
29
- // be something a user can enter as input
30
- const newValue = typeof update === "function" ? update(valueRef.current) : update;
31
- if (onChangeRef.current) {
32
- onChangeRef.current(newValue);
33
- }
34
- if (!isControlled) {
35
- setValue(newValue);
36
- }
37
- }, []);
38
- return [currentValue, setValueOrCallOnChange];
39
- }
40
- export function useAsyncMemo(callback, defaultValue, deps) {
41
- const [value, setValue] = useState(defaultValue);
42
- useEffect(() => {
43
- callback()
44
- .then(setValue)
45
- // eslint-disable-next-line no-console
46
- .catch(() => console.error("Failed to load async memo"));
47
- }, deps);
48
- return value;
49
- }
50
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/react/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAmC,EACnC,wBAA4C,EAC5C,QAA8C;IAE9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,wBAAwB,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,KAAK,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;IAE5D,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;QAChC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,2FAA2F;IAC3F,4FAA4F;IAC5F,MAAM,sBAAsB,GAAG,OAAO,CACpC,GAAG,EAAE,CAAC,CAAC,MAAgD,EAAE,EAAE;QACzD,2FAA2F;QAC3F,yCAAyC;QACzC,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAE,MAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAE3F,IAAI,WAAW,CAAC,OAAO,EAAE;YACvB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,YAAY,EAAE;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACpB;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE,sBAAsB,CAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAA0B,EAC1B,YAAe,EACf,IAA2B;IAE3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,EAAE;aACP,IAAI,CAAC,QAAQ,CAAC;YACf,sCAAsC;aACrC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7D,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,4 +0,0 @@
1
- export { Playground } from "./playground.js";
2
- export { createReactPlayground, renderReactPlayground } from "./standalone.js";
3
- export * from "./types.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,cAAc,YAAY,CAAC"}
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- export const OutputTabs = ({ tabs, selected, onSelect }) => {
3
- const [leftTabs, rightTabs] = chunk(tabs, (x) => x.align === "left");
4
- return (_jsxs("div", { css: { display: "flex", borderBottom: "1px solid #c5c5c5" }, children: [leftTabs.map((tab) => {
5
- return (_jsx(OutputTab, { tab: tab, selected: selected === tab.id, onSelect: onSelect }, tab.id));
6
- }), _jsx("span", { css: { flex: 1, borderRight: "1px solid #ccc" } }), rightTabs.map((tab) => {
7
- return (_jsx(OutputTab, { tab: tab, selected: selected === tab.id, onSelect: onSelect }, tab.id));
8
- })] }));
9
- };
10
- export const OutputTab = ({ tab, selected, onSelect }) => {
11
- return (_jsx("a", { css: [
12
- {
13
- height: "26px",
14
- padding: "0 5px",
15
- borderRight: "1px solid #ccc",
16
- borderTop: "none",
17
- borderBottom: "none",
18
- color: "#000",
19
- textDecoration: "none",
20
- cursor: "pointer",
21
- },
22
- selected ? { fontWeight: "bold", backgroundColor: "#eee" } : {},
23
- ], onClick: () => onSelect(tab.id), children: tab.name }));
24
- };
25
- function chunk(items, condition) {
26
- const match = [];
27
- const unMatch = [];
28
- for (const item of items) {
29
- if (condition(item)) {
30
- match.push(item);
31
- }
32
- else {
33
- unMatch.push(item);
34
- }
35
- }
36
- return [match, unMatch];
37
- }
38
- //# sourceMappingURL=output-tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-tabs.js","sourceRoot":"","sources":["../../../src/react/output-tabs.tsx"],"names":[],"mappings":";AAaA,MAAM,CAAC,MAAM,UAAU,GAAuC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7F,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACrE,OAAO,CACL,eAAK,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAC7D,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpB,OAAO,CACL,KAAC,SAAS,IAAc,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAnE,GAAG,CAAC,EAAE,CAAiE,CACxF,CAAC;YACJ,CAAC,CAAC,EACF,eAAM,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAS,EAC7D,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrB,OAAO,CACL,KAAC,SAAS,IAAc,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAnE,GAAG,CAAC,EAAE,CAAiE,CACxF,CAAC;YACJ,CAAC,CAAC,IACE,CACP,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,SAAS,GAAsC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1F,OAAO,CACL,YACE,GAAG,EAAE;YACH;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,gBAAgB;gBAC7B,SAAS,EAAE,MAAM;gBACjB,YAAY,EAAE,MAAM;gBACpB,KAAK,EAAE,MAAM;gBACb,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;aAClB;YACD,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;SAChE,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,YAE9B,GAAG,CAAC,IAAI,GACP,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,KAAK,CAAI,KAAU,EAAE,SAA+B;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;KACF;IACD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,98 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { css } from "@emotion/react";
3
- import { TypeSpecProgramViewer } from "@typespec/html-program-viewer";
4
- import { useCallback, useEffect, useMemo, useState } from "react";
5
- import { ErrorTab, InternalCompilerError } from "./error-tab.js";
6
- import { FileOutput } from "./file-output.js";
7
- import { OutputTabs } from "./output-tabs.js";
8
- import { OutputEditor } from "./typespec-editor.js";
9
- export const OutputView = ({ compilationState, viewers }) => {
10
- if (compilationState === undefined) {
11
- return _jsx(_Fragment, {});
12
- }
13
- if ("internalCompilerError" in compilationState) {
14
- return _jsx(InternalCompilerError, { error: compilationState.internalCompilerError });
15
- }
16
- return _jsx(OutputViewInternal, { compilationResult: compilationState, viewers: viewers });
17
- };
18
- const OutputViewInternal = ({ compilationResult, viewers }) => {
19
- const { program, outputFiles } = compilationResult;
20
- const [viewSelection, setViewSelection] = useState({
21
- type: "file",
22
- filename: "",
23
- content: "",
24
- });
25
- useEffect(() => {
26
- if (viewSelection.type === "file") {
27
- if (outputFiles.length > 0) {
28
- const fileStillThere = outputFiles.find((x) => x === viewSelection.filename);
29
- void loadOutputFile(fileStillThere !== null && fileStillThere !== void 0 ? fileStillThere : outputFiles[0]);
30
- }
31
- else {
32
- setViewSelection({ type: "file", filename: viewSelection.filename, content: "" });
33
- }
34
- }
35
- }, [program, outputFiles]);
36
- async function loadOutputFile(path) {
37
- const contents = await program.host.readFile("./tsp-output/" + path);
38
- setViewSelection({ type: "file", filename: path, content: contents.text });
39
- }
40
- const diagnostics = program.diagnostics;
41
- const tabs = useMemo(() => {
42
- return [
43
- ...outputFiles.map((x) => ({
44
- align: "left",
45
- name: x,
46
- id: x,
47
- })),
48
- { id: "type-graph", name: "Type Graph", align: "right" },
49
- {
50
- id: "errors",
51
- name: _jsx(ErrorTabLabel, { diagnostics: diagnostics }),
52
- align: "right",
53
- },
54
- ];
55
- }, [outputFiles, diagnostics]);
56
- const handleTabSelection = useCallback((tabId) => {
57
- if (tabId === "type-graph") {
58
- setViewSelection({ type: "type-graph" });
59
- }
60
- else if (tabId === "errors") {
61
- setViewSelection({ type: "errors" });
62
- }
63
- else {
64
- void loadOutputFile(tabId);
65
- }
66
- }, []);
67
- return (_jsxs(_Fragment, { children: [_jsx(OutputTabs, { tabs: tabs, selected: viewSelection.type === "file" ? viewSelection.filename : viewSelection.type, onSelect: handleTabSelection }), _jsx("div", { className: "output-content", css: { width: "100%", height: "100%", overflow: "hidden" }, children: _jsx(OutputContent, { viewSelection: viewSelection, program: program, viewers: viewers }) })] }));
68
- };
69
- const rawFileViewer = {
70
- key: "raw",
71
- label: "File",
72
- render: ({ filename, content }) => (_jsx(OutputEditor, { filename: filename, value: content })),
73
- };
74
- const OutputContent = ({ viewSelection, program, viewers, }) => {
75
- const resolvedViewers = useMemo(() => [rawFileViewer, ...(viewers !== null && viewers !== void 0 ? viewers : [])], [viewers]);
76
- switch (viewSelection.type) {
77
- case "file":
78
- return (_jsx(FileOutput, { filename: viewSelection.filename, content: viewSelection.content, viewers: resolvedViewers }));
79
- case "errors":
80
- return _jsx(ErrorTab, { diagnostics: program === null || program === void 0 ? void 0 : program.diagnostics });
81
- default:
82
- return (_jsx("div", { css: {
83
- height: "100%",
84
- overflow: "scroll",
85
- }, children: program && _jsx(TypeSpecProgramViewer, { program: program }) }));
86
- }
87
- };
88
- const ErrorTabLabel = ({ diagnostics }) => {
89
- const errorCount = diagnostics ? diagnostics.length : 0;
90
- return (_jsxs("div", { children: ["Errors ", errorCount > 0 ? _jsx("span", { css: ErrorTabCountStyles, children: errorCount }) : ""] }));
91
- };
92
- const ErrorTabCountStyles = css({
93
- backgroundColor: "#cc2222",
94
- color: "#f5f5f5",
95
- padding: "0 5px",
96
- borderRadius: "20px",
97
- });
98
- //# sourceMappingURL=output-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-view.js","sourceRoot":"","sources":["../../../src/react/output-view.tsx"],"names":[],"mappings":"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"}
@@ -1,180 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import debounce from "debounce";
3
- import { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from "monaco-editor";
4
- import { useCallback, useEffect, useMemo, useState } from "react";
5
- import "swagger-ui-react/swagger-ui.css";
6
- import { CompletionItemTag } from "vscode-languageserver";
7
- import { getMarkerLocation } from "../services.js";
8
- import { EditorCommandBar } from "./editor-command-bar.js";
9
- import { useMonacoModel } from "./editor.js";
10
- import { Footer } from "./footer.js";
11
- import { useControllableValue } from "./hooks.js";
12
- import { OutputView } from "./output-view.js";
13
- import Pane from "./split-pane/pane.js";
14
- import { SplitPane } from "./split-pane/split-pane.js";
15
- import { TypeSpecEditor } from "./typespec-editor.js";
16
- export const Playground = (props) => {
17
- var _a, _b, _c, _d;
18
- const { host, onSave } = props;
19
- const [selectedEmitter, onSelectedEmitterChange] = useControllableValue(props.emitter, props.defaultEmitter, props.onEmitterChange);
20
- const [compilerOptions, onCompilerOptionsChange] = useControllableValue(props.compilerOptions, (_a = props.defaultCompilerOptions) !== null && _a !== void 0 ? _a : {}, props.onCompilerOptionsChange);
21
- const [selectedSampleName, onSelectedSampleNameChange] = useControllableValue(props.sampleName, props.defaultSampleName, props.onSampleNameChange);
22
- const [content, setContent] = useState(props.defaultContent);
23
- const isSampleUntouched = useMemo(() => {
24
- var _a, _b;
25
- return Boolean(selectedSampleName && content === ((_b = (_a = props.samples) === null || _a === void 0 ? void 0 : _a[selectedSampleName]) === null || _b === void 0 ? void 0 : _b.content));
26
- }, [content, selectedSampleName, props.samples]);
27
- const typespecModel = useMonacoModel("inmemory://test/main.tsp", "typespec");
28
- const [compilationState, setCompilationState] = useState(undefined);
29
- const doCompile = useCallback(async () => {
30
- const content = typespecModel.getValue();
31
- setContent(content);
32
- const typespecCompiler = host.compiler;
33
- const state = await compile(host, content, selectedEmitter, compilerOptions);
34
- setCompilationState(state);
35
- if ("program" in state) {
36
- const markers = state.program.diagnostics.map((diag) => ({
37
- ...getMarkerLocation(typespecCompiler, diag.target),
38
- message: diag.message,
39
- severity: diag.severity === "error" ? MarkerSeverity.Error : MarkerSeverity.Warning,
40
- tags: diag.code === "deprecated" ? [CompletionItemTag.Deprecated] : undefined,
41
- }));
42
- editor.setModelMarkers(typespecModel, "owner", markers !== null && markers !== void 0 ? markers : []);
43
- }
44
- else {
45
- editor.setModelMarkers(typespecModel, "owner", []);
46
- }
47
- }, [host, selectedEmitter, compilerOptions, typespecModel, setContent]);
48
- const updateTypeSpec = useCallback((value) => {
49
- if (typespecModel.getValue() !== value) {
50
- typespecModel.setValue(value);
51
- }
52
- }, [typespecModel]);
53
- useEffect(() => {
54
- var _a;
55
- updateTypeSpec((_a = props.defaultContent) !== null && _a !== void 0 ? _a : "");
56
- }, []);
57
- useEffect(() => {
58
- if (selectedSampleName && props.samples) {
59
- const config = props.samples[selectedSampleName];
60
- if (config.content) {
61
- updateTypeSpec(config.content);
62
- if (config.preferredEmitter) {
63
- onSelectedEmitterChange(config.preferredEmitter);
64
- }
65
- if (config.compilerOptions) {
66
- onCompilerOptionsChange(config.compilerOptions);
67
- }
68
- }
69
- }
70
- }, [updateTypeSpec, selectedSampleName]);
71
- useEffect(() => {
72
- const debouncer = debounce(() => doCompile(), 200);
73
- const disposable = typespecModel.onDidChangeContent(debouncer);
74
- return () => {
75
- debouncer.clear();
76
- disposable.dispose();
77
- };
78
- }, [typespecModel, doCompile]);
79
- useEffect(() => {
80
- void doCompile();
81
- }, [doCompile]);
82
- const saveCode = useCallback(() => {
83
- if (onSave) {
84
- onSave({
85
- content: typespecModel.getValue(),
86
- emitter: selectedEmitter,
87
- options: compilerOptions,
88
- sampleName: isSampleUntouched ? selectedSampleName : undefined,
89
- });
90
- }
91
- }, [
92
- typespecModel,
93
- onSave,
94
- selectedEmitter,
95
- compilerOptions,
96
- selectedSampleName,
97
- isSampleUntouched,
98
- ]);
99
- const newIssue = useCallback(async () => {
100
- var _a;
101
- saveCode();
102
- const bodyPayload = encodeURIComponent(`\n\n\n[Playground Link](${document.location.href})`);
103
- const url = `${(_a = props === null || props === void 0 ? void 0 : props.links) === null || _a === void 0 ? void 0 : _a.githubIssueUrl}?body=${bodyPayload}`;
104
- window.open(url, "_blank");
105
- }, [saveCode, typespecModel]);
106
- const typespecEditorActions = useMemo(() => [
107
- // ctrl/cmd+S => save
108
- { id: "save", label: "Save", keybindings: [KeyMod.CtrlCmd | KeyCode.KeyS], run: saveCode },
109
- ], [saveCode]);
110
- const libraries = useMemo(() => Object.values(host.libraries), [host.libraries]);
111
- return (_jsxs("div", { css: {
112
- display: "grid",
113
- gridTemplateColumns: "1",
114
- gridTemplateRows: "1fr auto",
115
- gridTemplateAreas: '"typespeceditor"\n "footer"',
116
- width: "100%",
117
- height: "100%",
118
- overflow: "hidden",
119
- fontFamily: `"Segoe UI", Tahoma, Geneva, Verdana, sans-serif`,
120
- }, children: [_jsxs(SplitPane, { initialSizes: ["50%", "50%"], css: { gridArea: "typespeceditor", width: "100%", height: "100%", overflow: "hidden" }, children: [_jsxs(Pane, { children: [_jsx(EditorCommandBar, { libraries: libraries, selectedEmitter: selectedEmitter, onSelectedEmitterChange: onSelectedEmitterChange, compilerOptions: compilerOptions, onCompilerOptionsChange: onCompilerOptionsChange, samples: props.samples, selectedSampleName: selectedSampleName, onSelectedSampleNameChange: onSelectedSampleNameChange, saveCode: saveCode, newIssue: ((_b = props === null || props === void 0 ? void 0 : props.links) === null || _b === void 0 ? void 0 : _b.githubIssueUrl) ? newIssue : undefined, documentationUrl: (_c = props.links) === null || _c === void 0 ? void 0 : _c.documentationUrl }), _jsx(TypeSpecEditor, { model: typespecModel, actions: typespecEditorActions })] }), _jsx(Pane, { children: _jsx(OutputView, { compilationState: compilationState, viewers: (_d = props.emitterViewers) === null || _d === void 0 ? void 0 : _d[selectedEmitter] }) })] }), _jsx(Footer, {})] }));
121
- };
122
- const outputDir = "./tsp-output";
123
- async function compile(host, content, selectedEmitter, options) {
124
- var _a;
125
- await host.writeFile("main.tsp", content);
126
- await emptyOutputDir(host);
127
- try {
128
- const typespecCompiler = host.compiler;
129
- const program = await typespecCompiler.compile(host, "main.tsp", {
130
- ...options,
131
- options: {
132
- ...options.options,
133
- [selectedEmitter]: {
134
- ...(_a = options.options) === null || _a === void 0 ? void 0 : _a[selectedEmitter],
135
- "emitter-output-dir": "tsp-output",
136
- },
137
- },
138
- outputDir: "tsp-output",
139
- emit: [selectedEmitter],
140
- });
141
- const outputFiles = await findOutputFiles(host);
142
- return { program, outputFiles };
143
- }
144
- catch (error) {
145
- // eslint-disable-next-line no-console
146
- console.error("Internal compiler error", error);
147
- return { internalCompilerError: error };
148
- }
149
- }
150
- async function findOutputFiles(host) {
151
- const files = [];
152
- async function addFiles(dir) {
153
- const items = await host.readDir(outputDir + dir);
154
- for (const item of items) {
155
- const itemPath = `${dir}/${item}`;
156
- if ((await host.stat(outputDir + itemPath)).isDirectory()) {
157
- await addFiles(itemPath);
158
- }
159
- else {
160
- files.push(dir === "" ? item : `${dir}/${item}`);
161
- }
162
- }
163
- }
164
- await addFiles("");
165
- return files;
166
- }
167
- async function emptyOutputDir(host) {
168
- // empty output directory
169
- const dirs = await host.readDir("./tsp-output");
170
- for (const file of dirs) {
171
- const path = "./tsp-output/" + file;
172
- const uri = Uri.parse(host.pathToFileURL(path));
173
- const model = editor.getModel(uri);
174
- if (model) {
175
- model.dispose();
176
- }
177
- await host.rm(path, { recursive: true });
178
- }
179
- }
180
- //# sourceMappingURL=playground.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playground.js","sourceRoot":"","sources":["../../../src/react/playground.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { Select } from "@fluentui/react-components";
3
- import { useCallback } from "react";
4
- export const SamplesDropdown = ({ samples, selectedSampleName, onSelectedSampleNameChange, }) => {
5
- const options = Object.keys(samples).map((sample) => {
6
- return _jsx("option", { children: sample }, sample);
7
- });
8
- const handleSelected = useCallback((evt) => {
9
- if (samples[evt.target.value]) {
10
- onSelectedSampleNameChange(evt.target.value);
11
- }
12
- }, [onSelectedSampleNameChange]);
13
- return (_jsxs(Select, { className: "sample-dropdown", onChange: handleSelected, value: selectedSampleName !== null && selectedSampleName !== void 0 ? selectedSampleName : "", children: [_jsx("option", { value: "", disabled: true, children: "Select sample..." }), options] }));
14
- };
15
- //# sourceMappingURL=samples-dropdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"samples-dropdown.js","sourceRoot":"","sources":["../../../src/react/samples-dropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAqB,WAAW,EAAE,MAAM,OAAO,CAAC;AASvD,MAAM,CAAC,MAAM,eAAe,GAA4C,CAAC,EACvE,OAAO,EACP,kBAAkB,EAClB,0BAA0B,GAC3B,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClD,OAAO,2BAAsB,MAAM,IAAf,MAAM,CAAmB,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,GAAQ,EAAE,EAAE;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC7B,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9C;IACH,CAAC,EACD,CAAC,0BAA0B,CAAC,CAC7B,CAAC;IACF,OAAO,CACL,MAAC,MAAM,IAAC,SAAS,EAAC,iBAAiB,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,aAC3F,iBAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,uCAEhB,EACR,OAAO,IACD,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
3
- import { EmitterOptionsForm } from "./emitter-options-form.js";
4
- import { LinterForm } from "./linter-form.js";
5
- export const CompilerSettings = ({ selectedEmitter, libraries, options, onOptionsChanged, }) => {
6
- var _a, _b;
7
- const emitterOptionsChanged = useCallback((emitterOptions) => {
8
- onOptionsChanged({
9
- ...options,
10
- options: emitterOptions,
11
- });
12
- }, [options]);
13
- const library = useTypeSpecLibrary(selectedEmitter);
14
- const linterRuleSet = (_a = options.linterRuleSet) !== null && _a !== void 0 ? _a : {};
15
- const linterRuleSetChanged = useCallback((linterRuleSet) => {
16
- onOptionsChanged({
17
- ...options,
18
- linterRuleSet,
19
- });
20
- }, [options]);
21
- return (_jsxs("div", { css: { padding: 10 }, children: [_jsx("h2", { children: "Settings" }), _jsxs(_Fragment, { children: ["Emitter: ", selectedEmitter] }), _jsx("h3", { children: "Options" }), library && (_jsx(EmitterOptionsForm, { library: library, options: (_b = options.options) !== null && _b !== void 0 ? _b : {}, optionsChanged: emitterOptionsChanged })), _jsx("h3", { children: "Linter" }), _jsx(LinterForm, { libraries: libraries, linterRuleSet: linterRuleSet, onLinterRuleSetChanged: linterRuleSetChanged })] }));
22
- };
23
- function useTypeSpecLibrary(name) {
24
- const [lib, setLib] = useState();
25
- useEffect(() => {
26
- setLib(undefined);
27
- import(/* @vite-ignore */ name)
28
- .then((module) => {
29
- if (module.$lib === undefined) {
30
- // eslint-disable-next-line no-console
31
- console.error(`Couldn't load library ${name} missing $lib export`);
32
- }
33
- setLib(module.$lib);
34
- })
35
- .catch((e) => {
36
- // eslint-disable-next-line no-console
37
- console.error("Failed to load library", name);
38
- });
39
- }, [name]);
40
- return lib;
41
- }
42
- //# sourceMappingURL=compiler-settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler-settings.js","sourceRoot":"","sources":["../../../../src/react/settings/compiler-settings.tsx"],"names":[],"mappings":";AACA,OAAO,EAAqB,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,MAAM,CAAC,MAAM,gBAAgB,GAA6C,CAAC,EACzE,eAAe,EACf,SAAS,EACT,OAAO,EACP,gBAAgB,GACjB,EAAE,EAAE;;IACH,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,cAA8B,EAAE,EAAE;QACjC,gBAAgB,CAAC;YACf,GAAG,OAAO;YACV,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,aAAa,mCAAI,EAAE,CAAC;IAClD,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,aAA4B,EAAE,EAAE;QAC/B,gBAAgB,CAAC;YACf,GAAG,OAAO;YACV,aAAa;SACd,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,OAAO,CACL,eAAK,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aACvB,oCAAiB,EACjB,2CAAY,eAAe,IAAI,EAC/B,mCAAgB,EACf,OAAO,IAAI,CACV,KAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,EAC9B,cAAc,EAAE,qBAAqB,GACrC,CACH,EACD,kCAAe,EACf,KAAC,UAAU,IACT,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,sBAAsB,EAAE,oBAAoB,GAC5C,IACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAwB,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;aAC5B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC7B,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,sBAAsB,CAAC,CAAC;aACpE;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,39 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { Input, Label, Radio, RadioGroup, Switch, useId, } from "@fluentui/react-components";
3
- import { useCallback, useMemo } from "react";
4
- export const EmitterOptionsForm = ({ library, options, optionsChanged, }) => {
5
- var _a, _b;
6
- const emitterOptionsSchema = (_b = (_a = library.emitter) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.properties;
7
- if (emitterOptionsSchema === undefined) {
8
- return _jsx(_Fragment, { children: "\"No options\"" });
9
- }
10
- const entries = Object.entries(emitterOptionsSchema);
11
- const handleChange = useCallback(({ name, value }) => {
12
- optionsChanged({
13
- ...options,
14
- [library.name]: {
15
- ...options[library.name],
16
- [name]: value,
17
- },
18
- });
19
- }, [options, optionsChanged]);
20
- return (_jsx("div", { children: entries.map(([key, value]) => {
21
- var _a;
22
- return (_jsx("div", { css: { margin: "16px 0" }, children: _jsx(JsonSchemaPropertyInput, { emitterOptions: (_a = options[library.name]) !== null && _a !== void 0 ? _a : {}, name: key, prop: value, onChange: handleChange }) }, key));
23
- }) }));
24
- };
25
- const JsonSchemaPropertyInput = ({ emitterOptions, name, prop, onChange, }) => {
26
- var _a;
27
- const prettyName = useMemo(() => name[0].toUpperCase() + name.slice(1).replace(/-/g, " "), [name]);
28
- const inputId = useId("input");
29
- const value = (_a = emitterOptions[name]) !== null && _a !== void 0 ? _a : prop.default;
30
- const handleChange = useCallback((_, data) => onChange({ name, value: "value" in data ? data.value : data.checked }), [onChange]);
31
- switch (prop.type) {
32
- case "boolean":
33
- return _jsx(Switch, { label: prettyName, checked: value, onChange: handleChange });
34
- case "string":
35
- default:
36
- return (_jsxs("div", { children: [_jsx("div", { children: _jsx(Label, { htmlFor: inputId, title: name, children: prettyName }) }), _jsx("div", { children: prop.enum ? (_jsx(RadioGroup, { layout: "horizontal", id: inputId, value: value, onChange: handleChange, children: prop.enum.map((x) => (_jsx(Radio, { value: x, label: x }, x))) })) : (_jsx(Input, { id: inputId, value: value, onChange: handleChange })) })] }));
37
- }
38
- };
39
- //# sourceMappingURL=emitter-options-form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emitter-options-form.js","sourceRoot":"","sources":["../../../../src/react/settings/emitter-options-form.tsx"],"names":[],"mappings":"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"}