pdfjs-dist 2.1.266 → 2.5.207
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.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +750 -899
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +40 -37
- package/lib/pdf.js +226 -59
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
@@ -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
|
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:
|
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:
|
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:
|
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:
|
179
|
+
qe: 0x0ac1,
|
187
180
|
nmps: 31,
|
188
181
|
nlps: 28,
|
189
182
|
switchFlag: 0
|
190
183
|
}, {
|
191
|
-
qe:
|
184
|
+
qe: 0x09c1,
|
192
185
|
nmps: 32,
|
193
186
|
nlps: 29,
|
194
187
|
switchFlag: 0
|
195
188
|
}, {
|
196
|
-
qe:
|
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:
|
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
|
-
|
273
|
-
|
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 &
|
285
|
-
this.clow = this.clow << 7 &
|
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
|
-
|
291
|
-
|
292
|
-
|
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
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
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 +=
|
309
|
-
this.ct =
|
289
|
+
this.clow += data[bp] << 9;
|
290
|
+
this.ct = 7;
|
310
291
|
this.bp = bp;
|
311
292
|
}
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
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
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
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
|
-
|
338
|
-
|
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
|
-
|
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
|
-
|
320
|
+
a = qeIcx;
|
321
|
+
d = 1 ^ cx_mps;
|
345
322
|
|
346
|
-
if (
|
347
|
-
|
348
|
-
return cx_mps;
|
323
|
+
if (qeTableIcx.switchFlag === 1) {
|
324
|
+
cx_mps = d;
|
349
325
|
}
|
350
326
|
|
351
|
-
|
352
|
-
|
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
|
-
|
355
|
-
|
356
|
-
}
|
337
|
+
if (a < qeIcx) {
|
338
|
+
d = 1 ^ cx_mps;
|
357
339
|
|
358
|
-
|
359
|
-
|
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
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
351
|
+
do {
|
352
|
+
if (this.ct === 0) {
|
353
|
+
this.byteIn();
|
354
|
+
}
|
369
355
|
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
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
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
}]);
|
362
|
+
this.a = a;
|
363
|
+
contexts[pos] = cx_index << 1 | cx_mps;
|
364
|
+
return d;
|
365
|
+
}
|
381
366
|
|
382
|
-
|
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
|
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 = [
|
32
|
-
var arabicTypes = [
|
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
|
69
|
-
dir
|
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 =
|
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 =
|
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)(
|
110
|
+
(0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16));
|
103
111
|
}
|
104
|
-
} else if (0x0700 <= charCode && charCode <=
|
105
|
-
charType =
|
112
|
+
} else if (0x0700 <= charCode && charCode <= 0x08ac) {
|
113
|
+
charType = "AL";
|
106
114
|
}
|
107
115
|
|
108
|
-
if (charType ===
|
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) ?
|
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] ===
|
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 ===
|
156
|
-
types[i] = lastType ===
|
157
|
-
} else if (t ===
|
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 ===
|
166
|
-
types[i] =
|
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] ===
|
172
|
-
types[i] =
|
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] ===
|
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] ===
|
189
|
+
if (types[i] === "EN") {
|
182
190
|
var j;
|
183
191
|
|
184
192
|
for (j = i - 1; j >= 0; --j) {
|
185
|
-
if (types[j] !==
|
193
|
+
if (types[j] !== "ET") {
|
186
194
|
break;
|
187
195
|
}
|
188
196
|
|
189
|
-
types[j] =
|
197
|
+
types[j] = "EN";
|
190
198
|
}
|
191
199
|
|
192
200
|
for (j = i + 1; j < strLength; ++j) {
|
193
|
-
if (types[j] !==
|
201
|
+
if (types[j] !== "ET") {
|
194
202
|
break;
|
195
203
|
}
|
196
204
|
|
197
|
-
types[j] =
|
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 ===
|
206
|
-
types[i] =
|
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 ===
|
216
|
-
types[i] = lastType ===
|
217
|
-
} else if (t ===
|
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] ===
|
224
|
-
var end = findUnequal(types, i + 1,
|
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 !==
|
238
|
-
before =
|
245
|
+
if (before !== "L") {
|
246
|
+
before = "R";
|
239
247
|
}
|
240
248
|
|
241
|
-
if (after !==
|
242
|
-
after =
|
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] ===
|
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 ===
|
271
|
+
if (t === "R") {
|
264
272
|
levels[i] += 1;
|
265
|
-
} else if (t ===
|
273
|
+
} else if (t === "AN" || t === "EN") {
|
266
274
|
levels[i] += 2;
|
267
275
|
}
|
268
276
|
} else {
|
269
|
-
if (t ===
|
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 ===
|
314
|
-
chars[i] =
|
321
|
+
if (ch === "<" || ch === ">") {
|
322
|
+
chars[i] = "";
|
315
323
|
}
|
316
324
|
}
|
317
325
|
|
318
|
-
return createBidiText(chars.join(
|
326
|
+
return createBidiText(chars.join(""), isLTR);
|
319
327
|
}
|