pdf-oxide 0.3.24 → 0.3.29

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 (271) hide show
  1. package/lib/builders/annotation-builder.d.ts +199 -0
  2. package/lib/builders/annotation-builder.d.ts.map +1 -0
  3. package/lib/builders/annotation-builder.js +318 -0
  4. package/lib/builders/annotation-builder.js.map +1 -0
  5. package/lib/builders/conversion-options-builder.d.ts +107 -0
  6. package/lib/builders/conversion-options-builder.d.ts.map +1 -0
  7. package/lib/builders/conversion-options-builder.js +215 -0
  8. package/lib/builders/conversion-options-builder.js.map +1 -0
  9. package/{src/builders/index.ts → lib/builders/index.d.ts} +1 -1
  10. package/lib/builders/index.d.ts.map +1 -0
  11. package/lib/builders/index.js +12 -0
  12. package/lib/builders/index.js.map +1 -0
  13. package/lib/builders/metadata-builder.d.ts +202 -0
  14. package/lib/builders/metadata-builder.d.ts.map +1 -0
  15. package/lib/builders/metadata-builder.js +286 -0
  16. package/lib/builders/metadata-builder.js.map +1 -0
  17. package/lib/builders/pdf-builder.d.ts +215 -0
  18. package/lib/builders/pdf-builder.d.ts.map +1 -0
  19. package/lib/builders/pdf-builder.js +339 -0
  20. package/lib/builders/pdf-builder.js.map +1 -0
  21. package/lib/builders/search-options-builder.d.ts +74 -0
  22. package/lib/builders/search-options-builder.d.ts.map +1 -0
  23. package/lib/builders/search-options-builder.js +130 -0
  24. package/lib/builders/search-options-builder.js.map +1 -0
  25. package/lib/document-editor-manager.d.ts +140 -0
  26. package/lib/document-editor-manager.d.ts.map +1 -0
  27. package/lib/document-editor-manager.js +257 -0
  28. package/lib/document-editor-manager.js.map +1 -0
  29. package/lib/errors.d.ts +383 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +1117 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/form-field-manager.d.ts +300 -0
  34. package/lib/form-field-manager.d.ts.map +1 -0
  35. package/lib/form-field-manager.js +567 -0
  36. package/lib/form-field-manager.js.map +1 -0
  37. package/lib/hybrid-ml-manager.d.ts +143 -0
  38. package/lib/hybrid-ml-manager.d.ts.map +1 -0
  39. package/lib/hybrid-ml-manager.js +209 -0
  40. package/lib/hybrid-ml-manager.js.map +1 -0
  41. package/lib/index.d.ts +23 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +280 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/managers/accessibility-manager.d.ts +149 -0
  46. package/lib/managers/accessibility-manager.d.ts.map +1 -0
  47. package/lib/managers/accessibility-manager.js +224 -0
  48. package/lib/managers/accessibility-manager.js.map +1 -0
  49. package/lib/managers/annotation-manager.d.ts +220 -0
  50. package/lib/managers/annotation-manager.d.ts.map +1 -0
  51. package/lib/managers/annotation-manager.js +360 -0
  52. package/lib/managers/annotation-manager.js.map +1 -0
  53. package/lib/managers/barcode-manager.d.ts +80 -0
  54. package/lib/managers/barcode-manager.d.ts.map +1 -0
  55. package/lib/managers/barcode-manager.js +226 -0
  56. package/lib/managers/barcode-manager.js.map +1 -0
  57. package/lib/managers/batch-manager.d.ts +186 -0
  58. package/lib/managers/batch-manager.d.ts.map +1 -0
  59. package/lib/managers/batch-manager.js +389 -0
  60. package/lib/managers/batch-manager.js.map +1 -0
  61. package/lib/managers/cache-manager.d.ts +182 -0
  62. package/lib/managers/cache-manager.d.ts.map +1 -0
  63. package/lib/managers/cache-manager.js +387 -0
  64. package/lib/managers/cache-manager.js.map +1 -0
  65. package/lib/managers/compliance-manager.d.ts +104 -0
  66. package/lib/managers/compliance-manager.d.ts.map +1 -0
  67. package/lib/managers/compliance-manager.js +415 -0
  68. package/lib/managers/compliance-manager.js.map +1 -0
  69. package/lib/managers/content-manager.d.ts +121 -0
  70. package/lib/managers/content-manager.d.ts.map +1 -0
  71. package/lib/managers/content-manager.js +295 -0
  72. package/lib/managers/content-manager.js.map +1 -0
  73. package/lib/managers/document-utility-manager.d.ts +370 -0
  74. package/lib/managers/document-utility-manager.d.ts.map +1 -0
  75. package/lib/managers/document-utility-manager.js +731 -0
  76. package/lib/managers/document-utility-manager.js.map +1 -0
  77. package/lib/managers/dom-pdf-creator.d.ts +105 -0
  78. package/lib/managers/dom-pdf-creator.d.ts.map +1 -0
  79. package/lib/managers/dom-pdf-creator.js +300 -0
  80. package/lib/managers/dom-pdf-creator.js.map +1 -0
  81. package/lib/managers/editing-manager.d.ts +249 -0
  82. package/lib/managers/editing-manager.d.ts.map +1 -0
  83. package/lib/managers/editing-manager.js +388 -0
  84. package/lib/managers/editing-manager.js.map +1 -0
  85. package/lib/managers/enterprise-manager.d.ts +193 -0
  86. package/lib/managers/enterprise-manager.d.ts.map +1 -0
  87. package/lib/managers/enterprise-manager.js +305 -0
  88. package/lib/managers/enterprise-manager.js.map +1 -0
  89. package/lib/managers/extended-managers.d.ts +123 -0
  90. package/lib/managers/extended-managers.d.ts.map +1 -0
  91. package/lib/managers/extended-managers.js +658 -0
  92. package/lib/managers/extended-managers.js.map +1 -0
  93. package/lib/managers/extraction-manager.d.ts +247 -0
  94. package/lib/managers/extraction-manager.d.ts.map +1 -0
  95. package/lib/managers/extraction-manager.js +478 -0
  96. package/lib/managers/extraction-manager.js.map +1 -0
  97. package/lib/managers/final-utilities.d.ts +128 -0
  98. package/lib/managers/final-utilities.d.ts.map +1 -0
  99. package/lib/managers/final-utilities.js +653 -0
  100. package/lib/managers/final-utilities.js.map +1 -0
  101. package/lib/managers/hybrid-ml-advanced.d.ts +137 -0
  102. package/lib/managers/hybrid-ml-advanced.d.ts.map +1 -0
  103. package/lib/managers/hybrid-ml-advanced.js +707 -0
  104. package/lib/managers/hybrid-ml-advanced.js.map +1 -0
  105. package/lib/managers/index.d.ts +65 -0
  106. package/lib/managers/index.d.ts.map +1 -0
  107. package/lib/managers/index.js +70 -0
  108. package/lib/managers/index.js.map +1 -0
  109. package/lib/managers/layer-manager.d.ts +204 -0
  110. package/lib/managers/layer-manager.d.ts.map +1 -0
  111. package/lib/managers/layer-manager.js +403 -0
  112. package/lib/managers/layer-manager.js.map +1 -0
  113. package/lib/managers/metadata-manager.d.ts +149 -0
  114. package/lib/managers/metadata-manager.d.ts.map +1 -0
  115. package/lib/managers/metadata-manager.js +281 -0
  116. package/lib/managers/metadata-manager.js.map +1 -0
  117. package/lib/managers/ocr-manager.d.ts +195 -0
  118. package/lib/managers/ocr-manager.d.ts.map +1 -0
  119. package/lib/managers/ocr-manager.js +583 -0
  120. package/lib/managers/ocr-manager.js.map +1 -0
  121. package/lib/managers/optimization-manager.d.ts +103 -0
  122. package/lib/managers/optimization-manager.d.ts.map +1 -0
  123. package/lib/managers/optimization-manager.js +194 -0
  124. package/lib/managers/optimization-manager.js.map +1 -0
  125. package/lib/managers/outline-manager.d.ts +102 -0
  126. package/lib/managers/outline-manager.d.ts.map +1 -0
  127. package/lib/managers/outline-manager.js +170 -0
  128. package/lib/managers/outline-manager.js.map +1 -0
  129. package/lib/managers/page-manager.d.ts +143 -0
  130. package/lib/managers/page-manager.d.ts.map +1 -0
  131. package/lib/managers/page-manager.js +237 -0
  132. package/lib/managers/page-manager.js.map +1 -0
  133. package/lib/managers/pattern-detection.d.ts +170 -0
  134. package/lib/managers/pattern-detection.d.ts.map +1 -0
  135. package/lib/managers/pattern-detection.js +325 -0
  136. package/lib/managers/pattern-detection.js.map +1 -0
  137. package/lib/managers/rendering-manager.d.ts +354 -0
  138. package/lib/managers/rendering-manager.d.ts.map +1 -0
  139. package/lib/managers/rendering-manager.js +680 -0
  140. package/lib/managers/rendering-manager.js.map +1 -0
  141. package/lib/managers/search-manager.d.ts +236 -0
  142. package/lib/managers/search-manager.d.ts.map +1 -0
  143. package/lib/managers/search-manager.js +330 -0
  144. package/lib/managers/search-manager.js.map +1 -0
  145. package/lib/managers/security-manager.d.ts +162 -0
  146. package/lib/managers/security-manager.d.ts.map +1 -0
  147. package/lib/managers/security-manager.js +293 -0
  148. package/lib/managers/security-manager.js.map +1 -0
  149. package/lib/managers/signature-manager.d.ts +725 -0
  150. package/lib/managers/signature-manager.d.ts.map +1 -0
  151. package/lib/managers/signature-manager.js +1365 -0
  152. package/lib/managers/signature-manager.js.map +1 -0
  153. package/lib/managers/streams.d.ts +263 -0
  154. package/lib/managers/streams.d.ts.map +1 -0
  155. package/lib/managers/streams.js +472 -0
  156. package/lib/managers/streams.js.map +1 -0
  157. package/lib/managers/xfa-manager.d.ts +228 -0
  158. package/lib/managers/xfa-manager.d.ts.map +1 -0
  159. package/lib/managers/xfa-manager.js +490 -0
  160. package/lib/managers/xfa-manager.js.map +1 -0
  161. package/lib/pdf-creator-manager.d.ts +201 -0
  162. package/lib/pdf-creator-manager.d.ts.map +1 -0
  163. package/lib/pdf-creator-manager.js +379 -0
  164. package/lib/pdf-creator-manager.js.map +1 -0
  165. package/lib/properties.d.ts +80 -0
  166. package/lib/properties.d.ts.map +1 -0
  167. package/lib/properties.js +455 -0
  168. package/lib/properties.js.map +1 -0
  169. package/lib/result-accessors-manager.d.ts +347 -0
  170. package/lib/result-accessors-manager.d.ts.map +1 -0
  171. package/lib/result-accessors-manager.js +705 -0
  172. package/lib/result-accessors-manager.js.map +1 -0
  173. package/lib/thumbnail-manager.d.ts +122 -0
  174. package/lib/thumbnail-manager.d.ts.map +1 -0
  175. package/lib/thumbnail-manager.js +206 -0
  176. package/lib/thumbnail-manager.js.map +1 -0
  177. package/lib/types/common.d.ts +93 -0
  178. package/lib/types/common.d.ts.map +1 -0
  179. package/lib/types/common.js +5 -0
  180. package/lib/types/common.js.map +1 -0
  181. package/lib/types/document-types.d.ts +353 -0
  182. package/lib/types/document-types.d.ts.map +1 -0
  183. package/lib/types/document-types.js +83 -0
  184. package/lib/types/document-types.js.map +1 -0
  185. package/{src/types/index.ts → lib/types/index.d.ts} +1 -1
  186. package/lib/types/index.d.ts.map +1 -0
  187. package/lib/types/index.js +6 -0
  188. package/lib/types/index.js.map +1 -0
  189. package/lib/types/manager-types.d.ts +180 -0
  190. package/lib/types/manager-types.d.ts.map +1 -0
  191. package/lib/types/manager-types.js +99 -0
  192. package/lib/types/manager-types.js.map +1 -0
  193. package/lib/types/native-bindings.d.ts +440 -0
  194. package/lib/types/native-bindings.d.ts.map +1 -0
  195. package/lib/types/native-bindings.js +8 -0
  196. package/lib/types/native-bindings.js.map +1 -0
  197. package/{src/workers/index.ts → lib/workers/index.d.ts} +1 -1
  198. package/lib/workers/index.d.ts.map +1 -0
  199. package/lib/workers/index.js +6 -0
  200. package/lib/workers/index.js.map +1 -0
  201. package/lib/workers/pool.d.ts +65 -0
  202. package/lib/workers/pool.d.ts.map +1 -0
  203. package/lib/workers/pool.js +195 -0
  204. package/lib/workers/pool.js.map +1 -0
  205. package/lib/workers/worker.d.ts +6 -0
  206. package/lib/workers/worker.d.ts.map +1 -0
  207. package/lib/workers/worker.js +100 -0
  208. package/lib/workers/worker.js.map +1 -0
  209. package/package.json +12 -22
  210. package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
  211. package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
  212. package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
  213. package/prebuilds/linux-x64/pdf_oxide.node +0 -0
  214. package/prebuilds/win32-x64/pdf_oxide.node +0 -0
  215. package/binding.gyp +0 -35
  216. package/src/builders/annotation-builder.ts +0 -367
  217. package/src/builders/conversion-options-builder.ts +0 -257
  218. package/src/builders/metadata-builder.ts +0 -317
  219. package/src/builders/pdf-builder.ts +0 -386
  220. package/src/builders/search-options-builder.ts +0 -151
  221. package/src/document-editor-manager.ts +0 -318
  222. package/src/errors.ts +0 -1629
  223. package/src/form-field-manager.ts +0 -666
  224. package/src/hybrid-ml-manager.ts +0 -283
  225. package/src/index.ts +0 -453
  226. package/src/managers/accessibility-manager.ts +0 -338
  227. package/src/managers/annotation-manager.ts +0 -439
  228. package/src/managers/barcode-manager.ts +0 -235
  229. package/src/managers/batch-manager.ts +0 -533
  230. package/src/managers/cache-manager.ts +0 -486
  231. package/src/managers/compliance-manager.ts +0 -375
  232. package/src/managers/content-manager.ts +0 -339
  233. package/src/managers/document-utility-manager.ts +0 -922
  234. package/src/managers/dom-pdf-creator.ts +0 -365
  235. package/src/managers/editing-manager.ts +0 -514
  236. package/src/managers/enterprise-manager.ts +0 -478
  237. package/src/managers/extended-managers.ts +0 -437
  238. package/src/managers/extraction-manager.ts +0 -583
  239. package/src/managers/final-utilities.ts +0 -429
  240. package/src/managers/hybrid-ml-advanced.ts +0 -479
  241. package/src/managers/index.ts +0 -239
  242. package/src/managers/layer-manager.ts +0 -500
  243. package/src/managers/metadata-manager.ts +0 -303
  244. package/src/managers/ocr-manager.ts +0 -756
  245. package/src/managers/optimization-manager.ts +0 -262
  246. package/src/managers/outline-manager.ts +0 -196
  247. package/src/managers/page-manager.ts +0 -289
  248. package/src/managers/pattern-detection.ts +0 -440
  249. package/src/managers/rendering-manager.ts +0 -863
  250. package/src/managers/search-manager.ts +0 -385
  251. package/src/managers/security-manager.ts +0 -345
  252. package/src/managers/signature-manager.ts +0 -1664
  253. package/src/managers/streams.ts +0 -618
  254. package/src/managers/xfa-manager.ts +0 -500
  255. package/src/pdf-creator-manager.ts +0 -494
  256. package/src/properties.ts +0 -522
  257. package/src/result-accessors-manager.ts +0 -867
  258. package/src/tests/advanced-features.test.ts +0 -414
  259. package/src/tests/advanced.test.ts +0 -266
  260. package/src/tests/extended-managers.test.ts +0 -316
  261. package/src/tests/final-utilities.test.ts +0 -455
  262. package/src/tests/foundation.test.ts +0 -315
  263. package/src/tests/high-demand.test.ts +0 -257
  264. package/src/tests/specialized.test.ts +0 -97
  265. package/src/thumbnail-manager.ts +0 -272
  266. package/src/types/common.ts +0 -142
  267. package/src/types/document-types.ts +0 -457
  268. package/src/types/manager-types.ts +0 -284
  269. package/src/types/native-bindings.ts +0 -517
  270. package/src/workers/pool.ts +0 -274
  271. package/src/workers/worker.ts +0 -131
@@ -0,0 +1,567 @@
1
+ /**
2
+ * FormFieldManager for form field operations
3
+ *
4
+ * Manages form fields in PDF documents including retrieval, modification, and flattening.
5
+ * API is consistent with Python, Java, C#, Go, and Swift implementations.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ /**
9
+ * Types of form fields
10
+ */
11
+ export var FormFieldType;
12
+ (function (FormFieldType) {
13
+ FormFieldType["Text"] = "Text";
14
+ FormFieldType["CheckBox"] = "CheckBox";
15
+ FormFieldType["RadioButton"] = "RadioButton";
16
+ FormFieldType["ComboBox"] = "ComboBox";
17
+ FormFieldType["ListBox"] = "ListBox";
18
+ FormFieldType["Button"] = "Button";
19
+ FormFieldType["Signature"] = "Signature";
20
+ FormFieldType["TextArea"] = "TextArea";
21
+ })(FormFieldType || (FormFieldType = {}));
22
+ /**
23
+ * Field visibility options
24
+ */
25
+ export var FieldVisibility;
26
+ (function (FieldVisibility) {
27
+ FieldVisibility["Visible"] = "Visible";
28
+ FieldVisibility["Hidden"] = "Hidden";
29
+ FieldVisibility["PrintOnly"] = "PrintOnly";
30
+ FieldVisibility["NoView"] = "NoView";
31
+ })(FieldVisibility || (FieldVisibility = {}));
32
+ /**
33
+ * Form Field Manager for form operations
34
+ *
35
+ * Provides methods to:
36
+ * - Retrieve form field information
37
+ * - Get and set field values
38
+ * - Create new form fields
39
+ * - Manage field properties
40
+ * - Flatten forms
41
+ */
42
+ export class FormFieldManager extends EventEmitter {
43
+ constructor(document) {
44
+ super();
45
+ this.resultCache = new Map();
46
+ this.maxCacheSize = 100;
47
+ this.document = document;
48
+ }
49
+ /**
50
+ * Gets all form fields in the document
51
+ * Matches: Python getAllFields(), Java getAllFields(), C# GetAllFields()
52
+ */
53
+ async getAllFields() {
54
+ const cacheKey = 'formfields:all';
55
+ if (this.resultCache.has(cacheKey)) {
56
+ return this.resultCache.get(cacheKey);
57
+ }
58
+ // Call native PdfDocument method
59
+ try {
60
+ const fields = this.document.getFormFields?.() ?? [];
61
+ this.setCached(cacheKey, fields);
62
+ this.emit('fieldsRetrieved', fields.length);
63
+ return fields;
64
+ }
65
+ catch (err) {
66
+ this.emit('error', err);
67
+ return [];
68
+ }
69
+ }
70
+ /**
71
+ * Gets a specific form field by name
72
+ * Matches: Python getField(), Java getField(), C# GetField()
73
+ */
74
+ async getField(fieldName) {
75
+ const allFields = await this.getAllFields();
76
+ return allFields.find((f) => f.fieldName === fieldName);
77
+ }
78
+ /**
79
+ * Gets fields of a specific type
80
+ * Matches: Python getFieldsOfType(), Java getFieldsOfType(), C# GetFieldsOfType()
81
+ */
82
+ async getFieldsOfType(fieldType) {
83
+ const allFields = await this.getAllFields();
84
+ return allFields.filter((f) => f.fieldType === fieldType);
85
+ }
86
+ /**
87
+ * Gets the value of a form field
88
+ * Matches: Python getFieldValue(), Java getFieldValue(), C# GetFieldValue()
89
+ */
90
+ async getFieldValue(fieldName) {
91
+ const cacheKey = `formfields:value:${fieldName}`;
92
+ if (this.resultCache.has(cacheKey)) {
93
+ return this.resultCache.get(cacheKey);
94
+ }
95
+ // Call native PdfDocument method
96
+ try {
97
+ const value = this.document.getFieldValue?.(fieldName);
98
+ this.setCached(cacheKey, value);
99
+ return value || undefined;
100
+ }
101
+ catch (err) {
102
+ this.emit('error', err);
103
+ return undefined;
104
+ }
105
+ }
106
+ /**
107
+ * Sets the value of a form field
108
+ * Matches: Python setFieldValue(), Java setFieldValue(), C# SetFieldValue()
109
+ */
110
+ async setFieldValue(fieldName, value) {
111
+ // Call native PdfDocument method
112
+ try {
113
+ this.document.setFieldValue?.(fieldName, value);
114
+ this.clearCachePattern(`formfields:value:${fieldName}`);
115
+ this.emit('fieldValueChanged', fieldName, value);
116
+ }
117
+ catch (err) {
118
+ this.emit('error', err);
119
+ throw err;
120
+ }
121
+ }
122
+ /**
123
+ * Gets field count
124
+ * Matches: Python getFieldCount(), Java getFieldCount(), C# GetFieldCount()
125
+ */
126
+ async getFieldCount() {
127
+ const cacheKey = 'formfields:count';
128
+ if (this.resultCache.has(cacheKey)) {
129
+ return this.resultCache.get(cacheKey);
130
+ }
131
+ // Call native PdfDocument method via getAllFields
132
+ try {
133
+ const fields = await this.getAllFields();
134
+ const count = fields.length;
135
+ this.setCached(cacheKey, count);
136
+ return count;
137
+ }
138
+ catch (err) {
139
+ this.emit('error', err);
140
+ return 0;
141
+ }
142
+ }
143
+ /**
144
+ * Checks if form has fields
145
+ * Matches: Python hasForm(), Java hasForm(), C# HasForm()
146
+ */
147
+ async hasForm() {
148
+ const count = await this.getFieldCount();
149
+ return count > 0;
150
+ }
151
+ /**
152
+ * Creates a new form field
153
+ * Matches: Python createField(), Java createField(), C# CreateField()
154
+ */
155
+ async createField(config) {
156
+ // In real implementation, would call native FFI
157
+ this.clearCachePattern('formfields:.*');
158
+ this.emit('fieldCreated', config.fieldName);
159
+ }
160
+ /**
161
+ * Removes a form field
162
+ * Matches: Python removeField(), Java removeField(), C# RemoveField()
163
+ */
164
+ async removeField(fieldName) {
165
+ // In real implementation, would call native FFI
166
+ this.clearCachePattern('formfields:.*');
167
+ this.emit('fieldRemoved', fieldName);
168
+ }
169
+ /**
170
+ * Flattens form fields (convert to content)
171
+ * Matches: Python flattenForm(), Java flattenForm(), C# FlattenForm()
172
+ */
173
+ async flattenForm() {
174
+ // In real implementation, would call native FFI
175
+ this.clearCachePattern('formfields:.*');
176
+ this.emit('formFlattened');
177
+ }
178
+ /**
179
+ * Resets all form fields to defaults
180
+ * Matches: Python resetForm(), Java resetForm(), C# ResetForm()
181
+ */
182
+ async resetForm() {
183
+ // In real implementation, would call native FFI
184
+ this.clearCachePattern('formfields:.*');
185
+ this.emit('formReset');
186
+ }
187
+ /**
188
+ * Clears the result cache
189
+ * Matches: Python clearCache(), Java clearCache(), C# ClearCache()
190
+ */
191
+ clearCache() {
192
+ this.resultCache.clear();
193
+ this.emit('cacheCleared');
194
+ }
195
+ /**
196
+ * Gets cache statistics
197
+ * Matches: Python getCacheStats(), Java getCacheStats(), C# GetCacheStats()
198
+ */
199
+ getCacheStats() {
200
+ return {
201
+ cacheSize: this.resultCache.size,
202
+ maxCacheSize: this.maxCacheSize,
203
+ entries: Array.from(this.resultCache.keys()),
204
+ };
205
+ }
206
+ // ========== New FFI-based Form Operations (22 new methods) ==========
207
+ /**
208
+ * Gets the AcroForm handle from the document
209
+ * Provides access to lower-level form operations
210
+ * @returns AcroForm handle
211
+ */
212
+ async getFormAcroform() {
213
+ const cacheKey = 'form:acroform';
214
+ if (this.resultCache.has(cacheKey)) {
215
+ return this.resultCache.get(cacheKey);
216
+ }
217
+ // In real implementation, would call native FFI
218
+ // FormFieldFFI.documentGetAcroform(docHandle)
219
+ const acroformHandle = null;
220
+ this.setCached(cacheKey, acroformHandle);
221
+ return acroformHandle;
222
+ }
223
+ /**
224
+ * Exports form data to a file
225
+ * Supports FDF (0), XFDF (1), and JSON (2) formats
226
+ * @param filename Path to output file
227
+ * @param format Format type (0=FDF, 1=XFDF, 2=JSON)
228
+ * @returns Number of fields exported
229
+ */
230
+ async exportFormData(filename, format = 0) {
231
+ // In real implementation, would call native FFI
232
+ // FormFieldFFI.formFieldExportFormData(acroformHandle, filename, format)
233
+ this.clearCachePattern('form:.*');
234
+ this.emit('formDataExported', filename, format);
235
+ return 0;
236
+ }
237
+ /**
238
+ * Exports form data to bytes in memory
239
+ * Supports FDF (0), XFDF (1), and JSON (2) formats
240
+ * @param format Format type (0=FDF, 1=XFDF, 2=JSON)
241
+ * @returns Form data as byte array
242
+ */
243
+ async exportFormDataBytes(format = 0) {
244
+ // In real implementation, would call native FFI
245
+ // FormFieldFFI.formFieldExportFormDataBytes(acroformHandle, format)
246
+ this.emit('formDataExportedToBytes', format);
247
+ return new Uint8Array();
248
+ }
249
+ /**
250
+ * Imports form data from a file
251
+ * Supports FDF, XFDF, and JSON formats (auto-detected)
252
+ * @param filename Path to form data file
253
+ * @returns Number of fields updated
254
+ */
255
+ async importFormData(filename) {
256
+ // In real implementation, would call native FFI
257
+ // FormFieldFFI.formFieldImportFormData(acroformHandle, filename)
258
+ this.clearCachePattern('form:.*');
259
+ this.emit('formDataImported', filename);
260
+ return 0;
261
+ }
262
+ /**
263
+ * Resets all form fields to their default values
264
+ * @returns Number of fields reset
265
+ */
266
+ async resetAllFields() {
267
+ // In real implementation, would call native FFI
268
+ // FormFieldFFI.documentResetFormFields(docHandle)
269
+ this.clearCachePattern('form:.*');
270
+ this.emit('allFieldsReset');
271
+ return 0;
272
+ }
273
+ /**
274
+ * Gets the default value of a form field
275
+ * @param fieldName Name of the field
276
+ * @returns Default value or empty string
277
+ */
278
+ async getFieldDefaultValue(fieldName) {
279
+ const cacheKey = `form:defaultvalue:${fieldName}`;
280
+ if (this.resultCache.has(cacheKey)) {
281
+ return this.resultCache.get(cacheKey);
282
+ }
283
+ // In real implementation, would call native FFI
284
+ // FormFieldFFI.formFieldGetDefaultValue(fieldHandle)
285
+ const value = '';
286
+ this.setCached(cacheKey, value);
287
+ return value;
288
+ }
289
+ /**
290
+ * Sets the default value of a form field
291
+ * @param fieldName Name of the field
292
+ * @param value New default value
293
+ */
294
+ async setFieldDefaultValue(fieldName, value) {
295
+ // In real implementation, would call native FFI
296
+ // FormFieldFFI.formFieldSetDefaultValue(fieldHandle, value)
297
+ this.clearCachePattern(`form:defaultvalue:${fieldName}`);
298
+ this.emit('fieldDefaultValueChanged', fieldName, value);
299
+ }
300
+ /**
301
+ * Gets the flags of a form field (combination of bit flags)
302
+ * @param fieldName Name of the field
303
+ * @returns Field flags as integer
304
+ */
305
+ async getFieldFlags(fieldName) {
306
+ const cacheKey = `form:flags:${fieldName}`;
307
+ if (this.resultCache.has(cacheKey)) {
308
+ return this.resultCache.get(cacheKey);
309
+ }
310
+ // In real implementation, would call native FFI
311
+ // FormFieldFFI.formFieldGetFlags(fieldHandle)
312
+ const flags = 0;
313
+ this.setCached(cacheKey, flags);
314
+ return flags;
315
+ }
316
+ /**
317
+ * Sets the flags of a form field
318
+ * Flags control field properties like readonly, required, etc.
319
+ * @param fieldName Name of the field
320
+ * @param flags New flags value
321
+ */
322
+ async setFieldFlags(fieldName, flags) {
323
+ // In real implementation, would call native FFI
324
+ // FormFieldFFI.formFieldSetFlags(fieldHandle, flags)
325
+ this.clearCachePattern(`form:flags:${fieldName}`);
326
+ this.emit('fieldFlagsChanged', fieldName, flags);
327
+ }
328
+ /**
329
+ * Gets the tooltip text for a form field
330
+ * @param fieldName Name of the field
331
+ * @returns Tooltip text or empty string
332
+ */
333
+ async getFieldTooltip(fieldName) {
334
+ const cacheKey = `form:tooltip:${fieldName}`;
335
+ if (this.resultCache.has(cacheKey)) {
336
+ return this.resultCache.get(cacheKey);
337
+ }
338
+ // In real implementation, would call native FFI
339
+ // FormFieldFFI.formFieldGetTooltip(fieldHandle)
340
+ const tooltip = '';
341
+ this.setCached(cacheKey, tooltip);
342
+ return tooltip;
343
+ }
344
+ /**
345
+ * Sets the tooltip text for a form field
346
+ * @param fieldName Name of the field
347
+ * @param tooltip New tooltip text
348
+ */
349
+ async setFieldTooltip(fieldName, tooltip) {
350
+ // In real implementation, would call native FFI
351
+ // FormFieldFFI.formFieldSetTooltip(fieldHandle, tooltip)
352
+ this.clearCachePattern(`form:tooltip:${fieldName}`);
353
+ this.emit('fieldTooltipChanged', fieldName, tooltip);
354
+ }
355
+ /**
356
+ * Gets the alternate name (UI name) for a form field
357
+ * @param fieldName Name of the field
358
+ * @returns Alternate name or empty string
359
+ */
360
+ async getFieldAlternateName(fieldName) {
361
+ const cacheKey = `form:altname:${fieldName}`;
362
+ if (this.resultCache.has(cacheKey)) {
363
+ return this.resultCache.get(cacheKey);
364
+ }
365
+ // In real implementation, would call native FFI
366
+ // FormFieldFFI.formFieldGetAlternateName(fieldHandle)
367
+ const name = '';
368
+ this.setCached(cacheKey, name);
369
+ return name;
370
+ }
371
+ /**
372
+ * Sets the alternate name (UI name) for a form field
373
+ * @param fieldName Name of the field
374
+ * @param alternateName New alternate name
375
+ */
376
+ async setFieldAlternateName(fieldName, alternateName) {
377
+ // In real implementation, would call native FFI
378
+ // FormFieldFFI.formFieldSetAlternateName(fieldHandle, alternateName)
379
+ this.clearCachePattern(`form:altname:${fieldName}`);
380
+ this.emit('fieldAlternateNameChanged', fieldName, alternateName);
381
+ }
382
+ /**
383
+ * Checks if a form field is read-only
384
+ * @param fieldName Name of the field
385
+ * @returns True if field is read-only
386
+ */
387
+ async isFieldReadonly(fieldName) {
388
+ const cacheKey = `form:readonly:${fieldName}`;
389
+ if (this.resultCache.has(cacheKey)) {
390
+ return this.resultCache.get(cacheKey);
391
+ }
392
+ // In real implementation, would call native FFI
393
+ // FormFieldFFI.formFieldIsReadonly(fieldHandle)
394
+ const readonly = false;
395
+ this.setCached(cacheKey, readonly);
396
+ return readonly;
397
+ }
398
+ /**
399
+ * Sets the read-only status of a form field
400
+ * @param fieldName Name of the field
401
+ * @param readonly True to make field read-only
402
+ */
403
+ async setFieldReadonly(fieldName, readonly) {
404
+ // In real implementation, would call native FFI
405
+ // FormFieldFFI.formFieldSetReadonly(fieldHandle, readonly)
406
+ this.clearCachePattern(`form:readonly:${fieldName}`);
407
+ this.emit('fieldReadonlyChanged', fieldName, readonly);
408
+ }
409
+ /**
410
+ * Checks if a form field is required
411
+ * @param fieldName Name of the field
412
+ * @returns True if field is required
413
+ */
414
+ async isFieldRequired(fieldName) {
415
+ const cacheKey = `form:required:${fieldName}`;
416
+ if (this.resultCache.has(cacheKey)) {
417
+ return this.resultCache.get(cacheKey);
418
+ }
419
+ // In real implementation, would call native FFI
420
+ // FormFieldFFI.formFieldIsRequired(fieldHandle)
421
+ const required = false;
422
+ this.setCached(cacheKey, required);
423
+ return required;
424
+ }
425
+ /**
426
+ * Sets the required status of a form field
427
+ * @param fieldName Name of the field
428
+ * @param required True to make field required
429
+ */
430
+ async setFieldRequired(fieldName, required) {
431
+ // In real implementation, would call native FFI
432
+ // FormFieldFFI.formFieldSetRequired(fieldHandle, required)
433
+ this.clearCachePattern(`form:required:${fieldName}`);
434
+ this.emit('fieldRequiredChanged', fieldName, required);
435
+ }
436
+ /**
437
+ * Gets the background color of a form field
438
+ * @param fieldName Name of the field
439
+ * @returns Color as [R, G, B] array (0-255) or null if no color
440
+ */
441
+ async getFieldBackgroundColor(fieldName) {
442
+ const cacheKey = `form:bgcolor:${fieldName}`;
443
+ if (this.resultCache.has(cacheKey)) {
444
+ return this.resultCache.get(cacheKey);
445
+ }
446
+ // In real implementation, would call native FFI
447
+ // FormFieldFFI.formFieldGetBackgroundColor(fieldHandle) -> packed RGB
448
+ // Unpack: [(rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF]
449
+ const color = null;
450
+ this.setCached(cacheKey, color);
451
+ return color;
452
+ }
453
+ /**
454
+ * Sets the background color of a form field
455
+ * @param fieldName Name of the field
456
+ * @param red Red component (0-255)
457
+ * @param green Green component (0-255)
458
+ * @param blue Blue component (0-255)
459
+ */
460
+ async setFieldBackgroundColor(fieldName, red, green, blue) {
461
+ // In real implementation, would call native FFI
462
+ // FormFieldFFI.formFieldSetBackgroundColor(fieldHandle, red, green, blue)
463
+ this.clearCachePattern(`form:bgcolor:${fieldName}`);
464
+ this.emit('fieldBackgroundColorChanged', fieldName, [red, green, blue]);
465
+ }
466
+ /**
467
+ * Gets the text color of a form field
468
+ * @param fieldName Name of the field
469
+ * @returns Color as [R, G, B] array (0-255) or null if no color
470
+ */
471
+ async getFieldTextColor(fieldName) {
472
+ const cacheKey = `form:textcolor:${fieldName}`;
473
+ if (this.resultCache.has(cacheKey)) {
474
+ return this.resultCache.get(cacheKey);
475
+ }
476
+ // In real implementation, would call native FFI
477
+ // FormFieldFFI.formFieldGetTextColor(fieldHandle) -> packed RGB
478
+ // Unpack: [(rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF]
479
+ const color = null;
480
+ this.setCached(cacheKey, color);
481
+ return color;
482
+ }
483
+ /**
484
+ * Sets the text color of a form field
485
+ * @param fieldName Name of the field
486
+ * @param red Red component (0-255)
487
+ * @param green Green component (0-255)
488
+ * @param blue Blue component (0-255)
489
+ */
490
+ async setFieldTextColor(fieldName, red, green, blue) {
491
+ // In real implementation, would call native FFI
492
+ // FormFieldFFI.formFieldSetTextColor(fieldHandle, red, green, blue)
493
+ this.clearCachePattern(`form:textcolor:${fieldName}`);
494
+ this.emit('fieldTextColorChanged', fieldName, [red, green, blue]);
495
+ }
496
+ /**
497
+ * Validates a form field
498
+ * Checks field consistency and compliance
499
+ * @param fieldName Name of the field
500
+ * @returns True if field is valid
501
+ */
502
+ async validateField(fieldName) {
503
+ // In real implementation, would call native FFI
504
+ // FormFieldFFI.formFieldValidate(fieldHandle)
505
+ this.emit('fieldValidated', fieldName);
506
+ return true;
507
+ }
508
+ /**
509
+ * Gets form statistics
510
+ * @returns Object with form statistics
511
+ */
512
+ async getFormStatistics() {
513
+ const cacheKey = 'form:statistics';
514
+ if (this.resultCache.has(cacheKey)) {
515
+ return this.resultCache.get(cacheKey);
516
+ }
517
+ // In real implementation, would combine multiple FFI calls
518
+ const stats = {
519
+ total_fields: 0,
520
+ required_fields: 0,
521
+ readonly_fields: 0,
522
+ };
523
+ this.setCached(cacheKey, stats);
524
+ return stats;
525
+ }
526
+ /**
527
+ * Batch sets multiple field values
528
+ * @param values Map of field names to values
529
+ * @returns Number of fields updated
530
+ */
531
+ async batchSetValues(values) {
532
+ // In real implementation, would call FFI for each field
533
+ this.clearCachePattern('form:.*');
534
+ this.emit('batchValuesSet', Object.keys(values).length);
535
+ return Object.keys(values).length;
536
+ }
537
+ /**
538
+ * Batch gets multiple field values
539
+ * @param fieldNames Array of field names
540
+ * @returns Map of field names to values
541
+ */
542
+ async getBatchValues(fieldNames) {
543
+ const result = {};
544
+ for (const name of fieldNames) {
545
+ result[name] = '';
546
+ }
547
+ return result;
548
+ }
549
+ // Private helper methods
550
+ setCached(key, value) {
551
+ this.resultCache.set(key, value);
552
+ // Simple LRU eviction
553
+ if (this.resultCache.size > this.maxCacheSize) {
554
+ const firstKey = this.resultCache.keys().next().value;
555
+ if (firstKey !== undefined) {
556
+ this.resultCache.delete(firstKey);
557
+ }
558
+ }
559
+ }
560
+ clearCachePattern(pattern) {
561
+ const regex = new RegExp(pattern);
562
+ const keysToDelete = Array.from(this.resultCache.keys()).filter((key) => regex.test(key));
563
+ keysToDelete.forEach((key) => this.resultCache.delete(key));
564
+ }
565
+ }
566
+ export default FormFieldManager;
567
+ //# sourceMappingURL=form-field-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field-manager.js","sourceRoot":"","sources":["../src/form-field-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,sCAAqB,CAAA;IACrB,4CAA2B,CAAA;IAC3B,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;AACvB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;IACjB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;AACnB,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAgCD;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAKhD,YAAY,QAAa;QACvB,KAAK,EAAE,CAAC;QAJF,gBAAW,GAAG,IAAI,GAAG,EAAe,CAAC;QACrC,iBAAY,GAAG,GAAG,CAAC;QAIzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAY,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,SAAwB;QAC5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,QAAQ,GAAG,oBAAoB,SAAS,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,KAAK,IAAI,SAAS,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,KAAa;QAClD,iCAAiC;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACzC,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,MAAuB;QACvC,gDAAgD;QAChD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,gDAAgD;QAChD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,gDAAgD;QAChD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,gDAAgD;QAChD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAChC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,uEAAuE;IAEvE;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,eAAe,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,8CAA8C;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAiB,CAAC;QACvD,gDAAgD;QAChD,yEAAyE;QACzE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB,CAAC;QAC1C,gDAAgD;QAChD,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,gDAAgD;QAChD,iEAAiE;QACjE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,gDAAgD;QAChD,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAC1C,MAAM,QAAQ,GAAG,qBAAqB,SAAS,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,qDAAqD;QACrD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,KAAa;QACzD,gDAAgD;QAChD,4DAA4D;QAC5D,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,QAAQ,GAAG,cAAc,SAAS,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,8CAA8C;QAC9C,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,KAAa;QAClD,gDAAgD;QAChD,qDAAqD;QACrD,IAAI,CAAC,iBAAiB,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,QAAQ,GAAG,gBAAgB,SAAS,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,gDAAgD;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAe;QACtD,gDAAgD;QAChD,yDAAyD;QACzD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QAC3C,MAAM,QAAQ,GAAG,gBAAgB,SAAS,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,sDAAsD;QACtD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,SAAiB,EAAE,aAAqB;QAClE,gDAAgD;QAChD,qEAAqE;QACrE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,QAAQ,GAAG,iBAAiB,SAAS,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,gDAAgD;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,QAAiB;QACzD,gDAAgD;QAChD,2DAA2D;QAC3D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,QAAQ,GAAG,iBAAiB,SAAS,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,gDAAgD;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,QAAiB;QACzD,gDAAgD;QAChD,2DAA2D;QAC3D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,SAAiB;QAEjB,MAAM,QAAQ,GAAG,gBAAgB,SAAS,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,sEAAsE;QACtE,8DAA8D;QAC9D,MAAM,KAAK,GAAoC,IAAI,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,uBAAuB,CAC3B,SAAiB,EACjB,GAAW,EACX,KAAa,EACb,IAAY;QAEZ,gDAAgD;QAChD,0EAA0E;QAC1E,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAG,kBAAkB,SAAS,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,gDAAgD;QAChD,gEAAgE;QAChE,8DAA8D;QAC9D,MAAM,KAAK,GAAoC,IAAI,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CACrB,SAAiB,EACjB,GAAW,EACX,KAAa,EACb,IAAY;QAEZ,gDAAgD;QAChD,oEAAoE;QACpE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,gDAAgD;QAChD,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,2DAA2D;QAC3D,MAAM,KAAK,GAAG;YACZ,YAAY,EAAE,CAAC;YACf,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;SACnB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAA8B;QACjD,wDAAwD;QACxD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,UAAoB;QACvC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACjB,SAAS,CAAC,GAAW,EAAE,KAAU;QACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjC,sBAAsB;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACvC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAChB,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}