@mintlify/msft-sdk 1.1.25 → 1.1.27

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 (106) hide show
  1. package/dist/api-playground/ApiPlayground/ApiPlaygroundContext.js.map +1 -1
  2. package/dist/api-playground/ApiPlayground/Request/BodySection.js.map +1 -1
  3. package/dist/api-playground/ApiPlayground/Request/ParameterSection.js.map +1 -1
  4. package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js.map +1 -1
  5. package/dist/api-playground/ApiPlayground/Request/SecuritySection.js.map +1 -1
  6. package/dist/api-playground/ApiPlayground/Request/ServerSection.js.map +1 -1
  7. package/dist/api-playground/ApiPlayground/Request/index.js.map +1 -1
  8. package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js.map +1 -1
  9. package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js.map +1 -1
  10. package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js.map +1 -1
  11. package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js.map +1 -1
  12. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js.map +1 -1
  13. package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js.map +1 -1
  14. package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js.map +1 -1
  15. package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js.map +1 -1
  16. package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js.map +1 -1
  17. package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js.map +1 -1
  18. package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js.map +1 -1
  19. package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js.map +1 -1
  20. package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js.map +1 -1
  21. package/dist/api-playground/ApiPlayground/Response/ResponseError.js.map +1 -1
  22. package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js.map +1 -1
  23. package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js.map +1 -1
  24. package/dist/api-playground/ApiPlayground/Response/ResponseTable.js.map +1 -1
  25. package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js.map +1 -1
  26. package/dist/api-playground/ApiPlayground/Response/index.js.map +1 -1
  27. package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js.map +1 -1
  28. package/dist/api-playground/ApiPlayground/components/ArrayCount.js.map +1 -1
  29. package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js.map +1 -1
  30. package/dist/api-playground/ApiPlayground/components/InputContainer.js.map +1 -1
  31. package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js.map +1 -1
  32. package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js.map +1 -1
  33. package/dist/api-playground/ApiPlayground/components/PathHeader.js.map +1 -1
  34. package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js.map +1 -1
  35. package/dist/api-playground/ApiPlayground/components/TrashButton.js.map +1 -1
  36. package/dist/api-playground/ApiPlayground/components/TypeDropdown.js.map +1 -1
  37. package/dist/api-playground/ApiPlayground/index.js.map +1 -1
  38. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js.map +1 -1
  39. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js.map +1 -1
  40. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js.map +1 -1
  41. package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js.map +1 -1
  42. package/dist/api-playground/EndpointFields/components/Description.js.map +1 -1
  43. package/dist/api-playground/EndpointFields/components/OneOfDropdown.js.map +1 -1
  44. package/dist/api-playground/EndpointFields/components/OptionDropdown.js.map +1 -1
  45. package/dist/api-playground/EndpointFields/components/SectionHeading.js.map +1 -1
  46. package/dist/api-playground/EndpointFields/index.js.map +1 -1
  47. package/dist/api-playground-2/Api.js.map +1 -1
  48. package/dist/api-playground-2/ApiExamples.js.map +1 -1
  49. package/dist/api-playground-2/ApiFields.js.map +1 -1
  50. package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js.map +1 -1
  51. package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js.map +1 -1
  52. package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js.map +1 -1
  53. package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js.map +1 -1
  54. package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js.map +1 -1
  55. package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js.map +1 -1
  56. package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js.map +1 -1
  57. package/dist/api-playground-2/components/Example/RequestExample.js +17 -15
  58. package/dist/api-playground-2/components/Example/RequestExample.js.map +1 -1
  59. package/dist/api-playground-2/components/Example/ResponseExample.js.map +1 -1
  60. package/dist/api-playground-2/components/Request/InputSectionContainer.js.map +1 -1
  61. package/dist/api-playground-2/components/TypeDropdown.js.map +1 -1
  62. package/dist/api-playground-2/contexts/ApiPlaygroundContext.js.map +1 -1
  63. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js +10 -10
  64. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js.map +1 -1
  65. package/dist/api-playground-2/generators/generateSnippetMap.js +24 -24
  66. package/dist/api-playground-2/generators/generateSnippetMap.js.map +1 -1
  67. package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js.map +1 -1
  68. package/dist/components/Api/ErrorBoundary.js.map +1 -1
  69. package/dist/components/Api/Expandable.js.map +1 -1
  70. package/dist/components/Api/Markdown.js.map +1 -1
  71. package/dist/components/Api/MethodPill.js.map +1 -1
  72. package/dist/components/Api/Param.js.map +1 -1
  73. package/dist/components/Api/colors.js.map +1 -1
  74. package/dist/components/content-components/CodeGroupSelect/CodeGroupCopyButton.js.map +1 -1
  75. package/dist/components/content-components/CodeGroupSelect/CodeSelectDropdown.js.map +1 -1
  76. package/dist/components/content-components/CodeGroupSelect/index.js.map +1 -1
  77. package/dist/components/content-components/code-block.js.map +1 -1
  78. package/dist/components/content-components/code-group.js.map +1 -1
  79. package/dist/components/content-components/code-snippet.js.map +1 -1
  80. package/dist/components/content-components/code-snippets.js.map +1 -1
  81. package/dist/components/content-components/getNodeText.js.map +1 -1
  82. package/dist/components/docsLayout.js +29 -27
  83. package/dist/components/docsLayout.js.map +1 -1
  84. package/dist/components/nav-tree/index.js +174 -178
  85. package/dist/components/nav-tree/index.js.map +1 -1
  86. package/dist/contexts/CodeExampleLabelContext.js.map +1 -1
  87. package/dist/contexts/ConfigContext.js.map +1 -1
  88. package/dist/contexts/EndpointLocationContext.js.map +1 -1
  89. package/dist/contexts/MDXContentContext.js.map +1 -1
  90. package/dist/hooks/useApiPlaygroundDisplay.js.map +1 -1
  91. package/dist/hooks/useApiPlaygroundInputs.js.map +1 -1
  92. package/dist/hooks/useBaseUrlOptions.js.map +1 -1
  93. package/dist/hooks/useEndpoint.js.map +1 -1
  94. package/dist/hooks/useKeyboardShortcut.js.map +1 -1
  95. package/dist/hooks/useMDXContent.js.map +1 -1
  96. package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js.map +1 -1
  97. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js.map +1 -1
  98. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js.map +1 -1
  99. package/dist/hooks/usePlaygroundSchemaOptions.js.map +1 -1
  100. package/dist/hooks/usePrefilledInputs/index.js.map +1 -1
  101. package/dist/hooks/usePrefilledInputs/storedServerVariables.js.map +1 -1
  102. package/dist/hooks/useSecurityOption.js.map +1 -1
  103. package/dist/hooks/useSendPlaygroundRequest.js.map +1 -1
  104. package/dist/index.d.ts +4 -2
  105. package/dist/styles.css +1 -1
  106. package/package.json +1 -1
@@ -2,20 +2,20 @@ import { getFirstExampleValue as f } from "../schemaGraph/processExamples.js";
2
2
  import { langToPresetMap as q } from "../../constants/snippetPresets.js";
3
3
  import { generateRequest as x } from "./generateRequest.js";
4
4
  import { generateSnippet as B } from "./generateSnippet.js";
5
- const I = async ({
5
+ const I = ({
6
6
  apiReferenceData: e,
7
7
  baseUrl: n,
8
8
  inputs: o,
9
- apiPlaygroundMode: m,
9
+ apiPlaygroundMode: a,
10
10
  selectedSecurityOptionIndex: d,
11
11
  lang: l,
12
12
  requiredOnly: u
13
13
  }) => {
14
14
  var r, s, p, c;
15
- if (n && m !== "none") {
16
- const y = Object.keys(
15
+ if (n && a !== "none") {
16
+ const g = Object.keys(
17
17
  ((s = (r = e.dependencies) == null ? void 0 : r.requestBody) == null ? void 0 : s.content) ?? {}
18
- )[0], g = f(
18
+ )[0], y = f(
19
19
  ((c = (p = e.dependencies) == null ? void 0 : p.requestBody) == null ? void 0 : c.content) ?? {}
20
20
  );
21
21
  try {
@@ -23,17 +23,17 @@ const I = async ({
23
23
  baseUrl: n,
24
24
  apiReferenceData: e,
25
25
  inputs: o,
26
- exampleData: g,
27
- selectedBodyContentType: y,
26
+ exampleData: y,
27
+ selectedBodyContentType: g,
28
28
  requiredOnly: u,
29
29
  selectedSecurityOptionIndex: d
30
- }), a = q[l];
31
- if (a == null)
30
+ }), m = q[l];
31
+ if (m == null)
32
32
  return;
33
33
  const [t] = B({
34
34
  request: i,
35
35
  pathInputs: o.path,
36
- snippetPresets: [a],
36
+ snippetPresets: [m],
37
37
  apiReferenceData: e
38
38
  });
39
39
  if (t)
@@ -1 +1 @@
1
- {"version":3,"file":"generateInteractiveCodeSample.js","sources":["../../../src/api-playground-2/generators/generateInteractiveCodeSample.ts"],"sourcesContent":["import { ApiPlaygroundDisplayType } from '@mintlify/models';\nimport { ApiPlaygroundInputs, CodeSample } from '@mintlify/validation';\n\nimport { getFirstExampleValue } from '@/api-playground-2/schemaGraph/processExamples';\nimport type { ApiReferenceDataV2 } from '@/api-playground-2/types';\nimport { langToPresetMap } from '@/constants/snippetPresets';\n\nimport { generateRequest } from './generateRequest';\nimport { generateSnippet } from './generateSnippet';\n\nexport const generateInteractiveCodeSample = async ({\n apiReferenceData,\n baseUrl,\n inputs,\n apiPlaygroundMode,\n selectedSecurityOptionIndex,\n lang,\n requiredOnly,\n}: {\n lang: string;\n baseUrl?: string;\n apiReferenceData: ApiReferenceDataV2;\n inputs: ApiPlaygroundInputs;\n apiPlaygroundMode: ApiPlaygroundDisplayType;\n selectedSecurityOptionIndex: number;\n requiredOnly?: boolean;\n}): Promise<CodeSample | undefined> => {\n if (baseUrl && apiPlaygroundMode !== 'none') {\n const firstRequestBodyContentType = Object.keys(\n apiReferenceData.dependencies?.requestBody?.content ?? {}\n )[0];\n const firstExample = getFirstExampleValue(\n apiReferenceData.dependencies?.requestBody?.content ?? {}\n );\n try {\n const request = generateRequest({\n baseUrl,\n apiReferenceData,\n inputs,\n exampleData: firstExample,\n selectedBodyContentType: firstRequestBodyContentType,\n requiredOnly,\n selectedSecurityOptionIndex,\n });\n const preset = langToPresetMap[lang];\n if (preset == undefined) {\n return;\n }\n const [snippet] = generateSnippet({\n request,\n pathInputs: inputs.path,\n snippetPresets: [preset],\n apiReferenceData,\n });\n if (snippet)\n return {\n label: 'Interactive Example',\n lang: snippet.language,\n source: snippet.code,\n };\n } catch (err) {}\n }\n};\n"],"names":["generateInteractiveCodeSample","apiReferenceData","baseUrl","inputs","apiPlaygroundMode","selectedSecurityOptionIndex","lang","requiredOnly","firstRequestBodyContentType","_b","_a","firstExample","getFirstExampleValue","_d","_c","request","generateRequest","preset","langToPresetMap","snippet","generateSnippet"],"mappings":";;;;AAUO,MAAMA,IAAgC,OAAO;AAAA,EAClD,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AACF,MAQuC;;AACrC,MAAIL,KAAWE,MAAsB,QAAQ;AAC3C,UAAMI,IAA8B,OAAO;AAAA,QACzCC,KAAAC,IAAAT,EAAiB,iBAAjB,gBAAAS,EAA+B,gBAA/B,gBAAAD,EAA4C,YAAW,CAAA;AAAA,IAAC,EACxD,CAAC,GACGE,IAAeC;AAAA,QACnBC,KAAAC,IAAAb,EAAiB,iBAAjB,gBAAAa,EAA+B,gBAA/B,gBAAAD,EAA4C,YAAW,CAAA;AAAA,IAAC;AAE1D,QAAI;AACF,YAAME,IAAUC,EAAgB;AAAA,QAC9B,SAAAd;AAAA,QACA,kBAAAD;AAAA,QACA,QAAAE;AAAA,QACA,aAAaQ;AAAA,QACb,yBAAyBH;AAAA,QACzB,cAAAD;AAAA,QACA,6BAAAF;AAAA,MAAA,CACD,GACKY,IAASC,EAAgBZ,CAAI;AACnC,UAAIW,KAAU;AACZ;AAEF,YAAM,CAACE,CAAO,IAAIC,EAAgB;AAAA,QAChC,SAAAL;AAAA,QACA,YAAYZ,EAAO;AAAA,QACnB,gBAAgB,CAACc,CAAM;AAAA,QACvB,kBAAAhB;AAAA,MAAA,CACD;AACD,UAAIkB;AACF,eAAO;AAAA,UACL,OAAO;AAAA,UACP,MAAMA,EAAQ;AAAA,UACd,QAAQA,EAAQ;AAAA,QAAA;AAAA,IAEtB,QAAc;AAAA,IAAC;AAAA,EACjB;AACF;"}
1
+ {"version":3,"file":"generateInteractiveCodeSample.js","sources":["../../../src/api-playground-2/generators/generateInteractiveCodeSample.ts"],"sourcesContent":["import { ApiPlaygroundDisplayType } from '@mintlify/models';\nimport { ApiPlaygroundInputs, CodeSample } from '@mintlify/validation';\n\nimport { getFirstExampleValue } from '@/api-playground-2/schemaGraph/processExamples';\nimport type { ApiReferenceDataV2 } from '@/api-playground-2/types';\nimport { langToPresetMap } from '@/constants/snippetPresets';\n\nimport { generateRequest } from './generateRequest';\nimport { generateSnippet } from './generateSnippet';\n\nexport const generateInteractiveCodeSample = ({\n apiReferenceData,\n baseUrl,\n inputs,\n apiPlaygroundMode,\n selectedSecurityOptionIndex,\n lang,\n requiredOnly,\n}: {\n lang: string;\n baseUrl?: string;\n apiReferenceData: ApiReferenceDataV2;\n inputs: ApiPlaygroundInputs;\n apiPlaygroundMode: ApiPlaygroundDisplayType;\n selectedSecurityOptionIndex: number;\n requiredOnly?: boolean;\n}): CodeSample | undefined => {\n if (baseUrl && apiPlaygroundMode !== 'none') {\n const firstRequestBodyContentType = Object.keys(\n apiReferenceData.dependencies?.requestBody?.content ?? {}\n )[0];\n const firstExample = getFirstExampleValue(\n apiReferenceData.dependencies?.requestBody?.content ?? {}\n );\n try {\n const request = generateRequest({\n baseUrl,\n apiReferenceData,\n inputs,\n exampleData: firstExample,\n selectedBodyContentType: firstRequestBodyContentType,\n requiredOnly,\n selectedSecurityOptionIndex,\n });\n const preset = langToPresetMap[lang];\n if (preset == undefined) {\n return;\n }\n const [snippet] = generateSnippet({\n request,\n pathInputs: inputs.path,\n snippetPresets: [preset],\n apiReferenceData,\n });\n if (snippet)\n return {\n label: 'Interactive Example',\n lang: snippet.language,\n source: snippet.code,\n };\n } catch (err) {}\n }\n};\n"],"names":["generateInteractiveCodeSample","apiReferenceData","baseUrl","inputs","apiPlaygroundMode","selectedSecurityOptionIndex","lang","requiredOnly","firstRequestBodyContentType","_b","_a","firstExample","getFirstExampleValue","_d","_c","request","generateRequest","preset","langToPresetMap","snippet","generateSnippet"],"mappings":";;;;AAUO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AACF,MAQ8B;;AAC5B,MAAIL,KAAWE,MAAsB,QAAQ;AAC3C,UAAMI,IAA8B,OAAO;AAAA,QACzCC,KAAAC,IAAAT,EAAiB,iBAAjB,gBAAAS,EAA+B,gBAA/B,gBAAAD,EAA4C,YAAW,CAAA;AAAA,IAAC,EACxD,CAAC,GACGE,IAAeC;AAAA,QACnBC,KAAAC,IAAAb,EAAiB,iBAAjB,gBAAAa,EAA+B,gBAA/B,gBAAAD,EAA4C,YAAW,CAAA;AAAA,IAAC;AAE1D,QAAI;AACF,YAAME,IAAUC,EAAgB;AAAA,QAC9B,SAAAd;AAAA,QACA,kBAAAD;AAAA,QACA,QAAAE;AAAA,QACA,aAAaQ;AAAA,QACb,yBAAyBH;AAAA,QACzB,cAAAD;AAAA,QACA,6BAAAF;AAAA,MAAA,CACD,GACKY,IAASC,EAAgBZ,CAAI;AACnC,UAAIW,KAAU;AACZ;AAEF,YAAM,CAACE,CAAO,IAAIC,EAAgB;AAAA,QAChC,SAAAL;AAAA,QACA,YAAYZ,EAAO;AAAA,QACnB,gBAAgB,CAACc,CAAM;AAAA,QACvB,kBAAAhB;AAAA,MAAA,CACD;AACD,UAAIkB;AACF,eAAO;AAAA,UACL,OAAO;AAAA,UACP,MAAMA,EAAQ;AAAA,UACd,QAAQA,EAAQ;AAAA,QAAA;AAAA,IAEtB,QAAc;AAAA,IAAC;AAAA,EACjB;AACF;"}
@@ -1,32 +1,32 @@
1
1
  import { requestExampleLanguages as k } from "@mintlify/models";
2
2
  import { toShikiLang as x, shikiLangToDisplayLang as m } from "../../constants/snippetPresets.js";
3
3
  import { generateInteractiveCodeSample as v } from "./generateInteractiveCodeSample.js";
4
- const j = async ({
4
+ const p = ({
5
5
  codeSamples: t,
6
6
  apiReferenceData: c,
7
- baseUrl: i,
7
+ baseUrl: r,
8
8
  inputs: e,
9
9
  apiPlaygroundMode: f,
10
- requestExampleLanguages: r,
10
+ requestExampleLanguages: a,
11
11
  requiredOnly: g,
12
12
  selectedSecurityOptionIndex: L
13
13
  }) => {
14
- const d = i && f !== "none" || i && r, s = r ?? [];
14
+ const d = r && f !== "none" || r && a, o = a ?? [];
15
15
  t = t.map((n) => ({
16
16
  ...n,
17
17
  lang: x(n.lang)
18
- })), r === void 0 && (t.forEach((n) => {
19
- s.includes(n.lang) || s.push(n.lang);
18
+ })), a === void 0 && (t.forEach((n) => {
19
+ o.includes(n.lang) || o.push(n.lang);
20
20
  }), d && k.forEach((n) => {
21
- s.includes(n) || s.push(n);
21
+ o.includes(n) || o.push(n);
22
22
  }));
23
23
  const h = {};
24
- for (const n of s) {
25
- let o = m[n] ?? n;
26
- const u = t.filter((a) => a.lang === n), l = h[o] ?? {};
24
+ for (const n of o) {
25
+ let s = m[n] ?? n;
26
+ const u = t.filter((i) => i.lang === n), l = h[s] ?? {};
27
27
  if (u.length === 0) {
28
- const a = await v({
29
- baseUrl: i,
28
+ const i = v({
29
+ baseUrl: r,
30
30
  apiReferenceData: c,
31
31
  inputs: e,
32
32
  apiPlaygroundMode: f,
@@ -34,37 +34,37 @@ const j = async ({
34
34
  requiredOnly: g,
35
35
  selectedSecurityOptionIndex: L
36
36
  });
37
- a && E(
38
- a,
37
+ i && E(
38
+ i,
39
39
  n,
40
- o,
40
+ s,
41
41
  l,
42
42
  !0
43
43
  );
44
44
  } else
45
- u.forEach((a) => {
46
- o = m[n] ?? a.label ?? n, E(
47
- a,
45
+ u.forEach((i) => {
46
+ s = m[n] ?? i.label ?? n, E(
47
+ i,
48
48
  n,
49
- o,
49
+ s,
50
50
  l,
51
51
  !1
52
52
  );
53
53
  });
54
- Object.keys(l).length > 0 && (h[o] = l);
54
+ Object.keys(l).length > 0 && (h[s] = l);
55
55
  }
56
56
  return h;
57
- }, E = (t, c, i, e, f) => {
57
+ }, E = (t, c, r, e, f) => {
58
58
  "" in e && (e["Example 1"] = e[""], delete e[""]);
59
- const r = Object.keys(e).length, g = t.label ?? (r > 0 ? `Example ${r + 1}` : "");
59
+ const a = Object.keys(e).length, g = t.label ?? (a > 0 ? `Example ${a + 1}` : "");
60
60
  e[g] = {
61
- filename: f ? i : g || i,
61
+ filename: f ? r : g || r,
62
62
  // (used in CodeSnippets)
63
63
  language: c,
64
64
  code: t.source
65
65
  };
66
66
  };
67
67
  export {
68
- j as generateSnippetMap
68
+ p as generateSnippetMap
69
69
  };
70
70
  //# sourceMappingURL=generateSnippetMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateSnippetMap.js","sources":["../../../src/api-playground-2/generators/generateSnippetMap.ts"],"sourcesContent":["import {\n ApiPlaygroundDisplayType,\n requestExampleLanguages as defaultRequestExampleLanguages,\n} from '@mintlify/models';\nimport { ApiPlaygroundInputs, CodeSample } from '@mintlify/validation';\n\nimport type { ApiReferenceDataV2 } from '@/api-playground-2/types';\nimport { shikiLangToDisplayLang, toShikiLang } from '@/constants/snippetPresets';\nimport { ExampleCodeSnippet } from '@/types/exampleCodeSnippet';\n\nimport { generateInteractiveCodeSample } from './generateInteractiveCodeSample';\n\n// more or less identical but in all places where we use Endpoint, we use ApiReferenceDataV2 instead\nexport const generateSnippetMap = async ({\n codeSamples,\n apiReferenceData,\n baseUrl,\n inputs,\n apiPlaygroundMode,\n requestExampleLanguages,\n requiredOnly,\n selectedSecurityOptionIndex,\n}: {\n codeSamples: CodeSample[];\n apiReferenceData: ApiReferenceDataV2;\n baseUrl?: string;\n inputs: ApiPlaygroundInputs;\n apiPlaygroundMode: ApiPlaygroundDisplayType;\n requestExampleLanguages?: string[];\n requiredOnly?: boolean;\n selectedSecurityOptionIndex: number;\n}): Promise<Record<string, Record<string, ExampleCodeSnippet>>> => {\n const shouldHaveGeneratedExamples =\n (baseUrl && apiPlaygroundMode !== 'none') || (baseUrl && requestExampleLanguages);\n const langOrder = requestExampleLanguages ?? [];\n codeSamples = codeSamples.map((codeSample) => ({\n ...codeSample,\n lang: toShikiLang(codeSample.lang),\n }));\n if (requestExampleLanguages === undefined) {\n codeSamples.forEach((codeSample) => {\n if (langOrder.includes(codeSample.lang)) return;\n langOrder.push(codeSample.lang);\n });\n if (shouldHaveGeneratedExamples) {\n defaultRequestExampleLanguages.forEach((lang) => {\n if (langOrder.includes(lang)) return;\n langOrder.push(lang);\n });\n }\n }\n\n const map: Record<string, Record<string, ExampleCodeSnippet>> = {};\n\n for (const shikiLang of langOrder) {\n let displayLang = shikiLangToDisplayLang[shikiLang] ?? shikiLang;\n\n const codeSamplesInLang = codeSamples.filter((codeSample) => codeSample.lang === shikiLang);\n\n const labelToSnippetMap = map[displayLang] ?? {};\n if (codeSamplesInLang.length === 0) {\n const generatedCodeSample = await generateInteractiveCodeSample({\n baseUrl,\n apiReferenceData,\n inputs,\n apiPlaygroundMode,\n lang: shikiLang,\n requiredOnly,\n selectedSecurityOptionIndex,\n });\n if (generatedCodeSample) {\n addCodeSampleToLabelToSnippetMap(\n generatedCodeSample,\n shikiLang,\n displayLang,\n labelToSnippetMap,\n true\n );\n }\n } else {\n codeSamplesInLang.forEach((codeSample) => {\n displayLang = shikiLangToDisplayLang[shikiLang] ?? codeSample.label ?? shikiLang;\n addCodeSampleToLabelToSnippetMap(\n codeSample,\n shikiLang,\n displayLang,\n labelToSnippetMap,\n false\n );\n });\n }\n if (Object.keys(labelToSnippetMap).length > 0) {\n map[displayLang] = labelToSnippetMap;\n }\n }\n\n return map;\n};\n\nconst addCodeSampleToLabelToSnippetMap = (\n codeSample: CodeSample,\n shikiLang: string,\n displayLang: string,\n labelToSnippetMap: Record<string, ExampleCodeSnippet>,\n isGenerated: boolean\n) => {\n // if we have entered an empty label, retroactively update it to 'Example 1'\n if ('' in labelToSnippetMap) {\n labelToSnippetMap['Example 1'] = labelToSnippetMap[''];\n delete labelToSnippetMap[''];\n }\n\n const numExistingLabels = Object.keys(labelToSnippetMap).length;\n const label =\n codeSample.label ?? (numExistingLabels > 0 ? `Example ${numExistingLabels + 1}` : '');\n\n labelToSnippetMap[label] = {\n filename: isGenerated ? displayLang : label || displayLang, // (used in CodeSnippets)\n language: shikiLang,\n code: codeSample.source,\n };\n};\n"],"names":["generateSnippetMap","codeSamples","apiReferenceData","baseUrl","inputs","apiPlaygroundMode","requestExampleLanguages","requiredOnly","selectedSecurityOptionIndex","shouldHaveGeneratedExamples","langOrder","codeSample","toShikiLang","defaultRequestExampleLanguages","lang","map","shikiLang","displayLang","shikiLangToDisplayLang","codeSamplesInLang","labelToSnippetMap","generatedCodeSample","generateInteractiveCodeSample","addCodeSampleToLabelToSnippetMap","isGenerated","numExistingLabels","label"],"mappings":";;;AAaO,MAAMA,IAAqB,OAAO;AAAA,EACvC,aAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EAAA,yBACAC;AAAAA,EACA,cAAAC;AAAA,EACA,6BAAAC;AACF,MASmE;AACjE,QAAMC,IACHN,KAAWE,MAAsB,UAAYF,KAAWG,GACrDI,IAAYJ,KAA2B,CAAA;AAC7C,EAAAL,IAAcA,EAAY,IAAI,CAACU,OAAgB;AAAA,IAC7C,GAAGA;AAAA,IACH,MAAMC,EAAYD,EAAW,IAAI;AAAA,EAAA,EACjC,GACEL,MAA4B,WAC9BL,EAAY,QAAQ,CAACU,MAAe;AAClC,IAAID,EAAU,SAASC,EAAW,IAAI,KACtCD,EAAU,KAAKC,EAAW,IAAI;AAAA,EAChC,CAAC,GACGF,KACFI,EAA+B,QAAQ,CAACC,MAAS;AAC/C,IAAIJ,EAAU,SAASI,CAAI,KAC3BJ,EAAU,KAAKI,CAAI;AAAA,EACrB,CAAC;AAIL,QAAMC,IAA0D,CAAA;AAEhE,aAAWC,KAAaN,GAAW;AACjC,QAAIO,IAAcC,EAAuBF,CAAS,KAAKA;AAEvD,UAAMG,IAAoBlB,EAAY,OAAO,CAACU,MAAeA,EAAW,SAASK,CAAS,GAEpFI,IAAoBL,EAAIE,CAAW,KAAK,CAAA;AAC9C,QAAIE,EAAkB,WAAW,GAAG;AAClC,YAAME,IAAsB,MAAMC,EAA8B;AAAA,QAC9D,SAAAnB;AAAA,QACA,kBAAAD;AAAA,QACA,QAAAE;AAAA,QACA,mBAAAC;AAAA,QACA,MAAMW;AAAA,QACN,cAAAT;AAAA,QACA,6BAAAC;AAAA,MAAA,CACD;AACD,MAAIa,KACFE;AAAA,QACEF;AAAA,QACAL;AAAA,QACAC;AAAA,QACAG;AAAA,QACA;AAAA,MAAA;AAAA,IAGN;AACE,MAAAD,EAAkB,QAAQ,CAACR,MAAe;AACxC,QAAAM,IAAcC,EAAuBF,CAAS,KAAKL,EAAW,SAASK,GACvEO;AAAA,UACEZ;AAAA,UACAK;AAAA,UACAC;AAAA,UACAG;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,CAAC;AAEH,IAAI,OAAO,KAAKA,CAAiB,EAAE,SAAS,MAC1CL,EAAIE,CAAW,IAAIG;AAAA,EAEvB;AAEA,SAAOL;AACT,GAEMQ,IAAmC,CACvCZ,GACAK,GACAC,GACAG,GACAI,MACG;AAEH,EAAI,MAAMJ,MACRA,EAAkB,WAAW,IAAIA,EAAkB,EAAE,GACrD,OAAOA,EAAkB,EAAE;AAG7B,QAAMK,IAAoB,OAAO,KAAKL,CAAiB,EAAE,QACnDM,IACJf,EAAW,UAAUc,IAAoB,IAAI,WAAWA,IAAoB,CAAC,KAAK;AAEpF,EAAAL,EAAkBM,CAAK,IAAI;AAAA,IACzB,UAAUF,IAAcP,IAAcS,KAAST;AAAA;AAAA,IAC/C,UAAUD;AAAA,IACV,MAAML,EAAW;AAAA,EAAA;AAErB;"}
1
+ {"version":3,"file":"generateSnippetMap.js","sources":["../../../src/api-playground-2/generators/generateSnippetMap.ts"],"sourcesContent":["import {\n ApiPlaygroundDisplayType,\n requestExampleLanguages as defaultRequestExampleLanguages,\n} from '@mintlify/models';\nimport { ApiPlaygroundInputs, CodeSample } from '@mintlify/validation';\n\nimport type { ApiReferenceDataV2 } from '@/api-playground-2/types';\nimport { shikiLangToDisplayLang, toShikiLang } from '@/constants/snippetPresets';\nimport { ExampleCodeSnippet } from '@/types/exampleCodeSnippet';\n\nimport { generateInteractiveCodeSample } from './generateInteractiveCodeSample';\n\n// more or less identical but in all places where we use Endpoint, we use ApiReferenceDataV2 instead\nexport const generateSnippetMap = ({\n codeSamples,\n apiReferenceData,\n baseUrl,\n inputs,\n apiPlaygroundMode,\n requestExampleLanguages,\n requiredOnly,\n selectedSecurityOptionIndex,\n}: {\n codeSamples: CodeSample[];\n apiReferenceData: ApiReferenceDataV2;\n baseUrl?: string;\n inputs: ApiPlaygroundInputs;\n apiPlaygroundMode: ApiPlaygroundDisplayType;\n requestExampleLanguages?: string[];\n requiredOnly?: boolean;\n selectedSecurityOptionIndex: number;\n}): Record<string, Record<string, ExampleCodeSnippet>> => {\n const shouldHaveGeneratedExamples =\n (baseUrl && apiPlaygroundMode !== 'none') || (baseUrl && requestExampleLanguages);\n const langOrder = requestExampleLanguages ?? [];\n codeSamples = codeSamples.map((codeSample) => ({\n ...codeSample,\n lang: toShikiLang(codeSample.lang),\n }));\n if (requestExampleLanguages === undefined) {\n codeSamples.forEach((codeSample) => {\n if (langOrder.includes(codeSample.lang)) return;\n langOrder.push(codeSample.lang);\n });\n if (shouldHaveGeneratedExamples) {\n defaultRequestExampleLanguages.forEach((lang) => {\n if (langOrder.includes(lang)) return;\n langOrder.push(lang);\n });\n }\n }\n\n const map: Record<string, Record<string, ExampleCodeSnippet>> = {};\n\n for (const shikiLang of langOrder) {\n let displayLang = shikiLangToDisplayLang[shikiLang] ?? shikiLang;\n\n const codeSamplesInLang = codeSamples.filter((codeSample) => codeSample.lang === shikiLang);\n\n const labelToSnippetMap = map[displayLang] ?? {};\n if (codeSamplesInLang.length === 0) {\n const generatedCodeSample = generateInteractiveCodeSample({\n baseUrl,\n apiReferenceData,\n inputs,\n apiPlaygroundMode,\n lang: shikiLang,\n requiredOnly,\n selectedSecurityOptionIndex,\n });\n if (generatedCodeSample) {\n addCodeSampleToLabelToSnippetMap(\n generatedCodeSample,\n shikiLang,\n displayLang,\n labelToSnippetMap,\n true\n );\n }\n } else {\n codeSamplesInLang.forEach((codeSample) => {\n displayLang = shikiLangToDisplayLang[shikiLang] ?? codeSample.label ?? shikiLang;\n addCodeSampleToLabelToSnippetMap(\n codeSample,\n shikiLang,\n displayLang,\n labelToSnippetMap,\n false\n );\n });\n }\n if (Object.keys(labelToSnippetMap).length > 0) {\n map[displayLang] = labelToSnippetMap;\n }\n }\n\n return map;\n};\n\nconst addCodeSampleToLabelToSnippetMap = (\n codeSample: CodeSample,\n shikiLang: string,\n displayLang: string,\n labelToSnippetMap: Record<string, ExampleCodeSnippet>,\n isGenerated: boolean\n) => {\n // if we have entered an empty label, retroactively update it to 'Example 1'\n if ('' in labelToSnippetMap) {\n labelToSnippetMap['Example 1'] = labelToSnippetMap[''];\n delete labelToSnippetMap[''];\n }\n\n const numExistingLabels = Object.keys(labelToSnippetMap).length;\n const label =\n codeSample.label ?? (numExistingLabels > 0 ? `Example ${numExistingLabels + 1}` : '');\n\n labelToSnippetMap[label] = {\n filename: isGenerated ? displayLang : label || displayLang, // (used in CodeSnippets)\n language: shikiLang,\n code: codeSample.source,\n };\n};\n"],"names":["generateSnippetMap","codeSamples","apiReferenceData","baseUrl","inputs","apiPlaygroundMode","requestExampleLanguages","requiredOnly","selectedSecurityOptionIndex","shouldHaveGeneratedExamples","langOrder","codeSample","toShikiLang","defaultRequestExampleLanguages","lang","map","shikiLang","displayLang","shikiLangToDisplayLang","codeSamplesInLang","labelToSnippetMap","generatedCodeSample","generateInteractiveCodeSample","addCodeSampleToLabelToSnippetMap","isGenerated","numExistingLabels","label"],"mappings":";;;AAaO,MAAMA,IAAqB,CAAC;AAAA,EACjC,aAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EAAA,yBACAC;AAAAA,EACA,cAAAC;AAAA,EACA,6BAAAC;AACF,MAS0D;AACxD,QAAMC,IACHN,KAAWE,MAAsB,UAAYF,KAAWG,GACrDI,IAAYJ,KAA2B,CAAA;AAC7C,EAAAL,IAAcA,EAAY,IAAI,CAACU,OAAgB;AAAA,IAC7C,GAAGA;AAAA,IACH,MAAMC,EAAYD,EAAW,IAAI;AAAA,EAAA,EACjC,GACEL,MAA4B,WAC9BL,EAAY,QAAQ,CAACU,MAAe;AAClC,IAAID,EAAU,SAASC,EAAW,IAAI,KACtCD,EAAU,KAAKC,EAAW,IAAI;AAAA,EAChC,CAAC,GACGF,KACFI,EAA+B,QAAQ,CAACC,MAAS;AAC/C,IAAIJ,EAAU,SAASI,CAAI,KAC3BJ,EAAU,KAAKI,CAAI;AAAA,EACrB,CAAC;AAIL,QAAMC,IAA0D,CAAA;AAEhE,aAAWC,KAAaN,GAAW;AACjC,QAAIO,IAAcC,EAAuBF,CAAS,KAAKA;AAEvD,UAAMG,IAAoBlB,EAAY,OAAO,CAACU,MAAeA,EAAW,SAASK,CAAS,GAEpFI,IAAoBL,EAAIE,CAAW,KAAK,CAAA;AAC9C,QAAIE,EAAkB,WAAW,GAAG;AAClC,YAAME,IAAsBC,EAA8B;AAAA,QACxD,SAAAnB;AAAA,QACA,kBAAAD;AAAA,QACA,QAAAE;AAAA,QACA,mBAAAC;AAAA,QACA,MAAMW;AAAA,QACN,cAAAT;AAAA,QACA,6BAAAC;AAAA,MAAA,CACD;AACD,MAAIa,KACFE;AAAA,QACEF;AAAA,QACAL;AAAA,QACAC;AAAA,QACAG;AAAA,QACA;AAAA,MAAA;AAAA,IAGN;AACE,MAAAD,EAAkB,QAAQ,CAACR,MAAe;AACxC,QAAAM,IAAcC,EAAuBF,CAAS,KAAKL,EAAW,SAASK,GACvEO;AAAA,UACEZ;AAAA,UACAK;AAAA,UACAC;AAAA,UACAG;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,CAAC;AAEH,IAAI,OAAO,KAAKA,CAAiB,EAAE,SAAS,MAC1CL,EAAIE,CAAW,IAAIG;AAAA,EAEvB;AAEA,SAAOL;AACT,GAEMQ,IAAmC,CACvCZ,GACAK,GACAC,GACAG,GACAI,MACG;AAEH,EAAI,MAAMJ,MACRA,EAAkB,WAAW,IAAIA,EAAkB,EAAE,GACrD,OAAOA,EAAkB,EAAE;AAG7B,QAAMK,IAAoB,OAAO,KAAKL,CAAiB,EAAE,QACnDM,IACJf,EAAW,UAAUc,IAAoB,IAAI,WAAWA,IAAoB,CAAC,KAAK;AAEpF,EAAAL,EAAkBM,CAAK,IAAI;AAAA,IACzB,UAAUF,IAAcP,IAAcS,KAAST;AAAA;AAAA,IAC/C,UAAUD;AAAA,IACV,MAAML,EAAW;AAAA,EAAA;AAErB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSendPlaygroundRequest.js","sources":["../../../src/api-playground-2/hooks/useSendPlaygroundRequest.ts"],"sourcesContent":["'use client';\n\nimport { ApiPlaygroundResultType } from '@mintlify/models';\nimport { HttpMethod } from '@mintlify/validation';\nimport { AxiosResponse } from 'axios';\nimport { useCallback } from 'react';\nimport { NEXT_PUBLIC } from '@/env';\n\n\nimport { ApiReferenceDataV2 } from '../types';\nimport { usePlaygroundInputsStore } from './usePlaygroundInputsStore';\n\nexport type UseSendPlaygroundRequestProps = {\n apiReferenceData: ApiReferenceDataV2;\n baseUrl: string | undefined;\n contentType: string | undefined;\n setResult: (result: ApiPlaygroundResultType) => void;\n setIsSending: (isSending: boolean) => void;\n};\n\nexport type RequestInfo = {\n method: HttpMethod;\n url: string;\n header: Record<string, unknown>;\n query: Record<string, unknown>;\n cookie: Record<string, unknown>;\n body: unknown;\n};\n\nexport const useSendPlaygroundRequest = ({\n apiReferenceData,\n baseUrl,\n contentType = 'application/json',\n setResult,\n setIsSending,\n}: UseSendPlaygroundRequestProps) => {\n // replace with msft analytics \n const { getApiPlaygroundInputs } = usePlaygroundInputsStore();\n const inputs = getApiPlaygroundInputs();\n\n const disableProxy = apiReferenceData.operation?.disableProxy;\n const path = apiReferenceData.operation?.path;\n const method = apiReferenceData.operation?.method;\n\n return useCallback(async () => {\n setIsSending(true);\n if (!path || !baseUrl || !method || !contentType || !baseUrl) {\n setIsSending(false);\n setResult({\n error: true,\n errorMessage: 'Missing required fields to send a playground request',\n });\n console.error(\n `Missing some required field to send a playground request:\\n\\npath=${path}\\nmethod=${method}\\ncontentType=${contentType}\\nbaseUrl=${baseUrl}`\n );\n return;\n }\n const axios = await import('axios').then((x) => x.default);\n\n const pathWithInputs = addPathParams(path, inputs.path);\n\n const url = joinWithSingleSlash(addServerVariables(baseUrl, inputs.server), pathWithInputs);\n\n const headers = addContentType(inputs.header, contentType);\n\n const request: RequestInfo = {\n method,\n url,\n header: headers,\n body: inputs.body,\n cookie: inputs.cookie,\n query: inputs.query,\n };\n\n try {\n if (disableProxy) {\n const response = await performDirectRequest(request);\n setResult({\n error: false,\n response: {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n data: response.data,\n },\n });\n } else {\n if (contentType && contentType.includes('multipart/form-data')) {\n const data = await performFileRequest(request);\n\n setResult(data);\n } else {\n const { data } = await axios.post<unknown, AxiosResponse<ApiPlaygroundResultType>>(\n `${NEXT_PUBLIC.BASE_PATH}/_mintlify/api/request`,\n request\n );\n setResult(data);\n }\n }\n } catch (err) {\n setResult({\n error: true,\n errorMessage: 'unable to complete request',\n });\n console.error(err);\n }\n setIsSending(false);\n }, [\n method,\n path,\n setIsSending,\n inputs,\n baseUrl,\n contentType,\n disableProxy,\n setResult,\n ]);\n};\n\nexport const addPathParams = (path: string, pathInputs: Record<string, unknown>) => {\n return Object.entries(pathInputs).reduce((path, [inputName, inputValue]) => {\n if (inputValue == undefined) return path;\n return path.replace(`{${inputName}}`, encodeURIComponent(inputValue.toString()));\n }, path);\n};\n\nexport const addServerVariables = (baseUrl: string, variables: Record<string, string>): string => {\n let url = baseUrl;\n Object.entries(variables).forEach(([key, input]) => {\n if (input) url = url.replace(`{${key}}`, input);\n });\n return url;\n};\n\nexport const joinWithSingleSlash = (baseUrl: string, path: string): string => {\n // remove the last slash of the baseUrl and the first slash of the path, and join with slash\n return baseUrl.replace(/\\/$/, '') + '/' + path.replace(/^\\//, '');\n};\n\nconst addContentType = (headers: Record<string, unknown>, contentType: string) => {\n if (Object.keys(headers).some((name) => name.toLowerCase() === 'content-type')) {\n return headers;\n }\n\n return {\n ...headers,\n ['content-type']: contentType,\n };\n};\n\nconst performDirectRequest = async (request: RequestInfo) => {\n const axios = await import('axios').then((it) => it.default);\n\n const contentType = Object.keys(request.header).find(\n (key) => key.toLowerCase() === 'content-type'\n );\n let data = request.body;\n \n let headers = request.header as Record<string, string>;\n if (contentType?.includes('multipart/form-data')) {\n const { data: formData, headers: formHeaders } = handleFormData(request);\n data = formData;\n headers = formHeaders;\n }\n\n return axios({\n url: request.url,\n method: request.method,\n params: request.query,\n data,\n headers,\n // prevent axios from adding [] after array query params\n paramsSerializer: {\n indexes: null,\n },\n responseType: 'arraybuffer',\n // prevent axios from erroring on bad status codes\n validateStatus: () => true,\n // prevent axios from parsing json, losing whitespace information, and using default utf-8 encoding\n // we can't use `responseEncoding` as it's ignored client-side\n transformResponse: (data) => {\n return Buffer.from(data).toString('base64');\n },\n });\n};\n\nconst performFileRequest = async (request: RequestInfo) => {\n const axios = await import('axios').then((it) => it.default);\n const formData = new FormData();\n formData.append(\n 'requestInfo',\n JSON.stringify({\n method: request.method,\n url: request.url,\n header: request.header,\n query: request.query,\n cookie: request.cookie,\n })\n );\n if (typeof request.body === 'object' && request.body !== null) {\n Object.entries(request.body).forEach(([key, value]) => {\n if (value instanceof File) {\n formData.append(key, value);\n } else if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item instanceof File) {\n formData.append(key, item);\n } else if (item !== undefined && item !== null) {\n formData.append(key, typeof item === 'object' ? JSON.stringify(item) : item.toString());\n }\n });\n } else if (value !== undefined && value !== null) {\n formData.append(key, typeof value === 'object' ? JSON.stringify(value) : value.toString());\n }\n });\n }\n\n const { data } = await axios.post<unknown, AxiosResponse<ApiPlaygroundResultType>>(\n `${NEXT_PUBLIC.BASE_PATH}/_mintlify/api/file-request`,\n formData\n );\n return data;\n};\n\nconst handleFormData = (request: RequestInfo) => {\n let data = request.body;\n \n const headers = request.header as Record<string, string>;\n\n if (headers['content-type']?.includes('multipart/form-data')) {\n const formData = new FormData();\n if (typeof data === 'object' && data !== null) {\n Object.entries(data).forEach(([key, value]) => {\n if (value instanceof File) {\n formData.append(key, value);\n } else if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item instanceof File) {\n formData.append(key, item);\n } else if (item !== undefined && item !== null) {\n formData.append(\n key,\n typeof item === 'object' ? JSON.stringify(item) : item.toString()\n );\n }\n });\n } else if (value !== undefined && value !== null) {\n formData.append(\n key,\n typeof value === 'object' ? JSON.stringify(value) : value.toString()\n );\n }\n });\n data = formData;\n delete headers['content-type'];\n }\n }\n return { data, headers };\n};\n"],"names":["useSendPlaygroundRequest","apiReferenceData","baseUrl","contentType","setResult","setIsSending","getApiPlaygroundInputs","usePlaygroundInputsStore","inputs","disableProxy","_a","path","_b","method","_c","useCallback","axios","x","pathWithInputs","addPathParams","url","joinWithSingleSlash","addServerVariables","headers","addContentType","request","response","performDirectRequest","data","performFileRequest","NEXT_PUBLIC","err","pathInputs","inputName","inputValue","variables","key","input","name","it","formData","formHeaders","handleFormData","value","item"],"mappings":"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"}
1
+ {"version":3,"file":"useSendPlaygroundRequest.js","sources":["../../../src/api-playground-2/hooks/useSendPlaygroundRequest.ts"],"sourcesContent":["\nimport { ApiPlaygroundResultType } from '@mintlify/models';\nimport { HttpMethod } from '@mintlify/validation';\nimport { AxiosResponse } from 'axios';\nimport { useCallback } from 'react';\nimport { NEXT_PUBLIC } from '@/env';\n\n\nimport { ApiReferenceDataV2 } from '../types';\nimport { usePlaygroundInputsStore } from './usePlaygroundInputsStore';\n\nexport type UseSendPlaygroundRequestProps = {\n apiReferenceData: ApiReferenceDataV2;\n baseUrl: string | undefined;\n contentType: string | undefined;\n setResult: (result: ApiPlaygroundResultType) => void;\n setIsSending: (isSending: boolean) => void;\n};\n\nexport type RequestInfo = {\n method: HttpMethod;\n url: string;\n header: Record<string, unknown>;\n query: Record<string, unknown>;\n cookie: Record<string, unknown>;\n body: unknown;\n};\n\nexport const useSendPlaygroundRequest = ({\n apiReferenceData,\n baseUrl,\n contentType = 'application/json',\n setResult,\n setIsSending,\n}: UseSendPlaygroundRequestProps) => {\n // replace with msft analytics \n const { getApiPlaygroundInputs } = usePlaygroundInputsStore();\n const inputs = getApiPlaygroundInputs();\n\n const disableProxy = apiReferenceData.operation?.disableProxy;\n const path = apiReferenceData.operation?.path;\n const method = apiReferenceData.operation?.method;\n\n return useCallback(async () => {\n setIsSending(true);\n if (!path || !baseUrl || !method || !contentType || !baseUrl) {\n setIsSending(false);\n setResult({\n error: true,\n errorMessage: 'Missing required fields to send a playground request',\n });\n console.error(\n `Missing some required field to send a playground request:\\n\\npath=${path}\\nmethod=${method}\\ncontentType=${contentType}\\nbaseUrl=${baseUrl}`\n );\n return;\n }\n const axios = await import('axios').then((x) => x.default);\n\n const pathWithInputs = addPathParams(path, inputs.path);\n\n const url = joinWithSingleSlash(addServerVariables(baseUrl, inputs.server), pathWithInputs);\n\n const headers = addContentType(inputs.header, contentType);\n\n const request: RequestInfo = {\n method,\n url,\n header: headers,\n body: inputs.body,\n cookie: inputs.cookie,\n query: inputs.query,\n };\n\n try {\n if (disableProxy) {\n const response = await performDirectRequest(request);\n setResult({\n error: false,\n response: {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n data: response.data,\n },\n });\n } else {\n if (contentType && contentType.includes('multipart/form-data')) {\n const data = await performFileRequest(request);\n\n setResult(data);\n } else {\n const { data } = await axios.post<unknown, AxiosResponse<ApiPlaygroundResultType>>(\n `${NEXT_PUBLIC.BASE_PATH}/_mintlify/api/request`,\n request\n );\n setResult(data);\n }\n }\n } catch (err) {\n setResult({\n error: true,\n errorMessage: 'unable to complete request',\n });\n console.error(err);\n }\n setIsSending(false);\n }, [\n method,\n path,\n setIsSending,\n inputs,\n baseUrl,\n contentType,\n disableProxy,\n setResult,\n ]);\n};\n\nexport const addPathParams = (path: string, pathInputs: Record<string, unknown>) => {\n return Object.entries(pathInputs).reduce((path, [inputName, inputValue]) => {\n if (inputValue == undefined) return path;\n return path.replace(`{${inputName}}`, encodeURIComponent(inputValue.toString()));\n }, path);\n};\n\nexport const addServerVariables = (baseUrl: string, variables: Record<string, string>): string => {\n let url = baseUrl;\n Object.entries(variables).forEach(([key, input]) => {\n if (input) url = url.replace(`{${key}}`, input);\n });\n return url;\n};\n\nexport const joinWithSingleSlash = (baseUrl: string, path: string): string => {\n // remove the last slash of the baseUrl and the first slash of the path, and join with slash\n return baseUrl.replace(/\\/$/, '') + '/' + path.replace(/^\\//, '');\n};\n\nconst addContentType = (headers: Record<string, unknown>, contentType: string) => {\n if (Object.keys(headers).some((name) => name.toLowerCase() === 'content-type')) {\n return headers;\n }\n\n return {\n ...headers,\n ['content-type']: contentType,\n };\n};\n\nconst performDirectRequest = async (request: RequestInfo) => {\n const axios = await import('axios').then((it) => it.default);\n\n const contentType = Object.keys(request.header).find(\n (key) => key.toLowerCase() === 'content-type'\n );\n let data = request.body;\n \n let headers = request.header as Record<string, string>;\n if (contentType?.includes('multipart/form-data')) {\n const { data: formData, headers: formHeaders } = handleFormData(request);\n data = formData;\n headers = formHeaders;\n }\n\n return axios({\n url: request.url,\n method: request.method,\n params: request.query,\n data,\n headers,\n // prevent axios from adding [] after array query params\n paramsSerializer: {\n indexes: null,\n },\n responseType: 'arraybuffer',\n // prevent axios from erroring on bad status codes\n validateStatus: () => true,\n // prevent axios from parsing json, losing whitespace information, and using default utf-8 encoding\n // we can't use `responseEncoding` as it's ignored client-side\n transformResponse: (data) => {\n return Buffer.from(data).toString('base64');\n },\n });\n};\n\nconst performFileRequest = async (request: RequestInfo) => {\n const axios = await import('axios').then((it) => it.default);\n const formData = new FormData();\n formData.append(\n 'requestInfo',\n JSON.stringify({\n method: request.method,\n url: request.url,\n header: request.header,\n query: request.query,\n cookie: request.cookie,\n })\n );\n if (typeof request.body === 'object' && request.body !== null) {\n Object.entries(request.body).forEach(([key, value]) => {\n if (value instanceof File) {\n formData.append(key, value);\n } else if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item instanceof File) {\n formData.append(key, item);\n } else if (item !== undefined && item !== null) {\n formData.append(key, typeof item === 'object' ? JSON.stringify(item) : item.toString());\n }\n });\n } else if (value !== undefined && value !== null) {\n formData.append(key, typeof value === 'object' ? JSON.stringify(value) : value.toString());\n }\n });\n }\n\n const { data } = await axios.post<unknown, AxiosResponse<ApiPlaygroundResultType>>(\n `${NEXT_PUBLIC.BASE_PATH}/_mintlify/api/file-request`,\n formData\n );\n return data;\n};\n\nconst handleFormData = (request: RequestInfo) => {\n let data = request.body;\n \n const headers = request.header as Record<string, string>;\n\n if (headers['content-type']?.includes('multipart/form-data')) {\n const formData = new FormData();\n if (typeof data === 'object' && data !== null) {\n Object.entries(data).forEach(([key, value]) => {\n if (value instanceof File) {\n formData.append(key, value);\n } else if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item instanceof File) {\n formData.append(key, item);\n } else if (item !== undefined && item !== null) {\n formData.append(\n key,\n typeof item === 'object' ? JSON.stringify(item) : item.toString()\n );\n }\n });\n } else if (value !== undefined && value !== null) {\n formData.append(\n key,\n typeof value === 'object' ? JSON.stringify(value) : value.toString()\n );\n }\n });\n data = formData;\n delete headers['content-type'];\n }\n }\n return { data, headers };\n};\n"],"names":["useSendPlaygroundRequest","apiReferenceData","baseUrl","contentType","setResult","setIsSending","getApiPlaygroundInputs","usePlaygroundInputsStore","inputs","disableProxy","_a","path","_b","method","_c","useCallback","axios","x","pathWithInputs","addPathParams","url","joinWithSingleSlash","addServerVariables","headers","addContentType","request","response","performDirectRequest","data","performFileRequest","NEXT_PUBLIC","err","pathInputs","inputName","inputValue","variables","key","input","name","it","formData","formHeaders","handleFormData","value","item"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.js","sources":["../../../src/components/Api/ErrorBoundary.tsx"],"sourcesContent":["'use client';\n\nimport React, { ReactNode } from 'react';\n\nclass ErrorBoundary extends React.Component<{ children: ReactNode }, { hasError: boolean }> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n console.log({ error, errorInfo });\n }\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"],"names":["ErrorBoundary","React","props","error","errorInfo"],"mappings":";AAIA,MAAMA,UAAsBC,EAAM,UAA0D;AAAA,EAC1F,YAAYC,GAAgC;AAC1C,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,UAAU,GAAA;AAAA,EAC3B;AAAA,EACA,OAAO,2BAA2B;AAChC,WAAO,EAAE,UAAU,GAAA;AAAA,EACrB;AAAA,EACA,kBAAkBC,GAAcC,GAAkC;AAChE,YAAQ,IAAI,EAAE,OAAAD,GAAO,WAAAC,EAAA,CAAW;AAAA,EAClC;AAAA,EACA,SAAS;AACP,WAAI,KAAK,MAAM,WACN,OAEF,KAAK,MAAM;AAAA,EACpB;AACF;"}
1
+ {"version":3,"file":"ErrorBoundary.js","sources":["../../../src/components/Api/ErrorBoundary.tsx"],"sourcesContent":["\nimport React, { ReactNode } from 'react';\n\nclass ErrorBoundary extends React.Component<{ children: ReactNode }, { hasError: boolean }> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n console.log({ error, errorInfo });\n }\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"],"names":["ErrorBoundary","React","props","error","errorInfo"],"mappings":";AAGA,MAAMA,UAAsBC,EAAM,UAA0D;AAAA,EAC1F,YAAYC,GAAgC;AAC1C,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,UAAU,GAAA;AAAA,EAC3B;AAAA,EACA,OAAO,2BAA2B;AAChC,WAAO,EAAE,UAAU,GAAA;AAAA,EACrB;AAAA,EACA,kBAAkBC,GAAcC,GAAkC;AAChE,YAAQ,IAAI,EAAE,OAAAD,GAAO,WAAAC,EAAA,CAAW;AAAA,EAClC;AAAA,EACA,SAAS;AACP,WAAI,KAAK,MAAM,WACN,OAEF,KAAK,MAAM;AAAA,EACpB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Expandable.js","sources":["../../../src/components/Api/Expandable.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode, useContext, useEffect, useRef, useState } from \"react\";\n\nimport { EndpointLocationContext } from \"@/contexts/EndpointLocationContext\";\nimport { useSelectedLocale } from \"@/utils/locales\";\nimport { useExpandableMemory } from \"@/hooks/useExpandableMemory\";\nimport { Classes } from \"@/api-playground-2/types\";\nimport { ChevronRightFilled } from '@fluentui/react-icons';\nimport { cn } from \"@/api-playground-2/schemaGraph/utils\";\nimport { scrollElementIntoView } from \"@/utils/scrollElementIntoView\";\n\nconst EXPANDABLE_CONTENT_CLASS = \"expandable-content\";\n\nexport interface ExpandableProps {\n title?: string;\n defaultOpen?: boolean;\n onChange?: (open: boolean) => void;\n lazy?: boolean;\n children?: ReactNode;\n uniqueParamId?: string;\n}\n\nexport function Expandable({\n title,\n defaultOpen = false,\n onChange: onChangeProp,\n lazy,\n children,\n uniqueParamId,\n}: ExpandableProps) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n\n const locale = useSelectedLocale();\n // if uniqueParamId is provided, we use session storage to\n // track if a user manually toggled the param field expandable\n const shouldUseSessionStorage = !!uniqueParamId;\n const { isExpanded, onManualToggle } = useExpandableMemory(\n uniqueParamId || \"\",\n defaultOpen\n );\n\n // in case we ever render an expandable that is not a param field,\n // we can just use regular state to track it\n const [localOpen, setLocalOpen] = useState(defaultOpen);\n\n const open = defaultOpen || shouldUseSessionStorage ? isExpanded : localOpen;\n\n // setShouldRenderChildren should only ever be called with true - we never want to unmount stateful components\n const [shouldRenderChildren, setShouldRenderChildren] = useState(\n open || !lazy\n );\n\n const expandableRef = useRef<HTMLDetailsElement>(null);\n\n const openClosestExpandables = (element: HTMLElement) => {\n let parent = element.closest(`.${EXPANDABLE_CONTENT_CLASS}`);\n while (parent) {\n const button = parent.previousElementSibling as HTMLButtonElement;\n if (button.getAttribute(\"aria-expanded\") === \"false\") {\n button.click();\n }\n parent =\n parent.parentElement?.closest(`.${EXPANDABLE_CONTENT_CLASS}`) ?? null;\n }\n };\n\n useEffect(() => {\n const checkHashAndExpand = () => {\n scrollElementIntoView({\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current,\n checkIfShouldScroll(targetEl) {\n return (\n !!expandableRef.current && expandableRef.current.contains(targetEl)\n );\n },\n preScrollCallback(targetEl) {\n if (shouldUseSessionStorage) {\n onManualToggle(true);\n } else {\n setLocalOpen(true);\n }\n openClosestExpandables(targetEl);\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n };\n\n checkHashAndExpand();\n window.addEventListener(\"hashchange\", checkHashAndExpand);\n return () => {\n window.removeEventListener(\"hashchange\", checkHashAndExpand);\n };\n }, [shouldUseSessionStorage, onManualToggle, hasScrolledToAnchorRef]);\n\n const onChange = (open: boolean) => {\n setShouldRenderChildren(true);\n\n if (onChangeProp) {\n onChangeProp(open);\n }\n };\n\n const setOpenState = (newOpenState: boolean) => {\n if (shouldUseSessionStorage) {\n onManualToggle(newOpenState);\n } else {\n setLocalOpen(newOpenState);\n }\n\n onChange(newOpenState);\n };\n\n return (\n <details\n key={title}\n ref={expandableRef}\n open={open}\n onToggle={(e) => {\n const newState = e.currentTarget.open;\n if (newState !== open) {\n setOpenState(newState);\n }\n }}\n className={cn(Classes.Expandable, \"mint:mt-4 mint:mb-4 mint:border-standard mint:rounded-xl\")}\n data-testid={uniqueParamId + \"-children\"}\n >\n <summary\n className={cn(\n \"not-prose mint:text-sm mint:flex mint:flex-row mint:items-center mint:content-center mint:w-full mint:cursor-pointer\",\n \"mint:text-gray-600 mint:hover:text-gray-900 mint:dark:text-gray-300 mint:dark:hover:text-gray-200 mint:py-3 mint:px-3.5 mint:hover:bg-gray-50/50 mint:dark:hover:bg-white/5 mint:rounded-t-xl\",\n \"mint:list-none mint:[&::-webkit-details-marker]:hidden\",\n !open && \"mint:rounded-b-xl\"\n )}\n aria-controls=\"Children attributes\"\n aria-expanded={open}\n data-component-part=\"expandable-button\"\n >\n <ChevronRightFilled\n className={cn(\n \"mint:h-2.5 mint:w-2.5 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0 mint:transition-transform\",\n open && \"mint:rotate-180\"\n )}\n />\n <div className=\"mint:ml-3 mint:leading-tight mint:text-left\">\n <p className=\"mint:m-0\" contentEditable={false}>\n {open ? locale[\"hide\"] : locale[\"show\"]}{\" \"}\n {title || locale[\"childAttributes\"]}\n </p>\n </div>\n </summary>\n <div\n id={title + \"Children\"}\n className={cn(\n EXPANDABLE_CONTENT_CLASS,\n \"mint:mx-3 mint:px-2 mint:border-t mint:border-gray-100 mint:dark:border-white/10\"\n )}\n data-component-part={EXPANDABLE_CONTENT_CLASS}\n >\n {shouldRenderChildren && children}\n </div>\n </details>\n );\n}\n"],"names":["EXPANDABLE_CONTENT_CLASS","Expandable","title","defaultOpen","onChangeProp","lazy","children","uniqueParamId","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","shouldUseSessionStorage","isExpanded","onManualToggle","useExpandableMemory","localOpen","setLocalOpen","useState","open","shouldRenderChildren","setShouldRenderChildren","expandableRef","useRef","openClosestExpandables","element","parent","button","_a","useEffect","checkHashAndExpand","scrollElementIntoView","targetEl","onChange","setOpenState","newOpenState","jsxs","e","newState","cn","Classes","jsx","ChevronRightFilled"],"mappings":"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"}
1
+ {"version":3,"file":"Expandable.js","sources":["../../../src/components/Api/Expandable.tsx"],"sourcesContent":["\nimport { ReactNode, useContext, useEffect, useRef, useState } from \"react\";\n\nimport { EndpointLocationContext } from \"@/contexts/EndpointLocationContext\";\nimport { useSelectedLocale } from \"@/utils/locales\";\nimport { useExpandableMemory } from \"@/hooks/useExpandableMemory\";\nimport { Classes } from \"@/api-playground-2/types\";\nimport { ChevronRightFilled } from '@fluentui/react-icons';\nimport { cn } from \"@/api-playground-2/schemaGraph/utils\";\nimport { scrollElementIntoView } from \"@/utils/scrollElementIntoView\";\n\nconst EXPANDABLE_CONTENT_CLASS = \"expandable-content\";\n\nexport interface ExpandableProps {\n title?: string;\n defaultOpen?: boolean;\n onChange?: (open: boolean) => void;\n lazy?: boolean;\n children?: ReactNode;\n uniqueParamId?: string;\n}\n\nexport function Expandable({\n title,\n defaultOpen = false,\n onChange: onChangeProp,\n lazy,\n children,\n uniqueParamId,\n}: ExpandableProps) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n\n const locale = useSelectedLocale();\n // if uniqueParamId is provided, we use session storage to\n // track if a user manually toggled the param field expandable\n const shouldUseSessionStorage = !!uniqueParamId;\n const { isExpanded, onManualToggle } = useExpandableMemory(\n uniqueParamId || \"\",\n defaultOpen\n );\n\n // in case we ever render an expandable that is not a param field,\n // we can just use regular state to track it\n const [localOpen, setLocalOpen] = useState(defaultOpen);\n\n const open = defaultOpen || shouldUseSessionStorage ? isExpanded : localOpen;\n\n // setShouldRenderChildren should only ever be called with true - we never want to unmount stateful components\n const [shouldRenderChildren, setShouldRenderChildren] = useState(\n open || !lazy\n );\n\n const expandableRef = useRef<HTMLDetailsElement>(null);\n\n const openClosestExpandables = (element: HTMLElement) => {\n let parent = element.closest(`.${EXPANDABLE_CONTENT_CLASS}`);\n while (parent) {\n const button = parent.previousElementSibling as HTMLButtonElement;\n if (button.getAttribute(\"aria-expanded\") === \"false\") {\n button.click();\n }\n parent =\n parent.parentElement?.closest(`.${EXPANDABLE_CONTENT_CLASS}`) ?? null;\n }\n };\n\n useEffect(() => {\n const checkHashAndExpand = () => {\n scrollElementIntoView({\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current,\n checkIfShouldScroll(targetEl) {\n return (\n !!expandableRef.current && expandableRef.current.contains(targetEl)\n );\n },\n preScrollCallback(targetEl) {\n if (shouldUseSessionStorage) {\n onManualToggle(true);\n } else {\n setLocalOpen(true);\n }\n openClosestExpandables(targetEl);\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n };\n\n checkHashAndExpand();\n window.addEventListener(\"hashchange\", checkHashAndExpand);\n return () => {\n window.removeEventListener(\"hashchange\", checkHashAndExpand);\n };\n }, [shouldUseSessionStorage, onManualToggle, hasScrolledToAnchorRef]);\n\n const onChange = (open: boolean) => {\n setShouldRenderChildren(true);\n\n if (onChangeProp) {\n onChangeProp(open);\n }\n };\n\n const setOpenState = (newOpenState: boolean) => {\n if (shouldUseSessionStorage) {\n onManualToggle(newOpenState);\n } else {\n setLocalOpen(newOpenState);\n }\n\n onChange(newOpenState);\n };\n\n return (\n <details\n key={title}\n ref={expandableRef}\n open={open}\n onToggle={(e) => {\n const newState = e.currentTarget.open;\n if (newState !== open) {\n setOpenState(newState);\n }\n }}\n className={cn(Classes.Expandable, \"mint:mt-4 mint:mb-4 mint:border-standard mint:rounded-xl\")}\n data-testid={uniqueParamId + \"-children\"}\n >\n <summary\n className={cn(\n \"not-prose mint:text-sm mint:flex mint:flex-row mint:items-center mint:content-center mint:w-full mint:cursor-pointer\",\n \"mint:text-gray-600 mint:hover:text-gray-900 mint:dark:text-gray-300 mint:dark:hover:text-gray-200 mint:py-3 mint:px-3.5 mint:hover:bg-gray-50/50 mint:dark:hover:bg-white/5 mint:rounded-t-xl\",\n \"mint:list-none mint:[&::-webkit-details-marker]:hidden\",\n !open && \"mint:rounded-b-xl\"\n )}\n aria-controls=\"Children attributes\"\n aria-expanded={open}\n data-component-part=\"expandable-button\"\n >\n <ChevronRightFilled\n className={cn(\n \"mint:h-2.5 mint:w-2.5 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0 mint:transition-transform\",\n open && \"mint:rotate-180\"\n )}\n />\n <div className=\"mint:ml-3 mint:leading-tight mint:text-left\">\n <p className=\"mint:m-0\" contentEditable={false}>\n {open ? locale[\"hide\"] : locale[\"show\"]}{\" \"}\n {title || locale[\"childAttributes\"]}\n </p>\n </div>\n </summary>\n <div\n id={title + \"Children\"}\n className={cn(\n EXPANDABLE_CONTENT_CLASS,\n \"mint:mx-3 mint:px-2 mint:border-t mint:border-gray-100 mint:dark:border-white/10\"\n )}\n data-component-part={EXPANDABLE_CONTENT_CLASS}\n >\n {shouldRenderChildren && children}\n </div>\n </details>\n );\n}\n"],"names":["EXPANDABLE_CONTENT_CLASS","Expandable","title","defaultOpen","onChangeProp","lazy","children","uniqueParamId","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","shouldUseSessionStorage","isExpanded","onManualToggle","useExpandableMemory","localOpen","setLocalOpen","useState","open","shouldRenderChildren","setShouldRenderChildren","expandableRef","useRef","openClosestExpandables","element","parent","button","_a","useEffect","checkHashAndExpand","scrollElementIntoView","targetEl","onChange","setOpenState","newOpenState","jsxs","e","newState","cn","Classes","jsx","ChevronRightFilled"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","sources":["../../../src/components/Api/Markdown.tsx"],"sourcesContent":["'use client';\n\nimport ReactMarkdown, { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { CodeBlock } from '../content-components/code-block';\nimport { getNodeText } from '../content-components/getNodeText';\nimport { cn } from \"../../utils/cn\";\n\nconst commonRemarkPlugins = [remarkGfm];\n\nexport function Markdown({\n children,\n className,\n components,\n showCopyButton = false,\n}: {\n children: string;\n className?: string;\n components?: Partial<Components> | null | undefined;\n showCopyButton?: boolean;\n}) {\n\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={commonRemarkPlugins}\n components={{\n p: ({ children }) => <p className=\"mint:break-words\">{children}</p>,\n pre: ({ children, ...props }) => {\n if (\n typeof children === 'object' &&\n children !== null &&\n 'props' in children &&\n typeof children.props === 'object' &&\n children.props !== null &&\n 'className' in children.props &&\n children.props.className === 'language-suggestions'\n ) {\n return children;\n }\n\n const codeString = getNodeText(children);\n\n return (\n <div className=\"mint:relative\">\n <pre\n {...props}\n className={props.className}\n >\n {children}\n </pre>\n {showCopyButton && (\n <div className=\"mint:absolute mint:top-2 mint:right-2\">\n <CodeBlock children={codeString} />\n </div>\n )}\n </div>\n );\n },\n ...components,\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport const MarkdownWithoutHeaders = ({\n children,\n className,\n}: {\n children: string;\n className?: string;\n}) => {\n const headingClass = 'mint:text-base mint:font-medium';\n return (\n <Markdown\n components={{\n h1: ({ children }) => <h1 className={headingClass}>{children}</h1>,\n h2: ({ children }) => <h2 className={headingClass}>{children}</h2>,\n h3: ({ children }) => <h3 className={headingClass}>{children}</h3>,\n h4: ({ children }) => <h4 className={headingClass}>{children}</h4>,\n h5: ({ children }) => <h5 className={headingClass}>{children}</h5>,\n h6: ({ children }) => <h6 className={headingClass}>{children}</h6>,\n }}\n className={className}\n >\n {children}\n </Markdown>\n );\n};\n"],"names":["commonRemarkPlugins","remarkGfm","Markdown","children","className","components","showCopyButton","jsx","ReactMarkdown","props","codeString","getNodeText","jsxs","CodeBlock","MarkdownWithoutHeaders","headingClass"],"mappings":";;;;;AASA,MAAMA,IAAsB,CAACC,CAAS;AAE/B,SAASC,EAAS;AAAA,EACvB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAKG;AAED,SACE,gBAAAC,EAAC,SAAI,WAAAH,GACH,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAeR;AAAA,MACf,YAAY;AAAA,QACV,GAAG,CAAC,EAAE,UAAAG,EAAAA,MAAe,gBAAAI,EAAC,KAAA,EAAE,WAAU,oBAAoB,UAAAJ,EAAAA,CAAS;AAAA,QAC/D,KAAK,CAAC,EAAE,UAAAA,GAAU,GAAGM,QAAY;AAC/B,cACE,OAAON,KAAa,YACpBA,MAAa,QACb,WAAWA,KACX,OAAOA,EAAS,SAAU,YAC1BA,EAAS,UAAU,QACnB,eAAeA,EAAS,SACxBA,EAAS,MAAM,cAAc;AAE7B,mBAAOA;AAGT,gBAAMO,IAAaC,EAAYR,CAAQ;AAEvC,iBACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAGE;AAAA,gBACJ,WAAWA,EAAM;AAAA,gBAEhB,UAAAN;AAAAA,cAAA;AAAA,YAAA;AAAA,YAEFG,uBACE,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAC,EAACM,GAAA,EAAU,UAAUH,EAAA,CAAY,EAAA,CACnC;AAAA,UAAA,GAEJ;AAAA,QAEJ;AAAA,QACA,GAAGL;AAAA,MAAA;AAAA,MAGJ,UAAAF;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAMW,IAAyB,CAAC;AAAA,EACrC,UAAAX;AAAA,EACA,WAAAC;AACF,MAGM;AACJ,QAAMW,IAAe;AACrB,SACE,gBAAAR;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,QACV,IAAI,CAAC,EAAE,UAAAC,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,QAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,MAAA;AAAA,MAE/D,WAAAC;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"Markdown.js","sources":["../../../src/components/Api/Markdown.tsx"],"sourcesContent":["\nimport ReactMarkdown, { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { CodeBlock } from '../content-components/code-block';\nimport { getNodeText } from '../content-components/getNodeText';\nimport { cn } from \"../../utils/cn\";\n\nconst commonRemarkPlugins = [remarkGfm];\n\nexport function Markdown({\n children,\n className,\n components,\n showCopyButton = false,\n}: {\n children: string;\n className?: string;\n components?: Partial<Components> | null | undefined;\n showCopyButton?: boolean;\n}) {\n\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={commonRemarkPlugins}\n components={{\n p: ({ children }) => <p className=\"mint:break-words\">{children}</p>,\n pre: ({ children, ...props }) => {\n if (\n typeof children === 'object' &&\n children !== null &&\n 'props' in children &&\n typeof children.props === 'object' &&\n children.props !== null &&\n 'className' in children.props &&\n children.props.className === 'language-suggestions'\n ) {\n return children;\n }\n\n const codeString = getNodeText(children);\n\n return (\n <div className=\"mint:relative\">\n <pre\n {...props}\n className={props.className}\n >\n {children}\n </pre>\n {showCopyButton && (\n <div className=\"mint:absolute mint:top-2 mint:right-2\">\n <CodeBlock children={codeString} />\n </div>\n )}\n </div>\n );\n },\n ...components,\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport const MarkdownWithoutHeaders = ({\n children,\n className,\n}: {\n children: string;\n className?: string;\n}) => {\n const headingClass = 'mint:text-base mint:font-medium';\n return (\n <Markdown\n components={{\n h1: ({ children }) => <h1 className={headingClass}>{children}</h1>,\n h2: ({ children }) => <h2 className={headingClass}>{children}</h2>,\n h3: ({ children }) => <h3 className={headingClass}>{children}</h3>,\n h4: ({ children }) => <h4 className={headingClass}>{children}</h4>,\n h5: ({ children }) => <h5 className={headingClass}>{children}</h5>,\n h6: ({ children }) => <h6 className={headingClass}>{children}</h6>,\n }}\n className={className}\n >\n {children}\n </Markdown>\n );\n};\n"],"names":["commonRemarkPlugins","remarkGfm","Markdown","children","className","components","showCopyButton","jsx","ReactMarkdown","props","codeString","getNodeText","jsxs","CodeBlock","MarkdownWithoutHeaders","headingClass"],"mappings":";;;;;AAQA,MAAMA,IAAsB,CAACC,CAAS;AAE/B,SAASC,EAAS;AAAA,EACvB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAKG;AAED,SACE,gBAAAC,EAAC,SAAI,WAAAH,GACH,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAeR;AAAA,MACf,YAAY;AAAA,QACV,GAAG,CAAC,EAAE,UAAAG,EAAAA,MAAe,gBAAAI,EAAC,KAAA,EAAE,WAAU,oBAAoB,UAAAJ,EAAAA,CAAS;AAAA,QAC/D,KAAK,CAAC,EAAE,UAAAA,GAAU,GAAGM,QAAY;AAC/B,cACE,OAAON,KAAa,YACpBA,MAAa,QACb,WAAWA,KACX,OAAOA,EAAS,SAAU,YAC1BA,EAAS,UAAU,QACnB,eAAeA,EAAS,SACxBA,EAAS,MAAM,cAAc;AAE7B,mBAAOA;AAGT,gBAAMO,IAAaC,EAAYR,CAAQ;AAEvC,iBACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAGE;AAAA,gBACJ,WAAWA,EAAM;AAAA,gBAEhB,UAAAN;AAAAA,cAAA;AAAA,YAAA;AAAA,YAEFG,uBACE,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAC,EAACM,GAAA,EAAU,UAAUH,EAAA,CAAY,EAAA,CACnC;AAAA,UAAA,GAEJ;AAAA,QAEJ;AAAA,QACA,GAAGL;AAAA,MAAA;AAAA,MAGJ,UAAAF;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAMW,IAAyB,CAAC;AAAA,EACrC,UAAAX;AAAA,EACA,WAAAC;AACF,MAGM;AACJ,QAAMW,IAAe;AACrB,SACE,gBAAAR;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,QACV,IAAI,CAAC,EAAE,UAAAC,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,QAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,MAAA;AAAA,MAE/D,WAAAC;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MethodPill.js","sources":["../../../src/components/Api/MethodPill.tsx"],"sourcesContent":["'use client';\n\nimport { getMethodColor, getShortenedMethodName } from './colors';\nimport { cn } from '../../utils/cn';\n\ntype MethodPillProps = {\n isActive: boolean;\n method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace' | string;\n shortMethod?: boolean;\n className?: string;\n};\n\nexport const MethodPill = ({ isActive = false, method, shortMethod = false, className }: MethodPillProps) => {\n const upperMethod = method.toUpperCase();\n const shortenedMethod = getShortenedMethodName(upperMethod);\n const { activeNavPillBg, activeNavPillText, inactiveNavPillText, inactiveNavPillBg } =\n getMethodColor(method);\n return (\n <span\n className={cn(\n shortMethod\n ? 'mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold'\n : 'mint:px-2 mint:py-0.5 mint:rounded-md mint:text-sm mint:leading-tight mint:font-bold',\n isActive\n ? `${activeNavPillBg} ${activeNavPillText}`\n : `${inactiveNavPillBg} ${inactiveNavPillText}`,\n className\n )}\n >\n {shortMethod ? shortenedMethod : upperMethod}\n </span>\n );\n};\n"],"names":["MethodPill","isActive","method","shortMethod","className","upperMethod","shortenedMethod","getShortenedMethodName","activeNavPillBg","activeNavPillText","inactiveNavPillText","inactiveNavPillBg","getMethodColor","jsx","cn"],"mappings":";;;AAYO,MAAMA,IAAa,CAAC,EAAE,UAAAC,IAAW,IAAO,QAAAC,GAAQ,aAAAC,IAAc,IAAO,WAAAC,QAAiC;AAC3G,QAAMC,IAAcH,EAAO,YAAA,GACrBI,IAAkBC,EAAuBF,CAAW,GACpD,EAAE,iBAAAG,GAAiB,mBAAAC,GAAmB,qBAAAC,GAAqB,mBAAAC,EAAA,IAC/DC,EAAeV,CAAM;AACvB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTX,IACI,gGACA;AAAA,QACJF,IACI,GAAGO,CAAe,IAAIC,CAAiB,KACvC,GAAGE,CAAiB,IAAID,CAAmB;AAAA,QAC/CN;AAAA,MAAA;AAAA,MAGD,cAAcE,IAAkBD;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
1
+ {"version":3,"file":"MethodPill.js","sources":["../../../src/components/Api/MethodPill.tsx"],"sourcesContent":["\nimport { getMethodColor, getShortenedMethodName } from './colors';\nimport { cn } from '../../utils/cn';\n\ntype MethodPillProps = {\n isActive: boolean;\n method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace' | string;\n shortMethod?: boolean;\n className?: string;\n};\n\nexport const MethodPill = ({ isActive = false, method, shortMethod = false, className }: MethodPillProps) => {\n const upperMethod = method.toUpperCase();\n const shortenedMethod = getShortenedMethodName(upperMethod);\n const { activeNavPillBg, activeNavPillText, inactiveNavPillText, inactiveNavPillBg } =\n getMethodColor(method);\n return (\n <span\n className={cn(\n shortMethod\n ? 'mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold'\n : 'mint:px-2 mint:py-0.5 mint:rounded-md mint:text-sm mint:leading-tight mint:font-bold',\n isActive\n ? `${activeNavPillBg} ${activeNavPillText}`\n : `${inactiveNavPillBg} ${inactiveNavPillText}`,\n className\n )}\n >\n {shortMethod ? shortenedMethod : upperMethod}\n </span>\n );\n};\n"],"names":["MethodPill","isActive","method","shortMethod","className","upperMethod","shortenedMethod","getShortenedMethodName","activeNavPillBg","activeNavPillText","inactiveNavPillText","inactiveNavPillBg","getMethodColor","jsx","cn"],"mappings":";;;AAWO,MAAMA,IAAa,CAAC,EAAE,UAAAC,IAAW,IAAO,QAAAC,GAAQ,aAAAC,IAAc,IAAO,WAAAC,QAAiC;AAC3G,QAAMC,IAAcH,EAAO,YAAA,GACrBI,IAAkBC,EAAuBF,CAAW,GACpD,EAAE,iBAAAG,GAAiB,mBAAAC,GAAmB,qBAAAC,GAAqB,mBAAAC,EAAA,IAC/DC,EAAeV,CAAM;AACvB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTX,IACI,gGACA;AAAA,QACJF,IACI,GAAGO,CAAe,IAAIC,CAAiB,KACvC,GAAGE,CAAiB,IAAID,CAAmB;AAAA,QAC/CN;AAAA,MAAA;AAAA,MAGD,cAAcE,IAAkBD;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Param.js","sources":["../../../src/components/Api/Param.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useEffect, useRef, useState, useMemo, useContext } from 'react';\n\nimport { buildRecursiveParamFieldId } from '@/api-playground/EndpointFields/ParamFields/RecursiveParamField';\nimport { OptionDropdown } from '@/api-playground/EndpointFields/components/OptionDropdown';\nimport { EndpointLocationContext } from '@/contexts/EndpointLocationContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { LinkMultipleRegular } from '@fluentui/react-icons';\nimport { setParamFieldDefault } from '@/utils/api-playground/paramFieldDefaults';\nimport { parseDefaultByType } from '@/utils/api-playground/parseDefaultByType';\nimport { cn } from '@/api-playground-2/schemaGraph/utils';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\nimport { scrollElementIntoView } from '@/utils/scrollElementIntoView';\nimport { FieldType } from '@/api-playground-2/types/api';\nimport { Classes } from '@/api-playground-2/types';\n\nconst MAX_DEFAULT_VALUE_LENGTH = 50;\n\nexport type ParamProps = {\n query?: string;\n path?: string;\n body?: string;\n header?: string;\n children: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: any;\n type?: string;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n placeholder?: string;\n enum?: string[];\n id?: string;\n pre?: string[];\n post?: string[];\n};\n\nexport function InfoPill({\n children,\n prefix,\n className,\n}: {\n children: React.ReactNode;\n prefix?: string;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'mint:flex mint:items-center mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200 mint:font-medium mint:break-all',\n className\n )}\n data-component-part=\"field-info-pill\"\n >\n {prefix && <span className=\"mint:text-gray-400 mint:dark:text-gray-500\">{prefix}</span>}\n <span>{children}</span>\n </div>\n );\n}\n\nexport function RequiredPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-red-100/50 mint:dark:bg-red-400/10 mint:text-red-600 mint:dark:text-red-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-required-pill\"\n >\n required\n </div>\n );\n}\n\nexport function DeprecatedPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-amber-100/50 mint:dark:bg-amber-400/10 mint:text-amber-600 mint:dark:text-amber-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-deprecated-pill\"\n >\n deprecated\n </div>\n );\n}\n\nexport function ParamField({\n query,\n path,\n body,\n header,\n children,\n default: defaultValue,\n type,\n location,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n}: ParamProps) {\n const name = query || path || body || header;\n\n useEffect(() => {\n if (name && defaultValue !== undefined) {\n const loc = query ? 'query' : path ? 'path' : header ? 'header' : body ? 'body' : undefined;\n\n if (loc) {\n const parsed = parseDefaultByType(\n type,\n typeof defaultValue === 'string' ? defaultValue : JSON.stringify(defaultValue)\n );\n setParamFieldDefault(loc, name, parsed);\n }\n }\n }, [name, defaultValue, query, path, header, location]);\n\n if (name == null) {\n return null;\n }\n\n return (\n <GenericParam\n name={name}\n defaultValue={defaultValue}\n type={type}\n location={location}\n required={required}\n deprecated={deprecated}\n hidden={hidden}\n id={id}\n pre={pre}\n post={post}\n >\n {children}\n </GenericParam>\n );\n}\n\nexport function ParamHead({\n name,\n typeLabel,\n location,\n required,\n deprecated,\n fieldType,\n defaultValue,\n typeOptions,\n selectedTypeOptionIndex,\n onSelectTypeOption,\n parentName,\n id,\n pre,\n post,\n style,\n explode,\n}: {\n name?: string | null;\n typeLabel?: string;\n fieldType?: FieldType;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n defaultValue?: unknown;\n typeOptions?: string[];\n selectedTypeOptionIndex?: number;\n onSelectTypeOption?: (index: number) => void;\n parentName?: string;\n id?: string;\n pre?: string[];\n post?: string[];\n style?: string;\n explode?: boolean;\n}) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n const locale = useSelectedLocale();\n const pillsRef = useRef<HTMLDivElement>(null);\n const [isMultiLine, setIsMultiLine] = useState(false);\n const paramId = id ?? buildRecursiveParamFieldId(fieldType, name, parentName);\n\n const copyAnchorLink = useCallback(() => {\n if (paramId) {\n void copyToClipboard(window.location.href.split('#')[0] + '#' + paramId);\n window.location.hash = paramId;\n }\n }, [paramId]);\n\n useEffect(() => {\n const ref = pillsRef.current;\n if (!ref) return;\n\n function checkHeight() {\n const height = ref?.offsetHeight ?? 0;\n setIsMultiLine(height > 28);\n }\n\n checkHeight();\n const resizeObserver = new ResizeObserver(checkHeight);\n resizeObserver.observe(ref);\n\n return () => {\n resizeObserver.unobserve(ref);\n };\n }, []);\n\n useEffect(() => {\n scrollElementIntoView({\n id: paramId,\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current || !paramId || !!parentName,\n checkIfShouldScroll(_targetEl, hash) {\n return hash === paramId;\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n }, [hasScrolledToAnchorRef, paramId, parentName]);\n\n const paramInfo = !parentName ? (\n name\n ) : style === 'deepObject' && explode ? (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">]</span>\n </>\n ) : (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n </>\n );\n\n return name == null ? null : (\n <div\n className='mint:flex mint:font-mono mint:text-sm mint:group/param-head mint:param-head mint:break-all mint:relative'\n id={paramId}\n key={paramId}\n >\n <div className=\"mint:flex-1 mint:flex mint:content-start mint:py-0.5 mint:mr-5\">\n <div className=\"mint:flex mint:items-center mint:flex-wrap mint:gap-2 mint:mt-2\">\n {paramId && (\n <div className=\"mint:absolute\">\n <a\n href={`#${paramId}`}\n className={cn(\n parentName ? 'mint:-ml-[2.1rem]' : 'mint:-ml-10',\n 'mint:flex mint:items-center mint:opacity-0 mint:border-0 mint:group-hover/param-head:opacity-100 mint:focus:opacity-100 mint:focus:outline-0 mint:py-2 mint:[.expandable-content_&]:-ml-[2.1rem] mint:group/link'\n )}\n aria-label={locale['aria.navigateToHeader']}\n onClick={copyAnchorLink}\n >\n &#8203;\n <div className=\"mint:w-6 mint:h-6 mint:rounded-md mint:flex mint:items-center mint:justify-center mint:shadow-sm mint:text-gray-400 mint:dark:text-white/50 mint:dark:bg-background-dark mint:dark:brightness-[1.35] mint:dark:ring-1 mint:dark:hover:brightness-150 mint:bg-white mint:ring-1 mint:ring-gray-400/30 mint:dark:ring-gray-700/25 mint:hover:ring-gray-400/60 mint:dark:hover:ring-white/20 mint:group-focus/link:border-2 mint:group-focus/link:border-primary mint:dark:group-focus/link:border-primary-light\">\n <LinkMultipleRegular />\n </div>\n </a>\n </div>\n )}\n {pre?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:mb-2 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-pre\"\n >\n {item}\n </div>\n ))}\n {(parentName || name) && (\n <div\n className=\"mint:font-semibold mint:text-[#643FB2] mint:mt-2 mint:mb-2 mint:dark:text-[#C9AAF9] mint:cursor-pointer mint:overflow-wrap-anywhere\"\n data-component-part=\"field-name\"\n onClick={copyAnchorLink}\n >\n {paramInfo}\n </div>\n )}\n <div\n ref={pillsRef}\n className={cn(\n 'mint:inline mint:items-center mint:gap-2 mint:text-xs mint:font-medium mint:[&_div]:inline mint:[&_div]:mr-2',\n isMultiLine ? 'mint:[&_div]:leading-6' : 'mint:[&_div]:leading-5'\n )}\n data-component-part=\"field-meta\"\n >\n {typeOptions && typeOptions.length > 1 && onSelectTypeOption ? (\n <OptionDropdown\n options={typeOptions}\n selectedIndex={selectedTypeOptionIndex}\n onSelectOption={onSelectTypeOption}\n />\n ) : (\n typeLabel && <InfoPill>{typeLabel}</InfoPill>\n )}\n {location && <InfoPill>{location}</InfoPill>}\n {defaultValue != null && (\n <InfoPill prefix=\"default:\">\n {typeof defaultValue === 'string'\n ? defaultValue === ''\n ? '\"\"'\n : defaultValue\n : JSON.stringify(defaultValue)}\n </InfoPill>\n )}\n {required && <RequiredPill />}\n {deprecated && <DeprecatedPill />}\n {post?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-post\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// TODO: Remove from components\nexport type GenericParamProps = {\n name: string;\n type?: string;\n location?: string;\n defaultValue?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n id?: string;\n children: React.ReactNode;\n pre?: string[];\n post?: string[];\n};\n\nexport function GenericParam({\n name,\n type,\n location,\n defaultValue,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n children,\n}: GenericParamProps) {\n const stringifiedDefaultValue = useMemo(() => {\n if (typeof defaultValue === 'object') {\n // don't display values with nested objects; looks bad on one line\n const containsNestedObject = Object.values(defaultValue).some(\n (value) => typeof value === 'object'\n );\n if (containsNestedObject) {\n return null;\n }\n }\n\n const stringifiedValue = JSON.stringify(defaultValue);\n if (\n stringifiedValue &&\n stringifiedValue.length > 0 &&\n stringifiedValue.length < MAX_DEFAULT_VALUE_LENGTH\n ) {\n return stringifiedValue;\n }\n return null;\n }, [defaultValue]);\n\n if (hidden) {\n return null;\n }\n return (\n <div\n className={cn(\n Classes.Field,\n 'mint:pt-2.5 mint:pb-5 mint:my-2.5 mint:border-gray-50 mint:dark:border-gray-800/50 mint:border-b'\n )}\n >\n <ParamHead\n name={name}\n typeLabel={type}\n location={location}\n required={required}\n deprecated={deprecated}\n defaultValue={stringifiedDefaultValue}\n id={id}\n pre={pre}\n post={post}\n />\n {children && (\n <div\n className=\"mint:mt-4 mint:mb-4 mint:prose-sm mint:prose-gray mint:dark:prose-invert mint:[&_.prose>p:first-child]:mt-0 mint:[&_.prose>p:last-child]:mb-0\"\n data-component-part=\"field-content\"\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InfoPill","children","prefix","className","jsxs","cn","jsx","RequiredPill","DeprecatedPill","ParamHead","name","typeLabel","location","required","deprecated","fieldType","defaultValue","typeOptions","selectedTypeOptionIndex","onSelectTypeOption","parentName","id","pre","post","style","explode","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","pillsRef","useRef","isMultiLine","setIsMultiLine","useState","paramId","buildRecursiveParamFieldId","copyAnchorLink","useCallback","copyToClipboard","useEffect","ref","checkHeight","height","resizeObserver","scrollElementIntoView","_targetEl","hash","paramInfo","Fragment","LinkMultipleRegular","item","i","OptionDropdown"],"mappings":"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"}
1
+ {"version":3,"file":"Param.js","sources":["../../../src/components/Api/Param.tsx"],"sourcesContent":["\nimport React, { useCallback, useEffect, useRef, useState, useMemo, useContext } from 'react';\n\nimport { buildRecursiveParamFieldId } from '@/api-playground/EndpointFields/ParamFields/RecursiveParamField';\nimport { OptionDropdown } from '@/api-playground/EndpointFields/components/OptionDropdown';\nimport { EndpointLocationContext } from '@/contexts/EndpointLocationContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { LinkMultipleRegular } from '@fluentui/react-icons';\nimport { setParamFieldDefault } from '@/utils/api-playground/paramFieldDefaults';\nimport { parseDefaultByType } from '@/utils/api-playground/parseDefaultByType';\nimport { cn } from '@/api-playground-2/schemaGraph/utils';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\nimport { scrollElementIntoView } from '@/utils/scrollElementIntoView';\nimport { FieldType } from '@/api-playground-2/types/api';\nimport { Classes } from '@/api-playground-2/types';\n\nconst MAX_DEFAULT_VALUE_LENGTH = 50;\n\nexport type ParamProps = {\n query?: string;\n path?: string;\n body?: string;\n header?: string;\n children: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: any;\n type?: string;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n placeholder?: string;\n enum?: string[];\n id?: string;\n pre?: string[];\n post?: string[];\n};\n\nexport function InfoPill({\n children,\n prefix,\n className,\n}: {\n children: React.ReactNode;\n prefix?: string;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'mint:flex mint:items-center mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200 mint:font-medium mint:break-all',\n className\n )}\n data-component-part=\"field-info-pill\"\n >\n {prefix && <span className=\"mint:text-gray-400 mint:dark:text-gray-500\">{prefix}</span>}\n <span>{children}</span>\n </div>\n );\n}\n\nexport function RequiredPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-red-100/50 mint:dark:bg-red-400/10 mint:text-red-600 mint:dark:text-red-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-required-pill\"\n >\n required\n </div>\n );\n}\n\nexport function DeprecatedPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-amber-100/50 mint:dark:bg-amber-400/10 mint:text-amber-600 mint:dark:text-amber-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-deprecated-pill\"\n >\n deprecated\n </div>\n );\n}\n\nexport function ParamField({\n query,\n path,\n body,\n header,\n children,\n default: defaultValue,\n type,\n location,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n}: ParamProps) {\n const name = query || path || body || header;\n\n useEffect(() => {\n if (name && defaultValue !== undefined) {\n const loc = query ? 'query' : path ? 'path' : header ? 'header' : body ? 'body' : undefined;\n\n if (loc) {\n const parsed = parseDefaultByType(\n type,\n typeof defaultValue === 'string' ? defaultValue : JSON.stringify(defaultValue)\n );\n setParamFieldDefault(loc, name, parsed);\n }\n }\n }, [name, defaultValue, query, path, header, location]);\n\n if (name == null) {\n return null;\n }\n\n return (\n <GenericParam\n name={name}\n defaultValue={defaultValue}\n type={type}\n location={location}\n required={required}\n deprecated={deprecated}\n hidden={hidden}\n id={id}\n pre={pre}\n post={post}\n >\n {children}\n </GenericParam>\n );\n}\n\nexport function ParamHead({\n name,\n typeLabel,\n location,\n required,\n deprecated,\n fieldType,\n defaultValue,\n typeOptions,\n selectedTypeOptionIndex,\n onSelectTypeOption,\n parentName,\n id,\n pre,\n post,\n style,\n explode,\n}: {\n name?: string | null;\n typeLabel?: string;\n fieldType?: FieldType;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n defaultValue?: unknown;\n typeOptions?: string[];\n selectedTypeOptionIndex?: number;\n onSelectTypeOption?: (index: number) => void;\n parentName?: string;\n id?: string;\n pre?: string[];\n post?: string[];\n style?: string;\n explode?: boolean;\n}) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n const locale = useSelectedLocale();\n const pillsRef = useRef<HTMLDivElement>(null);\n const [isMultiLine, setIsMultiLine] = useState(false);\n const paramId = id ?? buildRecursiveParamFieldId(fieldType, name, parentName);\n\n const copyAnchorLink = useCallback(() => {\n if (paramId) {\n void copyToClipboard(window.location.href.split('#')[0] + '#' + paramId);\n window.location.hash = paramId;\n }\n }, [paramId]);\n\n useEffect(() => {\n const ref = pillsRef.current;\n if (!ref) return;\n\n function checkHeight() {\n const height = ref?.offsetHeight ?? 0;\n setIsMultiLine(height > 28);\n }\n\n checkHeight();\n const resizeObserver = new ResizeObserver(checkHeight);\n resizeObserver.observe(ref);\n\n return () => {\n resizeObserver.unobserve(ref);\n };\n }, []);\n\n useEffect(() => {\n scrollElementIntoView({\n id: paramId,\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current || !paramId || !!parentName,\n checkIfShouldScroll(_targetEl, hash) {\n return hash === paramId;\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n }, [hasScrolledToAnchorRef, paramId, parentName]);\n\n const paramInfo = !parentName ? (\n name\n ) : style === 'deepObject' && explode ? (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">]</span>\n </>\n ) : (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n </>\n );\n\n return name == null ? null : (\n <div\n className='mint:flex mint:font-mono mint:text-sm mint:group/param-head mint:param-head mint:break-all mint:relative'\n id={paramId}\n key={paramId}\n >\n <div className=\"mint:flex-1 mint:flex mint:content-start mint:py-0.5 mint:mr-5\">\n <div className=\"mint:flex mint:items-center mint:flex-wrap mint:gap-2 mint:mt-2\">\n {paramId && (\n <div className=\"mint:absolute\">\n <a\n href={`#${paramId}`}\n className={cn(\n parentName ? 'mint:-ml-[2.1rem]' : 'mint:-ml-10',\n 'mint:flex mint:items-center mint:opacity-0 mint:border-0 mint:group-hover/param-head:opacity-100 mint:focus:opacity-100 mint:focus:outline-0 mint:py-2 mint:[.expandable-content_&]:-ml-[2.1rem] mint:group/link'\n )}\n aria-label={locale['aria.navigateToHeader']}\n onClick={copyAnchorLink}\n >\n &#8203;\n <div className=\"mint:w-6 mint:h-6 mint:rounded-md mint:flex mint:items-center mint:justify-center mint:shadow-sm mint:text-gray-400 mint:dark:text-white/50 mint:dark:bg-background-dark mint:dark:brightness-[1.35] mint:dark:ring-1 mint:dark:hover:brightness-150 mint:bg-white mint:ring-1 mint:ring-gray-400/30 mint:dark:ring-gray-700/25 mint:hover:ring-gray-400/60 mint:dark:hover:ring-white/20 mint:group-focus/link:border-2 mint:group-focus/link:border-primary mint:dark:group-focus/link:border-primary-light\">\n <LinkMultipleRegular />\n </div>\n </a>\n </div>\n )}\n {pre?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:mb-2 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-pre\"\n >\n {item}\n </div>\n ))}\n {(parentName || name) && (\n <div\n className=\"mint:font-semibold mint:text-[#643FB2] mint:mt-2 mint:mb-2 mint:dark:text-[#C9AAF9] mint:cursor-pointer mint:overflow-wrap-anywhere\"\n data-component-part=\"field-name\"\n onClick={copyAnchorLink}\n >\n {paramInfo}\n </div>\n )}\n <div\n ref={pillsRef}\n className={cn(\n 'mint:inline mint:items-center mint:gap-2 mint:text-xs mint:font-medium mint:[&_div]:inline mint:[&_div]:mr-2',\n isMultiLine ? 'mint:[&_div]:leading-6' : 'mint:[&_div]:leading-5'\n )}\n data-component-part=\"field-meta\"\n >\n {typeOptions && typeOptions.length > 1 && onSelectTypeOption ? (\n <OptionDropdown\n options={typeOptions}\n selectedIndex={selectedTypeOptionIndex}\n onSelectOption={onSelectTypeOption}\n />\n ) : (\n typeLabel && <InfoPill>{typeLabel}</InfoPill>\n )}\n {location && <InfoPill>{location}</InfoPill>}\n {defaultValue != null && (\n <InfoPill prefix=\"default:\">\n {typeof defaultValue === 'string'\n ? defaultValue === ''\n ? '\"\"'\n : defaultValue\n : JSON.stringify(defaultValue)}\n </InfoPill>\n )}\n {required && <RequiredPill />}\n {deprecated && <DeprecatedPill />}\n {post?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-post\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// TODO: Remove from components\nexport type GenericParamProps = {\n name: string;\n type?: string;\n location?: string;\n defaultValue?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n id?: string;\n children: React.ReactNode;\n pre?: string[];\n post?: string[];\n};\n\nexport function GenericParam({\n name,\n type,\n location,\n defaultValue,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n children,\n}: GenericParamProps) {\n const stringifiedDefaultValue = useMemo(() => {\n if (typeof defaultValue === 'object') {\n // don't display values with nested objects; looks bad on one line\n const containsNestedObject = Object.values(defaultValue).some(\n (value) => typeof value === 'object'\n );\n if (containsNestedObject) {\n return null;\n }\n }\n\n const stringifiedValue = JSON.stringify(defaultValue);\n if (\n stringifiedValue &&\n stringifiedValue.length > 0 &&\n stringifiedValue.length < MAX_DEFAULT_VALUE_LENGTH\n ) {\n return stringifiedValue;\n }\n return null;\n }, [defaultValue]);\n\n if (hidden) {\n return null;\n }\n return (\n <div\n className={cn(\n Classes.Field,\n 'mint:pt-2.5 mint:pb-5 mint:my-2.5 mint:border-gray-50 mint:dark:border-gray-800/50 mint:border-b'\n )}\n >\n <ParamHead\n name={name}\n typeLabel={type}\n location={location}\n required={required}\n deprecated={deprecated}\n defaultValue={stringifiedDefaultValue}\n id={id}\n pre={pre}\n post={post}\n />\n {children && (\n <div\n className=\"mint:mt-4 mint:mb-4 mint:prose-sm mint:prose-gray mint:dark:prose-invert mint:[&_.prose>p:first-child]:mt-0 mint:[&_.prose>p:last-child]:mb-0\"\n data-component-part=\"field-content\"\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InfoPill","children","prefix","className","jsxs","cn","jsx","RequiredPill","DeprecatedPill","ParamHead","name","typeLabel","location","required","deprecated","fieldType","defaultValue","typeOptions","selectedTypeOptionIndex","onSelectTypeOption","parentName","id","pre","post","style","explode","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","pillsRef","useRef","isMultiLine","setIsMultiLine","useState","paramId","buildRecursiveParamFieldId","copyAnchorLink","useCallback","copyToClipboard","useEffect","ref","checkHeight","height","resizeObserver","scrollElementIntoView","_targetEl","hash","paramInfo","Fragment","LinkMultipleRegular","item","i","OptionDropdown"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["../../../src/components/Api/colors.tsx"],"sourcesContent":["'use client';\n\nexport const getMethodColor = (method?: string) => {\n switch (method?.toUpperCase()) {\n case 'GET':\n return {\n activeNavPillBg: 'mint:bg-[#2AB673]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-green-700 mint:dark:text-green-400',\n inactiveNavPillBg: 'mint:bg-green-400/20 mint:dark:bg-green-400/20',\n paramStyle: 'mint:text-[#2AB673] mint:bg-[#2AB673]/10 mint:border-[#2AB673]/30',\n };\n case 'POST':\n case 'WEBHOOK':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-blue-400/20 mint:dark:bg-blue-400/20',\n paramStyle: 'mint:text-[#3064E3] mint:bg-[#3064E3]/10 mint:border-[#3064E3]/30',\n };\n case 'PUT':\n return {\n activeNavPillBg: 'mint:bg-[#C28C30]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-yellow-700 mint:dark:text-yellow-400',\n inactiveNavPillBg: 'mint:bg-yellow-400/20 mint:dark:bg-yellow-400/20',\n paramStyle: 'mint:text-[#C28C30] mint:bg-[#C28C30]/10 mint:border-[#C28C30]/30',\n };\n case 'DELETE':\n return {\n activeNavPillBg: 'mint:bg-[#CB3A32]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-red-700 mint:dark:text-red-400',\n inactiveNavPillBg: 'mint:bg-red-400/20 mint:dark:bg-red-400/20',\n paramStyle: 'mint:text-[#CB3A32] mint:bg-[#CB3A32]/10 mint:border-[#CB3A32]/30',\n };\n case 'OPTIONS':\n return {\n activeNavPillBg: 'mint:bg-[#9341FB]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-purple-700 mint:dark:text-purple-400',\n inactiveNavPillBg: 'mint:bg-purple-400/20 mint:dark:bg-purple-400/20',\n paramStyle: 'mint:text-[#9341FB] mint:bg-[#9341FB]/10 mint:border-[#9341FB]/30',\n };\n case 'HEAD':\n return {\n activeNavPillBg: 'mint:bg-[#0e7490]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-cyan-700 mint:dark:text-cyan-400',\n inactiveNavPillBg: 'mint:bg-cyan-400/20 mint:dark:bg-cyan-400/20',\n paramStyle: 'mint:text-[#0e7490] mint:text-[#00d3f2] mint:bg-[#00d3f2]/10 mint:border-[#00d3f2]/30',\n };\n case 'PATCH':\n return {\n activeNavPillBg: 'mint:bg-[#DA622B]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-orange-700 mint:dark:text-orange-400',\n inactiveNavPillBg: 'mint:bg-orange-400/20 mint:dark:bg-orange-400/20',\n paramStyle: 'mint:text-[#DA622B] mint:bg-[#DA622B]/10 mint:border-[#DA622B]/30',\n };\n case 'TRACE':\n return {\n activeNavPillBg: 'mint:bg-[#BD30D3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n inactiveNavPillBg: 'mint:bg-fuchsia-400/20 mint:dark:bg-fuchsia-400/20',\n paramStyle: 'mint:text-[#BD30D3] mint:bg-[#BD30D3]/10 mint:border-[#BD30D3]/30',\n };\n case 'WEBSOCKET':\n return {\n activeNavPillBg: 'mint:bg-[#F54A00] mint:dark:bg-[#FF6900]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n inactiveNavPillBg: 'mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20',\n paramStyle:\n 'mint:text-[#F54A00] mint:bg-[#FFEDD4]/10 mint:border-[#FFEDD4]/30 mint:dark:text-[#FF6900] mint:dark:bg-[#FF6900]/10 mint:dark:border-[#FF6900]/30',\n };\n case 'DEPRECATED':\n return {\n activeNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n activeNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n };\n default:\n return {\n activeNavPillBg: 'mint:bg-gray-600',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-gray-700 mint:dark:text-gray-400',\n inactiveNavPillBg: 'mint:bg-gray-400/20 mint:dark:bg-gray-400/20',\n paramStyle: 'mint:text-gray-600 mint:bg-gray-600/10 mint:border-gray-600/30',\n };\n }\n};\n\nexport const getShortenedMethodName = (method?: string): string | undefined => {\n const upperCase = method?.toUpperCase();\n switch (upperCase) {\n case 'DELETE':\n return 'DEL';\n case 'WEBHOOK':\n return 'HOOK';\n case 'WEBSOCKET':\n return 'WSS';\n default:\n return upperCase;\n }\n};\n"],"names":["getMethodColor","method","getShortenedMethodName","upperCase"],"mappings":"AAEO,MAAMA,IAAiB,CAACC,MAAoB;AACjD,UAAQA,KAAA,gBAAAA,EAAQ,eAAY;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YACE;AAAA,MAAA;AAAA,IAEN,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,MAAA;AAAA,IAEvB;AACE,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,EACd;AAEN,GAEaC,IAAyB,CAACD,MAAwC;AAC7E,QAAME,IAAYF,KAAA,gBAAAA,EAAQ;AAC1B,UAAQE,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOA;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"colors.js","sources":["../../../src/components/Api/colors.tsx"],"sourcesContent":["\nexport const getMethodColor = (method?: string) => {\n switch (method?.toUpperCase()) {\n case 'GET':\n return {\n activeNavPillBg: 'mint:bg-[#2AB673]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-green-700 mint:dark:text-green-400',\n inactiveNavPillBg: 'mint:bg-green-400/20 mint:dark:bg-green-400/20',\n paramStyle: 'mint:text-[#2AB673] mint:bg-[#2AB673]/10 mint:border-[#2AB673]/30',\n };\n case 'POST':\n case 'WEBHOOK':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-blue-400/20 mint:dark:bg-blue-400/20',\n paramStyle: 'mint:text-[#3064E3] mint:bg-[#3064E3]/10 mint:border-[#3064E3]/30',\n };\n case 'PUT':\n return {\n activeNavPillBg: 'mint:bg-[#C28C30]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-yellow-700 mint:dark:text-yellow-400',\n inactiveNavPillBg: 'mint:bg-yellow-400/20 mint:dark:bg-yellow-400/20',\n paramStyle: 'mint:text-[#C28C30] mint:bg-[#C28C30]/10 mint:border-[#C28C30]/30',\n };\n case 'DELETE':\n return {\n activeNavPillBg: 'mint:bg-[#CB3A32]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-red-700 mint:dark:text-red-400',\n inactiveNavPillBg: 'mint:bg-red-400/20 mint:dark:bg-red-400/20',\n paramStyle: 'mint:text-[#CB3A32] mint:bg-[#CB3A32]/10 mint:border-[#CB3A32]/30',\n };\n case 'OPTIONS':\n return {\n activeNavPillBg: 'mint:bg-[#9341FB]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-purple-700 mint:dark:text-purple-400',\n inactiveNavPillBg: 'mint:bg-purple-400/20 mint:dark:bg-purple-400/20',\n paramStyle: 'mint:text-[#9341FB] mint:bg-[#9341FB]/10 mint:border-[#9341FB]/30',\n };\n case 'HEAD':\n return {\n activeNavPillBg: 'mint:bg-[#0e7490]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-cyan-700 mint:dark:text-cyan-400',\n inactiveNavPillBg: 'mint:bg-cyan-400/20 mint:dark:bg-cyan-400/20',\n paramStyle: 'mint:text-[#0e7490] mint:text-[#00d3f2] mint:bg-[#00d3f2]/10 mint:border-[#00d3f2]/30',\n };\n case 'PATCH':\n return {\n activeNavPillBg: 'mint:bg-[#DA622B]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-orange-700 mint:dark:text-orange-400',\n inactiveNavPillBg: 'mint:bg-orange-400/20 mint:dark:bg-orange-400/20',\n paramStyle: 'mint:text-[#DA622B] mint:bg-[#DA622B]/10 mint:border-[#DA622B]/30',\n };\n case 'TRACE':\n return {\n activeNavPillBg: 'mint:bg-[#BD30D3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n inactiveNavPillBg: 'mint:bg-fuchsia-400/20 mint:dark:bg-fuchsia-400/20',\n paramStyle: 'mint:text-[#BD30D3] mint:bg-[#BD30D3]/10 mint:border-[#BD30D3]/30',\n };\n case 'WEBSOCKET':\n return {\n activeNavPillBg: 'mint:bg-[#F54A00] mint:dark:bg-[#FF6900]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n inactiveNavPillBg: 'mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20',\n paramStyle:\n 'mint:text-[#F54A00] mint:bg-[#FFEDD4]/10 mint:border-[#FFEDD4]/30 mint:dark:text-[#FF6900] mint:dark:bg-[#FF6900]/10 mint:dark:border-[#FF6900]/30',\n };\n case 'DEPRECATED':\n return {\n activeNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n activeNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n };\n default:\n return {\n activeNavPillBg: 'mint:bg-gray-600',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-gray-700 mint:dark:text-gray-400',\n inactiveNavPillBg: 'mint:bg-gray-400/20 mint:dark:bg-gray-400/20',\n paramStyle: 'mint:text-gray-600 mint:bg-gray-600/10 mint:border-gray-600/30',\n };\n }\n};\n\nexport const getShortenedMethodName = (method?: string): string | undefined => {\n const upperCase = method?.toUpperCase();\n switch (upperCase) {\n case 'DELETE':\n return 'DEL';\n case 'WEBHOOK':\n return 'HOOK';\n case 'WEBSOCKET':\n return 'WSS';\n default:\n return upperCase;\n }\n};\n"],"names":["getMethodColor","method","getShortenedMethodName","upperCase"],"mappings":"AACO,MAAMA,IAAiB,CAACC,MAAoB;AACjD,UAAQA,KAAA,gBAAAA,EAAQ,eAAY;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YACE;AAAA,MAAA;AAAA,IAEN,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,MAAA;AAAA,IAEvB;AACE,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,EACd;AAEN,GAEaC,IAAyB,CAACD,MAAwC;AAC7E,QAAME,IAAYF,KAAA,gBAAAA,EAAQ;AAC1B,UAAQE,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOA;AAAA,EAAA;AAEb;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeGroupCopyButton.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeGroupCopyButton.tsx"],"sourcesContent":["'use client';\n\n\nimport { CopyToClipboardButton } from '../code-block';\n\ntype CodeGroupCopyButtonProps = {\n code: string;\n};\n\nexport const CodeGroupCopyButton = ({ code }: CodeGroupCopyButtonProps) => {\n\n return (\n <div data-testid=\"code-group-select-copy-button\">\n <CopyToClipboardButton textToCopy={code} />\n </div>\n );\n};\n"],"names":["CodeGroupCopyButton","code","jsx","CopyToClipboardButton"],"mappings":";;AASO,MAAMA,IAAsB,CAAC,EAAE,MAAAC,QAGlC,gBAAAC,EAAC,SAAI,eAAY,iCACf,4BAACC,GAAA,EAAsB,YAAYF,GAAM,EAAA,CAC3C;"}
1
+ {"version":3,"file":"CodeGroupCopyButton.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeGroupCopyButton.tsx"],"sourcesContent":["\n\nimport { CopyToClipboardButton } from '../code-block';\n\ntype CodeGroupCopyButtonProps = {\n code: string;\n};\n\nexport const CodeGroupCopyButton = ({ code }: CodeGroupCopyButtonProps) => {\n\n return (\n <div data-testid=\"code-group-select-copy-button\">\n <CopyToClipboardButton textToCopy={code} />\n </div>\n );\n};\n"],"names":["CodeGroupCopyButton","code","jsx","CopyToClipboardButton"],"mappings":";;AAQO,MAAMA,IAAsB,CAAC,EAAE,MAAAC,QAGlC,gBAAAC,EAAC,SAAI,eAAY,iCACf,4BAACC,GAAA,EAAsB,YAAYF,GAAM,EAAA,CAC3C;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSelectDropdown.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeSelectDropdown.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDownFilled } from '@fluentui/react-icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../Api/dropdown-menu';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeSelectDropdownProps {\n selectedOption?: string;\n setSelectedOption: (option: string) => void;\n options: string[];\n}\n\nexport const CodeSelectDropdown = ({\n selectedOption,\n setSelectedOption,\n options,\n}: CodeSelectDropdownProps) => {\n const hasOptions = options.length > 1;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n disabled={!hasOptions}\n className={cn(\n 'mint:select-none mint:bg-transparent mint:px-2 mint:py-[5px] mint:text-xs mint:font-medium mint:min-w-16 mint:flex-1 mint:dark:bg-transparent mint:dark:text-gray-200 mint:text-gray-600',\n )}\n >\n <div className=\"mint:flex mint:gap-1.5 mint:items-center mint:px-2 mint:py-1 mint:group-hover:hover:bg-primary-light/10 mint:rounded-lg mint:min-w-16\">\n <p className=\"mint:truncate\">{selectedOption}</p>\n {hasOptions && <ChevronDownFilled className=\"mint:w-3 mint:h-3 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0\" />}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={cn(\n 'mint:overflow-y-auto', 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n {options.map((option, i) => (\n <DropdownMenuItem\n key={i}\n onSelect={() => setSelectedOption(option)}\n className={cn(\n 'mint:py-1.5 mint:text-xs',\n option === selectedOption && 'mint:text-[#643FB2] mint:dark:text-[#C9AAF9] mint:font-medium',\n option !== selectedOption &&\n 'mint:text-gray-500 mint:dark:text-white/50',\n )}\n >\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["CodeSelectDropdown","selectedOption","setSelectedOption","options","hasOptions","DropdownMenu","jsx","DropdownMenuTrigger","cn","jsxs","ChevronDownFilled","DropdownMenuContent","option","i","DropdownMenuItem"],"mappings":";;;;AAkBO,MAAMA,IAAqB,CAAC;AAAA,EACjC,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AACF,MAA+B;AAC7B,QAAMC,IAAaD,EAAQ,SAAS;AAEpC,2BACGE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAU,CAACH;AAAA,QACX,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,yIACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,iBAAiB,UAAAL,GAAe;AAAA,UAC5CG,KAAc,gBAAAE,EAACI,GAAA,EAAkB,WAAU,6EAAA,CAA6E;AAAA,QAAA,EAAA,CAC3H;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UAAwB;AAAA,QAAA;AAAA,QAGzB,UAAAL,EAAQ,IAAI,CAACS,GAAQC,MACpB,gBAAAP;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,UAAU,MAAMZ,EAAkBU,CAAM;AAAA,YACxC,WAAWJ;AAAA,cACT;AAAA,cACAI,MAAWX,KAAkB;AAAA,cAC7BW,MAAWX,KACT;AAAA,YAAA;AAAA,YAGH,UAAAW;AAAA,UAAA;AAAA,UATIC;AAAA,QAAA,CAWR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
1
+ {"version":3,"file":"CodeSelectDropdown.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeSelectDropdown.tsx"],"sourcesContent":["\nimport { ChevronDownFilled } from '@fluentui/react-icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../Api/dropdown-menu';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeSelectDropdownProps {\n selectedOption?: string;\n setSelectedOption: (option: string) => void;\n options: string[];\n}\n\nexport const CodeSelectDropdown = ({\n selectedOption,\n setSelectedOption,\n options,\n}: CodeSelectDropdownProps) => {\n const hasOptions = options.length > 1;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n disabled={!hasOptions}\n className={cn(\n 'mint:select-none mint:bg-transparent mint:px-2 mint:py-[5px] mint:text-xs mint:font-medium mint:min-w-16 mint:flex-1 mint:dark:bg-transparent mint:dark:text-gray-200 mint:text-gray-600',\n )}\n >\n <div className=\"mint:flex mint:gap-1.5 mint:items-center mint:px-2 mint:py-1 mint:group-hover:hover:bg-primary-light/10 mint:rounded-lg mint:min-w-16\">\n <p className=\"mint:truncate\">{selectedOption}</p>\n {hasOptions && <ChevronDownFilled className=\"mint:w-3 mint:h-3 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0\" />}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={cn(\n 'mint:overflow-y-auto', 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n {options.map((option, i) => (\n <DropdownMenuItem\n key={i}\n onSelect={() => setSelectedOption(option)}\n className={cn(\n 'mint:py-1.5 mint:text-xs',\n option === selectedOption && 'mint:text-[#643FB2] mint:dark:text-[#C9AAF9] mint:font-medium',\n option !== selectedOption &&\n 'mint:text-gray-500 mint:dark:text-white/50',\n )}\n >\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["CodeSelectDropdown","selectedOption","setSelectedOption","options","hasOptions","DropdownMenu","jsx","DropdownMenuTrigger","cn","jsxs","ChevronDownFilled","DropdownMenuContent","option","i","DropdownMenuItem"],"mappings":";;;;AAiBO,MAAMA,IAAqB,CAAC;AAAA,EACjC,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AACF,MAA+B;AAC7B,QAAMC,IAAaD,EAAQ,SAAS;AAEpC,2BACGE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAU,CAACH;AAAA,QACX,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,yIACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,iBAAiB,UAAAL,GAAe;AAAA,UAC5CG,KAAc,gBAAAE,EAACI,GAAA,EAAkB,WAAU,6EAAA,CAA6E;AAAA,QAAA,EAAA,CAC3H;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UAAwB;AAAA,QAAA;AAAA,QAGzB,UAAAL,EAAQ,IAAI,CAACS,GAAQC,MACpB,gBAAAP;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,UAAU,MAAMZ,EAAkBU,CAAM;AAAA,YACxC,WAAWJ;AAAA,cACT;AAAA,cACAI,MAAWX,KAAkB;AAAA,cAC7BW,MAAWX,KACT;AAAA,YAAA;AAAA,YAGH,UAAAW;AAAA,UAAA;AAAA,UATIC;AAAA,QAAA,CAWR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/content-components/CodeGroupSelect/index.tsx"],"sourcesContent":["'use client';\n\nimport { useState, useEffect, useContext } from 'react';\n\nimport { ApiPlaygroundContext } from '@/api-playground/ApiPlayground/ApiPlaygroundContext';\nimport { useCodeExampleLabel } from '@/contexts/CodeExampleLabelContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { ExampleCodeSnippet } from '@/types/exampleCodeSnippet';\nimport { CodeSnippet } from '../code-snippet';\nimport { CodeGroupCopyButton } from './CodeGroupCopyButton';\nimport { CodeSelectDropdown } from './CodeSelectDropdown';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeGroupSelectProps {\n snippets: Record<string, Record<string, ExampleCodeSnippet>>;\n maxHeight?: string;\n}\n\nexport const CodeGroupSelect = ({ snippets, maxHeight }: CodeGroupSelectProps) => {\n const { setSelectedExampleIndex } = useContext(ApiPlaygroundContext);\n const { selectedLabel: syncedLabel, setSelectedLabel } = useCodeExampleLabel();\n const locale = useSelectedLocale();\n\n const groups = Object.keys(snippets);\n const [selectedGroup, setSelectedGroup] = useState(groups[0]);\n\n const groupSnippets = selectedGroup !== undefined ? snippets[selectedGroup] : undefined;\n const options = groupSnippets ? Object.keys(groupSnippets) : undefined;\n const [selectedOption, setSelectedOption] = useState(options && options[0]);\n\n const safeSelectedOption =\n selectedOption && options?.includes(selectedOption) ? selectedOption : options?.[0];\n\n const snippet =\n groupSnippets !== undefined && safeSelectedOption !== undefined\n ? groupSnippets[safeSelectedOption]\n : undefined;\n\n const handleGroupSelect = (grp: string) => {\n setSelectedGroup(grp);\n };\n\n const handleOptionSelect = (opt: string) => {\n setSelectedOption(opt);\n setSelectedExampleIndex?.(options?.indexOf(opt) ?? 0);\n if (opt !== syncedLabel) {\n setSelectedLabel(opt);\n }\n };\n\n useEffect(() => {\n if (syncedLabel && syncedLabel !== safeSelectedOption && options?.includes(syncedLabel)) {\n setSelectedOption(syncedLabel);\n }\n }, [syncedLabel, options, safeSelectedOption]);\n\n return (\n <div\n className={cn(\n 'mint:text-xs mint:p-0.5 mint:leading-6 mint:rounded-2xl not-prose mint:overflow-hidden mint:relative mint:max-w-full mint:min-w-full',\n 'mint:bg-gray-50 mint:dark:bg-white/5 mint:border mint:border-gray-950/10 mint:dark:border-white/10',\n maxHeight\n )}\n data-testid=\"code-group-select\"\n >\n <div className=\"mint:flex mint:justify-between mint:text-xs mint:leading-6 mint:rounded-t-2xl mint:w-full\">\n <CodeSelectDropdown\n selectedOption={selectedGroup}\n setSelectedOption={handleGroupSelect}\n options={groups}\n data-testid=\"code-group-select-group\"\n />\n <div className=\"mint:flex mint:overflow-hidden\">\n {options && (\n <CodeSelectDropdown\n selectedOption={safeSelectedOption}\n setSelectedOption={handleOptionSelect}\n options={options}\n data-testid=\"code-group-select-option\"\n />\n )}\n <div\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:pr-2.5\"\n data-testid=\"code-group-select-copy-button\"\n >\n <CodeGroupCopyButton code={snippet?.code ?? ''} />\n </div>\n </div>\n </div>\n\n <div\n role=\"region\"\n aria-label={locale['aria.codeSnippet']}\n className={cn(\n 'not-prose mint:rounded-xt mint:p-5 mint:min-w-full mint:max-w-0 mint:overflow-x-auto mint:max-h-[calc(100%-34px)] mint:w-full mint:scrollbar-track-transparent mint:scrollbar-thin mint:scrollbar-thumb-rounded mint:text-xs mint:leading-[1.35rem]',\n 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n <CodeSnippet language={snippet?.language}>{snippet?.code}</CodeSnippet>\n </div>\n </div>\n );\n};\n"],"names":["CodeGroupSelect","snippets","maxHeight","setSelectedExampleIndex","useContext","ApiPlaygroundContext","syncedLabel","setSelectedLabel","useCodeExampleLabel","locale","useSelectedLocale","groups","selectedGroup","setSelectedGroup","useState","groupSnippets","options","selectedOption","setSelectedOption","safeSelectedOption","snippet","handleGroupSelect","grp","handleOptionSelect","opt","useEffect","jsxs","cn","jsx","CodeSelectDropdown","CodeGroupCopyButton","CodeSnippet"],"mappings":";;;;;;;;;AAkBO,MAAMA,IAAkB,CAAC,EAAE,UAAAC,GAAU,WAAAC,QAAsC;AAChF,QAAM,EAAE,yBAAAC,EAAA,IAA4BC,EAAWC,CAAoB,GAC7D,EAAE,eAAeC,GAAa,kBAAAC,EAAA,IAAqBC,EAAA,GACnDC,IAASC,EAAA,GAETC,IAAS,OAAO,KAAKV,CAAQ,GAC7B,CAACW,GAAeC,CAAgB,IAAIC,EAASH,EAAO,CAAC,CAAC,GAEtDI,IAAgBH,MAAkB,SAAYX,EAASW,CAAa,IAAI,QACxEI,IAAUD,IAAgB,OAAO,KAAKA,CAAa,IAAI,QACvD,CAACE,GAAgBC,CAAiB,IAAIJ,EAASE,KAAWA,EAAQ,CAAC,CAAC,GAEpEG,IACJF,MAAkBD,KAAA,QAAAA,EAAS,SAASC,MAAkBA,IAAiBD,KAAA,gBAAAA,EAAU,IAE7EI,IACJL,MAAkB,UAAaI,MAAuB,SAClDJ,EAAcI,CAAkB,IAChC,QAEAE,IAAoB,CAACC,MAAgB;AACzC,IAAAT,EAAiBS,CAAG;AAAA,EACtB,GAEMC,IAAqB,CAACC,MAAgB;AAC1C,IAAAN,EAAkBM,CAAG,GACrBrB,KAAA,QAAAA,GAA0Ba,KAAA,gBAAAA,EAAS,QAAQQ,OAAQ,IAC/CA,MAAQlB,KACVC,EAAiBiB,CAAG;AAAA,EAExB;AAEA,SAAAC,EAAU,MAAM;AACd,IAAInB,KAAeA,MAAgBa,MAAsBH,KAAA,QAAAA,EAAS,SAASV,OACzEY,EAAkBZ,CAAW;AAAA,EAEjC,GAAG,CAACA,GAAaU,GAASG,CAAkB,CAAC,GAG3C,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAzB;AAAA,MAAA;AAAA,MAEF,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAwB,EAAC,OAAA,EAAI,WAAU,6FACb,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,gBAAgBjB;AAAA,cAChB,mBAAmBS;AAAA,cACnB,SAASV;AAAA,cACT,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAe,EAAC,OAAA,EAAI,WAAU,kCACZ,UAAA;AAAA,YAAAV,KACC,gBAAAY;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,gBAAgBV;AAAA,gBAChB,mBAAmBI;AAAA,gBACnB,SAAAP;AAAA,gBACA,eAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAGhB,gBAAAY;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,eAAY;AAAA,gBAEZ,UAAA,gBAAAA,EAACE,GAAA,EAAoB,OAAMV,KAAA,gBAAAA,EAAS,SAAQ,GAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAClD,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAYnB,EAAO,kBAAkB;AAAA,YACrC,WAAWkB;AAAA,cACT;AAAA,cACA;AAAA,YAAA;AAAA,YAGF,4BAACI,GAAA,EAAY,UAAUX,KAAA,gBAAAA,EAAS,UAAW,iCAAS,KAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAC3D;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/content-components/CodeGroupSelect/index.tsx"],"sourcesContent":["\nimport { useState, useEffect, useContext } from 'react';\n\nimport { ApiPlaygroundContext } from '@/api-playground/ApiPlayground/ApiPlaygroundContext';\nimport { useCodeExampleLabel } from '@/contexts/CodeExampleLabelContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { ExampleCodeSnippet } from '@/types/exampleCodeSnippet';\nimport { CodeSnippet } from '../code-snippet';\nimport { CodeGroupCopyButton } from './CodeGroupCopyButton';\nimport { CodeSelectDropdown } from './CodeSelectDropdown';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeGroupSelectProps {\n snippets: Record<string, Record<string, ExampleCodeSnippet>>;\n maxHeight?: string;\n}\n\nexport const CodeGroupSelect = ({ snippets, maxHeight }: CodeGroupSelectProps) => {\n const { setSelectedExampleIndex } = useContext(ApiPlaygroundContext);\n const { selectedLabel: syncedLabel, setSelectedLabel } = useCodeExampleLabel();\n const locale = useSelectedLocale();\n\n const groups = Object.keys(snippets);\n const [selectedGroup, setSelectedGroup] = useState(groups[0]);\n\n const groupSnippets = selectedGroup !== undefined ? snippets[selectedGroup] : undefined;\n const options = groupSnippets ? Object.keys(groupSnippets) : undefined;\n const [selectedOption, setSelectedOption] = useState(options && options[0]);\n\n const safeSelectedOption =\n selectedOption && options?.includes(selectedOption) ? selectedOption : options?.[0];\n\n const snippet =\n groupSnippets !== undefined && safeSelectedOption !== undefined\n ? groupSnippets[safeSelectedOption]\n : undefined;\n\n const handleGroupSelect = (grp: string) => {\n setSelectedGroup(grp);\n };\n\n const handleOptionSelect = (opt: string) => {\n setSelectedOption(opt);\n setSelectedExampleIndex?.(options?.indexOf(opt) ?? 0);\n if (opt !== syncedLabel) {\n setSelectedLabel(opt);\n }\n };\n\n useEffect(() => {\n if (syncedLabel && syncedLabel !== safeSelectedOption && options?.includes(syncedLabel)) {\n setSelectedOption(syncedLabel);\n }\n }, [syncedLabel, options, safeSelectedOption]);\n\n return (\n <div\n className={cn(\n 'mint:text-xs mint:p-0.5 mint:leading-6 mint:rounded-2xl not-prose mint:overflow-hidden mint:relative mint:max-w-full mint:min-w-full',\n 'mint:bg-gray-50 mint:dark:bg-white/5 mint:border mint:border-gray-950/10 mint:dark:border-white/10',\n maxHeight\n )}\n data-testid=\"code-group-select\"\n >\n <div className=\"mint:flex mint:justify-between mint:text-xs mint:leading-6 mint:rounded-t-2xl mint:w-full\">\n <CodeSelectDropdown\n selectedOption={selectedGroup}\n setSelectedOption={handleGroupSelect}\n options={groups}\n data-testid=\"code-group-select-group\"\n />\n <div className=\"mint:flex mint:overflow-hidden\">\n {options && (\n <CodeSelectDropdown\n selectedOption={safeSelectedOption}\n setSelectedOption={handleOptionSelect}\n options={options}\n data-testid=\"code-group-select-option\"\n />\n )}\n <div\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:pr-2.5\"\n data-testid=\"code-group-select-copy-button\"\n >\n <CodeGroupCopyButton code={snippet?.code ?? ''} />\n </div>\n </div>\n </div>\n\n <div\n role=\"region\"\n aria-label={locale['aria.codeSnippet']}\n className={cn(\n 'not-prose mint:rounded-xt mint:p-5 mint:min-w-full mint:max-w-0 mint:overflow-x-auto mint:max-h-[calc(100%-34px)] mint:w-full mint:scrollbar-track-transparent mint:scrollbar-thin mint:scrollbar-thumb-rounded mint:text-xs mint:leading-[1.35rem]',\n 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n <CodeSnippet language={snippet?.language}>{snippet?.code}</CodeSnippet>\n </div>\n </div>\n );\n};\n"],"names":["CodeGroupSelect","snippets","maxHeight","setSelectedExampleIndex","useContext","ApiPlaygroundContext","syncedLabel","setSelectedLabel","useCodeExampleLabel","locale","useSelectedLocale","groups","selectedGroup","setSelectedGroup","useState","groupSnippets","options","selectedOption","setSelectedOption","safeSelectedOption","snippet","handleGroupSelect","grp","handleOptionSelect","opt","useEffect","jsxs","cn","jsx","CodeSelectDropdown","CodeGroupCopyButton","CodeSnippet"],"mappings":";;;;;;;;;AAiBO,MAAMA,IAAkB,CAAC,EAAE,UAAAC,GAAU,WAAAC,QAAsC;AAChF,QAAM,EAAE,yBAAAC,EAAA,IAA4BC,EAAWC,CAAoB,GAC7D,EAAE,eAAeC,GAAa,kBAAAC,EAAA,IAAqBC,EAAA,GACnDC,IAASC,EAAA,GAETC,IAAS,OAAO,KAAKV,CAAQ,GAC7B,CAACW,GAAeC,CAAgB,IAAIC,EAASH,EAAO,CAAC,CAAC,GAEtDI,IAAgBH,MAAkB,SAAYX,EAASW,CAAa,IAAI,QACxEI,IAAUD,IAAgB,OAAO,KAAKA,CAAa,IAAI,QACvD,CAACE,GAAgBC,CAAiB,IAAIJ,EAASE,KAAWA,EAAQ,CAAC,CAAC,GAEpEG,IACJF,MAAkBD,KAAA,QAAAA,EAAS,SAASC,MAAkBA,IAAiBD,KAAA,gBAAAA,EAAU,IAE7EI,IACJL,MAAkB,UAAaI,MAAuB,SAClDJ,EAAcI,CAAkB,IAChC,QAEAE,IAAoB,CAACC,MAAgB;AACzC,IAAAT,EAAiBS,CAAG;AAAA,EACtB,GAEMC,IAAqB,CAACC,MAAgB;AAC1C,IAAAN,EAAkBM,CAAG,GACrBrB,KAAA,QAAAA,GAA0Ba,KAAA,gBAAAA,EAAS,QAAQQ,OAAQ,IAC/CA,MAAQlB,KACVC,EAAiBiB,CAAG;AAAA,EAExB;AAEA,SAAAC,EAAU,MAAM;AACd,IAAInB,KAAeA,MAAgBa,MAAsBH,KAAA,QAAAA,EAAS,SAASV,OACzEY,EAAkBZ,CAAW;AAAA,EAEjC,GAAG,CAACA,GAAaU,GAASG,CAAkB,CAAC,GAG3C,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAzB;AAAA,MAAA;AAAA,MAEF,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAwB,EAAC,OAAA,EAAI,WAAU,6FACb,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,gBAAgBjB;AAAA,cAChB,mBAAmBS;AAAA,cACnB,SAASV;AAAA,cACT,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAe,EAAC,OAAA,EAAI,WAAU,kCACZ,UAAA;AAAA,YAAAV,KACC,gBAAAY;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,gBAAgBV;AAAA,gBAChB,mBAAmBI;AAAA,gBACnB,SAAAP;AAAA,gBACA,eAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAGhB,gBAAAY;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,eAAY;AAAA,gBAEZ,UAAA,gBAAAA,EAACE,GAAA,EAAoB,OAAMV,KAAA,gBAAAA,EAAS,SAAQ,GAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAClD,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAYnB,EAAO,kBAAkB;AAAA,YACrC,WAAWkB;AAAA,cACT;AAAA,cACA;AAAA,YAAA;AAAA,YAGF,4BAACI,GAAA,EAAY,UAAUX,KAAA,gBAAAA,EAAS,UAAW,iCAAS,KAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAC3D;AAAA,IAAA;AAAA,EAAA;AAGN;"}