{"version":3,"file":"touch.mjs","sources":["../../../../src/lib/form/touch.mts"],"sourcesContent":["import type { FormElement } from '../shared/fields.mjs';\nimport type { FormulaStores } from '../shared/types.mjs';\n\n/**\n * Creates the handler for a group of elements for the touch event\n */\nexport function createTouchHandlers(name: string, elements: FormElement[], stores: FormulaStores): () => void {\n  const elementHandlers = new Map<FormElement, () => void>();\n\n  const destroy = () => {\n    for (const [el, handler] of elementHandlers) {\n      el.setAttribute('data-formula-touched', 'true');\n      el.removeEventListener('focus', handler);\n    }\n    elementHandlers.clear();\n  };\n\n  stores.touched.set({ ...stores.touched.get(), [name]: false });\n\n  const createElementHandler = (): (() => void) => {\n    return () => {\n      stores.touched.set({ ...stores.touched.get(), [name]: true });\n      destroy();\n    };\n  };\n\n  for (const el of elements) {\n    const handler = createElementHandler();\n    el.addEventListener('focus', handler);\n    elementHandlers.set(el, handler);\n  }\n\n  return destroy;\n}\n"],"names":["createTouchHandlers","name","elements","stores","elementHandlers","destroy","el","handler","createElementHandler"],"mappings":"AAMO,SAASA,EAAoBC,GAAcC,GAAyBC,GAAmC;AAC5G,QAAMC,wBAAsB,IAAA,GAEtBC,IAAU,MAAM;AACpB,eAAW,CAACC,GAAIC,CAAO,KAAKH;AAC1B,MAAAE,EAAG,aAAa,wBAAwB,MAAM,GAC9CA,EAAG,oBAAoB,SAASC,CAAO;AAEzC,IAAAH,EAAgB,MAAA;AAAA,EAClB;AAEA,EAAAD,EAAO,QAAQ,IAAI,EAAE,GAAGA,EAAO,QAAQ,OAAO,CAACF,CAAI,GAAG,IAAO;AAE7D,QAAMO,IAAuB,MACpB,MAAM;AACX,IAAAL,EAAO,QAAQ,IAAI,EAAE,GAAGA,EAAO,QAAQ,OAAO,CAACF,CAAI,GAAG,IAAM,GAC5DI,EAAA;AAAA,EACF;AAGF,aAAWC,KAAMJ,GAAU;AACzB,UAAMK,IAAUC,EAAA;AAChB,IAAAF,EAAG,iBAAiB,SAASC,CAAO,GACpCH,EAAgB,IAAIE,GAAIC,CAAO;AAAA,EACjC;AAEA,SAAOF;AACT;"}