1"use strict";(globalThis.webpackChunkbuilderius=globalThis.webpackChunkbuilderius||[]).push([[6976],{7227:(e,n,s)=>{s.d(n,{A:()=>a});s(6540);var r=s(8215);const t={tabItem:"tabItem_Ymn6"};var l=s(4848);function a({children:e,hidden:n,className:s}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(t.tabItem,s),hidden:n,children:e})}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var r=s(6540);const t={},l=r.createContext(t);function a(e){const n=r.useContext(l);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(l.Provider,{value:n},e.children)}},8986:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"dynamic-data/custom-queries/json-and-apis","title":"JSON & REST APIs","description":"Collection elements can work with data sources beyond WordPress content and GraphQL queries. You can use JSON arrays for static data and REST API responses for external data directly within Collection elements.","source":"@site/docs/dynamic-data/custom-queries/json-and-apis.md","sourceDirName":"dynamic-data/custom-queries","slug":"/dynamic-data/custom-queries/json-and-apis","permalink":"/docs/dynamic-data/custom-queries/json-and-apis","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"id":"json-and-apis","title":"JSON & REST APIs"},"sidebar":"docs","previous":{"title":"GraphQL Syntax","permalink":"/docs/dynamic-data/custom-queries/syntax"},"next":{"title":"Post Queries","permalink":"/docs/dynamic-data/query-examples/posts"}}');var t=s(4848),l=s(8453),a=s(9489),i=s(7227);const o={id:"json-and-apis",title:"JSON & REST APIs"},c=void 0,d={},u=[{value:"JSON Arrays",id:"json-arrays",level:2},{value:"Basic JSON Syntax",id:"basic-json-syntax",level:3},{value:"Using JSON in Collection Elements",id:"using-json-in-collection-elements",level:3},{value:"Usage Examples",id:"usage-examples",level:3},{value:"REST API Responses",id:"rest-api-responses",level:2},{value:"API Requirements",id:"api-requirements",level:3},{value:"Setting Up REST API Data Source",id:"setting-up-rest-api-data-source",level:3},{value:"Common API Integrations",id:"common-api-integrations",level:3},{value:"Error Handling",id:"error-handling",level:3},{value:"Choosing Your Data Source",id:"choosing-your-data-source",level:2},{value:"What's Next",id:"whats-next",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["Collection elements can work with data sources beyond WordPress content and GraphQL queries. You can use ",(0,t.jsx)(n.strong,{children:"JSON arrays"})," for static data and ",(0,t.jsx)(n.strong,{children:"REST API responses"})," for external data directly within Collection elements."]}),"\n",(0,t.jsx)(n.admonition,{title:"Collection Element Only",type:"info",children:(0,t.jsx)(n.p,{children:"These data sources work exclusively with Collection elements and are not available in other contexts."})}),"\n",(0,t.jsx)(n.h2,{id:"json-arrays",children:"JSON Arrays"}),"\n",(0,t.jsx)(n.p,{children:"JSON arrays let you create static, structured data directly within Collection elements without needing WordPress posts or custom queries."}),"\n",(0,t.jsx)(n.h3,{id:"basic-json-syntax",children:"Basic JSON Syntax"}),"\n",(0,t.jsxs)(a.A,{groupId:"json-examples",defaultValue:"simple",values:[{label:"Simple Arrays",value:"simple"},{label:"Object Arrays",value:"objects"},{label:"Complex Data",value:"complex"}],children:[(0,t.jsxs)(i.A,{value:"simple",children:[(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Numbers:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:"[1, 2, 3, 4, 5]\n"})}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Strings:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'["Design", "Development", "Marketing", "Support"]\n'})}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Mixed types:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'["John Doe", 32, "Designer", true]\n'})})]}),(0,t.jsxs)(i.A,{value:"objects",children:[(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Key-value objects:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'[\n {"name": "John Doe", "role": "Designer", "experience": 5},\n {"name": "Jane Smith", "role": "Developer", "experience": 8},\n {"name": "Mike Johnson", "role": "Manager", "experience": 12}\n]\n'})}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Product catalog:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'[\n {"title": "Pro Plan", "price": 99, "features": ["Advanced Tools", "Priority Support"]}
1,\n {"title": "Starter Plan", "price": 29, "features": ["Basic Tools", "Email Support"]}\n]\n'})})]}),(0,t.jsxs)(i.A,{value:"complex",children:[(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Nested structures:"})}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'[\n {\n "category": "Frontend",\n "technologies": [\n {"name": "React", "level": "Expert"},\n {"name": "Vue", "level": "Intermediate"}\n ],\n "projects": 15\n },\n {\n "category": "Backend", \n "technologies": [\n {"name": "Node.js", "level": "Expert"},\n {"name": "Python", "level": "Advanced"}\n ],\n "projects": 22\n }\n]\n'})})]})]}),"\n",(0,t.jsx)(n.h3,{id:"using-json-in-collection-elements",children:"Using JSON in Collection Elements"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Add Collection Element"})," to your template"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enter JSON data"})," in the ",(0,t.jsx)(n.strong,{children:"Data Source"})," text area"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Add elements"})," inside the Template element"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Bind data fields"})," using ",(0,t.jsx)(n.code,{children:"{{key}}"})," syntax for object properties"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"usage-examples",children:"Usage Examples"}),"\n",(0,t.jsxs)(a.A,{groupId:"template-examples",defaultValue:"simple",values:[{label:"Simple List Display",value:"simple"},{label:"Object Data Display",value:"objects"},{label:"Nested Data Access",value:"nested"}],children:[(0,t.jsx)(i.A,{value:"simple",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",children:'\x3c!-- JSON: pasted inside the Collection element\n[\n "Design", \n "Development", \n "Marketing"\n] \n--\x3e\n\x3c!-- Collection template: --\x3e\n<div class="service-item">\n <h3>{{.}}</h3>\n</div>\n'})})}),(0,t.jsx)(i.A,{value:"objects",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",children:'\x3c!-- JSON: pasted inside the Collection element\n[\n {\n "name": "John", \n "role": "Designer", \n "experience": 5\n }\n] \n--\x3e\n\x3c!-- Collection template: --\x3e\n<div class="team-member">\n <h3>{{name}}</h3>\n <p>{{role}} - {{experience}} years experience</p>\n</div>\n'})})}),(0,t.jsx)(i.A,{value:"nested",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",children:'\x3c!-- JSON: pasted inside the Collection element\n[\n {\n "category": "Frontend",\n "technologies": [\n {"name": "React", "level": "Expert"},\n {"name": "Vue", "level": "Intermediate"}\n ],\n "projects": 15\n },\n {\n "category": "Backend", \n "technologies": [\n {"name": "Node.js", "level": "Expert"},\n {"name": "Python", "level": "Advanced"}\n ],\n "projects": 22\n }\n]\n--\x3e\n\x3c!-- Collection template: --\x3e\n<div class="skill-category">\n <h2>{{category}}</h2>\n <p>{{projects}} completed projects</p>\n</div>\n'})})})]}),"\n",(0,t.jsx)(n.h2,{id:"rest-api-responses",children:"REST API Responses"}),"\n",(0,t.jsx)(n.p,{children:"Collection elements can consume REST API endpoints that return JSON arrays, enabling integration with external services and databases."}),"\n",(0,t.jsx)(n.h3,{id:"api-requirements",children:"API Requirements"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Response format:"})," API must return a JSON array"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Valid API response:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'[\n {"id": 1, "title": "First Post", "author": "John"},\n {"id": 2, "title": "Second Post", "author": "Jane"}\n]\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Invalid API response:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "posts": [\n {"id": 1, "title": "First Post"}\n ]\n}\n'})}),"\n",(0,t.jsx)(n.h3,{id:"setting-up-rest-api-data-source",children:"Setting Up REST API Data Source"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Add Collection Element"})," to your template"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Enter API URL"})," (must return JSON array)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Add elements"})," inside Template element"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Bind API response fields"})," using ",(0,t.jsx)(n.code,{children:"{{field_name}}"})," syntax"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"common-api-integrations",children:"Common API Integrations"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"GitHub repositories:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"API URL: https://api.github.com/repos/WordPress/WordPress/contributors\nTemplate: {{avatar}}, {{login}}, {{html_url}}\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"News feeds (JSON format):"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"API URL: https://wordpress.org/news/wp-json/wp/v2/posts\nTemplate: {{title.rendered}}, {{excerpt.rendered}}, {{jetpack_featured_media_url}}\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Product catalogs:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"API URL: https://fakestoreapi.com/products\nTemplate: {{title}}, {{price}}, {{description}}\n"})}),"\n",(0,t.jsx)(n.h3,{id:"error-handling",children:"Error Handling"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"API unavailable:"})," Collection displays empty if API request fails"]}
1),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Invalid JSON:"})," Collection displays error message"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Wrong format:"})," Collection displays empty if response isn't an array"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Rate limits:"})," Responses are cached to prevent excessive API calls"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"choosing-your-data-source",children:"Choosing Your Data Source"}),"\n",(0,t.jsxs)(a.A,{groupId:"data-source-comparison",defaultValue:"comparison",values:[{label:"When to Use Each",value:"comparison"},{label:"Performance Considerations",value:"performance"}],children:[(0,t.jsxs)(i.A,{value:"comparison",children:[(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Use JSON Arrays when:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Data is static and doesn't change frequently"}),"\n",(0,t.jsx)(n.li,{children:"You need quick prototyping with sample data"}),"\n",(0,t.jsx)(n.li,{children:"Building testimonials, team lists, or feature lists"}),"\n",(0,t.jsx)(n.li,{children:"No external dependencies required"}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Use REST APIs when:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Data changes frequently and needs real-time updates"}),"\n",(0,t.jsx)(n.li,{children:"Integrating with external services (GitHub, social media, etc.)"}),"\n",(0,t.jsx)(n.li,{children:"Building dashboards with live data"}),"\n",(0,t.jsx)(n.li,{children:"Content comes from external systems"}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Use WordPress/GraphQL when:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Data is managed within WordPress"}),"\n",(0,t.jsx)(n.li,{children:"You need WordPress features (categories, custom fields, etc.)"}),"\n",(0,t.jsx)(n.li,{children:"Building content-driven sites"}),"\n",(0,t.jsx)(n.li,{children:"Leveraging WordPress's editing interface"}),"\n"]})]}),(0,t.jsxs)(i.A,{value:"performance",children:[(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"JSON Arrays:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Fastest:"})," No network requests, immediate rendering"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Static:"})," Data embedded in template"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Cache-friendly:"})," Loads with page, no additional requests"]}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"REST APIs:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Network dependent:"})," Requires external API response"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Cached responses:"})," Builderius caches API calls to improve performance"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Fallback behavior:"})," Shows empty collection if API fails (user can provide conditional rendering for empty states)"]}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"WordPress/GraphQL:"})}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Database queries:"})," Optimized for WordPress data"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Server-side caching:"})," Leverages Builderius caching"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Dynamic:"})," Updates automatically when content changes"]}),"\n"]})]})]}),"\n",(0,t.jsx)(n.p,{children:"These Collection data sources provide flexible options for displaying structured content without requiring WordPress posts or complex database queries, perfect for modern web development workflows that combine multiple data sources."}),"\n",(0,t.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"../../elements/collection/",children:"Collection Elements \u2192"})}
1)," - Learn more about Collection element functionality"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"../query-examples/posts",children:"GraphQL Queries \u2192"})})," - Explore more powerful data manipulation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"../../expression-language/introduction",children:"Expression Language \u2192"})})," - Transform and calculate data values"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9489:(e,n,s)=>{s.d(n,{A:()=>S});var r=s(6540),t=s(8215),l=s(8630),a=s(4245),i=s(6347),o=s(6494),c=s(2814),d=s(5167),u=s(9900);function h(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:s}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:s,default:r}})=>({value:e,label:n,attributes:s,default:r}))}(s);return function(e){const n=(0,d.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,s])}function x({value:e,tabValues:n}){return n.some(n=>n.value===e)}function m({queryString:e=!1,groupId:n}){const s=(0,i.W6)(),t=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(t),(0,r.useCallback)(e=>{if(!t)return;const n=new URLSearchParams(s.location.search);n.set(t,e),s.replace({...s.location,search:n.toString()})},[t,s])]}function j(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,l=p(e),[a,i]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!x({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const s=n.find(e=>e.default)??n[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:l})),[c,d]=m({queryString:s,groupId:t}),[h,j]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[s,t]=(0,u.Dv)(n);return[s,(0,r.useCallback)(e=>{n&&t.set(e)},[n,t])]}({groupId:t}),g=(()=>{const e=c??h;return x({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{g&&i(g)},[g]);return{selectedValue:a,selectValue:(0,r.useCallback)(e=>{if(!x({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),j(e)},[d,j,l]),tabValues:l}}var g=s(1062);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function b({className:e,block:n,selectedValue:s,selectValue:r,tabValues:l}){const i=[],{blockElementScrollPositionUntilNextRender:o}=(0,a.a_)(),c=e=>{const n=e.currentTarget,t=i.indexOf(n),a=l[t].value;a!==s&&(o(n),r(a))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const s=i.indexOf(e.currentTarget)+1;n=i[s]??i[0];break}case"ArrowLeft":{const s=i.indexOf(e.currentTarget)-1;n=i[s]??i[i.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:r})=>(0,f.jsx)("li",{role:"tab",tabIndex:s===e?0:-1,"aria-selected":s===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:c,...r,className:(0,t.A)("tabs__item",v.tabItem,r?.className,{"tabs__item--active":s===e}),children:n??e},e))})}function y({lazy:e,children:n,selectedValue:s}
1){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===s);return e?(0,r.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s}))})}function A(e){const n=j(e);return(0,f.jsxs)("div",{className:(0,t.A)(l.G.tabs.container,"tabs-container",v.tabList),children:[(0,f.jsx)(b,{...n,...e}),(0,f.jsx)(y,{...n,...e})]})}function S(e){const n=(0,g.A)();return(0,f.jsx)(A,{...e,children:h(e.children)},String(n))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.