@agm/core
Version:
Angular components for Google Maps
74 lines • 11.1 kB
JavaScript
import { fromEventPattern } from 'rxjs';
export function createMVCEventObservable(array) {
const eventNames = ['insert_at', 'remove_at', 'set_at'];
return fromEventPattern(handler => eventNames.map(eventName => array.addListener(eventName, (index, previous) => handler.apply(array, [{ newArr: array.getArray(), eventName, index, previous }]))), (_handler, evListeners) => evListeners.forEach(evListener => evListener.remove()));
}
export class MvcArrayMock {
constructor() {
this.vals = [];
this.listeners = {
remove_at: [],
insert_at: [],
set_at: [],
};
}
clear() {
for (let i = this.vals.length - 1; i >= 0; i--) {
this.removeAt(i);
}
}
getArray() {
return [...this.vals];
}
getAt(i) {
return this.vals[i];
}
getLength() {
return this.vals.length;
}
insertAt(i, elem) {
this.vals.splice(i, 0, elem);
this.listeners.insert_at.forEach(listener => listener(i));
}
pop() {
const deleted = this.vals.pop();
this.listeners.remove_at.forEach(listener => listener(this.vals.length, deleted));
return deleted;
}
push(elem) {
this.vals.push(elem);
this.listeners.insert_at.forEach(listener => listener(this.vals.length - 1));
return this.vals.length;
}
removeAt(i) {
const deleted = this.vals.splice(i, 1)[0];
this.listeners.remove_at.forEach(listener => listener(i, deleted));
return deleted;
}
setAt(i, elem) {
const deleted = this.vals[i];
this.vals[i] = elem;
this.listeners.set_at.forEach(listener => listener(i, deleted));
}
forEach(callback) {
this.vals.forEach(callback);
}
addListener(eventName, handler) {
const listenerArr = this.listeners[eventName];
listenerArr.push(handler);
return {
remove: () => {
listenerArr.splice(listenerArr.indexOf(handler), 1);
},
};
}
bindTo() { throw new Error('Not implemented'); }
changed() { throw new Error('Not implemented'); }
get() { throw new Error('Not implemented'); }
notify() { throw new Error('Not implemented'); }
set() { throw new Error('Not implemented'); }
setValues() { throw new Error('Not implemented'); }
unbind() { throw new Error('Not implemented'); }
unbindAll() { throw new Error('Not implemented'); }
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXZjYXJyYXktdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvbXZjYXJyYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXBELE1BQU0sVUFBVSx3QkFBd0IsQ0FBSSxLQUE4QjtJQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQ2hFLENBQUMsS0FBYSxFQUFFLFFBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkksQ0FBQyxRQUFRLEVBQUUsV0FBNEMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEgsQ0FBQztBQVdELE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ1UsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FJYjtZQUNGLFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLEVBQUU7WUFDYixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUE0REosQ0FBQztJQTNEQyxLQUFLO1FBQ0gsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1B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QUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7U0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELEdBQUcsS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEdBQUcsS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFNBQVMsS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELE1BQU0sS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFNBQVMsS0FBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50UGF0dGVybiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTVZDRXZlbnRPYnNlcnZhYmxlPFQ+KGFycmF5OiBnb29nbGUubWFwcy5NVkNBcnJheTxUPik6IE9ic2VydmFibGU8TVZDRXZlbnQ8VD4+e1xuICBjb25zdCBldmVudE5hbWVzID0gWydpbnNlcnRfYXQnLCAncmVtb3ZlX2F0JywgJ3NldF9hdCddO1xuICByZXR1cm4gZnJvbUV2ZW50UGF0dGVybihcbiAgICBoYW5kbGVyID0+IGV2ZW50TmFtZXMubWFwKGV2ZW50TmFtZSA9PiBhcnJheS5hZGRMaXN0ZW5lcihldmVudE5hbWUsXG4gICAgICAoaW5kZXg6IG51bWJlciwgcHJldmlvdXM/OiBUKSA9PiBoYW5kbGVyLmFwcGx5KGFycmF5LCBbIHtuZXdBcnI6IGFycmF5LmdldEFycmF5KCksIGV2ZW50TmFtZSwgaW5kZXgsIHByZXZpb3VzfSBhcyBNVkNFdmVudDxUPl0pKSksXG4gICAgKF9oYW5kbGVyLCBldkxpc3RlbmVyczogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXJbXSkgPT4gZXZMaXN0ZW5lcnMuZm9yRWFjaChldkxpc3RlbmVyID0+IGV2TGlzdGVuZXIucmVtb3ZlKCkpKTtcbn1cblxuZXhwb3J0IHR5cGUgTXZjRXZlbnRUeXBlID0gJ2luc2VydF9hdCcgfCAncmVtb3ZlX2F0JyB8ICdzZXRfYXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1WQ0V2ZW50PFQ+IHtcbiAgbmV3QXJyOiBUW107XG4gIGV2ZW50TmFtZTogTXZjRXZlbnRUeXBlO1xuICBpbmRleDogbnVtYmVyO1xuICBwcmV2aW91cz86IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNdmNBcnJheU1vY2s8VD4gaW1wbGVtZW50cyBnb29nbGUubWFwcy5NVkNBcnJheTxUPiB7XG4gIHByaXZhdGUgdmFsczogVFtdID0gW107XG4gIHByaXZhdGUgbGlzdGVuZXJzOiB7XG4gICAgJ3JlbW92ZV9hdCc6ICgoaTogbnVtYmVyLCByOiBUKSA9PiB2b2lkKVtdO1xuICAgICdpbnNlcnRfYXQnOiAoKGk6IG51bWJlcikgPT4gdm9pZClbXTtcbiAgICAnc2V0X2F0JzogKChpOiBudW1iZXIsIHZhbDogVCkgPT4gdm9pZClbXTtcbiAgfSA9IHtcbiAgICByZW1vdmVfYXQ6IFtdLFxuICAgIGluc2VydF9hdDogW10sXG4gICAgc2V0X2F0OiBbXSxcbiAgfTtcbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMudmFscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0KGkpO1xuICAgIH1cbiAgfVxuICBnZXRBcnJheSgpOiBUW10ge1xuICAgIHJldHVybiBbLi4udGhpcy52YWxzXTtcbiAgfVxuICBnZXRBdChpOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy52YWxzW2ldO1xuICB9XG4gIGdldExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZhbHMubGVuZ3RoO1xuICB9XG4gIGluc2VydEF0KGk6IG51bWJlciwgZWxlbTogVCk6IHZvaWQge1xuICAgIHRoaXMudmFscy5zcGxpY2UoaSwgMCwgZWxlbSk7XG4gICAgdGhpcy5saXN0ZW5lcnMuaW5zZXJ0X2F0LmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoaSkpO1xuICB9XG4gIHBvcCgpOiBUIHtcbiAgICBjb25zdCBkZWxldGVkID0gdGhpcy52YWxzLnBvcCgpO1xuICAgIHRoaXMubGlzdGVuZXJzLnJlbW92ZV9hdC5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKHRoaXMudmFscy5sZW5ndGgsIGRlbGV0ZWQpKTtcbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuICBwdXNoKGVsZW06IFQpOiBudW1iZXIge1xuICAgIHRoaXMudmFscy5wdXNoKGVsZW0pO1xuICAgIHRoaXMubGlzdGVuZXJzLmluc2VydF9hdC5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKHRoaXMudmFscy5sZW5ndGggLSAxKSk7XG4gICAgcmV0dXJuIHRoaXMudmFscy5sZW5ndGg7XG4gIH1cbiAgcmVtb3ZlQXQoaTogbnVtYmVyKTogVCB7XG4gICAgY29uc3QgZGVsZXRlZCA9IHRoaXMudmFscy5zcGxpY2UoaSwgMSlbMF07XG4gICAgdGhpcy5saXN0ZW5lcnMucmVtb3ZlX2F0LmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoaSwgZGVsZXRlZCkpO1xuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG4gIHNldEF0KGk6IG51bWJlciwgZWxlbTogVCk6IHZvaWQge1xuICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLnZhbHNbaV07XG4gICAgdGhpcy52YWxzW2ldID0gZWxlbTtcbiAgICB0aGlzLmxpc3RlbmVycy5zZXRfYXQuZm9yRWFjaChsaXN0ZW5lciA9PiBsaXN0ZW5lcihpLCBkZWxldGVkKSk7XG4gIH1cbiAgZm9yRWFjaChjYWxsYmFjazogKGVsZW06IFQsIGk6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudmFscy5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuICBhZGRMaXN0ZW5lcihldmVudE5hbWU6ICdyZW1vdmVfYXQnIHwgJ2luc2VydF9hdCcgfCAnc2V0X2F0JywgaGFuZGxlcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogZ29vZ2xlLm1hcHMuTWFwc0V2ZW50TGlzdGVuZXIge1xuICAgIGNvbnN0IGxpc3RlbmVyQXJyID0gdGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXTtcbiAgICBsaXN0ZW5lckFyci5wdXNoKGhhbmRsZXIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogKCkgPT4ge1xuICAgICAgICAgICAgbGlzdGVuZXJBcnIuc3BsaWNlKGxpc3RlbmVyQXJyLmluZGV4T2YoaGFuZGxlciksIDEpO1xuICAgICAgICB9LFxuICAgIH07XG4gIH1cblxuICBiaW5kVG8oKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG4gIGNoYW5nZWQoKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG4gIGdldCgpOiBuZXZlciB7IHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7IH1cbiAgbm90aWZ5KCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxuICBzZXQoKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG4gIHNldFZhbHVlcygpOiBuZXZlciB7IHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7IH1cbiAgdW5iaW5kKCk6IG5ldmVyIHsgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTsgfVxuICB1bmJpbmRBbGwoKTogbmV2ZXIgeyB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOyB9XG59XG4iXX0=