Skip to content

Instantly share code, notes, and snippets.

@pzuraq
pzuraq / ceds.md
Created March 27, 2022 18:17
Class Element Definitions

Class Element Definitions

Stage: 0

Class element definitions (CEDs) are a proposal for extending JavaScript classes with a syntax that mirrors the behavior of Object.defineProperty.

class C {
  x {
 configurable = true;
@pzuraq
pzuraq / autotracking.js
Last active December 13, 2023 22:57
Autotracking Simplified
// The global revision clock. Every time state changes, the clock increments.
let $REVISION = 0;
// The current dependency tracker. Whenever we compute a cache, we create a Set
// to track any dependencies that are used while computing. If no cache is
// computing, then the tracker is null.
let CURRENT_TRACKER = null;
// Storage represents a root value in the system - the actual state of our app.
class Storage {
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
if = false;
}
import Component from '@glimmer/component';
export default class extends Component {
}
@pzuraq
pzuraq / components.my-component\.js
Last active November 6, 2020 00:12
New Twiddle
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
export default class extends Component {
@service router;
get qp() {
return this.router.currentRoute.queryParams.qp || 1;
}
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { assert } from '@ember/debug';
export default class TestComp extends Component {
// constructor() {
// super(...arguments)
// assert('testValue must be passed in', this.args.testValue);
// }
import Controller from '@ember/controller';
export default class TestController extends Controller {
// Remove this, and derived starts working
// model;
get derived() {
return "The model is " + this.model;
}
}
@pzuraq
pzuraq / controllers.application\.js
Last active September 25, 2020 22:46
New Twiddle
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
import Component from '@glimmer/component';
import { schedule } from '@ember/runloop';
import { action } from '@ember/object';
import { tracked } from 'tracked-built-ins';
import { cached, trackedReset } from 'tracked-toolbox';
export default class extends Component {
@trackedReset('args.checked') children = tracked([]);
constructor() {
@pzuraq
pzuraq / components.checkbox-tree\.hbs
Last active August 27, 2020 22:43
Yielded Nested Checkboxes
<input
class="checkbox-item"
id={{@name}}
type="checkbox"
checked={{@checked}}
{{on 'change' (fn this.setChecked (not @checked))}}
name={{@name}}
{{set-indeterminate this.isIndeterminate @checked}}
>
<label for={{@name}}>{{@label}}</label>