@react-stately/selection 3.0.0-alpha.1 → 3.0.0-nightly-4980928d3-240906
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/README.md +1 -1
- package/dist/Selection.main.js +31 -0
- package/dist/Selection.main.js.map +1 -0
- package/dist/Selection.mjs +26 -0
- package/dist/Selection.module.js +26 -0
- package/dist/Selection.module.js.map +1 -0
- package/dist/SelectionManager.main.js +306 -0
- package/dist/SelectionManager.main.js.map +1 -0
- package/dist/SelectionManager.mjs +301 -0
- package/dist/SelectionManager.module.js +301 -0
- package/dist/SelectionManager.module.js.map +1 -0
- package/dist/import.mjs +19 -0
- package/dist/main.js +8 -356
- package/dist/main.js.map +1 -0
- package/dist/module.js +5 -155
- package/dist/module.js.map +1 -0
- package/dist/types.d.ts +187 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/useMultipleSelectionState.main.js +101 -0
- package/dist/useMultipleSelectionState.main.js.map +1 -0
- package/dist/useMultipleSelectionState.mjs +96 -0
- package/dist/useMultipleSelectionState.module.js +96 -0
- package/dist/useMultipleSelectionState.module.js.map +1 -0
- package/package.json +16 -9
- package/src/Selection.ts +33 -0
- package/src/SelectionManager.ts +501 -0
- package/src/index.ts +16 -0
- package/src/types.ts +111 -0
- package/src/useMultipleSelectionState.ts +130 -0
- package/LICENSE +0 -201
package/dist/main.js
CHANGED
|
@@ -1,64 +1,13 @@
|
|
|
1
|
-
var
|
|
1
|
+
var $1adc19da2128bba9$exports = require("./useMultipleSelectionState.main.js");
|
|
2
|
+
var $8112da6fa5bbc322$exports = require("./SelectionManager.main.js");
|
|
2
3
|
|
|
3
|
-
var _babelRuntimeHelpersClassCallCheck = $parcel$interopDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _babelRuntimeHelpersPossibleConstructorReturn = $parcel$interopDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
8
|
-
|
|
9
|
-
var _babelRuntimeHelpersGetPrototypeOf = $parcel$interopDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
10
|
-
|
|
11
|
-
var _babelRuntimeHelpersInherits = $parcel$interopDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
-
|
|
13
|
-
var _babelRuntimeHelpersWrapNativeSuper = $parcel$interopDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
14
|
-
|
|
15
|
-
var _babelRuntimeHelpersDefineProperty = $parcel$interopDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
|
|
17
|
-
var useControlledState = require("@react-stately/utils").useControlledState;
|
|
18
|
-
|
|
19
|
-
var _temp = require("react");
|
|
20
|
-
|
|
21
|
-
var useMemo = _temp.useMemo;
|
|
22
|
-
var useRef = _temp.useRef;
|
|
23
|
-
var useState = _temp.useState;
|
|
24
|
-
|
|
25
|
-
var _babelRuntimeHelpersToConsumableArray = $parcel$interopDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
26
|
-
|
|
27
|
-
var _babelRuntimeHelpersCreateClass = $parcel$interopDefault(require("@babel/runtime/helpers/createClass"));
|
|
28
|
-
|
|
29
|
-
function $parcel$interopDefault(a) {
|
|
30
|
-
return a && a.__esModule ? a.default : a;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function $bb7d918fbed0fc92d25aabfc4c972843$var$_createSuper(Derived) {
|
|
34
|
-
return function () {
|
|
35
|
-
var Super = _babelRuntimeHelpersGetPrototypeOf(Derived),
|
|
36
|
-
result;
|
|
37
|
-
|
|
38
|
-
if ($bb7d918fbed0fc92d25aabfc4c972843$var$_isNativeReflectConstruct()) {
|
|
39
|
-
var NewTarget = _babelRuntimeHelpersGetPrototypeOf(this).constructor;
|
|
40
|
-
|
|
41
|
-
result = Reflect.construct(Super, arguments, NewTarget);
|
|
42
|
-
} else {
|
|
43
|
-
result = Super.apply(this, arguments);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return _babelRuntimeHelpersPossibleConstructorReturn(this, result);
|
|
47
|
-
};
|
|
5
|
+
function $parcel$export(e, n, v, s) {
|
|
6
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
48
7
|
}
|
|
49
8
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (Reflect.construct.sham) return false;
|
|
53
|
-
if (typeof Proxy === "function") return true;
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
|
|
57
|
-
return true;
|
|
58
|
-
} catch (e) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
9
|
+
$parcel$export(module.exports, "useMultipleSelectionState", () => $1adc19da2128bba9$exports.useMultipleSelectionState);
|
|
10
|
+
$parcel$export(module.exports, "SelectionManager", () => $8112da6fa5bbc322$exports.SelectionManager);
|
|
62
11
|
/*
|
|
63
12
|
* Copyright 2020 Adobe. All rights reserved.
|
|
64
13
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -69,305 +18,8 @@ function $bb7d918fbed0fc92d25aabfc4c972843$var$_isNativeReflectConstruct() {
|
|
|
69
18
|
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
70
19
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
71
20
|
* governing permissions and limitations under the License.
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* A Selection is a special Set containing Keys, which also has an anchor
|
|
76
|
-
* and current selected key for use when range selecting.
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
var $bb7d918fbed0fc92d25aabfc4c972843$export$Selection = /*#__PURE__*/function (_Set) {
|
|
81
|
-
_babelRuntimeHelpersInherits(Selection, _Set);
|
|
82
|
-
|
|
83
|
-
var _super = $bb7d918fbed0fc92d25aabfc4c972843$var$_createSuper(Selection);
|
|
84
|
-
|
|
85
|
-
function Selection(keys, anchorKey, currentKey) {
|
|
86
|
-
var _this;
|
|
87
|
-
|
|
88
|
-
_babelRuntimeHelpersClassCallCheck(this, Selection);
|
|
89
|
-
|
|
90
|
-
_this = _super.call(this, keys);
|
|
91
|
-
|
|
92
|
-
_babelRuntimeHelpersDefineProperty(_babelRuntimeHelpersAssertThisInitialized(_this), "anchorKey", void 0);
|
|
93
|
-
|
|
94
|
-
_babelRuntimeHelpersDefineProperty(_babelRuntimeHelpersAssertThisInitialized(_this), "currentKey", void 0);
|
|
95
|
-
|
|
96
|
-
if (keys instanceof Selection) {
|
|
97
|
-
_this.anchorKey = anchorKey || keys.anchorKey;
|
|
98
|
-
_this.currentKey = currentKey || keys.currentKey;
|
|
99
|
-
} else {
|
|
100
|
-
_this.anchorKey = anchorKey;
|
|
101
|
-
_this.currentKey = currentKey;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return _this;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return Selection;
|
|
108
|
-
}( /*#__PURE__*/_babelRuntimeHelpersWrapNativeSuper(Set));
|
|
109
|
-
|
|
110
|
-
function useMultipleSelectionState(props) {
|
|
111
|
-
var isFocused = useRef(false);
|
|
112
|
-
|
|
113
|
-
var _useState = useState(null),
|
|
114
|
-
_useState2 = _babelRuntimeHelpersSlicedToArray(_useState, 2),
|
|
115
|
-
focusedKey = _useState2[0],
|
|
116
|
-
setFocusedKey = _useState2[1];
|
|
117
|
-
|
|
118
|
-
var selectedKeysProp = useMemo(function () {
|
|
119
|
-
return props.selectedKeys ? new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection(props.selectedKeys) : undefined;
|
|
120
|
-
}, [props.selectedKeys]);
|
|
121
|
-
var defaultSelectedKeys = useMemo(function () {
|
|
122
|
-
return props.defaultSelectedKeys ? new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection(props.defaultSelectedKeys) : new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection();
|
|
123
|
-
}, [props.defaultSelectedKeys]);
|
|
124
|
-
|
|
125
|
-
var _useControlledState = useControlledState(selectedKeysProp, defaultSelectedKeys, props.onSelectionChange),
|
|
126
|
-
_useControlledState2 = _babelRuntimeHelpersSlicedToArray(_useControlledState, 2),
|
|
127
|
-
selectedKeys = _useControlledState2[0],
|
|
128
|
-
setSelectedKeys = _useControlledState2[1];
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
selectionMode: props.selectionMode || 'multiple',
|
|
132
|
-
|
|
133
|
-
get isFocused() {
|
|
134
|
-
return isFocused.current;
|
|
135
|
-
},
|
|
136
|
-
|
|
137
|
-
setFocused: function setFocused(f) {
|
|
138
|
-
isFocused.current = f;
|
|
139
|
-
},
|
|
140
|
-
focusedKey: focusedKey,
|
|
141
|
-
setFocusedKey: setFocusedKey,
|
|
142
|
-
selectedKeys: selectedKeys,
|
|
143
|
-
setSelectedKeys: setSelectedKeys
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
exports.useMultipleSelectionState = useMultipleSelectionState;
|
|
148
|
-
|
|
149
|
-
function $f1e9b103029d27866ace9fb906215618$var$_createForOfIteratorHelper(o) {
|
|
150
|
-
if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
|
|
151
|
-
if (Array.isArray(o) || (o = $f1e9b103029d27866ace9fb906215618$var$_unsupportedIterableToArray(o))) {
|
|
152
|
-
var i = 0;
|
|
153
|
-
|
|
154
|
-
var F = function F() {};
|
|
155
|
-
|
|
156
|
-
return {
|
|
157
|
-
s: F,
|
|
158
|
-
n: function n() {
|
|
159
|
-
if (i >= o.length) return {
|
|
160
|
-
done: true
|
|
161
|
-
};
|
|
162
|
-
return {
|
|
163
|
-
done: false,
|
|
164
|
-
value: o[i++]
|
|
165
|
-
};
|
|
166
|
-
},
|
|
167
|
-
e: function e(_e) {
|
|
168
|
-
throw _e;
|
|
169
|
-
},
|
|
170
|
-
f: F
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
var it,
|
|
178
|
-
normalCompletion = true,
|
|
179
|
-
didErr = false,
|
|
180
|
-
err;
|
|
181
|
-
return {
|
|
182
|
-
s: function s() {
|
|
183
|
-
it = o[Symbol.iterator]();
|
|
184
|
-
},
|
|
185
|
-
n: function n() {
|
|
186
|
-
var step = it.next();
|
|
187
|
-
normalCompletion = step.done;
|
|
188
|
-
return step;
|
|
189
|
-
},
|
|
190
|
-
e: function e(_e2) {
|
|
191
|
-
didErr = true;
|
|
192
|
-
err = _e2;
|
|
193
|
-
},
|
|
194
|
-
f: function f() {
|
|
195
|
-
try {
|
|
196
|
-
if (!normalCompletion && it.return != null) it.return();
|
|
197
|
-
} finally {
|
|
198
|
-
if (didErr) throw err;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
function $f1e9b103029d27866ace9fb906215618$var$_unsupportedIterableToArray(o, minLen) {
|
|
205
|
-
if (!o) return;
|
|
206
|
-
if (typeof o === "string") return $f1e9b103029d27866ace9fb906215618$var$_arrayLikeToArray(o, minLen);
|
|
207
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
208
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
209
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
210
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $f1e9b103029d27866ace9fb906215618$var$_arrayLikeToArray(o, minLen);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
function $f1e9b103029d27866ace9fb906215618$var$_arrayLikeToArray(arr, len) {
|
|
214
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
215
|
-
|
|
216
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
217
|
-
arr2[i] = arr[i];
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return arr2;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
var SelectionManager = /*#__PURE__*/function () {
|
|
224
|
-
function SelectionManager(collection, state) {
|
|
225
|
-
_babelRuntimeHelpersClassCallCheck(this, SelectionManager);
|
|
226
|
-
|
|
227
|
-
_babelRuntimeHelpersDefineProperty(this, "collection", void 0);
|
|
228
|
-
|
|
229
|
-
_babelRuntimeHelpersDefineProperty(this, "state", void 0);
|
|
230
|
-
|
|
231
|
-
this.collection = collection;
|
|
232
|
-
this.state = state;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
_babelRuntimeHelpersCreateClass(SelectionManager, [{
|
|
236
|
-
key: "setFocused",
|
|
237
|
-
value: function setFocused(isFocused) {
|
|
238
|
-
this.state.setFocused(isFocused);
|
|
239
|
-
}
|
|
240
|
-
}, {
|
|
241
|
-
key: "setFocusedKey",
|
|
242
|
-
value: function setFocusedKey(key) {
|
|
243
|
-
this.state.setFocusedKey(key);
|
|
244
|
-
}
|
|
245
|
-
}, {
|
|
246
|
-
key: "setSelectedKeys",
|
|
247
|
-
value: function setSelectedKeys(keys) {
|
|
248
|
-
this.state.setSelectedKeys(keys);
|
|
249
|
-
}
|
|
250
|
-
}, {
|
|
251
|
-
key: "extendSelection",
|
|
252
|
-
value: function extendSelection(toKey) {
|
|
253
|
-
var _this = this;
|
|
254
|
-
|
|
255
|
-
this.state.setSelectedKeys(function (selectedKeys) {
|
|
256
|
-
var anchorKey = selectedKeys.anchorKey || toKey;
|
|
257
|
-
var keys = new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection(selectedKeys, anchorKey, toKey);
|
|
258
|
-
|
|
259
|
-
var _iterator = $f1e9b103029d27866ace9fb906215618$var$_createForOfIteratorHelper(_this.getKeyRange(anchorKey, selectedKeys.currentKey || toKey)),
|
|
260
|
-
_step;
|
|
261
|
-
|
|
262
|
-
try {
|
|
263
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
264
|
-
var key = _step.value;
|
|
265
|
-
keys.delete(key);
|
|
266
|
-
}
|
|
267
|
-
} catch (err) {
|
|
268
|
-
_iterator.e(err);
|
|
269
|
-
} finally {
|
|
270
|
-
_iterator.f();
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
var _iterator2 = $f1e9b103029d27866ace9fb906215618$var$_createForOfIteratorHelper(_this.getKeyRange(toKey, anchorKey)),
|
|
274
|
-
_step2;
|
|
275
|
-
|
|
276
|
-
try {
|
|
277
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
278
|
-
var _key = _step2.value;
|
|
279
|
-
keys.add(_key);
|
|
280
|
-
}
|
|
281
|
-
} catch (err) {
|
|
282
|
-
_iterator2.e(err);
|
|
283
|
-
} finally {
|
|
284
|
-
_iterator2.f();
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
return keys;
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
}, {
|
|
291
|
-
key: "getKeyRange",
|
|
292
|
-
value: function getKeyRange(from, to) {
|
|
293
|
-
return this.getKeyRangeInternal(from, to) || this.getKeyRangeInternal(to, from) || [];
|
|
294
|
-
}
|
|
295
|
-
}, {
|
|
296
|
-
key: "getKeyRangeInternal",
|
|
297
|
-
value: function getKeyRangeInternal(from, to) {
|
|
298
|
-
var keys = [];
|
|
299
|
-
var key = from;
|
|
300
|
-
|
|
301
|
-
while (key) {
|
|
302
|
-
keys.push(key);
|
|
303
|
-
|
|
304
|
-
if (key === to) {
|
|
305
|
-
return keys;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
key = this.collection.getKeyAfter(key);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
return null;
|
|
312
|
-
}
|
|
313
|
-
}, {
|
|
314
|
-
key: "toggleSelection",
|
|
315
|
-
value: function toggleSelection(key) {
|
|
316
|
-
this.state.setSelectedKeys(function (selectedKeys) {
|
|
317
|
-
var keys = new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection(selectedKeys);
|
|
318
|
-
|
|
319
|
-
if (keys.has(key)) {
|
|
320
|
-
keys.delete(key); // TODO: move anchor to last selected key...
|
|
321
|
-
// Does `current` need to move here too?
|
|
322
|
-
} else {
|
|
323
|
-
keys.add(key);
|
|
324
|
-
keys.anchorKey = key;
|
|
325
|
-
keys.currentKey = key;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
return keys;
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
}, {
|
|
332
|
-
key: "replaceSelection",
|
|
333
|
-
value: function replaceSelection(key) {
|
|
334
|
-
this.state.setSelectedKeys(new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection([key], key, key));
|
|
335
|
-
}
|
|
336
|
-
}, {
|
|
337
|
-
key: "selectAll",
|
|
338
|
-
value: function selectAll() {
|
|
339
|
-
var keys = _babelRuntimeHelpersToConsumableArray(this.collection.getKeys());
|
|
21
|
+
*/
|
|
340
22
|
|
|
341
|
-
this.state.setSelectedKeys(new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection(keys, keys[0], keys[keys.length - 1]));
|
|
342
|
-
}
|
|
343
|
-
}, {
|
|
344
|
-
key: "clearSelection",
|
|
345
|
-
value: function clearSelection() {
|
|
346
|
-
this.state.setSelectedKeys(new $bb7d918fbed0fc92d25aabfc4c972843$export$Selection());
|
|
347
|
-
}
|
|
348
|
-
}, {
|
|
349
|
-
key: "selectionMode",
|
|
350
|
-
get: function get() {
|
|
351
|
-
return this.state.selectionMode;
|
|
352
|
-
}
|
|
353
|
-
}, {
|
|
354
|
-
key: "isFocused",
|
|
355
|
-
get: function get() {
|
|
356
|
-
return this.state.isFocused;
|
|
357
|
-
}
|
|
358
|
-
}, {
|
|
359
|
-
key: "focusedKey",
|
|
360
|
-
get: function get() {
|
|
361
|
-
return this.state.focusedKey;
|
|
362
|
-
}
|
|
363
|
-
}, {
|
|
364
|
-
key: "selectedKeys",
|
|
365
|
-
get: function get() {
|
|
366
|
-
return this.state.selectedKeys;
|
|
367
|
-
}
|
|
368
|
-
}]);
|
|
369
23
|
|
|
370
|
-
return SelectionManager;
|
|
371
|
-
}();
|
|
372
24
|
|
|
373
|
-
|
|
25
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;AAAA;;;;;;;;;;CAUC","sources":["packages/@react-stately/selection/src/index.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 type {MultipleSelectionStateProps} from './useMultipleSelectionState';\nexport type {FocusState, SingleSelectionState, MultipleSelectionState, MultipleSelectionManager} from './types';\nexport {useMultipleSelectionState} from './useMultipleSelectionState';\nexport {SelectionManager} from './SelectionManager';\n"],"names":[],"version":3,"file":"main.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { useMemo, useRef, useState } from "react";
|
|
1
|
+
import {useMultipleSelectionState as $7af3f5b51489e0b5$export$253fe78d46329472} from "./useMultipleSelectionState.module.js";
|
|
2
|
+
import {SelectionManager as $d496c0a20b6e58ec$export$6c8a5aaad13c9852} from "./SelectionManager.module.js";
|
|
4
3
|
|
|
5
4
|
/*
|
|
6
5
|
* Copyright 2020 Adobe. All rights reserved.
|
|
@@ -12,158 +11,9 @@ import { useMemo, useRef, useState } from "react";
|
|
|
12
11
|
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
13
12
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
14
13
|
* governing permissions and limitations under the License.
|
|
15
|
-
*/
|
|
14
|
+
*/
|
|
16
15
|
|
|
17
|
-
/**
|
|
18
|
-
* A Selection is a special Set containing Keys, which also has an anchor
|
|
19
|
-
* and current selected key for use when range selecting.
|
|
20
|
-
*/
|
|
21
|
-
class $d6921aa3a5c375a16b83058bd8$export$Selection extends Set {
|
|
22
|
-
constructor(keys, anchorKey, currentKey) {
|
|
23
|
-
super(keys);
|
|
24
16
|
|
|
25
|
-
_babelRuntimeHelpersEsmDefineProperty(this, "anchorKey", void 0);
|
|
26
17
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (keys instanceof $d6921aa3a5c375a16b83058bd8$export$Selection) {
|
|
30
|
-
this.anchorKey = anchorKey || keys.anchorKey;
|
|
31
|
-
this.currentKey = currentKey || keys.currentKey;
|
|
32
|
-
} else {
|
|
33
|
-
this.anchorKey = anchorKey;
|
|
34
|
-
this.currentKey = currentKey;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function useMultipleSelectionState(props) {
|
|
41
|
-
let isFocused = useRef(false);
|
|
42
|
-
let [focusedKey, setFocusedKey] = useState(null);
|
|
43
|
-
let selectedKeysProp = useMemo(() => props.selectedKeys ? new $d6921aa3a5c375a16b83058bd8$export$Selection(props.selectedKeys) : undefined, [props.selectedKeys]);
|
|
44
|
-
let defaultSelectedKeys = useMemo(() => props.defaultSelectedKeys ? new $d6921aa3a5c375a16b83058bd8$export$Selection(props.defaultSelectedKeys) : new $d6921aa3a5c375a16b83058bd8$export$Selection(), [props.defaultSelectedKeys]);
|
|
45
|
-
let [selectedKeys, setSelectedKeys] = useControlledState(selectedKeysProp, defaultSelectedKeys, props.onSelectionChange);
|
|
46
|
-
return {
|
|
47
|
-
selectionMode: props.selectionMode || 'multiple',
|
|
48
|
-
|
|
49
|
-
get isFocused() {
|
|
50
|
-
return isFocused.current;
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
setFocused(f) {
|
|
54
|
-
isFocused.current = f;
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
focusedKey,
|
|
58
|
-
setFocusedKey,
|
|
59
|
-
selectedKeys,
|
|
60
|
-
setSelectedKeys
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
export class SelectionManager {
|
|
64
|
-
constructor(collection, state) {
|
|
65
|
-
_babelRuntimeHelpersEsmDefineProperty(this, "collection", void 0);
|
|
66
|
-
|
|
67
|
-
_babelRuntimeHelpersEsmDefineProperty(this, "state", void 0);
|
|
68
|
-
|
|
69
|
-
this.collection = collection;
|
|
70
|
-
this.state = state;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
get selectionMode() {
|
|
74
|
-
return this.state.selectionMode;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
get isFocused() {
|
|
78
|
-
return this.state.isFocused;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
setFocused(isFocused) {
|
|
82
|
-
this.state.setFocused(isFocused);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
get focusedKey() {
|
|
86
|
-
return this.state.focusedKey;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
setFocusedKey(key) {
|
|
90
|
-
this.state.setFocusedKey(key);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
get selectedKeys() {
|
|
94
|
-
return this.state.selectedKeys;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
setSelectedKeys(keys) {
|
|
98
|
-
this.state.setSelectedKeys(keys);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
extendSelection(toKey) {
|
|
102
|
-
this.state.setSelectedKeys(selectedKeys => {
|
|
103
|
-
let anchorKey = selectedKeys.anchorKey || toKey;
|
|
104
|
-
let keys = new $d6921aa3a5c375a16b83058bd8$export$Selection(selectedKeys, anchorKey, toKey);
|
|
105
|
-
|
|
106
|
-
for (let key of this.getKeyRange(anchorKey, selectedKeys.currentKey || toKey)) {
|
|
107
|
-
keys.delete(key);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
for (let key of this.getKeyRange(toKey, anchorKey)) {
|
|
111
|
-
keys.add(key);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return keys;
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
getKeyRange(from, to) {
|
|
119
|
-
return this.getKeyRangeInternal(from, to) || this.getKeyRangeInternal(to, from) || [];
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
getKeyRangeInternal(from, to) {
|
|
123
|
-
let keys = [];
|
|
124
|
-
let key = from;
|
|
125
|
-
|
|
126
|
-
while (key) {
|
|
127
|
-
keys.push(key);
|
|
128
|
-
|
|
129
|
-
if (key === to) {
|
|
130
|
-
return keys;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
key = this.collection.getKeyAfter(key);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
toggleSelection(key) {
|
|
140
|
-
this.state.setSelectedKeys(selectedKeys => {
|
|
141
|
-
let keys = new $d6921aa3a5c375a16b83058bd8$export$Selection(selectedKeys);
|
|
142
|
-
|
|
143
|
-
if (keys.has(key)) {
|
|
144
|
-
keys.delete(key); // TODO: move anchor to last selected key...
|
|
145
|
-
// Does `current` need to move here too?
|
|
146
|
-
} else {
|
|
147
|
-
keys.add(key);
|
|
148
|
-
keys.anchorKey = key;
|
|
149
|
-
keys.currentKey = key;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return keys;
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
replaceSelection(key) {
|
|
157
|
-
this.state.setSelectedKeys(new $d6921aa3a5c375a16b83058bd8$export$Selection([key], key, key));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
selectAll() {
|
|
161
|
-
let keys = [...this.collection.getKeys()];
|
|
162
|
-
this.state.setSelectedKeys(new $d6921aa3a5c375a16b83058bd8$export$Selection(keys, keys[0], keys[keys.length - 1]));
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
clearSelection() {
|
|
166
|
-
this.state.setSelectedKeys(new $d6921aa3a5c375a16b83058bd8$export$Selection());
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
}
|
|
18
|
+
export {$7af3f5b51489e0b5$export$253fe78d46329472 as useMultipleSelectionState, $d496c0a20b6e58ec$export$6c8a5aaad13c9852 as SelectionManager};
|
|
19
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;AAAA;;;;;;;;;;CAUC","sources":["packages/@react-stately/selection/src/index.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 type {MultipleSelectionStateProps} from './useMultipleSelectionState';\nexport type {FocusState, SingleSelectionState, MultipleSelectionState, MultipleSelectionManager} from './types';\nexport {useMultipleSelectionState} from './useMultipleSelectionState';\nexport {SelectionManager} from './SelectionManager';\n"],"names":[],"version":3,"file":"module.js.map"}
|