[{"data":1,"prerenderedAt":2034},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-protokit/composables/use-prototype-en":444,"/docs/nuxt-protokit/composables/use-prototype-surround-en":2029},[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":2024},{"id":446,"title":388,"body":447,"description":2022,"extension":2023,"links":2024,"meta":2025,"navigation":2026,"ogImage":2024,"path":389,"seo":2027,"stem":390,"__hash__":2028},"nuxt_protokit/0.docs/4.nuxt-protokit/3.composables/2.use-prototype.md",{"type":448,"value":449,"toc":2009},"minimark",[450,457,478,483,554,558,792,796,1048,1052,1062,1145,1152,1155,1395,1399,1454,1457,1464,1582,1586,1645,1649,1667,1778,1783,1798,1887,1891,1901,1989,2005],[451,452,454],"h1",{"id":453},"useprototype",[455,456,388],"code",{},[458,459,460,461,463,464,463,467,463,470,473,474,477],"p",{},"The high-level facade. Combines ",[455,462,392],{},", ",[455,465,466],{},"useProtoMap",[455,468,469],{},"useProtoList",[455,471,472],{},"useProtoDerived",", and ",[455,475,476],{},"useProtoOutputs"," into one composable call. Start here when building a custom tool UI.",[479,480,482],"h2",{"id":481},"signature","Signature",[484,485,490],"pre",{"className":486,"code":487,"language":488,"meta":489,"style":489},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function usePrototype(\n  schema:  PrototypeSchema,\n  docKey?: string,           // defaults to schema.key\n): ProtoToolState\n","typescript","",[455,491,492,509,526,545],{"__ignoreMap":489},[493,494,497,501,505],"span",{"class":495,"line":496},"line",1,[493,498,500],{"class":499},"spNyl","function",[493,502,504],{"class":503},"s2Zo4"," usePrototype",[493,506,508],{"class":507},"sMK4o","(\n",[493,510,512,516,519,523],{"class":495,"line":511},2,[493,513,515],{"class":514},"sHdIc","  schema",[493,517,518],{"class":507},":",[493,520,522],{"class":521},"sBMFI","  PrototypeSchema",[493,524,525],{"class":507},",\n",[493,527,529,532,535,538,541],{"class":495,"line":528},3,[493,530,531],{"class":514},"  docKey",[493,533,534],{"class":507},"?:",[493,536,537],{"class":521}," string",[493,539,540],{"class":507},",",[493,542,544],{"class":543},"sHwdD","           // defaults to schema.key\n",[493,546,548,551],{"class":495,"line":547},4,[493,549,550],{"class":507},"):",[493,552,553],{"class":521}," ProtoToolState\n",[479,555,557],{"id":556},"return-value","Return value",[484,559,561],{"className":486,"code":560,"language":488,"meta":489,"style":489},"interface ProtoToolState {\n  // Y.js document\n  doc:      Y.Doc\n  isReady:  ComputedRef\u003Cboolean>   // true once IndexedDB has loaded\n\n  // Form fields — one Ref per field key\n  state:    Record\u003Cstring, Ref\u003Cany>>\n\n  // CRUD collections — one ProtoCollectionState per collection key\n  collections: Record\u003Cstring, ProtoCollectionState>\n\n  // Computed derived values\n  derived:  ComputedRef\u003CRecord\u003Cstring, any>>\n\n  // Compute context (for passing to results/viz functions)\n  computeContext: ComputedRef\u003CComputeContext>\n\n  // Actions\n  reset():  void   // reset all fields to schema defaults\n}\n",[455,562,563,574,579,596,618,625,631,660,665,671,694,699,705,731,736,742,760,765,771,786],{"__ignoreMap":489},[493,564,565,568,571],{"class":495,"line":496},[493,566,567],{"class":499},"interface",[493,569,570],{"class":521}," ProtoToolState",[493,572,573],{"class":507}," {\n",[493,575,576],{"class":495,"line":511},[493,577,578],{"class":543},"  // Y.js document\n",[493,580,581,585,587,590,593],{"class":495,"line":528},[493,582,584],{"class":583},"swJcz","  doc",[493,586,518],{"class":507},[493,588,589],{"class":521},"      Y",[493,591,592],{"class":507},".",[493,594,595],{"class":521},"Doc\n",[493,597,598,601,603,606,609,612,615],{"class":495,"line":547},[493,599,600],{"class":583},"  isReady",[493,602,518],{"class":507},[493,604,605],{"class":521},"  ComputedRef",[493,607,608],{"class":507},"\u003C",[493,610,611],{"class":521},"boolean",[493,613,614],{"class":507},">",[493,616,617],{"class":543},"   // true once IndexedDB has loaded\n",[493,619,621],{"class":495,"line":620},5,[493,622,624],{"emptyLinePlaceholder":623},true,"\n",[493,626,628],{"class":495,"line":627},6,[493,629,630],{"class":543},"  // Form fields — one Ref per field key\n",[493,632,634,637,639,642,644,647,649,652,654,657],{"class":495,"line":633},7,[493,635,636],{"class":583},"  state",[493,638,518],{"class":507},[493,640,641],{"class":521},"    Record",[493,643,608],{"class":507},[493,645,646],{"class":521},"string",[493,648,540],{"class":507},[493,650,651],{"class":521}," Ref",[493,653,608],{"class":507},[493,655,656],{"class":521},"any",[493,658,659],{"class":507},">>\n",[493,661,663],{"class":495,"line":662},8,[493,664,624],{"emptyLinePlaceholder":623},[493,666,668],{"class":495,"line":667},9,[493,669,670],{"class":543},"  // CRUD collections — one ProtoCollectionState per collection key\n",[493,672,674,677,679,682,684,686,688,691],{"class":495,"line":673},10,[493,675,676],{"class":583},"  collections",[493,678,518],{"class":507},[493,680,681],{"class":521}," Record",[493,683,608],{"class":507},[493,685,646],{"class":521},[493,687,540],{"class":507},[493,689,690],{"class":521}," ProtoCollectionState",[493,692,693],{"class":507},">\n",[493,695,697],{"class":495,"line":696},11,[493,698,624],{"emptyLinePlaceholder":623},[493,700,702],{"class":495,"line":701},12,[493,703,704],{"class":543},"  // Computed derived values\n",[493,706,708,711,713,715,717,720,722,724,726,729],{"class":495,"line":707},13,[493,709,710],{"class":583},"  derived",[493,712,518],{"class":507},[493,714,605],{"class":521},[493,716,608],{"class":507},[493,718,719],{"class":521},"Record",[493,721,608],{"class":507},[493,723,646],{"class":521},[493,725,540],{"class":507},[493,727,728],{"class":521}," any",[493,730,659],{"class":507},[493,732,734],{"class":495,"line":733},14,[493,735,624],{"emptyLinePlaceholder":623},[493,737,739],{"class":495,"line":738},15,[493,740,741],{"class":543},"  // Compute context (for passing to results/viz functions)\n",[493,743,745,748,750,753,755,758],{"class":495,"line":744},16,[493,746,747],{"class":583},"  computeContext",[493,749,518],{"class":507},[493,751,752],{"class":521}," ComputedRef",[493,754,608],{"class":507},[493,756,757],{"class":521},"ComputeContext",[493,759,693],{"class":507},[493,761,763],{"class":495,"line":762},17,[493,764,624],{"emptyLinePlaceholder":623},[493,766,768],{"class":495,"line":767},18,[493,769,770],{"class":543},"  // Actions\n",[493,772,774,777,780,783],{"class":495,"line":773},19,[493,775,776],{"class":583},"  reset",[493,778,779],{"class":507},"():",[493,781,782],{"class":521},"  void",[493,784,785],{"class":543},"   // reset all fields to schema defaults\n",[493,787,789],{"class":495,"line":788},20,[493,790,791],{"class":507},"}\n",[479,793,795],{"id":794},"basic-usage","Basic usage",[484,797,801],{"className":798,"code":799,"language":800,"meta":489,"style":489},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { state, derived, computeContext, isReady, reset } = usePrototype(mySchema)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"!isReady\">Loading…\u003C/div>\n  \u003Cdiv v-else>\n    \u003CUInput v-model=\"state.mrr.value\" type=\"number\" label=\"MRR\" />\n    \u003Cp>ARR: {{ derived.arr }}\u003C/p>\n    \u003CUButton @click=\"reset\">Reset\u003C/UButton>\n  \u003C/div>\n\u003C/template>\n","vue",[455,802,803,830,873,882,886,895,926,937,984,1001,1031,1040],{"__ignoreMap":489},[493,804,805,807,810,813,816,819,822,826,828],{"class":495,"line":496},[493,806,608],{"class":507},[493,808,809],{"class":583},"script",[493,811,812],{"class":499}," setup",[493,814,815],{"class":499}," lang",[493,817,818],{"class":507},"=",[493,820,821],{"class":507},"\"",[493,823,825],{"class":824},"sfazB","ts",[493,827,821],{"class":507},[493,829,693],{"class":507},[493,831,832,835,838,842,844,847,849,852,854,857,859,862,865,868,870],{"class":495,"line":511},[493,833,834],{"class":499},"const",[493,836,837],{"class":507}," {",[493,839,841],{"class":840},"sTEyZ"," state",[493,843,540],{"class":507},[493,845,846],{"class":840}," derived",[493,848,540],{"class":507},[493,850,851],{"class":840}," computeContext",[493,853,540],{"class":507},[493,855,856],{"class":840}," isReady",[493,858,540],{"class":507},[493,860,861],{"class":840}," reset ",[493,863,864],{"class":507},"}",[493,866,867],{"class":507}," =",[493,869,504],{"class":503},[493,871,872],{"class":840},"(mySchema)\n",[493,874,875,878,880],{"class":495,"line":528},[493,876,877],{"class":507},"\u003C/",[493,879,809],{"class":583},[493,881,693],{"class":507},[493,883,884],{"class":495,"line":547},[493,885,624],{"emptyLinePlaceholder":623},[493,887,888,890,893],{"class":495,"line":620},[493,889,608],{"class":507},[493,891,892],{"class":583},"template",[493,894,693],{"class":507},[493,896,897,900,903,906,908,910,913,915,917,920,922,924],{"class":495,"line":627},[493,898,899],{"class":507},"  \u003C",[493,901,902],{"class":583},"div",[493,904,905],{"class":499}," v-if",[493,907,818],{"class":507},[493,909,821],{"class":507},[493,911,912],{"class":824},"!isReady",[493,914,821],{"class":507},[493,916,614],{"class":507},[493,918,919],{"class":840},"Loading…",[493,921,877],{"class":507},[493,923,902],{"class":583},[493,925,693],{"class":507},[493,927,928,930,932,935],{"class":495,"line":633},[493,929,899],{"class":507},[493,931,902],{"class":583},[493,933,934],{"class":499}," v-else",[493,936,693],{"class":507},[493,938,939,942,945,948,950,952,955,957,960,962,964,967,969,972,974,976,979,981],{"class":495,"line":662},[493,940,941],{"class":507},"    \u003C",[493,943,944],{"class":583},"UInput",[493,946,947],{"class":499}," v-model",[493,949,818],{"class":507},[493,951,821],{"class":507},[493,953,954],{"class":824},"state.mrr.value",[493,956,821],{"class":507},[493,958,959],{"class":499}," type",[493,961,818],{"class":507},[493,963,821],{"class":507},[493,965,966],{"class":824},"number",[493,968,821],{"class":507},[493,970,971],{"class":499}," label",[493,973,818],{"class":507},[493,975,821],{"class":507},[493,977,978],{"class":824},"MRR",[493,980,821],{"class":507},[493,982,983],{"class":507}," />\n",[493,985,986,988,990,992,995,997,999],{"class":495,"line":667},[493,987,941],{"class":507},[493,989,458],{"class":583},[493,991,614],{"class":507},[493,993,994],{"class":840},"ARR: {{ derived.arr }}",[493,996,877],{"class":507},[493,998,458],{"class":583},[493,1000,693],{"class":507},[493,1002,1003,1005,1008,1011,1013,1015,1018,1020,1022,1025,1027,1029],{"class":495,"line":673},[493,1004,941],{"class":507},[493,1006,1007],{"class":583},"UButton",[493,1009,1010],{"class":499}," @click",[493,1012,818],{"class":507},[493,1014,821],{"class":507},[493,1016,1017],{"class":824},"reset",[493,1019,821],{"class":507},[493,1021,614],{"class":507},[493,1023,1024],{"class":840},"Reset",[493,1026,877],{"class":507},[493,1028,1007],{"class":583},[493,1030,693],{"class":507},[493,1032,1033,1036,1038],{"class":495,"line":696},[493,1034,1035],{"class":507},"  \u003C/",[493,1037,902],{"class":583},[493,1039,693],{"class":507},[493,1041,1042,1044,1046],{"class":495,"line":701},[493,1043,877],{"class":507},[493,1045,892],{"class":583},[493,1047,693],{"class":507},[479,1049,1051],{"id":1050},"field-refs","Field refs",[458,1053,1054,1055,1058,1059,518],{},"Each field in the schema becomes a ",[455,1056,1057],{},"Ref\u003Cany>"," inside ",[455,1060,1061],{},"state",[484,1063,1065],{"className":486,"code":1064,"language":488,"meta":489,"style":489},"const { state } = usePrototype(schema)\n\n// Read\nconsole.log(state.mrr.value)\n\n// Write (Y.js transaction, persisted to IndexedDB)\nstate.mrr.value = 15000\n",[455,1066,1067,1085,1089,1094,1117,1121,1126],{"__ignoreMap":489},[493,1068,1069,1071,1073,1076,1078,1080,1082],{"class":495,"line":496},[493,1070,834],{"class":499},[493,1072,837],{"class":507},[493,1074,1075],{"class":840}," state ",[493,1077,864],{"class":507},[493,1079,867],{"class":507},[493,1081,504],{"class":503},[493,1083,1084],{"class":840},"(schema)\n",[493,1086,1087],{"class":495,"line":511},[493,1088,624],{"emptyLinePlaceholder":623},[493,1090,1091],{"class":495,"line":528},[493,1092,1093],{"class":543},"// Read\n",[493,1095,1096,1099,1101,1104,1107,1109,1112,1114],{"class":495,"line":547},[493,1097,1098],{"class":840},"console",[493,1100,592],{"class":507},[493,1102,1103],{"class":503},"log",[493,1105,1106],{"class":840},"(state",[493,1108,592],{"class":507},[493,1110,1111],{"class":840},"mrr",[493,1113,592],{"class":507},[493,1115,1116],{"class":840},"value)\n",[493,1118,1119],{"class":495,"line":620},[493,1120,624],{"emptyLinePlaceholder":623},[493,1122,1123],{"class":495,"line":627},[493,1124,1125],{"class":543},"// Write (Y.js transaction, persisted to IndexedDB)\n",[493,1127,1128,1130,1132,1134,1136,1139,1141],{"class":495,"line":633},[493,1129,1061],{"class":840},[493,1131,592],{"class":507},[493,1133,1111],{"class":840},[493,1135,592],{"class":507},[493,1137,1138],{"class":840},"value ",[493,1140,818],{"class":507},[493,1142,1144],{"class":1143},"sbssI"," 15000\n",[458,1146,1147,1148,1151],{},"Changes written to ",[455,1149,1150],{},"state.x.value"," are immediately persisted to the Y.js document's IndexedDB store and (when online) queued for server sync.",[479,1153,366],{"id":1154},"collections",[484,1156,1158],{"className":486,"code":1157,"language":488,"meta":489,"style":489},"const { collections } = usePrototype(schema)\n\n// 'interviews' maps to schema.collections.interviews\nconst interviews = collections.interviews\n\ninterviews.items.value          // Ref\u003CItem[]> — reactive list\ninterviews.add({ name: 'Alice', notes: '…' })\ninterviews.update(itemId, { notes: 'updated' })\ninterviews.remove(itemId)\ninterviews.move(itemId, 1)      // move down by 1 position\ninterviews.search.value = 'pain'\ninterviews.filtered.value       // Ref\u003CItem[]> — search-filtered\ninterviews.count.value          // Ref\u003Cnumber>\n",[455,1159,1160,1177,1181,1186,1203,1207,1225,1274,1305,1317,1339,1362,1379],{"__ignoreMap":489},[493,1161,1162,1164,1166,1169,1171,1173,1175],{"class":495,"line":496},[493,1163,834],{"class":499},[493,1165,837],{"class":507},[493,1167,1168],{"class":840}," collections ",[493,1170,864],{"class":507},[493,1172,867],{"class":507},[493,1174,504],{"class":503},[493,1176,1084],{"class":840},[493,1178,1179],{"class":495,"line":511},[493,1180,624],{"emptyLinePlaceholder":623},[493,1182,1183],{"class":495,"line":528},[493,1184,1185],{"class":543},"// 'interviews' maps to schema.collections.interviews\n",[493,1187,1188,1190,1193,1195,1198,1200],{"class":495,"line":547},[493,1189,834],{"class":499},[493,1191,1192],{"class":840}," interviews ",[493,1194,818],{"class":507},[493,1196,1197],{"class":840}," collections",[493,1199,592],{"class":507},[493,1201,1202],{"class":840},"interviews\n",[493,1204,1205],{"class":495,"line":620},[493,1206,624],{"emptyLinePlaceholder":623},[493,1208,1209,1212,1214,1217,1219,1222],{"class":495,"line":627},[493,1210,1211],{"class":840},"interviews",[493,1213,592],{"class":507},[493,1215,1216],{"class":840},"items",[493,1218,592],{"class":507},[493,1220,1221],{"class":840},"value          ",[493,1223,1224],{"class":543},"// Ref\u003CItem[]> — reactive list\n",[493,1226,1227,1229,1231,1234,1237,1240,1243,1245,1248,1251,1254,1256,1259,1261,1263,1266,1268,1271],{"class":495,"line":633},[493,1228,1211],{"class":840},[493,1230,592],{"class":507},[493,1232,1233],{"class":503},"add",[493,1235,1236],{"class":840},"(",[493,1238,1239],{"class":507},"{",[493,1241,1242],{"class":583}," name",[493,1244,518],{"class":507},[493,1246,1247],{"class":507}," '",[493,1249,1250],{"class":824},"Alice",[493,1252,1253],{"class":507},"'",[493,1255,540],{"class":507},[493,1257,1258],{"class":583}," notes",[493,1260,518],{"class":507},[493,1262,1247],{"class":507},[493,1264,1265],{"class":824},"…",[493,1267,1253],{"class":507},[493,1269,1270],{"class":507}," }",[493,1272,1273],{"class":840},")\n",[493,1275,1276,1278,1280,1283,1286,1288,1290,1292,1294,1296,1299,1301,1303],{"class":495,"line":662},[493,1277,1211],{"class":840},[493,1279,592],{"class":507},[493,1281,1282],{"class":503},"update",[493,1284,1285],{"class":840},"(itemId",[493,1287,540],{"class":507},[493,1289,837],{"class":507},[493,1291,1258],{"class":583},[493,1293,518],{"class":507},[493,1295,1247],{"class":507},[493,1297,1298],{"class":824},"updated",[493,1300,1253],{"class":507},[493,1302,1270],{"class":507},[493,1304,1273],{"class":840},[493,1306,1307,1309,1311,1314],{"class":495,"line":667},[493,1308,1211],{"class":840},[493,1310,592],{"class":507},[493,1312,1313],{"class":503},"remove",[493,1315,1316],{"class":840},"(itemId)\n",[493,1318,1319,1321,1323,1326,1328,1330,1333,1336],{"class":495,"line":673},[493,1320,1211],{"class":840},[493,1322,592],{"class":507},[493,1324,1325],{"class":503},"move",[493,1327,1285],{"class":840},[493,1329,540],{"class":507},[493,1331,1332],{"class":1143}," 1",[493,1334,1335],{"class":840},")      ",[493,1337,1338],{"class":543},"// move down by 1 position\n",[493,1340,1341,1343,1345,1348,1350,1352,1354,1356,1359],{"class":495,"line":696},[493,1342,1211],{"class":840},[493,1344,592],{"class":507},[493,1346,1347],{"class":840},"search",[493,1349,592],{"class":507},[493,1351,1138],{"class":840},[493,1353,818],{"class":507},[493,1355,1247],{"class":507},[493,1357,1358],{"class":824},"pain",[493,1360,1361],{"class":507},"'\n",[493,1363,1364,1366,1368,1371,1373,1376],{"class":495,"line":701},[493,1365,1211],{"class":840},[493,1367,592],{"class":507},[493,1369,1370],{"class":840},"filtered",[493,1372,592],{"class":507},[493,1374,1375],{"class":840},"value       ",[493,1377,1378],{"class":543},"// Ref\u003CItem[]> — search-filtered\n",[493,1380,1381,1383,1385,1388,1390,1392],{"class":495,"line":707},[493,1382,1211],{"class":840},[493,1384,592],{"class":507},[493,1386,1387],{"class":840},"count",[493,1389,592],{"class":507},[493,1391,1221],{"class":840},[493,1393,1394],{"class":543},"// Ref\u003Cnumber>\n",[479,1396,1398],{"id":1397},"derived-values","Derived values",[484,1400,1402],{"className":486,"code":1401,"language":488,"meta":489,"style":489},"const { derived } = usePrototype(schema)\n\n// derived is a ComputedRef — access .value\nconsole.log(derived.value.ltvCacRatio)  // automatically recomputed when fields change\n",[455,1403,1404,1421,1425,1430],{"__ignoreMap":489},[493,1405,1406,1408,1410,1413,1415,1417,1419],{"class":495,"line":496},[493,1407,834],{"class":499},[493,1409,837],{"class":507},[493,1411,1412],{"class":840}," derived ",[493,1414,864],{"class":507},[493,1416,867],{"class":507},[493,1418,504],{"class":503},[493,1420,1084],{"class":840},[493,1422,1423],{"class":495,"line":511},[493,1424,624],{"emptyLinePlaceholder":623},[493,1426,1427],{"class":495,"line":528},[493,1428,1429],{"class":543},"// derived is a ComputedRef — access .value\n",[493,1431,1432,1434,1436,1438,1441,1443,1446,1448,1451],{"class":495,"line":547},[493,1433,1098],{"class":840},[493,1435,592],{"class":507},[493,1437,1103],{"class":503},[493,1439,1440],{"class":840},"(derived",[493,1442,592],{"class":507},[493,1444,1445],{"class":840},"value",[493,1447,592],{"class":507},[493,1449,1450],{"class":840},"ltvCacRatio)  ",[493,1452,1453],{"class":543},"// automatically recomputed when fields change\n",[479,1455,757],{"id":1456},"computecontext",[458,1458,1459,1460,1463],{},"Pass ",[455,1461,1462],{},"computeContext.value"," to your own result / visualization rendering functions:",[484,1465,1467],{"className":486,"code":1466,"language":488,"meta":489,"style":489},"const { computeContext } = usePrototype(schema)\n\n// Use in template\nconst badge = computed(() => schema.results?.badge?.(computeContext.value))\nconst stats = computed(() => schema.results?.stats?.(computeContext.value) ?? [])\n",[455,1468,1469,1486,1490,1495,1539],{"__ignoreMap":489},[493,1470,1471,1473,1475,1478,1480,1482,1484],{"class":495,"line":496},[493,1472,834],{"class":499},[493,1474,837],{"class":507},[493,1476,1477],{"class":840}," computeContext ",[493,1479,864],{"class":507},[493,1481,867],{"class":507},[493,1483,504],{"class":503},[493,1485,1084],{"class":840},[493,1487,1488],{"class":495,"line":511},[493,1489,624],{"emptyLinePlaceholder":623},[493,1491,1492],{"class":495,"line":528},[493,1493,1494],{"class":543},"// Use in template\n",[493,1496,1497,1499,1502,1504,1507,1509,1512,1515,1518,1520,1523,1526,1529,1531,1534,1536],{"class":495,"line":547},[493,1498,834],{"class":499},[493,1500,1501],{"class":840}," badge ",[493,1503,818],{"class":507},[493,1505,1506],{"class":503}," computed",[493,1508,1236],{"class":840},[493,1510,1511],{"class":507},"()",[493,1513,1514],{"class":499}," =>",[493,1516,1517],{"class":840}," schema",[493,1519,592],{"class":507},[493,1521,1522],{"class":840},"results",[493,1524,1525],{"class":507},"?.",[493,1527,1528],{"class":503},"badge",[493,1530,1525],{"class":507},[493,1532,1533],{"class":840},"(computeContext",[493,1535,592],{"class":507},[493,1537,1538],{"class":840},"value))\n",[493,1540,1541,1543,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1567,1569,1571,1573,1576,1579],{"class":495,"line":620},[493,1542,834],{"class":499},[493,1544,1545],{"class":840}," stats ",[493,1547,818],{"class":507},[493,1549,1506],{"class":503},[493,1551,1236],{"class":840},[493,1553,1511],{"class":507},[493,1555,1514],{"class":499},[493,1557,1517],{"class":840},[493,1559,592],{"class":507},[493,1561,1522],{"class":840},[493,1563,1525],{"class":507},[493,1565,1566],{"class":503},"stats",[493,1568,1525],{"class":507},[493,1570,1533],{"class":840},[493,1572,592],{"class":507},[493,1574,1575],{"class":840},"value) ",[493,1577,1578],{"class":507},"??",[493,1580,1581],{"class":840}," [])\n",[479,1583,1585],{"id":1584},"custom-doc-key","Custom doc key",[484,1587,1589],{"className":486,"code":1588,"language":488,"meta":489,"style":489},"// Two independent instances of the same schema — separate storage\nconst toolA = usePrototype(breakEvenSchema, 'break-even-scenario-a')\nconst toolB = usePrototype(breakEvenSchema, 'break-even-scenario-b')\n",[455,1590,1591,1596,1621],{"__ignoreMap":489},[493,1592,1593],{"class":495,"line":496},[493,1594,1595],{"class":543},"// Two independent instances of the same schema — separate storage\n",[493,1597,1598,1600,1603,1605,1607,1610,1612,1614,1617,1619],{"class":495,"line":511},[493,1599,834],{"class":499},[493,1601,1602],{"class":840}," toolA ",[493,1604,818],{"class":507},[493,1606,504],{"class":503},[493,1608,1609],{"class":840},"(breakEvenSchema",[493,1611,540],{"class":507},[493,1613,1247],{"class":507},[493,1615,1616],{"class":824},"break-even-scenario-a",[493,1618,1253],{"class":507},[493,1620,1273],{"class":840},[493,1622,1623,1625,1628,1630,1632,1634,1636,1638,1641,1643],{"class":495,"line":528},[493,1624,834],{"class":499},[493,1626,1627],{"class":840}," toolB ",[493,1629,818],{"class":507},[493,1631,504],{"class":503},[493,1633,1609],{"class":840},[493,1635,540],{"class":507},[493,1637,1247],{"class":507},[493,1639,1640],{"class":824},"break-even-scenario-b",[493,1642,1253],{"class":507},[493,1644,1273],{"class":840},[479,1646,1648],{"id":1647},"readiness-guard","Readiness guard",[458,1650,1651,1654,1655,1658,1659,1662,1663,1666],{},[455,1652,1653],{},"isReady"," becomes ",[455,1656,1657],{},"true"," once ",[455,1660,1661],{},"IndexeddbPersistence"," has finished loading stored data. Always guard renders behind ",[455,1664,1665],{},"v-if=\"isReady\""," to avoid flash-of-default-values:",[484,1668,1670],{"className":798,"code":1669,"language":800,"meta":489,"style":489},"\u003Ctemplate>\n  \u003CClientOnly>\n    \u003Cdiv v-if=\"!isReady\" class=\"animate-pulse\">Loading saved data…\u003C/div>\n    \u003CProtoForm v-else :schema=\"schema\" :state=\"state\" />\n  \u003C/ClientOnly>\n\u003C/template>\n",[455,1671,1672,1680,1689,1728,1762,1770],{"__ignoreMap":489},[493,1673,1674,1676,1678],{"class":495,"line":496},[493,1675,608],{"class":507},[493,1677,892],{"class":583},[493,1679,693],{"class":507},[493,1681,1682,1684,1687],{"class":495,"line":511},[493,1683,899],{"class":507},[493,1685,1686],{"class":583},"ClientOnly",[493,1688,693],{"class":507},[493,1690,1691,1693,1695,1697,1699,1701,1703,1705,1708,1710,1712,1715,1717,1719,1722,1724,1726],{"class":495,"line":528},[493,1692,941],{"class":507},[493,1694,902],{"class":583},[493,1696,905],{"class":499},[493,1698,818],{"class":507},[493,1700,821],{"class":507},[493,1702,912],{"class":824},[493,1704,821],{"class":507},[493,1706,1707],{"class":499}," class",[493,1709,818],{"class":507},[493,1711,821],{"class":507},[493,1713,1714],{"class":824},"animate-pulse",[493,1716,821],{"class":507},[493,1718,614],{"class":507},[493,1720,1721],{"class":840},"Loading saved data…",[493,1723,877],{"class":507},[493,1725,902],{"class":583},[493,1727,693],{"class":507},[493,1729,1730,1732,1735,1737,1740,1742,1744,1747,1749,1752,1754,1756,1758,1760],{"class":495,"line":547},[493,1731,941],{"class":507},[493,1733,1734],{"class":583},"ProtoForm",[493,1736,934],{"class":499},[493,1738,1739],{"class":499}," :schema",[493,1741,818],{"class":507},[493,1743,821],{"class":507},[493,1745,1746],{"class":824},"schema",[493,1748,821],{"class":507},[493,1750,1751],{"class":499}," :state",[493,1753,818],{"class":507},[493,1755,821],{"class":507},[493,1757,1061],{"class":824},[493,1759,821],{"class":507},[493,1761,983],{"class":507},[493,1763,1764,1766,1768],{"class":495,"line":620},[493,1765,1035],{"class":507},[493,1767,1686],{"class":583},[493,1769,693],{"class":507},[493,1771,1772,1774,1776],{"class":495,"line":627},[493,1773,877],{"class":507},[493,1775,892],{"class":583},[493,1777,693],{"class":507},[479,1779,1780],{"id":1017},[455,1781,1782],{},"reset()",[458,1784,1785,1786,1789,1790,1794,1795,1797],{},"Resets all field refs to their schema ",[455,1787,1788],{},"default"," values and writes the defaults to the Y.js document. Collection items are ",[1791,1792,1793],"strong",{},"not"," cleared by ",[455,1796,1782],{}," — clear them individually if needed.",[484,1799,1801],{"className":486,"code":1800,"language":488,"meta":489,"style":489},"const { reset } = usePrototype(schema)\n\n// Prompts user and resets on confirm\nasync function handleReset() {\n  if (confirm('Reset all values?')) {\n    reset()\n  }\n}\n",[455,1802,1803,1819,1823,1828,1843,1870,1878,1883],{"__ignoreMap":489},[493,1804,1805,1807,1809,1811,1813,1815,1817],{"class":495,"line":496},[493,1806,834],{"class":499},[493,1808,837],{"class":507},[493,1810,861],{"class":840},[493,1812,864],{"class":507},[493,1814,867],{"class":507},[493,1816,504],{"class":503},[493,1818,1084],{"class":840},[493,1820,1821],{"class":495,"line":511},[493,1822,624],{"emptyLinePlaceholder":623},[493,1824,1825],{"class":495,"line":528},[493,1826,1827],{"class":543},"// Prompts user and resets on confirm\n",[493,1829,1830,1833,1836,1839,1841],{"class":495,"line":547},[493,1831,1832],{"class":499},"async",[493,1834,1835],{"class":499}," function",[493,1837,1838],{"class":503}," handleReset",[493,1840,1511],{"class":507},[493,1842,573],{"class":507},[493,1844,1845,1849,1852,1855,1857,1859,1862,1864,1867],{"class":495,"line":620},[493,1846,1848],{"class":1847},"s7zQu","  if",[493,1850,1851],{"class":583}," (",[493,1853,1854],{"class":503},"confirm",[493,1856,1236],{"class":583},[493,1858,1253],{"class":507},[493,1860,1861],{"class":824},"Reset all values?",[493,1863,1253],{"class":507},[493,1865,1866],{"class":583},")) ",[493,1868,1869],{"class":507},"{\n",[493,1871,1872,1875],{"class":495,"line":627},[493,1873,1874],{"class":503},"    reset",[493,1876,1877],{"class":583},"()\n",[493,1879,1880],{"class":495,"line":633},[493,1881,1882],{"class":507},"  }\n",[493,1884,1885],{"class":495,"line":662},[493,1886,791],{"class":507},[479,1888,1890],{"id":1889},"scoping-to-a-namespace-shared-ydoc","Scoping to a namespace (shared Y.Doc)",[458,1892,1893,1894,1897,1898,1900],{},"When multiple tools share a single ",[455,1895,1896],{},"Y.Doc",", pass the existing doc's scoped Y.Map directly instead of letting ",[455,1899,388],{}," create its own document:",[484,1902,1904],{"className":486,"code":1903,"language":488,"meta":489,"style":489},"// In a tool wrapper component — shared doc comes from a workspace store\nconst workspaceStore = useWorkspaceStore(workspaceId)\nconst toolMap = workspaceStore.getToolMap(toolKey) // returns doc.getMap(`fields:${toolKey}`)\n\n// Read/write within this scoped Y.Map\nconst { state, derived } = useProtoMap(toolMap, schema.fields)\n",[455,1905,1906,1911,1926,1949,1953,1958],{"__ignoreMap":489},[493,1907,1908],{"class":495,"line":496},[493,1909,1910],{"class":543},"// In a tool wrapper component — shared doc comes from a workspace store\n",[493,1912,1913,1915,1918,1920,1923],{"class":495,"line":511},[493,1914,834],{"class":499},[493,1916,1917],{"class":840}," workspaceStore ",[493,1919,818],{"class":507},[493,1921,1922],{"class":503}," useWorkspaceStore",[493,1924,1925],{"class":840},"(workspaceId)\n",[493,1927,1928,1930,1933,1935,1938,1940,1943,1946],{"class":495,"line":528},[493,1929,834],{"class":499},[493,1931,1932],{"class":840}," toolMap ",[493,1934,818],{"class":507},[493,1936,1937],{"class":840}," workspaceStore",[493,1939,592],{"class":507},[493,1941,1942],{"class":503},"getToolMap",[493,1944,1945],{"class":840},"(toolKey) ",[493,1947,1948],{"class":543},"// returns doc.getMap(`fields:${toolKey}`)\n",[493,1950,1951],{"class":495,"line":547},[493,1952,624],{"emptyLinePlaceholder":623},[493,1954,1955],{"class":495,"line":620},[493,1956,1957],{"class":543},"// Read/write within this scoped Y.Map\n",[493,1959,1960,1962,1964,1966,1968,1970,1972,1974,1977,1980,1982,1984,1986],{"class":495,"line":627},[493,1961,834],{"class":499},[493,1963,837],{"class":507},[493,1965,841],{"class":840},[493,1967,540],{"class":507},[493,1969,1412],{"class":840},[493,1971,864],{"class":507},[493,1973,867],{"class":507},[493,1975,1976],{"class":503}," useProtoMap",[493,1978,1979],{"class":840},"(toolMap",[493,1981,540],{"class":507},[493,1983,1517],{"class":840},[493,1985,592],{"class":507},[493,1987,1988],{"class":840},"fields)\n",[458,1990,1991,1992,463,1994,473,1996,1998,1999,2001,2002,2004],{},"Use ",[455,1993,466],{},[455,1995,469],{},[455,1997,396],{}," directly in this case — ",[455,2000,388],{}," always creates its own ",[455,2003,1896],{}," and is not suitable for shared-document architectures.",[2006,2007,2008],"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":489,"searchDepth":511,"depth":511,"links":2010},[2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021],{"id":481,"depth":511,"text":482},{"id":556,"depth":511,"text":557},{"id":794,"depth":511,"text":795},{"id":1050,"depth":511,"text":1051},{"id":1154,"depth":511,"text":366},{"id":1397,"depth":511,"text":1398},{"id":1456,"depth":511,"text":757},{"id":1584,"depth":511,"text":1585},{"id":1647,"depth":511,"text":1648},{"id":1017,"depth":511,"text":1782},{"id":1889,"depth":511,"text":1890},"The high-level facade composable that combines document management, field sync, CRUD, derived computation, and cross-tool outputs into a single call.","md",null,{},{"title":388},{"title":388,"description":2022},"_PSnWGgJYyWP9umsbXvCoprh8Q_caOoFXXkC1dDNvp4",[2030,2032],{"title":5,"path":383,"stem":384,"description":2031,"children":-1},"All composables auto-imported by protokit — from the high-level usePrototype facade to the low-level Y.js primitives.",{"title":392,"path":393,"stem":394,"description":2033,"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.",1772977477003]