@mintlify/msft-sdk 1.1.23 → 1.1.24

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 (331) hide show
  1. package/dist/api-playground/ApiPlayground/Request/BodySection.js +65 -0
  2. package/dist/api-playground/ApiPlayground/Request/BodySection.js.map +1 -0
  3. package/dist/api-playground/ApiPlayground/Request/ParameterSection.js +33 -0
  4. package/dist/api-playground/ApiPlayground/Request/ParameterSection.js.map +1 -0
  5. package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js +201 -0
  6. package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js.map +1 -0
  7. package/dist/api-playground/ApiPlayground/Request/SecuritySection.js +147 -0
  8. package/dist/api-playground/ApiPlayground/Request/SecuritySection.js.map +1 -0
  9. package/dist/api-playground/ApiPlayground/Request/ServerSection.js +31 -0
  10. package/dist/api-playground/ApiPlayground/Request/ServerSection.js.map +1 -0
  11. package/dist/api-playground/ApiPlayground/Request/index.js +44 -0
  12. package/dist/api-playground/ApiPlayground/Request/index.js.map +1 -0
  13. package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js +94 -0
  14. package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js.map +1 -0
  15. package/dist/api-playground/ApiPlayground/Request/inputs/DifferentiatedInput.js +91 -0
  16. package/dist/api-playground/ApiPlayground/Request/inputs/DifferentiatedInput.js.map +1 -0
  17. package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js +63 -0
  18. package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js.map +1 -0
  19. package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js +34 -0
  20. package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js.map +1 -0
  21. package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js +62 -0
  22. package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js.map +1 -0
  23. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectChildren.js +110 -0
  24. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectChildren.js.map +1 -0
  25. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js +88 -0
  26. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js.map +1 -0
  27. package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js +62 -0
  28. package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js.map +1 -0
  29. package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js +55 -0
  30. package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js.map +1 -0
  31. package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js +68 -0
  32. package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js.map +1 -0
  33. package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js +45 -0
  34. package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js.map +1 -0
  35. package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js +7 -0
  36. package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js.map +1 -0
  37. package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js +45 -0
  38. package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js.map +1 -0
  39. package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js +54 -0
  40. package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js.map +1 -0
  41. package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js +15 -0
  42. package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js.map +1 -0
  43. package/dist/api-playground/ApiPlayground/Response/ResponseError.js +14 -0
  44. package/dist/api-playground/ApiPlayground/Response/ResponseError.js.map +1 -0
  45. package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js +12 -0
  46. package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js.map +1 -0
  47. package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js +20 -0
  48. package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js.map +1 -0
  49. package/dist/api-playground/ApiPlayground/Response/ResponseTable.js +21 -0
  50. package/dist/api-playground/ApiPlayground/Response/ResponseTable.js.map +1 -0
  51. package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js +93 -0
  52. package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js.map +1 -0
  53. package/dist/api-playground/ApiPlayground/Response/index.js +80 -0
  54. package/dist/api-playground/ApiPlayground/Response/index.js.map +1 -0
  55. package/dist/api-playground/ApiPlayground/components/AdditionalItemButton.js +24 -0
  56. package/dist/api-playground/ApiPlayground/components/AdditionalItemButton.js.map +1 -0
  57. package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js +45 -0
  58. package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js.map +1 -0
  59. package/dist/api-playground/ApiPlayground/components/ArrayCount.js +18 -0
  60. package/dist/api-playground/ApiPlayground/components/ArrayCount.js.map +1 -0
  61. package/dist/api-playground/ApiPlayground/components/BasePathSelector.js +40 -0
  62. package/dist/api-playground/ApiPlayground/components/BasePathSelector.js.map +1 -0
  63. package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js +44 -0
  64. package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js.map +1 -0
  65. package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js +45 -0
  66. package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js.map +1 -0
  67. package/dist/api-playground/ApiPlayground/components/EndpointsMenuSearch.js +39 -0
  68. package/dist/api-playground/ApiPlayground/components/EndpointsMenuSearch.js.map +1 -0
  69. package/dist/api-playground/ApiPlayground/components/InputContainer.js +129 -0
  70. package/dist/api-playground/ApiPlayground/components/InputContainer.js.map +1 -0
  71. package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js +60 -0
  72. package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js.map +1 -0
  73. package/dist/api-playground/ApiPlayground/components/ModalHeader.js +16 -0
  74. package/dist/api-playground/ApiPlayground/components/ModalHeader.js.map +1 -0
  75. package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js +29 -0
  76. package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js.map +1 -0
  77. package/dist/api-playground/ApiPlayground/components/ParamFieldWrapper.js +20 -0
  78. package/dist/api-playground/ApiPlayground/components/ParamFieldWrapper.js.map +1 -0
  79. package/dist/api-playground/ApiPlayground/components/PathHeader.js +163 -0
  80. package/dist/api-playground/ApiPlayground/components/PathHeader.js.map +1 -0
  81. package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js +59 -0
  82. package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js.map +1 -0
  83. package/dist/api-playground/ApiPlayground/components/PrettyPath.js +50 -0
  84. package/dist/api-playground/ApiPlayground/components/PrettyPath.js.map +1 -0
  85. package/dist/api-playground/ApiPlayground/components/SendPill.js +40 -0
  86. package/dist/api-playground/ApiPlayground/components/SendPill.js.map +1 -0
  87. package/dist/api-playground/ApiPlayground/components/TrashButton.js +27 -0
  88. package/dist/api-playground/ApiPlayground/components/TrashButton.js.map +1 -0
  89. package/dist/api-playground/ApiPlayground/components/TypeDropdown.js +53 -0
  90. package/dist/api-playground/ApiPlayground/components/TypeDropdown.js.map +1 -0
  91. package/dist/api-playground/ApiPlayground/index.js +68 -0
  92. package/dist/api-playground/ApiPlayground/index.js.map +1 -0
  93. package/dist/api-playground/EndpointFields/ParamFields/ExampleDescription.js +51 -0
  94. package/dist/api-playground/EndpointFields/ParamFields/ExampleDescription.js.map +1 -0
  95. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/Enum.js +20 -0
  96. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/Enum.js.map +1 -0
  97. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js +19 -0
  98. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js.map +1 -0
  99. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js +29 -0
  100. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js.map +1 -0
  101. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js +6 -0
  102. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js.map +1 -0
  103. package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js +13 -0
  104. package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js.map +1 -0
  105. package/dist/api-playground/EndpointFields/components/Description.js +13 -0
  106. package/dist/api-playground/EndpointFields/components/Description.js.map +1 -0
  107. package/dist/api-playground/EndpointFields/components/OneOfDropdown.js +20 -0
  108. package/dist/api-playground/EndpointFields/components/OneOfDropdown.js.map +1 -0
  109. package/dist/api-playground/EndpointFields/components/OptionDropdown.js +36 -0
  110. package/dist/api-playground/EndpointFields/components/OptionDropdown.js.map +1 -0
  111. package/dist/api-playground/EndpointFields/components/SectionHeading.js +44 -0
  112. package/dist/api-playground/EndpointFields/components/SectionHeading.js.map +1 -0
  113. package/dist/api-playground/EndpointFields/index.js +7 -0
  114. package/dist/api-playground/EndpointFields/index.js.map +1 -0
  115. package/dist/api-playground-2/Api.js +13 -0
  116. package/dist/api-playground-2/Api.js.map +1 -0
  117. package/dist/api-playground-2/ApiExamples.js +19 -18
  118. package/dist/api-playground-2/ApiExamples.js.map +1 -1
  119. package/dist/api-playground-2/ApiFields.js +253 -0
  120. package/dist/api-playground-2/ApiFields.js.map +1 -0
  121. package/dist/api-playground-2/EndpointHeader.js +52 -0
  122. package/dist/api-playground-2/EndpointHeader.js.map +1 -0
  123. package/dist/api-playground-2/OperationPage.js +101 -0
  124. package/dist/api-playground-2/OperationPage.js.map +1 -0
  125. package/dist/api-playground-2/Playground.js +136 -0
  126. package/dist/api-playground-2/Playground.js.map +1 -0
  127. package/dist/api-playground-2/SchemaPage.js +14 -0
  128. package/dist/api-playground-2/SchemaPage.js.map +1 -0
  129. package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js +88 -0
  130. package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js.map +1 -0
  131. package/dist/api-playground-2/components/EndpointFields/fields/Enum.js +16 -0
  132. package/dist/api-playground-2/components/EndpointFields/fields/Enum.js.map +1 -0
  133. package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js +21 -0
  134. package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js.map +1 -0
  135. package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js +57 -0
  136. package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js.map +1 -0
  137. package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js +90 -0
  138. package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js.map +1 -0
  139. package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js +122 -0
  140. package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js.map +1 -0
  141. package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js +75 -0
  142. package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js.map +1 -0
  143. package/dist/api-playground-2/components/EndpointFields/fields/SimpleSchemaField.js +253 -0
  144. package/dist/api-playground-2/components/EndpointFields/fields/SimpleSchemaField.js.map +1 -0
  145. package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js +28 -0
  146. package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js.map +1 -0
  147. package/dist/api-playground-2/components/Example/GeneratedRequestExample.js +101 -114
  148. package/dist/api-playground-2/components/Example/GeneratedRequestExample.js.map +1 -1
  149. package/dist/api-playground-2/components/Request/BodySection.js +41 -0
  150. package/dist/api-playground-2/components/Request/BodySection.js.map +1 -0
  151. package/dist/api-playground-2/components/Request/InputSectionContainer.js +66 -0
  152. package/dist/api-playground-2/components/Request/InputSectionContainer.js.map +1 -0
  153. package/dist/api-playground-2/components/Request/ParameterSection.js +36 -0
  154. package/dist/api-playground-2/components/Request/ParameterSection.js.map +1 -0
  155. package/dist/api-playground-2/components/Request/SecuritySection.js +55 -0
  156. package/dist/api-playground-2/components/Request/SecuritySection.js.map +1 -0
  157. package/dist/api-playground-2/components/Request/ServerSection.js +33 -0
  158. package/dist/api-playground-2/components/Request/ServerSection.js.map +1 -0
  159. package/dist/api-playground-2/components/Request/inputs/ArrayInput.js +55 -0
  160. package/dist/api-playground-2/components/Request/inputs/ArrayInput.js.map +1 -0
  161. package/dist/api-playground-2/components/Request/inputs/DifferentiatedInput.js +48 -0
  162. package/dist/api-playground-2/components/Request/inputs/DifferentiatedInput.js.map +1 -0
  163. package/dist/api-playground-2/components/Request/inputs/FileInput.js +43 -0
  164. package/dist/api-playground-2/components/Request/inputs/FileInput.js.map +1 -0
  165. package/dist/api-playground-2/components/Request/inputs/InputContainer.js +127 -0
  166. package/dist/api-playground-2/components/Request/inputs/InputContainer.js.map +1 -0
  167. package/dist/api-playground-2/components/Request/inputs/NullInput.js +15 -0
  168. package/dist/api-playground-2/components/Request/inputs/NullInput.js.map +1 -0
  169. package/dist/api-playground-2/components/Request/inputs/NumberInput.js +46 -0
  170. package/dist/api-playground-2/components/Request/inputs/NumberInput.js.map +1 -0
  171. package/dist/api-playground-2/components/Request/inputs/ObjectInput.js +104 -0
  172. package/dist/api-playground-2/components/Request/inputs/ObjectInput.js.map +1 -0
  173. package/dist/api-playground-2/components/Request/inputs/OneOfInput.js +77 -0
  174. package/dist/api-playground-2/components/Request/inputs/OneOfInput.js.map +1 -0
  175. package/dist/api-playground-2/components/Request/inputs/SelectInput.js +54 -0
  176. package/dist/api-playground-2/components/Request/inputs/SelectInput.js.map +1 -0
  177. package/dist/api-playground-2/components/Request/inputs/StringInput.js +44 -0
  178. package/dist/api-playground-2/components/Request/inputs/StringInput.js.map +1 -0
  179. package/dist/api-playground-2/components/Request/inputs/TextInput.js +29 -0
  180. package/dist/api-playground-2/components/Request/inputs/TextInput.js.map +1 -0
  181. package/dist/api-playground-2/components/TypeDropdown.js +48 -0
  182. package/dist/api-playground-2/components/TypeDropdown.js.map +1 -0
  183. package/dist/api-playground-2/constants/index.js +6 -4
  184. package/dist/api-playground-2/constants/index.js.map +1 -1
  185. package/dist/api-playground-2/contexts/ApiPlaygroundContext.js +11 -0
  186. package/dist/api-playground-2/contexts/ApiPlaygroundContext.js.map +1 -0
  187. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js +6 -6
  188. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js.map +1 -1
  189. package/dist/api-playground-2/generators/generateSnippet.js +187 -36
  190. package/dist/api-playground-2/generators/generateSnippet.js.map +1 -1
  191. package/dist/api-playground-2/hooks/useCopyPathWithInputs.js +14 -0
  192. package/dist/api-playground-2/hooks/useCopyPathWithInputs.js.map +1 -0
  193. package/dist/api-playground-2/hooks/useInitializeInputs.js +101 -0
  194. package/dist/api-playground-2/hooks/useInitializeInputs.js.map +1 -0
  195. package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js +156 -0
  196. package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js.map +1 -0
  197. package/dist/api-playground-2/schemaGraph/addApiReferenceDataFromMdxAndDocsConfig.js +57 -0
  198. package/dist/api-playground-2/schemaGraph/addApiReferenceDataFromMdxAndDocsConfig.js.map +1 -0
  199. package/dist/api-playground-2/schemaGraph/processExamples.js +41 -8
  200. package/dist/api-playground-2/schemaGraph/processExamples.js.map +1 -1
  201. package/dist/api-playground-2/schemaGraph/processSecurityOptions.js +107 -0
  202. package/dist/api-playground-2/schemaGraph/processSecurityOptions.js.map +1 -0
  203. package/dist/api-playground-2/schemaGraph/utils.js +195 -43
  204. package/dist/api-playground-2/schemaGraph/utils.js.map +1 -1
  205. package/dist/api-playground-2/types/index.js +118 -0
  206. package/dist/api-playground-2/types/index.js.map +1 -0
  207. package/dist/common/guards.js +32 -6
  208. package/dist/common/guards.js.map +1 -1
  209. package/dist/common/potentiallyParseOpenApiString.js +25 -0
  210. package/dist/common/potentiallyParseOpenApiString.js.map +1 -0
  211. package/dist/common/replaceSlashIndex.js +7 -0
  212. package/dist/common/replaceSlashIndex.js.map +1 -0
  213. package/dist/common/slugToTitle.js +11 -0
  214. package/dist/common/slugToTitle.js.map +1 -0
  215. package/dist/components/Api/Expandable.js +119 -0
  216. package/dist/components/Api/Expandable.js.map +1 -0
  217. package/dist/components/Api/Markdown.js +66 -0
  218. package/dist/components/Api/Markdown.js.map +1 -0
  219. package/dist/components/Api/Param.js +191 -0
  220. package/dist/components/Api/Param.js.map +1 -0
  221. package/dist/components/content-components/code-block.js +68 -61
  222. package/dist/components/content-components/code-block.js.map +1 -1
  223. package/dist/components/content-components/code-group.js +36 -25
  224. package/dist/components/content-components/code-group.js.map +1 -1
  225. package/dist/components/content-components/getNodeText.js +5 -0
  226. package/dist/components/content-components/getNodeText.js.map +1 -0
  227. package/dist/constants/index.js +5 -0
  228. package/dist/constants/index.js.map +1 -0
  229. package/dist/constants/zIndex.js +7 -0
  230. package/dist/constants/zIndex.js.map +1 -0
  231. package/dist/contexts/ApiPlaygroundInputsContext.js +18 -0
  232. package/dist/contexts/ApiPlaygroundInputsContext.js.map +1 -0
  233. package/dist/contexts/ConfigContext.js +2 -3
  234. package/dist/contexts/ConfigContext.js.map +1 -1
  235. package/dist/contexts/EndpointLocationContext.js +18 -0
  236. package/dist/contexts/EndpointLocationContext.js.map +1 -0
  237. package/dist/contexts/MDXContentContext.js +19 -0
  238. package/dist/contexts/MDXContentContext.js.map +1 -0
  239. package/dist/env.js +6 -1
  240. package/dist/env.js.map +1 -1
  241. package/dist/hooks/useApiPlaygroundInputs.js +7 -0
  242. package/dist/hooks/useApiPlaygroundInputs.js.map +1 -0
  243. package/dist/hooks/useApiPlaygroundPrefillExamples.js +40 -0
  244. package/dist/hooks/useApiPlaygroundPrefillExamples.js.map +1 -0
  245. package/dist/hooks/useBaseUrlOptions.js +19 -0
  246. package/dist/hooks/useBaseUrlOptions.js.map +1 -0
  247. package/dist/hooks/useCheckHash.js +18 -0
  248. package/dist/hooks/useCheckHash.js.map +1 -0
  249. package/dist/hooks/useComponentSchemas.js +10 -0
  250. package/dist/hooks/useComponentSchemas.js.map +1 -0
  251. package/dist/hooks/useCurrentPath.js +17 -0
  252. package/dist/hooks/useCurrentPath.js.map +1 -0
  253. package/dist/hooks/useEndpoint.js +3 -3
  254. package/dist/hooks/useExpandableMemory.js +46 -0
  255. package/dist/hooks/useExpandableMemory.js.map +1 -0
  256. package/dist/hooks/useGenerateNextAdditionalProperties.js +12 -0
  257. package/dist/hooks/useGenerateNextAdditionalProperties.js.map +1 -0
  258. package/dist/hooks/useGenerateNextItems.js +12 -0
  259. package/dist/hooks/useGenerateNextItems.js.map +1 -0
  260. package/dist/hooks/useGenerateNextProperties.js +12 -0
  261. package/dist/hooks/useGenerateNextProperties.js.map +1 -0
  262. package/dist/hooks/useKeyboardShortcut.js +26 -0
  263. package/dist/hooks/useKeyboardShortcut.js.map +1 -0
  264. package/dist/hooks/useMDXContent.js +7 -0
  265. package/dist/hooks/useMDXContent.js.map +1 -0
  266. package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js +10 -0
  267. package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js.map +1 -0
  268. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js +16 -0
  269. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js.map +1 -0
  270. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js +16 -0
  271. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js.map +1 -0
  272. package/dist/hooks/usePlaygroundSchemaOptions.js +43 -0
  273. package/dist/hooks/usePlaygroundSchemaOptions.js.map +1 -0
  274. package/dist/hooks/usePrefilledInputs/index.js +66 -0
  275. package/dist/hooks/usePrefilledInputs/index.js.map +1 -0
  276. package/dist/hooks/usePrefilledInputs/storedServerVariables.js +30 -0
  277. package/dist/hooks/usePrefilledInputs/storedServerVariables.js.map +1 -0
  278. package/dist/hooks/useSecurityOption.js +11 -0
  279. package/dist/hooks/useSecurityOption.js.map +1 -0
  280. package/dist/hooks/useSendPlaygroundRequest.js +146 -15
  281. package/dist/hooks/useSendPlaygroundRequest.js.map +1 -1
  282. package/dist/hooks/useSetDefaultValue.js +64 -0
  283. package/dist/hooks/useSetDefaultValue.js.map +1 -0
  284. package/dist/index.d.ts +281 -0
  285. package/dist/index.js +143 -108
  286. package/dist/index.js.map +1 -1
  287. package/dist/openapi/filterEnums.js +21 -0
  288. package/dist/openapi/filterEnums.js.map +1 -0
  289. package/dist/openapi/generateNextAdditionalProperties.js +8 -0
  290. package/dist/openapi/generateNextAdditionalProperties.js.map +1 -0
  291. package/dist/openapi/generateNextItems.js +8 -0
  292. package/dist/openapi/generateNextItems.js.map +1 -0
  293. package/dist/openapi/generateNextProperties.js +24 -0
  294. package/dist/openapi/generateNextProperties.js.map +1 -0
  295. package/dist/openapi/generateOptionLabels.js +21 -0
  296. package/dist/openapi/generateOptionLabels.js.map +1 -0
  297. package/dist/openapi/generateSimpleLabels.js +5 -0
  298. package/dist/openapi/generateSimpleLabels.js.map +1 -0
  299. package/dist/openapi/generateTypeStringFromSchema.js +34 -0
  300. package/dist/openapi/generateTypeStringFromSchema.js.map +1 -0
  301. package/dist/openapi/getAuthFilteredSchemaArray.js +19 -0
  302. package/dist/openapi/getAuthFilteredSchemaArray.js.map +1 -0
  303. package/dist/paths/isEqualIgnoringLeadingSlash.js +22 -0
  304. package/dist/paths/isEqualIgnoringLeadingSlash.js.map +1 -0
  305. package/dist/paths/optionallyRemoveLeadingSlash.js +7 -0
  306. package/dist/paths/optionallyRemoveLeadingSlash.js.map +1 -0
  307. package/dist/paths/optionallyRemoveTrailingSlash.js +7 -0
  308. package/dist/paths/optionallyRemoveTrailingSlash.js.map +1 -0
  309. package/dist/utils/api-playground/defaults.js +16 -0
  310. package/dist/utils/api-playground/defaults.js.map +1 -0
  311. package/dist/utils/api-playground/paramFieldDefaults.js +11 -0
  312. package/dist/utils/api-playground/paramFieldDefaults.js.map +1 -0
  313. package/dist/utils/api-reference/getFilteredSecurityOptions.js +5 -0
  314. package/dist/utils/api-reference/getFilteredSecurityOptions.js.map +1 -0
  315. package/dist/utils/api-reference/getNextPropertiesByType.js +6 -0
  316. package/dist/utils/api-reference/getNextPropertiesByType.js.map +1 -0
  317. package/dist/utils/containsMarkdownTable.js +5 -0
  318. package/dist/utils/containsMarkdownTable.js.map +1 -0
  319. package/dist/utils/copyToClipboard.js +12 -0
  320. package/dist/utils/copyToClipboard.js.map +1 -0
  321. package/dist/utils/decodeSlug.js +8 -0
  322. package/dist/utils/decodeSlug.js.map +1 -0
  323. package/dist/utils/flattenObject.js +11 -0
  324. package/dist/utils/flattenObject.js.map +1 -0
  325. package/dist/utils/formatJSON.js +39 -0
  326. package/dist/utils/formatJSON.js.map +1 -0
  327. package/dist/utils/optionallyAddLeadingSlash.js +7 -0
  328. package/dist/utils/optionallyAddLeadingSlash.js.map +1 -0
  329. package/dist/utils/scrollElementIntoView.js +21 -0
  330. package/dist/utils/scrollElementIntoView.js.map +1 -0
  331. package/package.json +10 -10
@@ -0,0 +1,66 @@
1
+ import { jsx as s, jsxs as i } from "react/jsx-runtime";
2
+ import c from "react-markdown";
3
+ import l from "remark-gfm";
4
+ import { CodeBlock as h } from "../content-components/code-block.js";
5
+ import { getNodeText as d } from "../content-components/getNodeText.js";
6
+ const p = [l];
7
+ function u({
8
+ children: a,
9
+ className: o,
10
+ components: n,
11
+ showCopyButton: e = !1
12
+ }) {
13
+ return /* @__PURE__ */ s("div", { className: o, children: /* @__PURE__ */ s(
14
+ c,
15
+ {
16
+ remarkPlugins: p,
17
+ components: {
18
+ p: ({ children: r }) => /* @__PURE__ */ s("p", { className: "mint:break-words", children: r }),
19
+ pre: ({ children: r, ...t }) => {
20
+ if (typeof r == "object" && r !== null && "props" in r && typeof r.props == "object" && r.props !== null && "className" in r.props && r.props.className === "language-suggestions")
21
+ return r;
22
+ const m = d(r);
23
+ return /* @__PURE__ */ i("div", { className: "mint:relative", children: [
24
+ /* @__PURE__ */ s(
25
+ "pre",
26
+ {
27
+ ...t,
28
+ className: t.className,
29
+ children: r
30
+ }
31
+ ),
32
+ e && /* @__PURE__ */ s("div", { className: "mint:absolute mint:top-2 mint:right-2", children: /* @__PURE__ */ s(h, { children: m }) })
33
+ ] });
34
+ },
35
+ ...n
36
+ },
37
+ children: a
38
+ }
39
+ ) });
40
+ }
41
+ const x = ({
42
+ children: a,
43
+ className: o
44
+ }) => {
45
+ const n = "mint:text-base mint:font-medium";
46
+ return /* @__PURE__ */ s(
47
+ u,
48
+ {
49
+ components: {
50
+ h1: ({ children: e }) => /* @__PURE__ */ s("h1", { className: n, children: e }),
51
+ h2: ({ children: e }) => /* @__PURE__ */ s("h2", { className: n, children: e }),
52
+ h3: ({ children: e }) => /* @__PURE__ */ s("h3", { className: n, children: e }),
53
+ h4: ({ children: e }) => /* @__PURE__ */ s("h4", { className: n, children: e }),
54
+ h5: ({ children: e }) => /* @__PURE__ */ s("h5", { className: n, children: e }),
55
+ h6: ({ children: e }) => /* @__PURE__ */ s("h6", { className: n, children: e })
56
+ },
57
+ className: o,
58
+ children: a
59
+ }
60
+ );
61
+ };
62
+ export {
63
+ u as Markdown,
64
+ x as MarkdownWithoutHeaders
65
+ };
66
+ //# sourceMappingURL=Markdown.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,191 @@
1
+ import { jsx as t, jsxs as d, Fragment as y } from "react/jsx-runtime";
2
+ import { useContext as H, useRef as q, useState as M, useCallback as O, useEffect as v } from "react";
3
+ import { buildRecursiveParamFieldId as z } from "../../api-playground/EndpointFields/ParamFields/RecursiveParamField.js";
4
+ import { OptionDropdown as A } from "../../api-playground/EndpointFields/components/OptionDropdown.js";
5
+ import { EndpointLocationContext as D } from "../../contexts/EndpointLocationContext.js";
6
+ import { useSelectedLocale as B } from "../../utils/locales/index.js";
7
+ import { LinkMultipleRegular as J } from "@fluentui/react-icons";
8
+ import "@mintlify/validation";
9
+ import { cn as f } from "../../utils/cn.js";
10
+ import { copyToClipboard as $ } from "../../utils/copyToClipboard.js";
11
+ import { scrollElementIntoView as G } from "../../utils/scrollElementIntoView.js";
12
+ import "../../api-playground-2/types/index.js";
13
+ function u({
14
+ children: e,
15
+ prefix: o,
16
+ className: c
17
+ }) {
18
+ return /* @__PURE__ */ d(
19
+ "div",
20
+ {
21
+ className: f(
22
+ "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",
23
+ c
24
+ ),
25
+ "data-component-part": "field-info-pill",
26
+ children: [
27
+ o && /* @__PURE__ */ t("span", { className: "mint:text-gray-400 mint:dark:text-gray-500", children: o }),
28
+ /* @__PURE__ */ t("span", { children: e })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ function K() {
34
+ return /* @__PURE__ */ t(
35
+ "div",
36
+ {
37
+ 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",
38
+ "data-component-part": "field-required-pill",
39
+ children: "required"
40
+ }
41
+ );
42
+ }
43
+ function Q() {
44
+ return /* @__PURE__ */ t(
45
+ "div",
46
+ {
47
+ 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",
48
+ "data-component-part": "field-deprecated-pill",
49
+ children: "deprecated"
50
+ }
51
+ );
52
+ }
53
+ function mt({
54
+ name: e,
55
+ typeLabel: o,
56
+ location: c,
57
+ required: w,
58
+ deprecated: N,
59
+ fieldType: C,
60
+ defaultValue: l,
61
+ typeOptions: s,
62
+ selectedTypeOptionIndex: I,
63
+ onSelectTypeOption: h,
64
+ parentName: r,
65
+ id: R,
66
+ pre: p,
67
+ post: g,
68
+ style: _,
69
+ explode: E
70
+ }) {
71
+ const { hasScrolledToAnchorRef: a } = H(D), L = B(), x = q(null), [P, S] = M(!1), i = R ?? z(C, e, r), b = O(() => {
72
+ i && ($(window.location.href.split("#")[0] + "#" + i), window.location.hash = i);
73
+ }, [i]);
74
+ v(() => {
75
+ const n = x.current;
76
+ if (!n) return;
77
+ function m() {
78
+ const F = (n == null ? void 0 : n.offsetHeight) ?? 0;
79
+ S(F > 28);
80
+ }
81
+ m();
82
+ const k = new ResizeObserver(m);
83
+ return k.observe(n), () => {
84
+ k.unobserve(n);
85
+ };
86
+ }, []), v(() => {
87
+ G({
88
+ id: i,
89
+ shouldReturnEarly: !!(a != null && a.current) || !i || !!r,
90
+ checkIfShouldScroll(n, m) {
91
+ return m === i;
92
+ },
93
+ postScrollCallback() {
94
+ a && (a.current = !0);
95
+ }
96
+ });
97
+ }, [a, i, r]);
98
+ const j = r ? _ === "deepObject" && E ? /* @__PURE__ */ d(y, { children: [
99
+ /* @__PURE__ */ t("span", { className: "mint:text-gray-500 mint:dark:text-gray-400", children: r }),
100
+ e,
101
+ /* @__PURE__ */ t("span", { className: "mint:text-gray-500 mint:dark:text-gray-400", children: "]" })
102
+ ] }) : /* @__PURE__ */ d(y, { children: [
103
+ /* @__PURE__ */ t("span", { className: "mint:text-gray-500 mint:dark:text-gray-400", children: r }),
104
+ e
105
+ ] }) : e;
106
+ return e == null ? null : /* @__PURE__ */ t(
107
+ "div",
108
+ {
109
+ className: "mint:flex mint:font-mono mint:text-sm mint:group/param-head mint:param-head mint:break-all mint:relative",
110
+ id: i,
111
+ children: /* @__PURE__ */ t("div", { className: "mint:flex-1 mint:flex mint:content-start mint:py-0.5 mint:mr-5", children: /* @__PURE__ */ d("div", { className: "mint:flex mint:items-center mint:flex-wrap mint:gap-2 mint:mt-2", children: [
112
+ i && /* @__PURE__ */ t("div", { className: "mint:absolute", children: /* @__PURE__ */ d(
113
+ "a",
114
+ {
115
+ href: `#${i}`,
116
+ className: f(
117
+ r ? "mint:-ml-[2.1rem]" : "mint:-ml-10",
118
+ "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"
119
+ ),
120
+ "aria-label": L["aria.navigateToHeader"],
121
+ onClick: b,
122
+ children: [
123
+ "​",
124
+ /* @__PURE__ */ t("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", children: /* @__PURE__ */ t(J, {}) })
125
+ ]
126
+ }
127
+ ) }),
128
+ p == null ? void 0 : p.map((n, m) => /* @__PURE__ */ t(
129
+ "div",
130
+ {
131
+ 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",
132
+ "data-component-part": "field-meta-pre",
133
+ children: n
134
+ },
135
+ m
136
+ )),
137
+ (r || e) && /* @__PURE__ */ t(
138
+ "div",
139
+ {
140
+ className: "mint:font-semibold mint:text-[#643FB2] mint:mt-2 mint:mb-2 mint:dark:text-[#C9AAF9] mint:cursor-pointer mint:overflow-wrap-anywhere",
141
+ "data-component-part": "field-name",
142
+ onClick: b,
143
+ children: j
144
+ }
145
+ ),
146
+ /* @__PURE__ */ d(
147
+ "div",
148
+ {
149
+ ref: x,
150
+ className: f(
151
+ "mint:inline mint:items-center mint:gap-2 mint:text-xs mint:font-medium mint:[&_div]:inline mint:[&_div]:mr-2",
152
+ P ? "mint:[&_div]:leading-6" : "mint:[&_div]:leading-5"
153
+ ),
154
+ "data-component-part": "field-meta",
155
+ children: [
156
+ s && s.length > 1 && h ? /* @__PURE__ */ t(
157
+ A,
158
+ {
159
+ options: s,
160
+ selectedIndex: I,
161
+ onSelectOption: h
162
+ }
163
+ ) : o && /* @__PURE__ */ t(u, { children: o }),
164
+ c && /* @__PURE__ */ t(u, { children: c }),
165
+ l != null && /* @__PURE__ */ t(u, { prefix: "default:", children: typeof l == "string" ? l === "" ? '""' : l : JSON.stringify(l) }),
166
+ w && /* @__PURE__ */ t(K, {}),
167
+ N && /* @__PURE__ */ t(Q, {}),
168
+ g == null ? void 0 : g.map((n, m) => /* @__PURE__ */ t(
169
+ "div",
170
+ {
171
+ 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",
172
+ "data-component-part": "field-meta-post",
173
+ children: n
174
+ },
175
+ m
176
+ ))
177
+ ]
178
+ }
179
+ )
180
+ ] }) })
181
+ },
182
+ i
183
+ );
184
+ }
185
+ export {
186
+ Q as DeprecatedPill,
187
+ u as InfoPill,
188
+ mt as ParamHead,
189
+ K as RequiredPill
190
+ };
191
+ //# sourceMappingURL=Param.js.map
@@ -0,0 +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,5 +1,5 @@
1
- import { jsx as r, jsxs as k } from "react/jsx-runtime";
2
- import v, { useState as y, useEffect as N } from "react";
1
+ import { jsx as n, jsxs as v } from "react/jsx-runtime";
2
+ import N, { useState as C, useEffect as B } from "react";
3
3
  import b from "prismjs";
4
4
  import "prismjs/components/prism-javascript.js";
5
5
  import "prismjs/components/prism-typescript.js";
@@ -9,119 +9,125 @@ import "prismjs/components/prism-json.js";
9
9
  import "prismjs/components/prism-markdown.js";
10
10
  import "prismjs/components/prism-csharp.js";
11
11
  import "prismjs/components/prism-powershell.js";
12
- import { getNodeText as T } from "../../utils/get-node-text.js";
12
+ import { getNodeText as I } from "../../utils/get-node-text.js";
13
13
  import { cn as h } from "../../utils/cn.js";
14
- import { ClipboardCheckmarkRegular as B, Copy20Regular as I } from "@fluentui/react-icons";
15
- const A = ["image/png", "text/plain"];
16
- function w() {
17
- const [t, e] = y(!1), n = async (m) => {
14
+ import { ClipboardCheckmarkRegular as A, Copy20Regular as R } from "@fluentui/react-icons";
15
+ const w = ["image/png", "text/plain"];
16
+ function g() {
17
+ const [t, e] = C(!1), o = async (r) => {
18
18
  try {
19
- await navigator.clipboard.writeText(m), e(!0), setTimeout(() => e(!1), 2e3);
20
- } catch (c) {
21
- console.error("Failed to copy to clipboard:", c);
19
+ await navigator.clipboard.writeText(r), e(!0), setTimeout(() => e(!1), 2e3);
20
+ } catch (l) {
21
+ console.error("Failed to copy to clipboard:", l);
22
22
  }
23
23
  };
24
- return { isCopied: t, copy: n, copyBlob: async (m, c) => {
24
+ return { isCopied: t, copy: o, copyBlob: async (r, l) => {
25
25
  try {
26
- if (A.includes(c)) {
27
- const o = await m.arrayBuffer(), i = new Blob([o], { type: c }), a = new ClipboardItem({
28
- [c]: i
26
+ if (w.includes(l)) {
27
+ const i = await r.arrayBuffer(), a = new Blob([i], { type: l }), m = new ClipboardItem({
28
+ [l]: a
29
29
  });
30
- await navigator.clipboard.write([a]), e(!0), setTimeout(() => e(!1), 2e3);
30
+ await navigator.clipboard.write([m]), e(!0), setTimeout(() => e(!1), 2e3);
31
31
  } else {
32
- const o = await m.text();
33
- await n(o);
32
+ const i = await r.text();
33
+ await o(i);
34
34
  }
35
- } catch (o) {
36
- console.error("Failed to copy blob to clipboard:", o);
35
+ } catch (i) {
36
+ console.error("Failed to copy blob to clipboard:", i);
37
37
  try {
38
- const i = await m.text();
39
- await n(i);
40
- } catch (i) {
41
- console.error("Failed to copy as text fallback:", i);
38
+ const a = await r.text();
39
+ await o(a);
40
+ } catch (a) {
41
+ console.error("Failed to copy as text fallback:", a);
42
42
  }
43
43
  }
44
44
  } };
45
45
  }
46
- function R({ onClick: t, isCopied: e, showTooltip: n = !0 }) {
47
- return /* @__PURE__ */ k("div", { className: "mint:relative", children: [
48
- n && e && /* @__PURE__ */ r("div", { className: "mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]", children: "Copied!" }),
49
- /* @__PURE__ */ r(
46
+ function _({ onClick: t, isCopied: e, showTooltip: o = !0 }) {
47
+ return /* @__PURE__ */ v("div", { className: "mint:relative", children: [
48
+ o && e && /* @__PURE__ */ n("div", { className: "mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]", children: "Copied!" }),
49
+ /* @__PURE__ */ n(
50
50
  "button",
51
51
  {
52
52
  onClick: t,
53
53
  className: "mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]",
54
54
  "aria-label": e ? "Copied" : "Copy code",
55
- children: e ? /* @__PURE__ */ r(B, { className: "mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]" }) : /* @__PURE__ */ r(I, { className: "mint:w-5 mint:h-5" })
55
+ children: e ? /* @__PURE__ */ n(A, { className: "mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]" }) : /* @__PURE__ */ n(R, { className: "mint:w-5 mint:h-5" })
56
56
  }
57
57
  )
58
58
  ] });
59
59
  }
60
60
  function q({ textToCopy: t, showTooltip: e = !0 }) {
61
- const { isCopied: n, copy: p } = w();
62
- return /* @__PURE__ */ r(R, { onClick: () => {
61
+ const { isCopied: o, copy: p } = g();
62
+ return /* @__PURE__ */ n(_, { onClick: () => {
63
63
  p(t);
64
- }, isCopied: n, showTooltip: e });
64
+ }, isCopied: o, showTooltip: e });
65
65
  }
66
- function G({
66
+ function G({ data: t, showTooltip: e = !0 }) {
67
+ const { isCopied: o, copy: p, copyBlob: r } = g();
68
+ return /* @__PURE__ */ n(_, { onClick: () => {
69
+ t.contentType && w.includes(t.contentType) ? r(t.blob, t.contentType) : t.type === "other" && t.content ? p(t.content) : console.error("Unsupported content type for clipboard");
70
+ }, isCopied: o, showTooltip: e });
71
+ }
72
+ function J({
67
73
  children: t,
68
74
  className: e,
69
- fileName: n,
75
+ fileName: o,
70
76
  language: p,
71
- blob: m,
72
- contentType: c
77
+ blob: r,
78
+ contentType: l
73
79
  }) {
74
- const [o, i] = y("");
75
- w();
76
- const a = p || (e == null ? void 0 : e.replace(/^language-/, "")) || "text", d = T(t), _ = !!n, u = v.useMemo(() => {
77
- var f, g;
80
+ const [i, a] = C("");
81
+ g();
82
+ const m = p || (e == null ? void 0 : e.replace(/^language-/, "")) || "text", d = I(t), k = !!o, x = N.useMemo(() => {
83
+ var f, y;
78
84
  if (typeof t != "object" || t == null)
79
85
  return !1;
80
86
  const s = Array.isArray(t) ? t : [t];
81
- for (const l of s)
82
- if (typeof l == "object" && l != null && "props" in l && ((f = l.props) != null && f.children)) {
83
- const C = Array.isArray(l.props.children) ? l.props.children : [l.props.children];
84
- for (const x of C)
85
- if (typeof x == "object" && x != null && "props" in x && ((g = x.props) != null && g.className))
87
+ for (const c of s)
88
+ if (typeof c == "object" && c != null && "props" in c && ((f = c.props) != null && f.children)) {
89
+ const T = Array.isArray(c.props.children) ? c.props.children : [c.props.children];
90
+ for (const u of T)
91
+ if (typeof u == "object" && u != null && "props" in u && ((y = u.props) != null && y.className))
86
92
  return !0;
87
93
  }
88
94
  return !1;
89
95
  }, [t]);
90
- return N(() => {
91
- if (!u)
96
+ return B(() => {
97
+ if (!x)
92
98
  try {
93
- const s = b.languages[a] || b.languages.plaintext, f = b.highlight(d, s, a);
94
- i(f);
99
+ const s = b.languages[m] || b.languages.plaintext, f = b.highlight(d, s, m);
100
+ a(f);
95
101
  } catch (s) {
96
- console.error("Failed to highlight code:", s), i(d);
102
+ console.error("Failed to highlight code:", s), a(d);
97
103
  }
98
- }, [d, a, u]), /* @__PURE__ */ r(
104
+ }, [d, m, x]), /* @__PURE__ */ n(
99
105
  "div",
100
106
  {
101
- className: _ ? "mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden" : void 0,
102
- children: /* @__PURE__ */ r("div", { className: "not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]", children: /* @__PURE__ */ r("div", { className: "mint:code-scrollbar mint:overflow-x-auto", children: /* @__PURE__ */ r("pre", { className: "mint:px-4 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm", children: u ? /* @__PURE__ */ r(
107
+ className: k ? "mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden" : void 0,
108
+ children: /* @__PURE__ */ n("div", { className: "not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]", children: /* @__PURE__ */ n("div", { className: "mint:code-scrollbar mint:overflow-x-auto", children: /* @__PURE__ */ n("pre", { className: "mint:px-4 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm", children: x ? /* @__PURE__ */ n(
103
109
  "code",
104
110
  {
105
111
  className: h(
106
- `language-${a}`,
112
+ `language-${m}`,
107
113
  "mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
108
114
  ),
109
115
  children: t
110
116
  }
111
- ) : o ? /* @__PURE__ */ r(
117
+ ) : i ? /* @__PURE__ */ n(
112
118
  "code",
113
119
  {
114
120
  className: h(
115
- `language-${a}`,
121
+ `language-${m}`,
116
122
  "mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
117
123
  ),
118
- dangerouslySetInnerHTML: { __html: o }
124
+ dangerouslySetInnerHTML: { __html: i }
119
125
  }
120
- ) : /* @__PURE__ */ r(
126
+ ) : /* @__PURE__ */ n(
121
127
  "code",
122
128
  {
123
129
  className: h(
124
- `language-${a}`,
130
+ `language-${m}`,
125
131
  "mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
126
132
  ),
127
133
  children: d
@@ -131,9 +137,10 @@ function G({
131
137
  );
132
138
  }
133
139
  export {
134
- G as CodeBlock,
135
- R as CopyIconButton,
140
+ J as CodeBlock,
141
+ G as CopyDataToClipboardButton,
142
+ _ as CopyIconButton,
136
143
  q as CopyToClipboardButton,
137
- w as useCopyToClipboard
144
+ g as useCopyToClipboard
138
145
  };
139
146
  //# sourceMappingURL=code-block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-javascript.js\";\nimport \"prismjs/components/prism-typescript.js\";\nimport \"prismjs/components/prism-python.js\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-json.js\";\nimport \"prismjs/components/prism-markdown.js\";\nimport \"prismjs/components/prism-csharp.js\";\nimport \"prismjs/components/prism-powershell.js\";\nimport { getNodeText } from \"../../utils/get-node-text\";\nimport { capitalize } from \"../../utils/string\";\nimport { cn } from \"../../utils/cn\";\nimport {\n Copy20Regular,\n ClipboardCheckmarkRegular,\n} from \"@fluentui/react-icons\";\n\nconst SUPPORTED_CLIPBOARD_CONTENT_TYPES = [\"image/png\", \"text/plain\"];\n\n// Hook for clipboard operations\nexport function useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n };\n\n const copyBlob = async (blob: Blob, contentType: string) => {\n try {\n // image/png, text/plain, and text/html are the only filetypes supported in the chromium\n // clipboard - however, text/html crashes chrome for some reason\n if (SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(contentType)) {\n const buffer = await blob.arrayBuffer();\n const newBlob = new Blob([buffer], { type: contentType });\n const clipboardItem = new ClipboardItem({\n [contentType]: newBlob,\n });\n await navigator.clipboard.write([clipboardItem]);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } else {\n // Fallback to text copy for unsupported types\n const text = await blob.text();\n await copy(text);\n }\n } catch (error) {\n console.error(\"Failed to copy blob to clipboard:\", error);\n // Fallback to text copy if blob copy fails\n try {\n const text = await blob.text();\n await copy(text);\n } catch (fallbackError) {\n console.error(\"Failed to copy as text fallback:\", fallbackError);\n }\n }\n };\n\n return { isCopied, copy, copyBlob };\n}\n\n// Base copy icon button component\ninterface CopyIconButtonProps {\n onClick: () => void;\n isCopied: boolean;\n showTooltip?: boolean;\n}\n\nexport function CopyIconButton({ onClick, isCopied, showTooltip = true }: CopyIconButtonProps) {\n return (\n <div className=\"mint:relative\">\n {showTooltip && isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={onClick}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n );\n}\n\n// Convenience component that handles text copying\ninterface CopyToClipboardButtonProps {\n textToCopy: string;\n showTooltip?: boolean;\n}\n\nexport function CopyToClipboardButton({ textToCopy, showTooltip = true }: CopyToClipboardButtonProps) {\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = () => {\n copy(textToCopy);\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\n// Convenience component that handles blob/data copying\ninterface CopyDataToClipboardButtonProps {\n data: {\n type: 'image' | 'audio' | 'video' | 'other';\n blob: Blob;\n contentType?: string;\n content?: string;\n };\n showTooltip?: boolean;\n}\n\nexport function CopyDataToClipboardButton({ data, showTooltip = true }: CopyDataToClipboardButtonProps) {\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n\n const handleCopy = () => {\n // Check if we can copy as blob (for images, etc.)\n if (data.contentType && SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(data.contentType)) {\n copyBlob(data.blob, data.contentType);\n } else if (data.type === 'other' && data.content) {\n // For text content, copy as text\n copy(data.content);\n } else {\n console.error('Unsupported content type for clipboard');\n }\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n // Support for copying blobs (images, etc.)\n blob?: Blob;\n contentType?: string;\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n blob,\n contentType,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>(\"\");\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, \"\") || \"text\";\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== \"object\" || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (\n typeof child === \"object\" &&\n child != null &&\n \"props\" in child &&\n child.props?.children\n ) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === \"object\" &&\n codeChild != null &&\n \"props\" in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error(\"Failed to highlight code:\", error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n // If blob and contentType are provided, use blob copying\n if (blob && contentType) {\n copyBlob(blob, contentType);\n } else {\n // Otherwise, use text copying\n copy(codeText);\n }\n };\n\n return (\n <div\n className={\n showContainer\n ? \"mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden\"\n : undefined\n }\n >\n <div className=\"not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]\">\n <div className=\"mint:code-scrollbar mint:overflow-x-auto\">\n <pre className=\"mint:px-4 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm\">\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SUPPORTED_CLIPBOARD_CONTENT_TYPES","useCopyToClipboard","isCopied","setIsCopied","useState","copy","text","error","blob","contentType","buffer","newBlob","clipboardItem","fallbackError","CopyIconButton","onClick","showTooltip","jsxs","jsx","ClipboardCheckmarkRegular","Copy20Regular","CopyToClipboardButton","textToCopy","CodeBlock","children","className","fileName","language","highlightedCode","setHighlightedCode","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","cn"],"mappings":"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"}
1
+ {"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-javascript.js\";\nimport \"prismjs/components/prism-typescript.js\";\nimport \"prismjs/components/prism-python.js\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-json.js\";\nimport \"prismjs/components/prism-markdown.js\";\nimport \"prismjs/components/prism-csharp.js\";\nimport \"prismjs/components/prism-powershell.js\";\nimport { getNodeText } from \"../../utils/get-node-text\";\nimport { capitalize } from \"../../utils/string\";\nimport { cn } from \"../../utils/cn\";\nimport {\n Copy20Regular,\n ClipboardCheckmarkRegular,\n} from \"@fluentui/react-icons\";\n\nconst SUPPORTED_CLIPBOARD_CONTENT_TYPES = [\"image/png\", \"text/plain\"];\n\n// Hook for clipboard operations\nexport function useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n };\n\n const copyBlob = async (blob: Blob, contentType: string) => {\n try {\n // image/png, text/plain, and text/html are the only filetypes supported in the chromium\n // clipboard - however, text/html crashes chrome for some reason\n if (SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(contentType)) {\n const buffer = await blob.arrayBuffer();\n const newBlob = new Blob([buffer], { type: contentType });\n const clipboardItem = new ClipboardItem({\n [contentType]: newBlob,\n });\n await navigator.clipboard.write([clipboardItem]);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } else {\n // Fallback to text copy for unsupported types\n const text = await blob.text();\n await copy(text);\n }\n } catch (error) {\n console.error(\"Failed to copy blob to clipboard:\", error);\n // Fallback to text copy if blob copy fails\n try {\n const text = await blob.text();\n await copy(text);\n } catch (fallbackError) {\n console.error(\"Failed to copy as text fallback:\", fallbackError);\n }\n }\n };\n\n return { isCopied, copy, copyBlob };\n}\n\n// Base copy icon button component\ninterface CopyIconButtonProps {\n onClick: () => void;\n isCopied: boolean;\n showTooltip?: boolean;\n}\n\nexport function CopyIconButton({ onClick, isCopied, showTooltip = true }: CopyIconButtonProps) {\n return (\n <div className=\"mint:relative\">\n {showTooltip && isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={onClick}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n );\n}\n\n// Convenience component that handles text copying\ninterface CopyToClipboardButtonProps {\n textToCopy: string;\n showTooltip?: boolean;\n}\n\nexport function CopyToClipboardButton({ textToCopy, showTooltip = true }: CopyToClipboardButtonProps) {\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = () => {\n copy(textToCopy);\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\n// Convenience component that handles blob/data copying\ninterface CopyDataToClipboardButtonProps {\n data: {\n type: 'image' | 'audio' | 'video' | 'other';\n blob: Blob;\n contentType?: string;\n content?: string;\n };\n showTooltip?: boolean;\n}\n\nexport function CopyDataToClipboardButton({ data, showTooltip = true }: CopyDataToClipboardButtonProps) {\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n\n const handleCopy = () => {\n // Check if we can copy as blob (for images, etc.)\n if (data.contentType && SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(data.contentType)) {\n copyBlob(data.blob, data.contentType);\n } else if (data.type === 'other' && data.content) {\n // For text content, copy as text\n copy(data.content);\n } else {\n console.error('Unsupported content type for clipboard');\n }\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n // Support for copying blobs (images, etc.)\n blob?: Blob;\n contentType?: string;\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n blob,\n contentType,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>(\"\");\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, \"\") || \"text\";\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== \"object\" || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (\n typeof child === \"object\" &&\n child != null &&\n \"props\" in child &&\n child.props?.children\n ) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === \"object\" &&\n codeChild != null &&\n \"props\" in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error(\"Failed to highlight code:\", error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n // If blob and contentType are provided, use blob copying\n if (blob && contentType) {\n copyBlob(blob, contentType);\n } else {\n // Otherwise, use text copying\n copy(codeText);\n }\n };\n\n return (\n <div\n className={\n showContainer\n ? \"mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden\"\n : undefined\n }\n >\n <div className=\"not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]\">\n <div className=\"mint:code-scrollbar mint:overflow-x-auto\">\n <pre className=\"mint:px-4 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm\">\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SUPPORTED_CLIPBOARD_CONTENT_TYPES","useCopyToClipboard","isCopied","setIsCopied","useState","copy","text","error","blob","contentType","buffer","newBlob","clipboardItem","fallbackError","CopyIconButton","onClick","showTooltip","jsxs","jsx","ClipboardCheckmarkRegular","Copy20Regular","CopyToClipboardButton","textToCopy","CopyDataToClipboardButton","data","copyBlob","CodeBlock","children","className","fileName","language","highlightedCode","setHighlightedCode","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","cn"],"mappings":"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"}