angular-three 1.4.4 → 1.5.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -177,4 +177,4 @@ export function kebabToPascal(str) {
177
177
  // join the parts together to create the final PascalCase string
178
178
  return pascalParts.join('');
179
179
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDaEIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0NBQ0osQ0FBQztBQUVYLE1BQU0sY0FBYyxHQUFHO0lBQ25CLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFlBQVksRUFBRSxhQUFhO0NBQ3JCLENBQUM7QUFFWCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBdUIsRUFBRSxLQUFzQjtJQUM1RSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVB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YUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDckMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixRQUE4QixFQUM5QixHQUFzQixFQUN0QixTQUFtQztJQUVuQyxPQUFPLENBQUMsS0FBNEYsRUFBRSxFQUFFO1FBQ3BHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixJQUFJLFNBQVM7WUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDckMsa0NBQWtDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0IsaUVBQWlFO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUNoRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlbW92ZUludGVyYWN0aXZpdHkgfSBmcm9tICcuLi9ldmVudHMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RFdmVudEhhbmRsZXJzLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhdHRhY2gsIGRldGFjaCB9IGZyb20gJy4uL3V0aWxzL2F0dGFjaCc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBpbnZhbGlkYXRlSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IHN1cHBvcnRlZEV2ZW50cyB9IGZyb20gJy4uL3dlYi9ldmVudHMnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJDbGFzc0lkIH0gZnJvbSAnLi9lbnVtcyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG4gICAgTkdUX1BPUlRBTDogJ25ndC1wb3J0YWwnLFxuICAgIE5HVF9QUklNSVRJVkU6ICduZ3QtcHJpbWl0aXZlJyxcbiAgICBOR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcbiAgICBDT01QT1VORDogJ25ndENvbXBvdW5kJyxcbiAgICBSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG4gICAgQVRUQUNIOiAnYXR0YWNoJyxcbiAgICBWQUxVRTogJ3Jhd1ZhbHVlJyxcbiAgICBSRUY6ICdyZWYnLFxufSBhcyBjb25zdDtcblxuY29uc3QgU1BFQ0lBTF9FVkVOVFMgPSB7XG4gICAgQkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG4gICAgQUZURVJfVVBEQVRFOiAnYWZ0ZXJVcGRhdGUnLFxuICAgIEFGVEVSX0FUVEFDSDogJ2FmdGVyQXR0YWNoJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBjaGlsZDogTmd0SW5zdGFuY2VOb2RlKSB7XG4gICAgY29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuICAgIGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXG4gICAgaWYgKCFwTFMgfHwgIWNMUykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtOR1RdIFRIUkVFIGluc3RhbmNlcyBuZWVkIHRvIGJlIHByZXBhcmVkIHdpdGggbG9jYWwgc3RhdGUuYCk7XG4gICAgfVxuXG4gICAgLy8gd2hldGhlciB0aGUgY2hpbGQgaXMgYWRkZWQgdG8gdGhlIHBhcmVudCB3aXRoIHBhcmVudC5hZGQoKVxuICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuXG4gICAgLy8gYXNzaWduIHN0b3JlIG9uIGNoaWxkIGlmIG5vdCBhbHJlYWR5IGV4aXN0XG4gICAgLy8gb3IgY2hpbGQgc3RvcmUgaXMgdGhlIHBhcmVudCBvZiBwYXJlbnQgc3RvcmVcbiAgICBpZiAoIWNMUy5zdG9yZSB8fCBjTFMuc3RvcmUgPT09IHBMUy5zdG9yZS5nZXQoJ3ByZXZpb3VzU3RvcmUnKSkge1xuICAgICAgICBjTFMuc3RvcmUgPSBwTFMuc3RvcmU7XG4gICAgfVxuXG4gICAgaWYgKGNMUy5hdHRhY2gpIHtcbiAgICAgICAgY29uc3QgYXR0YWNoUHJvcCA9IGNMUy5hdHRhY2g7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhdHRhY2hQcm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2hDbGVhblVwID0gYXR0YWNoUHJvcChwYXJlbnQsIGNoaWxkLCBjTFMuc3RvcmUpO1xuICAgICAgICAgICAgaWYgKGF0dGFjaENsZWFuVXApIGNMUy5wcmV2aW91c0F0dGFjaCA9IGF0dGFjaENsZWFuVXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB3ZSBza2lwIGF0dGFjaCBub25lIGlmIHNldCBleHBsaWNpdGx5XG4gICAgICAgICAgICBpZiAoYXR0YWNoUHJvcFswXSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGhhbmRsZSBtYXRlcmlhbCBhcnJheVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF0dGFjaFByb3BbMF0gPT09ICdtYXRlcmlhbCcgJiZcbiAgICAgICAgICAgICAgICBhdHRhY2hQcm9wWzFdICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIE51bWJlcihhdHRhY2hQcm9wWzFdKSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICBpcy5tYXRlcmlhbChjaGlsZCkgJiZcbiAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXJlbnRbJ21hdGVyaWFsJ10pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRbJ21hdGVyaWFsJ10gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYXR0YWNoXG4gICAgICAgICAgICBpZiAoY0xTLmlzUmF3KSB7XG4gICAgICAgICAgICAgICAgY0xTLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50IHdlIGRvbid0IGhhdmUgcmF3VmFsdWUgeWV0LCBzbyB3ZSBiYWlsIGFuZCB3YWl0IHVudGlsIHRoZSBSZW5kZXJlciByZWNhbGxzIGF0dGFjaFxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSwgYXR0YWNoUHJvcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkLCBhdHRhY2hQcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHNhdmUgdmFsdWVcbiAgICAgICAgICAgIGNMUy5wcmV2aW91c0F0dGFjaCA9IGF0dGFjaFByb3AucmVkdWNlKCh2YWx1ZSwgcHJvcGVydHkpID0+IHZhbHVlW3Byb3BlcnR5XSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXMub2JqZWN0M0QocGFyZW50KSAmJiBpcy5vYmplY3QzRChjaGlsZCkpIHtcbiAgICAgICAgcGFyZW50LmFkZChjaGlsZCk7XG4gICAgICAgIGFkZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwTFMuYWRkKGNoaWxkLCBhZGRlZCA/ICdvYmplY3RzJyA6ICdub25PYmplY3RzJyk7XG5cbiAgICBjTFMucGFyZW50ID0gcGFyZW50O1xuXG4gICAgaWYgKGNMUy5hZnRlckF0dGFjaCkge1xuICAgICAgICBjTFMuYWZ0ZXJBdHRhY2guZW1pdCh7IHBhcmVudCwgbm9kZTogY2hpbGQgfSk7XG4gICAgfVxuXG4gICAgaW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcbiAgICBpbnZhbGlkYXRlSW5zdGFuY2UocGFyZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRocmVlQ2hpbGQocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUsIGNoaWxkOiBOZ3RJbnN0YW5jZU5vZGUsIGRpc3Bvc2U/OiBib29sZWFuKSB7XG4gICAgY29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuICAgIGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXG4gICAgLy8gY2xlYXIgcGFyZW50IHJlZlxuICAgIGNMUy5wYXJlbnQgPSBudWxsO1xuXG4gICAgLy8gcmVtb3ZlIGNoaWxkIGZyb20gcGFyZW50XG4gICAgaWYgKHBMUy5vYmplY3RzKSB7XG4gICAgICAgIHBMUy5yZW1vdmUoY2hpbGQsICdvYmplY3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKHBMUy5ub25PYmplY3RzKSB7XG4gICAgICAgIHBMUy5yZW1vdmUoY2hpbGQsICdub25PYmplY3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKGNMUy5hdHRhY2gpIHtcbiAgICAgICAgZGV0YWNoKHBhcmVudCwgY2hpbGQsIGNMUy5hdHRhY2gpO1xuICAgIH0gZWxzZSBpZiAoaXMub2JqZWN0M0QocGFyZW50KSAmJiBpcy5vYmplY3QzRChjaGlsZCkpIHtcbiAgICAgICAgcGFyZW50LnJlbW92ZShjaGlsZCk7XG4gICAgICAgIHJlbW92ZUludGVyYWN0aXZpdHkoY0xTLnN0b3JlIHx8IHBMUy5zdG9yZSwgY2hpbGQpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzUHJpbWl0aXZlID0gY0xTLnByaW1pdGl2ZTtcbiAgICBpZiAoIWlzUHJpbWl0aXZlKSB7XG4gICAgICAgIHJlbW92ZVRocmVlUmVjdXJzaXZlKGNMUy5vYmplY3RzPy52YWx1ZSB8fCBbXSwgY2hpbGQsICEhZGlzcG9zZSk7XG4gICAgICAgIHJlbW92ZVRocmVlUmVjdXJzaXZlKGNoaWxkLmNoaWxkcmUsIGNoaWxkLCAhIWRpc3Bvc2UpO1xuICAgIH1cblxuICAgIC8vIGRpc3Bvc2VcbiAgICBpZiAoIWlzUHJpbWl0aXZlICYmIGNoaWxkWydkaXNwb3NlJ10gJiYgIWlzLnNjZW5lKGNoaWxkKSkge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBjaGlsZFsnZGlzcG9zZSddKCkpO1xuICAgIH1cblxuICAgIGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUaHJlZVJlY3Vyc2l2ZShhcnJheTogTmd0SW5zdGFuY2VOb2RlW10sIHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBkaXNwb3NlOiBib29sZWFuKSB7XG4gICAgaWYgKGFycmF5KSBbLi4uYXJyYXldLmZvckVhY2goKGNoaWxkKSA9PiByZW1vdmVUaHJlZUNoaWxkKHBhcmVudCwgY2hpbGQsIGRpc3Bvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NUaHJlZUV2ZW50KFxuICAgIGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUsXG4gICAgcHJpb3JpdHk6IG51bWJlcixcbiAgICBldmVudE5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQsXG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICB0YXJnZXRDZHI6IENoYW5nZURldGVjdG9yUmVmIHwgbnVsbFxuKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgbFMgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICBpZiAoZXZlbnROYW1lID09PSBTUEVDSUFMX0VWRU5UUy5CRUZPUkVfUkVOREVSKSB7XG4gICAgICAgIHJldHVybiBsUy5zdG9yZVxuICAgICAgICAgICAgLmdldCgnaW50ZXJuYWwnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IGNhbGxiYWNrKHsgc3RhdGUsIG9iamVjdDogaW5zdGFuY2UgfSksIHByaW9yaXR5IHx8IGxTLnByaW9yaXR5IHx8IDApO1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX1VQREFURSB8fCBldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX0FUVEFDSCkge1xuICAgICAgICBpZiAoIWxTW2V2ZW50TmFtZV0pIHtcbiAgICAgICAgICAgIGxTW2V2ZW50TmFtZV0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViID0gbFNbZXZlbnROYW1lXT8uc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHN1YiEudW5zdWJzY3JpYmUuYmluZChzdWIpO1xuICAgIH1cblxuICAgIGlmICghbFMuaGFuZGxlcnMpIHtcbiAgICAgICAgbFMuaGFuZGxlcnMgPSB7fTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gZ2V0IHRoZSBwcmV2aW91cyBoYW5kbGVyLiBjb21wb3VuZCBtaWdodCBoYXZlIG9uZSwgdGhlIFRIUkVFIG9iamVjdCBtaWdodCBhbHNvIGhhdmUgb25lIHdpdGggdGhlIHNhbWUgbmFtZVxuICAgIGNvbnN0IHByZXZpb3VzSGFuZGxlciA9IGxTLmhhbmRsZXJzW2V2ZW50TmFtZSBhcyBrZXlvZiB0eXBlb2YgbFMuaGFuZGxlcnNdO1xuICAgIC8vIHJlYWRqdXN0IHRoZSBjYWxsYmFja1xuICAgIGNvbnN0IHVwZGF0ZWRDYWxsYmFjazogdHlwZW9mIGNhbGxiYWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChwcmV2aW91c0hhbmRsZXIpIHByZXZpb3VzSGFuZGxlcihldmVudCk7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgbFMuaGFuZGxlcnMgPSB7XG4gICAgICAgIC4uLmxTLmhhbmRsZXJzLFxuICAgICAgICBbZXZlbnROYW1lXTogZXZlbnRUb0hhbmRsZXIodXBkYXRlZENhbGxiYWNrLCBjZHIsIHRhcmdldENkciksXG4gICAgfTtcbiAgICAvLyBpbmNyZW1lbnQgdGhlIGNvdW50IGV2ZXJ5dGltZVxuICAgIGxTLmV2ZW50Q291bnQgKz0gMTtcbiAgICAvLyBidXQgb25seSBhZGQgdGhlIGluc3RhbmNlICh0YXJnZXQpIHRvIHRoZSBpbnRlcmFjdGlvbiBhcnJheSAoc28gdGhhdCBpdCBpcyBoYW5kbGVkIGJ5IHRoZSBFdmVudE1hbmFnZXIgd2l0aCBSYXljYXN0KVxuICAgIC8vIHRoZSBmaXJzdCB0aW1lIGV2ZW50Q291bnQgaXMgaW5jcmVtZW50ZWRcbiAgICBpZiAobFMuZXZlbnRDb3VudCA9PT0gMSAmJiBpbnN0YW5jZVsncmF5Y2FzdCddKSB7XG4gICAgICAgIGxTLnN0b3JlLmdldCgnYWRkSW50ZXJhY3Rpb24nKShpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLy8gY2xlYW4gdXAgdGhlIGV2ZW50IGxpc3RlbmVyIGJ5IHJlbW92aW5nIHRoZSB0YXJnZXQgZnJvbSB0aGUgaW50ZXJhY3Rpb24gYXJyYXlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG4gICAgICAgIGlmIChsb2NhbFN0YXRlICYmIGxvY2FsU3RhdGUuZXZlbnRDb3VudCkge1xuICAgICAgICAgICAgbG9jYWxTdGF0ZS5zdG9yZS5nZXQoJ3JlbW92ZUludGVyYWN0aW9uJykoaW5zdGFuY2VbJ3V1aWQnXSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUb0hhbmRsZXIoXG4gICAgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkLFxuICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgdGFyZ2V0Q2RyOiBDaGFuZ2VEZXRlY3RvclJlZiB8IG51bGxcbikge1xuICAgIHJldHVybiAoZXZlbnQ6IFBhcmFtZXRlcnM8RXhjbHVkZTxOZ3RFdmVudEhhbmRsZXJzWyh0eXBlb2Ygc3VwcG9ydGVkRXZlbnRzKVtudW1iZXJdXSwgdW5kZWZpbmVkPj5bMF0pID0+IHtcbiAgICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgICAgICBpZiAodGFyZ2V0Q2RyKSB0YXJnZXRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZWJhYlRvUGFzY2FsKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBzcGxpdCB0aGUgc3RyaW5nIGF0IGVhY2ggaHlwaGVuXG4gICAgY29uc3QgcGFydHMgPSBzdHIuc3BsaXQoJy0nKTtcblxuICAgIC8vIG1hcCBvdmVyIHRoZSBwYXJ0cywgY2FwaXRhbGl6aW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBwYXJ0XG4gICAgY29uc3QgcGFzY2FsUGFydHMgPSBwYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpO1xuICAgIH0pO1xuXG4gICAgLy8gam9pbiB0aGUgcGFydHMgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBmaW5hbCBQYXNjYWxDYXNlIHN0cmluZ1xuICAgIHJldHVybiBwYXNjYWxQYXJ0cy5qb2luKCcnKTtcbn1cbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDaEIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0NBQ0osQ0FBQztBQUVYLE1BQU0sY0FBYyxHQUFHO0lBQ25CLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFlBQVksRUFBRSxhQUFhO0NBQ3JCLENBQUM7QUFFWCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBdUIsRUFBRSxLQUFzQjtJQUM1RSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVB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YUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDckMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQThCLEVBQUUsR0FBc0IsRUFBRSxTQUE2QjtJQUNoSCxPQUFPLENBQUMsS0FBNEYsRUFBRSxFQUFFO1FBQ3BHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixJQUFJLFNBQVM7WUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDckMsa0NBQWtDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0IsaUVBQWlFO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUNoRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlbW92ZUludGVyYWN0aXZpdHkgfSBmcm9tICcuLi9ldmVudHMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RFdmVudEhhbmRsZXJzLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhdHRhY2gsIGRldGFjaCB9IGZyb20gJy4uL3V0aWxzL2F0dGFjaCc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBpbnZhbGlkYXRlSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IHN1cHBvcnRlZEV2ZW50cyB9IGZyb20gJy4uL3dlYi9ldmVudHMnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJDbGFzc0lkIH0gZnJvbSAnLi9lbnVtcyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG4gICAgTkdUX1BPUlRBTDogJ25ndC1wb3J0YWwnLFxuICAgIE5HVF9QUklNSVRJVkU6ICduZ3QtcHJpbWl0aXZlJyxcbiAgICBOR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcbiAgICBDT01QT1VORDogJ25ndENvbXBvdW5kJyxcbiAgICBSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG4gICAgQVRUQUNIOiAnYXR0YWNoJyxcbiAgICBWQUxVRTogJ3Jhd1ZhbHVlJyxcbiAgICBSRUY6ICdyZWYnLFxufSBhcyBjb25zdDtcblxuY29uc3QgU1BFQ0lBTF9FVkVOVFMgPSB7XG4gICAgQkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG4gICAgQUZURVJfVVBEQVRFOiAnYWZ0ZXJVcGRhdGUnLFxuICAgIEFGVEVSX0FUVEFDSDogJ2FmdGVyQXR0YWNoJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBjaGlsZDogTmd0SW5zdGFuY2VOb2RlKSB7XG4gICAgY29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuICAgIGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXG4gICAgaWYgKCFwTFMgfHwgIWNMUykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtOR1RdIFRIUkVFIGluc3RhbmNlcyBuZWVkIHRvIGJlIHByZXBhcmVkIHdpdGggbG9jYWwgc3RhdGUuYCk7XG4gICAgfVxuXG4gICAgLy8gd2hldGhlciB0aGUgY2hpbGQgaXMgYWRkZWQgdG8gdGhlIHBhcmVudCB3aXRoIHBhcmVudC5hZGQoKVxuICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuXG4gICAgLy8gYXNzaWduIHN0b3JlIG9uIGNoaWxkIGlmIG5vdCBhbHJlYWR5IGV4aXN0XG4gICAgLy8gb3IgY2hpbGQgc3RvcmUgaXMgdGhlIHBhcmVudCBvZiBwYXJlbnQgc3RvcmVcbiAgICBpZiAoIWNMUy5zdG9yZSB8fCBjTFMuc3RvcmUgPT09IHBMUy5zdG9yZS5nZXQoJ3ByZXZpb3VzU3RvcmUnKSkge1xuICAgICAgICBjTFMuc3RvcmUgPSBwTFMuc3RvcmU7XG4gICAgfVxuXG4gICAgaWYgKGNMUy5hdHRhY2gpIHtcbiAgICAgICAgY29uc3QgYXR0YWNoUHJvcCA9IGNMUy5hdHRhY2g7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhdHRhY2hQcm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2hDbGVhblVwID0gYXR0YWNoUHJvcChwYXJlbnQsIGNoaWxkLCBjTFMuc3RvcmUpO1xuICAgICAgICAgICAgaWYgKGF0dGFjaENsZWFuVXApIGNMUy5wcmV2aW91c0F0dGFjaCA9IGF0dGFjaENsZWFuVXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB3ZSBza2lwIGF0dGFjaCBub25lIGlmIHNldCBleHBsaWNpdGx5XG4gICAgICAgICAgICBpZiAoYXR0YWNoUHJvcFswXSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGhhbmRsZSBtYXRlcmlhbCBhcnJheVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF0dGFjaFByb3BbMF0gPT09ICdtYXRlcmlhbCcgJiZcbiAgICAgICAgICAgICAgICBhdHRhY2hQcm9wWzFdICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIE51bWJlcihhdHRhY2hQcm9wWzFdKSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICBpcy5tYXRlcmlhbChjaGlsZCkgJiZcbiAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXJlbnRbJ21hdGVyaWFsJ10pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRbJ21hdGVyaWFsJ10gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYXR0YWNoXG4gICAgICAgICAgICBpZiAoY0xTLmlzUmF3KSB7XG4gICAgICAgICAgICAgICAgY0xTLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50IHdlIGRvbid0IGhhdmUgcmF3VmFsdWUgeWV0LCBzbyB3ZSBiYWlsIGFuZCB3YWl0IHVudGlsIHRoZSBSZW5kZXJlciByZWNhbGxzIGF0dGFjaFxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5yYXdWYWx1ZV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSwgYXR0YWNoUHJvcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkLCBhdHRhY2hQcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHNhdmUgdmFsdWVcbiAgICAgICAgICAgIGNMUy5wcmV2aW91c0F0dGFjaCA9IGF0dGFjaFByb3AucmVkdWNlKCh2YWx1ZSwgcHJvcGVydHkpID0+IHZhbHVlW3Byb3BlcnR5XSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXMub2JqZWN0M0QocGFyZW50KSAmJiBpcy5vYmplY3QzRChjaGlsZCkpIHtcbiAgICAgICAgcGFyZW50LmFkZChjaGlsZCk7XG4gICAgICAgIGFkZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwTFMuYWRkKGNoaWxkLCBhZGRlZCA/ICdvYmplY3RzJyA6ICdub25PYmplY3RzJyk7XG5cbiAgICBjTFMucGFyZW50ID0gcGFyZW50O1xuXG4gICAgaWYgKGNMUy5hZnRlckF0dGFjaCkge1xuICAgICAgICBjTFMuYWZ0ZXJBdHRhY2guZW1pdCh7IHBhcmVudCwgbm9kZTogY2hpbGQgfSk7XG4gICAgfVxuXG4gICAgaW52YWxpZGF0ZUluc3RhbmNlKGNoaWxkKTtcbiAgICBpbnZhbGlkYXRlSW5zdGFuY2UocGFyZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRocmVlQ2hpbGQocGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUsIGNoaWxkOiBOZ3RJbnN0YW5jZU5vZGUsIGRpc3Bvc2U/OiBib29sZWFuKSB7XG4gICAgY29uc3QgcExTID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuICAgIGNvbnN0IGNMUyA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuXG4gICAgLy8gY2xlYXIgcGFyZW50IHJlZlxuICAgIGNMUy5wYXJlbnQgPSBudWxsO1xuXG4gICAgLy8gcmVtb3ZlIGNoaWxkIGZyb20gcGFyZW50XG4gICAgaWYgKHBMUy5vYmplY3RzKSB7XG4gICAgICAgIHBMUy5yZW1vdmUoY2hpbGQsICdvYmplY3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKHBMUy5ub25PYmplY3RzKSB7XG4gICAgICAgIHBMUy5yZW1vdmUoY2hpbGQsICdub25PYmplY3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKGNMUy5hdHRhY2gpIHtcbiAgICAgICAgZGV0YWNoKHBhcmVudCwgY2hpbGQsIGNMUy5hdHRhY2gpO1xuICAgIH0gZWxzZSBpZiAoaXMub2JqZWN0M0QocGFyZW50KSAmJiBpcy5vYmplY3QzRChjaGlsZCkpIHtcbiAgICAgICAgcGFyZW50LnJlbW92ZShjaGlsZCk7XG4gICAgICAgIHJlbW92ZUludGVyYWN0aXZpdHkoY0xTLnN0b3JlIHx8IHBMUy5zdG9yZSwgY2hpbGQpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzUHJpbWl0aXZlID0gY0xTLnByaW1pdGl2ZTtcbiAgICBpZiAoIWlzUHJpbWl0aXZlKSB7XG4gICAgICAgIHJlbW92ZVRocmVlUmVjdXJzaXZlKGNMUy5vYmplY3RzPy52YWx1ZSB8fCBbXSwgY2hpbGQsICEhZGlzcG9zZSk7XG4gICAgICAgIHJlbW92ZVRocmVlUmVjdXJzaXZlKGNoaWxkLmNoaWxkcmUsIGNoaWxkLCAhIWRpc3Bvc2UpO1xuICAgIH1cblxuICAgIC8vIGRpc3Bvc2VcbiAgICBpZiAoIWlzUHJpbWl0aXZlICYmIGNoaWxkWydkaXNwb3NlJ10gJiYgIWlzLnNjZW5lKGNoaWxkKSkge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBjaGlsZFsnZGlzcG9zZSddKCkpO1xuICAgIH1cblxuICAgIGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUaHJlZVJlY3Vyc2l2ZShhcnJheTogTmd0SW5zdGFuY2VOb2RlW10sIHBhcmVudDogTmd0SW5zdGFuY2VOb2RlLCBkaXNwb3NlOiBib29sZWFuKSB7XG4gICAgaWYgKGFycmF5KSBbLi4uYXJyYXldLmZvckVhY2goKGNoaWxkKSA9PiByZW1vdmVUaHJlZUNoaWxkKHBhcmVudCwgY2hpbGQsIGRpc3Bvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NUaHJlZUV2ZW50KFxuICAgIGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUsXG4gICAgcHJpb3JpdHk6IG51bWJlcixcbiAgICBldmVudE5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQsXG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICB0YXJnZXRDZHI/OiBDaGFuZ2VEZXRlY3RvclJlZlxuKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgbFMgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICBpZiAoZXZlbnROYW1lID09PSBTUEVDSUFMX0VWRU5UUy5CRUZPUkVfUkVOREVSKSB7XG4gICAgICAgIHJldHVybiBsUy5zdG9yZVxuICAgICAgICAgICAgLmdldCgnaW50ZXJuYWwnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IGNhbGxiYWNrKHsgc3RhdGUsIG9iamVjdDogaW5zdGFuY2UgfSksIHByaW9yaXR5IHx8IGxTLnByaW9yaXR5IHx8IDApO1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX1VQREFURSB8fCBldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkFGVEVSX0FUVEFDSCkge1xuICAgICAgICBpZiAoIWxTW2V2ZW50TmFtZV0pIHtcbiAgICAgICAgICAgIGxTW2V2ZW50TmFtZV0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViID0gbFNbZXZlbnROYW1lXT8uc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHN1YiEudW5zdWJzY3JpYmUuYmluZChzdWIpO1xuICAgIH1cblxuICAgIGlmICghbFMuaGFuZGxlcnMpIHtcbiAgICAgICAgbFMuaGFuZGxlcnMgPSB7fTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gZ2V0IHRoZSBwcmV2aW91cyBoYW5kbGVyLiBjb21wb3VuZCBtaWdodCBoYXZlIG9uZSwgdGhlIFRIUkVFIG9iamVjdCBtaWdodCBhbHNvIGhhdmUgb25lIHdpdGggdGhlIHNhbWUgbmFtZVxuICAgIGNvbnN0IHByZXZpb3VzSGFuZGxlciA9IGxTLmhhbmRsZXJzW2V2ZW50TmFtZSBhcyBrZXlvZiB0eXBlb2YgbFMuaGFuZGxlcnNdO1xuICAgIC8vIHJlYWRqdXN0IHRoZSBjYWxsYmFja1xuICAgIGNvbnN0IHVwZGF0ZWRDYWxsYmFjazogdHlwZW9mIGNhbGxiYWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChwcmV2aW91c0hhbmRsZXIpIHByZXZpb3VzSGFuZGxlcihldmVudCk7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgbFMuaGFuZGxlcnMgPSB7XG4gICAgICAgIC4uLmxTLmhhbmRsZXJzLFxuICAgICAgICBbZXZlbnROYW1lXTogZXZlbnRUb0hhbmRsZXIodXBkYXRlZENhbGxiYWNrLCBjZHIsIHRhcmdldENkciksXG4gICAgfTtcbiAgICAvLyBpbmNyZW1lbnQgdGhlIGNvdW50IGV2ZXJ5dGltZVxuICAgIGxTLmV2ZW50Q291bnQgKz0gMTtcbiAgICAvLyBidXQgb25seSBhZGQgdGhlIGluc3RhbmNlICh0YXJnZXQpIHRvIHRoZSBpbnRlcmFjdGlvbiBhcnJheSAoc28gdGhhdCBpdCBpcyBoYW5kbGVkIGJ5IHRoZSBFdmVudE1hbmFnZXIgd2l0aCBSYXljYXN0KVxuICAgIC8vIHRoZSBmaXJzdCB0aW1lIGV2ZW50Q291bnQgaXMgaW5jcmVtZW50ZWRcbiAgICBpZiAobFMuZXZlbnRDb3VudCA9PT0gMSAmJiBpbnN0YW5jZVsncmF5Y2FzdCddKSB7XG4gICAgICAgIGxTLnN0b3JlLmdldCgnYWRkSW50ZXJhY3Rpb24nKShpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLy8gY2xlYW4gdXAgdGhlIGV2ZW50IGxpc3RlbmVyIGJ5IHJlbW92aW5nIHRoZSB0YXJnZXQgZnJvbSB0aGUgaW50ZXJhY3Rpb24gYXJyYXlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG4gICAgICAgIGlmIChsb2NhbFN0YXRlICYmIGxvY2FsU3RhdGUuZXZlbnRDb3VudCkge1xuICAgICAgICAgICAgbG9jYWxTdGF0ZS5zdG9yZS5nZXQoJ3JlbW92ZUludGVyYWN0aW9uJykoaW5zdGFuY2VbJ3V1aWQnXSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUb0hhbmRsZXIoY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkLCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCB0YXJnZXRDZHI/OiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHJldHVybiAoZXZlbnQ6IFBhcmFtZXRlcnM8RXhjbHVkZTxOZ3RFdmVudEhhbmRsZXJzWyh0eXBlb2Ygc3VwcG9ydGVkRXZlbnRzKVtudW1iZXJdXSwgdW5kZWZpbmVkPj5bMF0pID0+IHtcbiAgICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgICAgICBpZiAodGFyZ2V0Q2RyKSB0YXJnZXRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZWJhYlRvUGFzY2FsKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBzcGxpdCB0aGUgc3RyaW5nIGF0IGVhY2ggaHlwaGVuXG4gICAgY29uc3QgcGFydHMgPSBzdHIuc3BsaXQoJy0nKTtcblxuICAgIC8vIG1hcCBvdmVyIHRoZSBwYXJ0cywgY2FwaXRhbGl6aW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCBwYXJ0XG4gICAgY29uc3QgcGFzY2FsUGFydHMgPSBwYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpO1xuICAgIH0pO1xuXG4gICAgLy8gam9pbiB0aGUgcGFydHMgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBmaW5hbCBQYXNjYWxDYXNlIHN0cmluZ1xuICAgIHJldHVybiBwYXNjYWxQYXJ0cy5qb2luKCcnKTtcbn1cbiJdfQ==
@@ -911,18 +911,39 @@ function extend(objects) {
911
911
  }
912
912
  const NGT_CATALOGUE = new InjectionToken('THREE Constructors Catalogue', { factory: () => catalogue });
913
913
 
914
- class NgtArgs {
914
+ class NgtCommonDirective {
915
915
  constructor() {
916
916
  this.vcr = inject(ViewContainerRef);
917
917
  this.template = inject(TemplateRef);
918
- this.injectedArgs = [];
919
918
  this.injected = false;
919
+ this.shouldCreateView = true;
920
920
  const commentNode = this.vcr.element.nativeElement;
921
921
  if (commentNode['__ngt_renderer_add_comment__']) {
922
922
  commentNode['__ngt_renderer_add_comment__']();
923
923
  delete commentNode['__ngt_renderer_add_comment__'];
924
924
  }
925
925
  }
926
+ createView() {
927
+ if (this.shouldCreateView) {
928
+ if (this.view && !this.view.destroyed) {
929
+ this.view.destroy();
930
+ }
931
+ this.view = this.vcr.createEmbeddedView(this.template);
932
+ this.view.detectChanges();
933
+ }
934
+ }
935
+ }
936
+ NgtCommonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
937
+ NgtCommonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtCommonDirective, ngImport: i0 });
938
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtCommonDirective, decorators: [{
939
+ type: Directive
940
+ }], ctorParameters: function () { return []; } });
941
+
942
+ class NgtArgs extends NgtCommonDirective {
943
+ constructor() {
944
+ super(...arguments);
945
+ this.injectedArgs = [];
946
+ }
926
947
  set args(args) {
927
948
  if (args == null || !Array.isArray(args))
928
949
  return;
@@ -942,20 +963,41 @@ class NgtArgs {
942
963
  validate() {
943
964
  return !this.injected && !!this.injectedArgs.length;
944
965
  }
945
- createView() {
946
- if (this.view && !this.view.destroyed) {
947
- this.view.destroy();
948
- }
949
- this.view = this.vcr.createEmbeddedView(this.template);
950
- this.view.detectChanges();
951
- }
952
966
  }
953
- NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
954
- NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, ngImport: i0 });
967
+ NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
968
+ NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 });
955
969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtArgs, decorators: [{
956
970
  type: Directive,
957
971
  args: [{ selector: '[args]', standalone: true }]
958
- }], ctorParameters: function () { return []; }, propDecorators: { args: [{
972
+ }], propDecorators: { args: [{
973
+ type: Input
974
+ }] } });
975
+
976
+ class NgtRef extends NgtCommonDirective {
977
+ set ref(ref) {
978
+ if (!ref || ref == null)
979
+ return;
980
+ this.injected = false;
981
+ this.injectedRef = ref;
982
+ this.createView();
983
+ }
984
+ get ref() {
985
+ if (this.validate()) {
986
+ this.injected = true;
987
+ return this.injectedRef;
988
+ }
989
+ return null;
990
+ }
991
+ validate() {
992
+ return !this.injected && !!this.injectedRef && !this.injectedRef.nativeElement;
993
+ }
994
+ }
995
+ NgtRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRef, deps: null, target: i0.ɵɵFactoryTarget.Directive });
996
+ NgtRef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtRef, isStandalone: true, selector: "[ref]", inputs: { ref: "ref" }, usesInheritance: true, ngImport: i0 });
997
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRef, decorators: [{
998
+ type: Directive,
999
+ args: [{ selector: '[ref]', standalone: true }]
1000
+ }], propDecorators: { ref: [{
959
1001
  type: Input
960
1002
  }] } });
961
1003
 
@@ -1655,11 +1697,11 @@ class NgtRendererStore {
1655
1697
  return;
1656
1698
  // setup [ref] here
1657
1699
  // ref should never change
1658
- if (name === SPECIAL_PROPERTIES.REF && is.ref(value)) {
1659
- node.__ngt_renderer__[11 /* NgtRendererClassId.ref */] = value;
1660
- value.nativeElement = node;
1661
- return;
1662
- }
1700
+ // if (name === SPECIAL_PROPERTIES.REF && is.ref(value)) {
1701
+ // node.__ngt_renderer__[NgtRendererClassId.ref] = value;
1702
+ // value.nativeElement = node;
1703
+ // return;
1704
+ // }
1663
1705
  const parent = getLocalState(node).parent || node.__ngt_renderer__[1 /* NgtRendererClassId.parent */];
1664
1706
  // rawValue
1665
1707
  if (getLocalState(node).isRaw && name === SPECIAL_PROPERTIES.VALUE) {
@@ -1735,10 +1777,11 @@ class NgtRendererStore {
1735
1777
  return null;
1736
1778
  }
1737
1779
  getCreationState() {
1738
- var _a;
1780
+ var _a, _b;
1739
1781
  const injectedArgs = ((_a = this.firstNonInjectedDirective(NgtArgs)) === null || _a === void 0 ? void 0 : _a.args) || [];
1782
+ const injectedRef = ((_b = this.firstNonInjectedDirective(NgtRef)) === null || _b === void 0 ? void 0 : _b.ref) || null;
1740
1783
  const store = this.tryGetPortalStore();
1741
- return { injectedArgs, store };
1784
+ return { injectedArgs, injectedRef, store };
1742
1785
  }
1743
1786
  destroy(node, parent) {
1744
1787
  const state = node.__ngt_renderer__;
@@ -1955,7 +1998,7 @@ class NgtRenderer {
1955
1998
  if (name === SPECIAL_DOM_TAG.NGT_VALUE) {
1956
1999
  return this.store.createNode('three', Object.assign({ __ngt_renderer__: { rawValue: undefined } }, { __ngt__: { isRaw: true } }));
1957
2000
  }
1958
- const { injectedArgs, store } = this.store.getCreationState();
2001
+ const { injectedArgs, injectedRef, store } = this.store.getCreationState();
1959
2002
  // handle primitive
1960
2003
  if (name === SPECIAL_DOM_TAG.NGT_PRIMITIVE) {
1961
2004
  if (!injectedArgs[0])
@@ -1968,7 +2011,10 @@ class NgtRenderer {
1968
2011
  }
1969
2012
  if (!localState.store)
1970
2013
  localState.store = store;
1971
- return this.store.createNode('three', object);
2014
+ const primitiveNode = this.store.createNode('three', object);
2015
+ if (injectedRef)
2016
+ injectedRef.nativeElement = primitiveNode;
2017
+ return primitiveNode;
1972
2018
  }
1973
2019
  const threeTag = name.startsWith('ngt') ? name.slice(4) : name;
1974
2020
  const threeName = kebabToPascal(threeTag);
@@ -1984,6 +2030,10 @@ class NgtRenderer {
1984
2030
  else if (is.material(instance)) {
1985
2031
  localState.attach = ['material'];
1986
2032
  }
2033
+ if (injectedRef) {
2034
+ injectedRef.nativeElement = node;
2035
+ node.__ngt_renderer__[11 /* NgtRendererClassId.ref */] = injectedRef;
2036
+ }
1987
2037
  return node;
1988
2038
  }
1989
2039
  const domNode = this.store.createNode('dom', element);
@@ -2153,7 +2203,7 @@ class NgtRenderer {
2153
2203
  }
2154
2204
  listen(target, eventName, callback) {
2155
2205
  var _a, _b;
2156
- const targetCdr = (_b = (_a = target.__ngt_renderer__)[13 /* NgtRendererClassId.injectorFactory */]) === null || _b === void 0 ? void 0 : _b.call(_a).get(ChangeDetectorRef, null);
2206
+ const targetCdr = (_b = (_a = target.__ngt_renderer__) === null || _a === void 0 ? void 0 : _a[13 /* NgtRendererClassId.injectorFactory */]) === null || _b === void 0 ? void 0 : _b.call(_a).get(ChangeDetectorRef, undefined);
2157
2207
  // if target is DOM node, then we pass that to delegate Renderer
2158
2208
  if (this.store.isDOM(target)) {
2159
2209
  const callbackWithCdr = (event) => {
@@ -2878,5 +2928,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
2878
2928
  * Generated bundle index. Do not edit.
2879
2929
  */
2880
2930
 
2881
- export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRepeat, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
2931
+ export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRef, NgtRepeat, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
2882
2932
  //# sourceMappingURL=angular-three.mjs.map