UNPKG

apollo-form

Version:
48 lines (47 loc) 1.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const isEqual_1 = __importDefault(require("lodash/isEqual")); const BaseManager_1 = __importDefault(require("../BaseManager")); class ObservableManager extends BaseManager_1.default { constructor(name, store) { super(); this.name = name; this.store = store; } set(state) { this.store.set(Object.assign(Object.assign({}, this.store.get()), { [this.name]: state })); } get() { let data = this.store.get(); return (data || {})[this.name]; } watch(selector, handler, defaultState) { const unWatch = this.store.watch((next, prev) => { const nextPart = next[this.name]; const prevPart = prev[this.name]; if (!nextPart) { return; } const nextSel = (selector ? selector(nextPart) : nextPart); const prevSel = prevPart && (selector ? selector(prevPart) : prevPart); if (!isEqual_1.default(nextSel, prevSel)) { handler(nextSel, (prevPart || defaultState)); } }); return unWatch; } remove() { const state = this.store.get(); // @ts-ignore if (state[this.name]) { // @ts-ignore delete state[this.name]; } // @ts-ignore this.set(state); } } exports.default = ObservableManager;