[{"data":1,"prerenderedAt":2403},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-protokit/schemas/derived-computed-en":444,"/docs/nuxt-protokit/schemas/derived-computed-surround-en":2398},[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":2393},{"id":446,"title":447,"body":448,"description":2391,"extension":2392,"links":2393,"meta":2394,"navigation":2395,"ogImage":2393,"path":371,"seo":2396,"stem":372,"__hash__":2397},"nuxt_protokit/0.docs/4.nuxt-protokit/2.schemas/4.derived-computed.md","Derived & Computed Values",{"type":449,"value":450,"toc":2374},"minimark",[451,455,459,464,549,565,571,691,710,714,976,980,990,1125,1139,1143,1367,1374,1387,1458,1462,1468,1880,1885,1988,2004,2011,2024,2300,2306,2309,2359,2370],[452,453,447],"h1",{"id":454},"derived-computed-values",[456,457,458],"p",{},"Derived values turn raw field inputs into meaningful numbers, strings, dates, or structures. They update reactively whenever their dependencies change and are available in results, visualizations, and the produces/consumes graph.",[460,461,463],"h2",{"id":462},"basic-syntax","Basic syntax",[465,466,471],"pre",{"className":467,"code":468,"language":469,"meta":470,"style":470},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","derived: {\n  myValue: {\n    compute: (ctx: ComputeContext) => { /* return any value */ },\n  }\n}\n","typescript","",[472,473,474,490,500,537,543],"code",{"__ignoreMap":470},[475,476,479,483,487],"span",{"class":477,"line":478},"line",1,[475,480,482],{"class":481},"sBMFI","derived",[475,484,486],{"class":485},"sMK4o",":",[475,488,489],{"class":485}," {\n",[475,491,493,496,498],{"class":477,"line":492},2,[475,494,495],{"class":481},"  myValue",[475,497,486],{"class":485},[475,499,489],{"class":485},[475,501,503,506,508,511,515,517,520,523,527,530,534],{"class":477,"line":502},3,[475,504,505],{"class":481},"    compute",[475,507,486],{"class":485},[475,509,510],{"class":485}," (",[475,512,514],{"class":513},"sHdIc","ctx",[475,516,486],{"class":485},[475,518,519],{"class":481}," ComputeContext",[475,521,522],{"class":485},")",[475,524,526],{"class":525},"spNyl"," =>",[475,528,529],{"class":485}," {",[475,531,533],{"class":532},"sHwdD"," /* return any value */",[475,535,536],{"class":485}," },\n",[475,538,540],{"class":477,"line":539},4,[475,541,542],{"class":485},"  }\n",[475,544,546],{"class":477,"line":545},5,[475,547,548],{"class":485},"}\n",[456,550,551,552,555,556,560,561,564],{},"The ",[472,553,554],{},"compute"," function is ",[557,558,559],"strong",{},"synchronous"," and ",[557,562,563],{},"pure"," — it should have no side effects.",[460,566,551,568],{"id":567},"the-computecontext",[472,569,570],{},"ComputeContext",[465,572,574],{"className":467,"code":573,"language":469,"meta":470,"style":470},"interface ComputeContext {\n  fields:      Record\u003Cstring, any>   // unwrapped current field values\n  derived:     Record\u003Cstring, any>   // earlier derived values (in definition order)\n  connections: Record\u003Cstring, any>   // data from upstream tools (via consumes)\n  collections: Record\u003Cstring, any[]> // CRUD collection items\n}\n",[472,575,576,585,614,637,660,686],{"__ignoreMap":470},[475,577,578,581,583],{"class":477,"line":478},[475,579,580],{"class":525},"interface",[475,582,519],{"class":481},[475,584,489],{"class":485},[475,586,587,591,593,596,599,602,605,608,611],{"class":477,"line":492},[475,588,590],{"class":589},"swJcz","  fields",[475,592,486],{"class":485},[475,594,595],{"class":481},"      Record",[475,597,598],{"class":485},"\u003C",[475,600,601],{"class":481},"string",[475,603,604],{"class":485},",",[475,606,607],{"class":481}," any",[475,609,610],{"class":485},">",[475,612,613],{"class":532},"   // unwrapped current field values\n",[475,615,616,619,621,624,626,628,630,632,634],{"class":477,"line":502},[475,617,618],{"class":589},"  derived",[475,620,486],{"class":485},[475,622,623],{"class":481},"     Record",[475,625,598],{"class":485},[475,627,601],{"class":481},[475,629,604],{"class":485},[475,631,607],{"class":481},[475,633,610],{"class":485},[475,635,636],{"class":532},"   // earlier derived values (in definition order)\n",[475,638,639,642,644,647,649,651,653,655,657],{"class":477,"line":539},[475,640,641],{"class":589},"  connections",[475,643,486],{"class":485},[475,645,646],{"class":481}," Record",[475,648,598],{"class":485},[475,650,601],{"class":481},[475,652,604],{"class":485},[475,654,607],{"class":481},[475,656,610],{"class":485},[475,658,659],{"class":532},"   // data from upstream tools (via consumes)\n",[475,661,662,665,667,669,671,673,675,677,681,683],{"class":477,"line":545},[475,663,664],{"class":589},"  collections",[475,666,486],{"class":485},[475,668,646],{"class":481},[475,670,598],{"class":485},[475,672,601],{"class":481},[475,674,604],{"class":485},[475,676,607],{"class":481},[475,678,680],{"class":679},"sTEyZ","[]",[475,682,610],{"class":485},[475,684,685],{"class":532}," // CRUD collection items\n",[475,687,689],{"class":477,"line":688},6,[475,690,548],{"class":485},[692,693,696],"callout",{"color":694,"icon":695},"amber","i-lucide-triangle-alert",[456,697,698,701,702,705,706,709],{},[557,699,700],{},"Order matters."," Derived values are computed in the order they are defined. A derived value can reference earlier entries via ",[472,703,704],{},"derived.earlierKey",", but referencing a later key returns ",[472,707,708],{},"undefined",". Define dependencies before dependants.",[460,711,713],{"id":712},"referencing-other-derived-values","Referencing other derived values",[465,715,717],{"className":467,"code":716,"language":469,"meta":470,"style":470},"derived: {\n  // Step 1 — contributionMargin must be defined BEFORE breakEvenUnits\n  contributionMargin: {\n    compute: ({ fields }) => fields.pricePerUnit - fields.costPerUnit,\n  },\n\n  // Step 2 — can safely reference derived.contributionMargin\n  breakEvenUnits: {\n    compute: ({ fields, derived }) =>\n      derived.contributionMargin > 0\n        ? Math.ceil(fields.fixedCosts / derived.contributionMargin)\n        : Infinity,\n  },\n\n  // Step 3 — references two earlier derived values\n  profitAtForecast: {\n    compute: ({ fields, derived }) =>\n      derived.contributionMargin * fields.expectedUnits - fields.fixedCosts,\n  },\n}\n",[472,718,719,727,732,741,779,784,790,796,806,827,845,883,892,897,902,908,918,937,966,971],{"__ignoreMap":470},[475,720,721,723,725],{"class":477,"line":478},[475,722,482],{"class":481},[475,724,486],{"class":485},[475,726,489],{"class":485},[475,728,729],{"class":477,"line":492},[475,730,731],{"class":532},"  // Step 1 — contributionMargin must be defined BEFORE breakEvenUnits\n",[475,733,734,737,739],{"class":477,"line":502},[475,735,736],{"class":481},"  contributionMargin",[475,738,486],{"class":485},[475,740,489],{"class":485},[475,742,743,745,747,750,753,756,758,760,763,766,769,771,773,776],{"class":477,"line":539},[475,744,505],{"class":481},[475,746,486],{"class":485},[475,748,749],{"class":485}," ({",[475,751,752],{"class":513}," fields",[475,754,755],{"class":485}," })",[475,757,526],{"class":525},[475,759,752],{"class":679},[475,761,762],{"class":485},".",[475,764,765],{"class":679},"pricePerUnit",[475,767,768],{"class":485}," -",[475,770,752],{"class":679},[475,772,762],{"class":485},[475,774,775],{"class":679},"costPerUnit",[475,777,778],{"class":485},",\n",[475,780,781],{"class":477,"line":545},[475,782,783],{"class":485},"  },\n",[475,785,786],{"class":477,"line":688},[475,787,789],{"emptyLinePlaceholder":788},true,"\n",[475,791,793],{"class":477,"line":792},7,[475,794,795],{"class":532},"  // Step 2 — can safely reference derived.contributionMargin\n",[475,797,799,802,804],{"class":477,"line":798},8,[475,800,801],{"class":481},"  breakEvenUnits",[475,803,486],{"class":485},[475,805,489],{"class":485},[475,807,809,811,813,815,817,819,822,824],{"class":477,"line":808},9,[475,810,505],{"class":481},[475,812,486],{"class":485},[475,814,749],{"class":485},[475,816,752],{"class":513},[475,818,604],{"class":485},[475,820,821],{"class":513}," derived",[475,823,755],{"class":485},[475,825,826],{"class":525}," =>\n",[475,828,830,833,835,838,841],{"class":477,"line":829},10,[475,831,832],{"class":679},"      derived",[475,834,762],{"class":485},[475,836,837],{"class":679},"contributionMargin",[475,839,840],{"class":485}," >",[475,842,844],{"class":843},"sbssI"," 0\n",[475,846,848,851,854,856,860,863,866,868,871,874,876,878,880],{"class":477,"line":847},11,[475,849,850],{"class":485},"        ?",[475,852,853],{"class":679}," Math",[475,855,762],{"class":485},[475,857,859],{"class":858},"s2Zo4","ceil",[475,861,862],{"class":589},"(",[475,864,865],{"class":679},"fields",[475,867,762],{"class":485},[475,869,870],{"class":679},"fixedCosts",[475,872,873],{"class":485}," /",[475,875,821],{"class":679},[475,877,762],{"class":485},[475,879,837],{"class":679},[475,881,882],{"class":589},")\n",[475,884,886,889],{"class":477,"line":885},12,[475,887,888],{"class":485},"        :",[475,890,891],{"class":485}," Infinity,\n",[475,893,895],{"class":477,"line":894},13,[475,896,783],{"class":485},[475,898,900],{"class":477,"line":899},14,[475,901,789],{"emptyLinePlaceholder":788},[475,903,905],{"class":477,"line":904},15,[475,906,907],{"class":532},"  // Step 3 — references two earlier derived values\n",[475,909,911,914,916],{"class":477,"line":910},16,[475,912,913],{"class":481},"  profitAtForecast",[475,915,486],{"class":485},[475,917,489],{"class":485},[475,919,921,923,925,927,929,931,933,935],{"class":477,"line":920},17,[475,922,505],{"class":481},[475,924,486],{"class":485},[475,926,749],{"class":485},[475,928,752],{"class":513},[475,930,604],{"class":485},[475,932,821],{"class":513},[475,934,755],{"class":485},[475,936,826],{"class":525},[475,938,940,942,944,946,949,951,953,956,958,960,962,964],{"class":477,"line":939},18,[475,941,832],{"class":679},[475,943,762],{"class":485},[475,945,837],{"class":679},[475,947,948],{"class":485}," *",[475,950,752],{"class":679},[475,952,762],{"class":485},[475,954,955],{"class":679},"expectedUnits",[475,957,768],{"class":485},[475,959,752],{"class":679},[475,961,762],{"class":485},[475,963,870],{"class":679},[475,965,778],{"class":485},[475,967,969],{"class":477,"line":968},19,[475,970,783],{"class":485},[475,972,974],{"class":477,"line":973},20,[475,975,548],{"class":485},[460,977,979],{"id":978},"referencing-upstream-connections","Referencing upstream connections",[456,981,982,983,986,987,486],{},"When a tool declares ",[472,984,985],{},"consumes",", the resolved values are in ",[472,988,989],{},"ctx.connections",[465,991,993],{"className":467,"code":992,"language":469,"meta":470,"style":470},"// schema declares:\nconsumes: { pricingArpu: 'pricing.arpu' }\n\n// derived can use:\nderived: {\n  ltv: {\n    compute: ({ fields, connections }) =>\n      connections.pricingArpu\n        ? connections.pricingArpu / (fields.churnRate / 100)\n        : null,\n  },\n}\n",[472,994,995,1000,1026,1030,1035,1043,1052,1071,1081,1110,1117,1121],{"__ignoreMap":470},[475,996,997],{"class":477,"line":478},[475,998,999],{"class":532},"// schema declares:\n",[475,1001,1002,1004,1006,1008,1011,1013,1016,1020,1023],{"class":477,"line":492},[475,1003,985],{"class":481},[475,1005,486],{"class":485},[475,1007,529],{"class":485},[475,1009,1010],{"class":481}," pricingArpu",[475,1012,486],{"class":485},[475,1014,1015],{"class":485}," '",[475,1017,1019],{"class":1018},"sfazB","pricing.arpu",[475,1021,1022],{"class":485},"'",[475,1024,1025],{"class":485}," }\n",[475,1027,1028],{"class":477,"line":502},[475,1029,789],{"emptyLinePlaceholder":788},[475,1031,1032],{"class":477,"line":539},[475,1033,1034],{"class":532},"// derived can use:\n",[475,1036,1037,1039,1041],{"class":477,"line":545},[475,1038,482],{"class":481},[475,1040,486],{"class":485},[475,1042,489],{"class":485},[475,1044,1045,1048,1050],{"class":477,"line":688},[475,1046,1047],{"class":481},"  ltv",[475,1049,486],{"class":485},[475,1051,489],{"class":485},[475,1053,1054,1056,1058,1060,1062,1064,1067,1069],{"class":477,"line":792},[475,1055,505],{"class":481},[475,1057,486],{"class":485},[475,1059,749],{"class":485},[475,1061,752],{"class":513},[475,1063,604],{"class":485},[475,1065,1066],{"class":513}," connections",[475,1068,755],{"class":485},[475,1070,826],{"class":525},[475,1072,1073,1076,1078],{"class":477,"line":798},[475,1074,1075],{"class":679},"      connections",[475,1077,762],{"class":485},[475,1079,1080],{"class":679},"pricingArpu\n",[475,1082,1083,1085,1087,1089,1092,1094,1096,1098,1100,1103,1105,1108],{"class":477,"line":808},[475,1084,850],{"class":485},[475,1086,1066],{"class":679},[475,1088,762],{"class":485},[475,1090,1091],{"class":679},"pricingArpu",[475,1093,873],{"class":485},[475,1095,510],{"class":589},[475,1097,865],{"class":679},[475,1099,762],{"class":485},[475,1101,1102],{"class":679},"churnRate",[475,1104,873],{"class":485},[475,1106,1107],{"class":843}," 100",[475,1109,882],{"class":589},[475,1111,1112,1114],{"class":477,"line":829},[475,1113,888],{"class":485},[475,1115,1116],{"class":485}," null,\n",[475,1118,1119],{"class":477,"line":847},[475,1120,783],{"class":485},[475,1122,1123],{"class":477,"line":885},[475,1124,548],{"class":485},[456,1126,1127,1128,1131,1132,1134,1135,1138],{},"If the upstream tool has not yet produced data (or is not connected), ",[472,1129,1130],{},"connections.pricingArpu"," is ",[472,1133,708],{},"/",[472,1136,1137],{},"null",". Always guard against this.",[460,1140,1142],{"id":1141},"referencing-collections","Referencing collections",[465,1144,1146],{"className":467,"code":1145,"language":469,"meta":470,"style":470},"derived: {\n  interviewCount: {\n    compute: ({ collections }) => collections.interviews?.length ?? 0,\n  },\n  avgSentiment: {\n    compute: ({ collections }) => {\n      const interviews = collections.interviews ?? []\n      if (!interviews.length) return null\n      const total = interviews.reduce((sum, i) => sum + (i.sentiment ?? 0), 0)\n      return total / interviews.length\n    },\n  },\n}\n",[472,1147,1148,1156,1165,1201,1205,1214,1230,1252,1278,1338,1354,1359,1363],{"__ignoreMap":470},[475,1149,1150,1152,1154],{"class":477,"line":478},[475,1151,482],{"class":481},[475,1153,486],{"class":485},[475,1155,489],{"class":485},[475,1157,1158,1161,1163],{"class":477,"line":492},[475,1159,1160],{"class":481},"  interviewCount",[475,1162,486],{"class":485},[475,1164,489],{"class":485},[475,1166,1167,1169,1171,1173,1176,1178,1180,1182,1184,1187,1190,1193,1196,1199],{"class":477,"line":502},[475,1168,505],{"class":481},[475,1170,486],{"class":485},[475,1172,749],{"class":485},[475,1174,1175],{"class":513}," collections",[475,1177,755],{"class":485},[475,1179,526],{"class":525},[475,1181,1175],{"class":679},[475,1183,762],{"class":485},[475,1185,1186],{"class":679},"interviews",[475,1188,1189],{"class":485},"?.",[475,1191,1192],{"class":679},"length",[475,1194,1195],{"class":485}," ??",[475,1197,1198],{"class":843}," 0",[475,1200,778],{"class":485},[475,1202,1203],{"class":477,"line":539},[475,1204,783],{"class":485},[475,1206,1207,1210,1212],{"class":477,"line":545},[475,1208,1209],{"class":481},"  avgSentiment",[475,1211,486],{"class":485},[475,1213,489],{"class":485},[475,1215,1216,1218,1220,1222,1224,1226,1228],{"class":477,"line":688},[475,1217,505],{"class":481},[475,1219,486],{"class":485},[475,1221,749],{"class":485},[475,1223,1175],{"class":513},[475,1225,755],{"class":485},[475,1227,526],{"class":525},[475,1229,489],{"class":485},[475,1231,1232,1235,1238,1241,1243,1245,1247,1249],{"class":477,"line":792},[475,1233,1234],{"class":525},"      const",[475,1236,1237],{"class":679}," interviews",[475,1239,1240],{"class":485}," =",[475,1242,1175],{"class":679},[475,1244,762],{"class":485},[475,1246,1186],{"class":679},[475,1248,1195],{"class":485},[475,1250,1251],{"class":589}," []\n",[475,1253,1254,1258,1260,1263,1265,1267,1269,1272,1275],{"class":477,"line":798},[475,1255,1257],{"class":1256},"s7zQu","      if",[475,1259,510],{"class":589},[475,1261,1262],{"class":485},"!",[475,1264,1186],{"class":679},[475,1266,762],{"class":485},[475,1268,1192],{"class":679},[475,1270,1271],{"class":589},") ",[475,1273,1274],{"class":1256},"return",[475,1276,1277],{"class":485}," null\n",[475,1279,1280,1282,1285,1287,1289,1291,1294,1296,1298,1301,1303,1306,1308,1310,1313,1316,1318,1321,1323,1326,1328,1330,1332,1334,1336],{"class":477,"line":808},[475,1281,1234],{"class":525},[475,1283,1284],{"class":679}," total",[475,1286,1240],{"class":485},[475,1288,1237],{"class":679},[475,1290,762],{"class":485},[475,1292,1293],{"class":858},"reduce",[475,1295,862],{"class":589},[475,1297,862],{"class":485},[475,1299,1300],{"class":513},"sum",[475,1302,604],{"class":485},[475,1304,1305],{"class":513}," i",[475,1307,522],{"class":485},[475,1309,526],{"class":525},[475,1311,1312],{"class":679}," sum",[475,1314,1315],{"class":485}," +",[475,1317,510],{"class":589},[475,1319,1320],{"class":679},"i",[475,1322,762],{"class":485},[475,1324,1325],{"class":679},"sentiment",[475,1327,1195],{"class":485},[475,1329,1198],{"class":843},[475,1331,522],{"class":589},[475,1333,604],{"class":485},[475,1335,1198],{"class":843},[475,1337,882],{"class":589},[475,1339,1340,1343,1345,1347,1349,1351],{"class":477,"line":829},[475,1341,1342],{"class":1256},"      return",[475,1344,1284],{"class":679},[475,1346,873],{"class":485},[475,1348,1237],{"class":679},[475,1350,762],{"class":485},[475,1352,1353],{"class":679},"length\n",[475,1355,1356],{"class":477,"line":847},[475,1357,1358],{"class":485},"    },\n",[475,1360,1361],{"class":477,"line":885},[475,1362,783],{"class":485},[475,1364,1365],{"class":477,"line":894},[475,1366,548],{"class":485},[460,1368,551,1370,1373],{"id":1369},"the-deps-hint",[472,1371,1372],{},"deps"," hint",[456,1375,551,1376,1378,1379,1382,1383,1386],{},[472,1377,1372],{}," array is an optional documentation hint listing which fields/derived keys this computation reads. It has ",[557,1380,1381],{},"no effect on reactivity"," — ",[472,1384,1385],{},"useProtoDerived"," recomputes all derived values whenever any field or collection changes. Use it as a readability aid:",[465,1388,1390],{"className":467,"code":1389,"language":469,"meta":470,"style":470},"breakEvenUnits: {\n  deps: ['fixedCosts', 'contributionMargin'],\n  compute: ({ fields, derived }) => …,\n}\n",[472,1391,1392,1401,1430,1454],{"__ignoreMap":470},[475,1393,1394,1397,1399],{"class":477,"line":478},[475,1395,1396],{"class":481},"breakEvenUnits",[475,1398,486],{"class":485},[475,1400,489],{"class":485},[475,1402,1403,1406,1408,1411,1413,1415,1417,1419,1421,1423,1425,1428],{"class":477,"line":492},[475,1404,1405],{"class":481},"  deps",[475,1407,486],{"class":485},[475,1409,1410],{"class":589}," [",[475,1412,1022],{"class":485},[475,1414,870],{"class":1018},[475,1416,1022],{"class":485},[475,1418,604],{"class":485},[475,1420,1015],{"class":485},[475,1422,837],{"class":1018},[475,1424,1022],{"class":485},[475,1426,1427],{"class":589},"]",[475,1429,778],{"class":485},[475,1431,1432,1435,1437,1439,1441,1443,1445,1447,1449,1452],{"class":477,"line":502},[475,1433,1434],{"class":481},"  compute",[475,1436,486],{"class":485},[475,1438,749],{"class":485},[475,1440,752],{"class":513},[475,1442,604],{"class":485},[475,1444,821],{"class":513},[475,1446,755],{"class":485},[475,1448,526],{"class":525},[475,1450,1451],{"class":589}," …",[475,1453,778],{"class":485},[475,1455,1456],{"class":477,"line":539},[475,1457,548],{"class":485},[460,1459,1461],{"id":1460},"formatting","Formatting",[456,1463,551,1464,1467],{},[472,1465,1466],{},"format"," property controls how the value is displayed in results and stat cards. It is purely presentational — the raw computed value is stored and used in subsequent computations.",[465,1469,1471],{"className":467,"code":1470,"language":469,"meta":470,"style":470},"derived: {\n  monthlyBurn: {\n    compute: ({ fields }) => fields.rent + fields.salaries + fields.software,\n    format: { type: 'money', currency: '€', decimals: 0 },\n  },\n  runwayMonths: {\n    compute: ({ fields, derived }) =>\n      derived.monthlyBurn > 0\n        ? Math.floor(fields.totalFunds / derived.monthlyBurn)\n        : Infinity,\n    format: { type: 'number', decimals: 0, suffix: ' months' },\n  },\n  runwayDate: {\n    compute: ({ derived }) => {\n      if (!isFinite(derived.runwayMonths)) return null\n      const d = new Date()\n      d.setMonth(d.getMonth() + derived.runwayMonths)\n      return d.toISOString().split('T')[0]\n    },\n    format: { type: 'date' },\n  },\n}\n",[472,1472,1473,1481,1490,1531,1577,1581,1590,1608,1621,1651,1657,1700,1704,1713,1729,1756,1774,1808,1845,1849,1870,1875],{"__ignoreMap":470},[475,1474,1475,1477,1479],{"class":477,"line":478},[475,1476,482],{"class":481},[475,1478,486],{"class":485},[475,1480,489],{"class":485},[475,1482,1483,1486,1488],{"class":477,"line":492},[475,1484,1485],{"class":481},"  monthlyBurn",[475,1487,486],{"class":485},[475,1489,489],{"class":485},[475,1491,1492,1494,1496,1498,1500,1502,1504,1506,1508,1511,1513,1515,1517,1520,1522,1524,1526,1529],{"class":477,"line":502},[475,1493,505],{"class":481},[475,1495,486],{"class":485},[475,1497,749],{"class":485},[475,1499,752],{"class":513},[475,1501,755],{"class":485},[475,1503,526],{"class":525},[475,1505,752],{"class":679},[475,1507,762],{"class":485},[475,1509,1510],{"class":679},"rent",[475,1512,1315],{"class":485},[475,1514,752],{"class":679},[475,1516,762],{"class":485},[475,1518,1519],{"class":679},"salaries",[475,1521,1315],{"class":485},[475,1523,752],{"class":679},[475,1525,762],{"class":485},[475,1527,1528],{"class":679},"software",[475,1530,778],{"class":485},[475,1532,1533,1536,1538,1540,1543,1545,1547,1550,1552,1554,1557,1559,1561,1564,1566,1568,1571,1573,1575],{"class":477,"line":539},[475,1534,1535],{"class":481},"    format",[475,1537,486],{"class":485},[475,1539,529],{"class":485},[475,1541,1542],{"class":481}," type",[475,1544,486],{"class":485},[475,1546,1015],{"class":485},[475,1548,1549],{"class":1018},"money",[475,1551,1022],{"class":485},[475,1553,604],{"class":485},[475,1555,1556],{"class":481}," currency",[475,1558,486],{"class":485},[475,1560,1015],{"class":485},[475,1562,1563],{"class":1018},"€",[475,1565,1022],{"class":485},[475,1567,604],{"class":485},[475,1569,1570],{"class":481}," decimals",[475,1572,486],{"class":485},[475,1574,1198],{"class":843},[475,1576,536],{"class":485},[475,1578,1579],{"class":477,"line":545},[475,1580,783],{"class":485},[475,1582,1583,1586,1588],{"class":477,"line":688},[475,1584,1585],{"class":481},"  runwayMonths",[475,1587,486],{"class":485},[475,1589,489],{"class":485},[475,1591,1592,1594,1596,1598,1600,1602,1604,1606],{"class":477,"line":792},[475,1593,505],{"class":481},[475,1595,486],{"class":485},[475,1597,749],{"class":485},[475,1599,752],{"class":513},[475,1601,604],{"class":485},[475,1603,821],{"class":513},[475,1605,755],{"class":485},[475,1607,826],{"class":525},[475,1609,1610,1612,1614,1617,1619],{"class":477,"line":798},[475,1611,832],{"class":679},[475,1613,762],{"class":485},[475,1615,1616],{"class":679},"monthlyBurn",[475,1618,840],{"class":485},[475,1620,844],{"class":843},[475,1622,1623,1625,1627,1629,1632,1634,1636,1638,1641,1643,1645,1647,1649],{"class":477,"line":808},[475,1624,850],{"class":485},[475,1626,853],{"class":679},[475,1628,762],{"class":485},[475,1630,1631],{"class":858},"floor",[475,1633,862],{"class":589},[475,1635,865],{"class":679},[475,1637,762],{"class":485},[475,1639,1640],{"class":679},"totalFunds",[475,1642,873],{"class":485},[475,1644,821],{"class":679},[475,1646,762],{"class":485},[475,1648,1616],{"class":679},[475,1650,882],{"class":589},[475,1652,1653,1655],{"class":477,"line":829},[475,1654,888],{"class":485},[475,1656,891],{"class":485},[475,1658,1659,1661,1663,1665,1667,1669,1671,1674,1676,1678,1680,1682,1684,1686,1689,1691,1693,1696,1698],{"class":477,"line":847},[475,1660,1535],{"class":481},[475,1662,486],{"class":485},[475,1664,529],{"class":485},[475,1666,1542],{"class":481},[475,1668,486],{"class":485},[475,1670,1015],{"class":485},[475,1672,1673],{"class":1018},"number",[475,1675,1022],{"class":485},[475,1677,604],{"class":485},[475,1679,1570],{"class":481},[475,1681,486],{"class":485},[475,1683,1198],{"class":843},[475,1685,604],{"class":485},[475,1687,1688],{"class":481}," suffix",[475,1690,486],{"class":485},[475,1692,1015],{"class":485},[475,1694,1695],{"class":1018}," months",[475,1697,1022],{"class":485},[475,1699,536],{"class":485},[475,1701,1702],{"class":477,"line":885},[475,1703,783],{"class":485},[475,1705,1706,1709,1711],{"class":477,"line":894},[475,1707,1708],{"class":481},"  runwayDate",[475,1710,486],{"class":485},[475,1712,489],{"class":485},[475,1714,1715,1717,1719,1721,1723,1725,1727],{"class":477,"line":899},[475,1716,505],{"class":481},[475,1718,486],{"class":485},[475,1720,749],{"class":485},[475,1722,821],{"class":513},[475,1724,755],{"class":485},[475,1726,526],{"class":525},[475,1728,489],{"class":485},[475,1730,1731,1733,1735,1737,1740,1742,1744,1746,1749,1752,1754],{"class":477,"line":904},[475,1732,1257],{"class":1256},[475,1734,510],{"class":589},[475,1736,1262],{"class":485},[475,1738,1739],{"class":858},"isFinite",[475,1741,862],{"class":589},[475,1743,482],{"class":679},[475,1745,762],{"class":485},[475,1747,1748],{"class":679},"runwayMonths",[475,1750,1751],{"class":589},")) ",[475,1753,1274],{"class":1256},[475,1755,1277],{"class":485},[475,1757,1758,1760,1763,1765,1768,1771],{"class":477,"line":910},[475,1759,1234],{"class":525},[475,1761,1762],{"class":679}," d",[475,1764,1240],{"class":485},[475,1766,1767],{"class":485}," new",[475,1769,1770],{"class":858}," Date",[475,1772,1773],{"class":589},"()\n",[475,1775,1776,1779,1781,1784,1786,1789,1791,1794,1797,1800,1802,1804,1806],{"class":477,"line":920},[475,1777,1778],{"class":679},"      d",[475,1780,762],{"class":485},[475,1782,1783],{"class":858},"setMonth",[475,1785,862],{"class":589},[475,1787,1788],{"class":679},"d",[475,1790,762],{"class":485},[475,1792,1793],{"class":858},"getMonth",[475,1795,1796],{"class":589},"() ",[475,1798,1799],{"class":485},"+",[475,1801,821],{"class":679},[475,1803,762],{"class":485},[475,1805,1748],{"class":679},[475,1807,882],{"class":589},[475,1809,1810,1812,1814,1816,1819,1822,1824,1827,1829,1831,1834,1836,1839,1842],{"class":477,"line":939},[475,1811,1342],{"class":1256},[475,1813,1762],{"class":679},[475,1815,762],{"class":485},[475,1817,1818],{"class":858},"toISOString",[475,1820,1821],{"class":589},"()",[475,1823,762],{"class":485},[475,1825,1826],{"class":858},"split",[475,1828,862],{"class":589},[475,1830,1022],{"class":485},[475,1832,1833],{"class":1018},"T",[475,1835,1022],{"class":485},[475,1837,1838],{"class":589},")[",[475,1840,1841],{"class":843},"0",[475,1843,1844],{"class":589},"]\n",[475,1846,1847],{"class":477,"line":968},[475,1848,1358],{"class":485},[475,1850,1851,1853,1855,1857,1859,1861,1863,1866,1868],{"class":477,"line":973},[475,1852,1535],{"class":481},[475,1854,486],{"class":485},[475,1856,529],{"class":485},[475,1858,1542],{"class":481},[475,1860,486],{"class":485},[475,1862,1015],{"class":485},[475,1864,1865],{"class":1018},"date",[475,1867,1022],{"class":485},[475,1869,536],{"class":485},[475,1871,1873],{"class":477,"line":1872},21,[475,1874,783],{"class":485},[475,1876,1878],{"class":477,"line":1877},22,[475,1879,548],{"class":485},[1881,1882,1884],"h3",{"id":1883},"available-format-types","Available format types",[1886,1887,1888,1906],"table",{},[1889,1890,1891],"thead",{},[1892,1893,1894,1900,1903],"tr",{},[1895,1896,1897],"th",{},[472,1898,1899],{},"type",[1895,1901,1902],{},"Input",[1895,1904,1905],{},"Example output",[1907,1908,1909,1926,1943,1959,1974],"tbody",{},[1892,1910,1911,1917,1921],{},[1912,1913,1914],"td",{},[472,1915,1916],{},"'money'",[1912,1918,1919],{},[472,1920,1673],{},[1912,1922,1923],{},[472,1924,1925],{},"€ 12,345",[1892,1927,1928,1933,1938],{},[1912,1929,1930],{},[472,1931,1932],{},"'percent'",[1912,1934,1935,1937],{},[472,1936,1673],{}," (0–100)",[1912,1939,1940],{},[472,1941,1942],{},"23.5 %",[1892,1944,1945,1950,1954],{},[1912,1946,1947],{},[472,1948,1949],{},"'number'",[1912,1951,1952],{},[472,1953,1673],{},[1912,1955,1956],{},[472,1957,1958],{},"1,234",[1892,1960,1961,1966,1969],{},[1912,1962,1963],{},[472,1964,1965],{},"'date'",[1912,1967,1968],{},"ISO string",[1912,1970,1971],{},[472,1972,1973],{},"Mar 2026",[1892,1975,1976,1981,1985],{},[1912,1977,1978],{},[472,1979,1980],{},"'text'",[1912,1982,1983],{},[472,1984,601],{},[1912,1986,1987],{},"as-is",[456,1989,1990,1991,1994,1995,1994,1998,1994,2001,762],{},"Format options: ",[472,1992,1993],{},"currency",", ",[472,1996,1997],{},"decimals",[472,1999,2000],{},"prefix",[472,2002,2003],{},"suffix",[460,2005,2007,2008],{"id":2006},"using-derived-values-in-results","Using derived values in ",[472,2009,2010],{},"results",[456,2012,2013,2014,560,2017,2020,2021,2023],{},"Both ",[472,2015,2016],{},"results.badge",[472,2018,2019],{},"results.stats"," receive the full ",[472,2022,570],{},", so derived values are directly accessible:",[465,2025,2027],{"className":467,"code":2026,"language":469,"meta":470,"style":470},"results: {\n  badge: ({ derived }) =>\n    derived.ltvCacRatio >= 3\n      ? { label: 'Healthy LTV:CAC', color: 'success' }\n      : { label: 'LTV:CAC Too Low', color: 'error' },\n\n  stats: ({ derived }) => [\n    { label: 'LTV',         value: derived.ltv,         format: 'money' },\n    { label: 'CAC',         value: derived.cac,          format: 'money' },\n    { label: 'LTV:CAC',     value: derived.ltvCacRatio,  format: 'number' },\n  ],\n}\n",[472,2028,2029,2037,2052,2068,2103,2136,2140,2158,2203,2246,2289,2296],{"__ignoreMap":470},[475,2030,2031,2033,2035],{"class":477,"line":478},[475,2032,2010],{"class":481},[475,2034,486],{"class":485},[475,2036,489],{"class":485},[475,2038,2039,2042,2044,2046,2048,2050],{"class":477,"line":492},[475,2040,2041],{"class":481},"  badge",[475,2043,486],{"class":485},[475,2045,749],{"class":485},[475,2047,821],{"class":513},[475,2049,755],{"class":485},[475,2051,826],{"class":525},[475,2053,2054,2057,2059,2062,2065],{"class":477,"line":502},[475,2055,2056],{"class":679},"    derived",[475,2058,762],{"class":485},[475,2060,2061],{"class":679},"ltvCacRatio",[475,2063,2064],{"class":485}," >=",[475,2066,2067],{"class":843}," 3\n",[475,2069,2070,2073,2075,2078,2080,2082,2085,2087,2089,2092,2094,2096,2099,2101],{"class":477,"line":539},[475,2071,2072],{"class":485},"      ?",[475,2074,529],{"class":485},[475,2076,2077],{"class":589}," label",[475,2079,486],{"class":485},[475,2081,1015],{"class":485},[475,2083,2084],{"class":1018},"Healthy LTV:CAC",[475,2086,1022],{"class":485},[475,2088,604],{"class":485},[475,2090,2091],{"class":589}," color",[475,2093,486],{"class":485},[475,2095,1015],{"class":485},[475,2097,2098],{"class":1018},"success",[475,2100,1022],{"class":485},[475,2102,1025],{"class":485},[475,2104,2105,2108,2110,2112,2114,2116,2119,2121,2123,2125,2127,2129,2132,2134],{"class":477,"line":545},[475,2106,2107],{"class":485},"      :",[475,2109,529],{"class":485},[475,2111,2077],{"class":589},[475,2113,486],{"class":485},[475,2115,1015],{"class":485},[475,2117,2118],{"class":1018},"LTV:CAC Too Low",[475,2120,1022],{"class":485},[475,2122,604],{"class":485},[475,2124,2091],{"class":589},[475,2126,486],{"class":485},[475,2128,1015],{"class":485},[475,2130,2131],{"class":1018},"error",[475,2133,1022],{"class":485},[475,2135,536],{"class":485},[475,2137,2138],{"class":477,"line":688},[475,2139,789],{"emptyLinePlaceholder":788},[475,2141,2142,2145,2147,2149,2151,2153,2155],{"class":477,"line":792},[475,2143,2144],{"class":481},"  stats",[475,2146,486],{"class":485},[475,2148,749],{"class":485},[475,2150,821],{"class":513},[475,2152,755],{"class":485},[475,2154,526],{"class":525},[475,2156,2157],{"class":589}," [\n",[475,2159,2160,2163,2165,2167,2169,2172,2174,2176,2179,2181,2183,2185,2188,2190,2193,2195,2197,2199,2201],{"class":477,"line":798},[475,2161,2162],{"class":485},"    {",[475,2164,2077],{"class":589},[475,2166,486],{"class":485},[475,2168,1015],{"class":485},[475,2170,2171],{"class":1018},"LTV",[475,2173,1022],{"class":485},[475,2175,604],{"class":485},[475,2177,2178],{"class":589},"         value",[475,2180,486],{"class":485},[475,2182,821],{"class":679},[475,2184,762],{"class":485},[475,2186,2187],{"class":679},"ltv",[475,2189,604],{"class":485},[475,2191,2192],{"class":589},"         format",[475,2194,486],{"class":485},[475,2196,1015],{"class":485},[475,2198,1549],{"class":1018},[475,2200,1022],{"class":485},[475,2202,536],{"class":485},[475,2204,2205,2207,2209,2211,2213,2216,2218,2220,2222,2224,2226,2228,2231,2233,2236,2238,2240,2242,2244],{"class":477,"line":808},[475,2206,2162],{"class":485},[475,2208,2077],{"class":589},[475,2210,486],{"class":485},[475,2212,1015],{"class":485},[475,2214,2215],{"class":1018},"CAC",[475,2217,1022],{"class":485},[475,2219,604],{"class":485},[475,2221,2178],{"class":589},[475,2223,486],{"class":485},[475,2225,821],{"class":679},[475,2227,762],{"class":485},[475,2229,2230],{"class":679},"cac",[475,2232,604],{"class":485},[475,2234,2235],{"class":589},"          format",[475,2237,486],{"class":485},[475,2239,1015],{"class":485},[475,2241,1549],{"class":1018},[475,2243,1022],{"class":485},[475,2245,536],{"class":485},[475,2247,2248,2250,2252,2254,2256,2259,2261,2263,2266,2268,2270,2272,2274,2276,2279,2281,2283,2285,2287],{"class":477,"line":829},[475,2249,2162],{"class":485},[475,2251,2077],{"class":589},[475,2253,486],{"class":485},[475,2255,1015],{"class":485},[475,2257,2258],{"class":1018},"LTV:CAC",[475,2260,1022],{"class":485},[475,2262,604],{"class":485},[475,2264,2265],{"class":589},"     value",[475,2267,486],{"class":485},[475,2269,821],{"class":679},[475,2271,762],{"class":485},[475,2273,2061],{"class":679},[475,2275,604],{"class":485},[475,2277,2278],{"class":589},"  format",[475,2280,486],{"class":485},[475,2282,1015],{"class":485},[475,2284,1673],{"class":1018},[475,2286,1022],{"class":485},[475,2288,536],{"class":485},[475,2290,2291,2294],{"class":477,"line":847},[475,2292,2293],{"class":589},"  ]",[475,2295,778],{"class":485},[475,2297,2298],{"class":477,"line":885},[475,2299,548],{"class":485},[460,2301,2007,2303],{"id":2302},"using-derived-values-in-produces",[472,2304,2305],{},"produces",[456,2307,2308],{},"Reference derived values to export them to downstream tools:",[465,2310,2312],{"className":467,"code":2311,"language":469,"meta":470,"style":470},"produces: {\n  arpu:          'derived.arpu',\n  mrrProjection: 'derived.mrrProjection',\n}\n",[472,2313,2314,2322,2339,2355],{"__ignoreMap":470},[475,2315,2316,2318,2320],{"class":477,"line":478},[475,2317,2305],{"class":481},[475,2319,486],{"class":485},[475,2321,489],{"class":485},[475,2323,2324,2327,2329,2332,2335,2337],{"class":477,"line":492},[475,2325,2326],{"class":481},"  arpu",[475,2328,486],{"class":485},[475,2330,2331],{"class":485},"          '",[475,2333,2334],{"class":1018},"derived.arpu",[475,2336,1022],{"class":485},[475,2338,778],{"class":485},[475,2340,2341,2344,2346,2348,2351,2353],{"class":477,"line":502},[475,2342,2343],{"class":481},"  mrrProjection",[475,2345,486],{"class":485},[475,2347,1015],{"class":485},[475,2349,2350],{"class":1018},"derived.mrrProjection",[475,2352,1022],{"class":485},[475,2354,778],{"class":485},[475,2356,2357],{"class":477,"line":539},[475,2358,548],{"class":485},[456,2360,2361,2362,2365,2366,2369],{},"The string format is ",[472,2363,2364],{},"'derived.keyName'"," — the ",[472,2367,2368],{},"'derived.'"," prefix is required for the resolver to distinguish it from raw field values.",[2371,2372,2373],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html 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":470,"searchDepth":492,"depth":492,"links":2375},[2376,2377,2379,2380,2381,2382,2384,2387,2389],{"id":462,"depth":492,"text":463},{"id":567,"depth":492,"text":2378},"The ComputeContext",{"id":712,"depth":492,"text":713},{"id":978,"depth":492,"text":979},{"id":1141,"depth":492,"text":1142},{"id":1369,"depth":492,"text":2383},"The deps hint",{"id":1460,"depth":492,"text":1461,"children":2385},[2386],{"id":1883,"depth":502,"text":1884},{"id":2006,"depth":492,"text":2388},"Using derived values in results",{"id":2302,"depth":492,"text":2390},"Using derived values in produces","Derived values are pure functions computed reactively from field values, other derived values, upstream connections, and collection items.","md",null,{},{"title":370},{"title":447,"description":2391},"JNIIXhq_0ks7mXsXrmxGvCtqVBhY3bqd62t1Iyw2ACM",[2399,2401],{"title":366,"path":367,"stem":368,"description":2400,"children":-1},"Collections model CRUD lists of structured items. They map to Y.Arrays for offline-capable persistence with search, sort, modal/inline editing, and preset packs.",{"title":374,"path":375,"stem":376,"description":2402,"children":-1},"The produces/consumes system lets tools share computed data without tight coupling, forming a reactive data graph across your entire application.",1772977476262]