rsuite 5.31.1 → 5.33.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.
- package/CHANGELOG.md +17 -0
- package/cjs/Calendar/CalendarContainer.d.ts +2 -0
- package/cjs/Calendar/CalendarContainer.js +4 -1
- package/cjs/Calendar/MonthDropdown.js +1 -1
- package/cjs/Cascader/Cascader.d.ts +2 -2
- package/cjs/Cascader/Cascader.js +83 -71
- package/cjs/Cascader/DropdownMenu.d.ts +6 -2
- package/cjs/Cascader/DropdownMenu.js +8 -4
- package/cjs/Cascader/utils.d.ts +43 -17
- package/cjs/Cascader/utils.js +60 -145
- package/cjs/CheckTreePicker/CheckTreePicker.js +16 -3
- package/cjs/DatePicker/DatePicker.d.ts +3 -1
- package/cjs/DatePicker/DatePicker.js +4 -1
- package/cjs/DateRangePicker/Calendar.d.ts +1 -0
- package/cjs/DateRangePicker/Calendar.js +4 -1
- package/cjs/DateRangePicker/DateRangePicker.d.ts +3 -1
- package/cjs/DateRangePicker/DateRangePicker.js +4 -1
- package/cjs/MultiCascader/DropdownMenu.d.ts +2 -2
- package/cjs/MultiCascader/MultiCascader.d.ts +1 -1
- package/cjs/MultiCascader/MultiCascader.js +12 -7
- package/cjs/MultiCascader/utils.d.ts +2 -2
- package/cjs/MultiCascader/utils.js +3 -3
- package/cjs/Picker/utils.d.ts +4 -3
- package/cjs/Picker/utils.js +8 -4
- package/cjs/Tree/Tree.d.ts +2 -0
- package/cjs/TreePicker/TreePicker.js +16 -3
- package/cjs/utils/getDataGroupBy.js +1 -1
- package/cjs/utils/treeUtils.d.ts +23 -1
- package/cjs/utils/treeUtils.js +109 -6
- package/cjs/utils/useMap.d.ts +6 -0
- package/cjs/utils/useMap.js +35 -0
- package/dist/rsuite.js +189 -17
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/CalendarContainer.d.ts +2 -0
- package/esm/Calendar/CalendarContainer.js +4 -1
- package/esm/Calendar/MonthDropdown.js +1 -1
- package/esm/Cascader/Cascader.d.ts +2 -2
- package/esm/Cascader/Cascader.js +84 -74
- package/esm/Cascader/DropdownMenu.d.ts +6 -2
- package/esm/Cascader/DropdownMenu.js +8 -4
- package/esm/Cascader/utils.d.ts +43 -17
- package/esm/Cascader/utils.js +64 -142
- package/esm/CheckTreePicker/CheckTreePicker.js +17 -4
- package/esm/DatePicker/DatePicker.d.ts +3 -1
- package/esm/DatePicker/DatePicker.js +4 -1
- package/esm/DateRangePicker/Calendar.d.ts +1 -0
- package/esm/DateRangePicker/Calendar.js +4 -1
- package/esm/DateRangePicker/DateRangePicker.d.ts +3 -1
- package/esm/DateRangePicker/DateRangePicker.js +4 -1
- package/esm/MultiCascader/DropdownMenu.d.ts +2 -2
- package/esm/MultiCascader/MultiCascader.d.ts +1 -1
- package/esm/MultiCascader/MultiCascader.js +12 -7
- package/esm/MultiCascader/utils.d.ts +2 -2
- package/esm/MultiCascader/utils.js +4 -4
- package/esm/Picker/utils.d.ts +4 -3
- package/esm/Picker/utils.js +8 -4
- package/esm/Tree/Tree.d.ts +2 -0
- package/esm/TreePicker/TreePicker.js +18 -5
- package/esm/utils/getDataGroupBy.js +2 -2
- package/esm/utils/treeUtils.d.ts +23 -1
- package/esm/utils/treeUtils.js +103 -6
- package/esm/utils/useMap.d.ts +6 -0
- package/esm/utils/useMap.js +29 -0
- package/package.json +2 -1
|
@@ -104,6 +104,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
104
104
|
onOpen = props.onOpen,
|
|
105
105
|
onSearch = props.onSearch,
|
|
106
106
|
onSelect = props.onSelect,
|
|
107
|
+
onSelectItem = props.onSelectItem,
|
|
107
108
|
onChange = props.onChange,
|
|
108
109
|
onEntered = props.onEntered,
|
|
109
110
|
onClose = props.onClose,
|
|
@@ -117,7 +118,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
117
118
|
renderExtraFooter = props.renderExtraFooter,
|
|
118
119
|
renderMenu = props.renderMenu,
|
|
119
120
|
renderValue = props.renderValue,
|
|
120
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "menuMaxHeight", "menuStyle", "className", "disabled", "placement", "cleanable", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
|
|
121
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "menuMaxHeight", "menuStyle", "className", "disabled", "placement", "cleanable", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onSelectItem", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
|
|
121
122
|
var triggerRef = (0, _react.useRef)(null);
|
|
122
123
|
var targetRef = (0, _react.useRef)(null);
|
|
123
124
|
var listRef = (0, _react.useRef)(null);
|
|
@@ -313,8 +314,17 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
313
314
|
onRenderTreeNode: renderTreeNode,
|
|
314
315
|
onRenderTreeIcon: renderTreeIcon
|
|
315
316
|
};
|
|
316
|
-
};
|
|
317
|
+
}; // TODO-Doma
|
|
318
|
+
// Replace `getKeyParentMap` with `getParentMap`
|
|
319
|
+
|
|
317
320
|
|
|
321
|
+
var itemParentMap = (0, _react.useMemo)(function () {
|
|
322
|
+
return (0, _treeUtils.getKeyParentMap)(data, function (node) {
|
|
323
|
+
return node[valueKey];
|
|
324
|
+
}, function (node) {
|
|
325
|
+
return node[childrenKey];
|
|
326
|
+
});
|
|
327
|
+
}, [childrenKey, data, valueKey]);
|
|
318
328
|
var handleSelect = (0, _react.useCallback)(function (nodeData, event) {
|
|
319
329
|
var _targetRef$current, _triggerRef$current, _triggerRef$current$c;
|
|
320
330
|
|
|
@@ -331,9 +341,12 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
331
341
|
setFocusItemValue(nodeData[valueKey]);
|
|
332
342
|
onChange === null || onChange === void 0 ? void 0 : onChange(nodeValue, event);
|
|
333
343
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, nodeValue, event);
|
|
344
|
+
onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(nodeData, (0, _treeUtils.getPathTowardsItem)(nodeData, function (item) {
|
|
345
|
+
return itemParentMap.get(item[valueKey]);
|
|
346
|
+
}));
|
|
334
347
|
(_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.focus();
|
|
335
348
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current);
|
|
336
|
-
}, [valueKey, isControlled, onChange, onSelect, setValue]);
|
|
349
|
+
}, [valueKey, isControlled, onChange, onSelect, onSelectItem, setValue, itemParentMap]);
|
|
337
350
|
var handleExpand = (0, _react.useCallback)(function (node) {
|
|
338
351
|
var nextExpandItemValues = (0, _treeUtils.toggleExpand)({
|
|
339
352
|
node: node,
|
package/cjs/utils/treeUtils.d.ts
CHANGED
|
@@ -16,8 +16,12 @@ export declare function shouldShowNodeByParentExpanded<T>(expandItemValues?: T[]
|
|
|
16
16
|
* @param {*} tree
|
|
17
17
|
* @param {*} childrenKey
|
|
18
18
|
* @param {*} executor
|
|
19
|
+
*
|
|
20
|
+
* @deprecated This {@link UNSAFE_flattenTree} function is considered unsafe because it mutates `tree` argument in-place
|
|
21
|
+
* Use {@link flattenTree} instead.
|
|
19
22
|
*/
|
|
20
|
-
export declare function
|
|
23
|
+
export declare function UNSAFE_flattenTree<TItem>(tree: TItem[], childrenKey?: string, executor?: (node: any, index: number) => any): TItem[];
|
|
24
|
+
export declare function flattenTree<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined): T[];
|
|
21
25
|
/**
|
|
22
26
|
* get all ancestor nodes of given node
|
|
23
27
|
* @param {*} node
|
|
@@ -274,3 +278,21 @@ export declare function createDragPreview(name: string, className: string): HTML
|
|
|
274
278
|
*/
|
|
275
279
|
export declare function removeDragPreview(): void;
|
|
276
280
|
export declare function stringifyTreeNodeLabel(label: string | React.ReactNode): string;
|
|
281
|
+
/**
|
|
282
|
+
* Returns a WeakMap that maps each item in `items` to its parent
|
|
283
|
+
* indicated by `getChildren` function
|
|
284
|
+
*/
|
|
285
|
+
export declare function getParentMap<T extends Record<string, unknown>>(items: readonly T[], getChildren: (item: T) => readonly T[] | undefined): WeakMap<T, T>;
|
|
286
|
+
/**
|
|
287
|
+
* Returns a Map that maps each item's "key", indicated by `getKey` function,
|
|
288
|
+
* to its parent indicated by `getChildren` function
|
|
289
|
+
*
|
|
290
|
+
* NOTICE:
|
|
291
|
+
* Using this function is discouraged.
|
|
292
|
+
* Use {@link getParentMap} whenever possible.
|
|
293
|
+
*/
|
|
294
|
+
export declare function getKeyParentMap<T extends Record<string, unknown>, K = React.Key>(items: readonly T[], getKey: (item: T) => K, getChildren: (item: T) => readonly T[] | undefined): Map<K, T>;
|
|
295
|
+
/**
|
|
296
|
+
* Returns an array indicating the hirearchy path from root towards `target` item
|
|
297
|
+
*/
|
|
298
|
+
export declare function getPathTowardsItem<T>(target: T | undefined, getParent: (item: T) => T | undefined): T[];
|
package/cjs/utils/treeUtils.js
CHANGED
|
@@ -6,6 +6,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
6
6
|
|
|
7
7
|
exports.__esModule = true;
|
|
8
8
|
exports.shouldShowNodeByParentExpanded = shouldShowNodeByParentExpanded;
|
|
9
|
+
exports.UNSAFE_flattenTree = UNSAFE_flattenTree;
|
|
9
10
|
exports.flattenTree = flattenTree;
|
|
10
11
|
exports.getNodeParents = getNodeParents;
|
|
11
12
|
exports.getNodeParentKeys = getNodeParentKeys;
|
|
@@ -38,6 +39,9 @@ exports.getNodeFormattedRefKey = getNodeFormattedRefKey;
|
|
|
38
39
|
exports.createDragPreview = createDragPreview;
|
|
39
40
|
exports.removeDragPreview = removeDragPreview;
|
|
40
41
|
exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
|
|
42
|
+
exports.getParentMap = getParentMap;
|
|
43
|
+
exports.getKeyParentMap = getKeyParentMap;
|
|
44
|
+
exports.getPathTowardsItem = getPathTowardsItem;
|
|
41
45
|
exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = void 0;
|
|
42
46
|
|
|
43
47
|
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -72,6 +76,12 @@ var _constants = require("./constants");
|
|
|
72
76
|
|
|
73
77
|
var _attachParent = require("./attachParent");
|
|
74
78
|
|
|
79
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
80
|
+
|
|
81
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
82
|
+
|
|
83
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
84
|
+
|
|
75
85
|
// gap of tree node
|
|
76
86
|
var TREE_NODE_GAP = 4;
|
|
77
87
|
/**
|
|
@@ -102,10 +112,13 @@ function shouldShowNodeByParentExpanded(expandItemValues, parentKeys) {
|
|
|
102
112
|
* @param {*} tree
|
|
103
113
|
* @param {*} childrenKey
|
|
104
114
|
* @param {*} executor
|
|
115
|
+
*
|
|
116
|
+
* @deprecated This {@link UNSAFE_flattenTree} function is considered unsafe because it mutates `tree` argument in-place
|
|
117
|
+
* Use {@link flattenTree} instead.
|
|
105
118
|
*/
|
|
106
119
|
|
|
107
120
|
|
|
108
|
-
function
|
|
121
|
+
function UNSAFE_flattenTree(tree, childrenKey, executor) {
|
|
109
122
|
if (childrenKey === void 0) {
|
|
110
123
|
childrenKey = 'children';
|
|
111
124
|
}
|
|
@@ -130,6 +143,27 @@ function flattenTree(tree, childrenKey, executor) {
|
|
|
130
143
|
traverse(tree, null);
|
|
131
144
|
return flattenData;
|
|
132
145
|
}
|
|
146
|
+
|
|
147
|
+
function flattenTree(rootNodes, getChildren) {
|
|
148
|
+
var result = [];
|
|
149
|
+
walkTree(rootNodes, getChildren, function (node) {
|
|
150
|
+
return result.push(node);
|
|
151
|
+
});
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function walkTree(rootNodes, getChildren, callback) {
|
|
156
|
+
for (var queue = [].concat(rootNodes); queue.length > 0;) {
|
|
157
|
+
var _node = queue.shift();
|
|
158
|
+
|
|
159
|
+
callback(_node);
|
|
160
|
+
var children = getChildren(_node);
|
|
161
|
+
|
|
162
|
+
if (children) {
|
|
163
|
+
queue.push.apply(queue, children);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
133
167
|
/**
|
|
134
168
|
* get all ancestor nodes of given node
|
|
135
169
|
* @param {*} node
|
|
@@ -212,7 +246,7 @@ function getDefaultExpandItemValues(data, props) {
|
|
|
212
246
|
defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI;
|
|
213
247
|
|
|
214
248
|
if (defaultExpandAll) {
|
|
215
|
-
return
|
|
249
|
+
return UNSAFE_flattenTree(data, childrenKey).filter(function (item) {
|
|
216
250
|
return Array.isArray(item[childrenKey]) && item[childrenKey].length > 0;
|
|
217
251
|
}).map(function (item) {
|
|
218
252
|
return item[valueKey];
|
|
@@ -379,10 +413,10 @@ function findNodeOfTree(data, check) {
|
|
|
379
413
|
var _item3 = nodes[i];
|
|
380
414
|
|
|
381
415
|
if ((0, _isArray2.default)(_item3.children)) {
|
|
382
|
-
var
|
|
416
|
+
var _node2 = findNode(_item3.children);
|
|
383
417
|
|
|
384
|
-
if (
|
|
385
|
-
return
|
|
418
|
+
if (_node2) {
|
|
419
|
+
return _node2;
|
|
386
420
|
}
|
|
387
421
|
}
|
|
388
422
|
|
|
@@ -875,7 +909,7 @@ function useFlattenTreeData(_ref8) {
|
|
|
875
909
|
var formatVirtualizedTreeData = function formatVirtualizedTreeData(nodes, data, expandItemValues, options) {
|
|
876
910
|
var cascade = options.cascade,
|
|
877
911
|
searchKeyword = options.searchKeyword;
|
|
878
|
-
return
|
|
912
|
+
return UNSAFE_flattenTree(data, childrenKey, function (node) {
|
|
879
913
|
var formatted = {};
|
|
880
914
|
var curNode = nodes === null || nodes === void 0 ? void 0 : nodes[node.refKey];
|
|
881
915
|
var parentKeys = getNodeParentKeys(nodes, curNode, valueKey);
|
|
@@ -1170,4 +1204,73 @@ function stringifyTreeNodeLabel(label) {
|
|
|
1170
1204
|
}
|
|
1171
1205
|
|
|
1172
1206
|
return '';
|
|
1207
|
+
}
|
|
1208
|
+
/**
|
|
1209
|
+
* Returns a WeakMap that maps each item in `items` to its parent
|
|
1210
|
+
* indicated by `getChildren` function
|
|
1211
|
+
*/
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
function getParentMap(items, getChildren) {
|
|
1215
|
+
var map = new WeakMap();
|
|
1216
|
+
|
|
1217
|
+
for (var queue = [].concat(items); queue.length > 0;) {
|
|
1218
|
+
var _item5 = queue.shift();
|
|
1219
|
+
|
|
1220
|
+
var children = getChildren(_item5);
|
|
1221
|
+
|
|
1222
|
+
if (children) {
|
|
1223
|
+
for (var _iterator = _createForOfIteratorHelperLoose(children), _step; !(_step = _iterator()).done;) {
|
|
1224
|
+
var child = _step.value;
|
|
1225
|
+
map.set(child, _item5);
|
|
1226
|
+
queue.push(child);
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
return map;
|
|
1232
|
+
}
|
|
1233
|
+
/**
|
|
1234
|
+
* Returns a Map that maps each item's "key", indicated by `getKey` function,
|
|
1235
|
+
* to its parent indicated by `getChildren` function
|
|
1236
|
+
*
|
|
1237
|
+
* NOTICE:
|
|
1238
|
+
* Using this function is discouraged.
|
|
1239
|
+
* Use {@link getParentMap} whenever possible.
|
|
1240
|
+
*/
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
function getKeyParentMap(items, getKey, getChildren) {
|
|
1244
|
+
var map = new Map();
|
|
1245
|
+
|
|
1246
|
+
for (var queue = [].concat(items); queue.length > 0;) {
|
|
1247
|
+
var _item6 = queue.shift();
|
|
1248
|
+
|
|
1249
|
+
var children = getChildren(_item6);
|
|
1250
|
+
|
|
1251
|
+
if (children) {
|
|
1252
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
|
|
1253
|
+
var child = _step2.value;
|
|
1254
|
+
map.set(getKey(child), _item6);
|
|
1255
|
+
queue.push(child);
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
return map;
|
|
1261
|
+
}
|
|
1262
|
+
/**
|
|
1263
|
+
* Returns an array indicating the hirearchy path from root towards `target` item
|
|
1264
|
+
*/
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
function getPathTowardsItem(target, getParent) {
|
|
1268
|
+
if (!target) return [];
|
|
1269
|
+
var path = [target];
|
|
1270
|
+
|
|
1271
|
+
for (var parent = getParent(target); !!parent; parent = getParent(parent)) {
|
|
1272
|
+
path.unshift(parent);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
return path;
|
|
1173
1276
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.useMap = useMap;
|
|
5
|
+
|
|
6
|
+
var _react = require("react");
|
|
7
|
+
|
|
8
|
+
function useMap() {
|
|
9
|
+
var _useState = (0, _react.useState)(function () {
|
|
10
|
+
return new Map();
|
|
11
|
+
}),
|
|
12
|
+
map = _useState[0],
|
|
13
|
+
setMap = _useState[1];
|
|
14
|
+
|
|
15
|
+
return (0, _react.useMemo)(function () {
|
|
16
|
+
return {
|
|
17
|
+
has: function has(key) {
|
|
18
|
+
return map.has(key);
|
|
19
|
+
},
|
|
20
|
+
get: function get(key) {
|
|
21
|
+
return map.get(key);
|
|
22
|
+
},
|
|
23
|
+
set: function set(key, value) {
|
|
24
|
+
setMap(function (prev) {
|
|
25
|
+
var copy = new Map(prev);
|
|
26
|
+
copy.set(key, value);
|
|
27
|
+
return copy;
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
clear: function clear() {
|
|
31
|
+
setMap(new Map());
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}, [map]);
|
|
35
|
+
}
|