@ekz/formix 1.0.0-beta.3 → 1.0.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.
- package/lib/fields.d.ts +2 -2
- package/lib/form.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/types.d.ts +7 -9
- package/package.json +18 -18
package/lib/fields.d.ts
CHANGED
|
@@ -2,12 +2,12 @@ import * as React from 'react';
|
|
|
2
2
|
import { ArrayField, ArrayFieldRef, Field, FieldRef, GenericFieldRef } from './types';
|
|
3
3
|
export declare function useField<T>(fieldRef: FieldRef<T>): Field<T>;
|
|
4
4
|
export declare function useArrayField<T extends GenericFieldRef, V>(fieldRef: ArrayFieldRef<T, V>): ArrayField<T, V>;
|
|
5
|
-
|
|
5
|
+
type UseFieldProps<T> = {
|
|
6
6
|
field: FieldRef<T>;
|
|
7
7
|
render(field: Field<T>): React.ReactNode;
|
|
8
8
|
};
|
|
9
9
|
export declare function UseField<T>(props: UseFieldProps<T>): React.ReactElement;
|
|
10
|
-
|
|
10
|
+
type UseArrayFieldProps<T extends GenericFieldRef, V> = {
|
|
11
11
|
field: ArrayFieldRef<T, V>;
|
|
12
12
|
render(field: ArrayField<T, V>): React.ReactNode;
|
|
13
13
|
};
|
package/lib/form.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ export declare function FormProvider(props: {
|
|
|
5
5
|
}): React.ReactElement;
|
|
6
6
|
export declare function useForm(): FormApi;
|
|
7
7
|
export declare function useFormWithFields<Deps extends unknown[], F extends GenericFieldRef>(fieldsCreator: (...deps: [...Deps]) => F, deps: [...Deps]): FormWithFields<F>;
|
|
8
|
-
export declare function withForm<Props>(Component: React.ComponentType<Props>): React.ComponentType<Props>;
|
|
9
|
-
|
|
8
|
+
export declare function withForm<Props extends JSX.IntrinsicAttributes>(Component: React.ComponentType<Props>): React.ComponentType<Props>;
|
|
9
|
+
type UseFormProps = {
|
|
10
10
|
children: (form: FormApi) => React.ReactNode;
|
|
11
11
|
};
|
|
12
12
|
export declare function UseForm(props: UseFormProps): React.ReactElement;
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("immutable")):"function"==typeof define&&define.amd?define(["react","immutable"],t):"object"==typeof exports?exports.Formix=t(require("react"),require("immutable")):e.Formix=t(e.react,e.immutable)}(window,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=2)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";n.r(t),n.d(t,"useField",(function(){return K})),n.d(t,"useArrayField",(function(){return z})),n.d(t,"UseField",(function(){return W})),n.d(t,"UseArrayField",(function(){return G})),n.d(t,"FormProvider",(function(){return I})),n.d(t,"UseForm",(function(){return L})),n.d(t,"useForm",(function(){return T})),n.d(t,"useFormWithFields",(function(){return _})),n.d(t,"withForm",(function(){return q})),n.d(t,"defineField",(function(){return v})),n.d(t,"isFieldRef",(function(){return m})),n.d(t,"defineArrayField",(function(){return g})),n.d(t,"isArrayFieldRef",(function(){return O})),n.d(t,"useAsyncFieldStateValidation",(function(){return te})),n.d(t,"useAsyncFieldValidation",(function(){return Z})),n.d(t,"useFieldStateValidation",(function(){return ee})),n.d(t,"useFieldValidation",(function(){return X}));var r=n(0),o=n(1);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=function(){function e(t,n,r,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.value=t,this.disabled=n,this.active=r,this.touched=o}var t,n,r;return t=e,(n=[{key:"updated",value:function(t){var n,r,o;return new e(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({value:this.value},t).value,null!==(n=t.disabled)&&void 0!==n?n:this.disabled,null!==(r=t.active)&&void 0!==r?r:this.active,null!==(o=t.touched)&&void 0!==o?o:this.touched)}},{key:"equals",value:function(e){return null!=e&&Object(o.is)(this.value,e.value)&&this.disabled===e.disabled}},{key:"hashCode",value:function(){return Object(o.hash)(this.value)&Object(o.hash)(this.disabled)}}])&&a(t.prototype,n),r&&a(t,r),e}();function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function s(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=p(e);if(t){var o=p(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return d(this,n)}}function d(e,t){return!t||"object"!==l(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var y=function e(t,n){var r,o,u;b(this,e),u=void 0,(o="initialState")in(r=this)?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u,this.initialState=new c(t,n,!1,!1)};function v(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new y(e,t)}function m(e){return e instanceof y}var h=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(n,e);var t=s(n);function n(e,r,o){return b(this,n),t.call(this,e,o)}return n}(y);function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new h(Object(o.Seq)(e).map(t).toList(),t,n)}function O(e){return e instanceof h}function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,u=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,u=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw u}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return S(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return S(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var w=Object.freeze({error:null,pending:!1});function P(e){return function(e){if(Array.isArray(e))return x(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||k(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach((function(t){E(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,u=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,u=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw u}}return n}(e,t)||k(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){if(e){if("string"==typeof e)return x(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?x(e,t):void 0}}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function V(){var e=C(r.useState(o.Map),2),t=e[0],n=e[1],u=r.useCallback((function(e){return t.get(e,e.initialState)}),[t]),i=r.useCallback((function(e){return u(e).value}),[u]),a=r.useCallback((function(e,t){n((function(n){return"function"==typeof t?n.update(e,e.initialState,t):n.set(e,t)}))}),[]),c=r.useCallback((function(e,t){return function e(n){if(O(n))return u(n).value.map(e);if(m(n)){var r=u(n);return"value"===t?r.value:r}return o.Seq.Keyed(n).map((function(t){return e(t)})).toObject()}(e)}),[u]),l=r.useCallback((function(e){return c(e,"state")}),[c]),f=r.useCallback((function(e){return c(e,"value")}),[c]),s=r.useCallback((function(){return n(Object(o.Map)())}),[n]),d=r.useMemo((function(){return t.some((function(e,t){return!e.equals(t.initialState)}))}),[t]),p=function(e){var t=j(r.useState(o.Map),2),n=t[0],u=t[1],i=r.useCallback((function(e){return u((function(t){return t.update(e.fieldRef,Object(o.OrderedSet)(),(function(t){return t.add(e)}))})),function(){return u((function(t){return t.update(e.fieldRef,Object(o.OrderedSet)(),(function(t){return t.remove(e)}))}))}}),[]),a=r.useCallback((function(e){return n.get(e,Object(o.OrderedSet)()).first(w)}),[n]),c=r.useCallback((function(t){var r=function t(n){return O(n)?e(n).value.flatMap(t):m(n)?o.List.of(n):o.Seq.Keyed(n).valueSeq().flatMap(t).toList()}(t).toSet();return n.filter((function(e,t){return r.has(t)})).valueSeq().flatMap((function(e){return e})).every((function(e){return null==e.error&&!e.pending}))}),[e,n]),l=r.useMemo((function(){return n.valueSeq().flatMap((function(e){return e})).some((function(e){return e.pending}))}),[n]);return{registerValidation:i,getValidationResult:a,isFieldValid:c,valid:r.useMemo((function(){return!l&&n.valueSeq().flatMap((function(e){return e})).every((function(e){return null==e.error}))}),[l,n]),pending:l}}(u);return r.useMemo((function(){return A({getFieldState:u,getFieldValue:i,setFieldState:a,getStates:l,getValues:f,reset:s,modified:d},p)}),[u,i,a,l,f,s,d,p])}function R(){throw new Error("Cannot call method on empty context. Did you forget <Form />?")}var D=r.createContext({getFieldState:R,getFieldValue:R,setFieldState:R,getStates:R,getValues:R,getValidationResult:R,registerValidation:R,isFieldValid:R,reset:R,pending:!1,valid:!1,modified:!1});function I(e){var t=V();return r.createElement(D.Provider,{value:t},e.children)}function T(){return r.useContext(D)}function _(e,t){var n=T(),o=n.reset,u=F(n,["reset"]),i=r.useMemo((function(){return e.apply(void 0,P(t))}),t);return r.useLayoutEffect((function(){o()}),[o,i]),r.useMemo((function(){return A(A({},u),{},{reset:o,fields:i})}),[u,o,i])}function q(e){return function(t){return r.createElement(I,null,r.createElement(e,t))}}function L(e){var t=T();return r.createElement(r.Fragment,null,e.children(t))}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function B(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach((function(t){$(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function K(e){var t=T(),n=t.getFieldState,o=t.setFieldState,u=t.getValidationResult,i=n(e),a=u(e),c=r.useCallback((function(t){o(e,(function(e){var n="function"==typeof t?t(e.value):t;return e.value===n?e:e.updated({value:n,touched:!0})}))}),[e,o]),l=r.useCallback((function(t){return o(e,(function(e){return e.updated({disabled:t})}))}),[e,o]),f=r.useCallback((function(){return o(e,(function(e){return e.updated({active:!0,touched:!0})}))}),[e,o]),s=r.useCallback((function(){return o(e,(function(e){return e.updated({active:!1})}))}),[e,o]);return r.useMemo((function(){return B(B({value:i.value},a),{},{disabled:i.disabled,active:i.active,touched:i.touched,setValue:c,setDisabled:l,onFocus:f,onBlur:s})}),[i,a,c,l,f,s])}function z(e){var t=T().getValidationResult,n=K(e),o=n.value,u=n.setValue,i=n.disabled,a=n.active,c=n.touched,l=n.setDisabled,f=n.onBlur,s=n.onFocus,d=t(e),p=r.useCallback((function(t){var n=e.itemTemplate(t);return u((function(e){return e.unshift(n)})),n}),[u,e]),b=r.useCallback((function(t){var n=e.itemTemplate(t);return u((function(e){return e.push(n)})),n}),[u,e]),y=r.useCallback((function(t,n){var r=e.itemTemplate(n);return u((function(e){return e.insert(t,r)})),r}),[u,e]),v=r.useCallback((function(e){u((function(t){var n=t.indexOf(e);return-1!==n?t.remove(n):t}))}),[u]),m=r.useCallback((function(e,t){u((function(n){var r=n.get(e),o=n.get(t);if(null==r||null==o)throw new Error("Invalid element access");return n.remove(e).insert(e,o).remove(t).insert(t,r)}))}),[u]);return r.useMemo((function(){return B(B({items:o},d),{},{unshift:p,push:b,insert:y,remove:v,swap:m,disabled:i,active:a,touched:c,setDisabled:l,onBlur:f,onFocus:s})}),[o,d,p,b,y,v,m,i,a,c,l,f,s])}function W(e){var t=K(e.field);return r.createElement(r.Fragment,null,e.render(t))}function G(e){var t=z(e.field);return r.createElement(r.Fragment,null,e.render(t))}function H(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,u=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,u=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw u}}return n}(e,t)||N(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function J(e){return function(e){if(Array.isArray(e))return Q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||N(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(e,t){if(e){if("string"==typeof e)return Q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Q(e,t):void 0}}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function X(e,t,n){var o=T(),u=o.getValues,i=o.registerValidation,a=u(e),c=r.useMemo((function(){return(null!=n?n:[]).map(u)}),[u].concat(J(null!=n?n:[]))),l=r.useMemo((function(){return t(a,c)}),[a].concat(J(c))),f=r.useMemo((function(){return{fieldRef:e,error:l,pending:!1}}),[e,l]);r.useLayoutEffect((function(){return i(f)}),[i,f])}function Y(e,t,n){var o=H(r.useState({pending:!1,error:null}),2),u=o[0],i=o[1];return r.useEffect((function(){var n=!0;i((function(e){return{pending:!0,error:e.error}}));var r=setTimeout((function(){e().then((function(e){n&&i({pending:!1,error:e})})).catch((function(e){n&&i({pending:!1,error:"Unexpected error"}),console.warn("[Unhandled Validation Error]",e),console.warn("An async validator should never throw, but it should resolve with the validation result.")}))}),t);return function(){n=!1,clearTimeout(r)}}),[t].concat(J(n))),u}function Z(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:200,u=T(),i=u.getValues,a=u.registerValidation,c=i(e),l=r.useMemo((function(){return(null!=n?n:[]).map(i)}),[i].concat(J(null!=n?n:[]))),f=Y((function(){return t(c,l)}),o,[c].concat(J(l))),s=r.useMemo((function(){return{fieldRef:e,error:f.error,pending:f.pending}}),[e,f.error,f.pending]);r.useLayoutEffect((function(){return a(s)}),[a,s])}function ee(e,t,n){var o=T(),u=o.getStates,i=o.registerValidation,a=u(e),c=r.useMemo((function(){return(null!=n?n:[]).map(u)}),[u].concat(J(null!=n?n:[]))),l=r.useMemo((function(){return t(a,c)}),[a].concat(J(c))),f=r.useMemo((function(){return{fieldRef:e,error:l,pending:!1}}),[e,l]);r.useLayoutEffect((function(){return i(f)}),[i,f])}function te(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:200,u=T(),i=u.getStates,a=u.registerValidation,c=i(e),l=r.useMemo((function(){return(null!=n?n:[]).map(i)}),[i].concat(J(null!=n?n:[]))),f=Y((function(){return t(c,l)}),o,[c].concat(J(l))),s=r.useMemo((function(){return{fieldRef:e,error:f.error,pending:f.pending}}),[e,f.error,f.pending]);r.useLayoutEffect((function(){return a(s)}),[a,s])}}])}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("immutable"),require("react")):"function"==typeof define&&define.amd?define(["immutable","react"],t):"object"==typeof exports?exports.Formix=t(require("immutable"),require("react")):e.Formix=t(e.immutable,e.react)}(self,((e,t)=>(()=>{"use strict";var r={144:t=>{t.exports=e},155:e=>{e.exports=t}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var u=n[e]={exports:{}};return r[e](u,u.exports,i),u.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var u={};i.r(u),i.d(u,{FormProvider:()=>V,UseArrayField:()=>U,UseField:()=>L,UseForm:()=>D,defineArrayField:()=>g,defineField:()=>b,isArrayFieldRef:()=>h,isFieldRef:()=>m,useArrayField:()=>_,useAsyncFieldStateValidation:()=>W,useAsyncFieldValidation:()=>K,useField:()=>A,useFieldStateValidation:()=>z,useFieldValidation:()=>B,useForm:()=>C,useFormWithFields:()=>k,withForm:()=>x});var o=i(155),a=i(144);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const f=function(){function e(e,t,r,n){this.value=e,this.disabled=t,this.active=r,this.touched=n,this.value=e,this.disabled=t,this.active=r,this.touched=n}return e.prototype.updated=function(t){var r,n,i,u=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){c(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({value:this.value},t);return new e(u.value,null!==(r=t.disabled)&&void 0!==r?r:this.disabled,null!==(n=t.active)&&void 0!==n?n:this.active,null!==(i=t.touched)&&void 0!==i?i:this.touched)},e.prototype.equals=function(e){return null!=e&&(0,a.is)(this.value,e.value)&&this.disabled===e.disabled},e.prototype.hashCode=function(){return(0,a.hash)(this.value)&(0,a.hash)(this.disabled)},e}();var s,d=(s=function(e,t){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},s(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});function p(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var v=function(e,t){p(this,"initialState",void 0),this.initialState=new f(e,t,!1,!1)};function b(e){return new v(e,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}function m(e){return e instanceof v}var y=function(e){function t(t,r,n){var i=e.call(this,t,n)||this;return i.itemTemplate=r,i.itemTemplate=r,i}return d(t,e),t}(v);function g(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new y((0,a.Seq)(e).map(t).toList(),t,r)}function h(e){return e instanceof y}var O=Object.freeze({error:null,pending:!1}),j=["reset"];function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){P(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function P(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function F(){var e=o.useState(a.Map),t=e[0],r=e[1],n=o.useCallback((function(e){return t.get(e,e.initialState)}),[t]),i=o.useCallback((function(e){return n(e).value}),[n]),u=o.useCallback((function(e,t){r((function(r){return"function"==typeof t?r.update(e,e.initialState,t):r.set(e,t)}))}),[]),l=o.useCallback((function(e,t){return function e(r){if(h(r))return n(r).value.map(e);if(m(r)){var i=n(r);return"value"===t?i.value:i}return a.Seq.Keyed(r).map((function(t){return e(t)})).toObject()}(e)}),[n]),c=o.useCallback((function(e){return l(e,"state")}),[l]),f=o.useCallback((function(e){return l(e,"value")}),[l]),s=o.useCallback((function(){return r((0,a.Map)())}),[r]),d=o.useMemo((function(){return t.some((function(e,t){return!e.equals(t.initialState)}))}),[t]),p=function(e){var t=o.useState(a.Map),r=t[0],n=t[1],i=o.useCallback((function(e){return n((function(t){return t.update(e.fieldRef,(0,a.OrderedSet)(),(function(t){return t.add(e)}))})),function(){return n((function(t){return t.update(e.fieldRef,(0,a.OrderedSet)(),(function(t){return t.remove(e)}))}))}}),[]),u=o.useCallback((function(e){return r.get(e,(0,a.OrderedSet)()).first(O)}),[r]),l=o.useCallback((function(t){var n=function t(r){return h(r)?e(r).value.flatMap(t):m(r)?a.List.of(r):a.Seq.Keyed(r).valueSeq().flatMap(t).toList()}(t).toSet();return r.filter((function(e,t){return n.has(t)})).valueSeq().flatMap((function(e){return e})).every((function(e){return null==e.error&&!e.pending}))}),[e,r]),c=o.useMemo((function(){return r.valueSeq().flatMap((function(e){return e})).some((function(e){return e.pending}))}),[r]);return{registerValidation:i,getValidationResult:u,isFieldValid:l,valid:o.useMemo((function(){return!c&&r.valueSeq().flatMap((function(e){return e})).every((function(e){return null==e.error}))}),[c,r]),pending:c}}(n);return o.useMemo((function(){return w({getFieldState:n,getFieldValue:i,setFieldState:u,getStates:c,getValues:f,reset:s,modified:d},p)}),[n,i,u,c,f,s,d,p])}function M(){throw new Error("Cannot call method on empty context. Did you forget <Form />?")}var E=o.createContext({getFieldState:M,getFieldValue:M,setFieldState:M,getStates:M,getValues:M,getValidationResult:M,registerValidation:M,isFieldValid:M,reset:M,pending:!1,valid:!1,modified:!1});function V(e){var t=F();return o.createElement(E.Provider,{value:t},e.children)}function C(){return o.useContext(E)}function k(e,t){var r=C(),n=r.reset,i=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)r=u[n],t.includes(r)||{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}(r,j),u=o.useMemo((function(){return e.apply(void 0,t)}),t);return o.useLayoutEffect((function(){n()}),[n,u]),o.useMemo((function(){return w(w({},i),{},{reset:n,fields:u})}),[i,n,u])}function x(e){return function(t){return o.createElement(V,null,o.createElement(e,t))}}function D(e){var t=C();return o.createElement(o.Fragment,null,e.children(t))}function T(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?T(Object(r),!0).forEach((function(t){R(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function R(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function A(e){var t=C(),r=t.getFieldState,n=t.setFieldState,i=t.getValidationResult,u=r(e),a=i(e),l=o.useCallback((function(t){n(e,(function(e){var r="function"==typeof t?t(e.value):t;return e.value===r?e:e.updated({value:r,touched:!0})}))}),[e,n]),c=o.useCallback((function(t){return n(e,(function(e){return e.updated({disabled:t})}))}),[e,n]),f=o.useCallback((function(){return n(e,(function(e){return e.updated({active:!0,touched:!0})}))}),[e,n]),s=o.useCallback((function(){return n(e,(function(e){return e.updated({active:!1})}))}),[e,n]);return o.useMemo((function(){return q(q({value:u.value},a),{},{disabled:u.disabled,active:u.active,touched:u.touched,setValue:l,setDisabled:c,onFocus:f,onBlur:s})}),[u,a,l,c,f,s])}function _(e){var t=C().getValidationResult,r=A(e),n=r.value,i=r.setValue,u=r.disabled,a=r.active,l=r.touched,c=r.setDisabled,f=r.onBlur,s=r.onFocus,d=t(e),p=o.useCallback((function(t){var r=e.itemTemplate(t);return i((function(e){return e.unshift(r)})),r}),[i,e]),v=o.useCallback((function(t){var r=e.itemTemplate(t);return i((function(e){return e.push(r)})),r}),[i,e]),b=o.useCallback((function(t,r){var n=e.itemTemplate(r);return i((function(e){return e.insert(t,n)})),n}),[i,e]),m=o.useCallback((function(e){i((function(t){var r=t.indexOf(e);return-1!==r?t.remove(r):t}))}),[i]),y=o.useCallback((function(e,t){i((function(r){var n=r.get(e),i=r.get(t);if(null==n||null==i)throw new Error("Invalid element access");return r.remove(e).insert(e,i).remove(t).insert(t,n)}))}),[i]);return o.useMemo((function(){return q(q({items:n},d),{},{unshift:p,push:v,insert:b,remove:m,swap:y,disabled:u,active:a,touched:l,setDisabled:c,onBlur:f,onFocus:s})}),[n,d,p,v,b,m,y,u,a,l,c,f,s])}function L(e){var t=A(e.field);return o.createElement(o.Fragment,null,e.render(t))}function U(e){var t=_(e.field);return o.createElement(o.Fragment,null,e.render(t))}var N=function(e,t,r){if(r||2===arguments.length)for(var n,i=0,u=t.length;i<u;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};function B(e,t,r){var n=C(),i=n.getValues,u=n.registerValidation,a=i(e),l=o.useMemo((function(){return(null!=r?r:[]).map(i)}),N([i],null!=r?r:[],!0)),c=o.useMemo((function(){return t(a,l)}),N([a],l,!0)),f=o.useMemo((function(){return{fieldRef:e,error:c,pending:!1}}),[e,c]);o.useLayoutEffect((function(){return u(f)}),[u,f])}function I(e,t,r){var n=o.useState({pending:!1,error:null}),i=n[0],u=n[1];return o.useEffect((function(){var r=!0;u((function(e){return{pending:!0,error:e.error}}));var n=setTimeout((function(){e().then((function(e){r&&u({pending:!1,error:e})})).catch((function(e){r&&u({pending:!1,error:"Unexpected error"}),console.warn("[Unhandled Validation Error]",e),console.warn("An async validator should never throw, but it should resolve with the validation result.")}))}),t);return function(){r=!1,clearTimeout(n)}}),N([t],r,!0)),i}function K(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:200,i=C(),u=i.getValues,a=i.registerValidation,l=u(e),c=o.useMemo((function(){return(null!=r?r:[]).map(u)}),N([u],null!=r?r:[],!0)),f=I((function(){return t(l,c)}),n,N([l],c,!0)),s=o.useMemo((function(){return{fieldRef:e,error:f.error,pending:f.pending}}),[e,f.error,f.pending]);o.useLayoutEffect((function(){return a(s)}),[a,s])}function z(e,t,r){var n=C(),i=n.getStates,u=n.registerValidation,a=i(e),l=o.useMemo((function(){return(null!=r?r:[]).map(i)}),N([i],null!=r?r:[],!0)),c=o.useMemo((function(){return t(a,l)}),N([a],l,!0)),f=o.useMemo((function(){return{fieldRef:e,error:c,pending:!1}}),[e,c]);o.useLayoutEffect((function(){return u(f)}),[u,f])}function W(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:200,i=C(),u=i.getStates,a=i.registerValidation,l=u(e),c=o.useMemo((function(){return(null!=r?r:[]).map(u)}),N([u],null!=r?r:[],!0)),f=I((function(){return t(l,c)}),n,N([l],c,!0)),s=o.useMemo((function(){return{fieldRef:e,error:f.error,pending:f.pending}}),[e,f.error,f.pending]);o.useLayoutEffect((function(){return a(s)}),[a,s])}return u})()));
|
package/lib/types.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import type { Map, List, OrderedSet } from 'immutable';
|
|
3
|
-
export
|
|
2
|
+
export type GenericFieldRef = ArrayFieldRef<GenericFieldRef, unknown> | FieldRef<unknown> | {
|
|
4
3
|
[key: string]: GenericFieldRef;
|
|
5
4
|
};
|
|
6
5
|
export interface FieldRef<T> {
|
|
7
6
|
readonly initialState: FieldState<T>;
|
|
8
|
-
readonly initialValue: T;
|
|
9
7
|
}
|
|
10
8
|
export interface ArrayFieldRef<T extends GenericFieldRef, V> extends FieldRef<List<T>> {
|
|
11
9
|
itemTemplate(value: V): T;
|
|
@@ -64,20 +62,20 @@ export interface ArrayField<T extends GenericFieldRef, V> extends FieldMetadata,
|
|
|
64
62
|
remove(item: T): void;
|
|
65
63
|
swap(indexA: number, indexB: number): void;
|
|
66
64
|
}
|
|
67
|
-
export
|
|
65
|
+
export type FormStates<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormStates<T>> : F extends FieldRef<infer T> ? FieldState<T> : F extends {
|
|
68
66
|
[K: string]: GenericFieldRef;
|
|
69
67
|
} ? {
|
|
70
68
|
[K in keyof F]: FormStates<F[K]>;
|
|
71
69
|
} : never;
|
|
72
|
-
export
|
|
70
|
+
export type FieldRefStates<T extends GenericFieldRef[]> = {
|
|
73
71
|
[K in keyof T]: FormStates<T[K]>;
|
|
74
72
|
};
|
|
75
|
-
export
|
|
73
|
+
export type FormValues<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormValues<T>> : F extends FieldRef<infer T> ? T : F extends {
|
|
76
74
|
[K: string]: GenericFieldRef;
|
|
77
75
|
} ? {
|
|
78
76
|
[K in keyof F]: FormValues<F[K]>;
|
|
79
77
|
} : never;
|
|
80
|
-
export
|
|
78
|
+
export type FieldRefValues<T extends GenericFieldRef[]> = {
|
|
81
79
|
[K in keyof T]: FormValues<T[K]>;
|
|
82
80
|
};
|
|
83
81
|
export interface FormApi extends FormValidationApi {
|
|
@@ -95,7 +93,7 @@ export interface FormWithFields<F extends GenericFieldRef> extends FormApi {
|
|
|
95
93
|
/**
|
|
96
94
|
* A ReactElement or a string represent an error message, and null represents no errors.
|
|
97
95
|
*/
|
|
98
|
-
export
|
|
96
|
+
export type ValidationError = React.ReactElement | string | null;
|
|
99
97
|
export interface ValidationResult {
|
|
100
98
|
readonly error: ValidationError;
|
|
101
99
|
readonly pending: boolean;
|
|
@@ -103,7 +101,7 @@ export interface ValidationResult {
|
|
|
103
101
|
export interface FieldValidation<T> extends ValidationResult {
|
|
104
102
|
readonly fieldRef: FieldRef<T>;
|
|
105
103
|
}
|
|
106
|
-
export
|
|
104
|
+
export type FormValidations = Map<FieldRef<unknown>, OrderedSet<FieldValidation<unknown>>>;
|
|
107
105
|
export interface FormValidationApi {
|
|
108
106
|
registerValidation(validation: FieldValidation<unknown>): () => void;
|
|
109
107
|
getValidationResult(fieldRef: FieldRef<unknown>): ValidationResult;
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ekz/formix",
|
|
3
|
-
"
|
|
3
|
+
"packageManager": "yarn@4.3.1",
|
|
4
|
+
"version": "1.0.0",
|
|
4
5
|
"description": "Type-safe React form to be used with Typescript",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"react",
|
|
@@ -24,7 +25,6 @@
|
|
|
24
25
|
"main": "lib/index.js",
|
|
25
26
|
"types": "lib/index.d.ts",
|
|
26
27
|
"license": "MIT",
|
|
27
|
-
"private": false,
|
|
28
28
|
"files": [
|
|
29
29
|
"lib",
|
|
30
30
|
"README.md",
|
|
@@ -32,34 +32,34 @@
|
|
|
32
32
|
],
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@ekz/option": "^1.2.1",
|
|
35
|
-
"immutable": "^4
|
|
36
|
-
"react": "^16.8.0 || ^17",
|
|
37
|
-
"typescript": "^4"
|
|
35
|
+
"immutable": "^4",
|
|
36
|
+
"react": "^16.8.0 || ^17 || ^18",
|
|
37
|
+
"typescript": "^4 || ^5"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@ekz/option": "^1.2.
|
|
41
|
-
"@ekz/packer": "^0.
|
|
40
|
+
"@ekz/option": "^1.2.5",
|
|
41
|
+
"@ekz/packer": "^0.16.0",
|
|
42
42
|
"@testing-library/jest-dom": "^5.11.9",
|
|
43
43
|
"@testing-library/react": "^11.1.0",
|
|
44
44
|
"@testing-library/react-hooks": "^5.1.0",
|
|
45
|
-
"@trivago/prettier-plugin-sort-imports": "^
|
|
45
|
+
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
46
46
|
"@types/jest": "^26.0.15",
|
|
47
47
|
"documentation": "^13.1.1",
|
|
48
|
-
"immutable": "^4.
|
|
48
|
+
"immutable": "^4.3.6",
|
|
49
49
|
"jest": "^26.6.1",
|
|
50
|
-
"react": "^
|
|
51
|
-
"react-dom": "^
|
|
52
|
-
"typescript": "^
|
|
50
|
+
"react": "^18.3.1",
|
|
51
|
+
"react-dom": "^18.3.1",
|
|
52
|
+
"typescript": "^5.5.3"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
|
-
"test": "jest",
|
|
56
|
-
"lint": "eslint --ext .ts --ext .tsx .",
|
|
55
|
+
"test": "npx jest",
|
|
56
|
+
"lint": "npx eslint --ext .ts --ext .tsx .",
|
|
57
57
|
"lint:fix": "yarn lint --fix",
|
|
58
58
|
"build": "yarn build:dev",
|
|
59
59
|
"build:watch": "yarn build:dev --watch",
|
|
60
|
-
"build:dev": "webpack --mode=development",
|
|
61
|
-
"build:prod": "webpack --mode=production",
|
|
62
|
-
"declarations:ts": "tsc -d --declarationDir lib --emitDeclarationOnly --jsx react src/index.ts",
|
|
60
|
+
"build:dev": "npx webpack --mode=development",
|
|
61
|
+
"build:prod": "npx webpack --mode=production",
|
|
62
|
+
"declarations:ts": "npx tsc -d --declarationDir lib --emitDeclarationOnly --jsx react src/index.ts",
|
|
63
63
|
"prepublish": "yarn test --ci --no-watchman && yarn lint && yarn build:prod && yarn declarations:ts"
|
|
64
64
|
}
|
|
65
|
-
}
|
|
65
|
+
}
|