import './Common.css'; import './Home.css'; import phpPageIcon from './deepin-php-icon.svg'; import cakePhpIcon from './cakephp-icon.svg'; import drupalIcon from './drupal-icon.svg'; import codeIgniterIcon from './codeigniter-icon.svg'; import laravelIcon from './laravel-icon.svg'; import laminasIcon from './laminas-icon.svg'; import reactIcon from './react-icon.svg'; // import rolodexIcon from './icons/rolodex-icon-32.png'; import editorIcon from './icons/editor-icon-32.png'; import donateIcon from './icons/donate-icon-32.png'; import githubIcon from './icons/github-icon-32.png'; import sunburstIcon from './icons/sunburst.png'; import netscapeIcon from './icons/netscape.png'; import mouseIcon from './icons/mouse.png'; import cmdIcon from './icons/cmd-icon-32.png'; import dbIcon from './icons/database.png'; import downIcon from './icons/down.png'; import upIcon from './icons/up.png'; import { useEffect, useMemo, useState } from 'react'; import Header from './Header'; function Home() { const [offset, setOffset] = useState(Math.trunc(Math.random() * 5)); const [scrollState, setScrollState] = useState(1); const [showMore, setShowMore] = useState(false); const query = useMemo(() => new URLSearchParams(window.location.search), []); useEffect(() => { if(query.has('code') || query.has('demo')) { window.location = process.env.PUBLIC_URL + '/embedded-php.html' + window.location.search; } }, [query]); useEffect(() => { const speed = 1400; setTimeout(() => { if(offset >= 5) { setTimeout(() => { setScrollState(0); setOffset(0); setTimeout(() => { setScrollState(1); setOffset(1); }, 32); }, 16); } else { setScrollState(1); setOffset((offset + 1) % 6); } }, speed); }, [offset, scrollState]); return (
View, edit & run PHP code right in the browser.
Spin up a CGI service worker and serve a demo from the framework of your choice.