pdfjs-dist 2.0.943 → 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 (192) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8286 -14230
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +25500 -26628
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25473 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +57878 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +407 -0
  29. package/es5/web/pdf_viewer.js +7757 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +2887 -4094
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +855 -778
  36. package/lib/core/arithmetic_decoder.js +325 -311
  37. package/lib/core/bidi.js +117 -50
  38. package/lib/core/ccitt.js +251 -89
  39. package/lib/core/ccitt_stream.js +26 -16
  40. package/lib/core/cff_parser.js +525 -197
  41. package/lib/core/charsets.js +6 -5
  42. package/lib/core/chunked_stream.js +541 -406
  43. package/lib/core/cmap.js +368 -253
  44. package/lib/core/colorspace.js +781 -800
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +609 -422
  47. package/lib/core/document.js +649 -481
  48. package/lib/core/encodings.js +33 -24
  49. package/lib/core/evaluator.js +1471 -736
  50. package/lib/core/font_renderer.js +289 -149
  51. package/lib/core/fonts.js +1067 -413
  52. package/lib/core/function.js +517 -287
  53. package/lib/core/glyphlist.js +4529 -4527
  54. package/lib/core/image.js +232 -114
  55. package/lib/core/image_utils.js +94 -0
  56. package/lib/core/jbig2.js +711 -342
  57. package/lib/core/jbig2_stream.js +31 -19
  58. package/lib/core/jpeg_stream.js +151 -26
  59. package/lib/core/jpg.js +433 -181
  60. package/lib/core/jpx.js +551 -143
  61. package/lib/core/jpx_stream.js +40 -28
  62. package/lib/core/metrics.js +2931 -2931
  63. package/lib/core/murmurhash3.js +104 -97
  64. package/lib/core/obj.js +1561 -1053
  65. package/lib/core/operator_list.js +192 -64
  66. package/lib/core/parser.js +1162 -864
  67. package/lib/core/pattern.js +224 -75
  68. package/lib/core/pdf_manager.js +154 -285
  69. package/lib/core/primitives.js +145 -69
  70. package/lib/core/ps_parser.js +212 -162
  71. package/lib/core/standard_fonts.js +245 -244
  72. package/lib/core/stream.js +353 -81
  73. package/lib/core/type1_parser.js +218 -68
  74. package/lib/core/unicode.js +1682 -1655
  75. package/lib/core/worker.js +233 -302
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +808 -862
  78. package/lib/display/api.js +1778 -1462
  79. package/lib/display/api_compatibility.js +14 -9
  80. package/lib/display/canvas.js +463 -140
  81. package/lib/display/content_disposition.js +86 -58
  82. package/lib/display/display_utils.js +524 -0
  83. package/lib/display/fetch_stream.js +202 -274
  84. package/lib/display/font_loader.js +311 -333
  85. package/lib/display/metadata.js +98 -88
  86. package/lib/display/network.js +343 -347
  87. package/lib/display/network_utils.js +46 -26
  88. package/lib/display/node_stream.js +326 -404
  89. package/lib/display/pattern_helper.js +168 -69
  90. package/lib/display/svg.js +1296 -885
  91. package/lib/display/text_layer.js +229 -103
  92. package/lib/display/transport_stream.js +290 -250
  93. package/lib/display/webgl.js +116 -83
  94. package/lib/display/worker_options.js +6 -5
  95. package/lib/display/xml_parser.js +358 -337
  96. package/lib/examples/node/domstubs.js +95 -39
  97. package/lib/pdf.js +49 -31
  98. package/lib/pdf.worker.js +7 -5
  99. package/lib/shared/compatibility.js +3 -145
  100. package/lib/shared/is_node.js +8 -7
  101. package/lib/shared/message_handler.js +367 -314
  102. package/lib/shared/util.js +421 -415
  103. package/lib/test/unit/annotation_spec.js +1570 -690
  104. package/lib/test/unit/api_spec.js +855 -493
  105. package/lib/test/unit/bidi_spec.js +12 -12
  106. package/lib/test/unit/cff_parser_spec.js +88 -61
  107. package/lib/test/unit/clitests_helper.js +9 -12
  108. package/lib/test/unit/cmap_spec.js +140 -88
  109. package/lib/test/unit/colorspace_spec.js +204 -152
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +194 -182
  112. package/lib/test/unit/custom_spec.js +50 -64
  113. package/lib/test/unit/display_svg_spec.js +53 -38
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +17 -22
  116. package/lib/test/unit/encodings_spec.js +15 -57
  117. package/lib/test/unit/evaluator_spec.js +90 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +219 -205
  120. package/lib/test/unit/jasmine-boot.js +68 -39
  121. package/lib/test/unit/message_handler_spec.js +187 -160
  122. package/lib/test/unit/metadata_spec.js +87 -34
  123. package/lib/test/unit/murmurhash3_spec.js +13 -13
  124. package/lib/test/unit/network_spec.js +26 -59
  125. package/lib/test/unit/network_utils_spec.js +187 -121
  126. package/lib/test/unit/node_stream_spec.js +98 -90
  127. package/lib/test/unit/parser_spec.js +173 -131
  128. package/lib/test/unit/pdf_find_controller_spec.js +148 -67
  129. package/lib/test/unit/pdf_find_utils_spec.js +35 -34
  130. package/lib/test/unit/pdf_history_spec.js +45 -33
  131. package/lib/test/unit/primitives_spec.js +161 -126
  132. package/lib/test/unit/stream_spec.js +22 -15
  133. package/lib/test/unit/test_utils.js +149 -98
  134. package/lib/test/unit/testreporter.js +36 -18
  135. package/lib/test/unit/type1_parser_spec.js +46 -44
  136. package/lib/test/unit/ui_utils_spec.js +388 -372
  137. package/lib/test/unit/unicode_spec.js +49 -46
  138. package/lib/test/unit/util_spec.js +144 -248
  139. package/lib/web/annotation_layer_builder.js +75 -95
  140. package/lib/web/app.js +1538 -1147
  141. package/lib/web/app_options.js +116 -104
  142. package/lib/web/base_viewer.js +950 -775
  143. package/lib/web/chromecom.js +217 -225
  144. package/lib/web/debugger.js +236 -148
  145. package/lib/web/download_manager.js +50 -50
  146. package/lib/web/firefox_print_service.js +51 -33
  147. package/lib/web/firefoxcom.js +225 -352
  148. package/lib/web/genericcom.js +30 -93
  149. package/lib/web/genericl10n.js +26 -143
  150. package/lib/web/grab_to_pan.js +57 -33
  151. package/lib/web/interfaces.js +105 -232
  152. package/lib/web/overlay_manager.js +73 -227
  153. package/lib/web/password_prompt.js +44 -62
  154. package/lib/web/pdf_attachment_viewer.js +118 -123
  155. package/lib/web/pdf_cursor_tools.js +89 -93
  156. package/lib/web/pdf_document_properties.js +242 -281
  157. package/lib/web/pdf_find_bar.js +157 -163
  158. package/lib/web/pdf_find_controller.js +598 -454
  159. package/lib/web/pdf_find_utils.js +32 -16
  160. package/lib/web/pdf_history.js +481 -355
  161. package/lib/web/pdf_link_service.js +355 -323
  162. package/lib/web/pdf_outline_viewer.js +167 -152
  163. package/lib/web/pdf_page_view.js +511 -457
  164. package/lib/web/pdf_presentation_mode.js +347 -335
  165. package/lib/web/pdf_print_service.js +133 -103
  166. package/lib/web/pdf_rendering_queue.js +98 -100
  167. package/lib/web/pdf_sidebar.js +323 -299
  168. package/lib/web/pdf_sidebar_resizer.js +107 -108
  169. package/lib/web/pdf_single_page_viewer.js +94 -146
  170. package/lib/web/pdf_thumbnail_view.js +319 -269
  171. package/lib/web/pdf_thumbnail_viewer.js +219 -199
  172. package/lib/web/pdf_viewer.component.js +111 -32
  173. package/lib/web/pdf_viewer.js +61 -101
  174. package/lib/web/preferences.js +87 -272
  175. package/lib/web/secondary_toolbar.js +207 -220
  176. package/lib/web/text_layer_builder.js +322 -322
  177. package/lib/web/toolbar.js +227 -180
  178. package/lib/web/ui_utils.js +476 -421
  179. package/lib/web/view_history.js +59 -208
  180. package/lib/web/viewer_compatibility.js +9 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +36 -22
  183. package/web/pdf_viewer.js +4407 -4516
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -441
  189. package/lib/shared/streams_polyfill.js +0 -39
  190. package/lib/shared/url_polyfill.js +0 -50
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
  192. package/lib/web/dom_events.js +0 -140
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 2018 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.
@@ -19,36 +19,42 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.bidi = undefined;
27
+ exports.bidi = bidi;
28
28
 
29
- var _util = require('../shared/util');
29
+ var _util = require("../shared/util.js");
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"];
30
33
 
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
34
  function isOdd(i) {
34
35
  return (i & 1) !== 0;
35
36
  }
37
+
36
38
  function isEven(i) {
37
39
  return (i & 1) === 0;
38
40
  }
41
+
39
42
  function findUnequal(arr, start, value) {
40
43
  for (var j = start, jj = arr.length; j < jj; ++j) {
41
44
  if (arr[j] !== value) {
42
45
  return j;
43
46
  }
44
47
  }
48
+
45
49
  return j;
46
50
  }
51
+
47
52
  function setValues(arr, start, end, value) {
48
53
  for (var j = start; j < end; ++j) {
49
54
  arr[j] = value;
50
55
  }
51
56
  }
57
+
52
58
  function reverseValues(arr, start, end) {
53
59
  for (var i = start, j = end - 1; i < j; ++i, --j) {
54
60
  var temp = arr[i];
@@ -56,49 +62,69 @@ function reverseValues(arr, start, end) {
56
62
  arr[j] = temp;
57
63
  }
58
64
  }
59
- function createBidiText(str, isLTR, vertical) {
65
+
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
+
60
75
  return {
61
- str: str,
62
- dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl'
76
+ str,
77
+ dir
63
78
  };
64
79
  }
80
+
65
81
  var chars = [];
66
82
  var types = [];
83
+
67
84
  function bidi(str, startLevel, vertical) {
68
85
  var isLTR = true;
69
86
  var strLength = str.length;
87
+
70
88
  if (strLength === 0 || vertical) {
71
89
  return createBidiText(str, isLTR, vertical);
72
90
  }
91
+
73
92
  chars.length = strLength;
74
93
  types.length = strLength;
75
94
  var numBidi = 0;
76
95
  var i, ii;
96
+
77
97
  for (i = 0; i < strLength; ++i) {
78
98
  chars[i] = str.charAt(i);
79
99
  var charCode = str.charCodeAt(i);
80
- var charType = 'L';
100
+ var charType = "L";
101
+
81
102
  if (charCode <= 0x00ff) {
82
103
  charType = baseTypes[charCode];
83
104
  } else if (0x0590 <= charCode && charCode <= 0x05f4) {
84
- charType = 'R';
105
+ charType = "R";
85
106
  } else if (0x0600 <= charCode && charCode <= 0x06ff) {
86
107
  charType = arabicTypes[charCode & 0xff];
108
+
87
109
  if (!charType) {
88
- (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16));
110
+ (0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16));
89
111
  }
90
- } else if (0x0700 <= charCode && charCode <= 0x08AC) {
91
- charType = 'AL';
112
+ } else if (0x0700 <= charCode && charCode <= 0x08ac) {
113
+ charType = "AL";
92
114
  }
93
- if (charType === 'R' || charType === 'AL' || charType === 'AN') {
115
+
116
+ if (charType === "R" || charType === "AL" || charType === "AN") {
94
117
  numBidi++;
95
118
  }
119
+
96
120
  types[i] = charType;
97
121
  }
122
+
98
123
  if (numBidi === 0) {
99
124
  isLTR = true;
100
125
  return createBidiText(str, isLTR);
101
126
  }
127
+
102
128
  if (startLevel === -1) {
103
129
  if (numBidi / strLength < 0.3) {
104
130
  isLTR = true;
@@ -108,133 +134,171 @@ function bidi(str, startLevel, vertical) {
108
134
  startLevel = 1;
109
135
  }
110
136
  }
137
+
111
138
  var levels = [];
139
+
112
140
  for (i = 0; i < strLength; ++i) {
113
141
  levels[i] = startLevel;
114
142
  }
115
- var e = isOdd(startLevel) ? 'R' : 'L';
143
+
144
+ var e = isOdd(startLevel) ? "R" : "L";
116
145
  var sor = e;
117
146
  var eor = sor;
118
147
  var lastType = sor;
148
+
119
149
  for (i = 0; i < strLength; ++i) {
120
- if (types[i] === 'NSM') {
150
+ if (types[i] === "NSM") {
121
151
  types[i] = lastType;
122
152
  } else {
123
153
  lastType = types[i];
124
154
  }
125
155
  }
156
+
126
157
  lastType = sor;
127
158
  var t;
159
+
128
160
  for (i = 0; i < strLength; ++i) {
129
161
  t = types[i];
130
- if (t === 'EN') {
131
- types[i] = lastType === 'AL' ? 'AN' : 'EN';
132
- } else if (t === 'R' || t === 'L' || t === 'AL') {
162
+
163
+ if (t === "EN") {
164
+ types[i] = lastType === "AL" ? "AN" : "EN";
165
+ } else if (t === "R" || t === "L" || t === "AL") {
133
166
  lastType = t;
134
167
  }
135
168
  }
169
+
136
170
  for (i = 0; i < strLength; ++i) {
137
171
  t = types[i];
138
- if (t === 'AL') {
139
- types[i] = 'R';
172
+
173
+ if (t === "AL") {
174
+ types[i] = "R";
140
175
  }
141
176
  }
177
+
142
178
  for (i = 1; i < strLength - 1; ++i) {
143
- if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {
144
- types[i] = 'EN';
179
+ if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") {
180
+ types[i] = "EN";
145
181
  }
146
- if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) {
182
+
183
+ if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) {
147
184
  types[i] = types[i - 1];
148
185
  }
149
186
  }
187
+
150
188
  for (i = 0; i < strLength; ++i) {
151
- if (types[i] === 'EN') {
189
+ if (types[i] === "EN") {
152
190
  var j;
191
+
153
192
  for (j = i - 1; j >= 0; --j) {
154
- if (types[j] !== 'ET') {
193
+ if (types[j] !== "ET") {
155
194
  break;
156
195
  }
157
- types[j] = 'EN';
196
+
197
+ types[j] = "EN";
158
198
  }
199
+
159
200
  for (j = i + 1; j < strLength; ++j) {
160
- if (types[j] !== 'ET') {
201
+ if (types[j] !== "ET") {
161
202
  break;
162
203
  }
163
- types[j] = 'EN';
204
+
205
+ types[j] = "EN";
164
206
  }
165
207
  }
166
208
  }
209
+
167
210
  for (i = 0; i < strLength; ++i) {
168
211
  t = types[i];
169
- if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {
170
- types[i] = 'ON';
212
+
213
+ if (t === "WS" || t === "ES" || t === "ET" || t === "CS") {
214
+ types[i] = "ON";
171
215
  }
172
216
  }
217
+
173
218
  lastType = sor;
219
+
174
220
  for (i = 0; i < strLength; ++i) {
175
221
  t = types[i];
176
- if (t === 'EN') {
177
- types[i] = lastType === 'L' ? 'L' : 'EN';
178
- } else if (t === 'R' || t === 'L') {
222
+
223
+ if (t === "EN") {
224
+ types[i] = lastType === "L" ? "L" : "EN";
225
+ } else if (t === "R" || t === "L") {
179
226
  lastType = t;
180
227
  }
181
228
  }
229
+
182
230
  for (i = 0; i < strLength; ++i) {
183
- if (types[i] === 'ON') {
184
- var end = findUnequal(types, i + 1, 'ON');
231
+ if (types[i] === "ON") {
232
+ var end = findUnequal(types, i + 1, "ON");
185
233
  var before = sor;
234
+
186
235
  if (i > 0) {
187
236
  before = types[i - 1];
188
237
  }
238
+
189
239
  var after = eor;
240
+
190
241
  if (end + 1 < strLength) {
191
242
  after = types[end + 1];
192
243
  }
193
- if (before !== 'L') {
194
- before = 'R';
244
+
245
+ if (before !== "L") {
246
+ before = "R";
195
247
  }
196
- if (after !== 'L') {
197
- after = 'R';
248
+
249
+ if (after !== "L") {
250
+ after = "R";
198
251
  }
252
+
199
253
  if (before === after) {
200
254
  setValues(types, i, end, before);
201
255
  }
256
+
202
257
  i = end - 1;
203
258
  }
204
259
  }
260
+
205
261
  for (i = 0; i < strLength; ++i) {
206
- if (types[i] === 'ON') {
262
+ if (types[i] === "ON") {
207
263
  types[i] = e;
208
264
  }
209
265
  }
266
+
210
267
  for (i = 0; i < strLength; ++i) {
211
268
  t = types[i];
269
+
212
270
  if (isEven(levels[i])) {
213
- if (t === 'R') {
271
+ if (t === "R") {
214
272
  levels[i] += 1;
215
- } else if (t === 'AN' || t === 'EN') {
273
+ } else if (t === "AN" || t === "EN") {
216
274
  levels[i] += 2;
217
275
  }
218
276
  } else {
219
- if (t === 'L' || t === 'AN' || t === 'EN') {
277
+ if (t === "L" || t === "AN" || t === "EN") {
220
278
  levels[i] += 1;
221
279
  }
222
280
  }
223
281
  }
282
+
224
283
  var highestLevel = -1;
225
284
  var lowestOddLevel = 99;
226
285
  var level;
286
+
227
287
  for (i = 0, ii = levels.length; i < ii; ++i) {
228
288
  level = levels[i];
289
+
229
290
  if (highestLevel < level) {
230
291
  highestLevel = level;
231
292
  }
293
+
232
294
  if (lowestOddLevel > level && isOdd(level)) {
233
295
  lowestOddLevel = level;
234
296
  }
235
297
  }
298
+
236
299
  for (level = highestLevel; level >= lowestOddLevel; --level) {
237
300
  var start = -1;
301
+
238
302
  for (i = 0, ii = levels.length; i < ii; ++i) {
239
303
  if (levels[i] < level) {
240
304
  if (start >= 0) {
@@ -245,16 +309,19 @@ function bidi(str, startLevel, vertical) {
245
309
  start = i;
246
310
  }
247
311
  }
312
+
248
313
  if (start >= 0) {
249
314
  reverseValues(chars, start, levels.length);
250
315
  }
251
316
  }
317
+
252
318
  for (i = 0, ii = chars.length; i < ii; ++i) {
253
319
  var ch = chars[i];
254
- if (ch === '<' || ch === '>') {
255
- chars[i] = '';
320
+
321
+ if (ch === "<" || ch === ">") {
322
+ chars[i] = "";
256
323
  }
257
324
  }
258
- return createBidiText(chars.join(''), isLTR);
259
- }
260
- exports.bidi = bidi;
325
+
326
+ return createBidiText(chars.join(""), isLTR);
327
+ }