@os-design/form 1.0.14 → 1.0.15

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 (39) hide show
  1. package/dist/cjs/ErrorData.js.map +1 -1
  2. package/dist/cjs/ErrorObserverManager.js.map +1 -1
  3. package/dist/cjs/Form.js.map +1 -1
  4. package/dist/cjs/ValueData.js.map +1 -1
  5. package/dist/cjs/ValueObserverManager.js +0 -3
  6. package/dist/cjs/ValueObserverManager.js.map +1 -1
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/types.js.map +1 -1
  9. package/dist/cjs/useFormContext.js.map +1 -1
  10. package/dist/cjs/utils/path.js.map +1 -1
  11. package/dist/esm/ErrorData.js.map +1 -1
  12. package/dist/esm/ErrorObserverManager.js.map +1 -1
  13. package/dist/esm/Form.js.map +1 -1
  14. package/dist/esm/ValueData.js.map +1 -1
  15. package/dist/esm/ValueObserverManager.js +0 -3
  16. package/dist/esm/ValueObserverManager.js.map +1 -1
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/types.js.map +1 -1
  19. package/dist/esm/useFormContext.js.map +1 -1
  20. package/dist/esm/utils/path.js.map +1 -1
  21. package/dist/types/ErrorData.d.ts +2 -2
  22. package/dist/types/ErrorData.d.ts.map +1 -1
  23. package/dist/types/ErrorObserverManager.d.ts +2 -2
  24. package/dist/types/ErrorObserverManager.d.ts.map +1 -1
  25. package/dist/types/Form.d.ts +2 -2
  26. package/dist/types/Form.d.ts.map +1 -1
  27. package/dist/types/ValueData.d.ts +2 -2
  28. package/dist/types/ValueData.d.ts.map +1 -1
  29. package/dist/types/ValueObserverManager.d.ts +2 -2
  30. package/dist/types/ValueObserverManager.d.ts.map +1 -1
  31. package/dist/types/index.d.ts +14 -14
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/dist/types/types.d.ts +5 -4
  34. package/dist/types/types.d.ts.map +1 -1
  35. package/dist/types/useFormContext.d.ts +3 -3
  36. package/dist/types/useFormContext.d.ts.map +1 -1
  37. package/dist/types/utils/path.d.ts +2 -3
  38. package/dist/types/utils/path.d.ts.map +1 -1
  39. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorData.js","names":["ErrorData","errors","name","value","callObservers","ErrorObserverManager"],"sources":["../../src/ErrorData.ts"],"sourcesContent":["import ErrorObserverManager from './ErrorObserverManager';\nimport { StringMap } from './types';\n\nclass ErrorData<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends ErrorObserverManager<TErrors> {\n private readonly errors: TErrors;\n\n public constructor(errors: TErrors) {\n super();\n this.errors = errors;\n }\n\n public get<T extends TName>(name: T): TErrors[T] {\n return this.errors[name];\n }\n\n public getAll(): TErrors {\n return this.errors;\n }\n\n public set<T extends TName>(name: T, value: TErrors[T]): void {\n this.errors[name] = value;\n this.callObservers(name, value);\n }\n}\n\nexport default ErrorData;\n"],"mappings":";;;;;;;AAAA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAGpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAc;MAC/C,OAAO,IAAI,CAACD,MAAM,CAACC,IAAI,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEC,KAAiB,EAAQ;MAC5D,IAAI,CAACF,MAAM,CAACC,IAAI,CAAC,GAAGC,KAAK;MACzB,IAAI,CAACC,aAAa,CAACF,IAAI,EAAEC,KAAK,CAAC;IACjC;EAAC;EAAA;AAAA,EAnBOE,iCAAoB;AAAA,eAsBfL,SAAS;AAAA"}
1
+ {"version":3,"file":"ErrorData.js","names":["ErrorData","errors","name","value","callObservers","ErrorObserverManager"],"sources":["../../src/ErrorData.ts"],"sourcesContent":["import ErrorObserverManager from './ErrorObserverManager';\nimport { Errors } from './types';\n\nclass ErrorData<\n TErrors extends Errors,\n TName extends keyof TErrors = keyof TErrors\n> extends ErrorObserverManager<TErrors> {\n private readonly errors: TErrors;\n\n public constructor(errors: TErrors) {\n super();\n this.errors = errors;\n }\n\n public get<T extends TName>(name: T): TErrors[T] {\n return this.errors[name];\n }\n\n public getAll(): TErrors {\n return this.errors;\n }\n\n public set<T extends TName>(name: T, value: TErrors[T]): void {\n this.errors[name] = value;\n this.callObservers(name, value);\n }\n}\n\nexport default ErrorData;\n"],"mappings":";;;;;;;AAAA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAGpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAc;MAC/C,OAAO,IAAI,CAACD,MAAM,CAACC,IAAI,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEC,KAAiB,EAAQ;MAC5D,IAAI,CAACF,MAAM,CAACC,IAAI,CAAC,GAAGC,KAAK;MACzB,IAAI,CAACC,aAAa,CAACF,IAAI,EAAEC,KAAK,CAAC;IACjC;EAAC;EAAA;AAAA,EAnBOE,iCAAoB;AAAA,eAsBfL,SAAS;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorObserverManager.js","names":["ErrorObserverManager","observers","name","observer","getObservers","push","unsubscribe","deleteFromArray","value","callBroadcastObservers","forEach","BroadcastObserverManager"],"sources":["../../src/ErrorObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport { Observer, StringMap, Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type ErrorObserver = Observer<string | undefined>;\n\nclass ErrorObserverManager<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends BroadcastObserverManager<TName, string | undefined> {\n private readonly observers: {\n [K in TName]?: ErrorObserver[];\n };\n\n public constructor() {\n super();\n this.observers = {};\n }\n\n private getObservers<T extends TName>(name: T): ErrorObserver[] {\n if (!this.observers[name]) this.observers[name] = [];\n return this.observers[name] as ErrorObserver[];\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: ErrorObserver\n ): Subscription {\n const observers = this.getObservers(name);\n observers.push(observer);\n return { unsubscribe: () => deleteFromArray(observers, observer) };\n }\n\n protected callObservers<T extends TName>(name: T, value: string | undefined) {\n this.callBroadcastObservers(name, value);\n this.getObservers(name).forEach((observer) => observer(value));\n }\n}\n\nexport default ErrorObserverManager;\n"],"mappings":";;;;;;;AAAA;AAEA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAIhDA,oBAAoB;EAAA;EAAA;EAQxB,gCAAqB;IAAA;IAAA;IACnB;IAAQ,MALOC,SAAS;IAMxB,MAAKA,SAAS,GAAG,CAAC,CAAC;IAAC;EACtB;EAAC;IAAA;IAAA,OAED,sBAAsCC,IAAO,EAAmB;MAC9D,IAAI,CAAC,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,EAAE,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,GAAG,EAAE;MACpD,OAAO,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC;IAC7B;EAAC;IAAA;IAAA,OAED,mBACEA,IAAO,EACPC,QAAuB,EACT;MACd,IAAMF,SAAS,GAAG,IAAI,CAACG,YAAY,CAACF,IAAI,CAAC;MACzCD,SAAS,CAACI,IAAI,CAACF,QAAQ,CAAC;MACxB,OAAO;QAAEG,WAAW,EAAE;UAAA,OAAM,IAAAC,2BAAe,EAACN,SAAS,EAAEE,QAAQ,CAAC;QAAA;MAAC,CAAC;IACpE;EAAC;IAAA;IAAA,OAED,uBAAyCD,IAAO,EAAEM,KAAyB,EAAE;MAC3E,IAAI,CAACC,sBAAsB,CAACP,IAAI,EAAEM,KAAK,CAAC;MACxC,IAAI,CAACJ,YAAY,CAACF,IAAI,CAAC,CAACQ,OAAO,CAAC,UAACP,QAAQ;QAAA,OAAKA,QAAQ,CAACK,KAAK,CAAC;MAAA,EAAC;IAChE;EAAC;EAAA;AAAA,EA3BOG,oCAAwB;AAAA,eA8BnBX,oBAAoB;AAAA"}
1
+ {"version":3,"file":"ErrorObserverManager.js","names":["ErrorObserverManager","observers","name","observer","getObservers","push","unsubscribe","deleteFromArray","value","callBroadcastObservers","forEach","BroadcastObserverManager"],"sources":["../../src/ErrorObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport { Errors, Observer, Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type ErrorObserver = Observer<string | undefined>;\n\nclass ErrorObserverManager<\n TErrors extends Errors,\n TName extends keyof TErrors = keyof TErrors\n> extends BroadcastObserverManager<TName, string | undefined> {\n private readonly observers: {\n [K in TName]?: ErrorObserver[];\n };\n\n public constructor() {\n super();\n this.observers = {};\n }\n\n private getObservers<T extends TName>(name: T): ErrorObserver[] {\n if (!this.observers[name]) this.observers[name] = [];\n return this.observers[name] as ErrorObserver[];\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: ErrorObserver\n ): Subscription {\n const observers = this.getObservers(name);\n observers.push(observer);\n return { unsubscribe: () => deleteFromArray(observers, observer) };\n }\n\n protected callObservers<T extends TName>(name: T, value: string | undefined) {\n this.callBroadcastObservers(name, value);\n this.getObservers(name).forEach((observer) => observer(value));\n }\n}\n\nexport default ErrorObserverManager;\n"],"mappings":";;;;;;;AAAA;AAEA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAIhDA,oBAAoB;EAAA;EAAA;EAQxB,gCAAqB;IAAA;IAAA;IACnB;IAAQ,MALOC,SAAS;IAMxB,MAAKA,SAAS,GAAG,CAAC,CAAC;IAAC;EACtB;EAAC;IAAA;IAAA,OAED,sBAAsCC,IAAO,EAAmB;MAC9D,IAAI,CAAC,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,EAAE,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,GAAG,EAAE;MACpD,OAAO,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC;IAC7B;EAAC;IAAA;IAAA,OAED,mBACEA,IAAO,EACPC,QAAuB,EACT;MACd,IAAMF,SAAS,GAAG,IAAI,CAACG,YAAY,CAACF,IAAI,CAAC;MACzCD,SAAS,CAACI,IAAI,CAACF,QAAQ,CAAC;MACxB,OAAO;QAAEG,WAAW,EAAE;UAAA,OAAM,IAAAC,2BAAe,EAACN,SAAS,EAAEE,QAAQ,CAAC;QAAA;MAAC,CAAC;IACpE;EAAC;IAAA;IAAA,OAED,uBAAyCD,IAAO,EAAEM,KAAyB,EAAE;MAC3E,IAAI,CAACC,sBAAsB,CAACP,IAAI,EAAEM,KAAK,CAAC;MACxC,IAAI,CAACJ,YAAY,CAACF,IAAI,CAAC,CAACQ,OAAO,CAAC,UAACP,QAAQ;QAAA,OAAKA,QAAQ,CAACK,KAAK,CAAC;MAAA,EAAC;IAChE;EAAC;EAAA;AAAA,EA3BOG,oCAAwB;AAAA,eA8BnBX,oBAAoB;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["Form","initValues","values","errors","ValueData","clone","ErrorData","Object","keys","getAll","forEach","name","set","undefined"],"sources":["../../src/Form.ts"],"sourcesContent":["import ErrorData from './ErrorData';\nimport { Errors, Path, StringMap } from './types';\nimport clone from './utils/clone';\nimport ValueData from './ValueData';\n\nclass Form<\n TValues extends StringMap = StringMap,\n TErrors extends Errors<TValues> = Errors<TValues>\n> {\n public initValues: TValues;\n\n public readonly values: ValueData<TValues>;\n\n public readonly errors: ErrorData<TErrors>;\n\n public constructor(initValues: TValues) {\n this.initValues = initValues;\n this.values = new ValueData(clone(initValues));\n this.errors = new ErrorData({} as TErrors);\n }\n\n public reset() {\n // Reset values\n Object.keys(this.values.getAll()).forEach((name) => {\n this.values.set(name as Path<TValues>, clone(this.initValues[name]));\n });\n\n // Reset errors\n Object.keys(this.errors.getAll()).forEach((name) => {\n this.errors.set(\n name as keyof TErrors,\n undefined as TErrors[keyof TErrors]\n );\n });\n }\n}\n\nexport default Form;\n"],"mappings":";;;;;;AAAA;AAEA;AACA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE9BA,IAAI;EAUR,cAAmBC,UAAmB,EAAE;IAAA;IAAA,KANjCA,UAAU;IAAA,KAEDC,MAAM;IAAA,KAENC,MAAM;IAGpB,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAIE,qBAAS,CAAC,IAAAC,iBAAK,EAACJ,UAAU,CAAC,CAAC;IAC9C,IAAI,CAACE,MAAM,GAAG,IAAIG,qBAAS,CAAC,CAAC,CAAC,CAAY;EAC5C;EAAC;IAAA;IAAA,OAED,iBAAe;MAAA;MACb;MACAC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACN,MAAM,CAACO,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACT,MAAM,CAACU,GAAG,CAACD,IAAI,EAAmB,IAAAN,iBAAK,EAAC,KAAI,CAACJ,UAAU,CAACU,IAAI,CAAC,CAAC,CAAC;MACtE,CAAC,CAAC;;MAEF;MACAJ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACL,MAAM,CAACM,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACR,MAAM,CAACS,GAAG,CACbD,IAAI,EACJE,SAAS,CACV;MACH,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAAA,eAGYb,IAAI;AAAA"}
1
+ {"version":3,"file":"Form.js","names":["Form","initValues","values","errors","ValueData","clone","ErrorData","Object","keys","getAll","forEach","name","set","undefined"],"sources":["../../src/Form.ts"],"sourcesContent":["import ErrorData from './ErrorData';\nimport { Errors, Path, Values } from './types';\nimport clone from './utils/clone';\nimport ValueData from './ValueData';\n\nclass Form<\n TValues extends Values = Values,\n TErrors extends Errors<TValues> = Errors<TValues>\n> {\n public initValues: TValues;\n\n public readonly values: ValueData<TValues>;\n\n public readonly errors: ErrorData<TErrors>;\n\n public constructor(initValues: TValues) {\n this.initValues = initValues;\n this.values = new ValueData(clone(initValues));\n this.errors = new ErrorData({} as TErrors);\n }\n\n public reset() {\n // Reset values\n Object.keys(this.values.getAll()).forEach((name) => {\n this.values.set(name as Path<TValues>, clone(this.initValues[name]));\n });\n\n // Reset errors\n Object.keys(this.errors.getAll()).forEach((name) => {\n this.errors.set(\n name as keyof TErrors,\n undefined as TErrors[keyof TErrors]\n );\n });\n }\n}\n\nexport default Form;\n"],"mappings":";;;;;;AAAA;AAEA;AACA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE9BA,IAAI;EAUR,cAAmBC,UAAmB,EAAE;IAAA;IAAA,KANjCA,UAAU;IAAA,KAEDC,MAAM;IAAA,KAENC,MAAM;IAGpB,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAIE,qBAAS,CAAC,IAAAC,iBAAK,EAACJ,UAAU,CAAC,CAAC;IAC9C,IAAI,CAACE,MAAM,GAAG,IAAIG,qBAAS,CAAC,CAAC,CAAC,CAAY;EAC5C;EAAC;IAAA;IAAA,OAED,iBAAe;MAAA;MACb;MACAC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACN,MAAM,CAACO,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACT,MAAM,CAACU,GAAG,CAACD,IAAI,EAAmB,IAAAN,iBAAK,EAAC,KAAI,CAACJ,UAAU,CAACU,IAAI,CAAC,CAAC,CAAC;MACtE,CAAC,CAAC;;MAEF;MACAJ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACL,MAAM,CAACM,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACR,MAAM,CAACS,GAAG,CACbD,IAAI,EACJE,SAAS,CACV;MACH,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAAA,eAGYb,IAAI;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValueData.js","names":["ValueData","values","name","get","value","ok","set","callObservers","ValueObserverManager"],"sources":["../../src/ValueData.ts"],"sourcesContent":["import { PathReturn, Path, StringMap } from './types';\nimport { get, set } from './utils/path';\nimport ValueObserverManager from './ValueObserverManager';\n\nclass ValueData<\n TValues extends StringMap,\n TName extends Path<TValues> = Path<TValues>\n> extends ValueObserverManager<TValues> {\n private readonly values: TValues;\n\n public constructor(values: TValues) {\n super();\n this.values = values;\n }\n\n public get<T extends TName>(name: T): PathReturn<TValues, T> {\n return get(this.values, name);\n }\n\n public getAll(): TValues {\n return this.values;\n }\n\n public set<T extends TName>(name: T, value: PathReturn<TValues, T>): void {\n const ok = set(this.values, name, value);\n if (ok) this.callObservers(name, this.values);\n }\n}\n\nexport default ValueData;\n"],"mappings":";;;;;;;AACA;AACA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAA0B;MAC3D,OAAO,IAAAC,SAAG,EAAC,IAAI,CAACF,MAAM,EAAEC,IAAI,CAAC;IAC/B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEE,KAA6B,EAAQ;MACxE,IAAMC,EAAE,GAAG,IAAAC,SAAG,EAAC,IAAI,CAACL,MAAM,EAAEC,IAAI,EAAEE,KAAK,CAAC;MACxC,IAAIC,EAAE,EAAE,IAAI,CAACE,aAAa,CAACL,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;IAC/C;EAAC;EAAA;AAAA,EAnBOO,iCAAoB;AAAA,eAsBfR,SAAS;AAAA"}
1
+ {"version":3,"file":"ValueData.js","names":["ValueData","values","name","get","value","ok","set","callObservers","ValueObserverManager"],"sources":["../../src/ValueData.ts"],"sourcesContent":["import { PathReturn, Path, Values } from './types';\nimport { get, set } from './utils/path';\nimport ValueObserverManager from './ValueObserverManager';\n\nclass ValueData<\n TValues extends Values,\n TName extends Path<TValues> = Path<TValues>\n> extends ValueObserverManager<TValues> {\n private readonly values: TValues;\n\n public constructor(values: TValues) {\n super();\n this.values = values;\n }\n\n public get<T extends TName>(name: T): PathReturn<TValues, T> {\n return get(this.values, name);\n }\n\n public getAll(): TValues {\n return this.values;\n }\n\n public set<T extends TName>(name: T, value: PathReturn<TValues, T>): void {\n const ok = set(this.values, name, value);\n if (ok) this.callObservers(name, this.values);\n }\n}\n\nexport default ValueData;\n"],"mappings":";;;;;;;AACA;AACA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAA0B;MAC3D,OAAO,IAAAC,SAAG,EAAC,IAAI,CAACF,MAAM,EAAEC,IAAI,CAAC;IAC/B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEE,KAA6B,EAAQ;MACxE,IAAMC,EAAE,GAAG,IAAAC,SAAG,EAAC,IAAI,CAACL,MAAM,EAAEC,IAAI,EAAEE,KAAK,CAAC;MACxC,IAAIC,EAAE,EAAE,IAAI,CAACE,aAAa,CAACL,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;IAC/C;EAAC;EAAA;AAAA,EAnBOO,iCAAoB;AAAA,eAsBfR,SAAS;AAAA"}
@@ -30,9 +30,6 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
30
30
  var split = function split(path) {
31
31
  return path.split('.');
32
32
  };
33
-
34
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
- // @ts-ignore
36
33
  var ValueObserverManager = /*#__PURE__*/function (_BroadcastObserverMan) {
37
34
  _inherits(ValueObserverManager, _BroadcastObserverMan);
38
35
  var _super = _createSuper(ValueObserverManager);
@@ -1 +1 @@
1
- {"version":3,"file":"ValueObserverManager.js","names":["split","path","ValueObserverManager","root","Node","keys","cur","forEach","key","getNode","createNode","name","observer","node","findNode","addObserver","unsubscribe","deleteObserver","observers","length","parent","deleteNode","data","callBroadcastObservers","get","callNodeObservers","curNode","curData","i","isObjectOrArray","callChildObservers","Object","entries","nodes","value","BroadcastObserverManager"],"sources":["../../src/ValueObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport Node from './Node';\nimport { Observer, PathReturn, Path, StringMap, Subscription } from './types';\nimport { get, isObjectOrArray } from './utils/path';\n\nconst split = (path: string) => path.split('.');\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass ValueObserverManager<\n TValues extends StringMap,\n TName extends Path<TValues> = Path<TValues>\n> extends BroadcastObserverManager<TName, TValues[TName]> {\n private readonly root: Node;\n\n public constructor() {\n super();\n this.root = new Node();\n }\n\n private findNode(path: string) {\n const keys = split(path);\n let cur = this.root;\n keys.forEach((key) => {\n cur = cur.getNode(key) || cur.createNode(key);\n });\n return cur;\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: Observer<PathReturn<TValues, T>>\n ): Subscription {\n const node = this.findNode(name);\n node.addObserver(observer);\n\n return {\n unsubscribe: () => {\n node.deleteObserver(observer);\n if (node.observers.length === 0) {\n node.parent?.deleteNode(node.name);\n }\n },\n };\n }\n\n protected callObservers<T extends TName>(name: T, data: TValues): void {\n this.callBroadcastObservers(name, get(data, name));\n this.callNodeObservers(name, data);\n }\n\n private callNodeObservers<T extends TName>(name: T, data: TValues): void {\n const keys = split(name);\n let curNode = this.root;\n let curData = data;\n\n // Call the observers for the root node\n curNode.observers.forEach((observer) => observer(curData));\n\n // Call observers on each node from the root to the specified one\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const node = curNode.getNode(key);\n if (!node || !isObjectOrArray(curData)) return;\n curNode = node;\n curData = curData[key];\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n curNode.observers.forEach((observer) => observer(curData));\n }\n\n // Call observers of all child nodes started from the specified one\n this.callChildObservers(curNode, curData);\n }\n\n private callChildObservers(parent: Node, data: TValues): void {\n if (!isObjectOrArray(data)) return;\n Object.entries(parent.nodes).forEach(([name, node]) => {\n const value = data[name];\n node.observers.forEach((observer) => observer(value));\n this.callChildObservers(node, value);\n });\n }\n}\n\nexport default ValueObserverManager;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ValueObserverManager.js","names":["split","path","ValueObserverManager","root","Node","keys","cur","forEach","key","getNode","createNode","name","observer","node","findNode","addObserver","unsubscribe","deleteObserver","observers","length","parent","deleteNode","data","callBroadcastObservers","get","callNodeObservers","curNode","curData","i","isObjectOrArray","callChildObservers","Object","entries","nodes","value","BroadcastObserverManager"],"sources":["../../src/ValueObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport Node from './Node';\nimport { Observer, PathReturn, Path, Values, Subscription } from './types';\nimport { get, isObjectOrArray } from './utils/path';\n\nconst split = (path: string) => path.split('.');\n\nclass ValueObserverManager<\n TValues extends Values,\n TName extends Path<TValues> = Path<TValues>\n> extends BroadcastObserverManager<TName, TValues[TName]> {\n private readonly root: Node;\n\n public constructor() {\n super();\n this.root = new Node();\n }\n\n private findNode(path: string) {\n const keys = split(path);\n let cur = this.root;\n keys.forEach((key) => {\n cur = cur.getNode(key) || cur.createNode(key);\n });\n return cur;\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: Observer<PathReturn<TValues, T>>\n ): Subscription {\n const node = this.findNode(name);\n node.addObserver(observer);\n\n return {\n unsubscribe: () => {\n node.deleteObserver(observer);\n if (node.observers.length === 0) {\n node.parent?.deleteNode(node.name);\n }\n },\n };\n }\n\n protected callObservers<T extends TName>(name: T, data: TValues): void {\n this.callBroadcastObservers(name, get(data, name));\n this.callNodeObservers(name, data);\n }\n\n private callNodeObservers<T extends TName>(name: T, data: TValues): void {\n const keys = split(name);\n let curNode = this.root;\n let curData = data;\n\n // Call the observers for the root node\n curNode.observers.forEach((observer) => observer(curData));\n\n // Call observers on each node from the root to the specified one\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const node = curNode.getNode(key);\n if (!node || !isObjectOrArray(curData)) return;\n curNode = node;\n curData = curData[key];\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n curNode.observers.forEach((observer) => observer(curData));\n }\n\n // Call observers of all child nodes started from the specified one\n this.callChildObservers(curNode, curData);\n }\n\n private callChildObservers(parent: Node, data: TValues): void {\n if (!isObjectOrArray(data)) return;\n Object.entries(parent.nodes).forEach(([name, node]) => {\n const value = data[name];\n node.observers.forEach((observer) => observer(value));\n this.callChildObservers(node, value);\n });\n }\n}\n\nexport default ValueObserverManager;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createUseValueHook","form","name","useState","values","get","value","setValue","useEffect","subscription","subscribe","v","unsubscribe","createUseErrorHook","errors","createUseTransformerHook","useValue","transformer","transformerRef","useRef","current","partialValues","Object","entries","forEach","n","set","createFieldComponent","useError","props","render","error","initValue","useMemo","initValues","modified","isEqual","reset","useCallback","onChange","undefined","renderRef","inputProps","fieldState","useModifiedFields","modifiedFields","setModifiedFields","modifiedFieldsRef","initValuesRef","subscribeToAll","isInitValue","fields","includes","filter","field","useFormResponse","Field","useTransformer","length","useForm","memoizedInitValues","useDeepEqualMemo","formRef","Form","useExistingForm","useFormContext","Error"],"sources":["../../src/index.tsx"],"sourcesContent":["import {\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Form from './Form';\nimport { PathReturn, Path, StringMap } from './types';\nimport useFormContext from './useFormContext';\nimport isEqual from './utils/isEqual';\nimport { get } from './utils/path';\nimport useDeepEqualMemo from './utils/useDeepEqualMemo';\n\nexport * from './BroadcastObserverManager';\nexport * from './ErrorObserverManager';\nexport { default as Form } from './Form';\nexport * from './types';\nexport * from './useFormContext';\n\nconst createUseValueHook =\n <TValues extends StringMap>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<PathReturn<TValues, TName>>(\n form.values.get(name)\n );\n\n useEffect(() => {\n const subscription = form.values.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nconst createUseErrorHook =\n <TValues extends StringMap>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<string | undefined>(\n form.errors.get(name)\n );\n\n useEffect(() => {\n const subscription = form.errors.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nexport type Transformer<\n TValues extends StringMap,\n TName extends Path<TValues>\n> = (value: PathReturn<TValues, TName>) => {\n [K in Path<TValues>]?: PathReturn<TValues, K>;\n};\n\nconst createUseTransformerHook = <TValues extends StringMap>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n return <TName extends Path<TValues>>(\n name: TName,\n transformer: Transformer<TValues, TName>\n ) => {\n const value = useValue(name);\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n useEffect(() => {\n const partialValues = transformerRef.current(value);\n Object.entries(partialValues).forEach(([n, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n form.values.set(n as Path<TValues>, v as any);\n });\n }, [value]);\n };\n};\n\ninterface InputProps<TValue> {\n value: TValue;\n onChange: (value: TValue) => void;\n}\ninterface FieldState {\n error?: string;\n modified: boolean;\n reset: () => void;\n}\ninterface FieldProps<TName, TValue> {\n name: TName;\n transformer?: (value: TValue) => TValue;\n render: (\n inputProps: InputProps<TValue>,\n fieldState: FieldState\n ) => ReactElement | null;\n}\n\nconst createFieldComponent = <TValues extends StringMap>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n const useError = createUseErrorHook(form);\n return <TName extends Path<TValues>>(\n props: FieldProps<TName, PathReturn<TValues, TName>>\n ) => {\n const { name, transformer = (v) => v, render } = props;\n\n const value = useValue(name);\n const error = useError(name);\n\n const initValue = useMemo(() => get(form.initValues, name), [name]);\n const modified = useMemo(\n () => !isEqual(value, initValue),\n [initValue, value]\n );\n const reset = useCallback(\n () => form.values.set(name, initValue),\n [initValue, name]\n );\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n const onChange = useCallback(\n (v: PathReturn<TValues, TName>) => {\n form.values.set(name, transformerRef.current(v));\n form.errors.set(name, undefined); // Reset the error when the value is changed\n },\n [name]\n );\n\n const renderRef = useRef(render);\n useEffect(() => {\n renderRef.current = render;\n }, [render]);\n\n const inputProps = useMemo(() => ({ value, onChange }), [onChange, value]);\n const fieldState = useMemo(\n () => ({ error, modified, reset }),\n [error, modified, reset]\n );\n\n return useMemo(\n () => renderRef.current(inputProps, fieldState),\n [fieldState, inputProps]\n );\n };\n};\n\nconst useModifiedFields = <TValues extends StringMap>(form: Form<TValues>) => {\n const [modifiedFields, setModifiedFields] = useState<Array<Path<TValues>>>(\n []\n );\n\n const modifiedFieldsRef = useRef(modifiedFields);\n useEffect(() => {\n modifiedFieldsRef.current = modifiedFields;\n }, [modifiedFields]);\n\n const initValuesRef = useRef(form.initValues);\n useEffect(() => {\n initValuesRef.current = form.initValues;\n }, [form.initValues]);\n\n useEffect(() => {\n const subscription = form.values.subscribeToAll((name, value) => {\n const isInitValue = isEqual(value, get(initValuesRef.current, name));\n const fields = modifiedFieldsRef.current;\n\n if (fields.includes(name)) {\n if (isInitValue) {\n setModifiedFields(fields.filter((field) => field !== name));\n }\n } else if (!isInitValue) {\n setModifiedFields([...fields, name]);\n }\n });\n return () => subscription.unsubscribe();\n }, [form.values]);\n\n return modifiedFields;\n};\n\nconst useFormResponse = <TValues extends StringMap>(form: Form<TValues>) => {\n const Field = useMemo(() => createFieldComponent(form), [form]);\n const useValue = useMemo(() => createUseValueHook(form), [form]);\n const useError = useMemo(() => createUseErrorHook(form), [form]);\n const useTransformer = useMemo(() => createUseTransformerHook(form), [form]);\n\n const modifiedFields = useModifiedFields(form);\n const modified = useMemo(\n () => modifiedFields.length > 0,\n [modifiedFields.length]\n );\n\n return useMemo(\n () => ({\n form,\n Field,\n useValue,\n useError,\n useTransformer,\n modifiedFields,\n modified,\n }),\n [Field, form, modified, modifiedFields, useError, useTransformer, useValue]\n );\n};\n\nexport const useForm = <TValues extends StringMap = StringMap>(\n initValues: TValues\n) => {\n const memoizedInitValues = useDeepEqualMemo<TValues>(\n () => initValues,\n [initValues]\n );\n\n const formRef = useRef(new Form<TValues>(memoizedInitValues));\n useEffect(() => {\n formRef.current.initValues = memoizedInitValues;\n formRef.current.reset();\n }, [memoizedInitValues]);\n\n return useFormResponse(formRef.current);\n};\n\nexport const useExistingForm = <TValues extends StringMap = StringMap>() => {\n const form = useFormContext<Form<TValues> | null>();\n if (!form) throw new Error('Wrap your form in a FormProvider');\n return useFormResponse(form);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["createUseValueHook","form","name","useState","values","get","value","setValue","useEffect","subscription","subscribe","v","unsubscribe","createUseErrorHook","errors","createUseTransformerHook","useValue","transformer","transformerRef","useRef","current","partialValues","Object","entries","forEach","n","set","createFieldComponent","useError","props","render","error","initValue","useMemo","initValues","modified","isEqual","reset","useCallback","onChange","undefined","renderRef","inputProps","fieldState","useModifiedFields","modifiedFields","setModifiedFields","modifiedFieldsRef","initValuesRef","subscribeToAll","isInitValue","fields","includes","filter","field","useFormResponse","Field","useTransformer","length","useForm","memoizedInitValues","useDeepEqualMemo","formRef","Form","useExistingForm","useFormContext","Error"],"sources":["../../src/index.tsx"],"sourcesContent":["import {\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Form from './Form';\nimport { PathReturn, Path, Values } from './types';\nimport useFormContext from './useFormContext';\nimport isEqual from './utils/isEqual';\nimport { get } from './utils/path';\nimport useDeepEqualMemo from './utils/useDeepEqualMemo';\n\nexport * from './BroadcastObserverManager';\nexport * from './ErrorObserverManager';\nexport { default as Form } from './Form';\nexport * from './types';\nexport * from './useFormContext';\n\nconst createUseValueHook =\n <TValues extends Values>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<PathReturn<TValues, TName>>(\n form.values.get(name)\n );\n\n useEffect(() => {\n const subscription = form.values.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nconst createUseErrorHook =\n <TValues extends Values>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<string | undefined>(\n form.errors.get(name)\n );\n\n useEffect(() => {\n const subscription = form.errors.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nexport type Transformer<TValues extends Values, TName extends Path<TValues>> = (\n value: PathReturn<TValues, TName>\n) => {\n [K in Path<TValues>]?: PathReturn<TValues, K>;\n};\n\nconst createUseTransformerHook = <TValues extends Values>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n return <TName extends Path<TValues>>(\n name: TName,\n transformer: Transformer<TValues, TName>\n ) => {\n const value = useValue(name);\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n useEffect(() => {\n const partialValues = transformerRef.current(value);\n Object.entries(partialValues).forEach(([n, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n form.values.set(n as Path<TValues>, v as any);\n });\n }, [value]);\n };\n};\n\ninterface InputProps<TValue> {\n value: TValue;\n onChange: (value: TValue) => void;\n}\ninterface FieldState {\n error?: string;\n modified: boolean;\n reset: () => void;\n}\ninterface FieldProps<TName, TValue> {\n name: TName;\n transformer?: (value: TValue) => TValue;\n render: (\n inputProps: InputProps<TValue>,\n fieldState: FieldState\n ) => ReactElement | null;\n}\n\nconst createFieldComponent = <TValues extends Values>(form: Form<TValues>) => {\n const useValue = createUseValueHook(form);\n const useError = createUseErrorHook(form);\n return <TName extends Path<TValues>>(\n props: FieldProps<TName, PathReturn<TValues, TName>>\n ) => {\n const { name, transformer = (v) => v, render } = props;\n\n const value = useValue(name);\n const error = useError(name);\n\n const initValue = useMemo(() => get(form.initValues, name), [name]);\n const modified = useMemo(\n () => !isEqual(value, initValue),\n [initValue, value]\n );\n const reset = useCallback(\n () => form.values.set(name, initValue),\n [initValue, name]\n );\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n const onChange = useCallback(\n (v: PathReturn<TValues, TName>) => {\n form.values.set(name, transformerRef.current(v));\n form.errors.set(name, undefined); // Reset the error when the value is changed\n },\n [name]\n );\n\n const renderRef = useRef(render);\n useEffect(() => {\n renderRef.current = render;\n }, [render]);\n\n const inputProps = useMemo(() => ({ value, onChange }), [onChange, value]);\n const fieldState = useMemo(\n () => ({ error, modified, reset }),\n [error, modified, reset]\n );\n\n return useMemo(\n () => renderRef.current(inputProps, fieldState),\n [fieldState, inputProps]\n );\n };\n};\n\nconst useModifiedFields = <TValues extends Values>(form: Form<TValues>) => {\n const [modifiedFields, setModifiedFields] = useState<Array<Path<TValues>>>(\n []\n );\n\n const modifiedFieldsRef = useRef(modifiedFields);\n useEffect(() => {\n modifiedFieldsRef.current = modifiedFields;\n }, [modifiedFields]);\n\n const initValuesRef = useRef(form.initValues);\n useEffect(() => {\n initValuesRef.current = form.initValues;\n }, [form.initValues]);\n\n useEffect(() => {\n const subscription = form.values.subscribeToAll((name, value) => {\n const isInitValue = isEqual(value, get(initValuesRef.current, name));\n const fields = modifiedFieldsRef.current;\n\n if (fields.includes(name)) {\n if (isInitValue) {\n setModifiedFields(fields.filter((field) => field !== name));\n }\n } else if (!isInitValue) {\n setModifiedFields([...fields, name]);\n }\n });\n return () => subscription.unsubscribe();\n }, [form.values]);\n\n return modifiedFields;\n};\n\nconst useFormResponse = <TValues extends Values>(form: Form<TValues>) => {\n const Field = useMemo(() => createFieldComponent(form), [form]);\n const useValue = useMemo(() => createUseValueHook(form), [form]);\n const useError = useMemo(() => createUseErrorHook(form), [form]);\n const useTransformer = useMemo(() => createUseTransformerHook(form), [form]);\n\n const modifiedFields = useModifiedFields(form);\n const modified = useMemo(\n () => modifiedFields.length > 0,\n [modifiedFields.length]\n );\n\n return useMemo(\n () => ({\n form,\n Field,\n useValue,\n useError,\n useTransformer,\n modifiedFields,\n modified,\n }),\n [Field, form, modified, modifiedFields, useError, useTransformer, useValue]\n );\n};\n\nexport const useForm = <TValues extends Values = Values>(\n initValues: TValues\n) => {\n const memoizedInitValues = useDeepEqualMemo<TValues>(\n () => initValues,\n [initValues]\n );\n\n const formRef = useRef(new Form<TValues>(memoizedInitValues));\n useEffect(() => {\n formRef.current.initValues = memoizedInitValues;\n formRef.current.reset();\n }, [memoizedInitValues]);\n\n return useFormResponse(formRef.current);\n};\n\nexport const useExistingForm = <TValues extends Values = Values>() => {\n const form = useFormContext<Form<TValues> | null>();\n if (!form) throw new Error('Wrap your form in a FormProvider');\n return useFormResponse(form);\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type StringMap<T = any> = Record<string, T>;\n\ntype Separator = '.';\ntype KeysWithSeparator<K1, K2> = `${K1 & string}${Separator}${K2 & string}`;\ntype KeyOf<T> = Exclude<keyof T, symbol | keyof any[]>;\n\nexport type Path<T, K = KeyOf<T>> = T extends StringMap\n ?\n | K\n | (K extends keyof T\n ? T[K] extends StringMap\n ? KeysWithSeparator<K, Path<T[K]>>\n : never\n : never)\n : never;\n\nexport type PathReturn<T, K> = K extends keyof T\n ? T[K]\n : K extends `${infer U}${Separator}${infer R}`\n ? U extends keyof T\n ? PathReturn<T[U], R>\n : never\n : never;\n\nexport type Errors<T> = Record<Path<T>, string | undefined>;\n\nexport type Observer<V = any> = (value: V) => void;\nexport interface Subscription {\n unsubscribe: () => void;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype Separator = '.';\ntype KeysWithSeparator<K1, K2> = `${K1 & string}${Separator}${K2 & string}`;\n\ntype OwnKeyOf<T> = Exclude<keyof T, keyof any[]> & string;\ntype IsAny<T> = unknown extends T & string ? true : false;\n\nexport type Path<T, K = OwnKeyOf<T>> = IsAny<T> extends true\n ? string\n : T extends object\n ?\n | K\n | (K extends keyof T\n ? T[K] extends object\n ? KeysWithSeparator<K, Path<T[K]>>\n : never\n : never)\n : never;\n\nexport type PathReturn<T, K> = K extends keyof T\n ? T[K]\n : K extends `${infer U}${Separator}${infer R}`\n ? U extends keyof T\n ? PathReturn<T[U], R>\n : never\n : never;\n\nexport type Values<T = any> = Record<string, T>;\nexport type Errors<T = any> = Record<Path<T>, string | undefined>;\n\nexport type Observer<V = any> = (value: V) => void;\nexport interface Subscription {\n unsubscribe: () => void;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","names":["FormContext","createContext","FormProvider","form","children","useFormContext","useContext"],"sources":["../../src/useFormContext.tsx"],"sourcesContent":["import React, { createContext, ReactNode, useContext } from 'react';\nimport Form from './Form';\nimport { StringMap } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FormContext = createContext<any>(null);\n\nexport interface FormProviderProps<TValues extends StringMap> {\n form: Form<TValues>;\n children?: ReactNode;\n}\n\n// eslint-disable-next-line react/function-component-definition\nexport function FormProvider<TValues extends StringMap>({\n form,\n children,\n}: FormProviderProps<TValues>) {\n return <FormContext.Provider value={form}>{children}</FormContext.Provider>;\n}\n\nfunction useFormContext<T>() {\n return useContext<T>(FormContext);\n}\n\nexport default useFormContext;\n"],"mappings":";;;;;;;;AAAA;AAAoE;AAAA;AAIpE;AACA,IAAMA,WAAW,gBAAG,IAAAC,oBAAa,EAAM,IAAI,CAAC;AAO5C;AACO,SAASC,YAAY,OAGG;EAAA,IAF7BC,IAAI,QAAJA,IAAI;IACJC,QAAQ,QAARA,QAAQ;EAER,oBAAO,gCAAC,WAAW,CAAC,QAAQ;IAAC,KAAK,EAAED;EAAK,GAAEC,QAAQ,CAAwB;AAC7E;AAEA,SAASC,cAAc,GAAM;EAC3B,OAAO,IAAAC,iBAAU,EAAIN,WAAW,CAAC;AACnC;AAAC,eAEcK,cAAc;AAAA"}
1
+ {"version":3,"file":"useFormContext.js","names":["FormContext","createContext","FormProvider","form","children","useFormContext","useContext"],"sources":["../../src/useFormContext.tsx"],"sourcesContent":["import React, { createContext, ReactNode, useContext } from 'react';\nimport Form from './Form';\nimport { Values } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FormContext = createContext<any>(null);\n\nexport interface FormProviderProps<TValues extends Values> {\n form: Form<TValues>;\n children?: ReactNode;\n}\n\n// eslint-disable-next-line react/function-component-definition\nexport function FormProvider<TValues extends Values>({\n form,\n children,\n}: FormProviderProps<TValues>) {\n return <FormContext.Provider value={form}>{children}</FormContext.Provider>;\n}\n\nfunction useFormContext<T>() {\n return useContext<T>(FormContext);\n}\n\nexport default useFormContext;\n"],"mappings":";;;;;;;;AAAA;AAAoE;AAAA;AAIpE;AACA,IAAMA,WAAW,gBAAG,IAAAC,oBAAa,EAAM,IAAI,CAAC;AAO5C;AACO,SAASC,YAAY,OAGG;EAAA,IAF7BC,IAAI,QAAJA,IAAI;IACJC,QAAQ,QAARA,QAAQ;EAER,oBAAO,gCAAC,WAAW,CAAC,QAAQ;IAAC,KAAK,EAAED;EAAK,GAAEC,QAAQ,CAAwB;AAC7E;AAEA,SAASC,cAAc,GAAM;EAC3B,OAAO,IAAAC,iBAAU,EAAIN,WAAW,CAAC;AACnC;AAAC,eAEcK,cAAc;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","names":["isObjectOrArray","value","split","path","groups","match","get","data","Object","hasOwn","undefined","key","nextPath","set"],"sources":["../../../src/utils/path.ts"],"sourcesContent":["import { StringMap } from '../types';\n\n/* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign */\n\nexport const isObjectOrArray = (value: any): value is object =>\n typeof value === 'object' && value !== null;\n\nconst split = (path: string) => {\n const groups = path.match(/^([^.]*)\\.(.*)$/);\n return groups ? [groups[1], groups[2]] : null;\n};\n\nexport const get = (data: StringMap, path: string): any => {\n if (Object.hasOwn(data, path)) {\n return data[path];\n }\n\n const groups = split(path);\n if (!groups) return undefined;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return undefined;\n if (!isObjectOrArray(data[key])) return undefined;\n\n return get(data[key], nextPath);\n};\n\nexport const set = (data: StringMap, path: string, value: any): boolean => {\n if (Object.hasOwn(data, path)) {\n data[path] = value;\n return true;\n }\n\n const groups = split(path);\n if (!groups) return false;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return false;\n if (!isObjectOrArray(data[key])) return false;\n\n return set(data[key], nextPath, value);\n};\n"],"mappings":";;;;;;;;;;;;;AAEA;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAe,CAAIC,KAAU;EAAA,OACxC,QAAOA,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;AAAA;AAAC;AAE9C,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,IAAY,EAAK;EAC9B,IAAMC,MAAM,GAAGD,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC;EAC5C,OAAOD,MAAM,GAAG,CAACA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC/C,CAAC;AAEM,IAAME,GAAG,GAAG,SAANA,GAAG,CAAIC,IAAe,EAAEJ,IAAY,EAAU;EACzD,IAAIK,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7B,OAAOI,IAAI,CAACJ,IAAI,CAAC;EACnB;EAEA,IAAMC,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAOM,SAAS;EAE7B,6BAAwBN,MAAM;IAAvBO,GAAG;IAAEC,QAAQ;EACpB,IAAI,CAACJ,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAOD,SAAS;EAC/C,IAAI,CAACV,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAOD,SAAS;EAEjD,OAAOJ,GAAG,CAACC,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,CAAC;AACjC,CAAC;AAAC;AAEK,IAAMC,GAAG,GAAG,SAANA,GAAG,CAAIN,IAAe,EAAEJ,IAAY,EAAEF,KAAU,EAAc;EACzE,IAAIO,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7BI,IAAI,CAACJ,IAAI,CAAC,GAAGF,KAAK;IAClB,OAAO,IAAI;EACb;EAEA,IAAMG,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;EAEzB,8BAAwBA,MAAM;IAAvBO,GAAG;IAAEC,QAAQ;EACpB,IAAI,CAACJ,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAO,KAAK;EAC3C,IAAI,CAACX,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;EAE7C,OAAOE,GAAG,CAACN,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,EAAEX,KAAK,CAAC;AACxC,CAAC;AAAC"}
1
+ {"version":3,"file":"path.js","names":["isObjectOrArray","value","split","path","groups","match","get","data","Object","hasOwn","undefined","key","nextPath","set"],"sources":["../../../src/utils/path.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign */\n\nexport const isObjectOrArray = (value: any): value is object =>\n typeof value === 'object' && value !== null;\n\nconst split = (path: string) => {\n const groups = path.match(/^([^.]*)\\.(.*)$/);\n return groups ? [groups[1], groups[2]] : null;\n};\n\nexport const get = (data: Record<string, any>, path: string): any => {\n if (Object.hasOwn(data, path)) {\n return data[path];\n }\n\n const groups = split(path);\n if (!groups) return undefined;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return undefined;\n if (!isObjectOrArray(data[key])) return undefined;\n\n return get(data[key], nextPath);\n};\n\nexport const set = (\n data: Record<string, any>,\n path: string,\n value: any\n): boolean => {\n if (Object.hasOwn(data, path)) {\n data[path] = value;\n return true;\n }\n\n const groups = split(path);\n if (!groups) return false;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return false;\n if (!isObjectOrArray(data[key])) return false;\n\n return set(data[key], nextPath, value);\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAe,CAAIC,KAAU;EAAA,OACxC,QAAOA,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;AAAA;AAAC;AAE9C,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,IAAY,EAAK;EAC9B,IAAMC,MAAM,GAAGD,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC;EAC5C,OAAOD,MAAM,GAAG,CAACA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC/C,CAAC;AAEM,IAAME,GAAG,GAAG,SAANA,GAAG,CAAIC,IAAyB,EAAEJ,IAAY,EAAU;EACnE,IAAIK,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7B,OAAOI,IAAI,CAACJ,IAAI,CAAC;EACnB;EAEA,IAAMC,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAOM,SAAS;EAE7B,6BAAwBN,MAAM;IAAvBO,GAAG;IAAEC,QAAQ;EACpB,IAAI,CAACJ,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAOD,SAAS;EAC/C,IAAI,CAACV,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAOD,SAAS;EAEjD,OAAOJ,GAAG,CAACC,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,CAAC;AACjC,CAAC;AAAC;AAEK,IAAMC,GAAG,GAAG,SAANA,GAAG,CACdN,IAAyB,EACzBJ,IAAY,EACZF,KAAU,EACE;EACZ,IAAIO,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7BI,IAAI,CAACJ,IAAI,CAAC,GAAGF,KAAK;IAClB,OAAO,IAAI;EACb;EAEA,IAAMG,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;EAEzB,8BAAwBA,MAAM;IAAvBO,GAAG;IAAEC,QAAQ;EACpB,IAAI,CAACJ,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAO,KAAK;EAC3C,IAAI,CAACX,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;EAE7C,OAAOE,GAAG,CAACN,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,EAAEX,KAAK,CAAC;AACxC,CAAC;AAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorData.js","names":["ErrorObserverManager","ErrorData","constructor","errors","get","name","getAll","set","value","callObservers"],"sources":["../../src/ErrorData.ts"],"sourcesContent":["import ErrorObserverManager from './ErrorObserverManager';\nimport { StringMap } from './types';\n\nclass ErrorData<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends ErrorObserverManager<TErrors> {\n private readonly errors: TErrors;\n\n public constructor(errors: TErrors) {\n super();\n this.errors = errors;\n }\n\n public get<T extends TName>(name: T): TErrors[T] {\n return this.errors[name];\n }\n\n public getAll(): TErrors {\n return this.errors;\n }\n\n public set<T extends TName>(name: T, value: TErrors[T]): void {\n this.errors[name] = value;\n this.callObservers(name, value);\n }\n}\n\nexport default ErrorData;\n"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AAGzD,MAAMC,SAAS,SAGLD,oBAAoB,CAAU;EAG/BE,WAAW,CAACC,MAAe,EAAE;IAClC,KAAK,EAAE;IAAC,KAHOA,MAAM;IAIrB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEOC,GAAG,CAAkBC,IAAO,EAAc;IAC/C,OAAO,IAAI,CAACF,MAAM,CAACE,IAAI,CAAC;EAC1B;EAEOC,MAAM,GAAY;IACvB,OAAO,IAAI,CAACH,MAAM;EACpB;EAEOI,GAAG,CAAkBF,IAAO,EAAEG,KAAiB,EAAQ;IAC5D,IAAI,CAACL,MAAM,CAACE,IAAI,CAAC,GAAGG,KAAK;IACzB,IAAI,CAACC,aAAa,CAACJ,IAAI,EAAEG,KAAK,CAAC;EACjC;AACF;AAEA,eAAeP,SAAS"}
1
+ {"version":3,"file":"ErrorData.js","names":["ErrorObserverManager","ErrorData","constructor","errors","get","name","getAll","set","value","callObservers"],"sources":["../../src/ErrorData.ts"],"sourcesContent":["import ErrorObserverManager from './ErrorObserverManager';\nimport { Errors } from './types';\n\nclass ErrorData<\n TErrors extends Errors,\n TName extends keyof TErrors = keyof TErrors\n> extends ErrorObserverManager<TErrors> {\n private readonly errors: TErrors;\n\n public constructor(errors: TErrors) {\n super();\n this.errors = errors;\n }\n\n public get<T extends TName>(name: T): TErrors[T] {\n return this.errors[name];\n }\n\n public getAll(): TErrors {\n return this.errors;\n }\n\n public set<T extends TName>(name: T, value: TErrors[T]): void {\n this.errors[name] = value;\n this.callObservers(name, value);\n }\n}\n\nexport default ErrorData;\n"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AAGzD,MAAMC,SAAS,SAGLD,oBAAoB,CAAU;EAG/BE,WAAW,CAACC,MAAe,EAAE;IAClC,KAAK,EAAE;IAAC,KAHOA,MAAM;IAIrB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEOC,GAAG,CAAkBC,IAAO,EAAc;IAC/C,OAAO,IAAI,CAACF,MAAM,CAACE,IAAI,CAAC;EAC1B;EAEOC,MAAM,GAAY;IACvB,OAAO,IAAI,CAACH,MAAM;EACpB;EAEOI,GAAG,CAAkBF,IAAO,EAAEG,KAAiB,EAAQ;IAC5D,IAAI,CAACL,MAAM,CAACE,IAAI,CAAC,GAAGG,KAAK;IACzB,IAAI,CAACC,aAAa,CAACJ,IAAI,EAAEG,KAAK,CAAC;EACjC;AACF;AAEA,eAAeP,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorObserverManager.js","names":["BroadcastObserverManager","deleteFromArray","ErrorObserverManager","constructor","observers","getObservers","name","subscribe","observer","push","unsubscribe","callObservers","value","callBroadcastObservers","forEach"],"sources":["../../src/ErrorObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport { Observer, StringMap, Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type ErrorObserver = Observer<string | undefined>;\n\nclass ErrorObserverManager<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends BroadcastObserverManager<TName, string | undefined> {\n private readonly observers: {\n [K in TName]?: ErrorObserver[];\n };\n\n public constructor() {\n super();\n this.observers = {};\n }\n\n private getObservers<T extends TName>(name: T): ErrorObserver[] {\n if (!this.observers[name]) this.observers[name] = [];\n return this.observers[name] as ErrorObserver[];\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: ErrorObserver\n ): Subscription {\n const observers = this.getObservers(name);\n observers.push(observer);\n return { unsubscribe: () => deleteFromArray(observers, observer) };\n }\n\n protected callObservers<T extends TName>(name: T, value: string | undefined) {\n this.callBroadcastObservers(name, value);\n this.getObservers(name).forEach((observer) => observer(value));\n }\n}\n\nexport default ErrorObserverManager;\n"],"mappings":"AAAA,OAAOA,wBAAwB,MAAM,4BAA4B;AAEjE,OAAOC,eAAe,MAAM,yBAAyB;AAIrD,MAAMC,oBAAoB,SAGhBF,wBAAwB,CAA4B;EAKrDG,WAAW,GAAG;IACnB,KAAK,EAAE;IAAC,KALOC,SAAS;IAMxB,IAAI,CAACA,SAAS,GAAG,CAAC,CAAC;EACrB;EAEQC,YAAY,CAAkBC,IAAO,EAAmB;IAC9D,IAAI,CAAC,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC,EAAE,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC,GAAG,EAAE;IACpD,OAAO,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC;EAC7B;EAEOC,SAAS,CACdD,IAAO,EACPE,QAAuB,EACT;IACd,MAAMJ,SAAS,GAAG,IAAI,CAACC,YAAY,CAACC,IAAI,CAAC;IACzCF,SAAS,CAACK,IAAI,CAACD,QAAQ,CAAC;IACxB,OAAO;MAAEE,WAAW,EAAE,MAAMT,eAAe,CAACG,SAAS,EAAEI,QAAQ;IAAE,CAAC;EACpE;EAEUG,aAAa,CAAkBL,IAAO,EAAEM,KAAyB,EAAE;IAC3E,IAAI,CAACC,sBAAsB,CAACP,IAAI,EAAEM,KAAK,CAAC;IACxC,IAAI,CAACP,YAAY,CAACC,IAAI,CAAC,CAACQ,OAAO,CAAEN,QAAQ,IAAKA,QAAQ,CAACI,KAAK,CAAC,CAAC;EAChE;AACF;AAEA,eAAeV,oBAAoB"}
1
+ {"version":3,"file":"ErrorObserverManager.js","names":["BroadcastObserverManager","deleteFromArray","ErrorObserverManager","constructor","observers","getObservers","name","subscribe","observer","push","unsubscribe","callObservers","value","callBroadcastObservers","forEach"],"sources":["../../src/ErrorObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport { Errors, Observer, Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type ErrorObserver = Observer<string | undefined>;\n\nclass ErrorObserverManager<\n TErrors extends Errors,\n TName extends keyof TErrors = keyof TErrors\n> extends BroadcastObserverManager<TName, string | undefined> {\n private readonly observers: {\n [K in TName]?: ErrorObserver[];\n };\n\n public constructor() {\n super();\n this.observers = {};\n }\n\n private getObservers<T extends TName>(name: T): ErrorObserver[] {\n if (!this.observers[name]) this.observers[name] = [];\n return this.observers[name] as ErrorObserver[];\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: ErrorObserver\n ): Subscription {\n const observers = this.getObservers(name);\n observers.push(observer);\n return { unsubscribe: () => deleteFromArray(observers, observer) };\n }\n\n protected callObservers<T extends TName>(name: T, value: string | undefined) {\n this.callBroadcastObservers(name, value);\n this.getObservers(name).forEach((observer) => observer(value));\n }\n}\n\nexport default ErrorObserverManager;\n"],"mappings":"AAAA,OAAOA,wBAAwB,MAAM,4BAA4B;AAEjE,OAAOC,eAAe,MAAM,yBAAyB;AAIrD,MAAMC,oBAAoB,SAGhBF,wBAAwB,CAA4B;EAKrDG,WAAW,GAAG;IACnB,KAAK,EAAE;IAAC,KALOC,SAAS;IAMxB,IAAI,CAACA,SAAS,GAAG,CAAC,CAAC;EACrB;EAEQC,YAAY,CAAkBC,IAAO,EAAmB;IAC9D,IAAI,CAAC,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC,EAAE,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC,GAAG,EAAE;IACpD,OAAO,IAAI,CAACF,SAAS,CAACE,IAAI,CAAC;EAC7B;EAEOC,SAAS,CACdD,IAAO,EACPE,QAAuB,EACT;IACd,MAAMJ,SAAS,GAAG,IAAI,CAACC,YAAY,CAACC,IAAI,CAAC;IACzCF,SAAS,CAACK,IAAI,CAACD,QAAQ,CAAC;IACxB,OAAO;MAAEE,WAAW,EAAE,MAAMT,eAAe,CAACG,SAAS,EAAEI,QAAQ;IAAE,CAAC;EACpE;EAEUG,aAAa,CAAkBL,IAAO,EAAEM,KAAyB,EAAE;IAC3E,IAAI,CAACC,sBAAsB,CAACP,IAAI,EAAEM,KAAK,CAAC;IACxC,IAAI,CAACP,YAAY,CAACC,IAAI,CAAC,CAACQ,OAAO,CAAEN,QAAQ,IAAKA,QAAQ,CAACI,KAAK,CAAC,CAAC;EAChE;AACF;AAEA,eAAeV,oBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["ErrorData","clone","ValueData","Form","constructor","initValues","values","errors","reset","Object","keys","getAll","forEach","name","set","undefined"],"sources":["../../src/Form.ts"],"sourcesContent":["import ErrorData from './ErrorData';\nimport { Errors, Path, StringMap } from './types';\nimport clone from './utils/clone';\nimport ValueData from './ValueData';\n\nclass Form<\n TValues extends StringMap = StringMap,\n TErrors extends Errors<TValues> = Errors<TValues>\n> {\n public initValues: TValues;\n\n public readonly values: ValueData<TValues>;\n\n public readonly errors: ErrorData<TErrors>;\n\n public constructor(initValues: TValues) {\n this.initValues = initValues;\n this.values = new ValueData(clone(initValues));\n this.errors = new ErrorData({} as TErrors);\n }\n\n public reset() {\n // Reset values\n Object.keys(this.values.getAll()).forEach((name) => {\n this.values.set(name as Path<TValues>, clone(this.initValues[name]));\n });\n\n // Reset errors\n Object.keys(this.errors.getAll()).forEach((name) => {\n this.errors.set(\n name as keyof TErrors,\n undefined as TErrors[keyof TErrors]\n );\n });\n }\n}\n\nexport default Form;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,aAAa;AAEnC,OAAOC,KAAK,MAAM,eAAe;AACjC,OAAOC,SAAS,MAAM,aAAa;AAEnC,MAAMC,IAAI,CAGR;EAOOC,WAAW,CAACC,UAAmB,EAAE;IAAA,KANjCA,UAAU;IAAA,KAEDC,MAAM;IAAA,KAENC,MAAM;IAGpB,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAIJ,SAAS,CAACD,KAAK,CAACI,UAAU,CAAC,CAAC;IAC9C,IAAI,CAACE,MAAM,GAAG,IAAIP,SAAS,CAAC,CAAC,CAAC,CAAY;EAC5C;EAEOQ,KAAK,GAAG;IACb;IACAC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACK,MAAM,EAAE,CAAC,CAACC,OAAO,CAAEC,IAAI,IAAK;MAClD,IAAI,CAACP,MAAM,CAACQ,GAAG,CAACD,IAAI,EAAmBZ,KAAK,CAAC,IAAI,CAACI,UAAU,CAACQ,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;;IAEF;IACAJ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACH,MAAM,CAACI,MAAM,EAAE,CAAC,CAACC,OAAO,CAAEC,IAAI,IAAK;MAClD,IAAI,CAACN,MAAM,CAACO,GAAG,CACbD,IAAI,EACJE,SAAS,CACV;IACH,CAAC,CAAC;EACJ;AACF;AAEA,eAAeZ,IAAI"}
1
+ {"version":3,"file":"Form.js","names":["ErrorData","clone","ValueData","Form","constructor","initValues","values","errors","reset","Object","keys","getAll","forEach","name","set","undefined"],"sources":["../../src/Form.ts"],"sourcesContent":["import ErrorData from './ErrorData';\nimport { Errors, Path, Values } from './types';\nimport clone from './utils/clone';\nimport ValueData from './ValueData';\n\nclass Form<\n TValues extends Values = Values,\n TErrors extends Errors<TValues> = Errors<TValues>\n> {\n public initValues: TValues;\n\n public readonly values: ValueData<TValues>;\n\n public readonly errors: ErrorData<TErrors>;\n\n public constructor(initValues: TValues) {\n this.initValues = initValues;\n this.values = new ValueData(clone(initValues));\n this.errors = new ErrorData({} as TErrors);\n }\n\n public reset() {\n // Reset values\n Object.keys(this.values.getAll()).forEach((name) => {\n this.values.set(name as Path<TValues>, clone(this.initValues[name]));\n });\n\n // Reset errors\n Object.keys(this.errors.getAll()).forEach((name) => {\n this.errors.set(\n name as keyof TErrors,\n undefined as TErrors[keyof TErrors]\n );\n });\n }\n}\n\nexport default Form;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,aAAa;AAEnC,OAAOC,KAAK,MAAM,eAAe;AACjC,OAAOC,SAAS,MAAM,aAAa;AAEnC,MAAMC,IAAI,CAGR;EAOOC,WAAW,CAACC,UAAmB,EAAE;IAAA,KANjCA,UAAU;IAAA,KAEDC,MAAM;IAAA,KAENC,MAAM;IAGpB,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAIJ,SAAS,CAACD,KAAK,CAACI,UAAU,CAAC,CAAC;IAC9C,IAAI,CAACE,MAAM,GAAG,IAAIP,SAAS,CAAC,CAAC,CAAC,CAAY;EAC5C;EAEOQ,KAAK,GAAG;IACb;IACAC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACK,MAAM,EAAE,CAAC,CAACC,OAAO,CAAEC,IAAI,IAAK;MAClD,IAAI,CAACP,MAAM,CAACQ,GAAG,CAACD,IAAI,EAAmBZ,KAAK,CAAC,IAAI,CAACI,UAAU,CAACQ,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;;IAEF;IACAJ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACH,MAAM,CAACI,MAAM,EAAE,CAAC,CAACC,OAAO,CAAEC,IAAI,IAAK;MAClD,IAAI,CAACN,MAAM,CAACO,GAAG,CACbD,IAAI,EACJE,SAAS,CACV;IACH,CAAC,CAAC;EACJ;AACF;AAEA,eAAeZ,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValueData.js","names":["get","set","ValueObserverManager","ValueData","constructor","values","name","getAll","value","ok","callObservers"],"sources":["../../src/ValueData.ts"],"sourcesContent":["import { PathReturn, Path, StringMap } from './types';\nimport { get, set } from './utils/path';\nimport ValueObserverManager from './ValueObserverManager';\n\nclass ValueData<\n TValues extends StringMap,\n TName extends Path<TValues> = Path<TValues>\n> extends ValueObserverManager<TValues> {\n private readonly values: TValues;\n\n public constructor(values: TValues) {\n super();\n this.values = values;\n }\n\n public get<T extends TName>(name: T): PathReturn<TValues, T> {\n return get(this.values, name);\n }\n\n public getAll(): TValues {\n return this.values;\n }\n\n public set<T extends TName>(name: T, value: PathReturn<TValues, T>): void {\n const ok = set(this.values, name, value);\n if (ok) this.callObservers(name, this.values);\n }\n}\n\nexport default ValueData;\n"],"mappings":"AACA,SAASA,GAAG,EAAEC,GAAG,QAAQ,cAAc;AACvC,OAAOC,oBAAoB,MAAM,wBAAwB;AAEzD,MAAMC,SAAS,SAGLD,oBAAoB,CAAU;EAG/BE,WAAW,CAACC,MAAe,EAAE;IAClC,KAAK,EAAE;IAAC,KAHOA,MAAM;IAIrB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEOL,GAAG,CAAkBM,IAAO,EAA0B;IAC3D,OAAON,GAAG,CAAC,IAAI,CAACK,MAAM,EAAEC,IAAI,CAAC;EAC/B;EAEOC,MAAM,GAAY;IACvB,OAAO,IAAI,CAACF,MAAM;EACpB;EAEOJ,GAAG,CAAkBK,IAAO,EAAEE,KAA6B,EAAQ;IACxE,MAAMC,EAAE,GAAGR,GAAG,CAAC,IAAI,CAACI,MAAM,EAAEC,IAAI,EAAEE,KAAK,CAAC;IACxC,IAAIC,EAAE,EAAE,IAAI,CAACC,aAAa,CAACJ,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;EAC/C;AACF;AAEA,eAAeF,SAAS"}
1
+ {"version":3,"file":"ValueData.js","names":["get","set","ValueObserverManager","ValueData","constructor","values","name","getAll","value","ok","callObservers"],"sources":["../../src/ValueData.ts"],"sourcesContent":["import { PathReturn, Path, Values } from './types';\nimport { get, set } from './utils/path';\nimport ValueObserverManager from './ValueObserverManager';\n\nclass ValueData<\n TValues extends Values,\n TName extends Path<TValues> = Path<TValues>\n> extends ValueObserverManager<TValues> {\n private readonly values: TValues;\n\n public constructor(values: TValues) {\n super();\n this.values = values;\n }\n\n public get<T extends TName>(name: T): PathReturn<TValues, T> {\n return get(this.values, name);\n }\n\n public getAll(): TValues {\n return this.values;\n }\n\n public set<T extends TName>(name: T, value: PathReturn<TValues, T>): void {\n const ok = set(this.values, name, value);\n if (ok) this.callObservers(name, this.values);\n }\n}\n\nexport default ValueData;\n"],"mappings":"AACA,SAASA,GAAG,EAAEC,GAAG,QAAQ,cAAc;AACvC,OAAOC,oBAAoB,MAAM,wBAAwB;AAEzD,MAAMC,SAAS,SAGLD,oBAAoB,CAAU;EAG/BE,WAAW,CAACC,MAAe,EAAE;IAClC,KAAK,EAAE;IAAC,KAHOA,MAAM;IAIrB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEOL,GAAG,CAAkBM,IAAO,EAA0B;IAC3D,OAAON,GAAG,CAAC,IAAI,CAACK,MAAM,EAAEC,IAAI,CAAC;EAC/B;EAEOC,MAAM,GAAY;IACvB,OAAO,IAAI,CAACF,MAAM;EACpB;EAEOJ,GAAG,CAAkBK,IAAO,EAAEE,KAA6B,EAAQ;IACxE,MAAMC,EAAE,GAAGR,GAAG,CAAC,IAAI,CAACI,MAAM,EAAEC,IAAI,EAAEE,KAAK,CAAC;IACxC,IAAIC,EAAE,EAAE,IAAI,CAACC,aAAa,CAACJ,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;EAC/C;AACF;AAEA,eAAeF,SAAS"}
@@ -2,9 +2,6 @@ import BroadcastObserverManager from './BroadcastObserverManager';
2
2
  import Node from './Node';
3
3
  import { get, isObjectOrArray } from './utils/path';
4
4
  const split = path => path.split('.');
5
-
6
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
7
- // @ts-ignore
8
5
  class ValueObserverManager extends BroadcastObserverManager {
9
6
  constructor() {
10
7
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"ValueObserverManager.js","names":["BroadcastObserverManager","Node","get","isObjectOrArray","split","path","ValueObserverManager","constructor","root","findNode","keys","cur","forEach","key","getNode","createNode","subscribe","name","observer","node","addObserver","unsubscribe","deleteObserver","observers","length","parent","deleteNode","callObservers","data","callBroadcastObservers","callNodeObservers","curNode","curData","i","callChildObservers","Object","entries","nodes","value"],"sources":["../../src/ValueObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport Node from './Node';\nimport { Observer, PathReturn, Path, StringMap, Subscription } from './types';\nimport { get, isObjectOrArray } from './utils/path';\n\nconst split = (path: string) => path.split('.');\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass ValueObserverManager<\n TValues extends StringMap,\n TName extends Path<TValues> = Path<TValues>\n> extends BroadcastObserverManager<TName, TValues[TName]> {\n private readonly root: Node;\n\n public constructor() {\n super();\n this.root = new Node();\n }\n\n private findNode(path: string) {\n const keys = split(path);\n let cur = this.root;\n keys.forEach((key) => {\n cur = cur.getNode(key) || cur.createNode(key);\n });\n return cur;\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: Observer<PathReturn<TValues, T>>\n ): Subscription {\n const node = this.findNode(name);\n node.addObserver(observer);\n\n return {\n unsubscribe: () => {\n node.deleteObserver(observer);\n if (node.observers.length === 0) {\n node.parent?.deleteNode(node.name);\n }\n },\n };\n }\n\n protected callObservers<T extends TName>(name: T, data: TValues): void {\n this.callBroadcastObservers(name, get(data, name));\n this.callNodeObservers(name, data);\n }\n\n private callNodeObservers<T extends TName>(name: T, data: TValues): void {\n const keys = split(name);\n let curNode = this.root;\n let curData = data;\n\n // Call the observers for the root node\n curNode.observers.forEach((observer) => observer(curData));\n\n // Call observers on each node from the root to the specified one\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const node = curNode.getNode(key);\n if (!node || !isObjectOrArray(curData)) return;\n curNode = node;\n curData = curData[key];\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n curNode.observers.forEach((observer) => observer(curData));\n }\n\n // Call observers of all child nodes started from the specified one\n this.callChildObservers(curNode, curData);\n }\n\n private callChildObservers(parent: Node, data: TValues): void {\n if (!isObjectOrArray(data)) return;\n Object.entries(parent.nodes).forEach(([name, node]) => {\n const value = data[name];\n node.observers.forEach((observer) => observer(value));\n this.callChildObservers(node, value);\n });\n }\n}\n\nexport default ValueObserverManager;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ValueObserverManager.js","names":["BroadcastObserverManager","Node","get","isObjectOrArray","split","path","ValueObserverManager","constructor","root","findNode","keys","cur","forEach","key","getNode","createNode","subscribe","name","observer","node","addObserver","unsubscribe","deleteObserver","observers","length","parent","deleteNode","callObservers","data","callBroadcastObservers","callNodeObservers","curNode","curData","i","callChildObservers","Object","entries","nodes","value"],"sources":["../../src/ValueObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport Node from './Node';\nimport { Observer, PathReturn, Path, Values, Subscription } from './types';\nimport { get, isObjectOrArray } from './utils/path';\n\nconst split = (path: string) => path.split('.');\n\nclass ValueObserverManager<\n TValues extends Values,\n TName extends Path<TValues> = Path<TValues>\n> extends BroadcastObserverManager<TName, TValues[TName]> {\n private readonly root: Node;\n\n public constructor() {\n super();\n this.root = new Node();\n }\n\n private findNode(path: string) {\n const keys = split(path);\n let cur = this.root;\n keys.forEach((key) => {\n cur = cur.getNode(key) || cur.createNode(key);\n });\n return cur;\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: Observer<PathReturn<TValues, T>>\n ): Subscription {\n const node = this.findNode(name);\n node.addObserver(observer);\n\n return {\n unsubscribe: () => {\n node.deleteObserver(observer);\n if (node.observers.length === 0) {\n node.parent?.deleteNode(node.name);\n }\n },\n };\n }\n\n protected callObservers<T extends TName>(name: T, data: TValues): void {\n this.callBroadcastObservers(name, get(data, name));\n this.callNodeObservers(name, data);\n }\n\n private callNodeObservers<T extends TName>(name: T, data: TValues): void {\n const keys = split(name);\n let curNode = this.root;\n let curData = data;\n\n // Call the observers for the root node\n curNode.observers.forEach((observer) => observer(curData));\n\n // Call observers on each node from the root to the specified one\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const node = curNode.getNode(key);\n if (!node || !isObjectOrArray(curData)) return;\n curNode = node;\n curData = curData[key];\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n curNode.observers.forEach((observer) => observer(curData));\n }\n\n // Call observers of all child nodes started from the specified one\n this.callChildObservers(curNode, curData);\n }\n\n private callChildObservers(parent: Node, data: TValues): void {\n if (!isObjectOrArray(data)) return;\n Object.entries(parent.nodes).forEach(([name, node]) => {\n const value = data[name];\n node.observers.forEach((observer) => observer(value));\n this.callChildObservers(node, value);\n });\n }\n}\n\nexport default ValueObserverManager;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useCallback","useEffect","useMemo","useRef","useState","Form","useFormContext","isEqual","get","useDeepEqualMemo","default","createUseValueHook","form","name","value","setValue","values","subscription","subscribe","v","unsubscribe","createUseErrorHook","errors","createUseTransformerHook","useValue","transformer","transformerRef","current","partialValues","Object","entries","forEach","n","set","createFieldComponent","useError","props","render","error","initValue","initValues","modified","reset","onChange","undefined","renderRef","inputProps","fieldState","useModifiedFields","modifiedFields","setModifiedFields","modifiedFieldsRef","initValuesRef","subscribeToAll","isInitValue","fields","includes","filter","field","useFormResponse","Field","useTransformer","length","useForm","memoizedInitValues","formRef","useExistingForm","Error"],"sources":["../../src/index.tsx"],"sourcesContent":["import {\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Form from './Form';\nimport { PathReturn, Path, StringMap } from './types';\nimport useFormContext from './useFormContext';\nimport isEqual from './utils/isEqual';\nimport { get } from './utils/path';\nimport useDeepEqualMemo from './utils/useDeepEqualMemo';\n\nexport * from './BroadcastObserverManager';\nexport * from './ErrorObserverManager';\nexport { default as Form } from './Form';\nexport * from './types';\nexport * from './useFormContext';\n\nconst createUseValueHook =\n <TValues extends StringMap>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<PathReturn<TValues, TName>>(\n form.values.get(name)\n );\n\n useEffect(() => {\n const subscription = form.values.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nconst createUseErrorHook =\n <TValues extends StringMap>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<string | undefined>(\n form.errors.get(name)\n );\n\n useEffect(() => {\n const subscription = form.errors.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nexport type Transformer<\n TValues extends StringMap,\n TName extends Path<TValues>\n> = (value: PathReturn<TValues, TName>) => {\n [K in Path<TValues>]?: PathReturn<TValues, K>;\n};\n\nconst createUseTransformerHook = <TValues extends StringMap>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n return <TName extends Path<TValues>>(\n name: TName,\n transformer: Transformer<TValues, TName>\n ) => {\n const value = useValue(name);\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n useEffect(() => {\n const partialValues = transformerRef.current(value);\n Object.entries(partialValues).forEach(([n, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n form.values.set(n as Path<TValues>, v as any);\n });\n }, [value]);\n };\n};\n\ninterface InputProps<TValue> {\n value: TValue;\n onChange: (value: TValue) => void;\n}\ninterface FieldState {\n error?: string;\n modified: boolean;\n reset: () => void;\n}\ninterface FieldProps<TName, TValue> {\n name: TName;\n transformer?: (value: TValue) => TValue;\n render: (\n inputProps: InputProps<TValue>,\n fieldState: FieldState\n ) => ReactElement | null;\n}\n\nconst createFieldComponent = <TValues extends StringMap>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n const useError = createUseErrorHook(form);\n return <TName extends Path<TValues>>(\n props: FieldProps<TName, PathReturn<TValues, TName>>\n ) => {\n const { name, transformer = (v) => v, render } = props;\n\n const value = useValue(name);\n const error = useError(name);\n\n const initValue = useMemo(() => get(form.initValues, name), [name]);\n const modified = useMemo(\n () => !isEqual(value, initValue),\n [initValue, value]\n );\n const reset = useCallback(\n () => form.values.set(name, initValue),\n [initValue, name]\n );\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n const onChange = useCallback(\n (v: PathReturn<TValues, TName>) => {\n form.values.set(name, transformerRef.current(v));\n form.errors.set(name, undefined); // Reset the error when the value is changed\n },\n [name]\n );\n\n const renderRef = useRef(render);\n useEffect(() => {\n renderRef.current = render;\n }, [render]);\n\n const inputProps = useMemo(() => ({ value, onChange }), [onChange, value]);\n const fieldState = useMemo(\n () => ({ error, modified, reset }),\n [error, modified, reset]\n );\n\n return useMemo(\n () => renderRef.current(inputProps, fieldState),\n [fieldState, inputProps]\n );\n };\n};\n\nconst useModifiedFields = <TValues extends StringMap>(form: Form<TValues>) => {\n const [modifiedFields, setModifiedFields] = useState<Array<Path<TValues>>>(\n []\n );\n\n const modifiedFieldsRef = useRef(modifiedFields);\n useEffect(() => {\n modifiedFieldsRef.current = modifiedFields;\n }, [modifiedFields]);\n\n const initValuesRef = useRef(form.initValues);\n useEffect(() => {\n initValuesRef.current = form.initValues;\n }, [form.initValues]);\n\n useEffect(() => {\n const subscription = form.values.subscribeToAll((name, value) => {\n const isInitValue = isEqual(value, get(initValuesRef.current, name));\n const fields = modifiedFieldsRef.current;\n\n if (fields.includes(name)) {\n if (isInitValue) {\n setModifiedFields(fields.filter((field) => field !== name));\n }\n } else if (!isInitValue) {\n setModifiedFields([...fields, name]);\n }\n });\n return () => subscription.unsubscribe();\n }, [form.values]);\n\n return modifiedFields;\n};\n\nconst useFormResponse = <TValues extends StringMap>(form: Form<TValues>) => {\n const Field = useMemo(() => createFieldComponent(form), [form]);\n const useValue = useMemo(() => createUseValueHook(form), [form]);\n const useError = useMemo(() => createUseErrorHook(form), [form]);\n const useTransformer = useMemo(() => createUseTransformerHook(form), [form]);\n\n const modifiedFields = useModifiedFields(form);\n const modified = useMemo(\n () => modifiedFields.length > 0,\n [modifiedFields.length]\n );\n\n return useMemo(\n () => ({\n form,\n Field,\n useValue,\n useError,\n useTransformer,\n modifiedFields,\n modified,\n }),\n [Field, form, modified, modifiedFields, useError, useTransformer, useValue]\n );\n};\n\nexport const useForm = <TValues extends StringMap = StringMap>(\n initValues: TValues\n) => {\n const memoizedInitValues = useDeepEqualMemo<TValues>(\n () => initValues,\n [initValues]\n );\n\n const formRef = useRef(new Form<TValues>(memoizedInitValues));\n useEffect(() => {\n formRef.current.initValues = memoizedInitValues;\n formRef.current.reset();\n }, [memoizedInitValues]);\n\n return useFormResponse(formRef.current);\n};\n\nexport const useExistingForm = <TValues extends StringMap = StringMap>() => {\n const form = useFormContext<Form<TValues> | null>();\n if (!form) throw new Error('Wrap your form in a FormProvider');\n return useFormResponse(form);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["useCallback","useEffect","useMemo","useRef","useState","Form","useFormContext","isEqual","get","useDeepEqualMemo","default","createUseValueHook","form","name","value","setValue","values","subscription","subscribe","v","unsubscribe","createUseErrorHook","errors","createUseTransformerHook","useValue","transformer","transformerRef","current","partialValues","Object","entries","forEach","n","set","createFieldComponent","useError","props","render","error","initValue","initValues","modified","reset","onChange","undefined","renderRef","inputProps","fieldState","useModifiedFields","modifiedFields","setModifiedFields","modifiedFieldsRef","initValuesRef","subscribeToAll","isInitValue","fields","includes","filter","field","useFormResponse","Field","useTransformer","length","useForm","memoizedInitValues","formRef","useExistingForm","Error"],"sources":["../../src/index.tsx"],"sourcesContent":["import {\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Form from './Form';\nimport { PathReturn, Path, Values } from './types';\nimport useFormContext from './useFormContext';\nimport isEqual from './utils/isEqual';\nimport { get } from './utils/path';\nimport useDeepEqualMemo from './utils/useDeepEqualMemo';\n\nexport * from './BroadcastObserverManager';\nexport * from './ErrorObserverManager';\nexport { default as Form } from './Form';\nexport * from './types';\nexport * from './useFormContext';\n\nconst createUseValueHook =\n <TValues extends Values>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<PathReturn<TValues, TName>>(\n form.values.get(name)\n );\n\n useEffect(() => {\n const subscription = form.values.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nconst createUseErrorHook =\n <TValues extends Values>(form: Form<TValues>) =>\n <TName extends Path<TValues>>(name: TName) => {\n const [value, setValue] = useState<string | undefined>(\n form.errors.get(name)\n );\n\n useEffect(() => {\n const subscription = form.errors.subscribe(name, (v) => {\n setValue(v);\n });\n return () => subscription.unsubscribe();\n }, [name]);\n\n return value;\n };\n\nexport type Transformer<TValues extends Values, TName extends Path<TValues>> = (\n value: PathReturn<TValues, TName>\n) => {\n [K in Path<TValues>]?: PathReturn<TValues, K>;\n};\n\nconst createUseTransformerHook = <TValues extends Values>(\n form: Form<TValues>\n) => {\n const useValue = createUseValueHook(form);\n return <TName extends Path<TValues>>(\n name: TName,\n transformer: Transformer<TValues, TName>\n ) => {\n const value = useValue(name);\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n useEffect(() => {\n const partialValues = transformerRef.current(value);\n Object.entries(partialValues).forEach(([n, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n form.values.set(n as Path<TValues>, v as any);\n });\n }, [value]);\n };\n};\n\ninterface InputProps<TValue> {\n value: TValue;\n onChange: (value: TValue) => void;\n}\ninterface FieldState {\n error?: string;\n modified: boolean;\n reset: () => void;\n}\ninterface FieldProps<TName, TValue> {\n name: TName;\n transformer?: (value: TValue) => TValue;\n render: (\n inputProps: InputProps<TValue>,\n fieldState: FieldState\n ) => ReactElement | null;\n}\n\nconst createFieldComponent = <TValues extends Values>(form: Form<TValues>) => {\n const useValue = createUseValueHook(form);\n const useError = createUseErrorHook(form);\n return <TName extends Path<TValues>>(\n props: FieldProps<TName, PathReturn<TValues, TName>>\n ) => {\n const { name, transformer = (v) => v, render } = props;\n\n const value = useValue(name);\n const error = useError(name);\n\n const initValue = useMemo(() => get(form.initValues, name), [name]);\n const modified = useMemo(\n () => !isEqual(value, initValue),\n [initValue, value]\n );\n const reset = useCallback(\n () => form.values.set(name, initValue),\n [initValue, name]\n );\n\n const transformerRef = useRef(transformer);\n useEffect(() => {\n transformerRef.current = transformer;\n }, [transformer]);\n\n const onChange = useCallback(\n (v: PathReturn<TValues, TName>) => {\n form.values.set(name, transformerRef.current(v));\n form.errors.set(name, undefined); // Reset the error when the value is changed\n },\n [name]\n );\n\n const renderRef = useRef(render);\n useEffect(() => {\n renderRef.current = render;\n }, [render]);\n\n const inputProps = useMemo(() => ({ value, onChange }), [onChange, value]);\n const fieldState = useMemo(\n () => ({ error, modified, reset }),\n [error, modified, reset]\n );\n\n return useMemo(\n () => renderRef.current(inputProps, fieldState),\n [fieldState, inputProps]\n );\n };\n};\n\nconst useModifiedFields = <TValues extends Values>(form: Form<TValues>) => {\n const [modifiedFields, setModifiedFields] = useState<Array<Path<TValues>>>(\n []\n );\n\n const modifiedFieldsRef = useRef(modifiedFields);\n useEffect(() => {\n modifiedFieldsRef.current = modifiedFields;\n }, [modifiedFields]);\n\n const initValuesRef = useRef(form.initValues);\n useEffect(() => {\n initValuesRef.current = form.initValues;\n }, [form.initValues]);\n\n useEffect(() => {\n const subscription = form.values.subscribeToAll((name, value) => {\n const isInitValue = isEqual(value, get(initValuesRef.current, name));\n const fields = modifiedFieldsRef.current;\n\n if (fields.includes(name)) {\n if (isInitValue) {\n setModifiedFields(fields.filter((field) => field !== name));\n }\n } else if (!isInitValue) {\n setModifiedFields([...fields, name]);\n }\n });\n return () => subscription.unsubscribe();\n }, [form.values]);\n\n return modifiedFields;\n};\n\nconst useFormResponse = <TValues extends Values>(form: Form<TValues>) => {\n const Field = useMemo(() => createFieldComponent(form), [form]);\n const useValue = useMemo(() => createUseValueHook(form), [form]);\n const useError = useMemo(() => createUseErrorHook(form), [form]);\n const useTransformer = useMemo(() => createUseTransformerHook(form), [form]);\n\n const modifiedFields = useModifiedFields(form);\n const modified = useMemo(\n () => modifiedFields.length > 0,\n [modifiedFields.length]\n );\n\n return useMemo(\n () => ({\n form,\n Field,\n useValue,\n useError,\n useTransformer,\n modifiedFields,\n modified,\n }),\n [Field, form, modified, modifiedFields, useError, useTransformer, useValue]\n );\n};\n\nexport const useForm = <TValues extends Values = Values>(\n initValues: TValues\n) => {\n const memoizedInitValues = useDeepEqualMemo<TValues>(\n () => initValues,\n [initValues]\n );\n\n const formRef = useRef(new Form<TValues>(memoizedInitValues));\n useEffect(() => {\n formRef.current.initValues = memoizedInitValues;\n formRef.current.reset();\n }, [memoizedInitValues]);\n\n return useFormResponse(formRef.current);\n};\n\nexport const useExistingForm = <TValues extends Values = Values>() => {\n const form = useFormContext<Form<TValues> | null>();\n if (!form) throw new Error('Wrap your form in a FormProvider');\n return useFormResponse(form);\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type StringMap<T = any> = Record<string, T>;\n\ntype Separator = '.';\ntype KeysWithSeparator<K1, K2> = `${K1 & string}${Separator}${K2 & string}`;\ntype KeyOf<T> = Exclude<keyof T, symbol | keyof any[]>;\n\nexport type Path<T, K = KeyOf<T>> = T extends StringMap\n ?\n | K\n | (K extends keyof T\n ? T[K] extends StringMap\n ? KeysWithSeparator<K, Path<T[K]>>\n : never\n : never)\n : never;\n\nexport type PathReturn<T, K> = K extends keyof T\n ? T[K]\n : K extends `${infer U}${Separator}${infer R}`\n ? U extends keyof T\n ? PathReturn<T[U], R>\n : never\n : never;\n\nexport type Errors<T> = Record<Path<T>, string | undefined>;\n\nexport type Observer<V = any> = (value: V) => void;\nexport interface Subscription {\n unsubscribe: () => void;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype Separator = '.';\ntype KeysWithSeparator<K1, K2> = `${K1 & string}${Separator}${K2 & string}`;\n\ntype OwnKeyOf<T> = Exclude<keyof T, keyof any[]> & string;\ntype IsAny<T> = unknown extends T & string ? true : false;\n\nexport type Path<T, K = OwnKeyOf<T>> = IsAny<T> extends true\n ? string\n : T extends object\n ?\n | K\n | (K extends keyof T\n ? T[K] extends object\n ? KeysWithSeparator<K, Path<T[K]>>\n : never\n : never)\n : never;\n\nexport type PathReturn<T, K> = K extends keyof T\n ? T[K]\n : K extends `${infer U}${Separator}${infer R}`\n ? U extends keyof T\n ? PathReturn<T[U], R>\n : never\n : never;\n\nexport type Values<T = any> = Record<string, T>;\nexport type Errors<T = any> = Record<Path<T>, string | undefined>;\n\nexport type Observer<V = any> = (value: V) => void;\nexport interface Subscription {\n unsubscribe: () => void;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","names":["React","createContext","useContext","FormContext","FormProvider","form","children","useFormContext"],"sources":["../../src/useFormContext.tsx"],"sourcesContent":["import React, { createContext, ReactNode, useContext } from 'react';\nimport Form from './Form';\nimport { StringMap } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FormContext = createContext<any>(null);\n\nexport interface FormProviderProps<TValues extends StringMap> {\n form: Form<TValues>;\n children?: ReactNode;\n}\n\n// eslint-disable-next-line react/function-component-definition\nexport function FormProvider<TValues extends StringMap>({\n form,\n children,\n}: FormProviderProps<TValues>) {\n return <FormContext.Provider value={form}>{children}</FormContext.Provider>;\n}\n\nfunction useFormContext<T>() {\n return useContext<T>(FormContext);\n}\n\nexport default useFormContext;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAaC,UAAU,QAAQ,OAAO;AAInE;AACA,MAAMC,WAAW,gBAAGF,aAAa,CAAM,IAAI,CAAC;AAO5C;AACA,OAAO,SAASG,YAAY,CAA4B;EACtDC,IAAI;EACJC;AAC0B,CAAC,EAAE;EAC7B,oBAAO,oBAAC,WAAW,CAAC,QAAQ;IAAC,KAAK,EAAED;EAAK,GAAEC,QAAQ,CAAwB;AAC7E;AAEA,SAASC,cAAc,GAAM;EAC3B,OAAOL,UAAU,CAAIC,WAAW,CAAC;AACnC;AAEA,eAAeI,cAAc"}
1
+ {"version":3,"file":"useFormContext.js","names":["React","createContext","useContext","FormContext","FormProvider","form","children","useFormContext"],"sources":["../../src/useFormContext.tsx"],"sourcesContent":["import React, { createContext, ReactNode, useContext } from 'react';\nimport Form from './Form';\nimport { Values } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FormContext = createContext<any>(null);\n\nexport interface FormProviderProps<TValues extends Values> {\n form: Form<TValues>;\n children?: ReactNode;\n}\n\n// eslint-disable-next-line react/function-component-definition\nexport function FormProvider<TValues extends Values>({\n form,\n children,\n}: FormProviderProps<TValues>) {\n return <FormContext.Provider value={form}>{children}</FormContext.Provider>;\n}\n\nfunction useFormContext<T>() {\n return useContext<T>(FormContext);\n}\n\nexport default useFormContext;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAaC,UAAU,QAAQ,OAAO;AAInE;AACA,MAAMC,WAAW,gBAAGF,aAAa,CAAM,IAAI,CAAC;AAO5C;AACA,OAAO,SAASG,YAAY,CAAyB;EACnDC,IAAI;EACJC;AAC0B,CAAC,EAAE;EAC7B,oBAAO,oBAAC,WAAW,CAAC,QAAQ;IAAC,KAAK,EAAED;EAAK,GAAEC,QAAQ,CAAwB;AAC7E;AAEA,SAASC,cAAc,GAAM;EAC3B,OAAOL,UAAU,CAAIC,WAAW,CAAC;AACnC;AAEA,eAAeI,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","names":["isObjectOrArray","value","split","path","groups","match","get","data","Object","hasOwn","undefined","key","nextPath","set"],"sources":["../../../src/utils/path.ts"],"sourcesContent":["import { StringMap } from '../types';\n\n/* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign */\n\nexport const isObjectOrArray = (value: any): value is object =>\n typeof value === 'object' && value !== null;\n\nconst split = (path: string) => {\n const groups = path.match(/^([^.]*)\\.(.*)$/);\n return groups ? [groups[1], groups[2]] : null;\n};\n\nexport const get = (data: StringMap, path: string): any => {\n if (Object.hasOwn(data, path)) {\n return data[path];\n }\n\n const groups = split(path);\n if (!groups) return undefined;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return undefined;\n if (!isObjectOrArray(data[key])) return undefined;\n\n return get(data[key], nextPath);\n};\n\nexport const set = (data: StringMap, path: string, value: any): boolean => {\n if (Object.hasOwn(data, path)) {\n data[path] = value;\n return true;\n }\n\n const groups = split(path);\n if (!groups) return false;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return false;\n if (!isObjectOrArray(data[key])) return false;\n\n return set(data[key], nextPath, value);\n};\n"],"mappings":"AAEA;;AAEA,OAAO,MAAMA,eAAe,GAAIC,KAAU,IACxC,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;AAE7C,MAAMC,KAAK,GAAIC,IAAY,IAAK;EAC9B,MAAMC,MAAM,GAAGD,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC;EAC5C,OAAOD,MAAM,GAAG,CAACA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC/C,CAAC;AAED,OAAO,MAAME,GAAG,GAAG,CAACC,IAAe,EAAEJ,IAAY,KAAU;EACzD,IAAIK,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7B,OAAOI,IAAI,CAACJ,IAAI,CAAC;EACnB;EAEA,MAAMC,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAOM,SAAS;EAE7B,MAAM,CAACC,GAAG,EAAEC,QAAQ,CAAC,GAAGR,MAAM;EAC9B,IAAI,CAACI,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAOD,SAAS;EAC/C,IAAI,CAACV,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAOD,SAAS;EAEjD,OAAOJ,GAAG,CAACC,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,CAAC;AACjC,CAAC;AAED,OAAO,MAAMC,GAAG,GAAG,CAACN,IAAe,EAAEJ,IAAY,EAAEF,KAAU,KAAc;EACzE,IAAIO,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7BI,IAAI,CAACJ,IAAI,CAAC,GAAGF,KAAK;IAClB,OAAO,IAAI;EACb;EAEA,MAAMG,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;EAEzB,MAAM,CAACO,GAAG,EAAEC,QAAQ,CAAC,GAAGR,MAAM;EAC9B,IAAI,CAACI,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAO,KAAK;EAC3C,IAAI,CAACX,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;EAE7C,OAAOE,GAAG,CAACN,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,EAAEX,KAAK,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"path.js","names":["isObjectOrArray","value","split","path","groups","match","get","data","Object","hasOwn","undefined","key","nextPath","set"],"sources":["../../../src/utils/path.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign */\n\nexport const isObjectOrArray = (value: any): value is object =>\n typeof value === 'object' && value !== null;\n\nconst split = (path: string) => {\n const groups = path.match(/^([^.]*)\\.(.*)$/);\n return groups ? [groups[1], groups[2]] : null;\n};\n\nexport const get = (data: Record<string, any>, path: string): any => {\n if (Object.hasOwn(data, path)) {\n return data[path];\n }\n\n const groups = split(path);\n if (!groups) return undefined;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return undefined;\n if (!isObjectOrArray(data[key])) return undefined;\n\n return get(data[key], nextPath);\n};\n\nexport const set = (\n data: Record<string, any>,\n path: string,\n value: any\n): boolean => {\n if (Object.hasOwn(data, path)) {\n data[path] = value;\n return true;\n }\n\n const groups = split(path);\n if (!groups) return false;\n\n const [key, nextPath] = groups;\n if (!Object.hasOwn(data, key)) return false;\n if (!isObjectOrArray(data[key])) return false;\n\n return set(data[key], nextPath, value);\n};\n"],"mappings":"AAAA;;AAEA,OAAO,MAAMA,eAAe,GAAIC,KAAU,IACxC,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;AAE7C,MAAMC,KAAK,GAAIC,IAAY,IAAK;EAC9B,MAAMC,MAAM,GAAGD,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC;EAC5C,OAAOD,MAAM,GAAG,CAACA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC/C,CAAC;AAED,OAAO,MAAME,GAAG,GAAG,CAACC,IAAyB,EAAEJ,IAAY,KAAU;EACnE,IAAIK,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7B,OAAOI,IAAI,CAACJ,IAAI,CAAC;EACnB;EAEA,MAAMC,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAOM,SAAS;EAE7B,MAAM,CAACC,GAAG,EAAEC,QAAQ,CAAC,GAAGR,MAAM;EAC9B,IAAI,CAACI,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAOD,SAAS;EAC/C,IAAI,CAACV,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAOD,SAAS;EAEjD,OAAOJ,GAAG,CAACC,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,CAAC;AACjC,CAAC;AAED,OAAO,MAAMC,GAAG,GAAG,CACjBN,IAAyB,EACzBJ,IAAY,EACZF,KAAU,KACE;EACZ,IAAIO,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEJ,IAAI,CAAC,EAAE;IAC7BI,IAAI,CAACJ,IAAI,CAAC,GAAGF,KAAK;IAClB,OAAO,IAAI;EACb;EAEA,MAAMG,MAAM,GAAGF,KAAK,CAACC,IAAI,CAAC;EAC1B,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;EAEzB,MAAM,CAACO,GAAG,EAAEC,QAAQ,CAAC,GAAGR,MAAM;EAC9B,IAAI,CAACI,MAAM,CAACC,MAAM,CAACF,IAAI,EAAEI,GAAG,CAAC,EAAE,OAAO,KAAK;EAC3C,IAAI,CAACX,eAAe,CAACO,IAAI,CAACI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;EAE7C,OAAOE,GAAG,CAACN,IAAI,CAACI,GAAG,CAAC,EAAEC,QAAQ,EAAEX,KAAK,CAAC;AACxC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import ErrorObserverManager from './ErrorObserverManager';
2
- import { StringMap } from './types';
3
- declare class ErrorData<TErrors extends StringMap<string | undefined>, TName extends keyof TErrors = keyof TErrors> extends ErrorObserverManager<TErrors> {
2
+ import { Errors } from './types';
3
+ declare class ErrorData<TErrors extends Errors, TName extends keyof TErrors = keyof TErrors> extends ErrorObserverManager<TErrors> {
4
4
  private readonly errors;
5
5
  constructor(errors: TErrors);
6
6
  get<T extends TName>(name: T): TErrors[T];
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorData.d.ts","sourceRoot":"","sources":["../../src/ErrorData.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,cAAM,SAAS,CACb,OAAO,SAAS,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAC7C,KAAK,SAAS,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3C,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEd,MAAM,EAAE,OAAO;IAK3B,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzC,MAAM,IAAI,OAAO;IAIjB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;CAI9D;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ErrorData.d.ts","sourceRoot":"","sources":["../../src/ErrorData.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,cAAM,SAAS,CACb,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3C,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEd,MAAM,EAAE,OAAO;IAK3B,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzC,MAAM,IAAI,OAAO;IAIjB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;CAI9D;AAED,eAAe,SAAS,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import BroadcastObserverManager from './BroadcastObserverManager';
2
- import { Observer, StringMap, Subscription } from './types';
2
+ import { Errors, Observer, Subscription } from './types';
3
3
  export type ErrorObserver = Observer<string | undefined>;
4
- declare class ErrorObserverManager<TErrors extends StringMap<string | undefined>, TName extends keyof TErrors = keyof TErrors> extends BroadcastObserverManager<TName, string | undefined> {
4
+ declare class ErrorObserverManager<TErrors extends Errors, TName extends keyof TErrors = keyof TErrors> extends BroadcastObserverManager<TName, string | undefined> {
5
5
  private readonly observers;
6
6
  constructor();
7
7
  private getObservers;
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorObserverManager.d.ts","sourceRoot":"","sources":["../../src/ErrorObserverManager.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD,cAAM,oBAAoB,CACxB,OAAO,SAAS,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAC7C,KAAK,SAAS,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3C,SAAQ,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;;IAOF,OAAO,CAAC,YAAY;IAKb,SAAS,CAAC,CAAC,SAAS,KAAK,EAC9B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,aAAa,GACtB,YAAY;IAMf,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;CAI5E;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ErrorObserverManager.d.ts","sourceRoot":"","sources":["../../src/ErrorObserverManager.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD,cAAM,oBAAoB,CACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3C,SAAQ,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;;IAOF,OAAO,CAAC,YAAY;IAKb,SAAS,CAAC,CAAC,SAAS,KAAK,EAC9B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,aAAa,GACtB,YAAY;IAMf,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;CAI5E;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import ErrorData from './ErrorData';
2
- import { Errors, StringMap } from './types';
2
+ import { Errors, Values } from './types';
3
3
  import ValueData from './ValueData';
4
- declare class Form<TValues extends StringMap = StringMap, TErrors extends Errors<TValues> = Errors<TValues>> {
4
+ declare class Form<TValues extends Values = Values, TErrors extends Errors<TValues> = Errors<TValues>> {
5
5
  initValues: TValues;
6
6
  readonly values: ValueData<TValues>;
7
7
  readonly errors: ErrorData<TErrors>;
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAQ,SAAS,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,IAAI,CACR,OAAO,SAAS,SAAS,GAAG,SAAS,EACrC,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IAE1C,UAAU,EAAE,OAAO,CAAC;IAE3B,SAAgB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAE3C,SAAgB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBAExB,UAAU,EAAE,OAAO;IAM/B,KAAK;CAcb;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,IAAI,CACR,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IAE1C,UAAU,EAAE,OAAO,CAAC;IAE3B,SAAgB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAE3C,SAAgB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;gBAExB,UAAU,EAAE,OAAO;IAM/B,KAAK;CAcb;AAED,eAAe,IAAI,CAAC"}
@@ -1,6 +1,6 @@
1
- import { PathReturn, Path, StringMap } from './types';
1
+ import { PathReturn, Path, Values } from './types';
2
2
  import ValueObserverManager from './ValueObserverManager';
3
- declare class ValueData<TValues extends StringMap, TName extends Path<TValues> = Path<TValues>> extends ValueObserverManager<TValues> {
3
+ declare class ValueData<TValues extends Values, TName extends Path<TValues> = Path<TValues>> extends ValueObserverManager<TValues> {
4
4
  private readonly values;
5
5
  constructor(values: TValues);
6
6
  get<T extends TName>(name: T): PathReturn<TValues, T>;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueData.d.ts","sourceRoot":"","sources":["../../src/ValueData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,cAAM,SAAS,CACb,OAAO,SAAS,SAAS,EACzB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAC3C,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEd,MAAM,EAAE,OAAO;IAK3B,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAIrD,MAAM,IAAI,OAAO;IAIjB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;CAI1E;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ValueData.d.ts","sourceRoot":"","sources":["../../src/ValueData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,cAAM,SAAS,CACb,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAC3C,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEd,MAAM,EAAE,OAAO;IAK3B,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAIrD,MAAM,IAAI,OAAO;IAIjB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;CAI1E;AAED,eAAe,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import BroadcastObserverManager from './BroadcastObserverManager';
2
- import { Observer, PathReturn, Path, StringMap, Subscription } from './types';
3
- declare class ValueObserverManager<TValues extends StringMap, TName extends Path<TValues> = Path<TValues>> extends BroadcastObserverManager<TName, TValues[TName]> {
2
+ import { Observer, PathReturn, Path, Values, Subscription } from './types';
3
+ declare class ValueObserverManager<TValues extends Values, TName extends Path<TValues> = Path<TValues>> extends BroadcastObserverManager<TName, TValues[TName]> {
4
4
  private readonly root;
5
5
  constructor();
6
6
  private findNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueObserverManager.d.ts","sourceRoot":"","sources":["../../src/ValueObserverManager.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO9E,cAAM,oBAAoB,CACxB,OAAO,SAAS,SAAS,EACzB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAC3C,SAAQ,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;;IAO5B,OAAO,CAAC,QAAQ;IAST,SAAS,CAAC,CAAC,SAAS,KAAK,EAC9B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GACzC,YAAY;IAcf,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAKtE,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,kBAAkB;CAQ3B;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ValueObserverManager.d.ts","sourceRoot":"","sources":["../../src/ValueObserverManager.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK3E,cAAM,oBAAoB,CACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAC3C,SAAQ,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;;IAO5B,OAAO,CAAC,QAAQ;IAST,SAAS,CAAC,CAAC,SAAS,KAAK,EAC9B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GACzC,YAAY;IAcf,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAKtE,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,kBAAkB;CAQ3B;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { ReactElement } from 'react';
2
2
  import Form from './Form';
3
- import { PathReturn, Path, StringMap } from './types';
3
+ import { PathReturn, Path, Values } from './types';
4
4
  export * from './BroadcastObserverManager';
5
5
  export * from './ErrorObserverManager';
6
6
  export { default as Form } from './Form';
7
7
  export * from './types';
8
8
  export * from './useFormContext';
9
- export type Transformer<TValues extends StringMap, TName extends Path<TValues>> = (value: PathReturn<TValues, TName>) => {
9
+ export type Transformer<TValues extends Values, TName extends Path<TValues>> = (value: PathReturn<TValues, TName>) => {
10
10
  [K in Path<TValues>]?: PathReturn<TValues, K>;
11
11
  };
12
12
  interface InputProps<TValue> {
@@ -23,22 +23,22 @@ interface FieldProps<TName, TValue> {
23
23
  transformer?: (value: TValue) => TValue;
24
24
  render: (inputProps: InputProps<TValue>, fieldState: FieldState) => ReactElement | null;
25
25
  }
26
- export declare const useForm: <TValues extends StringMap<any> = StringMap<any>>(initValues: TValues) => {
26
+ export declare const useForm: <TValues extends Values<any> = Values<any>>(initValues: TValues) => {
27
27
  form: Form<TValues, import("./types").Errors<TValues>>;
28
- Field: <TName extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(props: FieldProps<TName, PathReturn<TValues, TName>>) => ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
29
- useValue: <TName_1 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_1) => PathReturn<TValues, TName_1>;
30
- useError: <TName_2 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_2) => string | undefined;
31
- useTransformer: <TName_3 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_3, transformer: Transformer<TValues, TName_3>) => void;
32
- modifiedFields: Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>[];
28
+ Field: <TName extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(props: FieldProps<TName, PathReturn<TValues, TName>>) => ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
29
+ useValue: <TName_1 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_1) => PathReturn<TValues, TName_1>;
30
+ useError: <TName_2 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_2) => string | undefined;
31
+ useTransformer: <TName_3 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_3, transformer: Transformer<TValues, TName_3>) => void;
32
+ modifiedFields: Path<TValues, Exclude<keyof TValues, keyof any[]> & string>[];
33
33
  modified: boolean;
34
34
  };
35
- export declare const useExistingForm: <TValues extends StringMap<any> = StringMap<any>>() => {
35
+ export declare const useExistingForm: <TValues extends Values<any> = Values<any>>() => {
36
36
  form: Form<TValues, import("./types").Errors<TValues>>;
37
- Field: <TName extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(props: FieldProps<TName, PathReturn<TValues, TName>>) => ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
38
- useValue: <TName_1 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_1) => PathReturn<TValues, TName_1>;
39
- useError: <TName_2 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_2) => string | undefined;
40
- useTransformer: <TName_3 extends Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>>(name: TName_3, transformer: Transformer<TValues, TName_3>) => void;
41
- modifiedFields: Path<TValues, Exclude<keyof TValues, number | symbol | "length" | "toString" | "toLocaleString" | "pop" | "push" | "concat" | "join" | "reverse" | "shift" | "slice" | "sort" | "splice" | "unshift" | "indexOf" | "lastIndexOf" | "every" | "some" | "forEach" | "map" | "filter" | "reduce" | "reduceRight" | "find" | "findIndex" | "fill" | "copyWithin" | "entries" | "keys" | "values" | "includes" | "flatMap" | "flat" | "at">>[];
37
+ Field: <TName extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(props: FieldProps<TName, PathReturn<TValues, TName>>) => ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
38
+ useValue: <TName_1 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_1) => PathReturn<TValues, TName_1>;
39
+ useError: <TName_2 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_2) => string | undefined;
40
+ useTransformer: <TName_3 extends Path<TValues, Exclude<keyof TValues, keyof any[]> & string>>(name: TName_3, transformer: Transformer<TValues, TName_3>) => void;
41
+ modifiedFields: Path<TValues, Exclude<keyof TValues, keyof any[]> & string>[];
42
42
  modified: boolean;
43
43
  };
44
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAMb,MAAM,OAAO,CAAC;AACf,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AAoCjC,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,SAAS,EACzB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IACzB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK;KACxC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;CAC9C,CAAC;AA2BF,UAAU,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AACD,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AACD,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,MAAM,EAAE,CACN,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,UAAU,KACnB,YAAY,GAAG,IAAI,CAAC;CAC1B;AAoHD,eAAO,MAAM,OAAO;;;;;;;;CAenB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;CAI3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAMb,MAAM,OAAO,CAAC;AACf,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AAoCjC,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAC7E,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,KAC9B;KACF,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;CAC9C,CAAC;AA2BF,UAAU,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AACD,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AACD,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,MAAM,EAAE,CACN,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,UAAU,KACnB,YAAY,GAAG,IAAI,CAAC;CAC1B;AAkHD,eAAO,MAAM,OAAO;;;;;;;;CAenB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;CAI3B,CAAC"}
@@ -1,10 +1,11 @@
1
- export type StringMap<T = any> = Record<string, T>;
2
1
  type Separator = '.';
3
2
  type KeysWithSeparator<K1, K2> = `${K1 & string}${Separator}${K2 & string}`;
4
- type KeyOf<T> = Exclude<keyof T, symbol | keyof any[]>;
5
- export type Path<T, K = KeyOf<T>> = T extends StringMap ? K | (K extends keyof T ? T[K] extends StringMap ? KeysWithSeparator<K, Path<T[K]>> : never : never) : never;
3
+ type OwnKeyOf<T> = Exclude<keyof T, keyof any[]> & string;
4
+ type IsAny<T> = unknown extends T & string ? true : false;
5
+ export type Path<T, K = OwnKeyOf<T>> = IsAny<T> extends true ? string : T extends object ? K | (K extends keyof T ? T[K] extends object ? KeysWithSeparator<K, Path<T[K]>> : never : never) : never;
6
6
  export type PathReturn<T, K> = K extends keyof T ? T[K] : K extends `${infer U}${Separator}${infer R}` ? U extends keyof T ? PathReturn<T[U], R> : never : never;
7
- export type Errors<T> = Record<Path<T>, string | undefined>;
7
+ export type Values<T = any> = Record<string, T>;
8
+ export type Errors<T = any> = Record<Path<T>, string | undefined>;
8
9
  export type Observer<V = any> = (value: V) => void;
9
10
  export interface Subscription {
10
11
  unsubscribe: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEnD,KAAK,SAAS,GAAG,GAAG,CAAC;AACrB,KAAK,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;AAC5E,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAEvD,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAE/C,CAAC,GACD,CAAC,CAAC,SAAS,MAAM,CAAC,GACd,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACpB,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAChC,KAAK,GACP,KAAK,CAAC,GACd,KAAK,CAAC;AAEV,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,GAC5C,CAAC,SAAS,MAAM,CAAC,GACf,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE5D,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AACnD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG,GAAG,CAAC;AACrB,KAAK,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;AAE5E,KAAK,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;AAC1D,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAE1D,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,GACxD,MAAM,GACN,CAAC,SAAS,MAAM,GAEZ,CAAC,GACD,CAAC,CAAC,SAAS,MAAM,CAAC,GACd,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAChC,KAAK,GACP,KAAK,CAAC,GACd,KAAK,CAAC;AAEV,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,GAC5C,CAAC,SAAS,MAAM,CAAC,GACf,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AACnD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB"}
@@ -1,11 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
2
  import Form from './Form';
3
- import { StringMap } from './types';
4
- export interface FormProviderProps<TValues extends StringMap> {
3
+ import { Values } from './types';
4
+ export interface FormProviderProps<TValues extends Values> {
5
5
  form: Form<TValues>;
6
6
  children?: ReactNode;
7
7
  }
8
- export declare function FormProvider<TValues extends StringMap>({ form, children, }: FormProviderProps<TValues>): JSX.Element;
8
+ export declare function FormProvider<TValues extends Values>({ form, children, }: FormProviderProps<TValues>): JSX.Element;
9
9
  declare function useFormContext<T>(): T;
10
10
  export default useFormContext;
11
11
  //# sourceMappingURL=useFormContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.d.ts","sourceRoot":"","sources":["../../src/useFormContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AACpE,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKpC,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,SAAS;IAC1D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAGD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,EACtD,IAAI,EACJ,QAAQ,GACT,EAAE,iBAAiB,CAAC,OAAO,CAAC,eAE5B;AAED,iBAAS,cAAc,CAAC,CAAC,OAExB;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"useFormContext.d.ts","sourceRoot":"","sources":["../../src/useFormContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AACpE,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,MAAM;IACvD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAGD,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,EAAE,EACnD,IAAI,EACJ,QAAQ,GACT,EAAE,iBAAiB,CAAC,OAAO,CAAC,eAE5B;AAED,iBAAS,cAAc,CAAC,CAAC,OAExB;AAED,eAAe,cAAc,CAAC"}
@@ -1,5 +1,4 @@
1
- import { StringMap } from '../types';
2
1
  export declare const isObjectOrArray: (value: any) => value is object;
3
- export declare const get: (data: StringMap, path: string) => any;
4
- export declare const set: (data: StringMap, path: string, value: any) => boolean;
2
+ export declare const get: (data: Record<string, any>, path: string) => any;
3
+ export declare const set: (data: Record<string, any>, path: string, value: any) => boolean;
5
4
  //# sourceMappingURL=path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC,eAAO,MAAM,eAAe,UAAW,GAAG,oBACG,CAAC;AAO9C,eAAO,MAAM,GAAG,SAAU,SAAS,QAAQ,MAAM,KAAG,GAanD,CAAC;AAEF,eAAO,MAAM,GAAG,SAAU,SAAS,QAAQ,MAAM,SAAS,GAAG,KAAG,OAc/D,CAAC"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/utils/path.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,UAAW,GAAG,oBACG,CAAC;AAO9C,eAAO,MAAM,GAAG,SAAU,OAAO,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,KAAG,GAa7D,CAAC;AAEF,eAAO,MAAM,GAAG,SACR,OAAO,MAAM,EAAE,GAAG,CAAC,QACnB,MAAM,SACL,GAAG,KACT,OAcF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@os-design/form",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "license": "UNLICENSED",
5
5
  "repository": "git@gitlab.com:os-team/libs/os-design.git",
6
6
  "main": "dist/cjs/index.js",
@@ -34,5 +34,5 @@
34
34
  "peerDependencies": {
35
35
  "react": ">=18"
36
36
  },
37
- "gitHead": "32658c20144259667eb06caa0340dfbf7118bb4a"
37
+ "gitHead": "95025072d3122cca575e51efd73627319b798510"
38
38
  }