@elliemae/ds-query-builder 2.3.0-next.3 → 3.0.0-alpha.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.
Files changed (242) hide show
  1. package/dist/cjs/DSQueryBuilder.js +118 -0
  2. package/dist/cjs/DSQueryBuilder.js.map +7 -0
  3. package/dist/cjs/components/AndOrController/AndOrController.js +208 -0
  4. package/dist/cjs/components/AndOrController/AndOrController.js.map +7 -0
  5. package/dist/cjs/components/ConditionController/ConditionController.js +116 -0
  6. package/dist/cjs/components/ConditionController/ConditionController.js.map +7 -0
  7. package/dist/cjs/components/DisplayOutput/DisplayOutput.js +92 -0
  8. package/dist/cjs/components/DisplayOutput/DisplayOutput.js.map +7 -0
  9. package/dist/cjs/components/DragContainerController/DragContainerController.js +65 -0
  10. package/dist/cjs/components/DragContainerController/DragContainerController.js.map +7 -0
  11. package/dist/cjs/components/DragControllerRow/DragControllerRow.js +51 -0
  12. package/dist/cjs/components/DragControllerRow/DragControllerRow.js.map +7 -0
  13. package/dist/cjs/components/FieldControllerRow/FieldControllerRow.js +55 -0
  14. package/dist/cjs/components/FieldControllerRow/FieldControllerRow.js.map +7 -0
  15. package/dist/cjs/components/Nestable/Nestable.js +254 -0
  16. package/dist/cjs/components/Nestable/Nestable.js.map +7 -0
  17. package/dist/cjs/components/Nestable/NestableItem.js +119 -0
  18. package/dist/cjs/components/Nestable/NestableItem.js.map +7 -0
  19. package/dist/cjs/components/Nestable/actions/events.js +143 -0
  20. package/dist/cjs/components/Nestable/actions/events.js.map +7 -0
  21. package/dist/cjs/components/Nestable/actions/getItemOptions.js +49 -0
  22. package/dist/cjs/components/Nestable/actions/getItemOptions.js.map +7 -0
  23. package/dist/cjs/components/Nestable/actions/getPaths.js +119 -0
  24. package/dist/cjs/components/Nestable/actions/getPaths.js.map +7 -0
  25. package/dist/cjs/components/Nestable/actions/index.js +42 -0
  26. package/dist/cjs/components/Nestable/actions/index.js.map +7 -0
  27. package/dist/cjs/components/Nestable/actions/moveItem.js +56 -0
  28. package/dist/cjs/components/Nestable/actions/moveItem.js.map +7 -0
  29. package/dist/cjs/components/Nestable/actions/paths.js +119 -0
  30. package/dist/cjs/components/Nestable/actions/paths.js.map +7 -0
  31. package/dist/cjs/components/Nestable/actions/tryDecreaseDepth.js +51 -0
  32. package/dist/cjs/components/Nestable/actions/tryDecreaseDepth.js.map +7 -0
  33. package/dist/cjs/components/Nestable/actions/tryIncreaseDepth.js +51 -0
  34. package/dist/cjs/components/Nestable/actions/tryIncreaseDepth.js.map +7 -0
  35. package/dist/cjs/components/Nestable/index.js +36 -0
  36. package/dist/cjs/components/Nestable/index.js.map +7 -0
  37. package/dist/cjs/components/QueryBuilderContext/QueryBuilderContext.js +36 -0
  38. package/dist/cjs/components/QueryBuilderContext/QueryBuilderContext.js.map +7 -0
  39. package/dist/cjs/components/QueryBuilderImpl.js +225 -0
  40. package/dist/cjs/components/QueryBuilderImpl.js.map +7 -0
  41. package/dist/cjs/components/QueryBuilderItem/QueryBuilderItem.js +92 -0
  42. package/dist/cjs/components/QueryBuilderItem/QueryBuilderItem.js.map +7 -0
  43. package/dist/cjs/components/QueryBuilderRow/QueryBuilderRow.js +219 -0
  44. package/dist/cjs/components/QueryBuilderRow/QueryBuilderRow.js.map +7 -0
  45. package/dist/cjs/components/ToolBarAnimation/ToolBarAnimation.js +42 -0
  46. package/dist/cjs/components/ToolBarAnimation/ToolBarAnimation.js.map +7 -0
  47. package/dist/cjs/components/format/format.js +59 -0
  48. package/dist/cjs/components/format/format.js.map +7 -0
  49. package/dist/cjs/components/format/sqlFormat.js +94 -0
  50. package/dist/cjs/components/format/sqlFormat.js.map +7 -0
  51. package/dist/cjs/components/format/sqlSafeFormat.js +98 -0
  52. package/dist/cjs/components/format/sqlSafeFormat.js.map +7 -0
  53. package/dist/cjs/components/format/xmlFormat.js +94 -0
  54. package/dist/cjs/components/format/xmlFormat.js.map +7 -0
  55. package/dist/cjs/components/helpers/actions.js +242 -0
  56. package/dist/cjs/components/helpers/actions.js.map +7 -0
  57. package/dist/cjs/components/helpers/constants.js +39 -0
  58. package/dist/cjs/components/helpers/constants.js.map +7 -0
  59. package/dist/cjs/components/helpers/dependencies.js +69 -0
  60. package/dist/cjs/components/helpers/dependencies.js.map +7 -0
  61. package/dist/cjs/components/helpers/selectors.js +161 -0
  62. package/dist/cjs/components/helpers/selectors.js.map +7 -0
  63. package/dist/cjs/components/helpers/store.js +159 -0
  64. package/dist/cjs/components/helpers/store.js.map +7 -0
  65. package/dist/cjs/components/helpers/types.js +92 -0
  66. package/dist/cjs/components/helpers/types.js.map +7 -0
  67. package/dist/cjs/index.js +36 -0
  68. package/dist/cjs/index.js.map +7 -0
  69. package/dist/cjs/propTypes.js +105 -0
  70. package/dist/cjs/propTypes.js.map +7 -0
  71. package/dist/esm/DSQueryBuilder.js +105 -0
  72. package/dist/esm/DSQueryBuilder.js.map +7 -0
  73. package/dist/esm/components/AndOrController/AndOrController.js +179 -0
  74. package/dist/esm/components/AndOrController/AndOrController.js.map +7 -0
  75. package/dist/esm/components/ConditionController/ConditionController.js +87 -0
  76. package/dist/esm/components/ConditionController/ConditionController.js.map +7 -0
  77. package/dist/esm/components/DisplayOutput/DisplayOutput.js +63 -0
  78. package/dist/esm/components/DisplayOutput/DisplayOutput.js.map +7 -0
  79. package/dist/esm/components/DragContainerController/DragContainerController.js +36 -0
  80. package/dist/esm/components/DragContainerController/DragContainerController.js.map +7 -0
  81. package/dist/esm/components/DragControllerRow/DragControllerRow.js +22 -0
  82. package/dist/esm/components/DragControllerRow/DragControllerRow.js.map +7 -0
  83. package/dist/esm/components/FieldControllerRow/FieldControllerRow.js +26 -0
  84. package/dist/esm/components/FieldControllerRow/FieldControllerRow.js.map +7 -0
  85. package/dist/esm/components/Nestable/Nestable.js +241 -0
  86. package/dist/esm/components/Nestable/Nestable.js.map +7 -0
  87. package/dist/esm/components/Nestable/NestableItem.js +90 -0
  88. package/dist/esm/components/Nestable/NestableItem.js.map +7 -0
  89. package/dist/esm/components/Nestable/actions/events.js +119 -0
  90. package/dist/esm/components/Nestable/actions/events.js.map +7 -0
  91. package/{esm → dist/esm}/components/Nestable/actions/getItemOptions.js +7 -11
  92. package/dist/esm/components/Nestable/actions/getItemOptions.js.map +7 -0
  93. package/{esm → dist/esm}/components/Nestable/actions/getPaths.js +17 -43
  94. package/dist/esm/components/Nestable/actions/getPaths.js.map +7 -0
  95. package/dist/esm/components/Nestable/actions/index.js +13 -0
  96. package/dist/esm/components/Nestable/actions/index.js.map +7 -0
  97. package/dist/esm/components/Nestable/actions/moveItem.js +27 -0
  98. package/dist/esm/components/Nestable/actions/moveItem.js.map +7 -0
  99. package/{esm → dist/esm}/components/Nestable/actions/paths.js +19 -47
  100. package/dist/esm/components/Nestable/actions/paths.js.map +7 -0
  101. package/dist/esm/components/Nestable/actions/tryDecreaseDepth.js +22 -0
  102. package/dist/esm/components/Nestable/actions/tryDecreaseDepth.js.map +7 -0
  103. package/{esm → dist/esm}/components/Nestable/actions/tryIncreaseDepth.js +10 -22
  104. package/dist/esm/components/Nestable/actions/tryIncreaseDepth.js.map +7 -0
  105. package/dist/esm/components/Nestable/index.js +7 -0
  106. package/dist/esm/components/Nestable/index.js.map +7 -0
  107. package/dist/esm/components/QueryBuilderContext/QueryBuilderContext.js +7 -0
  108. package/dist/esm/components/QueryBuilderContext/QueryBuilderContext.js.map +7 -0
  109. package/dist/esm/components/QueryBuilderImpl.js +196 -0
  110. package/dist/esm/components/QueryBuilderImpl.js.map +7 -0
  111. package/dist/esm/components/QueryBuilderItem/QueryBuilderItem.js +63 -0
  112. package/dist/esm/components/QueryBuilderItem/QueryBuilderItem.js.map +7 -0
  113. package/dist/esm/components/QueryBuilderRow/QueryBuilderRow.js +190 -0
  114. package/dist/esm/components/QueryBuilderRow/QueryBuilderRow.js.map +7 -0
  115. package/dist/esm/components/ToolBarAnimation/ToolBarAnimation.js +13 -0
  116. package/dist/esm/components/ToolBarAnimation/ToolBarAnimation.js.map +7 -0
  117. package/dist/esm/components/format/format.js +30 -0
  118. package/dist/esm/components/format/format.js.map +7 -0
  119. package/dist/esm/components/format/sqlFormat.js +65 -0
  120. package/dist/esm/components/format/sqlFormat.js.map +7 -0
  121. package/dist/esm/components/format/sqlSafeFormat.js +69 -0
  122. package/dist/esm/components/format/sqlSafeFormat.js.map +7 -0
  123. package/dist/esm/components/format/xmlFormat.js +65 -0
  124. package/dist/esm/components/format/xmlFormat.js.map +7 -0
  125. package/dist/esm/components/helpers/actions.js +217 -0
  126. package/dist/esm/components/helpers/actions.js.map +7 -0
  127. package/dist/esm/components/helpers/constants.js +10 -0
  128. package/dist/esm/components/helpers/constants.js.map +7 -0
  129. package/dist/esm/components/helpers/dependencies.js +40 -0
  130. package/dist/esm/components/helpers/dependencies.js.map +7 -0
  131. package/dist/esm/components/helpers/selectors.js +132 -0
  132. package/dist/esm/components/helpers/selectors.js.map +7 -0
  133. package/dist/esm/components/helpers/store.js +143 -0
  134. package/dist/esm/components/helpers/store.js.map +7 -0
  135. package/dist/esm/components/helpers/types.js +63 -0
  136. package/dist/esm/components/helpers/types.js.map +7 -0
  137. package/dist/esm/index.js +7 -0
  138. package/dist/esm/index.js.map +7 -0
  139. package/dist/esm/propTypes.js +76 -0
  140. package/dist/esm/propTypes.js.map +7 -0
  141. package/{types → dist/types}/DSQueryBuilder.d.ts +0 -0
  142. package/{types → dist/types}/components/AndOrController/AndOrController.d.ts +0 -0
  143. package/{types → dist/types}/components/ConditionController/ConditionController.d.ts +0 -0
  144. package/{types → dist/types}/components/DisplayOutput/DisplayOutput.d.ts +0 -0
  145. package/{types → dist/types}/components/DragContainerController/DragContainerController.d.ts +0 -0
  146. package/{types → dist/types}/components/DragControllerRow/DragControllerRow.d.ts +0 -0
  147. package/{types → dist/types}/components/FieldControllerRow/FieldControllerRow.d.ts +0 -0
  148. package/{types → dist/types}/components/Nestable/Nestable.d.ts +0 -0
  149. package/{types → dist/types}/components/Nestable/NestableItem.d.ts +0 -0
  150. package/{types → dist/types}/components/Nestable/actions/events.d.ts +0 -0
  151. package/{types → dist/types}/components/Nestable/actions/getItemOptions.d.ts +0 -0
  152. package/{types → dist/types}/components/Nestable/actions/getPaths.d.ts +0 -0
  153. package/{types → dist/types}/components/Nestable/actions/index.d.ts +0 -0
  154. package/{types → dist/types}/components/Nestable/actions/moveItem.d.ts +0 -0
  155. package/{types → dist/types}/components/Nestable/actions/paths.d.ts +0 -0
  156. package/{types → dist/types}/components/Nestable/actions/tryDecreaseDepth.d.ts +0 -0
  157. package/{types → dist/types}/components/Nestable/actions/tryIncreaseDepth.d.ts +0 -0
  158. package/{types → dist/types}/components/Nestable/index.d.ts +0 -0
  159. package/{types → dist/types}/components/QueryBuilderContext/QueryBuilderContext.d.ts +0 -0
  160. package/{types → dist/types}/components/QueryBuilderImpl.d.ts +0 -0
  161. package/{types → dist/types}/components/QueryBuilderItem/QueryBuilderItem.d.ts +0 -0
  162. package/{types → dist/types}/components/QueryBuilderRow/QueryBuilderRow.d.ts +0 -0
  163. package/{types → dist/types}/components/ToolBarAnimation/ToolBarAnimation.d.ts +0 -0
  164. package/{types → dist/types}/components/format/format.d.ts +0 -0
  165. package/{types → dist/types}/components/format/sqlFormat.d.ts +0 -0
  166. package/{types → dist/types}/components/format/sqlSafeFormat.d.ts +0 -0
  167. package/{types → dist/types}/components/format/xmlFormat.d.ts +0 -0
  168. package/{types → dist/types}/components/helpers/actions.d.ts +0 -0
  169. package/{types → dist/types}/components/helpers/constants.d.ts +0 -0
  170. package/{types → dist/types}/components/helpers/dependencies.d.ts +0 -0
  171. package/{types → dist/types}/components/helpers/selectors.d.ts +0 -0
  172. package/{types → dist/types}/components/helpers/store.d.ts +0 -0
  173. package/{types → dist/types}/components/helpers/types.d.ts +0 -0
  174. package/{types → dist/types}/index.d.ts +0 -0
  175. package/{types → dist/types}/propTypes.d.ts +0 -0
  176. package/package.json +102 -94
  177. package/cjs/DSQueryBuilder.js +0 -98
  178. package/cjs/components/AndOrController/AndOrController.js +0 -222
  179. package/cjs/components/ConditionController/ConditionController.js +0 -100
  180. package/cjs/components/DisplayOutput/DisplayOutput.js +0 -93
  181. package/cjs/components/DragContainerController/DragContainerController.js +0 -45
  182. package/cjs/components/DragControllerRow/DragControllerRow.js +0 -47
  183. package/cjs/components/FieldControllerRow/FieldControllerRow.js +0 -33
  184. package/cjs/components/Nestable/Nestable.js +0 -320
  185. package/cjs/components/Nestable/NestableItem.js +0 -111
  186. package/cjs/components/Nestable/actions/events.js +0 -166
  187. package/cjs/components/Nestable/actions/getItemOptions.js +0 -28
  188. package/cjs/components/Nestable/actions/getPaths.js +0 -124
  189. package/cjs/components/Nestable/actions/index.js +0 -28
  190. package/cjs/components/Nestable/actions/moveItem.js +0 -54
  191. package/cjs/components/Nestable/actions/paths.js +0 -126
  192. package/cjs/components/Nestable/actions/tryDecreaseDepth.js +0 -35
  193. package/cjs/components/Nestable/actions/tryIncreaseDepth.js +0 -38
  194. package/cjs/components/Nestable/index.js +0 -7
  195. package/cjs/components/QueryBuilderContext/QueryBuilderContext.js +0 -13
  196. package/cjs/components/QueryBuilderImpl.js +0 -309
  197. package/cjs/components/QueryBuilderItem/QueryBuilderItem.js +0 -90
  198. package/cjs/components/QueryBuilderRow/QueryBuilderRow.js +0 -276
  199. package/cjs/components/ToolBarAnimation/ToolBarAnimation.js +0 -29
  200. package/cjs/components/format/format.js +0 -33
  201. package/cjs/components/format/sqlFormat.js +0 -73
  202. package/cjs/components/format/sqlSafeFormat.js +0 -81
  203. package/cjs/components/format/xmlFormat.js +0 -73
  204. package/cjs/components/helpers/actions.js +0 -277
  205. package/cjs/components/helpers/constants.js +0 -11
  206. package/cjs/components/helpers/dependencies.js +0 -84
  207. package/cjs/components/helpers/selectors.js +0 -101
  208. package/cjs/components/helpers/store.js +0 -177
  209. package/cjs/components/helpers/types.js +0 -64
  210. package/cjs/index.js +0 -29
  211. package/cjs/propTypes.js +0 -97
  212. package/esm/DSQueryBuilder.js +0 -74
  213. package/esm/components/AndOrController/AndOrController.js +0 -213
  214. package/esm/components/ConditionController/ConditionController.js +0 -92
  215. package/esm/components/DisplayOutput/DisplayOutput.js +0 -87
  216. package/esm/components/DragContainerController/DragContainerController.js +0 -39
  217. package/esm/components/DragControllerRow/DragControllerRow.js +0 -39
  218. package/esm/components/FieldControllerRow/FieldControllerRow.js +0 -27
  219. package/esm/components/Nestable/Nestable.js +0 -312
  220. package/esm/components/Nestable/NestableItem.js +0 -103
  221. package/esm/components/Nestable/actions/events.js +0 -153
  222. package/esm/components/Nestable/actions/index.js +0 -6
  223. package/esm/components/Nestable/actions/moveItem.js +0 -45
  224. package/esm/components/Nestable/actions/tryDecreaseDepth.js +0 -31
  225. package/esm/components/Nestable/index.js +0 -2
  226. package/esm/components/QueryBuilderContext/QueryBuilderContext.js +0 -5
  227. package/esm/components/QueryBuilderImpl.js +0 -301
  228. package/esm/components/QueryBuilderItem/QueryBuilderItem.js +0 -83
  229. package/esm/components/QueryBuilderRow/QueryBuilderRow.js +0 -268
  230. package/esm/components/ToolBarAnimation/ToolBarAnimation.js +0 -20
  231. package/esm/components/format/format.js +0 -31
  232. package/esm/components/format/sqlFormat.js +0 -69
  233. package/esm/components/format/sqlSafeFormat.js +0 -76
  234. package/esm/components/format/xmlFormat.js +0 -69
  235. package/esm/components/helpers/actions.js +0 -254
  236. package/esm/components/helpers/constants.js +0 -5
  237. package/esm/components/helpers/dependencies.js +0 -60
  238. package/esm/components/helpers/selectors.js +0 -93
  239. package/esm/components/helpers/store.js +0 -171
  240. package/esm/components/helpers/types.js +0 -52
  241. package/esm/index.js +0 -4
  242. package/esm/propTypes.js +0 -93
@@ -0,0 +1,241 @@
1
+ import * as React from "react";
2
+ import React2, { Component } from "react";
3
+ import PropTypes from "prop-types";
4
+ import cn from "classnames";
5
+ import { listWithChildren } from "@elliemae/ds-shared/utils";
6
+ import { isEqualWith } from "@elliemae/ds-utilities";
7
+ import {
8
+ tryIncreaseDepth,
9
+ tryDecreaseDepth,
10
+ moveItem,
11
+ getItemOptions,
12
+ getRealNextPath,
13
+ getPathById,
14
+ getItemByPath,
15
+ getItemDepth,
16
+ getSplicePath,
17
+ onDragStart,
18
+ onDragEnd,
19
+ onMouseMove,
20
+ onMouseEnter,
21
+ onToggleCollapse,
22
+ onKeyDown
23
+ } from "./actions";
24
+ import NestableItem from "./NestableItem";
25
+ const shallowCompare = (instance, nextProps, nextState) => !isEqualWith(instance.props, nextProps) || !isEqualWith(instance.state, nextState);
26
+ class Nestable extends Component {
27
+ constructor(props) {
28
+ super(props);
29
+ this.onDragStart = (e, item) => {
30
+ onDragStart.call(this, e, item);
31
+ };
32
+ this.onDragEnd = (e, isCancel) => onDragEnd.call(this, e, isCancel);
33
+ this.onMouseMove = (e) => onMouseMove.call(this, e);
34
+ this.onMouseEnter = (e, item) => onMouseEnter.call(this, e, item);
35
+ this.onToggleCollapse = (item, isGetter) => onToggleCollapse.call(this, item, isGetter);
36
+ this.onKeyDown = (e) => onKeyDown.call(this, e);
37
+ this.getDefaultItems = () => {
38
+ const { items } = this.state;
39
+ return items;
40
+ };
41
+ this.getItemDepth = (item) => getItemDepth.call(this, item);
42
+ this.startTrackMouse = () => {
43
+ document.addEventListener("mousemove", this.onMouseMove);
44
+ document.addEventListener("mouseup", this.onDragEnd);
45
+ document.addEventListener("keydown", this.onKeyDown);
46
+ };
47
+ this.stopTrackMouse = () => {
48
+ document.removeEventListener("mousemove", this.onMouseMove);
49
+ document.removeEventListener("mouseup", this.onDragEnd);
50
+ document.removeEventListener("keydown", this.onKeyDown);
51
+ this.elCopyStyles = null;
52
+ };
53
+ this.isCollapsed = (item) => {
54
+ const { collapsed } = this.props;
55
+ const { collapsedGroups } = this.state;
56
+ return !!(collapsedGroups.indexOf(item.id) > -1 ^ collapsed);
57
+ };
58
+ this.checkFilterChildren = (items) => items.find((current) => {
59
+ const {
60
+ element: { type },
61
+ children
62
+ } = current;
63
+ if (type === "filter" && children.length > 0)
64
+ return true;
65
+ return this.checkFilterChildren(children);
66
+ });
67
+ this.dragRevert = () => {
68
+ const { itemsOld } = this.state;
69
+ this.setState({
70
+ items: itemsOld,
71
+ itemsOld: null,
72
+ dragItem: null,
73
+ isDirty: false
74
+ });
75
+ };
76
+ this.state = {
77
+ items: [],
78
+ itemsOld: null,
79
+ dragItem: null,
80
+ isDirty: false,
81
+ collapsedGroups: [],
82
+ stopTrackingMouse: this.stopTrackMouse.bind(this),
83
+ oldProps: props
84
+ };
85
+ this.el = null;
86
+ this.elCopyStyles = null;
87
+ this.mouse = {
88
+ last: { x: 0 },
89
+ shift: { x: 0 }
90
+ };
91
+ }
92
+ componentDidMount() {
93
+ const { childrenProp } = this.props;
94
+ let { items } = this.props;
95
+ items = listWithChildren(items, childrenProp);
96
+ this.setState({ items });
97
+ }
98
+ componentWillUnmount() {
99
+ this.stopTrackMouse();
100
+ }
101
+ static getDerivedStateFromProps(props, state) {
102
+ const { items: itemsNew, childrenProp } = props;
103
+ const { stopTrackingMouse, oldProps } = state;
104
+ if (shallowCompare({ props: oldProps, state: {} }, props, {})) {
105
+ stopTrackingMouse();
106
+ const extra = {};
107
+ if (oldProps.collapsed !== props.collapsed) {
108
+ extra.collapsedGroups = [];
109
+ }
110
+ return {
111
+ items: listWithChildren(itemsNew, childrenProp),
112
+ dragItem: null,
113
+ isDirty: false,
114
+ oldProps: props,
115
+ ...extra
116
+ };
117
+ }
118
+ return null;
119
+ }
120
+ getPathById(id, items = this.getDefaultItems()) {
121
+ return getPathById.call(this, id, items);
122
+ }
123
+ getItemByPath(path, items = this.getDefaultItems()) {
124
+ return getItemByPath.call(this, path, items);
125
+ }
126
+ getSplicePath(path, options = {}) {
127
+ return getSplicePath.call(this, path, options);
128
+ }
129
+ getRealNextPath(prevPath, nextPath) {
130
+ return getRealNextPath.call(this, prevPath, nextPath);
131
+ }
132
+ getItemOptions() {
133
+ return getItemOptions.call(this);
134
+ }
135
+ dragApply() {
136
+ const { onChange } = this.props;
137
+ const { items, isDirty, dragItem } = this.state;
138
+ this.setState({
139
+ itemsOld: null,
140
+ dragItem: null,
141
+ isDirty: false
142
+ });
143
+ if (onChange && isDirty)
144
+ onChange(items, dragItem);
145
+ }
146
+ tryIncreaseDepth(dragItem) {
147
+ tryIncreaseDepth.call(this, dragItem);
148
+ }
149
+ tryDecreaseDepth(dragItem) {
150
+ tryDecreaseDepth.call(this, dragItem);
151
+ }
152
+ moveItem({ dragItem, pathFrom, pathTo }, extraProps = {}) {
153
+ moveItem.call(this, { dragItem, pathFrom, pathTo }, extraProps);
154
+ }
155
+ renderDragLayer() {
156
+ const { group } = this.props;
157
+ const { dragItem } = this.state;
158
+ const el = document.querySelector(`.nestable-${group} .nestable-item-${dragItem.id}`);
159
+ let listStyles = {};
160
+ if (el) {
161
+ listStyles.width = el.clientWidth;
162
+ }
163
+ if (this.elCopyStyles) {
164
+ listStyles = {
165
+ ...listStyles,
166
+ ...this.elCopyStyles
167
+ };
168
+ }
169
+ const options = this.getItemOptions();
170
+ return /* @__PURE__ */ React2.createElement("div", {
171
+ className: "nestable-drag-layer"
172
+ }, /* @__PURE__ */ React2.createElement("ol", {
173
+ className: "nestable-list",
174
+ style: listStyles
175
+ }, /* @__PURE__ */ React2.createElement(NestableItem, {
176
+ isCopy: true,
177
+ item: dragItem,
178
+ options
179
+ })));
180
+ }
181
+ render() {
182
+ const { items, dragItem } = this.state;
183
+ const {
184
+ group,
185
+ isAndItem,
186
+ isOrItem,
187
+ isDraggableItem,
188
+ setDraggableItems,
189
+ singleRow
190
+ } = this.props;
191
+ const options = this.getItemOptions();
192
+ const childLength = items.length;
193
+ let childClass = "single";
194
+ if (childLength === 0)
195
+ childClass = "empty";
196
+ else if (childLength > 1)
197
+ childClass = "multiple";
198
+ return /* @__PURE__ */ React2.createElement("div", {
199
+ className: cn("nestable", `nestable-${group}`, {
200
+ "is-drag-active": dragItem
201
+ })
202
+ }, /* @__PURE__ */ React2.createElement("ol", {
203
+ className: `nestable-list nestable-group nestable-child-count-${childClass}`
204
+ }, items.map((item, i) => /* @__PURE__ */ React2.createElement(NestableItem, {
205
+ key: item.id,
206
+ index: i,
207
+ isAndItem,
208
+ isDraggableItem,
209
+ isOrItem,
210
+ item,
211
+ options,
212
+ setDraggableItems,
213
+ singleRow
214
+ }))), dragItem && this.renderDragLayer());
215
+ }
216
+ }
217
+ Nestable.defaultProps = {
218
+ items: [],
219
+ collapsed: false,
220
+ group: Math.random().toString(36).slice(2),
221
+ childrenProp: "children",
222
+ onChange: () => {
223
+ }
224
+ };
225
+ Nestable.propTypes = {
226
+ childrenProp: PropTypes.string,
227
+ group: PropTypes.string,
228
+ items: PropTypes.arrayOf(PropTypes.shape({})),
229
+ collapsed: PropTypes.bool,
230
+ onChange: PropTypes.func,
231
+ isAndItem: PropTypes.bool,
232
+ isOrItem: PropTypes.bool,
233
+ isDraggableItem: PropTypes.bool,
234
+ setDraggableItems: PropTypes.func,
235
+ singleRow: PropTypes.bool
236
+ };
237
+ var Nestable_default = Nestable;
238
+ export {
239
+ Nestable_default as default
240
+ };
241
+ //# sourceMappingURL=Nestable.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/components/Nestable/Nestable.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-bitwise, max-lines */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport { listWithChildren } from '@elliemae/ds-shared/utils';\nimport { isEqualWith } from '@elliemae/ds-utilities';\nimport {\n tryIncreaseDepth,\n tryDecreaseDepth,\n moveItem,\n getItemOptions,\n getRealNextPath,\n getPathById,\n getItemByPath,\n getItemDepth,\n getSplicePath,\n onDragStart,\n onDragEnd,\n onMouseMove,\n onMouseEnter,\n onToggleCollapse,\n onKeyDown,\n} from './actions';\n\nimport NestableItem from './NestableItem';\n\nconst shallowCompare = (instance, nextProps, nextState) =>\n !isEqualWith(instance.props, nextProps) ||\n !isEqualWith(instance.state, nextState);\n\nclass Nestable extends Component {\n constructor(props) {\n super(props);\n this.state = {\n items: [],\n itemsOld: null,\n dragItem: null,\n isDirty: false,\n collapsedGroups: [],\n stopTrackingMouse: this.stopTrackMouse.bind(this),\n oldProps: props,\n };\n\n this.el = null;\n this.elCopyStyles = null;\n this.mouse = {\n last: { x: 0 },\n shift: { x: 0 },\n };\n }\n\n componentDidMount() {\n const { childrenProp } = this.props;\n let { items } = this.props;\n // make sure every item has property 'children'\n items = listWithChildren(items, childrenProp);\n this.setState({ items });\n }\n\n componentWillUnmount() {\n this.stopTrackMouse();\n }\n\n static getDerivedStateFromProps(props, state) {\n const { items: itemsNew, childrenProp } = props;\n const { stopTrackingMouse, oldProps } = state;\n\n if (shallowCompare({ props: oldProps, state: {} }, props, {})) {\n stopTrackingMouse();\n const extra = {};\n if (oldProps.collapsed !== props.collapsed) {\n extra.collapsedGroups = [];\n }\n return {\n items: listWithChildren(itemsNew, childrenProp),\n dragItem: null,\n isDirty: false,\n oldProps: props,\n ...extra,\n };\n }\n return null;\n }\n\n onDragStart = (e, item) => {\n onDragStart.call(this, e, item);\n };\n\n onDragEnd = (e, isCancel) => onDragEnd.call(this, e, isCancel);\n\n onMouseMove = (e) => onMouseMove.call(this, e);\n\n onMouseEnter = (e, item) => onMouseEnter.call(this, e, item);\n\n onToggleCollapse = (item, isGetter) =>\n onToggleCollapse.call(this, item, isGetter);\n\n onKeyDown = (e) => onKeyDown.call(this, e);\n\n getDefaultItems = () => {\n const { items } = this.state;\n return items;\n };\n\n getPathById(id, items = this.getDefaultItems()) {\n return getPathById.call(this, id, items);\n }\n\n getItemByPath(path, items = this.getDefaultItems()) {\n return getItemByPath.call(this, path, items);\n }\n\n getItemDepth = (item) => getItemDepth.call(this, item);\n\n getSplicePath(path, options = {}) {\n return getSplicePath.call(this, path, options);\n }\n\n getRealNextPath(prevPath, nextPath) {\n return getRealNextPath.call(this, prevPath, nextPath);\n }\n\n getItemOptions() {\n return getItemOptions.call(this);\n }\n\n startTrackMouse = () => {\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onDragEnd);\n document.addEventListener('keydown', this.onKeyDown);\n };\n\n stopTrackMouse = () => {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onDragEnd);\n document.removeEventListener('keydown', this.onKeyDown);\n this.elCopyStyles = null;\n };\n\n isCollapsed = (item) => {\n const { collapsed } = this.props;\n const { collapsedGroups } = this.state;\n return !!((collapsedGroups.indexOf(item.id) > -1) ^ collapsed);\n };\n\n checkFilterChildren = (items) =>\n items.find((current) => {\n const {\n element: { type },\n children,\n } = current;\n if (type === 'filter' && children.length > 0) return true;\n return this.checkFilterChildren(children);\n });\n\n dragRevert = () => {\n const { itemsOld } = this.state;\n\n this.setState({\n items: itemsOld,\n itemsOld: null,\n dragItem: null,\n isDirty: false,\n });\n };\n\n dragApply() {\n const { onChange } = this.props;\n const { items, isDirty, dragItem } = this.state;\n\n this.setState({\n itemsOld: null,\n dragItem: null,\n isDirty: false,\n });\n\n if (onChange && isDirty) onChange(items, dragItem);\n }\n\n tryIncreaseDepth(dragItem) {\n tryIncreaseDepth.call(this, dragItem);\n }\n\n tryDecreaseDepth(dragItem) {\n tryDecreaseDepth.call(this, dragItem);\n }\n\n moveItem({ dragItem, pathFrom, pathTo }, extraProps = {}) {\n moveItem.call(this, { dragItem, pathFrom, pathTo }, extraProps);\n }\n\n renderDragLayer() {\n const { group } = this.props;\n const { dragItem } = this.state;\n const el = document.querySelector(\n `.nestable-${group} .nestable-item-${dragItem.id}`,\n );\n\n let listStyles = {};\n if (el) {\n listStyles.width = el.clientWidth;\n }\n if (this.elCopyStyles) {\n listStyles = {\n ...listStyles,\n ...this.elCopyStyles,\n };\n }\n\n const options = this.getItemOptions();\n\n return (\n <div className=\"nestable-drag-layer\">\n <ol className=\"nestable-list\" style={listStyles}>\n <NestableItem isCopy item={dragItem} options={options} />\n </ol>\n </div>\n );\n }\n\n render() {\n const { items, dragItem } = this.state;\n const {\n group,\n isAndItem,\n isOrItem,\n isDraggableItem,\n setDraggableItems,\n singleRow,\n } = this.props;\n const options = this.getItemOptions();\n const childLength = items.length;\n let childClass = 'single';\n if (childLength === 0) childClass = 'empty';\n else if (childLength > 1) childClass = 'multiple';\n\n return (\n <div\n className={cn('nestable', `nestable-${group}`, {\n 'is-drag-active': dragItem,\n })}\n >\n <ol\n className={`nestable-list nestable-group nestable-child-count-${childClass}`}\n >\n {items.map((item, i) => (\n <NestableItem\n key={item.id}\n index={i}\n isAndItem={isAndItem}\n isDraggableItem={isDraggableItem}\n isOrItem={isOrItem}\n item={item}\n options={options}\n setDraggableItems={setDraggableItems}\n singleRow={singleRow}\n />\n ))}\n </ol>\n {dragItem && this.renderDragLayer()}\n </div>\n );\n }\n}\n\nNestable.defaultProps = {\n items: [],\n collapsed: false,\n group: Math.random().toString(36).slice(2),\n childrenProp: 'children',\n onChange: () => {},\n};\n\nNestable.propTypes = {\n childrenProp: PropTypes.string,\n group: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n collapsed: PropTypes.bool,\n onChange: PropTypes.func,\n isAndItem: PropTypes.bool,\n isOrItem: PropTypes.bool,\n isDraggableItem: PropTypes.bool,\n setDraggableItems: PropTypes.func,\n singleRow: PropTypes.bool,\n};\n\nexport default Nestable;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,90 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import cn from "classnames";
4
+ const NestableItem = ({
5
+ item,
6
+ isCopy,
7
+ options,
8
+ index,
9
+ isAndItem,
10
+ isOrItem,
11
+ isDraggableItem,
12
+ singleRow
13
+ }) => {
14
+ const { dragItem, renderItem, handler, childrenProp } = options;
15
+ const isCollapsed = options.isCollapsed(item);
16
+ const isDragging = !isCopy && dragItem && dragItem.id === item.id;
17
+ const hasChildren = item[childrenProp] && item[childrenProp].length > 0;
18
+ let Handler;
19
+ const isOrGroup = item.element.type === "group" && (item.element.condition === "" || item.element.condition === false);
20
+ const isAndGroup = item.element.type === "group" && !(item.element.condition === "" || item.element.condition === false);
21
+ const itemProps = {
22
+ className: cn(`nestable-item${isCopy ? "-copy" : ""}`, `nestable-item${isCopy ? "-copy" : ""}-${item.id}`, `nestable-item-type-${item.element.type}`, {
23
+ "is-or-group": isOrGroup,
24
+ "is-and-group": isAndGroup,
25
+ "is-and-filter": item.element.type === "filter" && isAndItem,
26
+ "is-or-filter": item.element.type === "filter" && isOrItem
27
+ }, {
28
+ "is-dragging": isDragging
29
+ })
30
+ };
31
+ let rowProps = {};
32
+ let handlerProps = {};
33
+ if (!isCopy) {
34
+ if (dragItem) {
35
+ rowProps = {
36
+ ...rowProps,
37
+ onMouseEnter: (e) => options.onMouseEnter(e, item)
38
+ };
39
+ } else {
40
+ handlerProps = {
41
+ ...handlerProps,
42
+ draggable: isDraggableItem !== false,
43
+ onDragStart: (e) => options.onDragStart(e, item)
44
+ };
45
+ }
46
+ }
47
+ if (handler) {
48
+ Handler = /* @__PURE__ */ React2.createElement("span", {
49
+ className: "nestable-item-handler",
50
+ ...handlerProps
51
+ }, handler);
52
+ } else {
53
+ rowProps = {
54
+ ...rowProps,
55
+ ...handlerProps
56
+ };
57
+ }
58
+ const childLength = item[childrenProp].length;
59
+ let childClass = "single";
60
+ if (childLength === 0)
61
+ childClass = "empty";
62
+ else if (childLength > 1)
63
+ childClass = "multiple";
64
+ return /* @__PURE__ */ React2.createElement("li", {
65
+ ...itemProps
66
+ }, /* @__PURE__ */ React2.createElement("div", {
67
+ className: `nestable-item-name nestable-item-name--${item.element.type} `,
68
+ ...rowProps
69
+ }, renderItem({
70
+ item,
71
+ handler: Handler,
72
+ index
73
+ })), hasChildren && item.element.type === "group" && !isCollapsed && /* @__PURE__ */ React2.createElement("ol", {
74
+ className: `nestable-list nestable-child-count-${childClass} `
75
+ }, item[childrenProp].map((currentitem, i) => /* @__PURE__ */ React2.createElement(NestableItem, {
76
+ key: i,
77
+ index: i,
78
+ isAndItem: isAndGroup,
79
+ isCopy,
80
+ isOrItem: isOrGroup,
81
+ item: currentitem,
82
+ options,
83
+ singleRow
84
+ }))));
85
+ };
86
+ var NestableItem_default = NestableItem;
87
+ export {
88
+ NestableItem_default as default
89
+ };
90
+ //# sourceMappingURL=NestableItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/components/Nestable/NestableItem.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport React from 'react';\nimport cn from 'classnames';\n\nconst NestableItem = ({\n item,\n isCopy,\n options,\n index,\n isAndItem,\n isOrItem,\n isDraggableItem,\n singleRow,\n}) => {\n const { dragItem, renderItem, handler, childrenProp } = options;\n\n const isCollapsed = options.isCollapsed(item);\n const isDragging = !isCopy && dragItem && dragItem.id === item.id;\n const hasChildren = item[childrenProp] && item[childrenProp].length > 0;\n\n let Handler;\n const isOrGroup =\n item.element.type === 'group' &&\n (item.element.condition === '' || item.element.condition === false);\n const isAndGroup =\n item.element.type === 'group' &&\n !(item.element.condition === '' || item.element.condition === false);\n\n const itemProps = {\n className: cn(\n `nestable-item${isCopy ? '-copy' : ''}`,\n `nestable-item${isCopy ? '-copy' : ''}-${item.id}`,\n `nestable-item-type-${item.element.type}`,\n {\n 'is-or-group': isOrGroup,\n 'is-and-group': isAndGroup,\n 'is-and-filter': item.element.type === 'filter' && isAndItem,\n 'is-or-filter': item.element.type === 'filter' && isOrItem,\n },\n {\n 'is-dragging': isDragging,\n },\n ),\n };\n\n let rowProps = {};\n let handlerProps = {};\n if (!isCopy) {\n if (dragItem) {\n rowProps = {\n ...rowProps,\n onMouseEnter: e => options.onMouseEnter(e, item),\n };\n } else {\n handlerProps = {\n ...handlerProps,\n draggable: isDraggableItem !== false,\n onDragStart: e => options.onDragStart(e, item),\n };\n }\n }\n\n if (handler) {\n Handler = (\n <span className=\"nestable-item-handler\" {...handlerProps}>\n {handler}\n </span>\n );\n // Handler = React.cloneElement(handler, handlerProps);\n } else {\n rowProps = {\n ...rowProps,\n ...handlerProps,\n };\n }\n\n const childLength = item[childrenProp].length;\n let childClass = 'single';\n if (childLength === 0) childClass = 'empty';\n else if (childLength > 1) childClass = 'multiple';\n\n return (\n <li {...itemProps}>\n <div\n className={`nestable-item-name nestable-item-name--${item.element.type} `}\n {...rowProps}\n >\n {renderItem({\n item,\n handler: Handler,\n index,\n })}\n </div>\n {hasChildren && item.element.type === 'group' && !isCollapsed && (\n <ol className={`nestable-list nestable-child-count-${childClass} `}>\n {item[childrenProp].map((currentitem, i) => (\n <NestableItem\n key={i}\n index={i}\n isAndItem={isAndGroup}\n isCopy={isCopy}\n isOrItem={isOrGroup}\n item={currentitem}\n options={options}\n singleRow={singleRow}\n />\n ))}\n </ol>\n )}\n </li>\n );\n};\n\nexport default NestableItem;\n"],
5
+ "mappings": "AAAA;ACCA;AACA;AAEA,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACI;AACJ,QAAM,EAAE,UAAU,YAAY,SAAS,iBAAiB;AAExD,QAAM,cAAc,QAAQ,YAAY;AACxC,QAAM,aAAa,CAAC,UAAU,YAAY,SAAS,OAAO,KAAK;AAC/D,QAAM,cAAc,KAAK,iBAAiB,KAAK,cAAc,SAAS;AAEtE,MAAI;AACJ,QAAM,YACJ,KAAK,QAAQ,SAAS,WACrB,MAAK,QAAQ,cAAc,MAAM,KAAK,QAAQ,cAAc;AAC/D,QAAM,aACJ,KAAK,QAAQ,SAAS,WACtB,CAAE,MAAK,QAAQ,cAAc,MAAM,KAAK,QAAQ,cAAc;AAEhE,QAAM,YAAY;AAAA,IAChB,WAAW,GACT,gBAAgB,SAAS,UAAU,MACnC,gBAAgB,SAAS,UAAU,MAAM,KAAK,MAC9C,sBAAsB,KAAK,QAAQ,QACnC;AAAA,MACE,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,iBAAiB,KAAK,QAAQ,SAAS,YAAY;AAAA,MACnD,gBAAgB,KAAK,QAAQ,SAAS,YAAY;AAAA,OAEpD;AAAA,MACE,eAAe;AAAA;AAAA;AAKrB,MAAI,WAAW;AACf,MAAI,eAAe;AACnB,MAAI,CAAC,QAAQ;AACX,QAAI,UAAU;AACZ,iBAAW;AAAA,WACN;AAAA,QACH,cAAc,OAAK,QAAQ,aAAa,GAAG;AAAA;AAAA,WAExC;AACL,qBAAe;AAAA,WACV;AAAA,QACH,WAAW,oBAAoB;AAAA,QAC/B,aAAa,OAAK,QAAQ,YAAY,GAAG;AAAA;AAAA;AAAA;AAK/C,MAAI,SAAS;AACX,cACE,qCAAC,QAAD;AAAA,MAAM,WAAU;AAAA,SAA4B;AAAA,OACzC;AAAA,SAIA;AACL,eAAW;AAAA,SACN;AAAA,SACA;AAAA;AAAA;AAIP,QAAM,cAAc,KAAK,cAAc;AACvC,MAAI,aAAa;AACjB,MAAI,gBAAgB;AAAG,iBAAa;AAAA,WAC3B,cAAc;AAAG,iBAAa;AAEvC,SACE,qCAAC,MAAD;AAAA,OAAQ;AAAA,KACN,qCAAC,OAAD;AAAA,IACE,WAAW,0CAA0C,KAAK,QAAQ;AAAA,OAC9D;AAAA,KAEH,WAAW;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT;AAAA,OAGH,eAAe,KAAK,QAAQ,SAAS,WAAW,CAAC,eAChD,qCAAC,MAAD;AAAA,IAAI,WAAW,sCAAsC;AAAA,KAClD,KAAK,cAAc,IAAI,CAAC,aAAa,MACpC,qCAAC,cAAD;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA;AAAA;AAAA;AASd,IAAO,uBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,119 @@
1
+ import * as React from "react";
2
+ import {
3
+ closest,
4
+ getOffsetRect,
5
+ getTotalScroll,
6
+ getTransformProps
7
+ } from "@elliemae/ds-shared/utils";
8
+ function onDragStart(e, item) {
9
+ if (e) {
10
+ e.preventDefault();
11
+ e.stopPropagation();
12
+ }
13
+ this.el = closest(e.target, ".nestable-item");
14
+ this.startTrackMouse();
15
+ this.onMouseMove(e);
16
+ const { items } = this.state;
17
+ this.setState({
18
+ dragItem: item,
19
+ itemsOld: items
20
+ });
21
+ }
22
+ function onDragEnd(e, isCancel) {
23
+ if (e && e.preventDefault)
24
+ e.preventDefault();
25
+ this.stopTrackMouse();
26
+ this.el = null;
27
+ const { items } = this.state;
28
+ const nestedInFilter = this.checkFilterChildren(items);
29
+ if (nestedInFilter)
30
+ return this.dragRevert();
31
+ return isCancel ? this.dragRevert() : this.dragApply();
32
+ }
33
+ function onMouseMove(e) {
34
+ const { group, threshold } = this.props;
35
+ const { dragItem } = this.state;
36
+ const { clientX, clientY } = e;
37
+ const transformProps = getTransformProps(clientX, clientY);
38
+ const elCopy = document.querySelector(`.nestable-${group} .nestable-drag-layer > .nestable-list`);
39
+ if (!this.elCopyStyles) {
40
+ const offset = getOffsetRect(this.el);
41
+ const scroll = getTotalScroll(this.el);
42
+ this.elCopyStyles = {
43
+ marginTop: offset.top - clientY - scroll.top,
44
+ marginLeft: offset.left - clientX - scroll.left,
45
+ ...transformProps
46
+ };
47
+ } else {
48
+ this.elCopyStyles = {
49
+ ...this.elCopyStyles,
50
+ ...transformProps
51
+ };
52
+ for (const key in transformProps) {
53
+ if (transformProps.hasOwnProperty(key)) {
54
+ elCopy.style[key] = transformProps[key];
55
+ }
56
+ }
57
+ const diffX = clientX - this.mouse.last.x;
58
+ if (diffX >= 0 && this.mouse.shift.x >= 0 || diffX <= 0 && this.mouse.shift.x <= 0) {
59
+ this.mouse.shift.x += diffX;
60
+ } else {
61
+ this.mouse.shift.x = 0;
62
+ }
63
+ this.mouse.last.x = clientX;
64
+ if (Math.abs(this.mouse.shift.x) > threshold) {
65
+ if (this.mouse.shift.x > 0) {
66
+ this.tryIncreaseDepth(dragItem);
67
+ } else {
68
+ this.tryDecreaseDepth(dragItem);
69
+ }
70
+ this.mouse.shift.x = 0;
71
+ }
72
+ }
73
+ }
74
+ function onMouseEnter(e, item) {
75
+ if (e) {
76
+ e.preventDefault();
77
+ e.stopPropagation();
78
+ }
79
+ const { collapsed, childrenProp } = this.props;
80
+ const { dragItem } = this.state;
81
+ if (dragItem.id === item.id)
82
+ return;
83
+ const pathFrom = this.getPathById(dragItem.id);
84
+ const pathTo = this.getPathById(item.id);
85
+ let collapseProps = {};
86
+ if (collapsed && pathFrom.length > 1) {
87
+ const parent = this.getItemByPath(pathFrom.slice(0, -1));
88
+ if (parent[childrenProp].length === 1) {
89
+ collapseProps = this.onToggleCollapse(parent, true);
90
+ }
91
+ }
92
+ this.moveItem({ dragItem, pathFrom, pathTo }, collapseProps);
93
+ }
94
+ function onToggleCollapse(item, isGetter) {
95
+ const { collapsed } = this.props;
96
+ const { collapsedGroups } = this.state;
97
+ const isCollapsed = this.isCollapsed(item);
98
+ const newState = {
99
+ collapsedGroups: isCollapsed ^ collapsed ? collapsedGroups.filter((id) => id !== item.id) : collapsedGroups.concat(item.id)
100
+ };
101
+ if (isGetter) {
102
+ return newState;
103
+ }
104
+ return this.setState(newState);
105
+ }
106
+ function onKeyDown(e) {
107
+ if (e.which === 27) {
108
+ this.onDragEnd(null, true);
109
+ }
110
+ }
111
+ export {
112
+ onDragEnd,
113
+ onDragStart,
114
+ onKeyDown,
115
+ onMouseEnter,
116
+ onMouseMove,
117
+ onToggleCollapse
118
+ };
119
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/components/Nestable/actions/events.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-bitwise, no-loops/no-loops, max-lines, max-statements, no-restricted-syntax, no-prototype-builtins */\nimport {\n closest,\n getOffsetRect,\n getTotalScroll,\n getTransformProps,\n} from '@elliemae/ds-shared/utils';\n\nexport function onDragStart(e, item) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.el = closest(e.target, '.nestable-item');\n this.startTrackMouse();\n this.onMouseMove(e);\n const { items } = this.state;\n this.setState({\n dragItem: item,\n itemsOld: items,\n });\n}\n\nexport function onDragEnd(e, isCancel) {\n if (e && e.preventDefault) e.preventDefault();\n\n this.stopTrackMouse();\n this.el = null;\n\n // check if filter has children\n const { items } = this.state;\n const nestedInFilter = this.checkFilterChildren(items);\n if (nestedInFilter) return this.dragRevert();\n\n return isCancel ? this.dragRevert() : this.dragApply();\n}\n\nexport function onMouseMove(e) {\n const { group, threshold } = this.props;\n const { dragItem } = this.state;\n const { clientX, clientY } = e;\n const transformProps = getTransformProps(clientX, clientY);\n const elCopy = document.querySelector(\n `.nestable-${group} .nestable-drag-layer > .nestable-list`,\n );\n if (!this.elCopyStyles) {\n const offset = getOffsetRect(this.el);\n const scroll = getTotalScroll(this.el);\n\n this.elCopyStyles = {\n marginTop: offset.top - clientY - scroll.top,\n marginLeft: offset.left - clientX - scroll.left,\n ...transformProps,\n };\n } else {\n this.elCopyStyles = {\n ...this.elCopyStyles,\n ...transformProps,\n };\n for (const key in transformProps) {\n if (transformProps.hasOwnProperty(key)) {\n elCopy.style[key] = transformProps[key];\n }\n }\n const diffX = clientX - this.mouse.last.x;\n if (\n (diffX >= 0 && this.mouse.shift.x >= 0) ||\n (diffX <= 0 && this.mouse.shift.x <= 0)\n ) {\n this.mouse.shift.x += diffX;\n } else {\n this.mouse.shift.x = 0;\n }\n this.mouse.last.x = clientX;\n if (Math.abs(this.mouse.shift.x) > threshold) {\n if (this.mouse.shift.x > 0) {\n this.tryIncreaseDepth(dragItem);\n } else {\n this.tryDecreaseDepth(dragItem);\n }\n this.mouse.shift.x = 0;\n }\n }\n}\nexport function onMouseEnter(e, item) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const { collapsed, childrenProp } = this.props;\n const { dragItem } = this.state;\n if (dragItem.id === item.id) return;\n\n const pathFrom = this.getPathById(dragItem.id);\n const pathTo = this.getPathById(item.id);\n\n // if collapsed by default\n // and move last (by count) child\n // remove parent node from list of open nodes\n let collapseProps = {};\n if (collapsed && pathFrom.length > 1) {\n const parent = this.getItemByPath(pathFrom.slice(0, -1));\n if (parent[childrenProp].length === 1) {\n collapseProps = this.onToggleCollapse(parent, true);\n }\n }\n\n this.moveItem({ dragItem, pathFrom, pathTo }, collapseProps);\n}\n\nexport function onToggleCollapse(item, isGetter) {\n const { collapsed } = this.props;\n const { collapsedGroups } = this.state;\n const isCollapsed = this.isCollapsed(item);\n\n const newState = {\n collapsedGroups:\n isCollapsed ^ collapsed\n ? collapsedGroups.filter(id => id !== item.id)\n : collapsedGroups.concat(item.id),\n };\n\n if (isGetter) {\n return newState;\n }\n return this.setState(newState);\n}\nexport function onKeyDown(e) {\n if (e.which === 27) {\n // ESC\n this.onDragEnd(null, true);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,13 +1,7 @@
1
+ import * as React from "react";
1
2
  function getItemOptions() {
2
- const {
3
- renderItem,
4
- renderCollapseIcon,
5
- handler,
6
- childrenProp
7
- } = this.props;
8
- const {
9
- dragItem
10
- } = this.state;
3
+ const { renderItem, renderCollapseIcon, handler, childrenProp } = this.props;
4
+ const { dragItem } = this.state;
11
5
  return {
12
6
  dragItem,
13
7
  childrenProp,
@@ -20,5 +14,7 @@ function getItemOptions() {
20
14
  onToggleCollapse: this.onToggleCollapse
21
15
  };
22
16
  }
23
-
24
- export { getItemOptions };
17
+ export {
18
+ getItemOptions
19
+ };
20
+ //# sourceMappingURL=getItemOptions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/components/Nestable/actions/getItemOptions.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export function getItemOptions() {\n const { renderItem, renderCollapseIcon, handler, childrenProp } = this.props;\n const { dragItem } = this.state;\n\n return {\n dragItem,\n childrenProp,\n renderItem,\n renderCollapseIcon,\n handler,\n\n onDragStart: this.onDragStart,\n onMouseEnter: this.onMouseEnter,\n isCollapsed: this.isCollapsed,\n onToggleCollapse: this.onToggleCollapse,\n };\n}\n"],
5
+ "mappings": "AAAA;ACAO,0BAA0B;AAC/B,QAAM,EAAE,YAAY,oBAAoB,SAAS,iBAAiB,KAAK;AACvE,QAAM,EAAE,aAAa,KAAK;AAE1B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,aAAa,KAAK;AAAA,IAClB,cAAc,KAAK;AAAA,IACnB,aAAa,KAAK;AAAA,IAClB,kBAAkB,KAAK;AAAA;AAAA;",
6
+ "names": []
7
+ }