@vyuh/sanity-plugin-structure
Version:
Default structure configuration for Vyuh-Sanity projects
1 lines • 2.39 kB
JavaScript
import {definePlugin}from'sanity';import {structureTool}from'sanity/structure';import {groupBy}from'lodash-es';import {TfiPackage}from'react-icons/tfi';import {visionTool}from'@sanity/vision';import {bootstrap}from'@vyuh/sanity-schema-core';var a=e=>e.list().title("Content").items(p(e,e.documentTypeListItems()));function p(e,t){let u={};t.forEach(r=>{let i=r.spec.schemaType?._sourceFeature;i&&(u[i.name]=i);});let o=groupBy(t,r=>r.spec.schemaType?._sourceFeature?.name??"__unknown__"),s=o.__unknown__??[],c=o.system??[],l=Object.keys(o).filter(r=>r!=="system"&&r!=="__unknown__").sort(r=>u[r].title).map(r=>{let i=u[r],d=e.list().title(i.title).items(o[r]);return e.listItem().title(i.title).id(i.name).icon(TfiPackage).child(d)});return [...s,e.divider().title("System"),...c,e.divider().title("Filters"),f(e),g(e),e.divider().title("Features"),...l]}function f(e){return e.listItem().title("Routes by Category").id("routesByCategory").child(e.documentTypeList("vyuh.category").title("Category").child(t=>e.documentList().id("route").title("Routes").apiVersion("v2024-02-16").filter(`_type in ["vyuh.route", "vyuh.conditionalRoute"] && category._ref == "${t}"`).defaultOrdering([{field:"title",direction:"asc"}]).initialValueTemplates([e.initialValueTemplateItem("route-by-category",{categoryId:t}),e.initialValueTemplateItem("conditional-route-by-category",{categoryId:t})])))}function g(e){return e.listItem().title("Uncategorized Routes").id("routesUncategorized").child(e.documentList().id("route").title("Routes").apiVersion("2024-02-16").filter('_type in ["vyuh.route", "vyuh.conditionalRoute"] && !defined(category._ref)').defaultOrdering([{field:"_type",direction:"asc"}]))}var n=(e,{schemaType:t})=>e.document().views([e.view.form()]);var P=definePlugin(e=>({name:"vyuh-structure-plugin",title:"Vyuh Structure Plugin",plugins:[structureTool({structure:a,defaultDocumentNode:n}),visionTool()],schema:{types:bootstrap(e.features,e.plugins),templates:[{id:"route-by-category",title:"Route (with Category)",schemaType:"vyuh.route",parameters:[{name:"categoryId",type:"string"}],value:t=>({category:{_type:"reference",_ref:t.categoryId}})},{id:"conditional-route-by-category",title:"Conditional Route (with Category)",schemaType:"vyuh.conditionalRoute",parameters:[{name:"categoryId",type:"string"}],value:t=>({category:{_type:"reference",_ref:t.categoryId}})}]}}));export{P as vyuh};