@sis-cc/dotstatsuite-visions 7.18.6 → 7.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _HierarchicalFilter = require('./HierarchicalFilter');
6
+
7
+ Object.defineProperty(exports, 'default', {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _interopRequireDefault(_HierarchicalFilter).default;
11
+ }
12
+ });
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ module.exports = exports['default'];
@@ -94,7 +94,9 @@ var Item = function Item(_ref) {
94
94
  labelRenderer = _ref.labelRenderer,
95
95
  HTMLRenderer = _ref.HTMLRenderer,
96
96
  hierarchicalId = _ref.hierarchicalId,
97
- labels = _ref.labels;
97
+ labels = _ref.labels,
98
+ _ref$depth = _ref.depth,
99
+ depth = _ref$depth === undefined ? 0 : _ref$depth;
98
100
 
99
101
  var _React$useState = _react2.default.useState(false),
100
102
  isTooltipShown = _React$useState[0],
@@ -128,6 +130,7 @@ var Item = function Item(_ref) {
128
130
  secondaryTypographyProps: { color: 'inherit' },
129
131
  classes: { root: classes.listItem },
130
132
  className: (0, _classnames2.default)((_cx2 = {}, _cx2[classes.accessibilityItemHover] = accessibility, _cx2[classes.listItemSelected] = R.and(isSelected, R.not(isDisabled)), _cx2[classes.listItemHover] = R.not(isDisabled), _cx2)),
133
+ style: { marginLeft: depth * 20 + 'px' },
131
134
  title: isDisabled ? R.propOr('', 'disableItemLabel')(labels) + ' ' + label : label,
132
135
  primary: _react2.default.createElement(
133
136
  'div',
@@ -272,7 +275,8 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
272
275
  labelRenderer: _propTypes2.default.func,
273
276
  HTMLRenderer: _propTypes2.default.func,
274
277
  hierarchicalId: _propTypes2.default.string,
275
- labels: _propTypes2.default.object
278
+ labels: _propTypes2.default.object,
279
+ depth: _propTypes2.default.number
276
280
  } : {};
277
281
 
278
282
  exports.default = Item;
@@ -0,0 +1,223 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
6
+
7
+ var _react = require('react');
8
+
9
+ var _react2 = _interopRequireDefault(_react);
10
+
11
+ var _ramda = require('ramda');
12
+
13
+ var R = _interopRequireWildcard(_ramda);
14
+
15
+ var _propTypes = require('prop-types');
16
+
17
+ var _propTypes2 = _interopRequireDefault(_propTypes);
18
+
19
+ var _ListItem = require('@material-ui/core/ListItem');
20
+
21
+ var _ListItem2 = _interopRequireDefault(_ListItem);
22
+
23
+ var _Typography = require('@material-ui/core/Typography');
24
+
25
+ var _Typography2 = _interopRequireDefault(_Typography);
26
+
27
+ var _ListItemText = require('@material-ui/core/ListItemText');
28
+
29
+ var _ListItemText2 = _interopRequireDefault(_ListItemText);
30
+
31
+ var _IconButton = require('@material-ui/core/IconButton');
32
+
33
+ var _IconButton2 = _interopRequireDefault(_IconButton);
34
+
35
+ var _SvgIcon = require('@material-ui/core/SvgIcon');
36
+
37
+ var _SvgIcon2 = _interopRequireDefault(_SvgIcon);
38
+
39
+ var _classnames = require('classnames');
40
+
41
+ var _classnames2 = _interopRequireDefault(_classnames);
42
+
43
+ var _ = require('../');
44
+
45
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
46
+
47
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48
+
49
+ var checkBoxPath = 'M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z';
50
+ var checkPath = 'M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z';
51
+
52
+ var Item = function Item(_ref) {
53
+ var _cx, _extends2, _cx2, _cx3, _cx4, _cx5, _cx6;
54
+
55
+ var classes = _ref.classes,
56
+ id = _ref.id,
57
+ label = _ref.label,
58
+ _ref$description = _ref.description,
59
+ description = _ref$description === undefined ? '' : _ref$description,
60
+ isSelected = _ref.isSelected,
61
+ isDisabled = _ref.isDisabled,
62
+ changeList = _ref.changeList,
63
+ ariaLabel = _ref.ariaLabel,
64
+ NavigateIcon = _ref.NavigateIcon,
65
+ hasChild = _ref.hasChild,
66
+ hasChildrenOnLevel = _ref.hasChildrenOnLevel,
67
+ count = _ref.count,
68
+ svgPath = _ref.svgPath,
69
+ testId = _ref.testId,
70
+ style = _ref.style,
71
+ isRtl = _ref.isRtl,
72
+ accessibility = _ref.accessibility,
73
+ index = _ref.index,
74
+ HTMLRenderer = _ref.HTMLRenderer,
75
+ hierarchicalId = _ref.hierarchicalId,
76
+ labels = _ref.labels,
77
+ _ref$depth = _ref.depth,
78
+ depth = _ref$depth === undefined ? 0 : _ref$depth,
79
+ eventsCallbacks = _ref.eventsCallbacks;
80
+
81
+ var _React$useState = _react2.default.useState(false),
82
+ isTooltipShown = _React$useState[0],
83
+ setIsTooltipShown = _React$useState[1];
84
+
85
+ var callbacks = eventsCallbacks(hierarchicalId || id, index);
86
+ var padding = depth * 30 + (depth > 0 && !hasChildrenOnLevel ? 30 : 0) + (!hasChild && hasChildrenOnLevel ? 30 : 0);
87
+ return _react2.default.createElement(
88
+ _ListItem2.default,
89
+ {
90
+ disableGutters: true,
91
+ classes: { disabled: classes.disabled },
92
+ className: (0, _classnames2.default)(classes.listItemContainer, (_cx = {}, _cx[classes.disableSecondaryAction] = R.not(hasChild), _cx)),
93
+ disabled: isDisabled,
94
+ tabIndex: -1,
95
+ style: _extends({}, style, (_extends2 = {
96
+ flexDirection: isRtl ? 'row-reverse' : 'row'
97
+ }, _extends2['' + (isRtl ? 'paddingRight' : 'paddingLeft')] = padding + 'px', _extends2))
98
+ },
99
+ R.and(NavigateIcon, hasChild) && _react2.default.createElement(
100
+ _IconButton2.default,
101
+ {
102
+ disableRipple: true,
103
+ disableFocusRipple: true,
104
+ className: classes.arrow,
105
+ 'aria-label': ariaLabel,
106
+ tabIndex: -1,
107
+ size: 'small',
108
+ color: 'inherit',
109
+ onClick: function onClick() {
110
+ return changeList(hierarchicalId || id);
111
+ }
112
+ },
113
+ _react2.default.createElement(NavigateIcon, null)
114
+ ),
115
+ _react2.default.createElement(_ListItemText2.default, _extends({
116
+ tabIndex: 0,
117
+ 'aria-label': isDisabled ? R.propOr('', 'disableItemLabel')(labels) + ' ' + label : label,
118
+ 'aria-pressed': isSelected,
119
+ 'aria-disabled': isDisabled,
120
+ primaryTypographyProps: { noWrap: true, color: 'inherit' },
121
+ secondaryTypographyProps: { color: 'inherit' },
122
+ classes: { root: classes.listItem },
123
+ className: (0, _classnames2.default)((_cx2 = {}, _cx2[classes.accessibilityItemHover] = accessibility, _cx2[classes.listItemSelected] = R.and(isSelected, R.not(isDisabled)), _cx2[classes.listItemHover] = R.not(isDisabled), _cx2)),
124
+ onMouseDown: isDisabled || isTooltipShown ? null : callbacks.onMouseDown,
125
+ onMouseUp: isDisabled || isTooltipShown ? null : callbacks.onMouseUp,
126
+ onMouseEnter: isDisabled || isTooltipShown ? null : callbacks.onMouseEnter
127
+ }, R.pick(['onKeyPress'], callbacks), {
128
+ title: isDisabled ? R.propOr('', 'disableItemLabel')(labels) + ' ' + label : label,
129
+ primary: _react2.default.createElement(
130
+ 'div',
131
+ {
132
+ className: (0, _classnames2.default)(classes.labelContainer, (_cx3 = {}, _cx3[classes.rtlLabelContainer] = isRtl, _cx3))
133
+ },
134
+ _react2.default.createElement(
135
+ _SvgIcon2.default,
136
+ {
137
+ color: 'primary',
138
+ className: (0, _classnames2.default)(classes.labelIcon, (_cx4 = {}, _cx4[classes.disabledLabel] = isDisabled, _cx4))
139
+ },
140
+ _react2.default.createElement('path', { d: R.and(isSelected, R.not(isDisabled)) ? checkPath : checkBoxPath })
141
+ ),
142
+ svgPath && _react2.default.createElement(
143
+ _SvgIcon2.default,
144
+ {
145
+ color: 'primary',
146
+ className: (0, _classnames2.default)(classes.labelIcon, (_cx5 = {}, _cx5[classes.disabledLabel] = isDisabled, _cx5))
147
+ },
148
+ _react2.default.createElement('path', { d: svgPath })
149
+ ),
150
+ _react2.default.createElement(
151
+ _.Tooltip,
152
+ {
153
+ title: R.or(R.isNil(HTMLRenderer), R.isEmpty(description)) ? description : _react2.default.createElement(HTMLRenderer, { html: description, onClick: function onClick(e) {
154
+ return e.stopPropagation();
155
+ } }),
156
+ enterDelay: 400,
157
+ tabIndex: 0,
158
+ 'aria-label': description,
159
+ 'aria-hidden': false,
160
+ placement: 'top',
161
+ interactive: Boolean(HTMLRenderer),
162
+ onOpen: function onOpen() {
163
+ return setIsTooltipShown(true);
164
+ },
165
+ onClose: function onClose() {
166
+ return setIsTooltipShown(false);
167
+ }
168
+ },
169
+ _react2.default.createElement(
170
+ _Typography2.default,
171
+ {
172
+ 'data-testid': testId + '_value_' + id,
173
+ color: 'inherit',
174
+ variant: 'body2',
175
+ className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isEmpty(description), _cx6))
176
+ },
177
+ label
178
+ )
179
+ ),
180
+ R.not(R.isNil(count)) && _react2.default.createElement(
181
+ _Typography2.default,
182
+ { variant: 'body2', className: classes.count },
183
+ '(',
184
+ count,
185
+ ')'
186
+ )
187
+ )
188
+ }))
189
+ );
190
+ };
191
+
192
+ Item.propTypes = process.env.NODE_ENV !== "production" ? {
193
+ classes: _propTypes2.default.object,
194
+ id: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
195
+ label: _propTypes2.default.string,
196
+ description: _propTypes2.default.string,
197
+ parentId: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
198
+ ariaLabel: _propTypes2.default.string,
199
+ NavigateIcon: _propTypes2.default.object,
200
+ isSelected: _propTypes2.default.bool,
201
+ isDisabled: _propTypes2.default.bool,
202
+ hasChild: _propTypes2.default.bool,
203
+ hasChildrenOnLevel: _propTypes2.default.bool,
204
+ isSection: _propTypes2.default.bool,
205
+ changeList: _propTypes2.default.func,
206
+ changeListDescription: _propTypes2.default.string,
207
+ count: _propTypes2.default.number,
208
+ svgPath: _propTypes2.default.string,
209
+ style: _propTypes2.default.object,
210
+ isRtl: _propTypes2.default.bool,
211
+ testId: _propTypes2.default.string,
212
+ accessibility: _propTypes2.default.bool,
213
+ index: _propTypes2.default.number,
214
+ labelRenderer: _propTypes2.default.func,
215
+ HTMLRenderer: _propTypes2.default.func,
216
+ hierarchicalId: _propTypes2.default.string,
217
+ labels: _propTypes2.default.object,
218
+ depth: _propTypes2.default.number,
219
+ eventsCallbacks: _propTypes2.default.func
220
+ } : {};
221
+
222
+ exports.default = Item;
223
+ module.exports = exports['default'];
@@ -0,0 +1,382 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+ exports.getDepth = exports.getHasChildrenOnLevel = exports.getDisplayedIds = exports.getHierarchicalId = undefined;
5
+
6
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
7
+
8
+ var _react = require('react');
9
+
10
+ var _react2 = _interopRequireDefault(_react);
11
+
12
+ var _propTypes = require('prop-types');
13
+
14
+ var _propTypes2 = _interopRequireDefault(_propTypes);
15
+
16
+ var _ramda = require('ramda');
17
+
18
+ var R = _interopRequireWildcard(_ramda);
19
+
20
+ var _AutoSizer = require('react-virtualized/dist/commonjs/AutoSizer');
21
+
22
+ var _AutoSizer2 = _interopRequireDefault(_AutoSizer);
23
+
24
+ var _List = require('react-virtualized/dist/commonjs/List');
25
+
26
+ var _List2 = _interopRequireDefault(_List);
27
+
28
+ var _Button = require('@material-ui/core/Button');
29
+
30
+ var _Button2 = _interopRequireDefault(_Button);
31
+
32
+ var _ExpandMore = require('@material-ui/icons/ExpandMore');
33
+
34
+ var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
35
+
36
+ var _ExpandLess = require('@material-ui/icons/ExpandLess');
37
+
38
+ var _ExpandLess2 = _interopRequireDefault(_ExpandLess);
39
+
40
+ var _List3 = require('@material-ui/core/List');
41
+
42
+ var _List4 = _interopRequireDefault(_List3);
43
+
44
+ var _Item = require('./Item');
45
+
46
+ var _Item2 = _interopRequireDefault(_Item);
47
+
48
+ var _core = require('@material-ui/core');
49
+
50
+ var _styles = require('../ScopeList/styles');
51
+
52
+ var _utils = require('../utils');
53
+
54
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
55
+
56
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
57
+
58
+ var getSingleItemScope = function getSingleItemScope(item) {
59
+ return [item];
60
+ };
61
+
62
+ var getHierarchicalId = exports.getHierarchicalId = function getHierarchicalId(item) {
63
+ return R.prop('hierarchicalId', item) || R.prop('id', item);
64
+ };
65
+
66
+ var getDisplayedIds = exports.getDisplayedIds = function getDisplayedIds(items, grouped, expanded) {
67
+ return R.pipe(R.map(function (item) {
68
+ var hierarchicalId = getHierarchicalId(item);
69
+ if (R.has(hierarchicalId, grouped) && R.has(hierarchicalId, expanded)) {
70
+ var children = getDisplayedIds(R.prop(hierarchicalId, grouped), grouped, expanded);
71
+ return R.prepend(hierarchicalId, children);
72
+ }
73
+ return [hierarchicalId];
74
+ }), R.unnest)(items);
75
+ };
76
+
77
+ var getHasChildrenOnLevel = exports.getHasChildrenOnLevel = function getHasChildrenOnLevel(groupedItems) {
78
+ return function (item) {
79
+ if (R.has(getHierarchicalId(item), groupedItems)) {
80
+ return true;
81
+ }
82
+ return R.pipe(R.prop(R.propOr('#ROOT', 'parentId', item)), R.find(function (it) {
83
+ return R.has(getHierarchicalId(it), groupedItems);
84
+ }), R.complement(R.isNil))(groupedItems);
85
+ };
86
+ };
87
+
88
+ var getDepth = exports.getDepth = function getDepth(indexedItems) {
89
+ return function (item) {
90
+ if (R.isNil(item.parentId)) {
91
+ return 0;
92
+ }
93
+ var parent = R.prop(item.parentId, indexedItems);
94
+ return getDepth(indexedItems)(parent) + 1;
95
+ };
96
+ };
97
+
98
+ var VirtualizedTree = function VirtualizedTree(props) {
99
+ var accessibility = props.accessibility,
100
+ changeSelection = props.changeSelection,
101
+ disableAccessor = props.disableAccessor,
102
+ HTMLRenderer = props.HTMLRenderer,
103
+ items = props.items,
104
+ labelRenderer = props.labelRenderer,
105
+ labels = props.labels,
106
+ withExpandControl = props.withExpandControl,
107
+ _props$maxTreeHeight = props.maxTreeHeight,
108
+ maxTreeHeight = _props$maxTreeHeight === undefined ? 250 : _props$maxTreeHeight,
109
+ _props$getItemScope = props.getItemScope,
110
+ getItemScope = _props$getItemScope === undefined ? getSingleItemScope : _props$getItemScope;
111
+
112
+ var theme = (0, _core.useTheme)();
113
+
114
+ var _useState = (0, _react.useState)({}),
115
+ expandedIds = _useState[0],
116
+ setExpandedIds = _useState[1];
117
+
118
+ var _useState2 = (0, _react.useState)(undefined),
119
+ scrollTop = _useState2[0],
120
+ setScrollTop = _useState2[1];
121
+
122
+ var _useState3 = (0, _react.useState)([]),
123
+ shiftIndexes = _useState3[0],
124
+ setShiftIndexes = _useState3[1];
125
+
126
+ var _useState4 = (0, _react.useState)({}),
127
+ selectIds = _useState4[0],
128
+ setSelectIds = _useState4[1];
129
+
130
+ var _useState5 = (0, _react.useState)(false),
131
+ isMouseDown = _useState5[0],
132
+ setIsMouseDown = _useState5[1];
133
+
134
+ var _useMemo = (0, _react.useMemo)(function () {
135
+ var indexedItemsById = R.indexBy(getHierarchicalId, items);
136
+ var groupedItemsByParentId = R.groupBy(R.propOr('#ROOT', 'parentId'), items);
137
+ return { indexedItemsById: indexedItemsById, groupedItemsByParentId: groupedItemsByParentId };
138
+ }, [items]),
139
+ indexedItemsById = _useMemo.indexedItemsById,
140
+ groupedItemsByParentId = _useMemo.groupedItemsByParentId;
141
+
142
+ var list = (0, _react.useMemo)(function () {
143
+ return getDisplayedIds(R.propOr([], '#ROOT', groupedItemsByParentId), groupedItemsByParentId, expandedIds);
144
+ }, [items, expandedIds]);
145
+ var multiSelect = function multiSelect(id) {
146
+ var item = R.prop(id, indexedItemsById);
147
+ var ids = R.pipe(getItemScope, R.filter(function (v) {
148
+ return v.isSelected === item.isSelected;
149
+ }), R.map(getHierarchicalId))(item);
150
+ if (R.has(id, selectIds)) {
151
+ setSelectIds(R.omit(ids, selectIds));
152
+ } else {
153
+ setSelectIds(_extends({}, selectIds, R.indexBy(R.identity, ids)));
154
+ }
155
+ };
156
+ var shiftSelect = function shiftSelect(index) {
157
+ if (R.isEmpty(shiftIndexes)) {
158
+ var item = R.nth(index, list);
159
+ var ids = R.pipe(getItemScope, R.filter(function (v) {
160
+ return v.isSelected === item.isSelected;
161
+ }), R.map(getHierarchicalId), R.indexBy(R.identity))(item);
162
+ setShiftIndexes(R.append(index, shiftIndexes));
163
+ setSelectIds(ids);
164
+ } else if (R.length(shiftIndexes) === 1 && index === R.head(shiftIndexes)) {
165
+ setShiftIndexes([]);
166
+ setSelectIds({});
167
+ } else {
168
+ var indexes = [R.head(shiftIndexes), index];
169
+ var isSelected = void 0;
170
+ var _selectIds = R.pipe(R.slice(Math.min.apply(Math, indexes), Math.max.apply(Math, indexes) + 1), function (ids) {
171
+ return R.props(ids, indexedItemsById);
172
+ }, function (items) {
173
+ isSelected = R.pipe(R.head, R.prop('isSelected'))(items);
174
+ return items;
175
+ }, R.map(getItemScope), R.unnest, R.filter(function (v) {
176
+ return v.isSelected === isSelected;
177
+ }), R.map(getHierarchicalId), R.indexBy(R.identity))(list);
178
+ setShiftIndexes(indexes);
179
+ setSelectIds(_selectIds);
180
+ }
181
+ };
182
+ var apply = function apply() {
183
+ if (!R.isEmpty(selectIds)) {
184
+ var ids = R.values(selectIds);
185
+ var selection = R.pipe(R.props(ids), R.pluck('id'), R.uniq)(indexedItemsById);
186
+ changeSelection(selection);
187
+ setShiftIndexes([]);
188
+ setSelectIds({});
189
+ setIsMouseDown(false);
190
+ }
191
+ };
192
+ var eventsCallbacks = function eventsCallbacks(id, index) {
193
+ return {
194
+ onMouseUp: isMouseDown ? function () {
195
+ apply();
196
+ } : null,
197
+ onMouseDown: function onMouseDown(e) {
198
+ if (e.ctrlKey || e.shiftKey) {
199
+ return;
200
+ }
201
+ multiSelect(id);
202
+ setIsMouseDown(true);
203
+ },
204
+ onMouseEnter: isMouseDown ? function (e) {
205
+ if (e.ctrlKey || e.shiftKey) {
206
+ return;
207
+ }
208
+ multiSelect(id);
209
+ } : null,
210
+ onClick: function onClick(e) {
211
+ if (e.ctrlKey) {
212
+ multiSelect(id);
213
+ } else if (e.shiftKey) {
214
+ shiftSelect(index);
215
+ }
216
+ }
217
+ };
218
+ };
219
+ var onKeyUp = function onKeyUp(e) {
220
+ if (e.key === 'Shift' && !R.isEmpty(shiftIndexes)) {
221
+ apply();
222
+ } else if (e.key === 'Control' && !R.isEmpty(selectIds)) {
223
+ apply();
224
+ }
225
+ };
226
+ var isItemSelected = function isItemSelected(item, index) {
227
+ if (!R.isEmpty(shiftIndexes) && index >= Math.min.apply(Math, shiftIndexes) && index <= Math.max.apply(Math, shiftIndexes)) {
228
+ return !item.isSelected;
229
+ }
230
+ if (!R.isEmpty(selectIds) && R.has(getHierarchicalId(item), selectIds)) {
231
+ return !item.isSelected;
232
+ }
233
+ return !!item.isSelected;
234
+ };
235
+ var ref = (0, _react.useRef)();
236
+ var classes = (0, _styles.useStyles)();
237
+
238
+ (0, _react.useEffect)(function () {
239
+ var current = ref.current;
240
+ var handler = function handler(event) {
241
+ if (R.or(event.ctrlKey, event.shiftKey)) {
242
+ // ugly hack, to get div element created by react-virtuliase (get scroll height)
243
+ // ReactVirtualized__Grid ReactVirtualized__List made the scrollbar
244
+ var scrollEl = R.path(['children', 0, 'children', 0], current);
245
+ var isBottom = R.gte(R.add(R.prop('scrollTop')(scrollEl), R.prop('clientHeight')(scrollEl)), R.prop('scrollHeight')(scrollEl));
246
+ var nextpos = (scrollTop || scrollEl.scrollTop) + event.deltaY / 2;
247
+ if (R.or(event.deltaY < 0, event.deltaY > 0 && R.not(isBottom))) {
248
+ setScrollTop(nextpos < 0 ? 0 : nextpos);
249
+ }
250
+ event.preventDefault();
251
+ }
252
+ if (R.not(event.ctrlKey) && R.not(event.shiftKey)) {
253
+ setScrollTop(undefined); // should be undefined if the user want use the normal scroll
254
+ }
255
+ };
256
+ if (scrollTop === 0) {
257
+ setScrollTop(undefined);
258
+ }
259
+ if (R.isNil(current)) return;
260
+
261
+ current.addEventListener('wheel', handler, { passive: false });
262
+ return function () {
263
+ current.removeEventListener('wheel', handler, { passive: false });
264
+ };
265
+ }, [scrollTop]);
266
+ var maxHeight = R.pipe(R.length, R.multiply(_styles.height), R.ifElse(R.gt(maxTreeHeight), R.add(10), R.always(maxTreeHeight)))(list);
267
+
268
+ var expand = function expand(index) {
269
+ var parentId = R.nth(index, list);
270
+ setExpandedIds(R.assoc(parentId, parentId, expandedIds));
271
+ };
272
+
273
+ var collapse = function collapse(index) {
274
+ var parentId = R.nth(index, list);
275
+ setExpandedIds(R.dissoc(parentId, expandedIds));
276
+ };
277
+
278
+ var expandAll = function expandAll() {
279
+ setExpandedIds(indexedItemsById);
280
+ };
281
+
282
+ var collapseAll = function collapseAll() {
283
+ setExpandedIds({});
284
+ };
285
+
286
+ if (R.isEmpty(list)) {
287
+ return null;
288
+ }
289
+ var isRtl = (0, _utils.getIsRtl)(theme);
290
+
291
+ return _react2.default.createElement(
292
+ _react.Fragment,
293
+ null,
294
+ _react2.default.createElement(
295
+ _List4.default,
296
+ { disablePadding: true, style: { height: maxHeight + 2 }, onKeyUp: onKeyUp, ref: ref },
297
+ _react2.default.createElement(
298
+ _AutoSizer2.default,
299
+ null,
300
+ function (_ref) {
301
+ var height = _ref.height,
302
+ width = _ref.width;
303
+ return _react2.default.createElement(_List2.default, {
304
+ overscan: 10,
305
+ tabIndex: -1,
306
+ height: height + 2,
307
+ width: width,
308
+ scrollTop: scrollTop // control scroll position with ctrl or shift key
309
+ , rowCount: R.length(list),
310
+ rowHeight: R.add(1)(_styles.height) // 1 is space between elements
311
+ , rowRenderer: function rowRenderer(_ref2) {
312
+ var index = _ref2.index,
313
+ style = _ref2.style;
314
+
315
+ var itemId = R.nth(index, list);
316
+ var item = R.prop(itemId, indexedItemsById);
317
+ return _react2.default.createElement(_Item2.default, _extends({}, item, {
318
+ id: getHierarchicalId(item),
319
+ label: labelRenderer(item),
320
+ key: getHierarchicalId(item),
321
+ depth: getDepth(indexedItemsById)(item),
322
+ hasChild: R.has(itemId, groupedItemsByParentId),
323
+ hasChildrenOnLevel: getHasChildrenOnLevel(groupedItemsByParentId)(item),
324
+ changeList: R.has(itemId, expandedIds) ? function () {
325
+ return collapse(index);
326
+ } : function () {
327
+ return expand(index);
328
+ },
329
+ NavigateIcon: R.has(itemId, expandedIds) ? _ExpandLess2.default : _ExpandMore2.default,
330
+ isRtl: isRtl,
331
+ isDisabled: R.is(Function, disableAccessor) ? disableAccessor(item) : false,
332
+ eventsCallbacks: eventsCallbacks,
333
+ isSelected: isItemSelected(item, index),
334
+ HTMLRenderer: HTMLRenderer,
335
+ classes: classes,
336
+ labels: labels,
337
+ index: index,
338
+ style: style,
339
+ accessibility: accessibility,
340
+ ariaLabel: R.prop('navigateNext')(labels)
341
+ }));
342
+ }
343
+ });
344
+ }
345
+ )
346
+ ),
347
+ withExpandControl && _react2.default.createElement(
348
+ 'div',
349
+ null,
350
+ _react2.default.createElement(
351
+ _Button2.default,
352
+ { onClick: collapseAll, color: 'primary' },
353
+ R.prop('colapseAll', labels)
354
+ ),
355
+ _react2.default.createElement(
356
+ _Button2.default,
357
+ { onClick: expandAll, color: 'primary' },
358
+ R.prop('expandAll', labels)
359
+ )
360
+ )
361
+ );
362
+ };
363
+
364
+ VirtualizedTree.propTypes = process.env.NODE_ENV !== "production" ? {
365
+ accessibility: _propTypes2.default.bool,
366
+ changeSelection: _propTypes2.default.func,
367
+ disableAccessor: _propTypes2.default.func,
368
+ getItemScope: _propTypes2.default.func,
369
+ HTMLRenderer: _propTypes2.default.func,
370
+ isRtl: _propTypes2.default.bool,
371
+ items: _propTypes2.default.array,
372
+ labels: _propTypes2.default.shape({
373
+ disableItemLabel: _propTypes2.default.string,
374
+ colapseAll: _propTypes2.default.string,
375
+ expandAll: _propTypes2.default.string
376
+ }),
377
+ labelRenderer: _propTypes2.default.func,
378
+ withExpandControl: _propTypes2.default.bool,
379
+ maxTreeHeight: _propTypes2.default.number
380
+ } : {};
381
+
382
+ exports.default = VirtualizedTree;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _VirtualizedTree = require('./VirtualizedTree');
6
+
7
+ Object.defineProperty(exports, 'default', {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _interopRequireDefault(_VirtualizedTree).default;
11
+ }
12
+ });
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ module.exports = exports['default'];