@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.
- package/dist/api-playground/ApiPlayground/Request/BodySection.js +65 -0
- package/dist/api-playground/ApiPlayground/Request/BodySection.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/ParameterSection.js +33 -0
- package/dist/api-playground/ApiPlayground/Request/ParameterSection.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js +201 -0
- package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/SecuritySection.js +147 -0
- package/dist/api-playground/ApiPlayground/Request/SecuritySection.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/ServerSection.js +31 -0
- package/dist/api-playground/ApiPlayground/Request/ServerSection.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/index.js +44 -0
- package/dist/api-playground/ApiPlayground/Request/index.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js +94 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/DifferentiatedInput.js +91 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/DifferentiatedInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js +63 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js +34 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js +62 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ObjectChildren.js +110 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ObjectChildren.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js +88 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js +62 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js +55 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js +68 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js +45 -0
- package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js +7 -0
- package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js +45 -0
- package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js +54 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js +15 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseError.js +14 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseError.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js +12 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js +20 -0
- package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseTable.js +21 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseTable.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js +93 -0
- package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js.map +1 -0
- package/dist/api-playground/ApiPlayground/Response/index.js +80 -0
- package/dist/api-playground/ApiPlayground/Response/index.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/AdditionalItemButton.js +24 -0
- package/dist/api-playground/ApiPlayground/components/AdditionalItemButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js +45 -0
- package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/ArrayCount.js +18 -0
- package/dist/api-playground/ApiPlayground/components/ArrayCount.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/BasePathSelector.js +40 -0
- package/dist/api-playground/ApiPlayground/components/BasePathSelector.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js +44 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js +45 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuSearch.js +39 -0
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuSearch.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/InputContainer.js +129 -0
- package/dist/api-playground/ApiPlayground/components/InputContainer.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js +60 -0
- package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/ModalHeader.js +16 -0
- package/dist/api-playground/ApiPlayground/components/ModalHeader.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js +29 -0
- package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/ParamFieldWrapper.js +20 -0
- package/dist/api-playground/ApiPlayground/components/ParamFieldWrapper.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/PathHeader.js +163 -0
- package/dist/api-playground/ApiPlayground/components/PathHeader.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js +59 -0
- package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/PrettyPath.js +50 -0
- package/dist/api-playground/ApiPlayground/components/PrettyPath.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/SendPill.js +40 -0
- package/dist/api-playground/ApiPlayground/components/SendPill.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/TrashButton.js +27 -0
- package/dist/api-playground/ApiPlayground/components/TrashButton.js.map +1 -0
- package/dist/api-playground/ApiPlayground/components/TypeDropdown.js +53 -0
- package/dist/api-playground/ApiPlayground/components/TypeDropdown.js.map +1 -0
- package/dist/api-playground/ApiPlayground/index.js +68 -0
- package/dist/api-playground/ApiPlayground/index.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/ExampleDescription.js +51 -0
- package/dist/api-playground/EndpointFields/ParamFields/ExampleDescription.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/Enum.js +20 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/Enum.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js +19 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js +29 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js +6 -0
- package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js.map +1 -0
- package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js +13 -0
- package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js.map +1 -0
- package/dist/api-playground/EndpointFields/components/Description.js +13 -0
- package/dist/api-playground/EndpointFields/components/Description.js.map +1 -0
- package/dist/api-playground/EndpointFields/components/OneOfDropdown.js +20 -0
- package/dist/api-playground/EndpointFields/components/OneOfDropdown.js.map +1 -0
- package/dist/api-playground/EndpointFields/components/OptionDropdown.js +36 -0
- package/dist/api-playground/EndpointFields/components/OptionDropdown.js.map +1 -0
- package/dist/api-playground/EndpointFields/components/SectionHeading.js +44 -0
- package/dist/api-playground/EndpointFields/components/SectionHeading.js.map +1 -0
- package/dist/api-playground/EndpointFields/index.js +7 -0
- package/dist/api-playground/EndpointFields/index.js.map +1 -0
- package/dist/api-playground-2/Api.js +13 -0
- package/dist/api-playground-2/Api.js.map +1 -0
- package/dist/api-playground-2/ApiExamples.js +19 -18
- package/dist/api-playground-2/ApiExamples.js.map +1 -1
- package/dist/api-playground-2/ApiFields.js +253 -0
- package/dist/api-playground-2/ApiFields.js.map +1 -0
- package/dist/api-playground-2/EndpointHeader.js +52 -0
- package/dist/api-playground-2/EndpointHeader.js.map +1 -0
- package/dist/api-playground-2/OperationPage.js +101 -0
- package/dist/api-playground-2/OperationPage.js.map +1 -0
- package/dist/api-playground-2/Playground.js +136 -0
- package/dist/api-playground-2/Playground.js.map +1 -0
- package/dist/api-playground-2/SchemaPage.js +14 -0
- package/dist/api-playground-2/SchemaPage.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js +88 -0
- package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/Enum.js +16 -0
- package/dist/api-playground-2/components/EndpointFields/fields/Enum.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js +21 -0
- package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js +57 -0
- package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js +90 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js +122 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js +75 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleSchemaField.js +253 -0
- package/dist/api-playground-2/components/EndpointFields/fields/SimpleSchemaField.js.map +1 -0
- package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js +28 -0
- package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js.map +1 -0
- package/dist/api-playground-2/components/Example/GeneratedRequestExample.js +101 -114
- package/dist/api-playground-2/components/Example/GeneratedRequestExample.js.map +1 -1
- package/dist/api-playground-2/components/Request/BodySection.js +41 -0
- package/dist/api-playground-2/components/Request/BodySection.js.map +1 -0
- package/dist/api-playground-2/components/Request/InputSectionContainer.js +66 -0
- package/dist/api-playground-2/components/Request/InputSectionContainer.js.map +1 -0
- package/dist/api-playground-2/components/Request/ParameterSection.js +36 -0
- package/dist/api-playground-2/components/Request/ParameterSection.js.map +1 -0
- package/dist/api-playground-2/components/Request/SecuritySection.js +55 -0
- package/dist/api-playground-2/components/Request/SecuritySection.js.map +1 -0
- package/dist/api-playground-2/components/Request/ServerSection.js +33 -0
- package/dist/api-playground-2/components/Request/ServerSection.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/ArrayInput.js +55 -0
- package/dist/api-playground-2/components/Request/inputs/ArrayInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/DifferentiatedInput.js +48 -0
- package/dist/api-playground-2/components/Request/inputs/DifferentiatedInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/FileInput.js +43 -0
- package/dist/api-playground-2/components/Request/inputs/FileInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/InputContainer.js +127 -0
- package/dist/api-playground-2/components/Request/inputs/InputContainer.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/NullInput.js +15 -0
- package/dist/api-playground-2/components/Request/inputs/NullInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/NumberInput.js +46 -0
- package/dist/api-playground-2/components/Request/inputs/NumberInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/ObjectInput.js +104 -0
- package/dist/api-playground-2/components/Request/inputs/ObjectInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/OneOfInput.js +77 -0
- package/dist/api-playground-2/components/Request/inputs/OneOfInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/SelectInput.js +54 -0
- package/dist/api-playground-2/components/Request/inputs/SelectInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/StringInput.js +44 -0
- package/dist/api-playground-2/components/Request/inputs/StringInput.js.map +1 -0
- package/dist/api-playground-2/components/Request/inputs/TextInput.js +29 -0
- package/dist/api-playground-2/components/Request/inputs/TextInput.js.map +1 -0
- package/dist/api-playground-2/components/TypeDropdown.js +48 -0
- package/dist/api-playground-2/components/TypeDropdown.js.map +1 -0
- package/dist/api-playground-2/constants/index.js +6 -4
- package/dist/api-playground-2/constants/index.js.map +1 -1
- package/dist/api-playground-2/contexts/ApiPlaygroundContext.js +11 -0
- package/dist/api-playground-2/contexts/ApiPlaygroundContext.js.map +1 -0
- package/dist/api-playground-2/generators/generateInteractiveCodeSample.js +6 -6
- package/dist/api-playground-2/generators/generateInteractiveCodeSample.js.map +1 -1
- package/dist/api-playground-2/generators/generateSnippet.js +187 -36
- package/dist/api-playground-2/generators/generateSnippet.js.map +1 -1
- package/dist/api-playground-2/hooks/useCopyPathWithInputs.js +14 -0
- package/dist/api-playground-2/hooks/useCopyPathWithInputs.js.map +1 -0
- package/dist/api-playground-2/hooks/useInitializeInputs.js +101 -0
- package/dist/api-playground-2/hooks/useInitializeInputs.js.map +1 -0
- package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js +156 -0
- package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/addApiReferenceDataFromMdxAndDocsConfig.js +57 -0
- package/dist/api-playground-2/schemaGraph/addApiReferenceDataFromMdxAndDocsConfig.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/processExamples.js +41 -8
- package/dist/api-playground-2/schemaGraph/processExamples.js.map +1 -1
- package/dist/api-playground-2/schemaGraph/processSecurityOptions.js +107 -0
- package/dist/api-playground-2/schemaGraph/processSecurityOptions.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/utils.js +195 -43
- package/dist/api-playground-2/schemaGraph/utils.js.map +1 -1
- package/dist/api-playground-2/types/index.js +118 -0
- package/dist/api-playground-2/types/index.js.map +1 -0
- package/dist/common/guards.js +32 -6
- package/dist/common/guards.js.map +1 -1
- package/dist/common/potentiallyParseOpenApiString.js +25 -0
- package/dist/common/potentiallyParseOpenApiString.js.map +1 -0
- package/dist/common/replaceSlashIndex.js +7 -0
- package/dist/common/replaceSlashIndex.js.map +1 -0
- package/dist/common/slugToTitle.js +11 -0
- package/dist/common/slugToTitle.js.map +1 -0
- package/dist/components/Api/Expandable.js +119 -0
- package/dist/components/Api/Expandable.js.map +1 -0
- package/dist/components/Api/Markdown.js +66 -0
- package/dist/components/Api/Markdown.js.map +1 -0
- package/dist/components/Api/Param.js +191 -0
- package/dist/components/Api/Param.js.map +1 -0
- package/dist/components/content-components/code-block.js +68 -61
- package/dist/components/content-components/code-block.js.map +1 -1
- package/dist/components/content-components/code-group.js +36 -25
- package/dist/components/content-components/code-group.js.map +1 -1
- package/dist/components/content-components/getNodeText.js +5 -0
- package/dist/components/content-components/getNodeText.js.map +1 -0
- package/dist/constants/index.js +5 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/zIndex.js +7 -0
- package/dist/constants/zIndex.js.map +1 -0
- package/dist/contexts/ApiPlaygroundInputsContext.js +18 -0
- package/dist/contexts/ApiPlaygroundInputsContext.js.map +1 -0
- package/dist/contexts/ConfigContext.js +2 -3
- package/dist/contexts/ConfigContext.js.map +1 -1
- package/dist/contexts/EndpointLocationContext.js +18 -0
- package/dist/contexts/EndpointLocationContext.js.map +1 -0
- package/dist/contexts/MDXContentContext.js +19 -0
- package/dist/contexts/MDXContentContext.js.map +1 -0
- package/dist/env.js +6 -1
- package/dist/env.js.map +1 -1
- package/dist/hooks/useApiPlaygroundInputs.js +7 -0
- package/dist/hooks/useApiPlaygroundInputs.js.map +1 -0
- package/dist/hooks/useApiPlaygroundPrefillExamples.js +40 -0
- package/dist/hooks/useApiPlaygroundPrefillExamples.js.map +1 -0
- package/dist/hooks/useBaseUrlOptions.js +19 -0
- package/dist/hooks/useBaseUrlOptions.js.map +1 -0
- package/dist/hooks/useCheckHash.js +18 -0
- package/dist/hooks/useCheckHash.js.map +1 -0
- package/dist/hooks/useComponentSchemas.js +10 -0
- package/dist/hooks/useComponentSchemas.js.map +1 -0
- package/dist/hooks/useCurrentPath.js +17 -0
- package/dist/hooks/useCurrentPath.js.map +1 -0
- package/dist/hooks/useEndpoint.js +3 -3
- package/dist/hooks/useExpandableMemory.js +46 -0
- package/dist/hooks/useExpandableMemory.js.map +1 -0
- package/dist/hooks/useGenerateNextAdditionalProperties.js +12 -0
- package/dist/hooks/useGenerateNextAdditionalProperties.js.map +1 -0
- package/dist/hooks/useGenerateNextItems.js +12 -0
- package/dist/hooks/useGenerateNextItems.js.map +1 -0
- package/dist/hooks/useGenerateNextProperties.js +12 -0
- package/dist/hooks/useGenerateNextProperties.js.map +1 -0
- package/dist/hooks/useKeyboardShortcut.js +26 -0
- package/dist/hooks/useKeyboardShortcut.js.map +1 -0
- package/dist/hooks/useMDXContent.js +7 -0
- package/dist/hooks/useMDXContent.js.map +1 -0
- package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js +10 -0
- package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js.map +1 -0
- package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js +16 -0
- package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js.map +1 -0
- package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js +16 -0
- package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js.map +1 -0
- package/dist/hooks/usePlaygroundSchemaOptions.js +43 -0
- package/dist/hooks/usePlaygroundSchemaOptions.js.map +1 -0
- package/dist/hooks/usePrefilledInputs/index.js +66 -0
- package/dist/hooks/usePrefilledInputs/index.js.map +1 -0
- package/dist/hooks/usePrefilledInputs/storedServerVariables.js +30 -0
- package/dist/hooks/usePrefilledInputs/storedServerVariables.js.map +1 -0
- package/dist/hooks/useSecurityOption.js +11 -0
- package/dist/hooks/useSecurityOption.js.map +1 -0
- package/dist/hooks/useSendPlaygroundRequest.js +146 -15
- package/dist/hooks/useSendPlaygroundRequest.js.map +1 -1
- package/dist/hooks/useSetDefaultValue.js +64 -0
- package/dist/hooks/useSetDefaultValue.js.map +1 -0
- package/dist/index.d.ts +281 -0
- package/dist/index.js +143 -108
- package/dist/index.js.map +1 -1
- package/dist/openapi/filterEnums.js +21 -0
- package/dist/openapi/filterEnums.js.map +1 -0
- package/dist/openapi/generateNextAdditionalProperties.js +8 -0
- package/dist/openapi/generateNextAdditionalProperties.js.map +1 -0
- package/dist/openapi/generateNextItems.js +8 -0
- package/dist/openapi/generateNextItems.js.map +1 -0
- package/dist/openapi/generateNextProperties.js +24 -0
- package/dist/openapi/generateNextProperties.js.map +1 -0
- package/dist/openapi/generateOptionLabels.js +21 -0
- package/dist/openapi/generateOptionLabels.js.map +1 -0
- package/dist/openapi/generateSimpleLabels.js +5 -0
- package/dist/openapi/generateSimpleLabels.js.map +1 -0
- package/dist/openapi/generateTypeStringFromSchema.js +34 -0
- package/dist/openapi/generateTypeStringFromSchema.js.map +1 -0
- package/dist/openapi/getAuthFilteredSchemaArray.js +19 -0
- package/dist/openapi/getAuthFilteredSchemaArray.js.map +1 -0
- package/dist/paths/isEqualIgnoringLeadingSlash.js +22 -0
- package/dist/paths/isEqualIgnoringLeadingSlash.js.map +1 -0
- package/dist/paths/optionallyRemoveLeadingSlash.js +7 -0
- package/dist/paths/optionallyRemoveLeadingSlash.js.map +1 -0
- package/dist/paths/optionallyRemoveTrailingSlash.js +7 -0
- package/dist/paths/optionallyRemoveTrailingSlash.js.map +1 -0
- package/dist/utils/api-playground/defaults.js +16 -0
- package/dist/utils/api-playground/defaults.js.map +1 -0
- package/dist/utils/api-playground/paramFieldDefaults.js +11 -0
- package/dist/utils/api-playground/paramFieldDefaults.js.map +1 -0
- package/dist/utils/api-reference/getFilteredSecurityOptions.js +5 -0
- package/dist/utils/api-reference/getFilteredSecurityOptions.js.map +1 -0
- package/dist/utils/api-reference/getNextPropertiesByType.js +6 -0
- package/dist/utils/api-reference/getNextPropertiesByType.js.map +1 -0
- package/dist/utils/containsMarkdownTable.js +5 -0
- package/dist/utils/containsMarkdownTable.js.map +1 -0
- package/dist/utils/copyToClipboard.js +12 -0
- package/dist/utils/copyToClipboard.js.map +1 -0
- package/dist/utils/decodeSlug.js +8 -0
- package/dist/utils/decodeSlug.js.map +1 -0
- package/dist/utils/flattenObject.js +11 -0
- package/dist/utils/flattenObject.js.map +1 -0
- package/dist/utils/formatJSON.js +39 -0
- package/dist/utils/formatJSON.js.map +1 -0
- package/dist/utils/optionallyAddLeadingSlash.js +7 -0
- package/dist/utils/optionallyAddLeadingSlash.js.map +1 -0
- package/dist/utils/scrollElementIntoView.js +21 -0
- package/dist/utils/scrollElementIntoView.js.map +1 -0
- 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 ​\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
|
|
2
|
-
import
|
|
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
|
|
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
|
|
15
|
-
const
|
|
16
|
-
function
|
|
17
|
-
const [t, e] =
|
|
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(
|
|
20
|
-
} catch (
|
|
21
|
-
console.error("Failed to copy to clipboard:",
|
|
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:
|
|
24
|
+
return { isCopied: t, copy: o, copyBlob: async (r, l) => {
|
|
25
25
|
try {
|
|
26
|
-
if (
|
|
27
|
-
const
|
|
28
|
-
[
|
|
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([
|
|
30
|
+
await navigator.clipboard.write([m]), e(!0), setTimeout(() => e(!1), 2e3);
|
|
31
31
|
} else {
|
|
32
|
-
const
|
|
33
|
-
await
|
|
32
|
+
const i = await r.text();
|
|
33
|
+
await o(i);
|
|
34
34
|
}
|
|
35
|
-
} catch (
|
|
36
|
-
console.error("Failed to copy blob to clipboard:",
|
|
35
|
+
} catch (i) {
|
|
36
|
+
console.error("Failed to copy blob to clipboard:", i);
|
|
37
37
|
try {
|
|
38
|
-
const
|
|
39
|
-
await
|
|
40
|
-
} catch (
|
|
41
|
-
console.error("Failed to copy as text fallback:",
|
|
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
|
|
47
|
-
return /* @__PURE__ */
|
|
48
|
-
|
|
49
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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:
|
|
62
|
-
return /* @__PURE__ */
|
|
61
|
+
const { isCopied: o, copy: p } = g();
|
|
62
|
+
return /* @__PURE__ */ n(_, { onClick: () => {
|
|
63
63
|
p(t);
|
|
64
|
-
}, isCopied:
|
|
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:
|
|
75
|
+
fileName: o,
|
|
70
76
|
language: p,
|
|
71
|
-
blob:
|
|
72
|
-
contentType:
|
|
77
|
+
blob: r,
|
|
78
|
+
contentType: l
|
|
73
79
|
}) {
|
|
74
|
-
const [
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
var f,
|
|
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
|
|
82
|
-
if (typeof
|
|
83
|
-
const
|
|
84
|
-
for (const
|
|
85
|
-
if (typeof
|
|
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
|
|
91
|
-
if (!
|
|
96
|
+
return B(() => {
|
|
97
|
+
if (!x)
|
|
92
98
|
try {
|
|
93
|
-
const s = b.languages[
|
|
94
|
-
|
|
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),
|
|
102
|
+
console.error("Failed to highlight code:", s), a(d);
|
|
97
103
|
}
|
|
98
|
-
}, [d,
|
|
104
|
+
}, [d, m, x]), /* @__PURE__ */ n(
|
|
99
105
|
"div",
|
|
100
106
|
{
|
|
101
|
-
className:
|
|
102
|
-
children: /* @__PURE__ */
|
|
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-${
|
|
112
|
+
`language-${m}`,
|
|
107
113
|
"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
|
|
108
114
|
),
|
|
109
115
|
children: t
|
|
110
116
|
}
|
|
111
|
-
) :
|
|
117
|
+
) : i ? /* @__PURE__ */ n(
|
|
112
118
|
"code",
|
|
113
119
|
{
|
|
114
120
|
className: h(
|
|
115
|
-
`language-${
|
|
121
|
+
`language-${m}`,
|
|
116
122
|
"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
|
|
117
123
|
),
|
|
118
|
-
dangerouslySetInnerHTML: { __html:
|
|
124
|
+
dangerouslySetInnerHTML: { __html: i }
|
|
119
125
|
}
|
|
120
|
-
) : /* @__PURE__ */
|
|
126
|
+
) : /* @__PURE__ */ n(
|
|
121
127
|
"code",
|
|
122
128
|
{
|
|
123
129
|
className: h(
|
|
124
|
-
`language-${
|
|
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
|
-
|
|
135
|
-
|
|
140
|
+
J as CodeBlock,
|
|
141
|
+
G as CopyDataToClipboardButton,
|
|
142
|
+
_ as CopyIconButton,
|
|
136
143
|
q as CopyToClipboardButton,
|
|
137
|
-
|
|
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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"}
|