@pdfme/pdf-lib 6.0.3-dev.0 → 6.0.4-dev.1

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 (449) hide show
  1. package/{src/api/Embeddable.ts → dist/api/Embeddable.d.ts} +1 -1
  2. package/dist/api/PDFDocument.d.ts +778 -0
  3. package/dist/api/PDFDocumentOptions.d.ts +38 -0
  4. package/dist/api/PDFEmbeddedFile.d.ts +38 -0
  5. package/dist/api/PDFEmbeddedPage.d.ts +73 -0
  6. package/dist/api/PDFFont.d.ts +94 -0
  7. package/dist/api/PDFImage.d.ts +95 -0
  8. package/dist/api/PDFJavaScript.d.ts +38 -0
  9. package/dist/api/PDFPage.d.ts +910 -0
  10. package/dist/api/PDFPageOptions.d.ts +172 -0
  11. package/dist/api/StandardFonts.d.ts +16 -0
  12. package/dist/api/colors.d.ts +34 -0
  13. package/dist/api/errors.d.ts +42 -0
  14. package/dist/api/form/PDFButton.d.ts +137 -0
  15. package/dist/api/form/PDFCheckBox.d.ts +142 -0
  16. package/dist/api/form/PDFDropdown.d.ts +402 -0
  17. package/dist/api/form/PDFField.d.ts +203 -0
  18. package/dist/api/form/PDFForm.d.ts +411 -0
  19. package/dist/api/form/PDFOptionList.d.ts +335 -0
  20. package/dist/api/form/PDFRadioGroup.d.ts +252 -0
  21. package/dist/api/form/PDFSignature.d.ts +29 -0
  22. package/dist/api/form/PDFTextField.d.ts +537 -0
  23. package/dist/api/form/appearances.d.ts +41 -0
  24. package/dist/api/image/alignment.d.ts +5 -0
  25. package/dist/api/objects.d.ts +4 -0
  26. package/dist/api/operations.d.ts +226 -0
  27. package/dist/api/operators.d.ts +90 -0
  28. package/dist/api/rotations.d.ts +38 -0
  29. package/dist/api/sizes.d.ts +52 -0
  30. package/dist/api/svg.d.ts +70 -0
  31. package/dist/api/svgPath.d.ts +2 -0
  32. package/dist/api/text/alignment.d.ts +5 -0
  33. package/dist/api/text/layout.d.ts +54 -0
  34. package/dist/core/PDFContext.d.ts +84 -0
  35. package/dist/core/PDFObjectCopier.d.ts +37 -0
  36. package/dist/core/acroform/PDFAcroButton.d.ts +21 -0
  37. package/dist/core/acroform/PDFAcroCheckBox.d.ts +13 -0
  38. package/dist/core/acroform/PDFAcroChoice.d.ts +20 -0
  39. package/dist/core/acroform/PDFAcroComboBox.d.ts +9 -0
  40. package/dist/core/acroform/PDFAcroField.d.ts +36 -0
  41. package/dist/core/acroform/PDFAcroForm.d.ts +20 -0
  42. package/dist/core/acroform/PDFAcroListBox.d.ts +9 -0
  43. package/dist/core/acroform/PDFAcroNonTerminal.d.ts +13 -0
  44. package/dist/core/acroform/PDFAcroPushButton.d.ts +9 -0
  45. package/dist/core/acroform/PDFAcroRadioButton.d.ts +13 -0
  46. package/{src/core/acroform/PDFAcroSignature.ts → dist/core/acroform/PDFAcroSignature.d.ts} +2 -4
  47. package/dist/core/acroform/PDFAcroTerminal.d.ts +16 -0
  48. package/dist/core/acroform/PDFAcroText.d.ts +22 -0
  49. package/dist/core/acroform/flags.d.ts +141 -0
  50. package/dist/core/acroform/utils.d.ts +6 -0
  51. package/dist/core/annotation/AppearanceCharacteristics.d.ts +33 -0
  52. package/dist/core/annotation/BorderStyle.d.ts +11 -0
  53. package/dist/core/annotation/PDFAnnotation.d.ts +51 -0
  54. package/dist/core/annotation/PDFWidgetAnnotation.d.ts +26 -0
  55. package/dist/core/annotation/flags.d.ts +79 -0
  56. package/dist/core/crypto.d.ts +95 -0
  57. package/dist/core/document/PDFCrossRefSection.d.ts +27 -0
  58. package/dist/core/document/PDFHeader.d.ts +10 -0
  59. package/dist/core/document/PDFTrailer.d.ts +9 -0
  60. package/dist/core/document/PDFTrailerDict.d.ts +10 -0
  61. package/dist/core/embedders/CMap.d.ts +3 -0
  62. package/dist/core/embedders/CustomFontEmbedder.d.ts +44 -0
  63. package/dist/core/embedders/CustomFontSubsetEmbedder.d.ts +20 -0
  64. package/dist/core/embedders/FileEmbedder.d.ts +33 -0
  65. package/dist/core/embedders/FontFlags.d.ts +13 -0
  66. package/dist/core/embedders/JavaScriptEmbedder.d.ts +10 -0
  67. package/dist/core/embedders/JpegEmbedder.d.ts +23 -0
  68. package/dist/core/embedders/PDFPageEmbedder.d.ts +37 -0
  69. package/dist/core/embedders/PngEmbedder.d.ts +19 -0
  70. package/dist/core/embedders/StandardFontEmbedder.d.ts +36 -0
  71. package/dist/core/errors.d.ts +94 -0
  72. package/{src/core/index.ts → dist/core/index.d.ts} +1 -17
  73. package/dist/core/interactive/ViewerPreferences.d.ts +347 -0
  74. package/dist/core/objects/PDFArray.d.ts +63 -0
  75. package/dist/core/objects/PDFBool.d.ts +13 -0
  76. package/dist/core/objects/PDFDict.d.ts +62 -0
  77. package/dist/core/objects/PDFHexString.d.ts +16 -0
  78. package/dist/core/objects/PDFInvalidObject.d.ts +11 -0
  79. package/dist/core/objects/PDFName.d.ts +41 -0
  80. package/dist/core/objects/PDFNull.d.ts +10 -0
  81. package/dist/core/objects/PDFNumber.d.ts +15 -0
  82. package/dist/core/objects/PDFObject.d.ts +8 -0
  83. package/dist/core/objects/PDFRawStream.d.ts +16 -0
  84. package/dist/core/objects/PDFRef.d.ts +13 -0
  85. package/dist/core/objects/PDFStream.d.ts +16 -0
  86. package/dist/core/objects/PDFString.d.ts +16 -0
  87. package/dist/core/operators/PDFOperator.d.ts +19 -0
  88. package/dist/core/operators/PDFOperatorNames.d.ts +76 -0
  89. package/dist/core/parser/BaseParser.d.ts +14 -0
  90. package/dist/core/parser/ByteStream.d.ts +26 -0
  91. package/dist/core/parser/PDFObjectParser.d.ts +31 -0
  92. package/dist/core/parser/PDFObjectStreamParser.d.ts +13 -0
  93. package/dist/core/parser/PDFParser.d.ts +46 -0
  94. package/dist/core/parser/PDFXRefStreamParser.d.ts +21 -0
  95. package/dist/core/streams/Ascii85Stream.d.ts +9 -0
  96. package/dist/core/streams/AsciiHexStream.d.ts +9 -0
  97. package/dist/core/streams/DecodeStream.d.ts +26 -0
  98. package/dist/core/streams/DecryptStream.d.ts +12 -0
  99. package/dist/core/streams/FlateStream.d.ts +13 -0
  100. package/dist/core/streams/LZWStream.d.ts +12 -0
  101. package/dist/core/streams/RunLengthStream.d.ts +8 -0
  102. package/dist/core/streams/Stream.d.ts +34 -0
  103. package/dist/core/streams/decode.d.ts +3 -0
  104. package/dist/core/structures/PDFCatalog.d.ts +27 -0
  105. package/dist/core/structures/PDFContentStream.d.ts +15 -0
  106. package/dist/core/structures/PDFCrossRefStream.d.ts +53 -0
  107. package/dist/core/structures/PDFFlateStream.d.ts +13 -0
  108. package/dist/core/structures/PDFObjectStream.d.ts +20 -0
  109. package/dist/core/structures/PDFPageLeaf.d.ts +54 -0
  110. package/dist/core/structures/PDFPageTree.d.ts +41 -0
  111. package/dist/core/syntax/CharCodes.d.ts +61 -0
  112. package/dist/core/syntax/Delimiters.d.ts +1 -0
  113. package/dist/core/syntax/Irregular.d.ts +1 -0
  114. package/dist/core/syntax/Keywords.d.ts +22 -0
  115. package/dist/core/syntax/Numeric.d.ts +3 -0
  116. package/dist/core/syntax/Whitespace.d.ts +1 -0
  117. package/dist/core/writers/PDFStreamWriter.d.ts +19 -0
  118. package/dist/core/writers/PDFWriter.d.ts +29 -0
  119. package/dist/index.js +19124 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/types/fontkit.d.ts +597 -0
  122. package/{src/types/index.ts → dist/types/index.d.ts} +8 -13
  123. package/{src/types/matrix.ts → dist/types/matrix.d.ts} +1 -2
  124. package/dist/utils/Cache.d.ts +10 -0
  125. package/dist/utils/arrays.d.ts +16 -0
  126. package/dist/utils/async.d.ts +5 -0
  127. package/dist/utils/base64.d.ts +10 -0
  128. package/dist/utils/elements/Arc.d.ts +22 -0
  129. package/dist/utils/elements/Circle.d.ts +14 -0
  130. package/dist/utils/elements/Ellipse.d.ts +20 -0
  131. package/dist/utils/elements/GraphElement.d.ts +6 -0
  132. package/dist/utils/elements/Line.d.ts +23 -0
  133. package/dist/utils/elements/Plot.d.ts +11 -0
  134. package/dist/utils/elements/Point.d.ts +18 -0
  135. package/dist/utils/elements/Rectangle.d.ts +21 -0
  136. package/dist/utils/elements/Segment.d.ts +19 -0
  137. package/dist/utils/errors.d.ts +1 -0
  138. package/dist/utils/intersections.d.ts +9 -0
  139. package/dist/utils/maths.d.ts +45 -0
  140. package/dist/utils/numbers.d.ts +23 -0
  141. package/dist/utils/objects.d.ts +15 -0
  142. package/dist/utils/pdfDocEncoding.d.ts +7 -0
  143. package/dist/utils/png.d.ts +17 -0
  144. package/dist/utils/rng.d.ts +13 -0
  145. package/dist/utils/strings.d.ts +25 -0
  146. package/{src/utils/unicode.ts → dist/utils/unicode.d.ts} +8 -195
  147. package/dist/utils/validators.d.ts +26 -0
  148. package/package.json +6 -1
  149. package/__tests__/api/PDFDocument.spec.ts +0 -576
  150. package/__tests__/api/PDFImage.spec.ts +0 -60
  151. package/__tests__/api/PDFPage.spec.ts +0 -151
  152. package/__tests__/api/form/PDFCheckBox.spec.ts +0 -71
  153. package/__tests__/api/form/PDFDropdown.spec.ts +0 -118
  154. package/__tests__/api/form/PDFForm.spec.ts +0 -370
  155. package/__tests__/api/form/PDFOptionList.spec.ts +0 -104
  156. package/__tests__/api/form/PDFRadioGroup.spec.ts +0 -183
  157. package/__tests__/api/form/PDFTextField.spec.ts +0 -148
  158. package/__tests__/api/svgPath.spec.ts +0 -153
  159. package/__tests__/api/text/layout.spec.ts +0 -166
  160. package/__tests__/core/PDFContext.spec.ts +0 -194
  161. package/__tests__/core/PDFObjectCopier.spec.ts +0 -421
  162. package/__tests__/core/acroform/PDFAcroField.spec.ts +0 -98
  163. package/__tests__/core/acroform/PDFAcroTerminal.spec.ts +0 -39
  164. package/__tests__/core/annotation/PDFWidgetAnnotation.spec.ts +0 -40
  165. package/__tests__/core/document/PDFCrossRefSection.spec.ts +0 -88
  166. package/__tests__/core/document/PDFHeader.spec.ts +0 -22
  167. package/__tests__/core/document/PDFTrailer.spec.ts +0 -28
  168. package/__tests__/core/document/PDFTrailerDict.spec.ts +0 -24
  169. package/__tests__/core/embedders/CMap.spec.ts +0 -47
  170. package/__tests__/core/embedders/CustomFontEmbedder.spec.ts +0 -96
  171. package/__tests__/core/embedders/CustomFontSubsetEmbedder.spec.ts +0 -62
  172. package/__tests__/core/embedders/FileEmbedder.spec.ts +0 -54
  173. package/__tests__/core/embedders/JpegEmbedder.spec.ts +0 -67
  174. package/__tests__/core/embedders/PDFPageEmbedder.spec.ts +0 -65
  175. package/__tests__/core/embedders/PngEmbedder.spec.ts +0 -87
  176. package/__tests__/core/embedders/StandardFontEmbedder.spec.ts +0 -79
  177. package/__tests__/core/embedders/data/SourceHanSerifJP-Regular.otf.cmap +0 -16096
  178. package/__tests__/core/embedders/data/Ubuntu-R.ttf.cmap +0 -1211
  179. package/__tests__/core/objects/PDFArray.spec.ts +0 -134
  180. package/__tests__/core/objects/PDFBool.spec.ts +0 -42
  181. package/__tests__/core/objects/PDFDict.spec.ts +0 -195
  182. package/__tests__/core/objects/PDFHexString.spec.ts +0 -168
  183. package/__tests__/core/objects/PDFInvalidObject.spec.ts +0 -32
  184. package/__tests__/core/objects/PDFName.spec.ts +0 -122
  185. package/__tests__/core/objects/PDFNull.spec.ts +0 -30
  186. package/__tests__/core/objects/PDFNumber.spec.ts +0 -50
  187. package/__tests__/core/objects/PDFObject.spec.ts +0 -29
  188. package/__tests__/core/objects/PDFRawStream.spec.ts +0 -45
  189. package/__tests__/core/objects/PDFRef.spec.ts +0 -60
  190. package/__tests__/core/objects/PDFString.spec.ts +0 -237
  191. package/__tests__/core/operators/PDFOperator.spec.ts +0 -77
  192. package/__tests__/core/parser/PDFObjectParser.spec.ts +0 -730
  193. package/__tests__/core/parser/PDFObjectStreamParser.spec.ts +0 -158
  194. package/__tests__/core/parser/PDFParser.spec.ts +0 -398
  195. package/__tests__/core/parser/PDFXRefStreamParser.spec.ts +0 -187
  196. package/__tests__/core/parser/data/object-stream-invalid +0 -2
  197. package/__tests__/core/parser/data/object-stream1 +0 -16
  198. package/__tests__/core/parser/data/object-stream2 +0 -10
  199. package/__tests__/core/parser/data/object-stream3 +0 -0
  200. package/__tests__/core/parser/data/object-stream4 +0 -0
  201. package/__tests__/core/parser/data/xref-stream1 +0 -0
  202. package/__tests__/core/parser/data/xref-stream2 +0 -0
  203. package/__tests__/core/parser/data/xref-stream3 +0 -0
  204. package/__tests__/core/parser/data/xref-stream4 +0 -0
  205. package/__tests__/core/streams/Ascii85Stream.spec.ts +0 -20
  206. package/__tests__/core/streams/AsciiHexStream.spec.ts +0 -20
  207. package/__tests__/core/streams/FlateStream.spec.ts +0 -20
  208. package/__tests__/core/streams/LZWStream.spec.ts +0 -20
  209. package/__tests__/core/streams/RunLengthStream.spec.ts +0 -20
  210. package/__tests__/core/streams/Stream.spec.ts +0 -128
  211. package/__tests__/core/streams/data/ascii85/1.decoded +0 -0
  212. package/__tests__/core/streams/data/ascii85/1.encoded +0 -43
  213. package/__tests__/core/streams/data/asciihex/1.decoded +0 -1
  214. package/__tests__/core/streams/data/asciihex/1.encoded +0 -1
  215. package/__tests__/core/streams/data/asciihex/2.decoded +0 -7
  216. package/__tests__/core/streams/data/asciihex/2.encoded +0 -1
  217. package/__tests__/core/streams/data/flate/1.corrupt.encoded +0 -1
  218. package/__tests__/core/streams/data/flate/1.decoded +0 -0
  219. package/__tests__/core/streams/data/flate/1.encoded +0 -2
  220. package/__tests__/core/streams/data/flate/2.decoded +0 -33
  221. package/__tests__/core/streams/data/flate/2.encoded +0 -0
  222. package/__tests__/core/streams/data/flate/3.decoded +0 -15
  223. package/__tests__/core/streams/data/flate/3.encoded +0 -0
  224. package/__tests__/core/streams/data/flate/4.decoded +0 -16
  225. package/__tests__/core/streams/data/flate/4.encoded +0 -0
  226. package/__tests__/core/streams/data/flate/5.decoded +0 -0
  227. package/__tests__/core/streams/data/flate/5.encoded +0 -0
  228. package/__tests__/core/streams/data/flate/6.decoded +0 -17
  229. package/__tests__/core/streams/data/flate/6.encoded +0 -0
  230. package/__tests__/core/streams/data/flate/7.decoded +0 -20
  231. package/__tests__/core/streams/data/flate/7.encoded +0 -1
  232. package/__tests__/core/streams/data/lzw/1.decoded +0 -0
  233. package/__tests__/core/streams/data/lzw/1.encoded +0 -0
  234. package/__tests__/core/streams/data/lzw/2.decoded +0 -0
  235. package/__tests__/core/streams/data/lzw/2.encoded +0 -0
  236. package/__tests__/core/streams/data/lzw/3.decoded +0 -14
  237. package/__tests__/core/streams/data/lzw/3.encoded +0 -2
  238. package/__tests__/core/streams/data/lzw/4.decoded +0 -14
  239. package/__tests__/core/streams/data/lzw/4.encoded +0 -2
  240. package/__tests__/core/streams/data/runlength/1.decoded +0 -1
  241. package/__tests__/core/streams/data/runlength/1.encoded +0 -1
  242. package/__tests__/core/streams/data/runlength/2.decoded +0 -1
  243. package/__tests__/core/streams/data/runlength/2.encoded +0 -1
  244. package/__tests__/core/streams/data/runlength/3.decoded +0 -0
  245. package/__tests__/core/streams/data/runlength/3.encoded +0 -0
  246. package/__tests__/core/streams/data/runlength/4.decoded +0 -1
  247. package/__tests__/core/streams/data/runlength/4.encoded +0 -1
  248. package/__tests__/core/streams/data/runlength/5.decoded +0 -1
  249. package/__tests__/core/streams/data/runlength/5.encoded +0 -1
  250. package/__tests__/core/streams/data/runlength/empty.encoded +0 -1
  251. package/__tests__/core/structures/PDFCatalog.spec.ts +0 -108
  252. package/__tests__/core/structures/PDFContentStream.spec.ts +0 -117
  253. package/__tests__/core/structures/PDFCrossRefStream.spec.ts +0 -145
  254. package/__tests__/core/structures/PDFObjectStream.spec.ts +0 -138
  255. package/__tests__/core/structures/PDFPageLeaf.spec.ts +0 -355
  256. package/__tests__/core/structures/PDFPageTree.spec.ts +0 -592
  257. package/__tests__/core/writers/PDFStreamWriter.spec.ts +0 -71
  258. package/__tests__/core/writers/PDFWriter.spec.ts +0 -144
  259. package/__tests__/core/writers/data/stream-writer-1.pdf +0 -0
  260. package/__tests__/index.test.ts +0 -12
  261. package/__tests__/utils/base64.spec.ts +0 -61
  262. package/__tests__/utils/data/simple.pdf +0 -201
  263. package/__tests__/utils/data/simple.pdf.base64 +0 -1
  264. package/__tests__/utils/pdfDocEncoding.spec.ts +0 -82
  265. package/__tests__/utils/png.spec.ts +0 -53
  266. package/__tests__/utils/rng.spec.ts +0 -14
  267. package/__tests__/utils/strings.spec.ts +0 -98
  268. package/__tests__/utils/unicode.spec.ts +0 -337
  269. package/assets/fonts/source_hans_jp/SourceHanSerifJP-Regular.otf +0 -0
  270. package/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  271. package/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  272. package/assets/images/cat_riding_unicorn.jpg +0 -0
  273. package/assets/images/cmyk_colorspace.jpg +0 -0
  274. package/assets/images/greyscale_bird.png +0 -0
  275. package/assets/images/minions_banana_alpha.png +0 -0
  276. package/assets/images/minions_banana_no_alpha.png +0 -0
  277. package/assets/images/minions_laughing.jpg +0 -0
  278. package/assets/pdfs/bixby_guide.pdf +0 -0
  279. package/assets/pdfs/encrypted_new.pdf +0 -0
  280. package/assets/pdfs/encrypted_old.pdf +0 -0
  281. package/assets/pdfs/fancy_fields.pdf +0 -0
  282. package/assets/pdfs/giraffe.pdf +0 -0
  283. package/assets/pdfs/invalid_root_ref.pdf +0 -0
  284. package/assets/pdfs/just_metadata.pdf +0 -49
  285. package/assets/pdfs/missing_endobj_keyword.pdf +0 -70
  286. package/assets/pdfs/missing_xref_trailer_dict.pdf +0 -141
  287. package/assets/pdfs/normal.pdf +0 -0
  288. package/assets/pdfs/pdf20examples/PDF 2.0 with offset start.pdf +0 -179
  289. package/assets/pdfs/stuff_following_header.pdf +0 -0
  290. package/assets/pdfs/us_constitution.pdf +0 -0
  291. package/assets/pdfs/with_comments.pdf +0 -0
  292. package/assets/pdfs/with_invalid_objects.pdf +0 -53
  293. package/assets/pdfs/with_invalid_stream_EOL.pdf +0 -0
  294. package/assets/pdfs/with_null_parent_entry.pdf +0 -0
  295. package/assets/pdfs/with_signature.pdf +0 -0
  296. package/assets/pdfs/with_update_sections.pdf +0 -0
  297. package/assets/pdfs/with_viewer_prefs.pdf +0 -0
  298. package/assets/pdfs/with_xfa_fields.pdf +0 -0
  299. package/src/api/PDFDocument.ts +0 -1389
  300. package/src/api/PDFDocumentOptions.ts +0 -45
  301. package/src/api/PDFEmbeddedFile.ts +0 -87
  302. package/src/api/PDFEmbeddedPage.ts +0 -100
  303. package/src/api/PDFFont.ts +0 -149
  304. package/src/api/PDFImage.ts +0 -143
  305. package/src/api/PDFJavaScript.ts +0 -75
  306. package/src/api/PDFPage.ts +0 -1604
  307. package/src/api/PDFPageOptions.ts +0 -175
  308. package/src/api/StandardFonts.ts +0 -16
  309. package/src/api/colors.ts +0 -109
  310. package/src/api/errors.ts +0 -110
  311. package/src/api/form/PDFButton.ts +0 -242
  312. package/src/api/form/PDFCheckBox.ts +0 -247
  313. package/src/api/form/PDFDropdown.ts +0 -637
  314. package/src/api/form/PDFField.ts +0 -491
  315. package/src/api/form/PDFForm.ts +0 -842
  316. package/src/api/form/PDFOptionList.ts +0 -555
  317. package/src/api/form/PDFRadioGroup.ts +0 -455
  318. package/src/api/form/PDFSignature.ts +0 -44
  319. package/src/api/form/PDFTextField.ts +0 -811
  320. package/src/api/form/appearances.ts +0 -655
  321. package/src/api/image/alignment.ts +0 -5
  322. package/src/api/objects.ts +0 -10
  323. package/src/api/operations.ts +0 -873
  324. package/src/api/operators.ts +0 -335
  325. package/src/api/rotations.ts +0 -84
  326. package/src/api/sizes.ts +0 -52
  327. package/src/api/svg.ts +0 -888
  328. package/src/api/svgPath.ts +0 -460
  329. package/src/api/text/alignment.ts +0 -5
  330. package/src/api/text/layout.ts +0 -328
  331. package/src/core/PDFContext.ts +0 -274
  332. package/src/core/PDFObjectCopier.ts +0 -142
  333. package/src/core/acroform/PDFAcroButton.ts +0 -104
  334. package/src/core/acroform/PDFAcroCheckBox.ts +0 -48
  335. package/src/core/acroform/PDFAcroChoice.ts +0 -143
  336. package/src/core/acroform/PDFAcroComboBox.ts +0 -21
  337. package/src/core/acroform/PDFAcroField.ts +0 -168
  338. package/src/core/acroform/PDFAcroForm.ts +0 -96
  339. package/src/core/acroform/PDFAcroListBox.ts +0 -19
  340. package/src/core/acroform/PDFAcroNonTerminal.ts +0 -33
  341. package/src/core/acroform/PDFAcroPushButton.ts +0 -21
  342. package/src/core/acroform/PDFAcroRadioButton.ts +0 -57
  343. package/src/core/acroform/PDFAcroTerminal.ts +0 -70
  344. package/src/core/acroform/PDFAcroText.ts +0 -76
  345. package/src/core/acroform/flags.ts +0 -162
  346. package/src/core/acroform/utils.ts +0 -129
  347. package/src/core/annotation/AppearanceCharacteristics.ts +0 -133
  348. package/src/core/annotation/BorderStyle.ts +0 -31
  349. package/src/core/annotation/PDFAnnotation.ts +0 -148
  350. package/src/core/annotation/PDFWidgetAnnotation.ts +0 -111
  351. package/src/core/annotation/flags.ts +0 -90
  352. package/src/core/crypto.ts +0 -1844
  353. package/src/core/document/PDFCrossRefSection.ts +0 -161
  354. package/src/core/document/PDFHeader.ts +0 -48
  355. package/src/core/document/PDFTrailer.ts +0 -48
  356. package/src/core/document/PDFTrailerDict.ts +0 -39
  357. package/src/core/embedders/CMap.ts +0 -65
  358. package/src/core/embedders/CustomFontEmbedder.ts +0 -237
  359. package/src/core/embedders/CustomFontSubsetEmbedder.ts +0 -89
  360. package/src/core/embedders/FileEmbedder.ts +0 -77
  361. package/src/core/embedders/FontFlags.ts +0 -45
  362. package/src/core/embedders/JavaScriptEmbedder.ts +0 -34
  363. package/src/core/embedders/JpegEmbedder.ts +0 -118
  364. package/src/core/embedders/PDFPageEmbedder.ts +0 -139
  365. package/src/core/embedders/PngEmbedder.ts +0 -69
  366. package/src/core/embedders/StandardFontEmbedder.ts +0 -121
  367. package/src/core/errors.ts +0 -226
  368. package/src/core/interactive/ViewerPreferences.ts +0 -565
  369. package/src/core/objects/PDFArray.ts +0 -179
  370. package/src/core/objects/PDFBool.ts +0 -53
  371. package/src/core/objects/PDFDict.ts +0 -220
  372. package/src/core/objects/PDFHexString.ts +0 -94
  373. package/src/core/objects/PDFInvalidObject.ts +0 -34
  374. package/src/core/objects/PDFName.ts +0 -152
  375. package/src/core/objects/PDFNull.ts +0 -30
  376. package/src/core/objects/PDFNumber.ts +0 -44
  377. package/src/core/objects/PDFObject.ts +0 -22
  378. package/src/core/objects/PDFRawStream.ts +0 -41
  379. package/src/core/objects/PDFRef.ts +0 -51
  380. package/src/core/objects/PDFStream.ts +0 -87
  381. package/src/core/objects/PDFString.ts +0 -118
  382. package/src/core/operators/PDFOperator.ts +0 -72
  383. package/src/core/operators/PDFOperatorNames.ts +0 -92
  384. package/src/core/parser/BaseParser.ts +0 -119
  385. package/src/core/parser/ByteStream.ts +0 -76
  386. package/src/core/parser/PDFObjectParser.ts +0 -302
  387. package/src/core/parser/PDFObjectStreamParser.ts +0 -65
  388. package/src/core/parser/PDFParser.ts +0 -363
  389. package/src/core/parser/PDFXRefStreamParser.ts +0 -129
  390. package/src/core/streams/Ascii85Stream.ts +0 -97
  391. package/src/core/streams/AsciiHexStream.ts +0 -77
  392. package/src/core/streams/DecodeStream.ts +0 -188
  393. package/src/core/streams/DecryptStream.ts +0 -49
  394. package/src/core/streams/FlateStream.ts +0 -397
  395. package/src/core/streams/LZWStream.ts +0 -157
  396. package/src/core/streams/RunLengthStream.ts +0 -55
  397. package/src/core/streams/Stream.ts +0 -126
  398. package/src/core/streams/decode.ts +0 -70
  399. package/src/core/structures/PDFCatalog.ts +0 -81
  400. package/src/core/structures/PDFContentStream.ts +0 -58
  401. package/src/core/structures/PDFCrossRefStream.ts +0 -238
  402. package/src/core/structures/PDFFlateStream.ts +0 -40
  403. package/src/core/structures/PDFObjectStream.ts +0 -91
  404. package/src/core/structures/PDFPageLeaf.ts +0 -244
  405. package/src/core/structures/PDFPageTree.ts +0 -192
  406. package/src/core/syntax/CharCodes.ts +0 -62
  407. package/src/core/syntax/Delimiters.ts +0 -14
  408. package/src/core/syntax/Irregular.ts +0 -10
  409. package/src/core/syntax/Keywords.ts +0 -57
  410. package/src/core/syntax/Numeric.ts +0 -26
  411. package/src/core/syntax/Whitespace.ts +0 -10
  412. package/src/core/writers/PDFStreamWriter.ts +0 -114
  413. package/src/core/writers/PDFWriter.ts +0 -146
  414. package/src/types/fontkit.ts +0 -643
  415. package/src/utils/Cache.ts +0 -26
  416. package/src/utils/arrays.ts +0 -153
  417. package/src/utils/async.ts +0 -8
  418. package/src/utils/base64.ts +0 -98
  419. package/src/utils/elements/Arc.ts +0 -97
  420. package/src/utils/elements/Circle.ts +0 -47
  421. package/src/utils/elements/Ellipse.ts +0 -117
  422. package/src/utils/elements/GraphElement.ts +0 -14
  423. package/src/utils/elements/Line.ts +0 -83
  424. package/src/utils/elements/Plot.ts +0 -50
  425. package/src/utils/elements/Point.ts +0 -37
  426. package/src/utils/elements/Rectangle.ts +0 -65
  427. package/src/utils/elements/Segment.ts +0 -81
  428. package/src/utils/errors.ts +0 -3
  429. package/src/utils/intersections.ts +0 -237
  430. package/src/utils/maths.ts +0 -96
  431. package/src/utils/numbers.ts +0 -55
  432. package/src/utils/objects.ts +0 -13
  433. package/src/utils/pdfDocEncoding.ts +0 -69
  434. package/src/utils/png.ts +0 -100
  435. package/src/utils/rng.ts +0 -21
  436. package/src/utils/strings.ts +0 -191
  437. package/src/utils/validators.ts +0 -192
  438. package/tsconfig.build.json +0 -14
  439. package/tsconfig.json +0 -15
  440. package/vite.config.mts +0 -39
  441. /package/{src/api/form/index.ts → dist/api/form/index.d.ts} +0 -0
  442. /package/{src/api/image/index.ts → dist/api/image/index.d.ts} +0 -0
  443. /package/{src/api/index.ts → dist/api/index.d.ts} +0 -0
  444. /package/{src/api/text/index.ts → dist/api/text/index.d.ts} +0 -0
  445. /package/{src/core/acroform/index.ts → dist/core/acroform/index.d.ts} +0 -0
  446. /package/{src/core/annotation/index.ts → dist/core/annotation/index.d.ts} +0 -0
  447. /package/{src/index.ts → dist/index.d.ts} +0 -0
  448. /package/{src/utils/elements/index.ts → dist/utils/elements/index.d.ts} +0 -0
  449. /package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -0
@@ -1,153 +0,0 @@
1
- import { decodeFromBase64DataUri } from './base64';
2
- import { charFromCode } from './strings';
3
-
4
- export const last = <T>(array: T[]): T => array[array.length - 1];
5
-
6
- // export const dropLast = <T>(array: T[]): T[] =>
7
- // array.slice(0, array.length - 1);
8
-
9
- export const typedArrayFor = (value: string | Uint8Array): Uint8Array => {
10
- if (value instanceof Uint8Array) return value;
11
- const length = value.length;
12
- const typedArray = new Uint8Array(length);
13
- for (let idx = 0; idx < length; idx++) {
14
- typedArray[idx] = value.charCodeAt(idx);
15
- }
16
- return typedArray;
17
- };
18
-
19
- export const mergeIntoTypedArray = (...arrays: (string | Uint8Array)[]) => {
20
- const arrayCount = arrays.length;
21
-
22
- const typedArrays: Uint8Array[] = [];
23
- for (let idx = 0; idx < arrayCount; idx++) {
24
- const element = arrays[idx];
25
- typedArrays[idx] = element instanceof Uint8Array ? element : typedArrayFor(element);
26
- }
27
-
28
- let totalSize = 0;
29
- for (let idx = 0; idx < arrayCount; idx++) {
30
- totalSize += arrays[idx].length;
31
- }
32
-
33
- const merged = new Uint8Array(totalSize);
34
- let offset = 0;
35
- for (let arrIdx = 0; arrIdx < arrayCount; arrIdx++) {
36
- const arr = typedArrays[arrIdx];
37
- for (let byteIdx = 0, arrLen = arr.length; byteIdx < arrLen; byteIdx++) {
38
- merged[offset++] = arr[byteIdx];
39
- }
40
- }
41
-
42
- return merged;
43
- };
44
-
45
- export const mergeUint8Arrays = (arrays: Uint8Array[]): Uint8Array => {
46
- let totalSize = 0;
47
- for (let idx = 0, len = arrays.length; idx < len; idx++) {
48
- totalSize += arrays[idx].length;
49
- }
50
-
51
- const mergedBuffer = new Uint8Array(totalSize);
52
- let offset = 0;
53
- for (let idx = 0, len = arrays.length; idx < len; idx++) {
54
- const array = arrays[idx];
55
- mergedBuffer.set(array, offset);
56
- offset += array.length;
57
- }
58
-
59
- return mergedBuffer;
60
- };
61
-
62
- export const arrayAsString = (array: Uint8Array | number[]): string => {
63
- let str = '';
64
- for (let idx = 0, len = array.length; idx < len; idx++) {
65
- str += charFromCode(array[idx]);
66
- }
67
- return str;
68
- };
69
-
70
- export const byAscendingId = <T extends { id: any }>(a: T, b: T) => a.id - b.id;
71
-
72
- export const sortedUniq = <T>(array: T[], indexer: (elem: T) => any): T[] => {
73
- const uniq: T[] = [];
74
-
75
- for (let idx = 0, len = array.length; idx < len; idx++) {
76
- const curr = array[idx];
77
- const prev = array[idx - 1];
78
- if (idx === 0 || indexer(curr) !== indexer(prev)) {
79
- uniq.push(curr);
80
- }
81
- }
82
-
83
- return uniq;
84
- };
85
-
86
- export const isArrayEqual = <T>(arr1: ArrayLike<T>, arr2: ArrayLike<T>) => {
87
- if (arr1.length !== arr2.length) {
88
- return false;
89
- }
90
- for (let i = 0, ii = arr1.length; i < ii; i++) {
91
- if (arr1[i] !== arr2[i]) {
92
- return false;
93
- }
94
- }
95
- return true;
96
- };
97
-
98
- // Arrays and TypedArrays in JS both have .reverse() methods, which would seem
99
- // to negate the need for this function. However, not all runtimes support this
100
- // method (e.g. React Native). This function compensates for that fact.
101
- export const reverseArray = (array: Uint8Array) => {
102
- const arrayLen = array.length;
103
- for (let idx = 0, len = Math.floor(arrayLen / 2); idx < len; idx++) {
104
- const leftIdx = idx;
105
- const rightIdx = arrayLen - idx - 1;
106
- const temp = array[idx];
107
-
108
- array[leftIdx] = array[rightIdx];
109
- array[rightIdx] = temp;
110
- }
111
- return array;
112
- };
113
-
114
- export const sum = (array: number[] | Uint8Array): number => {
115
- let total = 0;
116
- for (let idx = 0, len = array.length; idx < len; idx++) {
117
- total += array[idx];
118
- }
119
- return total;
120
- };
121
-
122
- export const range = (start: number, end: number): number[] => {
123
- const arr = Array<number>(end - start);
124
- for (let idx = 0, len = arr.length; idx < len; idx++) {
125
- arr[idx] = start + idx;
126
- }
127
- return arr;
128
- };
129
-
130
- export const pluckIndices = <T>(arr: T[], indices: number[]) => {
131
- const plucked = Array<T>(indices.length);
132
- for (let idx = 0, len = indices.length; idx < len; idx++) {
133
- plucked[idx] = arr[indices[idx]];
134
- }
135
- return plucked;
136
- };
137
-
138
- export const canBeConvertedToUint8Array = (
139
- input: any,
140
- ): input is string | ArrayBuffer | Uint8Array =>
141
- input instanceof Uint8Array || input instanceof ArrayBuffer || typeof input === 'string';
142
-
143
- export const toUint8Array = (input: string | ArrayBuffer | Uint8Array) => {
144
- if (typeof input === 'string') {
145
- return decodeFromBase64DataUri(input);
146
- } else if (input instanceof ArrayBuffer) {
147
- return new Uint8Array(input);
148
- } else if (input instanceof Uint8Array) {
149
- return input;
150
- } else {
151
- throw new TypeError('`input` must be one of `string | ArrayBuffer | Uint8Array`');
152
- }
153
- };
@@ -1,8 +0,0 @@
1
- /**
2
- * Returns a Promise that resolves after at least one tick of the
3
- * Macro Task Queue occurs.
4
- */
5
- export const waitForTick = (): Promise<void> =>
6
- new Promise((resolve) => {
7
- setTimeout(() => resolve(), 0);
8
- });
@@ -1,98 +0,0 @@
1
- /*
2
- * The `chars`, `lookup`, `encode`, and `decode` members of this file are
3
- * licensed under the following:
4
- *
5
- * base64-arraybuffer
6
- * https://github.com/niklasvh/base64-arraybuffer
7
- *
8
- * Copyright (c) 2012 Niklas von Hertzen
9
- * Licensed under the MIT license.
10
- *
11
- */
12
-
13
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
14
-
15
- // Use a lookup table to find the index.
16
- const lookup = new Uint8Array(256);
17
- for (let i = 0; i < chars.length; i++) {
18
- lookup[chars.charCodeAt(i)] = i;
19
- }
20
-
21
- export const encodeToBase64 = (bytes: Uint8Array): string => {
22
- let base64 = '';
23
- const len = bytes.length;
24
- for (let i = 0; i < len; i += 3) {
25
- base64 += chars[bytes[i] >> 2];
26
- base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
27
- base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
28
- base64 += chars[bytes[i + 2] & 63];
29
- }
30
-
31
- if (len % 3 === 2) {
32
- base64 = base64.substring(0, base64.length - 1) + '=';
33
- } else if (len % 3 === 1) {
34
- base64 = base64.substring(0, base64.length - 2) + '==';
35
- }
36
-
37
- return base64;
38
- };
39
-
40
- export const decodeFromBase64 = (base64: string): Uint8Array => {
41
- let bufferLength = base64.length * 0.75;
42
- const len = base64.length;
43
- let i;
44
- let p = 0;
45
- let encoded1;
46
- let encoded2;
47
- let encoded3;
48
- let encoded4;
49
-
50
- if (base64[base64.length - 1] === '=') {
51
- bufferLength--;
52
- if (base64[base64.length - 2] === '=') {
53
- bufferLength--;
54
- }
55
- }
56
-
57
- const bytes = new Uint8Array(bufferLength);
58
-
59
- for (i = 0; i < len; i += 4) {
60
- encoded1 = lookup[base64.charCodeAt(i)];
61
- encoded2 = lookup[base64.charCodeAt(i + 1)];
62
- encoded3 = lookup[base64.charCodeAt(i + 2)];
63
- encoded4 = lookup[base64.charCodeAt(i + 3)];
64
-
65
- bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
66
- bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
67
- bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
68
- }
69
-
70
- return bytes;
71
- };
72
-
73
- // This regex is designed to be as flexible as possible. It will parse certain
74
- // invalid data URIs.
75
- const DATA_URI_PREFIX_REGEX = /^(data)?:?([\w/+]+)?;?(charset=[\w-]+|base64)?.*,/i;
76
-
77
- /**
78
- * If the `dataUri` input is a data URI, then the data URI prefix must not be
79
- * longer than 100 characters, or this function will fail to decode it.
80
- *
81
- * @param dataUri a base64 data URI or plain base64 string
82
- * @returns a Uint8Array containing the decoded input
83
- */
84
- export const decodeFromBase64DataUri = (dataUri: string): Uint8Array => {
85
- const trimmedUri = dataUri.trim();
86
-
87
- const prefix = trimmedUri.substring(0, 100);
88
- const res = prefix.match(DATA_URI_PREFIX_REGEX);
89
-
90
- // Assume it's not a data URI - just a plain base64 string
91
- if (!res) return decodeFromBase64(trimmedUri);
92
-
93
- // Remove the data URI prefix and parse the remainder as a base64 string
94
- const [fullMatch] = res;
95
- const data = trimmedUri.substring(fullMatch.length);
96
-
97
- return decodeFromBase64(data);
98
- };
@@ -1,97 +0,0 @@
1
- import { angleABC, distance, distanceCoords, rotate, vector } from '../maths';
2
-
3
- import Circle from './Circle';
4
- import GraphElement from './GraphElement';
5
- import Point from './Point';
6
-
7
- export default class Arc extends GraphElement {
8
- O: Point;
9
- A: Point;
10
- B: Point;
11
- /** Last sweep. Used to deduce the angle orientation */
12
- lastSweep: number;
13
-
14
- constructor(
15
- O: Point = new Point(),
16
- A: Point = new Point(),
17
- B: Point = new Point(),
18
- lastSweep = 0,
19
- ) {
20
- super();
21
- this.O = O;
22
- this.A = A;
23
- this.B = B;
24
- this.lastSweep = lastSweep;
25
- }
26
-
27
- center() {
28
- return this.O;
29
- }
30
-
31
- origin() {
32
- return this.A;
33
- }
34
-
35
- destination() {
36
- return this.getCircle().orthoProjection(this.B);
37
- }
38
-
39
- sweep() {
40
- this.lastSweep = angleABC(this.origin(), this.center(), this.destination(), this.lastSweep);
41
- return this.lastSweep;
42
- }
43
-
44
- ray() {
45
- return distance(this.center(), this.origin());
46
- }
47
-
48
- isEqual(element: GraphElement): boolean {
49
- if (!(element instanceof Arc)) return false;
50
- const dest = this.destination();
51
- const o = this.origin();
52
- const eDest = element.destination();
53
- const eO = element.origin();
54
- return (
55
- this.getCircle().isEqual(element.getCircle()) &&
56
- ((dest.isEqual(eDest) && o.isEqual(eO)) || (dest.isEqual(eO) && o.isEqual(eDest)))
57
- );
58
- }
59
-
60
- getCircle() {
61
- const circle = new Circle(this.center(), this.ray());
62
- return circle;
63
- }
64
-
65
- originVect() {
66
- return vector(this.center(), this.origin());
67
- }
68
-
69
- middle() {
70
- const halfSweep = this.sweep() / 2;
71
- const mid = this.center().plus(rotate(vector(this.center(), this.origin()), halfSweep));
72
- return mid;
73
- }
74
-
75
- includes(P: Point) {
76
- // As angles are returned between -π and π, we need the middle of the arc
77
- return (
78
- this.getCircle().includes(P) &&
79
- Math.abs(angleABC(this.middle(), this.center(), P)) <= Math.abs(this.sweep() / 2)
80
- );
81
- }
82
-
83
- orthoProjection(P: Point) {
84
- const H = this.getCircle().orthoProjection(P);
85
- if (this.includes(H)) return H;
86
- else {
87
- const origin = this.origin().toCoords();
88
- const destination = this.destination().toCoords();
89
- // Returns the closest between origin and destination
90
- const coords =
91
- distanceCoords(H.toCoords(), origin) < distanceCoords(H.toCoords(), destination)
92
- ? origin
93
- : destination;
94
- return new Point(coords);
95
- }
96
- }
97
- }
@@ -1,47 +0,0 @@
1
- import { distance, distanceCoords, isEqual, minus, plus, times, unitVector } from '../maths';
2
-
3
- import GraphElement from './GraphElement';
4
- import Point from './Point';
5
- export default class Circle extends GraphElement {
6
- O: Point;
7
- r: number;
8
-
9
- constructor(O: Point = new Point(), r = 1) {
10
- super();
11
- this.O = O;
12
- this.r = r;
13
- }
14
-
15
- ray() {
16
- return this.r;
17
- }
18
-
19
- center() {
20
- return this.O;
21
- }
22
-
23
- /** This is used to standardize type Circle | Arc */
24
- getCircle() {
25
- return this;
26
- }
27
-
28
- isEqual(element: GraphElement): boolean {
29
- return (
30
- element instanceof Circle &&
31
- this.center().isEqual(element.center()) &&
32
- isEqual(this.ray(), element.ray())
33
- );
34
- }
35
-
36
- includes(P: Point) {
37
- return isEqual(distance(this.center(), P), this.ray());
38
- }
39
-
40
- orthoProjection(P: Point) {
41
- const center = this.center().toCoords();
42
- const coords = P.toCoords();
43
- if (distanceCoords(coords, center) < this.ray()) return P;
44
- const vect = times(unitVector(minus(coords, center)), this.ray());
45
- return new Point(plus(center, vect));
46
- }
47
- }
@@ -1,117 +0,0 @@
1
- import { Size } from '../../types';
2
- import {
3
- angle,
4
- distance,
5
- isEqual,
6
- orientation,
7
- orthogonal,
8
- times,
9
- unitVector,
10
- vector,
11
- } from '../maths';
12
-
13
- import GraphElement from './GraphElement';
14
- import Point from './Point';
15
- import Segment from './Segment';
16
-
17
- export default class Ellipse extends GraphElement {
18
- A: Point;
19
- B: Point;
20
- C: Point;
21
-
22
- constructor(A: Point = new Point(), B: Point = new Point(), C: Point = new Point()) {
23
- super();
24
- this.A = A;
25
- this.B = B;
26
- this.C = C;
27
- }
28
-
29
- center(): Point {
30
- const center = this.axis().middle();
31
- return center;
32
- }
33
-
34
- axis(): Segment {
35
- const axis = new Segment(this.A, this.B);
36
- return axis;
37
- }
38
-
39
- a(): number {
40
- const axis = this.axis();
41
- return Math.max(axis.length() / 2, axis.distance(this.C));
42
- }
43
-
44
- b(): number {
45
- const axis = this.axis();
46
- return Math.min(axis.length() / 2, axis.distance(this.C));
47
- }
48
-
49
- rotation(): number {
50
- const axis = this.axis();
51
- return axis.length() / 2 > axis.distance(this.C)
52
- ? orientation(axis.dirVect())
53
- : orientation(orthogonal(axis.dirVect()));
54
- }
55
-
56
- getSize(): Size {
57
- return { width: 2 * this.a(), height: 2 * this.b() };
58
- }
59
-
60
- isEqual(element: GraphElement): boolean {
61
- if (!(element instanceof Ellipse)) return false;
62
- const a = this.a();
63
- const b = this.b();
64
- const rotation = this.rotation();
65
- const eltA = element.a();
66
- const eltB = element.b();
67
- const eltRotation = element.rotation();
68
- // If the main axis is the same on both ellipse
69
- if (eltA < eltB === a < b) {
70
- // The rotation is equivalent module PI as the element is symetrical
71
- return (
72
- isEqual(eltA, a) &&
73
- isEqual(eltB, b) &&
74
- isEqual(rotation + (Math.PI % Math.PI), eltRotation + (Math.PI % Math.PI))
75
- );
76
- }
77
- // If the small axis is different
78
- else {
79
- // We add a rotation of PI / 2 to emulate the fact that the main axis are actually orthogonal
80
- return (
81
- isEqual(eltA, b) &&
82
- isEqual(eltB, a) &&
83
- isEqual(rotation + (Math.PI % Math.PI), eltRotation + (((3 * Math.PI) / 2) % Math.PI))
84
- );
85
- }
86
- }
87
-
88
- includes(P: Point) {
89
- const { x, y } = P.toCoords();
90
- const { x: cx, y: cy } = this.center().toCoords();
91
- const teta = this.rotation();
92
- return isEqual(
93
- Math.pow(((x - cx) * Math.cos(teta) + (y - cy) * Math.sin(teta)) / this.a(), 2) +
94
- Math.pow(((x - cx) * Math.sin(teta) - (y - cy) * Math.cos(teta)) / this.b(), 2),
95
- 1,
96
- );
97
- }
98
-
99
- orthoProjection(P: Point) {
100
- // We will consider that the parametric projection is a correct approximation of the distance for the current case, even if it is not orthogonal
101
- const C = this.center();
102
- const axis = this.axis();
103
- const CP = vector(C, P);
104
- const teta = angle(axis.dirVect(), vector(C, P));
105
- const ray = this.polarRay(teta);
106
- if (distance(P, this.center()) < ray) return P;
107
- const vect = times(unitVector(CP), ray);
108
- return new Point(this.center().plus(vect).toCoords());
109
- }
110
-
111
- polarRay(teta: number) {
112
- const a = this.a();
113
- const b = this.b();
114
- const excentricity = Math.sqrt(Math.abs(a * a - b * b)) / Math.max(a, b);
115
- return Math.min(a, b) / Math.sqrt(1 - Math.pow(excentricity * Math.cos(teta), 2));
116
- }
117
- }
@@ -1,14 +0,0 @@
1
- import { distance } from '../maths';
2
-
3
- import Point from './Point';
4
-
5
- export default abstract class GraphElement {
6
- abstract isEqual(element: GraphElement): boolean;
7
-
8
- abstract orthoProjection(P: Point): Point;
9
-
10
- distance(P: Point) {
11
- const H = this.orthoProjection(P);
12
- return distance(H, P);
13
- }
14
- }
@@ -1,83 +0,0 @@
1
- import { Coordinates } from '../../types';
2
- import { intersectionLine } from '../intersections';
3
- import { isColinear, isEqual, orthogonal, vector } from '../maths';
4
-
5
- import GraphElement from './GraphElement';
6
- import Point from './Point';
7
-
8
- export default class Line extends GraphElement {
9
- origin(): Point {
10
- return this.A;
11
- }
12
-
13
- dirVect(): Coordinates {
14
- return vector(this.A, this.B);
15
- }
16
-
17
- A: Point;
18
- B: Point;
19
-
20
- constructor(A: Point = new Point(), B: Point = new Point()) {
21
- super();
22
- this.A = A;
23
- this.B = B;
24
- }
25
-
26
- /** Line equation */
27
- y(x: number) {
28
- const a = this.a();
29
- const b = this.b();
30
- return a * x + b;
31
- }
32
-
33
- /** The slope */
34
- a() {
35
- const dirVect = this.dirVect();
36
- return dirVect.y / dirVect.x;
37
- }
38
-
39
- /** Origin y coordinate */
40
- b() {
41
- const O = this.origin().toCoords();
42
- const a = this.a();
43
- return O.y - a * O.x;
44
- }
45
-
46
- isEqual(element: GraphElement): boolean {
47
- const vect = this.dirVect();
48
- return (
49
- element instanceof Line &&
50
- isColinear(vect, element.dirVect()) &&
51
- (isEqual(vect.x, 0)
52
- ? // We need to take care of the case of the vertical line
53
- isEqual(this.origin().toCoords().x, element.origin().toCoords().x)
54
- : isEqual(this.b(), element.b()))
55
- );
56
- }
57
-
58
- /** Reversed line equation */
59
- x(y: number) {
60
- const dirVect = this.dirVect();
61
- return ((y - this.b()) * dirVect.x) / dirVect.y;
62
- }
63
-
64
- includes(P: Point) {
65
- const { x, y } = P.toCoords();
66
- const vect = this.dirVect();
67
- return isEqual(vect.x, 0) ? isEqual(this.origin().toCoords().x, x) : isEqual(this.y(x), y);
68
- }
69
-
70
- /** This is used to standarsize type Segment | HalfLine | Line */
71
- getLine() {
72
- const line = new Line(this.origin(), this.B);
73
- return line;
74
- }
75
-
76
- orthoProjection(P: Point): Point {
77
- const vectOrtho = orthogonal(this.dirVect());
78
- const A = new Point(P.toCoords());
79
- const ortho = new Line(A, A.plus(vectOrtho));
80
- const H = intersectionLine(this, ortho)[0];
81
- return new Point(H);
82
- }
83
- }
@@ -1,50 +0,0 @@
1
- import { Coordinates } from '../../types';
2
- import { plus } from '../maths';
3
-
4
- import GraphElement from './GraphElement';
5
- import Point from './Point';
6
- import Segment from './Segment';
7
- export default class Plot extends GraphElement {
8
- points: Coordinates[];
9
-
10
- constructor(points: Coordinates[] = []) {
11
- super();
12
- this.points = points;
13
- }
14
-
15
- getPoints() {
16
- return [...this.points];
17
- }
18
-
19
- translate(translationVector: Coordinates) {
20
- this.points = this.points.map((point) => plus(point, translationVector));
21
- }
22
-
23
- isEqual(element: GraphElement): boolean {
24
- if (!(element instanceof Plot)) return false;
25
- const points = this.getPoints().map((coord) => new Point(coord));
26
- const points2 = element.getPoints().map((coord) => new Point(coord));
27
- return (
28
- points.every((point, i) => point.isEqual(points2[i])) ||
29
- points.reverse().every((point, i) => point.isEqual(points2[i]))
30
- );
31
- }
32
-
33
- orthoProjection(P: Point) {
34
- const points = this.getPoints();
35
- const orthos = points
36
- .slice(0, -1)
37
- .map((pt, i) => new Segment(new Point(pt), new Point(points[i + 1])))
38
- .map((seg) => seg.orthoProjection(P));
39
- let min = Number.POSITIVE_INFINITY;
40
- let closest: Point = new Point(points[0]);
41
- orthos.forEach((ortho) => {
42
- const d = ortho.distance(P);
43
- if (d < min) {
44
- min = d;
45
- closest = ortho;
46
- }
47
- });
48
- return closest;
49
- }
50
- }
@@ -1,37 +0,0 @@
1
- import type { Coordinates } from '../../types';
2
-
3
- import { isEqual, plus } from '../maths';
4
- import GraphElement from './GraphElement';
5
-
6
- export default class Point extends GraphElement {
7
- static type = 'PointFixed';
8
-
9
- x: number;
10
- y: number;
11
-
12
- constructor(coords = { x: 0, y: 0 }) {
13
- super();
14
- this.x = coords.x;
15
- this.y = coords.y;
16
- }
17
-
18
- toCoords() {
19
- return { x: this.x, y: this.y };
20
- }
21
-
22
- isEqual(element: GraphElement): boolean {
23
- if (!(element instanceof Point)) return false;
24
- const A = this.toCoords();
25
- const B = element.toCoords();
26
- return isEqual(A.x, B.x) && isEqual(A.y, B.y);
27
- }
28
-
29
- orthoProjection() {
30
- return new Point(this.toCoords());
31
- }
32
-
33
- plus(vect: Coordinates) {
34
- const P = new Point(plus(this.toCoords(), vect));
35
- return P;
36
- }
37
- }