{"version":3,"sources":["serviceWorker.js","utils.js","Link/Link.jsx","Search/Search.jsx","TreeNavigation/TreeNavigation.jsx","SourcePicker/SourcePicker.jsx","ErrorPage/ErrorPage.jsx","Breadcrumbs/Breadcrumbs.jsx","Tags/Tags.jsx","DocumentationComponents/Asciinema/Asciinema.jsx","DocumentationComponents/Banner/Banner.jsx","DocumentationComponents/CodeBlock/CodeBlock.jsx","DocumentationComponents/CodeSandbox/CodeSandbox.jsx","DocumentationComponents/Color/Color.jsx","DocumentationComponents/ColorCard/ColorCard.jsx","DocumentationComponents/ColorGroup/ColorGroup.jsx","DocumentationComponents/Playground/Playground.jsx","DocumentationComponents/DoDont/DoDont.jsx","DocumentationComponents/FigmaEmbed/FigmaEmbed.jsx","DocumentationComponents/Glitch/Glitch.jsx","DocumentationComponents/Heading/Heading.jsx","DocumentationComponents/Image/Image.jsx","DocumentationComponents/ImageGrid/ImageGrid.jsx","DocumentationComponents/Link/Link.jsx","DocumentationComponents/ReactPlayground/ReactPlayground.jsx","DocumentationComponents/TableOfContents/TableOfContents.jsx","DocumentationComponents/TypographySpecimen/TypographySpecimen.jsx","Doc/Doc.jsx","Meta/Meta.jsx","TabBar/TabBar.jsx","AssetList/AssetList.jsx","SourceView/SourceView.jsx","NodeList/NodeList.jsx","Page/Page.jsx","Node/Node.jsx","HamburgerIcon.svg","CloseIcon.svg","App.js","index.js"],"names":["Boolean","window","location","hostname","match","constructURL","node","source","activeTab","pathname","startsWith","urlParams","URLSearchParams","search","set","delete","sort","params","toString","useURL","useLocation","query","nodeURL","substring","get","slugify","string","a","p","RegExp","split","join","toLowerCase","replace","c","charAt","indexOf","copyTextToClipboard","text","textArea","document","createElement","style","position","top","left","value","body","appendChild","focus","select","execCommand","err","console","log","removeChild","NavLink","children","to","props","Link","SearchResult","ref","React","createRef","useEffect","isFocused","current","scrollIntoView","behavior","block","snippet","description","fragments","length","classes","push","className","onClick","onSelect","title","dangerouslySetInnerHTML","__html","url","Search","history","useHistory","useState","searchTerm","setSearchTerm","searchIsFocused","setSearchIsFocused","shouldShowResults","setShouldShowResults","searchResults","setSearchResults","focusedResult","setFocusedResult","searchInputRef","handleSelect","blur","hideSearch","shortcutHandler","event","key","preventDefault","selectedItem","target","nodeName","term","Client","then","data","hits","catch","error","addEventListener","removeEventListener","ev","stopPropagation","type","placeholder","onChange","onFocus","map","r","i","renderList","onHideMobileSidebar","content","activeClassName","exact","TreeNavigation","tree","useContext","GlobalContext","filterTerm","setFilterTerm","filteredTree","setFilteredTree","filterInputRef","useLayoutEffect","activeLink","querySelector","filter","nodes","treeToFilter","Tree","filteredBy","n","root","filterTree","renderedTree","useMemo","memo","SourcePicker","sourceFromURL","availableSources","setAvailableSources","setSource","switchSource","useCallback","newSource","has","isExistent","handleSocketEvent","JSON","parse","detail","topic","includes","sources","sourceToLoad","some","s","name","disabled","selected","is_ready","ErrorPage","Breadcrumbs","crumbs","pop","Tags","tags","setStyle","config","styles","t","textColor","color","contrast","ratio","tag","isClickable","metaKey","Asciinema","id","src","Banner","CodeBlock","language","code","setCode","copyText","setCopyText","codeRef","fetch","undefined","debug","trimInitialLine","clsx","Prism","highlightAllUnder","displayTitle","textContent","setTimeout","CodeSandbox","allow","sandbox","view","file","Color","colorValue","isColor","backgroundColor","strColor","Option","ColorCard","showCopiedIndicator","setShowCopiedIndicator","useRef","compact","navigator","clipboard","writeText","score","comment","ColorGroup","colors","setColors","Children","cloneElement","Playground","annotations","annotationData","setAnnotationData","highlightedAnnotation","setHighlightedAnnotation","annotate","isDark","background","isPageComponentDemo","noPadding","contentFullWidth","backgroundcolor","annotationMarkers","x","offsetX","y","offsetY","onMouseEnter","onMouseLeave","annotationColor","caption","Do","Dont","strikethrough","x1","y1","x2","y2","DoDont","FigmaEmbed","image","setImage","frameId","setFrameId","errorMessage","setErrorMessage","loadingMessage","setLoadingMessage","findId","nameWeAreLookingFor","frame","nodeId","forEach","figma","accessToken","method","headers","Headers","response","status","json","images","getImage","alt","href","rel","Glitch","Heading","Tag","alpha","beta","gamma","delta","level","isJumptarget","getNodeText","doc","Array","Image","width","height","ImageGrid","columnCount","columns","DocumentLink","nodeAsset","URL","origin","Object","fromEntries","v","ReactPlayground","showsource","showPlaygroundSource","setShowPlaygroundSource","iframeSourceURL","setIframeSourceURL","isLoading","setIsLoading","setHeight","playgroundURL","handler","contentHeight","allowtransparency","nopadding","disableshowsource","TOCEntry","cutoffLevel","slug","TableOfContents","handleClick","toc","e","cutofflevel","TypographySpecimen","setStyles","sentences","extends","extending","find","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","textTransform","demoSentence","sentence","Math","floor","random","Doc","onRender","htmlContent","components","requestAnimationFrame","context","transforms","DoDontGroup","Warning","h1","h2","h3","h4","img","pre","orphans","keys","k","concat","transformedContent","transform","isPreformatted","noTransform","class","Meta","TabBar","tabs","rightSideTabs","onSetActiveTab","AssetList","imageFileTypes","assets","docTitle","download","filesize","size","Date","modified","toLocaleString","SourceView","setData","hello","input","stringify","Node","NodeList","scrollHeadingFromURLIntoView","activeTabWithHeading","docRef","smoothScroll","h","heading","Page","version","prev","next","related","authors","custom","docs","downloads","scrollTo","handleHeadingScrollRef","playground","tabBar","handleDocOnRender","nodeInfo","d","nextURL","activeDoc","html","authorLinks","email","relatedLinks","entries","isArray","modifiedFormatted","toLocaleDateString","Helmet","titleTemplate","org","project","defaultTitle","nodeData","setNodeData","setError","loadNode","NodeWrapper","Main","socket","setTree","mobileSidebarIsActive","setMobileSidebarIsActive","setConfig","loadTree","handleHideMobileSidebar","messages","dispatchEvent","CustomEvent","refToMain","htmlAttributes","lang","tabIndex","CloseIcon","HamburgerIcon","path","component","createContext","App","Provider","ReactDOM","render","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e9cb2f86.chunk.js","sourcesContent":["/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { useLocation } from 'react-router-dom';\n\n// Constructs a url based on the given props, while maintaining\n// the params from the current URL\nexport const constructURL = ({ node, source, activeTab }) => {\n if (!node) {\n node = window.location.pathname;\n }\n\n if (!node.startsWith('/')) {\n node = `/${node}`;\n }\n\n let urlParams = new URLSearchParams(window.location.search);\n\n if (source) {\n urlParams.set('v', source);\n }\n if (source === null) {\n urlParams.delete('v');\n }\n\n if (activeTab) {\n urlParams.set('t', activeTab);\n }\n if (activeTab === null) {\n urlParams.delete('t');\n }\n\n urlParams.sort();\n const params = urlParams.toString();\n\n return `${node}${params ? `?${params}` : ''}`;\n};\n\n// A custom hook that builds on useLocation to parse\n// the query string for you.\nexport function useURL() {\n const location = useLocation();\n const query = new URLSearchParams(location.search);\n\n return {\n nodeURL: location.pathname.substring(1),\n search: location.search,\n source: query.get('v'),\n activeTab: query.get('t'),\n };\n}\n\n// via https://gist.github.com/hagemann/382adfc57adbd5af078dc93feef01fe1\nexport function slugify(string) {\n const a = 'àáäâãåăæçèéëêǵḧìíïîḿńǹñòóöôœṕŕßśșțùúüûǘẃẍÿź·/_,:;';\n const b = 'aaaaaaaaceeeeghiiiimnnnoooooprssstuuuuuwxyz------';\n const p = new RegExp(a.split('').join('|'), 'g');\n return string\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(p, (c) => b.charAt(a.indexOf(c))) // Replace special characters\n .replace(/&/g, '-and-') // Replace & with ‘and’\n .replace(/[^\\w-]+/g, '') // Remove all non-word characters\n .replace(/--+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, ''); // Trim - from end of text\n}\n\n// via https://stackoverflow.com/a/30810322/\nexport function copyTextToClipboard(text) {\n var textArea = document.createElement('textarea');\n\n textArea.style.position = 'fixed';\n textArea.style.top = -1000;\n textArea.style.left = -1000;\n\n textArea.value = text;\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } catch (err) {\n console.log('Oops, unable to copy');\n }\n\n document.body.removeChild(textArea);\n}\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { NavLink as RouterNavLink, Link as RouterLink } from 'react-router-dom';\n\nimport { constructURL } from '../utils';\n\nexport const NavLink = ({ children, to, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nconst Link = ({ children, to, ...props }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Link;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { Client } from '@rundsk/js-sdk';\n\nimport './Search.css';\nimport { constructURL } from '../utils';\n\nfunction SearchResult(props) {\n const ref = React.createRef();\n\n useEffect(() => {\n if (props.isFocused && ref.current) {\n ref.current.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [props.isFocused, ref]);\n\n let snippet = props.description;\n\n if (props.fragments.length > 0) {\n snippet = props.fragments[0];\n }\n\n let classes = ['search-result'];\n\n if (props.isFocused) {\n classes.push('search-result--is-focused');\n }\n\n return (\n
\n
{props.title}
\n {snippet && }\n
/{props.url}
\n
\n );\n}\n\nfunction Search(props) {\n const history = useHistory();\n\n const [searchTerm, setSearchTerm] = useState(props.searchTerm || '');\n const [searchIsFocused, setSearchIsFocused] = useState(false);\n const [shouldShowResults, setShouldShowResults] = useState(false);\n const [searchResults, setSearchResults] = useState([]);\n const [focusedResult, setFocusedResult] = useState(0);\n\n const searchInputRef = React.createRef();\n\n const handleSelect = (url) => {\n blur();\n setSearchTerm('');\n hideSearch();\n history.push(constructURL({ node: url, activeTab: null }));\n };\n\n const shortcutHandler = (event) => {\n if (event.key === 'ArrowDown' && searchResults.length > 0) {\n event.preventDefault();\n\n if (focusedResult < searchResults.length - 1) {\n setFocusedResult(focusedResult + 1);\n }\n }\n\n if (event.key === 'ArrowUp' && searchResults.length > 0) {\n event.preventDefault();\n\n if (focusedResult > 0) {\n setFocusedResult(focusedResult - 1);\n }\n }\n\n if (event.key === 'Enter' && searchResults.length > 0) {\n if (searchResults.length > 0 && searchResults.length >= focusedResult - 1) {\n let selectedItem = searchResults[focusedResult];\n handleSelect(selectedItem.url);\n }\n }\n\n if (event.key === 'Escape' && searchIsFocused) {\n event.preventDefault();\n blur();\n hideSearch();\n }\n\n if (event.key === 's' && event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n focus();\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', shortcutHandler);\n\n return () => {\n document.removeEventListener('keydown', shortcutHandler);\n };\n });\n\n useEffect(() => {\n search(searchTerm);\n }, [searchTerm]);\n\n function onSearchTermChange(ev) {\n setSearchTerm(ev.target.value);\n setFocusedResult(0);\n setShouldShowResults(true);\n }\n\n async function search(term) {\n if (!term) {\n // No search term given, results in showing the full unfiltered tree (clear).\n setSearchResults([]);\n return;\n }\n\n const search = Client.search(term);\n search\n .then((data) => {\n if (!data.hits) {\n // Filtering yielded no results, we save us iterating over the\n // existing tree, as we already know what it should look like.\n setSearchResults([]);\n return;\n }\n setSearchResults(data.hits);\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n function showSearch() {\n setSearchIsFocused(true);\n setShouldShowResults(searchTerm !== '');\n }\n\n function hideSearch() {\n setSearchIsFocused(false);\n setShouldShowResults(false);\n }\n\n function blur() {\n if (searchInputRef.current) {\n searchInputRef.current.blur();\n }\n }\n\n function focus() {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n\n let classes = ['search'];\n\n if (searchIsFocused) {\n classes.push('search--is-focused');\n }\n\n return (\n
{\n if (searchIsFocused) {\n hideSearch();\n }\n }}\n >\n
Start typing to search{props.title ? ` ${props.title}` : ''}…
\n )}\n
\n
\n
\n
\n
\n );\n}\n\nexport default Search;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect, useContext, useMemo, useLayoutEffect } from 'react';\n\nimport { Client } from '@rundsk/js-sdk';\nimport { Tree } from '@rundsk/js-sdk';\nimport { NavLink } from '../Link';\n\nimport { GlobalContext } from '../App';\n\nimport './TreeNavigation.css';\n\nfunction renderList(node, onHideMobileSidebar) {\n if (!node) {\n return;\n }\n\n let content = [\n \n {node.title}\n ,\n ];\n\n let children = node.children.map((c) => {\n return renderList(c, onHideMobileSidebar);\n });\n\n if (children) {\n content.push(
{children}
);\n }\n\n return
{content}
;\n}\n\nfunction TreeNavigation({ tree, onHideMobileSidebar }) {\n const { filterTerm, setFilterTerm } = useContext(GlobalContext);\n\n const [filteredTree, setFilteredTree] = useState(null);\n\n const filterInputRef = React.createRef();\n\n const shortcutHandler = (event) => {\n if (event.key === 'Escape') {\n blurFilter();\n }\n\n if (event.key === 'f' && event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n focusFilter();\n }\n };\n\n function blurFilter() {\n if (filterInputRef.current) {\n filterInputRef.current.blur();\n }\n }\n\n function focusFilter() {\n if (filterInputRef.current) {\n filterInputRef.current.focus();\n }\n }\n\n useEffect(() => {\n document.addEventListener('keydown', shortcutHandler);\n\n return () => {\n document.removeEventListener('keydown', shortcutHandler);\n };\n });\n\n function handleFilterTermChange(ev) {\n setFilterTerm(ev.target.value);\n }\n\n // Scroll the link to the currently open page into view on page load\n useLayoutEffect(() => {\n const activeLink = document.querySelector('.tree-navigation__tree .is-active');\n\n if (activeLink) {\n activeLink.scrollIntoView();\n }\n });\n\n useEffect(() => {\n async function filterTree() {\n if (!filterTerm) {\n // No search term given, results in showing the full unfiltered tree (clear).\n setFilteredTree(null);\n return;\n }\n\n Client.filter(filterTerm)\n .then((data) => {\n if (!data.nodes) {\n // Filtering yielded no results, we save us iterating over the\n // existing tree, as we already know what it should look like.\n setFilteredTree(null);\n return;\n }\n let treeToFilter = new Tree(tree);\n\n setFilteredTree(treeToFilter.filteredBy(data.nodes.map((n) => n.url)).root);\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n filterTree();\n }, [filterTerm, tree]);\n\n let renderedTree = useMemo(() => {\n return renderList(filteredTree || tree, onHideMobileSidebar);\n }, [tree, filteredTree, onHideMobileSidebar]);\n\n // We throw out the root node and only display\n // the children\n if (renderedTree && renderedTree.props.children) {\n renderedTree = renderedTree.props.children[1];\n }\n\n if (filteredTree && filteredTree.children.length === 0) {\n renderedTree =
No aspects found
;\n }\n\n return (\n \n );\n}\n\nexport default React.memo(TreeNavigation);\n","/**\n * Copyright 2021 Marius Wilms, Christoph Labacher. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect, useContext, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { Client } from '@rundsk/js-sdk';\n\nimport { constructURL, useURL } from '../utils';\nimport { GlobalContext } from '../App';\n\nimport './SourcePicker.css';\n\nfunction SourcePicker() {\n const { nodeURL, source: sourceFromURL } = useURL();\n const history = useHistory();\n\n const [availableSources, setAvailableSources] = useState([]);\n\n const { source, setSource } = useContext(GlobalContext);\n\n const switchSource = useCallback(\n (newSource) => {\n setSource(newSource);\n\n // Update URL\n history.replace(constructURL({ source: newSource }));\n\n // The node might have gone away.\n Client.has(nodeURL, newSource).then((isExistent) => {\n if (!isExistent) {\n console.log('Current node has gone away after tree has synced.');\n history.push(constructURL({ node: '/', source: newSource }));\n }\n });\n },\n [history, nodeURL, setSource]\n );\n\n // Handle Socket Event\n useEffect(() => {\n const handleSocketEvent = (ev) => {\n let m = JSON.parse(ev.detail);\n\n if (m.topic.includes('source.status.changed')) {\n Client.sources().then((data) => {\n setAvailableSources(data.sources);\n });\n }\n };\n\n window.addEventListener('socketMessage', handleSocketEvent);\n\n return () => {\n window.removeEventListener('socketMessage', handleSocketEvent);\n };\n }, [setAvailableSources]);\n\n // Load the available sources\n useEffect(() => {\n console.log('Loading sources');\n\n Client.sources().then((data) => {\n setAvailableSources(data.sources);\n });\n }, [setAvailableSources]);\n\n // Set the source\n useEffect(() => {\n if (availableSources.length === 0) {\n return;\n }\n\n console.log('Setting source');\n\n let sourceToLoad = null;\n\n // First we check if the source from the url exists\n if (sourceFromURL && availableSources.some((s) => s.name === sourceFromURL)) {\n sourceToLoad = sourceFromURL;\n }\n\n if (!sourceToLoad && availableSources.some((s) => s.name === 'live')) {\n sourceToLoad = 'live';\n }\n\n if (!sourceToLoad) {\n sourceToLoad = availableSources[0].name;\n }\n\n setSource(sourceToLoad);\n }, [sourceFromURL, availableSources, setSource]);\n\n return (\n
\n \n
\n );\n}\n\nexport default React.memo(SourcePicker);\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './ErrorPage.css';\n\nfunction ErrorPage(props) {\n return (\n
\n
\n
{props.children}
\n
\n
\n );\n}\n\nexport default ErrorPage;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport Link from '../Link';\nimport './Breadcrumbs.css';\n\nfunction Breadcrumbs(props) {\n let crumbs;\n\n if (props.crumbs) {\n crumbs = props.crumbs.map((c) => {\n return (\n
\n \n {c.title}\n \n
\n );\n });\n\n crumbs.pop();\n }\n return
{crumbs}
;\n}\n\nexport default Breadcrumbs;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect, useContext } from 'react';\nimport contrast from 'get-contrast';\n\nimport { GlobalContext } from '../App';\n\nimport './Tags.css';\n\nfunction Tags(props) {\n const [style, setStyle] = useState('');\n const { config, filterTerm, setFilterTerm } = useContext(GlobalContext);\n\n useEffect(() => {\n if (config?.tags) {\n let styles = config.tags.map((t) => {\n let textColor = 'rgba(0,0,0,.7)';\n\n if (!t.color.includes('var') && contrast.ratio(t.color, 'black') < contrast.ratio(t.color, 'white')) {\n textColor = 'white';\n }\n\n if (t.color.includes('--color-red') || t.color.includes('--color-blue')) {\n textColor = 'white';\n }\n\n return `.tags button.tags__tag[tag*='${t.name}'] { background-color: ${t.color}; color: ${textColor}; }`;\n });\n setStyle(styles.join('\\n'));\n }\n }, [config]);\n\n let tags;\n\n if (props.tags) {\n tags = props.tags.map((t) => {\n return (\n
\n \n
\n );\n });\n }\n\n return (\n
\n \n\n {tags}\n
\n );\n}\n\nexport default Tags;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Asciinema.css';\n\nfunction Asciinema(props) {\n return (\n
\n \n
\n );\n}\n\nexport default Asciinema;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Banner.css';\n\nfunction Banner(props) {\n let classes = ['banner'];\n\n switch (props.type) {\n case 'warning':\n classes.push('banner--warning');\n break;\n case 'error':\n classes.push('banner--error');\n break;\n case 'important':\n classes.push('banner--important');\n break;\n default:\n break;\n }\n\n return (\n
\n {props.title &&
{props.title}
}\n
{props.children}
\n
\n );\n}\n\nexport default Banner;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\n\nimport { Client } from '@rundsk/js-sdk';\n\nimport Prism from 'prismjs';\n\nimport { copyTextToClipboard } from '../../utils';\n\nimport './CodeBlock.css';\nimport './PrismThemeDSK.css';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-docker';\nimport 'prismjs/components/prism-go';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-jsx';\nimport 'prismjs/components/prism-markdown';\n// import 'prismjs/components/prism-php';\nimport 'prismjs/components/prism-scss';\n\n// This components receives a literal string with HTML escaped content as its\n// children. Independent if indirectly used with
tags (coming from fenced\n// Markdown syntax) or directly when was used inside the document.\n//\n// The DocTransformer will ensure that the content is considered pre-formatted\n// in any case.\nfunction CodeBlock({ title, src, language, children, ...props }) {\n const [code, setCode] = useState(null);\n const [copyText, setCopyText] = useState('Copy');\n const codeRef = React.createRef();\n\n // Sometimes a CodeBlock start with a empty line, because of the way\n // codeblocks have to be formated in Markdown. We consider this undesirable\n // and remove the first line, if it is empty.\n function trimInitialLine(content) {\n if (content.charAt(0) === '\\n') {\n return content.substring(1);\n }\n return content;\n }\n\n function copyCode() {\n setCopyText('Copied!');\n copyTextToClipboard(codeRef.current.textContent);\n\n setTimeout(() => {\n setCopyText('Copy');\n }, 2000);\n }\n\n useEffect(() => {\n if (src) {\n Client.fetch(src, 'text').then((data) => setCode({data}));\n } else {\n let content;\n\n if (children === undefined) {\n content = '';\n } else if (typeof children === 'string') {\n content = children;\n } else {\n console.debug('Unsupported type (%s) of children content in .', typeof children);\n return;\n }\n content = trimInitialLine(content);\n\n setCode(\n \n );\n }\n }, [src, children, language]);\n\n useEffect(() => {\n if (language && codeRef.current) {\n Prism.highlightAllUnder(codeRef.current);\n }\n }, [code, language, codeRef]);\n\n let displayTitle = title || src || props['data-node-asset'];\n\n return (\n
\n {displayTitle && (\n
\n
{displayTitle}
\n
\n )}\n
\n
\n {copyText}\n
\n
\n {code}\n
\n
\n
\n );\n}\n\nexport default CodeBlock;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './CodeSandbox.css';\n\nfunction CodeSandbox(props) {\n return (\n
\n \n
\n );\n}\n\nexport default CodeSandbox;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Color.css';\nimport { copyTextToClipboard } from '../../utils';\nimport contrast from 'get-contrast';\n\nfunction Color(props) {\n let classes = ['color'];\n\n let colorValue = props.color.toLowerCase();\n\n if (isColor(props.color) && contrast.ratio(colorValue, 'white') < 1.5) {\n classes.push('color--is-ultra-light');\n }\n\n function copyCode() {\n copyTextToClipboard(props.color);\n }\n\n return (\n \n );\n}\n\nexport default Color;\n\nconst isColor = (strColor) => {\n const s = new Option().style;\n s.color = strColor;\n return s.color !== '';\n};\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useRef } from 'react';\nimport './ColorCard.css';\nimport { copyTextToClipboard } from '../../utils';\nimport contrast from 'get-contrast';\n\nfunction ColorCard(props) {\n const [showCopiedIndicator, setShowCopiedIndicator] = useState(false);\n const ref = useRef();\n\n let classes = ['color-card'];\n\n let colorValue = props.color.toLowerCase();\n\n if (isColor(props.color) && contrast.ratio(colorValue, 'white') < 1.5) {\n classes.push('color-card--is-ultra-light');\n }\n\n if (props.compact) {\n classes.push('color-card--is-compact');\n }\n\n function copyCode(ev) {\n ev.preventDefault();\n setShowCopiedIndicator(true);\n if (navigator.clipboard) {\n navigator.clipboard.writeText(props.color);\n } else {\n // navigator.clipboard does not work in Internet Explorer\n copyTextToClipboard(props.color);\n\n // Using copyTextToClipboard means the element loses focus. Here we restore it.\n if (ref.current) {\n ref.current.focus();\n }\n }\n\n setTimeout(() => {\n setShowCopiedIndicator(false);\n }, 1000);\n }\n\n return (\n \n );\n}\n\nexport default ColorCard;\n\nconst isColor = (strColor) => {\n const s = new Option().style;\n s.color = strColor;\n return s.color !== '';\n};\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport './ColorGroup.css';\nimport { Client } from '@rundsk/js-sdk';\nimport ColorCard from '../ColorCard';\n\nfunction ColorGroup(props) {\n const [colors, setColors] = useState([]);\n\n useEffect(() => {\n if (props.src) {\n Client.fetch(props.src).then((data) => setColors(data.colors));\n }\n }, [props.src]);\n\n let classes = ['color-group'];\n\n let content = props.children;\n\n if (props.compact) {\n classes.push('color-group--is-compact');\n\n // We have to make sure the compact property is set on all\n // children as well\n content = React.Children.map(props.children, (c) => {\n return React.cloneElement(c, { compact: true });\n });\n }\n\n // If the src prop is set, the information about the colors should\n // be loaded via the API\n if (props.src) {\n content = colors.map((c) => {\n return (\n \n {c.name}\n \n );\n });\n }\n\n return
{content}
;\n}\n\nexport default ColorGroup;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport './Playground.css';\nimport { Client } from '@rundsk/js-sdk';\n\nfunction Playground(props) {\n const [annotationData, setAnnotationData] = useState({ annotations: [] });\n const [highlightedAnnotation, setHighlightedAnnotation] = useState(null);\n\n if (props.src) {\n console.debug(' props.src has been deprecated in favor of props.annotate.');\n props.annotate = props.src;\n delete props.src;\n }\n\n let classes = ['playground'];\n\n if (props.isDark) {\n classes.push('playground--is-dark');\n }\n\n if (props.background === 'checkerboard') {\n classes.push('playground--checkerboard');\n }\n\n if (props.background === 'pinstripes') {\n classes.push('playground--pinstripes');\n }\n\n if (props.background === 'plain') {\n classes.push('playground--plain');\n }\n\n if (props.isPageComponentDemo) {\n classes.push('playground--is-page-component-demo');\n }\n\n if (props.noPadding) {\n classes.push('playground--no-padding');\n }\n\n if (props.contentFullWidth) {\n classes.push('playground--content-full-width');\n }\n\n let style = {};\n\n if (props.backgroundcolor) {\n style.backgroundColor = props.backgroundcolor;\n }\n\n useEffect(() => {\n if (props.annotate) {\n Client.fetch(props.annotate).then((data) => setAnnotationData(data));\n }\n }, [props.annotate]);\n\n let annotationMarkers = annotationData.annotations.map((a, i) => {\n let x = `calc(${a.x} + ${a.offsetX ? a.offsetX : '0px'})`;\n let y = `calc(${a.y} + ${a.offsetY ? a.offsetY : '0px'})`;\n\n return (\n
\n {annotationMarkers}\n\n {/* This wrapper doesn’t do any styling, we just need the content to be isolated for stuff like :first-child to work */}\n
{props.children}
\n
\n
\n {annotations.length > 0 &&
{annotations}
}\n\n {props.caption && {props.caption}}\n
\n );\n}\n\nexport default Playground;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './DoDont.css';\nimport Playground from '../Playground';\n\nexport function Do(props) {\n return (\n <>\n
\n
\n \n {props.children}\n \n
\n
\n\n
\n
Do
\n {props.caption}\n
\n >\n );\n}\n\nexport function Dont(props) {\n return (\n <>\n
\n );\n}\n\nexport default FigmaEmbed;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Glitch.css';\n\nfunction Glitch(props) {\n return (\n
\n \n
\n );\n}\n\nexport default Glitch;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { useHistory } from 'react-router-dom';\n\nimport { constructURL, slugify } from '../../utils';\n\nimport './Heading.css';\n\n// props.children[0] has the textContent.\nfunction Heading(props) {\n const history = useHistory();\n\n const levels = {\n alpha: 1,\n beta: 2,\n gamma: 3,\n delta: 4,\n };\n const Tag = `h${levels[props.level]}`;\n\n if (!props.isJumptarget) {\n return {props.children};\n }\n\n let id = slugify(getNodeText(props.children));\n\n let handleClick = (ev) => {\n ev.preventDefault();\n\n let t = slugify(props.doc.title) + '§' + id;\n constructURL({ activeTab: t });\n history.replace(constructURL({ activeTab: t }));\n };\n\n // We can’t use just id, because it doesn’t work for number-only headings.\n return (\n \n \n §\n \n {props.children}\n \n );\n}\n\nexport default Heading;\n\nconst getNodeText = (node) => {\n if (['string', 'number'].includes(typeof node)) return node;\n if (node instanceof Array) return node.map(getNodeText).join('');\n if (typeof node === 'object' && node) return getNodeText(node.props.children);\n};\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Image.css';\n\n// Images whose `src` attribute includes `@2x` will get their height and width\n// set via CSS, so they are displayed half their size. Information about the\n// natural dimensions is set by the DSK backend.\nfunction Image(props) {\n let width = props.width;\n let height = props.height;\n\n if ((props.src.includes('@2x') || props.src.includes('@x2')) && width && height) {\n width /= 2;\n height /= 2;\n }\n return (\n \n \n\n {props.caption && {props.caption}}\n \n );\n}\n\nexport default Image;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './ImageGrid.css';\n\nfunction ImageGrid(props) {\n return (\n
\n {props.children}\n
\n );\n}\n\nexport default ImageGrid;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { Link as RouterLink } from 'react-router-dom';\nimport { constructURL } from '../../utils';\n\n// Replace links to internal node with links from the router.\nfunction DocumentLink(props) {\n let node = props['data-node'];\n let nodeAsset = props['data-node-asset'];\n\n // Do not use router for non nodes (i.e. external links)\n // or assets (these should be downloaded directly).\n if (!node || nodeAsset) {\n return (\n \n {props.children}\n \n );\n }\n // Create an URL Instance from the href String and create an URLSearchParams Instance from it.\n // Cast the URLSearchParams to an Object to merge later on. This way we can keep arbitary query parameters.\n let url = new URL(props.href, window.location.origin);\n let urlParams = Object.fromEntries(new URLSearchParams(url.search));\n\n let href = constructURL({ node: node, activeTab: urlParams.t || null, source: urlParams.v });\n\n return (\n \n {props.children}\n \n );\n}\n\nexport default DocumentLink;\n","/**\n * Copyright 2021 Marius Wilms, Christoph Labacher. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { Client } from '@rundsk/js-sdk';\nimport React, { useContext, useEffect, useState } from 'react';\nimport clsx from 'clsx';\nimport contrast from 'get-contrast';\n\nimport { GlobalContext } from '../../App';\nimport Playground from '../Playground';\nimport CodeBlock from '../CodeBlock';\n\nimport './ReactPlayground.css';\n\nfunction ReactPlayground(props) {\n const { source } = useContext(GlobalContext);\n\n const [showPlaygroundSource, setShowPlaygroundSource] = useState(props.showsource);\n\n const [iframeSourceURL, setIframeSourceURL] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [height, setHeight] = useState('auto');\n\n const id = props['data-component'];\n\n useEffect(() => {\n Client.playgroundURL(props.node.url, props.doc.id, id, source).then(setIframeSourceURL);\n }, [setIframeSourceURL, props.node.url, props.doc.id, props.children, id, source]);\n\n // Handle communication with iframe. This is currently happens only from the iframe to us.\n useEffect(() => {\n const handler = (ev) => {\n // console.debug('Received message from playground iframe:', ev.data);\n\n if (!ev.data || ev.data?.id !== id) {\n return;\n }\n\n if (ev.data.status === 'ready') {\n setIsLoading(false);\n }\n\n if (ev.data.contentHeight) {\n setHeight(ev.data.contentHeight);\n }\n };\n window.addEventListener('message', handler);\n return () => window.removeEventListener('message', handler);\n }, [setIsLoading, setHeight, id]);\n\n let classes = ['react-playground'];\n\n if (isLoading) {\n classes.push('react-playground--is-loading');\n }\n\n const isDark =\n props.backgroundcolor &&\n contrast.ratio(props.backgroundcolor, 'white') > contrast.ratio(props.backgroundcolor, 'black');\n\n return (\n
\n );\n}\n\nexport default React.memo(ReactPlayground);\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { useHistory } from 'react-router-dom';\n\nimport { constructURL, slugify } from '../../utils';\n\nimport './TableOfContents.css';\n\nfunction TOCEntry(props) {\n if (props.cutoffLevel && props.level >= props.cutoffLevel) {\n return <>>;\n }\n\n let slug = slugify(props.title);\n\n let children = [];\n if (props.children) {\n children = props.children.map((c) => (\n \n ));\n }\n\n return (\n
\n );\n}\n\nfunction TableOfContents(props) {\n const history = useHistory();\n\n let handleClick = (ev, slug) => {\n ev.preventDefault();\n\n let t = slugify(props.doc.title) + '§' + slug;\n history.replace(constructURL({ activeTab: t }));\n };\n\n return (\n \n );\n}\n\nexport default TableOfContents;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport './TypographySpecimen.css';\nimport { Client } from '@rundsk/js-sdk';\n\nfunction TypographySpecimen(props) {\n const [styles, setStyles] = useState([]);\n\n // https://forums.appleinsider.com/discussion/57707/a-better-font-sentence\n // https://www.answers.com/Q/What_are_some_examples_of_pangram_sentences_besides_The_quick_brown_fox_jumps_over_the_lazy_dog\n const sentences = [\n 'Jelly-like above the high wire, six quaking pachyderms kept the climax of the extravaganza in a dazzling state of flux.',\n 'Ebenezer unexpectedly bagged two tranquil aardvarks with his jiffy vacuum cleaner.',\n 'Six javelins thrown by the quick savages whizzed forty paces beyond the mark.',\n 'The explorer was frozen in his big kayak just after making queer discoveries.',\n 'The July sun caused a fragment of black pine wax to ooze on the velvet quilt.',\n 'The public was amazed to view the quickness and dexterity of the juggler.',\n 'While Suez sailors wax parquet decks, Afghan jews vomit jauntily abaft.',\n 'We quickly seized the black axle and just saved it from going past him.',\n 'Six big juicy steaks sizzled in a pan as five workmen left the quarry.',\n 'While making deep excavations we found some quaint bronze jewelry.',\n 'Jaded zombies acted quaintly but kept driving their oxen forward.',\n 'A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n 'The job requires extra pluck and zeal from every young wage earner.',\n 'A quart jar of oil mixed with zinc oxide makes a very bright paint.',\n 'Whenever the black fox jumped the squirrel gazed suspiciously.',\n 'We promptly judged antique ivory buckles for the next prize.',\n 'How razorback-jumping frogs can level six piqued gymnasts!',\n 'Crazy Fredericka bought many very exquisite opal jewels.',\n 'Sixty zippers were quickly picked from the woven jute bag.',\n 'Cozy lummox gives smart squid who asks for job pen.',\n 'Adjusting quiver and bow, Zompyc killed the fox.',\n 'My faxed joke won a pager in the cable TV quiz show.',\n 'The quick brown fox jumps over the lazy dog.',\n 'Pack my box with five dozen liquor jugs.',\n 'Jackdaws love my big sphinx of quartz.',\n 'The five boxing wizards jump quickly.',\n 'How quickly daft jumping zebras vex.',\n 'Bright vixens jump; dozy fowl quack.',\n 'Quick wafting zephyrs vex bold Jim.',\n 'Quick zephyrs blow, vexing daft Jim.',\n 'Sphinx of black quartz, judge my vow.',\n 'Waltz, nymph, for quick jigs vex Bud.',\n ];\n\n // const sentencesShort = [\n // \"Jelly-like above the high wire, six qu…\",\n // \"Ebenezer unexpectedly bagged two tranq…\",\n // \"Six javelins thrown by the quick savag…\",\n // \"The explorer was frozen in his big kay…\",\n // \"The July sun caused a fragment of blac…\",\n // \"The public was amazed to view the quic…\",\n // \"While Suez sailors wax parquet decks, …\",\n // \"We quickly seized the black axle and j…\",\n // \"Six big juicy steaks sizzled in a pan …\",\n // \"While making deep excavations we found…\",\n // \"Jaded zombies acted quaintly but kept …\",\n // \"A mad boxer shot a quick, gloved jab t…\",\n // \"The job requires extra pluck and zeal …\",\n // \"A quart jar of oil mixed with zinc oxi…\",\n // \"Whenever the black fox jumped the squi…\",\n // \"We promptly judged antique ivory buckl…\",\n // \"How razorback-jumping frogs can level …\",\n // \"Crazy Fredericka bought many very exqu…\",\n // \"Sixty zippers were quickly picked from…\",\n // \"Cozy lummox gives smart squid who asks…\",\n // \"Adjusting quiver and bow, Zompyc kille…\",\n // \"My faxed joke won a pager in the cable TV…\",\n // \"The quick brown fox jumps over the lazy dog.\",\n // \"Pack my box with five dozen liquor jugs.\",\n // \"Jackdaws love my big sphinx of quartz.\",\n // \"The five boxing wizards jump quickly.\",\n // \"How quickly daft jumping zebras vex.\",\n // \"Bright vixens jump; dozy fowl quack.\",\n // \"Quick wafting zephyrs vex bold Jim.\",\n // \"Quick zephyrs blow, vexing daft Jim.\",\n // \"Sphinx of black quartz, judge my vow.\",\n // \"Waltz, nymph, for quick jigs vex Bud.\"\n // ];\n\n useEffect(() => {\n if (props.src) {\n Client.fetch(props.src).then((data) => setStyles(data.styles));\n }\n }, [props.src]);\n\n return (\n
\n {styles.map((s) => {\n if (s.extends) {\n let extending = styles.find((style) => style.id === s.extends);\n\n s = {\n ...extending,\n ...s,\n };\n }\n\n let style = {\n fontFamily: s.fontFamily,\n fontSize: s.fontSize + 'px',\n fontWeight: s.fontWeight,\n lineHeight: '1.4em',\n letterSpacing: s.letterSpacing + 'px',\n color: s.color,\n textTransform: s.textTransform,\n };\n\n let demoSentence = props.sentence;\n if (!demoSentence) {\n demoSentence = sentences[Math.floor(Math.random() * sentences.length)];\n }\n\n return (\n
\n );\n}\n\nexport default TypographySpecimen;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useEffect } from 'react';\nimport { transform } from '@rundsk/js-sdk';\n\nimport './Doc.css';\n\nimport Asciinema from '../DocumentationComponents/Asciinema';\nimport Banner from '../DocumentationComponents/Banner';\nimport CodeBlock from '../DocumentationComponents/CodeBlock';\nimport CodeSandbox from '../DocumentationComponents/CodeSandbox';\nimport Color from '../DocumentationComponents/Color';\nimport ColorCard from '../DocumentationComponents/ColorCard';\nimport ColorGroup from '../DocumentationComponents/ColorGroup';\nimport DoDont, { Do, Dont } from '../DocumentationComponents/DoDont';\nimport FigmaEmbed from '../DocumentationComponents/FigmaEmbed';\nimport Glitch from '../DocumentationComponents/Glitch';\nimport Heading from '../DocumentationComponents/Heading';\nimport Image from '../DocumentationComponents/Image';\nimport ImageGrid from '../DocumentationComponents/ImageGrid';\nimport Link from '../DocumentationComponents/Link';\nimport ReactPlayground from '../DocumentationComponents/ReactPlayground';\nimport TableOfContents from '../DocumentationComponents/TableOfContents';\nimport TypographySpecimen from '../DocumentationComponents/TypographySpecimen';\n\nfunction Doc({ id, url, title, toc, node, onRender, htmlContent, components, children, isPageComponentDemo }) {\n useEffect(() => {\n // window.requestAnimationFrame should ensure that the rendering\n // has finished.\n window.requestAnimationFrame(() => {\n if (onRender) {\n onRender();\n }\n });\n });\n\n if (!htmlContent) {\n return
{children}
;\n }\n\n // Transform context: Allow to use this inside the `transforms` constant. We\n // cannot use `props.x` there as that refers to the component/element that is\n // being transformed.\n let context = {\n node: node,\n doc: { id: id, url: url, title: title, toc: toc },\n };\n\n const transforms = {\n Banner: (props) => ,\n CodeBlock: (props) => ,\n ColorCard: (props) => ,\n ColorGroup: (props) => ,\n Color: (props) => ,\n Playground: (props) => ,\n Do: (props) => ,\n DoDontGroup: (props) => ,\n Dont: (props) => ,\n FigmaEmbed: (props) => ,\n Image: (props) => ,\n TypographySpecimen: (props) => ,\n Warning: (props) => ,\n Glitch: (props) => ,\n CodeSandbox: (props) => ,\n Asciinema: (props) => ,\n ImageGrid: (props) => ,\n TableOfContents: (props) => ,\n\n a: (props) => ,\n\n h1: (props) => ,\n h2: (props) => ,\n h3: (props) => ,\n h4: (props) => ,\n\n img: (props) => ,\n pre: (props) => {\n // When a language is added to a Markdown fenced code block, it is\n // stored as a class with a \"language-\" prefix in the inner .\n // Here we extract it and turn it into a prop.\n let language = props.children.match(/^/);\n\n if (language && language.length === 2) {\n props['language'] = language[1];\n }\n\n // When Markdown fenced code blocks get converted to
they\n // additionally include inner . We cannot use orphans as this create\n // empty \"ghost\" elements.\n let children = props.children.replace(/^/, '').replace(/<\\/code>$/, '');\n\n return ;\n },\n };\n\n const orphans = Object.keys(transforms)\n .filter((k) => k !== 'a')\n .filter((k) => k !== 'Color')\n .map((k) => `p > ${k}`)\n .concat(['p > video']);\n\n if (isPageComponentDemo) {\n transforms['Playground'] = (props) => ;\n }\n\n let transformedContent = transform(htmlContent, components, transforms, orphans, {\n isPreformatted: (type) => ['pre', 'CodeBlock', 'Playground'].map((v) => v.toLowerCase()).includes(type),\n noTransform: (type, props) => {\n // This gets called on HTML elements that do not need\n // to be transformed to special React components.\n // There are differences between the attributes of\n // HTML elements and React that we have to take care\n // of: https://reactjs.org/docs/dom-elements.html#differences-in-attributes\n props.className = props.class;\n delete props.class;\n\n return React.createElement(type, props, props.children);\n },\n });\n return
{transformedContent}
;\n}\n\nexport default React.memo(Doc);\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2018 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Meta.css';\n\nfunction Meta(props) {\n return (\n
\n
{props.title}
\n
{props.children}
\n
\n );\n}\n\nexport default Meta;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2018 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './Tabs.css';\nimport { slugify } from '../utils';\n\nexport function Tab() {\n return ;\n}\n\nfunction TabBar(props) {\n let tabs = [];\n\n tabs =\n props.tabs &&\n props.tabs.map((t, i) => {\n let classes = ['tab-bar__tab'];\n\n // If no active tab is set, the first on is considered active\n if (!props.activeTab && i === 0) {\n classes.push('tab-bar__tab--is-active');\n }\n\n if (props.activeTab === slugify(t)) {\n classes.push('tab-bar__tab--is-active');\n }\n\n return (\n {\n ev.preventDefault();\n props.onSetActiveTab(t);\n }}\n >\n {t}\n \n );\n });\n\n let rightSideTabs = [];\n\n rightSideTabs =\n props.rightSideTabs &&\n props.rightSideTabs.map((t, i) => {\n let classes = ['tab-bar__tab'];\n\n if (props.activeTab === slugify(t)) {\n classes.push('tab-bar__tab--is-active');\n }\n\n return (\n {\n ev.preventDefault();\n props.onSetActiveTab(t);\n }}\n >\n {t}\n \n );\n });\n\n return (\n
\n
{tabs}
\n
{rightSideTabs}
\n
\n );\n}\n\nexport default TabBar;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2018 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport './AssetList.css';\nimport Meta from '../Meta';\nimport Heading from '../DocumentationComponents/Heading';\nimport filesize from 'filesize';\n\nfunction AssetList(props) {\n const imageFileTypes = ['png', 'jpg', 'jpeg'];\n\n return (\n <>\n {props.assets &&\n props.assets.map((a) => {\n return (\n
\n );\n })}\n >\n );\n}\n\nexport default AssetList;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport './SourceView.css';\nimport { Client } from '@rundsk/js-sdk';\nimport CodeBlock from '../DocumentationComponents/CodeBlock';\n\nfunction htmlEscape(input) {\n input = input.replace(/&/g, '&');\n input = input.replace(//g, '>');\n return input;\n}\n\nfunction SourceView(props) {\n const [data, setData] = useState(null);\n\n useEffect(() => {\n if (props.url === 'hello') {\n Client.hello().then((data) => {\n setData(data);\n });\n } else if (props.url !== undefined) {\n Client.get(props.url, props.source).then((data) => {\n setData(data);\n });\n }\n }, [props.url, props.source]);\n\n let title = `API Response for /api/v2/tree/${props.url}`;\n\n if (props.source !== 'live') {\n title = `API Response for /api/v2/tree/${props.url} (Source: ${props.source})`;\n }\n\n if (props.url === 'hello') {\n title = `API Response for /api/v2/hello`;\n }\n\n return {data && htmlEscape(JSON.stringify(data, null, 4))};\n}\n\nexport default SourceView;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { Client } from '@rundsk/js-sdk';\n\nimport Tags from '../Tags';\nimport Heading from '../DocumentationComponents/Heading';\nimport Link from '../Link';\n\nimport './NodeList.css';\n\nfunction Node(props) {\n const [data, setData] = useState(null);\n\n useEffect(() => {\n if (props.url) {\n Client.get(props.url, props.source).then((data) => {\n setData(data);\n });\n }\n }, [props.url, props.source]);\n\n return (\n \n \n {props.title}\n \n
*/}\n \n );\n}\n\nfunction NodeList(props) {\n return (\n <>\n {props.nodes &&\n props.nodes.map((n) => {\n return ;\n })}\n >\n );\n}\n\nexport default NodeList;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport React, { useEffect, useRef, useMemo, useCallback, useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\n\nimport { constructURL, slugify } from '../utils';\n\nimport Breadcrumbs from '../Breadcrumbs';\nimport Tags from '../Tags';\nimport Doc from '../Doc';\nimport Meta from '../Meta';\nimport TabBar from '../TabBar';\nimport AssetList from '../AssetList';\nimport SourceView from '../SourceView';\nimport NodeList from '../NodeList';\nimport Link from '../Link';\n\nimport './Page.css';\nimport { GlobalContext } from '../App';\n\nfunction scrollHeadingFromURLIntoView(activeTabWithHeading, docRef, smoothScroll = true) {\n const h = activeTabWithHeading?.split('§')[1] || '';\n\n if (h !== '' && docRef?.current) {\n let heading = docRef.current.querySelector(`[heading-id='${h}']`);\n\n if (heading) {\n heading.scrollIntoView({ behavior: smoothScroll ? 'smooth' : 'auto', block: 'start' });\n }\n }\n}\n\nfunction Page({\n url,\n id,\n title,\n description,\n version,\n modified,\n crumbs,\n prev,\n next,\n tags,\n related,\n authors,\n custom,\n docs,\n downloads,\n source,\n activeTab: activeTabWithHeading,\n children,\n}) {\n const history = useHistory();\n const { config } = useContext(GlobalContext);\n const docRef = useRef(null);\n\n // Scroll to top on navigation\n useEffect(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'auto',\n });\n }, [url]);\n\n // When the Tab part of the URL changes we check if it contains\n // a heading id and if yes scroll there.\n useEffect(() => {\n scrollHeadingFromURLIntoView(activeTabWithHeading, docRef);\n }, [activeTabWithHeading]);\n\n // We also want to this once the Doc finished rendering for the first time.\n // We have to keep the function in a ref so a change of \"activeTabWithHeading\"\n // does not trigger a rerender of the Document\n let handleHeadingScrollRef = useRef();\n useEffect(() => {\n handleHeadingScrollRef.current = () => {\n scrollHeadingFromURLIntoView(activeTabWithHeading, docRef, false);\n };\n }, [activeTabWithHeading]);\n const handleDocOnRender = useCallback(() => {\n if (!handleHeadingScrollRef.current) {\n return;\n }\n handleHeadingScrollRef.current();\n }, []);\n\n const nodeInfo = useMemo(() => {\n return { id: id, url: url, title: title };\n }, [id, url, title]);\n\n function navigateToActiveTab(t) {\n let nextURL = constructURL({ activeTab: slugify(t) });\n history.replace(nextURL);\n }\n\n let playground;\n let tabBar;\n let doc;\n\n if (docs) {\n let rightSideTabs = [];\n\n docs = docs.filter((d) => {\n if (d.title.toLowerCase() === 'playground') {\n playground = d;\n return false;\n }\n\n return true;\n });\n\n // Pages without `docs` show an overview of their children. Most DDTs will\n // have an `AUTHORS.txt` (which is included in `docs`), but some may lack\n // any \"real\" document that can be presented to the user. In this case we\n // also want to show an overview.\n const showOverview =\n children &&\n children.length > 0 &&\n docs.filter((doc) => {\n return doc.title.toLowerCase() !== 'authors';\n }).length === 0;\n\n if (showOverview) {\n docs.push({\n title: 'Overview',\n content: ,\n });\n }\n\n if (downloads && downloads.length > 0) {\n rightSideTabs.push({\n title: 'Assets',\n content: ,\n });\n }\n\n if (url === '') {\n // On the root node we also want to display the DSK version\n rightSideTabs.push({\n title: 'Source',\n content: (\n <>\n \n \n >\n ),\n });\n } else {\n rightSideTabs.push({\n title: 'Source',\n content: ,\n });\n }\n\n // We find the active tab by removing the section part from the prop\n const activeTab = activeTabWithHeading?.split('§')[0];\n\n tabBar = (\n d.title)}\n rightSideTabs={rightSideTabs.map((d) => d.title)}\n />\n );\n\n let activeDoc = [...docs, ...rightSideTabs].find((d) => {\n return slugify(d.title) === activeTab;\n });\n\n if (!activeDoc && docs.length > 0) {\n activeDoc = docs[0];\n }\n\n // If this is not an overview/asset/source doc, its content comes\n // from the API in the form of HTML, rather than React elements\n if (activeDoc && activeDoc.html) {\n doc = (\n \n );\n }\n\n if (activeDoc && activeDoc.content) {\n doc = (\n \n {activeDoc.content}\n \n );\n }\n }\n\n if (authors && authors.length > 0) {\n let title = authors.length > 1 ? 'Authors' : 'Author';\n let authorLinks = authors.map((a, i) => {\n return (\n \n {i > 0 ? ', ' : ''}\n {a.name !== '' ? a.name : a.email}\n \n );\n });\n\n authors = {authorLinks};\n }\n\n if (related && related.length > 0) {\n let title = 'Related';\n let relatedLinks = related.map((a, i) => {\n return (\n \n {i > 0 ? ', ' : ''}\n\n {a.title}\n \n );\n });\n\n related = {relatedLinks};\n }\n\n if (custom) {\n // Turn props.custom object into array to be able to iterate with map()\n custom = Object.entries(custom).map((data) => {\n let title = data[0];\n\n // Display value list or single value\n let value;\n if (Array.isArray(data[1])) {\n value = data[1].join(', ');\n } else {\n value = data[1];\n }\n\n return (\n
\n\n \n {\n // We redirect old URLs that still use the /tree prefix\n return ;\n }}\n >\n \n \n \n \n \n \n \n \n
\n \n
\n
\n );\n}\n\nexport const GlobalContext = React.createContext();\n\nfunction App() {\n const [config, setConfig] = useState();\n const [source, setSource] = useState();\n const [filterTerm, setFilterTerm] = useState();\n\n return (\n \n \n \n \n \n );\n}\n\nexport default App;\n","/**\n * Copyright 2020 Marius Wilms, Christoph Labacher. All rights reserved.\n * Copyright 2019 Atelier Disko. All rights reserved.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport ReactDOM from 'react-dom';\n\nimport * as serviceWorker from './serviceWorker';\n\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}