@sealcode/sealgen 0.8.3 → 0.8.6

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 (107) hide show
  1. package/@types/forms/controls/autocomplete.d.ts +1 -1
  2. package/@types/forms/controls/checkbox-group.d.ts +3 -2
  3. package/@types/forms/controls/collapsible-checkbox-group.d.ts +1 -1
  4. package/@types/forms/controls/collapsible-field-group.d.ts +1 -1
  5. package/@types/forms/controls/controls.d.ts +3 -0
  6. package/@types/forms/controls/dropdown.d.ts +6 -5
  7. package/@types/forms/controls/field-group.d.ts +3 -3
  8. package/@types/forms/controls/file.d.ts +14 -0
  9. package/@types/forms/controls/form-control.d.ts +4 -1
  10. package/@types/forms/controls/form-field-control.d.ts +1 -1
  11. package/@types/forms/controls/multiple-files.d.ts +31 -0
  12. package/@types/forms/controls/number.d.ts +17 -0
  13. package/@types/forms/controls/simple-input.d.ts +20 -27
  14. package/@types/forms/controls/textarea.d.ts +9 -7
  15. package/@types/forms/fields/field.d.ts +4 -1
  16. package/@types/forms/fields/file.d.ts +16 -0
  17. package/@types/forms/fields/files-multiple.d.ts +12 -0
  18. package/@types/forms/fields/multiple-files.d.ts +14 -0
  19. package/@types/forms/fields/number.d.ts +10 -1
  20. package/@types/forms/form.d.ts +7 -4
  21. package/@types/forms/multiform.d.ts +3 -3
  22. package/@types/page/list.d.ts +1 -1
  23. package/@types/page/mountable-with-fields.d.ts +3 -2
  24. package/@types/page/page.d.ts +1 -1
  25. package/@types/sanitize.d.ts +1 -1
  26. package/lib/forms/controls/autocomplete.js.map +1 -1
  27. package/lib/forms/controls/checkbox-group.js +11 -5
  28. package/lib/forms/controls/checkbox-group.js.map +1 -1
  29. package/lib/forms/controls/collapsible-checkbox-group.js +2 -2
  30. package/lib/forms/controls/collapsible-checkbox-group.js.map +1 -1
  31. package/lib/forms/controls/collapsible-field-group.js.map +1 -1
  32. package/lib/forms/controls/controls.js +3 -0
  33. package/lib/forms/controls/controls.js.map +1 -1
  34. package/lib/forms/controls/derived.js +12 -11
  35. package/lib/forms/controls/derived.js.map +1 -1
  36. package/lib/forms/controls/dropdown.js +25 -18
  37. package/lib/forms/controls/dropdown.js.map +1 -1
  38. package/lib/forms/controls/field-group.js +3 -3
  39. package/lib/forms/controls/field-group.js.map +1 -1
  40. package/lib/forms/controls/file.js +38 -0
  41. package/lib/forms/controls/file.js.map +1 -0
  42. package/lib/forms/controls/form-control.js +1 -0
  43. package/lib/forms/controls/form-control.js.map +1 -1
  44. package/lib/forms/controls/form-field-control.js.map +1 -1
  45. package/lib/forms/controls/multiple-files.js +137 -0
  46. package/lib/forms/controls/multiple-files.js.map +1 -0
  47. package/lib/forms/controls/number.js +34 -0
  48. package/lib/forms/controls/number.js.map +1 -0
  49. package/lib/forms/controls/simple-input.js +20 -10
  50. package/lib/forms/controls/simple-input.js.map +1 -1
  51. package/lib/forms/controls/textarea.js +13 -22
  52. package/lib/forms/controls/textarea.js.map +1 -1
  53. package/lib/forms/fields/enum-multiple.js +4 -1
  54. package/lib/forms/fields/enum-multiple.js.map +1 -1
  55. package/lib/forms/fields/field.js +8 -1
  56. package/lib/forms/fields/field.js.map +1 -1
  57. package/lib/forms/fields/file.js +58 -0
  58. package/lib/forms/fields/file.js.map +1 -0
  59. package/lib/forms/fields/files-multiple.js +18 -0
  60. package/lib/forms/fields/files-multiple.js.map +1 -0
  61. package/lib/forms/fields/multiple-files.js +19 -0
  62. package/lib/forms/fields/multiple-files.js.map +1 -0
  63. package/lib/forms/fields/number.js +6 -2
  64. package/lib/forms/fields/number.js.map +1 -1
  65. package/lib/forms/form.js +38 -21
  66. package/lib/forms/form.js.map +1 -1
  67. package/lib/forms/multiform.js +8 -8
  68. package/lib/forms/multiform.js.map +1 -1
  69. package/lib/page/list.js +9 -6
  70. package/lib/page/list.js.map +1 -1
  71. package/lib/page/mountable-with-fields.js +16 -3
  72. package/lib/page/mountable-with-fields.js.map +1 -1
  73. package/lib/page/page.js +1 -1
  74. package/lib/page/page.js.map +1 -1
  75. package/lib/sanitize.js +3 -0
  76. package/lib/sanitize.js.map +1 -1
  77. package/lib/tests/manual/multiform.js +13 -13
  78. package/lib/tests/manual/multiform.js.map +1 -1
  79. package/package.json +2 -2
  80. package/src/forms/controls/autocomplete.ts +1 -5
  81. package/src/forms/controls/checkbox-group.ts +17 -6
  82. package/src/forms/controls/collapsible-checkbox-group.ts +10 -2
  83. package/src/forms/controls/collapsible-field-group.ts +2 -4
  84. package/src/forms/controls/controls.ts +3 -0
  85. package/src/forms/controls/derived.ts +12 -11
  86. package/src/forms/controls/dropdown.ts +51 -34
  87. package/src/forms/controls/field-group.ts +6 -4
  88. package/src/forms/controls/file.ts +50 -0
  89. package/src/forms/controls/form-control.ts +5 -1
  90. package/src/forms/controls/form-field-control.ts +2 -1
  91. package/src/forms/controls/multiple-files.ts +213 -0
  92. package/src/forms/controls/number.ts +52 -0
  93. package/src/forms/controls/simple-input.ts +67 -37
  94. package/src/forms/controls/textarea.ts +25 -24
  95. package/src/forms/fields/enum-multiple.ts +3 -1
  96. package/src/forms/fields/field.ts +12 -2
  97. package/src/forms/fields/file.ts +86 -0
  98. package/src/forms/fields/multiple-files.ts +20 -0
  99. package/src/forms/fields/number.ts +17 -2
  100. package/src/forms/form.ts +84 -42
  101. package/src/forms/forms.scss +4 -1
  102. package/src/forms/multiform.ts +26 -13
  103. package/src/page/list.ts +10 -7
  104. package/src/page/mountable-with-fields.ts +26 -4
  105. package/src/page/page.ts +3 -1
  106. package/src/sanitize.ts +4 -1
  107. package/src/tests/manual/multiform.ts +19 -13
@@ -1,38 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dropdown = void 0;
4
+ const tempstream_1 = require("tempstream");
4
5
  const sanitize_1 = require("../../sanitize");
5
- const input_wrapper_1 = require("../../utils/input-wrapper");
6
- const controls_1 = require("./controls");
7
- class Dropdown extends controls_1.FormFieldControl {
6
+ const simple_input_1 = require("./simple-input");
7
+ class Dropdown extends simple_input_1.SimpleInput {
8
8
  constructor(field, options = {
9
9
  label: field.name,
10
10
  autosubmit: false,
11
11
  autocomplete: true,
12
12
  }) {
13
- super([field]);
13
+ super(field);
14
14
  this.field = field;
15
15
  this.options = options;
16
16
  }
17
- async render(ctx, data) {
17
+ async getInputAttributes(ctx, data, field_prefix, form_id) {
18
+ const original = await super.getInputAttributes(ctx, data, field_prefix, form_id);
19
+ return {
20
+ ...original,
21
+ ...Object.fromEntries([
22
+ ...(this.options.autosubmit
23
+ ? [
24
+ [
25
+ "onchange",
26
+ (original.onchange || "") +
27
+ ";this.form.submit();",
28
+ ],
29
+ ]
30
+ : []),
31
+ ]),
32
+ };
33
+ }
34
+ async renderInput(ctx, attributes_str, data) {
18
35
  const { parsed: picked_value } = await this.field.getValue(ctx, data);
19
- const name = this.field.name;
20
- return input_wrapper_1.inputWrapper([name, input_wrapper_1.getRequiredClass(this.field.required)],
21
- /* HTML */ `<label for="${name}">${this.options.label}</label
22
- ><select
23
- name="${this.field.name}"
24
- id="${name}"
25
- ${this.options.autosubmit
26
- ? `onchange='this.form.submit()'`
27
- : ""}
28
- ${!this.options.autocomplete ? `autocomplete="off"` : ""}
29
- >
30
- ${
36
+ return /* HTML */ tempstream_1.tempstream `<select ${attributes_str}>
37
+ ${
31
38
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
32
39
  Promise.resolve(this.field.generateOptions(ctx)).then((options) => Object.entries(options).map(([value, text]) => `<option value="${sanitize_1.attribute(value)}" ${(value || "") == picked_value
33
40
  ? "selected"
34
41
  : ""}>${text}</option>`))}
35
- </select>`);
42
+ </select>`;
36
43
  }
37
44
  }
38
45
  exports.Dropdown = Dropdown;
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/forms/controls/dropdown.ts"],"names":[],"mappings":";;;AACA,6CAA2C;AAC3C,6DAA2E;AAG3E,yCAA8C;AAE9C,MAAa,QAAS,SAAQ,2BAAgB;IAC7C,YACQ,KAAiC,EACjC,UAIH;QACH,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KAClB;QAED,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAXR,UAAK,GAAL,KAAK,CAA4B;QACjC,YAAO,GAAP,OAAO,CAQb;IAGF,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC;QAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,OAAO,4BAAY,CAClB,CAAC,IAAI,EAAE,gCAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,UAAU,CAAC,eAAe,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK;;aAE3C,IAAI,CAAC,KAAK,CAAC,IAAI;WACjB,IAAI;OACR,IAAI,CAAC,OAAO,CAAC,UAAU;YACxB,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,EAAE;OACH,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;;OAEtD;QACD,4EAA4E;QAC5E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CACpD,CAAC,OAAO,EAAE,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAC1B,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CACjB,kBAAkB,oBAAS,CAAC,KAAK,CAAC,KACjC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,YAAY;YAC5B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EACJ,IAAI,IAAI,WAAW,CACpB,CAEJ;cACS,CACX,CAAC;IACH,CAAC;CACD;AAlDD,4BAkDC"}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/forms/controls/dropdown.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AACzD,6CAA2C;AAG3C,iDAA6C;AAE7C,MAAa,QAAS,SAAQ,0BAA0B;IACvD,YACQ,KAAiC,EACjC,UAIH;QACH,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KAClB;QAED,KAAK,CAAC,KAAK,CAAC,CAAC;QAXN,UAAK,GAAL,KAAK,CAA4B;QACjC,YAAO,GAAP,OAAO,CAQb;IAGF,CAAC;IAED,KAAK,CAAC,kBAAkB,CACvB,GAAY,EACZ,IAAmC,EACnC,YAAoB,EACpB,OAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAC9C,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,OAAO,CACP,CAAC;QACF,OAAO;YACN,GAAG,QAAQ;YACX,GAAG,MAAM,CAAC,WAAW,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;oBAC1B,CAAC,CAAC;wBACA;4BACC,UAAU;4BACV,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;gCACxB,sBAAsB;yBACvB;qBACA;oBACH,CAAC,CAAC,EAAE,CAAC;aACN,CAAC;SACF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,GAAY,EACZ,cAAsB,EACtB,IAAmC;QAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,UAAU,CAAC,uBAAU,CAAA,WAAW,cAAc;KAClD;QACD,4EAA4E;QAC5E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CACpD,CAAC,OAAO,EAAE,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAC1B,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CACjB,kBAAkB,oBAAS,CAAC,KAAK,CAAC,KACjC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,YAAY;YAC5B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EACJ,IAAI,IAAI,WAAW,CACpB,CAEJ;YACS,CAAC;IACZ,CAAC;CACD;AAnED,4BAmEC"}
@@ -27,11 +27,11 @@ class FieldGroup extends form_field_control_1.FormFieldControl {
27
27
  getGroupLabelProps() {
28
28
  return `class="field-group__label"`;
29
29
  }
30
- async render(ctx, data, messages, field_prefix, form_id) {
30
+ async render(ctx, data, messages, field_prefix, form_id, show_field_errors) {
31
31
  const { label, classes } = this.options;
32
32
  return tempstream_1.tempstream /* HTML */ `
33
33
  <div
34
- class="field-group ${classes || ""}"
34
+ class="field-group ${(classes || []).join(" ")}"
35
35
  ${this.options.containerID
36
36
  ? `id="${this.options.containerID}"`
37
37
  : ""}
@@ -46,7 +46,7 @@ class FieldGroup extends form_field_control_1.FormFieldControl {
46
46
  </div>
47
47
  ${this.preFields()}
48
48
  <div class="field-group__fields">
49
- ${this.controls.map((control) => control.render(ctx, data, messages, field_prefix, form_id))}
49
+ ${this.controls.map((control) => control.render(ctx, data, messages, field_prefix, form_id, show_field_errors))}
50
50
  </div>
51
51
  ${this.postFields()}
52
52
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"field-group.js","sourceRoot":"","sources":["../../../src/forms/controls/field-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAGzD,6DAAwD;AAExD,MAAa,UAAW,SAAQ,qCAAgB;IAC/C,YACQ,QAAuB,EACvB,UAIH,EAAE;QAEN,KAAK,CAAC,EAAE,CAAC,CAAC;QAPH,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAIR;IAGP,CAAC;IAED,QAAQ;QACP,OAAO,EAAE,CAAC;IACX,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,SAAS;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,SAAS;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,UAAU;QACT,OAAO,EAAE,CAAC;IACX,CAAC;IAED,kBAAkB;QACjB,OAAO,4BAA4B,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC,EACnC,QAAuB,EACvB,YAAoB,EACpB,OAAe;QAEf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAExC,OAAO,uBAAU,CAAA,UAAU,CAAC;;yBAEL,OAAO,IAAI,EAAE;MAChC,IAAI,CAAC,OAAO,CAAC,WAAW;YACzB,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG;YACpC,CAAC,CAAC,EAAE;;MAEH,IAAI,CAAC,iBAAiB,EAAE;;OAEvB,IAAI,CAAC,QAAQ,EAAE;OACf,KAAK;YACN,CAAC,CAAC,UAAU,IAAI,CAAC,kBAAkB,EAAE,IAAI,KAAK,UAAU;YACxD,CAAC,CAAC,EAAE;OACH,IAAI,CAAC,SAAS,EAAE;;MAEjB,IAAI,CAAC,SAAS,EAAE;;OAEf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CACb,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,OAAO,CACP,CACD;;MAEA,IAAI,CAAC,UAAU,EAAE;;GAEpB,CAAC;IACH,CAAC;CACD;AA5ED,gCA4EC"}
1
+ {"version":3,"file":"field-group.js","sourceRoot":"","sources":["../../../src/forms/controls/field-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAGzD,6DAAwD;AAExD,MAAa,UAAW,SAAQ,qCAAgB;IAC/C,YACQ,QAAuB,EACvB,UAIH,EAAE;QAEN,KAAK,CAAC,EAAE,CAAC,CAAC;QAPH,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAIR;IAGP,CAAC;IAED,QAAQ;QACP,OAAO,EAAE,CAAC;IACX,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,SAAS;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,SAAS;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,UAAU;QACT,OAAO,EAAE,CAAC;IACX,CAAC;IAED,kBAAkB;QACjB,OAAO,4BAA4B,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC,EACnC,QAAuB,EACvB,YAAoB,EACpB,OAAe,EACf,iBAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAExC,OAAO,uBAAU,CAAA,UAAU,CAAC;;yBAEL,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;MAC5C,IAAI,CAAC,OAAO,CAAC,WAAW;YACzB,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG;YACpC,CAAC,CAAC,EAAE;;MAEH,IAAI,CAAC,iBAAiB,EAAE;;OAEvB,IAAI,CAAC,QAAQ,EAAE;OACf,KAAK;YACN,CAAC,CAAC,UAAU,IAAI,CAAC,kBAAkB,EAAE,IAAI,KAAK,UAAU;YACxD,CAAC,CAAC,EAAE;OACH,IAAI,CAAC,SAAS,EAAE;;MAEjB,IAAI,CAAC,SAAS,EAAE;;OAEf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CACb,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,iBAAiB,CACjB,CACD;;MAEA,IAAI,CAAC,UAAU,EAAE;;GAEpB,CAAC;IACH,CAAC;CACD;AA9ED,gCA8EC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.File = void 0;
4
+ const simple_input_1 = require("./simple-input");
5
+ class File extends simple_input_1.SimpleInput {
6
+ getType() {
7
+ return "file";
8
+ }
9
+ async preInput(ctx, data) {
10
+ const { parsed } = await this.field.getValue(ctx, data);
11
+ return /* HTML */ ` ${parsed.old?.filename || ""}
12
+ <input
13
+ type="hidden"
14
+ name="${this.field.name}[old][id]"
15
+ value="${parsed.old?.id || ""}"
16
+ />
17
+ <input
18
+ type="hidden"
19
+ name="${this.field.name}[old][filename]"
20
+ value="${parsed.old?.filename || ""}"
21
+ />`;
22
+ }
23
+ async getInputAttributes(ctx, data, field_prefix, form_id) {
24
+ const original = await super.getInputAttributes(ctx, data, field_prefix, form_id);
25
+ const { parsed } = await this.field.getValue(ctx, data);
26
+ return {
27
+ ...original,
28
+ name: this.field.name + "[new]",
29
+ required: original.required && !parsed.old,
30
+ value: false,
31
+ onchange: (original.onchange || "") +
32
+ ";" +
33
+ "filename = this.value.split('\\\\').slice(-1)[0]; this.parentElement.style.setProperty('--filename', '\\'Wybrany plik: ' + filename + '\\'')",
34
+ };
35
+ }
36
+ }
37
+ exports.File = File;
38
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/forms/controls/file.ts"],"names":[],"mappings":";;;AAGA,iDAA6C;AAE7C,MAAa,IAAK,SAAQ,0BAA0B;IACnD,OAAO;QACN,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,IAAmC;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE;;;YAGtC,IAAI,CAAC,KAAK,CAAC,IAAI;aACd,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE;;;;YAIrB,IAAI,CAAC,KAAK,CAAC,IAAI;aACd,MAAM,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE;MACjC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CACvB,GAAY,EACZ,IAAmC,EACnC,YAAoB,EACpB,OAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAC9C,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,OAAO,CACP,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO;YACN,GAAG,QAAQ;YACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO;YAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG;YAC1C,KAAK,EAAE,KAAK;YACZ,QAAQ,EACP,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACzB,GAAG;gBACH,8IAA8I;SAC/I,CAAC;IACH,CAAC;CACD;AA5CD,oBA4CC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FormControl = void 0;
4
4
  class FormControl {
5
+ mount(router) { }
5
6
  }
6
7
  exports.FormControl = FormControl;
7
8
  //# sourceMappingURL=form-control.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-control.js","sourceRoot":"","sources":["../../../src/forms/controls/form-control.ts"],"names":[],"mappings":";;;AAIA,MAAsB,WAAW;CAShC;AATD,kCASC"}
1
+ {"version":3,"file":"form-control.js","sourceRoot":"","sources":["../../../src/forms/controls/form-control.ts"],"names":[],"mappings":";;;AAKA,MAAsB,WAAW;IAWhC,KAAK,CAAC,MAAc,IAAG,CAAC;CACxB;AAZD,kCAYC"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-control.js","sourceRoot":"","sources":["../../../src/forms/controls/form-field-control.ts"],"names":[],"mappings":";;;AAIA,iDAA6C;AAQ7C,MAAsB,gBAAiB,SAAQ,0BAAW;IAEzD,YAAmB,MAAmB;QACrC,KAAK,EAAE,CAAC;QADU,WAAM,GAAN,MAAM,CAAa;QADtC,SAAI,GAAU,OAAO,CAAC;IAGtB,CAAC;CASD;AAbD,4CAaC"}
1
+ {"version":3,"file":"form-field-control.js","sourceRoot":"","sources":["../../../src/forms/controls/form-field-control.ts"],"names":[],"mappings":";;;AAIA,iDAA6C;AAQ7C,MAAsB,gBAAiB,SAAQ,0BAAW;IAEzD,YAAmB,MAAmB;QACrC,KAAK,EAAE,CAAC;QADU,WAAM,GAAN,MAAM,CAAa;QADtC,SAAI,GAAU,OAAO,CAAC;IAGtB,CAAC;CAUD;AAdD,4CAcC"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultipleFiles = void 0;
4
+ const sealious_1 = require("sealious");
5
+ const input_wrapper_1 = require("../../utils/input-wrapper");
6
+ const tempstream_1 = require("tempstream");
7
+ const form_field_control_1 = require("./form-field-control");
8
+ const ts_predicates_1 = require("@sealcode/ts-predicates");
9
+ class MultipleFiles extends form_field_control_1.FormFieldControl {
10
+ constructor(field, options) {
11
+ super([field]);
12
+ this.field = field;
13
+ this.options = options || {};
14
+ }
15
+ mount(router) {
16
+ router.get(this.getFrameRelativeURL(), async (ctx) => {
17
+ ctx.body = this.renderFrame(ctx, await this.renderFrameContent(ctx));
18
+ });
19
+ router.post(this.getFrameRelativeURL() + "/delete/:file_item_id", async (ctx) => {
20
+ await this.deleteFileAssociation(ctx, ctx.params.file_item_id);
21
+ ctx.body = this.renderFrame(ctx, await this.renderFrameContent(ctx));
22
+ });
23
+ router.post(this.getFrameRelativeURL() + "/add", async (ctx) => {
24
+ const file = ctx.$body.file;
25
+ if (!file || !ts_predicates_1.is(file, ts_predicates_1.predicates.object)) {
26
+ ctx.body = "Missing file";
27
+ return;
28
+ }
29
+ await this.addFileAssociation(ctx, file);
30
+ ctx.body = this.renderFrame(ctx, await this.renderFrameContent(ctx));
31
+ });
32
+ }
33
+ async deleteFileAssociation(ctx, file_item_id) {
34
+ await ctx.$app.collections[this.field.collection_field.referencing_collection].removeByID(ctx.$context, file_item_id);
35
+ }
36
+ async addFileAssociation(ctx, file) {
37
+ const file_field = this.getFileField();
38
+ if (!file_field) {
39
+ throw new Error("No file field in referencing collection");
40
+ }
41
+ const body = {
42
+ [this.field.collection_field.referencing_field]: await this.field.getItemId(ctx),
43
+ [file_field.name]: file,
44
+ };
45
+ await ctx.$app.collections[this.field.collection_field.referencing_collection].create(ctx.$context, body);
46
+ }
47
+ getFrameRelativeURL() {
48
+ return `${this.field.name}_files`;
49
+ }
50
+ getFrameID() {
51
+ // the "A" is necessary here
52
+ return `A${this.field.name}__multiple-fields-control`;
53
+ }
54
+ renderFrame(ctx, content) {
55
+ return tempstream_1.tempstream /* HTML */ `<turbo-frame
56
+ ${content ? "" : `src="./${this.getFrameRelativeURL()}"`}
57
+ id="${this.getFrameID()}"
58
+ target="_top"
59
+ >
60
+ ${content || ""}
61
+ </turbo-frame>`;
62
+ }
63
+ render(ctx, _data, _messages, field_name_prefix, form_id, validate) {
64
+ return this.renderFrame(ctx, "");
65
+ }
66
+ getReferencingCollection() {
67
+ const result = this.field.collection_field.app.collections[this.field.collection_field.referencing_collection];
68
+ return result;
69
+ }
70
+ getFileField() {
71
+ for (const [field_name, field] of Object.entries(this.getReferencingCollection().fields)) {
72
+ if (field.handles_large_data) {
73
+ return field;
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ async extractFileFromItem(item) {
79
+ const sealious_field = this.getFileField();
80
+ if (!sealious_field) {
81
+ return null;
82
+ }
83
+ return await sealious_1.File.fromID(item.collection.app, item.get(sealious_field.name).id);
84
+ }
85
+ async renderFileItem(fileItem, file) {
86
+ return /* HTML */ `<li>
87
+ <a href="${file.getURL()}" data-turbo="false">
88
+ ${file.filename || "no filename"}
89
+ </a>
90
+ <form
91
+ data-turbo-frame="${this.getFrameID()}"
92
+ action="${this.getFrameRelativeURL()}/delete/${fileItem.id}"
93
+ method="POST"
94
+ >
95
+ <input type="submit" value="X" class="file-list-action" />
96
+ </form>
97
+ </li>`;
98
+ }
99
+ async getFileItems(ctx) {
100
+ const item_id = await this.field.getItemId(ctx);
101
+ const { items: [item], } = await this.field.collection_field.collection
102
+ .list(ctx.$context)
103
+ .ids([item_id])
104
+ .attach({ [this.field.collection_field.name]: true })
105
+ .fetch();
106
+ return item
107
+ .getAttachments(this.field.collection_field.name)
108
+ .filter((f) => f);
109
+ }
110
+ async renderFrameContent(ctx) {
111
+ const files = (await Promise.all((await this.getFileItems(ctx)).map(async (item) => [
112
+ item,
113
+ await this.extractFileFromItem(item),
114
+ ]))).filter(([_, f]) => f !== null);
115
+ return input_wrapper_1.inputWrapper(["multiple-files", this.field.name], tempstream_1.tempstream /* HTML */ `
116
+ <label>${this.options.label || this.field.name}</label>
117
+ <ul>
118
+ ${files.map(([item, file]) => this.renderFileItem(item, file))}
119
+ </ul>
120
+ <form
121
+ action="${this.getFrameRelativeURL()}/add"
122
+ method="POST"
123
+ enctype="multipart/form-data"
124
+ data-turbo-frame="${this.getFrameID()}"
125
+ >
126
+ <input type="file" name="file" />
127
+ <input
128
+ type="submit"
129
+ value="${this.options.uploadLabel || "Upload"}"
130
+ class="file-list-action"
131
+ />
132
+ </form>
133
+ `);
134
+ }
135
+ }
136
+ exports.MultipleFiles = MultipleFiles;
137
+ //# sourceMappingURL=multiple-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiple-files.js","sourceRoot":"","sources":["../../../src/forms/controls/multiple-files.ts"],"names":[],"mappings":";;;AACA,uCAKkB;AAElB,6DAAyD;AACzD,2CAAyD;AAGzD,6DAAwD;AACxD,2DAAyD;AAIzD,MAAa,aAAc,SAAQ,qCAAgB;IAElD,YACQ,KAAyB,EAChC,OAA8B;QAE9B,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAoB;QAIhC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAC1B,GAAG,EACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAClC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CACV,IAAI,CAAC,mBAAmB,EAAE,GAAG,uBAAuB,EACpD,KAAK,EAAE,GAAG,EAAE,EAAE;YACb,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAC1B,GAAG,EACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAClC,CAAC;QACH,CAAC,CACD,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAE,CAAC,IAAI,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;gBAC1C,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;gBAC1B,OAAO;aACP;YACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAA+B,CAAC,CAAC;YACpE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAC1B,GAAG,EACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,GAAY,EAAE,YAAoB;QAC7D,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CACzB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,CAClD,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAY,EAAE,IAAkB;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC3D;QACD,MAAM,IAAI,GAAG;YACZ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;YAChC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI;SACvB,CAAC;QACF,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CACzB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,CAClD,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,mBAAmB;QAClB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC;IACnC,CAAC;IAED,UAAU;QACT,4BAA4B;QAC5B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,GAAY,EAAE,OAAyB;QAClD,OAAO,uBAAU,CAAA,UAAU,CAAC;KACzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,mBAAmB,EAAE,GAAG;SAClD,IAAI,CAAC,UAAU,EAAE;;;KAGrB,OAAO,IAAI,EAAE;iBACD,CAAC;IACjB,CAAC;IAED,MAAM,CACL,GAAY,EACZ,KAAoC,EACpC,SAAa,EACb,iBAAyB,EACzB,OAAe,EACf,QAAiB;QAEjB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,wBAAwB;QACvB,MAAM,MAAM,GACX,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAC1C,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,CAClD,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY;QACX,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/C,IAAI,CAAC,wBAAwB,EAAE,CAAC,MAAM,CACtC,EAAE;YACF,IAAI,KAAK,CAAC,kBAAkB,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACb;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,mBAAmB,CACxB,IAAoB;QAEpB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,EAAE;YACpB,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,MAAM,eAAY,CAAC,MAAM,CAC9B,IAAI,CAAC,UAAyB,CAAC,GAAG,EACnC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,QAAwB,EACxB,IAAkB;QAElB,OAAO,UAAU,CAAC;cACN,IAAI,CAAC,MAAM,EAAE;MACrB,IAAI,CAAC,QAAQ,IAAI,aAAa;;;wBAGZ,IAAI,CAAC,UAAU,EAAE;cAC3B,IAAI,CAAC,mBAAmB,EAAE,WAAW,QAAQ,CAAC,EAAE;;;;;QAKtD,CAAC;IACR,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAY;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,EACL,KAAK,EAAE,CAAC,IAAI,CAAC,GACb,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU;aAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;aAClB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;aACd,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;aACpD,KAAK,EAAE,CAAC;QACV,OAAO,IAAI;aACT,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;aAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAY;QACpC,MAAM,KAAK,GAAG,CACb,MAAM,OAAO,CAAC,GAAG,CAChB,CACC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAC5B,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YACrB,IAAI;YACJ,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;SACpC,CAAC,CACF,CACD,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAqC,CAAC;QAErE,OAAO,4BAAY,CAClB,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EACnC,uBAAU,CAAA,UAAU,CAAC;aACX,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;;OAE3C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAC/B;;;eAGS,IAAI,CAAC,mBAAmB,EAAE;;;yBAGhB,IAAI,CAAC,UAAU,EAAE;;;;;eAK3B,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ;;;;IAI/C,CACD,CAAC;IACH,CAAC;CACD;AAnMD,sCAmMC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Number = void 0;
4
+ const simple_input_1 = require("./simple-input");
5
+ class Number extends simple_input_1.SimpleInput {
6
+ constructor(field, options) {
7
+ super(field, options);
8
+ }
9
+ getType() {
10
+ return "number";
11
+ }
12
+ async postInput(_) {
13
+ return this.options.suffix
14
+ ? /* HTML */ `<span class="suffix">${this.options.suffix}</span>`
15
+ : "";
16
+ }
17
+ async getInputAttributes(ctx, data, field_prefix, form_id) {
18
+ const original = await super.getInputAttributes(ctx, data, field_prefix, form_id);
19
+ return {
20
+ ...original,
21
+ ...Object.fromEntries([
22
+ ...(this.field.options.min
23
+ ? [["min", this.field.options.min]]
24
+ : []),
25
+ ...(this.field.options.max
26
+ ? [["max", this.field.options.max]]
27
+ : []),
28
+ ...(this.options.step ? [["step", this.options.step]] : []),
29
+ ]),
30
+ };
31
+ }
32
+ }
33
+ exports.Number = Number;
34
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/forms/controls/number.ts"],"names":[],"mappings":";;;AAIA,iDAAiE;AAKjE,MAAa,MAAO,SAAQ,0BAA0B;IAGrD,YAAY,KAAkB,EAAE,OAAsB;QACrD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACN,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,CAAU;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;YACzB,CAAC,CAAC,UAAU,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,MAAM,SAAS;YACjE,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,kBAAkB,CACvB,GAAY,EACZ,IAAmC,EACnC,YAAoB,EACpB,OAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAC9C,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,OAAO,CACP,CAAC;QACF,OAAO;YACN,GAAG,QAAQ;YACX,GAAG,MAAM,CAAC,WAAW,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;oBACzB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnC,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;oBACzB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnC,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC;SACF,CAAC;IACH,CAAC;CACD;AA1CD,wBA0CC"}
@@ -6,10 +6,13 @@ const sanitize_1 = require("../../sanitize");
6
6
  const input_wrapper_1 = require("../../utils/input-wrapper");
7
7
  const controls_1 = require("./controls");
8
8
  class SimpleInput extends controls_1.FormFieldControl {
9
- constructor(field, options = {}) {
9
+ constructor(field, options) {
10
10
  super([field]);
11
11
  this.field = field;
12
- this.options = options;
12
+ this.options = options || {};
13
+ }
14
+ async preInput(_ctx, _data) {
15
+ return "";
13
16
  }
14
17
  getType() {
15
18
  return this.options.type || "text";
@@ -52,8 +55,13 @@ class SimpleInput extends controls_1.FormFieldControl {
52
55
  renderAttributes(attrs) {
53
56
  return Object.entries(attrs)
54
57
  .map(([key, value]) => {
55
- if (value === true) {
56
- return key;
58
+ if (typeof value === "boolean") {
59
+ if (value) {
60
+ return key;
61
+ }
62
+ else {
63
+ return "";
64
+ }
57
65
  }
58
66
  else {
59
67
  return `${key}="${sanitize_1.attribute(value)}"`;
@@ -64,19 +72,21 @@ class SimpleInput extends controls_1.FormFieldControl {
64
72
  async postInput(ctx) {
65
73
  return "";
66
74
  }
67
- async render(ctx, data, _messages, field_prefix, form_id) {
75
+ async renderInput(ctx, attributes_str, data) {
76
+ return `<input ${attributes_str} />`;
77
+ }
78
+ async render(ctx, data, _messages, field_prefix, form_id, show_errors) {
68
79
  const id = this.getID();
69
80
  const label = this.getLabel();
70
81
  const type = this.getType();
71
82
  const { parsed, raw, valid, message } = await this.field.getValue(ctx, data);
72
83
  const placeholder = this.getPlaceholder();
73
84
  return input_wrapper_1.inputWrapper([id, type, input_wrapper_1.getRequiredClass(this.field.required)], tempstream_1.tempstream /* HTML */ `
74
- <label for="${id}">${label}</label>
75
- <input
76
- ${this.renderAttributes(await this.getInputAttributes(ctx, data, field_prefix, form_id))}
77
- />
85
+ ${label ? `<label for="${id}">${label}</label>` : ""}
86
+ ${await this.preInput(ctx, data)}
87
+ ${this.renderInput(ctx, this.renderAttributes(await this.getInputAttributes(ctx, data, field_prefix, form_id)), data)}
78
88
  ${this.postInput(ctx)}
79
- ${~valid && !this.options.hide_errors
89
+ ${~valid && !this.options.hide_errors && show_errors
80
90
  ? `<div class="input__error">${message}</div>`
81
91
  : ""}
82
92
  `);
@@ -1 +1 @@
1
- {"version":3,"file":"simple-input.js","sourceRoot":"","sources":["../../../src/forms/controls/simple-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-input.js","sourceRoot":"","sources":["../../../src/forms/controls/simple-input.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Textarea = void 0;
4
- const sanitize_1 = require("../../sanitize");
5
- const input_wrapper_1 = require("../../utils/input-wrapper");
6
- const form_field_control_1 = require("./form-field-control");
7
- class Textarea extends form_field_control_1.FormFieldControl {
4
+ const simple_input_1 = require("./simple-input");
5
+ class Textarea extends simple_input_1.SimpleInput {
8
6
  constructor(field, options = {}) {
9
- super([field]);
7
+ super(field, options);
10
8
  this.field = field;
11
9
  this.options = options;
12
10
  }
13
- async render(ctx, data) {
14
- const { raw } = await this.field.getValue(ctx, data);
15
- const { name, required } = this.field;
16
- return input_wrapper_1.inputWrapper([name, input_wrapper_1.getRequiredClass(required)],
17
- /* HTML */ ` <label for="${name}"
18
- >${this.options.label != undefined
19
- ? this.options.label
20
- : name}</label
21
- >
22
- <textarea
23
- name="${name}"
24
- id="${name}"
25
- rows="${this.options.rows || 5}"
26
- cols="${this.options.cols || 33}"
27
- >
28
- ${sanitize_1.attribute((raw || "").toString())}</textarea
29
- >`);
11
+ renderDescription() {
12
+ return this.options.description
13
+ ? /* HTML */ `<div class="form-input__description">
14
+ ${this.options.description}
15
+ </div>`
16
+ : "";
17
+ }
18
+ async renderInput(ctx, attributes, data) {
19
+ const { parsed: value } = await this.field.getValue(ctx, data);
20
+ return /* HTML */ `<textarea ${attributes}>${value}</textarea>`;
30
21
  }
31
22
  }
32
23
  exports.Textarea = Textarea;
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/forms/controls/textarea.ts"],"names":[],"mappings":";;;AAEA,6CAA2C;AAC3C,6DAA2E;AAG3E,6DAAwD;AAExD,MAAa,QAAS,SAAQ,qCAAgB;IAC7C,YACQ,KAAgB,EAChB,UAA4D,EAAE;QAErE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAAuD;IAGtE,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC;QAEnC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,OAAO,4BAAY,CAClB,CAAC,IAAI,EAAE,gCAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,UAAU,CAAC,gBAAgB,IAAI;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS;YACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YACpB,CAAC,CAAC,IAAI;;;aAGC,IAAI;WACN,IAAI;aACF,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;aACtB,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;;EAElC,oBAAS,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;MAC7B,CACH,CAAC;IACH,CAAC;CACD;AA/BD,4BA+BC"}
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/forms/controls/textarea.ts"],"names":[],"mappings":";;;AAOA,iDAAiE;AAEjE,MAAa,QAAmC,SAAQ,0BAEvD;IACA,YACQ,KAAiC,EACjC,UAKH,EAAE;QAEN,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QARf,UAAK,GAAL,KAAK,CAA4B;QACjC,YAAO,GAAP,OAAO,CAKR;IAGP,CAAC;IAED,iBAAiB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;YAC9B,CAAC,CAAC,UAAU,CAAC;OACT,IAAI,CAAC,OAAO,CAAC,WAAW;YACnB;YACT,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,GAAY,EACZ,UAAkB,EAClB,IAAmC;QAEnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC,aAAa,UAAU,IAAI,KAAK,aAAa,CAAC;IACjE,CAAC;CACD;AA/BD,4BA+BC"}
@@ -22,7 +22,10 @@ class EnumMultipleField extends field_1.FormField {
22
22
  return { valid: true, message: "" };
23
23
  }
24
24
  async parse(_, value) {
25
- if (ts_predicates_1.is(value, ts_predicates_1.predicates.array(ts_predicates_1.predicates.string))) {
25
+ if (ts_predicates_1.is(value, ts_predicates_1.predicates.string)) {
26
+ return { parsable: true, parsed_value: [value], error: null };
27
+ }
28
+ else if (ts_predicates_1.is(value, ts_predicates_1.predicates.array(ts_predicates_1.predicates.string))) {
26
29
  return {
27
30
  parsable: true,
28
31
  parsed_value: value,
@@ -1 +1 @@
1
- {"version":3,"file":"enum-multiple.js","sourceRoot":"","sources":["../../../src/forms/fields/enum-multiple.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,mCAAsD;AAEtD,MAAa,iBAGX,SAAQ,iBAA6B;IACtC,YACC,QAAkB,EACX,OAAgB,EAChB,gBAA8C,CAAC,OAAO,EAAE,EAAE,CAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJT,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CACD;QAKpB,cAAS,GAAG,0BAAU,CAAC,IAAI,CAAU,IAAI,CAAC,OAAO,CAAC,CAAC;IAFnD,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,CAAU,EACV,MAAgB;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IAAI,CAAC,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;aACtD;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;aAClD;SACD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CACV,CAAU,EACV,KAAoB;QAEpB,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,KAAK,CAAC,0BAAU,CAAC,MAAM,CAAC,CAAC,EAAE;YACnD,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM;YACN,OAAO;gBACN,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,uBAAuB;aAC9B,CAAC;SACF;IACF,CAAC;IAEM,aAAa;QACnB,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AApDD,8CAoDC"}
1
+ {"version":3,"file":"enum-multiple.js","sourceRoot":"","sources":["../../../src/forms/fields/enum-multiple.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,mCAAsD;AAEtD,MAAa,iBAGX,SAAQ,iBAA6B;IACtC,YACC,QAAkB,EACX,OAAgB,EAChB,gBAA8C,CAAC,OAAO,EAAE,EAAE,CAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJT,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CACD;QAKpB,cAAS,GAAG,0BAAU,CAAC,IAAI,CAAU,IAAI,CAAC,OAAO,CAAC,CAAC;IAFnD,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,CAAU,EACV,MAAgB;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IAAI,CAAC,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;aACtD;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;aAClD;SACD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CACV,CAAU,EACV,KAAoB;QAEpB,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;YACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC9D;aAAM,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,KAAK,CAAC,0BAAU,CAAC,MAAM,CAAC,CAAC,EAAE;YAC1D,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM;YACN,OAAO;gBACN,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,uBAAuB;aAC9B,CAAC;SACF;IACF,CAAC;IAEM,aAAa;QACnB,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AAtDD,8CAsDC"}
@@ -23,7 +23,7 @@ class FormField {
23
23
  this.predicate = ts_predicates_1.predicates.unknown;
24
24
  this.mapToFilter = (value) => value;
25
25
  }
26
- init(fieldname) {
26
+ async init(fieldname) {
27
27
  this.name = fieldname;
28
28
  }
29
29
  async _validate(ctx, value) {
@@ -71,6 +71,11 @@ class FormField {
71
71
  this.mapToFilter = fn;
72
72
  return this;
73
73
  }
74
+ //return undefined here to delete a value
75
+ async getDatabaseValue(ctx, data) {
76
+ const { parsed } = await this.getValue(ctx, data);
77
+ return parsed;
78
+ }
74
79
  }
75
80
  exports.FormField = FormField;
76
81
  __exportStar(require("./simple-form-field"), exports);
@@ -84,4 +89,6 @@ __exportStar(require("./enum"), exports);
84
89
  __exportStar(require("./boolean"), exports);
85
90
  __exportStar(require("./enum-multiple"), exports);
86
91
  __exportStar(require("./existing-sealious-value"), exports);
92
+ __exportStar(require("./file"), exports);
93
+ __exportStar(require("./multiple-files"), exports);
87
94
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2DAAgE;AAEhE,qDAA0C;AA4B1C,SAAgB,aAAa,CAC5B,GAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CACxC,CAAC;AAC5B,CAAC;AAND,sCAMC;AAcD,MAAsB,SAAS;IAK9B,YAA4B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAC9C,cAAS,GAAc,0BAAU,CAAC,OAAO,CAAC;QAC1C,gBAAW,GAAqC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAFhB,CAAC;IAIlD,IAAI,CAAC,SAAiB;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,GAAY,EACZ,KAAkB;QAElB,IACC,IAAI,CAAC,QAAQ;YACb,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EACtD;YACD,OAAO;gBACN,KAAK,EAAE,KAAK;gBAEZ,OAAO,EAAE,aAAC,CACT,GAAG,EACH,mBAAmB,EACnB,EAAE,EACF,wBAAwB,CACxB;aACD,CAAC;SACF;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,GAAY,EACZ,KAAkB;QAElB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAOD,KAAK,CAAC,QAAQ,CACb,GAAY,EACZ,eAA8C;QAO9C,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9C,gCAAgC;YAChC,OAAO;gBACN,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,EAAE;aACP,CAAC;SACF;QACD,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EAAE,WAAW,GAClB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE;YACd,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,GAAG;gBACH,OAAO,EAAE,WAAW,IAAI,OAAO;aAC/B,CAAC;SACF;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAC9C,GAAG,EACH,YAA2B,CAC3B,CAAC;QACF,OAAO;YACN,MAAM,EAAE,YAA2B;YACnC,KAAK;YACL,OAAO;YACP,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,EAAoC;QAClD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAjGD,8BAiGC;AAED,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,mDAAiC;AACjC,2CAAyB;AACzB,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,kDAAgC;AAChC,4DAA0C"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.File = void 0;
4
+ const ts_predicates_1 = require("@sealcode/ts-predicates");
5
+ const sealious_1 = require("sealious");
6
+ const field_1 = require("./field");
7
+ class File extends field_1.FormField {
8
+ async parse(ctx, raw_value) {
9
+ let result;
10
+ if (raw_value instanceof sealious_1.File ||
11
+ (ts_predicates_1.is(raw_value, ts_predicates_1.predicates.object) &&
12
+ ts_predicates_1.hasShape({
13
+ filename: ts_predicates_1.predicates.string,
14
+ id: ts_predicates_1.predicates.string,
15
+ }, raw_value) &&
16
+ raw_value.id)) {
17
+ const file = await sealious_1.File.fromID(ctx.$app, raw_value.id);
18
+ result = {
19
+ parsed_value: { old: file, new: null },
20
+ error: null,
21
+ parsable: true,
22
+ };
23
+ }
24
+ else if (!ts_predicates_1.is(raw_value, ts_predicates_1.predicates.object)) {
25
+ result = {
26
+ parsed_value: null,
27
+ error: "Expected a field with old.id:string, old.filename:string and new?:File",
28
+ parsable: false,
29
+ };
30
+ }
31
+ else {
32
+ const old_file = ts_predicates_1.hasFieldOfType(raw_value, "old", ts_predicates_1.predicates.object) &&
33
+ ts_predicates_1.hasShape({ id: ts_predicates_1.predicates.string, filename: ts_predicates_1.predicates.string }, raw_value.old) &&
34
+ raw_value.old.id
35
+ ? await sealious_1.File.fromID(ctx.$app, raw_value.old.id)
36
+ : null;
37
+ const new_file = ts_predicates_1.hasField("new", raw_value) &&
38
+ raw_value.new instanceof sealious_1.File
39
+ ? raw_value.new
40
+ : null;
41
+ result = {
42
+ parsable: true,
43
+ error: null,
44
+ parsed_value: { old: old_file, new: new_file },
45
+ };
46
+ }
47
+ return result;
48
+ }
49
+ async getDatabaseValue(ctx, data) {
50
+ const { parsed } = await this.getValue(ctx, data);
51
+ return parsed.new || undefined;
52
+ }
53
+ getEmptyValue() {
54
+ return { old: null, new: null };
55
+ }
56
+ }
57
+ exports.File = File;
58
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/forms/fields/file.ts"],"names":[],"mappings":";;;AAAA,2DAMiC;AAEjC,uCAAgD;AAEhD,mCAAsD;AAOtD,MAAa,IAA+B,SAAQ,iBAGnD;IACA,KAAK,CAAC,KAAK,CACV,GAAY,EACZ,SAAwB;QAExB,IAAI,MAAM,CAAC;QACX,IACC,SAAS,YAAY,eAAY;YACjC,CAAC,kBAAE,CAAC,SAAS,EAAE,0BAAU,CAAC,MAAM,CAAC;gBAChC,wBAAQ,CACP;oBACC,QAAQ,EAAE,0BAAU,CAAC,MAAM;oBAC3B,EAAE,EAAE,0BAAU,CAAC,MAAM;iBACrB,EACD,SAAS,CACT;gBACD,SAAS,CAAC,EAAE,CAAC,EACb;YACD,MAAM,IAAI,GAAG,MAAM,eAAY,CAAC,MAAM,CACrC,GAAG,CAAC,IAAI,EACR,SAAS,CAAC,EAAY,CACtB,CAAC;YACF,MAAM,GAAG;gBACR,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;gBACtC,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAY;aACtB,CAAC;SACF;aAAM,IAAI,CAAC,kBAAE,CAAC,SAAS,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;YAC7C,MAAM,GAAG;gBACR,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,wEAAwE;gBAC/E,QAAQ,EAAE,KAAc;aACxB,CAAC;SACF;aAAM;YACN,MAAM,QAAQ,GACb,8BAAc,CAAC,SAAS,EAAE,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC;gBACnD,wBAAQ,CACP,EAAE,EAAE,EAAE,0BAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,0BAAU,CAAC,MAAM,EAAE,EACtD,SAAS,CAAC,GAAG,CACb;gBACD,SAAS,CAAC,GAAG,CAAC,EAAE;gBACf,CAAC,CAAC,MAAM,eAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,QAAQ,GACb,wBAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC1B,SAAS,CAAC,GAAG,YAAY,eAAY;gBACpC,CAAC,CAAC,SAAS,CAAC,GAAG;gBACf,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,GAAG;gBACR,QAAQ,EAAE,IAAY;gBACtB,KAAK,EAAE,IAAI;gBACX,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;aAC9C,CAAC;SACF;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAY,EAAE,IAAmC;QACvE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;IAChC,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;CACD;AApED,oBAoEC"}