@vaadin/hilla-react-signals
Version:
Signals for Hilla React
86 lines • 2.6 kB
JavaScript
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