react-sync-board 0.6.0 → 0.6.1
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/cjs/index.js +84 -22
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +85 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/react-sync-board.min.js +1 -1
- package/dist/react-sync-board.min.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -4138,10 +4138,6 @@ var useItemList = function useItemList() {
|
|
|
4138
4138
|
return items;
|
|
4139
4139
|
};
|
|
4140
4140
|
|
|
4141
|
-
var useSelectedItems = function useSelectedItems() {
|
|
4142
|
-
return recoil.useRecoilValue(SelectedItemsAtom);
|
|
4143
|
-
};
|
|
4144
|
-
|
|
4145
4141
|
/**
|
|
4146
4142
|
* Run effect only when component is unmounted.
|
|
4147
4143
|
*
|
|
@@ -4329,6 +4325,28 @@ function useThrottledCallback(callback, deps, delay, noTrailing) {
|
|
|
4329
4325
|
}, __spreadArray([delay, noTrailing], deps, true));
|
|
4330
4326
|
}
|
|
4331
4327
|
|
|
4328
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4329
|
+
/**
|
|
4330
|
+
* Like `useEffect`, but passed function is debounced.
|
|
4331
|
+
*
|
|
4332
|
+
* @param callback Callback like for `useEffect`, but without ability to return
|
|
4333
|
+
* a cleanup function.
|
|
4334
|
+
* @param deps Dependencies list that will be passed to underlying `useEffect`
|
|
4335
|
+
* and `useDebouncedCallback`.
|
|
4336
|
+
* @param delay Debounce delay.
|
|
4337
|
+
* @param maxWait Maximum amount of milliseconds that function can be delayed
|
|
4338
|
+
* before it's force execution. 0 means no max wait.
|
|
4339
|
+
*/
|
|
4340
|
+
|
|
4341
|
+
function useDebouncedEffect(callback, deps, delay, maxWait) {
|
|
4342
|
+
if (maxWait === void 0) {
|
|
4343
|
+
maxWait = 0;
|
|
4344
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4345
|
+
|
|
4346
|
+
|
|
4347
|
+
React.useEffect(useDebouncedCallback(callback, deps, delay, maxWait), deps);
|
|
4348
|
+
}
|
|
4349
|
+
|
|
4332
4350
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4333
4351
|
/**
|
|
4334
4352
|
* Like `useEffect`, but passed function is throttled.
|
|
@@ -4473,6 +4491,45 @@ function useResizeObserver(target, callback, enabled) {
|
|
|
4473
4491
|
}, [target, ro]);
|
|
4474
4492
|
}
|
|
4475
4493
|
|
|
4494
|
+
var useDebouncedItems = function useDebouncedItems() {
|
|
4495
|
+
var items = recoil.useRecoilValue(AllItemsSelector);
|
|
4496
|
+
|
|
4497
|
+
var _React$useState = React__default['default'].useState(items),
|
|
4498
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
4499
|
+
debouncedItems = _React$useState2[0],
|
|
4500
|
+
setDebouncedItems = _React$useState2[1];
|
|
4501
|
+
|
|
4502
|
+
var updateDebouncedItems = recoil.useRecoilCallback(function (_ref) {
|
|
4503
|
+
var snapshot = _ref.snapshot;
|
|
4504
|
+
return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
4505
|
+
var currentItemMap;
|
|
4506
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
4507
|
+
while (1) {
|
|
4508
|
+
switch (_context.prev = _context.next) {
|
|
4509
|
+
case 0:
|
|
4510
|
+
_context.next = 2;
|
|
4511
|
+
return snapshot.getPromise(AllItemsSelector);
|
|
4512
|
+
|
|
4513
|
+
case 2:
|
|
4514
|
+
currentItemMap = _context.sent;
|
|
4515
|
+
setDebouncedItems(currentItemMap);
|
|
4516
|
+
|
|
4517
|
+
case 4:
|
|
4518
|
+
case "end":
|
|
4519
|
+
return _context.stop();
|
|
4520
|
+
}
|
|
4521
|
+
}
|
|
4522
|
+
}, _callee);
|
|
4523
|
+
}));
|
|
4524
|
+
}, []);
|
|
4525
|
+
useDebouncedEffect(updateDebouncedItems, [items], 300);
|
|
4526
|
+
return debouncedItems;
|
|
4527
|
+
};
|
|
4528
|
+
|
|
4529
|
+
var useSelectedItems = function useSelectedItems() {
|
|
4530
|
+
return recoil.useRecoilValue(SelectedItemsAtom);
|
|
4531
|
+
};
|
|
4532
|
+
|
|
4476
4533
|
var isMacOS = function isMacOS() {
|
|
4477
4534
|
var userAgent = navigator.userAgent.toLowerCase();
|
|
4478
4535
|
return /mac os ?x 10/.test(userAgent);
|
|
@@ -5347,8 +5404,6 @@ var PositionedItem = function PositionedItem(_ref12) {
|
|
|
5347
5404
|
rest = _objectWithoutProperties(_ref12, _excluded2);
|
|
5348
5405
|
|
|
5349
5406
|
if (!rest.itemMap[state.type]) {
|
|
5350
|
-
// eslint-disable-next-line no-console
|
|
5351
|
-
console.warn("Item type ".concat(state.type, " not recognized!"));
|
|
5352
5407
|
return null;
|
|
5353
5408
|
}
|
|
5354
5409
|
|
|
@@ -8686,8 +8741,10 @@ var getActionsFromItem = function getActionsFromItem(item, itemMap) {
|
|
|
8686
8741
|
};
|
|
8687
8742
|
|
|
8688
8743
|
var useAvailableActions = function useAvailableActions() {
|
|
8744
|
+
var itemMap = recoil.useRecoilValue(ItemMapAtom);
|
|
8745
|
+
|
|
8689
8746
|
var _useRecoilValue = recoil.useRecoilValue(ConfigurationAtom),
|
|
8690
|
-
|
|
8747
|
+
itemTemplates = _useRecoilValue.itemTemplates;
|
|
8691
8748
|
|
|
8692
8749
|
var selected = recoil.useRecoilValue(SelectedItemsAtom);
|
|
8693
8750
|
|
|
@@ -8697,6 +8754,13 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8697
8754
|
setAvailableActions = _React$useState2[1];
|
|
8698
8755
|
|
|
8699
8756
|
var isMountedRef = React__default['default'].useRef(false);
|
|
8757
|
+
React__default['default'].useEffect(function () {
|
|
8758
|
+
// Mounted guard
|
|
8759
|
+
isMountedRef.current = true;
|
|
8760
|
+
return function () {
|
|
8761
|
+
isMountedRef.current = false;
|
|
8762
|
+
};
|
|
8763
|
+
}, []);
|
|
8700
8764
|
var getItemListOrSelected = recoil.useRecoilCallback(function (_ref) {
|
|
8701
8765
|
var snapshot = _ref.snapshot;
|
|
8702
8766
|
return /*#__PURE__*/function () {
|
|
@@ -8744,19 +8808,12 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8744
8808
|
};
|
|
8745
8809
|
}();
|
|
8746
8810
|
}, []);
|
|
8747
|
-
React__default['default'].useEffect(function () {
|
|
8748
|
-
// Mounted guard
|
|
8749
|
-
isMountedRef.current = true;
|
|
8750
|
-
return function () {
|
|
8751
|
-
isMountedRef.current = false;
|
|
8752
|
-
};
|
|
8753
|
-
}, []);
|
|
8754
8811
|
/**
|
|
8755
8812
|
* Returns available actions for selected items. An action is kept only if all
|
|
8756
8813
|
* items have this exact same action with same parameters.
|
|
8757
8814
|
*/
|
|
8758
8815
|
|
|
8759
|
-
var updateAvailableActions =
|
|
8816
|
+
var updateAvailableActions = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|
8760
8817
|
var _yield$getItemListOrS, _yield$getItemListOrS2, selectedItemIds, selectedItemList, allActions;
|
|
8761
8818
|
|
|
8762
8819
|
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -8786,13 +8843,13 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8786
8843
|
|
|
8787
8844
|
case 9:
|
|
8788
8845
|
allActions = selectedItemList.reduce(function (acc, item) {
|
|
8789
|
-
var itemActions = getActionsFromItem(item,
|
|
8846
|
+
var itemActions = getActionsFromItem(item, itemTemplates);
|
|
8790
8847
|
return acc.filter(function (value) {
|
|
8791
8848
|
return itemActions.some(function (itemAction) {
|
|
8792
8849
|
return es6(value, itemAction);
|
|
8793
8850
|
});
|
|
8794
8851
|
});
|
|
8795
|
-
}, getActionsFromItem(selectedItemList[0],
|
|
8852
|
+
}, getActionsFromItem(selectedItemList[0], itemTemplates));
|
|
8796
8853
|
setAvailableActions(allActions);
|
|
8797
8854
|
_context2.next = 14;
|
|
8798
8855
|
break;
|
|
@@ -8806,11 +8863,11 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8806
8863
|
}
|
|
8807
8864
|
}
|
|
8808
8865
|
}, _callee2);
|
|
8809
|
-
})), [getItemListOrSelected,
|
|
8866
|
+
})), [getItemListOrSelected, itemTemplates]); // Update available actions when selection change
|
|
8810
8867
|
|
|
8811
|
-
React__default['default'].useEffect(
|
|
8812
|
-
|
|
8813
|
-
|
|
8868
|
+
React__default['default'].useEffect(updateAvailableActions, [updateAvailableActions, selected]); // Debounced update available actions when items change
|
|
8869
|
+
|
|
8870
|
+
useDebouncedEffect(updateAvailableActions, [itemMap, updateAvailableActions], 300);
|
|
8814
8871
|
return {
|
|
8815
8872
|
availableActions: availableActions
|
|
8816
8873
|
};
|
|
@@ -9395,7 +9452,11 @@ var SyncBoard = function SyncBoard(_ref) {
|
|
|
9395
9452
|
});
|
|
9396
9453
|
}, [setConfiguration, uid]);
|
|
9397
9454
|
useResizeObserver(boardWrapperRef, function () {
|
|
9398
|
-
|
|
9455
|
+
if (!boardWrapperRef.current) {
|
|
9456
|
+
return;
|
|
9457
|
+
}
|
|
9458
|
+
|
|
9459
|
+
setConfiguration(function (prev) {
|
|
9399
9460
|
return _objectSpread2(_objectSpread2({}, prev), {}, {
|
|
9400
9461
|
boardWrapperRect: boardWrapperRef.current.getBoundingClientRect()
|
|
9401
9462
|
});
|
|
@@ -9470,6 +9531,7 @@ exports.useAvailableActions = useAvailableActions;
|
|
|
9470
9531
|
exports.useBoardConfig = useBoardConfig;
|
|
9471
9532
|
exports.useBoardPosition = useDim;
|
|
9472
9533
|
exports.useBoardState = useBoardState;
|
|
9534
|
+
exports.useDebouncedItems = useDebouncedItems;
|
|
9473
9535
|
exports.useItemActions = useItemActions;
|
|
9474
9536
|
exports.useItemInteraction = useItemInteraction;
|
|
9475
9537
|
exports.useItems = useItemList;
|