ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
57 lines (45 loc) • 4.83 kB
JavaScript
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
import { dict } from '@glimmer/util';
import { PathReference } from './path';
import { VOLATILE_TAG } from '@glimmer/reference';
var RootReference = function () {
function RootReference(object) {
_classCallCheck(this, RootReference);
this.chains = dict();
this.tag = VOLATILE_TAG;
this.object = object;
}
RootReference.prototype.value = function value() {
return this.object;
};
RootReference.prototype.update = function update(object) {
this.object = object;
// this.notify();
};
RootReference.prototype.get = function get(prop) {
var chains = this.chains;
if (prop in chains) return chains[prop];
return chains[prop] = new PathReference(this, prop);
};
RootReference.prototype.chainFor = function chainFor(prop) {
var chains = this.chains;
if (prop in chains) return chains[prop];
return null;
};
RootReference.prototype.path = function path(string) {
return string.split('.').reduce(function (ref, part) {
return ref.get(part);
}, this);
};
RootReference.prototype.referenceFromParts = function referenceFromParts(parts) {
return parts.reduce(function (ref, part) {
return ref.get(part);
}, this);
};
RootReference.prototype.label = function label() {
return '[reference Root]';
};
return RootReference;
}();
export default RootReference;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZWZlcmVuY2VzL3Jvb3QuanMiXSwibmFtZXMiOlsiZGljdCIsIlBhdGhSZWZlcmVuY2UiLCJWT0xBVElMRV9UQUciLCJSb290UmVmZXJlbmNlIiwib2JqZWN0IiwiY2hhaW5zIiwidGFnIiwidmFsdWUiLCJ1cGRhdGUiLCJnZXQiLCJwcm9wIiwiY2hhaW5Gb3IiLCJwYXRoIiwic3RyaW5nIiwic3BsaXQiLCJyZWR1Y2UiLCJyZWYiLCJwYXJ0IiwicmVmZXJlbmNlRnJvbVBhcnRzIiwicGFydHMiLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxJQUFULFFBQXFCLGVBQXJCO0FBQ0EsU0FBU0MsYUFBVCxRQUE4QixRQUE5QjtBQUNBLFNBQVNDLFlBQVQsUUFBNkIsb0JBQTdCOztJQUNxQkMsYTtBQUNqQiwyQkFBWUMsTUFBWixFQUFvQjtBQUFBOztBQUNoQixhQUFLQyxNQUFMLEdBQWNMLE1BQWQ7QUFDQSxhQUFLTSxHQUFMLEdBQVdKLFlBQVg7QUFDQSxhQUFLRSxNQUFMLEdBQWNBLE1BQWQ7QUFDSDs7NEJBQ0RHLEssb0JBQVE7QUFDSixlQUFPLEtBQUtILE1BQVo7QUFDSCxLOzs0QkFDREksTSxtQkFBT0osTSxFQUFRO0FBQ1gsYUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0E7QUFDSCxLOzs0QkFDREssRyxnQkFBSUMsSSxFQUFNO0FBQ04sWUFBSUwsU0FBUyxLQUFLQSxNQUFsQjtBQUNBLFlBQUlLLFFBQVFMLE1BQVosRUFBb0IsT0FBT0EsT0FBT0ssSUFBUCxDQUFQO0FBQ3BCLGVBQU9MLE9BQU9LLElBQVAsSUFBZSxJQUFJVCxhQUFKLENBQWtCLElBQWxCLEVBQXdCUyxJQUF4QixDQUF0QjtBQUNILEs7OzRCQUNEQyxRLHFCQUFTRCxJLEVBQU07QUFDWCxZQUFJTCxTQUFTLEtBQUtBLE1BQWxCO0FBQ0EsWUFBSUssUUFBUUwsTUFBWixFQUFvQixPQUFPQSxPQUFPSyxJQUFQLENBQVA7QUFDcEIsZUFBTyxJQUFQO0FBQ0gsSzs7NEJBQ0RFLEksaUJBQUtDLE0sRUFBUTtBQUNULGVBQU9BLE9BQU9DLEtBQVAsQ0FBYSxHQUFiLEVBQWtCQyxNQUFsQixDQUF5QixVQUFDQyxHQUFELEVBQU1DLElBQU47QUFBQSxtQkFBZUQsSUFBSVAsR0FBSixDQUFRUSxJQUFSLENBQWY7QUFBQSxTQUF6QixFQUF1RCxJQUF2RCxDQUFQO0FBQ0gsSzs7NEJBQ0RDLGtCLCtCQUFtQkMsSyxFQUFPO0FBQ3RCLGVBQU9BLE1BQU1KLE1BQU4sQ0FBYSxVQUFDQyxHQUFELEVBQU1DLElBQU47QUFBQSxtQkFBZUQsSUFBSVAsR0FBSixDQUFRUSxJQUFSLENBQWY7QUFBQSxTQUFiLEVBQTJDLElBQTNDLENBQVA7QUFDSCxLOzs0QkFDREcsSyxvQkFBUTtBQUNKLGVBQU8sa0JBQVA7QUFDSCxLOzs7OztlQS9CZ0JqQixhIiwiZmlsZSI6ImxpYi9yZWZlcmVuY2VzL3Jvb3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7IFZPTEFUSUxFX1RBRyB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb290UmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihvYmplY3QpIHtcbiAgICAgICAgdGhpcy5jaGFpbnMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMudGFnID0gVk9MQVRJTEVfVEFHO1xuICAgICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iamVjdDtcbiAgICB9XG4gICAgdXBkYXRlKG9iamVjdCkge1xuICAgICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDtcbiAgICAgICAgLy8gdGhpcy5ub3RpZnkoKTtcbiAgICB9XG4gICAgZ2V0KHByb3ApIHtcbiAgICAgICAgbGV0IGNoYWlucyA9IHRoaXMuY2hhaW5zO1xuICAgICAgICBpZiAocHJvcCBpbiBjaGFpbnMpIHJldHVybiBjaGFpbnNbcHJvcF07XG4gICAgICAgIHJldHVybiBjaGFpbnNbcHJvcF0gPSBuZXcgUGF0aFJlZmVyZW5jZSh0aGlzLCBwcm9wKTtcbiAgICB9XG4gICAgY2hhaW5Gb3IocHJvcCkge1xuICAgICAgICBsZXQgY2hhaW5zID0gdGhpcy5jaGFpbnM7XG4gICAgICAgIGlmIChwcm9wIGluIGNoYWlucykgcmV0dXJuIGNoYWluc1twcm9wXTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHBhdGgoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoJy4nKS5yZWR1Y2UoKHJlZiwgcGFydCkgPT4gcmVmLmdldChwYXJ0KSwgdGhpcyk7XG4gICAgfVxuICAgIHJlZmVyZW5jZUZyb21QYXJ0cyhwYXJ0cykge1xuICAgICAgICByZXR1cm4gcGFydHMucmVkdWNlKChyZWYsIHBhcnQpID0+IHJlZi5nZXQocGFydCksIHRoaXMpO1xuICAgIH1cbiAgICBsYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuICdbcmVmZXJlbmNlIFJvb3RdJztcbiAgICB9XG59Il19