@zedux/atoms
Version:
A Molecular State Engine for React
29 lines (28 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IonTemplate = void 0;
const ion_1 = require("../../factories/ion");
const injectAtomGetters_1 = require("../../injectors/injectAtomGetters");
const AtomInstance_1 = require("../instances/AtomInstance");
const AtomTemplateBase_1 = require("./AtomTemplateBase");
class IonTemplate extends AtomTemplateBase_1.AtomTemplateBase {
constructor(key, stateFactory, _config) {
super(key, (...params) => stateFactory((0, injectAtomGetters_1.injectAtomGetters)(), ...params), _config);
this._get = stateFactory;
}
_createInstance(ecosystem, id, params) {
return new AtomInstance_1.AtomInstance(ecosystem, this, id, params);
}
getInstanceId(ecosystem, params) {
const base = this.key;
if (!(params === null || params === void 0 ? void 0 : params.length))
return base;
return `${base}-${ecosystem._idGenerator.hashParams(params, ecosystem.complexParams)}`;
}
override(newGet) {
const newIon = (0, ion_1.ion)(this.key, newGet || this._get, this._config);
newIon._isOverride = true;
return newIon;
}
}
exports.IonTemplate = IonTemplate;