@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 2.2 kB
Source Map (JSON)
{"version":3,"file":"binding.mjs","names":[],"sources":["../../../src/base-ui/FormKit/binding.ts"],"sourcesContent":["import type { ReactElement } from 'react';\n\nimport type { FieldBinding } from './type';\n\nconst isEventLike = (arg: unknown): arg is { target: HTMLInputElement } =>\n typeof arg === 'object' &&\n arg !== null &&\n 'target' in arg &&\n typeof (arg as { target: unknown }).target === 'object' &&\n (arg as { target: unknown }).target !== null;\n\nexport const defaultGetValue = (arg: unknown) => {\n if (!isEventLike(arg)) return arg;\n const { target } = arg;\n return target.type === 'checkbox' || target.type === 'radio' ? target.checked : target.value;\n};\n\nexport interface ResolvedBinding {\n emptyValue: unknown;\n getValue: (...args: any[]) => unknown;\n trigger: string;\n valueProp: string;\n}\n\nexport const resolveBinding = (child: ReactElement, override: FieldBinding): ResolvedBinding => {\n const { type } = child;\n const declared =\n typeof type === 'object' || typeof type === 'function'\n ? (type as { formBinding?: FieldBinding }).formBinding\n : undefined;\n const props = child.props as { type?: string };\n const nativeCheckable = type === 'input' && (props.type === 'checkbox' || props.type === 'radio');\n\n return {\n emptyValue: override.emptyValue ?? declared?.emptyValue,\n getValue: override.getValue ?? declared?.getValue ?? defaultGetValue,\n trigger: override.trigger ?? declared?.trigger ?? 'onChange',\n valueProp: override.valueProp ?? declared?.valueProp ?? (nativeCheckable ? 'checked' : 'value'),\n };\n};\n"],"mappings":";AAIA,MAAM,eAAe,QACnB,OAAO,QAAQ,YACf,QAAQ,QACR,YAAY,OACZ,OAAQ,IAA4B,WAAW,YAC9C,IAA4B,WAAW;AAE1C,MAAa,mBAAmB,QAAiB;CAC/C,IAAI,CAAC,YAAY,GAAG,GAAG,OAAO;CAC9B,MAAM,EAAE,WAAW;CACnB,OAAO,OAAO,SAAS,cAAc,OAAO,SAAS,UAAU,OAAO,UAAU,OAAO;AACzF;AASA,MAAa,kBAAkB,OAAqB,aAA4C;CAC9F,MAAM,EAAE,SAAS;CACjB,MAAM,WACJ,OAAO,SAAS,YAAY,OAAO,SAAS,aACvC,KAAwC,cACzC,KAAA;CACN,MAAM,QAAQ,MAAM;CACpB,MAAM,kBAAkB,SAAS,YAAY,MAAM,SAAS,cAAc,MAAM,SAAS;CAEzF,OAAO;EACL,YAAY,SAAS,cAAc,UAAU;EAC7C,UAAU,SAAS,YAAY,UAAU,YAAY;EACrD,SAAS,SAAS,WAAW,UAAU,WAAW;EAClD,WAAW,SAAS,aAAa,UAAU,cAAc,kBAAkB,YAAY;CACzF;AACF"}