[{"data":1,"prerenderedAt":1566},["ShallowReactive",2],{"content-\u002Fdocs\u002Fapi\u002Fuse-form-return":3},{"id":4,"title":5,"body":6,"description":1558,"extension":1559,"meta":1560,"navigation":1561,"path":1562,"seo":1563,"stem":1564,"__hash__":1565},"docs\u002Fdocs\u002Fapi\u002Fuse-form-return.md","The useForm return value",{"type":7,"value":8,"toc":1538},"minimark",[9,13,21,26,47,65,94,273,277,282,328,344,360,374,378,509,513,576,600,604,620,692,703,707,733,947,955,959,1015,1026,1044,1048,1107,1111,1170,1176,1180,1223,1243,1247,1275,1414,1424,1428,1502,1506],[10,11,5],"h1",{"id":12},"the-useform-return-value",[14,15,16,20],"p",{},[17,18,19],"code",{},"useForm(options)"," returns a single object with every reactive\npiece of form state as a named field. Grouped by concern:",[22,23,25],"h2",{"id":24},"reading-values","Reading values",[14,27,28,29,32,33,36,37,40,41,46],{},"Pinia-style proxies — dot-access leaves directly, no ",[17,30,31],{},".value",", in\ntemplates and scripts identically. Read types widen primitive-literal\nleaves to their primitive supertype (",[17,34,35],{},"'red' | 'green' | 'blue'"," →\n",[17,38,39],{},"string",") to match what the store can hold under the\n",[42,43,45],"a",{"href":44},"#slim-write-contract","slim-write contract",".",[14,48,49,50,53,54,57,58,61,62,46],{},"Array-crossing paths taint with ",[17,51,52],{},"| undefined",": once a path crosses\na numeric segment, every result is ",[17,55,56],{},"T | undefined",". Tuple positions\nstay strict. For the strict, post-validation shape, route through\n",[17,59,60],{},"handleSubmit"," \u002F ",[17,63,64],{},"validate*()",[14,66,67,70,71,70,74,77,78,81,82,85,86,89,90,93],{},[17,68,69],{},"values",", ",[17,72,73],{},"errors",[17,75,76],{},"fields"," are leaf-aware callable Proxies. Drill\nvia dot\u002Fbracket OR call dynamically — ",[17,79,80],{},"form.fields.email.dirty"," ≡\n",[17,83,84],{},"form.fields('email').dirty"," ≡ ",[17,87,88],{},"form.fields(['email']).dirty",".\nSingle-bracket dotted access (",[17,91,92],{},"form.errors['user.email']",") is NOT\nsupported.",[95,96,97,113],"table",{},[98,99,100],"thead",{},[101,102,103,107,110],"tr",{},[104,105,106],"th",{},"Member",[104,108,109],{},"Type",[104,111,112],{},"What it does",[114,115,116,176,212,242],"tbody",{},[101,117,118,123,128],{},[119,120,121],"td",{},[17,122,69],{},[119,124,125],{},[17,126,127],{},"ValuesSurface\u003CWriteShape\u003CForm>>",[119,129,130,131,70,134,70,137,140,141,144,145,148,149,152,153,156,157,61,160,163,164,167,168,171,172,175],{},"Whole-form reactive read. ",[17,132,133],{},"form.values.email",[17,135,136],{},"form.values.address.city",[17,138,139],{},"form.values.posts[0]?.title",". Containers ARE useful — ",[17,142,143],{},"form.values.address"," returns the subtree object AND keeps drilling. Array element types are strict (",[17,146,147],{},"tags: string[]","); the safety on ",[17,150,151],{},"arr[N]"," reads relies on the consumer's ",[17,154,155],{},"noUncheckedIndexedAccess: true"," tsconfig flag, which TypeScript correctly suppresses on iteration so ",[17,158,159],{},"v-for",[17,161,162],{},"for-of"," keep ",[17,165,166],{},"T",". Auto-unwraps in templates and scripts. ",[17,169,170],{},"form.values('a.b.c')"," and ",[17,173,174],{},"form.values()"," available for dynamic \u002F programmatic access.",[101,177,178,182,187],{},[119,179,180],{},[17,181,76],{},[119,183,184],{},[17,185,186],{},"FieldStateMap\u003CForm>",[119,188,189,190,70,193,70,196,70,198,70,201,204,205,70,208,211],{},"Reactive per-field state map. Drill any path; reserved leaf props (",[17,191,192],{},"value",[17,194,195],{},"dirty",[17,197,73],{},[17,199,200],{},"blank",[17,202,203],{},"isConnected",", …) inject ONLY at LEAF paths — a schema field named for one of those props at depth 2+ is reachable as a descent target (no shadowing). ",[17,206,207],{},"form.fields('email').errors",[17,209,210],{},"form.fields(['users', 0, 'name'])"," for dynamic paths.",[101,213,214,218,223],{},[119,215,216],{},[17,217,73],{},[119,219,220],{},[17,221,222],{},"FormFieldErrors\u003CForm>",[119,224,225,226,229,230,233,234,237,238,46],{},"Drillable per-leaf error proxy: ",[17,227,228],{},"form.errors.email?.[0]?.message",". Container reads descend; leaf reads return ",[17,231,232],{},"ValidationError[] | undefined",". Schema entries first, user entries second. Inactive-variant (DU) errors filtered. ",[17,235,236],{},"form.errors('a.b.c')"," for dynamic paths. See ",[42,239,241],{"href":240},"#error-store","error store",[101,243,244,249,254],{},[119,245,246],{},[17,247,248],{},"toRef(path)",[119,250,251],{},[17,252,253],{},"(path: FlatPath\u003CForm>) => Readonly\u003CRef\u003CNestedReadType\u003C...>>>",[119,255,256,257,260,261,264,265,268,269,272],{},"Escape hatch — get a ",[17,258,259],{},"Readonly\u003CRef>"," at ",[17,262,263],{},"path"," for ",[17,266,267],{},"watch()"," or external composables that expect ref-shaped inputs. Read type matches ",[17,270,271],{},"form.values.\u003Cpath>"," (slim-widened, array-tainted).",[22,274,276],{"id":275},"writing-values","Writing values",[278,279,281],"h3",{"id":280},"slim-write-contract","Slim-write contract",[14,283,284,285,288,289,291,292,70,295,70,298,70,301,70,304,70,307,310,311,70,314,317,318,70,321,70,324,327],{},"Writes are gated on primitive ",[17,286,287],{},"typeof","-style checks (",[17,290,39],{},",\n",[17,293,294],{},"number",[17,296,297],{},"boolean",[17,299,300],{},"bigint",[17,302,303],{},"Date",[17,305,306],{},"null",[17,308,309],{},"undefined",", plain\nobject, array, ",[17,312,313],{},"Map",[17,315,316],{},"Set","). Refinement-level constraints\n(",[17,319,320],{},"z.enum",[17,322,323],{},".email()",[17,325,326],{},".min(N)",", regex) surface as field errors,\nnot write rejections.",[14,329,330,333,334,70,336,70,339,70,341,343],{},[17,331,332],{},"WriteShape\u003CT>"," (the TS reflection) widens primitive-literal leaves\nto their primitive supertype, preserves objects, tuples, arrays;\n",[17,335,303],{},[17,337,338],{},"RegExp",[17,340,313],{},[17,342,316],{},", and functions pass through unchanged.",[14,345,346,349,350,352,353,356,357,46],{},[17,347,348],{},"setValue"," and field-array helpers return ",[17,351,297],{}," — ",[17,354,355],{},"false"," on\nslim-primitive rejection or out-of-range index. Rejected writes\nemit a one-shot dev warning per ",[17,358,359],{},"(path, kind)",[14,361,362,363,365,366,369,370,373],{},"After every ",[17,364,348],{},", the form satisfies the slim schema: sparse\narray writes auto-pad missing indices from the schema default, and\npartial object writes get sibling keys filled. Path-form callback\n",[17,367,368],{},"prev"," is ",[17,371,372],{},"NonNullable\u003CNestedType\u003CForm, Path>>"," — fully defaulted\nbefore the callback fires.",[278,375,377],{"id":376},"surfaces","Surfaces",[95,379,380,391],{},[98,381,382],{},[101,383,384,386,389],{},[104,385,106],{},[104,387,388],{},"Signature",[104,390,112],{},[114,392,393,432,456],{},[101,394,395,400,405],{},[119,396,397],{},[17,398,399],{},"setValue(value)",[119,401,402],{},[17,403,404],{},"\u003CV extends SetValuePayload\u003CWriteShape\u003CForm>, WriteShape\u003CForm>>>(value: V) => boolean",[119,406,407,408,410,411,414,415,418,419,421,422,424,425,428,429,431],{},"Replace the whole form. Callback form's ",[17,409,368],{}," widens via ",[17,412,413],{},"WriteShape\u003CForm>"," (matching what's actually storable). Array ",[17,416,417],{},"prev.posts[N]"," reads get ",[17,420,52],{}," from the consumer's ",[17,423,155],{},"; iteration over ",[17,426,427],{},"prev.posts"," stays strict. Returns ",[17,430,355],{}," if the slim-primitive gate rejects. Programmatic — does NOT trigger persistence.",[101,433,434,439,444],{},[119,435,436],{},[17,437,438],{},"setValue(path, value)",[119,440,441],{},[17,442,443],{},"\u003CP extends FlatPath\u003CForm>, V extends SetValuePayload\u003CWriteShape\u003CNestedType\u003CForm, P>>, NonNullable\u003CWriteShape\u003CNestedType\u003CForm, P>>>>>(path: P, value: V) => boolean",[119,445,446,447,369,449,452,453,455],{},"Replace a single leaf or sub-tree. Callback form's ",[17,448,368],{},[17,450,451],{},"NonNullable\u003CWriteShape\u003CNestedType\u003CForm, P>>>"," — runtime auto-defaults missing slots before the callback fires. Returns ",[17,454,355],{}," on slim-primitive rejection. Programmatic — does NOT trigger persistence.",[101,457,458,463,468],{},[119,459,460],{},[17,461,462],{},"register(path, options?)",[119,464,465],{},[17,466,467],{},"(path: P, options?: RegisterOptions) => RegisterValue\u003CNestedReadType\u003CWriteShape\u003CForm>, P>>",[119,469,470,471,474,475,478,479,481,482,484,485,487,488,491,492,495,496,499,500,504,505,46],{},"Produces the binding the ",[17,472,473],{},"v-register"," directive consumes. ",[17,476,477],{},"innerRef","'s read type widens via ",[17,480,413],{}," (matches what's storable) and carries ",[17,483,52],{}," at array-crossing paths; the directive renders ",[17,486,309],{}," as empty correctly. ",[17,489,490],{},"options.persist: true"," opts the field into persistence; ",[17,493,494],{},"options.acknowledgeSensitive: true"," overrides the sensitive-name heuristic; ",[17,497,498],{},"options.transforms: [...]"," runs a sync pipeline on user input before it lands in form state (see ",[42,501,503],{"href":502},"\u002Fdocs\u002Fapi\u002Fcore#transforms--registerpath--transforms-","Transforms","). See ",[42,506,508],{"href":507},"\u002Fdocs\u002Frecipes\u002Fpersistence","persistence recipe",[22,510,512],{"id":511},"validation-submission","Validation + submission",[95,514,515,525],{},[98,516,517],{},[101,518,519,521,523],{},[104,520,106],{},[104,522,388],{},[104,524,112],{},[114,526,527,546,561],{},[101,528,529,534,539],{},[119,530,531],{},[17,532,533],{},"validate(path?)",[119,535,536],{},[17,537,538],{},"(path?) => Readonly\u003CRef\u003CReactiveValidationStatus\u003CForm>>>",[119,540,541,542,545],{},"Reactive validation result. Re-runs on form mutation; value carries a ",[17,543,544],{},"pending"," flag.",[101,547,548,553,558],{},[119,549,550],{},[17,551,552],{},"validateAsync(path?)",[119,554,555],{},[17,556,557],{},"(path?) => Promise\u003CValidationResponseWithoutValue\u003CForm>>",[119,559,560],{},"Imperative one-shot. Resolves to the settled response.",[101,562,563,568,573],{},[119,564,565],{},[17,566,567],{},"handleSubmit(cb, onErr?)",[119,569,570],{},[17,571,572],{},"(cb, onErr?) => (event?) => Promise\u003Cvoid>",[119,574,575],{},"Builds a submit handler. Awaits validation internally.",[14,577,578,581,582,584,585,588,589,592,593,595,596,46],{},[17,579,580],{},"ReactiveValidationStatus\u003CForm>"," is a discriminated union on\n",[17,583,544],{}," — narrow on ",[17,586,587],{},"status.pending"," before trusting ",[17,590,591],{},"success"," \u002F\n",[17,594,73],{},". See ",[42,597,599],{"href":598},"\u002Fdocs\u002Frecipes\u002Fasync-validation","async-validation recipe",[22,601,603],{"id":602},"error-store","Error store",[14,605,606,607,610,611,614,615,619],{},"Errors are stored source-segregated under the hood — ",[17,608,609],{},"schemaErrors","\n(written by the validation pipeline) and ",[17,612,613],{},"userErrors"," (written by the\nAPIs below). The public surfaces below merge both transparently\n(schema-first, user-second). User-injected errors ",[616,617,618],"strong",{},"survive"," schema\nrevalidation and successful submits — the consumer owns their lifecycle\nexplicitly.",[95,621,622,630],{},[98,623,624],{},[101,625,626,628],{},[104,627,106],{},[104,629,109],{},[114,631,632,646,667,679],{},[101,633,634,638],{},[119,635,636],{},[17,637,73],{},[119,639,640,642,643,645],{},[17,641,222],{}," — leaf-aware drillable callable Proxy. Per-leaf ",[17,644,232],{},"; container reads descend. Schema entries first, user entries second. Inactive-variant (DU) errors filtered.",[101,647,648,653],{},[119,649,650],{},[17,651,652],{},"setFieldErrors(errors)",[119,654,655,658,659,662,663,46],{},[17,656,657],{},"(ValidationError[]) => void"," — replaces the user-error store. For server \u002F API responses, parse the payload via ",[17,660,661],{},"parseApiErrors"," (top-level helper) and feed the result here. See ",[42,664,666],{"href":665},"\u002Fdocs\u002Frecipes\u002Fserver-errors","server-errors recipe",[101,668,669,674],{},[119,670,671],{},[17,672,673],{},"addFieldErrors(errors)",[119,675,676,678],{},[17,677,657],{}," — appends to the user-error store.",[101,680,681,686],{},[119,682,683],{},[17,684,685],{},"clearFieldErrors(path?)",[119,687,688,691],{},[17,689,690],{},"(path?) => void"," — clears BOTH stores at the given path (or all paths if omitted). With live validation, the schema half re-populates on the next mutation if the value is still invalid.",[14,693,694,695,698,699,702],{},"For a \"show all errors\" UI (path-keyed, form-level, unmapped server,\ncross-field-refine), use ",[17,696,697],{},"form.meta.errors"," — a flat\n",[17,700,701],{},"ValidationError[]"," covering EVERY error in the form (unfiltered).",[22,704,706],{"id":705},"form-level-meta","Form-level meta",[14,708,709,710,713,714,717,718,721,722,725,726,728,729,732],{},"The form-level flags, counters, and aggregates live on a single\n",[17,711,712],{},"meta"," object (",[17,715,716],{},"reactive()"," + ",[17,719,720],{},"readonly()","). Vue's reactive\nauto-unwraps refs at property access, so ",[17,723,724],{},"form.meta.isSubmitting","\nis a primitive in both templates and scripts — no ",[17,727,31],{},". The\nfull type is the exported ",[17,730,731],{},"FormMeta"," interface.",[95,734,735,745],{},[98,736,737],{},[101,738,739,741,743],{},[104,740,106],{},[104,742,109],{},[104,744,112],{},[114,746,747,764,780,796,812,826,844,865,883,902,917],{},[101,748,749,754,758],{},[119,750,751],{},[17,752,753],{},"meta.isDirty",[119,755,756],{},[17,757,297],{},[119,759,760,763],{},[17,761,762],{},"true"," iff any leaf's current value differs from its original.",[101,765,766,771,775],{},[119,767,768],{},[17,769,770],{},"meta.isValid",[119,772,773],{},[17,774,297],{},[119,776,777,779],{},[17,778,762],{}," iff both the schema-error and user-error stores are empty.",[101,781,782,787,791],{},[119,783,784],{},[17,785,786],{},"meta.isSubmitting",[119,788,789],{},[17,790,297],{},[119,792,793,795],{},[17,794,762],{}," while the submit handler is running.",[101,797,798,803,807],{},[119,799,800],{},[17,801,802],{},"meta.isValidating",[119,804,805],{},[17,806,297],{},[119,808,809,811],{},[17,810,762],{}," while any validation run is in flight (reactive, imperative, or pre-submit).",[101,813,814,819,823],{},[119,815,816],{},[17,817,818],{},"meta.submitCount",[119,820,821],{},[17,822,294],{},[119,824,825],{},"Incremented once per call, regardless of outcome.",[101,827,828,833,838],{},[119,829,830],{},[17,831,832],{},"meta.submitError",[119,834,835],{},[17,836,837],{},"unknown",[119,839,840,841,843],{},"Whatever the callback threw; ",[17,842,306],{}," on success. Cleared on every new submission.",[101,845,846,851,855],{},[119,847,848],{},[17,849,850],{},"meta.canUndo",[119,852,853],{},[17,854,297],{},[119,856,857,858,860,861,864],{},"Gate an \"Undo\" button on this. Always present; ",[17,859,355],{}," when ",[17,862,863],{},"history"," is off.",[101,866,867,872,876],{},[119,868,869],{},[17,870,871],{},"meta.canRedo",[119,873,874],{},[17,875,297],{},[119,877,878,879,860,881,864],{},"Gate a \"Redo\" button on this. Always present; ",[17,880,355],{},[17,882,863],{},[101,884,885,890,894],{},[119,886,887],{},[17,888,889],{},"meta.historySize",[119,891,892],{},[17,893,294],{},[119,895,896,897,860,900,864],{},"Total snapshots across both stacks. ",[17,898,899],{},"0",[17,901,863],{},[101,903,904,909,914],{},[119,905,906],{},[17,907,908],{},"meta.errors",[119,910,911],{},[17,912,913],{},"readonly ValidationError[]",[119,915,916],{},"Flat aggregate of every error (path-keyed, form-level, unmapped, cross-field refines). Unfiltered.",[101,918,919,924,928],{},[119,920,921],{},[17,922,923],{},"meta.instanceId",[119,925,926],{},[17,927,39],{},[119,929,930,931,934,935,938,939,942,943,946],{},"Per-",[17,932,933],{},"useForm()","-call identity. Stable for one mount, new on remount; orthogonal to ",[17,936,937],{},"form.key",". Use for DevTools, telemetry, E2E selectors (",[17,940,941],{},"data-form-id","), and Vue ",[17,944,945],{},":key",". Opaque format.",[14,948,949,951,952,46],{},[17,950,712],{}," is read-only — assignments are rejected at runtime with a\ndev warning. Watchers use the getter form:\n",[17,953,954],{},"watch(() => form.meta.isSubmitting, …)",[22,956,958],{"id":957},"focus-scroll","Focus + scroll",[95,960,961,971],{},[98,962,963],{},[101,964,965,967,969],{},[104,966,106],{},[104,968,388],{},[104,970,112],{},[114,972,973,998],{},[101,974,975,980,985],{},[119,976,977],{},[17,978,979],{},"focusFirstError(options?)",[119,981,982],{},[17,983,984],{},"(options?) => boolean",[119,986,987,988,991,992,994,995,997],{},"Focuses the ",[616,989,990],{},"visually-first"," errored field's connected, visible element registered through this ",[17,993,933],{}," callsite. Returns ",[17,996,762],{}," if an element was focused.",[101,999,1000,1005,1009],{},[119,1001,1002],{},[17,1003,1004],{},"scrollToFirstError(options?)",[119,1006,1007],{},[17,1008,984],{},[119,1010,1011,1012,1014],{},"Scrolls that element into view. Returns ",[17,1013,762],{}," on success.",[14,1016,1017,1018,1021,1022,1025],{},"\"Visually-first\" is DOM-tree order via ",[17,1019,1020],{},"compareDocumentPosition",".\nCSS ",[17,1023,1024],{},"order:"," flexbox\u002Fgrid reordering is not respected (DOM-tree\norder wins).",[14,1027,1028,1029,1031,1032,1035,1036,1039,1040,1043],{},"Scope is per ",[17,1030,933],{}," callsite: when two ",[17,1033,1034],{},"useForm({ key })"," calls\nshare a key, each callsite's ",[17,1037,1038],{},"focusFirstError"," only targets elements\nregistered through THAT callsite. ",[17,1041,1042],{},"injectForm()"," children inherit\ntheir ancestor's instance ID, so parent-submit-focus reaches inputs\nregistered by deep children.",[22,1045,1047],{"id":1046},"reset","Reset",[95,1049,1050,1060],{},[98,1051,1052],{},[101,1053,1054,1056,1058],{},[104,1055,106],{},[104,1057,388],{},[104,1059,112],{},[114,1061,1062,1089],{},[101,1063,1064,1069,1074],{},[119,1065,1066],{},[17,1067,1068],{},"reset(next?)",[119,1070,1071],{},[17,1072,1073],{},"(next?: DeepPartial\u003CDefaultValuesShape\u003CForm>>) => void",[119,1075,1076,1077,1080,1081,1084,1085,1088],{},"Re-seed the whole form. Rebuilds originals, clears errors + touched + submit state. Wipes the persisted draft if ",[17,1078,1079],{},"persist:"," is configured. Each leaf in ",[17,1082,1083],{},"next"," may be ",[17,1086,1087],{},"unset"," to mark the path displayed-empty post-reset.",[101,1090,1091,1096,1101],{},[119,1092,1093],{},[17,1094,1095],{},"resetField(path)",[119,1097,1098],{},[17,1099,1100],{},"(path: FlatPath\u003CForm>) => void",[119,1102,1103,1104,1106],{},"Restore one path (leaf or container) to its original value. Wipes the matching subpath from storage if ",[17,1105,1079],{}," is configured.",[22,1108,1110],{"id":1109},"persistence-imperative","Persistence (imperative)",[95,1112,1113,1123],{},[98,1114,1115],{},[101,1116,1117,1119,1121],{},[104,1118,106],{},[104,1120,388],{},[104,1122,112],{},[114,1124,1125,1150],{},[101,1126,1127,1132,1137],{},[119,1128,1129],{},[17,1130,1131],{},"persist(path, options?)",[119,1133,1134],{},[17,1135,1136],{},"(path: FlatPath\u003CForm>, options?: { acknowledgeSensitive?: boolean }) => Promise\u003Cvoid>",[119,1138,1139,1140,1142,1143,1146,1147,1149],{},"One-shot read-merge-write of ",[17,1141,263],{},"'s current value. Bypasses the per-element opt-in gate and the debouncer. Throws ",[17,1144,1145],{},"SensitivePersistFieldError"," on sensitive paths unless acknowledged. Silent no-op when ",[17,1148,1079],{}," isn't configured.",[101,1151,1152,1157,1162],{},[119,1153,1154],{},[17,1155,1156],{},"clearPersistedDraft(path?)",[119,1158,1159],{},[17,1160,1161],{},"(path?: FlatPath\u003CForm>) => Promise\u003Cvoid>",[119,1163,1164,1165,1167,1168,1149],{},"Wipe the persisted entry. With ",[17,1166,263],{},", removes only that subpath. Does NOT touch in-memory state or active opt-ins. Silent no-op when ",[17,1169,1079],{},[14,1171,1172,1173,1175],{},"See ",[42,1174,508],{"href":507}," for the per-field\nopt-in model these APIs sit on top of.",[22,1177,1179],{"id":1178},"undo-redo","Undo \u002F redo",[95,1181,1182,1192],{},[98,1183,1184],{},[101,1185,1186,1188,1190],{},[104,1187,106],{},[104,1189,109],{},[104,1191,112],{},[114,1193,1194,1209],{},[101,1195,1196,1201,1206],{},[119,1197,1198],{},[17,1199,1200],{},"undo()",[119,1202,1203],{},[17,1204,1205],{},"() => boolean",[119,1207,1208],{},"Revert to the previous snapshot.",[101,1210,1211,1216,1220],{},[119,1212,1213],{},[17,1214,1215],{},"redo()",[119,1217,1218],{},[17,1219,1205],{},[119,1221,1222],{},"Replay a previously-undone snapshot.",[14,1224,1225,171,1227,1229,1230,70,1232,70,1234,1236,1237,1239,1240,1242],{},[17,1226,1200],{},[17,1228,1215],{}," are top-level methods. The matching flags\n(",[17,1231,850],{},[17,1233,871],{},[17,1235,889],{},") live on the\n",[17,1238,712],{}," bundle above. Inert stubs when ",[17,1241,863],{}," isn't\nconfigured — consistent API shape, zero overhead.",[22,1244,1246],{"id":1245},"field-arrays-typed","Field arrays (typed)",[14,1248,1249,1250,352,1252,1254,1255,1257,1258,61,1261,592,1264,61,1267,1270,1271,1274],{},"All seven helpers return ",[17,1251,297],{},[17,1253,762],{}," on a successful write,\n",[17,1256,355],{}," when the slim-primitive gate rejects the value or the\noperation is a no-op (out-of-range index on ",[17,1259,1260],{},"remove",[17,1262,1263],{},"swap",[17,1265,1266],{},"move",[17,1268,1269],{},"replace","). Element types widen via\n",[17,1272,1273],{},"WriteShape\u003CArrayItem\u003C...>>"," to match what the store can hold.",[95,1276,1277,1289],{},[98,1278,1279],{},[101,1280,1281,1283,1286],{},[104,1282,106],{},[104,1284,1285],{},"Returns",[104,1287,1288],{},"Notes",[114,1290,1291,1312,1329,1345,1362,1378,1398],{},[101,1292,1293,1298,1302],{},[119,1294,1295],{},[17,1296,1297],{},"append(path, value)",[119,1299,1300],{},[17,1301,297],{},[119,1303,1304,1305,1308,1309,46],{},"Path narrowed to ",[17,1306,1307],{},"ArrayPath\u003CForm>","; value widened via ",[17,1310,1311],{},"WriteShape\u003C…>",[101,1313,1314,1319,1323],{},[119,1315,1316],{},[17,1317,1318],{},"prepend(path, value)",[119,1320,1321],{},[17,1322,297],{},[119,1324,1325,1326,46],{},"Same typing as ",[17,1327,1328],{},"append",[101,1330,1331,1336,1340],{},[119,1332,1333],{},[17,1334,1335],{},"insert(path, index, value)",[119,1337,1338],{},[17,1339,297],{},[119,1341,1325,1342,1344],{},[17,1343,1328],{},"; index numeric.",[101,1346,1347,1352,1356],{},[119,1348,1349],{},[17,1350,1351],{},"remove(path, index)",[119,1353,1354],{},[17,1355,297],{},[119,1357,1358,1359,1361],{},"Numeric index. ",[17,1360,355],{}," on out-of-range.",[101,1363,1364,1369,1373],{},[119,1365,1366],{},[17,1367,1368],{},"swap(path, a, b)",[119,1370,1371],{},[17,1372,297],{},[119,1374,1375,1376,1361],{},"Two numeric indices. ",[17,1377,355],{},[101,1379,1380,1385,1389],{},[119,1381,1382],{},[17,1383,1384],{},"move(path, from, to)",[119,1386,1387],{},[17,1388,297],{},[119,1390,1375,1391,1394,1395,46],{},[17,1392,1393],{},"to"," clamped to ",[17,1396,1397],{},"[0, length]",[101,1399,1400,1405,1409],{},[119,1401,1402],{},[17,1403,1404],{},"replace(path, index, value)",[119,1406,1407],{},[17,1408,297],{},[119,1410,1411,1412,1361],{},"Never grows the array; ",[17,1413,355],{},[14,1415,1172,1416,1420,1421,1423],{},[42,1417,1419],{"href":1418},"\u002Fdocs\u002Frecipes\u002Fdynamic-field-arrays","dynamic-field-arrays recipe","\nfor the ",[17,1422,159],{}," pattern.",[22,1425,1427],{"id":1426},"blank-introspection","Blank introspection",[95,1429,1430,1440],{},[98,1431,1432],{},[101,1433,1434,1436,1438],{},[104,1435,106],{},[104,1437,109],{},[104,1439,112],{},[114,1441,1442,1479],{},[101,1443,1444,1449,1454],{},[119,1445,1446],{},[17,1447,1448],{},"blankPaths.value",[119,1450,1451],{},[17,1452,1453],{},"ReadonlySet\u003Cstring>",[119,1455,1456,1457,1460,1461,61,1464,1467,1468,1471,1472,1475,1476,1478],{},"Frozen snapshot of every path-key currently in the form's ",[17,1458,1459],{},"blankPaths"," set. Reactive — Vue tracks ",[17,1462,1463],{},".has()",[17,1465,1466],{},".size"," \u002F iteration. Mutating the snapshot is a no-op (writes go through ",[17,1469,1470],{},"setValue(_, unset)",", the directive's input listener, or ",[17,1473,1474],{},"markBlank()"," on a register binding). See ",[17,1477,1087],{}," exported from the core entry.",[101,1480,1481,1486,1490],{},[119,1482,1483],{},[17,1484,1485],{},"fields.\u003Cpath>.blank",[119,1487,1488],{},[17,1489,297],{},[119,1491,1492,1493,1495,1496,1498,1499,1501],{},"Per-path equivalent: ",[17,1494,762],{}," while ",[17,1497,263],{}," is in the form's ",[17,1500,1459],{}," set.",[22,1503,1505],{"id":1504},"identity","Identity",[95,1507,1508,1518],{},[98,1509,1510],{},[101,1511,1512,1514,1516],{},[104,1513,106],{},[104,1515,109],{},[104,1517,112],{},[114,1519,1520],{},[101,1521,1522,1527,1532],{},[119,1523,1524],{},[17,1525,1526],{},"key",[119,1528,1529],{},[17,1530,1531],{},"FormKey",[119,1533,1534,1535,1537],{},"The form's key (echoes the ",[17,1536,1526],{}," option).",{"title":1539,"searchDepth":1540,"depth":1540,"links":1541},"",2,[1542,1543,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557],{"id":24,"depth":1540,"text":25},{"id":275,"depth":1540,"text":276,"children":1544},[1545,1547],{"id":280,"depth":1546,"text":281},3,{"id":376,"depth":1546,"text":377},{"id":511,"depth":1540,"text":512},{"id":602,"depth":1540,"text":603},{"id":705,"depth":1540,"text":706},{"id":957,"depth":1540,"text":958},{"id":1046,"depth":1540,"text":1047},{"id":1109,"depth":1540,"text":1110},{"id":1178,"depth":1540,"text":1179},{"id":1245,"depth":1540,"text":1246},{"id":1426,"depth":1540,"text":1427},{"id":1504,"depth":1540,"text":1505},"useForm(options) returns a single object with every reactive\npiece of form state as a named field. Grouped by concern:","md",{},true,"\u002Fdocs\u002Fapi\u002Fuse-form-return",{"title":5,"description":1558},"docs\u002Fapi\u002Fuse-form-return","exFWrOMIzsl6_QsF7njin_4M2AwQZU2gry3k7oXopq4",1777934135884]