@lexmata/micropdf 0.4.0

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 (170) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +985 -0
  3. package/binding.gyp +73 -0
  4. package/dist/annot.d.ts +458 -0
  5. package/dist/annot.d.ts.map +1 -0
  6. package/dist/annot.js +697 -0
  7. package/dist/annot.js.map +1 -0
  8. package/dist/archive.d.ts +128 -0
  9. package/dist/archive.d.ts.map +1 -0
  10. package/dist/archive.js +268 -0
  11. package/dist/archive.js.map +1 -0
  12. package/dist/buffer.d.ts +572 -0
  13. package/dist/buffer.d.ts.map +1 -0
  14. package/dist/buffer.js +971 -0
  15. package/dist/buffer.js.map +1 -0
  16. package/dist/colorspace.d.ts +287 -0
  17. package/dist/colorspace.d.ts.map +1 -0
  18. package/dist/colorspace.js +542 -0
  19. package/dist/colorspace.js.map +1 -0
  20. package/dist/context.d.ts +184 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +320 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/cookie.d.ts +164 -0
  25. package/dist/cookie.d.ts.map +1 -0
  26. package/dist/cookie.js +306 -0
  27. package/dist/cookie.js.map +1 -0
  28. package/dist/device.d.ts +169 -0
  29. package/dist/device.d.ts.map +1 -0
  30. package/dist/device.js +350 -0
  31. package/dist/device.js.map +1 -0
  32. package/dist/display-list.d.ts +202 -0
  33. package/dist/display-list.d.ts.map +1 -0
  34. package/dist/display-list.js +410 -0
  35. package/dist/display-list.js.map +1 -0
  36. package/dist/document.d.ts +637 -0
  37. package/dist/document.d.ts.map +1 -0
  38. package/dist/document.js +902 -0
  39. package/dist/document.js.map +1 -0
  40. package/dist/easy.d.ts +423 -0
  41. package/dist/easy.d.ts.map +1 -0
  42. package/dist/easy.js +644 -0
  43. package/dist/easy.js.map +1 -0
  44. package/dist/enhanced.d.ts +226 -0
  45. package/dist/enhanced.d.ts.map +1 -0
  46. package/dist/enhanced.js +368 -0
  47. package/dist/enhanced.js.map +1 -0
  48. package/dist/filter.d.ts +51 -0
  49. package/dist/filter.d.ts.map +1 -0
  50. package/dist/filter.js +381 -0
  51. package/dist/filter.js.map +1 -0
  52. package/dist/font.d.ts +222 -0
  53. package/dist/font.d.ts.map +1 -0
  54. package/dist/font.js +381 -0
  55. package/dist/font.js.map +1 -0
  56. package/dist/form.d.ts +214 -0
  57. package/dist/form.d.ts.map +1 -0
  58. package/dist/form.js +497 -0
  59. package/dist/form.js.map +1 -0
  60. package/dist/geometry.d.ts +469 -0
  61. package/dist/geometry.d.ts.map +1 -0
  62. package/dist/geometry.js +780 -0
  63. package/dist/geometry.js.map +1 -0
  64. package/dist/image.d.ts +172 -0
  65. package/dist/image.d.ts.map +1 -0
  66. package/dist/image.js +348 -0
  67. package/dist/image.js.map +1 -0
  68. package/dist/index.d.ts +171 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +339 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/link.d.ts +168 -0
  73. package/dist/link.d.ts.map +1 -0
  74. package/dist/link.js +343 -0
  75. package/dist/link.js.map +1 -0
  76. package/dist/micropdf.d.ts +40 -0
  77. package/dist/micropdf.d.ts.map +1 -0
  78. package/dist/micropdf.js +45 -0
  79. package/dist/micropdf.js.map +1 -0
  80. package/dist/nanopdf.d.ts +40 -0
  81. package/dist/nanopdf.d.ts.map +1 -0
  82. package/dist/nanopdf.js +45 -0
  83. package/dist/nanopdf.js.map +1 -0
  84. package/dist/native.d.ts +242 -0
  85. package/dist/native.d.ts.map +1 -0
  86. package/dist/native.js +509 -0
  87. package/dist/native.js.map +1 -0
  88. package/dist/output.d.ts +166 -0
  89. package/dist/output.d.ts.map +1 -0
  90. package/dist/output.js +365 -0
  91. package/dist/output.js.map +1 -0
  92. package/dist/path.d.ts +420 -0
  93. package/dist/path.d.ts.map +1 -0
  94. package/dist/path.js +687 -0
  95. package/dist/path.js.map +1 -0
  96. package/dist/pdf/object.d.ts +489 -0
  97. package/dist/pdf/object.d.ts.map +1 -0
  98. package/dist/pdf/object.js +1045 -0
  99. package/dist/pdf/object.js.map +1 -0
  100. package/dist/pixmap.d.ts +315 -0
  101. package/dist/pixmap.d.ts.map +1 -0
  102. package/dist/pixmap.js +590 -0
  103. package/dist/pixmap.js.map +1 -0
  104. package/dist/profiler.d.ts +159 -0
  105. package/dist/profiler.d.ts.map +1 -0
  106. package/dist/profiler.js +380 -0
  107. package/dist/profiler.js.map +1 -0
  108. package/dist/render-options.d.ts +227 -0
  109. package/dist/render-options.d.ts.map +1 -0
  110. package/dist/render-options.js +130 -0
  111. package/dist/render-options.js.map +1 -0
  112. package/dist/resource-tracking.d.ts +332 -0
  113. package/dist/resource-tracking.d.ts.map +1 -0
  114. package/dist/resource-tracking.js +653 -0
  115. package/dist/resource-tracking.js.map +1 -0
  116. package/dist/simple.d.ts +276 -0
  117. package/dist/simple.d.ts.map +1 -0
  118. package/dist/simple.js +343 -0
  119. package/dist/simple.js.map +1 -0
  120. package/dist/stext.d.ts +290 -0
  121. package/dist/stext.d.ts.map +1 -0
  122. package/dist/stext.js +312 -0
  123. package/dist/stext.js.map +1 -0
  124. package/dist/stream.d.ts +174 -0
  125. package/dist/stream.d.ts.map +1 -0
  126. package/dist/stream.js +476 -0
  127. package/dist/stream.js.map +1 -0
  128. package/dist/text.d.ts +337 -0
  129. package/dist/text.d.ts.map +1 -0
  130. package/dist/text.js +454 -0
  131. package/dist/text.js.map +1 -0
  132. package/dist/typed-arrays.d.ts +127 -0
  133. package/dist/typed-arrays.d.ts.map +1 -0
  134. package/dist/typed-arrays.js +410 -0
  135. package/dist/typed-arrays.js.map +1 -0
  136. package/dist/types.d.ts +358 -0
  137. package/dist/types.d.ts.map +1 -0
  138. package/dist/types.js +216 -0
  139. package/dist/types.js.map +1 -0
  140. package/native/annot.cc +557 -0
  141. package/native/buffer.cc +204 -0
  142. package/native/colorspace.cc +166 -0
  143. package/native/context.cc +84 -0
  144. package/native/cookie.cc +179 -0
  145. package/native/device.cc +179 -0
  146. package/native/display_list.cc +179 -0
  147. package/native/document.cc +268 -0
  148. package/native/enhanced.cc +70 -0
  149. package/native/font.cc +282 -0
  150. package/native/form.cc +523 -0
  151. package/native/geometry.cc +255 -0
  152. package/native/image.cc +216 -0
  153. package/native/include/micropdf/enhanced.h +38 -0
  154. package/native/include/micropdf/types.h +36 -0
  155. package/native/include/micropdf.h +106 -0
  156. package/native/include/mupdf-ffi.h +39 -0
  157. package/native/include/mupdf.h +11 -0
  158. package/native/include/mupdf_minimal.h +381 -0
  159. package/native/lib/linux-x64/libmicropdf.a +0 -0
  160. package/native/link.cc +234 -0
  161. package/native/micropdf.cc +71 -0
  162. package/native/output.cc +229 -0
  163. package/native/page.cc +572 -0
  164. package/native/path.cc +259 -0
  165. package/native/pixmap.cc +240 -0
  166. package/native/stext.cc +610 -0
  167. package/native/stream.cc +239 -0
  168. package/package.json +120 -0
  169. package/scripts/build-from-rust.js +97 -0
  170. package/scripts/install.js +184 -0
package/dist/form.js ADDED
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Form - PDF form/AcroForm handling
3
+ *
4
+ * This module provides 100% API compatibility with MuPDF's form operations.
5
+ * Supports text fields, checkboxes, radio buttons, combo boxes, and signatures.
6
+ */
7
+ import { Rect } from './geometry.js';
8
+ /**
9
+ * PDF form field types
10
+ */
11
+ export var FieldType;
12
+ (function (FieldType) {
13
+ FieldType[FieldType["Unknown"] = 0] = "Unknown";
14
+ FieldType[FieldType["PushButton"] = 1] = "PushButton";
15
+ FieldType[FieldType["CheckBox"] = 2] = "CheckBox";
16
+ FieldType[FieldType["RadioButton"] = 3] = "RadioButton";
17
+ FieldType[FieldType["Text"] = 4] = "Text";
18
+ FieldType[FieldType["Choice"] = 5] = "Choice";
19
+ FieldType[FieldType["Signature"] = 6] = "Signature";
20
+ })(FieldType || (FieldType = {}));
21
+ /**
22
+ * Field alignment values
23
+ */
24
+ export var FieldAlignment;
25
+ (function (FieldAlignment) {
26
+ FieldAlignment[FieldAlignment["Left"] = 0] = "Left";
27
+ FieldAlignment[FieldAlignment["Center"] = 1] = "Center";
28
+ FieldAlignment[FieldAlignment["Right"] = 2] = "Right";
29
+ })(FieldAlignment || (FieldAlignment = {}));
30
+ /**
31
+ * Field flags (bit flags)
32
+ */
33
+ export var FieldFlags;
34
+ (function (FieldFlags) {
35
+ FieldFlags[FieldFlags["ReadOnly"] = 1] = "ReadOnly";
36
+ FieldFlags[FieldFlags["Required"] = 2] = "Required";
37
+ FieldFlags[FieldFlags["NoExport"] = 4] = "NoExport";
38
+ FieldFlags[FieldFlags["Multiline"] = 4096] = "Multiline";
39
+ FieldFlags[FieldFlags["Password"] = 8192] = "Password";
40
+ FieldFlags[FieldFlags["NoToggleToOff"] = 16384] = "NoToggleToOff";
41
+ FieldFlags[FieldFlags["Radio"] = 32768] = "Radio";
42
+ FieldFlags[FieldFlags["Pushbutton"] = 65536] = "Pushbutton";
43
+ FieldFlags[FieldFlags["Combo"] = 131072] = "Combo";
44
+ FieldFlags[FieldFlags["Edit"] = 262144] = "Edit";
45
+ FieldFlags[FieldFlags["Sort"] = 524288] = "Sort";
46
+ FieldFlags[FieldFlags["FileSelect"] = 1048576] = "FileSelect";
47
+ FieldFlags[FieldFlags["MultiSelect"] = 2097152] = "MultiSelect";
48
+ FieldFlags[FieldFlags["DoNotSpellCheck"] = 4194304] = "DoNotSpellCheck";
49
+ FieldFlags[FieldFlags["DoNotScroll"] = 8388608] = "DoNotScroll";
50
+ FieldFlags[FieldFlags["Comb"] = 16777216] = "Comb";
51
+ FieldFlags[FieldFlags["RadiosInUnison"] = 33554432] = "RadiosInUnison";
52
+ FieldFlags[FieldFlags["CommitOnSelChange"] = 67108864] = "CommitOnSelChange";
53
+ })(FieldFlags || (FieldFlags = {}));
54
+ /**
55
+ * A form field (widget annotation)
56
+ */
57
+ export class FormField {
58
+ _name;
59
+ _type;
60
+ _value = '';
61
+ _defaultValue = '';
62
+ _rect;
63
+ _flags = 0;
64
+ _maxLen = 0;
65
+ _choices = [];
66
+ _selectedIndex = -1;
67
+ _borderWidth = 1;
68
+ _borderColor = [0, 0, 0];
69
+ _bgColor = [1, 1, 1];
70
+ _fontSize = 0; // 0 = auto
71
+ _alignment = FieldAlignment.Left;
72
+ _refCount = 1;
73
+ _valid = true;
74
+ constructor(name, type, rect) {
75
+ this._name = name;
76
+ this._type = type;
77
+ this._rect = Rect.from(rect);
78
+ }
79
+ // ============================================================================
80
+ // Reference Counting
81
+ // ============================================================================
82
+ keep() {
83
+ this._refCount++;
84
+ return this;
85
+ }
86
+ drop() {
87
+ if (this._refCount > 0) {
88
+ this._refCount--;
89
+ }
90
+ }
91
+ /**
92
+ * Clone this field
93
+ */
94
+ clone() {
95
+ const cloned = new FormField(this._name, this._type, this._rect);
96
+ cloned._value = this._value;
97
+ cloned._defaultValue = this._defaultValue;
98
+ cloned._flags = this._flags;
99
+ cloned._maxLen = this._maxLen;
100
+ cloned._choices = [...this._choices];
101
+ cloned._selectedIndex = this._selectedIndex;
102
+ cloned._borderWidth = this._borderWidth;
103
+ cloned._borderColor = [...this._borderColor];
104
+ cloned._bgColor = [...this._bgColor];
105
+ cloned._fontSize = this._fontSize;
106
+ cloned._alignment = this._alignment;
107
+ return cloned;
108
+ }
109
+ // ============================================================================
110
+ // Basic Properties
111
+ // ============================================================================
112
+ get name() {
113
+ return this._name;
114
+ }
115
+ get type() {
116
+ return this._type;
117
+ }
118
+ get rect() {
119
+ return this._rect;
120
+ }
121
+ set rect(r) {
122
+ this._rect = Rect.from(r);
123
+ }
124
+ // ============================================================================
125
+ // Value
126
+ // ============================================================================
127
+ get value() {
128
+ return this._value;
129
+ }
130
+ set value(val) {
131
+ this._value = val;
132
+ }
133
+ get defaultValue() {
134
+ return this._defaultValue;
135
+ }
136
+ set defaultValue(val) {
137
+ this._defaultValue = val;
138
+ }
139
+ // ============================================================================
140
+ // Flags
141
+ // ============================================================================
142
+ get flags() {
143
+ return this._flags;
144
+ }
145
+ set flags(f) {
146
+ this._flags = f;
147
+ }
148
+ hasFlag(flag) {
149
+ return (this._flags & flag) !== 0;
150
+ }
151
+ setFlag(flag, value) {
152
+ if (value) {
153
+ this._flags |= flag;
154
+ }
155
+ else {
156
+ this._flags &= ~flag;
157
+ }
158
+ }
159
+ get isReadOnly() {
160
+ return this.hasFlag(FieldFlags.ReadOnly);
161
+ }
162
+ set isReadOnly(value) {
163
+ this.setFlag(FieldFlags.ReadOnly, value);
164
+ }
165
+ get isRequired() {
166
+ return this.hasFlag(FieldFlags.Required);
167
+ }
168
+ set isRequired(value) {
169
+ this.setFlag(FieldFlags.Required, value);
170
+ }
171
+ // ============================================================================
172
+ // Text Field Properties
173
+ // ============================================================================
174
+ get isMultiline() {
175
+ return this.hasFlag(FieldFlags.Multiline);
176
+ }
177
+ set isMultiline(value) {
178
+ this.setFlag(FieldFlags.Multiline, value);
179
+ }
180
+ get isPassword() {
181
+ return this.hasFlag(FieldFlags.Password);
182
+ }
183
+ set isPassword(value) {
184
+ this.setFlag(FieldFlags.Password, value);
185
+ }
186
+ get maxLength() {
187
+ return this._maxLen;
188
+ }
189
+ set maxLength(len) {
190
+ this._maxLen = Math.max(0, len);
191
+ }
192
+ get textFormat() {
193
+ // Return format string (e.g., for date/number formatting)
194
+ return '';
195
+ }
196
+ // ============================================================================
197
+ // Checkbox Properties
198
+ // ============================================================================
199
+ get isChecked() {
200
+ return this._value === 'Yes' || this._value === 'On';
201
+ }
202
+ set isChecked(checked) {
203
+ this._value = checked ? 'Yes' : 'Off';
204
+ }
205
+ // ============================================================================
206
+ // Choice Field Properties
207
+ // ============================================================================
208
+ get isCombo() {
209
+ return this.hasFlag(FieldFlags.Combo);
210
+ }
211
+ get isEdit() {
212
+ return this.hasFlag(FieldFlags.Edit);
213
+ }
214
+ get isMultiSelect() {
215
+ return this.hasFlag(FieldFlags.MultiSelect);
216
+ }
217
+ get choiceCount() {
218
+ return this._choices.length;
219
+ }
220
+ getChoiceLabel(index) {
221
+ return this._choices[index]?.label ?? '';
222
+ }
223
+ getChoiceValue(index) {
224
+ return this._choices[index]?.value ?? '';
225
+ }
226
+ addChoice(label, value) {
227
+ this._choices.push({
228
+ label,
229
+ value: value ?? label
230
+ });
231
+ }
232
+ removeChoice(index) {
233
+ if (index >= 0 && index < this._choices.length) {
234
+ this._choices.splice(index, 1);
235
+ if (this._selectedIndex === index) {
236
+ this._selectedIndex = -1;
237
+ }
238
+ else if (this._selectedIndex > index) {
239
+ this._selectedIndex--;
240
+ }
241
+ }
242
+ }
243
+ get selectedIndex() {
244
+ return this._selectedIndex;
245
+ }
246
+ set selectedIndex(index) {
247
+ if (index >= -1 && index < this._choices.length) {
248
+ this._selectedIndex = index;
249
+ if (index >= 0) {
250
+ this._value = this._choices[index].value;
251
+ }
252
+ }
253
+ }
254
+ clearSelection() {
255
+ this._selectedIndex = -1;
256
+ this._value = '';
257
+ }
258
+ // ============================================================================
259
+ // Signature Field Properties
260
+ // ============================================================================
261
+ get isSigned() {
262
+ return this._type === FieldType.Signature && this._value !== '';
263
+ }
264
+ // ============================================================================
265
+ // Appearance Properties
266
+ // ============================================================================
267
+ get borderWidth() {
268
+ return this._borderWidth;
269
+ }
270
+ set borderWidth(width) {
271
+ this._borderWidth = Math.max(0, width);
272
+ }
273
+ get borderColor() {
274
+ return [...this._borderColor];
275
+ }
276
+ set borderColor(color) {
277
+ if (color.length === 3) {
278
+ this._borderColor = [...color];
279
+ }
280
+ }
281
+ get backgroundColor() {
282
+ return [...this._bgColor];
283
+ }
284
+ set backgroundColor(color) {
285
+ if (color.length === 3) {
286
+ this._bgColor = [...color];
287
+ }
288
+ }
289
+ get fontSize() {
290
+ return this._fontSize;
291
+ }
292
+ set fontSize(size) {
293
+ this._fontSize = Math.max(0, size);
294
+ }
295
+ get alignment() {
296
+ return this._alignment;
297
+ }
298
+ set alignment(align) {
299
+ this._alignment = align;
300
+ }
301
+ // ============================================================================
302
+ // Validation
303
+ // ============================================================================
304
+ isValid() {
305
+ return this._valid;
306
+ }
307
+ validate() {
308
+ // Validate field based on its type and requirements
309
+ if (this.isRequired && !this._value) {
310
+ this._valid = false;
311
+ return false;
312
+ }
313
+ if (this._type === FieldType.Text && this._maxLen > 0) {
314
+ if (this._value.length > this._maxLen) {
315
+ this._valid = false;
316
+ return false;
317
+ }
318
+ }
319
+ this._valid = true;
320
+ return true;
321
+ }
322
+ }
323
+ /**
324
+ * PDF interactive form (AcroForm)
325
+ */
326
+ export class Form {
327
+ _fields = [];
328
+ _fieldMap = new Map();
329
+ _refCount = 1;
330
+ constructor() { }
331
+ /**
332
+ * Create a form from a PDF document
333
+ */
334
+ static create() {
335
+ return new Form();
336
+ }
337
+ // ============================================================================
338
+ // Reference Counting
339
+ // ============================================================================
340
+ keep() {
341
+ this._refCount++;
342
+ return this;
343
+ }
344
+ drop() {
345
+ if (this._refCount > 0) {
346
+ this._refCount--;
347
+ }
348
+ }
349
+ // ============================================================================
350
+ // Field Creation
351
+ // ============================================================================
352
+ /**
353
+ * Create a text field
354
+ */
355
+ createTextField(name, rect) {
356
+ const field = new FormField(name, FieldType.Text, rect);
357
+ this.addField(field);
358
+ return field;
359
+ }
360
+ /**
361
+ * Create a checkbox
362
+ */
363
+ createCheckBox(name, rect) {
364
+ const field = new FormField(name, FieldType.CheckBox, rect);
365
+ this.addField(field);
366
+ return field;
367
+ }
368
+ /**
369
+ * Create a push button
370
+ */
371
+ createPushButton(name, rect) {
372
+ const field = new FormField(name, FieldType.PushButton, rect);
373
+ field.setFlag(FieldFlags.Pushbutton, true);
374
+ this.addField(field);
375
+ return field;
376
+ }
377
+ /**
378
+ * Create a combo box
379
+ */
380
+ createComboBox(name, rect) {
381
+ const field = new FormField(name, FieldType.Choice, rect);
382
+ field.setFlag(FieldFlags.Combo, true);
383
+ this.addField(field);
384
+ return field;
385
+ }
386
+ /**
387
+ * Create a signature field
388
+ */
389
+ createSignatureField(name, rect) {
390
+ const field = new FormField(name, FieldType.Signature, rect);
391
+ this.addField(field);
392
+ return field;
393
+ }
394
+ // ============================================================================
395
+ // Field Management
396
+ // ============================================================================
397
+ /**
398
+ * Add a field to the form
399
+ */
400
+ addField(field) {
401
+ this._fields.push(field);
402
+ this._fieldMap.set(field.name, field);
403
+ }
404
+ /**
405
+ * Get field count
406
+ */
407
+ get fieldCount() {
408
+ return this._fields.length;
409
+ }
410
+ /**
411
+ * Look up a field by name
412
+ */
413
+ lookupField(name) {
414
+ return this._fieldMap.get(name);
415
+ }
416
+ /**
417
+ * Get field by index
418
+ */
419
+ getField(index) {
420
+ return this._fields[index];
421
+ }
422
+ /**
423
+ * Get first widget (field)
424
+ */
425
+ firstWidget() {
426
+ return this._fields[0];
427
+ }
428
+ /**
429
+ * Get next widget after a given field
430
+ */
431
+ nextWidget(current) {
432
+ const index = this._fields.indexOf(current);
433
+ if (index >= 0 && index < this._fields.length - 1) {
434
+ return this._fields[index + 1];
435
+ }
436
+ return undefined;
437
+ }
438
+ /**
439
+ * Delete a field
440
+ */
441
+ deleteField(nameOrField) {
442
+ const field = typeof nameOrField === 'string' ? this._fieldMap.get(nameOrField) : nameOrField;
443
+ if (!field)
444
+ return false;
445
+ const index = this._fields.indexOf(field);
446
+ if (index >= 0) {
447
+ this._fields.splice(index, 1);
448
+ this._fieldMap.delete(field.name);
449
+ return true;
450
+ }
451
+ return false;
452
+ }
453
+ // ============================================================================
454
+ // Form Operations
455
+ // ============================================================================
456
+ /**
457
+ * Reset all fields to their default values
458
+ */
459
+ reset() {
460
+ for (const field of this._fields) {
461
+ field.value = field.defaultValue;
462
+ if (field.type === FieldType.CheckBox) {
463
+ field.isChecked = false;
464
+ }
465
+ if (field.type === FieldType.Choice) {
466
+ field.clearSelection();
467
+ }
468
+ }
469
+ }
470
+ /**
471
+ * Validate all fields
472
+ */
473
+ validate() {
474
+ let allValid = true;
475
+ for (const field of this._fields) {
476
+ if (!field.validate()) {
477
+ allValid = false;
478
+ }
479
+ }
480
+ return allValid;
481
+ }
482
+ /**
483
+ * Get all fields
484
+ */
485
+ getAllFields() {
486
+ return [...this._fields];
487
+ }
488
+ /**
489
+ * Iterate over all fields
490
+ */
491
+ *[Symbol.iterator]() {
492
+ for (const field of this._fields) {
493
+ yield field;
494
+ }
495
+ }
496
+ }
497
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}