Skip to content

Instantly share code, notes, and snippets.

View lifeart's full-sized avatar
🐹
Working from home

Alex Kanunnikov lifeart

🐹
Working from home
View GitHub Profile
import Controller from '@ember/controller';
import EmberObject, { computed, defineProperty, get, action } from '@ember/object';
import { alias } from '@ember/object/computed';
import { camelize } from '@ember/string';
import { A } from '@ember/array';
const ATTR_MODEL_PREFIX = '_model_';
function computedAttrs() {
const attrsList = EmberObject.create({});
const data = this.metaAttributes.reduce(
@lifeart
lifeart / controllers.application\.js
Last active November 14, 2021 21:21
New Twiddle
import Controller from '@ember/controller';
import { alias } from '@ember/object/computed';
import EmberObject, { computed } from '@ember/object';
import { A } from '@ember/array';
const AttributeModel = EmberObject.extend({
countAdditives: alias('additives.length'),
additives: A()
});
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
@service('store') store;
constructor() {
super(...arguments);
this.setup();
@lifeart
lifeart / controllers.application\.js
Last active November 17, 2020 23:49
New Twiddle
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
@service('store') store;
constructor() {
super(...arguments);
this.setup();
@lifeart
lifeart / Lazy.ts
Last active July 24, 2022 11:39
Lazy glimmer 2 components
import { createTemplate, setComponentTemplate, templateOnlyComponent } from '@glimmer/core';
export default setComponentTemplate(
createTemplate(`<h1 ...attributes>AMA LAZY [{{@name}}]</h1>`),
templateOnlyComponent()
);
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
export default class ApplicationController extends Controller {
@tracked
fragment = null;
@tracked
items = new Array(1000).fill(null).map((el,index)=>{
return {
time: Date.now(),
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
export default class ApplicationController extends Controller {
constructor() {
super(...arguments);
class TempObject {
@tracked foo;
}
const instance = new TempObject();
const { get } = Object.getOwnPropertyDescriptor(instance.__proto__, 'foo');
@lifeart
lifeart / components.my-component\.js
Last active October 11, 2020 10:40
Glimmer Composition API
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { tracked as trackedAny } from 'tracked-built-ins';
const IS_REF = Symbol("IS_REF");
class TrackedRef {
[IS_REF] = true;
constructor(initialValue) {
this.value = initialValue;
}
@tracked value;
@lifeart
lifeart / components.my-component\.js
Last active September 9, 2020 07:44
New Twiddle
import Component from '@glimmer/component';
export default class extends Component {
get names() {
const items = [];
console.log(Reflect.ownKeys(this.args));
for (let key of this.args) {
items.push(key);
}
return items.join(',');
@lifeart
lifeart / controllers.application\.js
Last active August 6, 2020 14:52 — forked from sukima/controllers.application\.js
tracking polyfill autotrack
import Controller from '@ember/controller';
import EmberObject, { action, computed as emberComputed } from '@ember/object';
let currentAutoTrack;
function trackedData(key, initializer) {
let values = new WeakMap();
let autoTrackingData = new WeakMap();
let hasInitializer = typeof initializer === 'function';