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,364 +1,410 @@
1
- import * as R from "ramda";
2
- import * as AD from "../../abstract-document/index";
3
- import { exhaustiveCheck } from "ts-exhaustive-check";
4
- import { Page } from "./paginate";
5
- import { registerFonts, getFontName } from "./font";
6
-
7
- //tslint:disable:no-any variable-name
8
-
9
- export function measure(PDFDocument: any, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
10
- let pdf = new PDFDocument();
11
- registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
12
- return mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
13
- }
14
-
15
- export function measurePages(
16
- PDFDocument: any,
17
- document: AD.AbstractDoc.AbstractDoc,
18
- pages: ReadonlyArray<Page>
19
- ): Map<any, AD.Size.Size> {
20
- let pdf = new PDFDocument();
21
- registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
22
- return mergeMaps(
23
- pages.map((page) => measureSection(pdf, document, page.section, page.header, page.footer, page.elements))
24
- );
25
- }
26
-
27
- function measureSection(
28
- pdf: any,
29
- parentResources: AD.Resources.Resources,
30
- section: AD.Section.Section,
31
- separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
32
- separateFooter?: ReadonlyArray<AD.SectionElement.SectionElement>,
33
- separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>
34
- ): Map<any, AD.Size.Size> {
35
- const header = separateHeader || section.page.header;
36
- const footer = separateFooter || section.page.footer;
37
- const children = separateChildren || section.children;
38
-
39
- const pageWidth = AD.PageStyle.getWidth(section.page.style);
40
- const pageHeight = AD.PageStyle.getHeight(section.page.style);
41
- const resources = AD.Resources.mergeResources([section, parentResources]);
42
-
43
- const contentAvailableWidth =
44
- pageWidth - (section.page.style.contentMargins.left + section.page.style.contentMargins.right);
45
- const contentAvailableSize = AD.Size.create(contentAvailableWidth, pageHeight);
46
- const sectionSizes = children.map((e) => measureSectionElement(pdf, resources, contentAvailableSize, e));
47
-
48
- const headerAvailableWidth =
49
- pageWidth - (section.page.style.headerMargins.left + section.page.style.headerMargins.right);
50
- const headerAvailableSize = AD.Size.create(headerAvailableWidth, pageHeight);
51
- const headerSizes = header.map((e) => measureSectionElement(pdf, resources, headerAvailableSize, e));
52
-
53
- const footerAvailableWidth =
54
- pageWidth - (section.page.style.footerMargins.left + section.page.style.footerMargins.right);
55
- const footerAvailableSize = AD.Size.create(footerAvailableWidth, pageHeight);
56
- const footerSizes = footer.map((e) => measureSectionElement(pdf, resources, footerAvailableSize, e));
57
-
58
- return mergeMaps(R.unnest([sectionSizes, headerSizes, footerSizes]));
59
- }
60
-
61
- function measureSectionElement(
62
- pdf: any,
63
- parentResources: AD.Resources.Resources,
64
- availableSize: AD.Size.Size,
65
- element: AD.SectionElement.SectionElement
66
- ): Map<any, AD.Size.Size> {
67
- const resources = AD.Resources.mergeResources([parentResources, element]);
68
- switch (element.type) {
69
- case "Paragraph":
70
- return measureParagraph(pdf, resources, availableSize, element);
71
- case "Table":
72
- return measureTable(pdf, resources, availableSize, element);
73
- case "Group":
74
- return measureGroup(pdf, resources, availableSize, element);
75
- case "PageBreak":
76
- return measurePageBreak(availableSize, element);
77
- default:
78
- return exhaustiveCheck(element);
79
- }
80
- }
81
-
82
- function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.PageBreak): Map<any, AD.Size.Size> {
83
- let desiredSizes = new Map<any, AD.Size.Size>();
84
- desiredSizes.set(pageBreak, availableSize);
85
- return desiredSizes;
86
- }
87
-
88
- function measureParagraph(
89
- pdf: any,
90
- resources: AD.Resources.Resources,
91
- availableSize: AD.Size.Size,
92
- paragraph: AD.Paragraph.Paragraph
93
- ): Map<any, AD.Size.Size> {
94
- const style = AD.Resources.getStyle(
95
- undefined,
96
- paragraph.style,
97
- "ParagraphStyle",
98
- paragraph.styleName,
99
- resources
100
- ) as AD.ParagraphStyle.ParagraphStyle;
101
- const contentAvailableWidth = availableSize.width - (style.margins.left + style.margins.left);
102
- const contentAvailableHeight = availableSize.height - (style.margins.top + style.margins.bottom);
103
- const contentAvailableSize = AD.Size.create(contentAvailableWidth, contentAvailableHeight);
104
-
105
- let desiredHeight = style.margins.top + style.margins.bottom;
106
- let currentRowWidth = 0;
107
- let currentRowHeight = 0;
108
- let desiredSizes = new Map<any, AD.Size.Size>();
109
- for (let atom of paragraph.children) {
110
- const atomSize = measureAtom(
111
- pdf,
112
- resources,
113
- style.textStyle,
114
- contentAvailableSize,
115
- contentAvailableSize.width - currentRowWidth,
116
- atom
117
- );
118
- desiredSizes.set(atom, atomSize);
119
- currentRowWidth += atomSize.width;
120
- currentRowHeight = Math.max(atomSize.height, currentRowHeight);
121
- if (currentRowWidth + atomSize.width > contentAvailableSize.width) {
122
- desiredHeight += currentRowHeight;
123
- currentRowWidth = 0;
124
- currentRowHeight = 0;
125
- }
126
- }
127
- desiredHeight += currentRowHeight;
128
-
129
- desiredSizes.set(paragraph, AD.Size.create(availableSize.width, desiredHeight));
130
-
131
- return desiredSizes;
132
- }
133
-
134
- function measureTable(
135
- pdf: any,
136
- resources: AD.Resources.Resources,
137
- availableSize: AD.Size.Size,
138
- table: AD.Table.Table
139
- ): Map<any, AD.Size.Size> {
140
- const style = AD.Resources.getStyle(
141
- undefined,
142
- table.style,
143
- "TableStyle",
144
- table.styleName,
145
- resources
146
- ) as AD.TableStyle.TableStyle;
147
- const tableAvailableWidth = availableSize.width - (style.margins.left + style.margins.right);
148
- const numInfinityColumns = table.columnWidths.filter((w) => !isFinite(w)).length;
149
- const fixedColumnsWidth = table.columnWidths.filter((w) => isFinite(w)).reduce((a, b) => a + b, 0);
150
- const infinityWidth = (tableAvailableWidth - fixedColumnsWidth) / numInfinityColumns;
151
- const columnWidths = table.columnWidths.map((w) => (isFinite(w) ? w : infinityWidth));
152
- const desiredSizes = new Map<any, AD.Size.Size>();
153
-
154
- for (let row of table.children) {
155
- let column = 0;
156
- for (let cell of row.children) {
157
- const cellStyle = AD.Resources.getStyle(
158
- style.cellStyle,
159
- cell.style,
160
- "TableCellStyle",
161
- cell.styleName,
162
- resources
163
- ) as AD.TableCellStyle.TableCellStyle;
164
- const cellWidth = columnWidths.slice(column, column + cell.columnSpan).reduce((a, b) => a + b, 0);
165
-
166
- const contentAvailableWidth = cellWidth - (cellStyle.padding.left + cellStyle.padding.right);
167
- let cellDesiredHeight = cellStyle.padding.top + cellStyle.padding.bottom;
168
-
169
- for (let element of cell.children) {
170
- const elementAvailableSize = AD.Size.create(contentAvailableWidth, Infinity);
171
- const elementSizes = measureSectionElement(pdf, resources, elementAvailableSize, element);
172
- elementSizes.forEach((v, k) => desiredSizes.set(k, v));
173
- const elementSize = getDesiredSize(element, desiredSizes);
174
- cellDesiredHeight += elementSize.height;
175
- }
176
-
177
- desiredSizes.set(cell, AD.Size.create(cellWidth, cellDesiredHeight));
178
- column += cell.columnSpan;
179
- }
180
- }
181
-
182
- const desiredWidth = table.columnWidths.some((w) => !isFinite(w))
183
- ? availableSize.width
184
- : table.columnWidths.reduce((a, b) => a + b, style.margins.left + style.margins.right);
185
-
186
- let desiredHeight = style.margins.top + style.margins.bottom;
187
- for (let row of table.children) {
188
- let rowHeight = row.children.map((c) => getDesiredSize(c, desiredSizes).height).reduce((a, b) => Math.max(a, b), 0);
189
- desiredHeight += rowHeight;
190
- desiredSizes.set(row, AD.Size.create(desiredWidth, rowHeight));
191
- for (let cell of row.children) {
192
- const cellSize = desiredSizes.get(cell) || AD.Size.create(0, 0);
193
- desiredSizes.set(cell, AD.Size.create(cellSize.width, rowHeight));
194
- }
195
- }
196
-
197
- desiredSizes.set(table, AD.Size.create(tableAvailableWidth, desiredHeight));
198
-
199
- return desiredSizes;
200
- }
201
-
202
- function measureGroup(
203
- pdf: any,
204
- resources: AD.Resources.Resources,
205
- availableSize: AD.Size.Size,
206
- keepTogether: AD.Group.Group
207
- ): Map<any, AD.Size.Size> {
208
- let desiredSizes = mergeMaps(
209
- keepTogether.children.map((e) => measureSectionElement(pdf, resources, availableSize, e))
210
- );
211
- let desiredHeight = R.reduce((sum, e) => sum + getDesiredSize(e, desiredSizes).height, 0.0, keepTogether.children);
212
- desiredSizes.set(keepTogether, AD.Size.create(availableSize.width, desiredHeight));
213
- return desiredSizes;
214
- }
215
-
216
- function measureAtom(
217
- pdf: any,
218
- resources: AD.Resources.Resources,
219
- textStyle: AD.TextStyle.TextStyle,
220
- availableSize: AD.Size.Size,
221
- availableRowSpace: number,
222
- atom: AD.Atom.Atom
223
- ): AD.Size.Size {
224
- switch (atom.type) {
225
- case "TextRun":
226
- return measureTextRun(pdf, resources, textStyle, atom, availableSize);
227
- case "TextField":
228
- return measureTextField(pdf, resources, textStyle, atom, availableSize);
229
- case "Image":
230
- return measureImage(availableSize, atom);
231
- case "HyperLink":
232
- return measureHyperLink(pdf, resources, textStyle, atom, availableSize);
233
- case "TocSeparator":
234
- return measureTocSeparator(pdf, textStyle, availableSize, availableRowSpace);
235
- case "LinkTarget":
236
- return {
237
- width: availableSize.width,
238
- height: 0,
239
- };
240
- default:
241
- return exhaustiveCheck(atom);
242
- }
243
- }
244
-
245
- function measureTextRun(
246
- pdf: any,
247
- resources: AD.Resources.Resources,
248
- textStyle: AD.TextStyle.TextStyle,
249
- textRun: AD.TextRun.TextRun,
250
- availableSize: AD.Size.Size
251
- ): AD.Size.Size {
252
- const style = AD.Resources.getNestedStyle(
253
- textStyle,
254
- textRun.style,
255
- "TextStyle",
256
- textRun.styleName,
257
- resources,
258
- textRun.nestedStyleNames || []
259
- ) as AD.TextStyle.TextStyle;
260
- return measureText(pdf, textRun.text, style, availableSize);
261
- }
262
-
263
- function measureHyperLink(
264
- pdf: any,
265
- resources: AD.Resources.Resources,
266
- textStyle: AD.TextStyle.TextStyle,
267
- hyperLink: AD.HyperLink.HyperLink,
268
- availableSize: AD.Size.Size
269
- ): AD.Size.Size {
270
- const style = AD.Resources.getStyle(
271
- textStyle,
272
- hyperLink.style,
273
- "TextStyle",
274
- hyperLink.styleName,
275
- resources
276
- ) as AD.TextStyle.TextStyle;
277
- return measureText(pdf, hyperLink.text, style, availableSize);
278
- }
279
-
280
- function measureTextField(
281
- pdf: any,
282
- resources: AD.Resources.Resources,
283
- textStyle: AD.TextStyle.TextStyle,
284
- textField: AD.TextField.TextField,
285
- availableSize: AD.Size.Size
286
- ): AD.Size.Size {
287
- const style = AD.Resources.getStyle(
288
- textStyle,
289
- textField.style,
290
- "TextStyle",
291
- textField.styleName,
292
- resources
293
- ) as AD.TextStyle.TextStyle;
294
- switch (textField.fieldType) {
295
- case "Date":
296
- return measureText(pdf, new Date(Date.now()).toDateString(), style, availableSize);
297
- case "PageNumber":
298
- case "TotalPages":
299
- case "PageNumberOf":
300
- return measureText(pdf, textField.text || "999", style, availableSize);
301
- default:
302
- return exhaustiveCheck(textField.fieldType);
303
- }
304
- }
305
-
306
- function measureTocSeparator(
307
- pdf: any,
308
- textStyle: AD.TextStyle.TextStyle,
309
- availableSize: AD.Size.Size,
310
- availableRowSpace: number
311
- ): AD.Size.Size {
312
- const size = measureText(pdf, ".", textStyle, availableSize);
313
- return {
314
- height: size.height,
315
- width: availableRowSpace - 1,
316
- };
317
- }
318
-
319
- function measureImage(availableSize: AD.Size.Size, image: AD.Image.Image): AD.Size.Size {
320
- const desiredWidth = isFinite(image.width) ? image.width : availableSize.width;
321
- const desiredHeight = isFinite(image.height) ? image.height : availableSize.height;
322
- return AD.Size.create(desiredWidth, desiredHeight);
323
- }
324
-
325
- function measureText(
326
- pdf: any,
327
- text: string,
328
- textStyle: AD.TextStyle.TextStyle,
329
- availableSize: AD.Size.Size
330
- ): AD.Size.Size {
331
- const font = getFontName(textStyle);
332
- const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
333
- pdf
334
- .font(font)
335
- .fontSize(fontSize)
336
- .fillColor(textStyle.color || "black");
337
- const textOptions = {
338
- underline: textStyle.underline || false,
339
- indent: textStyle.indent || 0,
340
- lineBreak: textStyle.lineBreak ?? true,
341
- ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
342
- };
343
- const width = Math.min(availableSize.width, pdf.widthOfString(text, textOptions));
344
- const lineWidth = textStyle.lineBreak === false ? Infinity : availableSize.width;
345
- const height = pdf.heightOfString(text, {
346
- width: lineWidth,
347
- ...textOptions,
348
- });
349
- return AD.Size.create(width, height, availableSize.width);
350
- }
351
-
352
- function mergeMaps(maps: Array<Map<any, AD.Size.Size>>): Map<any, AD.Size.Size> {
353
- let newMap = new Map<any, AD.Size.Size>();
354
- maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));
355
- return newMap;
356
- }
357
-
358
- function getDesiredSize(element: any, desiredSizes: Map<any, AD.Size.Size>): AD.Size.Size {
359
- const size = desiredSizes.get(element);
360
- if (size) {
361
- return size;
362
- }
363
- throw new Error("Could not find size for element!");
364
- }
1
+ import * as R from "ramda";
2
+ import * as AD from "../../abstract-document/index";
3
+ import { exhaustiveCheck } from "ts-exhaustive-check";
4
+ import { Page } from "./paginate";
5
+ import { registerFonts, getFontName } from "./font";
6
+
7
+ //tslint:disable:no-any variable-name
8
+
9
+ export function measure(PDFDocument: any, document: AD.AbstractDoc.AbstractDoc): Map<any, AD.Size.Size> {
10
+ let pdf = new PDFDocument();
11
+ registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
12
+ return mergeMaps(document.children.map((s) => measureSection(pdf, document, s)));
13
+ }
14
+
15
+ export function measurePages(
16
+ PDFDocument: any,
17
+ document: AD.AbstractDoc.AbstractDoc,
18
+ pages: ReadonlyArray<Page>
19
+ ): Map<any, AD.Size.Size> {
20
+ let pdf = new PDFDocument();
21
+ registerFonts((fontName: string, fontSource: AD.Font.FontSource) => pdf.registerFont(fontName, fontSource), document);
22
+ return mergeMaps(
23
+ pages.map((page) => measureSection(pdf, document, page.section, page.header, page.footer, page.elements))
24
+ );
25
+ }
26
+
27
+ function measureSection(
28
+ pdf: any,
29
+ parentResources: AD.Resources.Resources,
30
+ section: AD.Section.Section,
31
+ separateHeader?: ReadonlyArray<AD.SectionElement.SectionElement>,
32
+ separateFooter?: ReadonlyArray<AD.SectionElement.SectionElement>,
33
+ separateChildren?: ReadonlyArray<AD.SectionElement.SectionElement>
34
+ ): Map<any, AD.Size.Size> {
35
+ const header = separateHeader || section.page.header;
36
+ const footer = separateFooter || section.page.footer;
37
+ const children = separateChildren || section.children;
38
+
39
+ const pageWidth = AD.PageStyle.getWidth(section.page.style);
40
+ const pageHeight = AD.PageStyle.getHeight(section.page.style);
41
+ const resources = AD.Resources.mergeResources([section, parentResources]);
42
+
43
+ const contentAvailableWidth =
44
+ pageWidth - (section.page.style.contentMargins.left + section.page.style.contentMargins.right);
45
+ const contentAvailableSize = AD.Size.create(contentAvailableWidth, pageHeight);
46
+ const sectionSizes = children.map((e) => measureSectionElement(pdf, resources, contentAvailableSize, e));
47
+
48
+ const headerAvailableWidth =
49
+ pageWidth - (section.page.style.headerMargins.left + section.page.style.headerMargins.right);
50
+ const headerAvailableSize = AD.Size.create(headerAvailableWidth, pageHeight);
51
+ const headerSizes = header.map((e) => measureSectionElement(pdf, resources, headerAvailableSize, e));
52
+
53
+ const footerAvailableWidth =
54
+ pageWidth - (section.page.style.footerMargins.left + section.page.style.footerMargins.right);
55
+ const footerAvailableSize = AD.Size.create(footerAvailableWidth, pageHeight);
56
+ const footerSizes = footer.map((e) => measureSectionElement(pdf, resources, footerAvailableSize, e));
57
+
58
+ return mergeMaps(R.unnest([sectionSizes, headerSizes, footerSizes]));
59
+ }
60
+
61
+ function measureSectionElement(
62
+ pdf: any,
63
+ parentResources: AD.Resources.Resources,
64
+ availableSize: AD.Size.Size,
65
+ element: AD.SectionElement.SectionElement
66
+ ): Map<any, AD.Size.Size> {
67
+ const resources = AD.Resources.mergeResources([parentResources, element]);
68
+ switch (element.type) {
69
+ case "Paragraph":
70
+ return measureParagraph(pdf, resources, availableSize, element);
71
+ case "Table":
72
+ return measureTable(pdf, resources, availableSize, element);
73
+ case "Group":
74
+ return measureGroup(pdf, resources, availableSize, element);
75
+ case "PageBreak":
76
+ return measurePageBreak(availableSize, element);
77
+ default:
78
+ return exhaustiveCheck(element);
79
+ }
80
+ }
81
+
82
+ function measurePageBreak(availableSize: AD.Size.Size, pageBreak: AD.PageBreak.PageBreak): Map<any, AD.Size.Size> {
83
+ let desiredSizes = new Map<any, AD.Size.Size>();
84
+ desiredSizes.set(pageBreak, availableSize);
85
+ return desiredSizes;
86
+ }
87
+
88
+ function measureParagraph(
89
+ pdf: any,
90
+ resources: AD.Resources.Resources,
91
+ availableSize: AD.Size.Size,
92
+ paragraph: AD.Paragraph.Paragraph
93
+ ): Map<any, AD.Size.Size> {
94
+ const style = AD.Resources.getStyle(
95
+ undefined,
96
+ paragraph.style,
97
+ "ParagraphStyle",
98
+ paragraph.styleName,
99
+ resources
100
+ ) as AD.ParagraphStyle.ParagraphStyle;
101
+ const contentAvailableWidth = availableSize.width - (style.margins.left + style.margins.left);
102
+ const contentAvailableHeight = availableSize.height - (style.margins.top + style.margins.bottom);
103
+ const contentAvailableSize = AD.Size.create(contentAvailableWidth, contentAvailableHeight);
104
+
105
+ const initialHeight = style.margins.top + style.margins.bottom;
106
+ let desiredHeight = initialHeight;
107
+ let currentRowWidth = 0;
108
+ let currentRowHeight = 0;
109
+ let desiredSizes = new Map<any, AD.Size.Size>();
110
+ let concatenatedText = "";
111
+ let hasAtomImage = false;
112
+ let textOptions;
113
+ for (let atom of paragraph.children) {
114
+ if (atom.type === "Image") {
115
+ hasAtomImage = true;
116
+ }
117
+ const atomSize = measureAtom(
118
+ pdf,
119
+ resources,
120
+ style.textStyle,
121
+ contentAvailableSize,
122
+ contentAvailableSize.width - currentRowWidth,
123
+ atom
124
+ );
125
+ if (atom.type === "TextRun" || atom.type === "TextField" || atom.type === "HyperLink") {
126
+ concatenatedText += atom.text;
127
+ textOptions = getBiggestStyle(atom, style, resources, textOptions);
128
+ }
129
+ desiredSizes.set(atom, atomSize);
130
+ currentRowWidth += atomSize.width;
131
+ currentRowHeight = Math.max(atomSize.height, currentRowHeight);
132
+ if (currentRowWidth > contentAvailableSize.width) {
133
+ desiredHeight += currentRowHeight;
134
+ currentRowWidth = 0;
135
+ currentRowHeight = 0;
136
+ }
137
+ }
138
+ if (hasAtomImage) {
139
+ desiredHeight += currentRowHeight;
140
+ } else {
141
+ desiredHeight =
142
+ initialHeight +
143
+ pdf.heightOfString(concatenatedText, {
144
+ width: textOptions && textOptions.lineBreak === false ? Infinity : availableSize.width,
145
+ ...textOptions,
146
+ });
147
+ }
148
+
149
+ desiredSizes.set(paragraph, AD.Size.create(availableSize.width, desiredHeight));
150
+
151
+ return desiredSizes;
152
+ }
153
+
154
+ function getBiggestStyle(
155
+ atom: AD.TextField.TextField | AD.TextRun.TextRun | AD.HyperLink.HyperLink,
156
+ style: AD.ParagraphStyle.ParagraphStyle,
157
+ resources: AD.Resources.Resources,
158
+ textOptions: AD.TextStyle.TextStyle | undefined
159
+ ): AD.TextStyle.TextStyle | undefined {
160
+ const textStyle = AD.Resources.getNestedStyle(
161
+ style.textStyle,
162
+ atom.style,
163
+ "TextStyle",
164
+ atom.styleName,
165
+ resources,
166
+ atom.type === "TextRun" && atom.nestedStyleNames ? atom.nestedStyleNames : []
167
+ ) as AD.TextStyle.TextStyle;
168
+
169
+ if (textOptions) {
170
+ if ((textOptions.fontSize ?? 100) < (textStyle.fontSize ?? 100)) {
171
+ return atom.style;
172
+ }
173
+ } else {
174
+ return textStyle;
175
+ }
176
+ return textOptions;
177
+ }
178
+
179
+ function measureTable(
180
+ pdf: any,
181
+ resources: AD.Resources.Resources,
182
+ availableSize: AD.Size.Size,
183
+ table: AD.Table.Table
184
+ ): Map<any, AD.Size.Size> {
185
+ const style = AD.Resources.getStyle(
186
+ undefined,
187
+ table.style,
188
+ "TableStyle",
189
+ table.styleName,
190
+ resources
191
+ ) as AD.TableStyle.TableStyle;
192
+ const tableAvailableWidth = availableSize.width - (style.margins.left + style.margins.right);
193
+ const numInfinityColumns = table.columnWidths.filter((w) => !isFinite(w)).length;
194
+ const fixedColumnsWidth = table.columnWidths.filter((w) => isFinite(w)).reduce((a, b) => a + b, 0);
195
+ const infinityWidth = (tableAvailableWidth - fixedColumnsWidth) / numInfinityColumns;
196
+ const columnWidths = table.columnWidths.map((w) => (isFinite(w) ? w : infinityWidth));
197
+ const desiredSizes = new Map<any, AD.Size.Size>();
198
+
199
+ for (let row of table.children) {
200
+ let column = 0;
201
+ for (let cell of row.children) {
202
+ const cellStyle = AD.Resources.getStyle(
203
+ style.cellStyle,
204
+ cell.style,
205
+ "TableCellStyle",
206
+ cell.styleName,
207
+ resources
208
+ ) as AD.TableCellStyle.TableCellStyle;
209
+ const cellWidth = columnWidths.slice(column, column + cell.columnSpan).reduce((a, b) => a + b, 0);
210
+
211
+ const contentAvailableWidth = cellWidth - (cellStyle.padding.left + cellStyle.padding.right);
212
+ let cellDesiredHeight = cellStyle.padding.top + cellStyle.padding.bottom;
213
+
214
+ for (let element of cell.children) {
215
+ const elementAvailableSize = AD.Size.create(contentAvailableWidth, Infinity);
216
+ const elementSizes = measureSectionElement(pdf, resources, elementAvailableSize, element);
217
+ elementSizes.forEach((v, k) => desiredSizes.set(k, v));
218
+ const elementSize = getDesiredSize(element, desiredSizes);
219
+ cellDesiredHeight += elementSize.height;
220
+ }
221
+
222
+ desiredSizes.set(cell, AD.Size.create(cellWidth, cellDesiredHeight));
223
+ column += cell.columnSpan;
224
+ }
225
+ }
226
+
227
+ const desiredWidth = table.columnWidths.some((w) => !isFinite(w))
228
+ ? availableSize.width
229
+ : table.columnWidths.reduce((a, b) => a + b, style.margins.left + style.margins.right);
230
+
231
+ let desiredHeight = style.margins.top + style.margins.bottom;
232
+ for (let row of table.children) {
233
+ let rowHeight = row.children.map((c) => getDesiredSize(c, desiredSizes).height).reduce((a, b) => Math.max(a, b), 0);
234
+ desiredHeight += rowHeight;
235
+ desiredSizes.set(row, AD.Size.create(desiredWidth, rowHeight));
236
+ for (let cell of row.children) {
237
+ const cellSize = desiredSizes.get(cell) || AD.Size.create(0, 0);
238
+ desiredSizes.set(cell, AD.Size.create(cellSize.width, rowHeight));
239
+ }
240
+ }
241
+
242
+ desiredSizes.set(table, AD.Size.create(tableAvailableWidth, desiredHeight));
243
+
244
+ return desiredSizes;
245
+ }
246
+
247
+ function measureGroup(
248
+ pdf: any,
249
+ resources: AD.Resources.Resources,
250
+ availableSize: AD.Size.Size,
251
+ keepTogether: AD.Group.Group
252
+ ): Map<any, AD.Size.Size> {
253
+ let desiredSizes = mergeMaps(
254
+ keepTogether.children.map((e) => measureSectionElement(pdf, resources, availableSize, e))
255
+ );
256
+ let desiredHeight = R.reduce((sum, e) => sum + getDesiredSize(e, desiredSizes).height, 0.0, keepTogether.children);
257
+ desiredSizes.set(keepTogether, AD.Size.create(availableSize.width, desiredHeight));
258
+ return desiredSizes;
259
+ }
260
+
261
+ function measureAtom(
262
+ pdf: any,
263
+ resources: AD.Resources.Resources,
264
+ textStyle: AD.TextStyle.TextStyle,
265
+ availableSize: AD.Size.Size,
266
+ availableRowSpace: number,
267
+ atom: AD.Atom.Atom
268
+ ): AD.Size.Size {
269
+ switch (atom.type) {
270
+ case "TextRun":
271
+ return measureTextRun(pdf, resources, textStyle, atom, availableSize);
272
+ case "TextField":
273
+ return measureTextField(pdf, resources, textStyle, atom, availableSize);
274
+ case "Image":
275
+ return measureImage(availableSize, atom);
276
+ case "HyperLink":
277
+ return measureHyperLink(pdf, resources, textStyle, atom, availableSize);
278
+ case "TocSeparator":
279
+ return measureTocSeparator(pdf, textStyle, availableSize, availableRowSpace);
280
+ case "LinkTarget":
281
+ return {
282
+ width: availableSize.width,
283
+ height: 0,
284
+ };
285
+ default:
286
+ return exhaustiveCheck(atom);
287
+ }
288
+ }
289
+
290
+ function measureTextRun(
291
+ pdf: any,
292
+ resources: AD.Resources.Resources,
293
+ textStyle: AD.TextStyle.TextStyle,
294
+ textRun: AD.TextRun.TextRun,
295
+ availableSize: AD.Size.Size
296
+ ): AD.Size.Size {
297
+ const style = AD.Resources.getNestedStyle(
298
+ textStyle,
299
+ textRun.style,
300
+ "TextStyle",
301
+ textRun.styleName,
302
+ resources,
303
+ textRun.nestedStyleNames || []
304
+ ) as AD.TextStyle.TextStyle;
305
+ return measureText(pdf, textRun.text, style, availableSize);
306
+ }
307
+
308
+ function measureHyperLink(
309
+ pdf: any,
310
+ resources: AD.Resources.Resources,
311
+ textStyle: AD.TextStyle.TextStyle,
312
+ hyperLink: AD.HyperLink.HyperLink,
313
+ availableSize: AD.Size.Size
314
+ ): AD.Size.Size {
315
+ const style = AD.Resources.getStyle(
316
+ textStyle,
317
+ hyperLink.style,
318
+ "TextStyle",
319
+ hyperLink.styleName,
320
+ resources
321
+ ) as AD.TextStyle.TextStyle;
322
+ return measureText(pdf, hyperLink.text, style, availableSize);
323
+ }
324
+
325
+ function measureTextField(
326
+ pdf: any,
327
+ resources: AD.Resources.Resources,
328
+ textStyle: AD.TextStyle.TextStyle,
329
+ textField: AD.TextField.TextField,
330
+ availableSize: AD.Size.Size
331
+ ): AD.Size.Size {
332
+ const style = AD.Resources.getStyle(
333
+ textStyle,
334
+ textField.style,
335
+ "TextStyle",
336
+ textField.styleName,
337
+ resources
338
+ ) as AD.TextStyle.TextStyle;
339
+ switch (textField.fieldType) {
340
+ case "Date":
341
+ return measureText(pdf, new Date(Date.now()).toDateString(), style, availableSize);
342
+ case "PageNumber":
343
+ case "TotalPages":
344
+ case "PageNumberOf":
345
+ return measureText(pdf, textField.text || "999", style, availableSize);
346
+ default:
347
+ return exhaustiveCheck(textField.fieldType);
348
+ }
349
+ }
350
+
351
+ function measureTocSeparator(
352
+ pdf: any,
353
+ textStyle: AD.TextStyle.TextStyle,
354
+ availableSize: AD.Size.Size,
355
+ availableRowSpace: number
356
+ ): AD.Size.Size {
357
+ const size = measureText(pdf, ".", textStyle, availableSize);
358
+ return {
359
+ height: size.height,
360
+ width: availableRowSpace - 1,
361
+ };
362
+ }
363
+
364
+ function measureImage(availableSize: AD.Size.Size, image: AD.Image.Image): AD.Size.Size {
365
+ const desiredWidth = isFinite(image.width) ? image.width : availableSize.width;
366
+ const desiredHeight = isFinite(image.height) ? image.height : availableSize.height;
367
+ return AD.Size.create(desiredWidth, desiredHeight);
368
+ }
369
+
370
+ function measureText(
371
+ pdf: any,
372
+ text: string,
373
+ textStyle: AD.TextStyle.TextStyle,
374
+ availableSize: AD.Size.Size
375
+ ): AD.Size.Size {
376
+ const font = getFontName(textStyle);
377
+ const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
378
+ pdf
379
+ .font(font)
380
+ .fontSize(fontSize)
381
+ .fillColor(textStyle.color || "black");
382
+
383
+ const textOptions = {
384
+ underline: textStyle.underline || false,
385
+ indent: textStyle.indent || 0,
386
+ lineBreak: textStyle.lineBreak ?? true,
387
+ ...(textStyle.lineGap !== undefined ? { lineGap: textStyle.lineGap } : {}),
388
+ };
389
+ const width = Math.min(availableSize.width, pdf.widthOfString(text, textOptions));
390
+ const lineWidth = textStyle.lineBreak === false ? Infinity : availableSize.width;
391
+ const height = pdf.heightOfString(text, {
392
+ width: lineWidth,
393
+ ...textOptions,
394
+ });
395
+ return AD.Size.create(width, height, availableSize.width);
396
+ }
397
+
398
+ function mergeMaps(maps: Array<Map<any, AD.Size.Size>>): Map<any, AD.Size.Size> {
399
+ let newMap = new Map<any, AD.Size.Size>();
400
+ maps.forEach((m) => m.forEach((v, k) => newMap.set(k, v)));
401
+ return newMap;
402
+ }
403
+
404
+ function getDesiredSize(element: any, desiredSizes: Map<any, AD.Size.Size>): AD.Size.Size {
405
+ const size = desiredSizes.get(element);
406
+ if (size) {
407
+ return size;
408
+ }
409
+ throw new Error("Could not find size for element!");
410
+ }