Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20.8.1
v20.19.3
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,6 @@ If you know the answer to a Streamlit user's pain point and want to add it to th
1. Decide which of the above sections your article belongs to
2. Navigate to the relevant section's folder in `kb/` and
3. Create a `.md` file in the above specified format containing your article

- Make sure the title in the front matter and the file header in Markdown are identical. E.g.

```markdown
Expand Down
2 changes: 1 addition & 1 deletion components/blocks/autofunction.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import getConfig from "next/config";
const { publicRuntimeConfig } = getConfig();

import styles from "./autofunction.module.css";
import { looksLikeVersionAndPlatformString } from "../../context/VersionContext";
import { looksLikeVersionAndPlatformString } from "../../lib/next/utils";

const LATEST_VERSION = publicRuntimeConfig.LATEST_VERSION;
const DEFAULT_VERSION = publicRuntimeConfig.DEFAULT_VERSION;
Expand Down
2 changes: 1 addition & 1 deletion components/navigation/mobileNav.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from "react";
import bus from "../../lib/bus";
import bus from "../../lib/node/bus";
import router from "next/router";

import styles from "./mobileNav.module.css";
Expand Down
2 changes: 1 addition & 1 deletion components/navigation/navChild.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Link from "next/link";
import classNames from "classnames";

import styles from "./navChild.module.css";
import { looksLikeVersionAndPlatformString } from "../../context/VersionContext";
import { looksLikeVersionAndPlatformString } from "../../lib/next/utils";

const NavChild = ({ slug, page, color, className }) => {
const [manualState, setManualState] = useState(null);
Expand Down
2 changes: 1 addition & 1 deletion components/navigation/navItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from "react";
import Link from "next/link";
import classNames from "classnames";

import { urlInChildren } from "../../lib/utils.js";
import { urlInChildren } from "../../lib/purejs/breadcrumbHelpers";
import NavChild from "./navChild";

import styles from "./navItem.module.css";
Expand Down
8 changes: 4 additions & 4 deletions components/navigation/sideBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { debounce } from "lodash";
import React, { useState, useEffect } from "react";
import classNames from "classnames";

import bus from "../../lib/bus";
import bus from "../../lib/node/bus";
import NavItem from "../navigation/navItem";

import styles from "./sideBar.module.css";
Expand Down Expand Up @@ -94,7 +94,7 @@ const SideBar = ({ menu, slug }) => {
styles.Container,
isOpen ? styles.OpenNav : styles.ClosedNav,
isOver ? styles.OverNav : styles.CollapsedNav,
isSticky === "window" && styles.WindowStickyNav
isSticky === "window" && styles.WindowStickyNav,
)}
onScroll={(e) => handleScroll(e)}
>
Expand All @@ -104,8 +104,8 @@ const SideBar = ({ menu, slug }) => {
isSticky === "window"
? styles.WindowStickyGradient
: isSticky === "scrollbar"
? styles.ScrollBarStickyGradient
: styles.StandardGradient
? styles.ScrollBarStickyGradient
: styles.StandardGradient,
)}
/>
<nav onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
Expand Down
5 changes: 3 additions & 2 deletions components/utilities/breadCrumbs.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import React from "react";
import { breadcrumbsForSlug } from "../../lib/utils.js";
import Link from "next/link";

import { breadcrumbsForSlug } from "../../lib/purejs/breadcrumbHelpers";
import { looksLikeVersionAndPlatformString } from "../../lib/next/utils";

import styles from "./breadCrumbs.module.css";
import { looksLikeVersionAndPlatformString } from "../../context/VersionContext.js";

const BreadCrumbs = ({ slug, menu }) => {
const formatedTitle = (title) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,6 @@ with monthly:
```

You'll be using these libraries as follows:

- You'll work with sales data in a `pandas.DataFrame`.
- You'll generate random sales numbers with `numpy`.
- The data will have `datetime.date` index values.
Expand Down
27 changes: 3 additions & 24 deletions context/VersionContext.js → lib/next/VersionContext.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import {
useEffect,
} from "react";
import getConfig from "next/config";

import { looksLikeVersionAndPlatformString } from "./utils";

const { publicRuntimeConfig } = getConfig();

const VersionContext = createContext();
Expand Down Expand Up @@ -54,30 +57,6 @@ export function useVersionContext() {
return useContext(VersionContext);
}

export function looksLikeVersionAndPlatformString(urlPart) {
const platforms = [DEFAULT_PLATFORM].concat(Object.keys(PLATFORM_VERSIONS));

// docs.streamlit.io/1.23.0/path1/path2
const isPureVersion = /^[\d\.]+$/.test(urlPart);
if (isPureVersion) return true;

// docs.streamlit.io/latest/path1/path2
const isLatestVersion = urlPart == "latest";
if (isLatestVersion) return true;

// docs.streamlit.io/1.23.0-sis/path1/path2
const versionPlatformRegex = RegExp(`^[\\d\\.]+-(${platforms.join("|")})$`);
const isVersionWithPlatform = versionPlatformRegex.test(urlPart);
if (isVersionWithPlatform) return true;

// docs.streamlit.io/latest-sis/path1/path2
const latestPlatformRegex = RegExp(`^latest-(${platforms.join("|")})$`);
const isLatestPlatform = latestPlatformRegex.test(urlPart);
if (isLatestPlatform) return true;

return false;
}

export function getVersionAndPlatformFromPathPart(pathPart) {
if (!looksLikeVersionAndPlatformString(pathPart)) {
return [null, null];
Expand Down
44 changes: 13 additions & 31 deletions lib/utils.js → lib/next/utils.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,17 @@
export function breadcrumbsForSlug(menu, slugStr, path) {
path = path ? path : [];
menu.forEach((obj) => {
if (urlInChildren(obj, slugStr)) {
path.push({
name: obj.name,
url: obj.url,
icon: obj.icon,
color: obj.color,
});
if (obj.children && obj.children.length > 0) {
breadcrumbsForSlug(obj.children, slugStr, path);
}
}
});
return path;
}
import getConfig from "next/config";
import { looksLikeVersionAndPlatformStringGeneric } from "../purejs/versionHelpers";

export function urlInChildren(menu, slugStr) {
let found = false;
if (menu.url && menu.url === slugStr) {
found = true;
}
if (!found && menu.children && menu.children.length > 0) {
for (const index in menu.children) {
if (found) {
continue;
}
found = urlInChildren(menu.children[index], slugStr);
}
}
return found;
const { publicRuntimeConfig } = getConfig();

const DEFAULT_PLATFORM = publicRuntimeConfig.DEFAULT_PLATFORM;
const PLATFORM_VERSIONS = publicRuntimeConfig.PLATFORM_VERSIONS;

export function looksLikeVersionAndPlatformString(urlPart) {
return looksLikeVersionAndPlatformStringGeneric(
urlPart,
DEFAULT_PLATFORM,
PLATFORM_VERSIONS,
);
}

export function getPreviousNextFromMenu(menu, slugStr, parent) {
Expand Down
File renamed without changes.
File renamed without changes.
37 changes: 37 additions & 0 deletions lib/node/defaults.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import fs from "fs";
import path from "path";

export const IS_DEV = process.env.NODE_ENV === "development";
const PYTHON_DIRECTORY = path.join(process.cwd(), "python/");

const jsonDocstrings = fs.readFileSync(
path.join(PYTHON_DIRECTORY, "streamlit.json"),
"utf8",
);
const jsonPlatformNotes = fs.readFileSync(
path.join(PYTHON_DIRECTORY, "snowflake.json"),
"utf8",
);

// Gather all versioning informationing to be available for import everywhere
export const DOCSTRINGS = jsonDocstrings ? JSON.parse(jsonDocstrings) : {};
export const VERSIONS_LIST = Object.keys(DOCSTRINGS).reverse();
export const LATEST_VERSION = VERSIONS_LIST[0];
export const DEFAULT_VERSION = "latest";
export const PLATFORM_NOTES = jsonPlatformNotes
? JSON.parse(jsonPlatformNotes)
: {};
let platformVersions = {};
let latestPlatformVersion = {};
for (const index in Object.keys(PLATFORM_NOTES)) {
const key = Object.keys(PLATFORM_NOTES)[index];
platformVersions[key] = Object.keys(PLATFORM_NOTES[key]);
latestPlatformVersion[key] = Object.keys(PLATFORM_NOTES[key]).at(-1);
}
export const PLATFORM_VERSIONS = platformVersions;
export const PLATFORM_LATEST_VERSIONS = latestPlatformVersion;
export const PLATFORM_NAMES = {};
PLATFORM_NAMES["oss"] = "All versions";
PLATFORM_NAMES["sis"] = "Streamlit in Snowflake";
PLATFORM_NAMES["na"] = "Snowflake Native Apps";
export const DEFAULT_PLATFORM = "oss";
33 changes: 33 additions & 0 deletions lib/purejs/breadcrumbHelpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
export function breadcrumbsForSlug(menu, slugStr, path) {
path = path ? path : [];
menu.forEach((obj) => {
if (urlInChildren(obj, slugStr)) {
path.push({
name: obj.name,
url: obj.url,
icon: obj.icon,
color: obj.color,
});
if (obj.children && obj.children.length > 0) {
breadcrumbsForSlug(obj.children, slugStr, path);
}
}
});
return path;
}

export function urlInChildren(menu, slugStr) {
let found = false;
if (menu.url && menu.url === slugStr) {
found = true;
}
if (!found && menu.children && menu.children.length > 0) {
for (const index in menu.children) {
if (found) {
continue;
}
found = urlInChildren(menu.children[index], slugStr);
}
}
return found;
}
27 changes: 27 additions & 0 deletions lib/purejs/versionHelpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export function looksLikeVersionAndPlatformStringGeneric(
urlPart,
defaultPlatform,
platformVersions,
) {
const platforms = [defaultPlatform].concat(Object.keys(platformVersions));

// docs.streamlit.io/1.23.0/path1/path2
const isPureVersion = /^[\d\.]+$/.test(urlPart);
if (isPureVersion) return true;

// docs.streamlit.io/latest/path1/path2
const isLatestVersion = urlPart == "latest";
if (isLatestVersion) return true;

// docs.streamlit.io/1.23.0-sis/path1/path2
const versionPlatformRegex = RegExp(`^[\\d\\.]+-(${platforms.join("|")})$`);
const isVersionWithPlatform = versionPlatformRegex.test(urlPart);
if (isVersionWithPlatform) return true;

// docs.streamlit.io/latest-sis/path1/path2
const latestPlatformRegex = RegExp(`^latest-(${platforms.join("|")})$`);
const isLatestPlatform = latestPlatformRegex.test(urlPart);
if (isLatestPlatform) return true;

return false;
}
Loading