@prototyp/skeletor 1.3.0-beta1 → 1.3.0-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/hooks/skeleform/package.json +1 -1
- package/lib/commonjs/hooks/skeleform/src/index.js +43 -25
- package/lib/commonjs/hooks/skeleform/src/index.js.map +1 -1
- package/lib/commonjs/utils/memoize-styles.js +2 -1
- package/lib/commonjs/utils/memoize-styles.js.map +1 -1
- package/lib/module/hooks/skeleform/package.json +1 -1
- package/lib/module/hooks/skeleform/src/index.js +43 -25
- package/lib/module/hooks/skeleform/src/index.js.map +1 -1
- package/lib/module/utils/memoize-styles.js +2 -1
- package/lib/module/utils/memoize-styles.js.map +1 -1
- package/lib/typescript/commonjs/hooks/skeleform/src/index.d.ts +3 -1
- package/lib/typescript/commonjs/hooks/skeleform/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/memoize-styles.d.ts.map +1 -1
- package/lib/typescript/module/hooks/skeleform/src/index.d.ts +3 -1
- package/lib/typescript/module/hooks/skeleform/src/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/memoize-styles.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@prototyp/skeleform",
|
|
3
3
|
"description": "React/React-Native form management utility",
|
|
4
4
|
"author": "Luka Buljan <luka@prototyp.digital>",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.3-beta0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/prototypdigital/skeleform",
|
|
8
8
|
"repository": {
|
|
@@ -6,6 +6,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useForm = useForm;
|
|
7
7
|
exports.useFormUtils = useFormUtils;
|
|
8
8
|
var _react = require("react");
|
|
9
|
+
function deepEqual(a, b) {
|
|
10
|
+
if (a === b) return true;
|
|
11
|
+
if (a instanceof Date && b instanceof Date) return +a === +b;
|
|
12
|
+
if (a === null || b === null) return false;
|
|
13
|
+
if (typeof a !== "object" || typeof b !== "object") return false;
|
|
14
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false;
|
|
15
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
16
|
+
if (a.length !== b.length) return false;
|
|
17
|
+
return a.every((item, i) => deepEqual(item, b[i]));
|
|
18
|
+
}
|
|
19
|
+
const keysA = Object.keys(a);
|
|
20
|
+
if (keysA.length !== Object.keys(b).length) return false;
|
|
21
|
+
return keysA.every(key => deepEqual(a[key], b[key]));
|
|
22
|
+
}
|
|
23
|
+
|
|
9
24
|
/** One-fits-all solution to manage state changes, field validation and optional entries within a form.
|
|
10
25
|
* @example <caption>Simple use case:</caption>
|
|
11
26
|
* const { state, validation, update } = useForm({ email: '', password: '', });
|
|
@@ -55,9 +70,12 @@ function useForm(values, config) {
|
|
|
55
70
|
...s,
|
|
56
71
|
[key]: value
|
|
57
72
|
}));
|
|
58
|
-
setValidation(
|
|
59
|
-
...
|
|
60
|
-
[key]: shouldValidate ? fieldValidation(key, value,
|
|
73
|
+
setValidation(validation => ({
|
|
74
|
+
...validation,
|
|
75
|
+
[key]: shouldValidate ? fieldValidation(key, value, {
|
|
76
|
+
...state,
|
|
77
|
+
[key]: value
|
|
78
|
+
}) : undefined
|
|
61
79
|
}));
|
|
62
80
|
}
|
|
63
81
|
function validate(key) {
|
|
@@ -74,7 +92,7 @@ function useForm(values, config) {
|
|
|
74
92
|
const formValidationState = stateValidation(state);
|
|
75
93
|
setValidation(formValidationState.validation);
|
|
76
94
|
return formValidationState.valid;
|
|
77
|
-
}, [state]);
|
|
95
|
+
}, [stateValidation, state]);
|
|
78
96
|
|
|
79
97
|
/** Boolean value of whether the form is valid (ie can be submitted). Use this to disable/enable form submission.
|
|
80
98
|
* Only use when validating fields separately, has no value when valiating on form submit. */
|
|
@@ -115,9 +133,9 @@ function useForm(values, config) {
|
|
|
115
133
|
return initialValue instanceof Date ? +value !== +initialValue : true;
|
|
116
134
|
}
|
|
117
135
|
|
|
118
|
-
/**
|
|
136
|
+
/** Deep equality check for objects and arrays. */
|
|
119
137
|
if (state[key] instanceof Object) {
|
|
120
|
-
return
|
|
138
|
+
return !deepEqual(state[key], initialState[key]);
|
|
121
139
|
}
|
|
122
140
|
|
|
123
141
|
/** Primitive value check. */
|
|
@@ -138,24 +156,24 @@ function useForm(values, config) {
|
|
|
138
156
|
resetInitialValues
|
|
139
157
|
};
|
|
140
158
|
}
|
|
159
|
+
function doesValueExist(value) {
|
|
160
|
+
if (value === undefined || value === null) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
if (typeof value === "string") {
|
|
164
|
+
return value !== "";
|
|
165
|
+
}
|
|
166
|
+
if (typeof value === "number") {
|
|
167
|
+
return value >= 0 || value < 0 || !Number.isNaN(value);
|
|
168
|
+
}
|
|
169
|
+
if (value instanceof Date) {
|
|
170
|
+
return !Number.isNaN(value.valueOf());
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
141
174
|
|
|
142
175
|
/** Helper hook to validate form state outside of the scope of useForm. */
|
|
143
176
|
function useFormUtils(config) {
|
|
144
|
-
function doesValueExist(value) {
|
|
145
|
-
if (value === undefined || value === null) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
if (typeof value === "string") {
|
|
149
|
-
return value !== "";
|
|
150
|
-
}
|
|
151
|
-
if (typeof value === "number") {
|
|
152
|
-
return value >= 0 || value < 0 || !Number.isNaN(value);
|
|
153
|
-
}
|
|
154
|
-
if (value instanceof Date) {
|
|
155
|
-
return !Number.isNaN(value.valueOf());
|
|
156
|
-
}
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
177
|
const isOptional = (0, _react.useCallback)(key => config?.optional?.includes(key) || false, [config]);
|
|
160
178
|
|
|
161
179
|
/** Validate by custom validation rule. If the rule does not exist, returns undefined. */
|
|
@@ -168,7 +186,7 @@ function useFormUtils(config) {
|
|
|
168
186
|
* 1. If there is a custom validation rule, always use that to preserve all possible type values
|
|
169
187
|
* 2. If there is no value (is a falsy value), check if the field is optional
|
|
170
188
|
* 3. Fallback to simple truthy value check if all other checks are not triggered. */
|
|
171
|
-
|
|
189
|
+
const fieldValidation = (0, _react.useCallback)((key, value, state) => {
|
|
172
190
|
const hasValue = doesValueExist(value);
|
|
173
191
|
const optional = isOptional(key);
|
|
174
192
|
|
|
@@ -182,8 +200,8 @@ function useFormUtils(config) {
|
|
|
182
200
|
}
|
|
183
201
|
// Fallback, simple check if value exists
|
|
184
202
|
return hasValue;
|
|
185
|
-
}
|
|
186
|
-
|
|
203
|
+
}, [isOptional, validateByRule, config]);
|
|
204
|
+
const stateValidation = (0, _react.useCallback)(state => {
|
|
187
205
|
const keys = Object.keys(state).map(key => key);
|
|
188
206
|
const validation = {};
|
|
189
207
|
keys.forEach(key => {
|
|
@@ -195,7 +213,7 @@ function useFormUtils(config) {
|
|
|
195
213
|
valid: !keys.some(key => !validation[key]),
|
|
196
214
|
validation
|
|
197
215
|
};
|
|
198
|
-
}
|
|
216
|
+
}, [fieldValidation]);
|
|
199
217
|
return {
|
|
200
218
|
doesValueExist,
|
|
201
219
|
validateByRule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","
|
|
1
|
+
{"version":3,"names":["_react","require","deepEqual","a","b","Date","Array","isArray","length","every","item","i","keysA","Object","keys","key","useForm","values","config","useMemo","validation","setValidation","useState","initialState","setInitialState","state","setState","fieldValidation","stateValidation","isOptional","useFormUtils","useEffect","changed","filter","updatedState","forEach","update","value","shouldValidate","s","undefined","validate","validateForm","useCallback","formValidationState","valid","isFormValid","some","resetState","resetInitialValues","resetValidation","clearForm","hasStateChanged","initialValue","doesValueExist","Number","isNaN","valueOf","optional","includes","validateByRule","rules","hasValue","map"],"sourceRoot":"../../../../../src","sources":["hooks/skeleform/src/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,8 +34,9 @@ function hashString(str) {
|
|
|
34
34
|
function valueKey(value) {
|
|
35
35
|
if (value && typeof value === "object") {
|
|
36
36
|
if (!ObjectIds.has(value)) {
|
|
37
|
-
GlobalObjectId
|
|
37
|
+
GlobalObjectId = (GlobalObjectId + 1) % Number.MAX_SAFE_INTEGER;
|
|
38
38
|
ObjectIds.set(value, GlobalObjectId);
|
|
39
|
+
return `ref#${GlobalObjectId}`;
|
|
39
40
|
}
|
|
40
41
|
return `ref#${ObjectIds.get(value)}`;
|
|
41
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styleCache","Map","GlobalObjectId","ObjectIds","WeakMap","hashString","str","hash","i","length","char","charCodeAt","valueKey","value","has","set","get","String","memoizeStyle","obj","key","Object","entries","map","k","v","join","cached","style","freeze"],"sourceRoot":"../../../src","sources":["utils/memoize-styles.ts"],"mappings":";;;;;;AAAA;;AAGA;;AAQA;AACA,MAAMA,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAEhD,IAAIC,cAAc,GAAG,CAAC,CAAC,CAAC;AACxB,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAiB,CAAC;;AAE/C;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACxC,IAAIC,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,MAAME,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAACH,CAAC,CAAC;IAC9BD,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGG,IAAI;IAChCH,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC,CAAC;EACrB;EACA,OAAOA,IAAI,KAAK,CAAC,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,QAAQA,CAACC,KAAc,EAAU;EACzC,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACvC,IAAI,CAACV,SAAS,CAACW,GAAG,CAACD,KAAe,CAAC,EAAE;MACpCX,cAAc,
|
|
1
|
+
{"version":3,"names":["styleCache","Map","GlobalObjectId","ObjectIds","WeakMap","hashString","str","hash","i","length","char","charCodeAt","valueKey","value","has","Number","MAX_SAFE_INTEGER","set","get","String","memoizeStyle","obj","key","Object","entries","map","k","v","join","cached","style","freeze"],"sourceRoot":"../../../src","sources":["utils/memoize-styles.ts"],"mappings":";;;;;;AAAA;;AAGA;;AAQA;AACA,MAAMA,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAEhD,IAAIC,cAAc,GAAG,CAAC,CAAC,CAAC;AACxB,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAiB,CAAC;;AAE/C;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACxC,IAAIC,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,MAAME,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAACH,CAAC,CAAC;IAC9BD,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGG,IAAI;IAChCH,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC,CAAC;EACrB;EACA,OAAOA,IAAI,KAAK,CAAC,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,QAAQA,CAACC,KAAc,EAAU;EACzC,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACvC,IAAI,CAACV,SAAS,CAACW,GAAG,CAACD,KAAe,CAAC,EAAE;MACpCX,cAAc,GAAG,CAACA,cAAc,GAAG,CAAC,IAAIa,MAAM,CAACC,gBAAgB;MAC/Db,SAAS,CAACc,GAAG,CAACJ,KAAK,EAAYX,cAAc,CAAC;MAC9C,OAAO,OAAOA,cAAc,EAAE;IAC/B;IACA,OAAO,OAAOC,SAAS,CAACe,GAAG,CAACL,KAAe,CAAC,EAAE;EAC/C;EACA,OAAOM,MAAM,CAACN,KAAK,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACO,SAASO,YAAYA,CAAsBC,GAAM,EAAK;EAC5D;EACA,MAAMC,GAAG,GAAGC,MAAM,CAACC,OAAO,CAACH,GAAG,CAAC,CAC7BI,GAAG,CAAC,CAAC,CAACC,CAAC,EAAEC,CAAC,CAAC,KAAK,GAAGD,CAAC,IAAId,QAAQ,CAACe,CAAC,CAAC,EAAE,CAAC,CACtCC,IAAI,CAAC,GAAG,CAAC;;EAEX;EACA,MAAMrB,IAAI,GAAGF,UAAU,CAACiB,GAAG,CAAC;EAC5B,MAAMO,MAAM,GAAG7B,UAAU,CAACkB,GAAG,CAACX,IAAI,CAAC;;EAEnC;EACA,IAAIsB,MAAM,IAAIA,MAAM,CAACP,GAAG,KAAKA,GAAG,EAAE;IACjC,OAAOO,MAAM,CAACC,KAAK;EACpB;;EAEA;EACA,MAAMA,KAAK,GAAGP,MAAM,CAACQ,MAAM,CAAC;IAAE,GAAGV;EAAI,CAAC,CAAM;EAC5CrB,UAAU,CAACiB,GAAG,CAACV,IAAI,EAAE;IAAEe,GAAG;IAAEQ;EAAM,CAAC,CAAC;EAEpC,OAAOA,KAAK;AACb","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@prototyp/skeleform",
|
|
3
3
|
"description": "React/React-Native form management utility",
|
|
4
4
|
"author": "Luka Buljan <luka@prototyp.digital>",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.3-beta0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/prototypdigital/skeleform",
|
|
8
8
|
"repository": {
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
4
|
+
function deepEqual(a, b) {
|
|
5
|
+
if (a === b) return true;
|
|
6
|
+
if (a instanceof Date && b instanceof Date) return +a === +b;
|
|
7
|
+
if (a === null || b === null) return false;
|
|
8
|
+
if (typeof a !== "object" || typeof b !== "object") return false;
|
|
9
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false;
|
|
10
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
11
|
+
if (a.length !== b.length) return false;
|
|
12
|
+
return a.every((item, i) => deepEqual(item, b[i]));
|
|
13
|
+
}
|
|
14
|
+
const keysA = Object.keys(a);
|
|
15
|
+
if (keysA.length !== Object.keys(b).length) return false;
|
|
16
|
+
return keysA.every(key => deepEqual(a[key], b[key]));
|
|
17
|
+
}
|
|
18
|
+
|
|
4
19
|
/** One-fits-all solution to manage state changes, field validation and optional entries within a form.
|
|
5
20
|
* @example <caption>Simple use case:</caption>
|
|
6
21
|
* const { state, validation, update } = useForm({ email: '', password: '', });
|
|
@@ -50,9 +65,12 @@ export function useForm(values, config) {
|
|
|
50
65
|
...s,
|
|
51
66
|
[key]: value
|
|
52
67
|
}));
|
|
53
|
-
setValidation(
|
|
54
|
-
...
|
|
55
|
-
[key]: shouldValidate ? fieldValidation(key, value,
|
|
68
|
+
setValidation(validation => ({
|
|
69
|
+
...validation,
|
|
70
|
+
[key]: shouldValidate ? fieldValidation(key, value, {
|
|
71
|
+
...state,
|
|
72
|
+
[key]: value
|
|
73
|
+
}) : undefined
|
|
56
74
|
}));
|
|
57
75
|
}
|
|
58
76
|
function validate(key) {
|
|
@@ -69,7 +87,7 @@ export function useForm(values, config) {
|
|
|
69
87
|
const formValidationState = stateValidation(state);
|
|
70
88
|
setValidation(formValidationState.validation);
|
|
71
89
|
return formValidationState.valid;
|
|
72
|
-
}, [state]);
|
|
90
|
+
}, [stateValidation, state]);
|
|
73
91
|
|
|
74
92
|
/** Boolean value of whether the form is valid (ie can be submitted). Use this to disable/enable form submission.
|
|
75
93
|
* Only use when validating fields separately, has no value when valiating on form submit. */
|
|
@@ -110,9 +128,9 @@ export function useForm(values, config) {
|
|
|
110
128
|
return initialValue instanceof Date ? +value !== +initialValue : true;
|
|
111
129
|
}
|
|
112
130
|
|
|
113
|
-
/**
|
|
131
|
+
/** Deep equality check for objects and arrays. */
|
|
114
132
|
if (state[key] instanceof Object) {
|
|
115
|
-
return
|
|
133
|
+
return !deepEqual(state[key], initialState[key]);
|
|
116
134
|
}
|
|
117
135
|
|
|
118
136
|
/** Primitive value check. */
|
|
@@ -133,24 +151,24 @@ export function useForm(values, config) {
|
|
|
133
151
|
resetInitialValues
|
|
134
152
|
};
|
|
135
153
|
}
|
|
154
|
+
function doesValueExist(value) {
|
|
155
|
+
if (value === undefined || value === null) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (typeof value === "string") {
|
|
159
|
+
return value !== "";
|
|
160
|
+
}
|
|
161
|
+
if (typeof value === "number") {
|
|
162
|
+
return value >= 0 || value < 0 || !Number.isNaN(value);
|
|
163
|
+
}
|
|
164
|
+
if (value instanceof Date) {
|
|
165
|
+
return !Number.isNaN(value.valueOf());
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
136
169
|
|
|
137
170
|
/** Helper hook to validate form state outside of the scope of useForm. */
|
|
138
171
|
export function useFormUtils(config) {
|
|
139
|
-
function doesValueExist(value) {
|
|
140
|
-
if (value === undefined || value === null) {
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
if (typeof value === "string") {
|
|
144
|
-
return value !== "";
|
|
145
|
-
}
|
|
146
|
-
if (typeof value === "number") {
|
|
147
|
-
return value >= 0 || value < 0 || !Number.isNaN(value);
|
|
148
|
-
}
|
|
149
|
-
if (value instanceof Date) {
|
|
150
|
-
return !Number.isNaN(value.valueOf());
|
|
151
|
-
}
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
172
|
const isOptional = useCallback(key => config?.optional?.includes(key) || false, [config]);
|
|
155
173
|
|
|
156
174
|
/** Validate by custom validation rule. If the rule does not exist, returns undefined. */
|
|
@@ -163,7 +181,7 @@ export function useFormUtils(config) {
|
|
|
163
181
|
* 1. If there is a custom validation rule, always use that to preserve all possible type values
|
|
164
182
|
* 2. If there is no value (is a falsy value), check if the field is optional
|
|
165
183
|
* 3. Fallback to simple truthy value check if all other checks are not triggered. */
|
|
166
|
-
|
|
184
|
+
const fieldValidation = useCallback((key, value, state) => {
|
|
167
185
|
const hasValue = doesValueExist(value);
|
|
168
186
|
const optional = isOptional(key);
|
|
169
187
|
|
|
@@ -177,8 +195,8 @@ export function useFormUtils(config) {
|
|
|
177
195
|
}
|
|
178
196
|
// Fallback, simple check if value exists
|
|
179
197
|
return hasValue;
|
|
180
|
-
}
|
|
181
|
-
|
|
198
|
+
}, [isOptional, validateByRule, config]);
|
|
199
|
+
const stateValidation = useCallback(state => {
|
|
182
200
|
const keys = Object.keys(state).map(key => key);
|
|
183
201
|
const validation = {};
|
|
184
202
|
keys.forEach(key => {
|
|
@@ -190,7 +208,7 @@ export function useFormUtils(config) {
|
|
|
190
208
|
valid: !keys.some(key => !validation[key]),
|
|
191
209
|
validation
|
|
192
210
|
};
|
|
193
|
-
}
|
|
211
|
+
}, [fieldValidation]);
|
|
194
212
|
return {
|
|
195
213
|
doesValueExist,
|
|
196
214
|
validateByRule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useState","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useState","deepEqual","a","b","Date","Array","isArray","length","every","item","i","keysA","Object","keys","key","useForm","values","config","validation","setValidation","initialState","setInitialState","state","setState","fieldValidation","stateValidation","isOptional","useFormUtils","changed","filter","updatedState","forEach","update","value","shouldValidate","s","undefined","validate","validateForm","formValidationState","valid","isFormValid","some","resetState","resetInitialValues","resetValidation","clearForm","hasStateChanged","initialValue","doesValueExist","Number","isNaN","valueOf","optional","includes","validateByRule","rules","hasValue","map"],"sourceRoot":"../../../../../src","sources":["hooks/skeleform/src/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,8 +30,9 @@ function hashString(str) {
|
|
|
30
30
|
function valueKey(value) {
|
|
31
31
|
if (value && typeof value === "object") {
|
|
32
32
|
if (!ObjectIds.has(value)) {
|
|
33
|
-
GlobalObjectId
|
|
33
|
+
GlobalObjectId = (GlobalObjectId + 1) % Number.MAX_SAFE_INTEGER;
|
|
34
34
|
ObjectIds.set(value, GlobalObjectId);
|
|
35
|
+
return `ref#${GlobalObjectId}`;
|
|
35
36
|
}
|
|
36
37
|
return `ref#${ObjectIds.get(value)}`;
|
|
37
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styleCache","Map","GlobalObjectId","ObjectIds","WeakMap","hashString","str","hash","i","length","char","charCodeAt","valueKey","value","has","set","get","String","memoizeStyle","obj","key","Object","entries","map","k","v","join","cached","style","freeze"],"sourceRoot":"../../../src","sources":["utils/memoize-styles.ts"],"mappings":";;AAAA;;AAGA;;AAQA;AACA,MAAMA,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAEhD,IAAIC,cAAc,GAAG,CAAC,CAAC,CAAC;AACxB,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAiB,CAAC;;AAE/C;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACxC,IAAIC,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,MAAME,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAACH,CAAC,CAAC;IAC9BD,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGG,IAAI;IAChCH,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC,CAAC;EACrB;EACA,OAAOA,IAAI,KAAK,CAAC,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,QAAQA,CAACC,KAAc,EAAU;EACzC,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACvC,IAAI,CAACV,SAAS,CAACW,GAAG,CAACD,KAAe,CAAC,EAAE;MACpCX,cAAc,
|
|
1
|
+
{"version":3,"names":["styleCache","Map","GlobalObjectId","ObjectIds","WeakMap","hashString","str","hash","i","length","char","charCodeAt","valueKey","value","has","Number","MAX_SAFE_INTEGER","set","get","String","memoizeStyle","obj","key","Object","entries","map","k","v","join","cached","style","freeze"],"sourceRoot":"../../../src","sources":["utils/memoize-styles.ts"],"mappings":";;AAAA;;AAGA;;AAQA;AACA,MAAMA,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAEhD,IAAIC,cAAc,GAAG,CAAC,CAAC,CAAC;AACxB,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAiB,CAAC;;AAE/C;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACxC,IAAIC,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,MAAME,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAACH,CAAC,CAAC;IAC9BD,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGG,IAAI;IAChCH,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC,CAAC;EACrB;EACA,OAAOA,IAAI,KAAK,CAAC,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,QAAQA,CAACC,KAAc,EAAU;EACzC,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACvC,IAAI,CAACV,SAAS,CAACW,GAAG,CAACD,KAAe,CAAC,EAAE;MACpCX,cAAc,GAAG,CAACA,cAAc,GAAG,CAAC,IAAIa,MAAM,CAACC,gBAAgB;MAC/Db,SAAS,CAACc,GAAG,CAACJ,KAAK,EAAYX,cAAc,CAAC;MAC9C,OAAO,OAAOA,cAAc,EAAE;IAC/B;IACA,OAAO,OAAOC,SAAS,CAACe,GAAG,CAACL,KAAe,CAAC,EAAE;EAC/C;EACA,OAAOM,MAAM,CAACN,KAAK,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,YAAYA,CAAsBC,GAAM,EAAK;EAC5D;EACA,MAAMC,GAAG,GAAGC,MAAM,CAACC,OAAO,CAACH,GAAG,CAAC,CAC7BI,GAAG,CAAC,CAAC,CAACC,CAAC,EAAEC,CAAC,CAAC,KAAK,GAAGD,CAAC,IAAId,QAAQ,CAACe,CAAC,CAAC,EAAE,CAAC,CACtCC,IAAI,CAAC,GAAG,CAAC;;EAEX;EACA,MAAMrB,IAAI,GAAGF,UAAU,CAACiB,GAAG,CAAC;EAC5B,MAAMO,MAAM,GAAG7B,UAAU,CAACkB,GAAG,CAACX,IAAI,CAAC;;EAEnC;EACA,IAAIsB,MAAM,IAAIA,MAAM,CAACP,GAAG,KAAKA,GAAG,EAAE;IACjC,OAAOO,MAAM,CAACC,KAAK;EACpB;;EAEA;EACA,MAAMA,KAAK,GAAGP,MAAM,CAACQ,MAAM,CAAC;IAAE,GAAGV;EAAI,CAAC,CAAM;EAC5CrB,UAAU,CAACiB,GAAG,CAACV,IAAI,EAAE;IAAEe,GAAG;IAAEQ;EAAM,CAAC,CAAC;EAEpC,OAAOA,KAAK;AACb","ignoreList":[]}
|
|
@@ -36,9 +36,10 @@ export declare function useForm<T>(values: Values<T>, config?: FormConfig<T>): {
|
|
|
36
36
|
resetValidation: () => void;
|
|
37
37
|
resetInitialValues: () => void;
|
|
38
38
|
};
|
|
39
|
+
declare function doesValueExist<T>(value: T): value is Exclude<T, null | undefined>;
|
|
39
40
|
/** Helper hook to validate form state outside of the scope of useForm. */
|
|
40
41
|
export declare function useFormUtils<T>(config?: FormConfig<T>): {
|
|
41
|
-
doesValueExist:
|
|
42
|
+
doesValueExist: typeof doesValueExist;
|
|
42
43
|
validateByRule: <K extends keyof T>(key: K, value: T[K], state: Values<T>) => boolean | undefined;
|
|
43
44
|
isOptional: (key: keyof T) => boolean;
|
|
44
45
|
fieldValidation: (key: keyof T, value: T[keyof T], state: Values<T>) => boolean | undefined;
|
|
@@ -47,4 +48,5 @@ export declare function useFormUtils<T>(config?: FormConfig<T>): {
|
|
|
47
48
|
validation: Validation<T>;
|
|
48
49
|
};
|
|
49
50
|
};
|
|
51
|
+
export {};
|
|
50
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/skeleform/src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC;AAClE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAChB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,KACb,OAAO,GAAG,SAAS;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,2UAA2U;IAC3U,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/skeleform/src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC;AAClE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAChB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,KACb,OAAO,GAAG,SAAS;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,2UAA2U;IAC3U,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;AAsBF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;;;aA2BnD,CAAC,SAAS,MAAM,CAAC,OAC3B,CAAC,SACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBACF,OAAO;eAWP,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC;;;;;;;;EAgF3C;AAED,iBAAS,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAkB1E;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;;qBAQnD,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;sBANnD,MAAM,CAAC;2BAkBP,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;6BAmB1C,MAAM,CAAC,CAAC,CAAC;;;;EAyBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize-styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/memoize-styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"memoize-styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/memoize-styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8C9C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAoB3D"}
|
|
@@ -36,9 +36,10 @@ export declare function useForm<T>(values: Values<T>, config?: FormConfig<T>): {
|
|
|
36
36
|
resetValidation: () => void;
|
|
37
37
|
resetInitialValues: () => void;
|
|
38
38
|
};
|
|
39
|
+
declare function doesValueExist<T>(value: T): value is Exclude<T, null | undefined>;
|
|
39
40
|
/** Helper hook to validate form state outside of the scope of useForm. */
|
|
40
41
|
export declare function useFormUtils<T>(config?: FormConfig<T>): {
|
|
41
|
-
doesValueExist:
|
|
42
|
+
doesValueExist: typeof doesValueExist;
|
|
42
43
|
validateByRule: <K extends keyof T>(key: K, value: T[K], state: Values<T>) => boolean | undefined;
|
|
43
44
|
isOptional: (key: keyof T) => boolean;
|
|
44
45
|
fieldValidation: (key: keyof T, value: T[keyof T], state: Values<T>) => boolean | undefined;
|
|
@@ -47,4 +48,5 @@ export declare function useFormUtils<T>(config?: FormConfig<T>): {
|
|
|
47
48
|
validation: Validation<T>;
|
|
48
49
|
};
|
|
49
50
|
};
|
|
51
|
+
export {};
|
|
50
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/skeleform/src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC;AAClE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAChB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,KACb,OAAO,GAAG,SAAS;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,2UAA2U;IAC3U,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/skeleform/src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC;AAClE,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAChB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,KACb,OAAO,GAAG,SAAS;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,2UAA2U;IAC3U,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;AAsBF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;;;aA2BnD,CAAC,SAAS,MAAM,CAAC,OAC3B,CAAC,SACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBACF,OAAO;eAWP,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC;;;;;;;;EAgF3C;AAED,iBAAS,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAkB1E;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;;qBAQnD,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;sBANnD,MAAM,CAAC;2BAkBP,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC;6BAmB1C,MAAM,CAAC,CAAC,CAAC;;;;EAyBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize-styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/memoize-styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"memoize-styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/memoize-styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8C9C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAoB3D"}
|
package/package.json
CHANGED