1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.setStickyStyle = exports.fetchDataByPath = exports.statics = undefined;
|
5 |
|
6 | var _extends2 = require('babel-runtime/helpers/extends');
|
7 |
|
8 | var _extends3 = _interopRequireDefault(_extends2);
|
9 |
|
10 | var _typeof2 = require('babel-runtime/helpers/typeof');
|
11 |
|
12 | var _typeof3 = _interopRequireDefault(_typeof2);
|
13 |
|
14 | var _classnames3 = require('classnames');
|
15 |
|
16 | var _classnames4 = _interopRequireDefault(_classnames3);
|
17 |
|
18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19 |
|
20 | var blackList = ['defaultProps', 'propTypes', 'contextTypes', 'childContextTypes', 'displayName', 'getDerivedStateFromProps'];
|
21 |
|
22 | var statics = exports.statics = function statics(Target, Component) {
|
23 | Object.keys(Component).forEach(function (property) {
|
24 | if (blackList.indexOf(property) === -1) {
|
25 | Target[property] = Component[property];
|
26 | }
|
27 | });
|
28 | };
|
29 |
|
30 | var fetchDataByPath = exports.fetchDataByPath = function fetchDataByPath(object, path) {
|
31 | if (!object || !path) {
|
32 | return false;
|
33 | }
|
34 | path = path.toString();
|
35 | var field = path.split('.');
|
36 | var val = void 0,
|
37 | key = void 0;
|
38 | if (field.length) {
|
39 | key = field[0];
|
40 |
|
41 | if (key.indexOf('[') >= 0) {
|
42 | key = key.match(/(.*)\[(.*)\]/);
|
43 | if (key && (0, _typeof3.default)(key[1]) === 'object' && (0, _typeof3.default)(object[key[1]]) === 'object') {
|
44 | val = object[key[1]][key[2]];
|
45 | }
|
46 | } else {
|
47 | val = object[field[0]];
|
48 | }
|
49 | if (val) {
|
50 | for (var colIndex = 1; colIndex < field.length; colIndex++) {
|
51 | val = val[field[colIndex]];
|
52 | if (typeof val === 'undefined') {
|
53 | break;
|
54 | }
|
55 | }
|
56 | }
|
57 | }
|
58 | return val;
|
59 | };
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 | var setStickyStyle = exports.setStickyStyle = function setStickyStyle(lockChildren, flatenChildren, dir) {
|
66 | var offsetArr = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
67 | var prefix = arguments[4];
|
68 |
|
69 | var len = flatenChildren.length;
|
70 |
|
71 | flatenChildren.forEach(function (col, index) {
|
72 | var _classnames;
|
73 |
|
74 | var isLeftLast = dir === 'left' && index === len - 1;
|
75 | var isRightFirst = dir === 'right' && index === 0;
|
76 | var style = {
|
77 | position: 'sticky'
|
78 | };
|
79 | var offset = offsetArr[index];
|
80 |
|
81 | if (offset > -1) {
|
82 | style[dir] = offset;
|
83 | }
|
84 |
|
85 | col.className = (0, _classnames4.default)(col.className, (_classnames = {}, _classnames[prefix + 'table-fix-' + dir] = true, _classnames[prefix + 'table-fix-left-last'] = isLeftLast, _classnames[prefix + 'table-fix-right-first'] = isRightFirst, _classnames));
|
86 | col.style = (0, _extends3.default)({}, col.style, style);
|
87 | col.cellStyle = style;
|
88 | });
|
89 |
|
90 | var setOffset = function setOffset(col, index, dir, isBorder) {
|
91 | var _classnames2;
|
92 |
|
93 | var style = {
|
94 | position: 'sticky'
|
95 | };
|
96 | var offset = offsetArr[index];
|
97 |
|
98 | if (offset > -1) {
|
99 | style[dir] = offset;
|
100 | }
|
101 |
|
102 | col.className = (0, _classnames4.default)(col.className, (_classnames2 = {}, _classnames2[prefix + 'table-fix-' + dir] = true, _classnames2[prefix + 'table-fix-left-last'] = dir === 'left' && isBorder, _classnames2[prefix + 'table-fix-right-first'] = dir === 'right' && isBorder, _classnames2));
|
103 | col.style = (0, _extends3.default)({}, col.style, style);
|
104 | col.cellStyle = style;
|
105 | };
|
106 |
|
107 |
|
108 | var getLeafNodes = function getLeafNodes(node) {
|
109 | var nodesLen = 0;
|
110 | var arrLen = Array.isArray(node && node.children) && node.children.length || 0;
|
111 | if (arrLen > 0) {
|
112 | nodesLen = node.children.reduce(function (ret, item, idx) {
|
113 | return ret + getLeafNodes(item.children);
|
114 | }, 0);
|
115 | } else {
|
116 | nodesLen = 1;
|
117 | }
|
118 | return nodesLen;
|
119 | };
|
120 |
|
121 | var getPreNodes = function getPreNodes(arr, idx) {
|
122 | return arr.reduce(function (ret, item, i) {
|
123 | if (i < idx) {
|
124 | return ret + getLeafNodes(item);
|
125 | }
|
126 | return ret;
|
127 | }, 0);
|
128 | };
|
129 |
|
130 |
|
131 |
|
132 | var loop = function loop(arr, i) {
|
133 | dir === 'right' && arr.reverse();
|
134 | arr.forEach(function (child, j) {
|
135 | var p = dir === 'right' ? i - getPreNodes(arr, j) : i + getPreNodes(arr, j);
|
136 | if (child.children) {
|
137 |
|
138 | loop(child.children, p);
|
139 |
|
140 |
|
141 | setOffset(child, p, dir, j === arr.length - 1);
|
142 | }
|
143 | });
|
144 | dir === 'right' && arr.reverse();
|
145 | };
|
146 |
|
147 | loop(lockChildren, dir === 'left' ? 0 : len - 1);
|
148 | }; |
\ | No newline at end of file |