@syncfusion/ej2-docx 0.0.0-stage → 35.1.40

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 (417) hide show
  1. package/.gitleaksignore +35 -0
  2. package/README.md +68 -2
  3. package/core.js +4 -0
  4. package/dist/ej2-docx.umd.min.js +11 -0
  5. package/dist/ej2-docx.umd.min.js.map +1 -0
  6. package/dist/es6/ej2-docx.es2015.js +66697 -0
  7. package/dist/es6/ej2-docx.es2015.js.map +1 -0
  8. package/dist/es6/ej2-docx.es5.js +77568 -0
  9. package/dist/es6/ej2-docx.es5.js.map +1 -0
  10. package/dist/global/ej2-docx.min.js +11 -0
  11. package/dist/global/ej2-docx.min.js.map +1 -0
  12. package/dist/global/index.d.ts +14 -0
  13. package/features.js +4 -0
  14. package/index.js +4 -0
  15. package/license +10 -0
  16. package/package.json +30 -3
  17. package/src/all.d.ts +50 -0
  18. package/src/all.js +147 -0
  19. package/src/core/compat/base64.d.ts +13 -0
  20. package/src/core/compat/base64.js +90 -0
  21. package/src/core/compat/object-compat.d.ts +30 -0
  22. package/src/core/compat/object-compat.js +40 -0
  23. package/src/core/compat/sha256.d.ts +9 -0
  24. package/src/core/compat/sha256.js +98 -0
  25. package/src/core/errors/docx-error.d.ts +89 -0
  26. package/src/core/errors/docx-error.js +138 -0
  27. package/src/core/errors/error-codes.d.ts +8 -0
  28. package/src/core/errors/error-codes.js +0 -0
  29. package/src/core/errors/index.d.ts +10 -0
  30. package/src/core/errors/index.js +9 -0
  31. package/src/core/index.d.ts +12 -0
  32. package/src/core/index.js +12 -0
  33. package/src/core/mc/alternate-content.d.ts +7 -0
  34. package/src/core/mc/alternate-content.js +67 -0
  35. package/src/core/mc/attributes.d.ts +24 -0
  36. package/src/core/mc/attributes.js +82 -0
  37. package/src/core/mc/index.d.ts +7 -0
  38. package/src/core/mc/index.js +5 -0
  39. package/src/core/mc/inspect.d.ts +16 -0
  40. package/src/core/mc/inspect.js +148 -0
  41. package/src/core/mc/namespaces.d.ts +4 -0
  42. package/src/core/mc/namespaces.js +4 -0
  43. package/src/core/mc/scope.d.ts +6 -0
  44. package/src/core/mc/scope.js +47 -0
  45. package/src/core/opc/content-types.d.ts +34 -0
  46. package/src/core/opc/content-types.js +162 -0
  47. package/src/core/opc/index.d.ts +8 -0
  48. package/src/core/opc/index.js +4 -0
  49. package/src/core/opc/package.d.ts +49 -0
  50. package/src/core/opc/package.js +324 -0
  51. package/src/core/opc/part-name.d.ts +47 -0
  52. package/src/core/opc/part-name.js +205 -0
  53. package/src/core/opc/relationships.d.ts +46 -0
  54. package/src/core/opc/relationships.js +212 -0
  55. package/src/core/preservation/index.d.ts +2 -0
  56. package/src/core/preservation/index.js +1 -0
  57. package/src/core/preservation/opaque-body.d.ts +16 -0
  58. package/src/core/preservation/opaque-body.js +69 -0
  59. package/src/core/registry/block-handlers.d.ts +30 -0
  60. package/src/core/registry/block-handlers.js +36 -0
  61. package/src/core/registry/create-defaults.d.ts +39 -0
  62. package/src/core/registry/create-defaults.js +42 -0
  63. package/src/core/registry/feature-registry.d.ts +20 -0
  64. package/src/core/registry/feature-registry.js +29 -0
  65. package/src/core/registry/index.d.ts +9 -0
  66. package/src/core/registry/index.js +8 -0
  67. package/src/core/registry/inline-handlers.d.ts +20 -0
  68. package/src/core/registry/inline-handlers.js +30 -0
  69. package/src/core/registry/materialize-handlers.d.ts +35 -0
  70. package/src/core/registry/materialize-handlers.js +75 -0
  71. package/src/core/registry/multi-part-handlers.d.ts +37 -0
  72. package/src/core/registry/multi-part-handlers.js +206 -0
  73. package/src/core/registry/package-part-handlers.d.ts +28 -0
  74. package/src/core/registry/package-part-handlers.js +190 -0
  75. package/src/core/registry/part-handlers.d.ts +24 -0
  76. package/src/core/registry/part-handlers.js +172 -0
  77. package/src/core/registry/run-leaf-handlers.d.ts +26 -0
  78. package/src/core/registry/run-leaf-handlers.js +72 -0
  79. package/src/core/security/limits.d.ts +40 -0
  80. package/src/core/security/limits.js +26 -0
  81. package/src/core/xml/index.d.ts +7 -0
  82. package/src/core/xml/index.js +3 -0
  83. package/src/core/xml/model.d.ts +66 -0
  84. package/src/core/xml/model.js +17 -0
  85. package/src/core/xml/parse.d.ts +12 -0
  86. package/src/core/xml/parse.js +382 -0
  87. package/src/core/xml/serialize.d.ts +6 -0
  88. package/src/core/xml/serialize.js +93 -0
  89. package/src/core/zip/crc32.d.ts +2 -0
  90. package/src/core/zip/crc32.js +25 -0
  91. package/src/core/zip/deflate.d.ts +6 -0
  92. package/src/core/zip/deflate.js +6 -0
  93. package/src/core/zip/index.d.ts +10 -0
  94. package/src/core/zip/index.js +4 -0
  95. package/src/core/zip/inflate-raw.d.ts +17 -0
  96. package/src/core/zip/inflate-raw.js +450 -0
  97. package/src/core/zip/names.d.ts +6 -0
  98. package/src/core/zip/names.js +52 -0
  99. package/src/core/zip/read.d.ts +8 -0
  100. package/src/core/zip/read.js +262 -0
  101. package/src/core/zip/write.d.ts +7 -0
  102. package/src/core/zip/write.js +189 -0
  103. package/src/core/zip/zip-entry.d.ts +4 -0
  104. package/src/core/zip/zip-entry.js +0 -0
  105. package/src/features/bibliography/index.d.ts +100 -0
  106. package/src/features/bibliography/index.js +290 -0
  107. package/src/features/bookmarks/index.d.ts +331 -0
  108. package/src/features/bookmarks/index.js +1009 -0
  109. package/src/features/comments/comment-extensions.d.ts +157 -0
  110. package/src/features/comments/comment-extensions.js +356 -0
  111. package/src/features/comments/index.d.ts +579 -0
  112. package/src/features/comments/index.js +1727 -0
  113. package/src/features/content-controls/index.d.ts +821 -0
  114. package/src/features/content-controls/index.js +2857 -0
  115. package/src/features/custom-xml/index.d.ts +236 -0
  116. package/src/features/custom-xml/index.js +661 -0
  117. package/src/features/document/alignment.d.ts +23 -0
  118. package/src/features/document/alignment.js +36 -0
  119. package/src/features/document/alt-chunk.d.ts +103 -0
  120. package/src/features/document/alt-chunk.js +221 -0
  121. package/src/features/document/assert-never.d.ts +1 -0
  122. package/src/features/document/assert-never.js +4 -0
  123. package/src/features/document/augmentations.d.ts +578 -0
  124. package/src/features/document/augmentations.js +0 -0
  125. package/src/features/document/body-always-on.d.ts +36 -0
  126. package/src/features/document/body-always-on.js +66 -0
  127. package/src/features/document/body-blocks.d.ts +7 -0
  128. package/src/features/document/body-blocks.js +78 -0
  129. package/src/features/document/body-item-adapters.d.ts +62 -0
  130. package/src/features/document/body-item-adapters.js +97 -0
  131. package/src/features/document/body-item-collection.d.ts +151 -0
  132. package/src/features/document/body-item-collection.js +440 -0
  133. package/src/features/document/body-item.d.ts +35 -0
  134. package/src/features/document/body-item.js +8 -0
  135. package/src/features/document/body.d.ts +150 -0
  136. package/src/features/document/body.js +263 -0
  137. package/src/features/document/character-format.d.ts +413 -0
  138. package/src/features/document/character-format.js +2054 -0
  139. package/src/features/document/color.d.ts +178 -0
  140. package/src/features/document/color.js +495 -0
  141. package/src/features/document/document.d.ts +410 -0
  142. package/src/features/document/document.js +1049 -0
  143. package/src/features/document/element-type.d.ts +68 -0
  144. package/src/features/document/element-type.js +133 -0
  145. package/src/features/document/entity-type.d.ts +92 -0
  146. package/src/features/document/entity-type.js +93 -0
  147. package/src/features/document/feature-block.d.ts +16 -0
  148. package/src/features/document/feature-block.js +0 -0
  149. package/src/features/document/feature-inline.d.ts +13 -0
  150. package/src/features/document/feature-inline.js +0 -0
  151. package/src/features/document/feature-multi-package-part.d.ts +19 -0
  152. package/src/features/document/feature-multi-package-part.js +8 -0
  153. package/src/features/document/feature-package-level-part.d.ts +18 -0
  154. package/src/features/document/feature-package-level-part.js +8 -0
  155. package/src/features/document/feature-package-part.d.ts +14 -0
  156. package/src/features/document/feature-package-part.js +0 -0
  157. package/src/features/document/feature-run-leaf.d.ts +9 -0
  158. package/src/features/document/feature-run-leaf.js +0 -0
  159. package/src/features/document/headers-footers.d.ts +206 -0
  160. package/src/features/document/headers-footers.js +384 -0
  161. package/src/features/document/index.d.ts +41 -0
  162. package/src/features/document/index.js +34 -0
  163. package/src/features/document/length.d.ts +152 -0
  164. package/src/features/document/length.js +245 -0
  165. package/src/features/document/load-options.d.ts +14 -0
  166. package/src/features/document/load-options.js +0 -0
  167. package/src/features/document/locale-ids.d.ts +227 -0
  168. package/src/features/document/locale-ids.js +485 -0
  169. package/src/features/document/on-off.d.ts +9 -0
  170. package/src/features/document/on-off.js +27 -0
  171. package/src/features/document/page-setup.d.ts +339 -0
  172. package/src/features/document/page-setup.js +244 -0
  173. package/src/features/document/paragraph-format.d.ts +880 -0
  174. package/src/features/document/paragraph-format.js +2807 -0
  175. package/src/features/document/paragraph-item-collection.d.ts +162 -0
  176. package/src/features/document/paragraph-item-collection.js +363 -0
  177. package/src/features/document/paragraph-item.d.ts +83 -0
  178. package/src/features/document/paragraph-item.js +103 -0
  179. package/src/features/document/paragraph.d.ts +435 -0
  180. package/src/features/document/paragraph.js +888 -0
  181. package/src/features/document/run.d.ts +1 -0
  182. package/src/features/document/run.js +768 -0
  183. package/src/features/document/section-partition-flatten.d.ts +124 -0
  184. package/src/features/document/section-partition-flatten.js +217 -0
  185. package/src/features/document/section-properties-model.d.ts +13 -0
  186. package/src/features/document/section-properties-model.js +0 -0
  187. package/src/features/document/section.d.ts +93 -0
  188. package/src/features/document/section.js +178 -0
  189. package/src/features/document/sections.d.ts +103 -0
  190. package/src/features/document/sections.js +217 -0
  191. package/src/features/document/sub-super-script.d.ts +23 -0
  192. package/src/features/document/sub-super-script.js +43 -0
  193. package/src/features/document/text-range.d.ts +445 -0
  194. package/src/features/document/text-range.js +1156 -0
  195. package/src/features/document/typed-body-collections.d.ts +162 -0
  196. package/src/features/document/typed-body-collections.js +371 -0
  197. package/src/features/document/underline-style.d.ts +38 -0
  198. package/src/features/document/underline-style.js +126 -0
  199. package/src/features/document/units.d.ts +8 -0
  200. package/src/features/document/units.js +7 -0
  201. package/src/features/document/wml.d.ts +16 -0
  202. package/src/features/document/wml.js +67 -0
  203. package/src/features/drawing/authoring.d.ts +27 -0
  204. package/src/features/drawing/authoring.js +271 -0
  205. package/src/features/drawing/body-pr.d.ts +271 -0
  206. package/src/features/drawing/body-pr.js +663 -0
  207. package/src/features/drawing/drawing-shape.d.ts +1192 -0
  208. package/src/features/drawing/drawing-shape.js +3239 -0
  209. package/src/features/drawing/encode-builders.d.ts +176 -0
  210. package/src/features/drawing/encode-builders.js +390 -0
  211. package/src/features/drawing/fill-format.d.ts +52 -0
  212. package/src/features/drawing/fill-format.js +124 -0
  213. package/src/features/drawing/host-codec.d.ts +632 -0
  214. package/src/features/drawing/host-codec.js +2595 -0
  215. package/src/features/drawing/index.d.ts +13 -0
  216. package/src/features/drawing/index.js +33 -0
  217. package/src/features/drawing/line-format.d.ts +76 -0
  218. package/src/features/drawing/line-format.js +343 -0
  219. package/src/features/drawing/parse-register.d.ts +50 -0
  220. package/src/features/drawing/parse-register.js +257 -0
  221. package/src/features/drawing/residual-utils.d.ts +47 -0
  222. package/src/features/drawing/residual-utils.js +290 -0
  223. package/src/features/drawing/shape-types.d.ts +433 -0
  224. package/src/features/drawing/shape-types.js +437 -0
  225. package/src/features/drawing/sp-pr.d.ts +396 -0
  226. package/src/features/drawing/sp-pr.js +610 -0
  227. package/src/features/drawing/text-frame.d.ts +90 -0
  228. package/src/features/drawing/text-frame.js +152 -0
  229. package/src/features/drawing/types.d.ts +352 -0
  230. package/src/features/drawing/types.js +60 -0
  231. package/src/features/drawing/wrap-format.d.ts +62 -0
  232. package/src/features/drawing/wrap-format.js +114 -0
  233. package/src/features/editable-ranges/index.d.ts +494 -0
  234. package/src/features/editable-ranges/index.js +1348 -0
  235. package/src/features/fields/index.d.ts +428 -0
  236. package/src/features/fields/index.js +2148 -0
  237. package/src/features/fields/paragraph-field.d.ts +187 -0
  238. package/src/features/fields/paragraph-field.js +692 -0
  239. package/src/features/font-table/font-substitution-table.d.ts +75 -0
  240. package/src/features/font-table/font-substitution-table.js +257 -0
  241. package/src/features/font-table/font-table-entry.d.ts +255 -0
  242. package/src/features/font-table/font-table-entry.js +823 -0
  243. package/src/features/font-table/font-table.d.ts +128 -0
  244. package/src/features/font-table/font-table.js +313 -0
  245. package/src/features/font-table/index.d.ts +27 -0
  246. package/src/features/font-table/index.js +48 -0
  247. package/src/features/glossary/index.d.ts +97 -0
  248. package/src/features/glossary/index.js +286 -0
  249. package/src/features/headers-footers/index.d.ts +506 -0
  250. package/src/features/headers-footers/index.js +1666 -0
  251. package/src/features/hyperlinks/index.d.ts +230 -0
  252. package/src/features/hyperlinks/index.js +685 -0
  253. package/src/features/images/caption-authoring-api.d.ts +33 -0
  254. package/src/features/images/caption-authoring-api.js +33 -0
  255. package/src/features/images/caption-enums.d.ts +52 -0
  256. package/src/features/images/caption-enums.js +141 -0
  257. package/src/features/images/caption-host.d.ts +10 -0
  258. package/src/features/images/caption-host.js +21 -0
  259. package/src/features/images/captions.d.ts +13 -0
  260. package/src/features/images/captions.js +142 -0
  261. package/src/features/images/host-codec.d.ts +103 -0
  262. package/src/features/images/host-codec.js +720 -0
  263. package/src/features/images/image-sniff.d.ts +21 -0
  264. package/src/features/images/image-sniff.js +71 -0
  265. package/src/features/images/index.d.ts +506 -0
  266. package/src/features/images/index.js +1429 -0
  267. package/src/features/images/layout-types.d.ts +232 -0
  268. package/src/features/images/layout-types.js +294 -0
  269. package/src/features/images/public-entry.d.ts +9 -0
  270. package/src/features/images/public-entry.js +9 -0
  271. package/src/features/index.d.ts +35 -0
  272. package/src/features/index.js +36 -0
  273. package/src/features/mail-merge/index.d.ts +113 -0
  274. package/src/features/mail-merge/index.js +315 -0
  275. package/src/features/notes/index.d.ts +573 -0
  276. package/src/features/notes/index.js +1725 -0
  277. package/src/features/numbering/abstract-numbering.d.ts +90 -0
  278. package/src/features/numbering/abstract-numbering.js +292 -0
  279. package/src/features/numbering/index.d.ts +182 -0
  280. package/src/features/numbering/index.js +668 -0
  281. package/src/features/numbering/list-format.d.ts +158 -0
  282. package/src/features/numbering/list-format.js +590 -0
  283. package/src/features/numbering/list-string.d.ts +7 -0
  284. package/src/features/numbering/list-string.js +423 -0
  285. package/src/features/numbering/list-style.d.ts +204 -0
  286. package/src/features/numbering/list-style.js +1084 -0
  287. package/src/features/numbering/numbering-instance.d.ts +101 -0
  288. package/src/features/numbering/numbering-instance.js +329 -0
  289. package/src/features/numbering/numbering-level.d.ts +118 -0
  290. package/src/features/numbering/numbering-level.js +501 -0
  291. package/src/features/numbering/picture-bullet.d.ts +34 -0
  292. package/src/features/numbering/picture-bullet.js +88 -0
  293. package/src/features/ole-object/catalog.d.ts +300 -0
  294. package/src/features/ole-object/catalog.js +908 -0
  295. package/src/features/ole-object/index.d.ts +526 -0
  296. package/src/features/ole-object/index.js +1421 -0
  297. package/src/features/ole-object/relationship.d.ts +27 -0
  298. package/src/features/ole-object/relationship.js +27 -0
  299. package/src/features/ole-object/typed-dom.d.ts +186 -0
  300. package/src/features/ole-object/typed-dom.js +595 -0
  301. package/src/features/properties/index.d.ts +205 -0
  302. package/src/features/properties/index.js +549 -0
  303. package/src/features/revisions/index.d.ts +204 -0
  304. package/src/features/revisions/index.js +695 -0
  305. package/src/features/sections/column-collection.d.ts +119 -0
  306. package/src/features/sections/column-collection.js +478 -0
  307. package/src/features/sections/column.d.ts +15 -0
  308. package/src/features/sections/column.js +37 -0
  309. package/src/features/sections/index.d.ts +91 -0
  310. package/src/features/sections/index.js +1096 -0
  311. package/src/features/sections/margins.d.ts +40 -0
  312. package/src/features/sections/margins.js +105 -0
  313. package/src/features/sections/page-number-style.d.ts +21 -0
  314. package/src/features/sections/page-number-style.js +62 -0
  315. package/src/features/sections/page-orientation.d.ts +10 -0
  316. package/src/features/sections/page-orientation.js +10 -0
  317. package/src/features/sections/page-setup.d.ts +435 -0
  318. package/src/features/sections/page-setup.js +1479 -0
  319. package/src/features/sections/page-size.d.ts +59 -0
  320. package/src/features/sections/page-size.js +68 -0
  321. package/src/features/sections/section-break-code.d.ts +27 -0
  322. package/src/features/sections/section-break-code.js +60 -0
  323. package/src/features/sections/section-document-association.d.ts +18 -0
  324. package/src/features/sections/section-document-association.js +31 -0
  325. package/src/features/sections/section-validation.d.ts +43 -0
  326. package/src/features/sections/section-validation.js +97 -0
  327. package/src/features/settings/attached-template.d.ts +35 -0
  328. package/src/features/settings/attached-template.js +98 -0
  329. package/src/features/settings/compat-settings.d.ts +216 -0
  330. package/src/features/settings/compat-settings.js +508 -0
  331. package/src/features/settings/document-background.d.ts +59 -0
  332. package/src/features/settings/document-background.js +131 -0
  333. package/src/features/settings/document-protection.d.ts +65 -0
  334. package/src/features/settings/document-protection.js +157 -0
  335. package/src/features/settings/document-settings-facades.d.ts +108 -0
  336. package/src/features/settings/document-settings-facades.js +312 -0
  337. package/src/features/settings/document-settings-values.d.ts +43 -0
  338. package/src/features/settings/document-settings-values.js +60 -0
  339. package/src/features/settings/footnote-properties.d.ts +211 -0
  340. package/src/features/settings/footnote-properties.js +591 -0
  341. package/src/features/settings/index.d.ts +356 -0
  342. package/src/features/settings/index.js +829 -0
  343. package/src/features/settings/settings-children.d.ts +151 -0
  344. package/src/features/settings/settings-children.js +505 -0
  345. package/src/features/settings/web-settings.d.ts +88 -0
  346. package/src/features/settings/web-settings.js +227 -0
  347. package/src/features/settings/zoom.d.ts +79 -0
  348. package/src/features/settings/zoom.js +147 -0
  349. package/src/features/styles/builtin-catalog.d.ts +159 -0
  350. package/src/features/styles/builtin-catalog.js +963 -0
  351. package/src/features/styles/builtin-resolver.d.ts +49 -0
  352. package/src/features/styles/builtin-resolver.js +165 -0
  353. package/src/features/styles/default-styles.d.ts +37 -0
  354. package/src/features/styles/default-styles.js +186 -0
  355. package/src/features/styles/default-theme.d.ts +13 -0
  356. package/src/features/styles/default-theme.js +13 -0
  357. package/src/features/styles/doc-defaults.d.ts +58 -0
  358. package/src/features/styles/doc-defaults.js +178 -0
  359. package/src/features/styles/formatting-resolver.d.ts +27 -0
  360. package/src/features/styles/formatting-resolver.js +72 -0
  361. package/src/features/styles/index.d.ts +256 -0
  362. package/src/features/styles/index.js +1325 -0
  363. package/src/features/styles/latent-styles.d.ts +68 -0
  364. package/src/features/styles/latent-styles.js +305 -0
  365. package/src/features/styles/paragraph-properties.d.ts +71 -0
  366. package/src/features/styles/paragraph-properties.js +237 -0
  367. package/src/features/styles/run-properties.d.ts +93 -0
  368. package/src/features/styles/run-properties.js +516 -0
  369. package/src/features/styles/style-base.d.ts +402 -0
  370. package/src/features/styles/style-base.js +1026 -0
  371. package/src/features/styles/style-collection.d.ts +264 -0
  372. package/src/features/styles/style-collection.js +714 -0
  373. package/src/features/styles/style-format-bridge.d.ts +64 -0
  374. package/src/features/styles/style-format-bridge.js +100 -0
  375. package/src/features/styles/style.d.ts +84 -0
  376. package/src/features/styles/style.js +375 -0
  377. package/src/features/styles/styles-with-effects.d.ts +71 -0
  378. package/src/features/styles/styles-with-effects.js +180 -0
  379. package/src/features/styles/table-style.d.ts +272 -0
  380. package/src/features/styles/table-style.js +1226 -0
  381. package/src/features/styles/theme.d.ts +126 -0
  382. package/src/features/styles/theme.js +377 -0
  383. package/src/features/tables/border-style-map.d.ts +24 -0
  384. package/src/features/tables/border-style-map.js +81 -0
  385. package/src/features/tables/borders.d.ts +126 -0
  386. package/src/features/tables/borders.js +527 -0
  387. package/src/features/tables/collections.d.ts +113 -0
  388. package/src/features/tables/collections.js +261 -0
  389. package/src/features/tables/format.d.ts +208 -0
  390. package/src/features/tables/format.js +716 -0
  391. package/src/features/tables/index.d.ts +597 -0
  392. package/src/features/tables/index.js +2386 -0
  393. package/src/features/tables/paddings.d.ts +41 -0
  394. package/src/features/tables/paddings.js +97 -0
  395. package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
  396. package/src/features/tables/tbl-pr-positioning.js +178 -0
  397. package/src/features/tables/tbl-pr.d.ts +528 -0
  398. package/src/features/tables/tbl-pr.js +1208 -0
  399. package/src/features/tables/tc-pr.d.ts +168 -0
  400. package/src/features/tables/tc-pr.js +553 -0
  401. package/src/features/tables/tr-pr.d.ts +60 -0
  402. package/src/features/tables/tr-pr.js +215 -0
  403. package/src/features/watermark/detect.d.ts +76 -0
  404. package/src/features/watermark/detect.js +219 -0
  405. package/src/features/watermark/index.d.ts +28 -0
  406. package/src/features/watermark/index.js +91 -0
  407. package/src/features/watermark/logical-store.d.ts +29 -0
  408. package/src/features/watermark/logical-store.js +31 -0
  409. package/src/features/watermark/model.d.ts +285 -0
  410. package/src/features/watermark/model.js +597 -0
  411. package/src/features/watermark/parse.d.ts +84 -0
  412. package/src/features/watermark/parse.js +815 -0
  413. package/src/features/watermark/serialize.d.ts +98 -0
  414. package/src/features/watermark/serialize.js +1517 -0
  415. package/src/global.js +1 -0
  416. package/src/index.d.ts +2 -0
  417. package/src/index.js +2 -0
@@ -0,0 +1,692 @@
1
+ /**
2
+ * @fileoverview
3
+ *
4
+ * New ParagraphItem-based field model (Phase 1 of field DOM refactor).
5
+ *
6
+ * This module provides the refactored Field and FieldMark classes that extend
7
+ * ParagraphItem directly and appear in Paragraph.items without feature wrappers.
8
+ *
9
+ * The old facade Field (currently in index.ts) wraps SimpleField/ComplexField.
10
+ * The new Field (this module) represents a begin marker in the paragraph item stream.
11
+ *
12
+ * Migration path:
13
+ * 1. Add these new classes alongside existing Field facade
14
+ * 2. New code uses ParagraphItem-based classes directly from paragraph.items
15
+ * 3. Eventually deprecate and remove old facade in Phase 2+
16
+ *
17
+ * @private
18
+ */
19
+ var __extends = (this && this.__extends) || (function () {
20
+ var extendStatics = function (d, b) {
21
+ extendStatics = Object.setPrototypeOf ||
22
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
23
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24
+ return extendStatics(d, b);
25
+ };
26
+ return function (d, b) {
27
+ extendStatics(d, b);
28
+ function __() { this.constructor = d; }
29
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30
+ };
31
+ })();
32
+ var __read = (this && this.__read) || function (o, n) {
33
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
34
+ if (!m) return o;
35
+ var i = m.call(o), r, ar = [], e;
36
+ try {
37
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
38
+ }
39
+ catch (error) { e = { error: error }; }
40
+ finally {
41
+ try {
42
+ if (r && !r.done && (m = i["return"])) m.call(i);
43
+ }
44
+ finally { if (e) throw e.error; }
45
+ }
46
+ return ar;
47
+ };
48
+ var __spread = (this && this.__spread) || function () {
49
+ for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
50
+ return ar;
51
+ };
52
+ var __values = (this && this.__values) || function (o) {
53
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
54
+ if (m) return m.call(o);
55
+ return {
56
+ next: function () {
57
+ if (o && i >= o.length) o = void 0;
58
+ return { value: o && o[i++], done: !o };
59
+ }
60
+ };
61
+ };
62
+ import { DocxError } from '../../core/errors/docx-error';
63
+ import { ParagraphItem } from '../document/paragraph-item';
64
+ import { TextRange, WireRunGroup } from '../document/text-range';
65
+ import { wmlAttr, wmlElement } from '../document/wml';
66
+ // ============================================================================
67
+ // FieldMarkType and FieldMark
68
+ // ============================================================================
69
+ /**
70
+ * Marker type for field boundaries.
71
+ * @private
72
+ */
73
+ export var FieldMarkType = {
74
+ Separator: 'separate',
75
+ End: 'end',
76
+ };
77
+ /**
78
+ * Field boundary marker (separator or end position).
79
+ *
80
+ * Represents `w:fldChar` with `fldCharType="separate"` or `"end"`.
81
+ * The begin marker is represented by the Field class itself.
82
+ *
83
+ * @private
84
+ */
85
+ var FieldMark = /** @class */ (function (_super) {
86
+ __extends(FieldMark, _super);
87
+ /**
88
+ * Create a field mark (separator or end).
89
+ * @private
90
+ */
91
+ function FieldMark(type, fldLock, dirty, extras, wireGroup) {
92
+ var _this = _super.call(this) || this;
93
+ _this.typeValue = type;
94
+ _this.fldLockValue = fldLock;
95
+ _this.dirtyValue = dirty;
96
+ _this.extrasValue = extras;
97
+ _this.wireGroupValue = wireGroup != null ? wireGroup : new WireRunGroup();
98
+ return _this;
99
+ }
100
+ Object.defineProperty(FieldMark.prototype, "wireGroup", {
101
+ /**
102
+ * @private Shared `w:r` identity so fldChar serializes under `w:r`.
103
+ */
104
+ get: function () {
105
+ return this.wireGroupValue;
106
+ },
107
+ enumerable: true,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(FieldMark.prototype, "fieldMarkType", {
111
+ /**
112
+ * The marker type (Separator or End).
113
+ */
114
+ get: function () {
115
+ return this.typeValue;
116
+ },
117
+ enumerable: true,
118
+ configurable: true
119
+ });
120
+ /**
121
+ * Unmodeled child elements (includes w:ffData, etc).
122
+ * @private
123
+ */
124
+ FieldMark.prototype.childElements = function () {
125
+ return this.extrasValue;
126
+ };
127
+ /**
128
+ * @private
129
+ */
130
+ FieldMark.prototype.toOpenXml = function () {
131
+ var attributes = [
132
+ wmlAttr('fldCharType', this.typeValue)
133
+ ];
134
+ if (this.fldLockValue !== undefined) {
135
+ attributes.push(wmlAttr('fldLock', this.fldLockValue ? '1' : '0'));
136
+ }
137
+ if (this.dirtyValue !== undefined) {
138
+ attributes.push(wmlAttr('dirty', this.dirtyValue ? '1' : '0'));
139
+ }
140
+ return wmlElement('fldChar', {
141
+ attributes: attributes,
142
+ children: __spread(this.extrasValue)
143
+ });
144
+ };
145
+ return FieldMark;
146
+ }(ParagraphItem));
147
+ export { FieldMark };
148
+ /**
149
+ * Field begin marker (ParagraphItem-based).
150
+ *
151
+ * Represents `w:fldChar` with `fldCharType="begin"` and acts as a
152
+ * paragraph item itself, providing public field APIs.
153
+ *
154
+ * Structural model:
155
+ * - Field (begin) → instruction TextRange(s) → FieldMark(separate) → result → FieldMark(end)
156
+ *
157
+ * @private
158
+ */
159
+ var Field = /** @class */ (function (_super) {
160
+ __extends(Field, _super);
161
+ /**
162
+ * Create a field begin marker.
163
+ * @private
164
+ */
165
+ function Field(type, fldLock, dirty, extras, wireGroup) {
166
+ var _this = _super.call(this) || this;
167
+ _this.typeValue = type;
168
+ _this.fldLockValue = fldLock;
169
+ _this.dirtyValue = dirty;
170
+ _this.extrasValue = extras;
171
+ _this.wireGroupValue = wireGroup != null ? wireGroup : new WireRunGroup();
172
+ return _this;
173
+ }
174
+ Object.defineProperty(Field.prototype, "wireGroup", {
175
+ /**
176
+ * @private Shared `w:r` identity so begin fldChar serializes under `w:r`.
177
+ */
178
+ get: function () {
179
+ return this.wireGroupValue;
180
+ },
181
+ enumerable: true,
182
+ configurable: true
183
+ });
184
+ Object.defineProperty(Field.prototype, "fieldType", {
185
+ /**
186
+ * The field type (PAGE, NUMPAGES, IF, MERGEFIELD, HYPERLINK).
187
+ */
188
+ get: function () {
189
+ return this.typeValue;
190
+ },
191
+ enumerable: true,
192
+ configurable: true
193
+ });
194
+ Object.defineProperty(Field.prototype, "fieldCode", {
195
+ /**
196
+ * Complete field instruction (e.g., " PAGE ", " MERGEFIELD Name ").
197
+ *
198
+ * Getter: Concatenates all directly owned instruction TextRanges.
199
+ * Setter: Updates first instruction TextRange, clears others.
200
+ */
201
+ get: function () {
202
+ var paragraph = this.findParagraph();
203
+ if (paragraph === undefined) {
204
+ return '';
205
+ }
206
+ var ranges = collectFieldInstructionRanges(paragraph, this);
207
+ return concatenateTextRanges(ranges);
208
+ },
209
+ set: function (value) {
210
+ if (value.trim().length === 0) {
211
+ throw new DocxError('content/invalid-field', 'Field instruction must not be empty');
212
+ }
213
+ var keywordMatch = /^\s*(\S+)/.exec(value);
214
+ var keyword = keywordMatch !== null ? keywordMatch[1].toUpperCase() : '';
215
+ if (keyword !== this.typeValue) {
216
+ throw new DocxError('content/invalid-field', 'Field instruction keyword must match fieldType ' + this.typeValue);
217
+ }
218
+ var paragraph = this.findParagraph();
219
+ if (paragraph === undefined) {
220
+ throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
221
+ }
222
+ var ranges = collectFieldInstructionRanges(paragraph, this);
223
+ if (ranges.length > 0) {
224
+ var first = ranges[0];
225
+ if (first !== undefined) {
226
+ var trimmed = value.trim();
227
+ var padded = ' ' + trimmed + ' ';
228
+ first.text = padded;
229
+ // Clear remaining ranges
230
+ for (var i = 1; i < ranges.length; i += 1) {
231
+ var r = ranges[i];
232
+ if (r !== undefined) {
233
+ r.text = '';
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ enumerable: true,
240
+ configurable: true
241
+ });
242
+ Object.defineProperty(Field.prototype, "fieldValue", {
243
+ /**
244
+ * Cached field result text (read-only).
245
+ */
246
+ get: function () {
247
+ return this.text;
248
+ },
249
+ enumerable: true,
250
+ configurable: true
251
+ });
252
+ Object.defineProperty(Field.prototype, "text", {
253
+ /**
254
+ * Visible field result text.
255
+ */
256
+ get: function () {
257
+ var paragraph = this.findParagraph();
258
+ if (paragraph === undefined) {
259
+ return '';
260
+ }
261
+ var ranges = collectFieldResultTextRanges(paragraph, this);
262
+ return concatenateTextRanges(ranges);
263
+ },
264
+ set: function (value) {
265
+ var paragraph = this.findParagraph();
266
+ if (paragraph === undefined) {
267
+ throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
268
+ }
269
+ var ranges = collectFieldResultTextRanges(paragraph, this);
270
+ if (ranges.length === 0) {
271
+ throw new DocxError('content/invalid-field', 'Field has no text result');
272
+ }
273
+ var first = ranges[0];
274
+ if (first !== undefined) {
275
+ first.text = value;
276
+ for (var i = 1; i < ranges.length; i += 1) {
277
+ var r = ranges[i];
278
+ if (r !== undefined) {
279
+ r.text = '';
280
+ }
281
+ }
282
+ }
283
+ },
284
+ enumerable: true,
285
+ configurable: true
286
+ });
287
+ Object.defineProperty(Field.prototype, "characterFormat", {
288
+ /**
289
+ * Character formatting of the first result TextRange.
290
+ */
291
+ get: function () {
292
+ var paragraph = this.findParagraph();
293
+ if (paragraph === undefined) {
294
+ throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
295
+ }
296
+ var range = this.firstResultTextRange(paragraph);
297
+ if (range === undefined) {
298
+ throw new DocxError('content/invalid-field', 'Field does not contain a text result');
299
+ }
300
+ return range.characterFormat;
301
+ },
302
+ enumerable: true,
303
+ configurable: true
304
+ });
305
+ /**
306
+ * @private
307
+ * Begin marker: `w:fldChar` with `w:fldCharType="begin"` (ECMA-376-1 §17.16.18).
308
+ */
309
+ Field.prototype.toOpenXml = function () {
310
+ var attributes = [
311
+ wmlAttr('fldCharType', 'begin'),
312
+ ];
313
+ if (this.fldLockValue !== undefined) {
314
+ attributes.push(wmlAttr('fldLock', this.fldLockValue ? '1' : '0'));
315
+ }
316
+ if (this.dirtyValue !== undefined) {
317
+ attributes.push(wmlAttr('dirty', this.dirtyValue ? '1' : '0'));
318
+ }
319
+ return wmlElement('fldChar', {
320
+ attributes: attributes,
321
+ children: __spread(this.extrasValue)
322
+ });
323
+ };
324
+ // Private helpers
325
+ Field.prototype.findParagraph = function () {
326
+ var owner = this.owner;
327
+ // Check if owner is a Paragraph by duck-typing
328
+ if (owner === undefined || typeof owner !== 'object') {
329
+ return undefined;
330
+ }
331
+ // If it has items (ParagraphItemCollection), it's likely a Paragraph
332
+ if ('items' in owner) {
333
+ return owner;
334
+ }
335
+ return undefined;
336
+ };
337
+ Field.prototype.firstResultTextRange = function (paragraph) {
338
+ var ranges = collectFieldResultTextRanges(paragraph, this);
339
+ return ranges.length > 0 ? ranges[0] : undefined;
340
+ };
341
+ return Field;
342
+ }(ParagraphItem));
343
+ export { Field };
344
+ /**
345
+ * IF field (conditional).
346
+ * @private
347
+ */
348
+ var IfField = /** @class */ (function (_super) {
349
+ __extends(IfField, _super);
350
+ function IfField() {
351
+ return _super !== null && _super.apply(this, arguments) || this;
352
+ }
353
+ return IfField;
354
+ }(Field));
355
+ export { IfField };
356
+ /**
357
+ * MERGEFIELD (mail merge).
358
+ * @private
359
+ */
360
+ var MergeField = /** @class */ (function (_super) {
361
+ __extends(MergeField, _super);
362
+ function MergeField() {
363
+ return _super !== null && _super.apply(this, arguments) || this;
364
+ }
365
+ Object.defineProperty(MergeField.prototype, "fieldName", {
366
+ /**
367
+ * Field name (first operand of MERGEFIELD instruction).
368
+ */
369
+ get: function () {
370
+ var parsed = parseMergeFieldInstruction(this.fieldCode);
371
+ return parsed.fieldName;
372
+ },
373
+ set: function (value) {
374
+ var name = value.trim();
375
+ if (name.length === 0) {
376
+ throw new DocxError('content/invalid-field', 'MergeField fieldName must not be empty');
377
+ }
378
+ var parsed = parseMergeFieldInstruction(this.fieldCode);
379
+ parsed.fieldName = name;
380
+ this.fieldCode = formatMergeFieldInstruction(parsed);
381
+ },
382
+ enumerable: true,
383
+ configurable: true
384
+ });
385
+ return MergeField;
386
+ }(Field));
387
+ export { MergeField };
388
+ /**
389
+ * @private
390
+ * Determine if a TextRange is in field instruction region.
391
+ */
392
+ export function isFieldInstructionTextRange(paragraph, target) {
393
+ var stack = [];
394
+ var items = paragraph.items.snapshot();
395
+ for (var index = 0; index < items.length; index += 1) {
396
+ var item = items[index];
397
+ if (item instanceof Field) {
398
+ stack.push({
399
+ field: item,
400
+ phase: 'instruction'
401
+ });
402
+ continue;
403
+ }
404
+ if (item instanceof FieldMark) {
405
+ if (item.fieldMarkType === FieldMarkType.Separator) {
406
+ var current = stack.length > 0
407
+ ? stack[stack.length - 1]
408
+ : undefined;
409
+ if (current !== undefined) {
410
+ current.phase = 'result';
411
+ }
412
+ continue;
413
+ }
414
+ if (item.fieldMarkType === FieldMarkType.End) {
415
+ if (stack.length > 0) {
416
+ stack.pop();
417
+ }
418
+ continue;
419
+ }
420
+ }
421
+ if (item === target) {
422
+ if (!(item instanceof TextRange)) {
423
+ return false;
424
+ }
425
+ if (stack.length === 0) {
426
+ return false;
427
+ }
428
+ return stack[stack.length - 1].phase === 'instruction';
429
+ }
430
+ }
431
+ return false;
432
+ }
433
+ /**
434
+ * @private
435
+ * Depth-aware: collect instruction TextRanges owned directly by `field`
436
+ * (nested fields' instruction/result ranges are excluded).
437
+ */
438
+ export function collectFieldInstructionRanges(paragraph, field) {
439
+ var ranges = [];
440
+ var items = paragraph.items.snapshot();
441
+ var depth = 0;
442
+ var active = false;
443
+ var phase = 'instruction';
444
+ for (var index = 0; index < items.length; index += 1) {
445
+ var item = items[index];
446
+ if (item === field) {
447
+ active = true;
448
+ depth = 0;
449
+ phase = 'instruction';
450
+ continue;
451
+ }
452
+ if (!active) {
453
+ continue;
454
+ }
455
+ if (item instanceof Field) {
456
+ depth += 1;
457
+ continue;
458
+ }
459
+ if (item instanceof FieldMark) {
460
+ if (item.fieldMarkType === FieldMarkType.Separator) {
461
+ if (depth === 0) {
462
+ phase = 'result';
463
+ }
464
+ continue;
465
+ }
466
+ if (item.fieldMarkType === FieldMarkType.End) {
467
+ if (depth === 0) {
468
+ phase = 'done';
469
+ break;
470
+ }
471
+ depth -= 1;
472
+ continue;
473
+ }
474
+ }
475
+ if (phase === 'instruction' && depth === 0 && item instanceof TextRange) {
476
+ ranges.push(item);
477
+ }
478
+ }
479
+ return ranges;
480
+ }
481
+ /**
482
+ * @private
483
+ * Depth-aware: collect result TextRanges owned directly by `field`.
484
+ */
485
+ export function collectFieldResultTextRanges(paragraph, field) {
486
+ var ranges = [];
487
+ var items = paragraph.items.snapshot();
488
+ var depth = 0;
489
+ var active = false;
490
+ var phase = 'instruction';
491
+ for (var index = 0; index < items.length; index += 1) {
492
+ var item = items[index];
493
+ if (item === field) {
494
+ active = true;
495
+ depth = 0;
496
+ phase = 'instruction';
497
+ continue;
498
+ }
499
+ if (!active) {
500
+ continue;
501
+ }
502
+ if (item instanceof Field) {
503
+ depth += 1;
504
+ continue;
505
+ }
506
+ if (item instanceof FieldMark) {
507
+ if (item.fieldMarkType === FieldMarkType.Separator) {
508
+ if (depth === 0) {
509
+ phase = 'result';
510
+ }
511
+ continue;
512
+ }
513
+ if (item.fieldMarkType === FieldMarkType.End) {
514
+ if (depth === 0) {
515
+ phase = 'done';
516
+ break;
517
+ }
518
+ depth -= 1;
519
+ continue;
520
+ }
521
+ }
522
+ if (phase === 'result' && depth === 0 && item instanceof TextRange) {
523
+ ranges.push(item);
524
+ }
525
+ }
526
+ return ranges;
527
+ }
528
+ /**
529
+ * @private
530
+ * Depth-aware: collect direct result paragraph items for `field`.
531
+ */
532
+ export function collectFieldResultItems(paragraph, field) {
533
+ var result = [];
534
+ var allItems = paragraph.items.snapshot();
535
+ var depth = 0;
536
+ var active = false;
537
+ var phase = 'instruction';
538
+ for (var index = 0; index < allItems.length; index += 1) {
539
+ var item = allItems[index];
540
+ if (item === field) {
541
+ active = true;
542
+ depth = 0;
543
+ phase = 'instruction';
544
+ continue;
545
+ }
546
+ if (!active) {
547
+ continue;
548
+ }
549
+ if (item instanceof Field) {
550
+ if (phase === 'result' && depth === 0) {
551
+ result.push(item);
552
+ }
553
+ depth += 1;
554
+ continue;
555
+ }
556
+ if (item instanceof FieldMark) {
557
+ if (item.fieldMarkType === FieldMarkType.Separator) {
558
+ if (depth === 0) {
559
+ phase = 'result';
560
+ }
561
+ continue;
562
+ }
563
+ if (item.fieldMarkType === FieldMarkType.End) {
564
+ if (depth === 0) {
565
+ phase = 'done';
566
+ break;
567
+ }
568
+ depth -= 1;
569
+ continue;
570
+ }
571
+ }
572
+ if (phase === 'result' && depth === 0) {
573
+ result.push(item);
574
+ }
575
+ }
576
+ return result;
577
+ }
578
+ // ============================================================================
579
+ // Serialization Helpers
580
+ // ============================================================================
581
+ /**
582
+ * @private
583
+ * Concatenate text from TextRanges.
584
+ */
585
+ export function concatenateTextRanges(ranges) {
586
+ var e_1, _a;
587
+ var result = '';
588
+ try {
589
+ for (var ranges_1 = __values(ranges), ranges_1_1 = ranges_1.next(); !ranges_1_1.done; ranges_1_1 = ranges_1.next()) {
590
+ var range = ranges_1_1.value;
591
+ result += range.text;
592
+ }
593
+ }
594
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
595
+ finally {
596
+ try {
597
+ if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);
598
+ }
599
+ finally { if (e_1) throw e_1.error; }
600
+ }
601
+ return result;
602
+ }
603
+ /**
604
+ * @private
605
+ * Parse MERGEFIELD instruction to extract field name.
606
+ */
607
+ function parseMergeFieldInstruction(instruction) {
608
+ var tokens = tokenizeFieldInstruction(instruction);
609
+ var keyword = tokens[0];
610
+ var fieldName = tokens[1] || '';
611
+ return {
612
+ fieldName: fieldName,
613
+ tokens: tokens,
614
+ keyword: keyword
615
+ };
616
+ }
617
+ /**
618
+ * @private
619
+ * Format MERGEFIELD instruction from parsed state.
620
+ */
621
+ function formatMergeFieldInstruction(parsed) {
622
+ var tokens = __spread((parsed.tokens || []));
623
+ if (tokens.length > 0) {
624
+ tokens[0] = 'MERGEFIELD';
625
+ }
626
+ else {
627
+ tokens.push('MERGEFIELD');
628
+ }
629
+ if (tokens.length > 1) {
630
+ tokens[1] = parsed.fieldName;
631
+ }
632
+ else {
633
+ tokens.push(parsed.fieldName);
634
+ }
635
+ // Reconstruct instruction with proper spacing
636
+ return " " + tokens.join(' ') + " ";
637
+ }
638
+ /**
639
+ * @private
640
+ * Tokenize field instruction into whitespace- and quote-delimited tokens.
641
+ */
642
+ function tokenizeFieldInstruction(instruction) {
643
+ var tokens = [];
644
+ var source = instruction.trim();
645
+ var index = 0;
646
+ while (index < source.length) {
647
+ // Skip whitespace
648
+ while (index < source.length) {
649
+ var ch = source[index];
650
+ if (ch === undefined || !/\s/.test(ch)) {
651
+ break;
652
+ }
653
+ index += 1;
654
+ }
655
+ if (index >= source.length) {
656
+ break;
657
+ }
658
+ var startChar = source[index];
659
+ if (startChar === '"') {
660
+ // Quoted token
661
+ index += 1;
662
+ var value = '';
663
+ while (index < source.length) {
664
+ var ch = source[index];
665
+ if (ch === undefined || ch === '"') {
666
+ break;
667
+ }
668
+ value += ch;
669
+ index += 1;
670
+ }
671
+ if (index < source.length && source[index] === '"') {
672
+ index += 1;
673
+ }
674
+ tokens.push(value);
675
+ continue;
676
+ }
677
+ // Unquoted token
678
+ var token = '';
679
+ while (index < source.length) {
680
+ var ch = source[index];
681
+ if (ch === undefined || /\s/.test(ch) || ch === '"') {
682
+ break;
683
+ }
684
+ token += ch;
685
+ index += 1;
686
+ }
687
+ if (token.length > 0) {
688
+ tokens.push(token);
689
+ }
690
+ }
691
+ return tokens;
692
+ }