import Store from './index';
|
import debounce from 'throttle-debounce/debounce';
|
|
export function createStore(table, initialState = {}) {
|
if (!table) {
|
throw new Error('Table is required.');
|
}
|
|
const store = new Store();
|
store.table = table;
|
// fix https://github.com/ElemeFE/element/issues/14075
|
// related pr https://github.com/ElemeFE/element/pull/14146
|
store.toggleAllSelection = debounce(10, store._toggleAllSelection);
|
Object.keys(initialState).forEach(key => {
|
store.states[key] = initialState[key];
|
});
|
return store;
|
}
|
|
export function mapStates(mapper) {
|
const res = {};
|
Object.keys(mapper).forEach(key => {
|
const value = mapper[key];
|
let fn;
|
if (typeof value === 'string') {
|
fn = function() {
|
return this.store.states[value];
|
};
|
} else if (typeof value === 'function') {
|
fn = function() {
|
return value.call(this, this.store.states);
|
};
|
} else {
|
console.error('invalid value type');
|
}
|
if (fn) {
|
res[key] = fn;
|
}
|
});
|
return res;
|
};
|