[{"data":1,"prerenderedAt":405},["ShallowReactive",2],{"navigation_docs":3,"-helpers-groq":71,"-helpers-groq-surround":401},[4,34,58],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,14,18,22,26,30],{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration",{"title":19,"path":20,"stem":21},"Usage","\u002Fgetting-started\u002Fusage","1.getting-started\u002F4.usage",{"title":23,"path":24,"stem":25},"Visual Editing","\u002Fgetting-started\u002Fvisual-editing","1.getting-started\u002F5.visual-editing",{"title":27,"path":28,"stem":29},"Live Content","\u002Fgetting-started\u002Flive-content","1.getting-started\u002F6.live-content",{"title":31,"path":32,"stem":33},"Typegen","\u002Fgetting-started\u002Ftypegen","1.getting-started\u002F7.typegen",{"title":35,"icon":6,"path":36,"stem":37,"children":38,"page":6},"Helpers","\u002Fhelpers","2.helpers",[39,43,47,51,55],{"title":40,"path":41,"stem":42},"Portable Text","\u002Fhelpers\u002Fportable-text","2.helpers\u002F1.portable-text",{"title":44,"path":45,"stem":46},"Images","\u002Fhelpers\u002Fimages","2.helpers\u002F2.images",{"title":48,"path":49,"stem":50},"Files","\u002Fhelpers\u002Ffiles","2.helpers\u002F3.files",{"title":52,"path":53,"stem":54},"Groq","\u002Fhelpers\u002Fgroq","2.helpers\u002F4.groq",{"title":23,"path":56,"stem":57},"\u002Fhelpers\u002Fvisual-editing","2.helpers\u002F5.visual-editing",{"title":59,"icon":6,"path":60,"stem":61,"children":62,"page":6},"Community","\u002Fcommunity","3.community",[63,67],{"title":64,"path":65,"stem":66},"Credits","\u002Fcommunity\u002Fcredits","3.community\u002F1.credits",{"title":68,"path":69,"stem":70},"Changelog","\u002Fcommunity\u002Fchangelog","3.community\u002F2.changelog",{"id":72,"title":52,"body":73,"description":395,"extension":396,"links":397,"meta":398,"navigation":333,"path":53,"seo":399,"stem":54,"__hash__":400},"docs\u002F2.helpers\u002F4.groq.md",{"type":74,"value":75,"toc":390},"minimark",[76,97,107,112,118,191,196,202,248,262,266,278,386],[77,78,79,80,90,91,96],"p",{},"This module exports the official ",[81,82,86],"a",{"href":83,"rel":84},"https:\u002F\u002Fgithub.com\u002Fsanity-io\u002Fgroq",[85],"nofollow",[87,88,89],"code",{},"groq"," template tag function for writing GROQ queries with syntax highlighting. Make sure to install ",[81,92,95],{"href":93,"rel":94},"https:\u002F\u002Fgithub.com\u002Fsanity-io\u002Fvscode-sanity",[85],"the VSCode extension"," for the best experience.",[77,98,99,100,102,103,106],{},"Both ",[87,101,89],{}," and ",[87,104,105],{},"defineQuery"," are globally available throughout your project (in server routes and Vue components) via auto-imports.",[108,109,110],"h2",{"id":89},[87,111,89],{},[77,113,114,115,117],{},"Use the ",[87,116,89],{}," template tag to write your GROQ queries:",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\n\u002F\u002F In VS Code this will be highlighted\nconst query = groq`*[_type == \"article\"][0].title`\n\u003C\u002Fscript>\n","vue","",[87,126,127,147,154,181],{"__ignoreMap":124},[128,129,132,136,140,144],"span",{"class":130,"line":131},"line",1,[128,133,135],{"class":134},"sMK4o","\u003C",[128,137,139],{"class":138},"swJcz","script",[128,141,143],{"class":142},"spNyl"," setup",[128,145,146],{"class":134},">\n",[128,148,150],{"class":130,"line":149},2,[128,151,153],{"class":152},"sHwdD","\u002F\u002F In VS Code this will be highlighted\n",[128,155,157,160,164,167,171,174,178],{"class":130,"line":156},3,[128,158,159],{"class":142},"const",[128,161,163],{"class":162},"sTEyZ"," query ",[128,165,166],{"class":134},"=",[128,168,170],{"class":169},"s2Zo4"," groq",[128,172,173],{"class":134},"`",[128,175,177],{"class":176},"sfazB","*[_type == \"article\"][0].title",[128,179,180],{"class":134},"`\n",[128,182,184,187,189],{"class":130,"line":183},4,[128,185,186],{"class":134},"\u003C\u002F",[128,188,139],{"class":138},[128,190,146],{"class":134},[108,192,194],{"id":193},"definequery",[87,195,105],{},[77,197,198,199,201],{},"The ",[87,200,105],{}," function provides an alternative way to define queries using a regular function call instead of a template tag:",[119,203,205],{"className":121,"code":204,"language":123,"meta":124,"style":124},"\u003Cscript setup>\nconst query = defineQuery(`*[_type == \"article\"][0].title`)\n\u003C\u002Fscript>\n",[87,206,207,217,240],{"__ignoreMap":124},[128,208,209,211,213,215],{"class":130,"line":131},[128,210,135],{"class":134},[128,212,139],{"class":138},[128,214,143],{"class":142},[128,216,146],{"class":134},[128,218,219,221,223,225,228,231,233,235,237],{"class":130,"line":149},[128,220,159],{"class":142},[128,222,163],{"class":162},[128,224,166],{"class":134},[128,226,227],{"class":169}," defineQuery",[128,229,230],{"class":162},"(",[128,232,173],{"class":134},[128,234,177],{"class":176},[128,236,173],{"class":134},[128,238,239],{"class":162},")\n",[128,241,242,244,246],{"class":130,"line":156},[128,243,186],{"class":134},[128,245,139],{"class":138},[128,247,146],{"class":134},[77,249,250,251,253,254,257,258,261],{},"Both produce identical results. ",[87,252,105],{}," is particularly useful when working with ",[81,255,256],{"href":32},"type generation",", as the ",[87,259,260],{},"@sanity\u002Fcodegen"," tool recognizes both patterns when scanning for queries.",[108,263,265],{"id":264},"type-generation","Type Generation",[77,267,268,269,271,272,274,275,277],{},"When ",[81,270,256],{"href":32}," is enabled, queries written with ",[87,273,89],{}," or ",[87,276,105],{}," are automatically discovered and typed. The generated types follow a naming convention based on your query variable name:",[119,279,281],{"className":121,"code":280,"language":123,"meta":124,"style":124},"\u003Cscript setup lang=\"ts\">\n\u002F\u002F Query variable: articlesQuery -> Generated type: ArticlesQueryResult\nconst articlesQuery = groq`*[_type == \"article\"] { title, slug }`\n\nconst { data } = await useSanityQuery\u003CArticlesQueryResult>(articlesQuery)\n\u002F\u002F data is typed as Ref\u003C{ title: string; slug: { current: string } }[] | null>\n\u003C\u002Fscript>\n",[87,282,283,306,311,329,335,371,377],{"__ignoreMap":124},[128,284,285,287,289,291,294,296,299,302,304],{"class":130,"line":131},[128,286,135],{"class":134},[128,288,139],{"class":138},[128,290,143],{"class":142},[128,292,293],{"class":142}," lang",[128,295,166],{"class":134},[128,297,298],{"class":134},"\"",[128,300,301],{"class":176},"ts",[128,303,298],{"class":134},[128,305,146],{"class":134},[128,307,308],{"class":130,"line":149},[128,309,310],{"class":152},"\u002F\u002F Query variable: articlesQuery -> Generated type: ArticlesQueryResult\n",[128,312,313,315,318,320,322,324,327],{"class":130,"line":156},[128,314,159],{"class":142},[128,316,317],{"class":162}," articlesQuery ",[128,319,166],{"class":134},[128,321,170],{"class":169},[128,323,173],{"class":134},[128,325,326],{"class":176},"*[_type == \"article\"] { title, slug }",[128,328,180],{"class":134},[128,330,331],{"class":130,"line":183},[128,332,334],{"emptyLinePlaceholder":333},true,"\n",[128,336,338,340,343,346,349,352,356,359,361,365,368],{"class":130,"line":337},5,[128,339,159],{"class":142},[128,341,342],{"class":134}," {",[128,344,345],{"class":162}," data ",[128,347,348],{"class":134},"}",[128,350,351],{"class":134}," =",[128,353,355],{"class":354},"s7zQu"," await",[128,357,358],{"class":169}," useSanityQuery",[128,360,135],{"class":134},[128,362,364],{"class":363},"sBMFI","ArticlesQueryResult",[128,366,367],{"class":134},">",[128,369,370],{"class":162},"(articlesQuery)\n",[128,372,374],{"class":130,"line":373},6,[128,375,376],{"class":152},"\u002F\u002F data is typed as Ref\u003C{ title: string; slug: { current: string } }[] | null>\n",[128,378,380,382,384],{"class":130,"line":379},7,[128,381,186],{"class":134},[128,383,139],{"class":138},[128,385,146],{"class":134},[387,388,389],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":124,"searchDepth":149,"depth":149,"links":391},[392,393,394],{"id":89,"depth":149,"text":89},{"id":193,"depth":149,"text":105},{"id":264,"depth":149,"text":265},"This module exports the official groq template tag function for writing GROQ queries with syntax highlighting. Make sure to install the VSCode extension for the best experience.","md",null,{},{"description":395},"uut85f1nuXCHSuCQNR4cvTlOk70_gnAurURSxNuUhe8",[402,403],{"title":48,"path":49,"stem":50,"description":124,"children":-1},{"title":23,"path":56,"stem":57,"description":404,"children":-1},"When visual editing is enabled, this module exports a createSanityDataAttribute helper function which allows you to manually map content in a component to its source.",1775664610460]