Skip to content

Instantly share code, notes, and snippets.

@wiredprairie
wiredprairie / zustand-initStore-experiement.ts
Created May 5, 2023 18:58
Experiment with Zustand initializer
function initStore<StoreTypes, Store extends UseBoundStore<StoreApi<unknown>>>(
store: Store,
compare?: (a: StoreTypes, b: StoreTypes) => boolean
) {
return (newValue: StoreTypes, defaultValue: StoreTypes) => {
if (compare && compare(newValue, store.getState() as unknown as StoreTypes)) {
return
}
store.setState(newValue as any)
}
@wiredprairie
wiredprairie / decorator1.tsx
Created April 21, 2018 02:25
React and TypeScript decorator
import * as React from "react";
export function attachModel<T>(Model: { new (): T }) {
return function<Props, State>(Comp: React.ComponentClass<Props>) {
const ComponentModel = (Comp as any) as React.ComponentClass;
return class extends React.Component<Props, State> {
static displayName = `AttachedModel${ComponentModel.displayName ||
ComponentModel.name}`;
render() {
return <ComponentModel {...this.props} />;
Future<File> _getCacheFile() async {
final dir = (await getApplicationDocumentsDirectory()).path;
return new File('$dir/hotlist.xml');
}
Future<XmlDocument> _getHotListCache() async {
try {
final file = await _getCacheFile();
return parse(await file.readAsString());
}
return new GestureDetector(
onTap: () {
_selectGameItem(context, item);
},
child: new Container(
_showGameItem(BuildContext context, BoardGameItem item) {
Navigator.push(context, new MaterialPageRoute(
builder: (BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(item.name)
),
body: new SizedBox.expand(
child: new Hero(tag: item.id,
child: new Container(
_showGameItem(BuildContext context, BoardGameItem item) {
Navigator.push(context, new MaterialPageRoute(
builder: (BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(item.name)
),
body: new SizedBox.expand(
child: new Hero(tag: item.id,
child: new Container(
Future<File> _getCacheFile() async {
var dir = (await getApplicationDocumentsDirectory()).path;
return new File('$dir/hotlist.xml');
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@wiredprairie
wiredprairie / example-flutter-1.dart
Created February 22, 2018 02:09
example-flutter-1.dart
return new Container(
margin: const EdgeInsets.symmetric(vertical: 6.0, horizontal: 8.0),
child:
new Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Container(
margin: const EdgeInsets.only(right: 16.0),
child: new ConstrainedBox(
constraints: const BoxConstraints(
@wiredprairie
wiredprairie / example.py
Created November 10, 2017 16:54
Example LARGE Python file
This file has been truncated, but you can view the full file.
"""
This file is an example of a very large file in Python that highlights a performance issue with intellisense in VSCode
and the current Python extension. It takes 20+ seconds to show the list of properties.
DataSource: FriendlyExample
"""
class Column:
def __init__(self, parent, column_name):
pass