pdfjs-dist 2.3.200 → 2.4.456

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 (185) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +6499 -17971
  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 +19303 -29896
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +25473 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  13. package/es5/build/pdf.worker.js +57878 -0
  14. package/es5/build/pdf.worker.js.map +1 -0
  15. package/es5/web/images/annotation-check.svg +11 -0
  16. package/es5/web/images/annotation-comment.svg +16 -0
  17. package/es5/web/images/annotation-help.svg +26 -0
  18. package/es5/web/images/annotation-insert.svg +10 -0
  19. package/es5/web/images/annotation-key.svg +11 -0
  20. package/es5/web/images/annotation-newparagraph.svg +11 -0
  21. package/es5/web/images/annotation-noicon.svg +7 -0
  22. package/es5/web/images/annotation-note.svg +42 -0
  23. package/es5/web/images/annotation-paragraph.svg +16 -0
  24. package/es5/web/images/loading-icon.gif +0 -0
  25. package/es5/web/images/shadow.png +0 -0
  26. package/es5/web/images/texture.png +0 -0
  27. package/es5/web/pdf_viewer.css +407 -0
  28. package/es5/web/pdf_viewer.js +7757 -0
  29. package/es5/web/pdf_viewer.js.map +1 -0
  30. package/image_decoders/pdf.image_decoders.js +1333 -4839
  31. package/image_decoders/pdf.image_decoders.js.map +1 -1
  32. package/image_decoders/pdf.image_decoders.min.js +22 -1
  33. package/lib/README.md +7 -0
  34. package/lib/core/annotation.js +683 -1066
  35. package/lib/core/arithmetic_decoder.js +81 -97
  36. package/lib/core/bidi.js +54 -46
  37. package/lib/core/ccitt.js +88 -81
  38. package/lib/core/ccitt_stream.js +15 -14
  39. package/lib/core/cff_parser.js +196 -193
  40. package/lib/core/charsets.js +4 -4
  41. package/lib/core/chunked_stream.js +441 -569
  42. package/lib/core/cmap.js +220 -279
  43. package/lib/core/colorspace.js +699 -863
  44. package/lib/core/core_utils.js +59 -80
  45. package/lib/core/crypto.js +379 -437
  46. package/lib/core/document.js +564 -673
  47. package/lib/core/encodings.js +15 -15
  48. package/lib/core/evaluator.js +983 -889
  49. package/lib/core/font_renderer.js +128 -171
  50. package/lib/core/fonts.js +451 -400
  51. package/lib/core/function.js +289 -285
  52. package/lib/core/glyphlist.js +4527 -4527
  53. package/lib/core/image.js +138 -117
  54. package/lib/core/image_utils.js +46 -63
  55. package/lib/core/jbig2.js +324 -332
  56. package/lib/core/jbig2_stream.js +18 -17
  57. package/lib/core/jpeg_stream.js +133 -24
  58. package/lib/core/jpg.js +238 -210
  59. package/lib/core/jpx.js +158 -157
  60. package/lib/core/jpx_stream.js +28 -28
  61. package/lib/core/metrics.js +2928 -2928
  62. package/lib/core/murmurhash3.js +87 -102
  63. package/lib/core/obj.js +1111 -1302
  64. package/lib/core/operator_list.js +55 -42
  65. package/lib/core/parser.js +956 -987
  66. package/lib/core/pattern.js +69 -69
  67. package/lib/core/pdf_manager.js +149 -316
  68. package/lib/core/primitives.js +45 -77
  69. package/lib/core/ps_parser.js +175 -214
  70. package/lib/core/standard_fonts.js +237 -236
  71. package/lib/core/stream.js +83 -77
  72. package/lib/core/type1_parser.js +78 -68
  73. package/lib/core/unicode.js +1654 -1654
  74. package/lib/core/worker.js +148 -196
  75. package/lib/core/worker_stream.js +101 -210
  76. package/lib/display/annotation_layer.js +733 -1155
  77. package/lib/display/api.js +1539 -1928
  78. package/lib/display/api_compatibility.js +10 -8
  79. package/lib/display/canvas.js +159 -158
  80. package/lib/display/content_disposition.js +36 -55
  81. package/lib/display/display_utils.js +298 -551
  82. package/lib/display/fetch_stream.js +181 -305
  83. package/lib/display/font_loader.js +273 -416
  84. package/lib/display/metadata.js +86 -98
  85. package/lib/display/network.js +376 -511
  86. package/lib/display/network_utils.js +20 -19
  87. package/lib/display/node_stream.js +276 -460
  88. package/lib/display/pattern_helper.js +76 -44
  89. package/lib/display/svg.js +1137 -1405
  90. package/lib/display/text_layer.js +75 -82
  91. package/lib/display/transport_stream.js +236 -374
  92. package/lib/display/webgl.js +70 -83
  93. package/lib/display/worker_options.js +3 -3
  94. package/lib/display/xml_parser.js +303 -392
  95. package/lib/examples/node/domstubs.js +37 -37
  96. package/lib/pdf.js +22 -21
  97. package/lib/pdf.worker.js +5 -5
  98. package/lib/shared/compatibility.js +2 -251
  99. package/lib/shared/is_node.js +7 -6
  100. package/lib/shared/message_handler.js +222 -194
  101. package/lib/shared/util.js +269 -405
  102. package/lib/test/unit/annotation_spec.js +1089 -1014
  103. package/lib/test/unit/api_spec.js +617 -544
  104. package/lib/test/unit/bidi_spec.js +7 -7
  105. package/lib/test/unit/cff_parser_spec.js +63 -62
  106. package/lib/test/unit/clitests_helper.js +7 -9
  107. package/lib/test/unit/cmap_spec.js +84 -86
  108. package/lib/test/unit/colorspace_spec.js +154 -154
  109. package/lib/test/unit/core_utils_spec.js +125 -105
  110. package/lib/test/unit/crypto_spec.js +181 -181
  111. package/lib/test/unit/custom_spec.js +22 -24
  112. package/lib/test/unit/display_svg_spec.js +35 -36
  113. package/lib/test/unit/display_utils_spec.js +139 -149
  114. package/lib/test/unit/document_spec.js +16 -16
  115. package/lib/test/unit/encodings_spec.js +12 -34
  116. package/lib/test/unit/evaluator_spec.js +81 -95
  117. package/lib/test/unit/fetch_stream_spec.js +30 -30
  118. package/lib/test/unit/function_spec.js +206 -204
  119. package/lib/test/unit/jasmine-boot.js +48 -32
  120. package/lib/test/unit/message_handler_spec.js +172 -162
  121. package/lib/test/unit/metadata_spec.js +69 -69
  122. package/lib/test/unit/murmurhash3_spec.js +12 -12
  123. package/lib/test/unit/network_spec.js +12 -12
  124. package/lib/test/unit/network_utils_spec.js +152 -152
  125. package/lib/test/unit/node_stream_spec.js +74 -90
  126. package/lib/test/unit/parser_spec.js +107 -113
  127. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  128. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  129. package/lib/test/unit/pdf_history_spec.js +32 -32
  130. package/lib/test/unit/primitives_spec.js +117 -115
  131. package/lib/test/unit/stream_spec.js +16 -14
  132. package/lib/test/unit/test_utils.js +119 -285
  133. package/lib/test/unit/testreporter.js +19 -19
  134. package/lib/test/unit/type1_parser_spec.js +41 -41
  135. package/lib/test/unit/ui_utils_spec.js +318 -426
  136. package/lib/test/unit/unicode_spec.js +42 -42
  137. package/lib/test/unit/util_spec.js +122 -143
  138. package/lib/web/annotation_layer_builder.js +66 -103
  139. package/lib/web/app.js +1166 -1196
  140. package/lib/web/app_options.js +61 -77
  141. package/lib/web/base_viewer.js +804 -850
  142. package/lib/web/chromecom.js +164 -249
  143. package/lib/web/debugger.js +149 -205
  144. package/lib/web/download_manager.js +38 -57
  145. package/lib/web/firefox_print_service.js +35 -30
  146. package/lib/web/firefoxcom.js +175 -374
  147. package/lib/web/genericcom.js +26 -108
  148. package/lib/web/genericl10n.js +24 -153
  149. package/lib/web/grab_to_pan.js +30 -30
  150. package/lib/web/interfaces.js +80 -258
  151. package/lib/web/overlay_manager.js +70 -246
  152. package/lib/web/password_prompt.js +38 -64
  153. package/lib/web/pdf_attachment_viewer.js +105 -130
  154. package/lib/web/pdf_cursor_tools.js +75 -102
  155. package/lib/web/pdf_document_properties.js +227 -376
  156. package/lib/web/pdf_find_bar.js +137 -171
  157. package/lib/web/pdf_find_controller.js +492 -549
  158. package/lib/web/pdf_find_utils.js +13 -13
  159. package/lib/web/pdf_history.js +395 -406
  160. package/lib/web/pdf_link_service.js +302 -349
  161. package/lib/web/pdf_outline_viewer.js +148 -209
  162. package/lib/web/pdf_page_view.js +449 -507
  163. package/lib/web/pdf_presentation_mode.js +304 -357
  164. package/lib/web/pdf_print_service.js +90 -104
  165. package/lib/web/pdf_rendering_queue.js +87 -108
  166. package/lib/web/pdf_sidebar.js +264 -304
  167. package/lib/web/pdf_sidebar_resizer.js +92 -119
  168. package/lib/web/pdf_single_page_viewer.js +77 -126
  169. package/lib/web/pdf_thumbnail_view.js +276 -297
  170. package/lib/web/pdf_thumbnail_viewer.js +186 -206
  171. package/lib/web/pdf_viewer.component.js +20 -21
  172. package/lib/web/pdf_viewer.js +55 -115
  173. package/lib/web/preferences.js +66 -273
  174. package/lib/web/secondary_toolbar.js +164 -196
  175. package/lib/web/text_layer_builder.js +284 -317
  176. package/lib/web/toolbar.js +216 -211
  177. package/lib/web/ui_utils.js +303 -404
  178. package/lib/web/view_history.js +49 -222
  179. package/lib/web/viewer_compatibility.js +7 -5
  180. package/package.json +2 -9
  181. package/web/pdf_viewer.css +25 -18
  182. package/web/pdf_viewer.js +3481 -4764
  183. package/web/pdf_viewer.js.map +1 -1
  184. package/webpack.js +14 -5
  185. package/lib/shared/streams_polyfill.js +0 -43
@@ -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
  }