@itwin/itwinui-react
Version:
A react component library for iTwinUI
44 lines (43 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useSyncExternalStore', {
enumerable: true,
get: function () {
return useSyncExternalStore;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _React = _react;
const useSyncExternalStore =
_React.useSyncExternalStore || useSyncExternalStoreShim;
function useSyncExternalStoreShim(subscribe, getSnapshot) {
let value = getSnapshot();
let [{ instance }, forceUpdate] = _react.useState({
instance: {
value,
getSnapshot,
},
});
_react.useLayoutEffect(() => {
instance.value = value;
instance.getSnapshot = getSnapshot;
if (!Object.is(value, getSnapshot()))
forceUpdate({
instance,
});
}, [subscribe, value, getSnapshot]);
_react.useEffect(() => {
let synchronize = () => {
if (!Object.is(instance.value, instance.getSnapshot()))
forceUpdate({
instance,
});
};
synchronize();
return subscribe(synchronize);
}, [subscribe]);
return value;
}