import { defineToolcraft } from "../../schema/define-toolcraft";
import type { ToolcraftExternalStore } from "../../state/toolcraft-external-store";
import { useToolcraftStore } from "./toolcraft-store-context";
export function StorePersistenceProbe() {
const store = useToolcraftStore();
return (
store.dispatchTransient({
currentTimeSeconds: 2,
type: "timeline.setCurrentTime",
})
}
>
Scrub timeline
store.dispatchTransient({
offset: { x: 24, y: -12 },
type: "canvas.setViewport",
zoom: 150,
})
}
>
Move viewport
store.dispatch({
target: "selectedLayer.opacity",
type: "controls.setValue",
value: 50,
})
}
>
Set persisted value
store.dispatch({
size: { height: 480, unit: "px", width: 640 },
type: "canvas.setSize",
})
}
>
Resize canvas
store.dispatch({
expanded: true,
type: "timeline.setExpanded",
})
}
>
Expand non-persisted timeline
store.commitTransient("playback")}>
Commit playback
store.dispatch({
controlId: "selectedLayer.opacity",
controlLabel: "Opacity",
type: "timeline.upsertControlKeyframe",
value: 50,
valueLabel: "50",
})
}
>
Set keyframe
store.dispatch({ type: "history.undo" })}
>
Undo
store.dispatch({ type: "history.redo" })}
>
Redo
);
}
export function CaptureStore({
capture,
}: {
capture: (store: ToolcraftExternalStore) => void;
}) {
capture(useToolcraftStore());
return null;
}
export function createHotPersistenceSchema() {
return defineToolcraft({
canvas: { enabled: true },
panels: {
controls: {
sections: [
{
controls: {
opacity: {
defaultValue: 75,
target: "selectedLayer.opacity",
type: "slider",
},
},
},
],
title: "Controls",
},
},
persistence: {
include: ["values", "canvas", "panels", "timeline"],
key: "toolcraft:root-test-hot:state:v1",
storage: "localStorage",
version: 1,
},
});
}
export function createValuesPersistenceSchema() {
return defineToolcraft({
canvas: { enabled: true },
panels: {
controls: {
sections: [
{
controls: {
opacity: {
defaultValue: 75,
target: "selectedLayer.opacity",
type: "slider",
},
},
},
],
title: "Controls",
},
},
persistence: {
include: ["values", "panels"],
key: "toolcraft:root-test-committed-values:state:v1",
storage: "localStorage",
version: 1,
},
});
}