UNPKG

mframejs

Version:
83 lines 3.36 kB
Object.defineProperty(exports, "__esModule", { value: true }); var classArrayObserver_1 = require("./classArrayObserver"); var exported_1 = require("../../utils/exported"); var emptyObject = (function () { function class_1() { } return class_1; }()); var ClassArrayObserverCreator = (function () { function ClassArrayObserverCreator() { } ClassArrayObserverCreator.create = function (_class, observerKey, caller) { this.classRef = _class && _class.$context; this.keyParts = exported_1.Cache.keyMaps.getCreate(observerKey); this.keyNo = 0; this.keyBlock = this.keyParts[this.keyNo]; ClassArrayObserverCreator.processKeys(caller); ClassArrayObserverCreator.clear(); }; ClassArrayObserverCreator.remove = function (_class, observerKey, caller) { this.classRef = _class.$context; this.keyParts = exported_1.Cache.keyMaps.getCreate(observerKey); this.keyNo = 0; this.keyBlock = this.keyParts[this.keyNo]; ClassArrayObserverCreator.removeKeys(caller); ClassArrayObserverCreator.clear(); }; ClassArrayObserverCreator.clear = function () { this.classRef = null; this.keyParts = null; this.keyNo = null; this.keyBlock = null; }; ClassArrayObserverCreator.nextKey = function () { this.keyNo++; this.keyBlock = this.keyParts[this.keyNo]; }; ClassArrayObserverCreator.processKeys = function (caller) { if (!this.classRef.__observerArray) { Object.defineProperty(this.classRef, '__observerArray', { writable: true, configurable: true, value: new emptyObject() }); } if (!this.classRef.__observerArray[this.keyBlock]) { this.classRef.__observerArray[this.keyBlock] = new classArrayObserver_1.ClassArrayObserver(this.classRef, this.keyBlock); this.classRef.__observerArray[this.keyBlock].subscribe(caller); } else { this.classRef.__observerArray[this.keyBlock].subscribe(caller); this.classRef.__observerArray[this.keyBlock].observe(); } if (this.keyNo !== this.keyParts.length - 1 && this.keyParts.length > 1) { if (this.classRef) { this.classRef = this.classRef[this.keyBlock]; } this.nextKey(); if (this.classRef) { this.processKeys(caller); } } }; ClassArrayObserverCreator.removeKeys = function (caller) { if (this.classRef.__observerArray) { if (this.classRef.__observerArray[this.keyBlock]) { this.classRef.__observerArray[this.keyBlock].unsubscribe(caller); } } if (this.keyNo !== this.keyParts.length - 1 && this.keyParts.length > 1) { if (this.classRef) { this.classRef = this.classRef[this.keyBlock]; } this.nextKey(); if (this.classRef) { this.removeKeys(caller); } } }; return ClassArrayObserverCreator; }()); exports.ClassArrayObserverCreator = ClassArrayObserverCreator; //# sourceMappingURL=classArrayObserverCreator.js.map