diff --git a/components/blocks/autofunction.js b/components/blocks/autofunction.js index 81144614a..e43f9f304 100644 --- a/components/blocks/autofunction.js +++ b/components/blocks/autofunction.js @@ -1,10 +1,7 @@ import React, { useEffect, useState, useRef } from "react"; +import ReactDOMServer from "react-dom/server"; +import Markdown from "react-markdown"; import reverse from "lodash/reverse"; -import classNames from "classnames"; -import Table from "./table"; -import { H2, H3 } from "./headers"; -import Warning from "./warning"; -import Deprecation from "./deprecation"; import { withRouter, useRouter } from "next/router"; import Prism from "prismjs"; import "prismjs/components/prism-python"; @@ -15,18 +12,24 @@ import "prismjs/plugins/toolbar/prism-toolbar"; import "prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard"; import "prismjs/plugins/normalize-whitespace/prism-normalize-whitespace"; -import styles from "./autofunction.module.css"; -import { name } from "file-loader"; +import Table from "./table"; +import { H2, H3 } from "./headers"; +import Note from "./note"; +import Warning from "./warning"; +import Deprecation from "./deprecation"; +import { functionNameToAnchorName } from "../../lib/utils"; +import VersionSelector from "../utilities/versionSelector"; +import { useVersion } from "../../context/VersionContext"; -const cleanHref = (name) => { - return String(name).replace(/\./g, "").replace(/\s+/g, "-"); -}; +import styles from "./autofunction.module.css"; const Autofunction = ({ version, versions, + snowflakeVersions, streamlitFunction, streamlit, + exceptions, slug, hideHeader, deprecated, @@ -34,12 +37,9 @@ const Autofunction = ({ oldStreamlitFunction, }) => { const blockRef = useRef(); - const router = useRouter(); - const maxVersion = versions[versions.length - 1]; const [isHighlighted, setIsHighlighted] = useState(false); - const [currentVersion, setCurrentVersion] = useState( - version ? version : versions[versions.length - 1], - ); + + const { version: currentVersion } = useVersion(); useEffect(() => { highlightWithPrism(); @@ -97,75 +97,13 @@ const Autofunction = ({ setIsHighlighted(true); }; - const VersionSelector = ({ - versionList, - currentVersion, - handleSelectVersion, - }) => { - const isSiS = currentVersion.startsWith("SiS") ? true : false; - const selectClass = isSiS - ? "version-select sis-version" - : currentVersion !== versionList[0] - ? "version-select old-version" - : "version-select"; - - return ( -
- -
- ); - }; - - const handleSelectVersion = (event) => { - const functionObject = - streamlit[streamlitFunction] ?? streamlit[oldStreamlitFunction]; - const slicedSlug = slug.slice(); - - if (event.target.value !== currentVersion) { - setCurrentVersion(event.target.value); - if (event.target.value !== maxVersion) { - let isnum = /^[\d\.]+$/.test(slicedSlug[0]); - let isSiS = /^SiS[\d\.]*$/.test(slicedSlug[0]); - if (isnum || isSiS) { - slicedSlug[0] = event.target.value; - } else { - slicedSlug.unshift(event.target.value); - } - slug.unshift(event.target.value); - } - } - - if (!functionObject) { - router.push(`/${slicedSlug.join("/")}`); - } else { - const name = cleanHref(`st.${functionObject.name}`); - router.push(`/${slicedSlug.join("/")}#${name} `); - } - }; - const footers = []; const args = []; const returns = []; - const versionList = reverse(versions.slice()); let functionObject; + let functionException; let functionDescription; + let functionDescriptionPrefix = ""; let header; let headerTitle; let body; @@ -177,8 +115,17 @@ const Autofunction = ({ if (streamlitFunction in streamlit || oldStreamlitFunction in streamlit) { functionObject = streamlit[streamlitFunction] ?? streamlit[oldStreamlitFunction]; + functionException = + streamlitFunction in streamlit + ? exceptions[streamlitFunction] ?? {} + : oldStreamlitFunction in streamlit + ? exceptions[oldStreamlitFunction] ?? {} + : {}; isClass = functionObject.is_class; isAttributeDict = functionObject.is_attribute_dict ?? false; + if ("_" in functionException && "content" in functionException["_"]) { + functionDescriptionPrefix = functionException["_"]["content"]; + } if ( functionObject.description !== undefined && functionObject.description @@ -198,20 +145,14 @@ const Autofunction = ({ {streamlitFunction.replace("streamlit", "st")} - + {version && version.startsWith("SiS") ? ( @@ -246,7 +187,7 @@ const Autofunction = ({