docusaurus-theme-openapi-docs 1.6.1 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/lib/index.js +31 -3
  2. package/lib/theme/ApiDemoPanel/Body/index.js +10 -4
  3. package/lib/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  4. package/lib/theme/ApiDemoPanel/CodeTabs/index.js +132 -137
  5. package/lib/theme/ApiDemoPanel/Curl/index.js +3 -5
  6. package/lib/theme/ApiDemoPanel/Execute/index.js +5 -1
  7. package/lib/theme/ApiDemoPanel/Execute/makeRequest.js +1 -1
  8. package/lib/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  9. package/lib/theme/ApiDemoPanel/FloatingButton/index.js +1 -2
  10. package/lib/theme/ApiDemoPanel/FormFileUpload/{styles.module.css → _FormFileUpload.scss} +32 -35
  11. package/lib/theme/ApiDemoPanel/FormFileUpload/index.js +3 -4
  12. package/lib/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  13. package/lib/theme/ApiDemoPanel/FormItem/index.js +2 -3
  14. package/lib/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  15. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.js +1 -2
  16. package/{lib-next/theme/ApiDemoPanel/FormSelect/styles.module.css → lib/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  17. package/lib/theme/ApiDemoPanel/FormSelect/index.js +1 -2
  18. package/{lib-next/theme/ApiDemoPanel/FormTextInput/styles.module.css → lib/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  19. package/lib/theme/ApiDemoPanel/FormTextInput/index.js +1 -2
  20. package/lib/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  21. package/lib/theme/ApiDemoPanel/LiveEditor/index.js +2 -3
  22. package/lib/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  23. package/lib/theme/ApiDemoPanel/MethodEndpoint/index.js +28 -9
  24. package/{lib-next/theme/ApiDemoPanel/ParamOptions/styles.module.css → lib/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  25. package/lib/theme/ApiDemoPanel/ParamOptions/index.js +5 -6
  26. package/lib/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  27. package/lib/theme/ApiDemoPanel/Request/index.js +7 -8
  28. package/lib/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  29. package/lib/theme/ApiDemoPanel/Response/index.js +43 -8
  30. package/lib/theme/ApiDemoPanel/Response/slice.js +22 -2
  31. package/lib/theme/ApiDemoPanel/SecuritySchemes/index.js +3 -3
  32. package/{src/theme/ApiDemoPanel/Request/styles.module.css → lib/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  33. package/lib/theme/ApiDemoPanel/Server/index.js +1 -2
  34. package/lib/theme/ApiDemoPanel/index.js +0 -6
  35. package/{src/theme/ApiTabs/styles.module.css → lib/theme/ApiTabs/_ApiTabs.scss} +54 -41
  36. package/lib/theme/ApiTabs/index.js +118 -195
  37. package/lib/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  38. package/lib/theme/DiscriminatorTabs/index.js +116 -194
  39. package/lib/theme/Markdown/Details/_Details.scss +36 -0
  40. package/lib/theme/MimeTabs/_MimeTabs.scss +64 -0
  41. package/lib/theme/MimeTabs/index.js +137 -202
  42. package/lib/theme/ParamsItem/_ParamsItem.scss +39 -0
  43. package/lib/theme/ParamsItem/index.js +3 -5
  44. package/lib/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  45. package/lib/theme/ResponseSamples/index.js +2 -7
  46. package/lib/theme/SchemaItem/_SchemaItem.scss +53 -0
  47. package/lib/theme/SchemaItem/index.js +18 -18
  48. package/lib/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  49. package/lib/theme/SchemaTabs/index.js +102 -186
  50. package/lib/theme/styles.scss +117 -0
  51. package/lib/theme-openapi.d.ts +1 -1
  52. package/lib-next/index.js +41 -2
  53. package/lib-next/theme/ApiDemoPanel/Body/index.js +6 -2
  54. package/lib-next/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  55. package/lib-next/theme/ApiDemoPanel/CodeTabs/index.js +100 -145
  56. package/lib-next/theme/ApiDemoPanel/Curl/index.js +6 -5
  57. package/lib-next/theme/ApiDemoPanel/Execute/index.js +13 -2
  58. package/lib-next/theme/ApiDemoPanel/Execute/makeRequest.js +1 -1
  59. package/lib-next/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  60. package/lib-next/theme/ApiDemoPanel/FloatingButton/index.js +1 -2
  61. package/{src/theme/ApiDemoPanel/FormFileUpload/styles.module.css → lib-next/theme/ApiDemoPanel/FormFileUpload/_FormFileUpload.scss} +32 -35
  62. package/lib-next/theme/ApiDemoPanel/FormFileUpload/index.js +5 -4
  63. package/lib-next/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  64. package/lib-next/theme/ApiDemoPanel/FormItem/index.js +2 -3
  65. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  66. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/index.js +1 -2
  67. package/{src/theme/ApiDemoPanel/FormSelect/styles.module.css → lib-next/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  68. package/lib-next/theme/ApiDemoPanel/FormSelect/index.js +5 -2
  69. package/{src/theme/ApiDemoPanel/FormTextInput/styles.module.css → lib-next/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  70. package/lib-next/theme/ApiDemoPanel/FormTextInput/index.js +1 -2
  71. package/lib-next/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  72. package/lib-next/theme/ApiDemoPanel/LiveEditor/index.js +2 -3
  73. package/lib-next/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  74. package/lib-next/theme/ApiDemoPanel/MethodEndpoint/index.js +32 -14
  75. package/{src/theme/ApiDemoPanel/ParamOptions/styles.module.css → lib-next/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  76. package/lib-next/theme/ApiDemoPanel/ParamOptions/index.js +13 -6
  77. package/lib-next/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  78. package/lib-next/theme/ApiDemoPanel/Request/index.js +7 -8
  79. package/lib-next/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  80. package/lib-next/theme/ApiDemoPanel/Response/index.js +68 -9
  81. package/lib-next/theme/ApiDemoPanel/Response/slice.js +20 -1
  82. package/lib-next/theme/ApiDemoPanel/SecuritySchemes/index.js +3 -3
  83. package/{lib/theme/ApiDemoPanel/Request/styles.module.css → lib-next/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  84. package/lib-next/theme/ApiDemoPanel/Server/index.js +1 -2
  85. package/lib-next/theme/ApiDemoPanel/index.js +0 -3
  86. package/lib-next/theme/ApiTabs/{styles.module.css → _ApiTabs.scss} +54 -41
  87. package/lib-next/theme/ApiTabs/index.js +118 -195
  88. package/lib-next/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  89. package/lib-next/theme/DiscriminatorTabs/index.js +116 -194
  90. package/lib-next/theme/Markdown/Details/_Details.scss +36 -0
  91. package/lib-next/theme/MimeTabs/_MimeTabs.scss +64 -0
  92. package/lib-next/theme/MimeTabs/index.js +137 -202
  93. package/lib-next/theme/ParamsItem/_ParamsItem.scss +39 -0
  94. package/lib-next/theme/ParamsItem/index.js +3 -5
  95. package/lib-next/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  96. package/lib-next/theme/ResponseSamples/index.js +2 -7
  97. package/lib-next/theme/SchemaItem/_SchemaItem.scss +53 -0
  98. package/lib-next/theme/SchemaItem/index.js +18 -18
  99. package/lib-next/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  100. package/lib-next/theme/SchemaTabs/index.js +102 -186
  101. package/lib-next/theme/styles.scss +117 -0
  102. package/lib-next/theme-openapi.d.ts +1 -1
  103. package/package.json +8 -6
  104. package/src/index.ts +41 -2
  105. package/src/theme/ApiDemoPanel/Body/index.tsx +6 -2
  106. package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  107. package/src/theme/ApiDemoPanel/CodeTabs/index.js +156 -0
  108. package/src/theme/ApiDemoPanel/Curl/index.tsx +8 -10
  109. package/src/theme/ApiDemoPanel/Execute/index.tsx +13 -2
  110. package/src/theme/ApiDemoPanel/Execute/makeRequest.ts +1 -1
  111. package/src/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  112. package/src/theme/ApiDemoPanel/FloatingButton/index.tsx +1 -3
  113. package/{lib-next/theme/ApiDemoPanel/FormFileUpload/styles.module.css → src/theme/ApiDemoPanel/FormFileUpload/_FormFileUpload.scss} +32 -35
  114. package/src/theme/ApiDemoPanel/FormFileUpload/index.tsx +5 -5
  115. package/src/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  116. package/src/theme/ApiDemoPanel/FormItem/index.tsx +2 -4
  117. package/src/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  118. package/src/theme/ApiDemoPanel/FormMultiSelect/index.tsx +1 -3
  119. package/{lib/theme/ApiDemoPanel/FormSelect/styles.module.css → src/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  120. package/src/theme/ApiDemoPanel/FormSelect/index.tsx +5 -3
  121. package/{lib/theme/ApiDemoPanel/FormTextInput/styles.module.css → src/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  122. package/src/theme/ApiDemoPanel/FormTextInput/index.tsx +1 -3
  123. package/src/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  124. package/src/theme/ApiDemoPanel/LiveEditor/index.tsx +2 -4
  125. package/src/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  126. package/src/theme/ApiDemoPanel/MethodEndpoint/index.tsx +37 -14
  127. package/{lib/theme/ApiDemoPanel/ParamOptions/styles.module.css → src/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  128. package/src/theme/ApiDemoPanel/ParamOptions/index.tsx +13 -6
  129. package/src/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  130. package/src/theme/ApiDemoPanel/Request/index.tsx +7 -9
  131. package/src/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  132. package/src/theme/ApiDemoPanel/Response/index.tsx +68 -9
  133. package/src/theme/ApiDemoPanel/Response/slice.ts +22 -1
  134. package/src/theme/ApiDemoPanel/SecuritySchemes/index.tsx +3 -3
  135. package/{lib-next/theme/ApiDemoPanel/Request/styles.module.css → src/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  136. package/src/theme/ApiDemoPanel/Server/index.tsx +1 -2
  137. package/src/theme/ApiDemoPanel/index.tsx +0 -3
  138. package/{lib/theme/ApiTabs/styles.module.css → src/theme/ApiTabs/_ApiTabs.scss} +54 -41
  139. package/src/theme/ApiTabs/index.js +118 -195
  140. package/src/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  141. package/src/theme/DiscriminatorTabs/index.js +116 -194
  142. package/src/theme/Markdown/Details/_Details.scss +36 -0
  143. package/src/theme/MimeTabs/_MimeTabs.scss +64 -0
  144. package/src/theme/MimeTabs/index.js +137 -202
  145. package/src/theme/ParamsItem/_ParamsItem.scss +39 -0
  146. package/src/theme/ParamsItem/index.js +3 -5
  147. package/src/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  148. package/src/theme/ResponseSamples/index.js +2 -7
  149. package/src/theme/SchemaItem/_SchemaItem.scss +53 -0
  150. package/src/theme/SchemaItem/index.js +18 -18
  151. package/src/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  152. package/src/theme/SchemaTabs/index.js +102 -186
  153. package/src/theme/styles.scss +117 -0
  154. package/src/theme-openapi.d.ts +1 -1
  155. package/lib/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  156. package/lib/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  157. package/lib/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  158. package/lib/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  159. package/lib/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  160. package/lib/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  161. package/lib/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  162. package/lib/theme/DiscriminatorTabs/styles.module.css +0 -115
  163. package/lib/theme/MimeTabs/styles.module.css +0 -126
  164. package/lib/theme/ParamsItem/styles.module.css +0 -24
  165. package/lib/theme/ResponseSamples/styles.module.css +0 -7
  166. package/lib/theme/SchemaItem/styles.module.css +0 -38
  167. package/lib/theme/SchemaTabs/styles.module.css +0 -110
  168. package/lib/theme/styles.css +0 -485
  169. package/lib-next/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  170. package/lib-next/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  171. package/lib-next/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  172. package/lib-next/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  173. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  174. package/lib-next/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  175. package/lib-next/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  176. package/lib-next/theme/DiscriminatorTabs/styles.module.css +0 -115
  177. package/lib-next/theme/MimeTabs/styles.module.css +0 -126
  178. package/lib-next/theme/ParamsItem/styles.module.css +0 -24
  179. package/lib-next/theme/ResponseSamples/styles.module.css +0 -7
  180. package/lib-next/theme/SchemaItem/styles.module.css +0 -38
  181. package/lib-next/theme/SchemaTabs/styles.module.css +0 -110
  182. package/lib-next/theme/styles.css +0 -485
  183. package/src/theme/ApiDemoPanel/CodeTabs/index.tsx +0 -239
  184. package/src/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  185. package/src/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  186. package/src/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  187. package/src/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  188. package/src/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  189. package/src/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  190. package/src/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  191. package/src/theme/DiscriminatorTabs/styles.module.css +0 -115
  192. package/src/theme/MimeTabs/styles.module.css +0 -126
  193. package/src/theme/ParamsItem/styles.module.css +0 -24
  194. package/src/theme/ResponseSamples/styles.module.css +0 -7
  195. package/src/theme/SchemaItem/styles.module.css +0 -38
  196. package/src/theme/SchemaTabs/styles.module.css +0 -110
  197. package/src/theme/styles.css +0 -485
package/lib/index.js CHANGED
@@ -18,7 +18,7 @@ function docusaurusThemeOpenAPI() {
18
18
  return {
19
19
  name: "docusaurus-theme-openapi",
20
20
  getClientModules() {
21
- const modules = [require.resolve("./theme/styles.css")];
21
+ const modules = [require.resolve("./theme/styles.scss")];
22
22
  return modules;
23
23
  },
24
24
  getThemePath() {
@@ -27,9 +27,37 @@ function docusaurusThemeOpenAPI() {
27
27
  getTypeScriptThemePath() {
28
28
  return _path.default.resolve(__dirname, "..", "src", "theme");
29
29
  },
30
- configureWebpack() {
30
+ configureWebpack(_, isServer, utils) {
31
+ const {
32
+ getStyleLoaders
33
+ } = utils;
34
+ const isProd = process.env.NODE_ENV === "production";
31
35
  return {
32
- plugins: [new NodePolyfillPlugin()]
36
+ plugins: [new NodePolyfillPlugin()],
37
+ module: {
38
+ rules: [{
39
+ test: /\.s[ca]ss$/,
40
+ oneOf: [{
41
+ test: /\.module\.s[ca]ss$/,
42
+ use: [...getStyleLoaders(isServer, {
43
+ modules: {
44
+ localIdentName: isProd ? `[local]_[hash:base64:4]` : `[local]_[path][name]`,
45
+ exportOnlyLocals: isServer
46
+ },
47
+ importLoaders: 2,
48
+ sourceMap: !isProd
49
+ }), {
50
+ loader: require.resolve("sass-loader"),
51
+ options: {}
52
+ }]
53
+ }, {
54
+ use: [...getStyleLoaders(isServer, {}), {
55
+ loader: require.resolve("sass-loader"),
56
+ options: {}
57
+ }]
58
+ }]
59
+ }]
60
+ }
33
61
  };
34
62
  }
35
63
  };
@@ -213,12 +213,14 @@ function Body({
213
213
  }
214
214
  if (exampleBody) {
215
215
  return <_FormItem.default label="Body" required={required}>
216
- <_SchemaTabs.default lazy>
216
+ <_SchemaTabs.default className="openapi-tabs__schema" lazy>
217
+ {/* @ts-ignore */}
217
218
  <_TabItem.default label="Default" value="default" default>
218
219
  <_LiveEditor.default action={dispatch} language={language}>
219
220
  {defaultBody}
220
221
  </_LiveEditor.default>
221
222
  </_TabItem.default>
223
+ {/* @ts-ignore */}
222
224
  <_TabItem.default label="Example" value="example">
223
225
  {exampleBody && <_LiveEditor.default action={dispatch} language={language}>
224
226
  {exampleBody}
@@ -229,19 +231,23 @@ function Body({
229
231
  }
230
232
  if (examplesBodies && examplesBodies.length > 0) {
231
233
  return <_FormItem.default label="Body" required={required}>
232
- <_SchemaTabs.default lazy>
234
+ <_SchemaTabs.default className="openapi-tabs__schema" lazy>
235
+ {/* @ts-ignore */}
233
236
  <_TabItem.default label="Default" value="default" default>
234
237
  <_LiveEditor.default action={dispatch} language={language}>
235
238
  {defaultBody}
236
239
  </_LiveEditor.default>
237
240
  </_TabItem.default>
238
241
  {examplesBodies.map(example => {
239
- return <_TabItem.default label={example.label} value={example.label} key={example.label}>
242
+ return (
243
+ // @ts-ignore
244
+ <_TabItem.default label={example.label} value={example.label} key={example.label}>
240
245
  {example.summary && <p>{example.summary}</p>}
241
246
  {example.body && <_LiveEditor.default action={dispatch} language={language}>
242
247
  {example.body}
243
248
  </_LiveEditor.default>}
244
- </_TabItem.default>;
249
+ </_TabItem.default>
250
+ );
245
251
  })}
246
252
  </_SchemaTabs.default>
247
253
  </_FormItem.default>;
@@ -0,0 +1,216 @@
1
+ .openapi-tabs__code-list-container {
2
+ display: table-row-group;
3
+ }
4
+
5
+ .openapi-tabs__code-item {
6
+ margin-top: 0 !important;
7
+ margin-right: 0.5rem;
8
+ padding-left: 1.5rem;
9
+ padding-right: 1.5rem;
10
+ padding-top: 1rem !important;
11
+ padding-bottom: 1rem !important;
12
+
13
+ &.active {
14
+ border-bottom-left-radius: 0;
15
+ border-bottom-right-radius: 0;
16
+ }
17
+ }
18
+
19
+ .openapi-tabs__code-item--python {
20
+ color: var(--ifm-color-success);
21
+
22
+ &::after {
23
+ content: "";
24
+ width: 28px;
25
+ height: 28px;
26
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg");
27
+ margin-block: auto;
28
+ }
29
+
30
+ &.active {
31
+ border-bottom-color: var(--ifm-color-success);
32
+ background-color: var(--ifm-color-emphasis-100);
33
+ }
34
+ }
35
+
36
+ .language-python {
37
+ max-height: 500px;
38
+ overflow: auto;
39
+ }
40
+
41
+ .openapi-tabs__code-item--go {
42
+ color: var(--ifm-color-info);
43
+
44
+ &::after {
45
+ content: "";
46
+ width: 28px;
47
+ height: 28px;
48
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg");
49
+ margin-block: auto;
50
+ }
51
+
52
+ &.active {
53
+ border-bottom-color: var(--ifm-color-info);
54
+ background-color: var(--ifm-color-emphasis-100);
55
+ }
56
+ }
57
+
58
+ .language-go {
59
+ max-height: 500px;
60
+ overflow: auto;
61
+ }
62
+
63
+ .openapi-tabs__code-item--javascript {
64
+ color: var(--ifm-color-warning);
65
+
66
+ &::after {
67
+ content: "";
68
+ width: 28px;
69
+ height: 28px;
70
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg");
71
+ margin-block: auto;
72
+ }
73
+
74
+ &.active {
75
+ border-bottom-color: var(--ifm-color-warning);
76
+ background-color: var(--ifm-color-emphasis-100);
77
+ }
78
+ }
79
+
80
+ .language-javascript {
81
+ max-height: 500px;
82
+ overflow: auto;
83
+ }
84
+
85
+ .openapi-tabs__code-item--bash {
86
+ color: var(--ifm-color-danger);
87
+
88
+ &::after {
89
+ content: "";
90
+ width: 28px;
91
+ height: 28px;
92
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/linux/linux-original.svg");
93
+ margin-block: auto;
94
+ }
95
+
96
+ &.active {
97
+ border-bottom-color: var(--ifm-color-danger);
98
+ background-color: var(--ifm-color-emphasis-100);
99
+ }
100
+ }
101
+
102
+ .language-bash {
103
+ max-height: 500px;
104
+ overflow: auto;
105
+ }
106
+
107
+ .openapi-tabs__code-item--ruby {
108
+ color: var(--ifm-color-danger);
109
+
110
+ &::after {
111
+ content: "";
112
+ width: 28px;
113
+ height: 28px;
114
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg");
115
+ margin-block: auto;
116
+ }
117
+
118
+ &.active {
119
+ border-bottom-color: var(--ifm-color-danger);
120
+ background-color: var(--ifm-color-emphasis-100);
121
+ }
122
+ }
123
+
124
+ .language-ruby {
125
+ max-height: 500px;
126
+ overflow: auto;
127
+ }
128
+
129
+ .openapi-tabs__code-item--csharp {
130
+ color: var(--ifm-color-gray-500);
131
+
132
+ &::after {
133
+ content: "";
134
+ width: 28px;
135
+ height: 28px;
136
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg");
137
+ margin-block: auto;
138
+ }
139
+
140
+ &.active {
141
+ border-bottom-color: var(--ifm-color-gray-500);
142
+ background-color: var(--ifm-color-emphasis-100);
143
+ }
144
+ }
145
+
146
+ .language-csharp {
147
+ max-height: 500px;
148
+ overflow: auto;
149
+ }
150
+
151
+ .openapi-tabs__code-item--nodejs {
152
+ color: var(--ifm-color-success);
153
+
154
+ &::after {
155
+ content: "";
156
+ width: 28px;
157
+ height: 28px;
158
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg");
159
+ margin-block: auto;
160
+ }
161
+
162
+ &.active {
163
+ border-bottom-color: var(--ifm-color-success);
164
+ background-color: var(--ifm-color-emphasis-100);
165
+ }
166
+ }
167
+
168
+ .language-nodejs {
169
+ max-height: 500px;
170
+ overflow: auto;
171
+ }
172
+
173
+ .openapi-tabs__code-item--php {
174
+ color: var(--ifm-color-gray-500);
175
+
176
+ &::after {
177
+ content: "";
178
+ width: 28px;
179
+ height: 28px;
180
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg");
181
+ margin-block: auto;
182
+ }
183
+
184
+ &.active {
185
+ border-bottom-color: var(--ifm-color-gray-500);
186
+ background-color: var(--ifm-color-emphasis-100);
187
+ }
188
+ }
189
+
190
+ .language-php {
191
+ max-height: 500px;
192
+ overflow: auto;
193
+ }
194
+
195
+ .openapi-tabs__code-item--java {
196
+ color: var(--ifm-color-warning);
197
+
198
+ &::after {
199
+ content: "";
200
+ width: 28px;
201
+ height: 28px;
202
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg");
203
+ margin-block: auto;
204
+ }
205
+
206
+ &.active {
207
+ border-bottom-color: var(--ifm-color-warning);
208
+ background-color: var(--ifm-color-emphasis-100);
209
+ }
210
+ }
211
+
212
+ @media only screen and (min-width: 768px) and (max-width: 996px) {
213
+ .openapi-tabs__code-list {
214
+ justify-content: space-around;
215
+ }
216
+ }
@@ -1,18 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = CodeTabs;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _themeCommon = require("@docusaurus/theme-common");
9
- var _useIsBrowser = _interopRequireDefault(require("@docusaurus/useIsBrowser"));
10
- var _Curl = require("@theme/ApiDemoPanel/Curl");
11
- var _clsx = _interopRequireDefault(require("clsx"));
12
- var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
1
  /* ============================================================================
17
2
  * Copyright (c) Palo Alto Networks
18
3
  *
@@ -20,142 +5,152 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
20
5
  * LICENSE file in the root directory of this source tree.
21
6
  * ========================================================================== */
22
7
 
23
- const {
8
+ import React, { cloneElement } from "react";
9
+
10
+ import {
24
11
  useScrollPositionBlocker,
25
- useTabGroupChoice
26
- } = require("@docusaurus/theme-common/internal");
12
+ useTabs,
13
+ } from "@docusaurus/theme-common/internal";
14
+ import useIsBrowser from "@docusaurus/useIsBrowser";
15
+ import { languageSet } from "@theme/ApiDemoPanel/Curl";
16
+ import clsx from "clsx";
27
17
 
28
- // A very rough duck type, but good enough to guard against mistakes while
29
- // allowing customization
30
- function isTabItem(comp) {
31
- return "value" in comp.props;
32
- }
33
- function TabsComponent(props) {
34
- var _ref, _children$find;
35
- const {
36
- lazy,
37
- block,
38
- defaultValue: defaultValueProp,
39
- values: valuesProp,
40
- groupId,
41
- className,
42
- action
43
- } = props;
44
- const children = _react.default.Children.map(props.children, child => {
45
- if ((0, _react.isValidElement)(child) && isTabItem(child)) {
46
- return child;
47
- }
48
- // child.type.name will give non-sensical values in prod because of
49
- // minification, but we assume it won't throw in prod.
50
- throw new Error(`Docusaurus error: Bad <Tabs> child <${
51
- // @ts-expect-error: guarding against unexpected cases
52
- typeof child.type === "string" ? child.type : child.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`);
53
- });
54
- const values = valuesProp !== null && valuesProp !== void 0 ? valuesProp :
55
- // Only pick keys that we recognize. MDX would inject some keys by default
56
- children.map(({
57
- props: {
58
- value,
59
- label,
60
- attributes
61
- }
62
- }) => ({
63
- value,
64
- label,
65
- attributes
66
- }));
67
- const dup = (0, _themeCommon.duplicates)(values, (a, b) => a.value === b.value);
68
- if (dup.length > 0) {
69
- throw new Error(`Docusaurus error: Duplicate values "${dup.map(a => a.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`);
70
- }
71
- // When defaultValueProp is null, don't show a default tab
72
- const defaultValue = defaultValueProp === null ? defaultValueProp : (_ref = defaultValueProp !== null && defaultValueProp !== void 0 ? defaultValueProp : (_children$find = children.find(child => child.props.default)) === null || _children$find === void 0 ? void 0 : _children$find.props.value) !== null && _ref !== void 0 ? _ref : children[0].props.value;
73
- if (defaultValue !== null && !values.some(a => a.value === defaultValue)) {
74
- throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${defaultValue}" but none of its children has the corresponding value. Available values are: ${values.map(a => a.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);
75
- }
76
- const {
77
- tabGroupChoices,
78
- setTabGroupChoices
79
- } = useTabGroupChoice();
80
- const [selectedValue, setSelectedValue] = (0, _react.useState)(defaultValue);
18
+ function TabList({
19
+ action,
20
+ className,
21
+ block,
22
+ selectedValue,
23
+ selectValue,
24
+ tabValues,
25
+ }) {
81
26
  const tabRefs = [];
82
- const {
83
- blockElementScrollPositionUntilNextRender
84
- } = useScrollPositionBlocker();
85
- if (groupId != null) {
86
- const relevantTabGroupChoice = tabGroupChoices[groupId];
87
- if (relevantTabGroupChoice != null && relevantTabGroupChoice !== selectedValue && values.some(value => value.value === relevantTabGroupChoice)) {
88
- setSelectedValue(relevantTabGroupChoice);
89
- }
90
- }
91
- const handleTabChange = event => {
27
+ const { blockElementScrollPositionUntilNextRender } =
28
+ useScrollPositionBlocker();
29
+
30
+ const handleTabChange = (event) => {
92
31
  const newTab = event.currentTarget;
93
32
  const newTabIndex = tabRefs.indexOf(newTab);
94
- const newTabValue = values[newTabIndex].value;
33
+ const newTabValue = tabValues[newTabIndex].value;
34
+
95
35
  if (newTabValue !== selectedValue) {
96
36
  blockElementScrollPositionUntilNextRender(newTab);
97
- setSelectedValue(newTabValue);
98
- if (action) {
99
- const newLanguage = _Curl.languageSet.filter(lang => lang.language === newTabValue);
100
- action(newLanguage[0]);
101
- }
102
- if (groupId != null) {
103
- setTabGroupChoices(groupId, String(newTabValue));
104
- }
37
+ selectValue(newTabValue);
38
+ }
39
+
40
+ if (action) {
41
+ const newLanguage = languageSet.filter(
42
+ (lang) => lang.language === newTabValue
43
+ );
44
+ action(newLanguage[0]);
105
45
  }
106
46
  };
107
- const handleKeydown = event => {
108
- var _focusElement;
47
+
48
+ const handleKeydown = (event) => {
109
49
  let focusElement = null;
110
50
  switch (event.key) {
111
- case "ArrowRight":
112
- {
113
- var _tabRefs$nextTab;
114
- const nextTab = tabRefs.indexOf(event.currentTarget) + 1;
115
- focusElement = (_tabRefs$nextTab = tabRefs[nextTab]) !== null && _tabRefs$nextTab !== void 0 ? _tabRefs$nextTab : tabRefs[0];
116
- break;
117
- }
118
- case "ArrowLeft":
119
- {
120
- var _tabRefs$prevTab;
121
- const prevTab = tabRefs.indexOf(event.currentTarget) - 1;
122
- focusElement = (_tabRefs$prevTab = tabRefs[prevTab]) !== null && _tabRefs$prevTab !== void 0 ? _tabRefs$prevTab : tabRefs[tabRefs.length - 1];
123
- break;
124
- }
51
+ case "Enter": {
52
+ handleTabChange(event);
53
+ break;
54
+ }
55
+ case "ArrowRight": {
56
+ const nextTab = tabRefs.indexOf(event.currentTarget) + 1;
57
+ focusElement = tabRefs[nextTab] ?? tabRefs[0];
58
+ break;
59
+ }
60
+ case "ArrowLeft": {
61
+ const prevTab = tabRefs.indexOf(event.currentTarget) - 1;
62
+ focusElement = tabRefs[prevTab] ?? tabRefs[tabRefs.length - 1];
63
+ break;
64
+ }
125
65
  default:
126
66
  break;
127
67
  }
128
- (_focusElement = focusElement) === null || _focusElement === void 0 ? void 0 : _focusElement.focus();
68
+ focusElement?.focus();
129
69
  };
130
- return <div className={(0, _clsx.default)("tabs-container", _stylesModule.default.tabList)}>
131
- <ul role="tablist" aria-orientation="horizontal" className={(0, _clsx.default)("tabs", {
132
- "tabs--block": block
133
- }, _stylesModule.default.code__tabs, className)}>
134
- {values.map(({
135
- value,
136
- label,
137
- attributes
138
- }) => <li role="tab" tabIndex={selectedValue === value ? 0 : -1} aria-selected={selectedValue === value} key={value} ref={tabControl => tabRefs.push(tabControl)} onKeyDown={handleKeydown} onFocus={handleTabChange} onClick={handleTabChange} {...attributes} className={(0, _clsx.default)("tabs__item", _stylesModule.default.tabItem, attributes === null || attributes === void 0 ? void 0 : attributes.className, {
139
- "tabs__item--active": selectedValue === value
140
- })}>
141
- {label !== null && label !== void 0 ? label : value}
142
- </li>)}
143
- </ul>
144
70
 
145
- {lazy ? (0, _react.cloneElement)(children.filter(tabItem => tabItem.props.value === selectedValue)[0], {
146
- className: "margin-top--md"
147
- }) : <div className="margin-top--md">
148
- {children.map((tabItem, i) => (0, _react.cloneElement)(tabItem, {
149
- key: i,
150
- hidden: tabItem.props.value !== selectedValue
151
- }))}
152
- </div>}
153
- </div>;
71
+ return (
72
+ <ul
73
+ role="tablist"
74
+ aria-orientation="horizontal"
75
+ className={clsx(
76
+ "tabs",
77
+ "openapi-tabs__code-list-container",
78
+ {
79
+ "tabs--block": block,
80
+ },
81
+ className
82
+ )}
83
+ >
84
+ {tabValues.map(({ value, label, attributes }) => (
85
+ <li
86
+ // TODO extract TabListItem
87
+ role="tab"
88
+ tabIndex={selectedValue === value ? 0 : -1}
89
+ aria-selected={selectedValue === value}
90
+ key={value}
91
+ ref={(tabControl) => tabRefs.push(tabControl)}
92
+ onKeyDown={handleKeydown}
93
+ onClick={handleTabChange}
94
+ {...attributes}
95
+ className={clsx(
96
+ "tabs__item",
97
+ "openapi-tabs__code-item",
98
+ attributes?.className,
99
+ {
100
+ active: selectedValue === value,
101
+ }
102
+ )}
103
+ >
104
+ {label ?? value}
105
+ </li>
106
+ ))}
107
+ </ul>
108
+ );
109
+ }
110
+
111
+ function TabContent({ lazy, children, selectedValue }) {
112
+ // eslint-disable-next-line no-param-reassign
113
+ children = Array.isArray(children) ? children : [children];
114
+ if (lazy) {
115
+ const selectedTabItem = children.find(
116
+ (tabItem) => tabItem.props.value === selectedValue
117
+ );
118
+ if (!selectedTabItem) {
119
+ // fail-safe or fail-fast? not sure what's best here
120
+ return null;
121
+ }
122
+ return cloneElement(selectedTabItem, { className: "margin-top--md" });
123
+ }
124
+ return (
125
+ <div className="margin-top--md">
126
+ {children.map((tabItem, i) =>
127
+ cloneElement(tabItem, {
128
+ key: i,
129
+ hidden: tabItem.props.value !== selectedValue,
130
+ })
131
+ )}
132
+ </div>
133
+ );
134
+ }
135
+
136
+ function TabsComponent(props) {
137
+ const tabs = useTabs(props);
138
+ return (
139
+ <div className="tabs-container">
140
+ <TabList {...props} {...tabs} />
141
+ <TabContent {...props} {...tabs} />
142
+ </div>
143
+ );
144
+ }
145
+
146
+ export default function CodeTabs(props) {
147
+ const isBrowser = useIsBrowser();
148
+ return (
149
+ <TabsComponent
150
+ // Remount tabs after hydration
151
+ // Temporary fix for https://github.com/facebook/docusaurus/issues/5653
152
+ key={String(isBrowser)}
153
+ {...props}
154
+ />
155
+ );
154
156
  }
155
- function CodeTabs(props) {
156
- const isBrowser = (0, _useIsBrowser.default)();
157
- return <TabsComponent
158
- // Remount tabs after hydration
159
- // Temporary fix for https://github.com/facebook/docusaurus/issues/5653
160
- key={String(isBrowser)} {...props} />;
161
- }
@@ -11,9 +11,7 @@ var _buildPostmanRequest = _interopRequireDefault(require("@theme/ApiDemoPanel/b
11
11
  var _CodeTabs = _interopRequireDefault(require("@theme/ApiDemoPanel/CodeTabs"));
12
12
  var _hooks = require("@theme/ApiItem/hooks");
13
13
  var _CodeBlock = _interopRequireDefault(require("@theme/CodeBlock"));
14
- var _clsx = _interopRequireDefault(require("clsx"));
15
14
  var _merge = _interopRequireDefault(require("lodash/merge"));
16
- var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
17
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -106,7 +104,7 @@ function CodeTab({
106
104
  className,
107
105
  onClick
108
106
  }) {
109
- return <div role="tabpanel" className={(0, _clsx.default)(_stylesModule.default.tabItem, className)} {...{
107
+ return <div role="tabpanel" className={className} {...{
110
108
  hidden
111
109
  }}>
112
110
  {children}
@@ -217,9 +215,9 @@ function Curl({
217
215
  <_CodeTabs.default groupId="code-samples" action={setLanguage}>
218
216
  {mergedLangs.map(lang => {
219
217
  return <CodeTab value={lang.language} label={""} key={lang.variant ? `${lang.language}-${lang.variant}` : lang.language} attributes={{
220
- className: `code__tab--${lang.logoClass}`
218
+ className: `openapi-tabs__code-item--${lang.logoClass}`
221
219
  }}>
222
- <_CodeBlock.default language={lang.highlight} className={_stylesModule.default.codeBlock}>
220
+ <_CodeBlock.default language={lang.highlight} className="openapi-demo__code-block">
223
221
  {codeText}
224
222
  </_CodeBlock.default>
225
223
  </CodeTab>;
@@ -98,10 +98,14 @@ function Execute({
98
98
  try {
99
99
  await delay(1200);
100
100
  const res = await (0, _makeRequest.default)(postmanRequest, proxy, body);
101
- dispatch((0, _slice.setResponse)(res));
101
+ dispatch((0, _slice.setResponse)(await res.text()));
102
+ dispatch((0, _slice.setCode)(res.status));
103
+ res.headers && dispatch((0, _slice.setHeaders)(Object.fromEntries(res.headers)));
102
104
  } catch (e) {
103
105
  console.log(e);
104
106
  dispatch((0, _slice.setResponse)("Connection failed"));
107
+ dispatch((0, _slice.clearCode)());
108
+ dispatch((0, _slice.clearHeaders)());
105
109
  }
106
110
  }}>
107
111
  Send API Request
@@ -174,7 +174,7 @@ async function makeRequest(request, proxy, _body) {
174
174
  finalUrl = normalizedProxy + request.url.toString();
175
175
  }
176
176
  return await fetchWithtimeout(finalUrl, requestOptions).then(response => {
177
- return response.text();
177
+ return response;
178
178
  });
179
179
  }
180
180
  var _default = makeRequest;
@@ -0,0 +1,25 @@
1
+ .openapi-demo__floating-btn {
2
+ position: relative;
3
+
4
+ button {
5
+ position: relative;
6
+ background: var(--ifm-color-emphasis-900);
7
+ border: none;
8
+ border-radius: var(--ifm-global-radius);
9
+ color: var(--ifm-color-emphasis-100);
10
+ cursor: pointer;
11
+ padding: 0.4rem 0.5rem;
12
+ opacity: 0;
13
+ visibility: hidden;
14
+ transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out,
15
+ bottom 0.2s ease-in-out;
16
+ position: absolute;
17
+ right: calc(var(--ifm-pre-padding) / 2);
18
+ }
19
+ }
20
+ .openapi-demo__floating-btn:hover button,
21
+ .openapi-demo__floating-btn:focus-visible button,
22
+ .openapi-demo__floating-btn button:focus-visible {
23
+ visibility: visible;
24
+ opacity: 1;
25
+ }