[{"data":1,"prerenderedAt":2025},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-protokit/composables/use-proto-collection-en":444,"/docs/nuxt-protokit/composables/use-proto-collection-surround-en":2020},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":2015},{"id":446,"title":396,"body":447,"description":2013,"extension":2014,"links":2015,"meta":2016,"navigation":2017,"ogImage":2015,"path":397,"seo":2018,"stem":398,"__hash__":2019},"nuxt_protokit/0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection.md",{"type":448,"value":449,"toc":2001},"minimark",[450,457,465,470,559,563,1009,1013,1362,1366,1729,1733,1739,1791,1795,1809,1813,1818,1880,1889,1893,1908,1914,1922,1988,1997],[451,452,454],"h1",{"id":453},"useprotocollection",[455,456,396],"code",{},[458,459,460,461,464],"p",{},"High-level CRUD for Y.Array-backed lists. Wraps ",[455,462,463],{},"useProtoList"," with search, sort, filtered views, and count.",[466,467,469],"h2",{"id":468},"signature","Signature",[471,472,477],"pre",{"className":473,"code":474,"language":475,"meta":476,"style":476},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function useProtoCollection(\n  doc:    Y.Doc,\n  key:    string,          // Y.Array name inside the doc\n  schema: CollectionSchema,\n): ProtoCollectionState\n","typescript","",[455,478,479,496,519,537,550],{"__ignoreMap":476},[480,481,484,488,492],"span",{"class":482,"line":483},"line",1,[480,485,487],{"class":486},"spNyl","function",[480,489,491],{"class":490},"s2Zo4"," useProtoCollection",[480,493,495],{"class":494},"sMK4o","(\n",[480,497,499,503,506,510,513,516],{"class":482,"line":498},2,[480,500,502],{"class":501},"sHdIc","  doc",[480,504,505],{"class":494},":",[480,507,509],{"class":508},"sBMFI","    Y",[480,511,512],{"class":494},".",[480,514,515],{"class":508},"Doc",[480,517,518],{"class":494},",\n",[480,520,522,525,527,530,533],{"class":482,"line":521},3,[480,523,524],{"class":501},"  key",[480,526,505],{"class":494},[480,528,529],{"class":508},"    string",[480,531,532],{"class":494},",",[480,534,536],{"class":535},"sHwdD","          // Y.Array name inside the doc\n",[480,538,540,543,545,548],{"class":482,"line":539},4,[480,541,542],{"class":501},"  schema",[480,544,505],{"class":494},[480,546,547],{"class":508}," CollectionSchema",[480,549,518],{"class":494},[480,551,553,556],{"class":482,"line":552},5,[480,554,555],{"class":494},"):",[480,557,558],{"class":508}," ProtoCollectionState\n",[466,560,562],{"id":561},"return-value","Return value",[471,564,566],{"className":473,"code":565,"language":475,"meta":476,"style":476},"interface ProtoCollectionState {\n  // Reactive state\n  items:    Ref\u003CCollectionItem[]>       // all items, unfiltered\n  filtered: ComputedRef\u003CCollectionItem[]> // search-filtered items\n  sorted:   ComputedRef\u003CCollectionItem[]> // search-filtered + sorted items\n  count:    ComputedRef\u003Cnumber>         // total item count\n\n  // Search\n  search:   Ref\u003Cstring>                 // two-way binding for search input\n\n  // Sort\n  sortKey:  Ref\u003Cstring | null>\n  sortDir:  Ref\u003C'asc' | 'desc'>\n\n  // CRUD operations\n  add(item: Partial\u003CCollectionItem>):   string    // returns new item id\n  update(id: string, patch: Partial\u003CCollectionItem>): void\n  remove(id: string):                   void\n  move(id: string, delta: number):      void      // +1 = move down, -1 = move up\n\n  // Draft helpers (for modal edit mode)\n  getDraft(id: string):                 Record\u003Cstring, any> | null\n  saveDraft(id: string, data: Record\u003Cstring, any>): void\n  clearDraft(id: string):               void\n}\n",[455,567,568,579,584,611,632,653,674,681,687,708,713,719,743,776,781,787,817,851,870,902,907,913,948,984,1003],{"__ignoreMap":476},[480,569,570,573,576],{"class":482,"line":483},[480,571,572],{"class":486},"interface",[480,574,575],{"class":508}," ProtoCollectionState",[480,577,578],{"class":494}," {\n",[480,580,581],{"class":482,"line":498},[480,582,583],{"class":535},"  // Reactive state\n",[480,585,586,590,592,595,598,601,605,608],{"class":482,"line":521},[480,587,589],{"class":588},"swJcz","  items",[480,591,505],{"class":494},[480,593,594],{"class":508},"    Ref",[480,596,597],{"class":494},"\u003C",[480,599,600],{"class":508},"CollectionItem",[480,602,604],{"class":603},"sTEyZ","[]",[480,606,607],{"class":494},">",[480,609,610],{"class":535},"       // all items, unfiltered\n",[480,612,613,616,618,621,623,625,627,629],{"class":482,"line":539},[480,614,615],{"class":588},"  filtered",[480,617,505],{"class":494},[480,619,620],{"class":508}," ComputedRef",[480,622,597],{"class":494},[480,624,600],{"class":508},[480,626,604],{"class":603},[480,628,607],{"class":494},[480,630,631],{"class":535}," // search-filtered items\n",[480,633,634,637,639,642,644,646,648,650],{"class":482,"line":552},[480,635,636],{"class":588},"  sorted",[480,638,505],{"class":494},[480,640,641],{"class":508},"   ComputedRef",[480,643,597],{"class":494},[480,645,600],{"class":508},[480,647,604],{"class":603},[480,649,607],{"class":494},[480,651,652],{"class":535}," // search-filtered + sorted items\n",[480,654,656,659,661,664,666,669,671],{"class":482,"line":655},6,[480,657,658],{"class":588},"  count",[480,660,505],{"class":494},[480,662,663],{"class":508},"    ComputedRef",[480,665,597],{"class":494},[480,667,668],{"class":508},"number",[480,670,607],{"class":494},[480,672,673],{"class":535},"         // total item count\n",[480,675,677],{"class":482,"line":676},7,[480,678,680],{"emptyLinePlaceholder":679},true,"\n",[480,682,684],{"class":482,"line":683},8,[480,685,686],{"class":535},"  // Search\n",[480,688,690,693,695,698,700,703,705],{"class":482,"line":689},9,[480,691,692],{"class":588},"  search",[480,694,505],{"class":494},[480,696,697],{"class":508},"   Ref",[480,699,597],{"class":494},[480,701,702],{"class":508},"string",[480,704,607],{"class":494},[480,706,707],{"class":535},"                 // two-way binding for search input\n",[480,709,711],{"class":482,"line":710},10,[480,712,680],{"emptyLinePlaceholder":679},[480,714,716],{"class":482,"line":715},11,[480,717,718],{"class":535},"  // Sort\n",[480,720,722,725,727,730,732,734,737,740],{"class":482,"line":721},12,[480,723,724],{"class":588},"  sortKey",[480,726,505],{"class":494},[480,728,729],{"class":508},"  Ref",[480,731,597],{"class":494},[480,733,702],{"class":508},[480,735,736],{"class":494}," |",[480,738,739],{"class":508}," null",[480,741,742],{"class":494},">\n",[480,744,746,749,751,753,755,758,762,764,766,769,772,774],{"class":482,"line":745},13,[480,747,748],{"class":588},"  sortDir",[480,750,505],{"class":494},[480,752,729],{"class":508},[480,754,597],{"class":494},[480,756,757],{"class":494},"'",[480,759,761],{"class":760},"sfazB","asc",[480,763,757],{"class":494},[480,765,736],{"class":494},[480,767,768],{"class":494}," '",[480,770,771],{"class":760},"desc",[480,773,757],{"class":494},[480,775,742],{"class":494},[480,777,779],{"class":482,"line":778},14,[480,780,680],{"emptyLinePlaceholder":679},[480,782,784],{"class":482,"line":783},15,[480,785,786],{"class":535},"  // CRUD operations\n",[480,788,790,793,796,799,801,804,806,808,811,814],{"class":482,"line":789},16,[480,791,792],{"class":588},"  add",[480,794,795],{"class":494},"(",[480,797,798],{"class":501},"item",[480,800,505],{"class":494},[480,802,803],{"class":508}," Partial",[480,805,597],{"class":494},[480,807,600],{"class":508},[480,809,810],{"class":494},">):",[480,812,813],{"class":508},"   string",[480,815,816],{"class":535},"    // returns new item id\n",[480,818,820,823,825,828,830,833,835,838,840,842,844,846,848],{"class":482,"line":819},17,[480,821,822],{"class":588},"  update",[480,824,795],{"class":494},[480,826,827],{"class":501},"id",[480,829,505],{"class":494},[480,831,832],{"class":508}," string",[480,834,532],{"class":494},[480,836,837],{"class":501}," patch",[480,839,505],{"class":494},[480,841,803],{"class":508},[480,843,597],{"class":494},[480,845,600],{"class":508},[480,847,810],{"class":494},[480,849,850],{"class":508}," void\n",[480,852,854,857,859,861,863,865,867],{"class":482,"line":853},18,[480,855,856],{"class":588},"  remove",[480,858,795],{"class":494},[480,860,827],{"class":501},[480,862,505],{"class":494},[480,864,832],{"class":508},[480,866,555],{"class":494},[480,868,869],{"class":508},"                   void\n",[480,871,873,876,878,880,882,884,886,889,891,894,896,899],{"class":482,"line":872},19,[480,874,875],{"class":588},"  move",[480,877,795],{"class":494},[480,879,827],{"class":501},[480,881,505],{"class":494},[480,883,832],{"class":508},[480,885,532],{"class":494},[480,887,888],{"class":501}," delta",[480,890,505],{"class":494},[480,892,893],{"class":508}," number",[480,895,555],{"class":494},[480,897,898],{"class":508},"      void",[480,900,901],{"class":535},"      // +1 = move down, -1 = move up\n",[480,903,905],{"class":482,"line":904},20,[480,906,680],{"emptyLinePlaceholder":679},[480,908,910],{"class":482,"line":909},21,[480,911,912],{"class":535},"  // Draft helpers (for modal edit mode)\n",[480,914,916,919,921,923,925,927,929,932,934,936,938,941,943,945],{"class":482,"line":915},22,[480,917,918],{"class":588},"  getDraft",[480,920,795],{"class":494},[480,922,827],{"class":501},[480,924,505],{"class":494},[480,926,832],{"class":508},[480,928,555],{"class":494},[480,930,931],{"class":508},"                 Record",[480,933,597],{"class":494},[480,935,702],{"class":508},[480,937,532],{"class":494},[480,939,940],{"class":508}," any",[480,942,607],{"class":494},[480,944,736],{"class":494},[480,946,947],{"class":508}," null\n",[480,949,951,954,956,958,960,962,964,967,969,972,974,976,978,980,982],{"class":482,"line":950},23,[480,952,953],{"class":588},"  saveDraft",[480,955,795],{"class":494},[480,957,827],{"class":501},[480,959,505],{"class":494},[480,961,832],{"class":508},[480,963,532],{"class":494},[480,965,966],{"class":501}," data",[480,968,505],{"class":494},[480,970,971],{"class":508}," Record",[480,973,597],{"class":494},[480,975,702],{"class":508},[480,977,532],{"class":494},[480,979,940],{"class":508},[480,981,810],{"class":494},[480,983,850],{"class":508},[480,985,987,990,992,994,996,998,1000],{"class":482,"line":986},24,[480,988,989],{"class":588},"  clearDraft",[480,991,795],{"class":494},[480,993,827],{"class":501},[480,995,505],{"class":494},[480,997,832],{"class":508},[480,999,555],{"class":494},[480,1001,1002],{"class":508},"               void\n",[480,1004,1006],{"class":482,"line":1005},25,[480,1007,1008],{"class":494},"}\n",[466,1010,1012],{"id":1011},"basic-usage","Basic usage",[471,1014,1016],{"className":473,"code":1015,"language":475,"meta":476,"style":476},"const { doc } = useProtoDoc('my-tool')\nconst interviews = useProtoCollection(doc, 'interviews', schema.collections.interviews)\n\n// Add an item — auto-generates a UUID `id`\nconst newId = interviews.add({\n  name: 'Alice',\n  sentiment: 'positive',\n  notes: 'Loves the product',\n})\n\n// Update\ninterviews.update(newId, { notes: 'Loves the product, will pay €49/mo' })\n\n// Remove\ninterviews.remove(newId)\n\n// Reorder\ninterviews.move(newId, -1)  // move up one position\n\n// Search\ninterviews.search.value = 'alice'\nconsole.log(interviews.filtered.value) // only items matching 'alice'\n\n// Count\nconsole.log(interviews.count.value) // 1\n",[455,1017,1018,1050,1089,1093,1098,1120,1136,1152,1168,1174,1178,1183,1216,1220,1225,1237,1241,1246,1272,1276,1281,1305,1331,1335,1340],{"__ignoreMap":476},[480,1019,1020,1023,1026,1029,1032,1035,1038,1040,1042,1045,1047],{"class":482,"line":483},[480,1021,1022],{"class":486},"const",[480,1024,1025],{"class":494}," {",[480,1027,1028],{"class":603}," doc ",[480,1030,1031],{"class":494},"}",[480,1033,1034],{"class":494}," =",[480,1036,1037],{"class":490}," useProtoDoc",[480,1039,795],{"class":603},[480,1041,757],{"class":494},[480,1043,1044],{"class":760},"my-tool",[480,1046,757],{"class":494},[480,1048,1049],{"class":603},")\n",[480,1051,1052,1054,1057,1060,1062,1065,1067,1069,1072,1074,1076,1079,1081,1084,1086],{"class":482,"line":498},[480,1053,1022],{"class":486},[480,1055,1056],{"class":603}," interviews ",[480,1058,1059],{"class":494},"=",[480,1061,491],{"class":490},[480,1063,1064],{"class":603},"(doc",[480,1066,532],{"class":494},[480,1068,768],{"class":494},[480,1070,1071],{"class":760},"interviews",[480,1073,757],{"class":494},[480,1075,532],{"class":494},[480,1077,1078],{"class":603}," schema",[480,1080,512],{"class":494},[480,1082,1083],{"class":603},"collections",[480,1085,512],{"class":494},[480,1087,1088],{"class":603},"interviews)\n",[480,1090,1091],{"class":482,"line":521},[480,1092,680],{"emptyLinePlaceholder":679},[480,1094,1095],{"class":482,"line":539},[480,1096,1097],{"class":535},"// Add an item — auto-generates a UUID `id`\n",[480,1099,1100,1102,1105,1107,1110,1112,1115,1117],{"class":482,"line":552},[480,1101,1022],{"class":486},[480,1103,1104],{"class":603}," newId ",[480,1106,1059],{"class":494},[480,1108,1109],{"class":603}," interviews",[480,1111,512],{"class":494},[480,1113,1114],{"class":490},"add",[480,1116,795],{"class":603},[480,1118,1119],{"class":494},"{\n",[480,1121,1122,1125,1127,1129,1132,1134],{"class":482,"line":655},[480,1123,1124],{"class":588},"  name",[480,1126,505],{"class":494},[480,1128,768],{"class":494},[480,1130,1131],{"class":760},"Alice",[480,1133,757],{"class":494},[480,1135,518],{"class":494},[480,1137,1138,1141,1143,1145,1148,1150],{"class":482,"line":676},[480,1139,1140],{"class":588},"  sentiment",[480,1142,505],{"class":494},[480,1144,768],{"class":494},[480,1146,1147],{"class":760},"positive",[480,1149,757],{"class":494},[480,1151,518],{"class":494},[480,1153,1154,1157,1159,1161,1164,1166],{"class":482,"line":683},[480,1155,1156],{"class":588},"  notes",[480,1158,505],{"class":494},[480,1160,768],{"class":494},[480,1162,1163],{"class":760},"Loves the product",[480,1165,757],{"class":494},[480,1167,518],{"class":494},[480,1169,1170,1172],{"class":482,"line":689},[480,1171,1031],{"class":494},[480,1173,1049],{"class":603},[480,1175,1176],{"class":482,"line":710},[480,1177,680],{"emptyLinePlaceholder":679},[480,1179,1180],{"class":482,"line":715},[480,1181,1182],{"class":535},"// Update\n",[480,1184,1185,1187,1189,1192,1195,1197,1199,1202,1204,1206,1209,1211,1214],{"class":482,"line":721},[480,1186,1071],{"class":603},[480,1188,512],{"class":494},[480,1190,1191],{"class":490},"update",[480,1193,1194],{"class":603},"(newId",[480,1196,532],{"class":494},[480,1198,1025],{"class":494},[480,1200,1201],{"class":588}," notes",[480,1203,505],{"class":494},[480,1205,768],{"class":494},[480,1207,1208],{"class":760},"Loves the product, will pay €49/mo",[480,1210,757],{"class":494},[480,1212,1213],{"class":494}," }",[480,1215,1049],{"class":603},[480,1217,1218],{"class":482,"line":745},[480,1219,680],{"emptyLinePlaceholder":679},[480,1221,1222],{"class":482,"line":778},[480,1223,1224],{"class":535},"// Remove\n",[480,1226,1227,1229,1231,1234],{"class":482,"line":783},[480,1228,1071],{"class":603},[480,1230,512],{"class":494},[480,1232,1233],{"class":490},"remove",[480,1235,1236],{"class":603},"(newId)\n",[480,1238,1239],{"class":482,"line":789},[480,1240,680],{"emptyLinePlaceholder":679},[480,1242,1243],{"class":482,"line":819},[480,1244,1245],{"class":535},"// Reorder\n",[480,1247,1248,1250,1252,1255,1257,1259,1262,1266,1269],{"class":482,"line":853},[480,1249,1071],{"class":603},[480,1251,512],{"class":494},[480,1253,1254],{"class":490},"move",[480,1256,1194],{"class":603},[480,1258,532],{"class":494},[480,1260,1261],{"class":494}," -",[480,1263,1265],{"class":1264},"sbssI","1",[480,1267,1268],{"class":603},")  ",[480,1270,1271],{"class":535},"// move up one position\n",[480,1273,1274],{"class":482,"line":872},[480,1275,680],{"emptyLinePlaceholder":679},[480,1277,1278],{"class":482,"line":904},[480,1279,1280],{"class":535},"// Search\n",[480,1282,1283,1285,1287,1290,1292,1295,1297,1299,1302],{"class":482,"line":909},[480,1284,1071],{"class":603},[480,1286,512],{"class":494},[480,1288,1289],{"class":603},"search",[480,1291,512],{"class":494},[480,1293,1294],{"class":603},"value ",[480,1296,1059],{"class":494},[480,1298,768],{"class":494},[480,1300,1301],{"class":760},"alice",[480,1303,1304],{"class":494},"'\n",[480,1306,1307,1310,1312,1315,1318,1320,1323,1325,1328],{"class":482,"line":915},[480,1308,1309],{"class":603},"console",[480,1311,512],{"class":494},[480,1313,1314],{"class":490},"log",[480,1316,1317],{"class":603},"(interviews",[480,1319,512],{"class":494},[480,1321,1322],{"class":603},"filtered",[480,1324,512],{"class":494},[480,1326,1327],{"class":603},"value) ",[480,1329,1330],{"class":535},"// only items matching 'alice'\n",[480,1332,1333],{"class":482,"line":950},[480,1334,680],{"emptyLinePlaceholder":679},[480,1336,1337],{"class":482,"line":986},[480,1338,1339],{"class":535},"// Count\n",[480,1341,1342,1344,1346,1348,1350,1352,1355,1357,1359],{"class":482,"line":1005},[480,1343,1309],{"class":603},[480,1345,512],{"class":494},[480,1347,1314],{"class":490},[480,1349,1317],{"class":603},[480,1351,512],{"class":494},[480,1353,1354],{"class":603},"count",[480,1356,512],{"class":494},[480,1358,1327],{"class":603},[480,1360,1361],{"class":535},"// 1\n",[466,1363,1365],{"id":1364},"in-templates","In templates",[471,1367,1371],{"className":1368,"code":1369,"language":1370,"meta":476,"style":476},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { doc, isReady } = useProtoDoc('my-tool')\nconst competitors = useProtoCollection(doc, 'competitors', schema.collections.competitors)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"isReady\">\n    \u003C!-- Search -->\n    \u003CUInput v-model=\"competitors.search.value\" placeholder=\"Search competitors…\" />\n\n    \u003C!-- List -->\n    \u003Cdiv v-for=\"item in competitors.filtered.value\" :key=\"item.id\">\n      \u003Cspan>{{ item.name }}\u003C/span>\n      \u003CUButton @click=\"competitors.remove(item.id)\" icon=\"i-lucide-trash\" />\n    \u003C/div>\n\n    \u003C!-- Add -->\n    \u003CUButton @click=\"competitors.add({ name: 'New Co' })\">Add Competitor\u003C/UButton>\n\n    \u003C!-- Count badge -->\n    \u003CUBadge>{{ competitors.count.value }}\u003C/UBadge>\n  \u003C/div>\n\u003C/template>\n","vue",[455,1372,1373,1398,1428,1463,1472,1476,1485,1507,1512,1547,1551,1556,1588,1606,1639,1648,1652,1657,1685,1689,1694,1712,1721],{"__ignoreMap":476},[480,1374,1375,1377,1380,1383,1386,1388,1391,1394,1396],{"class":482,"line":483},[480,1376,597],{"class":494},[480,1378,1379],{"class":588},"script",[480,1381,1382],{"class":486}," setup",[480,1384,1385],{"class":486}," lang",[480,1387,1059],{"class":494},[480,1389,1390],{"class":494},"\"",[480,1392,1393],{"class":760},"ts",[480,1395,1390],{"class":494},[480,1397,742],{"class":494},[480,1399,1400,1402,1404,1407,1409,1412,1414,1416,1418,1420,1422,1424,1426],{"class":482,"line":498},[480,1401,1022],{"class":486},[480,1403,1025],{"class":494},[480,1405,1406],{"class":603}," doc",[480,1408,532],{"class":494},[480,1410,1411],{"class":603}," isReady ",[480,1413,1031],{"class":494},[480,1415,1034],{"class":494},[480,1417,1037],{"class":490},[480,1419,795],{"class":603},[480,1421,757],{"class":494},[480,1423,1044],{"class":760},[480,1425,757],{"class":494},[480,1427,1049],{"class":603},[480,1429,1430,1432,1435,1437,1439,1441,1443,1445,1448,1450,1452,1454,1456,1458,1460],{"class":482,"line":521},[480,1431,1022],{"class":486},[480,1433,1434],{"class":603}," competitors ",[480,1436,1059],{"class":494},[480,1438,491],{"class":490},[480,1440,1064],{"class":603},[480,1442,532],{"class":494},[480,1444,768],{"class":494},[480,1446,1447],{"class":760},"competitors",[480,1449,757],{"class":494},[480,1451,532],{"class":494},[480,1453,1078],{"class":603},[480,1455,512],{"class":494},[480,1457,1083],{"class":603},[480,1459,512],{"class":494},[480,1461,1462],{"class":603},"competitors)\n",[480,1464,1465,1468,1470],{"class":482,"line":539},[480,1466,1467],{"class":494},"\u003C/",[480,1469,1379],{"class":588},[480,1471,742],{"class":494},[480,1473,1474],{"class":482,"line":552},[480,1475,680],{"emptyLinePlaceholder":679},[480,1477,1478,1480,1483],{"class":482,"line":655},[480,1479,597],{"class":494},[480,1481,1482],{"class":588},"template",[480,1484,742],{"class":494},[480,1486,1487,1490,1493,1496,1498,1500,1503,1505],{"class":482,"line":676},[480,1488,1489],{"class":494},"  \u003C",[480,1491,1492],{"class":588},"div",[480,1494,1495],{"class":486}," v-if",[480,1497,1059],{"class":494},[480,1499,1390],{"class":494},[480,1501,1502],{"class":760},"isReady",[480,1504,1390],{"class":494},[480,1506,742],{"class":494},[480,1508,1509],{"class":482,"line":683},[480,1510,1511],{"class":535},"    \u003C!-- Search -->\n",[480,1513,1514,1517,1520,1523,1525,1527,1530,1532,1535,1537,1539,1542,1544],{"class":482,"line":689},[480,1515,1516],{"class":494},"    \u003C",[480,1518,1519],{"class":588},"UInput",[480,1521,1522],{"class":486}," v-model",[480,1524,1059],{"class":494},[480,1526,1390],{"class":494},[480,1528,1529],{"class":760},"competitors.search.value",[480,1531,1390],{"class":494},[480,1533,1534],{"class":486}," placeholder",[480,1536,1059],{"class":494},[480,1538,1390],{"class":494},[480,1540,1541],{"class":760},"Search competitors…",[480,1543,1390],{"class":494},[480,1545,1546],{"class":494}," />\n",[480,1548,1549],{"class":482,"line":710},[480,1550,680],{"emptyLinePlaceholder":679},[480,1552,1553],{"class":482,"line":715},[480,1554,1555],{"class":535},"    \u003C!-- List -->\n",[480,1557,1558,1560,1562,1565,1567,1569,1572,1574,1577,1579,1581,1584,1586],{"class":482,"line":721},[480,1559,1516],{"class":494},[480,1561,1492],{"class":588},[480,1563,1564],{"class":486}," v-for",[480,1566,1059],{"class":494},[480,1568,1390],{"class":494},[480,1570,1571],{"class":760},"item in competitors.filtered.value",[480,1573,1390],{"class":494},[480,1575,1576],{"class":486}," :key",[480,1578,1059],{"class":494},[480,1580,1390],{"class":494},[480,1582,1583],{"class":760},"item.id",[480,1585,1390],{"class":494},[480,1587,742],{"class":494},[480,1589,1590,1593,1595,1597,1600,1602,1604],{"class":482,"line":745},[480,1591,1592],{"class":494},"      \u003C",[480,1594,480],{"class":588},[480,1596,607],{"class":494},[480,1598,1599],{"class":603},"{{ item.name }}",[480,1601,1467],{"class":494},[480,1603,480],{"class":588},[480,1605,742],{"class":494},[480,1607,1608,1610,1613,1616,1618,1620,1623,1625,1628,1630,1632,1635,1637],{"class":482,"line":778},[480,1609,1592],{"class":494},[480,1611,1612],{"class":588},"UButton",[480,1614,1615],{"class":486}," @click",[480,1617,1059],{"class":494},[480,1619,1390],{"class":494},[480,1621,1622],{"class":760},"competitors.remove(item.id)",[480,1624,1390],{"class":494},[480,1626,1627],{"class":486}," icon",[480,1629,1059],{"class":494},[480,1631,1390],{"class":494},[480,1633,1634],{"class":760},"i-lucide-trash",[480,1636,1390],{"class":494},[480,1638,1546],{"class":494},[480,1640,1641,1644,1646],{"class":482,"line":783},[480,1642,1643],{"class":494},"    \u003C/",[480,1645,1492],{"class":588},[480,1647,742],{"class":494},[480,1649,1650],{"class":482,"line":789},[480,1651,680],{"emptyLinePlaceholder":679},[480,1653,1654],{"class":482,"line":819},[480,1655,1656],{"class":535},"    \u003C!-- Add -->\n",[480,1658,1659,1661,1663,1665,1667,1669,1672,1674,1676,1679,1681,1683],{"class":482,"line":853},[480,1660,1516],{"class":494},[480,1662,1612],{"class":588},[480,1664,1615],{"class":486},[480,1666,1059],{"class":494},[480,1668,1390],{"class":494},[480,1670,1671],{"class":760},"competitors.add({ name: 'New Co' })",[480,1673,1390],{"class":494},[480,1675,607],{"class":494},[480,1677,1678],{"class":603},"Add Competitor",[480,1680,1467],{"class":494},[480,1682,1612],{"class":588},[480,1684,742],{"class":494},[480,1686,1687],{"class":482,"line":872},[480,1688,680],{"emptyLinePlaceholder":679},[480,1690,1691],{"class":482,"line":904},[480,1692,1693],{"class":535},"    \u003C!-- Count badge -->\n",[480,1695,1696,1698,1701,1703,1706,1708,1710],{"class":482,"line":909},[480,1697,1516],{"class":494},[480,1699,1700],{"class":588},"UBadge",[480,1702,607],{"class":494},[480,1704,1705],{"class":603},"{{ competitors.count.value }}",[480,1707,1467],{"class":494},[480,1709,1700],{"class":588},[480,1711,742],{"class":494},[480,1713,1714,1717,1719],{"class":482,"line":915},[480,1715,1716],{"class":494},"  \u003C/",[480,1718,1492],{"class":588},[480,1720,742],{"class":494},[480,1722,1723,1725,1727],{"class":482,"line":950},[480,1724,1467],{"class":494},[480,1726,1482],{"class":588},[480,1728,742],{"class":494},[466,1730,1732],{"id":1731},"item-structure","Item structure",[458,1734,1735,1736,1738],{},"Every item stored in the collection has an auto-generated ",[455,1737,827],{}," field:",[471,1740,1742],{"className":473,"code":1741,"language":475,"meta":476,"style":476},"interface CollectionItem {\n  id: string                  // UUID, assigned on add()\n  [fieldKey: string]: any     // schema field values\n}\n",[455,1743,1744,1753,1765,1787],{"__ignoreMap":476},[480,1745,1746,1748,1751],{"class":482,"line":483},[480,1747,572],{"class":486},[480,1749,1750],{"class":508}," CollectionItem",[480,1752,578],{"class":494},[480,1754,1755,1758,1760,1762],{"class":482,"line":498},[480,1756,1757],{"class":588},"  id",[480,1759,505],{"class":494},[480,1761,832],{"class":508},[480,1763,1764],{"class":535},"                  // UUID, assigned on add()\n",[480,1766,1767,1770,1773,1775,1777,1780,1782,1784],{"class":482,"line":521},[480,1768,1769],{"class":603},"  [",[480,1771,1772],{"class":501},"fieldKey",[480,1774,505],{"class":494},[480,1776,832],{"class":508},[480,1778,1779],{"class":603},"]",[480,1781,505],{"class":494},[480,1783,940],{"class":508},[480,1785,1786],{"class":535},"     // schema field values\n",[480,1788,1789],{"class":482,"line":539},[480,1790,1008],{"class":494},[466,1792,1794],{"id":1793},"search-behavior","Search behavior",[458,1796,1797,1798,1801,1802,1805,1806,1808],{},"When ",[455,1799,1800],{},"schema.searchable: true"," and ",[455,1803,1804],{},"search.value"," is non-empty, ",[455,1807,1322],{}," returns items where any string field contains the search string (case-insensitive). All fields are searched, not just specific ones.",[466,1810,1812],{"id":1811},"sort-behavior","Sort behavior",[458,1814,1797,1815,505],{},[455,1816,1817],{},"schema.sortable: true",[471,1819,1821],{"className":473,"code":1820,"language":475,"meta":476,"style":476},"// Sort by threat level ascending\ncompetitors.sortKey.value = 'threat'\ncompetitors.sortDir.value = 'asc'\n\n// sorted.value now returns items sorted by threat\n",[455,1822,1823,1828,1850,1871,1875],{"__ignoreMap":476},[480,1824,1825],{"class":482,"line":483},[480,1826,1827],{"class":535},"// Sort by threat level ascending\n",[480,1829,1830,1832,1834,1837,1839,1841,1843,1845,1848],{"class":482,"line":498},[480,1831,1447],{"class":603},[480,1833,512],{"class":494},[480,1835,1836],{"class":603},"sortKey",[480,1838,512],{"class":494},[480,1840,1294],{"class":603},[480,1842,1059],{"class":494},[480,1844,768],{"class":494},[480,1846,1847],{"class":760},"threat",[480,1849,1304],{"class":494},[480,1851,1852,1854,1856,1859,1861,1863,1865,1867,1869],{"class":482,"line":521},[480,1853,1447],{"class":603},[480,1855,512],{"class":494},[480,1857,1858],{"class":603},"sortDir",[480,1860,512],{"class":494},[480,1862,1294],{"class":603},[480,1864,1059],{"class":494},[480,1866,768],{"class":494},[480,1868,761],{"class":760},[480,1870,1304],{"class":494},[480,1872,1873],{"class":482,"line":539},[480,1874,680],{"emptyLinePlaceholder":679},[480,1876,1877],{"class":482,"line":552},[480,1878,1879],{"class":535},"// sorted.value now returns items sorted by threat\n",[458,1881,1882,1885,1886,1888],{},[455,1883,1884],{},"sorted"," applies after ",[455,1887,1322],{}," — search + sort work together.",[466,1890,1892],{"id":1891},"max-items","Max items",[458,1894,1895,1896,1899,1900,1903,1904,1907],{},"If ",[455,1897,1898],{},"schema.maxItems"," is set, ",[455,1901,1902],{},"add()"," silently does nothing when the limit is reached. Check ",[455,1905,1906],{},"count.value >= schema.maxItems"," to show a \"limit reached\" message in UI.",[466,1909,1911,1912],{"id":1910},"low-level-useprotolist","Low-level: ",[455,1913,463],{},[458,1915,1916,1918,1919,1921],{},[455,1917,396],{}," wraps ",[455,1920,463],{},", which provides the raw Y.Array operations:",[471,1923,1925],{"className":473,"code":1924,"language":475,"meta":476,"style":476},"function useProtoList(\n  doc: Y.Doc,\n  key: string,\n  options?: { maxItems?: number },\n): ProtoListState\n",[455,1926,1927,1936,1951,1961,1981],{"__ignoreMap":476},[480,1928,1929,1931,1934],{"class":482,"line":483},[480,1930,487],{"class":486},[480,1932,1933],{"class":490}," useProtoList",[480,1935,495],{"class":494},[480,1937,1938,1940,1942,1945,1947,1949],{"class":482,"line":498},[480,1939,502],{"class":501},[480,1941,505],{"class":494},[480,1943,1944],{"class":508}," Y",[480,1946,512],{"class":494},[480,1948,515],{"class":508},[480,1950,518],{"class":494},[480,1952,1953,1955,1957,1959],{"class":482,"line":521},[480,1954,524],{"class":501},[480,1956,505],{"class":494},[480,1958,832],{"class":508},[480,1960,518],{"class":494},[480,1962,1963,1966,1969,1971,1974,1976,1978],{"class":482,"line":539},[480,1964,1965],{"class":501},"  options",[480,1967,1968],{"class":494},"?:",[480,1970,1025],{"class":494},[480,1972,1973],{"class":588}," maxItems",[480,1975,1968],{"class":494},[480,1977,893],{"class":508},[480,1979,1980],{"class":494}," },\n",[480,1982,1983,1985],{"class":482,"line":552},[480,1984,555],{"class":494},[480,1986,1987],{"class":508}," ProtoListState\n",[458,1989,1990,1992,1993,1996],{},[455,1991,463],{}," returns ",[455,1994,1995],{},"{ items, add, update, remove, move }"," without search, sort, or schema awareness. Use it when you need direct Y.Array access.",[1998,1999,2000],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":476,"searchDepth":498,"depth":498,"links":2002},[2003,2004,2005,2006,2007,2008,2009,2010,2011],{"id":468,"depth":498,"text":469},{"id":561,"depth":498,"text":562},{"id":1011,"depth":498,"text":1012},{"id":1364,"depth":498,"text":1365},{"id":1731,"depth":498,"text":1732},{"id":1793,"depth":498,"text":1794},{"id":1811,"depth":498,"text":1812},{"id":1891,"depth":498,"text":1892},{"id":1910,"depth":498,"text":2012},"Low-level: useProtoList","High-level CRUD composable for Y.Array-backed collection lists — reactive items, add/update/remove/move, search, sort, and item count.","md",null,{},{"title":396},{"title":396,"description":2013},"FR2BqIQXATEYcrYLlN27Ck3Z5VxsmB54mQxsiV1yHSQ",[2021,2023],{"title":392,"path":393,"stem":394,"description":2022,"children":-1},"Low-level Y.js document lifecycle composable — creates, caches, and manages Y.Doc instances with IndexedDB persistence, optional server sync, and corruption detection.",{"title":5,"path":402,"stem":403,"description":2024,"children":-1},"All globally registered components — ProtoTool, ProtoCrudModal, ProtoForm, ProtoDebugPanel, field components, and visualization components.",1772977477358]