@elliemae/ds-shuttle 2.2.0-alpha.4 → 3.0.0-next.2

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.
Files changed (148) hide show
  1. package/cjs/AnimationState.js +19 -46
  2. package/cjs/DSShuttle.js +219 -166
  3. package/cjs/SearchState.js +25 -44
  4. package/cjs/Shuttle.actions.js +98 -87
  5. package/cjs/ShuttleContainer.js +61 -56
  6. package/cjs/ShuttleImpl.js +206 -109
  7. package/cjs/ShuttleRenderer.js +135 -140
  8. package/cjs/ShuttleState.js +53 -57
  9. package/cjs/animation/animationConfig.js +56 -53
  10. package/cjs/classedComponents.js +69 -70
  11. package/cjs/components/LoadingIndicator.js +22 -49
  12. package/cjs/components/OverflowList.js +48 -50
  13. package/cjs/components/ShuttleBreadcrumb.js +40 -52
  14. package/cjs/components/ShuttleInfiniteScrollIndicator.js +37 -46
  15. package/cjs/components/ShuttleListItem/ActionButtons.js +51 -56
  16. package/cjs/components/ShuttleListItem/ShuttleListItem.js +80 -78
  17. package/cjs/components/ShuttleListItem/ShuttleSourceListItem.js +64 -78
  18. package/cjs/components/ShuttleListItem/ShuttleTargetListItem.js +56 -72
  19. package/cjs/components/ShuttleListPanel.js +26 -44
  20. package/cjs/components/ShuttleSearchBox.js +72 -61
  21. package/cjs/components/ShuttleSource.js +146 -150
  22. package/cjs/components/ShuttleTarget.js +100 -88
  23. package/cjs/components/VirtualizedItem.js +40 -45
  24. package/cjs/components/VirtualizedList.js +86 -81
  25. package/cjs/components/VirtualizedSortableList.js +40 -47
  26. package/cjs/helper.js +103 -69
  27. package/cjs/index.js +12 -38
  28. package/cjs/updateShuttleStateFromProps.js +69 -73
  29. package/cjs/utils.js +42 -40
  30. package/cjs/withProviders.js +27 -43
  31. package/esm/AnimationState.js +8 -12
  32. package/esm/DSShuttle.js +198 -126
  33. package/esm/SearchState.js +19 -15
  34. package/esm/Shuttle.actions.js +80 -63
  35. package/esm/ShuttleContainer.js +50 -34
  36. package/esm/ShuttleImpl.js +183 -78
  37. package/esm/ShuttleRenderer.js +128 -111
  38. package/esm/ShuttleState.js +53 -34
  39. package/esm/animation/animationConfig.js +52 -24
  40. package/esm/classedComponents.js +51 -43
  41. package/esm/components/LoadingIndicator.js +15 -20
  42. package/esm/components/OverflowList.js +41 -21
  43. package/esm/components/ShuttleBreadcrumb.js +33 -23
  44. package/esm/components/ShuttleInfiniteScrollIndicator.js +31 -18
  45. package/esm/components/ShuttleListItem/ActionButtons.js +39 -27
  46. package/esm/components/ShuttleListItem/ShuttleListItem.js +72 -50
  47. package/esm/components/ShuttleListItem/ShuttleSourceListItem.js +52 -45
  48. package/esm/components/ShuttleListItem/ShuttleTargetListItem.js +47 -42
  49. package/esm/components/ShuttleListPanel.js +19 -15
  50. package/esm/components/ShuttleSearchBox.js +66 -32
  51. package/esm/components/ShuttleSource.js +129 -125
  52. package/esm/components/ShuttleTarget.js +89 -68
  53. package/esm/components/VirtualizedItem.js +33 -15
  54. package/esm/components/VirtualizedList.js +75 -50
  55. package/esm/components/VirtualizedSortableList.js +32 -17
  56. package/esm/helper.js +67 -43
  57. package/esm/index.js +2 -9
  58. package/esm/updateShuttleStateFromProps.js +58 -39
  59. package/esm/utils.js +18 -12
  60. package/esm/withProviders.js +20 -14
  61. package/package.json +11 -11
  62. package/types/AnimationState.d.ts +2 -3
  63. package/types/DSShuttle.d.ts +1 -1
  64. package/types/SearchState.d.ts +2 -3
  65. package/types/ShuttleImpl.d.ts +2 -3
  66. package/types/ShuttleRenderer.d.ts +0 -1
  67. package/types/ShuttleState.d.ts +2 -3
  68. package/types/components/LoadingIndicator.d.ts +0 -1
  69. package/types/components/OverflowList.d.ts +0 -1
  70. package/types/components/ShuttleBreadcrumb.d.ts +0 -1
  71. package/types/components/ShuttleInfiniteScrollIndicator.d.ts +0 -1
  72. package/types/components/ShuttleListItem/ShuttleListItem.d.ts +0 -1
  73. package/types/components/ShuttleListItem/ShuttleSourceListItem.d.ts +0 -1
  74. package/types/components/ShuttleListItem/ShuttleTargetListItem.d.ts +0 -1
  75. package/types/components/ShuttleListPanel.d.ts +0 -1
  76. package/types/components/ShuttleSearchBox.d.ts +1 -3
  77. package/types/components/ShuttleSource.d.ts +0 -1
  78. package/types/components/ShuttleTarget.d.ts +0 -1
  79. package/types/components/VirtualizedItem.d.ts +0 -1
  80. package/types/components/VirtualizedList.d.ts +0 -1
  81. package/types/components/VirtualizedSortableList.d.ts +0 -1
  82. package/types/index.d.ts +1 -1
  83. package/types/updateShuttleStateFromProps.d.ts +1 -3
  84. package/types/withProviders.d.ts +0 -1
  85. package/cjs/AnimationState.js.map +0 -7
  86. package/cjs/DSShuttle.js.map +0 -7
  87. package/cjs/SearchState.js.map +0 -7
  88. package/cjs/Shuttle.actions.js.map +0 -7
  89. package/cjs/ShuttleContainer.js.map +0 -7
  90. package/cjs/ShuttleImpl.js.map +0 -7
  91. package/cjs/ShuttleRenderer.js.map +0 -7
  92. package/cjs/ShuttleState.js.map +0 -7
  93. package/cjs/animation/animationConfig.js.map +0 -7
  94. package/cjs/classedComponents.js.map +0 -7
  95. package/cjs/components/LoadingIndicator.js.map +0 -7
  96. package/cjs/components/OverflowList.js.map +0 -7
  97. package/cjs/components/ShuttleBreadcrumb.js.map +0 -7
  98. package/cjs/components/ShuttleInfiniteScrollIndicator.js.map +0 -7
  99. package/cjs/components/ShuttleListItem/ActionButtons.js.map +0 -7
  100. package/cjs/components/ShuttleListItem/ShuttleListItem.js.map +0 -7
  101. package/cjs/components/ShuttleListItem/ShuttleSourceListItem.js.map +0 -7
  102. package/cjs/components/ShuttleListItem/ShuttleTargetListItem.js.map +0 -7
  103. package/cjs/components/ShuttleListPanel.js.map +0 -7
  104. package/cjs/components/ShuttleSearchBox.js.map +0 -7
  105. package/cjs/components/ShuttleSource.js.map +0 -7
  106. package/cjs/components/ShuttleTarget.js.map +0 -7
  107. package/cjs/components/VirtualizedItem.js.map +0 -7
  108. package/cjs/components/VirtualizedList.js.map +0 -7
  109. package/cjs/components/VirtualizedSortableList.js.map +0 -7
  110. package/cjs/helper.js.map +0 -7
  111. package/cjs/index.js.map +0 -7
  112. package/cjs/tests/utils.js +0 -1218
  113. package/cjs/tests/utils.js.map +0 -7
  114. package/cjs/updateShuttleStateFromProps.js.map +0 -7
  115. package/cjs/utils.js.map +0 -7
  116. package/cjs/withProviders.js.map +0 -7
  117. package/esm/AnimationState.js.map +0 -7
  118. package/esm/DSShuttle.js.map +0 -7
  119. package/esm/SearchState.js.map +0 -7
  120. package/esm/Shuttle.actions.js.map +0 -7
  121. package/esm/ShuttleContainer.js.map +0 -7
  122. package/esm/ShuttleImpl.js.map +0 -7
  123. package/esm/ShuttleRenderer.js.map +0 -7
  124. package/esm/ShuttleState.js.map +0 -7
  125. package/esm/animation/animationConfig.js.map +0 -7
  126. package/esm/classedComponents.js.map +0 -7
  127. package/esm/components/LoadingIndicator.js.map +0 -7
  128. package/esm/components/OverflowList.js.map +0 -7
  129. package/esm/components/ShuttleBreadcrumb.js.map +0 -7
  130. package/esm/components/ShuttleInfiniteScrollIndicator.js.map +0 -7
  131. package/esm/components/ShuttleListItem/ActionButtons.js.map +0 -7
  132. package/esm/components/ShuttleListItem/ShuttleListItem.js.map +0 -7
  133. package/esm/components/ShuttleListItem/ShuttleSourceListItem.js.map +0 -7
  134. package/esm/components/ShuttleListItem/ShuttleTargetListItem.js.map +0 -7
  135. package/esm/components/ShuttleListPanel.js.map +0 -7
  136. package/esm/components/ShuttleSearchBox.js.map +0 -7
  137. package/esm/components/ShuttleSource.js.map +0 -7
  138. package/esm/components/ShuttleTarget.js.map +0 -7
  139. package/esm/components/VirtualizedItem.js.map +0 -7
  140. package/esm/components/VirtualizedList.js.map +0 -7
  141. package/esm/components/VirtualizedSortableList.js.map +0 -7
  142. package/esm/helper.js.map +0 -7
  143. package/esm/index.js.map +0 -7
  144. package/esm/tests/utils.js +0 -1189
  145. package/esm/tests/utils.js.map +0 -7
  146. package/esm/updateShuttleStateFromProps.js.map +0 -7
  147. package/esm/utils.js.map +0 -7
  148. package/esm/withProviders.js.map +0 -7
@@ -1,27 +1,43 @@
1
- import * as React from "react";
2
- import { useContext, useMemo } from "react";
3
- import {
4
- isFunction,
5
- compose,
6
- uniqBy,
7
- values,
8
- sortBy
9
- } from "@elliemae/ds-utilities";
10
- import { withProviders } from "./withProviders";
11
- import {
12
- prepareItems,
13
- getActiveIdFromHierarchy,
14
- filterItemsByHierarchy,
15
- getItemsById
16
- } from "./helper";
17
- import { SearchState } from "./SearchState";
18
- import { ShuttleState } from "./ShuttleState";
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
3
+ import 'core-js/modules/esnext.async-iterator.filter.js';
4
+ import 'core-js/modules/esnext.iterator.constructor.js';
5
+ import 'core-js/modules/esnext.iterator.filter.js';
6
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
7
+ import 'core-js/modules/esnext.iterator.for-each.js';
8
+ import { useContext, useMemo } from 'react';
9
+ import { compose, sortBy, uniqBy, values, isFunction } from '@elliemae/ds-utilities';
10
+ import withProviders from './withProviders.js';
11
+ import { filterItemsByHierarchy, getActiveIdFromHierarchy, prepareItems, getItemsById } from './helper.js';
12
+ import SearchState from './SearchState.js';
13
+ import useShuttleState from './ShuttleState.js';
14
+
15
+ const _excluded = ["state"];
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+
19
21
  function filterItemsByTerm(items, term) {
20
- return items.filter((item) => item.name.toLowerCase().indexOf(String(term).toLowerCase()) !== -1 || String(item.id).indexOf(String(term).toLowerCase()) !== -1);
22
+ return items.filter(item => item.name.toLowerCase().indexOf(String(term).toLowerCase()) !== -1 || String(item.id).indexOf(String(term).toLowerCase()) !== -1);
21
23
  }
22
- function ShuttleContainer({ items = [], children }) {
23
- const { state: shuttleState, ...handlers } = useContext(ShuttleState.Context);
24
- const { state: searchState } = useContext(SearchState.Context);
24
+
25
+ function ShuttleContainer(_ref) {
26
+ let {
27
+ items = [],
28
+ children
29
+ } = _ref;
30
+
31
+ const _useContext = useContext(useShuttleState.Context),
32
+ {
33
+ state: shuttleState
34
+ } = _useContext,
35
+ handlers = _objectWithoutProperties(_useContext, _excluded);
36
+
37
+ const {
38
+ state: searchState
39
+ } = useContext(SearchState.Context);
40
+
25
41
  const {
26
42
  movedItems,
27
43
  hierarchy,
@@ -35,11 +51,12 @@ function ShuttleContainer({ items = [], children }) {
35
51
  moveCheckedItems,
36
52
  moveItem,
37
53
  navigate
38
- } = { ...shuttleState, ...searchState, ...handlers };
39
- const sourceItems = useMemo(() => compose((items2) => items2.filter((item) => !movedItems[item.id]), (items2) => searchTerm && searching ? filterItemsByTerm(items2, searchTerm) : items2, (items2) => filterItemsByHierarchy(items2, getActiveIdFromHierarchy(hierarchy).id), (items2) => prepareItems(items2))(items), [items, searchTerm, searching, hierarchy, movedItems]);
54
+ } = _objectSpread(_objectSpread(_objectSpread({}, shuttleState), searchState), handlers);
55
+
56
+ const sourceItems = useMemo(() => compose(items => items.filter(item => !movedItems[item.id]), items => searchTerm && searching ? filterItemsByTerm(items, searchTerm) : items, items => filterItemsByHierarchy(items, getActiveIdFromHierarchy(hierarchy).id), items => prepareItems(items))(items), [items, searchTerm, searching, hierarchy, movedItems]);
40
57
  const targetItems = useMemo(() => {
41
58
  const hierarchyId = getActiveIdFromHierarchy(hierarchyDest).id;
42
- return compose((items2) => sortBy(items2, ["name"]), (items2) => hierarchyId ? filterItemsByHierarchy(items2, hierarchyId).filter((item) => !movedItems[item.id]) : uniqBy(values(movedItems), "id"))(items);
59
+ return compose(items => sortBy(items, ['name']), items => hierarchyId ? filterItemsByHierarchy(items, hierarchyId).filter(item => !movedItems[item.id]) : uniqBy(values(movedItems), 'id'))(items);
43
60
  }, [items, searching, hierarchyDest, movedItems]);
44
61
  return isFunction(children) && children({
45
62
  checkedItems,
@@ -49,16 +66,15 @@ function ShuttleContainer({ items = [], children }) {
49
66
  onClearCheckedItems: resetCheckedItems,
50
67
  onClearMovedItems: resetMovedItems,
51
68
  onMoveCheckedItems: () => moveCheckedItems(getItemsById(checkedItems, items)),
52
- onMoveItemToSource: (item) => moveItem(item, false),
53
- onMoveItemToTarget: (item) => moveItem(item, true),
54
- onNavigateOnSourceTo: (item) => navigate(item, false),
55
- onNavigateOnTargetTo: (item) => navigate(item, true),
69
+ onMoveItemToSource: item => moveItem(item, false),
70
+ onMoveItemToTarget: item => moveItem(item, true),
71
+ onNavigateOnSourceTo: item => navigate(item, false),
72
+ onNavigateOnTargetTo: item => navigate(item, true),
56
73
  sourceItems,
57
74
  targetItems
58
75
  });
59
76
  }
60
- var ShuttleContainer_default = withProviders(ShuttleContainer);
61
- export {
62
- ShuttleContainer_default as default
63
- };
64
- //# sourceMappingURL=ShuttleContainer.js.map
77
+
78
+ var ShuttleContainer$1 = withProviders(ShuttleContainer);
79
+
80
+ export { ShuttleContainer$1 as default };
@@ -1,132 +1,222 @@
1
- import * as React from "react";
2
- import React2, { Component } from "react";
3
- import { compose, arrayMove } from "@elliemae/ds-utilities";
4
- import { withProviders } from "./withProviders";
5
- import {
6
- addToTarget,
7
- navigateTo,
8
- resetCheckedItems,
9
- resetMovedItems,
10
- toggleItemSelection,
11
- removeFromTarget
12
- } from "./Shuttle.actions";
13
- import {
14
- getActiveIdFromHierarchy,
15
- filterBySearch,
16
- getItemsById,
17
- pipe,
18
- getChildrenFromParent,
19
- filterMovedItems
20
- } from "./helper";
21
- import { ShuttleRenderer } from "./ShuttleRenderer";
22
- import { SearchState } from "./SearchState";
23
- import { updateShuttleStateFromProps } from "./updateShuttleStateFromProps";
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
3
+ import 'core-js/modules/esnext.async-iterator.filter.js';
4
+ import 'core-js/modules/esnext.iterator.constructor.js';
5
+ import 'core-js/modules/esnext.iterator.filter.js';
6
+ import 'core-js/modules/esnext.async-iterator.some.js';
7
+ import 'core-js/modules/esnext.iterator.some.js';
8
+ import 'core-js/modules/esnext.async-iterator.map.js';
9
+ import 'core-js/modules/esnext.iterator.map.js';
10
+ import 'core-js/modules/web.dom-collections.iterator.js';
11
+ import 'core-js/modules/esnext.async-iterator.find.js';
12
+ import 'core-js/modules/esnext.iterator.find.js';
13
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
14
+ import 'core-js/modules/esnext.iterator.for-each.js';
15
+ import { Component } from 'react';
16
+ import { arrayMove, compose } from '@elliemae/ds-utilities';
17
+ import withProviders from './withProviders.js';
18
+ import { navigateTo, resetCheckedItems, resetMovedItems, addToTarget, removeFromTarget, toggleItemSelection } from './Shuttle.actions.js';
19
+ import { pipe, getItemsById, getActiveIdFromHierarchy, filterBySearch, filterMovedItems, getChildrenFromParent } from './helper.js';
20
+ import ShuttleRenderer from './ShuttleRenderer.js';
21
+ import SearchState from './SearchState.js';
22
+ import updateShuttleStateFromProps from './updateShuttleStateFromProps.js';
23
+ import { jsx } from 'react/jsx-runtime';
24
+
25
+ const _excluded = ["idField", "nonSelectedItems", "moreItemsLoading"];
26
+
27
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
+
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+
24
31
  class ShuttleImpl extends Component {
25
32
  constructor(props) {
26
33
  super(props);
34
+
27
35
  this.getState = () => {
28
- const { movedItems } = this.state;
36
+ const {
37
+ movedItems
38
+ } = this.state;
29
39
  return Object.keys(movedItems);
30
40
  };
41
+
31
42
  this.state = {
32
43
  prevProps: {},
33
44
  preparedItems: [],
34
45
  checkedItems: [],
35
- hierarchy: [{ name: props.sourceRootTitle, id: null }],
36
- hierarchyDest: [{ name: props.targetRootTitle, id: null }],
46
+ // left breadcrumb
47
+ hierarchy: [{
48
+ name: props.sourceRootTitle,
49
+ id: null
50
+ }],
51
+ // right breadcrumb
52
+ hierarchyDest: [{
53
+ name: props.targetRootTitle,
54
+ id: null
55
+ }],
37
56
  movedItems: [],
38
57
  sourceItems: [],
39
58
  targetItems: []
40
59
  };
41
- this.moveCheckedItems = this.moveCheckedItems.bind(this);
60
+ this.toggleItemSelection = this.toggleItemSelection.bind(this);
61
+ this.resetCheckedItems = this.resetCheckedItems.bind(this);
42
62
  this.resetMovedItems = this.resetMovedItems.bind(this);
63
+ this.moveCheckedItems = this.moveCheckedItems.bind(this);
64
+ this.handleTargetSortEnd = this.handleTargetSortEnd.bind(this);
43
65
  }
66
+
44
67
  static getDerivedStateFromProps(nextProps, prevState) {
45
68
  return updateShuttleStateFromProps(nextProps, prevState);
46
69
  }
70
+
47
71
  componentDidMount() {
48
- const { setGetStatus } = this.props;
72
+ const {
73
+ setGetStatus
74
+ } = this.props;
49
75
  setGetStatus(this.getState);
50
76
  }
77
+
51
78
  handleChange() {
52
- const { onChange } = this.props;
53
- const { movedItems } = this.state;
79
+ const {
80
+ onChange
81
+ } = this.props;
82
+ const {
83
+ movedItems
84
+ } = this.state;
54
85
  onChange(Object.keys(movedItems));
55
86
  }
87
+
56
88
  navigate(item, dest, direction) {
57
- const { onDrillDown, onDrillDownTarget } = this.props;
58
- if (!dest)
59
- onDrillDown(item, direction);
60
- if (dest)
61
- onDrillDownTarget(item, direction);
62
- const { reset: resetSearchState } = this.context;
89
+ const {
90
+ onDrillDown,
91
+ onDrillDownTarget
92
+ } = this.props;
93
+ if (!dest) onDrillDown(item, direction);
94
+ if (dest) onDrillDownTarget(item, direction);
95
+ const {
96
+ reset: resetSearchState
97
+ } = this.context;
63
98
  resetSearchState();
64
99
  this.setState(pipe([navigateTo(item, dest), resetCheckedItems()]));
65
100
  }
101
+
66
102
  resetCheckedItems() {
67
103
  this.setState(resetCheckedItems());
68
104
  }
105
+
69
106
  resetMovedItems() {
70
- const { selectedItems, onRemoveAllFromTarget } = this.props;
107
+ const {
108
+ selectedItems,
109
+ onRemoveAllFromTarget
110
+ } = this.props;
111
+
71
112
  if (!selectedItems) {
72
- this.setState(pipe([navigateTo({ id: null }, true), resetMovedItems()]), () => {
113
+ this.setState(pipe([navigateTo({
114
+ id: null
115
+ }, true), resetMovedItems()]), () => {
73
116
  this.handleChange();
74
117
  });
75
118
  } else {
76
- this.setState(pipe([navigateTo({ id: null }, true)]));
119
+ this.setState(pipe([navigateTo({
120
+ id: null
121
+ }, true)]));
77
122
  }
123
+
78
124
  onRemoveAllFromTarget();
79
125
  }
126
+
80
127
  addToTarget(item) {
81
- const { selectedItems, onAddToTarget } = this.props;
128
+ const {
129
+ selectedItems,
130
+ onAddToTarget
131
+ } = this.props;
132
+
82
133
  if (!selectedItems) {
83
134
  this.setState(pipe([addToTarget(item), resetCheckedItems()]), () => {
84
135
  this.handleChange();
85
136
  });
86
137
  }
138
+
87
139
  onAddToTarget(item);
88
140
  }
141
+
89
142
  removeFromTarget(item) {
90
- const { selectedItems, onRemoveFromTarget } = this.props;
143
+ const {
144
+ selectedItems,
145
+ onRemoveFromTarget
146
+ } = this.props;
147
+
91
148
  if (!selectedItems) {
92
149
  this.setState(pipe([removeFromTarget(item)]), () => {
93
150
  this.handleChange();
94
151
  });
95
152
  }
153
+
96
154
  onRemoveFromTarget(item);
97
155
  }
156
+
98
157
  toggleItemSelection(item) {
99
158
  this.setState(toggleItemSelection(item.id));
100
159
  }
160
+
101
161
  moveCheckedItems() {
102
- const { onAddCheckedItems, selectedItems, nonSelectedItems } = this.props;
103
- const { checkedItems, preparedItems } = this.state;
162
+ const {
163
+ onAddCheckedItems,
164
+ selectedItems,
165
+ nonSelectedItems
166
+ } = this.props;
167
+ const {
168
+ checkedItems,
169
+ preparedItems
170
+ } = this.state;
104
171
  const isControlledV2 = !!selectedItems && !!nonSelectedItems;
105
- const checked = isControlledV2 ? nonSelectedItems.filter((item) => checkedItems.some((check) => check === item)) : checkedItems;
172
+ const checked = isControlledV2 ? nonSelectedItems.filter(item => checkedItems.some(check => check === item)) : checkedItems;
106
173
  const items = getItemsById(checked, preparedItems);
107
- const actions = !selectedItems ? items.map((item) => addToTarget(item)) : [];
174
+ const actions = !selectedItems ? items.map(item => addToTarget(item)) : [];
108
175
  this.setState(pipe([...actions, resetCheckedItems()]), () => {
109
176
  this.handleChange();
110
177
  });
111
178
  onAddCheckedItems(items);
112
179
  }
113
- handleTargetSortEnd({ sourceItem, targetItem }) {
114
- const { idField, onTargetSortEnd } = this.props;
115
- const { targetItems, hierarchyDest, movedItems } = this.state;
180
+
181
+ handleTargetSortEnd(_ref) {
182
+ let {
183
+ sourceItem,
184
+ targetItem
185
+ } = _ref;
186
+ const {
187
+ idField,
188
+ onTargetSortEnd
189
+ } = this.props;
190
+ const {
191
+ targetItems,
192
+ hierarchyDest,
193
+ movedItems
194
+ } = this.state;
116
195
  const hierarchyId = getActiveIdFromHierarchy(hierarchyDest).id;
117
196
  const collection = !hierarchyId ? movedItems : targetItems;
118
- const oldIndex = collection.findIndex((tItem) => tItem[idField] === sourceItem[idField]);
119
- const newIndex = collection.findIndex((tItem) => tItem[idField] === targetItem[idField]);
197
+ const oldIndex = collection.findIndex(tItem => tItem[idField] === sourceItem[idField]);
198
+ const newIndex = collection.findIndex(tItem => tItem[idField] === targetItem[idField]);
120
199
  const sortedMovedItems = !hierarchyId ? arrayMove(movedItems, oldIndex, newIndex) : movedItems;
121
200
  const sortedItems = hierarchyId ? arrayMove(targetItems, oldIndex, newIndex) : targetItems;
122
201
  this.setState({
123
202
  targetItems: sortedItems,
124
203
  movedItems: sortedMovedItems
125
204
  });
126
- onTargetSortEnd({ sourceItem, targetItem });
205
+ onTargetSortEnd({
206
+ sourceItem,
207
+ targetItem
208
+ });
127
209
  }
210
+
128
211
  render() {
129
- const { idField, nonSelectedItems, moreItemsLoading, ...rest } = this.props;
212
+ const _this$props = this.props,
213
+ {
214
+ idField,
215
+ nonSelectedItems,
216
+ moreItemsLoading
217
+ } = _this$props,
218
+ rest = _objectWithoutProperties(_this$props, _excluded);
219
+
130
220
  const {
131
221
  hierarchy,
132
222
  hierarchyDest,
@@ -136,64 +226,79 @@ class ShuttleImpl extends Component {
136
226
  targetItems
137
227
  } = this.state;
138
228
  const {
139
- state: { searchTerm, searching }
229
+ state: {
230
+ searchTerm,
231
+ searching
232
+ }
140
233
  } = this.context;
234
+
141
235
  const handleControlledSourceItms = () => {
142
- const { id } = getActiveIdFromHierarchy(hierarchy);
236
+ const {
237
+ id
238
+ } = getActiveIdFromHierarchy(hierarchy);
239
+
143
240
  if (id) {
144
- return filterBySearch(searchTerm, searching)(getChildrenFromParent(id)(nonSelectedItems.map((it) => items.find((itt) => itt.id === it))));
241
+ return filterBySearch(searchTerm, searching)(getChildrenFromParent(id)(nonSelectedItems.map(it => items.find(itt => itt.id === it))));
145
242
  }
146
- return filterBySearch(searchTerm, searching)(items.filter((it) => nonSelectedItems.some((itt) => itt === it.id && !nonSelectedItems.some((ittt) => ittt === it.parent))));
243
+
244
+ return filterBySearch(searchTerm, searching)(items.filter(it => nonSelectedItems.some(itt => itt === it.id && !nonSelectedItems.some(ittt => ittt === it.parent))));
147
245
  };
148
- let composedSourceItems;
246
+
247
+ let composedSourceItems; // controlled V2 TODO make it default controlled behavior
248
+
149
249
  if (nonSelectedItems) {
150
250
  composedSourceItems = handleControlledSourceItms();
151
251
  } else {
152
252
  composedSourceItems = compose(filterBySearch(searchTerm, searching), filterMovedItems(movedItems), getChildrenFromParent(getActiveIdFromHierarchy(hierarchy).id))(items);
153
253
  }
254
+
154
255
  const handleControlledTargetItms = () => {
155
- const { id } = getActiveIdFromHierarchy(hierarchyDest);
256
+ const {
257
+ id
258
+ } = getActiveIdFromHierarchy(hierarchyDest);
259
+
156
260
  if (id) {
157
- return getChildrenFromParent(getActiveIdFromHierarchy(hierarchyDest).id)(this.props.selectedItems.map((it) => items.find((itt) => itt.id === it)));
261
+ return getChildrenFromParent(getActiveIdFromHierarchy(hierarchyDest).id)(this.props.selectedItems.map(it => items.find(itt => itt.id === it)));
158
262
  }
159
- return targetItems.filter((it) => this.props.selectedItems.some((itt) => itt === it.id && !this.props.selectedItems.some((ittt) => ittt === it.parent)));
263
+
264
+ return targetItems.filter(it => this.props.selectedItems.some(itt => itt === it.id && !this.props.selectedItems.some(ittt => ittt === it.parent)));
160
265
  };
161
- let composedTargetItems;
266
+
267
+ let composedTargetItems; // controlled V2 TODO make it default controlled behavior
268
+
162
269
  if (nonSelectedItems) {
163
270
  composedTargetItems = handleControlledTargetItms();
164
271
  } else {
165
- composedTargetItems = compose((tItems) => {
272
+ composedTargetItems = compose(tItems => {
166
273
  const hierarchyId = getActiveIdFromHierarchy(hierarchyDest).id;
167
274
  return hierarchyId ? compose(filterMovedItems(movedItems), getChildrenFromParent(hierarchyId))(tItems) : movedItems;
168
275
  })(targetItems);
169
276
  }
170
- return /* @__PURE__ */ React2.createElement(ShuttleRenderer, {
171
- ...rest,
172
- moreItemsLoading,
173
- checkedItems,
174
- hierarchy,
175
- hierarchyDest,
277
+
278
+ return /*#__PURE__*/jsx(ShuttleRenderer, _objectSpread(_objectSpread({}, rest), {}, {
279
+ moreItemsLoading: moreItemsLoading,
280
+ checkedItems: checkedItems,
281
+ hierarchy: hierarchy,
282
+ hierarchyDest: hierarchyDest,
176
283
  onCheckItem: this.toggleItemSelection,
177
284
  onClearCheckedItems: this.resetCheckedItems,
178
285
  onClearMovedItems: this.resetMovedItems,
179
286
  onItemCheck: this.toggleItemSelection,
180
287
  onMoveCheckedItems: this.moveCheckedItems,
181
- onMoveItemToSource: (item) => this.removeFromTarget(item, false),
182
- onMoveItemToTarget: (item) => this.addToTarget(item, true),
288
+ onMoveItemToSource: item => this.removeFromTarget(item, false),
289
+ onMoveItemToTarget: item => this.addToTarget(item, true),
183
290
  onNavigateOnSourceTo: (item, direction) => this.navigate(item, false, direction),
184
291
  onNavigateOnTargetTo: (item, direction) => this.navigate(item, true, direction),
185
292
  onSourceSortEnd: () => null,
186
293
  onTargetSortEnd: this.handleTargetSortEnd,
187
294
  sourceItems: composedSourceItems,
188
295
  targetItems: composedTargetItems
189
- });
296
+ }));
190
297
  }
298
+
191
299
  }
300
+
192
301
  ShuttleImpl.contextType = SearchState.Context;
193
- const ShuttleImplHoc = withProviders(ShuttleImpl);
194
- var ShuttleImpl_default = ShuttleImplHoc;
195
- export {
196
- ShuttleImplHoc as ShuttleImpl,
197
- ShuttleImpl_default as default
198
- };
199
- //# sourceMappingURL=ShuttleImpl.js.map
302
+ var ShuttleImpl$1 = withProviders(ShuttleImpl);
303
+
304
+ export { ShuttleImpl$1 as default };