@dark-engine/core
Version:
The lightweight and powerful UI rendering engine without dependencies and written in TypeScript (Browser, Node.js, Android, iOS, Windows, Linux, macOS)
19 lines (18 loc) • 889 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.useSyncExternalStore = void 0;
const utils_1 = require('../utils');
const use_layout_effect_1 = require('../use-layout-effect');
const internal_1 = require('../internal');
const use_state_1 = require('../use-state');
function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
const { isSSR } = (0, internal_1.__useSSR)();
if (isSSR && !(0, utils_1.detectIsFunction)(getServerSnapshot)) {
(0, utils_1.illegal)('getServerSnapshot was not found!');
}
const [state, setState] = (0, use_state_1.useState)(isSSR ? getServerSnapshot() : getSnapshot());
(0, use_layout_effect_1.useLayoutEffect)(() => subscribe(() => setState(getSnapshot())), [getSnapshot]);
return state;
}
exports.useSyncExternalStore = useSyncExternalStore;
//# sourceMappingURL=use-sync-external-store.js.map