@sanity/visual-editing
Version:
[](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [](https://
2 lines (1 loc) • 2.49 kB
JavaScript
import{a as t,e,i as n,l as s,s as o}from"../_chunks-es/context.js";import{documentMutatorMachine as a,createSharedListener as i}from"@sanity/mutate/_unstable_machine";import{fromPromise as c,enqueueActions as r,setup as m,emit as d,assertEvent as u,assign as p,stopChild as v}from"xstate";import{SanityEncoder as h}from"@sanity/mutate";const l=t=>{const e=c((async({input:e,signal:n})=>{const{id:s}=e,{snapshot:o}=await t.fetch("visual-editing/fetch-snapshot",{documentId:s},{signal:n});return o})),n=c((async({input:e})=>{const{transactions:n}=e;for(const e of n){const n=h.encodeTransaction(e);return t.post("visual-editing/mutate",n)}}));return a.provide({actions:{"send sync event to parent":r((({enqueue:t})=>{t.sendParent((({context:t})=>({type:"sync",id:t.id,document:t.remote}))),t.emit((({context:t})=>({type:"ready",snapshot:t.local})))}))},actors:{"fetch remote snapshot":e,"submit mutations as transactions":n}})},y=m({types:{},actions:{"emit sync event":d((({event:t})=>(u(t,"sync"),t))),"emit mutation event":d((({event:t})=>(u(t,"mutation"),t))),"emit rebased event":d((({event:t})=>(u(t,["rebased.local","rebased.remote"]),t))),"emit pristine event":d((({event:t})=>(u(t,["pristine"]),t))),"add document actor":p({documents:({context:t,event:e,spawn:n})=>{u(e,"observe");const s=e.documentId;return t.documents[s]?t.documents:{...t.documents,[s]:n("documentMutatorMachine",{input:{id:s,client:t.client,sharedListener:t.sharedListener||i(t.client)},id:s})}}}),"stop remote snapshot":v((({context:t,event:e})=>(u(e,"unobserve"),t.documents[e.documentId]))),"remove remote snapshot from context":p({documents:({context:t,event:e})=>{if(u(e,"unobserve"),!t.documents[e.documentId])return t.documents;const{[e.documentId]:n,...s}=t.documents;return s}})},actors:{documentMutatorMachine:a}}).createMachine({id:"dataset-mutator",context:({input:t})=>({documents:{},client:t.client,sharedListener:t.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:{}}}),b=t=>y.provide({actors:{documentMutatorMachine:l(t)}});export{t as actor,b as createDatasetMutator,l as createDocumentMutator,e as emptyActor,n as isEmptyActor,s as listeners,o as setActor};//# sourceMappingURL=index.js.map