@react-stately/dnd 3.0.0-alpha.0 → 3.0.0-alpha.4

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.
package/dist/main.js CHANGED
@@ -1,167 +1,144 @@
1
- var {
2
- useState
3
- } = require("react");
1
+ var $35Xep$react = require("react");
4
2
 
5
- var _babelRuntimeHelpersExtends = $parcel$interopDefault(require("@babel/runtime/helpers/extends"));
6
-
7
- function $parcel$interopDefault(a) {
8
- return a && a.__esModule ? a.default : a;
9
- }
10
-
11
- function useDraggableCollectionState(props) {
12
- let [draggingKeys, setDraggingKeys] = useState(new Set());
13
-
14
- let getKeys = key => {
15
- // The clicked item is always added to the drag. If it is selected, then all of the
16
- // other selected items are also dragged. If it is not selected, the only the clicked
17
- // item is dragged. This matches native macOS behavior.
18
- let keys = new Set(props.selectionManager.isSelected(key) ? props.selectionManager.selectedKeys : []);
19
- keys.add(key);
20
- return keys;
21
- };
22
-
23
- return {
24
- collection: props.collection,
25
- selectionManager: props.selectionManager,
26
-
27
- isDragging(key) {
28
- return draggingKeys.has(key);
29
- },
30
-
31
- getKeysForDrag: getKeys,
32
-
33
- getItems(key) {
34
- return props.getItems(getKeys(key));
35
- },
36
-
37
- renderPreview(key) {
38
- if (typeof props.renderPreview === 'function') {
39
- return props.renderPreview(getKeys(key), key);
40
- }
41
-
42
- return null;
43
- },
44
-
45
- startDrag(key, event) {
46
- let keys = getKeys(key);
47
- setDraggingKeys(keys);
48
-
49
- if (typeof props.onDragStart === 'function') {
50
- props.onDragStart(_babelRuntimeHelpersExtends({}, event, {
51
- keys
52
- }));
53
- }
54
- },
55
-
56
- moveDrag(event) {
57
- if (typeof props.onDragMove === 'function') {
58
- props.onDragMove(_babelRuntimeHelpersExtends({}, event, {
59
- keys: draggingKeys
60
- }));
61
- }
62
- },
63
-
64
- endDrag(event) {
65
- if (typeof props.onDragEnd === 'function') {
66
- props.onDragEnd(_babelRuntimeHelpersExtends({}, event, {
67
- keys: draggingKeys
68
- }));
69
- }
70
-
71
- setDraggingKeys(new Set());
72
- }
73
-
74
- };
75
- }
76
-
77
- exports.useDraggableCollectionState = useDraggableCollectionState;
78
-
79
- function useDroppableCollectionState(props) {
80
- let [target, setTarget] = useState(null);
81
-
82
- let getOppositeTarget = target => {
83
- if (target.dropPosition === 'before') {
84
- let key = props.collection.getKeyBefore(target.key);
85
- return key != null ? {
86
- type: 'item',
87
- key,
88
- dropPosition: 'after'
89
- } : null;
90
- } else if (target.dropPosition === 'after') {
91
- let key = props.collection.getKeyAfter(target.key);
92
- return key != null ? {
93
- type: 'item',
94
- key,
95
- dropPosition: 'before'
96
- } : null;
3
+ function $parcel$exportWildcard(dest, source) {
4
+ Object.keys(source).forEach(function(key) {
5
+ if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
6
+ return;
97
7
  }
98
- };
99
-
100
- return {
101
- collection: props.collection,
102
- target,
103
-
104
- setTarget(newTarget) {
105
- if (this.isDropTarget(newTarget)) {
106
- return;
107
- }
108
-
109
- if (target && typeof props.onDropExit === 'function') {
110
- props.onDropExit({
111
- type: 'dropexit',
112
- x: 0,
113
- // todo
114
- y: 0,
115
- target
116
- });
117
- }
118
8
 
119
- if (newTarget && typeof props.onDropEnter === 'function') {
120
- props.onDropEnter({
121
- type: 'dropenter',
122
- x: 0,
123
- // todo
124
- y: 0,
125
- target: newTarget
126
- });
9
+ Object.defineProperty(dest, key, {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return source[key];
127
13
  }
14
+ });
15
+ });
128
16
 
129
- setTarget(newTarget);
130
- },
131
-
132
- isDropTarget(dropTarget) {
133
- if ($e9dc567085e93bc34b98b82b1b477$var$isEqualDropTarget(dropTarget, target)) {
134
- return true;
135
- } // Check if the targets point at the same point between two items, one referring before, and the other after.
136
-
137
-
138
- if ((dropTarget == null ? void 0 : dropTarget.type) === 'item' && (target == null ? void 0 : target.type) === 'item' && dropTarget.key !== target.key && dropTarget.dropPosition !== target.dropPosition && dropTarget.dropPosition !== 'on' && target.dropPosition !== 'on') {
139
- return $e9dc567085e93bc34b98b82b1b477$var$isEqualDropTarget(getOppositeTarget(dropTarget), target) || $e9dc567085e93bc34b98b82b1b477$var$isEqualDropTarget(dropTarget, getOppositeTarget(target));
140
- }
17
+ return dest;
18
+ }
19
+ function $parcel$export(e, n, v, s) {
20
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
21
+ }
22
+ var $f0f141772fe5abed$exports = {};
23
+
24
+ $parcel$export($f0f141772fe5abed$exports, "useDraggableCollectionState", () => $f0f141772fe5abed$export$29efd034f1d79f81);
25
+
26
+ function $f0f141772fe5abed$export$29efd034f1d79f81(props) {
27
+ let [draggingKeys, setDraggingKeys] = $35Xep$react.useState(new Set());
28
+ let getKeys = (key)=>{
29
+ // The clicked item is always added to the drag. If it is selected, then all of the
30
+ // other selected items are also dragged. If it is not selected, the only the clicked
31
+ // item is dragged. This matches native macOS behavior.
32
+ let keys = new Set(props.selectionManager.isSelected(key) ? props.selectionManager.selectedKeys : []);
33
+ keys.add(key);
34
+ return keys;
35
+ };
36
+ return {
37
+ collection: props.collection,
38
+ selectionManager: props.selectionManager,
39
+ isDragging (key) {
40
+ return draggingKeys.has(key);
41
+ },
42
+ getKeysForDrag: getKeys,
43
+ getItems (key) {
44
+ return props.getItems(getKeys(key));
45
+ },
46
+ renderPreview (key) {
47
+ if (typeof props.renderPreview === 'function') return props.renderPreview(getKeys(key), key);
48
+ return null;
49
+ },
50
+ startDrag (key, event) {
51
+ let keys = getKeys(key);
52
+ setDraggingKeys(keys);
53
+ if (typeof props.onDragStart === 'function') props.onDragStart({
54
+ ...event,
55
+ keys: keys
56
+ });
57
+ },
58
+ moveDrag (event) {
59
+ if (typeof props.onDragMove === 'function') props.onDragMove({
60
+ ...event,
61
+ keys: draggingKeys
62
+ });
63
+ },
64
+ endDrag (event) {
65
+ if (typeof props.onDragEnd === 'function') props.onDragEnd({
66
+ ...event,
67
+ keys: draggingKeys
68
+ });
69
+ setDraggingKeys(new Set());
70
+ }
71
+ };
72
+ }
141
73
 
142
- return false;
143
- },
144
74
 
145
- getDropOperation(target, types, allowedOperations) {
146
- return typeof props.getDropOperation === 'function' ? props.getDropOperation(target, types, allowedOperations) : allowedOperations[0];
75
+ var $f67e1fddbca9a82e$exports = {};
76
+
77
+ $parcel$export($f67e1fddbca9a82e$exports, "useDroppableCollectionState", () => $f67e1fddbca9a82e$export$926850f6ecef79d0);
78
+
79
+ function $f67e1fddbca9a82e$export$926850f6ecef79d0(props) {
80
+ let [target1, setTarget] = $35Xep$react.useState(null);
81
+ let getOppositeTarget = (target)=>{
82
+ if (target.dropPosition === 'before') {
83
+ let key = props.collection.getKeyBefore(target.key);
84
+ return key != null ? {
85
+ type: 'item',
86
+ key: key,
87
+ dropPosition: 'after'
88
+ } : null;
89
+ } else if (target.dropPosition === 'after') {
90
+ let key = props.collection.getKeyAfter(target.key);
91
+ return key != null ? {
92
+ type: 'item',
93
+ key: key,
94
+ dropPosition: 'before'
95
+ } : null;
96
+ }
97
+ };
98
+ return {
99
+ collection: props.collection,
100
+ selectionManager: props.selectionManager,
101
+ target: target1,
102
+ setTarget (newTarget) {
103
+ if (this.isDropTarget(newTarget)) return;
104
+ if (target1 && typeof props.onDropExit === 'function') props.onDropExit({
105
+ type: 'dropexit',
106
+ x: 0,
107
+ y: 0,
108
+ target: target1
109
+ });
110
+ if (newTarget && typeof props.onDropEnter === 'function') props.onDropEnter({
111
+ type: 'dropenter',
112
+ x: 0,
113
+ y: 0,
114
+ target: newTarget
115
+ });
116
+ setTarget(newTarget);
117
+ },
118
+ isDropTarget (dropTarget) {
119
+ if ($f67e1fddbca9a82e$var$isEqualDropTarget(dropTarget, target1)) return true;
120
+ // Check if the targets point at the same point between two items, one referring before, and the other after.
121
+ if ((dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.type) === 'item' && (target1 === null || target1 === void 0 ? void 0 : target1.type) === 'item' && dropTarget.key !== target1.key && dropTarget.dropPosition !== target1.dropPosition && dropTarget.dropPosition !== 'on' && target1.dropPosition !== 'on') return $f67e1fddbca9a82e$var$isEqualDropTarget(getOppositeTarget(dropTarget), target1) || $f67e1fddbca9a82e$var$isEqualDropTarget(dropTarget, getOppositeTarget(target1));
122
+ return false;
123
+ },
124
+ getDropOperation (target, types, allowedOperations) {
125
+ return typeof props.getDropOperation === 'function' ? props.getDropOperation(target, types, allowedOperations) : allowedOperations[0];
126
+ }
127
+ };
128
+ }
129
+ function $f67e1fddbca9a82e$var$isEqualDropTarget(a, b) {
130
+ if (!a) return !b;
131
+ switch(a.type){
132
+ case 'root':
133
+ return (b === null || b === void 0 ? void 0 : b.type) === 'root';
134
+ case 'item':
135
+ return (b === null || b === void 0 ? void 0 : b.type) === 'item' && (b === null || b === void 0 ? void 0 : b.key) === a.key && (b === null || b === void 0 ? void 0 : b.dropPosition) === a.dropPosition;
147
136
  }
148
-
149
- };
150
137
  }
151
138
 
152
- exports.useDroppableCollectionState = useDroppableCollectionState;
153
139
 
154
- function $e9dc567085e93bc34b98b82b1b477$var$isEqualDropTarget(a, b) {
155
- if (!a) {
156
- return !b;
157
- }
140
+ $parcel$exportWildcard(module.exports, $f0f141772fe5abed$exports);
141
+ $parcel$exportWildcard(module.exports, $f67e1fddbca9a82e$exports);
158
142
 
159
- switch (a.type) {
160
- case 'root':
161
- return (b == null ? void 0 : b.type) === 'root';
162
143
 
163
- case 'item':
164
- return (b == null ? void 0 : b.type) === 'item' && (b == null ? void 0 : b.key) === a.key && (b == null ? void 0 : b.dropPosition) === a.dropPosition;
165
- }
166
- }
167
144
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./packages/@react-stately/dnd/src/useDraggableCollectionState.ts","./packages/@react-stately/dnd/src/useDroppableCollectionState.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragEndEvent, DraggableCollectionProps, DragItem, DragMoveEvent, DragStartEvent, Node} from '@react-types/shared';\nimport {Key, useState} from 'react';\nimport {MultipleSelectionManager} from '@react-stately/selection';\n\ninterface DraggableCollectionOptions extends DraggableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DraggableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n isDragging(key: Key): boolean,\n getKeysForDrag(key: Key): Set<Key>,\n getItems(key: Key): DragItem[],\n renderPreview(key: Key): JSX.Element,\n startDrag(key: Key, event: DragStartEvent): void,\n moveDrag(event: DragMoveEvent): void,\n endDrag(event: DragEndEvent): void\n}\n\nexport function useDraggableCollectionState(props: DraggableCollectionOptions): DraggableCollectionState {\n let [draggingKeys, setDraggingKeys] = useState(new Set<Key>());\n let getKeys = (key: Key) => {\n // The clicked item is always added to the drag. If it is selected, then all of the\n // other selected items are also dragged. If it is not selected, the only the clicked\n // item is dragged. This matches native macOS behavior.\n let keys = new Set(\n props.selectionManager.isSelected(key)\n ? props.selectionManager.selectedKeys\n : []\n );\n\n keys.add(key);\n return keys;\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n isDragging(key) {\n return draggingKeys.has(key);\n },\n getKeysForDrag: getKeys,\n getItems(key) {\n return props.getItems(getKeys(key));\n },\n renderPreview(key) {\n if (typeof props.renderPreview === 'function') {\n return props.renderPreview(getKeys(key), key);\n }\n\n return null;\n },\n startDrag(key, event) {\n let keys = getKeys(key);\n setDraggingKeys(keys);\n\n if (typeof props.onDragStart === 'function') {\n props.onDragStart({\n ...event,\n keys\n });\n }\n },\n moveDrag(event) {\n if (typeof props.onDragMove === 'function') {\n props.onDragMove({\n ...event,\n keys: draggingKeys\n });\n }\n },\n endDrag(event) {\n if (typeof props.onDragEnd === 'function') {\n props.onDragEnd({\n ...event,\n keys: draggingKeys\n });\n }\n\n setDraggingKeys(new Set());\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragTypes, DropOperation, DroppableCollectionProps, DropTarget, ItemDropTarget, Node} from '@react-types/shared';\nimport {useState} from 'react';\n\ninterface DroppableCollectionStateOptions extends DroppableCollectionProps {\n collection: Collection<Node<unknown>>\n}\n\nexport interface DroppableCollectionState {\n collection: Collection<Node<unknown>>,\n target: DropTarget,\n setTarget(target: DropTarget): void,\n isDropTarget(target: DropTarget): boolean,\n getDropOperation(target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]): DropOperation\n}\n\nexport function useDroppableCollectionState(props: DroppableCollectionStateOptions): DroppableCollectionState {\n let [target, setTarget] = useState<DropTarget>(null);\n\n let getOppositeTarget = (target: ItemDropTarget): ItemDropTarget => {\n if (target.dropPosition === 'before') {\n let key = props.collection.getKeyBefore(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'after'} : null;\n } else if (target.dropPosition === 'after') {\n let key = props.collection.getKeyAfter(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'before'} : null;\n }\n };\n\n return {\n collection: props.collection,\n target,\n setTarget(newTarget) {\n if (this.isDropTarget(newTarget)) {\n return;\n }\n\n if (target && typeof props.onDropExit === 'function') {\n props.onDropExit({\n type: 'dropexit',\n x: 0, // todo\n y: 0,\n target\n });\n }\n\n if (newTarget && typeof props.onDropEnter === 'function') {\n props.onDropEnter({\n type: 'dropenter',\n x: 0, // todo\n y: 0,\n target: newTarget\n });\n }\n\n setTarget(newTarget);\n },\n isDropTarget(dropTarget) {\n if (isEqualDropTarget(dropTarget, target)) {\n return true;\n }\n\n // Check if the targets point at the same point between two items, one referring before, and the other after.\n if (\n dropTarget?.type === 'item' &&\n target?.type === 'item' &&\n dropTarget.key !== target.key &&\n dropTarget.dropPosition !== target.dropPosition &&\n dropTarget.dropPosition !== 'on' &&\n target.dropPosition !== 'on'\n ) {\n return isEqualDropTarget(getOppositeTarget(dropTarget), target) ||\n isEqualDropTarget(dropTarget, getOppositeTarget(target));\n }\n\n return false;\n },\n getDropOperation(target, types, allowedOperations) {\n return typeof props.getDropOperation === 'function'\n ? props.getDropOperation(target, types, allowedOperations)\n : allowedOperations[0];\n }\n };\n}\n\nfunction isEqualDropTarget(a: DropTarget, b: DropTarget) {\n if (!a) {\n return !b;\n }\n\n switch (a.type) {\n case 'root':\n return b?.type === 'root';\n case 'item':\n return b?.type === 'item' && b?.key === a.key && b?.dropPosition === a.dropPosition;\n }\n}\n"],"names":["$parcel$interopDefault","a","__esModule","default","useDraggableCollectionState","props","draggingKeys","setDraggingKeys","useState","Set","getKeys","key","keys","selectionManager","isSelected","selectedKeys","add","collection","isDragging","has","getKeysForDrag","getItems","renderPreview","startDrag","event","onDragStart","moveDrag","onDragMove","endDrag","onDragEnd","useDroppableCollectionState","target","setTarget","getOppositeTarget","dropPosition","getKeyBefore","type","getKeyAfter","newTarget","isDropTarget","onDropExit","x","y","onDropEnter","dropTarget","isEqualDropTarget","getDropOperation","types","allowedOperations","b"],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/dnd/src/index.ts","packages/@react-stately/dnd/src/useDraggableCollectionState.ts","packages/@react-stately/dnd/src/useDroppableCollectionState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './useDraggableCollectionState';\nexport * from './useDroppableCollectionState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragEndEvent, DraggableCollectionProps, DragItem, DragMoveEvent, DragStartEvent, Node} from '@react-types/shared';\nimport {Key, useState} from 'react';\nimport {MultipleSelectionManager} from '@react-stately/selection';\n\ninterface DraggableCollectionOptions extends DraggableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DraggableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n isDragging(key: Key): boolean,\n getKeysForDrag(key: Key): Set<Key>,\n getItems(key: Key): DragItem[],\n renderPreview(key: Key): JSX.Element,\n startDrag(key: Key, event: DragStartEvent): void,\n moveDrag(event: DragMoveEvent): void,\n endDrag(event: DragEndEvent): void\n}\n\nexport function useDraggableCollectionState(props: DraggableCollectionOptions): DraggableCollectionState {\n let [draggingKeys, setDraggingKeys] = useState(new Set<Key>());\n let getKeys = (key: Key) => {\n // The clicked item is always added to the drag. If it is selected, then all of the\n // other selected items are also dragged. If it is not selected, the only the clicked\n // item is dragged. This matches native macOS behavior.\n let keys = new Set(\n props.selectionManager.isSelected(key)\n ? props.selectionManager.selectedKeys\n : []\n );\n\n keys.add(key);\n return keys;\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n isDragging(key) {\n return draggingKeys.has(key);\n },\n getKeysForDrag: getKeys,\n getItems(key) {\n return props.getItems(getKeys(key));\n },\n renderPreview(key) {\n if (typeof props.renderPreview === 'function') {\n return props.renderPreview(getKeys(key), key);\n }\n\n return null;\n },\n startDrag(key, event) {\n let keys = getKeys(key);\n setDraggingKeys(keys);\n\n if (typeof props.onDragStart === 'function') {\n props.onDragStart({\n ...event,\n keys\n });\n }\n },\n moveDrag(event) {\n if (typeof props.onDragMove === 'function') {\n props.onDragMove({\n ...event,\n keys: draggingKeys\n });\n }\n },\n endDrag(event) {\n if (typeof props.onDragEnd === 'function') {\n props.onDragEnd({\n ...event,\n keys: draggingKeys\n });\n }\n\n setDraggingKeys(new Set());\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragTypes, DropOperation, DroppableCollectionProps, DropTarget, ItemDropTarget, Node} from '@react-types/shared';\nimport {MultipleSelectionManager} from '@react-stately/selection';\nimport {useState} from 'react';\n\ninterface DroppableCollectionStateOptions extends DroppableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DroppableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n target: DropTarget,\n setTarget(target: DropTarget): void,\n isDropTarget(target: DropTarget): boolean,\n getDropOperation(target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]): DropOperation\n}\n\nexport function useDroppableCollectionState(props: DroppableCollectionStateOptions): DroppableCollectionState {\n let [target, setTarget] = useState<DropTarget>(null);\n\n let getOppositeTarget = (target: ItemDropTarget): ItemDropTarget => {\n if (target.dropPosition === 'before') {\n let key = props.collection.getKeyBefore(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'after'} : null;\n } else if (target.dropPosition === 'after') {\n let key = props.collection.getKeyAfter(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'before'} : null;\n }\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n target,\n setTarget(newTarget) {\n if (this.isDropTarget(newTarget)) {\n return;\n }\n\n if (target && typeof props.onDropExit === 'function') {\n props.onDropExit({\n type: 'dropexit',\n x: 0, // todo\n y: 0,\n target\n });\n }\n\n if (newTarget && typeof props.onDropEnter === 'function') {\n props.onDropEnter({\n type: 'dropenter',\n x: 0, // todo\n y: 0,\n target: newTarget\n });\n }\n\n setTarget(newTarget);\n },\n isDropTarget(dropTarget) {\n if (isEqualDropTarget(dropTarget, target)) {\n return true;\n }\n\n // Check if the targets point at the same point between two items, one referring before, and the other after.\n if (\n dropTarget?.type === 'item' &&\n target?.type === 'item' &&\n dropTarget.key !== target.key &&\n dropTarget.dropPosition !== target.dropPosition &&\n dropTarget.dropPosition !== 'on' &&\n target.dropPosition !== 'on'\n ) {\n return isEqualDropTarget(getOppositeTarget(dropTarget), target) ||\n isEqualDropTarget(dropTarget, getOppositeTarget(target));\n }\n\n return false;\n },\n getDropOperation(target, types, allowedOperations) {\n return typeof props.getDropOperation === 'function'\n ? props.getDropOperation(target, types, allowedOperations)\n : allowedOperations[0];\n }\n };\n}\n\nfunction isEqualDropTarget(a: DropTarget, b: DropTarget) {\n if (!a) {\n return !b;\n }\n\n switch (a.type) {\n case 'root':\n return b?.type === 'root';\n case 'item':\n return b?.type === 'item' && b?.key === a.key && b?.dropPosition === a.dropPosition;\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -1,154 +1,127 @@
1
- import { useState } from "react";
2
- import _babelRuntimeHelpersEsmExtends from "@babel/runtime/helpers/esm/extends";
3
- export function useDraggableCollectionState(props) {
4
- let [draggingKeys, setDraggingKeys] = useState(new Set());
1
+ import {useState as $01JuH$useState} from "react";
5
2
 
6
- let getKeys = key => {
7
- // The clicked item is always added to the drag. If it is selected, then all of the
8
- // other selected items are also dragged. If it is not selected, the only the clicked
9
- // item is dragged. This matches native macOS behavior.
10
- let keys = new Set(props.selectionManager.isSelected(key) ? props.selectionManager.selectedKeys : []);
11
- keys.add(key);
12
- return keys;
13
- };
14
-
15
- return {
16
- collection: props.collection,
17
- selectionManager: props.selectionManager,
18
-
19
- isDragging(key) {
20
- return draggingKeys.has(key);
21
- },
22
-
23
- getKeysForDrag: getKeys,
24
-
25
- getItems(key) {
26
- return props.getItems(getKeys(key));
27
- },
28
-
29
- renderPreview(key) {
30
- if (typeof props.renderPreview === 'function') {
31
- return props.renderPreview(getKeys(key), key);
32
- }
33
-
34
- return null;
35
- },
36
-
37
- startDrag(key, event) {
38
- let keys = getKeys(key);
39
- setDraggingKeys(keys);
40
-
41
- if (typeof props.onDragStart === 'function') {
42
- props.onDragStart(_babelRuntimeHelpersEsmExtends({}, event, {
43
- keys
44
- }));
45
- }
46
- },
47
-
48
- moveDrag(event) {
49
- if (typeof props.onDragMove === 'function') {
50
- props.onDragMove(_babelRuntimeHelpersEsmExtends({}, event, {
51
- keys: draggingKeys
52
- }));
53
- }
54
- },
55
-
56
- endDrag(event) {
57
- if (typeof props.onDragEnd === 'function') {
58
- props.onDragEnd(_babelRuntimeHelpersEsmExtends({}, event, {
59
- keys: draggingKeys
60
- }));
61
- }
62
-
63
- setDraggingKeys(new Set());
64
- }
65
-
66
- };
3
+ function $parcel$export(e, n, v, s) {
4
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
5
+ }
6
+ var $1438ce11f053a783$exports = {};
7
+
8
+ $parcel$export($1438ce11f053a783$exports, "useDraggableCollectionState", () => $1438ce11f053a783$export$29efd034f1d79f81);
9
+
10
+ function $1438ce11f053a783$export$29efd034f1d79f81(props) {
11
+ let [draggingKeys, setDraggingKeys] = $01JuH$useState(new Set());
12
+ let getKeys = (key)=>{
13
+ // The clicked item is always added to the drag. If it is selected, then all of the
14
+ // other selected items are also dragged. If it is not selected, the only the clicked
15
+ // item is dragged. This matches native macOS behavior.
16
+ let keys = new Set(props.selectionManager.isSelected(key) ? props.selectionManager.selectedKeys : []);
17
+ keys.add(key);
18
+ return keys;
19
+ };
20
+ return {
21
+ collection: props.collection,
22
+ selectionManager: props.selectionManager,
23
+ isDragging (key) {
24
+ return draggingKeys.has(key);
25
+ },
26
+ getKeysForDrag: getKeys,
27
+ getItems (key) {
28
+ return props.getItems(getKeys(key));
29
+ },
30
+ renderPreview (key) {
31
+ if (typeof props.renderPreview === 'function') return props.renderPreview(getKeys(key), key);
32
+ return null;
33
+ },
34
+ startDrag (key, event) {
35
+ let keys = getKeys(key);
36
+ setDraggingKeys(keys);
37
+ if (typeof props.onDragStart === 'function') props.onDragStart({
38
+ ...event,
39
+ keys: keys
40
+ });
41
+ },
42
+ moveDrag (event) {
43
+ if (typeof props.onDragMove === 'function') props.onDragMove({
44
+ ...event,
45
+ keys: draggingKeys
46
+ });
47
+ },
48
+ endDrag (event) {
49
+ if (typeof props.onDragEnd === 'function') props.onDragEnd({
50
+ ...event,
51
+ keys: draggingKeys
52
+ });
53
+ setDraggingKeys(new Set());
54
+ }
55
+ };
67
56
  }
68
- export function useDroppableCollectionState(props) {
69
- let [target, setTarget] = useState(null);
70
-
71
- let getOppositeTarget = target => {
72
- if (target.dropPosition === 'before') {
73
- let key = props.collection.getKeyBefore(target.key);
74
- return key != null ? {
75
- type: 'item',
76
- key,
77
- dropPosition: 'after'
78
- } : null;
79
- } else if (target.dropPosition === 'after') {
80
- let key = props.collection.getKeyAfter(target.key);
81
- return key != null ? {
82
- type: 'item',
83
- key,
84
- dropPosition: 'before'
85
- } : null;
86
- }
87
- };
88
-
89
- return {
90
- collection: props.collection,
91
- target,
92
-
93
- setTarget(newTarget) {
94
- if (this.isDropTarget(newTarget)) {
95
- return;
96
- }
97
-
98
- if (target && typeof props.onDropExit === 'function') {
99
- props.onDropExit({
100
- type: 'dropexit',
101
- x: 0,
102
- // todo
103
- y: 0,
104
- target
105
- });
106
- }
107
-
108
- if (newTarget && typeof props.onDropEnter === 'function') {
109
- props.onDropEnter({
110
- type: 'dropenter',
111
- x: 0,
112
- // todo
113
- y: 0,
114
- target: newTarget
115
- });
116
- }
117
-
118
- setTarget(newTarget);
119
- },
120
-
121
- isDropTarget(dropTarget) {
122
- if ($dd31abc8396c596698a2b05e189ba$var$isEqualDropTarget(dropTarget, target)) {
123
- return true;
124
- } // Check if the targets point at the same point between two items, one referring before, and the other after.
125
-
126
-
127
- if ((dropTarget == null ? void 0 : dropTarget.type) === 'item' && (target == null ? void 0 : target.type) === 'item' && dropTarget.key !== target.key && dropTarget.dropPosition !== target.dropPosition && dropTarget.dropPosition !== 'on' && target.dropPosition !== 'on') {
128
- return $dd31abc8396c596698a2b05e189ba$var$isEqualDropTarget(getOppositeTarget(dropTarget), target) || $dd31abc8396c596698a2b05e189ba$var$isEqualDropTarget(dropTarget, getOppositeTarget(target));
129
- }
130
57
 
131
- return false;
132
- },
133
58
 
134
- getDropOperation(target, types, allowedOperations) {
135
- return typeof props.getDropOperation === 'function' ? props.getDropOperation(target, types, allowedOperations) : allowedOperations[0];
59
+ var $dfea42730c00d81f$exports = {};
60
+
61
+ $parcel$export($dfea42730c00d81f$exports, "useDroppableCollectionState", () => $dfea42730c00d81f$export$926850f6ecef79d0);
62
+
63
+ function $dfea42730c00d81f$export$926850f6ecef79d0(props) {
64
+ let [target1, setTarget] = $01JuH$useState(null);
65
+ let getOppositeTarget = (target)=>{
66
+ if (target.dropPosition === 'before') {
67
+ let key = props.collection.getKeyBefore(target.key);
68
+ return key != null ? {
69
+ type: 'item',
70
+ key: key,
71
+ dropPosition: 'after'
72
+ } : null;
73
+ } else if (target.dropPosition === 'after') {
74
+ let key = props.collection.getKeyAfter(target.key);
75
+ return key != null ? {
76
+ type: 'item',
77
+ key: key,
78
+ dropPosition: 'before'
79
+ } : null;
80
+ }
81
+ };
82
+ return {
83
+ collection: props.collection,
84
+ selectionManager: props.selectionManager,
85
+ target: target1,
86
+ setTarget (newTarget) {
87
+ if (this.isDropTarget(newTarget)) return;
88
+ if (target1 && typeof props.onDropExit === 'function') props.onDropExit({
89
+ type: 'dropexit',
90
+ x: 0,
91
+ y: 0,
92
+ target: target1
93
+ });
94
+ if (newTarget && typeof props.onDropEnter === 'function') props.onDropEnter({
95
+ type: 'dropenter',
96
+ x: 0,
97
+ y: 0,
98
+ target: newTarget
99
+ });
100
+ setTarget(newTarget);
101
+ },
102
+ isDropTarget (dropTarget) {
103
+ if ($dfea42730c00d81f$var$isEqualDropTarget(dropTarget, target1)) return true;
104
+ // Check if the targets point at the same point between two items, one referring before, and the other after.
105
+ if ((dropTarget === null || dropTarget === void 0 ? void 0 : dropTarget.type) === 'item' && (target1 === null || target1 === void 0 ? void 0 : target1.type) === 'item' && dropTarget.key !== target1.key && dropTarget.dropPosition !== target1.dropPosition && dropTarget.dropPosition !== 'on' && target1.dropPosition !== 'on') return $dfea42730c00d81f$var$isEqualDropTarget(getOppositeTarget(dropTarget), target1) || $dfea42730c00d81f$var$isEqualDropTarget(dropTarget, getOppositeTarget(target1));
106
+ return false;
107
+ },
108
+ getDropOperation (target, types, allowedOperations) {
109
+ return typeof props.getDropOperation === 'function' ? props.getDropOperation(target, types, allowedOperations) : allowedOperations[0];
110
+ }
111
+ };
112
+ }
113
+ function $dfea42730c00d81f$var$isEqualDropTarget(a, b) {
114
+ if (!a) return !b;
115
+ switch(a.type){
116
+ case 'root':
117
+ return (b === null || b === void 0 ? void 0 : b.type) === 'root';
118
+ case 'item':
119
+ return (b === null || b === void 0 ? void 0 : b.type) === 'item' && (b === null || b === void 0 ? void 0 : b.key) === a.key && (b === null || b === void 0 ? void 0 : b.dropPosition) === a.dropPosition;
136
120
  }
137
-
138
- };
139
121
  }
140
122
 
141
- function $dd31abc8396c596698a2b05e189ba$var$isEqualDropTarget(a, b) {
142
- if (!a) {
143
- return !b;
144
- }
145
123
 
146
- switch (a.type) {
147
- case 'root':
148
- return (b == null ? void 0 : b.type) === 'root';
149
124
 
150
- case 'item':
151
- return (b == null ? void 0 : b.type) === 'item' && (b == null ? void 0 : b.key) === a.key && (b == null ? void 0 : b.dropPosition) === a.dropPosition;
152
- }
153
- }
125
+
126
+ export {$1438ce11f053a783$export$29efd034f1d79f81 as useDraggableCollectionState, $dfea42730c00d81f$export$926850f6ecef79d0 as useDroppableCollectionState};
154
127
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["./packages/@react-stately/dnd/src/useDraggableCollectionState.ts","./packages/@react-stately/dnd/src/useDroppableCollectionState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragEndEvent, DraggableCollectionProps, DragItem, DragMoveEvent, DragStartEvent, Node} from '@react-types/shared';\nimport {Key, useState} from 'react';\nimport {MultipleSelectionManager} from '@react-stately/selection';\n\ninterface DraggableCollectionOptions extends DraggableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DraggableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n isDragging(key: Key): boolean,\n getKeysForDrag(key: Key): Set<Key>,\n getItems(key: Key): DragItem[],\n renderPreview(key: Key): JSX.Element,\n startDrag(key: Key, event: DragStartEvent): void,\n moveDrag(event: DragMoveEvent): void,\n endDrag(event: DragEndEvent): void\n}\n\nexport function useDraggableCollectionState(props: DraggableCollectionOptions): DraggableCollectionState {\n let [draggingKeys, setDraggingKeys] = useState(new Set<Key>());\n let getKeys = (key: Key) => {\n // The clicked item is always added to the drag. If it is selected, then all of the\n // other selected items are also dragged. If it is not selected, the only the clicked\n // item is dragged. This matches native macOS behavior.\n let keys = new Set(\n props.selectionManager.isSelected(key)\n ? props.selectionManager.selectedKeys\n : []\n );\n\n keys.add(key);\n return keys;\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n isDragging(key) {\n return draggingKeys.has(key);\n },\n getKeysForDrag: getKeys,\n getItems(key) {\n return props.getItems(getKeys(key));\n },\n renderPreview(key) {\n if (typeof props.renderPreview === 'function') {\n return props.renderPreview(getKeys(key), key);\n }\n\n return null;\n },\n startDrag(key, event) {\n let keys = getKeys(key);\n setDraggingKeys(keys);\n\n if (typeof props.onDragStart === 'function') {\n props.onDragStart({\n ...event,\n keys\n });\n }\n },\n moveDrag(event) {\n if (typeof props.onDragMove === 'function') {\n props.onDragMove({\n ...event,\n keys: draggingKeys\n });\n }\n },\n endDrag(event) {\n if (typeof props.onDragEnd === 'function') {\n props.onDragEnd({\n ...event,\n keys: draggingKeys\n });\n }\n\n setDraggingKeys(new Set());\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragTypes, DropOperation, DroppableCollectionProps, DropTarget, ItemDropTarget, Node} from '@react-types/shared';\nimport {useState} from 'react';\n\ninterface DroppableCollectionStateOptions extends DroppableCollectionProps {\n collection: Collection<Node<unknown>>\n}\n\nexport interface DroppableCollectionState {\n collection: Collection<Node<unknown>>,\n target: DropTarget,\n setTarget(target: DropTarget): void,\n isDropTarget(target: DropTarget): boolean,\n getDropOperation(target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]): DropOperation\n}\n\nexport function useDroppableCollectionState(props: DroppableCollectionStateOptions): DroppableCollectionState {\n let [target, setTarget] = useState<DropTarget>(null);\n\n let getOppositeTarget = (target: ItemDropTarget): ItemDropTarget => {\n if (target.dropPosition === 'before') {\n let key = props.collection.getKeyBefore(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'after'} : null;\n } else if (target.dropPosition === 'after') {\n let key = props.collection.getKeyAfter(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'before'} : null;\n }\n };\n\n return {\n collection: props.collection,\n target,\n setTarget(newTarget) {\n if (this.isDropTarget(newTarget)) {\n return;\n }\n\n if (target && typeof props.onDropExit === 'function') {\n props.onDropExit({\n type: 'dropexit',\n x: 0, // todo\n y: 0,\n target\n });\n }\n\n if (newTarget && typeof props.onDropEnter === 'function') {\n props.onDropEnter({\n type: 'dropenter',\n x: 0, // todo\n y: 0,\n target: newTarget\n });\n }\n\n setTarget(newTarget);\n },\n isDropTarget(dropTarget) {\n if (isEqualDropTarget(dropTarget, target)) {\n return true;\n }\n\n // Check if the targets point at the same point between two items, one referring before, and the other after.\n if (\n dropTarget?.type === 'item' &&\n target?.type === 'item' &&\n dropTarget.key !== target.key &&\n dropTarget.dropPosition !== target.dropPosition &&\n dropTarget.dropPosition !== 'on' &&\n target.dropPosition !== 'on'\n ) {\n return isEqualDropTarget(getOppositeTarget(dropTarget), target) ||\n isEqualDropTarget(dropTarget, getOppositeTarget(target));\n }\n\n return false;\n },\n getDropOperation(target, types, allowedOperations) {\n return typeof props.getDropOperation === 'function'\n ? props.getDropOperation(target, types, allowedOperations)\n : allowedOperations[0];\n }\n };\n}\n\nfunction isEqualDropTarget(a: DropTarget, b: DropTarget) {\n if (!a) {\n return !b;\n }\n\n switch (a.type) {\n case 'root':\n return b?.type === 'root';\n case 'item':\n return b?.type === 'item' && b?.key === a.key && b?.dropPosition === a.dropPosition;\n }\n}\n"],"names":["useDraggableCollectionState","props","draggingKeys","setDraggingKeys","useState","Set","getKeys","key","keys","selectionManager","isSelected","selectedKeys","add","collection","isDragging","has","getKeysForDrag","getItems","renderPreview","startDrag","event","onDragStart","moveDrag","onDragMove","endDrag","onDragEnd","useDroppableCollectionState","target","setTarget","getOppositeTarget","dropPosition","getKeyBefore","type","getKeyAfter","newTarget","isDropTarget","onDropExit","x","y","onDropEnter","dropTarget","isEqualDropTarget","getDropOperation","types","allowedOperations","a","b"],"version":3,"file":"module.js.map"}
1
+ {"mappings":";;;;;;;;;SCiCgB,yCAA2B,CAAC,KAAiC,EAA4B,CAAC;IACxG,GAAG,EAAE,YAAY,EAAE,eAAe,IAAI,eAAQ,CAAC,GAAG,CAAC,GAAG;IACtD,GAAG,CAAC,OAAO,IAAI,GAAQ,GAAK,CAAC;QAC3B,EAAmF,AAAnF,iFAAmF;QACnF,EAAqF,AAArF,mFAAqF;QACrF,EAAuD,AAAvD,qDAAuD;QACvD,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAChB,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,IACjC,KAAK,CAAC,gBAAgB,CAAC,YAAY,GACnC,CAAC,CAAC;QAGR,IAAI,CAAC,GAAG,CAAC,GAAG;QACZ,MAAM,CAAC,IAAI;IACb,CAAC;IAED,MAAM,CAAC,CAAC;QACN,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,UAAU,EAAC,GAAG,EAAE,CAAC;YACf,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG;QAC7B,CAAC;QACD,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAC,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;QACnC,CAAC;QACD,aAAa,EAAC,GAAG,EAAE,CAAC;YAClB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,CAAU,WAC3C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG;YAG9C,MAAM,CAAC,IAAI;QACb,CAAC;QACD,SAAS,EAAC,GAAG,EAAE,KAAK,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG;YACtB,eAAe,CAAC,IAAI;YAEpB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAU,WACzC,KAAK,CAAC,WAAW,CAAC,CAAC;mBACd,KAAK;sBACR,IAAI;YACN,CAAC;QAEL,CAAC;QACD,QAAQ,EAAC,KAAK,EAAE,CAAC;YACf,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAU,WACxC,KAAK,CAAC,UAAU,CAAC,CAAC;mBACb,KAAK;gBACR,IAAI,EAAE,YAAY;YACpB,CAAC;QAEL,CAAC;QACD,OAAO,EAAC,KAAK,EAAE,CAAC;YACd,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAU,WACvC,KAAK,CAAC,SAAS,CAAC,CAAC;mBACZ,KAAK;gBACR,IAAI,EAAE,YAAY;YACpB,CAAC;YAGH,eAAe,CAAC,GAAG,CAAC,GAAG;QACzB,CAAC;IACH,CAAC;AACH,CAAC;;;;;;;SClEe,yCAA2B,CAAC,KAAsC,EAA6B,CAAC;IAC9G,GAAG,EAAE,OAAM,EAAE,SAAS,IAAI,eAAQ,CAAa,IAAI;IAEnD,GAAG,CAAC,iBAAiB,IAAI,MAAsB,GAAqB,CAAC;QACnE,EAAE,EAAE,MAAM,CAAC,YAAY,KAAK,CAAQ,SAAE,CAAC;YACrC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;YAClD,MAAM,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;gBAAA,IAAI,EAAE,CAAM;qBAAE,GAAG;gBAAE,YAAY,EAAE,CAAO;YAAA,CAAC,GAAG,IAAI;QACxE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,YAAY,KAAK,CAAO,QAAE,CAAC;YAC3C,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG;YACjD,MAAM,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;gBAAA,IAAI,EAAE,CAAM;qBAAE,GAAG;gBAAE,YAAY,EAAE,CAAQ;YAAA,CAAC,GAAG,IAAI;QACzE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,CAAC;QACN,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,OAAM;QACN,SAAS,EAAC,SAAS,EAAE,CAAC;YACpB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,GAC7B,MAAM;YAGR,EAAE,EAAE,OAAM,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAU,WAClD,KAAK,CAAC,UAAU,CAAC,CAAC;gBAChB,IAAI,EAAE,CAAU;gBAChB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;wBACJ,OAAM;YACR,CAAC;YAGH,EAAE,EAAE,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAU,WACtD,KAAK,CAAC,WAAW,CAAC,CAAC;gBACjB,IAAI,EAAE,CAAW;gBACjB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,MAAM,EAAE,SAAS;YACnB,CAAC;YAGH,SAAS,CAAC,SAAS;QACrB,CAAC;QACD,YAAY,EAAC,UAAU,EAAE,CAAC;YACxB,EAAE,EAAE,uCAAiB,CAAC,UAAU,EAAE,OAAM,GACtC,MAAM,CAAC,IAAI;YAGb,EAA6G,AAA7G,2GAA6G;YAC7G,EAAE,GACA,UAAU,aAAV,UAAU,KAAV,IAAI,CAAJ,CAAgB,GAAhB,IAAI,CAAJ,CAAgB,GAAhB,UAAU,CAAE,IAAI,MAAK,CAAM,UAC3B,OAAM,aAAN,OAAM,KAAN,IAAI,CAAJ,CAAY,GAAZ,IAAI,CAAJ,CAAY,GAAZ,OAAM,CAAE,IAAI,MAAK,CAAM,SACvB,UAAU,CAAC,GAAG,KAAK,OAAM,CAAC,GAAG,IAC7B,UAAU,CAAC,YAAY,KAAK,OAAM,CAAC,YAAY,IAC/C,UAAU,CAAC,YAAY,KAAK,CAAI,OAChC,OAAM,CAAC,YAAY,KAAK,CAAI,KAE5B,MAAM,CAAC,uCAAiB,CAAC,iBAAiB,CAAC,UAAU,GAAG,OAAM,KAC5D,uCAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAM;YAG1D,MAAM,CAAC,KAAK;QACd,CAAC;QACD,gBAAgB,EAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAU,YAC/C,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,IACvD,iBAAiB,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;SAEQ,uCAAiB,CAAC,CAAa,EAAE,CAAa,EAAE,CAAC;IACxD,EAAE,GAAG,CAAC,EACJ,MAAM,EAAE,CAAC;IAGX,MAAM,CAAE,CAAC,CAAC,IAAI;QACZ,IAAI,CAAC,CAAM;YACT,MAAM,EAAC,CAAC,aAAD,CAAC,KAAD,IAAI,CAAJ,CAAO,GAAP,IAAI,CAAJ,CAAO,GAAP,CAAC,CAAE,IAAI,MAAK,CAAM;QAC3B,IAAI,CAAC,CAAM;YACT,MAAM,EAAC,CAAC,aAAD,CAAC,KAAD,IAAI,CAAJ,CAAO,GAAP,IAAI,CAAJ,CAAO,GAAP,CAAC,CAAE,IAAI,MAAK,CAAM,UAAI,CAAC,aAAD,CAAC,KAAD,IAAI,CAAJ,CAAM,GAAN,IAAI,CAAJ,CAAM,GAAN,CAAC,CAAE,GAAG,MAAK,CAAC,CAAC,GAAG,KAAI,CAAC,aAAD,CAAC,KAAD,IAAI,CAAJ,CAAe,GAAf,IAAI,CAAJ,CAAe,GAAf,CAAC,CAAE,YAAY,MAAK,CAAC,CAAC,YAAY;;AAEzF,CAAC;;","sources":["packages/@react-stately/dnd/src/index.ts","packages/@react-stately/dnd/src/useDraggableCollectionState.ts","packages/@react-stately/dnd/src/useDroppableCollectionState.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './useDraggableCollectionState';\nexport * from './useDroppableCollectionState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragEndEvent, DraggableCollectionProps, DragItem, DragMoveEvent, DragStartEvent, Node} from '@react-types/shared';\nimport {Key, useState} from 'react';\nimport {MultipleSelectionManager} from '@react-stately/selection';\n\ninterface DraggableCollectionOptions extends DraggableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DraggableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n isDragging(key: Key): boolean,\n getKeysForDrag(key: Key): Set<Key>,\n getItems(key: Key): DragItem[],\n renderPreview(key: Key): JSX.Element,\n startDrag(key: Key, event: DragStartEvent): void,\n moveDrag(event: DragMoveEvent): void,\n endDrag(event: DragEndEvent): void\n}\n\nexport function useDraggableCollectionState(props: DraggableCollectionOptions): DraggableCollectionState {\n let [draggingKeys, setDraggingKeys] = useState(new Set<Key>());\n let getKeys = (key: Key) => {\n // The clicked item is always added to the drag. If it is selected, then all of the\n // other selected items are also dragged. If it is not selected, the only the clicked\n // item is dragged. This matches native macOS behavior.\n let keys = new Set(\n props.selectionManager.isSelected(key)\n ? props.selectionManager.selectedKeys\n : []\n );\n\n keys.add(key);\n return keys;\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n isDragging(key) {\n return draggingKeys.has(key);\n },\n getKeysForDrag: getKeys,\n getItems(key) {\n return props.getItems(getKeys(key));\n },\n renderPreview(key) {\n if (typeof props.renderPreview === 'function') {\n return props.renderPreview(getKeys(key), key);\n }\n\n return null;\n },\n startDrag(key, event) {\n let keys = getKeys(key);\n setDraggingKeys(keys);\n\n if (typeof props.onDragStart === 'function') {\n props.onDragStart({\n ...event,\n keys\n });\n }\n },\n moveDrag(event) {\n if (typeof props.onDragMove === 'function') {\n props.onDragMove({\n ...event,\n keys: draggingKeys\n });\n }\n },\n endDrag(event) {\n if (typeof props.onDragEnd === 'function') {\n props.onDragEnd({\n ...event,\n keys: draggingKeys\n });\n }\n\n setDraggingKeys(new Set());\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DragTypes, DropOperation, DroppableCollectionProps, DropTarget, ItemDropTarget, Node} from '@react-types/shared';\nimport {MultipleSelectionManager} from '@react-stately/selection';\nimport {useState} from 'react';\n\ninterface DroppableCollectionStateOptions extends DroppableCollectionProps {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager\n}\n\nexport interface DroppableCollectionState {\n collection: Collection<Node<unknown>>,\n selectionManager: MultipleSelectionManager,\n target: DropTarget,\n setTarget(target: DropTarget): void,\n isDropTarget(target: DropTarget): boolean,\n getDropOperation(target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]): DropOperation\n}\n\nexport function useDroppableCollectionState(props: DroppableCollectionStateOptions): DroppableCollectionState {\n let [target, setTarget] = useState<DropTarget>(null);\n\n let getOppositeTarget = (target: ItemDropTarget): ItemDropTarget => {\n if (target.dropPosition === 'before') {\n let key = props.collection.getKeyBefore(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'after'} : null;\n } else if (target.dropPosition === 'after') {\n let key = props.collection.getKeyAfter(target.key);\n return key != null ? {type: 'item', key, dropPosition: 'before'} : null;\n }\n };\n\n return {\n collection: props.collection,\n selectionManager: props.selectionManager,\n target,\n setTarget(newTarget) {\n if (this.isDropTarget(newTarget)) {\n return;\n }\n\n if (target && typeof props.onDropExit === 'function') {\n props.onDropExit({\n type: 'dropexit',\n x: 0, // todo\n y: 0,\n target\n });\n }\n\n if (newTarget && typeof props.onDropEnter === 'function') {\n props.onDropEnter({\n type: 'dropenter',\n x: 0, // todo\n y: 0,\n target: newTarget\n });\n }\n\n setTarget(newTarget);\n },\n isDropTarget(dropTarget) {\n if (isEqualDropTarget(dropTarget, target)) {\n return true;\n }\n\n // Check if the targets point at the same point between two items, one referring before, and the other after.\n if (\n dropTarget?.type === 'item' &&\n target?.type === 'item' &&\n dropTarget.key !== target.key &&\n dropTarget.dropPosition !== target.dropPosition &&\n dropTarget.dropPosition !== 'on' &&\n target.dropPosition !== 'on'\n ) {\n return isEqualDropTarget(getOppositeTarget(dropTarget), target) ||\n isEqualDropTarget(dropTarget, getOppositeTarget(target));\n }\n\n return false;\n },\n getDropOperation(target, types, allowedOperations) {\n return typeof props.getDropOperation === 'function'\n ? props.getDropOperation(target, types, allowedOperations)\n : allowedOperations[0];\n }\n };\n}\n\nfunction isEqualDropTarget(a: DropTarget, b: DropTarget) {\n if (!a) {\n return !b;\n }\n\n switch (a.type) {\n case 'root':\n return b?.type === 'root';\n case 'item':\n return b?.type === 'item' && b?.key === a.key && b?.dropPosition === a.dropPosition;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -19,9 +19,11 @@ export interface DraggableCollectionState {
19
19
  export function useDraggableCollectionState(props: DraggableCollectionOptions): DraggableCollectionState;
20
20
  interface DroppableCollectionStateOptions extends DroppableCollectionProps {
21
21
  collection: Collection<Node<unknown>>;
22
+ selectionManager: MultipleSelectionManager;
22
23
  }
23
24
  export interface DroppableCollectionState {
24
25
  collection: Collection<Node<unknown>>;
26
+ selectionManager: MultipleSelectionManager;
25
27
  target: DropTarget;
26
28
  setTarget(target: DropTarget): void;
27
29
  isDropTarget(target: DropTarget): boolean;
@@ -1 +1 @@
1
- {"mappings":"A;A;A;AAgBA,oCAAqC,SAAQ,wBAAwB;IACnE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAA;CAC3C;AAED;IACE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAC9B,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,CAAC;IAC/B,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAED,4CAA4C,KAAK,EAAE,0BAA0B,GAAG,wBAAwB,CA+DvG;ACjFD,yCAA0C,SAAQ,wBAAwB;IACxE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAA;CACtC;AAED;IACE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1C,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,aAAa,CAAA;CAC1G;AAED,4CAA4C,KAAK,EAAE,+BAA+B,GAAG,wBAAwB,CAmE5G","sources":["./packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/useDraggableCollectionState.ts","./packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/useDroppableCollectionState.ts","./packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/index.ts"],"sourcesContent":[null,null,null],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":";;;AAgBA,oCAAqC,SAAQ,wBAAwB;IACnE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAA;CAC3C;AAED;IACE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAC9B,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,CAAC;IAC/B,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAED,4CAA4C,KAAK,EAAE,0BAA0B,GAAG,wBAAwB,CA+DvG;AChFD,yCAA0C,SAAQ,wBAAwB;IACxE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAA;CAC3C;AAED;IACE,UAAU,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;IACtC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1C,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,aAAa,CAAA;CAC1G;AAED,4CAA4C,KAAK,EAAE,+BAA+B,GAAG,wBAAwB,CAoE5G","sources":["packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/useDraggableCollectionState.ts","packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/useDroppableCollectionState.ts","packages/@react-stately/dnd/src/packages/@react-stately/dnd/src/index.ts","packages/@react-stately/dnd/src/index.ts"],"sourcesContent":[null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './useDraggableCollectionState';\nexport * from './useDroppableCollectionState';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-stately/dnd",
3
- "version": "3.0.0-alpha.0",
3
+ "version": "3.0.0-alpha.4",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -18,9 +18,9 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@babel/runtime": "^7.6.2",
21
- "@react-stately/selection": "^3.4.0",
22
- "@react-stately/utils": "^3.0.0-alpha.1",
23
- "@react-types/shared": "^3.5.0"
21
+ "@react-stately/selection": "^3.9.2",
22
+ "@react-stately/utils": "^3.4.1",
23
+ "@react-types/shared": "^3.11.1"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "react": "^16.8.0 || ^17.0.0-rc.1"
@@ -28,5 +28,5 @@
28
28
  "publishConfig": {
29
29
  "access": "public"
30
30
  },
31
- "gitHead": "9920ffaa2596a03c4498a15cb940bd2f4ba5cd6a"
31
+ "gitHead": "404d41859b7d6f56201d7fc01bd9f22ae3512937"
32
32
  }
@@ -11,14 +11,17 @@
11
11
  */
12
12
 
13
13
  import {Collection, DragTypes, DropOperation, DroppableCollectionProps, DropTarget, ItemDropTarget, Node} from '@react-types/shared';
14
+ import {MultipleSelectionManager} from '@react-stately/selection';
14
15
  import {useState} from 'react';
15
16
 
16
17
  interface DroppableCollectionStateOptions extends DroppableCollectionProps {
17
- collection: Collection<Node<unknown>>
18
+ collection: Collection<Node<unknown>>,
19
+ selectionManager: MultipleSelectionManager
18
20
  }
19
21
 
20
22
  export interface DroppableCollectionState {
21
23
  collection: Collection<Node<unknown>>,
24
+ selectionManager: MultipleSelectionManager,
22
25
  target: DropTarget,
23
26
  setTarget(target: DropTarget): void,
24
27
  isDropTarget(target: DropTarget): boolean,
@@ -40,6 +43,7 @@ export function useDroppableCollectionState(props: DroppableCollectionStateOptio
40
43
 
41
44
  return {
42
45
  collection: props.collection,
46
+ selectionManager: props.selectionManager,
43
47
  target,
44
48
  setTarget(newTarget) {
45
49
  if (this.isDropTarget(newTarget)) {