vscroll
Version:
Virtual scroll engine
48 lines • 1.74 kB
JavaScript
import { __extends } from "tslib";
import { AdapterContext } from './adapter/context';
import { reactiveConfigStorage, AdapterPropType, getDefaultAdapterProps } from './adapter/props';
import { wantedStorage } from './adapter/wanted';
var getDefaultAdapterConfig = function () {
var reactive = getDefaultAdapterProps()
.filter(function (_a) {
var type = _a.type;
return type === AdapterPropType.Reactive;
})
.reduce(function (acc, _a) {
var name = _a.name, value = _a.value;
acc[name] = {
source: value,
emit: function (source, val) { return source.set(val); }
};
return acc;
}, {});
return { mock: false, reactive: reactive };
};
var DatasourceGeneric = /** @class */ (function () {
function DatasourceGeneric(datasource, config) {
this.get = datasource.get;
this.settings = datasource.settings;
this.devSettings = datasource.devSettings;
var adapterContext = new AdapterContext(config || { mock: false });
this.adapter = adapterContext;
}
// todo: should it be published?
DatasourceGeneric.prototype.dispose = function () {
reactiveConfigStorage.delete(this.adapter.id);
wantedStorage.delete(this.adapter.id);
};
return DatasourceGeneric;
}());
export { DatasourceGeneric };
export var makeDatasource = function (getAdapterConfig) {
return /** @class */ (function (_super) {
__extends(class_1, _super);
function class_1(datasource) {
var config = typeof getAdapterConfig === 'function' ? getAdapterConfig() : getDefaultAdapterConfig();
return _super.call(this, datasource, config) || this;
}
return class_1;
}(DatasourceGeneric));
};
export var Datasource = makeDatasource();
//# sourceMappingURL=datasource.js.map