Skip to content

Instantly share code, notes, and snippets.

View maxkoretskyi's full-sized avatar

Max Koretskyi maxkoretskyi

View GitHub Profile

This is a plain-text version of Bret Victor’s reading list. It was requested by hf on Hacker News.


Highly recommended things!

This is my five-star list. These are my favorite things in all the world.

A few of these works have had an extraordinary effect on my life or way of thinking. They get a sixth star. ★

export class AgGridReact extends React.Component {
portals: ReactPortal[] = [];
mountReactPortal(portal, reactComponent, resolve: (value: any) => void) {
this.portals = [...this.portals, portal];
this.batchUpdate(...);
}
render() {
return React.createElement<any>("div", {
export class AgGridReact extends React.Component {
portals: ReactPortal[] = [];
mountReactPortal(portal: ReactPortal, reactComponent: ReactComponent, resolve: (value: any) => void) {
this.portals = [...this.portals, portal];
this.batchUpdate(...);
}
render() {
return React.createElement<any>("div", {
export class ReactComponent extends BaseReactComponent {
private createReactComponent(params: any, resolve: (value: any) => void) {
const ReactComponent = React.createElement(this.reactComponent, params);
const portal: ReactPortal = ReactDOM.createPortal(
ReactComponent,
this.eParentElement
);
this.portal = portal;
this.parentComponent.mountReactPortal(portal!, this, resolve);
}
export class ReactComponent extends BaseReactComponent {
private createReactComponent(params: any, resolve: (value: any) => void) {
const ReactComponent = React.createElement(this.reactComponent, params);
const portal: ReactPortal = ReactDOM.createPortal(
ReactComponent,
this.eParentElement
);
this.portal = portal;
this.parentComponent.mountReactPortal(portal!, this, resolve);
}
export class ReactComponent extends BaseReactComponent {
private eParentElement!: HTMLElement;
public init(params: any): Promise<void> {
return new Promise<void>(resolve => {
this.eParentElement = this.createParentElement(params);
this.createReactComponent(params, resolve);
});
}
}
export class AgGridReact extends React.Component {
portals: ReactPortal[] = [];
render() {
return React.createElement<any>("div", {
style: this.createStyleForDiv(),
ref: (e: HTMLElement) => {
this.eGridDiv = e;
}
}, this.portals);
export class ReactComponent extends BaseReactComponent {
private eParentElement!: HTMLElement;
private createReactComponent(params: any, resolve: (value: any) => void) {
const ReactComponent = React.createElement(this.reactComponent, params);
const portal: ReactPortal = ReactDOM.createPortal(
ReactComponent,
this.eParentElement
);
this.portal = portal;
export class ReactComponent extends BaseReactComponent {
private eParentElement!: HTMLElement;
public getGui(): HTMLElement {
return this.eParentElement;
}
}
export default class CurrencyRenderer extends Component {
constructor(props) {
super(props);
this.state = { value: props.value };
}
render() {
return (
<span>EUR {this.state.value}</span>
);