Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update some stuff #9

Merged
merged 30 commits into from
May 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
4ef9b02
update some stuff
Zemnmez May 13, 2021
dce2722
Revert "update some stuff"
Zemnmez May 19, 2021
832c16d
update prettier
Zemnmez May 19, 2021
bd3454a
this should be useful
Zemnmez May 19, 2021
afbd19a
upgrade xdm
Zemnmez May 19, 2021
eeb80f3
upgrade google-closure-compiler
Zemnmez May 19, 2021
a95327a
upgrade concurrently
Zemnmez May 19, 2021
a79aebc
upgrade eslint
Zemnmez May 19, 2021
61a1fdd
upgrade react
Zemnmez May 19, 2021
e13ed7a
upgrade glob
Zemnmez May 19, 2021
eed2436
remove d3
Zemnmez May 19, 2021
4ee6aff
remove next-videos
Zemnmez May 19, 2021
56b4e7f
upgrade @testing-library/user-event
Zemnmez May 19, 2021
45bf134
upgrade @types/node
Zemnmez May 19, 2021
76fc837
upgrade @testing-library/dom
Zemnmez May 19, 2021
071aeec
upgrade remark-footnotes
Zemnmez May 19, 2021
bf85b7f
remove next-mdx-enhanced
Zemnmez May 19, 2021
9a49f5f
upgrade @testing-library/react
Zemnmez May 19, 2021
8564225
upgrade @types/d3-axis
Zemnmez May 19, 2021
dd813fe
upgrade @types/d3-scale
Zemnmez May 19, 2021
3511e30
upgrade @types/d3-selection
Zemnmez May 19, 2021
1724105
upgrade @types/react
Zemnmez May 19, 2021
ca46ea5
upgrade @types/react-dom
Zemnmez May 19, 2021
8e24e1e
upgrade next
Zemnmez May 19, 2021
aa18c3d
upgrade recoil
Zemnmez May 19, 2021
78ddb57
upgrade remark-lint-no-undefined-references
Zemnmez May 19, 2021
a40497b
upgrade sass
Zemnmez May 19, 2021
81c951b
upgrade ts-toolbelt
Zemnmez May 19, 2021
66d1c21
remove next upgrade which broke the build
Zemnmez May 19, 2021
b3b9167
Merge branch 'updates2' into updates
Zemnmez May 19, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions @zemn.me/math/matrix.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ import * as vec from './vec'
export interface Matrix<
I extends number = number,
J extends number = number,
T = number
T = number,
> extends Vector<J, Vector<I, T>> {}

export type Square<IJ extends number, T = number> = Matrix<IJ, IJ, T>

export const as: <
I extends number = number,
J extends number = number,
T = number
T = number,
>(
v: readonly (readonly T[] & { length: I })[] & { length: J },
) => Matrix<I, J, T> = (v) => v as any
Expand Down Expand Up @@ -73,15 +73,15 @@ export const mul: <
I1 extends number,
J1 extends number,
I2 extends number,
J2 extends number
J2 extends number,
>(
m1: Matrix<I1, J1>,
m2: Matrix<I2, J2>,
) => Multiply<Matrix<I1, J1>, Matrix<I2, J2>> = <
I1 extends number,
J1 extends number,
I2 extends number,
J2 extends number
J2 extends number,
>(
m1: Matrix<I1, J1>,
m2: Matrix<I2, J2>,
Expand Down Expand Up @@ -162,7 +162,7 @@ function mustIsSquare<T>(
export type Multiply<
A extends Matrix<number, number, unknown>,
B extends Matrix<number, number, unknown>,
O = number
O = number,
> = [A, B] extends [
Matrix<infer I1, infer J1, unknown>,
Matrix<infer I2, infer J2, unknown>,
Expand All @@ -177,7 +177,7 @@ export type Multiply<
export type TransformTo<
In extends Matrix<number, number, unknown>,
Out extends Matrix<number, number, unknown>,
O = number
O = number,
> = [In, Out] extends [
Matrix<infer I1, infer J1, unknown>,
Matrix<infer I2, infer J2, unknown>,
Expand Down Expand Up @@ -264,7 +264,7 @@ export const checkerboard: <I extends number, J extends number>(
* Returns the inverse of a matrix of given dimensions
*/
export const inverse: <IJ extends number>(m: Square<IJ>) => Square<IJ> = <
IJ extends number
IJ extends number,
>(
m: Square<IJ>,
) => {
Expand Down
13 changes: 6 additions & 7 deletions @zemn.me/math/shape/3d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,17 @@ class As3D<T extends Canvas.Drawable2D> implements Canvas.Drawable3D {
constructor(public readonly target: T) {}
public lines3D(): Homog.Line3D[] {
return this.target.lines2D().map((line) =>
line.map(
(point: Homog.Point2D): Homog.Point3D => {
const [[x], [y], [scale]] = point
return [[x], [y], [0], [scale]] as const
},
),
line.map((point: Homog.Point2D): Homog.Point3D => {
const [[x], [y], [scale]] = point
return [[x], [y], [0], [scale]] as const
}),
)
}
}

export class Translate3D<T extends Canvas.Drawable3D>
implements Canvas.Drawable3D {
implements Canvas.Drawable3D
{
constructor(public readonly target: T, public readonly by: Homog.Point3D) {}

public lines3D(): Homog.Line3D[] {
Expand Down
110 changes: 110 additions & 0 deletions @zemn.me/math/shape/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
import * as Homog from '../homog'
import * as Camera from '../camera'
import * as Matrix from '../matrix'
import * as Canvas from '../canvas'

export class Square implements Canvas.Drawable2D {
public readonly r: number
public readonly d: number
get width() {
return this.d
}
constructor(width: number) {
this.d = width
this.r = this.d / 2
}
public TL(): Homog.Point2D {
return [[-this.r], [this.r], [1]] as const
}
public TR(): Homog.Point2D {
return [[this.r], [this.r], [1]] as const
}
public BL(): Homog.Point2D {
return [[-this.r], [-this.r], [1]] as const
}
public BR(): Homog.Point2D {
return [[this.r], [-this.r], [1]] as const
}
public lines2D() {
const ret: Homog.Line2D = [
this.TL(),
this.TR(),
this.BR(),
this.BL(),
this.TL(),
]
return [ret]
}
}

class As3D<T extends Canvas.Drawable2D> implements Canvas.Drawable3D {
constructor(public readonly target: T) {}
public lines3D(): Homog.Line3D[] {
return this.target.lines2D().map((line) =>
line.map((point: Homog.Point2D): Homog.Point3D => {
const [[x], [y], [scale]] = point
return [[x], [y], [0], [scale]] as const
}),
)
}
}

export class Translate3D<T extends Canvas.Drawable3D>
implements Canvas.Drawable3D
{
constructor(public readonly target: T, public readonly by: Homog.Point3D) {}

public lines3D(): Homog.Line3D[] {
return this.target
.lines3D()
.map((line) => line.map((point) => Matrix.add(point, this.by)))
}
}

export class Cube implements Canvas.Drawable3D {
private readonly square: Square
constructor(public readonly diameter: number) {
this.square = new Square(diameter)
}

lines3D() {
const A = new Translate3D(new As3D(this.square), [
[0],
[0],
[-this.diameter],
[1],
] as const)
const B = new Translate3D(new As3D(this.square), [
[0],
[0],
[this.diameter],
[1],
] as const)
const [[ATL, ATR, ABR, ABL]] = A.lines3D()
const [[BTL, BTR, BBR, BBL]] = B.lines3D()

return [
...A.lines3D(),
...B.lines3D(),
[ATL, BTL],
[ATR, BTR],
[ABR, BBR],
[ABL, BBL],
]
}
}

export class Project<T extends Canvas.Drawable3D> implements Canvas.Drawable2D {
constructor(
public readonly value: T,
public readonly focalLength?: number,
) {}

lines2D() {
return this.value
.lines3D()
.map((line) =>
line.map((point) => Camera.transform(point, this.focalLength)),
)
}
}
13 changes: 6 additions & 7 deletions @zemn.me/math/vec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,19 @@ export const imap: <T, U>(
/**
* Returns an iterable on a vector that iterates in reverse
*/
export const reverse: <I extends number, T>(
v: Vector<I, T>,
) => Iterable<T> = function* (v) {
for (let i = 0; i < v.length; i++) {
yield v[v.length - i - 1]
export const reverse: <I extends number, T>(v: Vector<I, T>) => Iterable<T> =
function* (v) {
for (let i = 0; i < v.length; i++) {
yield v[v.length - i - 1]
}
}
}

export const as: <T, L extends number>(
v: readonly T[] & { length: L },
) => Vector<L, T> = (v) => v as any

export const New: <N extends number>(n: number) => Vector<N, undefined> = (n) =>
([...Array(n)] as any) as Vector<any, undefined>
[...Array(n)] as any as Vector<any, undefined>

export const add: <I extends number>(
v1: Vector<I>,
Expand Down
5 changes: 3 additions & 2 deletions @zemn.me/path-scale/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ type Filter<T, T2> = Pick<
>

export class Generator<cfg extends object>
implements Scalable<cfg & { width: number; height: number }> {
implements Scalable<cfg & { width: number; height: number }>
{
scalable: Scalable<cfg>
keys: (keyof Filter<cfg, number>)[]
props: Scalable<cfg & { width: number; height: number }>['props']
Expand All @@ -56,7 +57,7 @@ export class Generator<cfg extends object>

const copy = { ...cfg }

for (const key of this.keys) ((copy[key] as any) as number) *= k
for (const key of this.keys) (copy[key] as any as number) *= k
return copy
}

Expand Down
2 changes: 1 addition & 1 deletion @zemn.me/svg/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface Canvas extends ReadonlyArray<Node> {}
export type Scalar = number
export type Path<
L extends number = number,
kind extends Cartesian | Homogenous = Cartesian
kind extends Cartesian | Homogenous = Cartesian,
> = vector.Vector<L, kind>

export type Cartesian = vector.Vector<2, number>
Expand Down
15 changes: 7 additions & 8 deletions @zemn.me/typeutil/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
export type Upgrade<T1, T2> = Omit<T1, keyof T2> & T2

export const assertInvalidNever: (what: string) => (v: never) => void = (
what,
) => (v: never): asserts v is never => {
throw InvalidNever(v)
}
export const assertInvalidNever: (what: string) => (v: never) => void =
(what) =>
(v: never): asserts v is never => {
throw InvalidNever(v)
}

export const InvalidNever = (what: string) => (v: never) =>
new Error(`Invalid ${what} ${v}`)

export type ElementProperties<
T extends keyof JSX.IntrinsicElements
> = JSX.IntrinsicElements[T]
export type ElementProperties<T extends keyof JSX.IntrinsicElements> =
JSX.IntrinsicElements[T]
3 changes: 3 additions & 0 deletions etc/updateDepIfTestsPass.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
yarn upgrade -L $1
git add -A
git commit -m "upgrade $1" -n
2 changes: 1 addition & 1 deletion lib/guards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export function hasMember<
K extends string | number | symbol,
I,
O extends I,
args extends unknown[]
args extends unknown[],
>(
k: K,
t: (v: I, ...args: args) => v is O,
Expand Down
6 changes: 3 additions & 3 deletions linear2/features/elements/CodeBlock/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,19 @@ declare module 'react-syntax-highlighter' {
}

type Properties<
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements,
> = { className: string[] } & Omit<JSX.IntrinsicElements[T], 'className'>

type Element<
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements,
> = __Element & { tagName: T }

type __Element = ValueOf<
{ [k in keyof JSX.IntrinsicElements]: _Element<k> }
>

interface _Element<
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements
T extends keyof JSX.IntrinsicElements = keyof JSX.IntrinsicElements,
> {
type: 'element'
tagName: T
Expand Down
9 changes: 5 additions & 4 deletions linear2/features/elements/elements.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ type ClassableElements = Filter<JSX.IntrinsicElements, { className?: string }>

const e: <
E extends keyof ClassableElements,
K extends keyof ClassableElements[E]
K extends keyof ClassableElements[E],
>(
name: E,
...propNames: K[]
) => React.FC<ClassableElements[E]> = (e, ...k) => (props) => (
<Style>{React.createElement(e, pick(props, ...k))}</Style>
)
) => React.FC<ClassableElements[E]> =
(e, ...k) =>
(props) =>
<Style>{React.createElement(e, pick(props, ...k))}</Style>
type PropsOf<T extends React.FC<unknown>> = T extends React.FC<infer Q>
? Q
: never
Expand Down
2 changes: 1 addition & 1 deletion linear2/features/elements/headingsAndSections/fancy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React from 'react'
import { classes } from 'linear2/features/elements/util'

export interface HeadingProps<
depth extends 1 | 2 | 3 | 4 | 5 = 1 | 2 | 3 | 4 | 5
depth extends 1 | 2 | 3 | 4 | 5 = 1 | 2 | 3 | 4 | 5,
> {
heading: React.ReactElement
subtitle?: React.ReactElement
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,8 @@ export const useText: () => [
return [onElementMount, text]
}

export type HeadingElement<
T extends HeaderComponent = HeaderComponent
> = React.ReactElement<HeadingProps & RefAttributes<HTMLHeadingElement>, T>
export type HeadingElement<T extends HeaderComponent = HeaderComponent> =
React.ReactElement<HeadingProps & RefAttributes<HTMLHeadingElement>, T>

export function mergeRefs<T = any>(
...refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>
Expand Down
5 changes: 2 additions & 3 deletions linear2/features/elements/text.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ export const WithLang: (props: WithLangProps) => React.ReactElement = ({
return React.cloneElement(children, { ...children.props, ...useLang(lang) })
}

export const withTextContext = React.createContext<model.lang.Text | undefined>(
undefined,
)
export const withTextContext =
React.createContext<model.lang.Text | undefined>(undefined)
export interface WithTextProps {
text?: model.lang.Text
children: React.ReactElement<{ lang?: string }>
Expand Down
6 changes: 2 additions & 4 deletions linear2/features/elements/timeline/components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,8 @@ export const makeYears: (b: Bio['timeline']) => Year[] = (timeline) => {
event,
)

const yearsToMonths: Map<
number,
Map<model.time.date.Month, BioEvent[]>
> = new Map()
const yearsToMonths: Map<number, Map<model.time.date.Month, BioEvent[]>> =
new Map()

// i made this operation higher level and it made even
// less sense, for which i am sorry
Expand Down
Loading