peryl 1.5.26 → 1.5.28

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 (58) hide show
  1. package/demo/hsml-app-form_demo.ts +42 -18
  2. package/dist/browser-esmodule/hsml-app.js +234 -195
  3. package/dist/browser-esmodule/hsml-app.js.map +1 -1
  4. package/dist/browser-esmodule/hsml-dom.js.map +1 -1
  5. package/dist/browser-esmodule/hsml-html.js.map +1 -1
  6. package/dist/browser-esmodule/hsml-idom.js.map +1 -1
  7. package/dist/browser-esmodule/hsml.js.map +1 -1
  8. package/dist/browser-esmodule/index.js +233 -195
  9. package/dist/browser-esmodule/index.js.map +1 -1
  10. package/dist/browser-umd/hsml-app.js +1 -1
  11. package/dist/browser-umd/hsml-app.js.map +1 -1
  12. package/dist/browser-umd/hsml-dom.js.map +1 -1
  13. package/dist/browser-umd/hsml-html.js.map +1 -1
  14. package/dist/browser-umd/hsml-idom.js.map +1 -1
  15. package/dist/browser-umd/hsml.js.map +1 -1
  16. package/dist/browser-umd/index.js +1 -1
  17. package/dist/browser-umd/index.js.map +1 -1
  18. package/dist/demo/hsml-app-bysquare_demo.html +1 -1
  19. package/dist/demo/hsml-app-form-validation_demo.html +1 -1
  20. package/dist/demo/hsml-app-form_demo.00e63a5d.js +2 -0
  21. package/dist/demo/hsml-app-form_demo.00e63a5d.js.map +1 -0
  22. package/dist/demo/hsml-app-form_demo.3eb308db.js +2 -0
  23. package/dist/demo/hsml-app-form_demo.3eb308db.js.map +1 -0
  24. package/dist/demo/hsml-app-form_demo.html +1 -1
  25. package/dist/demo/hsml-app-test_demo.html +1 -1
  26. package/dist/demo/hsml-app-tictactoe_demo.html +1 -1
  27. package/dist/demo/hsml-app_demo.html +1 -1
  28. package/dist/demo/hsml-appel_demo.html +1 -1
  29. package/dist/demo/hsml-appi_demo.64afacb3.js +9 -0
  30. package/dist/demo/hsml-appi_demo.64afacb3.js.map +1 -0
  31. package/dist/demo/hsml-appi_demo.aba6f095.js +9 -0
  32. package/dist/demo/hsml-appi_demo.aba6f095.js.map +1 -0
  33. package/dist/demo/hsml-appi_demo.html +1 -1
  34. package/dist/demo/hsml_demo.5e354955.js +2 -0
  35. package/dist/demo/hsml_demo.5e354955.js.map +1 -0
  36. package/dist/demo/hsml_demo.8bd00dc0.js +2 -0
  37. package/dist/demo/hsml_demo.8bd00dc0.js.map +1 -0
  38. package/dist/demo/hsml_demo.html +1 -1
  39. package/dist/hsml-app.d.ts +1 -1
  40. package/dist/hsml-app.js +259 -207
  41. package/dist/hsml-app.js.map +1 -1
  42. package/dist/hsml.d.ts +2 -0
  43. package/dist/hsml.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/hsml-app.ts +73 -11
  46. package/src/hsml.ts +3 -0
  47. package/dist/demo/hsml-app-form_demo.945f4cb8.js +0 -3
  48. package/dist/demo/hsml-app-form_demo.945f4cb8.js.map +0 -1
  49. package/dist/demo/hsml-app-form_demo.a519fe16.js +0 -3
  50. package/dist/demo/hsml-app-form_demo.a519fe16.js.map +0 -1
  51. package/dist/demo/hsml-appi_demo.64f70501.js +0 -2
  52. package/dist/demo/hsml-appi_demo.64f70501.js.map +0 -1
  53. package/dist/demo/hsml-appi_demo.9a157181.js +0 -2
  54. package/dist/demo/hsml-appi_demo.9a157181.js.map +0 -1
  55. package/dist/demo/hsml_demo.11dae6c9.js +0 -2
  56. package/dist/demo/hsml_demo.11dae6c9.js.map +0 -1
  57. package/dist/demo/hsml_demo.c2b93717.js +0 -2
  58. package/dist/demo/hsml_demo.c2b93717.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { HElement, hjoin } from "../src/hsml";
2
- import { HApp, HAppActions, HDispatcher, HFormData, HFormInputData, HState, HView, happ } from "../src/hsml-app";
2
+ import { HApp, HAppActions, HDispatcher, HFormData, HFormInputData, HState, HView } from "../src/hsml-app";
3
3
 
4
4
  interface FormData {
5
5
  name: string;
@@ -9,11 +9,14 @@ interface FormData {
9
9
  married: boolean;
10
10
  gender: string;
11
11
  sport: string;
12
+ file: string;
12
13
  }
13
14
 
15
+ type Nullable<T> = { [P in keyof T]: T[P] | null };
16
+
14
17
  interface State {
15
18
  title: string;
16
- form: HFormData<FormData>;
19
+ form: HFormData<Nullable<FormData>>;
17
20
  genders: {
18
21
  label: string;
19
22
  value: string;
@@ -33,7 +36,8 @@ const state: HState<State> = function () {
33
36
  children: 0,
34
37
  married: false,
35
38
  gender: "female",
36
- sport: "gymnastics"
39
+ sport: "gymnastics",
40
+ file: ""
37
41
  },
38
42
  validation: {},
39
43
  // valid: false
@@ -52,7 +56,8 @@ const state: HState<State> = function () {
52
56
  enum Actions {
53
57
  change = "form-change",
54
58
  submit = "form-submit",
55
- cancel = "form-cancel"
59
+ cancel = "form-cancel",
60
+ rmfile = "form-rmfile"
56
61
  }
57
62
 
58
63
  const view: HView<State, Actions> = function (state) {
@@ -202,13 +207,28 @@ const view: HView<State, Actions> = function (state) {
202
207
  ]],
203
208
  ["p", [
204
209
  ["label", ["Data",
205
- ["input.w3-input", {
210
+ ["input.w3-input~file", {
206
211
  type: "file",
207
212
  name: "file",
208
213
  accept: "application/json,.json",
209
- multiple: false
214
+ multiple: false,
215
+ maxsize: 500,
216
+ convert: "text"
210
217
  }]
211
- ]]
218
+ ]],
219
+ ["div.w3-text-red", state.form.validation.file],
220
+ " ",
221
+ state.form.data.file
222
+ ? ["a.w3-btn",
223
+ {
224
+ href: "javascript:void(0)",
225
+ accesskey: "c",
226
+ title: "alt-c",
227
+ on: ["click", Actions.rmfile]
228
+ },
229
+ "Remove"
230
+ ]
231
+ : null
212
232
  ]],
213
233
  ["button.w3-btn.w3-blue", "Submit"],
214
234
  " ",
@@ -240,22 +260,25 @@ const view: HView<State, Actions> = function (state) {
240
260
  ];
241
261
  };
242
262
 
243
- const dispatcher: HDispatcher<State, Actions> = async function (action, state) {
263
+ const dispatcher: HDispatcher<State, Actions> = async function (this, action, state) {
244
264
  switch (action.type) {
245
-
246
265
  case HAppActions.init:
247
266
  case HAppActions.mount:
248
267
  case HAppActions.umount:
249
- case HAppActions.attribute:
268
+ case HAppActions.attribute: {
250
269
  break;
251
-
252
- case Actions.change:
270
+ }
271
+ case Actions.rmfile: {
272
+ this.refs["file"].value = null;
273
+ break;
274
+ }
275
+ case Actions.change: {
253
276
  console.log("FormActions.change", action.data);
254
277
  const input = action.data as HFormInputData;
255
278
  state.form.data[input.name!] = input.value;
256
279
  state.form.validation[input.name!] = input.validation;
257
- if (action.data.file) {
258
- const file = action.data.file as File;
280
+ if (action.data.value instanceof File) {
281
+ const file = action.data.value as File;
259
282
  // Read the file as text
260
283
  console.log("FormActions.change file text:", await file.text());
261
284
  // Abuse response to read json data
@@ -265,11 +288,11 @@ const dispatcher: HDispatcher<State, Actions> = async function (action, state) {
265
288
  // Read the file as base64
266
289
  console.log("FormActions.change file base64:", Buffer.from(await file.arrayBuffer()).toString("base64"));
267
290
  // Read large data chunk by chunk
268
- console.log("FormActions.change file stream:", file.stream());
291
+ console.log("FormActions.change file stream:", await new Response(file.stream()).text());
269
292
  }
270
293
  break;
271
-
272
- case Actions.submit:
294
+ }
295
+ case Actions.submit: {
273
296
  const form = action.data as HFormData<FormData>;
274
297
  const formData = JSON.stringify(form, null, 4);
275
298
  console.log("FormActions.submit", formData);
@@ -278,7 +301,8 @@ const dispatcher: HDispatcher<State, Actions> = async function (action, state) {
278
301
  // Process data
279
302
  // alert(`Form submit: \n${formData}`);
280
303
  }
281
- break;
304
+ break;
305
+ }
282
306
  }
283
307
  };
284
308
 
@@ -1,3 +1,5 @@
1
+ import {Buffer as $6oE1Z$Buffer} from "buffer";
2
+
1
3
  function $parcel$export(e, n, v, s) {
2
4
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
3
5
  }
@@ -8,10 +10,6 @@ $parcel$export($9adf8bc2f1ba310f$exports, "HDispatchScopes", function () { retur
8
10
  $parcel$export($9adf8bc2f1ba310f$exports, "happ", function () { return $9adf8bc2f1ba310f$export$eb8950696418f795; }, function (v) { return $9adf8bc2f1ba310f$export$eb8950696418f795 = v; });
9
11
  $parcel$export($9adf8bc2f1ba310f$exports, "HApp", function () { return $9adf8bc2f1ba310f$export$8cfef5dc37c46888; }, function (v) { return $9adf8bc2f1ba310f$export$8cfef5dc37c46888 = v; });
10
12
  $parcel$export($9adf8bc2f1ba310f$exports, "happel", function () { return $9adf8bc2f1ba310f$export$1cfc54b3834d3c50; }, function (v) { return $9adf8bc2f1ba310f$export$1cfc54b3834d3c50 = v; });
11
- var $32c8c7b45dace799$exports = {};
12
-
13
- $parcel$export($32c8c7b45dace799$exports, "hsml2idomPatch", function () { return $32c8c7b45dace799$export$c539705c0f97f623; });
14
- $parcel$export($32c8c7b45dace799$exports, "hsmls2idomPatch", function () { return $32c8c7b45dace799$export$ccb3a8beff05eea9; });
15
13
  var $a15669afd069c056$exports = {};
16
14
 
17
15
  $parcel$export($a15669afd069c056$exports, "NBSP", function () { return $a15669afd069c056$export$4442f9d5f627adc8; });
@@ -112,6 +110,11 @@ function $a15669afd069c056$export$7427c8b17ccb408c(hsmls, sep) {
112
110
  }
113
111
 
114
112
 
113
+ var $32c8c7b45dace799$exports = {};
114
+
115
+ $parcel$export($32c8c7b45dace799$exports, "hsml2idomPatch", function () { return $32c8c7b45dace799$export$c539705c0f97f623; });
116
+ $parcel$export($32c8c7b45dace799$exports, "hsmls2idomPatch", function () { return $32c8c7b45dace799$export$ccb3a8beff05eea9; });
117
+
115
118
  const $490b05c9343fc137$export$3f32c2013f0dcc1e = true;
116
119
 
117
120
 
@@ -952,6 +955,8 @@ function $32c8c7b45dace799$export$ccb3a8beff05eea9(node, hsmlFr, ctx) {
952
955
  }
953
956
 
954
957
 
958
+
959
+ var $9adf8bc2f1ba310f$require$Buffer = $6oE1Z$Buffer;
955
960
  var $9adf8bc2f1ba310f$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
956
961
  function adopt(value) {
957
962
  return value instanceof P ? value : new P(function(resolve) {
@@ -1067,14 +1072,14 @@ class $9adf8bc2f1ba310f$export$8cfef5dc37c46888 {
1067
1072
  return hsmls !== null && hsmls !== void 0 ? hsmls : [];
1068
1073
  }
1069
1074
  };
1070
- this.actionCb = (actionType, data, event)=>{
1071
- data = (data === null || data === void 0 ? void 0 : data.constructor) === Function ? data(event) : data;
1072
- if (data === undefined && event) {
1073
- if (event instanceof CustomEvent) data = event.detail;
1074
- else data = $9adf8bc2f1ba310f$var$formData(event);
1075
- }
1076
- this._dispatchAction(actionType, data, event);
1077
- };
1075
+ this.actionCb = (actionType, data, event)=>$9adf8bc2f1ba310f$var$__awaiter(this, void 0, void 0, function*() {
1076
+ data = (data === null || data === void 0 ? void 0 : data.constructor) === Function ? data(event) : data;
1077
+ if (data === undefined && event) {
1078
+ if (event instanceof CustomEvent) data = event.detail;
1079
+ else data = yield $9adf8bc2f1ba310f$var$formData(event);
1080
+ }
1081
+ this._dispatchAction(actionType, data, event);
1082
+ });
1078
1083
  this.mount = (e)=>{
1079
1084
  const el = typeof e === "string" ? document.getElementById(e) : e;
1080
1085
  if (el && el[$9adf8bc2f1ba310f$var$HAPP]) {
@@ -1237,25 +1242,37 @@ function $9adf8bc2f1ba310f$var$elementDispatchCustomEvent(el, type, data) {
1237
1242
  }));
1238
1243
  }
1239
1244
  function $9adf8bc2f1ba310f$var$formData(e) {
1240
- const el = e.target;
1241
- switch(el.nodeName){
1242
- case "FORM":
1243
- e.preventDefault();
1244
- const form = {
1245
- data: {},
1246
- validation: {},
1247
- valid: true
1248
- };
1249
- const els = el.elements;
1250
- for(let i = 0; i < els.length; i++){
1251
- const inputData = $9adf8bc2f1ba310f$var$formInputData(els[i]);
1252
- if (inputData && inputData.name) {
1253
- const formData = form.data;
1254
- const name = inputData.name;
1255
- const value = inputData.value;
1256
- if (formData[name] === undefined) formData[name] = value;
1257
- else if (typeof formData[name] === "string" || formData[name] instanceof String) {
1258
- if (value instanceof Array) formData[name] = [
1245
+ return $9adf8bc2f1ba310f$var$__awaiter(this, void 0, void 0, function*() {
1246
+ const el = e.target;
1247
+ switch(el.nodeName){
1248
+ case "FORM":
1249
+ e.preventDefault();
1250
+ const form = {
1251
+ data: {},
1252
+ validation: {},
1253
+ valid: true
1254
+ };
1255
+ const els = el.elements;
1256
+ for(let i = 0; i < els.length; i++){
1257
+ const inputData = yield $9adf8bc2f1ba310f$var$formInputData(els[i]);
1258
+ if (inputData && inputData.name) {
1259
+ const formData = form.data;
1260
+ const name = inputData.name;
1261
+ const value = inputData.value;
1262
+ if (formData[name] === undefined) formData[name] = value;
1263
+ else if (typeof formData[name] === "string" || formData[name] instanceof String) {
1264
+ if (value instanceof Array) formData[name] = [
1265
+ formData[name],
1266
+ ...value
1267
+ ];
1268
+ else formData[name] = [
1269
+ formData[name],
1270
+ value
1271
+ ];
1272
+ } else if (formData[name] instanceof Array) {
1273
+ if (value instanceof Array) formData[name] = formData[name].concat(value);
1274
+ else formData[name].push(value);
1275
+ } else if (value instanceof Array) formData[name] = [
1259
1276
  formData[name],
1260
1277
  ...value
1261
1278
  ];
@@ -1263,185 +1280,207 @@ function $9adf8bc2f1ba310f$var$formData(e) {
1263
1280
  formData[name],
1264
1281
  value
1265
1282
  ];
1266
- } else if (formData[name] instanceof Array) {
1267
- if (value instanceof Array) formData[name] = formData[name].concat(value);
1268
- else formData[name].push(value);
1269
- } else if (value instanceof Array) formData[name] = [
1270
- formData[name],
1271
- ...value
1272
- ];
1273
- else formData[name] = [
1274
- formData[name],
1275
- value
1276
- ];
1277
- if (formData[name] instanceof Array) {
1278
- formData[name] = formData[name].filter((d)=>d !== null);
1279
- if (els[i].type === "radio") formData[name] = formData[name].length ? formData[name][0] : null;
1283
+ if (formData[name] instanceof Array) {
1284
+ formData[name] = formData[name].filter((d)=>d !== null);
1285
+ if (els[i].type === "radio") formData[name] = formData[name].length ? formData[name][0] : null;
1286
+ }
1287
+ if (inputData.validation) form.validation[name] = inputData.validation;
1288
+ if (!inputData.valid) form.valid = false;
1280
1289
  }
1281
- if (inputData.validation) form.validation[name] = inputData.validation;
1282
- if (!inputData.valid) form.valid = false;
1283
1290
  }
1284
- }
1285
- return form;
1286
- default:
1287
- return $9adf8bc2f1ba310f$var$formInputData(el);
1288
- }
1291
+ return form;
1292
+ default:
1293
+ return yield $9adf8bc2f1ba310f$var$formInputData(el);
1294
+ }
1295
+ });
1289
1296
  }
1290
1297
  function $9adf8bc2f1ba310f$var$formInputData(el) {
1291
- const vel = el;
1292
- if (vel.willValidate) {
1293
- let valid = true;
1294
- for(const key in vel.validity){
1295
- if (key !== "customError" && key !== "valid") {
1296
- if (vel.validity[key]) {
1297
- const msgs = vel["validation"];
1298
- if (msgs) {
1299
- const msg = msgs[key];
1300
- if (msg) {
1301
- vel.setCustomValidity(msg);
1302
- valid = false;
1303
- break;
1304
- } else {
1305
- vel.setCustomValidity("");
1306
- break;
1298
+ return $9adf8bc2f1ba310f$var$__awaiter(this, void 0, void 0, function*() {
1299
+ const vel = el;
1300
+ if (vel.willValidate) {
1301
+ let valid = true;
1302
+ for(const key in vel.validity){
1303
+ if (key !== "customError" && key !== "valid") {
1304
+ if (vel.validity[key]) {
1305
+ const msgs = vel["validation"];
1306
+ if (msgs) {
1307
+ const msg = msgs[key];
1308
+ if (msg) {
1309
+ vel.setCustomValidity(msg);
1310
+ valid = false;
1311
+ break;
1312
+ } else {
1313
+ vel.setCustomValidity("");
1314
+ break;
1315
+ }
1307
1316
  }
1308
1317
  }
1309
1318
  }
1310
1319
  }
1320
+ if (valid) vel.setCustomValidity("");
1311
1321
  }
1312
- if (valid) vel.setCustomValidity("");
1313
- }
1314
- let data;
1315
- switch(el.nodeName){
1316
- case "INPUT":
1317
- const iel = el;
1318
- switch(iel.type){
1319
- case "text":
1320
- case "hidden":
1321
- case "password":
1322
- case "email":
1323
- case "search":
1324
- case "url":
1325
- case "tel":
1326
- case "color":
1327
- case "submit":
1328
- case "button":
1329
- data = {
1330
- name: iel.name,
1331
- value: iel.value === "" ? null : iel.value,
1332
- validation: iel.validationMessage,
1333
- valid: iel.validity.valid
1334
- };
1335
- break;
1336
- case "number":
1337
- case "range":
1338
- data = {
1339
- name: iel.name,
1340
- value: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1341
- valueString: iel.value,
1342
- validation: iel.validationMessage,
1343
- valid: iel.validity.valid
1344
- };
1345
- break;
1346
- case "datetime-local":
1347
- data = {
1348
- name: iel.name,
1349
- value: iel.value === "" ? null : iel.value,
1350
- valueNumber: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1351
- valueDate: isNaN(iel.valueAsNumber) ? null : new Date(iel.valueAsNumber),
1352
- validation: iel.validationMessage,
1353
- valid: iel.validity.valid
1354
- };
1355
- break;
1356
- case "date":
1357
- case "month":
1358
- case "time":
1359
- case "week":
1360
- data = {
1361
- name: iel.name,
1362
- value: iel.value === "" ? null : iel.value,
1363
- valueNumber: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1364
- valueDate: iel.valueAsDate,
1365
- validation: iel.validationMessage,
1366
- valid: iel.validity.valid
1367
- };
1368
- break;
1369
- case "radio":
1370
- data = {
1371
- name: iel.name,
1372
- value: iel.checked ? iel.value : null,
1373
- valueString: iel.value,
1374
- validation: iel.validationMessage,
1375
- valid: iel.validity.valid
1376
- };
1377
- break;
1378
- case "checkbox":
1379
- if (iel.value === "on") data = {
1380
- name: iel.name,
1381
- value: iel.checked,
1382
- valueString: iel.value,
1383
- validation: iel.validationMessage,
1384
- valid: iel.validity.valid
1385
- };
1386
- else data = {
1387
- name: iel.name,
1388
- value: iel.checked ? String(iel.value) : null,
1389
- valueString: iel.value,
1390
- validation: iel.validationMessage,
1391
- valid: iel.validity.valid
1392
- };
1393
- break;
1394
- case "file":
1395
- const files = iel.files;
1396
- const value = iel.multiple ? files[0] : files.length === 1 ? files[0] : null;
1322
+ let data;
1323
+ switch(el.nodeName){
1324
+ case "INPUT":
1325
+ const iel = el;
1326
+ switch(iel.type){
1327
+ case "text":
1328
+ case "hidden":
1329
+ case "password":
1330
+ case "email":
1331
+ case "search":
1332
+ case "url":
1333
+ case "tel":
1334
+ case "color":
1335
+ case "submit":
1336
+ case "button":
1337
+ data = {
1338
+ name: iel.name,
1339
+ value: iel.value === "" ? null : iel.value,
1340
+ validation: iel.validationMessage,
1341
+ valid: iel.validity.valid
1342
+ };
1343
+ break;
1344
+ case "number":
1345
+ case "range":
1346
+ data = {
1347
+ name: iel.name,
1348
+ value: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1349
+ valueString: iel.value,
1350
+ validation: iel.validationMessage,
1351
+ valid: iel.validity.valid
1352
+ };
1353
+ break;
1354
+ case "datetime-local":
1355
+ data = {
1356
+ name: iel.name,
1357
+ value: iel.value === "" ? null : iel.value,
1358
+ valueNumber: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1359
+ valueDate: isNaN(iel.valueAsNumber) ? null : new Date(iel.valueAsNumber),
1360
+ validation: iel.validationMessage,
1361
+ valid: iel.validity.valid
1362
+ };
1363
+ break;
1364
+ case "date":
1365
+ case "month":
1366
+ case "time":
1367
+ case "week":
1368
+ data = {
1369
+ name: iel.name,
1370
+ value: iel.value === "" ? null : iel.value,
1371
+ valueNumber: isNaN(iel.valueAsNumber) ? null : iel.valueAsNumber,
1372
+ valueDate: iel.valueAsDate,
1373
+ validation: iel.validationMessage,
1374
+ valid: iel.validity.valid
1375
+ };
1376
+ break;
1377
+ case "radio":
1378
+ data = {
1379
+ name: iel.name,
1380
+ value: iel.checked ? iel.value : null,
1381
+ valueString: iel.value,
1382
+ validation: iel.validationMessage,
1383
+ valid: iel.validity.valid
1384
+ };
1385
+ break;
1386
+ case "checkbox":
1387
+ if (iel.value === "on") data = {
1388
+ name: iel.name,
1389
+ value: iel.checked,
1390
+ valueString: iel.value,
1391
+ validation: iel.validationMessage,
1392
+ valid: iel.validity.valid
1393
+ };
1394
+ else data = {
1395
+ name: iel.name,
1396
+ value: iel.checked ? String(iel.value) : null,
1397
+ valueString: iel.value,
1398
+ validation: iel.validationMessage,
1399
+ valid: iel.validity.valid
1400
+ };
1401
+ break;
1402
+ case "file":
1403
+ const files = iel.files;
1404
+ let converted = [];
1405
+ switch(iel.getAttribute("convert")){
1406
+ case "text":
1407
+ for (const file of files)converted.push((yield file.text()));
1408
+ break;
1409
+ case "json":
1410
+ for (const file of files)converted.push((yield new Response(file).json()));
1411
+ break;
1412
+ case "base64":
1413
+ for (const file of files)converted.push($9adf8bc2f1ba310f$require$Buffer.from((yield file.arrayBuffer())).toString("base64"));
1414
+ break;
1415
+ default:
1416
+ converted = files;
1417
+ break;
1418
+ }
1419
+ const value = iel.multiple ? converted[0] : converted.length === 1 ? converted[0] : null;
1420
+ data = {
1421
+ name: iel.name,
1422
+ value: value,
1423
+ valueFiles: files,
1424
+ valueString: iel.value,
1425
+ validation: iel.validationMessage,
1426
+ valid: iel.validity.valid
1427
+ };
1428
+ const maxsize = Number(iel.getAttribute("maxsize"));
1429
+ if (maxsize) {
1430
+ for (const file of files)if (file.size > maxsize) {
1431
+ data.validation = `Max ${$9adf8bc2f1ba310f$var$unit(maxsize)}, file ${$9adf8bc2f1ba310f$var$unit(file.size)}`;
1432
+ data.valid = false;
1433
+ }
1434
+ }
1435
+ break;
1436
+ }
1437
+ break;
1438
+ case "SELECT":
1439
+ const sel = el;
1440
+ if (sel.multiple) {
1441
+ const values = Array.from(sel.selectedOptions).map((o)=>o.value);
1397
1442
  data = {
1398
- name: iel.name,
1399
- value: value,
1400
- valueString: iel.value,
1401
- validation: iel.validationMessage,
1402
- valid: iel.validity.valid
1443
+ name: sel.name,
1444
+ value: values,
1445
+ valueString: sel.value,
1446
+ validation: sel.validationMessage,
1447
+ valid: sel.validity.valid
1403
1448
  };
1404
- break;
1405
- }
1406
- break;
1407
- case "SELECT":
1408
- const sel = el;
1409
- if (sel.multiple) {
1410
- const values = Array.from(sel.selectedOptions).map((o)=>o.value);
1411
- data = {
1449
+ } else data = {
1412
1450
  name: sel.name,
1413
- value: values,
1414
- valueString: sel.value,
1451
+ value: sel.value === "" ? null : sel.value,
1415
1452
  validation: sel.validationMessage,
1416
1453
  valid: sel.validity.valid
1417
1454
  };
1418
- } else data = {
1419
- name: sel.name,
1420
- value: sel.value === "" ? null : sel.value,
1421
- validation: sel.validationMessage,
1422
- valid: sel.validity.valid
1423
- };
1424
- break;
1425
- case "TEXTAREA":
1426
- const tel = el;
1427
- data = {
1428
- name: tel.name,
1429
- value: tel.value === "" ? null : tel.value,
1430
- validation: tel.validationMessage,
1431
- valid: tel.validity.valid
1432
- };
1433
- break;
1434
- case "BUTTON":
1435
- const bel = el;
1436
- data = {
1437
- name: bel.name,
1438
- value: bel.value === "" ? null : bel.value,
1439
- validation: bel.validationMessage,
1440
- valid: bel.validity.valid
1441
- };
1442
- break;
1443
- }
1444
- return data;
1455
+ break;
1456
+ case "TEXTAREA":
1457
+ const tel = el;
1458
+ data = {
1459
+ name: tel.name,
1460
+ value: tel.value === "" ? null : tel.value,
1461
+ validation: tel.validationMessage,
1462
+ valid: tel.validity.valid
1463
+ };
1464
+ break;
1465
+ case "BUTTON":
1466
+ const bel = el;
1467
+ data = {
1468
+ name: bel.name,
1469
+ value: bel.value === "" ? null : bel.value,
1470
+ validation: bel.validationMessage,
1471
+ valid: bel.validity.valid
1472
+ };
1473
+ break;
1474
+ }
1475
+ return data;
1476
+ });
1477
+ }
1478
+ function $9adf8bc2f1ba310f$var$unit(num) {
1479
+ const mb = 1e6;
1480
+ const kb = 1e3;
1481
+ if (num >= mb) return `${(num / mb).toFixed(3)}${0, $a15669afd069c056$export$76bbc0cf5037aeea}MB`;
1482
+ else if (num >= kb) return `${(num / kb).toFixed(0)}${0, $a15669afd069c056$export$76bbc0cf5037aeea}kB`;
1483
+ else return `${num.toFixed(0)}${0, $a15669afd069c056$export$76bbc0cf5037aeea}B`;
1445
1484
  }
1446
1485
 
1447
1486