@ima/core
Version:
IMA.js framework for isomorphic javascript application
150 lines (149 loc) • 3.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "AbstractExtension", {
enumerable: true,
get: function() {
return AbstractExtension;
}
});
const _Extension = require("./Extension");
const _GenericError = require("../error/GenericError");
class AbstractExtension extends _Extension.Extension {
static $name;
static $dependencies;
/**
* State manager.
*/ _pageStateManager;
/**
* Flag indicating whether the PageStateManager should be used instead
* of partial state.
*/ _usingStateManager = false;
_partialStateSymbol = Symbol('partialState');
/**
* The HTTP response code to send to the client.
*/ status = 200;
/**
* The route parameters extracted from the current route.
*/ params = {};
/**
* @inheritDoc
*/ init() {
return;
}
/**
* @inheritDoc
*/ destroy() {
return;
}
/**
* @inheritDoc
*/ activate() {
return;
}
/**
* @inheritDoc
*/ deactivate() {
return;
}
/**
* @inheritDoc
*/ load() {
throw new _GenericError.GenericError('The ima.core.extension.AbstractExtension.load method is abstract ' + 'and must be overridden');
}
/**
* @inheritDoc
*/ update(prevParams = {}) {
return {};
}
/**
* @inheritDoc
*/ setState(statePatch) {
if (this._pageStateManager) {
this._pageStateManager.setState(statePatch);
}
}
/**
* @inheritDoc
*/ getState() {
if (this._usingStateManager && this._pageStateManager) {
return this._pageStateManager.getState();
} else {
return this.getPartialState();
}
}
/**
* @inheritDoc
*/ beginStateTransaction() {
if (this._pageStateManager) {
this._pageStateManager.beginTransaction();
}
}
/**
* @inheritDoc
*/ commitStateTransaction() {
if (this._pageStateManager) {
this._pageStateManager.commitTransaction();
}
}
/**
* @inheritDoc
*/ cancelStateTransaction() {
if (this._pageStateManager) {
this._pageStateManager.cancelTransaction();
}
}
/**
* @inheritDoc
*/ setPartialState(partialStatePatch) {
const newPartialState = Object.assign({}, this[this._partialStateSymbol], partialStatePatch);
this[this._partialStateSymbol] = newPartialState;
}
/**
* @inheritDoc
*/ getPartialState() {
return this[this._partialStateSymbol] || {};
}
/**
* @inheritDoc
*/ clearPartialState() {
this[this._partialStateSymbol] = {};
}
/**
* @inheritDoc
*/ setRouteParams(params = {}) {
this.params = params;
}
/**
* @inheritDoc
*/ getRouteParams() {
return this.params;
}
/**
* @inheritDoc
*/ setPageStateManager(pageStateManager) {
this._pageStateManager = pageStateManager;
}
/**
* @inheritDoc
*/ switchToStateManager() {
this._usingStateManager = true;
}
/**
* @inheritDoc
*/ switchToPartialState() {
this._usingStateManager = false;
}
/**
* @inheritDoc
*/ getHttpStatus() {
return this.status;
}
/**
* Returns array of allowed state keys for extension.
*/ getAllowedStateKeys() {
return [];
}
}
//# sourceMappingURL=AbstractExtension.js.map
;