@rivetkit/react
Version:
React hooks and components for RivetKit client applications
59 lines (49 loc) • 1.81 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});// src/mod.ts
var _frameworkbase = require('@rivetkit/framework-base');
var _reactstore = require('@tanstack/react-store');
var _react = require('react');
var _client = require('rivetkit/client');
function createRivetKit(clientInput, opts = {}) {
return createRivetKitWithClient(
_client.createClient.call(void 0, clientInput),
opts
);
}
function createRivetKitWithClient(client, opts = {}) {
const { getOrCreateActor } = _frameworkbase.createRivetKit.call(void 0, client, opts);
function useActor(opts2) {
const { mount, state } = getOrCreateActor(opts2);
_react.useEffect.call(void 0, () => {
return mount();
}, [mount]);
const actorState = _reactstore.useStore.call(void 0, state) || {};
function useEvent(eventName, handler) {
const ref = _react.useRef.call(void 0, handler);
const actorState2 = _reactstore.useStore.call(void 0, state) || {};
_react.useEffect.call(void 0, () => {
ref.current = handler;
}, [handler]);
_react.useEffect.call(void 0, () => {
if (!(actorState2 == null ? void 0 : actorState2.connection)) return;
function eventHandler(...args) {
ref.current(...args);
}
return actorState2.connection.on(eventName, eventHandler);
}, [
actorState2.connection,
actorState2.connStatus,
actorState2.hash,
eventName
]);
}
return {
...actorState,
useEvent
};
}
return {
useActor
};
}
exports.ActorConnDisposed = _client.ActorConnDisposed; exports.createClient = _client.createClient; exports.createRivetKit = createRivetKit; exports.createRivetKitWithClient = createRivetKitWithClient;
//# sourceMappingURL=mod.js.map