abstract-document 5.1.7 → 6.0.3

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 (649) hide show
  1. package/CHANGELOG.md +58 -15
  2. package/LICENSE +21 -0
  3. package/README.md +45 -45
  4. package/lib/{_tests_/abstract-document → abstract-document/__tests__}/hello-world-abstract-doc.d.ts +0 -0
  5. package/lib/abstract-document/__tests__/hello-world-abstract-doc.d.ts.map +1 -0
  6. package/lib/{_tests_/abstract-document → abstract-document/__tests__}/hello-world-abstract-doc.js +0 -0
  7. package/lib/{_tests_/abstract-document → abstract-document/__tests__}/hello-world-abstract-doc.js.map +1 -1
  8. package/lib/abstract-document/__tests__/markdown/export-test-def.d.ts +11 -0
  9. package/lib/abstract-document/__tests__/markdown/export-test-def.d.ts.map +1 -0
  10. package/lib/abstract-document/__tests__/markdown/export-test-def.js +3 -0
  11. package/lib/abstract-document/__tests__/markdown/export-test-def.js.map +1 -0
  12. package/lib/abstract-document/__tests__/markdown/export.test.d.ts +3 -0
  13. package/lib/abstract-document/__tests__/markdown/export.test.d.ts.map +1 -0
  14. package/lib/abstract-document/__tests__/markdown/export.test.js +19 -0
  15. package/lib/abstract-document/__tests__/markdown/export.test.js.map +1 -0
  16. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold-italic.d.ts +3 -0
  17. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold-italic.d.ts.map +1 -0
  18. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold-italic.js +35 -0
  19. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold-italic.js.map +1 -0
  20. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold.d.ts +3 -0
  21. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold.d.ts.map +1 -0
  22. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold.js +35 -0
  23. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-bold.js.map +1 -0
  24. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-empty-keepTogether.d.ts +3 -0
  25. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-empty-keepTogether.d.ts.map +1 -0
  26. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-empty-keepTogether.js +48 -0
  27. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-empty-keepTogether.js.map +1 -0
  28. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-header.d.ts +3 -0
  29. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-header.d.ts.map +1 -0
  30. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-header.js +42 -0
  31. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-header.js.map +1 -0
  32. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-italic.d.ts +3 -0
  33. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-italic.d.ts.map +1 -0
  34. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-italic.js +35 -0
  35. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-italic.js.map +1 -0
  36. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-keepTogether.d.ts +3 -0
  37. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-keepTogether.d.ts.map +1 -0
  38. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-keepTogether.js +55 -0
  39. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-keepTogether.js.map +1 -0
  40. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-subscript.d.ts +3 -0
  41. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-subscript.d.ts.map +1 -0
  42. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-subscript.js +49 -0
  43. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-subscript.js.map +1 -0
  44. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-superscript.d.ts +3 -0
  45. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-superscript.d.ts.map +1 -0
  46. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-superscript.js +42 -0
  47. package/lib/abstract-document/__tests__/markdown/test-defs/markdown-superscript.js.map +1 -0
  48. package/lib/{_tests_/abstract-document → abstract-document/__tests__}/model-builder._test.d.ts +0 -0
  49. package/lib/abstract-document/__tests__/model-builder._test.d.ts.map +1 -0
  50. package/lib/{_tests_/abstract-document → abstract-document/__tests__}/model-builder._test.js +0 -0
  51. package/lib/abstract-document/__tests__/model-builder._test.js.map +1 -0
  52. package/lib/abstract-document/markdown/markdown.js +1 -1
  53. package/lib/abstract-document/markdown/markdown.js.map +1 -1
  54. package/lib/abstract-document/resources.js +2 -2
  55. package/lib/abstract-document/resources.js.map +1 -1
  56. package/lib/abstract-document-exporters/__tests__/docx2/export-test-def.d.ts +13 -0
  57. package/lib/abstract-document-exporters/__tests__/docx2/export-test-def.d.ts.map +1 -0
  58. package/lib/abstract-document-exporters/__tests__/docx2/export-test-def.js +3 -0
  59. package/lib/abstract-document-exporters/__tests__/docx2/export-test-def.js.map +1 -0
  60. package/lib/abstract-document-exporters/__tests__/docx2/export.test.d.ts +3 -0
  61. package/lib/abstract-document-exporters/__tests__/docx2/export.test.d.ts.map +1 -0
  62. package/lib/abstract-document-exporters/__tests__/docx2/export.test.js +80 -0
  63. package/lib/abstract-document-exporters/__tests__/docx2/export.test.js.map +1 -0
  64. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/group.d.ts +3 -0
  65. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/group.d.ts.map +1 -0
  66. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/group.js +112 -0
  67. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/group.js.map +1 -0
  68. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/header-and-footer.d.ts +3 -0
  69. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/header-and-footer.d.ts.map +1 -0
  70. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/header-and-footer.js +120 -0
  71. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/header-and-footer.js.map +1 -0
  72. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/hello.d.ts +3 -0
  73. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/hello.d.ts.map +1 -0
  74. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/hello.js +70 -0
  75. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/hello.js.map +1 -0
  76. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-hyperlink-and-textrun.d.ts +3 -0
  77. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-hyperlink-and-textrun.d.ts.map +1 -0
  78. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-hyperlink-and-textrun.js +137 -0
  79. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-hyperlink-and-textrun.js.map +1 -0
  80. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.d.ts +3 -0
  81. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.d.ts.map +1 -0
  82. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.js +223 -0
  83. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.js.map +1 -0
  84. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.d.ts +3 -0
  85. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.d.ts.map +1 -0
  86. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.js +193 -0
  87. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.js.map +1 -0
  88. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-tables.d.ts +3 -0
  89. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-tables.d.ts.map +1 -0
  90. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-tables.js +520 -0
  91. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-tables.js.map +1 -0
  92. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-center-alignment.d.ts +3 -0
  93. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-center-alignment.d.ts.map +1 -0
  94. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-center-alignment.js +138 -0
  95. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-center-alignment.js.map +1 -0
  96. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-end-alignment.d.ts +3 -0
  97. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-end-alignment.d.ts.map +1 -0
  98. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-end-alignment.js +138 -0
  99. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-end-alignment.js.map +1 -0
  100. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.d.ts +3 -0
  101. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.d.ts.map +1 -0
  102. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.js +137 -0
  103. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.js.map +1 -0
  104. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment.d.ts +3 -0
  105. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment.d.ts.map +1 -0
  106. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment.js +137 -0
  107. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment.js.map +1 -0
  108. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/page-numbering.d.ts +3 -0
  109. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/page-numbering.d.ts.map +1 -0
  110. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/page-numbering.js +123 -0
  111. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/page-numbering.js.map +1 -0
  112. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table.d.ts +3 -0
  113. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table.d.ts.map +1 -0
  114. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table.js +195 -0
  115. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table.js.map +1 -0
  116. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-hyperlink.d.ts +3 -0
  117. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-hyperlink.d.ts.map +1 -0
  118. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-hyperlink.js +89 -0
  119. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-hyperlink.js.map +1 -0
  120. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.d.ts +3 -0
  121. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.d.ts.map +1 -0
  122. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.js +148 -0
  123. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-image.js.map +1 -0
  124. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment-that-linebreaks.d.ts +3 -0
  125. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment-that-linebreaks.d.ts.map +1 -0
  126. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment-that-linebreaks.js +107 -0
  127. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment-that-linebreaks.js.map +1 -0
  128. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment.d.ts +3 -0
  129. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment.d.ts.map +1 -0
  130. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment.js +107 -0
  131. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment.js.map +1 -0
  132. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment-that-linebreaks.d.ts +3 -0
  133. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment-that-linebreaks.d.ts.map +1 -0
  134. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment-that-linebreaks.js +107 -0
  135. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment-that-linebreaks.js.map +1 -0
  136. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment.d.ts +3 -0
  137. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment.d.ts.map +1 -0
  138. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment.js +107 -0
  139. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment.js.map +1 -0
  140. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment-that-linebreaks.d.ts +3 -0
  141. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment-that-linebreaks.d.ts.map +1 -0
  142. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment-that-linebreaks.js +107 -0
  143. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment-that-linebreaks.js.map +1 -0
  144. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment.d.ts +3 -0
  145. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment.d.ts.map +1 -0
  146. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment.js +107 -0
  147. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment.js.map +1 -0
  148. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun.d.ts +3 -0
  149. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun.d.ts.map +1 -0
  150. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun.js +87 -0
  151. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun.js.map +1 -0
  152. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/world.d.ts +3 -0
  153. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/world.d.ts.map +1 -0
  154. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/world.js +70 -0
  155. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/world.js.map +1 -0
  156. package/lib/abstract-document-exporters/__tests__/pdf/export-test-def.d.ts +11 -0
  157. package/lib/abstract-document-exporters/__tests__/pdf/export-test-def.d.ts.map +1 -0
  158. package/lib/abstract-document-exporters/__tests__/pdf/export-test-def.js +3 -0
  159. package/lib/abstract-document-exporters/__tests__/pdf/export-test-def.js.map +1 -0
  160. package/lib/abstract-document-exporters/__tests__/pdf/export.test.d.ts +3 -0
  161. package/lib/abstract-document-exporters/__tests__/pdf/export.test.d.ts.map +1 -0
  162. package/lib/abstract-document-exporters/__tests__/pdf/export.test.js +67 -0
  163. package/lib/abstract-document-exporters/__tests__/pdf/export.test.js.map +1 -0
  164. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/date.d.ts +3 -0
  165. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/date.d.ts.map +1 -0
  166. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/date.js +65 -0
  167. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/date.js.map +1 -0
  168. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-paragraphs.d.ts +3 -0
  169. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-paragraphs.d.ts.map +1 -0
  170. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-paragraphs.js +1270 -0
  171. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-paragraphs.js.map +1 -0
  172. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-tables.d.ts +3 -0
  173. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-tables.d.ts.map +1 -0
  174. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-tables.js +1291 -0
  175. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-tables.js.map +1 -0
  176. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.d.ts +3 -0
  177. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.d.ts.map +1 -0
  178. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.js +83 -0
  179. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.js.map +1 -0
  180. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/header-and-footer.d.ts +3 -0
  181. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/header-and-footer.d.ts.map +1 -0
  182. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/header-and-footer.js +172 -0
  183. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/header-and-footer.js.map +1 -0
  184. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/hello.d.ts +3 -0
  185. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/hello.d.ts.map +1 -0
  186. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/hello.js +45 -0
  187. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/hello.js.map +1 -0
  188. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/margins-header-body-footer.d.ts +3 -0
  189. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/margins-header-body-footer.d.ts.map +1 -0
  190. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/margins-header-body-footer.js +1014 -0
  191. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/margins-header-body-footer.js.map +1 -0
  192. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-hyperlink-and-textrun.d.ts +3 -0
  193. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-hyperlink-and-textrun.d.ts.map +1 -0
  194. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-hyperlink-and-textrun.js +113 -0
  195. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-hyperlink-and-textrun.js.map +1 -0
  196. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.d.ts +3 -0
  197. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.d.ts.map +1 -0
  198. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.js +115 -0
  199. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.js.map +1 -0
  200. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.d.ts +3 -0
  201. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.d.ts.map +1 -0
  202. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.js +82 -0
  203. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.js.map +1 -0
  204. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-center-alignment.d.ts +3 -0
  205. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-center-alignment.d.ts.map +1 -0
  206. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-center-alignment.js +117 -0
  207. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-center-alignment.js.map +1 -0
  208. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-end-alignment.d.ts +3 -0
  209. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-end-alignment.d.ts.map +1 -0
  210. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-end-alignment.js +117 -0
  211. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-end-alignment.js.map +1 -0
  212. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.d.ts +3 -0
  213. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.d.ts.map +1 -0
  214. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.js +132 -0
  215. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.js.map +1 -0
  216. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment.d.ts +3 -0
  217. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment.d.ts.map +1 -0
  218. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment.js +117 -0
  219. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment.js.map +1 -0
  220. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-numbering.d.ts +3 -0
  221. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-numbering.d.ts.map +1 -0
  222. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-numbering.js +97 -0
  223. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-numbering.js.map +1 -0
  224. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/pagebreak.d.ts +3 -0
  225. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/pagebreak.d.ts.map +1 -0
  226. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/pagebreak.js +101 -0
  227. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/pagebreak.js.map +1 -0
  228. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-auto-cell-widths.d.ts +3 -0
  229. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-auto-cell-widths.d.ts.map +1 -0
  230. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-auto-cell-widths.js +104 -0
  231. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-auto-cell-widths.js.map +1 -0
  232. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-fixed-cell-widths.d.ts +3 -0
  233. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-fixed-cell-widths.d.ts.map +1 -0
  234. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-fixed-cell-widths.js +104 -0
  235. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-fixed-cell-widths.js.map +1 -0
  236. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-auto-cell-widths.d.ts +3 -0
  237. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-auto-cell-widths.d.ts.map +1 -0
  238. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-auto-cell-widths.js +105 -0
  239. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-auto-cell-widths.js.map +1 -0
  240. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.d.ts +3 -0
  241. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.d.ts.map +1 -0
  242. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.js +197 -0
  243. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.js.map +1 -0
  244. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-text.d.ts +3 -0
  245. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-text.d.ts.map +1 -0
  246. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-text.js +331 -0
  247. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-text.js.map +1 -0
  248. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-center-alignment.d.ts +3 -0
  249. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-center-alignment.d.ts.map +1 -0
  250. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-center-alignment.js +119 -0
  251. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-center-alignment.js.map +1 -0
  252. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-fixed-cell-widths.d.ts +3 -0
  253. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-fixed-cell-widths.d.ts.map +1 -0
  254. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-fixed-cell-widths.js +104 -0
  255. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-fixed-cell-widths.js.map +1 -0
  256. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-mix-auto-fix-cell-widths.d.ts +3 -0
  257. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-mix-auto-fix-cell-widths.d.ts.map +1 -0
  258. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-mix-auto-fix-cell-widths.js +104 -0
  259. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-mix-auto-fix-cell-widths.js.map +1 -0
  260. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-padding.d.ts +3 -0
  261. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-padding.d.ts.map +1 -0
  262. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-padding.js +120 -0
  263. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-padding.js.map +1 -0
  264. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-right-alignment.d.ts +3 -0
  265. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-right-alignment.d.ts.map +1 -0
  266. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-right-alignment.js +119 -0
  267. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-right-alignment.js.map +1 -0
  268. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-row-alignment.d.ts +3 -0
  269. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-row-alignment.d.ts.map +1 -0
  270. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-row-alignment.js +292 -0
  271. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-row-alignment.js.map +1 -0
  272. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell-wrapping.d.ts +3 -0
  273. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell-wrapping.d.ts.map +1 -0
  274. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell-wrapping.js +486 -0
  275. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell-wrapping.js.map +1 -0
  276. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell.d.ts +3 -0
  277. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell.d.ts.map +1 -0
  278. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell.js +246 -0
  279. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell.js.map +1 -0
  280. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.d.ts +3 -0
  281. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.d.ts.map +1 -0
  282. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.js +104 -0
  283. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.js.map +1 -0
  284. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-hyperlink.d.ts +3 -0
  285. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-hyperlink.d.ts.map +1 -0
  286. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-hyperlink.js +65 -0
  287. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-hyperlink.js.map +1 -0
  288. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.d.ts +3 -0
  289. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.d.ts.map +1 -0
  290. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.js +283 -0
  291. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.js.map +1 -0
  292. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.d.ts +3 -0
  293. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.d.ts.map +1 -0
  294. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.js +283 -0
  295. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.js.map +1 -0
  296. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.d.ts +3 -0
  297. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.d.ts.map +1 -0
  298. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.js +108 -0
  299. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.js.map +1 -0
  300. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.d.ts +3 -0
  301. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.d.ts.map +1 -0
  302. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.js +81 -0
  303. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-image.js.map +1 -0
  304. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment-that-linebreaks.d.ts +3 -0
  305. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment-that-linebreaks.d.ts.map +1 -0
  306. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment-that-linebreaks.js +100 -0
  307. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment-that-linebreaks.js.map +1 -0
  308. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment.d.ts +3 -0
  309. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment.d.ts.map +1 -0
  310. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment.js +85 -0
  311. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment.js.map +1 -0
  312. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment-that-linebreaks.d.ts +3 -0
  313. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment-that-linebreaks.d.ts.map +1 -0
  314. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment-that-linebreaks.js +100 -0
  315. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment-that-linebreaks.js.map +1 -0
  316. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment.d.ts +3 -0
  317. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment.d.ts.map +1 -0
  318. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment.js +85 -0
  319. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment.js.map +1 -0
  320. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment-that-linebreaks.d.ts +3 -0
  321. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment-that-linebreaks.d.ts.map +1 -0
  322. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment-that-linebreaks.js +100 -0
  323. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment-that-linebreaks.js.map +1 -0
  324. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment.d.ts +3 -0
  325. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment.d.ts.map +1 -0
  326. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment.js +85 -0
  327. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment.js.map +1 -0
  328. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun.d.ts +3 -0
  329. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun.d.ts.map +1 -0
  330. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun.js +45 -0
  331. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun.js.map +1 -0
  332. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/table-of-content-separator.d.ts +3 -0
  333. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/table-of-content-separator.d.ts.map +1 -0
  334. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/table-of-content-separator.js +81 -0
  335. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/table-of-content-separator.js.map +1 -0
  336. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/world.d.ts +3 -0
  337. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/world.d.ts.map +1 -0
  338. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/world.js +45 -0
  339. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/world.js.map +1 -0
  340. package/lib/abstract-document-exporters/docx/xml-writer.d.ts.map +1 -1
  341. package/lib/abstract-document-exporters/docx/xml-writer.js +3 -6
  342. package/lib/abstract-document-exporters/docx/xml-writer.js.map +1 -1
  343. package/lib/abstract-document-exporters/docx2/render.js +63 -106
  344. package/lib/abstract-document-exporters/docx2/render.js.map +1 -1
  345. package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
  346. package/lib/abstract-document-exporters/pdf/font.js +6 -31
  347. package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
  348. package/lib/abstract-document-exporters/pdf/measure.js +40 -9
  349. package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
  350. package/lib/abstract-document-exporters/pdf/paginate.js +2 -2
  351. package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
  352. package/lib/abstract-document-exporters/pdf/pre-process.js +2 -2
  353. package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
  354. package/lib/abstract-document-exporters/pdf/render-image.d.ts +1 -1
  355. package/lib/abstract-document-exporters/pdf/render-image.d.ts.map +1 -1
  356. package/lib/abstract-document-exporters/pdf/render-image.js +25 -4
  357. package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
  358. package/lib/abstract-document-exporters/pdf/render.d.ts.map +1 -1
  359. package/lib/abstract-document-exporters/pdf/render.js +168 -80
  360. package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
  361. package/lib/abstract-document-exporters/shared/get_resources.js +1 -1
  362. package/lib/abstract-document-exporters/shared/get_resources.js.map +1 -1
  363. package/lib/abstract-document-jsx/index.d.ts +15 -15
  364. package/lib/abstract-document-jsx/index.d.ts.map +1 -1
  365. package/lib/abstract-document-jsx/index.js.map +1 -1
  366. package/package.json +9 -6
  367. package/src/{_tests_/abstract-document → abstract-document/__tests__}/hello-world-abstract-doc.ts +245 -245
  368. package/src/abstract-document/__tests__/markdown/export-test-def.ts +10 -0
  369. package/src/abstract-document/__tests__/markdown/export.test.tsx +15 -0
  370. package/src/abstract-document/__tests__/markdown/test-defs/markdown-bold-italic.tsx +30 -0
  371. package/src/abstract-document/__tests__/markdown/test-defs/markdown-bold.tsx +30 -0
  372. package/src/abstract-document/__tests__/markdown/test-defs/markdown-empty-keepTogether.tsx +43 -0
  373. package/src/abstract-document/__tests__/markdown/test-defs/markdown-header.tsx +37 -0
  374. package/src/abstract-document/__tests__/markdown/test-defs/markdown-italic.tsx +30 -0
  375. package/src/abstract-document/__tests__/markdown/test-defs/markdown-keepTogether.tsx +50 -0
  376. package/src/abstract-document/__tests__/markdown/test-defs/markdown-subscript.tsx +44 -0
  377. package/src/abstract-document/__tests__/markdown/test-defs/markdown-superscript.tsx +37 -0
  378. package/src/{_tests_/abstract-document → abstract-document/__tests__}/model-builder._test.ts +48 -48
  379. package/src/abstract-document/abstract-doc.ts +19 -19
  380. package/src/abstract-document/atoms/atom.ts +14 -14
  381. package/src/abstract-document/atoms/hyper-link.ts +27 -27
  382. package/src/abstract-document/atoms/image.ts +21 -21
  383. package/src/abstract-document/atoms/link-target.ts +15 -15
  384. package/src/abstract-document/atoms/text-field.ts +36 -36
  385. package/src/abstract-document/atoms/text-run.ts +25 -25
  386. package/src/abstract-document/atoms/toc-separator.ts +14 -14
  387. package/src/abstract-document/default-styles.ts +145 -145
  388. package/src/abstract-document/index.ts +83 -83
  389. package/src/abstract-document/markdown/markdown.ts +142 -142
  390. package/src/abstract-document/markdown/types.ts +78 -78
  391. package/src/abstract-document/numberings/numbering-definition.ts +17 -17
  392. package/src/abstract-document/numberings/numbering-format.ts +7 -7
  393. package/src/abstract-document/numberings/numbering-level-definition.ts +42 -42
  394. package/src/abstract-document/numberings/numbering.ts +3 -3
  395. package/src/abstract-document/page/master-page.ts +23 -23
  396. package/src/abstract-document/page/section.ts +27 -27
  397. package/src/abstract-document/primitives/font.ts +37 -37
  398. package/src/abstract-document/primitives/image-resource.ts +27 -27
  399. package/src/abstract-document/primitives/layout-foundation.ts +37 -37
  400. package/src/abstract-document/primitives/length.ts +11 -11
  401. package/src/abstract-document/primitives/point.ts +11 -11
  402. package/src/abstract-document/primitives/rect.ts +15 -15
  403. package/src/abstract-document/primitives/size.ts +13 -13
  404. package/src/abstract-document/resources.ts +101 -101
  405. package/src/abstract-document/section-elements/group.ts +25 -25
  406. package/src/abstract-document/section-elements/page-break.ts +14 -14
  407. package/src/abstract-document/section-elements/paragraph-numbering.ts +6 -6
  408. package/src/abstract-document/section-elements/paragraph.ts +30 -30
  409. package/src/abstract-document/section-elements/section-element.ts +6 -6
  410. package/src/abstract-document/section-elements/table.ts +37 -37
  411. package/src/abstract-document/styles/page-style.ts +76 -76
  412. package/src/abstract-document/styles/paragraph-style.ts +45 -45
  413. package/src/abstract-document/styles/style-key.ts +5 -5
  414. package/src/abstract-document/styles/style.ts +44 -44
  415. package/src/abstract-document/styles/table-cell-style.ts +54 -54
  416. package/src/abstract-document/styles/table-style.ts +45 -45
  417. package/src/abstract-document/styles/text-style.ts +73 -73
  418. package/src/abstract-document/table/table-cell.ts +29 -29
  419. package/src/abstract-document/table/table-row.ts +17 -17
  420. package/src/abstract-document/types.ts +3 -3
  421. package/src/abstract-document-exporters/__tests__/docx2/export-test-def.ts +10 -0
  422. package/src/abstract-document-exporters/__tests__/docx2/export.test.tsx +67 -0
  423. package/src/abstract-document-exporters/__tests__/docx2/test-defs/group.tsx +114 -0
  424. package/src/abstract-document-exporters/__tests__/docx2/test-defs/header-and-footer.tsx +110 -0
  425. package/src/abstract-document-exporters/__tests__/docx2/test-defs/hello.tsx +70 -0
  426. package/src/abstract-document-exporters/__tests__/docx2/test-defs/mixed-hyperlink-and-textrun.tsx +137 -0
  427. package/src/abstract-document-exporters/__tests__/docx2/test-defs/mixed-textrun-and-images.tsx +212 -0
  428. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-images.tsx +182 -0
  429. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-tables.tsx +553 -0
  430. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-center-alignment.tsx +119 -0
  431. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-end-alignment.tsx +119 -0
  432. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.tsx +121 -0
  433. package/src/abstract-document-exporters/__tests__/docx2/test-defs/multiple-textrun-with-start-alignment.tsx +118 -0
  434. package/src/abstract-document-exporters/__tests__/docx2/test-defs/page-numbering.tsx +123 -0
  435. package/src/abstract-document-exporters/__tests__/docx2/test-defs/simple-table.tsx +210 -0
  436. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-hyperlink.tsx +89 -0
  437. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-image.tsx +137 -0
  438. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment-that-linebreaks.tsx +88 -0
  439. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-center-alignment.tsx +88 -0
  440. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment-that-linebreaks.tsx +88 -0
  441. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-end-alignment.tsx +88 -0
  442. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment-that-linebreaks.tsx +88 -0
  443. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun-with-start-alignment.tsx +88 -0
  444. package/src/abstract-document-exporters/__tests__/docx2/test-defs/single-textrun.tsx +87 -0
  445. package/src/abstract-document-exporters/__tests__/docx2/test-defs/world.tsx +70 -0
  446. package/src/abstract-document-exporters/__tests__/docx2/tmp/Group.docx +0 -0
  447. footer.docx +0 -0
  448. textrun.docx +0 -0
  449. images.docx +0 -0
  450. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple images.docx +0 -0
  451. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple tables.docx +0 -0
  452. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Center alignment.docx +0 -0
  453. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with End alignment.docx +0 -0
  454. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment that linebreaks.docx +0 -0
  455. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment.docx +0 -0
  456. package/src/abstract-document-exporters/__tests__/docx2/tmp/Page numbering.docx +0 -0
  457. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table.docx +0 -0
  458. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single hyperlink.docx +0 -0
  459. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single image.docx +0 -0
  460. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment that linebreaks.docx +0 -0
  461. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment.docx +0 -0
  462. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment that linebreaks.docx +0 -0
  463. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment.docx +0 -0
  464. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment that linebreaks.docx +0 -0
  465. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment.docx +0 -0
  466. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun.docx +0 -0
  467. package/src/abstract-document-exporters/__tests__/docx2/tmp/hello.docx +0 -0
  468. package/src/abstract-document-exporters/__tests__/docx2/tmp/world.docx +0 -0
  469. package/src/abstract-document-exporters/__tests__/pdf/export-test-def.ts +10 -0
  470. package/src/abstract-document-exporters/__tests__/pdf/export.test.tsx +46 -0
  471. package/src/abstract-document-exporters/__tests__/pdf/test-defs/date.tsx +66 -0
  472. package/src/abstract-document-exporters/__tests__/pdf/test-defs/group-paragraphs.tsx +1291 -0
  473. package/src/abstract-document-exporters/__tests__/pdf/test-defs/group-tables.tsx +1314 -0
  474. package/src/abstract-document-exporters/__tests__/pdf/test-defs/header-and-footer.tsx +162 -0
  475. package/src/abstract-document-exporters/__tests__/pdf/test-defs/hello.tsx +45 -0
  476. package/src/abstract-document-exporters/__tests__/pdf/test-defs/margins-header-body-footer.tsx +1008 -0
  477. package/src/abstract-document-exporters/__tests__/pdf/test-defs/mixed-hyperlink-and-textrun.tsx +113 -0
  478. package/src/abstract-document-exporters/__tests__/pdf/test-defs/mixed-textrun-and-images.tsx +104 -0
  479. package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-images.tsx +71 -0
  480. package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-center-alignment.tsx +98 -0
  481. package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-end-alignment.tsx +98 -0
  482. package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment-that-linebreaks.tsx +116 -0
  483. package/src/abstract-document-exporters/__tests__/pdf/test-defs/multiple-textrun-with-start-alignment.tsx +98 -0
  484. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-numbering.tsx +97 -0
  485. package/src/abstract-document-exporters/__tests__/pdf/test-defs/pagebreak.tsx +102 -0
  486. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-auto-cell-widths.tsx +119 -0
  487. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-all-fixed-cell-widths.tsx +119 -0
  488. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-image.tsx +200 -0
  489. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-cell-padding-text.tsx +338 -0
  490. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-center-alignment.tsx +114 -0
  491. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-mix-auto-fix-cell-widths.tsx +119 -0
  492. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-padding.tsx +115 -0
  493. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-right-alignment.tsx +115 -0
  494. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-row-alignment.tsx +297 -0
  495. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell-wrapping.tsx +491 -0
  496. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-text-alignment-in-cell.tsx +248 -0
  497. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-hyperlink.tsx +65 -0
  498. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-hex.tsx +272 -0
  499. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-name.tsx +272 -0
  500. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image-svg-color-url.tsx +97 -0
  501. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-image.tsx +70 -0
  502. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment-that-linebreaks.tsx +81 -0
  503. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-center-alignment.tsx +66 -0
  504. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment-that-linebreaks.tsx +81 -0
  505. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-end-alignment.tsx +66 -0
  506. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment-that-linebreaks.tsx +81 -0
  507. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun-with-start-alignment.tsx +66 -0
  508. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-textrun.tsx +45 -0
  509. package/src/abstract-document-exporters/__tests__/pdf/test-defs/table-of-content-separator.tsx +81 -0
  510. package/src/abstract-document-exporters/__tests__/pdf/test-defs/world.tsx +45 -0
  511. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Paragraphs.pdf +912 -0
  512. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Paratraphs.pdf +912 -0
  513. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Tables.pdf +932 -0
  514. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group.pdf +123 -0
  515. package/src/abstract-document-exporters/__tests__/pdf/tmp/Header and footer.pdf +163 -0
  516. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer.pdf +678 -0
  517. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer1.pdf +640 -0
  518. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer2.pdf +609 -0
  519. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer3.pdf +1188 -0
  520. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer4.pdf +1188 -0
  521. package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun.pdf +206 -0
  522. images.pdf +0 -0
  523. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images.pdf +0 -0
  524. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Center alignment.pdf +133 -0
  525. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with End alignment.pdf +133 -0
  526. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment that linebreaks.pdf +141 -0
  527. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment.pdf +133 -0
  528. package/src/abstract-document-exporters/__tests__/pdf/tmp/Page numbering.pdf +133 -0
  529. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all auto.pdf +133 -0
  530. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all fix.pdf +133 -0
  531. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table auto.pdf +133 -0
  532. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of image.pdf +0 -0
  533. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of text.pdf +283 -0
  534. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table center alignment.pdf +133 -0
  535. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table mix auto fix.pdf +133 -0
  536. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table one auto.pdf +133 -0
  537. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table padding.pdf +133 -0
  538. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table padding1.pdf +133 -0
  539. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table right alignment.pdf +133 -0
  540. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table row alignment.pdf +247 -0
  541. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell with wrapping.pdf +295 -0
  542. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell.pdf +223 -0
  543. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table.pdf +133 -0
  544. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single date.pdf +113 -0
  545. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink.pdf +146 -0
  546. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color hex.pdf +179 -0
  547. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color name.pdf +179 -0
  548. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color url.pdf +222 -0
  549. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color.pdf +179 -0
  550. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image.pdf +0 -0
  551. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment that linebreaks.pdf +121 -0
  552. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment.pdf +113 -0
  553. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment that linebreaks.pdf +121 -0
  554. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment.pdf +113 -0
  555. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment that linebreaks.pdf +121 -0
  556. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment.pdf +113 -0
  557. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun.pdf +113 -0
  558. package/src/abstract-document-exporters/__tests__/pdf/tmp/Table of content separator.pdf +157 -0
  559. package/src/abstract-document-exporters/__tests__/pdf/tmp/hello.pdf +152 -0
  560. package/src/abstract-document-exporters/__tests__/pdf/tmp/world.pdf +113 -0
  561. package/src/abstract-document-exporters/docx/document-container.ts +18 -18
  562. package/src/abstract-document-exporters/docx/docx-constants.ts +46 -46
  563. package/src/abstract-document-exporters/docx/docx-document-renderer.ts +1084 -1084
  564. package/src/abstract-document-exporters/docx/ref-container.ts +53 -53
  565. package/src/abstract-document-exporters/docx/string-utils.ts +39 -39
  566. package/src/abstract-document-exporters/docx/xml-writer.ts +333 -388
  567. package/src/abstract-document-exporters/docx2/render-image.ts +159 -159
  568. package/src/abstract-document-exporters/docx2/render.ts +476 -554
  569. package/src/abstract-document-exporters/index.ts +5 -5
  570. package/src/abstract-document-exporters/pdf/font.ts +67 -88
  571. package/src/abstract-document-exporters/pdf/measure.ts +410 -364
  572. package/src/abstract-document-exporters/pdf/paginate.ts +337 -337
  573. package/src/abstract-document-exporters/pdf/pre-process.ts +363 -363
  574. package/src/abstract-document-exporters/pdf/render-image.ts +189 -166
  575. package/src/abstract-document-exporters/pdf/render.ts +752 -621
  576. package/src/abstract-document-exporters/pdf/update-refs.ts +163 -163
  577. package/src/abstract-document-exporters/shared/get_resources.ts +71 -71
  578. package/src/abstract-document-jsx/index.ts +86 -94
  579. package/src/index.ts +5 -5
  580. package/lib/_tests_/abstract-document/hello-world-abstract-doc.d.ts.map +0 -1
  581. package/lib/_tests_/abstract-document/model-builder._test.d.ts.map +0 -1
  582. package/lib/_tests_/abstract-document/model-builder._test.js.map +0 -1
  583. package/lib/_tests_/abstract-document-exporters/docx/docx-exporter._test.d.ts +0 -1
  584. package/lib/_tests_/abstract-document-exporters/docx/docx-exporter._test.d.ts.map +0 -1
  585. package/lib/_tests_/abstract-document-exporters/docx/docx-exporter._test.js +0 -385
  586. package/lib/_tests_/abstract-document-exporters/docx/docx-exporter._test.js.map +0 -1
  587. package/lib/_tests_/abstract-document-exporters/docx/docx.test.d.ts +0 -2
  588. package/lib/_tests_/abstract-document-exporters/docx/docx.test.d.ts.map +0 -1
  589. package/lib/_tests_/abstract-document-exporters/docx/docx.test.js +0 -96
  590. package/lib/_tests_/abstract-document-exporters/docx/docx.test.js.map +0 -1
  591. package/lib/_tests_/abstract-document-exporters/docx/hello-world-docx.d.ts +0 -6
  592. package/lib/_tests_/abstract-document-exporters/docx/hello-world-docx.d.ts.map +0 -1
  593. package/lib/_tests_/abstract-document-exporters/docx/hello-world-docx.js +0 -83
  594. package/lib/_tests_/abstract-document-exporters/docx/hello-world-docx.js.map +0 -1
  595. package/lib/_tests_/abstract-document-exporters/docx/xml-writer.test.d.ts +0 -2
  596. package/lib/_tests_/abstract-document-exporters/docx/xml-writer.test.d.ts.map +0 -1
  597. package/lib/_tests_/abstract-document-exporters/docx/xml-writer.test.js +0 -88
  598. package/lib/_tests_/abstract-document-exporters/docx/xml-writer.test.js.map +0 -1
  599. package/lib/_tests_/abstract-document-exporters/pdf/diaq._test.d.ts +0 -1
  600. package/lib/_tests_/abstract-document-exporters/pdf/diaq._test.d.ts.map +0 -1
  601. package/lib/_tests_/abstract-document-exporters/pdf/diaq._test.js +0 -92
  602. package/lib/_tests_/abstract-document-exporters/pdf/diaq._test.js.map +0 -1
  603. package/lib/_tests_/abstract-document-exporters/pdf/pdf-exporter.test.d.ts +0 -2
  604. package/lib/_tests_/abstract-document-exporters/pdf/pdf-exporter.test.d.ts.map +0 -1
  605. package/lib/_tests_/abstract-document-exporters/pdf/pdf-exporter.test.js +0 -717
  606. package/lib/_tests_/abstract-document-exporters/pdf/pdf-exporter.test.js.map +0 -1
  607. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/common.d.ts +0 -34
  608. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/common.d.ts.map +0 -1
  609. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/common.js +0 -43
  610. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/common.js.map +0 -1
  611. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-description.d.ts +0 -1
  612. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-description.d.ts.map +0 -1
  613. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-description.js +0 -108
  614. package/lib/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-description.js.map +0 -1
  615. package/lib/_tests_/abstract-document-exporters/test-utils/example-document.d.ts +0 -1
  616. package/lib/_tests_/abstract-document-exporters/test-utils/example-document.d.ts.map +0 -1
  617. package/lib/_tests_/abstract-document-exporters/test-utils/example-document.js +0 -233
  618. package/lib/_tests_/abstract-document-exporters/test-utils/example-document.js.map +0 -1
  619. package/lib/_tests_/abstract-document-exporters/test-utils/textrun.d.ts +0 -1
  620. package/lib/_tests_/abstract-document-exporters/test-utils/textrun.d.ts.map +0 -1
  621. package/lib/_tests_/abstract-document-exporters/test-utils/textrun.js +0 -194
  622. package/lib/_tests_/abstract-document-exporters/test-utils/textrun.js.map +0 -1
  623. package/src/_tests_/abstract-document-exporters/docx/docx-exporter._test.ts +0 -385
  624. package/src/_tests_/abstract-document-exporters/docx/docx.test.ts +0 -84
  625. package/src/_tests_/abstract-document-exporters/docx/hello-world-docx.ts +0 -83
  626. package/src/_tests_/abstract-document-exporters/docx/xml-writer.test.ts +0 -101
  627. package/src/_tests_/abstract-document-exporters/pdf/diaq._test.ts +0 -91
  628. package/src/_tests_/abstract-document-exporters/pdf/pdf-exporter.test.ts +0 -795
  629. package/src/_tests_/abstract-document-exporters/test-utils/diaq-reports/common.ts +0 -84
  630. package/src/_tests_/abstract-document-exporters/test-utils/diaq-reports/company-logo.png +0 -0
  631. package/src/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-description.ts +0 -108
  632. package/src/_tests_/abstract-document-exporters/test-utils/diaq-reports/product-image.jpeg +0 -0
  633. package/src/_tests_/abstract-document-exporters/test-utils/example-document.ts +0 -232
  634. package/src/_tests_/abstract-document-exporters/test-utils/googlelogo.png +0 -0
  635. package/src/_tests_/abstract-document-exporters/test-utils/textrun.ts +0 -194
  636. package/src/_tests_/fonts/ARIALN.TTF +0 -0
  637. package/src/_tests_/fonts/ARIALNB.TTF +0 -0
  638. package/src/_tests_/fonts/ARIALNBI.TTF +0 -0
  639. package/src/_tests_/fonts/ARIALNI.TTF +0 -0
  640. package/src/_tests_/fonts/Arial-Bold.ttf +0 -0
  641. package/src/_tests_/fonts/Arial-BoldOblique.ttf +0 -0
  642. package/src/_tests_/fonts/Arial-Oblique.ttf +0 -0
  643. package/src/_tests_/fonts/DaxlinePro-Regular_13131.ttf +0 -0
  644. package/src/_tests_/fonts/arial.ttf +0 -0
  645. package/src/_tests_/fonts/arialbd.ttf +0 -0
  646. package/src/_tests_/fonts/arialbi.ttf +0 -0
  647. package/src/_tests_/fonts/ariali.ttf +0 -0
  648. package/src/_tests_/fonts/ariblk.ttf +0 -0
  649. package/src/_tests_/images/diffusers.png +0 -0
@@ -1,554 +1,476 @@
1
- import * as AD from "../../abstract-document";
2
- import * as DOCXJS from "docx";
3
- import { renderImage } from "./render-image";
4
- import { Readable } from "stream";
5
-
6
- const abstractDocToDocxFontRatio = 2;
7
- const abstractDocPixelToDocxDXARatio = 20;
8
-
9
- export function exportToHTML5Blob(doc: AD.AbstractDoc.AbstractDoc): Promise<Blob> {
10
- return new Promise((resolve) => {
11
- const docx = createDocument(doc);
12
- DOCXJS.Packer.toBlob(docx).then((blob) => {
13
- resolve(blob);
14
- });
15
- });
16
- }
17
-
18
- export function exportToStream(blobStream: NodeJS.WritableStream, doc: AD.AbstractDoc.AbstractDoc): void {
19
- const docx = createDocument(doc);
20
-
21
- DOCXJS.Packer.toBuffer(docx).then((buffer) => {
22
- const readableStream = new Readable();
23
- readableStream.push(buffer);
24
- readableStream.push(null);
25
- readableStream.pipe(blobStream);
26
- });
27
- }
28
-
29
- /**
30
- * On the client side the stream can be a BlobStream from the blob-stream package.
31
- * On the server-side the stream can be a file stream from the fs package.
32
- * @param blobStream
33
- * @param doc
34
- */
35
-
36
- function createDocument(doc: AD.AbstractDoc.AbstractDoc): DOCXJS.Document {
37
- const docx = new DOCXJS.Document({
38
- sections: doc.children.map((s) => renderSection(s, doc)),
39
- });
40
- return docx;
41
- }
42
-
43
- function renderSection(section: AD.Section.Section, parentResources: AD.Resources.Resources): DOCXJS.ISectionOptions {
44
- const resources = AD.Resources.mergeResources([parentResources, section]);
45
-
46
- const headerChildren = section.page.header.reduce((sofar, c) => {
47
- sofar.push(...renderSectionElement(c, resources, 0, 0));
48
- return sofar;
49
- }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>);
50
-
51
- const footerChildren = [
52
- ...section.page.footer.reduce((sofar, c) => {
53
- sofar.push(
54
- ...renderSectionElement(
55
- c,
56
- resources,
57
- section.page.style.footerMargins.left,
58
- section.page.style.footerMargins.right
59
- )
60
- );
61
- return sofar;
62
- }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
63
- ];
64
-
65
- const contentChildren = [
66
- new DOCXJS.Paragraph({
67
- spacing: { before: 0, after: 0, line: 1 },
68
- children: [
69
- new DOCXJS.Bookmark({
70
- id: section.id,
71
- children: [],
72
- }),
73
- ],
74
- }),
75
- ...section.children.reduce((sofar, c) => {
76
- sofar.push(
77
- ...renderSectionElement(
78
- c,
79
- resources,
80
- section.page.style.contentMargins.left,
81
- section.page.style.contentMargins.right
82
- )
83
- );
84
- return sofar;
85
- }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
86
- ];
87
-
88
- return {
89
- properties: {
90
- page: {
91
- size: {
92
- orientation:
93
- section.page.style.orientation === "Landscape"
94
- ? DOCXJS.PageOrientation.LANDSCAPE
95
- : DOCXJS.PageOrientation.PORTRAIT,
96
- },
97
- margin: {
98
- bottom: section.page.style.contentMargins.bottom * abstractDocPixelToDocxDXARatio,
99
- top: section.page.style.contentMargins.top * abstractDocPixelToDocxDXARatio,
100
- right: 0,
101
- left: 0,
102
- header: section.page.style.headerMargins.top * abstractDocPixelToDocxDXARatio,
103
- footer: section.page.style.footerMargins.bottom * abstractDocPixelToDocxDXARatio,
104
- },
105
- },
106
- },
107
- headers: {
108
- default: new DOCXJS.Header({
109
- children: headerChildren,
110
- }),
111
- },
112
- footers: {
113
- default: new DOCXJS.Footer({
114
- children: footerChildren,
115
- }),
116
- },
117
- children: contentChildren,
118
- };
119
- }
120
-
121
- function renderHyperLink(
122
- hyperLink: AD.HyperLink.HyperLink,
123
- style: AD.TextStyle.TextStyle
124
- ): DOCXJS.InternalHyperlink | DOCXJS.ExternalHyperlink {
125
- const fontSize = AD.TextStyle.calculateFontSize(style, 10) * 2;
126
- const textRun = new DOCXJS.TextRun({
127
- text: hyperLink.text,
128
- font: "Arial",
129
- size: fontSize,
130
- color: style.color || "blue",
131
- bold: style.bold,
132
- underline: style.underline
133
- ? {
134
- color: style.color || "blue",
135
- type: DOCXJS.UnderlineType.SINGLE,
136
- }
137
- : undefined,
138
- });
139
-
140
- if (hyperLink.target.startsWith("#") && !hyperLink.target.startsWith("#page=")) {
141
- return new DOCXJS.InternalHyperlink({
142
- anchor: hyperLink.target,
143
- child: textRun,
144
- });
145
- } else {
146
- return new DOCXJS.ExternalHyperlink({
147
- link: hyperLink.target,
148
- child: textRun,
149
- });
150
- }
151
- }
152
-
153
- function renderSectionElement(
154
- element: AD.SectionElement.SectionElement,
155
- parentResources: AD.Resources.Resources,
156
- left: number,
157
- right: number
158
- ): ReadonlyArray<DOCXJS.Paragraph | DOCXJS.Table> /*| DOCXJS.TableOfContents | DOCXJS.HyperlinkRef */ {
159
- const resources = AD.Resources.mergeResources([parentResources, element]);
160
- switch (element.type) {
161
- case "Paragraph":
162
- return [renderParagraph(element, resources, left, right)];
163
- case "Group":
164
- return [...renderGroup(element, parentResources, left, right)];
165
- case "Table":
166
- return [renderTable(element, resources, left, right)];
167
- case "PageBreak":
168
- return [
169
- new DOCXJS.Paragraph({
170
- pageBreakBefore: true,
171
- }),
172
- ];
173
- default:
174
- return [new DOCXJS.Paragraph({})];
175
- }
176
- }
177
-
178
- function getTableColumns(table: AD.Table.Table): ReadonlyArray<string> {
179
- let i = [];
180
- for (const row of table.children) {
181
- for (const _cell of row.children) {
182
- i.push("");
183
- }
184
- }
185
- return i;
186
- }
187
-
188
- function getLengthOfFiniteColumns(table: AD.Table.Table): number {
189
- return (
190
- table.columnWidths.reduce((sofar, columnWidth) => {
191
- if (isFinite(columnWidth)) {
192
- sofar += columnWidth;
193
- }
194
- return sofar;
195
- }, 0) * abstractDocPixelToDocxDXARatio
196
- );
197
- }
198
-
199
- function abstractColumnWidthToDocxDxaWidth(table: AD.Table.Table, tableWidth: number): [Array<number>, boolean] {
200
- const numberOfColumns = getTableColumns(table);
201
- const lengthOfFiniteColumns = getLengthOfFiniteColumns(table);
202
- // All columns have infinite length, spreed them evenly where tableLength = 100%
203
- if (table.columnWidths.every((columnWidth) => !isFinite(columnWidth))) {
204
- return [numberOfColumns.map((_c) => tableWidth / numberOfColumns.length), true];
205
- } else if (table.columnWidths.find((columnWidth) => !isFinite(columnWidth))) {
206
- const spaceLeft = tableWidth - lengthOfFiniteColumns;
207
- const infiniteColumns = table.columnWidths.filter((columnWidth) => !isFinite(columnWidth));
208
- return [
209
- // One or more columns are infinite, but not all
210
- table.columnWidths.map((columnWidth) => {
211
- if (isFinite(columnWidth)) {
212
- return columnWidth * abstractDocPixelToDocxDXARatio;
213
- } else {
214
- return spaceLeft / infiniteColumns.length;
215
- }
216
- }),
217
- true,
218
- ];
219
- } else {
220
- // All columns have specific width, not one is infinite, we add one more cell the length of the remaining space
221
- return [
222
- [
223
- ...(table.style.alignment === "Right" ? [tableWidth - lengthOfFiniteColumns] : []),
224
- ...table.columnWidths.map((columnWidth) => columnWidth * abstractDocPixelToDocxDXARatio),
225
- ...(table.style.alignment === "Left" ? [tableWidth - lengthOfFiniteColumns] : []),
226
- ],
227
- false,
228
- ];
229
- }
230
- }
231
-
232
- function renderTable(
233
- table: AD.Table.Table,
234
- resources: AD.Resources.Resources,
235
- left: number,
236
- right: number
237
- ): DOCXJS.Table {
238
- const style = AD.Resources.getStyle(
239
- undefined,
240
- table.style,
241
- "TableStyle",
242
- table.styleName,
243
- resources
244
- ) as AD.TableStyle.TableStyle;
245
-
246
- //Temporary workaround for margins/indent not working as expected on Table.
247
- //Waiting for a new version of docx to fix https://github.com/dolanmiu/docx/issues/801 for tables aswell
248
- //Indent will be added for tables which then can be used for a cleaner solution
249
- const docxPageWidthDxa = 11890;
250
- const totalWidth = docxPageWidthDxa - left * abstractDocPixelToDocxDXARatio - right * abstractDocPixelToDocxDXARatio;
251
- const [columnWidthsDxa, hasInfinite] = abstractColumnWidthToDocxDxaWidth(table, totalWidth);
252
-
253
- return new DOCXJS.Table({
254
- alignment: DOCXJS.AlignmentType.CENTER,
255
-
256
- width: {
257
- type: DOCXJS.WidthType.DXA,
258
- size: totalWidth,
259
- },
260
- layout: DOCXJS.TableLayoutType.FIXED,
261
- columnWidths: columnWidthsDxa,
262
- borders: {
263
- top: {
264
- color: style.cellStyle.borderColor ?? "",
265
- size: 0,
266
- style: DOCXJS.BorderStyle.NONE,
267
- },
268
- right: {
269
- color: style.cellStyle.borderColor ?? "",
270
- size: 0,
271
- style: DOCXJS.BorderStyle.NONE,
272
- },
273
- bottom: {
274
- color: style.cellStyle.borderColor ?? "",
275
- size: 0,
276
- style: DOCXJS.BorderStyle.NONE,
277
- },
278
- left: {
279
- color: style.cellStyle.borderColor ?? "",
280
- size: 0,
281
- style: DOCXJS.BorderStyle.NONE,
282
- },
283
- insideHorizontal: {
284
- color: style.cellStyle.borderColor ?? "",
285
- size: 0,
286
- style: DOCXJS.BorderStyle.NONE,
287
- },
288
- insideVertical: {
289
- color: style.cellStyle.borderColor ?? "",
290
- size: 0,
291
- style: DOCXJS.BorderStyle.NONE,
292
- },
293
- },
294
- rows: table.children.map((c) => renderRow(c, resources, style.cellStyle, hasInfinite, table.style.alignment)),
295
- });
296
- }
297
-
298
- function renderRow(
299
- row: AD.TableRow.TableRow,
300
- resources: AD.Resources.Resources,
301
- tableCellStyle: AD.TableCellStyle.TableCellStyle,
302
- hasInfinite: boolean,
303
- alignment: AD.TableStyle.TableAlignment | undefined
304
- ): DOCXJS.TableRow {
305
- const children = row.children.map((c, ix) => renderCell(c, resources, tableCellStyle));
306
- const emptyColumn = new DOCXJS.TableCell({
307
- children: [new DOCXJS.Paragraph("")],
308
- });
309
-
310
- return new DOCXJS.TableRow({
311
- cantSplit: true,
312
- height: {
313
- value: 250,
314
- rule: DOCXJS.HeightRule.ATLEAST,
315
- },
316
- children: [
317
- ...(alignment === "Right" && !hasInfinite ? [emptyColumn] : []),
318
- ...children,
319
- ...(alignment === "Left" && !hasInfinite ? [emptyColumn] : []),
320
- ],
321
- });
322
- }
323
-
324
- function renderCell(
325
- cell: AD.TableCell.TableCell,
326
- resources: AD.Resources.Resources,
327
- tableCellStyle: AD.TableCellStyle.TableCellStyle
328
- ): DOCXJS.TableCell {
329
- const style = AD.Resources.getStyle(
330
- tableCellStyle,
331
- cell.style,
332
- "TableCellStyle",
333
- cell.styleName,
334
- resources
335
- ) as AD.TableCellStyle.TableCellStyle;
336
-
337
- return new DOCXJS.TableCell({
338
- verticalAlign:
339
- (style.verticalAlignment && style.verticalAlignment === "Top"
340
- ? DOCXJS.VerticalAlign.TOP
341
- : style.verticalAlignment === "Bottom"
342
- ? DOCXJS.VerticalAlign.BOTTOM
343
- : DOCXJS.VerticalAlign.CENTER) || undefined,
344
- shading: {
345
- fill: style.background ? style.background : undefined,
346
- },
347
- margins: {
348
- top: Math.max(style.padding.top, 0) * abstractDocPixelToDocxDXARatio,
349
- bottom: Math.max(style.padding.bottom, 0) * abstractDocPixelToDocxDXARatio,
350
- left: Math.max(style.padding.left, 0) * abstractDocPixelToDocxDXARatio,
351
- right: Math.max(style.padding.right, 0) * abstractDocPixelToDocxDXARatio,
352
- },
353
- columnSpan: cell.columnSpan,
354
- borders: {
355
- top: {
356
- color: style.borderColor ?? "",
357
- size: style.borders.top,
358
- style: style.borders.top ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
359
- },
360
- right: {
361
- color: style.borderColor ?? "",
362
- size: style.borders.right,
363
- style: style.borders.right ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
364
- },
365
- bottom: {
366
- color: style.borderColor ?? "",
367
- size: style.borders.bottom,
368
- style: style.borders.bottom ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
369
- },
370
- left: {
371
- color: style.borderColor ?? "",
372
- size: style.borders.left,
373
- style: style.borders.left ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
374
- },
375
- },
376
-
377
- children: cell.children.reduce((sofar, c) => {
378
- sofar.push(...renderSectionElement(c, resources, 0, 0));
379
- return sofar;
380
- }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
381
- });
382
- }
383
-
384
- function renderAtom(
385
- resources: AD.Resources.Resources,
386
- textStyle: AD.TextStyle.TextStyle,
387
- atom: AD.Atom.Atom
388
- ):
389
- | DOCXJS.TextRun
390
- | DOCXJS.ImageRun
391
- | DOCXJS.SymbolRun
392
- | DOCXJS.Bookmark
393
- | DOCXJS.PageBreak
394
- | DOCXJS.SequentialIdentifier
395
- | DOCXJS.FootnoteReferenceRun
396
- | DOCXJS.InsertedTextRun
397
- | DOCXJS.DeletedTextRun
398
- | DOCXJS.InternalHyperlink
399
- | DOCXJS.ExternalHyperlink
400
- | DOCXJS.Math {
401
- switch (atom.type) {
402
- case "TextField":
403
- return renderTextField(resources, textStyle, atom);
404
- case "TextRun":
405
- return renderTextRun(resources, textStyle, atom);
406
- case "Image":
407
- return renderImage(atom, textStyle);
408
- case "HyperLink":
409
- return renderHyperLink(atom, textStyle);
410
- default:
411
- return new DOCXJS.TextRun({ text: "missed" }); // TODO
412
- }
413
- }
414
-
415
- function renderTextField(
416
- resources: AD.Resources.Resources,
417
- textStyle: AD.TextStyle.TextStyle,
418
- textField: AD.TextField.TextField
419
- ): DOCXJS.TextRun {
420
- const style = AD.Resources.getStyle(
421
- textStyle,
422
- textField.style,
423
- "TextStyle",
424
- textField.styleName,
425
- resources
426
- ) as AD.TextStyle.TextStyle;
427
- switch (textField.fieldType) {
428
- case "Date":
429
- return renderText(style, new Date(Date.now()).toDateString());
430
- case "PageNumber":
431
- return renderPageNumber(style);
432
- case "TotalPages":
433
- return renderTotalPages(style);
434
- default:
435
- return renderText(style, "");
436
- }
437
- }
438
-
439
- function renderTextRun(
440
- resources: AD.Resources.Resources,
441
- textStyle: AD.TextStyle.TextStyle,
442
- textRun: AD.TextRun.TextRun
443
- ): DOCXJS.TextRun {
444
- const style = AD.Resources.getNestedStyle(
445
- textStyle,
446
- textRun.style,
447
- "TextStyle",
448
- textRun.styleName,
449
- resources,
450
- textRun.nestedStyleNames || []
451
- ) as AD.TextStyle.TextStyle;
452
-
453
- return renderText(style, textRun.text);
454
- }
455
-
456
- function renderPageNumber(style: AD.TextStyle.TextStyle): DOCXJS.TextRun {
457
- const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
458
- return new DOCXJS.TextRun({
459
- font: "Arial",
460
- size: fontSize,
461
- color: style.color || "black",
462
- bold: style.bold,
463
- underline: style.underline
464
- ? {
465
- color: style.color,
466
- type: DOCXJS.UnderlineType.SINGLE,
467
- }
468
- : undefined,
469
- children: [DOCXJS.PageNumber.CURRENT],
470
- });
471
- }
472
-
473
- function renderTotalPages(style: AD.TextStyle.TextStyle): DOCXJS.TextRun {
474
- const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
475
- return new DOCXJS.TextRun({
476
- font: "Arial",
477
- size: fontSize,
478
- color: style.color || "black",
479
- bold: style.bold,
480
- underline: style.underline
481
- ? {
482
- color: style.color,
483
- type: DOCXJS.UnderlineType.SINGLE,
484
- }
485
- : undefined,
486
- children: [DOCXJS.PageNumber.TOTAL_PAGES],
487
- });
488
- }
489
-
490
- function renderText(style: AD.TextStyle.TextStyle, text: string): DOCXJS.TextRun {
491
- const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
492
-
493
- return new DOCXJS.TextRun({
494
- text: text,
495
- font: "Arial",
496
- size: fontSize,
497
- color: style.color || "black",
498
- bold: style.bold,
499
- underline: style.underline
500
- ? {
501
- color: style.color,
502
- type: DOCXJS.UnderlineType.SINGLE,
503
- }
504
- : undefined,
505
- });
506
- }
507
-
508
- function renderGroup(
509
- group: AD.Group.Group,
510
- resources: AD.Resources.Resources,
511
- left: number,
512
- right: number
513
- ): Array<DOCXJS.Paragraph | DOCXJS.Table> {
514
- return group.children.reduce((sofar, c) => {
515
- sofar.push(...renderSectionElement(c, resources, left, right));
516
- return sofar;
517
- }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>);
518
- }
519
-
520
- function renderParagraph(
521
- paragraph: AD.Paragraph.Paragraph,
522
- resources: AD.Resources.Resources,
523
- left: number,
524
- right: number
525
- ): DOCXJS.Paragraph {
526
- const style = AD.Resources.getStyle(
527
- undefined,
528
- paragraph.style,
529
- "ParagraphStyle",
530
- paragraph.styleName,
531
- resources
532
- ) as AD.ParagraphStyle.ParagraphStyle;
533
-
534
- return new DOCXJS.Paragraph({
535
- alignment:
536
- (style.alignment &&
537
- (style.alignment === "Center"
538
- ? DOCXJS.AlignmentType.CENTER
539
- : style.alignment === "End"
540
- ? DOCXJS.AlignmentType.END
541
- : DOCXJS.AlignmentType.START)) ||
542
- undefined,
543
-
544
- spacing: {
545
- before: Math.max(style.margins.top, 0) * abstractDocPixelToDocxDXARatio,
546
- after: Math.max(style.margins.bottom, 0) * abstractDocPixelToDocxDXARatio,
547
- },
548
- indent: {
549
- left: Math.max(style.margins.left, 0) * abstractDocPixelToDocxDXARatio + left * abstractDocPixelToDocxDXARatio,
550
- right: Math.max(style.margins.right, 0) * abstractDocPixelToDocxDXARatio + right * abstractDocPixelToDocxDXARatio,
551
- },
552
- children: paragraph.children.map((atom) => renderAtom(resources, style.textStyle, atom)),
553
- });
554
- }
1
+ import * as AD from "../../abstract-document";
2
+ import * as DOCXJS from "docx";
3
+ import { renderImage } from "./render-image";
4
+ import { Readable } from "stream";
5
+
6
+ const abstractDocToDocxFontRatio = 2;
7
+ const abstractDocPixelToDocxDXARatio = 20;
8
+
9
+ export function exportToHTML5Blob(doc: AD.AbstractDoc.AbstractDoc): Promise<Blob> {
10
+ return new Promise((resolve) => {
11
+ const docx = createDocument(doc);
12
+ DOCXJS.Packer.toBlob(docx).then((blob) => {
13
+ resolve(blob);
14
+ });
15
+ });
16
+ }
17
+
18
+ export function exportToStream(blobStream: NodeJS.WritableStream, doc: AD.AbstractDoc.AbstractDoc): void {
19
+ const docx = createDocument(doc);
20
+
21
+ DOCXJS.Packer.toBuffer(docx).then((buffer) => {
22
+ const readableStream = new Readable();
23
+ readableStream.push(buffer);
24
+ readableStream.push(null);
25
+ readableStream.pipe(blobStream);
26
+ });
27
+ }
28
+
29
+ /**
30
+ * On the client side the stream can be a BlobStream from the blob-stream package.
31
+ * On the server-side the stream can be a file stream from the fs package.
32
+ * @param blobStream
33
+ * @param doc
34
+ */
35
+
36
+ function createDocument(doc: AD.AbstractDoc.AbstractDoc): DOCXJS.Document {
37
+ const docx = new DOCXJS.Document({
38
+ sections: doc.children.map((s) => renderSection(s, doc)),
39
+ });
40
+ return docx;
41
+ }
42
+
43
+ function renderSection(section: AD.Section.Section, parentResources: AD.Resources.Resources): DOCXJS.ISectionOptions {
44
+ const resources = AD.Resources.mergeResources([parentResources, section]);
45
+
46
+ const headerChildren = section.page.header.reduce((sofar, c) => {
47
+ sofar.push(...renderSectionElement(c, resources));
48
+ return sofar;
49
+ }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>);
50
+
51
+ const footerChildren = [
52
+ ...section.page.footer.reduce((sofar, c) => {
53
+ sofar.push(...renderSectionElement(c, resources));
54
+ return sofar;
55
+ }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
56
+ ];
57
+
58
+ const contentChildren = [
59
+ new DOCXJS.Paragraph({
60
+ spacing: { before: 0, after: 0, line: 1 },
61
+ children: [
62
+ new DOCXJS.Bookmark({
63
+ id: section.id,
64
+ children: [],
65
+ }),
66
+ ],
67
+ }),
68
+ ...section.children.reduce((sofar, c) => {
69
+ sofar.push(...renderSectionElement(c, resources));
70
+ return sofar;
71
+ }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
72
+ ];
73
+
74
+ return {
75
+ properties: {
76
+ page: {
77
+ size: {
78
+ orientation:
79
+ section.page.style.orientation === "Landscape"
80
+ ? DOCXJS.PageOrientation.LANDSCAPE
81
+ : DOCXJS.PageOrientation.PORTRAIT,
82
+ },
83
+ margin: {
84
+ bottom: section.page.style.contentMargins.bottom * abstractDocPixelToDocxDXARatio,
85
+ top: section.page.style.contentMargins.top * abstractDocPixelToDocxDXARatio,
86
+ right: section.page.style.contentMargins.right * abstractDocPixelToDocxDXARatio,
87
+ left: section.page.style.contentMargins.left * abstractDocPixelToDocxDXARatio,
88
+ header: section.page.style.headerMargins.top * abstractDocPixelToDocxDXARatio,
89
+ footer: section.page.style.footerMargins.bottom * abstractDocPixelToDocxDXARatio,
90
+ },
91
+ },
92
+ },
93
+ headers: {
94
+ default: new DOCXJS.Header({
95
+ children: headerChildren,
96
+ }),
97
+ },
98
+ footers: {
99
+ default: new DOCXJS.Footer({
100
+ children: footerChildren,
101
+ }),
102
+ },
103
+ children: contentChildren,
104
+ };
105
+ }
106
+
107
+ function renderHyperLink(
108
+ hyperLink: AD.HyperLink.HyperLink,
109
+ style: AD.TextStyle.TextStyle
110
+ ): DOCXJS.InternalHyperlink | DOCXJS.ExternalHyperlink {
111
+ const fontSize = AD.TextStyle.calculateFontSize(style, 10) * 2;
112
+ const textRun = new DOCXJS.TextRun({
113
+ text: hyperLink.text,
114
+ font: "Arial",
115
+ size: fontSize,
116
+ color: style.color || "blue",
117
+ bold: style.bold,
118
+ underline: style.underline
119
+ ? {
120
+ color: style.color || "blue",
121
+ type: DOCXJS.UnderlineType.SINGLE,
122
+ }
123
+ : undefined,
124
+ });
125
+
126
+ if (hyperLink.target.startsWith("#") && !hyperLink.target.startsWith("#page=")) {
127
+ return new DOCXJS.InternalHyperlink({
128
+ anchor: hyperLink.target,
129
+ child: textRun,
130
+ });
131
+ } else {
132
+ return new DOCXJS.ExternalHyperlink({
133
+ link: hyperLink.target,
134
+ child: textRun,
135
+ });
136
+ }
137
+ }
138
+
139
+ function renderSectionElement(
140
+ element: AD.SectionElement.SectionElement,
141
+ parentResources: AD.Resources.Resources
142
+ ): ReadonlyArray<DOCXJS.Paragraph | DOCXJS.Table> /*| DOCXJS.TableOfContents | DOCXJS.HyperlinkRef */ {
143
+ const resources = AD.Resources.mergeResources([parentResources, element]);
144
+ switch (element.type) {
145
+ case "Paragraph":
146
+ return [renderParagraph(element, resources)];
147
+ case "Group":
148
+ return [...renderGroup(element, parentResources)];
149
+ case "Table":
150
+ return [
151
+ renderTable(element, resources),
152
+ new DOCXJS.Paragraph({ children: [new DOCXJS.TextRun({ text: ".", size: 0.000001 })] }),
153
+ ];
154
+ case "PageBreak":
155
+ return [
156
+ new DOCXJS.Paragraph({
157
+ pageBreakBefore: true,
158
+ }),
159
+ ];
160
+ default:
161
+ return [new DOCXJS.Paragraph({})];
162
+ }
163
+ }
164
+
165
+ function renderTable(table: AD.Table.Table, resources: AD.Resources.Resources): DOCXJS.Table {
166
+ const style = AD.Resources.getStyle(
167
+ undefined,
168
+ table.style,
169
+ "TableStyle",
170
+ table.styleName,
171
+ resources
172
+ ) as AD.TableStyle.TableStyle;
173
+
174
+ const fullWidth = table.columnWidths.some((c) => !Number.isFinite(c));
175
+ const columnWidths = table.columnWidths.map((c) => c * abstractDocPixelToDocxDXARatio);
176
+ return new DOCXJS.Table({
177
+ alignment:
178
+ style.alignment === "Left"
179
+ ? DOCXJS.AlignmentType.LEFT
180
+ : style.alignment === "Right"
181
+ ? DOCXJS.AlignmentType.RIGHT
182
+ : DOCXJS.AlignmentType.CENTER,
183
+ margins: {
184
+ top: style.margins.top * abstractDocPixelToDocxDXARatio,
185
+ bottom: style.margins.bottom * abstractDocPixelToDocxDXARatio,
186
+ left: style.margins.left * abstractDocPixelToDocxDXARatio,
187
+ right: style.margins.right * abstractDocPixelToDocxDXARatio,
188
+ },
189
+ width: fullWidth
190
+ ? {
191
+ size: 100,
192
+ type: DOCXJS.WidthType.PERCENTAGE,
193
+ }
194
+ : {
195
+ type: DOCXJS.WidthType.DXA,
196
+ size: columnWidths.reduce((a, b) => a + b),
197
+ },
198
+ borders: {
199
+ top: {
200
+ color: style.cellStyle.borderColor ?? "",
201
+ size: 0,
202
+ style: DOCXJS.BorderStyle.NONE,
203
+ },
204
+ right: {
205
+ color: style.cellStyle.borderColor ?? "",
206
+ size: 0,
207
+ style: DOCXJS.BorderStyle.NONE,
208
+ },
209
+ bottom: {
210
+ color: style.cellStyle.borderColor ?? "",
211
+ size: 0,
212
+ style: DOCXJS.BorderStyle.NONE,
213
+ },
214
+ left: {
215
+ color: style.cellStyle.borderColor ?? "",
216
+ size: 0,
217
+ style: DOCXJS.BorderStyle.NONE,
218
+ },
219
+ insideHorizontal: {
220
+ color: style.cellStyle.borderColor ?? "",
221
+ size: 0,
222
+ style: DOCXJS.BorderStyle.NONE,
223
+ },
224
+ insideVertical: {
225
+ color: style.cellStyle.borderColor ?? "",
226
+ size: 0,
227
+ style: DOCXJS.BorderStyle.NONE,
228
+ },
229
+ },
230
+ rows: table.children.map((c) => renderRow(c, resources, style.cellStyle, columnWidths)),
231
+ });
232
+ }
233
+
234
+ function renderRow(
235
+ row: AD.TableRow.TableRow,
236
+ resources: AD.Resources.Resources,
237
+ tableCellStyle: AD.TableCellStyle.TableCellStyle,
238
+ columnWidths: ReadonlyArray<number>
239
+ ): DOCXJS.TableRow {
240
+ return new DOCXJS.TableRow({
241
+ cantSplit: true,
242
+ children: row.children.map((c, ix) => renderCell(c, resources, tableCellStyle, columnWidths[ix])),
243
+ });
244
+ }
245
+
246
+ function renderCell(
247
+ cell: AD.TableCell.TableCell,
248
+ resources: AD.Resources.Resources,
249
+ tableCellStyle: AD.TableCellStyle.TableCellStyle,
250
+ width: number
251
+ ): DOCXJS.TableCell {
252
+ const style = AD.Resources.getStyle(
253
+ tableCellStyle,
254
+ cell.style,
255
+ "TableCellStyle",
256
+ cell.styleName,
257
+ resources
258
+ ) as AD.TableCellStyle.TableCellStyle;
259
+
260
+ return new DOCXJS.TableCell({
261
+ verticalAlign:
262
+ (style.verticalAlignment && style.verticalAlignment === "Top"
263
+ ? DOCXJS.VerticalAlign.TOP
264
+ : style.verticalAlignment === "Bottom"
265
+ ? DOCXJS.VerticalAlign.BOTTOM
266
+ : DOCXJS.VerticalAlign.CENTER) || undefined,
267
+ shading: {
268
+ fill: style.background ? style.background : undefined,
269
+ },
270
+ columnSpan: cell.columnSpan,
271
+ width: isFinite(width)
272
+ ? {
273
+ type: DOCXJS.WidthType.DXA,
274
+ size: width,
275
+ }
276
+ : {
277
+ type: DOCXJS.WidthType.AUTO,
278
+ size: "",
279
+ },
280
+ margins: {
281
+ top: Math.max(style.padding.top, 0) * abstractDocPixelToDocxDXARatio,
282
+ bottom: Math.max(style.padding.bottom, 0) * abstractDocPixelToDocxDXARatio,
283
+ left: Math.max(style.padding.left, 0) * abstractDocPixelToDocxDXARatio,
284
+ right: Math.max(style.padding.right, 0) * abstractDocPixelToDocxDXARatio,
285
+ },
286
+ borders: {
287
+ top: {
288
+ color: style.borderColor ?? "",
289
+ size: style.borders.top,
290
+ style: style.borders.top ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
291
+ },
292
+ right: {
293
+ color: style.borderColor ?? "",
294
+ size: style.borders.right,
295
+ style: style.borders.right ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
296
+ },
297
+ bottom: {
298
+ color: style.borderColor ?? "",
299
+ size: style.borders.bottom,
300
+ style: style.borders.bottom ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
301
+ },
302
+ left: {
303
+ color: style.borderColor ?? "",
304
+ size: style.borders.left,
305
+ style: style.borders.left ? DOCXJS.BorderStyle.SINGLE : DOCXJS.BorderStyle.NONE,
306
+ },
307
+ },
308
+
309
+ children: cell.children.reduce((sofar, c) => {
310
+ sofar.push(...renderSectionElement(c, resources));
311
+ return sofar;
312
+ }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>),
313
+ });
314
+ }
315
+
316
+ function renderAtom(
317
+ resources: AD.Resources.Resources,
318
+ textStyle: AD.TextStyle.TextStyle,
319
+ atom: AD.Atom.Atom
320
+ ):
321
+ | DOCXJS.TextRun
322
+ | DOCXJS.ImageRun
323
+ | DOCXJS.SymbolRun
324
+ | DOCXJS.Bookmark
325
+ | DOCXJS.PageBreak
326
+ | DOCXJS.SequentialIdentifier
327
+ | DOCXJS.FootnoteReferenceRun
328
+ | DOCXJS.InsertedTextRun
329
+ | DOCXJS.DeletedTextRun
330
+ | DOCXJS.InternalHyperlink
331
+ | DOCXJS.ExternalHyperlink
332
+ | DOCXJS.Math {
333
+ switch (atom.type) {
334
+ case "TextField":
335
+ return renderTextField(resources, textStyle, atom);
336
+ case "TextRun":
337
+ return renderTextRun(resources, textStyle, atom);
338
+ case "Image":
339
+ return renderImage(atom, textStyle);
340
+ case "HyperLink":
341
+ return renderHyperLink(atom, textStyle);
342
+ default:
343
+ return new DOCXJS.TextRun({ text: "missed" }); // TODO
344
+ }
345
+ }
346
+
347
+ function renderTextField(
348
+ resources: AD.Resources.Resources,
349
+ textStyle: AD.TextStyle.TextStyle,
350
+ textField: AD.TextField.TextField
351
+ ): DOCXJS.TextRun {
352
+ const style = AD.Resources.getStyle(
353
+ textStyle,
354
+ textField.style,
355
+ "TextStyle",
356
+ textField.styleName,
357
+ resources
358
+ ) as AD.TextStyle.TextStyle;
359
+ switch (textField.fieldType) {
360
+ case "Date":
361
+ return renderText(style, new Date(Date.now()).toDateString());
362
+ case "PageNumber":
363
+ return renderPageNumber(style);
364
+ case "TotalPages":
365
+ return renderTotalPages(style);
366
+ default:
367
+ return renderText(style, "");
368
+ }
369
+ }
370
+
371
+ function renderTextRun(
372
+ resources: AD.Resources.Resources,
373
+ textStyle: AD.TextStyle.TextStyle,
374
+ textRun: AD.TextRun.TextRun
375
+ ): DOCXJS.TextRun {
376
+ const style = AD.Resources.getNestedStyle(
377
+ textStyle,
378
+ textRun.style,
379
+ "TextStyle",
380
+ textRun.styleName,
381
+ resources,
382
+ textRun.nestedStyleNames || []
383
+ ) as AD.TextStyle.TextStyle;
384
+
385
+ return renderText(style, textRun.text);
386
+ }
387
+
388
+ function renderPageNumber(style: AD.TextStyle.TextStyle): DOCXJS.TextRun {
389
+ const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
390
+ return new DOCXJS.TextRun({
391
+ font: "Arial",
392
+ size: fontSize,
393
+ color: style.color || "black",
394
+ bold: style.bold,
395
+ underline: style.underline
396
+ ? {
397
+ color: style.color,
398
+ type: DOCXJS.UnderlineType.SINGLE,
399
+ }
400
+ : undefined,
401
+ children: [DOCXJS.PageNumber.CURRENT],
402
+ });
403
+ }
404
+
405
+ function renderTotalPages(style: AD.TextStyle.TextStyle): DOCXJS.TextRun {
406
+ const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
407
+ return new DOCXJS.TextRun({
408
+ font: "Arial",
409
+ size: fontSize,
410
+ color: style.color || "black",
411
+ bold: style.bold,
412
+ underline: style.underline
413
+ ? {
414
+ color: style.color,
415
+ type: DOCXJS.UnderlineType.SINGLE,
416
+ }
417
+ : undefined,
418
+ children: [DOCXJS.PageNumber.TOTAL_PAGES],
419
+ });
420
+ }
421
+
422
+ function renderText(style: AD.TextStyle.TextStyle, text: string): DOCXJS.TextRun {
423
+ const fontSize = AD.TextStyle.calculateFontSize(style, 10) * abstractDocToDocxFontRatio;
424
+
425
+ return new DOCXJS.TextRun({
426
+ text: text,
427
+ font: "Arial",
428
+ size: fontSize,
429
+ color: style.color || "black",
430
+ bold: style.bold,
431
+ underline: style.underline
432
+ ? {
433
+ color: style.color,
434
+ type: DOCXJS.UnderlineType.SINGLE,
435
+ }
436
+ : undefined,
437
+ });
438
+ }
439
+
440
+ function renderGroup(group: AD.Group.Group, resources: AD.Resources.Resources): Array<DOCXJS.Paragraph | DOCXJS.Table> {
441
+ return group.children.reduce((sofar, c) => {
442
+ sofar.push(...renderSectionElement(c, resources));
443
+ return sofar;
444
+ }, [] as Array<DOCXJS.Paragraph | DOCXJS.Table>);
445
+ }
446
+
447
+ function renderParagraph(paragraph: AD.Paragraph.Paragraph, resources: AD.Resources.Resources): DOCXJS.Paragraph {
448
+ const style = AD.Resources.getStyle(
449
+ undefined,
450
+ paragraph.style,
451
+ "ParagraphStyle",
452
+ paragraph.styleName,
453
+ resources
454
+ ) as AD.ParagraphStyle.ParagraphStyle;
455
+
456
+ return new DOCXJS.Paragraph({
457
+ alignment:
458
+ (style.alignment &&
459
+ (style.alignment === "Center"
460
+ ? DOCXJS.AlignmentType.CENTER
461
+ : style.alignment === "End"
462
+ ? DOCXJS.AlignmentType.END
463
+ : DOCXJS.AlignmentType.START)) ||
464
+ undefined,
465
+
466
+ spacing: {
467
+ before: Math.max(style.margins.top, 0) * abstractDocPixelToDocxDXARatio,
468
+ after: Math.max(style.margins.bottom, 0) * abstractDocPixelToDocxDXARatio,
469
+ },
470
+ indent: {
471
+ left: Math.max(style.margins.left, 0) * abstractDocPixelToDocxDXARatio,
472
+ right: Math.max(style.margins.right, 0) * abstractDocPixelToDocxDXARatio,
473
+ },
474
+ children: paragraph.children.map((atom) => renderAtom(resources, style.textStyle, atom)),
475
+ });
476
+ }