UNPKG

@mobx-sentinel/react

Version:

A TypeScript library for non-intrusive model enhancement in MobX applications. Provides model change detection, validation, and form integration capabilities while maintaining the purity of domain models.

1 lines 1.75 kB
{"version":3,"sources":["../src/hooks.ts"],"sourcesContent":["import { Form } from \"@mobx-sentinel/form\";\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Auto reset the form when when the component is mounted and unmounted.\n *\n * @param form The form instance.\n */\nexport function useFormAutoReset(form: Form<any>) {\n useEffect(() => {\n form.reset();\n return () => form.reset();\n }, [form]);\n}\n\n/**\n * Add a handler to the form.\n *\n * It automatically removes the handler when the component is unmounted.\n *\n * @param form The form instance.\n * @param event The event of the handler.\n * @param handler The handler.\\\n * No memoization is needed as the handler is stored in a ref internally.\n */\nexport function useFormHandler<T extends object, Event extends keyof Form.Handlers>(\n form: Form<T>,\n event: Event,\n handler: Form.Handlers[NoInfer<Event>]\n) {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n const dispose = form.addHandler(\n event,\n // eslint-disable-next-line prefer-spread, @typescript-eslint/no-unsafe-function-type\n (...args: any[]) => (handlerRef.current as Function).apply(undefined, args) as any\n );\n return dispose;\n }, [form, event]);\n}\n"],"mappings":"uEACA,OAAS,aAAAA,EAAW,UAAAC,MAAc,QAO3B,SAASC,EAAiBC,EAAiB,CAChDH,EAAU,KACRG,EAAK,MAAM,EACJ,IAAMA,EAAK,MAAM,GACvB,CAACA,CAAI,CAAC,CACX,CAYO,SAASC,EACdD,EACAE,EACAC,EACA,CACA,IAAMC,EAAaN,EAAOK,CAAO,EACjCC,EAAW,QAAUD,EAErBN,EAAU,IACQG,EAAK,WACnBE,EAEA,IAAIG,IAAiBD,EAAW,QAAqB,MAAM,OAAWC,CAAI,CAC5E,EAEC,CAACL,EAAME,CAAK,CAAC,CAClB","names":["useEffect","useRef","useFormAutoReset","form","useFormHandler","event","handler","handlerRef","args"]}