UNPKG

rhine-var

Version:

Variables that support multi-user collaboration and persistence, making collaboration and variable operations as simple as possible, with strict and well-defined type hints.

38 lines (37 loc) 1.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useSynced; const connector_abstract_1 = __importDefault(require("../../core/connector/connector.abstract")); const rhine_var_base_class_1 = __importDefault(require("../../core/var/rhine-var-base.class")); const load_react_1 = __importDefault(require("../load-react")); function useSynced(target) { const React = (0, load_react_1.default)(); if (!React) { throw new Error('RhineVar: useRhine hook requires React'); } const checkSynced = () => { var _a; let connector = null; if (target instanceof connector_abstract_1.default) { connector = target; } else if (target instanceof rhine_var_base_class_1.default) { connector = target.getConnector(); } return (_a = connector === null || connector === void 0 ? void 0 : connector.synced) !== null && _a !== void 0 ? _a : false; }; const [synced, setSynced] = React.useState(checkSynced); React.useEffect(() => { if (target instanceof connector_abstract_1.default) { return target.subscribeSynced((value) => setSynced(value)); } if (target instanceof rhine_var_base_class_1.default) { // @ts-ignore return target.subscribeSynced((value) => setSynced(value)); } }, [target]); return synced; }