UNPKG

@vaadin/hilla-react-signals

Version:

Signals for Hilla React

86 lines 2.6 kB
import { nanoid } from 'nanoid'; export function createSetStateEvent(value, signalId, parentSignalId) { return { id: signalId ?? nanoid(), type: 'set', value, accepted: false, ...(parentSignalId !== undefined ? { parentSignalId } : {}), }; } export function createReplaceStateEvent(expected, value, signalId, parentSignalId) { return { id: signalId ?? nanoid(), type: 'replace', value, expected, accepted: false, ...(parentSignalId !== undefined ? { parentSignalId } : {}), }; } export function createIncrementStateEvent(delta) { return { id: nanoid(), type: 'increment', value: delta, accepted: false, }; } export function createInsertLastStateEvent(value) { return { id: nanoid(), type: 'insert', value, position: 'last', accepted: false, }; } export function createRemoveStateEvent(entryId) { return { id: nanoid(), type: 'remove', entryId, value: undefined, accepted: false, }; } function isStateEvent(event) { return (typeof event === 'object' && event !== null && typeof event.id === 'string' && typeof event.type === 'string' && typeof event.value !== 'undefined' && typeof event.accepted === 'boolean'); } export function isSnapshotStateEvent(event) { return isStateEvent(event) && event.type === 'snapshot'; } export function isSetStateEvent(event) { return isStateEvent(event) && event.type === 'set'; } export function isReplaceStateEvent(event) { return (isStateEvent(event) && typeof event.expected !== 'undefined' && event.type === 'replace'); } export function isIncrementStateEvent(event) { return isStateEvent(event) && event.type === 'increment'; } export function isListSnapshotStateEvent(event) { return (typeof event === 'object' && event !== null && typeof event.id === 'string' && event.type === 'snapshot' && event.entries instanceof Array && typeof event.accepted !== 'undefined'); } export function isInsertLastStateEvent(event) { return isStateEvent(event) && event.type === 'insert' && event.position === 'last'; } export function isRemoveStateEvent(event) { return (typeof event === 'object' && event !== null && typeof event.id === 'string' && event.type === 'remove' && typeof event.entryId === 'string' && typeof event.value === 'undefined'); } //# sourceMappingURL=events.js.map