UNPKG

ember-legacy-class-transform

Version:
71 lines (59 loc) 7.37 kB
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } import { EMPTY_CACHE } from '../utils'; import { dict } from '@glimmer/util'; import Meta from '../meta'; import { PropertyReference } from './descriptors'; import { VOLATILE_TAG } from '@glimmer/reference'; var PathReference = function () { function PathReference(parent, property) { _classCallCheck(this, PathReference); this.cache = EMPTY_CACHE; this.inner = null; this.chains = null; this.lastParentValue = EMPTY_CACHE; this._guid = 0; this.tag = VOLATILE_TAG; this.parent = parent; this.property = property; } PathReference.prototype.value = function value() { var lastParentValue = this.lastParentValue, property = this.property, inner = this.inner; var parentValue = this._parentValue(); if (parentValue === null || parentValue === undefined) { return this.cache = undefined; } if (lastParentValue === parentValue) { inner = this.inner; } else { var ReferenceType = typeof parentValue === 'object' ? Meta.for(parentValue).referenceTypeFor(property) : PropertyReference; inner = this.inner = new ReferenceType(parentValue, property, this); } // if (typeof parentValue === 'object') { // Meta.for(parentValue).addReference(property, this); // } return this.cache = inner.value(); }; PathReference.prototype.get = function get(prop) { var chains = this._getChains(); if (prop in chains) return chains[prop]; return chains[prop] = new PathReference(this, prop); }; PathReference.prototype.label = function label() { return '[reference Direct]'; }; PathReference.prototype._getChains = function _getChains() { if (this.chains) return this.chains; return this.chains = dict(); }; PathReference.prototype._parentValue = function _parentValue() { var parent = this.parent.value(); this.lastParentValue = parent; return parent; }; return PathReference; }(); export default PathReference; export { PathReference }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZWZlcmVuY2VzL3BhdGguanMiXSwibmFtZXMiOlsiRU1QVFlfQ0FDSEUiLCJkaWN0IiwiTWV0YSIsIlByb3BlcnR5UmVmZXJlbmNlIiwiVk9MQVRJTEVfVEFHIiwiUGF0aFJlZmVyZW5jZSIsInBhcmVudCIsInByb3BlcnR5IiwiY2FjaGUiLCJpbm5lciIsImNoYWlucyIsImxhc3RQYXJlbnRWYWx1ZSIsIl9ndWlkIiwidGFnIiwidmFsdWUiLCJwYXJlbnRWYWx1ZSIsIl9wYXJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsIlJlZmVyZW5jZVR5cGUiLCJmb3IiLCJyZWZlcmVuY2VUeXBlRm9yIiwiZ2V0IiwicHJvcCIsIl9nZXRDaGFpbnMiLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxXQUFULFFBQTRCLFVBQTVCO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixlQUFyQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsU0FBakI7QUFDQSxTQUFTQyxpQkFBVCxRQUFrQyxlQUFsQztBQUNBLFNBQVNDLFlBQVQsUUFBNkIsb0JBQTdCOztJQUNxQkMsYTtBQUNqQiwyQkFBWUMsTUFBWixFQUFvQkMsUUFBcEIsRUFBOEI7QUFBQTs7QUFDMUIsYUFBS0MsS0FBTCxHQUFhUixXQUFiO0FBQ0EsYUFBS1MsS0FBTCxHQUFhLElBQWI7QUFDQSxhQUFLQyxNQUFMLEdBQWMsSUFBZDtBQUNBLGFBQUtDLGVBQUwsR0FBdUJYLFdBQXZCO0FBQ0EsYUFBS1ksS0FBTCxHQUFhLENBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdULFlBQVg7QUFDQSxhQUFLRSxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxhQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNIOzs0QkFDRE8sSyxvQkFBUTtBQUFBLFlBQ0VILGVBREYsR0FDdUMsSUFEdkMsQ0FDRUEsZUFERjtBQUFBLFlBQ21CSixRQURuQixHQUN1QyxJQUR2QyxDQUNtQkEsUUFEbkI7QUFBQSxZQUM2QkUsS0FEN0IsR0FDdUMsSUFEdkMsQ0FDNkJBLEtBRDdCOztBQUVKLFlBQUlNLGNBQWMsS0FBS0MsWUFBTCxFQUFsQjtBQUNBLFlBQUlELGdCQUFnQixJQUFoQixJQUF3QkEsZ0JBQWdCRSxTQUE1QyxFQUF1RDtBQUNuRCxtQkFBTyxLQUFLVCxLQUFMLEdBQWFTLFNBQXBCO0FBQ0g7QUFDRCxZQUFJTixvQkFBb0JJLFdBQXhCLEVBQXFDO0FBQ2pDTixvQkFBUSxLQUFLQSxLQUFiO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsZ0JBQUlTLGdCQUFnQixPQUFPSCxXQUFQLEtBQXVCLFFBQXZCLEdBQWtDYixLQUFLaUIsR0FBTCxDQUFTSixXQUFULEVBQXNCSyxnQkFBdEIsQ0FBdUNiLFFBQXZDLENBQWxDLEdBQXFGSixpQkFBekc7QUFDQU0sb0JBQVEsS0FBS0EsS0FBTCxHQUFhLElBQUlTLGFBQUosQ0FBa0JILFdBQWxCLEVBQStCUixRQUEvQixFQUF5QyxJQUF6QyxDQUFyQjtBQUNIO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsZUFBTyxLQUFLQyxLQUFMLEdBQWFDLE1BQU1LLEtBQU4sRUFBcEI7QUFDSCxLOzs0QkFDRE8sRyxnQkFBSUMsSSxFQUFNO0FBQ04sWUFBSVosU0FBUyxLQUFLYSxVQUFMLEVBQWI7QUFDQSxZQUFJRCxRQUFRWixNQUFaLEVBQW9CLE9BQU9BLE9BQU9ZLElBQVAsQ0FBUDtBQUNwQixlQUFPWixPQUFPWSxJQUFQLElBQWUsSUFBSWpCLGFBQUosQ0FBa0IsSUFBbEIsRUFBd0JpQixJQUF4QixDQUF0QjtBQUNILEs7OzRCQUNERSxLLG9CQUFRO0FBQ0osZUFBTyxvQkFBUDtBQUNILEs7OzRCQUNERCxVLHlCQUFhO0FBQ1QsWUFBSSxLQUFLYixNQUFULEVBQWlCLE9BQU8sS0FBS0EsTUFBWjtBQUNqQixlQUFPLEtBQUtBLE1BQUwsR0FBY1QsTUFBckI7QUFDSCxLOzs0QkFDRGUsWSwyQkFBZTtBQUNYLFlBQUlWLFNBQVMsS0FBS0EsTUFBTCxDQUFZUSxLQUFaLEVBQWI7QUFDQSxhQUFLSCxlQUFMLEdBQXVCTCxNQUF2QjtBQUNBLGVBQU9BLE1BQVA7QUFDSCxLOzs7OztlQTVDZ0JELGE7O0FBOENyQixTQUFTQSxhQUFUIiwiZmlsZSI6ImxpYi9yZWZlcmVuY2VzL3BhdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9DQUNIRSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBNZXRhIGZyb20gJy4uL21ldGEnO1xuaW1wb3J0IHsgUHJvcGVydHlSZWZlcmVuY2UgfSBmcm9tICcuL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7IFZPTEFUSUxFX1RBRyB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHByb3BlcnR5KSB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgdGhpcy5pbm5lciA9IG51bGw7XG4gICAgICAgIHRoaXMuY2hhaW5zID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0UGFyZW50VmFsdWUgPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgdGhpcy5fZ3VpZCA9IDA7XG4gICAgICAgIHRoaXMudGFnID0gVk9MQVRJTEVfVEFHO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IHsgbGFzdFBhcmVudFZhbHVlLCBwcm9wZXJ0eSwgaW5uZXIgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJlbnRWYWx1ZSA9IHRoaXMuX3BhcmVudFZhbHVlKCk7XG4gICAgICAgIGlmIChwYXJlbnRWYWx1ZSA9PT0gbnVsbCB8fCBwYXJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFBhcmVudFZhbHVlID09PSBwYXJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgaW5uZXIgPSB0aGlzLmlubmVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IFJlZmVyZW5jZVR5cGUgPSB0eXBlb2YgcGFyZW50VmFsdWUgPT09ICdvYmplY3QnID8gTWV0YS5mb3IocGFyZW50VmFsdWUpLnJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHkpIDogUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICAgICAgICBpbm5lciA9IHRoaXMuaW5uZXIgPSBuZXcgUmVmZXJlbmNlVHlwZShwYXJlbnRWYWx1ZSwgcHJvcGVydHksIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0eXBlb2YgcGFyZW50VmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vICAgTWV0YS5mb3IocGFyZW50VmFsdWUpLmFkZFJlZmVyZW5jZShwcm9wZXJ0eSwgdGhpcyk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUgPSBpbm5lci52YWx1ZSgpO1xuICAgIH1cbiAgICBnZXQocHJvcCkge1xuICAgICAgICBsZXQgY2hhaW5zID0gdGhpcy5fZ2V0Q2hhaW5zKCk7XG4gICAgICAgIGlmIChwcm9wIGluIGNoYWlucykgcmV0dXJuIGNoYWluc1twcm9wXTtcbiAgICAgICAgcmV0dXJuIGNoYWluc1twcm9wXSA9IG5ldyBQYXRoUmVmZXJlbmNlKHRoaXMsIHByb3ApO1xuICAgIH1cbiAgICBsYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuICdbcmVmZXJlbmNlIERpcmVjdF0nO1xuICAgIH1cbiAgICBfZ2V0Q2hhaW5zKCkge1xuICAgICAgICBpZiAodGhpcy5jaGFpbnMpIHJldHVybiB0aGlzLmNoYWlucztcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW5zID0gZGljdCgpO1xuICAgIH1cbiAgICBfcGFyZW50VmFsdWUoKSB7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudC52YWx1ZSgpO1xuICAgICAgICB0aGlzLmxhc3RQYXJlbnRWYWx1ZSA9IHBhcmVudDtcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG59XG5leHBvcnQgeyBQYXRoUmVmZXJlbmNlIH07Il19