pdfjs-dist 2.2.228 → 2.6.347

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.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (229) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +8816 -19300
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +22 -1
  6. package/build/pdf.worker.entry.js +5 -3
  7. package/build/pdf.worker.js +27185 -35746
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +26665 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/es5/build/pdf.min.js +22 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +61231 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/build/pdf.worker.min.js +22 -0
  17. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  18. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  19. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  20. package/es5/web/images/annotation-check.svg +11 -0
  21. package/es5/web/images/annotation-comment.svg +16 -0
  22. package/es5/web/images/annotation-help.svg +26 -0
  23. package/es5/web/images/annotation-insert.svg +10 -0
  24. package/es5/web/images/annotation-key.svg +11 -0
  25. package/es5/web/images/annotation-newparagraph.svg +11 -0
  26. package/es5/web/images/annotation-noicon.svg +7 -0
  27. package/es5/web/images/annotation-note.svg +42 -0
  28. package/es5/web/images/annotation-paragraph.svg +16 -0
  29. package/es5/web/images/loading-icon.gif +0 -0
  30. package/es5/web/images/shadow.png +0 -0
  31. package/es5/web/pdf_viewer.css +406 -0
  32. package/es5/web/pdf_viewer.js +7886 -0
  33. package/es5/web/pdf_viewer.js.map +1 -0
  34. package/image_decoders/pdf.image_decoders.js +1498 -4832
  35. package/image_decoders/pdf.image_decoders.js.map +1 -1
  36. package/image_decoders/pdf.image_decoders.min.js +22 -1
  37. package/lib/README.md +7 -0
  38. package/lib/core/annotation.js +1144 -927
  39. package/lib/core/arithmetic_decoder.js +81 -97
  40. package/lib/core/bidi.js +54 -46
  41. package/lib/core/ccitt.js +88 -81
  42. package/lib/core/ccitt_stream.js +15 -14
  43. package/lib/core/cff_parser.js +747 -716
  44. package/lib/core/charsets.js +4 -4
  45. package/lib/core/chunked_stream.js +462 -553
  46. package/lib/core/cmap.js +231 -277
  47. package/lib/core/colorspace.js +715 -857
  48. package/lib/core/core_utils.js +57 -52
  49. package/lib/core/crypto.js +416 -437
  50. package/lib/core/document.js +629 -670
  51. package/lib/core/encodings.js +15 -15
  52. package/lib/core/evaluator.js +3229 -2800
  53. package/lib/core/font_renderer.js +135 -178
  54. package/lib/core/fonts.js +602 -534
  55. package/lib/core/function.js +355 -279
  56. package/lib/core/glyphlist.js +4527 -4526
  57. package/lib/core/image.js +442 -439
  58. package/lib/core/image_utils.js +221 -61
  59. package/lib/core/jbig2.js +325 -316
  60. package/lib/core/jbig2_stream.js +18 -17
  61. package/lib/core/jpeg_stream.js +21 -26
  62. package/lib/core/jpg.js +289 -233
  63. package/lib/core/jpx.js +161 -143
  64. package/lib/core/jpx_stream.js +28 -28
  65. package/lib/core/metrics.js +2928 -2928
  66. package/lib/core/murmurhash3.js +87 -102
  67. package/lib/core/obj.js +1343 -1300
  68. package/lib/core/operator_list.js +90 -67
  69. package/lib/core/parser.js +990 -987
  70. package/lib/core/pattern.js +105 -77
  71. package/lib/core/pdf_manager.js +149 -316
  72. package/lib/core/primitives.js +156 -104
  73. package/lib/core/ps_parser.js +175 -214
  74. package/lib/core/standard_fonts.js +237 -236
  75. package/lib/core/stream.js +94 -74
  76. package/lib/core/type1_parser.js +89 -69
  77. package/lib/core/unicode.js +1654 -1654
  78. package/lib/core/worker.js +275 -290
  79. package/lib/core/worker_stream.js +101 -210
  80. package/lib/core/writer.js +242 -0
  81. package/lib/display/annotation_layer.js +772 -1041
  82. package/lib/display/annotation_storage.js +89 -0
  83. package/lib/display/api.js +1575 -1868
  84. package/lib/display/api_compatibility.js +12 -17
  85. package/lib/display/canvas.js +370 -222
  86. package/lib/display/content_disposition.js +40 -59
  87. package/lib/display/display_utils.js +341 -536
  88. package/lib/display/fetch_stream.js +188 -304
  89. package/lib/display/font_loader.js +282 -414
  90. package/lib/display/metadata.js +81 -99
  91. package/lib/display/network.js +362 -511
  92. package/lib/display/network_utils.js +25 -18
  93. package/lib/display/node_stream.js +283 -465
  94. package/lib/display/node_utils.js +87 -0
  95. package/lib/display/optional_content_config.js +184 -0
  96. package/lib/display/pattern_helper.js +93 -44
  97. package/lib/display/svg.js +1163 -1401
  98. package/lib/display/text_layer.js +154 -137
  99. package/lib/display/transport_stream.js +237 -375
  100. package/lib/display/webgl.js +70 -83
  101. package/lib/display/worker_options.js +3 -3
  102. package/lib/display/xml_parser.js +303 -392
  103. package/lib/examples/node/domstubs.js +37 -37
  104. package/lib/pdf.js +220 -58
  105. package/lib/pdf.worker.js +14 -6
  106. package/lib/shared/compatibility.js +3 -246
  107. package/lib/shared/is_node.js +7 -6
  108. package/lib/shared/message_handler.js +327 -332
  109. package/lib/shared/util.js +271 -306
  110. package/lib/test/unit/annotation_spec.js +1902 -763
  111. package/lib/test/unit/annotation_storage_spec.js +83 -0
  112. package/lib/test/unit/api_spec.js +790 -592
  113. package/lib/test/unit/bidi_spec.js +7 -7
  114. package/lib/test/unit/cff_parser_spec.js +73 -72
  115. package/lib/test/unit/clitests_helper.js +7 -9
  116. package/lib/test/unit/cmap_spec.js +86 -88
  117. package/lib/test/unit/colorspace_spec.js +346 -154
  118. package/lib/test/unit/core_utils_spec.js +125 -105
  119. package/lib/test/unit/crypto_spec.js +232 -185
  120. package/lib/test/unit/custom_spec.js +150 -24
  121. package/lib/test/unit/display_svg_spec.js +34 -39
  122. package/lib/test/unit/display_utils_spec.js +139 -149
  123. package/lib/test/unit/document_spec.js +128 -17
  124. package/lib/test/unit/encodings_spec.js +12 -34
  125. package/lib/test/unit/evaluator_spec.js +112 -91
  126. package/lib/test/unit/fetch_stream_spec.js +31 -29
  127. package/lib/test/unit/function_spec.js +206 -204
  128. package/lib/test/unit/jasmine-boot.js +48 -32
  129. package/lib/test/unit/message_handler_spec.js +173 -159
  130. package/lib/test/unit/metadata_spec.js +71 -71
  131. package/lib/test/unit/murmurhash3_spec.js +12 -12
  132. package/lib/test/unit/network_spec.js +13 -11
  133. package/lib/test/unit/network_utils_spec.js +158 -144
  134. package/lib/test/unit/node_stream_spec.js +76 -90
  135. package/lib/test/unit/parser_spec.js +108 -114
  136. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  137. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  138. package/lib/test/unit/pdf_history_spec.js +32 -32
  139. package/lib/test/unit/primitives_spec.js +337 -156
  140. package/lib/test/unit/stream_spec.js +16 -14
  141. package/lib/test/unit/test_utils.js +91 -304
  142. package/lib/test/unit/testreporter.js +33 -22
  143. package/lib/test/unit/type1_parser_spec.js +42 -42
  144. package/lib/test/unit/ui_utils_spec.js +299 -461
  145. package/lib/test/unit/unicode_spec.js +42 -42
  146. package/lib/test/unit/util_spec.js +129 -149
  147. package/lib/test/unit/writer_spec.js +84 -0
  148. package/lib/web/annotation_layer_builder.js +78 -111
  149. package/lib/web/app.js +1542 -1267
  150. package/lib/web/app_options.js +76 -91
  151. package/lib/web/base_tree_viewer.js +100 -0
  152. package/lib/web/base_viewer.js +869 -834
  153. package/lib/web/chromecom.js +165 -252
  154. package/lib/web/debugger.js +149 -205
  155. package/lib/web/download_manager.js +34 -58
  156. package/lib/web/firefox_print_service.js +62 -34
  157. package/lib/web/firefoxcom.js +206 -374
  158. package/lib/web/genericcom.js +26 -108
  159. package/lib/web/genericl10n.js +24 -153
  160. package/lib/web/grab_to_pan.js +30 -30
  161. package/lib/web/interfaces.js +80 -254
  162. package/lib/web/overlay_manager.js +70 -246
  163. package/lib/web/password_prompt.js +38 -64
  164. package/lib/web/pdf_attachment_viewer.js +150 -126
  165. package/lib/web/pdf_cursor_tools.js +75 -102
  166. package/lib/web/pdf_document_properties.js +229 -383
  167. package/lib/web/pdf_find_bar.js +136 -170
  168. package/lib/web/pdf_find_controller.js +492 -548
  169. package/lib/web/pdf_find_utils.js +13 -13
  170. package/lib/web/pdf_history.js +397 -406
  171. package/lib/web/pdf_layer_viewer.js +208 -0
  172. package/lib/web/pdf_link_service.js +304 -348
  173. package/lib/web/pdf_outline_viewer.js +119 -212
  174. package/lib/web/pdf_page_view.js +474 -513
  175. package/lib/web/pdf_presentation_mode.js +308 -357
  176. package/lib/web/pdf_print_service.js +96 -110
  177. package/lib/web/pdf_rendering_queue.js +87 -108
  178. package/lib/web/pdf_sidebar.js +286 -302
  179. package/lib/web/pdf_sidebar_resizer.js +92 -119
  180. package/lib/web/pdf_single_page_viewer.js +77 -126
  181. package/lib/web/pdf_thumbnail_view.js +289 -297
  182. package/lib/web/pdf_thumbnail_viewer.js +202 -206
  183. package/lib/web/pdf_viewer.component.js +20 -21
  184. package/lib/web/pdf_viewer.js +55 -115
  185. package/lib/web/preferences.js +69 -273
  186. package/lib/web/secondary_toolbar.js +164 -196
  187. package/lib/web/text_layer_builder.js +284 -319
  188. package/lib/web/toolbar.js +217 -210
  189. package/lib/web/ui_utils.js +274 -421
  190. package/lib/web/view_history.js +52 -226
  191. package/lib/web/viewer_compatibility.js +21 -6
  192. package/package.json +4 -9
  193. package/types/display/annotation_layer.d.ts +61 -0
  194. package/types/display/annotation_storage.d.ts +36 -0
  195. package/types/display/api.d.ts +1107 -0
  196. package/types/display/api_compatibility.d.ts +1 -0
  197. package/types/display/canvas.d.ts +4 -0
  198. package/types/display/content_disposition.d.ts +7 -0
  199. package/types/display/display_utils.d.ts +243 -0
  200. package/types/display/fetch_stream.d.ts +67 -0
  201. package/types/display/font_loader.d.ts +19 -0
  202. package/types/display/metadata.d.ts +9 -0
  203. package/types/display/network.d.ts +80 -0
  204. package/types/display/network_utils.d.ts +14 -0
  205. package/types/display/node_stream.d.ts +72 -0
  206. package/types/display/node_utils.d.ts +6 -0
  207. package/types/display/optional_content_config.d.ts +12 -0
  208. package/types/display/pattern_helper.d.ts +5 -0
  209. package/types/display/svg.d.ts +2 -0
  210. package/types/display/text_layer.d.ts +83 -0
  211. package/types/display/transport_stream.d.ts +57 -0
  212. package/types/display/webgl.d.ts +20 -0
  213. package/types/display/worker_options.d.ts +27 -0
  214. package/types/display/xml_parser.d.ts +35 -0
  215. package/types/pdf.d.ts +33 -0
  216. package/types/shared/compatibility.d.ts +1 -0
  217. package/types/shared/is_node.d.ts +1 -0
  218. package/types/shared/message_handler.d.ts +62 -0
  219. package/types/shared/util.d.ts +421 -0
  220. package/web/images/shadow.png +0 -0
  221. package/web/pdf_viewer.css +29 -27
  222. package/web/pdf_viewer.js +3524 -4746
  223. package/web/pdf_viewer.js.map +1 -1
  224. package/webpack.js +6 -5
  225. package/external/streams/streams-lib.js +0 -3962
  226. package/external/url/url-lib.js +0 -627
  227. package/lib/shared/streams_polyfill.js +0 -43
  228. package/lib/shared/url_polyfill.js +0 -56
  229. package/web/images/texture.png +0 -0
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2019 Mozilla Foundation
5
+ * Copyright 2020 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -25,14 +25,7 @@ Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
27
  exports.ArithmeticDecoder = void 0;
28
-
29
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30
-
31
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
32
-
33
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
34
-
35
- var QeTable = [{
28
+ const QeTable = [{
36
29
  qe: 0x5601,
37
30
  nmps: 1,
38
31
  nlps: 1,
@@ -48,7 +41,7 @@ var QeTable = [{
48
41
  nlps: 9,
49
42
  switchFlag: 0
50
43
  }, {
51
- qe: 0x0AC1,
44
+ qe: 0x0ac1,
52
45
  nmps: 4,
53
46
  nlps: 12,
54
47
  switchFlag: 0
@@ -93,7 +86,7 @@ var QeTable = [{
93
86
  nlps: 18,
94
87
  switchFlag: 0
95
88
  }, {
96
- qe: 0x1C01,
89
+ qe: 0x1c01,
97
90
  nmps: 13,
98
91
  nlps: 20,
99
92
  switchFlag: 0
@@ -153,7 +146,7 @@ var QeTable = [{
153
146
  nlps: 21,
154
147
  switchFlag: 0
155
148
  }, {
156
- qe: 0x1C01,
149
+ qe: 0x1c01,
157
150
  nmps: 25,
158
151
  nlps: 22,
159
152
  switchFlag: 0
@@ -183,17 +176,17 @@ var QeTable = [{
183
176
  nlps: 27,
184
177
  switchFlag: 0
185
178
  }, {
186
- qe: 0x0AC1,
179
+ qe: 0x0ac1,
187
180
  nmps: 31,
188
181
  nlps: 28,
189
182
  switchFlag: 0
190
183
  }, {
191
- qe: 0x09C1,
184
+ qe: 0x09c1,
192
185
  nmps: 32,
193
186
  nlps: 29,
194
187
  switchFlag: 0
195
188
  }, {
196
- qe: 0x08A1,
189
+ qe: 0x08a1,
197
190
  nmps: 33,
198
191
  nlps: 30,
199
192
  switchFlag: 0
@@ -208,7 +201,7 @@ var QeTable = [{
208
201
  nlps: 32,
209
202
  switchFlag: 0
210
203
  }, {
211
- qe: 0x02A1,
204
+ qe: 0x02a1,
212
205
  nmps: 36,
213
206
  nlps: 33,
214
207
  switchFlag: 0
@@ -269,117 +262,108 @@ var QeTable = [{
269
262
  switchFlag: 0
270
263
  }];
271
264
 
272
- var ArithmeticDecoder =
273
- /*#__PURE__*/
274
- function () {
275
- function ArithmeticDecoder(data, start, end) {
276
- _classCallCheck(this, ArithmeticDecoder);
277
-
265
+ class ArithmeticDecoder {
266
+ constructor(data, start, end) {
278
267
  this.data = data;
279
268
  this.bp = start;
280
269
  this.dataEnd = end;
281
270
  this.chigh = data[start];
282
271
  this.clow = 0;
283
272
  this.byteIn();
284
- this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F;
285
- this.clow = this.clow << 7 & 0xFFFF;
273
+ this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f;
274
+ this.clow = this.clow << 7 & 0xffff;
286
275
  this.ct -= 7;
287
276
  this.a = 0x8000;
288
277
  }
289
278
 
290
- _createClass(ArithmeticDecoder, [{
291
- key: "byteIn",
292
- value: function byteIn() {
293
- var data = this.data;
294
- var bp = this.bp;
279
+ byteIn() {
280
+ const data = this.data;
281
+ let bp = this.bp;
295
282
 
296
- if (data[bp] === 0xFF) {
297
- if (data[bp + 1] > 0x8F) {
298
- this.clow += 0xFF00;
299
- this.ct = 8;
300
- } else {
301
- bp++;
302
- this.clow += data[bp] << 9;
303
- this.ct = 7;
304
- this.bp = bp;
305
- }
283
+ if (data[bp] === 0xff) {
284
+ if (data[bp + 1] > 0x8f) {
285
+ this.clow += 0xff00;
286
+ this.ct = 8;
306
287
  } else {
307
288
  bp++;
308
- this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;
309
- this.ct = 8;
289
+ this.clow += data[bp] << 9;
290
+ this.ct = 7;
310
291
  this.bp = bp;
311
292
  }
312
-
313
- if (this.clow > 0xFFFF) {
314
- this.chigh += this.clow >> 16;
315
- this.clow &= 0xFFFF;
316
- }
293
+ } else {
294
+ bp++;
295
+ this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;
296
+ this.ct = 8;
297
+ this.bp = bp;
317
298
  }
318
- }, {
319
- key: "readBit",
320
- value: function readBit(contexts, pos) {
321
- var cx_index = contexts[pos] >> 1,
322
- cx_mps = contexts[pos] & 1;
323
- var qeTableIcx = QeTable[cx_index];
324
- var qeIcx = qeTableIcx.qe;
325
- var d;
326
- var a = this.a - qeIcx;
327
299
 
328
- if (this.chigh < qeIcx) {
329
- if (a < qeIcx) {
330
- a = qeIcx;
331
- d = cx_mps;
332
- cx_index = qeTableIcx.nmps;
333
- } else {
334
- a = qeIcx;
335
- d = 1 ^ cx_mps;
300
+ if (this.clow > 0xffff) {
301
+ this.chigh += this.clow >> 16;
302
+ this.clow &= 0xffff;
303
+ }
304
+ }
336
305
 
337
- if (qeTableIcx.switchFlag === 1) {
338
- cx_mps = d;
339
- }
306
+ readBit(contexts, pos) {
307
+ let cx_index = contexts[pos] >> 1,
308
+ cx_mps = contexts[pos] & 1;
309
+ const qeTableIcx = QeTable[cx_index];
310
+ const qeIcx = qeTableIcx.qe;
311
+ let d;
312
+ let a = this.a - qeIcx;
340
313
 
341
- cx_index = qeTableIcx.nlps;
342
- }
314
+ if (this.chigh < qeIcx) {
315
+ if (a < qeIcx) {
316
+ a = qeIcx;
317
+ d = cx_mps;
318
+ cx_index = qeTableIcx.nmps;
343
319
  } else {
344
- this.chigh -= qeIcx;
320
+ a = qeIcx;
321
+ d = 1 ^ cx_mps;
345
322
 
346
- if ((a & 0x8000) !== 0) {
347
- this.a = a;
348
- return cx_mps;
323
+ if (qeTableIcx.switchFlag === 1) {
324
+ cx_mps = d;
349
325
  }
350
326
 
351
- if (a < qeIcx) {
352
- d = 1 ^ cx_mps;
327
+ cx_index = qeTableIcx.nlps;
328
+ }
329
+ } else {
330
+ this.chigh -= qeIcx;
331
+
332
+ if ((a & 0x8000) !== 0) {
333
+ this.a = a;
334
+ return cx_mps;
335
+ }
353
336
 
354
- if (qeTableIcx.switchFlag === 1) {
355
- cx_mps = d;
356
- }
337
+ if (a < qeIcx) {
338
+ d = 1 ^ cx_mps;
357
339
 
358
- cx_index = qeTableIcx.nlps;
359
- } else {
360
- d = cx_mps;
361
- cx_index = qeTableIcx.nmps;
340
+ if (qeTableIcx.switchFlag === 1) {
341
+ cx_mps = d;
362
342
  }
343
+
344
+ cx_index = qeTableIcx.nlps;
345
+ } else {
346
+ d = cx_mps;
347
+ cx_index = qeTableIcx.nmps;
363
348
  }
349
+ }
364
350
 
365
- do {
366
- if (this.ct === 0) {
367
- this.byteIn();
368
- }
351
+ do {
352
+ if (this.ct === 0) {
353
+ this.byteIn();
354
+ }
369
355
 
370
- a <<= 1;
371
- this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;
372
- this.clow = this.clow << 1 & 0xFFFF;
373
- this.ct--;
374
- } while ((a & 0x8000) === 0);
356
+ a <<= 1;
357
+ this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1;
358
+ this.clow = this.clow << 1 & 0xffff;
359
+ this.ct--;
360
+ } while ((a & 0x8000) === 0);
375
361
 
376
- this.a = a;
377
- contexts[pos] = cx_index << 1 | cx_mps;
378
- return d;
379
- }
380
- }]);
362
+ this.a = a;
363
+ contexts[pos] = cx_index << 1 | cx_mps;
364
+ return d;
365
+ }
381
366
 
382
- return ArithmeticDecoder;
383
- }();
367
+ }
384
368
 
385
369
  exports.ArithmeticDecoder = ArithmeticDecoder;
package/lib/core/bidi.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2019 Mozilla Foundation
5
+ * Copyright 2020 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -26,10 +26,10 @@ Object.defineProperty(exports, "__esModule", {
26
26
  });
27
27
  exports.bidi = bidi;
28
28
 
29
- var _util = require("../shared/util");
29
+ var _util = require("../shared/util.js");
30
30
 
31
- var baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'];
32
- var arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'];
31
+ var baseTypes = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "ON", "ON", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "ON", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "ON", "ET", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "L", "ON", "ON", "BN", "ON", "ON", "ET", "ET", "EN", "EN", "ON", "L", "ON", "ON", "ON", "EN", "L", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L"];
32
+ var arabicTypes = ["AN", "AN", "AN", "AN", "AN", "AN", "ON", "ON", "AL", "ET", "ET", "AL", "CS", "AL", "ON", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "ON", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL"];
33
33
 
34
34
  function isOdd(i) {
35
35
  return (i & 1) !== 0;
@@ -63,10 +63,18 @@ function reverseValues(arr, start, end) {
63
63
  }
64
64
  }
65
65
 
66
- function createBidiText(str, isLTR, vertical) {
66
+ function createBidiText(str, isLTR, vertical = false) {
67
+ let dir = "ltr";
68
+
69
+ if (vertical) {
70
+ dir = "ttb";
71
+ } else if (!isLTR) {
72
+ dir = "rtl";
73
+ }
74
+
67
75
  return {
68
- str: str,
69
- dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl'
76
+ str,
77
+ dir
70
78
  };
71
79
  }
72
80
 
@@ -89,23 +97,23 @@ function bidi(str, startLevel, vertical) {
89
97
  for (i = 0; i < strLength; ++i) {
90
98
  chars[i] = str.charAt(i);
91
99
  var charCode = str.charCodeAt(i);
92
- var charType = 'L';
100
+ var charType = "L";
93
101
 
94
102
  if (charCode <= 0x00ff) {
95
103
  charType = baseTypes[charCode];
96
104
  } else if (0x0590 <= charCode && charCode <= 0x05f4) {
97
- charType = 'R';
105
+ charType = "R";
98
106
  } else if (0x0600 <= charCode && charCode <= 0x06ff) {
99
107
  charType = arabicTypes[charCode & 0xff];
100
108
 
101
109
  if (!charType) {
102
- (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16));
110
+ (0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16));
103
111
  }
104
- } else if (0x0700 <= charCode && charCode <= 0x08AC) {
105
- charType = 'AL';
112
+ } else if (0x0700 <= charCode && charCode <= 0x08ac) {
113
+ charType = "AL";
106
114
  }
107
115
 
108
- if (charType === 'R' || charType === 'AL' || charType === 'AN') {
116
+ if (charType === "R" || charType === "AL" || charType === "AN") {
109
117
  numBidi++;
110
118
  }
111
119
 
@@ -133,13 +141,13 @@ function bidi(str, startLevel, vertical) {
133
141
  levels[i] = startLevel;
134
142
  }
135
143
 
136
- var e = isOdd(startLevel) ? 'R' : 'L';
144
+ var e = isOdd(startLevel) ? "R" : "L";
137
145
  var sor = e;
138
146
  var eor = sor;
139
147
  var lastType = sor;
140
148
 
141
149
  for (i = 0; i < strLength; ++i) {
142
- if (types[i] === 'NSM') {
150
+ if (types[i] === "NSM") {
143
151
  types[i] = lastType;
144
152
  } else {
145
153
  lastType = types[i];
@@ -152,9 +160,9 @@ function bidi(str, startLevel, vertical) {
152
160
  for (i = 0; i < strLength; ++i) {
153
161
  t = types[i];
154
162
 
155
- if (t === 'EN') {
156
- types[i] = lastType === 'AL' ? 'AN' : 'EN';
157
- } else if (t === 'R' || t === 'L' || t === 'AL') {
163
+ if (t === "EN") {
164
+ types[i] = lastType === "AL" ? "AN" : "EN";
165
+ } else if (t === "R" || t === "L" || t === "AL") {
158
166
  lastType = t;
159
167
  }
160
168
  }
@@ -162,39 +170,39 @@ function bidi(str, startLevel, vertical) {
162
170
  for (i = 0; i < strLength; ++i) {
163
171
  t = types[i];
164
172
 
165
- if (t === 'AL') {
166
- types[i] = 'R';
173
+ if (t === "AL") {
174
+ types[i] = "R";
167
175
  }
168
176
  }
169
177
 
170
178
  for (i = 1; i < strLength - 1; ++i) {
171
- if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {
172
- types[i] = 'EN';
179
+ if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") {
180
+ types[i] = "EN";
173
181
  }
174
182
 
175
- if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) {
183
+ if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) {
176
184
  types[i] = types[i - 1];
177
185
  }
178
186
  }
179
187
 
180
188
  for (i = 0; i < strLength; ++i) {
181
- if (types[i] === 'EN') {
189
+ if (types[i] === "EN") {
182
190
  var j;
183
191
 
184
192
  for (j = i - 1; j >= 0; --j) {
185
- if (types[j] !== 'ET') {
193
+ if (types[j] !== "ET") {
186
194
  break;
187
195
  }
188
196
 
189
- types[j] = 'EN';
197
+ types[j] = "EN";
190
198
  }
191
199
 
192
200
  for (j = i + 1; j < strLength; ++j) {
193
- if (types[j] !== 'ET') {
201
+ if (types[j] !== "ET") {
194
202
  break;
195
203
  }
196
204
 
197
- types[j] = 'EN';
205
+ types[j] = "EN";
198
206
  }
199
207
  }
200
208
  }
@@ -202,8 +210,8 @@ function bidi(str, startLevel, vertical) {
202
210
  for (i = 0; i < strLength; ++i) {
203
211
  t = types[i];
204
212
 
205
- if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {
206
- types[i] = 'ON';
213
+ if (t === "WS" || t === "ES" || t === "ET" || t === "CS") {
214
+ types[i] = "ON";
207
215
  }
208
216
  }
209
217
 
@@ -212,16 +220,16 @@ function bidi(str, startLevel, vertical) {
212
220
  for (i = 0; i < strLength; ++i) {
213
221
  t = types[i];
214
222
 
215
- if (t === 'EN') {
216
- types[i] = lastType === 'L' ? 'L' : 'EN';
217
- } else if (t === 'R' || t === 'L') {
223
+ if (t === "EN") {
224
+ types[i] = lastType === "L" ? "L" : "EN";
225
+ } else if (t === "R" || t === "L") {
218
226
  lastType = t;
219
227
  }
220
228
  }
221
229
 
222
230
  for (i = 0; i < strLength; ++i) {
223
- if (types[i] === 'ON') {
224
- var end = findUnequal(types, i + 1, 'ON');
231
+ if (types[i] === "ON") {
232
+ var end = findUnequal(types, i + 1, "ON");
225
233
  var before = sor;
226
234
 
227
235
  if (i > 0) {
@@ -234,12 +242,12 @@ function bidi(str, startLevel, vertical) {
234
242
  after = types[end + 1];
235
243
  }
236
244
 
237
- if (before !== 'L') {
238
- before = 'R';
245
+ if (before !== "L") {
246
+ before = "R";
239
247
  }
240
248
 
241
- if (after !== 'L') {
242
- after = 'R';
249
+ if (after !== "L") {
250
+ after = "R";
243
251
  }
244
252
 
245
253
  if (before === after) {
@@ -251,7 +259,7 @@ function bidi(str, startLevel, vertical) {
251
259
  }
252
260
 
253
261
  for (i = 0; i < strLength; ++i) {
254
- if (types[i] === 'ON') {
262
+ if (types[i] === "ON") {
255
263
  types[i] = e;
256
264
  }
257
265
  }
@@ -260,13 +268,13 @@ function bidi(str, startLevel, vertical) {
260
268
  t = types[i];
261
269
 
262
270
  if (isEven(levels[i])) {
263
- if (t === 'R') {
271
+ if (t === "R") {
264
272
  levels[i] += 1;
265
- } else if (t === 'AN' || t === 'EN') {
273
+ } else if (t === "AN" || t === "EN") {
266
274
  levels[i] += 2;
267
275
  }
268
276
  } else {
269
- if (t === 'L' || t === 'AN' || t === 'EN') {
277
+ if (t === "L" || t === "AN" || t === "EN") {
270
278
  levels[i] += 1;
271
279
  }
272
280
  }
@@ -310,10 +318,10 @@ function bidi(str, startLevel, vertical) {
310
318
  for (i = 0, ii = chars.length; i < ii; ++i) {
311
319
  var ch = chars[i];
312
320
 
313
- if (ch === '<' || ch === '>') {
314
- chars[i] = '';
321
+ if (ch === "<" || ch === ">") {
322
+ chars[i] = "";
315
323
  }
316
324
  }
317
325
 
318
- return createBidiText(chars.join(''), isLTR);
326
+ return createBidiText(chars.join(""), isLTR);
319
327
  }