@sanity/visual-editing
Version:
[](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [](https://
163 lines (162 loc) • 5.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: !0 });
var context = require("../_chunks-cjs/context.cjs"), _unstable_machine = require("@sanity/mutate/_unstable_machine"), xstate = require("xstate"), mutate = require("@sanity/mutate");
const createDocumentMutator = (comlink) => {
const fetchSnapshot = xstate.fromPromise(async ({
input,
signal
}) => {
const {
id
} = input, {
snapshot
} = await comlink.fetch("visual-editing/fetch-snapshot", {
documentId: id
}, {
signal
});
return snapshot;
}), submitMutations = xstate.fromPromise(async ({
input
}) => {
const {
transactions
} = input;
for (const transaction of transactions) {
const data = mutate.SanityEncoder.encodeTransaction(transaction);
return comlink.post("visual-editing/mutate", data);
}
});
return _unstable_machine.documentMutatorMachine.provide({
actions: {
"send sync event to parent": xstate.enqueueActions(({
enqueue
}) => {
enqueue.sendParent(({
context: context2
}) => ({
type: "sync",
id: context2.id,
document: context2.remote
})), enqueue.emit(({
context: context2
}) => ({
type: "ready",
snapshot: context2.local
}));
})
},
actors: {
"fetch remote snapshot": fetchSnapshot,
"submit mutations as transactions": submitMutations
}
});
}, datasetMutatorMachine = xstate.setup({
types: {},
actions: {
"emit sync event": xstate.emit(({
event
}) => (xstate.assertEvent(event, "sync"), event)),
"emit mutation event": xstate.emit(({
event
}) => (xstate.assertEvent(event, "mutation"), event)),
"emit rebased event": xstate.emit(({
event
}) => (xstate.assertEvent(event, ["rebased.local", "rebased.remote"]), event)),
"emit pristine event": xstate.emit(({
event
}) => (xstate.assertEvent(event, ["pristine"]), event)),
"add document actor": xstate.assign({
documents: ({
context: context2,
event,
spawn
}) => {
xstate.assertEvent(event, "observe");
const id = event.documentId;
return context2.documents[id] ? context2.documents : {
...context2.documents,
[id]: spawn("documentMutatorMachine", {
input: {
id,
client: context2.client,
sharedListener: context2.sharedListener || _unstable_machine.createSharedListener(context2.client)
},
id
})
};
}
}),
"stop remote snapshot": xstate.stopChild(({
context: context2,
event
}) => (xstate.assertEvent(event, "unobserve"), context2.documents[event.documentId])),
"remove remote snapshot from context": xstate.assign({
documents: ({
context: context2,
event
}) => {
if (xstate.assertEvent(event, "unobserve"), !context2.documents[event.documentId]) return context2.documents;
const {
[event.documentId]: _,
...documents
} = context2.documents;
return documents;
}
})
},
actors: {
documentMutatorMachine: _unstable_machine.documentMutatorMachine
}
}).createMachine({
/** @xstate-layout N4IgpgJg5mDOIC5QBsD2BjAhsgIhgrgLZgB2ALgMTICWsZpA2gAwC6ioADqrNWdaiXYgAHogC0ADgBMAOgkA2ACyKArBICcTdfKXSANCACeiFQHYZpgMxWV800yYqp6gIyn5AXw8G0WXAWJyCnwSGjpGViEuHj4BIVEEKUt5OSlFU1smFwkFW0sDY0T1GRUXRXkXKVN7HSYJJkUvHwxsPHQiUjIZDgAnWj4SMApCfDJMemY2JBBo3n5BaYSXeVlbKRUsiXdFSxcXfKNERSqZTbr1zVMJNyaQX1aAzpkIah6yQwp0VEJCXkmo7hzOKLRDLFwyFxaSzXKTOKQudSKCQFRDOczqCSWJjwjbHCQqRFebwgEioCBwIT3fztQJkAExebxcQuFEIZaWGRIrF7dSXKTyFSNYlUtodcjdPp0aiDelAhagBLpVmWAmc46mNwSZTyLQuFS3EWPcUvN6FTiA2LykSoq6c6wbCqVUzparKioyRFVfkq1zqNSWIkeIA */
id: "dataset-mutator",
context: ({
input
}) => ({
documents: {},
client: input.client,
sharedListener: input.sharedListener
}),
on: {
sync: {
actions: ["emit sync event"]
},
mutation: {
actions: ["emit mutation event"]
},
"rebased.*": {
actions: ["emit rebased event"]
},
pristine: {
actions: ["emit pristine event"]
},
observe: {
actions: ["add document actor"]
},
unobserve: {
actions: ["stop remote snapshot", "remove remote snapshot from context"]
}
},
initial: "pristine",
states: {
pristine: {}
}
}), createDatasetMutator = (comlink) => datasetMutatorMachine.provide({
actors: {
documentMutatorMachine: createDocumentMutator(comlink)
}
});
Object.defineProperty(exports, "actor", {
enumerable: !0,
get: function() {
return context.actor;
}
});
exports.emptyActor = context.emptyActor;
exports.isEmptyActor = context.isEmptyActor;
exports.listeners = context.listeners;
exports.setActor = context.setActor;
exports.createDatasetMutator = createDatasetMutator;
exports.createDocumentMutator = createDocumentMutator;
//# sourceMappingURL=index.cjs.map
;