TetrisGameindex.ts14 matches
1export default function handler(req: Request): Response {
2const html = `<!DOCTYPE html>
3<html lang="en">
117
118// Set canvas size to window size
119function resizeCanvas() {
120canvas.width = window.innerWidth;
121canvas.height = window.innerHeight;
161
162// Generate random buildings for the estate
163function generateBuildings() {
164buildings = [];
165
239
240// Check collision with buildings
241function checkBuildingCollision(x, y, radius) {
242for (const building of buildings) {
243// Calculate closest point on rectangle to circle
257}
258
259// Game functions
260function updatePlayer() {
261// Store previous position
262const prevX = player.x;
290}
291
292function updateBot() {
293// Calculate direction to player
294const dx = player.x - bot.x;
343}
344
345function updateScore() {
346elapsedTime = Math.floor((Date.now() - startTime) / 1000);
347score = elapsedTime * 10; // 10 points per second
351}
352
353function drawBackground() {
354// Draw colorful background
355const grassColors = ['#a5d6a7', '#81c784', '#66bb6a', '#4caf50'];
365}
366
367function drawBuildings() {
368// Draw all buildings
369for (const building of buildings) {
408}
409
410function drawGame() {
411// Clear canvas
412ctx.clearRect(0, 0, canvas.width, canvas.height);
433}
434
435function gameLoop() {
436if (!gameActive) return;
437
444}
445
446function gameOver() {
447gameActive = false;
448document.getElementById('final-score').textContent = score;
450}
451
452function restartGame() {
453// Reset game state
454gameActive = true;
18});
1920export function App() {
21const [audio, setAudio] = useLocalStorage("AUDIO", false);
22const user = useUser();
bsky-linesREADME.md1 match
12- Login form for Bluesky authentication
13- Display of user's liked posts
14- Search functionality to filter likes
15- Infinite scrolling for pagination
16- Responsive design
Townie-05useUser.tsx1 match
3const USER_ENDPOINT = "/api/user";
45export function useUser() {
6const [data, setData] = useState<any>(null);
7const [loading, setLoading] = useState(true);
Townie-05useUsageStats.ts1 match
1import { useEffect } from "react";
23export function useUsageStats(messages: any[], usages: any[]) {
4useEffect(() => {
5if (!messages?.length) return;
Townie-05useScrollToBottom.tsx3 matches
7*
8* @param {Array} dependencies - Array of dependencies that trigger scrolling when changed
9* @returns {Object} An object containing containerRef and scrollToBottom function
10*/
11export function useScrollToBottomContainer(dependencies = []) {
12const containerRef = useRef(null);
132829// body scroll version
30export function useScrollToBottom(dependencies = []) {
31const bottomRef = useRef(null);
32
Townie-05user-summary.ts1 match
6* This includes a fallback to inference calls data when usage data is missing
7*/
8export async function getUserSummary() {
9// First, get the standard grouped data from the usage table
10const groupedUsageData = await sqlite.execute(`
Townie-05useProject.tsx1 match
4const FILES_ENDPOINT = "/api/project-files";
56export function useProject(projectId: string, branchId?: string) {
7const [data, setData] = useState<any>(null);
8const [loading, setLoading] = useState(true);
Townie-05useProjects.tsx1 match
3const ENDPOINT = "/api/projects-loader";
45export function useProjects() {
6const [data, setData] = useState<any>(null);
7const [loading, setLoading] = useState(true);
Townie-05useLoadingFavicon.ts3 matches
1import { useEffect } from "react";
23function setLoadingFavicon() {
4document.querySelector('link[rel="icon"]').href = "/favicon-loading.svg";
5}
6function resetFavicon() {
7document.querySelector('link[rel="icon"]').href = "/favicon.svg";
8}
910export function useLoadingFavicon(loading: boolean) {
11useEffect(() => {
12if (loading) setLoadingFavicon();