import React, { useEffect, useState } from 'react' import { openURL } from 'prismarine-viewer/viewer/lib/simpleUtils' import { haveDirectoryPicker } from '../utils' import { activeModalStack } from '../globalState' import styles from './mainMenu.module.css' import Button from './Button' import ButtonWithTooltip from './ButtonWithTooltip' import { pixelartIcons } from './PixelartIcon' type Action = (e: React.MouseEvent) => void interface Props { connectToServerAction?: Action singleplayerAction?: Action optionsAction?: Action githubAction?: Action linksButton?: JSX.Element openFileAction?: Action mapsProvider?: string versionStatus?: string versionTitle?: string onVersionClick?: () => void bottomRightLinks?: string } const httpsRegex = /^https?:\/\// export default ({ connectToServerAction, mapsProvider, singleplayerAction, optionsAction, githubAction, linksButton, openFileAction, versionStatus, versionTitle, onVersionClick, bottomRightLinks }: Props) => { if (!bottomRightLinks?.trim()) bottomRightLinks = undefined // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const linksParsed = bottomRightLinks?.split(/;|\n/g).map(l => { const parts = l.split(':') return [parts[0], parts.slice(1).join(':')] }) as Array<[string, string]> | undefined return (
Prismarine is a beautiful block
Connect to server
Singleplayer
GitHub {linksButton}
Prismarine Web Client {versionStatus}
{linksParsed?.map(([name, link], i, arr) => { if (!link.startsWith('http')) link = `https://${link}` return
{name} {i < arr.length - 1 && ยท}
})}
A Minecraft client in the browser!
{mapsProvider && openURL(httpsRegex.test(mapsProvider) ? mapsProvider : 'https://' + mapsProvider, false)} />}
) }