{"version":3,"names":["fieldStateAttrs","state","data-valid","valid","undefined","data-invalid","data-touched","touched","data-dirty","dirty","data-filled","filled","data-focused","focused"],"sources":["field-state-attrs.ts"],"sourcesContent":["import type { Accessor } from \"solid-js\";\n\n/**\n * Minimum shape required by {@link fieldStateAttrs}. Compounds typically\n * pass `state` from `createMemo` that already spreads `field.state()`; only\n * these five fields are read.\n */\nexport interface FieldStateAttrSource {\n\t/** `true` = valid, `false` = invalid, `null`/`undefined` = unknown. */\n\tvalid: boolean | null | undefined;\n\ttouched: boolean;\n\tdirty: boolean;\n\tfilled: boolean;\n\tfocused: boolean;\n}\n\n/**\n * Standard field-state `data-*` attribute getter-bag. Each property is a\n * live getter reading through the source accessor — safe to spread into\n * `mergeRootProps` without losing reactivity.\n */\nexport interface FieldStateAttrs {\n\treadonly \"data-valid\": \"\" | undefined;\n\treadonly \"data-invalid\": \"\" | undefined;\n\treadonly \"data-touched\": \"\" | undefined;\n\treadonly \"data-dirty\": \"\" | undefined;\n\treadonly \"data-filled\": \"\" | undefined;\n\treadonly \"data-focused\": \"\" | undefined;\n}\n\n/**\n * Project a field-state accessor into the canonical `data-*` getter bag.\n * Used by checkbox/radio/switch/etc. wrappers to attach the standard\n * field-validity attrs without hand-writing six getters per compound.\n *\n * The source needn't be a plain `Accessor<FieldStateAttrSource>` — any\n * memo whose return value is shape-compatible works. Output composes with\n * `mergeRootProps` because every key is a getter, so spread destructuring\n * is the only thing that breaks reactivity (same caveat as every slot\n * factory in this codebase — see solidify.md §1 wave-1 papercut #1).\n */\nexport function fieldStateAttrs(\n\tstate: Accessor<FieldStateAttrSource>,\n): FieldStateAttrs {\n\treturn {\n\t\tget \"data-valid\"(): \"\" | undefined {\n\t\t\treturn state().valid === true ? \"\" : undefined;\n\t\t},\n\t\tget \"data-invalid\"(): \"\" | undefined {\n\t\t\treturn state().valid === false ? \"\" : undefined;\n\t\t},\n\t\tget \"data-touched\"(): \"\" | undefined {\n\t\t\treturn state().touched ? \"\" : undefined;\n\t\t},\n\t\tget \"data-dirty\"(): \"\" | undefined {\n\t\t\treturn state().dirty ? \"\" : undefined;\n\t\t},\n\t\tget \"data-filled\"(): \"\" | undefined {\n\t\t\treturn state().filled ? \"\" : undefined;\n\t\t},\n\t\tget \"data-focused\"(): \"\" | undefined {\n\t\t\treturn state().focused ? \"\" : undefined;\n\t\t},\n\t};\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAC9BC,KAAqC,EACnB;EAClB,OAAO;IACN,IAAI,YAAYC,CAAA,EAAmB;MAClC,OAAOD,KAAK,CAAC,CAAC,CAACE,KAAK,KAAK,IAAI,GAAG,EAAE,GAAGC,SAAS;IAC/C,CAAC;IACD,IAAI,cAAcC,CAAA,EAAmB;MACpC,OAAOJ,KAAK,CAAC,CAAC,CAACE,KAAK,KAAK,KAAK,GAAG,EAAE,GAAGC,SAAS;IAChD,CAAC;IACD,IAAI,cAAcE,CAAA,EAAmB;MACpC,OAAOL,KAAK,CAAC,CAAC,CAACM,OAAO,GAAG,EAAE,GAAGH,SAAS;IACxC,CAAC;IACD,IAAI,YAAYI,CAAA,EAAmB;MAClC,OAAOP,KAAK,CAAC,CAAC,CAACQ,KAAK,GAAG,EAAE,GAAGL,SAAS;IACtC,CAAC;IACD,IAAI,aAAaM,CAAA,EAAmB;MACnC,OAAOT,KAAK,CAAC,CAAC,CAACU,MAAM,GAAG,EAAE,GAAGP,SAAS;IACvC,CAAC;IACD,IAAI,cAAcQ,CAAA,EAAmB;MACpC,OAAOX,KAAK,CAAC,CAAC,CAACY,OAAO,GAAG,EAAE,GAAGT,SAAS;IACxC;EACD,CAAC;AACF","ignoreList":[]}