@ima/core
Version:
IMA.js framework for isomorphic javascript application
83 lines (82 loc) • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "PageStateManagerDecorator", {
enumerable: true,
get: function() {
return PageStateManagerDecorator;
}
});
const _PageStateManager = require("./PageStateManager");
const _GenericError = require("../../error/GenericError");
class PageStateManagerDecorator extends _PageStateManager.PageStateManager {
/**
* The current page state manager.
*/ _pageStateManager;
/**
* Array of access keys for state.
*/ _allowedStateKeys;
/**
* Initializes the page state manager decorator.
*
* @param {PageStateManager} pageStateManager
* @param {string[]} allowedStateKeys
*/ constructor(pageStateManager, allowedStateKeys){
super();
/**
* The current page state manager.
*/ this._pageStateManager = pageStateManager;
this._allowedStateKeys = allowedStateKeys;
}
/**
* @inheritDoc
*/ clear() {
this._pageStateManager.clear();
}
/**
* @inheritDoc
*/ setState(statePatch) {
if ($Debug) {
const patchKeys = Object.keys(statePatch);
const deniedKeys = patchKeys.filter((patchKey)=>{
return this._allowedStateKeys.indexOf(patchKey) === -1;
});
if (deniedKeys.length > 0) {
throw new _GenericError.GenericError(`Extension can not set state for keys ` + `${deniedKeys.join()}. Check your extension or add keys ` + `${deniedKeys.join()} to getAllowedStateKeys.`);
}
}
this._pageStateManager.setState(statePatch);
}
/**
* @inheritDoc
*/ getState() {
return this._pageStateManager.getState();
}
/**
* @inheritDoc
*/ getAllStates() {
return this._pageStateManager.getAllStates();
}
/**
* @inheritDoc
*/ getTransactionStatePatches() {
return this._pageStateManager.getTransactionStatePatches();
}
/**
* @inheritDoc
*/ beginTransaction() {
return this._pageStateManager.beginTransaction();
}
/**
* @inheritDoc
*/ commitTransaction() {
return this._pageStateManager.commitTransaction();
}
/**
* @inheritDoc
*/ cancelTransaction() {
return this._pageStateManager.cancelTransaction();
}
}
//# sourceMappingURL=PageStateManagerDecorator.js.map
;