Sha256: 113ff7ade26b6e823a64ca633d1ff9787f9e80642d3192b4cf28f8b04b0fa0ab

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

import { symbol } from '@ember/-internals/utils';
import { MUTABLE_CELL } from '@ember/-internals/views';
import { ARGS } from '../component';
import { ACTION, UPDATE } from './references';
// ComponentArgs takes EvaluatedNamedArgs and converts them into the
// inputs needed by CurlyComponents (attrs and props, with mutable
// cells, etc).
export function processComponentArgs(namedArgs) {
    let keys = namedArgs.names;
    let attrs = namedArgs.value();
    let props = Object.create(null);
    let args = Object.create(null);
    props[ARGS] = args;
    for (let i = 0; i < keys.length; i++) {
        let name = keys[i];
        let ref = namedArgs.get(name);
        let value = attrs[name];
        if (typeof value === 'function' && value[ACTION]) {
            attrs[name] = value;
        }
        else if (ref[UPDATE]) {
            attrs[name] = new MutableCell(ref, value);
        }
        args[name] = ref;
        props[name] = value;
    }
    props.attrs = attrs;
    return props;
}
const REF = symbol('REF');
class MutableCell {
    constructor(ref, value) {
        this[MUTABLE_CELL] = true;
        this[REF] = ref;
        this.value = value;
    }
    update(val) {
        this[REF][UPDATE](val);
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
discourse-ember-source-3.6.0.0 dist/es/@ember/-internals/glimmer/lib/utils/process-args.js