eddev 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,54 @@
1
1
  import { GravityFormData, GravityFormsField } from "./types.js";
2
2
  type Options = {
3
3
  form: GravityFormData;
4
+ prepopulate?: {
5
+ [key: string]: any;
6
+ };
4
7
  };
8
+ export type UseGravityFormResult = ReturnType<typeof useGravityForm>;
5
9
  export type GravityFormsFieldState<T = any, TExtra = {}> = GravityFormsField & {
6
10
  value: T | undefined;
7
11
  error: string | undefined;
8
12
  set(value: T | undefined): void;
9
13
  } & TExtra;
14
+ export type GFLayoutFieldsItem = {
15
+ type: "fields";
16
+ fields: GravityFormsFieldState[];
17
+ };
18
+ export type GFLayoutHeadingItem = {
19
+ type: "heading";
20
+ text: string;
21
+ className?: string;
22
+ };
23
+ export type GFLayoutItem = {
24
+ type: "fields";
25
+ fields: GravityFormsFieldState[];
26
+ } | {
27
+ type: "heading";
28
+ text: string;
29
+ className?: string;
30
+ };
31
+ export type GFLayoutType = {
32
+ type: "page";
33
+ page: number;
34
+ title?: string;
35
+ items: GFLayoutItem[];
36
+ } | {
37
+ type: "success";
38
+ message: string;
39
+ };
10
40
  export declare function useGravityForm(opts: Options): {
41
+ submitLabel: string;
42
+ pageInfo: {
43
+ title?: string;
44
+ } | null;
45
+ canGoBack: boolean;
46
+ canGoForward: boolean;
47
+ goBack: (() => void) | null;
48
+ goForward: (() => void) | null;
49
+ goToPage: (num: number) => void;
11
50
  fields: GravityFormsFieldState<any, {}>[];
51
+ layout: GFLayoutType;
12
52
  submit(): void;
13
53
  updateField(id: number, value: any): void;
14
54
  submitting: boolean;
@@ -16,6 +56,10 @@ export declare function useGravityForm(opts: Options): {
16
56
  successMessage: string | null;
17
57
  mainError: string | null;
18
58
  hasErrors: boolean;
59
+ page: number;
60
+ pages: {
61
+ title?: string;
62
+ }[];
19
63
  values: {
20
64
  [key: number]: any;
21
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useGravityForm.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/useGravityForm.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAiBD,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG;IAC7E,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;CAChC,GAAG,MAAM,CAAA;AAgKV,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;oBA6CxB,MAAM,SAAS,GAAG;gBA/NxB,OAAO;cACT,OAAO;oBACD,MAAM,GAAG,IAAI;eAClB,MAAM,GAAG,IAAI;eACb,OAAO;YACV;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;YACtB;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAClC;cACS;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB;EAwNF;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"useGravityForm.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/integrations/gravityforms/useGravityForm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE/E,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,CAAC,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;CACF,CAAA;AAsBD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAEpE,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG;IAC7E,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAA;CAChC,GAAG,MAAM,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAkLL,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;gBAtOhC,MAAM;;;;;;oBA6VE,MAAM;;YAWZ,YAAY;;oBAQN,MAAM,SAAS,GAAG;gBAvXxB,OAAO;cACT,OAAO;oBACD,MAAM,GAAG,IAAI;eAClB,MAAM,GAAG,IAAI;eACb,OAAO;UACZ,MAAM;WACL;QACL,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,EAAE;YACK;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;YACtB;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAClC;cACS;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB;EA4WF;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -1,6 +1,5 @@
1
- import { useEffect } from "react";
2
- import { useState } from "react";
3
- import { useReducer } from "react";
1
+ import { useEffect, useMemo, useReducer, useState } from "react";
2
+ import { getBuiltinType } from "./field-types.js";
4
3
  const reducer = (state, action) => {
5
4
  switch (action.type) {
6
5
  case "field":
@@ -56,6 +55,11 @@ const reducer = (state, action) => {
56
55
  [action.id]: undefined,
57
56
  },
58
57
  };
58
+ case "goToPage":
59
+ return {
60
+ ...state,
61
+ page: action.number,
62
+ };
59
63
  default:
60
64
  throw new Error(`Unknown GravityForms action ${JSON.stringify(action)}`);
61
65
  }
@@ -67,75 +71,88 @@ const initializer = (form) => {
67
71
  submitting: false,
68
72
  mainError: null,
69
73
  complete: false,
74
+ page: 0,
75
+ pages: form?.pagination
76
+ ? form.pagination.pages.map((title, i) => ({
77
+ number: i,
78
+ title,
79
+ }))
80
+ : [],
70
81
  successMessage: null,
71
82
  hasErrors: false,
72
83
  values: initialValues,
73
84
  errors: {},
74
85
  validity: {},
86
+ submitLabel: form.button?.text || "Submit",
75
87
  };
76
88
  };
77
89
  function optionsForField(field) {
78
- if (field.type === "fileupload") {
79
- return {
80
- allowedExtensions: field.allowedExtensions?.split(/\s*,\s*/g) ?? [],
81
- maxFileSize: field.maxFileSize ? parseFloat(field.maxFileSize) : undefined,
82
- multiple: field.multipleFiles ? true : false,
83
- maxFiles: field.maxFiles ? parseInt(field.maxFiles) : undefined,
84
- };
85
- }
86
- else if (field.type === "address") {
87
- const subfield = (id, name) => {
88
- const item = field.inputs.find((input) => String(input.id).endsWith("." + id));
89
- return {
90
- name: name,
91
- visible: !item?.isHidden,
92
- placeholder: item?.placeholder,
93
- label: item?.customLabel ?? item?.label,
94
- autocomplete: item?.autocompleteAttribute,
95
- };
96
- };
97
- return {
98
- addressType: field.addressType,
99
- defaultCountry: field.defaultCountry,
100
- defaultState: field.defaultState,
101
- subfields: {
102
- address1: subfield(1, "address1"),
103
- address2: subfield(2, "address2"),
104
- city: subfield(3, "city"),
105
- state: subfield(4, "state"),
106
- zip: subfield(5, "zip"),
107
- country: subfield(6, "country"),
108
- },
109
- };
110
- }
111
- else if (field.type === "name") {
112
- const subfield = (id, name) => {
113
- const item = field.inputs.find((input) => String(input.id).endsWith("." + id));
114
- return {
115
- name: name,
116
- visible: !item?.isHidden,
117
- placeholder: item?.placeholder,
118
- label: item?.customLabel ?? item?.label,
119
- autocomplete: item?.autocompleteAttribute,
120
- choices: item?.choices,
121
- };
122
- };
123
- return {
124
- subfields: {
125
- prefix: subfield(2, "prefix"),
126
- first: subfield(3, "first"),
127
- middle: subfield(4, "middle"),
128
- last: subfield(6, "last"),
129
- suffix: subfield(8, "suffix"),
130
- },
131
- };
132
- }
133
- return {};
90
+ return getBuiltinType(field.type)?.getOptions(field) || {};
91
+ // if (field.type === "fileupload") {
92
+ // return {
93
+ // allowedExtensions: field.allowedExtensions?.split(/\s*,\s*/g) ?? [],
94
+ // maxFileSize: field.maxFileSize ? parseFloat(field.maxFileSize) : undefined,
95
+ // multiple: field.multipleFiles ? true : false,
96
+ // maxFiles: field.maxFiles ? parseInt(field.maxFiles) : undefined,
97
+ // } as GFFileUploadOptions
98
+ // } else if (field.type === "address") {
99
+ // const subfield = (id: number, name: string) => {
100
+ // const item = field.inputs.find((input: any) => String(input.id).endsWith("." + id))
101
+ // return {
102
+ // name: name,
103
+ // visible: !item?.isHidden,
104
+ // placeholder: item?.placeholder,
105
+ // label: item?.customLabel ?? item?.label,
106
+ // autocomplete: item?.autocompleteAttribute as string,
107
+ // }
108
+ // }
109
+ // return {
110
+ // addressType: field.addressType,
111
+ // defaultCountry: field.defaultCountry,
112
+ // defaultState: field.defaultState,
113
+ // subfields: {
114
+ // address1: subfield(1, "address1"),
115
+ // address2: subfield(2, "address2"),
116
+ // city: subfield(3, "city"),
117
+ // state: subfield(4, "state"),
118
+ // zip: subfield(5, "zip"),
119
+ // country: subfield(6, "country"),
120
+ // },
121
+ // } as GFAddressOptions
122
+ // } else if (field.type === "name") {
123
+ // const subfield = (id: number, name: string) => {
124
+ // const item = field.inputs.find((input: any) => String(input.id).endsWith("." + id))
125
+ // return {
126
+ // name: name,
127
+ // visible: !item?.isHidden,
128
+ // placeholder: item?.placeholder,
129
+ // label: item?.customLabel ?? item?.label,
130
+ // autocomplete: item?.autocompleteAttribute as string,
131
+ // choices: item?.choices,
132
+ // }
133
+ // }
134
+ // return {
135
+ // subfields: {
136
+ // prefix: subfield(2, "prefix"),
137
+ // first: subfield(3, "first"),
138
+ // middle: subfield(4, "middle"),
139
+ // last: subfield(6, "last"),
140
+ // suffix: subfield(8, "suffix"),
141
+ // },
142
+ // } as GFNameOptions
143
+ // }
144
+ // return {}
134
145
  }
135
146
  export function useGravityForm(opts) {
136
147
  const { form } = opts;
148
+ useMemo(() => {
149
+ console.log("Form is", form);
150
+ for (const field of form.fields) {
151
+ field.descriptionPlacement = field.descriptionPlacement || form.descriptionPlacement || "below";
152
+ }
153
+ }, [form]);
137
154
  const [state, dispatch] = useReducer(reducer, form, initializer);
138
- const fields = form.fields.map((field) => ({
155
+ const fields = useMemo(() => form.fields.map((field) => ({
139
156
  ...field,
140
157
  value: state.values[field.id],
141
158
  error: state.errors[field.id],
@@ -144,7 +161,53 @@ export function useGravityForm(opts) {
144
161
  },
145
162
  ...optionsForField(field),
146
163
  showLabel: field.labelPlacement !== "hidden_label",
147
- }));
164
+ })), [state, form.fields]);
165
+ console.log("Fieklds", fields);
166
+ const fieldsLayout = useMemo(() => {
167
+ const layout = [];
168
+ const fieldGroups = new Map();
169
+ for (const field of fields) {
170
+ if (field.type === "hidden")
171
+ continue;
172
+ if (field.visibility === "administrative")
173
+ continue;
174
+ if (field.visibility === "hidden")
175
+ continue;
176
+ if (field.pageNumber !== state.page + 1)
177
+ continue;
178
+ if (field.type === "section") {
179
+ layout.push({
180
+ type: "heading",
181
+ text: field.label || "",
182
+ className: field.cssClass || undefined,
183
+ });
184
+ }
185
+ else {
186
+ if (field.layoutGroupId) {
187
+ let group = fieldGroups.get(field.layoutGroupId);
188
+ if (!group) {
189
+ group = { type: "fields", fields: [] };
190
+ fieldGroups.set(field.layoutGroupId, group);
191
+ layout.push(group);
192
+ }
193
+ group.fields.push(field);
194
+ }
195
+ }
196
+ }
197
+ return layout;
198
+ }, [fields, state.page]);
199
+ useEffect(() => {
200
+ const vals = {
201
+ ...opts.prepopulate,
202
+ };
203
+ if (vals) {
204
+ for (const field of fields) {
205
+ if (field.inputName in vals) {
206
+ field.set(vals[field.inputName]);
207
+ }
208
+ }
209
+ }
210
+ }, [JSON.stringify([opts.prepopulate])]);
148
211
  const [submitter, setSubmitter] = useState(null);
149
212
  useEffect(() => {
150
213
  let cancelled = false;
@@ -170,11 +233,45 @@ export function useGravityForm(opts) {
170
233
  cancelled = true;
171
234
  };
172
235
  }, []);
236
+ useEffect(() => {
237
+ let firstErrorPage = Infinity;
238
+ for (const fieldId in state.errors) {
239
+ const field = fields.find((f) => f.id === parseInt(fieldId));
240
+ if (field && field.pageNumber !== undefined && field.pageNumber - 1 < firstErrorPage) {
241
+ firstErrorPage = field.pageNumber - 1;
242
+ }
243
+ }
244
+ if (firstErrorPage < Infinity && firstErrorPage !== state.page) {
245
+ dispatch({ type: "goToPage", number: firstErrorPage });
246
+ }
247
+ }, [state.errors]);
173
248
  return {
174
249
  ...state,
250
+ submitLabel: state.page < state.pages.length - 1 ? "Next" : state.submitLabel || "Submit",
251
+ pageInfo: state.complete ? null : state.pages[state.page],
252
+ canGoBack: state.page > 0,
253
+ canGoForward: state.page < state.pages.length - 1,
254
+ goBack: state.page > 0 ? () => dispatch({ type: "goToPage", number: state.page - 1 }) : null,
255
+ goForward: state.page < state.pages.length - 1 ? () => dispatch({ type: "goToPage", number: state.page + 1 }) : null,
256
+ goToPage: (num) => dispatch({ type: "goToPage", number: num }),
175
257
  fields,
258
+ layout: (state.complete
259
+ ? {
260
+ type: "success",
261
+ }
262
+ : {
263
+ type: "page",
264
+ page: state.page,
265
+ title: state.pages[state.page]?.title,
266
+ items: fieldsLayout,
267
+ }),
176
268
  submit() {
177
- submitter?.submit(state);
269
+ if (state.page === form.pagination?.pages.length - 1) {
270
+ submitter?.submit(state);
271
+ }
272
+ else {
273
+ dispatch({ type: "goToPage", number: state.page + 1 });
274
+ }
178
275
  },
179
276
  updateField(id, value) {
180
277
  dispatch({ type: "field", id, value });
@@ -184,72 +281,74 @@ export function useGravityForm(opts) {
184
281
  function prepareValuesPayload(form, state, data) {
185
282
  for (const field of form.fields) {
186
283
  const value = state.values[field.id];
187
- let key = "input_" + field.id;
188
- if (field.type === "checkbox") {
189
- field.choices.forEach((choice, i) => {
190
- let fieldKey = field.inputs[i].id;
191
- data.append(`input_${fieldKey.toString()}`, value?.includes(choice.value) ? choice.value : "");
192
- });
193
- }
194
- else if (field.type === "multi_choice" && field.choiceLimit !== "single") {
195
- field.choices.forEach((choice, i) => {
196
- let fieldKey = field.inputs[i].id;
197
- data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "");
198
- });
199
- }
200
- else if (field.type === "image_choice" && field.choiceLimit !== "single") {
201
- field.choices.forEach((choice, i) => {
202
- let fieldKey = field.inputs[i].id;
203
- data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "");
204
- });
205
- }
206
- else if (field.type === "consent") {
207
- data.append(`${key}.1`, value ? "1" : "");
208
- data.append(`${key}.2`, field?.consentText ?? field?.checkboxLabel ?? "");
209
- // data.append(`${key}.3`, String(form.revisionId ?? "5"))
210
- }
211
- else if (field.type === "name") {
212
- data.append(`${key}_2`, value?.prefix ?? "");
213
- data.append(`${key}_3`, value?.first ?? "");
214
- data.append(`${key}_4`, value?.middle ?? "");
215
- data.append(`${key}_6`, value?.last ?? "");
216
- data.append(`${key}_8`, value?.suffix ?? "");
217
- }
218
- else if (field.type === "address") {
219
- data.append(`${key}_1`, value?.address1 ?? "");
220
- data.append(`${key}_2`, value?.address2 ?? "");
221
- data.append(`${key}_3`, value?.city ?? "");
222
- data.append(`${key}_4`, value?.state ?? "");
223
- data.append(`${key}_5`, value?.zip ?? "");
224
- data.append(`${key}_6`, value?.country ?? "");
225
- }
226
- else if (field.type === "captcha") {
227
- data.append("g-recaptcha-response", value);
228
- }
229
- else if (field.type === "fileupload") {
230
- const keyName = field.maxFiles > 1 || field.multipleFiles ? `${key}[]` : key;
231
- if (Array.isArray(value)) {
232
- value.forEach((file) => {
233
- data.append(keyName, file);
234
- });
235
- }
236
- else if (value instanceof FileList) {
237
- for (let i = 0; i < value.length; i++) {
238
- data.append(keyName, value.item(i));
239
- }
240
- }
241
- else if (value) {
242
- data.append(keyName, value);
243
- }
284
+ const defaultKey = "input_" + field.id;
285
+ const type = getBuiltinType(field.type);
286
+ if (type?.appendData) {
287
+ type.appendData(data, field, value, defaultKey);
244
288
  }
245
289
  else {
246
290
  if (value === undefined || value === null) {
247
- data.append(key, "");
291
+ data.append(defaultKey, "");
248
292
  }
249
293
  else {
250
- data.append(key, value);
294
+ data.append(defaultKey, value);
251
295
  }
252
296
  }
297
+ continue;
298
+ // if (field.type === "checkbox") {
299
+ // field.choices.forEach((choice: any, i: number) => {
300
+ // let fieldKey = field.inputs[i].id
301
+ // data.append(`input_${fieldKey.toString()}`, value?.includes(choice.value) ? choice.value : "")
302
+ // })
303
+ // } else if (field.type === "multi_choice" && field.choiceLimit !== "single") {
304
+ // field.choices.forEach((choice: any, i: number) => {
305
+ // let fieldKey = field.inputs[i].id
306
+ // data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "")
307
+ // })
308
+ // } else if (field.type === "image_choice" && field.choiceLimit !== "single") {
309
+ // field.choices.forEach((choice: any, i: number) => {
310
+ // let fieldKey = field.inputs[i].id
311
+ // data.append(`input_${fieldKey}`, value?.includes(choice.value) ? choice.value : "")
312
+ // })
313
+ // } else if (field.type === "consent") {
314
+ // data.append(`${key}.1`, value ? "1" : "")
315
+ // data.append(`${key}.2`, field?.consentText ?? field?.checkboxLabel ?? "")
316
+ // // data.append(`${key}.3`, String(form.revisionId ?? "5"))
317
+ // } else if (field.type === "name") {
318
+ // data.append(`${key}_2`, value?.prefix ?? "")
319
+ // data.append(`${key}_3`, value?.first ?? "")
320
+ // data.append(`${key}_4`, value?.middle ?? "")
321
+ // data.append(`${key}_6`, value?.last ?? "")
322
+ // data.append(`${key}_8`, value?.suffix ?? "")
323
+ // } else if (field.type === "address") {
324
+ // data.append(`${key}_1`, value?.address1 ?? "")
325
+ // data.append(`${key}_2`, value?.address2 ?? "")
326
+ // data.append(`${key}_3`, value?.city ?? "")
327
+ // data.append(`${key}_4`, value?.state ?? "")
328
+ // data.append(`${key}_5`, value?.zip ?? "")
329
+ // data.append(`${key}_6`, value?.country ?? "")
330
+ // } else if (field.type === "captcha") {
331
+ // data.append("g-recaptcha-response", value)
332
+ // } else if (field.type === "fileupload") {
333
+ // const keyName = field.maxFiles > 1 || field.multipleFiles ? `${key}[]` : key
334
+ // if (Array.isArray(value)) {
335
+ // value.forEach((file: File) => {
336
+ // data.append(keyName, file)
337
+ // })
338
+ // } else if (value instanceof FileList) {
339
+ // for (let i = 0; i < value.length; i++) {
340
+ // data.append(keyName, value.item(i)!)
341
+ // }
342
+ // } else if (value) {
343
+ // data.append(keyName, value)
344
+ // }
345
+ // } else {
346
+ // if (value === undefined || value === null) {
347
+ // data.append(key, "")
348
+ // } else {
349
+ // data.append(key, value)
350
+ // }
351
+ // }
253
352
  }
254
353
  }
255
354
  async function submit(form, state) {
@@ -130,6 +130,8 @@ program
130
130
  return;
131
131
  if (typeof args[0] === "string" && args[0].includes("useLayoutEffect does nothing"))
132
132
  return;
133
+ if (typeof args[0] === "string" && args[0].includes("Type Stripping is an experimental feature"))
134
+ return;
133
135
  serverlessLog.error(...args);
134
136
  };
135
137
  console.warn = (...args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eddev",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",