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/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { forwardRef, useContext, createContext, createElement, Fragment, useRef, useLayoutEffect, useEffect, useMemo, memo } from 'react';
|
|
2
|
+
import React__default, { forwardRef, useContext, createContext, createElement, Fragment, useRef, useLayoutEffect, useEffect, useMemo, memo, useCallback } from 'react';
|
|
3
3
|
import { atom, selector, useRecoilValue, useRecoilCallback, useRecoilState, useSetRecoilState, RecoilRoot } from 'recoil';
|
|
4
4
|
|
|
5
5
|
function ownKeys(object, enumerableOnly) {
|
|
@@ -4110,10 +4110,6 @@ var useItemList = function useItemList() {
|
|
|
4110
4110
|
return items;
|
|
4111
4111
|
};
|
|
4112
4112
|
|
|
4113
|
-
var useSelectedItems = function useSelectedItems() {
|
|
4114
|
-
return useRecoilValue(SelectedItemsAtom);
|
|
4115
|
-
};
|
|
4116
|
-
|
|
4117
4113
|
/**
|
|
4118
4114
|
* Run effect only when component is unmounted.
|
|
4119
4115
|
*
|
|
@@ -4301,6 +4297,28 @@ function useThrottledCallback(callback, deps, delay, noTrailing) {
|
|
|
4301
4297
|
}, __spreadArray([delay, noTrailing], deps, true));
|
|
4302
4298
|
}
|
|
4303
4299
|
|
|
4300
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4301
|
+
/**
|
|
4302
|
+
* Like `useEffect`, but passed function is debounced.
|
|
4303
|
+
*
|
|
4304
|
+
* @param callback Callback like for `useEffect`, but without ability to return
|
|
4305
|
+
* a cleanup function.
|
|
4306
|
+
* @param deps Dependencies list that will be passed to underlying `useEffect`
|
|
4307
|
+
* and `useDebouncedCallback`.
|
|
4308
|
+
* @param delay Debounce delay.
|
|
4309
|
+
* @param maxWait Maximum amount of milliseconds that function can be delayed
|
|
4310
|
+
* before it's force execution. 0 means no max wait.
|
|
4311
|
+
*/
|
|
4312
|
+
|
|
4313
|
+
function useDebouncedEffect(callback, deps, delay, maxWait) {
|
|
4314
|
+
if (maxWait === void 0) {
|
|
4315
|
+
maxWait = 0;
|
|
4316
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4317
|
+
|
|
4318
|
+
|
|
4319
|
+
useEffect(useDebouncedCallback(callback, deps, delay, maxWait), deps);
|
|
4320
|
+
}
|
|
4321
|
+
|
|
4304
4322
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4305
4323
|
/**
|
|
4306
4324
|
* Like `useEffect`, but passed function is throttled.
|
|
@@ -4445,6 +4463,45 @@ function useResizeObserver(target, callback, enabled) {
|
|
|
4445
4463
|
}, [target, ro]);
|
|
4446
4464
|
}
|
|
4447
4465
|
|
|
4466
|
+
var useDebouncedItems = function useDebouncedItems() {
|
|
4467
|
+
var items = useRecoilValue(AllItemsSelector);
|
|
4468
|
+
|
|
4469
|
+
var _React$useState = React__default.useState(items),
|
|
4470
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
4471
|
+
debouncedItems = _React$useState2[0],
|
|
4472
|
+
setDebouncedItems = _React$useState2[1];
|
|
4473
|
+
|
|
4474
|
+
var updateDebouncedItems = useRecoilCallback(function (_ref) {
|
|
4475
|
+
var snapshot = _ref.snapshot;
|
|
4476
|
+
return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
4477
|
+
var currentItemMap;
|
|
4478
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
4479
|
+
while (1) {
|
|
4480
|
+
switch (_context.prev = _context.next) {
|
|
4481
|
+
case 0:
|
|
4482
|
+
_context.next = 2;
|
|
4483
|
+
return snapshot.getPromise(AllItemsSelector);
|
|
4484
|
+
|
|
4485
|
+
case 2:
|
|
4486
|
+
currentItemMap = _context.sent;
|
|
4487
|
+
setDebouncedItems(currentItemMap);
|
|
4488
|
+
|
|
4489
|
+
case 4:
|
|
4490
|
+
case "end":
|
|
4491
|
+
return _context.stop();
|
|
4492
|
+
}
|
|
4493
|
+
}
|
|
4494
|
+
}, _callee);
|
|
4495
|
+
}));
|
|
4496
|
+
}, []);
|
|
4497
|
+
useDebouncedEffect(updateDebouncedItems, [items], 300);
|
|
4498
|
+
return debouncedItems;
|
|
4499
|
+
};
|
|
4500
|
+
|
|
4501
|
+
var useSelectedItems = function useSelectedItems() {
|
|
4502
|
+
return useRecoilValue(SelectedItemsAtom);
|
|
4503
|
+
};
|
|
4504
|
+
|
|
4448
4505
|
var isMacOS = function isMacOS() {
|
|
4449
4506
|
var userAgent = navigator.userAgent.toLowerCase();
|
|
4450
4507
|
return /mac os ?x 10/.test(userAgent);
|
|
@@ -5319,8 +5376,6 @@ var PositionedItem = function PositionedItem(_ref12) {
|
|
|
5319
5376
|
rest = _objectWithoutProperties(_ref12, _excluded2);
|
|
5320
5377
|
|
|
5321
5378
|
if (!rest.itemMap[state.type]) {
|
|
5322
|
-
// eslint-disable-next-line no-console
|
|
5323
|
-
console.warn("Item type ".concat(state.type, " not recognized!"));
|
|
5324
5379
|
return null;
|
|
5325
5380
|
}
|
|
5326
5381
|
|
|
@@ -8658,8 +8713,10 @@ var getActionsFromItem = function getActionsFromItem(item, itemMap) {
|
|
|
8658
8713
|
};
|
|
8659
8714
|
|
|
8660
8715
|
var useAvailableActions = function useAvailableActions() {
|
|
8716
|
+
var itemMap = useRecoilValue(ItemMapAtom);
|
|
8717
|
+
|
|
8661
8718
|
var _useRecoilValue = useRecoilValue(ConfigurationAtom),
|
|
8662
|
-
|
|
8719
|
+
itemTemplates = _useRecoilValue.itemTemplates;
|
|
8663
8720
|
|
|
8664
8721
|
var selected = useRecoilValue(SelectedItemsAtom);
|
|
8665
8722
|
|
|
@@ -8669,6 +8726,13 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8669
8726
|
setAvailableActions = _React$useState2[1];
|
|
8670
8727
|
|
|
8671
8728
|
var isMountedRef = React__default.useRef(false);
|
|
8729
|
+
React__default.useEffect(function () {
|
|
8730
|
+
// Mounted guard
|
|
8731
|
+
isMountedRef.current = true;
|
|
8732
|
+
return function () {
|
|
8733
|
+
isMountedRef.current = false;
|
|
8734
|
+
};
|
|
8735
|
+
}, []);
|
|
8672
8736
|
var getItemListOrSelected = useRecoilCallback(function (_ref) {
|
|
8673
8737
|
var snapshot = _ref.snapshot;
|
|
8674
8738
|
return /*#__PURE__*/function () {
|
|
@@ -8716,19 +8780,12 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8716
8780
|
};
|
|
8717
8781
|
}();
|
|
8718
8782
|
}, []);
|
|
8719
|
-
React__default.useEffect(function () {
|
|
8720
|
-
// Mounted guard
|
|
8721
|
-
isMountedRef.current = true;
|
|
8722
|
-
return function () {
|
|
8723
|
-
isMountedRef.current = false;
|
|
8724
|
-
};
|
|
8725
|
-
}, []);
|
|
8726
8783
|
/**
|
|
8727
8784
|
* Returns available actions for selected items. An action is kept only if all
|
|
8728
8785
|
* items have this exact same action with same parameters.
|
|
8729
8786
|
*/
|
|
8730
8787
|
|
|
8731
|
-
var updateAvailableActions =
|
|
8788
|
+
var updateAvailableActions = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|
8732
8789
|
var _yield$getItemListOrS, _yield$getItemListOrS2, selectedItemIds, selectedItemList, allActions;
|
|
8733
8790
|
|
|
8734
8791
|
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -8758,13 +8815,13 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8758
8815
|
|
|
8759
8816
|
case 9:
|
|
8760
8817
|
allActions = selectedItemList.reduce(function (acc, item) {
|
|
8761
|
-
var itemActions = getActionsFromItem(item,
|
|
8818
|
+
var itemActions = getActionsFromItem(item, itemTemplates);
|
|
8762
8819
|
return acc.filter(function (value) {
|
|
8763
8820
|
return itemActions.some(function (itemAction) {
|
|
8764
8821
|
return es6(value, itemAction);
|
|
8765
8822
|
});
|
|
8766
8823
|
});
|
|
8767
|
-
}, getActionsFromItem(selectedItemList[0],
|
|
8824
|
+
}, getActionsFromItem(selectedItemList[0], itemTemplates));
|
|
8768
8825
|
setAvailableActions(allActions);
|
|
8769
8826
|
_context2.next = 14;
|
|
8770
8827
|
break;
|
|
@@ -8778,11 +8835,11 @@ var useAvailableActions = function useAvailableActions() {
|
|
|
8778
8835
|
}
|
|
8779
8836
|
}
|
|
8780
8837
|
}, _callee2);
|
|
8781
|
-
})), [getItemListOrSelected,
|
|
8838
|
+
})), [getItemListOrSelected, itemTemplates]); // Update available actions when selection change
|
|
8782
8839
|
|
|
8783
|
-
React__default.useEffect(
|
|
8784
|
-
|
|
8785
|
-
|
|
8840
|
+
React__default.useEffect(updateAvailableActions, [updateAvailableActions, selected]); // Debounced update available actions when items change
|
|
8841
|
+
|
|
8842
|
+
useDebouncedEffect(updateAvailableActions, [itemMap, updateAvailableActions], 300);
|
|
8786
8843
|
return {
|
|
8787
8844
|
availableActions: availableActions
|
|
8788
8845
|
};
|
|
@@ -9367,7 +9424,11 @@ var SyncBoard = function SyncBoard(_ref) {
|
|
|
9367
9424
|
});
|
|
9368
9425
|
}, [setConfiguration, uid]);
|
|
9369
9426
|
useResizeObserver(boardWrapperRef, function () {
|
|
9370
|
-
|
|
9427
|
+
if (!boardWrapperRef.current) {
|
|
9428
|
+
return;
|
|
9429
|
+
}
|
|
9430
|
+
|
|
9431
|
+
setConfiguration(function (prev) {
|
|
9371
9432
|
return _objectSpread2(_objectSpread2({}, prev), {}, {
|
|
9372
9433
|
boardWrapperRect: boardWrapperRef.current.getBoundingClientRect()
|
|
9373
9434
|
});
|
|
@@ -9435,5 +9496,5 @@ var ConnectedSyncRoom = function ConnectedSyncRoom(_ref) {
|
|
|
9435
9496
|
}, /*#__PURE__*/React__default.createElement(SubscribeUserEvents, null), children));
|
|
9436
9497
|
};
|
|
9437
9498
|
|
|
9438
|
-
export { Board, ConnectedSyncBoard as BoardWrapper, ConnectedSyncRoom as RoomWrapper, useAvailableActions, useBoardConfig, useDim as useBoardPosition, useBoardState, useItemActions, useItemInteraction, useItemList as useItems, useMessage, useSelectedItems, useSelectionBox, useUsers, useWire };
|
|
9499
|
+
export { Board, ConnectedSyncBoard as BoardWrapper, ConnectedSyncRoom as RoomWrapper, useAvailableActions, useBoardConfig, useDim as useBoardPosition, useBoardState, useDebouncedItems, useItemActions, useItemInteraction, useItemList as useItems, useMessage, useSelectedItems, useSelectionBox, useUsers, useWire };
|
|
9439
9500
|
//# sourceMappingURL=index.js.map
|