gform-react 2.5.4 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/gform-react.development.js +93 -78
  2. package/dist/cjs/gform-react.development.js.map +1 -1
  3. package/dist/cjs/gform-react.production.js +1 -1
  4. package/dist/cjs/gform-react.production.js.map +1 -1
  5. package/dist/cjs/index.js +8 -7
  6. package/dist/esm/GForm.development.js +160 -0
  7. package/dist/esm/GForm.development.js.map +1 -0
  8. package/dist/esm/GForm.production.js +1 -1
  9. package/dist/esm/GForm.production.js.map +1 -1
  10. package/dist/esm/GInput.development.js +105 -0
  11. package/dist/esm/GInput.development.js.map +1 -0
  12. package/dist/esm/GInput.production.js +1 -1
  13. package/dist/esm/GInput.production.js.map +1 -1
  14. package/dist/esm/GValidator.development.js +118 -0
  15. package/dist/esm/GValidator.development.js.map +1 -0
  16. package/dist/esm/GValidator.production.js +1 -1
  17. package/dist/esm/GValidator.production.js.map +1 -1
  18. package/dist/esm/index.development.js +4 -761
  19. package/dist/esm/index.js +4 -4
  20. package/dist/esm/shared.development.js +411 -0
  21. package/dist/esm/shared.development.js.map +1 -0
  22. package/dist/esm/shared.production.js +1 -1
  23. package/dist/esm/shared.production.js.map +1 -1
  24. package/dist/esm/useFormSelector.development.js +6 -0
  25. package/dist/esm/useFormSelector.development.js.map +1 -0
  26. package/dist/esm/useFormSelector.production.js +2 -0
  27. package/dist/esm/useFormSelector.production.js.map +1 -0
  28. package/dist/index.d.ts +260 -291
  29. package/native/dist/cjs/{gform-react-native.development.js → gform-react.development.js} +94 -79
  30. package/native/dist/cjs/gform-react.development.js.map +1 -0
  31. package/native/dist/cjs/gform-react.production.js +2 -0
  32. package/native/dist/cjs/gform-react.production.js.map +1 -0
  33. package/native/dist/cjs/index.js +8 -7
  34. package/native/dist/esm/RNGForm.development.js +105 -0
  35. package/native/dist/esm/RNGForm.development.js.map +1 -0
  36. package/native/dist/esm/RNGForm.production.js +1 -1
  37. package/native/dist/esm/RNGForm.production.js.map +1 -1
  38. package/native/dist/esm/RNGInput.development.js +83 -0
  39. package/native/dist/esm/RNGInput.development.js.map +1 -0
  40. package/native/dist/esm/RNGInput.production.js +1 -1
  41. package/native/dist/esm/RNGInput.production.js.map +1 -1
  42. package/native/dist/esm/index.development.js +2 -592
  43. package/native/dist/esm/index.js +2 -2
  44. package/native/dist/esm/shared.development.js +431 -0
  45. package/native/dist/esm/shared.development.js.map +1 -0
  46. package/native/dist/esm/shared.production.js +1 -1
  47. package/native/dist/esm/shared.production.js.map +1 -1
  48. package/native/dist/index.d.ts +183 -73
  49. package/package.json +10 -7
  50. package/dist/esm/index.development.js.map +0 -1
  51. package/native/dist/cjs/gform-react-native.development.js.map +0 -1
  52. package/native/dist/cjs/gform-react-native.production.js +0 -2
  53. package/native/dist/cjs/gform-react-native.production.js.map +0 -1
  54. package/native/dist/esm/index.development.js.map +0 -1
  55. package/native/package.json +0 -15
@@ -0,0 +1,105 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
+ import React, { forwardRef, useCallback, useMemo, useEffect } from 'react';
5
+ import { u as useFormStore, a as useFormSelector, _ as _toURLSearchParams, b as _toRawData, c as _merge, d as _buildFormInitialValues, G as GFormContextProvider, s as selectFirstInvalidField } from './shared.development.js';
6
+ import '@babel/runtime/helpers/esm/defineProperty';
7
+
8
+ const _excluded = ["stateRef", "children", "onInit", "el"],
9
+ _excluded2 = ["children", "validators"];
10
+ const FormRenderer = forwardRef((_ref, ref) => {
11
+ let {
12
+ stateRef,
13
+ children,
14
+ onInit,
15
+ el: El
16
+ } = _ref,
17
+ rest = _objectWithoutProperties(_ref, _excluded);
18
+ const {
19
+ getState,
20
+ handlers
21
+ } = useFormStore();
22
+ const isFormInvalid = useFormSelector(selectFirstInvalidField);
23
+ const getFormState = useCallback(() => {
24
+ const fields = getState().fields;
25
+ const formState = _objectSpread(_objectSpread({}, fields), {}, {
26
+ isValid: !isFormInvalid,
27
+ isInvalid: isFormInvalid,
28
+ toRawData: options => _toRawData(fields, options),
29
+ toURLSearchParams: _toURLSearchParams,
30
+ checkValidity: () => {
31
+ for (const i in fields) {
32
+ const valid = fields[i].checkValidity();
33
+ if (!valid) {
34
+ return false;
35
+ }
36
+ }
37
+ return true;
38
+ },
39
+ dispatchChanges: changes => handlers._dispatchChanges({
40
+ fields: _merge({}, fields, changes)
41
+ })
42
+ });
43
+ if (stateRef) stateRef.current = formState;
44
+ return formState;
45
+ }, [isFormInvalid]);
46
+ const formComponent = useMemo(() => {
47
+ const state = getFormState();
48
+ const formChildren = typeof children === 'function' ? children(state) : children;
49
+ return React.createElement(El, _extends({}, rest, {
50
+ ref: ref
51
+ }), formChildren);
52
+ }, [getFormState, children]);
53
+ useEffect(() => {
54
+ const state = getFormState();
55
+ if (onInit) {
56
+ const changes = onInit(state);
57
+ if (changes) {
58
+ const _handler = _c => handlers._dispatchChanges({
59
+ fields: _merge({}, state, _c)
60
+ });
61
+ if (changes instanceof Promise) {
62
+ changes.then(_handler);
63
+ } else _handler(changes);
64
+ }
65
+ }
66
+ const dispatchers = {};
67
+ const fields = getState().fields;
68
+ for (const fieldKey in fields) {
69
+ dispatchers[fieldKey] = {
70
+ dispatchChanges: changes => handlers._dispatchChanges(changes, fieldKey),
71
+ checkValidity: () => {
72
+ const result = handlers._createInputChecker(state[fieldKey]);
73
+ handlers._dispatchChanges(state[fieldKey], fieldKey);
74
+ return result;
75
+ }
76
+ };
77
+ const field = fields[fieldKey];
78
+ if (!field.value) continue;
79
+ handlers._viHandler(field);
80
+ }
81
+ handlers._dispatchChanges({
82
+ fields: _merge(dispatchers, state)
83
+ });
84
+ }, [getFormState]);
85
+ return formComponent;
86
+ });
87
+ const RNGForm = forwardRef((_ref2, ref) => {
88
+ let {
89
+ children,
90
+ validators
91
+ } = _ref2,
92
+ props = _objectWithoutProperties(_ref2, _excluded2);
93
+ const initialState = useMemo(() => {
94
+ return _buildFormInitialValues(typeof children === 'function' ? children({}) : children);
95
+ }, [children]);
96
+ return React.createElement(GFormContextProvider, {
97
+ initialState: initialState,
98
+ validators: validators
99
+ }, React.createElement(FormRenderer, _extends({
100
+ ref: ref
101
+ }, props), children));
102
+ });
103
+
104
+ export { RNGForm };
105
+ //# sourceMappingURL=RNGForm.development.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNGForm.development.js","sources":["../../../src/RNGForm.tsx"],"sourcesContent":["import React, {useMemo, useEffect, forwardRef, useCallback} from \"react\";\r\nimport type { ReactNode, FC, ReactElement, Ref, RefObject } from \"react\";\r\n\r\nimport {_toRawData, _toURLSearchParams, _merge, _buildFormInitialValues} from \"./helpers\";\r\nimport {GFormContextProvider, useFormSelector, useFormStore} from \"./form-context\";\r\nimport type {RNGFormState, ToRawDataOptions} from \"./state\";\r\nimport type { GValidators } from \"./validations\";\r\nimport type { IForm, PartialForm } from \"./form\";\r\nimport type { GInputState } from \"./fields\";\r\nimport {selectFirstInvalidField} from \"./selectors\";\r\n\r\nconst FormRenderer = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({\r\n stateRef,\r\n children,\r\n onInit,\r\n el: El,\r\n ...rest\r\n }: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const {getState, handlers} = useFormStore();\r\n const isFormInvalid = useFormSelector(selectFirstInvalidField);\r\n\r\n const getFormState = useCallback(() => {\r\n const fields = getState<T>().fields;\r\n\r\n const formState: RNGFormState<T> = {\r\n ...fields,\r\n isValid: !isFormInvalid,\r\n isInvalid: isFormInvalid,\r\n toRawData: (options?: ToRawDataOptions<T>) => _toRawData(fields, options),\r\n toURLSearchParams: _toURLSearchParams,\r\n checkValidity: () => {\r\n for (const i in fields) {\r\n const valid = fields[i].checkValidity();\r\n if (!valid) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n dispatchChanges: (changes: PartialForm<T> & {\r\n [key: string]: Partial<GInputState<any>>\r\n }) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, fields, changes)\r\n })\r\n };\r\n\r\n if (stateRef) stateRef.current = formState;\r\n\r\n return formState;\r\n }, [isFormInvalid]);\r\n\r\n const formComponent = useMemo(() => {\r\n const state = getFormState();\r\n\r\n const formChildren = typeof children === 'function' ? children(state) : children;\r\n\r\n return <El {...rest} ref={ref}>\r\n {formChildren}\r\n </El>;\r\n }, [getFormState, children]);\r\n\r\n useEffect(() => {\r\n const state = getFormState();\r\n\r\n if (onInit) {\r\n const changes = onInit(state);\r\n if (changes) {\r\n const _handler = (_c: void | PartialForm<T>) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, state, _c)\r\n });\r\n if (changes instanceof Promise) {\r\n changes.then(_handler);\r\n } else _handler(changes);\r\n }\r\n }\r\n\r\n const dispatchers: Record<string, Record<string, (changes: Partial<GInputState>) => void>> = {};\r\n \r\n if (__DEBUG__) {\r\n console.log('checking for initial values');\r\n }\r\n const fields = getState().fields;\r\n\r\n for (const fieldKey in fields) {\r\n dispatchers[fieldKey] = {\r\n dispatchChanges: (changes: Partial<GInputState>) => handlers._dispatchChanges(changes, fieldKey),\r\n checkValidity: () => {\r\n const result = handlers._createInputChecker(state[fieldKey]);\r\n handlers._dispatchChanges(state[fieldKey], fieldKey);\r\n return result;\r\n }\r\n };\r\n\r\n const field = fields[fieldKey];\r\n\r\n //we don't want to apply validation on empty fields so skip it.\r\n if (!field.value) continue;\r\n\r\n if (__DEBUG__) {\r\n console.log(`found input '${fieldKey}', applying validation(s)`);\r\n }\r\n /**\r\n * We have to manually check for validations (checkValidity() will not result with validity.tooShort = true).\r\n * If an element has a minimum allowed value length, its dirty value flag is true, its value was last changed by a user edit (as opposed to a change made by a script), its value is not the empty string, and the length of the element's API value is less than the element's minimum allowed value length, then the element is suffering from being too short.\r\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#setting-minimum-input-length-requirements:-the-minlength-attribute\r\n */\r\n handlers._viHandler(field);\r\n }\r\n handlers._dispatchChanges({fields: _merge(dispatchers, state)});\r\n }, [getFormState]);\r\n\r\n return formComponent;\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: Ref<any> }) => ReactElement | null;\r\n\r\nexport type RNGFormProps<T> = {\r\n children?: ReactNode | ReactNode[] | ((state: RNGFormState<T>) => ReactNode | ReactNode[]);\r\n /** @param stateRef - pass a ref which will points to the current state of the form (optional). */\r\n stateRef?: RefObject<RNGFormState<T> | undefined>;\r\n /** @param validators - an object for handling validations (optional). */\r\n validators?: GValidators<T>;\r\n /** @param onInit - execute a handler once the form has initialized (optional). */\r\n onInit?: (state: RNGFormState<T>) => void | PartialForm<T> | Promise<void | PartialForm<T>>;\r\n /** @param el - the element to use as the form container. */\r\n el: FC<any>;\r\n};\r\n\r\n/**\r\n * build dynamic forms with validations.\r\n * @link Docs - https://gform-react.onrender.com\r\n * @link Npm - https://www.npmjs.com/package/gform-react\r\n */\r\nexport const RNGForm = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({children, validators, ...props}: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const initialState = useMemo(() => {\r\n return _buildFormInitialValues(\r\n typeof children === 'function'\r\n ? children({} as RNGFormState<T>)\r\n : children\r\n );\r\n }, [children]);\r\n\r\n return (\r\n <GFormContextProvider initialState={initialState} validators={validators}>\r\n <FormRenderer ref={ref} {...props}>\r\n {children}\r\n </FormRenderer>\r\n </GFormContextProvider>\r\n );\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: React.Ref<HTMLFormElement> }) => React.ReactElement | null;"],"names":["FormRenderer","forwardRef","_ref","ref","stateRef","children","onInit","el","El","rest","_objectWithoutProperties","_excluded","getState","handlers","useFormStore","isFormInvalid","useFormSelector","selectFirstInvalidField","getFormState","useCallback","fields","formState","_objectSpread","isValid","isInvalid","toRawData","options","_toRawData","toURLSearchParams","_toURLSearchParams","checkValidity","i","valid","dispatchChanges","changes","_dispatchChanges","_merge","current","formComponent","useMemo","state","formChildren","React","createElement","_extends","useEffect","_handler","_c","Promise","then","dispatchers","fieldKey","result","_createInputChecker","field","value","_viHandler","RNGForm","_ref2","validators","props","_excluded2","initialState","_buildFormInitialValues","GFormContextProvider"],"mappings":";;;;;;;;;AAWA,MAAMA,YAAY,GAAGC,UAAU,CAC3B,CAAAC,IAAA,EAMoBC,GAAmB,KAAK;EAAA,IANtC;MACFC,QAAQ;MACRC,QAAQ;MACRC,MAAM;AACNC,MAAAA,EAAE,EAAEC;AAES,KAAC,GAAAN,IAAA;AADXO,IAAAA,IAAI,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA,CAAA;EAEP,MAAM;IAACC,QAAQ;AAAEC,IAAAA;GAAS,GAAGC,YAAY,EAAE;AAC3C,EAAA,MAAMC,aAAa,GAAGC,eAAe,CAACC,uBAAuB,CAAC;AAE9D,EAAA,MAAMC,YAAY,GAAGC,WAAW,CAAC,MAAM;AACnC,IAAA,MAAMC,MAAM,GAAGR,QAAQ,EAAK,CAACQ,MAAM;AAEnC,IAAA,MAAMC,SAA0B,GAAAC,aAAA,CAAAA,aAAA,KACzBF,MAAM,CAAA,EAAA,EAAA,EAAA;MACTG,OAAO,EAAE,CAACR,aAAa;AACvBS,MAAAA,SAAS,EAAET,aAAa;MACxBU,SAAS,EAAGC,OAA6B,IAAKC,UAAU,CAACP,MAAM,EAAEM,OAAO,CAAC;AACzEE,MAAAA,iBAAiB,EAAEC,kBAAkB;MACrCC,aAAa,EAAEA,MAAM;AACjB,QAAA,KAAK,MAAMC,CAAC,IAAIX,MAAM,EAAE;UACpB,MAAMY,KAAK,GAAGZ,MAAM,CAACW,CAAC,CAAC,CAACD,aAAa,EAAE;UACvC,IAAI,CAACE,KAAK,EAAE;AACR,YAAA,OAAO,KAAK;AAChB,UAAA;AACJ,QAAA;AACA,QAAA,OAAO,IAAI;MACf,CAAC;AACDC,MAAAA,eAAe,EAAGC,OAEjB,IAAKrB,QAAQ,CAACsB,gBAAgB,CAAC;QAC5Bf,MAAM,EAAEgB,MAAM,CAEX,EAAE,EAAEhB,MAAM,EAAEc,OAAO;OACzB;KAAC,CACL;AAED,IAAA,IAAI9B,QAAQ,EAAEA,QAAQ,CAACiC,OAAO,GAAGhB,SAAS;AAE1C,IAAA,OAAOA,SAAS;AACpB,EAAA,CAAC,EAAE,CAACN,aAAa,CAAC,CAAC;AAEnB,EAAA,MAAMuB,aAAa,GAAGC,OAAO,CAAC,MAAM;AAChC,IAAA,MAAMC,KAAK,GAAGtB,YAAY,EAAE;AAE5B,IAAA,MAAMuB,YAAY,GAAG,OAAOpC,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAACmC,KAAK,CAAC,GAAGnC,QAAQ;IAEhF,OAAOqC,KAAA,CAAAC,aAAA,CAACnC,EAAE,EAAAoC,QAAA,KAAKnC,IAAI,EAAA;AAAEN,MAAAA,GAAG,EAAEA;AAAI,KAAA,CAAA,EACzBsC,YACD,CAAC;AACT,EAAA,CAAC,EAAE,CAACvB,YAAY,EAAEb,QAAQ,CAAC,CAAC;AAE5BwC,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAML,KAAK,GAAGtB,YAAY,EAAE;AAE5B,IAAA,IAAIZ,MAAM,EAAE;AACR,MAAA,MAAM4B,OAAO,GAAG5B,MAAM,CAACkC,KAAK,CAAC;AAC7B,MAAA,IAAIN,OAAO,EAAE;AACT,QAAA,MAAMY,QAAQ,GAAIC,EAAyB,IAAKlC,QAAQ,CAACsB,gBAAgB,CAAC;UACtEf,MAAM,EAAEgB,MAAM,CAEX,EAAE,EAAEI,KAAK,EAAEO,EAAE;AACpB,SAAC,CAAC;QACF,IAAIb,OAAO,YAAYc,OAAO,EAAE;AAC5Bd,UAAAA,OAAO,CAACe,IAAI,CAACH,QAAQ,CAAC;AAC1B,QAAA,CAAC,MAAMA,QAAQ,CAACZ,OAAO,CAAC;AAC5B,MAAA;AACJ,IAAA;IAEA,MAAMgB,WAAoF,GAAG,EAAE;AAK/F,IAAA,MAAM9B,MAAM,GAAGR,QAAQ,EAAE,CAACQ,MAAM;AAEhC,IAAA,KAAK,MAAM+B,QAAQ,IAAI/B,MAAM,EAAE;MAC3B8B,WAAW,CAACC,QAAQ,CAAC,GAAG;QACpBlB,eAAe,EAAGC,OAA6B,IAAKrB,QAAQ,CAACsB,gBAAgB,CAACD,OAAO,EAAEiB,QAAQ,CAAC;QAChGrB,aAAa,EAAEA,MAAM;UACjB,MAAMsB,MAAM,GAAGvC,QAAQ,CAACwC,mBAAmB,CAACb,KAAK,CAACW,QAAQ,CAAC,CAAC;UAC5DtC,QAAQ,CAACsB,gBAAgB,CAACK,KAAK,CAACW,QAAQ,CAAC,EAAEA,QAAQ,CAAC;AACpD,UAAA,OAAOC,MAAM;AACjB,QAAA;OACH;AAED,MAAA,MAAME,KAAK,GAAGlC,MAAM,CAAC+B,QAAQ,CAAC;AAG9B,MAAA,IAAI,CAACG,KAAK,CAACC,KAAK,EAAE;AAUlB1C,MAAAA,QAAQ,CAAC2C,UAAU,CAACF,KAAK,CAAC;AAC9B,IAAA;IACAzC,QAAQ,CAACsB,gBAAgB,CAAC;AAACf,MAAAA,MAAM,EAAEgB,MAAM,CAACc,WAAW,EAAEV,KAAK;AAAC,KAAC,CAAC;AACnE,EAAA,CAAC,EAAE,CAACtB,YAAY,CAAC,CAAC;AAElB,EAAA,OAAOoB,aAAa;AACxB,CACJ,CAA4E;AAmBrE,MAAMmB,OAAO,GAAGxD,UAAU,CAC7B,CAAAyD,KAAA,EAAyDvD,GAAmB,KAAK;EAAA,IAA3E;MAACE,QAAQ;AAAEsD,MAAAA;AAAqC,KAAC,GAAAD,KAAA;AAAvBE,IAAAA,KAAK,GAAAlD,wBAAA,CAAAgD,KAAA,EAAAG,UAAA,CAAA;AACjC,EAAA,MAAMC,YAAY,GAAGvB,OAAO,CAAC,MAAM;AAC/B,IAAA,OAAOwB,uBAAuB,CAC1B,OAAO1D,QAAQ,KAAK,UAAU,GACxBA,QAAQ,CAAC,EAAqB,CAAC,GAC/BA,QACV,CAAC;AACL,EAAA,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;AAEd,EAAA,OACIqC,KAAA,CAAAC,aAAA,CAACqB,oBAAoB,EAAA;AAACF,IAAAA,YAAY,EAAEA,YAAa;AAACH,IAAAA,UAAU,EAAEA;AAAW,GAAA,EACrEjB,KAAA,CAAAC,aAAA,CAAC3C,YAAY,EAAA4C,QAAA,CAAA;AAACzC,IAAAA,GAAG,EAAEA;AAAI,GAAA,EAAKyD,KAAK,CAAA,EAC5BvD,QACS,CACI,CAAC;AAE/B,CACJ;;;;"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/esm/extends";import e from"@babel/runtime/helpers/esm/objectSpread2";import r from"@babel/runtime/helpers/esm/objectWithoutProperties";import s,{forwardRef as n,useCallback as i,useMemo as o,useEffect as a}from"react";import{u as c,a as l,_ as d,b as f,c as m,d as h,G as p,s as u}from"./shared.production.js";const b=["stateRef","children","onInit","el"],y=["children","validators"],v=n(((n,h)=>{let{stateRef:p,children:y,onInit:v,el:R}=n,S=r(n,b);const{getState:g,handlers:j}=c(),k=l(u),I=i((()=>{const t=g().fields,r=e(e({},t),{},{isValid:!k,isInvalid:k,toRawData:e=>f(t,e),toURLSearchParams:d,checkValidity:()=>{for(const e in t){if(!t[e].checkValidity())return!1}return!0},dispatchChanges:e=>j.t({fields:m({},t,e)})});return p&&(p.current=r),r}),[k]),P=o((()=>{const e=I(),r="function"==typeof y?y(e):y;return s.createElement(R,t({},S,{ref:h}),r)}),[I,y]);return a((()=>{const t=I();if(v){const e=v(t);if(e){const r=e=>j.t({fields:m({},t,e)});e instanceof Promise?e.then(r):r(e)}}const e={},r=g().fields;for(const s in r){e[s]={dispatchChanges:t=>j.t(t,s),checkValidity:()=>{const e=j.i(t[s]);return j.t(t[s],s),e}};const n=r[s];n.value&&j.o(n)}j.t({fields:m(e,t)})}),[I]),P})),R=n(((e,n)=>{let{children:i,validators:a}=e,c=r(e,y);const l=o((()=>h("function"==typeof i?i({}):i)),[i]);return s.createElement(p,{key:l.key,initialState:l,validators:a},s.createElement(v,t({ref:n},c),i))}));export{R as RNGForm};
1
+ import e from"@babel/runtime/helpers/esm/extends";import t from"@babel/runtime/helpers/esm/objectSpread2";import s from"@babel/runtime/helpers/esm/objectWithoutProperties";import r,{forwardRef as a,useCallback as n,useMemo as i,useEffect as c}from"react";import{u as o,a as l,_ as d,b as h,c as f,d as p,G as m,s as u}from"./shared.production.js";const b=["stateRef","children","onInit","el"],g=["children","validators"],C=a(((a,p)=>{let{stateRef:m,children:g,onInit:C,el:_}=a,v=s(a,b);const{getState:y,handlers:k}=o(),I=l(u),R=n((()=>{const e=y().fields,s=t(t({},e),{},{isValid:!I,isInvalid:I,toRawData:t=>h(e,t),toURLSearchParams:d,checkValidity:()=>{for(const t in e){if(!e[t].checkValidity())return!1}return!0},dispatchChanges:t=>k._dispatchChanges({fields:f({},e,t)})});return m&&(m.current=s),s}),[I]),S=i((()=>{const t=R(),s="function"==typeof g?g(t):g;return r.createElement(_,e({},v,{ref:p}),s)}),[R,g]);return c((()=>{const e=R();if(C){const t=C(e);if(t){const s=t=>k._dispatchChanges({fields:f({},e,t)});t instanceof Promise?t.then(s):s(t)}}const t={},s=y().fields;for(const r in s){t[r]={dispatchChanges:e=>k._dispatchChanges(e,r),checkValidity:()=>{const t=k._createInputChecker(e[r]);return k._dispatchChanges(e[r],r),t}};const a=s[r];a.value&&k._viHandler(a)}k._dispatchChanges({fields:f(t,e)})}),[R]),S})),_=a(((t,a)=>{let{children:n,validators:c}=t,o=s(t,g);const l=i((()=>p("function"==typeof n?n({}):n)),[n]);return r.createElement(m,{initialState:l,validators:c},r.createElement(C,e({ref:a},o),n))}));export{_ as RNGForm};
2
2
  //# sourceMappingURL=RNGForm.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RNGForm.production.js","sources":["../../../src/RNGForm.tsx"],"sourcesContent":["import React, {useMemo, useEffect, forwardRef, useCallback} from \"react\";\r\nimport type { ReactNode, FC, ReactElement, Ref, RefObject } from \"react\";\r\n\r\nimport {_toRawData, _toURLSearchParams, _merge, _buildFormInitialValues} from \"./helpers\";\r\nimport {GFormContextProvider, useFormSelector, useFormStore} from \"./form-context\";\r\nimport type {RNGFormState, ToRawDataOptions} from \"./state\";\r\nimport type { GValidators } from \"./validations\";\r\nimport type { IForm, PartialForm } from \"./form\";\r\nimport type { GInputState } from \"./fields\";\r\nimport {selectFirstInvalidField} from \"./selectors\";\r\n\r\nconst FormRenderer = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({\r\n stateRef,\r\n children,\r\n onInit,\r\n el: El,\r\n ...rest\r\n }: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const {getState, handlers} = useFormStore();\r\n const isFormInvalid = useFormSelector(selectFirstInvalidField);\r\n\r\n const getFormState = useCallback(() => {\r\n const fields = getState<T>().fields;\r\n\r\n const formState: RNGFormState<T> = {\r\n ...fields,\r\n isValid: !isFormInvalid,\r\n isInvalid: isFormInvalid,\r\n toRawData: (options?: ToRawDataOptions<T>) => _toRawData(fields, options),\r\n toURLSearchParams: _toURLSearchParams,\r\n checkValidity: () => {\r\n for (const i in fields) {\r\n const valid = fields[i].checkValidity();\r\n if (!valid) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n dispatchChanges: (changes: PartialForm<T> & {\r\n [key: string]: Partial<GInputState<any>>\r\n }) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, fields, changes)\r\n })\r\n };\r\n\r\n if (stateRef) stateRef.current = formState;\r\n\r\n return formState;\r\n }, [isFormInvalid]);\r\n\r\n const formComponent = useMemo(() => {\r\n const state = getFormState();\r\n\r\n const formChildren = typeof children === 'function' ? children(state) : children;\r\n\r\n return <El {...rest} ref={ref}>\r\n {formChildren}\r\n </El>;\r\n }, [getFormState, children]);\r\n\r\n useEffect(() => {\r\n const state = getFormState();\r\n\r\n if (onInit) {\r\n const changes = onInit(state);\r\n if (changes) {\r\n const _handler = (_c: void | PartialForm<T>) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, state, _c)\r\n });\r\n if (changes instanceof Promise) {\r\n changes.then(_handler);\r\n } else _handler(changes);\r\n }\r\n }\r\n\r\n const dispatchers: Record<string, Record<string, (changes: Partial<GInputState>) => void>> = {};\r\n \r\n if (__DEBUG__) {\r\n console.log('checking for initial values');\r\n }\r\n const fields = getState().fields;\r\n\r\n for (const fieldKey in fields) {\r\n dispatchers[fieldKey] = {\r\n dispatchChanges: (changes: Partial<GInputState>) => handlers._dispatchChanges(changes, fieldKey),\r\n checkValidity: () => {\r\n const result = handlers._createInputChecker(state[fieldKey]);\r\n handlers._dispatchChanges(state[fieldKey], fieldKey);\r\n return result;\r\n }\r\n };\r\n\r\n const field = fields[fieldKey];\r\n\r\n //we don't want to apply validation on empty fields so skip it.\r\n if (!field.value) continue;\r\n\r\n if (__DEBUG__) {\r\n console.log(`found input '${fieldKey}', applying validation(s)`);\r\n }\r\n /**\r\n * We have to manually check for validations (checkValidity() will not result with validity.tooShort = true).\r\n * If an element has a minimum allowed value length, its dirty value flag is true, its value was last changed by a user edit (as opposed to a change made by a script), its value is not the empty string, and the length of the element's API value is less than the element's minimum allowed value length, then the element is suffering from being too short.\r\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#setting-minimum-input-length-requirements:-the-minlength-attribute\r\n */\r\n handlers._viHandler(field);\r\n }\r\n handlers._dispatchChanges({fields: _merge(dispatchers, state)});\r\n }, [getFormState]);\r\n\r\n return formComponent;\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: Ref<any> }) => ReactElement | null;\r\n\r\nexport type RNGFormProps<T> = {\r\n children?: ReactNode | ReactNode[] | ((state: RNGFormState<T>) => ReactNode | ReactNode[]);\r\n /** @param stateRef - pass a ref which will points to the current state of the form (optional). */\r\n stateRef?: RefObject<RNGFormState<T> | undefined>;\r\n /** @param validators - an object for handling validations (optional). */\r\n validators?: GValidators<T>;\r\n /** @param onInit - execute a handler once the form has initialized (optional). */\r\n onInit?: (state: RNGFormState<T>) => void | PartialForm<T> | Promise<void | PartialForm<T>>;\r\n /** @param el - the element to use as the form container. */\r\n el: FC<any>;\r\n};\r\n\r\n/**\r\n * build dynamic forms with validations.\r\n * @link Docs - https://gform-react.onrender.com\r\n * @link Npm - https://www.npmjs.com/package/gform-react\r\n */\r\nexport const RNGForm = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({children, validators, ...props}: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const initialState = useMemo(() => {\r\n return _buildFormInitialValues(\r\n typeof children === 'function'\r\n ? children({} as RNGFormState<T>)\r\n : children\r\n );\r\n }, [children]);\r\n\r\n return (\r\n <GFormContextProvider key={initialState.key} initialState={initialState} validators={validators}>\r\n <FormRenderer ref={ref} {...props}>\r\n {children}\r\n </FormRenderer>\r\n </GFormContextProvider>\r\n );\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: React.Ref<HTMLFormElement> }) => React.ReactElement | null;"],"names":["FormRenderer","forwardRef","_ref","ref","stateRef","children","onInit","el","El","rest","_objectWithoutProperties","_excluded","getState","handlers","useFormStore","isFormInvalid","useFormSelector","selectFirstInvalidField","getFormState","useCallback","fields","formState","_objectSpread","isValid","isInvalid","toRawData","options","_toRawData","toURLSearchParams","_toURLSearchParams","checkValidity","i","dispatchChanges","changes","_dispatchChanges","_merge","current","formComponent","useMemo","state","formChildren","React","createElement","_extends","useEffect","_handler","_c","Promise","then","dispatchers","fieldKey","result","_createInputChecker","field","value","_viHandler","RNGForm","_ref2","validators","props","_excluded2","initialState","_buildFormInitialValues","GFormContextProvider","key"],"mappings":"qaAWMA,EAAeC,GACjB,CAAAC,EAMoBC,KAAwB,IANtCC,SACFA,EAAQC,SACRA,EAAQC,OACRA,EACAC,GAAIC,GAEUN,EADXO,EAAIC,EAAAR,EAAAS,GAEP,MAAMC,SAACA,EAAQC,SAAEA,GAAYC,IACvBC,EAAgBC,EAAgBC,GAEhCC,EAAeC,GAAY,KAC7B,MAAMC,EAASR,IAAcQ,OAEvBC,EAA0BC,EAAAA,KACzBF,GAAM,GAAA,CACTG,SAAUR,EACVS,UAAWT,EACXU,UAAYC,GAAkCC,EAAWP,EAAQM,GACjEE,kBAAmBC,EACnBC,cAAeA,KACX,IAAK,MAAMC,KAAKX,EAAQ,CAEpB,IADcA,EAAOW,GAAGD,gBAEpB,OAAO,CAEf,CACA,OAAO,CAAI,EAEfE,gBAAkBC,GAEZpB,EAASqB,EAAiB,CAC5Bd,OAAQe,EAEL,GAAIf,EAAQa,OAMvB,OAFI7B,IAAUA,EAASgC,QAAUf,GAE1BA,CAAS,GACjB,CAACN,IAEEsB,EAAgBC,GAAQ,KAC1B,MAAMC,EAAQrB,IAERsB,EAAmC,mBAAbnC,EAA0BA,EAASkC,GAASlC,EAExE,OAAOoC,EAAAC,cAAClC,EAAEmC,KAAKlC,EAAI,CAAEN,IAAKA,IACrBqC,EACA,GACN,CAACtB,EAAcb,IAsDlB,OApDAuC,GAAU,KACN,MAAML,EAAQrB,IAEd,GAAIZ,EAAQ,CACR,MAAM2B,EAAU3B,EAAOiC,GACvB,GAAIN,EAAS,CACT,MAAMY,EAAYC,GAA8BjC,EAASqB,EAAiB,CACtEd,OAAQe,EAEL,GAAII,EAAOO,KAEdb,aAAmBc,QACnBd,EAAQe,KAAKH,GACVA,EAASZ,EACpB,CACJ,CAEA,MAAMgB,EAAuF,CAAA,EAKvF7B,EAASR,IAAWQ,OAE1B,IAAK,MAAM8B,KAAY9B,EAAQ,CAC3B6B,EAAYC,GAAY,CACpBlB,gBAAkBC,GAAkCpB,EAASqB,EAAiBD,EAASiB,GACvFpB,cAAeA,KACX,MAAMqB,EAAStC,EAASuC,EAAoBb,EAAMW,IAElD,OADArC,EAASqB,EAAiBK,EAAMW,GAAWA,GACpCC,CAAM,GAIrB,MAAME,EAAQjC,EAAO8B,GAGhBG,EAAMC,OAUXzC,EAAS0C,EAAWF,EACxB,CACAxC,EAASqB,EAAiB,CAACd,OAAQe,EAAOc,EAAaV,IAAQ,GAChE,CAACrB,IAEGmB,CAAa,IAqBfmB,EAAUvD,GACnB,CAAAwD,EAAyDtD,KAAwB,IAA3EE,SAACA,EAAQqD,WAAEA,GAAsCD,EAAvBE,EAAKjD,EAAA+C,EAAAG,GACjC,MAAMC,EAAevB,GAAQ,IAClBwB,EACiB,mBAAbzD,EACDA,EAAS,CAAA,GACTA,IAEX,CAACA,IAEJ,OACIoC,EAAAC,cAACqB,EAAoB,CAACC,IAAKH,EAAaG,IAAKH,aAAcA,EAAcH,WAAYA,GACjFjB,EAAAC,cAAC1C,EAAY2C,EAAA,CAACxC,IAAKA,GAASwD,GACvBtD,GAEc"}
1
+ {"version":3,"file":"RNGForm.production.js","sources":["../../../src/RNGForm.tsx"],"sourcesContent":["import React, {useMemo, useEffect, forwardRef, useCallback} from \"react\";\r\nimport type { ReactNode, FC, ReactElement, Ref, RefObject } from \"react\";\r\n\r\nimport {_toRawData, _toURLSearchParams, _merge, _buildFormInitialValues} from \"./helpers\";\r\nimport {GFormContextProvider, useFormSelector, useFormStore} from \"./form-context\";\r\nimport type {RNGFormState, ToRawDataOptions} from \"./state\";\r\nimport type { GValidators } from \"./validations\";\r\nimport type { IForm, PartialForm } from \"./form\";\r\nimport type { GInputState } from \"./fields\";\r\nimport {selectFirstInvalidField} from \"./selectors\";\r\n\r\nconst FormRenderer = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({\r\n stateRef,\r\n children,\r\n onInit,\r\n el: El,\r\n ...rest\r\n }: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const {getState, handlers} = useFormStore();\r\n const isFormInvalid = useFormSelector(selectFirstInvalidField);\r\n\r\n const getFormState = useCallback(() => {\r\n const fields = getState<T>().fields;\r\n\r\n const formState: RNGFormState<T> = {\r\n ...fields,\r\n isValid: !isFormInvalid,\r\n isInvalid: isFormInvalid,\r\n toRawData: (options?: ToRawDataOptions<T>) => _toRawData(fields, options),\r\n toURLSearchParams: _toURLSearchParams,\r\n checkValidity: () => {\r\n for (const i in fields) {\r\n const valid = fields[i].checkValidity();\r\n if (!valid) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n dispatchChanges: (changes: PartialForm<T> & {\r\n [key: string]: Partial<GInputState<any>>\r\n }) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, fields, changes)\r\n })\r\n };\r\n\r\n if (stateRef) stateRef.current = formState;\r\n\r\n return formState;\r\n }, [isFormInvalid]);\r\n\r\n const formComponent = useMemo(() => {\r\n const state = getFormState();\r\n\r\n const formChildren = typeof children === 'function' ? children(state) : children;\r\n\r\n return <El {...rest} ref={ref}>\r\n {formChildren}\r\n </El>;\r\n }, [getFormState, children]);\r\n\r\n useEffect(() => {\r\n const state = getFormState();\r\n\r\n if (onInit) {\r\n const changes = onInit(state);\r\n if (changes) {\r\n const _handler = (_c: void | PartialForm<T>) => handlers._dispatchChanges({\r\n fields: _merge<IForm<T> & {\r\n [key: string]: GInputState;\r\n }>({}, state, _c)\r\n });\r\n if (changes instanceof Promise) {\r\n changes.then(_handler);\r\n } else _handler(changes);\r\n }\r\n }\r\n\r\n const dispatchers: Record<string, Record<string, (changes: Partial<GInputState>) => void>> = {};\r\n \r\n if (__DEBUG__) {\r\n console.log('checking for initial values');\r\n }\r\n const fields = getState().fields;\r\n\r\n for (const fieldKey in fields) {\r\n dispatchers[fieldKey] = {\r\n dispatchChanges: (changes: Partial<GInputState>) => handlers._dispatchChanges(changes, fieldKey),\r\n checkValidity: () => {\r\n const result = handlers._createInputChecker(state[fieldKey]);\r\n handlers._dispatchChanges(state[fieldKey], fieldKey);\r\n return result;\r\n }\r\n };\r\n\r\n const field = fields[fieldKey];\r\n\r\n //we don't want to apply validation on empty fields so skip it.\r\n if (!field.value) continue;\r\n\r\n if (__DEBUG__) {\r\n console.log(`found input '${fieldKey}', applying validation(s)`);\r\n }\r\n /**\r\n * We have to manually check for validations (checkValidity() will not result with validity.tooShort = true).\r\n * If an element has a minimum allowed value length, its dirty value flag is true, its value was last changed by a user edit (as opposed to a change made by a script), its value is not the empty string, and the length of the element's API value is less than the element's minimum allowed value length, then the element is suffering from being too short.\r\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#setting-minimum-input-length-requirements:-the-minlength-attribute\r\n */\r\n handlers._viHandler(field);\r\n }\r\n handlers._dispatchChanges({fields: _merge(dispatchers, state)});\r\n }, [getFormState]);\r\n\r\n return formComponent;\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: Ref<any> }) => ReactElement | null;\r\n\r\nexport type RNGFormProps<T> = {\r\n children?: ReactNode | ReactNode[] | ((state: RNGFormState<T>) => ReactNode | ReactNode[]);\r\n /** @param stateRef - pass a ref which will points to the current state of the form (optional). */\r\n stateRef?: RefObject<RNGFormState<T> | undefined>;\r\n /** @param validators - an object for handling validations (optional). */\r\n validators?: GValidators<T>;\r\n /** @param onInit - execute a handler once the form has initialized (optional). */\r\n onInit?: (state: RNGFormState<T>) => void | PartialForm<T> | Promise<void | PartialForm<T>>;\r\n /** @param el - the element to use as the form container. */\r\n el: FC<any>;\r\n};\r\n\r\n/**\r\n * build dynamic forms with validations.\r\n * @link Docs - https://gform-react.onrender.com\r\n * @link Npm - https://www.npmjs.com/package/gform-react\r\n */\r\nexport const RNGForm = forwardRef<any, RNGFormProps<any>>(\r\n <T, >({children, validators, ...props}: RNGFormProps<T>, ref: React.Ref<any>) => {\r\n const initialState = useMemo(() => {\r\n return _buildFormInitialValues(\r\n typeof children === 'function'\r\n ? children({} as RNGFormState<T>)\r\n : children\r\n );\r\n }, [children]);\r\n\r\n return (\r\n <GFormContextProvider initialState={initialState} validators={validators}>\r\n <FormRenderer ref={ref} {...props}>\r\n {children}\r\n </FormRenderer>\r\n </GFormContextProvider>\r\n );\r\n }\r\n) as <T>(props: RNGFormProps<T> & { ref?: React.Ref<HTMLFormElement> }) => React.ReactElement | null;"],"names":["FormRenderer","forwardRef","_ref","ref","stateRef","children","onInit","el","El","rest","_objectWithoutProperties","_excluded","getState","handlers","useFormStore","isFormInvalid","useFormSelector","selectFirstInvalidField","getFormState","useCallback","fields","formState","_objectSpread","isValid","isInvalid","toRawData","options","_toRawData","toURLSearchParams","_toURLSearchParams","checkValidity","i","dispatchChanges","changes","_dispatchChanges","_merge","current","formComponent","useMemo","state","formChildren","React","createElement","_extends","useEffect","_handler","_c","Promise","then","dispatchers","fieldKey","result","_createInputChecker","field","value","_viHandler","RNGForm","_ref2","validators","props","_excluded2","initialState","_buildFormInitialValues","GFormContextProvider"],"mappings":"qaAWMA,EAAeC,GACjB,CAAAC,EAMoBC,KAAwB,IANtCC,SACFA,EAAQC,SACRA,EAAQC,OACRA,EACAC,GAAIC,GAEUN,EADXO,EAAIC,EAAAR,EAAAS,GAEP,MAAMC,SAACA,EAAQC,SAAEA,GAAYC,IACvBC,EAAgBC,EAAgBC,GAEhCC,EAAeC,GAAY,KAC7B,MAAMC,EAASR,IAAcQ,OAEvBC,EAA0BC,EAAAA,KACzBF,GAAM,GAAA,CACTG,SAAUR,EACVS,UAAWT,EACXU,UAAYC,GAAkCC,EAAWP,EAAQM,GACjEE,kBAAmBC,EACnBC,cAAeA,KACX,IAAK,MAAMC,KAAKX,EAAQ,CAEpB,IADcA,EAAOW,GAAGD,gBAEpB,OAAO,CAEf,CACA,OAAO,CAAI,EAEfE,gBAAkBC,GAEZpB,EAASqB,iBAAiB,CAC5Bd,OAAQe,EAEL,GAAIf,EAAQa,OAMvB,OAFI7B,IAAUA,EAASgC,QAAUf,GAE1BA,CAAS,GACjB,CAACN,IAEEsB,EAAgBC,GAAQ,KAC1B,MAAMC,EAAQrB,IAERsB,EAAmC,mBAAbnC,EAA0BA,EAASkC,GAASlC,EAExE,OAAOoC,EAAAC,cAAClC,EAAEmC,KAAKlC,EAAI,CAAEN,IAAKA,IACrBqC,EACA,GACN,CAACtB,EAAcb,IAsDlB,OApDAuC,GAAU,KACN,MAAML,EAAQrB,IAEd,GAAIZ,EAAQ,CACR,MAAM2B,EAAU3B,EAAOiC,GACvB,GAAIN,EAAS,CACT,MAAMY,EAAYC,GAA8BjC,EAASqB,iBAAiB,CACtEd,OAAQe,EAEL,GAAII,EAAOO,KAEdb,aAAmBc,QACnBd,EAAQe,KAAKH,GACVA,EAASZ,EACpB,CACJ,CAEA,MAAMgB,EAAuF,CAAA,EAKvF7B,EAASR,IAAWQ,OAE1B,IAAK,MAAM8B,KAAY9B,EAAQ,CAC3B6B,EAAYC,GAAY,CACpBlB,gBAAkBC,GAAkCpB,EAASqB,iBAAiBD,EAASiB,GACvFpB,cAAeA,KACX,MAAMqB,EAAStC,EAASuC,oBAAoBb,EAAMW,IAElD,OADArC,EAASqB,iBAAiBK,EAAMW,GAAWA,GACpCC,CAAM,GAIrB,MAAME,EAAQjC,EAAO8B,GAGhBG,EAAMC,OAUXzC,EAAS0C,WAAWF,EACxB,CACAxC,EAASqB,iBAAiB,CAACd,OAAQe,EAAOc,EAAaV,IAAQ,GAChE,CAACrB,IAEGmB,CAAa,IAqBfmB,EAAUvD,GACnB,CAAAwD,EAAyDtD,KAAwB,IAA3EE,SAACA,EAAQqD,WAAEA,GAAsCD,EAAvBE,EAAKjD,EAAA+C,EAAAG,GACjC,MAAMC,EAAevB,GAAQ,IAClBwB,EACiB,mBAAbzD,EACDA,EAAS,CAAA,GACTA,IAEX,CAACA,IAEJ,OACIoC,EAAAC,cAACqB,EAAoB,CAACF,aAAcA,EAAcH,WAAYA,GAC1DjB,EAAAC,cAAC1C,EAAY2C,EAAA,CAACxC,IAAKA,GAASwD,GACvBtD,GAEc"}
@@ -0,0 +1,83 @@
1
+ import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
3
+ import React, { forwardRef, useMemo, useEffect, memo } from 'react';
4
+ import { TextInput } from 'react-native';
5
+ import { a as useFormSelector, u as useFormStore, m as makeSelectFields, e as _debounce } from './shared.development.js';
6
+ import '@babel/runtime/helpers/esm/defineProperty';
7
+
8
+ const _excluded = ["formKey", "element", "type", "fetch", "fetchDeps", "debounce", "defaultValue", "validatorKey", "value"];
9
+ const _RNGInput = forwardRef((_ref, ref) => {
10
+ let {
11
+ formKey,
12
+ element,
13
+ type,
14
+ fetch,
15
+ fetchDeps,
16
+ debounce = 300,
17
+ defaultValue,
18
+ validatorKey,
19
+ value
20
+ } = _ref,
21
+ rest = _objectWithoutProperties(_ref, _excluded);
22
+ const inputState = useFormSelector(state => state.fields[formKey]);
23
+ const store = useFormStore();
24
+ const _element = useMemo(() => {
25
+ const value = inputState.value || '';
26
+ const _props = _objectSpread(_objectSpread({}, rest), {}, {
27
+ value,
28
+ inputMode: type,
29
+ ref
30
+ });
31
+ _props.onEndEditing = rest.onEndEditing ? e => {
32
+ store.handlers._viHandler(inputState);
33
+ rest.onEndEditing(e);
34
+ } : () => {
35
+ store.handlers._viHandler(inputState);
36
+ };
37
+ _props.onChangeText = rest.onChangeText ? e => {
38
+ store.handlers._updateInputHandler(inputState, undefined, {
39
+ value: e
40
+ });
41
+ rest.onChangeText(e);
42
+ } : e => {
43
+ store.handlers._updateInputHandler(inputState, undefined, {
44
+ value: e
45
+ });
46
+ };
47
+ if (!inputState.touched) {
48
+ _props.onFocus = rest.onFocus ? e => {
49
+ rest.onFocus(e);
50
+ inputState.dispatchChanges({
51
+ touched: true
52
+ });
53
+ } : () => {
54
+ inputState.dispatchChanges({
55
+ touched: true
56
+ });
57
+ };
58
+ }
59
+ if (element) {
60
+ return element(inputState, _props);
61
+ }
62
+ return React.createElement(TextInput, _props);
63
+ }, [inputState, element]);
64
+ const _fetchDeps = useFormSelector(makeSelectFields(fetchDeps));
65
+ const stableFetchDeps = useMemo(() => JSON.stringify(_fetchDeps), [_fetchDeps]);
66
+ useEffect(() => {
67
+ if (fetch) {
68
+ _debounce(debounce, `${inputState.gid}-fetch`).then(() => {
69
+ const res = fetch(inputState, store.getState().fields);
70
+ if (res instanceof Promise) {
71
+ res.then(state => state && store.handlers._dispatchChanges(state, formKey));
72
+ } else if (res) {
73
+ store.handlers._dispatchChanges(res, formKey);
74
+ }
75
+ });
76
+ }
77
+ }, [stableFetchDeps]);
78
+ return _element;
79
+ });
80
+ const RNGInput = memo(_RNGInput);
81
+
82
+ export { RNGInput };
83
+ //# sourceMappingURL=RNGInput.development.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNGInput.development.js","sources":["../../../src/fields/RNGInput.tsx"],"sourcesContent":["import React, {forwardRef, memo, type ReactNode, useEffect, useMemo} from 'react';\r\nimport {TextInput} from 'react-native';\r\n\r\nimport {_debounce} from '../helpers';\r\nimport type {GInputState, RNGInputProps} from '.';\r\nimport {useFormSelector, useFormStore} from \"../form-context\";\r\nimport {makeSelectFields} from \"../selectors\";\r\n\r\nconst _RNGInput = forwardRef<any, RNGInputProps>(({\r\n formKey,\r\n element,\r\n type,\r\n fetch,\r\n fetchDeps,\r\n debounce = 300,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n defaultValue,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n validatorKey,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n value,\r\n ...rest\r\n}, ref) => {\r\n const inputState = useFormSelector(state => state.fields[formKey]);\r\n const store = useFormStore();\r\n\r\n const _element = useMemo(() => {\r\n const value = inputState.value || '';\r\n\r\n const _props = {\r\n ...rest,\r\n value,\r\n inputMode: type,\r\n ref\r\n };\r\n\r\n _props.onEndEditing = rest.onEndEditing ?\r\n (e) => {\r\n store.handlers._viHandler(inputState);\r\n rest.onEndEditing!(e);\r\n }\r\n :\r\n () => {\r\n store.handlers._viHandler(inputState);\r\n };\r\n _props.onChangeText = rest.onChangeText ?\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n rest.onChangeText!(e);\r\n }\r\n :\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n };\r\n\r\n if (!inputState.touched) {\r\n _props.onFocus = rest.onFocus ?\r\n (e) => {\r\n rest.onFocus!(e);\r\n inputState.dispatchChanges({touched: true});\r\n }\r\n :\r\n () => {\r\n inputState.dispatchChanges({touched: true});\r\n };\r\n }\r\n\r\n if (element) {\r\n return (element as (input: GInputState, props: any) => ReactNode)(inputState, _props);\r\n }\r\n\r\n return <TextInput {..._props}/>;\r\n }, [inputState, element]);\r\n\r\n const _fetchDeps = useFormSelector(makeSelectFields(fetchDeps));\r\n const stableFetchDeps = useMemo(() => JSON.stringify(_fetchDeps), [_fetchDeps]);\r\n\r\n useEffect(() => {\r\n if (fetch) {\r\n _debounce(debounce, `${inputState.gid}-fetch`).then(() => {\r\n const res = fetch(inputState, store.getState().fields);\r\n if (res instanceof Promise) {\r\n res.then((state) => state && store.handlers._dispatchChanges(state, formKey));\r\n } else if (res) {\r\n store.handlers._dispatchChanges(res, formKey);\r\n }\r\n });\r\n }\r\n }, [stableFetchDeps]);\r\n\r\n return _element;\r\n});\r\n\r\nexport const RNGInput = memo(_RNGInput);"],"names":["_RNGInput","forwardRef","_ref","ref","formKey","element","type","fetch","fetchDeps","debounce","defaultValue","validatorKey","value","rest","_objectWithoutProperties","_excluded","inputState","useFormSelector","state","fields","store","useFormStore","_element","useMemo","_props","_objectSpread","inputMode","onEndEditing","e","handlers","_viHandler","onChangeText","_updateInputHandler","undefined","touched","onFocus","dispatchChanges","React","createElement","TextInput","_fetchDeps","makeSelectFields","stableFetchDeps","JSON","stringify","useEffect","_debounce","gid","then","res","getState","Promise","_dispatchChanges","RNGInput","memo"],"mappings":";;;;;;;;AAQA,MAAMA,SAAS,GAAGC,UAAU,CAAqB,CAAAC,IAAA,EAc9CC,GAAG,KAAK;EAAA,IAduC;MAC9CC,OAAO;MACPC,OAAO;MACPC,IAAI;MACJC,KAAK;MACLC,SAAS;AACTC,MAAAA,QAAQ,GAAG,GAAG;MAEdC,YAAY;MAEZC,YAAY;AAEZC,MAAAA;AAEJ,KAAC,GAAAV,IAAA;AADMW,IAAAA,IAAI,GAAAC,wBAAA,CAAAZ,IAAA,EAAAa,SAAA,CAAA;AAEP,EAAA,MAAMC,UAAU,GAAGC,eAAe,CAACC,KAAK,IAAIA,KAAK,CAACC,MAAM,CAACf,OAAO,CAAC,CAAC;AAClE,EAAA,MAAMgB,KAAK,GAAGC,YAAY,EAAE;AAE5B,EAAA,MAAMC,QAAQ,GAAGC,OAAO,CAAC,MAAM;AAC3B,IAAA,MAAMX,KAAK,GAAGI,UAAU,CAACJ,KAAK,IAAI,EAAE;AAEpC,IAAA,MAAMY,MAAM,GAAAC,aAAA,CAAAA,aAAA,KACLZ,IAAI,CAAA,EAAA,EAAA,EAAA;MACPD,KAAK;AACLc,MAAAA,SAAS,EAAEpB,IAAI;AACfH,MAAAA;KAAG,CACN;IAEDqB,MAAM,CAACG,YAAY,GAAGd,IAAI,CAACc,YAAY,GAClCC,CAAC,IAAK;AACHR,MAAAA,KAAK,CAACS,QAAQ,CAACC,UAAU,CAACd,UAAU,CAAC;AACrCH,MAAAA,IAAI,CAACc,YAAY,CAAEC,CAAC,CAAC;AACzB,IAAA,CAAC,GAED,MAAM;AACFR,MAAAA,KAAK,CAACS,QAAQ,CAACC,UAAU,CAACd,UAAU,CAAC;IACzC,CAAC;IACLQ,MAAM,CAACO,YAAY,GAAGlB,IAAI,CAACkB,YAAY,GAClCH,CAAC,IAAK;MACHR,KAAK,CAACS,QAAQ,CAACG,mBAAmB,CAAChB,UAAU,EAAEiB,SAAS,EAAE;AAACrB,QAAAA,KAAK,EAAEgB;AAAC,OAAC,CAAC;AACrEf,MAAAA,IAAI,CAACkB,YAAY,CAAEH,CAAC,CAAC;IACzB,CAAC,GAEAA,CAAC,IAAK;MACHR,KAAK,CAACS,QAAQ,CAACG,mBAAmB,CAAChB,UAAU,EAAEiB,SAAS,EAAE;AAACrB,QAAAA,KAAK,EAAEgB;AAAC,OAAC,CAAC;IACzE,CAAC;AAEL,IAAA,IAAI,CAACZ,UAAU,CAACkB,OAAO,EAAE;MACrBV,MAAM,CAACW,OAAO,GAAGtB,IAAI,CAACsB,OAAO,GACxBP,CAAC,IAAK;AACHf,QAAAA,IAAI,CAACsB,OAAO,CAAEP,CAAC,CAAC;QAChBZ,UAAU,CAACoB,eAAe,CAAC;AAACF,UAAAA,OAAO,EAAE;AAAI,SAAC,CAAC;AAC/C,MAAA,CAAC,GAED,MAAM;QACFlB,UAAU,CAACoB,eAAe,CAAC;AAACF,UAAAA,OAAO,EAAE;AAAI,SAAC,CAAC;MAC/C,CAAC;AACT,IAAA;AAEA,IAAA,IAAI7B,OAAO,EAAE;AACT,MAAA,OAAQA,OAAO,CAAmDW,UAAU,EAAEQ,MAAM,CAAC;AACzF,IAAA;AAEA,IAAA,OAAOa,KAAA,CAAAC,aAAA,CAACC,SAAS,EAAKf,MAAQ,CAAC;AACnC,EAAA,CAAC,EAAE,CAACR,UAAU,EAAEX,OAAO,CAAC,CAAC;EAEzB,MAAMmC,UAAU,GAAGvB,eAAe,CAACwB,gBAAgB,CAACjC,SAAS,CAAC,CAAC;AAC/D,EAAA,MAAMkC,eAAe,GAAGnB,OAAO,CAAC,MAAMoB,IAAI,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;AAE/EK,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAItC,KAAK,EAAE;AACPuC,MAAAA,SAAS,CAACrC,QAAQ,EAAE,CAAA,EAAGO,UAAU,CAAC+B,GAAG,CAAA,MAAA,CAAQ,CAAC,CAACC,IAAI,CAAC,MAAM;AACtD,QAAA,MAAMC,GAAG,GAAG1C,KAAK,CAACS,UAAU,EAAEI,KAAK,CAAC8B,QAAQ,EAAE,CAAC/B,MAAM,CAAC;QACtD,IAAI8B,GAAG,YAAYE,OAAO,EAAE;AACxBF,UAAAA,GAAG,CAACD,IAAI,CAAE9B,KAAK,IAAKA,KAAK,IAAIE,KAAK,CAACS,QAAQ,CAACuB,gBAAgB,CAAClC,KAAK,EAAEd,OAAO,CAAC,CAAC;QACjF,CAAC,MAAM,IAAI6C,GAAG,EAAE;UACZ7B,KAAK,CAACS,QAAQ,CAACuB,gBAAgB,CAACH,GAAG,EAAE7C,OAAO,CAAC;AACjD,QAAA;AACJ,MAAA,CAAC,CAAC;AACN,IAAA;AACJ,EAAA,CAAC,EAAE,CAACsC,eAAe,CAAC,CAAC;AAErB,EAAA,OAAOpB,QAAQ;AACnB,CAAC,CAAC;MAEW+B,QAAQ,GAAGC,IAAI,CAACtD,SAAS;;;;"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/esm/objectSpread2";import t from"@babel/runtime/helpers/esm/objectWithoutProperties";import o,{forwardRef as r,useMemo as a,useEffect as u,memo as m}from"react";import{TextInput as c}from"react-native";import{a as s,u as i,m as l,e as n}from"./shared.production.js";const f=["formKey","element","type","fetch","fetchDeps","debounce","defaultValue","validatorKey","value"],p=m(r(((r,m)=>{let{formKey:p,element:d,type:h,fetch:v,fetchDeps:b,debounce:y=300,defaultValue:K,validatorKey:j,value:D}=r,P=t(r,f);const S=s((e=>e.fields[p])),V=i(),x=a((()=>{const t=S.value||"",r=e(e({},P),{},{value:t,inputMode:h,ref:m});return r.onEndEditing=P.onEndEditing?e=>{V.handlers.t(S),P.onEndEditing(e)}:()=>{V.handlers.t(S)},r.onChangeText=P.onChangeText?e=>{V.handlers.o(S,void 0,{value:e}),P.onChangeText(e)}:e=>{V.handlers.o(S,void 0,{value:e})},S.touched||(r.onFocus=P.onFocus?e=>{P.onFocus(e),S.dispatchChanges({touched:!0})}:()=>{S.dispatchChanges({touched:!0})}),d?d(S,r):o.createElement(c,r)}),[S,d]),J=s(l(b)),M=a((()=>JSON.stringify(J)),[J]);return u((()=>{v&&n(y,`${S.gid}-fetch`).then((()=>{const e=v(S,V.getState().fields);e instanceof Promise?e.then((e=>e&&V.handlers.u(e,p))):e&&V.handlers.u(e,p)}))}),[M]),x})));export{p as RNGInput};
1
+ import e from"@babel/runtime/helpers/esm/objectSpread2";import t from"@babel/runtime/helpers/esm/objectWithoutProperties";import n,{forwardRef as a,useMemo as o,useEffect as r,memo as d}from"react";import{TextInput as s}from"react-native";import{a as i,u as l,m as h,e as u}from"./shared.production.js";const c=["formKey","element","type","fetch","fetchDeps","debounce","defaultValue","validatorKey","value"],p=d(a(((a,d)=>{let{formKey:p,element:m,type:f,fetch:g,fetchDeps:v,debounce:b=300,defaultValue:y,validatorKey:C,value:E}=a,_=t(a,c);const x=i((e=>e.fields[p])),H=l(),K=o((()=>{const t=x.value||"",a=e(e({},_),{},{value:t,inputMode:f,ref:d});return a.onEndEditing=_.onEndEditing?e=>{H.handlers._viHandler(x),_.onEndEditing(e)}:()=>{H.handlers._viHandler(x)},a.onChangeText=_.onChangeText?e=>{H.handlers._updateInputHandler(x,void 0,{value:e}),_.onChangeText(e)}:e=>{H.handlers._updateInputHandler(x,void 0,{value:e})},x.touched||(a.onFocus=_.onFocus?e=>{_.onFocus(e),x.dispatchChanges({touched:!0})}:()=>{x.dispatchChanges({touched:!0})}),m?m(x,a):n.createElement(s,a)}),[x,m]),j=i(h(v)),F=o((()=>JSON.stringify(j)),[j]);return r((()=>{g&&u(b,`${x.gid}-fetch`).then((()=>{const e=g(x,H.getState().fields);e instanceof Promise?e.then((e=>e&&H.handlers._dispatchChanges(e,p))):e&&H.handlers._dispatchChanges(e,p)}))}),[F]),K})));export{p as RNGInput};
2
2
  //# sourceMappingURL=RNGInput.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RNGInput.production.js","sources":["../../../src/fields/RNGInput.tsx"],"sourcesContent":["import React, {forwardRef, memo, type ReactNode, useEffect, useMemo} from 'react';\r\nimport {TextInput} from 'react-native';\r\n\r\nimport {_debounce} from '../helpers';\r\nimport type {GInputState, RNGInputProps} from '.';\r\nimport {useFormSelector, useFormStore} from \"../form-context\";\r\nimport {makeSelectFields} from \"../selectors\";\r\n\r\nconst _RNGInput = forwardRef<any, RNGInputProps>(({\r\n formKey,\r\n element,\r\n type,\r\n fetch,\r\n fetchDeps,\r\n debounce = 300,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n defaultValue,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n validatorKey,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n value,\r\n ...rest\r\n}, ref) => {\r\n const inputState = useFormSelector(state => state.fields[formKey]);\r\n const store = useFormStore();\r\n\r\n const _element = useMemo(() => {\r\n const value = inputState.value || '';\r\n\r\n const _props = {\r\n ...rest,\r\n value,\r\n inputMode: type,\r\n ref\r\n };\r\n\r\n _props.onEndEditing = rest.onEndEditing ?\r\n (e) => {\r\n store.handlers._viHandler(inputState);\r\n rest.onEndEditing!(e);\r\n }\r\n :\r\n () => {\r\n store.handlers._viHandler(inputState);\r\n };\r\n _props.onChangeText = rest.onChangeText ?\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n rest.onChangeText!(e);\r\n }\r\n :\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n };\r\n\r\n if (!inputState.touched) {\r\n _props.onFocus = rest.onFocus ?\r\n (e) => {\r\n rest.onFocus!(e);\r\n inputState.dispatchChanges({touched: true});\r\n }\r\n :\r\n () => {\r\n inputState.dispatchChanges({touched: true});\r\n };\r\n }\r\n\r\n if (element) {\r\n return (element as (input: GInputState, props: any) => ReactNode)(inputState, _props);\r\n }\r\n\r\n return <TextInput {..._props}/>;\r\n }, [inputState, element]);\r\n\r\n const _fetchDeps = useFormSelector(makeSelectFields(fetchDeps));\r\n const stableFetchDeps = useMemo(() => JSON.stringify(_fetchDeps), [_fetchDeps]);\r\n\r\n useEffect(() => {\r\n if (fetch) {\r\n _debounce(debounce, `${inputState.gid}-fetch`).then(() => {\r\n const res = fetch(inputState, store.getState().fields);\r\n if (res instanceof Promise) {\r\n res.then((state) => state && store.handlers._dispatchChanges(state, formKey));\r\n } else if (res) {\r\n store.handlers._dispatchChanges(res, formKey);\r\n }\r\n });\r\n }\r\n }, [stableFetchDeps]);\r\n\r\n return _element;\r\n});\r\n\r\nexport const RNGInput = memo(_RNGInput);"],"names":["RNGInput","memo","forwardRef","_ref","ref","formKey","element","type","fetch","fetchDeps","debounce","defaultValue","validatorKey","value","rest","_objectWithoutProperties","_excluded","inputState","useFormSelector","state","fields","store","useFormStore","_element","useMemo","_props","_objectSpread","inputMode","onEndEditing","e","handlers","_viHandler","onChangeText","_updateInputHandler","undefined","touched","onFocus","dispatchChanges","React","createElement","TextInput","_fetchDeps","makeSelectFields","stableFetchDeps","JSON","stringify","useEffect","_debounce","gid","then","res","getState","Promise","_dispatchChanges"],"mappings":"yZA6FaA,EAAWC,EArFNC,GAA+B,CAAAC,EAc9CC,KAAQ,IAduCC,QAC9CA,EAAOC,QACPA,EAAOC,KACPA,EAAIC,MACJA,EAAKC,UACLA,EAASC,SACTA,EAAW,IAAGC,aAEdA,EAAYC,aAEZA,EAAYC,MAEZA,GAEHV,EADMW,EAAIC,EAAAZ,EAAAa,GAEP,MAAMC,EAAaC,GAAgBC,GAASA,EAAMC,OAAOf,KACnDgB,EAAQC,IAERC,EAAWC,GAAQ,KACrB,MAAMX,EAAQI,EAAWJ,OAAS,GAE5BY,EAAMC,EAAAA,KACLZ,GAAI,GAAA,CACPD,QACAc,UAAWpB,EACXH,QAkCJ,OA/BAqB,EAAOG,aAAed,EAAKc,aACtBC,IACGR,EAAMS,SAASC,EAAWd,GAC1BH,EAAKc,aAAcC,EAAE,EAGzB,KACIR,EAAMS,SAASC,EAAWd,EAAW,EAE7CQ,EAAOO,aAAelB,EAAKkB,aACtBH,IACGR,EAAMS,SAASG,EAAoBhB,OAAYiB,EAAW,CAACrB,MAAOgB,IAClEf,EAAKkB,aAAcH,EAAE,EAGxBA,IACGR,EAAMS,SAASG,EAAoBhB,OAAYiB,EAAW,CAACrB,MAAOgB,GAAG,EAGxEZ,EAAWkB,UACZV,EAAOW,QAAUtB,EAAKsB,QACjBP,IACGf,EAAKsB,QAASP,GACdZ,EAAWoB,gBAAgB,CAACF,SAAS,GAAM,EAG/C,KACIlB,EAAWoB,gBAAgB,CAACF,SAAS,GAAM,GAInD7B,EACQA,EAA0DW,EAAYQ,GAG3Ea,EAAAC,cAACC,EAAcf,EAAS,GAChC,CAACR,EAAYX,IAEVmC,EAAavB,EAAgBwB,EAAiBjC,IAC9CkC,EAAkBnB,GAAQ,IAAMoB,KAAKC,UAAUJ,IAAa,CAACA,IAenE,OAbAK,GAAU,KACFtC,GACAuC,EAAUrC,EAAU,GAAGO,EAAW+B,aAAaC,MAAK,KAChD,MAAMC,EAAM1C,EAAMS,EAAYI,EAAM8B,WAAW/B,QAC3C8B,aAAeE,QACfF,EAAID,MAAM9B,GAAUA,GAASE,EAAMS,SAASuB,EAAiBlC,EAAOd,KAC7D6C,GACP7B,EAAMS,SAASuB,EAAiBH,EAAK7C,EACzC,GAER,GACD,CAACsC,IAEGpB,CAAQ"}
1
+ {"version":3,"file":"RNGInput.production.js","sources":["../../../src/fields/RNGInput.tsx"],"sourcesContent":["import React, {forwardRef, memo, type ReactNode, useEffect, useMemo} from 'react';\r\nimport {TextInput} from 'react-native';\r\n\r\nimport {_debounce} from '../helpers';\r\nimport type {GInputState, RNGInputProps} from '.';\r\nimport {useFormSelector, useFormStore} from \"../form-context\";\r\nimport {makeSelectFields} from \"../selectors\";\r\n\r\nconst _RNGInput = forwardRef<any, RNGInputProps>(({\r\n formKey,\r\n element,\r\n type,\r\n fetch,\r\n fetchDeps,\r\n debounce = 300,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n defaultValue,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n validatorKey,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n value,\r\n ...rest\r\n}, ref) => {\r\n const inputState = useFormSelector(state => state.fields[formKey]);\r\n const store = useFormStore();\r\n\r\n const _element = useMemo(() => {\r\n const value = inputState.value || '';\r\n\r\n const _props = {\r\n ...rest,\r\n value,\r\n inputMode: type,\r\n ref\r\n };\r\n\r\n _props.onEndEditing = rest.onEndEditing ?\r\n (e) => {\r\n store.handlers._viHandler(inputState);\r\n rest.onEndEditing!(e);\r\n }\r\n :\r\n () => {\r\n store.handlers._viHandler(inputState);\r\n };\r\n _props.onChangeText = rest.onChangeText ?\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n rest.onChangeText!(e);\r\n }\r\n :\r\n (e) => {\r\n store.handlers._updateInputHandler(inputState, undefined, {value: e});\r\n };\r\n\r\n if (!inputState.touched) {\r\n _props.onFocus = rest.onFocus ?\r\n (e) => {\r\n rest.onFocus!(e);\r\n inputState.dispatchChanges({touched: true});\r\n }\r\n :\r\n () => {\r\n inputState.dispatchChanges({touched: true});\r\n };\r\n }\r\n\r\n if (element) {\r\n return (element as (input: GInputState, props: any) => ReactNode)(inputState, _props);\r\n }\r\n\r\n return <TextInput {..._props}/>;\r\n }, [inputState, element]);\r\n\r\n const _fetchDeps = useFormSelector(makeSelectFields(fetchDeps));\r\n const stableFetchDeps = useMemo(() => JSON.stringify(_fetchDeps), [_fetchDeps]);\r\n\r\n useEffect(() => {\r\n if (fetch) {\r\n _debounce(debounce, `${inputState.gid}-fetch`).then(() => {\r\n const res = fetch(inputState, store.getState().fields);\r\n if (res instanceof Promise) {\r\n res.then((state) => state && store.handlers._dispatchChanges(state, formKey));\r\n } else if (res) {\r\n store.handlers._dispatchChanges(res, formKey);\r\n }\r\n });\r\n }\r\n }, [stableFetchDeps]);\r\n\r\n return _element;\r\n});\r\n\r\nexport const RNGInput = memo(_RNGInput);"],"names":["RNGInput","memo","forwardRef","_ref","ref","formKey","element","type","fetch","fetchDeps","debounce","defaultValue","validatorKey","value","rest","_objectWithoutProperties","_excluded","inputState","useFormSelector","state","fields","store","useFormStore","_element","useMemo","_props","_objectSpread","inputMode","onEndEditing","e","handlers","_viHandler","onChangeText","_updateInputHandler","undefined","touched","onFocus","dispatchChanges","React","createElement","TextInput","_fetchDeps","makeSelectFields","stableFetchDeps","JSON","stringify","useEffect","_debounce","gid","then","res","getState","Promise","_dispatchChanges"],"mappings":"yZA6FaA,EAAWC,EArFNC,GAA+B,CAAAC,EAc9CC,KAAQ,IAduCC,QAC9CA,EAAOC,QACPA,EAAOC,KACPA,EAAIC,MACJA,EAAKC,UACLA,EAASC,SACTA,EAAW,IAAGC,aAEdA,EAAYC,aAEZA,EAAYC,MAEZA,GAEHV,EADMW,EAAIC,EAAAZ,EAAAa,GAEP,MAAMC,EAAaC,GAAgBC,GAASA,EAAMC,OAAOf,KACnDgB,EAAQC,IAERC,EAAWC,GAAQ,KACrB,MAAMX,EAAQI,EAAWJ,OAAS,GAE5BY,EAAMC,EAAAA,KACLZ,GAAI,GAAA,CACPD,QACAc,UAAWpB,EACXH,QAkCJ,OA/BAqB,EAAOG,aAAed,EAAKc,aACtBC,IACGR,EAAMS,SAASC,WAAWd,GAC1BH,EAAKc,aAAcC,EAAE,EAGzB,KACIR,EAAMS,SAASC,WAAWd,EAAW,EAE7CQ,EAAOO,aAAelB,EAAKkB,aACtBH,IACGR,EAAMS,SAASG,oBAAoBhB,OAAYiB,EAAW,CAACrB,MAAOgB,IAClEf,EAAKkB,aAAcH,EAAE,EAGxBA,IACGR,EAAMS,SAASG,oBAAoBhB,OAAYiB,EAAW,CAACrB,MAAOgB,GAAG,EAGxEZ,EAAWkB,UACZV,EAAOW,QAAUtB,EAAKsB,QACjBP,IACGf,EAAKsB,QAASP,GACdZ,EAAWoB,gBAAgB,CAACF,SAAS,GAAM,EAG/C,KACIlB,EAAWoB,gBAAgB,CAACF,SAAS,GAAM,GAInD7B,EACQA,EAA0DW,EAAYQ,GAG3Ea,EAAAC,cAACC,EAAcf,EAAS,GAChC,CAACR,EAAYX,IAEVmC,EAAavB,EAAgBwB,EAAiBjC,IAC9CkC,EAAkBnB,GAAQ,IAAMoB,KAAKC,UAAUJ,IAAa,CAACA,IAenE,OAbAK,GAAU,KACFtC,GACAuC,EAAUrC,EAAU,GAAGO,EAAW+B,aAAaC,MAAK,KAChD,MAAMC,EAAM1C,EAAMS,EAAYI,EAAM8B,WAAW/B,QAC3C8B,aAAeE,QACfF,EAAID,MAAM9B,GAAUA,GAASE,EAAMS,SAASuB,iBAAiBlC,EAAOd,KAC7D6C,GACP7B,EAAMS,SAASuB,iBAAiBH,EAAK7C,EACzC,GAER,GACD,CAACsC,IAEGpB,CAAQ"}