Blame view

node_modules/element-ui/packages/table/src/store/helper.js 1.03 KB
7820380e   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  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;
  };