@sanity/visual-editing
Version:
[](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [](https://
2 lines (1 loc) • 2.29 kB
JavaScript
import{getPublishedId as t,studioPath as e}from"@sanity/client/csm";import{pipe as r,string as o,minLength as s,optional as n,object as a,record as c,unknown as i,is as u,safeParse as p,parse as f}from"valibot";function l(t){let e="";for(const o of t)"string"!=typeof o?"number"!=typeof o?null!==(r=o)&&Array.isArray(r)?(e&&(e+=":"),e+=`${o.join(",")}}`):o._key&&(e&&(e+=":"),e+=`${o._key}`):(e&&(e+=":"),e+=`${o}`):(e&&(e+="."),e+=o);var r;return e}const d=/^([\w-]+):(0|[1-9][0-9]*)$/,b=/^([\w-]+):([0-9]+),([0-9]+)$/,m=/^([\w-]+):([\w-]+)$/;const h="drafts.",y=r(o(),s(1)),k=n(y),w=a({baseUrl:y,dataset:k,id:y,path:y,projectId:k,tool:k,type:k,workspace:k,isDraft:n(o())}),j=a({origin:y,href:y,data:n(c(o(),i()))});function U(t){return u(w,t)}function $(r){const{id:o,path:s,baseUrl:n,tool:a,workspace:c,type:i}=r;return U(r)?[["id",t(o)],["type",i],["path",l(e.fromString(s))],["base",encodeURIComponent(n)],["workspace",c],["tool",a],["isDraft",o.startsWith(h)]].filter((([,t])=>!!t)).map((t=>{const[e,r]=t;return!0===r?e:t.join("=")})).join(";"):void 0}function g(t){const r=t.split(";").reduce(((t,r)=>{const[o,s]=r.split("=");if(!o||r.includes("=")&&!s)return t;switch(o){case"id":t.id=s;break;case"type":t.type=s;break;case"path":t.path=e.toString(function(t){const e=[];for(const r of t.split(".")){const t=d.exec(r);if(t){e.push(t[1],Number(t[2]));continue}const o=b.exec(r);if(o){e.push(o[1],[Number(o[2]),Number(o[3])]);continue}const s=m.exec(r);s?e.push(s[1],{_key:s[2]}):e.push(r)}return e}(s));break;case"base":t.baseUrl=decodeURIComponent(s);break;case"tool":t.tool=s;break;case"workspace":t.workspace=s;break;case"projectId":t.projectId=s;break;case"dataset":t.dataset=s;break;case"isDraft":t.isDraft=""}return t}),{});if(U(r))return r}function x(t){const e=p(w,t);if(e.success)return e.output;const r=p(j,t);if(r.success)try{const t=new URL(r.output.href,typeof document>"u"?"https://example.com":location.origin);return t.searchParams.size>0?f(w,Object.fromEntries(t.searchParams.entries())):r.output}catch(t){return console.error("Failed to parse sanity node",t),r.output}}function D(t){if("object"==typeof t&&null!==t)return x(t);try{return x(JSON.parse(t))}catch{return g(t)}}export{h as D,D as d,$ as e,l as p};//# sourceMappingURL=transformSanityNodeData.js.map