@itwin/itwinui-react
Version:
A react component library for iTwinUI
39 lines (38 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
function _export(target, all) {
for (var name in all)
Object.defineProperty(target, name, {
enumerable: true,
get: all[name],
});
}
_export(exports, {
useInstance: function () {
return useInstance;
},
useSynchronizeInstance: function () {
return useSynchronizeInstance;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _useSyncExternalStore = require('./useSyncExternalStore.js');
class Instance {}
const useInstance = () => _react.useMemo(() => new Instance(), []);
const useSynchronizeInstance = (instance, properties) => {
let synchronize = _react.useCallback(() => {
if (!(instance instanceof Instance)) return () => {};
Object.assign(instance, properties);
return () => {
for (let key in properties) delete instance[key];
};
}, [instance, properties]);
return (0, _useSyncExternalStore.useSyncExternalStore)(
synchronize,
() => instance,
() => instance,
);
};