@ekz/formix 1.0.0-beta.4 → 1.0.1

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 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
- declare type UseFieldProps<T> = {
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
- declare type UseArrayFieldProps<T extends GenericFieldRef, V> = {
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
@@ -6,7 +6,7 @@ export declare function FormProvider(props: {
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
8
  export declare function withForm<Props>(Component: React.ComponentType<Props>): React.ComponentType<Props>;
9
- declare type UseFormProps = {
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 T})),n.d(t,"UseForm",(function(){return L})),n.d(t,"useForm",(function(){return I})),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){var u;return b(this,n),(u=t.call(this,e,o)).itemTemplate=r,u}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 T(e){var t=V();return r.createElement(D.Provider,{value:t},e.children)}function I(){return r.useContext(D)}function _(e,t){var n=I(),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(T,null,r.createElement(e,t))}}function L(e){var t=I();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=I(),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=I().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=I(),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=I(),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=I(),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=I(),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,6 +1,5 @@
1
- /// <reference types="react" />
2
1
  import type { Map, List, OrderedSet } from 'immutable';
3
- export declare type GenericFieldRef = ArrayFieldRef<GenericFieldRef, unknown> | FieldRef<unknown> | {
2
+ export type GenericFieldRef = ArrayFieldRef<GenericFieldRef, unknown> | FieldRef<unknown> | {
4
3
  [key: string]: GenericFieldRef;
5
4
  };
6
5
  export interface FieldRef<T> {
@@ -63,20 +62,20 @@ export interface ArrayField<T extends GenericFieldRef, V> extends FieldMetadata,
63
62
  remove(item: T): void;
64
63
  swap(indexA: number, indexB: number): void;
65
64
  }
66
- export declare type FormStates<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormStates<T>> : F extends FieldRef<infer T> ? FieldState<T> : F extends {
65
+ export type FormStates<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormStates<T>> : F extends FieldRef<infer T> ? FieldState<T> : F extends {
67
66
  [K: string]: GenericFieldRef;
68
67
  } ? {
69
68
  [K in keyof F]: FormStates<F[K]>;
70
69
  } : never;
71
- export declare type FieldRefStates<T extends GenericFieldRef[]> = {
70
+ export type FieldRefStates<T extends GenericFieldRef[]> = {
72
71
  [K in keyof T]: FormStates<T[K]>;
73
72
  };
74
- export declare type FormValues<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormValues<T>> : F extends FieldRef<infer T> ? T : F extends {
73
+ export type FormValues<F> = F extends ArrayFieldRef<infer T, unknown> ? List<FormValues<T>> : F extends FieldRef<infer T> ? T : F extends {
75
74
  [K: string]: GenericFieldRef;
76
75
  } ? {
77
76
  [K in keyof F]: FormValues<F[K]>;
78
77
  } : never;
79
- export declare type FieldRefValues<T extends GenericFieldRef[]> = {
78
+ export type FieldRefValues<T extends GenericFieldRef[]> = {
80
79
  [K in keyof T]: FormValues<T[K]>;
81
80
  };
82
81
  export interface FormApi extends FormValidationApi {
@@ -94,7 +93,7 @@ export interface FormWithFields<F extends GenericFieldRef> extends FormApi {
94
93
  /**
95
94
  * A ReactElement or a string represent an error message, and null represents no errors.
96
95
  */
97
- export declare type ValidationError = React.ReactElement | string | null;
96
+ export type ValidationError = React.ReactElement | string | null;
98
97
  export interface ValidationResult {
99
98
  readonly error: ValidationError;
100
99
  readonly pending: boolean;
@@ -102,7 +101,7 @@ export interface ValidationResult {
102
101
  export interface FieldValidation<T> extends ValidationResult {
103
102
  readonly fieldRef: FieldRef<T>;
104
103
  }
105
- export declare type FormValidations = Map<FieldRef<unknown>, OrderedSet<FieldValidation<unknown>>>;
104
+ export type FormValidations = Map<FieldRef<unknown>, OrderedSet<FieldValidation<unknown>>>;
106
105
  export interface FormValidationApi {
107
106
  registerValidation(validation: FieldValidation<unknown>): () => void;
108
107
  getValidationResult(fieldRef: FieldRef<unknown>): ValidationResult;
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@ekz/formix",
3
- "version": "1.0.0-beta.4",
3
+ "packageManager": "yarn@4.3.1",
4
+ "version": "1.0.1",
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.0.0-rc.12",
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.1",
41
- "@ekz/packer": "^0.12.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": "^1.2.0",
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.0.0-rc.12",
48
+ "immutable": "^4.3.6",
49
49
  "jest": "^26.6.1",
50
- "react": "^17",
51
- "react-dom": "^17",
52
- "typescript": "^4.2.2"
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
+ }