feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import type { KikuFieldGroupingChoice } from '../../types';
type FieldGroupingResolver = ((choice: KikuFieldGroupingChoice) => void) | null;
export function createGetFieldGroupingResolverHandler(deps: {
getResolver: () => FieldGroupingResolver;
}) {
return (): FieldGroupingResolver => deps.getResolver();
}
export function createSetFieldGroupingResolverHandler(deps: {
setResolver: (resolver: FieldGroupingResolver) => void;
nextSequence: () => number;
getSequence: () => number;
}) {
return (resolver: FieldGroupingResolver): void => {
if (!resolver) {
deps.setResolver(null);
return;
}
const sequence = deps.nextSequence();
const wrappedResolver = (choice: KikuFieldGroupingChoice): void => {
if (sequence !== deps.getSequence()) return;
resolver(choice);
};
deps.setResolver(wrappedResolver);
};
}