[{"data":1,"prerenderedAt":1398},["ShallowReactive",2],{"content-\u002Fdocs\u002Freading-the-form\u002Ffields":3},{"id":4,"title":5,"body":6,"description":1378,"extension":1379,"meta":1380,"metaRows":1381,"navigation":166,"path":1393,"seo":1394,"source":1395,"stem":1396,"__hash__":1397},"docs\u002Fdocs\u002Freading-the-form\u002Ffields.md","fields",{"type":7,"value":8,"toc":1362},"minimark",[9,15,22,25,50,54,59,69,207,240,248,254,282,293,314,331,335,350,385,389,396,400,403,606,610,613,664,668,671,837,841,852,896,928,932,935,1082,1093,1174,1178,1187,1255,1263,1267,1358],[10,11,12],"h1",{"id":5},[13,14,5],"code",{},[16,17,18],"blockquote",{},[19,20,21],"p",{},"A reactive Proxy keyed by schema paths. Every leaf surfaces a 31-property FieldState: state bits, value reads, validation reads, DOM handles, and schema metadata, all in one snapshot the form keeps in sync as users interact.",[23,24],"docs-meta-table",{},[19,26,27,30,31,38,39,42,43,45,46,49],{},[13,28,29],{},"form.fields.\u003Cpath>"," is the per-leaf companion to ",[32,33,35],"a",{"href":34},"\u002Fdocs\u002Freading-the-form\u002Fvalues",[13,36,37],{},"form.values.\u003Cpath>",". Where ",[13,40,41],{},"values"," answers \"what's at this path?\", ",[13,44,5],{}," answers everything else: has the user touched it, is it focused, is it dirty, what errors does it carry, should we be showing them yet, which DOM element is bound. Type into the email input, blur it, refocus, submit. Every cell in the demo's panel updates live, and the schema metadata at the bottom comes from ",[13,47,48],{},"withMeta(...)"," on the schema itself.",[51,52],"docs-demo",{"label":53,"slug":5},"Field State Demo",[55,56,58],"h2",{"id":57},"drillable-proxy","Drillable Proxy",[19,60,61,64,65,68],{},[13,62,63],{},"form.fields"," mirrors ",[13,66,67],{},"form.values","' shape: a Proxy keyed by schema paths. Reach any leaf:",[70,71,76],"pre",{"className":72,"code":73,"language":74,"meta":75,"style":75},"language-ts shiki shiki-themes github-light github-dark","const schema = z.object({\n  profile: z.object({\n    name: z.string(),\n    email: z.email(),\n  }),\n  age: z.number(),\n})\n\nconst form = useForm({ schema })\n\nform.fields.profile.name.touched\nform.fields.profile.email.firstError?.message\nform.fields.age.dirty\n","ts","",[13,77,78,105,115,127,138,144,155,161,168,184,189,195,201],{"__ignoreMap":75},[79,80,83,87,91,94,98,102],"span",{"class":81,"line":82},"line",1,[79,84,86],{"class":85},"szBVR","const",[79,88,90],{"class":89},"sj4cs"," schema",[79,92,93],{"class":85}," =",[79,95,97],{"class":96},"sVt8B"," z.",[79,99,101],{"class":100},"sScJk","object",[79,103,104],{"class":96},"({\n",[79,106,108,111,113],{"class":81,"line":107},2,[79,109,110],{"class":96},"  profile: z.",[79,112,101],{"class":100},[79,114,104],{"class":96},[79,116,118,121,124],{"class":81,"line":117},3,[79,119,120],{"class":96},"    name: z.",[79,122,123],{"class":100},"string",[79,125,126],{"class":96},"(),\n",[79,128,130,133,136],{"class":81,"line":129},4,[79,131,132],{"class":96},"    email: z.",[79,134,135],{"class":100},"email",[79,137,126],{"class":96},[79,139,141],{"class":81,"line":140},5,[79,142,143],{"class":96},"  }),\n",[79,145,147,150,153],{"class":81,"line":146},6,[79,148,149],{"class":96},"  age: z.",[79,151,152],{"class":100},"number",[79,154,126],{"class":96},[79,156,158],{"class":81,"line":157},7,[79,159,160],{"class":96},"})\n",[79,162,164],{"class":81,"line":163},8,[79,165,167],{"emptyLinePlaceholder":166},true,"\n",[79,169,171,173,176,178,181],{"class":81,"line":170},9,[79,172,86],{"class":85},[79,174,175],{"class":89}," form",[79,177,93],{"class":85},[79,179,180],{"class":100}," useForm",[79,182,183],{"class":96},"({ schema })\n",[79,185,187],{"class":81,"line":186},10,[79,188,167],{"emptyLinePlaceholder":166},[79,190,192],{"class":81,"line":191},11,[79,193,194],{"class":96},"form.fields.profile.name.touched\n",[79,196,198],{"class":81,"line":197},12,[79,199,200],{"class":96},"form.fields.profile.email.firstError?.message\n",[79,202,204],{"class":81,"line":203},13,[79,205,206],{"class":96},"form.fields.age.dirty\n",[19,208,209,210,213,214,217,218,221,222,225,226,228,229,232,233,236,237,239],{},"Container paths (",[13,211,212],{},"form.fields.profile",") keep drilling: a container is a navigation node, not a FieldState, so it carries no ",[13,215,216],{},"dirty"," or ",[13,219,220],{},"errors"," of its own on the dot surface. When you want a container's rolled-up state, call it. ",[13,223,224],{},"form.fields('profile')"," returns a FieldState whose ",[13,227,216],{}," is ",[13,230,231],{},"true"," if any leaf under ",[13,234,235],{},"profile"," is dirty, and whose ",[13,238,220],{}," flatten every descendant error.",[241,242,244,245],"h3",{"id":243},"absence-reads-undefined","Absence reads ",[13,246,247],{},"undefined",[19,249,250,251,253],{},"Dot and index access is pure navigation, so a node that isn't there right now reads ",[13,252,247],{},", never a phantom you can keep chaining off. Three hops are dynamic, where the live shape decides whether the node exists:",[255,256,257,265,271],"ul",{},[258,259,260,261,264],"li",{},"an out-of-bounds array index, ",[13,262,263],{},"form.fields.tags[99]",",",[258,266,267,268,264],{},"a record key the data doesn't hold, ",[13,269,270],{},"form.fields.byId.missing",[258,272,273,274,277,278,281],{},"a discriminated-union key whose variant isn't active, ",[13,275,276],{},"form.fields.cargo.permitNumber"," while the ",[13,279,280],{},"general"," variant is live.",[19,283,284,285,288,289,292],{},"The types say exactly what the runtime does. Each dynamic hop is ",[13,286,287],{},"FieldState\u003CT> | undefined",", so TypeScript asks for a ",[13,290,291],{},"?."," right where a read might come back empty, and a truthy check never lies:",[70,294,296],{"className":72,"code":295,"language":74,"meta":75,"style":75},"form.fields.tags[0]?.value\nform.fields.cargo.permitNumber?.firstError?.message\n",[13,297,298,309],{"__ignoreMap":75},[79,299,300,303,306],{"class":81,"line":82},[79,301,302],{"class":96},"form.fields.tags[",[79,304,305],{"class":89},"0",[79,307,308],{"class":96},"]?.value\n",[79,310,311],{"class":81,"line":107},[79,312,313],{"class":96},"form.fields.cargo.permitNumber?.firstError?.message\n",[19,315,316,317,320,321,324,325,228,328,330],{},"A declared ",[13,318,319],{},"optional"," field is always present, because the schema names it: ",[13,322,323],{},"form.fields.profile.nickname.value"," is a real FieldState whose ",[13,326,327],{},"value",[13,329,247],{},", not an absent node. Register it, read it, reveal it, no guard required.",[241,332,334],{"id":333},"a-whole-array-binding-reads-through-the-call-form","A whole-array binding reads through the call-form",[19,336,337,338,341,342,345,346,349],{},"Point one ",[13,339,340],{},"register"," at an ",[13,343,344],{},"\u003Cinput type=\"file\" multiple>"," and it writes the entire ",[13,347,348],{},"File[]"," through a single array path. The dot surface descends into elements, so that array field's own busy and transform state reads through the call-form:",[70,351,353],{"className":72,"code":352,"language":74,"meta":75,"style":75},"form.fields('links').busy\nform.fields('links').transformError\n",[13,354,355,372],{"__ignoreMap":75},[79,356,357,360,362,365,369],{"class":81,"line":82},[79,358,359],{"class":96},"form.",[79,361,5],{"class":100},[79,363,364],{"class":96},"(",[79,366,368],{"class":367},"sZZnC","'links'",[79,370,371],{"class":96},").busy\n",[79,373,374,376,378,380,382],{"class":81,"line":107},[79,375,359],{"class":96},[79,377,5],{"class":100},[79,379,364],{"class":96},[79,381,368],{"class":367},[79,383,384],{"class":96},").transformError\n",[55,386,388],{"id":387},"what-fieldstate-carries","What FieldState carries",[19,390,391,392,395],{},"Each leaf exposes a 31-property ",[13,393,394],{},"FieldState"," object. The properties fall into five jobs:",[241,397,399],{"id":398},"state-bits","State bits",[19,401,402],{},"The reactive lifecycle of a field: how it got here, what it's doing now.",[404,405,406,422],"table",{},[407,408,409],"thead",{},[410,411,412,416,419],"tr",{},[413,414,415],"th",{},"Property",[413,417,418],{},"Type",[413,420,421],{},"Meaning",[423,424,425,443,459,480,498,514,534,550,568,588],"tbody",{},[410,426,427,433,438],{},[428,429,430],"td",{},[13,431,432],{},"pristine",[428,434,435],{},[13,436,437],{},"boolean",[428,439,440,442],{},[13,441,231],{}," until the value diverges from the original.",[410,444,445,449,453],{},[428,446,447],{},[13,448,216],{},[428,450,451],{},[13,452,437],{},[428,454,455,456,458],{},"Inverse of ",[13,457,432],{},".",[410,460,461,466,471],{},[428,462,463],{},[13,464,465],{},"focused",[428,467,468],{},[13,469,470],{},"boolean | null",[428,472,473,475,476,479],{},[13,474,231],{}," while the element is focused; ",[13,477,478],{},"null"," while disconnected.",[410,481,482,487,491],{},[428,483,484],{},[13,485,486],{},"blurred",[428,488,489],{},[13,490,470],{},[428,492,455,493,495,496,479],{},[13,494,465],{}," when connected; ",[13,497,478],{},[410,499,500,505,509],{},[428,501,502],{},[13,503,504],{},"touched",[428,506,507],{},[13,508,437],{},[428,510,511,513],{},[13,512,231],{}," after the first blur; survives reset cycles.",[410,515,516,521,525],{},[428,517,518],{},[13,519,520],{},"interacted",[428,522,523],{},[13,524,437],{},[428,526,527,529,530,533],{},[13,528,231],{}," after the user's first value edit through ",[13,531,532],{},"v-register","; survives reset cycles.",[410,535,536,541,545],{},[428,537,538],{},[13,539,540],{},"blurredAfterInteraction",[428,542,543],{},[13,544,437],{},[428,546,547,549],{},[13,548,231],{}," after the first blur that follows an edit (edited, then left); drives the default error-reveal gate.",[410,551,552,557,561],{},[428,553,554],{},[13,555,556],{},"connected",[428,558,559],{},[13,560,437],{},[428,562,563,565,566,458],{},[13,564,231],{}," while at least one element is bound via ",[13,567,532],{},[410,569,570,575,579],{},[428,571,572],{},[13,573,574],{},"blank",[428,576,577],{},[13,578,437],{},[428,580,581,583,584,458],{},[13,582,231],{}," while the leaf reads as empty per the ",[32,585,587],{"href":586},"\u002Fdocs\u002Fvalidation\u002Fshowing-errors","blank predicate",[410,589,590,595,600],{},[428,591,592],{},[13,593,594],{},"updatedAt",[428,596,597],{},[13,598,599],{},"string | null",[428,601,602,603,605],{},"ISO timestamp of the last write; ",[13,604,478],{}," until first write.",[241,607,609],{"id":608},"value-reads","Value reads",[19,611,612],{},"The data sitting at this path right now, and what it was at hydration.",[404,614,615,625],{},[407,616,617],{},[410,618,619,621,623],{},[413,620,415],{},[413,622,418],{},[413,624,421],{},[423,626,627,644],{},[410,628,629,633,638],{},[428,630,631],{},[13,632,327],{},[428,634,635],{},[13,636,637],{},"T",[428,639,640,641,643],{},"Current leaf value (same as ",[13,642,37],{},").",[410,645,646,651,655],{},[428,647,648],{},[13,649,650],{},"original",[428,652,653],{},[13,654,637],{},[428,656,657,658,660,661,458],{},"Hydration-time value; ",[13,659,216],{}," flips when ",[13,662,663],{},"value !== original",[241,665,667],{"id":666},"validation-reads","Validation reads",[19,669,670],{},"The error surface at this path: raw, ergonomic, and gated.",[404,672,673,683],{},[407,674,675],{},[410,676,677,679,681],{},[413,678,415],{},[413,680,418],{},[413,682,421],{},[423,684,685,699,717,733,749,769,786,803,820],{},[410,686,687,691,696],{},[428,688,689],{},[13,690,220],{},[428,692,693],{},[13,694,695],{},"readonly ValidationError[]",[428,697,698],{},"Every error at this path, schema-declaration order.",[410,700,701,706,711],{},[428,702,703],{},[13,704,705],{},"firstError",[428,707,708],{},[13,709,710],{},"ValidationError | undefined",[428,712,713,714,458],{},"Sugar for ",[13,715,716],{},"errors[0]",[410,718,719,724,728],{},[428,720,721],{},[13,722,723],{},"valid",[428,725,726],{},[13,727,437],{},[428,729,730,458],{},[13,731,732],{},"errors.length === 0 && !validating",[410,734,735,740,744],{},[428,736,737],{},[13,738,739],{},"validating",[428,741,742],{},[13,743,437],{},[428,745,746,748],{},[13,747,231],{}," while a per-field validation run is in flight.",[410,750,751,756,761],{},[428,752,753],{},[13,754,755],{},"displayState",[428,757,758],{},[13,759,760],{},"'idle' | 'pending' | 'error' | 'success'",[428,762,763,764,458],{},"The single display-state verdict, resolved by ",[32,765,766],{"href":586},[13,767,768],{},"getDisplayState",[410,770,771,776,780],{},[428,772,773],{},[13,774,775],{},"showErrors",[428,777,778],{},[13,779,437],{},[428,781,782,785],{},[13,783,784],{},"displayState === 'error'",". The display-time error gate.",[410,787,788,793,797],{},[428,789,790],{},[13,791,792],{},"showPending",[428,794,795],{},[13,796,437],{},[428,798,799,802],{},[13,800,801],{},"displayState === 'pending'",". A check has run long enough to earn a spinner.",[410,804,805,810,814],{},[428,806,807],{},[13,808,809],{},"showSuccess",[428,811,812],{},[13,813,437],{},[428,815,816,819],{},[13,817,818],{},"displayState === 'success'",". The field has passed.",[410,821,822,827,831],{},[428,823,824],{},[13,825,826],{},"showIdle",[428,828,829],{},[13,830,437],{},[428,832,833,836],{},[13,834,835],{},"displayState === 'idle'",". Nothing to surface yet.",[241,838,840],{"id":839},"dom-reads","DOM reads",[19,842,843,844,847,848,851],{},"Direct handles to the bound elements for imperative work: ",[13,845,846],{},"focus()",", ",[13,849,850],{},"scrollIntoView()",", measure positions, attach observers, anything Attaform deliberately doesn't wrap behind helpers.",[404,853,854,864],{},[407,855,856],{},[410,857,858,860,862],{},[413,859,415],{},[413,861,418],{},[413,863,421],{},[423,865,866,881],{},[410,867,868,873,878],{},[428,869,870],{},[13,871,872],{},"element",[428,874,875],{},[13,876,877],{},"HTMLElement | null",[428,879,880],{},"First bound element by registration order.",[410,882,883,888,893],{},[428,884,885],{},[13,886,887],{},"elements",[428,889,890],{},[13,891,892],{},"readonly HTMLElement[]",[428,894,895],{},"Every element bound to this path.",[70,897,899],{"className":72,"code":898,"language":74,"meta":75,"style":75},"form.fields.email.element?.focus()\nform.fields.email.element?.scrollIntoView({ block: 'center' })\n",[13,900,901,912],{"__ignoreMap":75},[79,902,903,906,909],{"class":81,"line":82},[79,904,905],{"class":96},"form.fields.email.element?.",[79,907,908],{"class":100},"focus",[79,910,911],{"class":96},"()\n",[79,913,914,916,919,922,925],{"class":81,"line":107},[79,915,905],{"class":96},[79,917,918],{"class":100},"scrollIntoView",[79,920,921],{"class":96},"({ block: ",[79,923,924],{"class":367},"'center'",[79,926,927],{"class":96}," })\n",[241,929,931],{"id":930},"schema-metadata-identity","Schema metadata + identity",[19,933,934],{},"Schema-registered presentational hints, the path that produced this FieldState, the stable DOM ids for wiring labels and assistive-tech references, and the element identity key for iterating array elements.",[404,936,937,947],{},[407,938,939],{},[410,940,941,943,945],{},[413,942,415],{},[413,944,418],{},[413,946,421],{},[423,948,949,963,982,996,1011,1026,1040,1058],{},[410,950,951,956,960],{},[428,952,953],{},[13,954,955],{},"label",[428,957,958],{},[13,959,123],{},[428,961,962],{},"Registered label, or a humanized fallback from the path's last segment.",[410,964,965,970,975],{},[428,966,967],{},[13,968,969],{},"description",[428,971,972],{},[13,973,974],{},"string | undefined",[428,976,977,978,981],{},"Registered description; falls back to ",[13,979,980],{},"schema.describe('...')"," when no override.",[410,983,984,989,993],{},[428,985,986],{},[13,987,988],{},"placeholder",[428,990,991],{},[13,992,974],{},[428,994,995],{},"Registered placeholder hint.",[410,997,998,1003,1008],{},[428,999,1000],{},[13,1001,1002],{},"meta",[428,1004,1005],{},[13,1006,1007],{},"Readonly\u003CFieldMetaPayload>",[428,1009,1010],{},"The full registered payload; escape hatch for consumer-augmented keys.",[410,1012,1013,1018,1023],{},[428,1014,1015],{},[13,1016,1017],{},"path",[428,1019,1020],{},[13,1021,1022],{},"readonly (string | number)[]",[428,1024,1025],{},"The path tuple that produced this FieldState.",[410,1027,1028,1033,1037],{},[428,1029,1030],{},[13,1031,1032],{},"id",[428,1034,1035],{},[13,1036,123],{},[428,1038,1039],{},"Stable, SSR-safe DOM id for this field, unique across every mount on the page.",[410,1041,1042,1047,1052],{},[428,1043,1044],{},[13,1045,1046],{},"aria",[428,1048,1049],{},[13,1050,1051],{},"{ errorId, descriptionId }",[428,1053,1054,1055,1057],{},"Satellite ids derived from ",[13,1056,1032],{}," for wiring error and description elements.",[410,1059,1060,1065,1069],{},[428,1061,1062],{},[13,1063,1064],{},"key",[428,1066,1067],{},[13,1068,123],{},[428,1070,1071,1072,1075,1076,458],{},"Allocated identity token while the field is an array element, empty otherwise. Follows the element across reorders; the ",[13,1073,1074],{},":key"," for ",[32,1077,1079],{"href":1078},"\u002Fdocs\u002Freading-the-form\u002Flist",[13,1080,1081],{},"form.list",[19,1083,1084,1085,1088,1089,1092],{},"Register schema metadata with ",[13,1086,1087],{},"withMeta"," (works on Zod 3 and Zod 4) or the native ",[13,1090,1091],{},"schema.register(fieldMeta, {...})"," chain (Zod 4):",[70,1094,1096],{"className":72,"code":1095,"language":74,"meta":75,"style":75},"import { withMeta } from 'attaform\u002Fzod'\n\nconst schema = z.object({\n  email: withMeta(z.email(), {\n    label: 'Email address',\n    placeholder: 'you@example.com',\n  }),\n})\n",[13,1097,1098,1112,1116,1130,1145,1156,1166,1170],{"__ignoreMap":75},[79,1099,1100,1103,1106,1109],{"class":81,"line":82},[79,1101,1102],{"class":85},"import",[79,1104,1105],{"class":96}," { withMeta } ",[79,1107,1108],{"class":85},"from",[79,1110,1111],{"class":367}," 'attaform\u002Fzod'\n",[79,1113,1114],{"class":81,"line":107},[79,1115,167],{"emptyLinePlaceholder":166},[79,1117,1118,1120,1122,1124,1126,1128],{"class":81,"line":117},[79,1119,86],{"class":85},[79,1121,90],{"class":89},[79,1123,93],{"class":85},[79,1125,97],{"class":96},[79,1127,101],{"class":100},[79,1129,104],{"class":96},[79,1131,1132,1135,1137,1140,1142],{"class":81,"line":129},[79,1133,1134],{"class":96},"  email: ",[79,1136,1087],{"class":100},[79,1138,1139],{"class":96},"(z.",[79,1141,135],{"class":100},[79,1143,1144],{"class":96},"(), {\n",[79,1146,1147,1150,1153],{"class":81,"line":140},[79,1148,1149],{"class":96},"    label: ",[79,1151,1152],{"class":367},"'Email address'",[79,1154,1155],{"class":96},",\n",[79,1157,1158,1161,1164],{"class":81,"line":146},[79,1159,1160],{"class":96},"    placeholder: ",[79,1162,1163],{"class":367},"'you@example.com'",[79,1165,1155],{"class":96},[79,1167,1168],{"class":81,"line":157},[79,1169,143],{"class":96},[79,1171,1172],{"class":81,"line":163},[79,1173,160],{"class":96},[55,1175,1177],{"id":1176},"reading-fieldstate-in-templates","Reading FieldState in templates",[19,1179,1180,1181,1183,1184,1186],{},"The display-ergonomics pairing of ",[13,1182,705],{}," plus ",[13,1185,775],{}," is the per-field rendering pattern:",[70,1188,1192],{"className":1189,"code":1190,"language":1191,"meta":75,"style":75},"language-vue shiki shiki-themes github-light github-dark","\u003Cinput v-register=\"form.register('email')\" \u002F>\n\u003Cp v-if=\"form.fields.email.showErrors\">{{ form.fields.email.firstError?.message }}\u003C\u002Fp>\n","vue",[13,1193,1194,1229],{"__ignoreMap":75},[79,1195,1196,1199,1203,1206,1209,1212,1214,1216,1218,1221,1224,1226],{"class":81,"line":82},[79,1197,1198],{"class":96},"\u003C",[79,1200,1202],{"class":1201},"s9eBZ","input",[79,1204,1205],{"class":100}," v-register",[79,1207,1208],{"class":96},"=",[79,1210,1211],{"class":367},"\"",[79,1213,359],{"class":96},[79,1215,340],{"class":100},[79,1217,364],{"class":96},[79,1219,1220],{"class":367},"'email'",[79,1222,1223],{"class":96},")",[79,1225,1211],{"class":367},[79,1227,1228],{"class":96}," \u002F>\n",[79,1230,1231,1233,1235,1238,1240,1242,1245,1247,1250,1252],{"class":81,"line":107},[79,1232,1198],{"class":96},[79,1234,19],{"class":1201},[79,1236,1237],{"class":85}," v-if",[79,1239,1208],{"class":96},[79,1241,1211],{"class":367},[79,1243,1244],{"class":96},"form.fields.email.showErrors",[79,1246,1211],{"class":367},[79,1248,1249],{"class":96},">{{ form.fields.email.firstError?.message }}\u003C\u002F",[79,1251,19],{"class":1201},[79,1253,1254],{"class":96},">\n",[19,1256,1257,1259,1260,1262],{},[13,1258,775],{}," is the gate; ",[13,1261,705],{}," is the message. Read them together at every error site.",[55,1264,1266],{"id":1265},"where-to-next","Where to next",[255,1268,1269,1283,1290,1300,1308,1327,1335,1347],{},[258,1270,1271,1275,1276,1278,1279,1282],{},[32,1272,1273],{"href":1078},[13,1274,1081],{},": iterate an array as one FieldState per element, keyed by ",[13,1277,1064],{}," so a ",[13,1280,1281],{},"v-for"," survives reorders.",[258,1284,1285,1289],{},[32,1286,1287],{"href":34},[13,1288,41],{},": the value half of every FieldState, lifted to a form-wide Proxy.",[258,1291,1292,1297,1298,458],{},[32,1293,1295],{"href":1294},"\u002Fdocs\u002Freading-the-form\u002Ferrors",[13,1296,220],{},": the per-path errors Proxy, the raw array behind ",[13,1299,705],{},[258,1301,1302,1307],{},[32,1303,1305],{"href":1304},"\u002Fdocs\u002Freading-the-form\u002Fmeta",[13,1306,1002],{},": the form-level aggregation, every FieldState property rolled up, plus 7 form-only reads.",[258,1309,1310,1317,1318,847,1320,847,1322,1324,1325,458],{},[32,1311,1313,1314,1316],{"href":1312},"\u002Fdocs\u002Fbinding-inputs\u002Fv-register","The ",[13,1315,532],{}," directive",": the binding that drives ",[13,1319,504],{},[13,1321,465],{},[13,1323,486],{},", and ",[13,1326,556],{},[258,1328,1329,1332,1333,458],{},[32,1330,1331],{"href":586},"Display state and showing errors",": the predicate behind ",[13,1334,755],{},[258,1336,1337,1343,1344,1346],{},[32,1338,1313,1340,1342],{"href":1339},"\u002Fdocs\u002Fvalidation\u002Fblank",[13,1341,574],{}," field-state bit",": the lifecycle behind the ",[13,1345,574],{}," cell.",[258,1348,1349,1353,1354,1357],{},[32,1350,1352],{"href":1351},"\u002Fdocs\u002Freading-the-form\u002Fthe-form","The form",": every other reactive read on ",[13,1355,1356],{},"form"," itself.",[1359,1360,1361],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":75,"searchDepth":107,"depth":107,"links":1363},[1364,1369,1376,1377],{"id":57,"depth":107,"text":58,"children":1365},[1366,1368],{"id":243,"depth":117,"text":1367},"Absence reads undefined",{"id":333,"depth":117,"text":334},{"id":387,"depth":107,"text":388,"children":1370},[1371,1372,1373,1374,1375],{"id":398,"depth":117,"text":399},{"id":608,"depth":117,"text":609},{"id":666,"depth":117,"text":667},{"id":839,"depth":117,"text":840},{"id":930,"depth":117,"text":931},{"id":1176,"depth":107,"text":1177},{"id":1265,"depth":107,"text":1266},"form.fields is a drillable Proxy keyed by schema paths. Every leaf surfaces a FieldState with state bits, value reads, validation reads, DOM handles, and schema metadata, all reactive.","md",{},[1382,1385,1387,1390],{"label":1383,"value":1384},"Category","Return property",{"label":418,"value":1386,"kind":13},"FieldStateMap\u003CReadShape\u003CSchema>>",{"label":1388,"value":1389},"Reactive","Yes",{"label":1391,"value":1392,"kind":13},"Read shape per leaf","FieldState (31 properties)","\u002Fdocs\u002Freading-the-form\u002Ffields",{"title":5,"description":1378},null,"docs\u002Freading-the-form\u002Ffields","iSBQ8g8S1idib7h9AaO6YZiACO3F6odqFMcFPYpOMPY",1780949758303]