@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,22 +1,40 @@
1
- import * as React from "react";
2
- import { memo } from "react";
3
- import { areEqual } from "react-window";
4
- const VirtualizedItem = memo(({ data, index, style: virtualizedStyles, showSortHandler = false }) => {
5
- const { items, itemRenderer, isItemMoving } = data;
6
- const { item, props: animatedStyles, key } = items[index] || {};
7
- if (!item)
8
- return null;
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
+ import { memo } from 'react';
8
+ import { areEqual } from 'react-window';
9
+
10
+ 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; }
11
+
12
+ 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; }
13
+ const VirtualizedItem = /*#__PURE__*/memo(_ref => {
14
+ let {
15
+ data,
16
+ index,
17
+ style: virtualizedStyles,
18
+ showSortHandler = false
19
+ } = _ref;
20
+ const {
21
+ items,
22
+ itemRenderer,
23
+ isItemMoving
24
+ } = data;
25
+ const {
26
+ item,
27
+ props: animatedStyles,
28
+ key
29
+ } = items[index] || {};
30
+ if (!item) return null;
9
31
  return itemRenderer({
10
32
  index,
11
33
  key,
12
34
  item,
13
35
  showSortHandler,
14
- style: isItemMoving ? { ...animatedStyles, ...virtualizedStyles } : virtualizedStyles
36
+ style: isItemMoving ? _objectSpread(_objectSpread({}, animatedStyles), virtualizedStyles) : virtualizedStyles
15
37
  });
16
38
  }, areEqual);
17
- var VirtualizedItem_default = VirtualizedItem;
18
- export {
19
- VirtualizedItem,
20
- VirtualizedItem_default as default
21
- };
22
- //# sourceMappingURL=VirtualizedItem.js.map
39
+
40
+ export { VirtualizedItem as default };
@@ -1,59 +1,84 @@
1
- import * as React from "react";
2
- import React2, { useContext, useEffect, useRef } from "react";
3
- import { useTransition } from "react-spring/web";
4
- import { FixedSizeList as List } from "react-window";
5
- import InfiniteLoader from "react-window-infinite-loader";
6
- import AutoSizer from "react-virtualized-auto-sizer";
7
- import { animationConfig } from "../animation/animationConfig";
8
- import { AnimationState } from "../AnimationState";
9
- import { VirtualizedItem } from "./VirtualizedItem";
10
- function VirtualizedList({
11
- items,
12
- itemRenderer,
13
- searching,
14
- target = false,
15
- innerRef,
16
- children,
17
- hasNextPage = true,
18
- getMoreItems = () => {
19
- }
20
- }) {
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
7
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
+ import { useRef, useContext, useEffect } from 'react';
9
+ import { useTransition } from 'react-spring/web';
10
+ import { FixedSizeList } from 'react-window';
11
+ import InfiniteLoader from 'react-window-infinite-loader';
12
+ import AutoSizer from 'react-virtualized-auto-sizer';
13
+ import { animationConfig } from '../animation/animationConfig.js';
14
+ import AnimationContext from '../AnimationState.js';
15
+ import VirtualizedItem from './VirtualizedItem.js';
16
+ import { jsx } from 'react/jsx-runtime';
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ function VirtualizedList(_ref) {
23
+ let {
24
+ items,
25
+ itemRenderer,
26
+ searching,
27
+ target = false,
28
+ innerRef,
29
+ children,
30
+ hasNextPage = true,
31
+ getMoreItems = () => {}
32
+ } = _ref;
21
33
  const hasMounted = useRef(false);
22
34
  const {
23
- state: { isMoving, isMovingBack },
35
+ state: {
36
+ isMoving,
37
+ isMovingBack
38
+ },
24
39
  reset
25
- } = useContext(AnimationState.Context);
40
+ } = useContext(AnimationContext.Context);
26
41
  useEffect(() => {
27
42
  hasMounted.current = true;
28
43
  }, []);
29
- const transitions = useTransition(items, (item) => item.id, {
30
- ...animationConfig.moveItem(target),
44
+ const transitions = useTransition(items, item => item.id, _objectSpread(_objectSpread({}, animationConfig.moveItem(target)), {}, {
31
45
  onDestroyed: () => reset()
32
- });
46
+ }));
33
47
  const itemCount = hasNextPage ? items.length + 1 : items.length;
34
- const isItemLoaded = (index) => !hasNextPage || index < items.length;
35
- return /* @__PURE__ */ React2.createElement(AutoSizer, null, ({ height, width }) => /* @__PURE__ */ React2.createElement(InfiniteLoader, {
36
- isItemLoaded,
37
- itemCount,
38
- loadMoreItems: getMoreItems
39
- }, ({ onItemsRendered, ref }) => /* @__PURE__ */ React2.createElement(List, {
40
- height: searching ? 300 : height,
41
- width,
42
- innerRef,
43
- itemCount: transitions.length,
44
- itemData: {
45
- items: transitions,
46
- itemRenderer,
47
- isItemMoving: hasMounted.current && (isMoving || isMovingBack)
48
- },
49
- itemSize: 35,
50
- onItemsRendered,
51
- ref
52
- }, children || VirtualizedItem)));
48
+
49
+ const isItemLoaded = index => !hasNextPage || index < items.length;
50
+
51
+ return /*#__PURE__*/_jsx(AutoSizer, {}, void 0, _ref2 => {
52
+ let {
53
+ height,
54
+ width
55
+ } = _ref2;
56
+ return /*#__PURE__*/_jsx(InfiniteLoader, {
57
+ isItemLoaded: isItemLoaded,
58
+ itemCount: itemCount,
59
+ loadMoreItems: getMoreItems
60
+ }, void 0, _ref3 => {
61
+ let {
62
+ onItemsRendered,
63
+ ref
64
+ } = _ref3;
65
+ return /*#__PURE__*/jsx(FixedSizeList, {
66
+ height: searching ? 300 : height,
67
+ width: width,
68
+ innerRef: innerRef,
69
+ itemCount: transitions.length,
70
+ itemData: {
71
+ items: transitions,
72
+ itemRenderer,
73
+ isItemMoving: hasMounted.current && (isMoving || isMovingBack)
74
+ },
75
+ itemSize: 35,
76
+ onItemsRendered: onItemsRendered,
77
+ ref: ref,
78
+ children: children || VirtualizedItem
79
+ });
80
+ });
81
+ });
53
82
  }
54
- var VirtualizedList_default = VirtualizedList;
55
- export {
56
- VirtualizedList,
57
- VirtualizedList_default as default
58
- };
59
- //# sourceMappingURL=VirtualizedList.js.map
83
+
84
+ export { VirtualizedList as default };
@@ -1,19 +1,34 @@
1
- import * as React from "react";
2
- import React2 from "react";
3
- import { sortableElement, sortableContainer } from "react-sortable-hoc";
4
- import { VirtualizedList } from "./VirtualizedList";
5
- import { VirtualizedItem } from "./VirtualizedItem";
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
8
+ import 'react';
9
+ import { sortableContainer, sortableElement } from 'react-sortable-hoc';
10
+ import VirtualizedList from './VirtualizedList.js';
11
+ import VirtualizedItem from './VirtualizedItem.js';
12
+ import { jsx } from 'react/jsx-runtime';
13
+
14
+ const _excluded = ["items"];
15
+
16
+ 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; }
17
+
18
+ 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; }
6
19
  const SortableList = sortableContainer(VirtualizedList);
7
- function VirtualizedSortableList({ items, ...otherProps }) {
8
- return /* @__PURE__ */ React2.createElement(SortableList, {
9
- ...otherProps,
10
- items,
11
- useDragHandle: true
12
- }, sortableElement(VirtualizedItem));
20
+
21
+ function VirtualizedSortableList(_ref) {
22
+ let {
23
+ items
24
+ } = _ref,
25
+ otherProps = _objectWithoutProperties(_ref, _excluded);
26
+
27
+ return /*#__PURE__*/jsx(SortableList, _objectSpread(_objectSpread({}, otherProps), {}, {
28
+ items: items,
29
+ useDragHandle: true,
30
+ children: sortableElement(VirtualizedItem)
31
+ }));
13
32
  }
14
- var VirtualizedSortableList_default = VirtualizedSortableList;
15
- export {
16
- VirtualizedSortableList,
17
- VirtualizedSortableList_default as default
18
- };
19
- //# sourceMappingURL=VirtualizedSortableList.js.map
33
+
34
+ export { VirtualizedSortableList as default };
package/esm/helper.js CHANGED
@@ -1,54 +1,78 @@
1
- import * as React from "react";
2
- import { omit, compose, hashArray } from "@elliemae/ds-utilities";
3
- import * as tree from "treetabular";
4
- const getHierarchyTypeName = (dest) => !dest ? "hierarchy" : "hierarchyDest";
5
- const checkHasChildren = (list, currentItem) => list.some((item) => currentItem.id === item.parent);
6
- const getActiveIdFromHierarchy = (hierarchy = []) => hierarchy[hierarchy.length - 1] || {};
7
- const filterItemsByHierarchy = (list, hierarchyId, parentField = "parent") => list.filter((item) => item[parentField] === hierarchyId);
8
- const getItemsById = (ids, list) => ids.reduce((acc, id) => acc.concat(list.find((item) => String(item.id) === String(id))), []).filter((item) => item);
9
- const toggleInObject = (obj, key, value) => obj[key] ? omit(obj, [key]) : { ...obj, [key]: value };
10
- const isMovable = (item) => !item.forceNotMovable && (item.hasChildren && item.isMoveableContainer || !item.hasChildren);
11
- const pipe = (actions) => (initState, props) => actions.reduce((prevState, action) => action(prevState, props), initState);
12
- const moveItems = ({ oldIndex, newIndex }) => (items) => {
13
- const sourceItem = items[oldIndex];
14
- items.splice(oldIndex, 1);
15
- items.splice(newIndex, 0, sourceItem);
16
- return items;
1
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
2
+ import 'core-js/modules/esnext.iterator.for-each.js';
3
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
+ import 'core-js/modules/esnext.async-iterator.some.js';
5
+ import 'core-js/modules/esnext.iterator.constructor.js';
6
+ import 'core-js/modules/esnext.iterator.some.js';
7
+ import 'core-js/modules/esnext.async-iterator.filter.js';
8
+ import 'core-js/modules/esnext.iterator.filter.js';
9
+ import 'core-js/modules/esnext.async-iterator.reduce.js';
10
+ import 'core-js/modules/esnext.iterator.reduce.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.map.js';
14
+ import 'core-js/modules/esnext.iterator.map.js';
15
+ import { omit, compose, hashArray } from '@elliemae/ds-utilities';
16
+ import * as tree from 'treetabular';
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+ const getHierarchyTypeName = dest => !dest ? 'hierarchy' : 'hierarchyDest';
22
+ const checkHasChildren = (list, currentItem) => list.some(item => currentItem.id === item.parent);
23
+ const getActiveIdFromHierarchy = function () {
24
+ let hierarchy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
25
+ return hierarchy[hierarchy.length - 1] || {};
17
26
  };
18
- const prepareItems = (items) => compose(tree.fixOrder(), (items2) => items2.map((item) => ({
19
- ...item,
20
- hasChildren: checkHasChildren(items2, item)
27
+ const filterItemsByHierarchy = function (list, hierarchyId) {
28
+ let parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'parent';
29
+ return list.filter(item => item[parentField] === hierarchyId);
30
+ };
31
+ const getItemsById = (ids, list) => ids.reduce((acc, id) => acc.concat(list.find(item => String(item.id) === String(id))), []).filter(item => item);
32
+ const toggleInObject = (obj, key, value) => obj[key] ? omit(obj, [key]) : _objectSpread(_objectSpread({}, obj), {}, {
33
+ [key]: value
34
+ });
35
+ const isMovable = item => !item.forceNotMovable && (item.hasChildren && item.isMoveableContainer || !item.hasChildren); // utility to execute all specified actions in sequence
36
+
37
+ const pipe = actions => (initState, props) => actions.reduce((prevState, action) => action(prevState, props), initState);
38
+ const moveItems = _ref => {
39
+ let {
40
+ oldIndex,
41
+ newIndex
42
+ } = _ref;
43
+ return items => {
44
+ const sourceItem = items[oldIndex];
45
+ items.splice(oldIndex, 1);
46
+ items.splice(newIndex, 0, sourceItem);
47
+ return items;
48
+ };
49
+ };
50
+ const prepareItems = items => compose(tree.fixOrder(), items => items.map(item => _objectSpread(_objectSpread({}, item), {}, {
51
+ hasChildren: checkHasChildren(items, item)
21
52
  })))(items);
22
53
  const defaultOptions = {
23
- parentField: "parent",
24
- idField: "id",
25
- op: (hasMoved) => !hasMoved
54
+ parentField: 'parent',
55
+ idField: 'id',
56
+ op: hasMoved => !hasMoved
26
57
  };
27
58
  function getChildrenFromParent(parentId, options) {
28
- const { parentField } = { ...defaultOptions, ...options };
29
- return (items) => items.filter((item) => item[parentField] === parentId);
59
+ const {
60
+ parentField
61
+ } = _objectSpread(_objectSpread({}, defaultOptions), options);
62
+
63
+ return items => items.filter(item => item[parentField] === parentId);
30
64
  }
31
65
  function filterMovedItems(movedItems, options) {
32
- const { idField, op: filterOp } = { ...defaultOptions, ...options };
66
+ const {
67
+ idField,
68
+ op: filterOp
69
+ } = _objectSpread(_objectSpread({}, defaultOptions), options);
70
+
33
71
  const movedItemsHash = hashArray(movedItems, idField);
34
- return (items) => items.filter((item) => filterOp(!!movedItemsHash[item[idField]]));
72
+ return items => items.filter(item => filterOp(!!movedItemsHash[item[idField]]));
35
73
  }
36
74
  function filterBySearch(term, searching) {
37
- return (items) => searching ? items.filter((item) => item.name.toLowerCase().indexOf(String(term).toLowerCase()) !== -1) : items;
75
+ return items => searching ? items.filter(item => item.name.toLowerCase().indexOf(String(term).toLowerCase()) !== -1) : items;
38
76
  }
39
- export {
40
- checkHasChildren,
41
- filterBySearch,
42
- filterItemsByHierarchy,
43
- filterMovedItems,
44
- getActiveIdFromHierarchy,
45
- getChildrenFromParent,
46
- getHierarchyTypeName,
47
- getItemsById,
48
- isMovable,
49
- moveItems,
50
- pipe,
51
- prepareItems,
52
- toggleInObject
53
- };
54
- //# sourceMappingURL=helper.js.map
77
+
78
+ export { checkHasChildren, filterBySearch, filterItemsByHierarchy, filterMovedItems, getActiveIdFromHierarchy, getChildrenFromParent, getHierarchyTypeName, getItemsById, isMovable, moveItems, pipe, prepareItems, toggleInObject };
package/esm/index.js CHANGED
@@ -1,9 +1,2 @@
1
- import * as React from "react";
2
- import { default as default2, utils, DSShuttleWithSchema, DSShuttle } from "./DSShuttle";
3
- export {
4
- DSShuttle,
5
- DSShuttleWithSchema,
6
- default2 as default,
7
- utils
8
- };
9
- //# sourceMappingURL=index.js.map
1
+ export { DSShuttleWithSchema, default } from './DSShuttle.js';
2
+ export { default as utils } from './utils.js';
@@ -1,44 +1,66 @@
1
- import * as React from "react";
2
- import { compose, isEqual, hashArray } from "@elliemae/ds-utilities";
3
- import { getItemsById, pipe, prepareItems } from "./helper";
4
- import { addToTarget, resetMovedItems } from "./Shuttle.actions";
5
- const mergeToPrevState = (prevState, nextState) => ({
6
- ...prevState,
7
- ...nextState,
8
- prevProps: {
9
- ...prevState.prevProps,
10
- ...nextState.prevProps
11
- }
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.filter.js';
3
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
4
+ import 'core-js/modules/esnext.iterator.for-each.js';
5
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
6
+ import 'core-js/modules/esnext.async-iterator.map.js';
7
+ import 'core-js/modules/esnext.iterator.map.js';
8
+ import 'core-js/modules/web.dom-collections.iterator.js';
9
+ import 'core-js/modules/esnext.async-iterator.find.js';
10
+ import 'core-js/modules/esnext.iterator.constructor.js';
11
+ import 'core-js/modules/esnext.iterator.find.js';
12
+ import { compose, isEqual, hashArray } from '@elliemae/ds-utilities';
13
+ import { getItemsById, pipe, prepareItems } from './helper.js';
14
+ import { addToTarget, resetMovedItems } from './Shuttle.actions.js';
15
+
16
+ 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; }
17
+
18
+ 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; }
19
+
20
+ const mergeToPrevState = (prevState, nextState) => _objectSpread(_objectSpread(_objectSpread({}, prevState), nextState), {}, {
21
+ prevProps: _objectSpread(_objectSpread({}, prevState.prevProps), nextState.prevProps)
12
22
  });
23
+
13
24
  function compareSelectedItems(nextProps, prevProps) {
14
- const { selectedItems, idField } = nextProps;
15
- return (nextState) => {
16
- if (isEqual(selectedItems, prevProps.selectedItems))
17
- return nextState;
18
- if (nextProps.nonSelectedItems)
19
- return nextState;
20
- const { preparedItems } = nextState;
25
+ const {
26
+ selectedItems,
27
+ idField
28
+ } = nextProps;
29
+ return nextState => {
30
+ if (isEqual(selectedItems, prevProps.selectedItems)) return nextState; // if we are using nonSelectedItems skip this legacy logic and paint just what's passed
31
+ // to nonSelectedItems (source) and selectedItems (target)
32
+ // TODO make controlledV2 the default behavior for controlled shuttle
33
+
34
+ if (nextProps.nonSelectedItems) return nextState;
35
+ const {
36
+ preparedItems
37
+ } = nextState;
21
38
  const prevSelectedItemsHash = hashArray(prevProps.selectedItems || []);
22
39
  const itemsToMove = getItemsById(selectedItems, preparedItems);
23
- const actions = itemsToMove.map((item) => prevSelectedItemsHash[item[idField]] ? addToTarget(item, nextState.targetItems) : addToTarget(item));
24
- return mergeToPrevState(nextState, {
25
- ...pipe([resetMovedItems(), ...actions])(nextState, nextProps),
26
- prevProps: {
27
- ...nextState.prevProps,
40
+ const actions = itemsToMove.map(item => prevSelectedItemsHash[item[idField]] ? addToTarget(item, nextState.targetItems) : addToTarget(item));
41
+ return mergeToPrevState(nextState, _objectSpread(_objectSpread({}, pipe([resetMovedItems(), ...actions])(nextState, nextProps)), {}, {
42
+ prevProps: _objectSpread(_objectSpread({}, nextState.prevProps), {}, {
28
43
  selectedItems
29
- }
30
- });
44
+ })
45
+ }));
31
46
  };
32
47
  }
48
+
33
49
  function compareItems(nextProps, prevProps) {
34
- const { items } = nextProps;
35
- return (nextState) => {
50
+ const {
51
+ items
52
+ } = nextProps;
53
+ return nextState => {
36
54
  const preparedItems = prepareItems(items);
37
- const isControlledV2 = nextProps.nonSelectedItems;
55
+ const isControlledV2 = nextProps.nonSelectedItems; // TODO make controlledV2 the default behavior for controlled shuttle
56
+
38
57
  if (isControlledV2) {
39
- const targetItems = nextProps.selectedItems.map((id) => preparedItems.find((it) => it.id === id));
58
+ const targetItems = nextProps.selectedItems.map(id => preparedItems.find(it => it.id === id));
40
59
  return mergeToPrevState(nextState, {
41
60
  preparedItems,
61
+ // PUI-4462 on async load and items change, the shuttle loads
62
+ // all children from currently selected targetItems from items prop
63
+ // (items prop update)
42
64
  targetItems,
43
65
  movedItems: targetItems,
44
66
  prevProps: {
@@ -46,8 +68,8 @@ function compareItems(nextProps, prevProps) {
46
68
  }
47
69
  });
48
70
  }
49
- if (isEqual(items, prevProps.items))
50
- return nextState;
71
+
72
+ if (isEqual(items, prevProps.items)) return nextState;
51
73
  return mergeToPrevState(nextState, {
52
74
  preparedItems,
53
75
  prevProps: {
@@ -56,14 +78,11 @@ function compareItems(nextProps, prevProps) {
56
78
  });
57
79
  };
58
80
  }
59
- function updateShuttleStateFromProps(nextProps, prevState) {
60
- const stateReducers = [compareSelectedItems, compareItems].map((fn) => fn(nextProps, prevState.prevProps));
81
+
82
+ function updateShuttleStateFromProps (nextProps, prevState) {
83
+ const stateReducers = [compareSelectedItems, compareItems].map(fn => fn(nextProps, prevState.prevProps));
61
84
  const nextState = compose(...stateReducers)(prevState);
62
85
  return !isEqual(nextState, prevState) ? nextState : null;
63
86
  }
64
- var updateShuttleStateFromProps_default = updateShuttleStateFromProps;
65
- export {
66
- updateShuttleStateFromProps_default as default,
67
- updateShuttleStateFromProps
68
- };
69
- //# sourceMappingURL=updateShuttleStateFromProps.js.map
87
+
88
+ export { updateShuttleStateFromProps as default };
package/esm/utils.js CHANGED
@@ -1,12 +1,18 @@
1
- import * as React from "react";
2
- import * as tree from "treetabular";
3
- import { compose } from "@elliemae/ds-utilities";
4
- import { prepareItems } from "./helper";
5
- var utils_default = {
6
- prepareItems: (items, options) => compose(tree.fixOrder(options), prepareItems)(items),
7
- ...tree
8
- };
9
- export {
10
- utils_default as default
11
- };
12
- //# sourceMappingURL=utils.js.map
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
+ import * as tree from 'treetabular';
8
+ import { compose } from '@elliemae/ds-utilities';
9
+ import { prepareItems } from './helper.js';
10
+
11
+ 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; }
12
+
13
+ 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; }
14
+ var utils = _objectSpread({
15
+ prepareItems: (items, options) => compose(tree.fixOrder(options), prepareItems)(items)
16
+ }, tree);
17
+
18
+ export { utils as default };
@@ -1,16 +1,22 @@
1
- import * as React from "react";
2
- import React2 from "react";
3
- import { AnimationState } from "./AnimationState";
4
- import { SearchState } from "./SearchState";
5
- import { ShuttleState } from "./ShuttleState";
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
7
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
+ import 'react';
9
+ import AnimationContext from './AnimationState.js';
10
+ import SearchState from './SearchState.js';
11
+ import useShuttleState from './ShuttleState.js';
12
+ import { jsx } from 'react/jsx-runtime';
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
6
18
  function withProviders(Component) {
7
- return (props) => /* @__PURE__ */ React2.createElement(ShuttleState.Provider, null, /* @__PURE__ */ React2.createElement(AnimationState.Provider, null, /* @__PURE__ */ React2.createElement(SearchState.Provider, null, /* @__PURE__ */ React2.createElement(Component, {
8
- ...props
9
- }))));
19
+ return props => /*#__PURE__*/_jsx(useShuttleState.Provider, {}, void 0, /*#__PURE__*/_jsx(AnimationContext.Provider, {}, void 0, /*#__PURE__*/_jsx(SearchState.Provider, {}, void 0, /*#__PURE__*/jsx(Component, _objectSpread({}, props)))));
10
20
  }
11
- var withProviders_default = withProviders;
12
- export {
13
- withProviders_default as default,
14
- withProviders
15
- };
16
- //# sourceMappingURL=withProviders.js.map
21
+
22
+ export { withProviders as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-shuttle",
3
- "version": "2.2.0-alpha.4",
3
+ "version": "3.0.0-next.2",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Shuttle",
6
6
  "module": "./esm/index.js",
@@ -152,16 +152,16 @@
152
152
  "build": "node ../../scripts/build/build.js"
153
153
  },
154
154
  "dependencies": {
155
- "@elliemae/ds-basic": "2.2.0-alpha.4",
156
- "@elliemae/ds-button": "2.2.0-alpha.4",
157
- "@elliemae/ds-circular-progress-indicator": "2.2.0-alpha.4",
158
- "@elliemae/ds-classnames": "2.2.0-alpha.4",
159
- "@elliemae/ds-form": "2.2.0-alpha.4",
160
- "@elliemae/ds-icons": "2.2.0-alpha.4",
161
- "@elliemae/ds-indeterminate-progress-indicator": "2.2.0-alpha.4",
162
- "@elliemae/ds-system": "2.2.0-alpha.4",
163
- "@elliemae/ds-truncated-tooltip-text": "2.2.0-alpha.4",
164
- "@elliemae/ds-utilities": "2.2.0-alpha.4",
155
+ "@elliemae/ds-basic": "3.0.0-next.2",
156
+ "@elliemae/ds-button": "3.0.0-next.2",
157
+ "@elliemae/ds-circular-progress-indicator": "3.0.0-next.2",
158
+ "@elliemae/ds-classnames": "3.0.0-next.2",
159
+ "@elliemae/ds-form": "3.0.0-next.2",
160
+ "@elliemae/ds-icons": "3.0.0-next.2",
161
+ "@elliemae/ds-indeterminate-progress-indicator": "3.0.0-next.2",
162
+ "@elliemae/ds-system": "3.0.0-next.2",
163
+ "@elliemae/ds-truncated-tooltip-text": "3.0.0-next.2",
164
+ "@elliemae/ds-utilities": "3.0.0-next.2",
165
165
  "constate": "~1.3.2",
166
166
  "prop-types": "~15.7.2",
167
167
  "react-desc": "~4.1.3",
@@ -1,4 +1,4 @@
1
- declare const AnimationState: import("constate/dist/ts/src/types").ContextHookReturn<unknown, {
1
+ declare const _default: import("constate/dist/ts/src/types").ContextHookReturn<unknown, {
2
2
  state: {
3
3
  isMoving: boolean;
4
4
  isMovingBack: boolean;
@@ -23,5 +23,4 @@ declare const AnimationState: import("constate/dist/ts/src/types").ContextHookRe
23
23
  isMovingBack: boolean;
24
24
  isDrillingDown: boolean;
25
25
  }[]]>;
26
- export { AnimationState };
27
- export default AnimationState;
26
+ export default _default;
@@ -337,5 +337,5 @@ declare const DSShuttleWithSchema: {
337
337
  propTypes: unknown;
338
338
  toTypescript: () => import("react-desc").TypescriptSchema;
339
339
  };
340
- export { utils, DSShuttleWithSchema, DSShuttle };
340
+ export { utils, DSShuttleWithSchema };
341
341
  export default DSShuttle;