This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { DOUBLE_CLICK } from '~constants' | |
| import { TLTestApp } from './TLTestApp' | |
| jest.useFakeTimers() | |
| describe('When detecting double/triple/quadruple clicks...', () => { | |
| it('Detects a click', () => { | |
| const app = new TLTestApp() | |
| app.onClick = jest.fn() | |
| app.onDoubleClick = jest.fn() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { GeomUtils, TLCursor } from '@tldraw/core' | |
| import * as React from 'react' | |
| function getCursorCss(svg: string, r: number, f = false) { | |
| return ( | |
| `url("data:image/svg+xml,<svg height='32' width='32' viewBox='0 0 35 35' xmlns='http://www.w3.org/2000/svg'><g fill='none' style='transform-origin:center center' transform='rotate(${r})${ | |
| f ? ` scale(-1,-1) translate(0, -32)` : '' | |
| }'>` + | |
| svg.replaceAll(`"`, `'`) + | |
| '</g></svg>") 16 16, pointer' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export function intersectLineLine(AB: number[][], PQ: number[][]): number[] | undefined { | |
| const slopeAB = AB[0][0] === AB[1][0] ? NaN : (AB[0][1] - AB[1][1]) / (AB[0][0] - AB[1][0]) | |
| const slopePQ = AB[0][0] === PQ[1][0] ? NaN : (PQ[0][1] - PQ[1][1]) / (PQ[0][0] - PQ[1][0]) | |
| if (slopeAB === slopePQ) return undefined | |
| if (Number.isNaN(slopeAB) && !Number.isNaN(slopePQ)) { | |
| return [AB[0][0], (AB[0][0] - PQ[0][0]) * slopePQ + PQ[0][1]] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // pages/api/sponsors.ts | |
| import { NextApiRequest, NextApiResponse } from 'next' | |
| const AV_SIZE = 32 | |
| const PADDING = 4 | |
| const COLS = 16 | |
| type SponsorResult = { avatarUrl: string; login: string } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // pages/pusher/pusher-auth.ts | |
| import { pusher } from "backend/pusher" | |
| import { NextApiHandler, NextApiRequest } from "next" | |
| interface PushAuthRequest extends NextApiRequest { | |
| body: { | |
| socket_id: string | |
| channel_name: string | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| interface BBox { | |
| minX: number | |
| midX: number | |
| maxX: number | |
| minY: number | |
| midY: number | |
| maxY: number | |
| width: number | |
| height: number | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| interface TLBoundsWithCenter { | |
| minX: number | |
| midX: number | |
| maxX: number | |
| minY: number | |
| midY: number | |
| maxY: number | |
| width: number | |
| height: number | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import * as React from "react" | |
| import { Model } from "@croquet/croquet" | |
| import { CroquetContext } from "@croquet/react" | |
| /** | |
| * A callback that publishes the returned data to the current view's model. | |
| * @param eventName The name of the event to be published. | |
| * @param fn A function that returns the data to be published. | |
| * @param deps (optional) An array of dependencies for the callback. | |
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| { | |
| "id": "bga2899d28", | |
| "label": "Perfect", | |
| "icon": "✍︎", | |
| "parameters": [ | |
| { | |
| "name": "size", | |
| "type": "float", | |
| "default": "16" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const EASINGS: Record<string, (t: number) => number> = { | |
| linear: (t) => t, | |
| easeInQuad: (t) => t * t, | |
| easeOutQuad: (t) => t * (2 - t), | |
| easeInOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t), | |
| easeInCubic: (t) => t * t * t, | |
| easeOutCubic: (t) => --t * t * t + 1, | |
| easeInOutCubic: (t) => | |
| t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1, |