@promptctl/rich-js 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +7 -6
  2. package/THIRD-PARTY-NOTICES +42 -0
  3. package/dist/core/animation.d.ts +65 -46
  4. package/dist/core/animation.js +91 -67
  5. package/dist/core/ansi.d.ts +19 -12
  6. package/dist/core/ansi.js +114 -36
  7. package/dist/core/bidi-data.d.ts +14 -0
  8. package/dist/core/bidi-data.js +385 -0
  9. package/dist/core/bidi.d.ts +89 -0
  10. package/dist/core/bidi.js +615 -0
  11. package/dist/core/box.d.ts +9 -1
  12. package/dist/core/box.js +11 -0
  13. package/dist/core/cell-widths.d.ts +3 -2
  14. package/dist/core/cell-widths.js +93 -93
  15. package/dist/core/cells.d.ts +20 -0
  16. package/dist/core/cells.js +94 -6
  17. package/dist/core/clock.d.ts +1 -1
  18. package/dist/core/color.d.ts +56 -57
  19. package/dist/core/color.js +79 -81
  20. package/dist/core/console.d.ts +24 -7
  21. package/dist/core/console.js +27 -8
  22. package/dist/core/control-codes.d.ts +61 -0
  23. package/dist/core/control-codes.js +157 -0
  24. package/dist/core/easing.d.ts +40 -40
  25. package/dist/core/easing.js +40 -40
  26. package/dist/core/env.d.ts +6 -0
  27. package/dist/core/env.js +9 -1
  28. package/dist/core/export-html.js +5 -4
  29. package/dist/core/export-lines.d.ts +13 -11
  30. package/dist/core/export-lines.js +19 -15
  31. package/dist/core/export-svg.d.ts +3 -3
  32. package/dist/core/export-svg.js +10 -9
  33. package/dist/core/json.js +9 -2
  34. package/dist/core/markup.js +5 -4
  35. package/dist/core/memo.d.ts +1 -1
  36. package/dist/core/memo.js +1 -1
  37. package/dist/core/oklch.d.ts +14 -14
  38. package/dist/core/oklch.js +10 -10
  39. package/dist/core/orient.d.ts +68 -0
  40. package/dist/core/orient.js +224 -0
  41. package/dist/core/osc8.d.ts +12 -5
  42. package/dist/core/osc8.js +14 -7
  43. package/dist/core/paint.d.ts +9 -9
  44. package/dist/core/paint.js +3 -3
  45. package/dist/core/pretty.d.ts +1 -1
  46. package/dist/core/pretty.js +23 -19
  47. package/dist/core/protocol.d.ts +47 -26
  48. package/dist/core/protocol.js +31 -23
  49. package/dist/core/render.d.ts +19 -14
  50. package/dist/core/render.js +30 -17
  51. package/dist/core/seal.d.ts +26 -0
  52. package/dist/core/seal.js +75 -0
  53. package/dist/core/segment.d.ts +12 -4
  54. package/dist/core/segment.js +16 -6
  55. package/dist/core/strip.d.ts +83 -83
  56. package/dist/core/strip.js +70 -70
  57. package/dist/core/style.d.ts +46 -18
  58. package/dist/core/style.js +92 -56
  59. package/dist/core/text-order.d.ts +51 -0
  60. package/dist/core/text-order.js +50 -0
  61. package/dist/core/text.d.ts +12 -2
  62. package/dist/core/text.js +136 -90
  63. package/dist/core/timeline.d.ts +5 -5
  64. package/dist/core/timeline.js +11 -11
  65. package/dist/core/tween.d.ts +6 -6
  66. package/dist/core/tween.js +10 -10
  67. package/dist/core/view.d.ts +5 -5
  68. package/dist/core/view.js +15 -14
  69. package/dist/core/wrap.d.ts +24 -6
  70. package/dist/core/wrap.js +82 -16
  71. package/dist/host/app.d.ts +50 -9
  72. package/dist/host/app.js +120 -15
  73. package/dist/host/host-environment.d.ts +2 -2
  74. package/dist/host/host-environment.js +2 -2
  75. package/dist/host/index.d.ts +3 -2
  76. package/dist/host/index.js +1 -0
  77. package/dist/host/input.d.ts +42 -9
  78. package/dist/host/input.js +91 -7
  79. package/dist/host/terminal-colors.d.ts +18 -0
  80. package/dist/host/terminal-colors.js +46 -0
  81. package/dist/host/terminal-host.d.ts +4 -3
  82. package/dist/host/terminal-host.js +1 -1
  83. package/dist/index.d.ts +17 -16
  84. package/dist/index.js +11 -11
  85. package/dist/node/prompt.d.ts +1 -1
  86. package/dist/node/prompt.js +1 -1
  87. package/dist/node/terminal-host.d.ts +1 -1
  88. package/dist/node/traceback.js +2 -2
  89. package/dist/renderables/change.d.ts +1 -3
  90. package/dist/renderables/change.js +6 -8
  91. package/dist/renderables/effect.d.ts +88 -87
  92. package/dist/renderables/effect.js +124 -114
  93. package/dist/renderables/effects.d.ts +105 -76
  94. package/dist/renderables/effects.js +309 -176
  95. package/dist/renderables/embed.d.ts +1 -1
  96. package/dist/renderables/embed.js +2 -2
  97. package/dist/renderables/flexStrip.d.ts +7 -7
  98. package/dist/renderables/flexStrip.js +15 -15
  99. package/dist/renderables/frames.d.ts +7 -16
  100. package/dist/renderables/frames.js +12 -27
  101. package/dist/renderables/glyph-effect.d.ts +22 -23
  102. package/dist/renderables/glyph-effect.js +43 -41
  103. package/dist/renderables/glyph-effects.d.ts +33 -14
  104. package/dist/renderables/glyph-effects.js +90 -22
  105. package/dist/renderables/html-entities.d.ts +1 -1
  106. package/dist/renderables/html-entities.js +1 -1
  107. package/dist/renderables/lifecycle.d.ts +8 -10
  108. package/dist/renderables/lifecycle.js +17 -18
  109. package/dist/renderables/live.d.ts +2 -2
  110. package/dist/renderables/live.js +7 -7
  111. package/dist/renderables/markdown-parse.js +3 -3
  112. package/dist/renderables/markdown.js +4 -2
  113. package/dist/renderables/panel.js +7 -5
  114. package/dist/renderables/progress.d.ts +1 -1
  115. package/dist/renderables/progress.js +1 -1
  116. package/dist/renderables/progressBar.d.ts +3 -3
  117. package/dist/renderables/progressBar.js +21 -18
  118. package/dist/renderables/prompt.d.ts +1 -1
  119. package/dist/renderables/scroll.d.ts +1 -1
  120. package/dist/renderables/scroll.js +3 -3
  121. package/dist/renderables/spinner.d.ts +4 -4
  122. package/dist/renderables/spinner.js +10 -10
  123. package/dist/renderables/syntax.d.ts +2 -2
  124. package/dist/renderables/syntax.js +9 -4
  125. package/dist/renderables/table.js +5 -4
  126. package/dist/renderables/traceback.d.ts +1 -1
  127. package/dist/renderables/traceback.js +1 -1
  128. package/dist/renderables/tree.js +3 -3
  129. package/dist/template-bindings/animation-funcs.d.ts +60 -29
  130. package/dist/template-bindings/animation-funcs.js +126 -43
  131. package/dist/template-bindings/color-funcs.d.ts +14 -14
  132. package/dist/template-bindings/color-funcs.js +25 -25
  133. package/dist/template-bindings/index.d.ts +16 -14
  134. package/dist/template-bindings/index.js +17 -14
  135. package/dist/template-bindings/palette-funcs.d.ts +2 -2
  136. package/dist/template-bindings/palette-funcs.js +4 -4
  137. package/dist/template-bindings/style-funcs.d.ts +5 -5
  138. package/dist/template-bindings/style-funcs.js +16 -16
  139. package/dist/themes/{transpose.d.ts → adjust.d.ts} +23 -23
  140. package/dist/themes/{transpose.js → adjust.js} +28 -28
  141. package/dist/themes/buildPalette.d.ts +6 -5
  142. package/dist/themes/buildPalette.js +22 -22
  143. package/dist/themes/colorMath.d.ts +16 -16
  144. package/dist/themes/colorMath.js +32 -32
  145. package/dist/themes/data/ansi-tables.d.ts +2 -2
  146. package/dist/themes/data/ansi-tables.js +2 -2
  147. package/dist/themes/data/index.js +1 -4
  148. package/dist/themes/data/textual-ansi.js +0 -143
  149. package/dist/themes/data/types.d.ts +4 -4
  150. package/dist/themes/data/types.js +2 -2
  151. package/dist/themes/palette.d.ts +12 -12
  152. package/dist/themes/palette.js +16 -16
  153. package/dist/themes/ramp.d.ts +17 -17
  154. package/dist/themes/ramp.js +12 -12
  155. package/dist/themes/registry.d.ts +6 -8
  156. package/dist/themes/registry.js +6 -8
  157. package/dist/themes/terminalThemes.d.ts +4 -11
  158. package/dist/themes/terminalThemes.js +31 -47
  159. package/dist/widgets/button.d.ts +3 -3
  160. package/dist/widgets/button.js +8 -8
  161. package/dist/widgets/checkbox.d.ts +2 -2
  162. package/dist/widgets/checkbox.js +4 -4
  163. package/dist/widgets/dropdown.d.ts +3 -3
  164. package/dist/widgets/dropdown.js +7 -5
  165. package/dist/widgets/event-router.d.ts +6 -6
  166. package/dist/widgets/event-router.js +2 -2
  167. package/dist/widgets/focus-manager.d.ts +3 -3
  168. package/dist/widgets/focus-manager.js +3 -3
  169. package/dist/widgets/index.d.ts +2 -2
  170. package/dist/widgets/index.js +1 -1
  171. package/dist/widgets/ink.d.ts +3 -3
  172. package/dist/widgets/ink.js +4 -4
  173. package/dist/widgets/slider.d.ts +2 -2
  174. package/dist/widgets/static-item.d.ts +2 -2
  175. package/dist/widgets/text-input.d.ts +2 -2
  176. package/dist/widgets/text-input.js +5 -5
  177. package/dist/widgets/themed-widget.js +4 -4
  178. package/dist/widgets/toggle.d.ts +4 -4
  179. package/dist/widgets/toggle.js +6 -6
  180. package/dist/widgets/types.d.ts +6 -6
  181. package/dist/widgets/types.js +2 -2
  182. package/dist/widgets/widget-app.d.ts +10 -10
  183. package/dist/widgets/widget-app.js +8 -8
  184. package/dist/widgets/widget-base.d.ts +2 -2
  185. package/package.json +5 -4
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The Unicode properties UAX #9 and Arabic joining read. Generated by
3
+ * scripts/bidi-data.py from the Unicode 17.0.0 Character Database; regenerate
4
+ * rather than edit.
5
+ */
6
+ /** The bidi classes other than L, in the order `CLASS_RANGES` numbers them. */
7
+ export declare const BIDI_CLASSES: readonly ["R", "AL", "EN", "ES", "ET", "AN", "CS", "NSM", "BN", "B", "S", "WS", "ON", "LRE", "LRO", "RLE", "RLO", "PDF", "LRI", "RLI", "FSI", "PDI"];
8
+ /** The joining types other than U, in the order `JOINING_RANGES` numbers them. */
9
+ export declare const JOINING_TYPES: readonly ["R", "L", "D", "C", "T"];
10
+ export declare const CLASS_RANGES: readonly (readonly [number, number, number])[];
11
+ export declare const JOINING_RANGES: readonly (readonly [number, number, number])[];
12
+ export declare const BRACKET_PAIRS: readonly (readonly [number, number])[];
13
+ export declare const MIRRORS: readonly (readonly [number, number])[];
14
+ export declare const PRESENTATION_FORMS: readonly (readonly [number, number, number, number, number])[];
@@ -0,0 +1,385 @@
1
+ /**
2
+ * The Unicode properties UAX #9 and Arabic joining read. Generated by
3
+ * scripts/bidi-data.py from the Unicode 17.0.0 Character Database; regenerate
4
+ * rather than edit.
5
+ */
6
+ /** The bidi classes other than L, in the order `CLASS_RANGES` numbers them. */
7
+ export const BIDI_CLASSES = ['R', 'AL', 'EN', 'ES', 'ET', 'AN', 'CS', 'NSM', 'BN', 'B', 'S', 'WS', 'ON', 'LRE', 'LRO', 'RLE', 'RLO', 'PDF', 'LRI', 'RLI', 'FSI', 'PDI'];
8
+ /** The joining types other than U, in the order `JOINING_RANGES` numbers them. */
9
+ export const JOINING_TYPES = ['R', 'L', 'D', 'C', 'T'];
10
+ // Every range of code points not L, as [first, last, index into BIDI_CLASSES]: ascending, disjoint.
11
+ export const CLASS_RANGES = [
12
+ [0x0, 0x8, 8], [0x9, 0x9, 10], [0xa, 0xa, 9], [0xb, 0xb, 10], [0xc, 0xc, 11], [0xd, 0xd, 9], [0xe, 0x1b, 8],
13
+ [0x1c, 0x1e, 9], [0x1f, 0x1f, 10], [0x20, 0x20, 11], [0x21, 0x22, 12], [0x23, 0x25, 4], [0x26, 0x2a, 12],
14
+ [0x2b, 0x2b, 3], [0x2c, 0x2c, 6], [0x2d, 0x2d, 3], [0x2e, 0x2f, 6], [0x30, 0x39, 2], [0x3a, 0x3a, 6],
15
+ [0x3b, 0x40, 12], [0x5b, 0x60, 12], [0x7b, 0x7e, 12], [0x7f, 0x84, 8], [0x85, 0x85, 9], [0x86, 0x9f, 8],
16
+ [0xa0, 0xa0, 6], [0xa1, 0xa1, 12], [0xa2, 0xa5, 4], [0xa6, 0xa9, 12], [0xab, 0xac, 12], [0xad, 0xad, 8],
17
+ [0xae, 0xaf, 12], [0xb0, 0xb1, 4], [0xb2, 0xb3, 2], [0xb4, 0xb4, 12], [0xb6, 0xb8, 12], [0xb9, 0xb9, 2],
18
+ [0xbb, 0xbf, 12], [0xd7, 0xd7, 12], [0xf7, 0xf7, 12], [0x2b9, 0x2ba, 12], [0x2c2, 0x2cf, 12], [0x2d2, 0x2df, 12],
19
+ [0x2e5, 0x2ed, 12], [0x2ef, 0x2ff, 12], [0x300, 0x36f, 7], [0x374, 0x375, 12], [0x37e, 0x37e, 12],
20
+ [0x384, 0x385, 12], [0x387, 0x387, 12], [0x3f6, 0x3f6, 12], [0x483, 0x489, 7], [0x58a, 0x58a, 12],
21
+ [0x58d, 0x58e, 12], [0x58f, 0x58f, 4], [0x590, 0x590, 0], [0x591, 0x5bd, 7], [0x5be, 0x5be, 0], [0x5bf, 0x5bf, 7],
22
+ [0x5c0, 0x5c0, 0], [0x5c1, 0x5c2, 7], [0x5c3, 0x5c3, 0], [0x5c4, 0x5c5, 7], [0x5c6, 0x5c6, 0], [0x5c7, 0x5c7, 7],
23
+ [0x5c8, 0x5ff, 0], [0x600, 0x605, 5], [0x606, 0x607, 12], [0x608, 0x608, 1], [0x609, 0x60a, 4], [0x60b, 0x60b, 1],
24
+ [0x60c, 0x60c, 6], [0x60d, 0x60d, 1], [0x60e, 0x60f, 12], [0x610, 0x61a, 7], [0x61b, 0x64a, 1], [0x64b, 0x65f, 7],
25
+ [0x660, 0x669, 5], [0x66a, 0x66a, 4], [0x66b, 0x66c, 5], [0x66d, 0x66f, 1], [0x670, 0x670, 7], [0x671, 0x6d5, 1],
26
+ [0x6d6, 0x6dc, 7], [0x6dd, 0x6dd, 5], [0x6de, 0x6de, 12], [0x6df, 0x6e4, 7], [0x6e5, 0x6e6, 1], [0x6e7, 0x6e8, 7],
27
+ [0x6e9, 0x6e9, 12], [0x6ea, 0x6ed, 7], [0x6ee, 0x6ef, 1], [0x6f0, 0x6f9, 2], [0x6fa, 0x710, 1], [0x711, 0x711, 7],
28
+ [0x712, 0x72f, 1], [0x730, 0x74a, 7], [0x74b, 0x7a5, 1], [0x7a6, 0x7b0, 7], [0x7b1, 0x7bf, 1], [0x7c0, 0x7ea, 0],
29
+ [0x7eb, 0x7f3, 7], [0x7f4, 0x7f5, 0], [0x7f6, 0x7f9, 12], [0x7fa, 0x7fc, 0], [0x7fd, 0x7fd, 7], [0x7fe, 0x815, 0],
30
+ [0x816, 0x819, 7], [0x81a, 0x81a, 0], [0x81b, 0x823, 7], [0x824, 0x824, 0], [0x825, 0x827, 7], [0x828, 0x828, 0],
31
+ [0x829, 0x82d, 7], [0x82e, 0x858, 0], [0x859, 0x85b, 7], [0x85c, 0x85f, 0], [0x860, 0x88f, 1], [0x890, 0x891, 5],
32
+ [0x892, 0x896, 1], [0x897, 0x89f, 7], [0x8a0, 0x8c9, 1], [0x8ca, 0x8e1, 7], [0x8e2, 0x8e2, 5], [0x8e3, 0x902, 7],
33
+ [0x93a, 0x93a, 7], [0x93c, 0x93c, 7], [0x941, 0x948, 7], [0x94d, 0x94d, 7], [0x951, 0x957, 7], [0x962, 0x963, 7],
34
+ [0x981, 0x981, 7], [0x9bc, 0x9bc, 7], [0x9c1, 0x9c4, 7], [0x9cd, 0x9cd, 7], [0x9e2, 0x9e3, 7], [0x9f2, 0x9f3, 4],
35
+ [0x9fb, 0x9fb, 4], [0x9fe, 0x9fe, 7], [0xa01, 0xa02, 7], [0xa3c, 0xa3c, 7], [0xa41, 0xa42, 7], [0xa47, 0xa48, 7],
36
+ [0xa4b, 0xa4d, 7], [0xa51, 0xa51, 7], [0xa70, 0xa71, 7], [0xa75, 0xa75, 7], [0xa81, 0xa82, 7], [0xabc, 0xabc, 7],
37
+ [0xac1, 0xac5, 7], [0xac7, 0xac8, 7], [0xacd, 0xacd, 7], [0xae2, 0xae3, 7], [0xaf1, 0xaf1, 4], [0xafa, 0xaff, 7],
38
+ [0xb01, 0xb01, 7], [0xb3c, 0xb3c, 7], [0xb3f, 0xb3f, 7], [0xb41, 0xb44, 7], [0xb4d, 0xb4d, 7], [0xb55, 0xb56, 7],
39
+ [0xb62, 0xb63, 7], [0xb82, 0xb82, 7], [0xbc0, 0xbc0, 7], [0xbcd, 0xbcd, 7], [0xbf3, 0xbf8, 12], [0xbf9, 0xbf9, 4],
40
+ [0xbfa, 0xbfa, 12], [0xc00, 0xc00, 7], [0xc04, 0xc04, 7], [0xc3c, 0xc3c, 7], [0xc3e, 0xc40, 7], [0xc46, 0xc48, 7],
41
+ [0xc4a, 0xc4d, 7], [0xc55, 0xc56, 7], [0xc62, 0xc63, 7], [0xc78, 0xc7e, 12], [0xc81, 0xc81, 7], [0xcbc, 0xcbc, 7],
42
+ [0xccc, 0xccd, 7], [0xce2, 0xce3, 7], [0xd00, 0xd01, 7], [0xd3b, 0xd3c, 7], [0xd41, 0xd44, 7], [0xd4d, 0xd4d, 7],
43
+ [0xd62, 0xd63, 7], [0xd81, 0xd81, 7], [0xdca, 0xdca, 7], [0xdd2, 0xdd4, 7], [0xdd6, 0xdd6, 7], [0xe31, 0xe31, 7],
44
+ [0xe34, 0xe3a, 7], [0xe3f, 0xe3f, 4], [0xe47, 0xe4e, 7], [0xeb1, 0xeb1, 7], [0xeb4, 0xebc, 7], [0xec8, 0xece, 7],
45
+ [0xf18, 0xf19, 7], [0xf35, 0xf35, 7], [0xf37, 0xf37, 7], [0xf39, 0xf39, 7], [0xf3a, 0xf3d, 12], [0xf71, 0xf7e, 7],
46
+ [0xf80, 0xf84, 7], [0xf86, 0xf87, 7], [0xf8d, 0xf97, 7], [0xf99, 0xfbc, 7], [0xfc6, 0xfc6, 7], [0x102d, 0x1030, 7],
47
+ [0x1032, 0x1037, 7], [0x1039, 0x103a, 7], [0x103d, 0x103e, 7], [0x1058, 0x1059, 7], [0x105e, 0x1060, 7],
48
+ [0x1071, 0x1074, 7], [0x1082, 0x1082, 7], [0x1085, 0x1086, 7], [0x108d, 0x108d, 7], [0x109d, 0x109d, 7],
49
+ [0x135d, 0x135f, 7], [0x1390, 0x1399, 12], [0x1400, 0x1400, 12], [0x1680, 0x1680, 11], [0x169b, 0x169c, 12],
50
+ [0x1712, 0x1714, 7], [0x1732, 0x1733, 7], [0x1752, 0x1753, 7], [0x1772, 0x1773, 7], [0x17b4, 0x17b5, 7],
51
+ [0x17b7, 0x17bd, 7], [0x17c6, 0x17c6, 7], [0x17c9, 0x17d3, 7], [0x17db, 0x17db, 4], [0x17dd, 0x17dd, 7],
52
+ [0x17f0, 0x17f9, 12], [0x1800, 0x180a, 12], [0x180b, 0x180d, 7], [0x180e, 0x180e, 8], [0x180f, 0x180f, 7],
53
+ [0x1885, 0x1886, 7], [0x18a9, 0x18a9, 7], [0x1920, 0x1922, 7], [0x1927, 0x1928, 7], [0x1932, 0x1932, 7],
54
+ [0x1939, 0x193b, 7], [0x1940, 0x1940, 12], [0x1944, 0x1945, 12], [0x19de, 0x19ff, 12], [0x1a17, 0x1a18, 7],
55
+ [0x1a1b, 0x1a1b, 7], [0x1a56, 0x1a56, 7], [0x1a58, 0x1a5e, 7], [0x1a60, 0x1a60, 7], [0x1a62, 0x1a62, 7],
56
+ [0x1a65, 0x1a6c, 7], [0x1a73, 0x1a7c, 7], [0x1a7f, 0x1a7f, 7], [0x1ab0, 0x1add, 7], [0x1ae0, 0x1aeb, 7],
57
+ [0x1b00, 0x1b03, 7], [0x1b34, 0x1b34, 7], [0x1b36, 0x1b3a, 7], [0x1b3c, 0x1b3c, 7], [0x1b42, 0x1b42, 7],
58
+ [0x1b6b, 0x1b73, 7], [0x1b80, 0x1b81, 7], [0x1ba2, 0x1ba5, 7], [0x1ba8, 0x1ba9, 7], [0x1bab, 0x1bad, 7],
59
+ [0x1be6, 0x1be6, 7], [0x1be8, 0x1be9, 7], [0x1bed, 0x1bed, 7], [0x1bef, 0x1bf1, 7], [0x1c2c, 0x1c33, 7],
60
+ [0x1c36, 0x1c37, 7], [0x1cd0, 0x1cd2, 7], [0x1cd4, 0x1ce0, 7], [0x1ce2, 0x1ce8, 7], [0x1ced, 0x1ced, 7],
61
+ [0x1cf4, 0x1cf4, 7], [0x1cf8, 0x1cf9, 7], [0x1dc0, 0x1dff, 7], [0x1fbd, 0x1fbd, 12], [0x1fbf, 0x1fc1, 12],
62
+ [0x1fcd, 0x1fcf, 12], [0x1fdd, 0x1fdf, 12], [0x1fed, 0x1fef, 12], [0x1ffd, 0x1ffe, 12], [0x2000, 0x200a, 11],
63
+ [0x200b, 0x200d, 8], [0x200f, 0x200f, 0], [0x2010, 0x2027, 12], [0x2028, 0x2028, 11], [0x2029, 0x2029, 9],
64
+ [0x202a, 0x202a, 13], [0x202b, 0x202b, 15], [0x202c, 0x202c, 17], [0x202d, 0x202d, 14], [0x202e, 0x202e, 16],
65
+ [0x202f, 0x202f, 6], [0x2030, 0x2034, 4], [0x2035, 0x2043, 12], [0x2044, 0x2044, 6], [0x2045, 0x205e, 12],
66
+ [0x205f, 0x205f, 11], [0x2060, 0x2065, 8], [0x2066, 0x2066, 18], [0x2067, 0x2067, 19], [0x2068, 0x2068, 20],
67
+ [0x2069, 0x2069, 21], [0x206a, 0x206f, 8], [0x2070, 0x2070, 2], [0x2074, 0x2079, 2], [0x207a, 0x207b, 3],
68
+ [0x207c, 0x207e, 12], [0x2080, 0x2089, 2], [0x208a, 0x208b, 3], [0x208c, 0x208e, 12], [0x20a0, 0x20cf, 4],
69
+ [0x20d0, 0x20f0, 7], [0x2100, 0x2101, 12], [0x2103, 0x2106, 12], [0x2108, 0x2109, 12], [0x2114, 0x2114, 12],
70
+ [0x2116, 0x2118, 12], [0x211e, 0x2123, 12], [0x2125, 0x2125, 12], [0x2127, 0x2127, 12], [0x2129, 0x2129, 12],
71
+ [0x212e, 0x212e, 4], [0x213a, 0x213b, 12], [0x2140, 0x2144, 12], [0x214a, 0x214d, 12], [0x2150, 0x215f, 12],
72
+ [0x2189, 0x218b, 12], [0x2190, 0x2211, 12], [0x2212, 0x2212, 3], [0x2213, 0x2213, 4], [0x2214, 0x2335, 12],
73
+ [0x237b, 0x2394, 12], [0x2396, 0x2429, 12], [0x2440, 0x244a, 12], [0x2460, 0x2487, 12], [0x2488, 0x249b, 2],
74
+ [0x24ea, 0x26ab, 12], [0x26ad, 0x27ff, 12], [0x2900, 0x2b73, 12], [0x2b76, 0x2bff, 12], [0x2ce5, 0x2cea, 12],
75
+ [0x2cef, 0x2cf1, 7], [0x2cf9, 0x2cff, 12], [0x2d7f, 0x2d7f, 7], [0x2de0, 0x2dff, 7], [0x2e00, 0x2e5d, 12],
76
+ [0x2e80, 0x2e99, 12], [0x2e9b, 0x2ef3, 12], [0x2f00, 0x2fd5, 12], [0x2ff0, 0x2fff, 12], [0x3000, 0x3000, 11],
77
+ [0x3001, 0x3004, 12], [0x3008, 0x3020, 12], [0x302a, 0x302d, 7], [0x3030, 0x3030, 12], [0x3036, 0x3037, 12],
78
+ [0x303d, 0x303f, 12], [0x3099, 0x309a, 7], [0x309b, 0x309c, 12], [0x30a0, 0x30a0, 12], [0x30fb, 0x30fb, 12],
79
+ [0x31c0, 0x31e5, 12], [0x31ef, 0x31ef, 12], [0x321d, 0x321e, 12], [0x3250, 0x325f, 12], [0x327c, 0x327e, 12],
80
+ [0x32b1, 0x32bf, 12], [0x32cc, 0x32cf, 12], [0x3377, 0x337a, 12], [0x33de, 0x33df, 12], [0x33ff, 0x33ff, 12],
81
+ [0x4dc0, 0x4dff, 12], [0xa490, 0xa4c6, 12], [0xa60d, 0xa60f, 12], [0xa66f, 0xa672, 7], [0xa673, 0xa673, 12],
82
+ [0xa674, 0xa67d, 7], [0xa67e, 0xa67f, 12], [0xa69e, 0xa69f, 7], [0xa6f0, 0xa6f1, 7], [0xa700, 0xa721, 12],
83
+ [0xa788, 0xa788, 12], [0xa802, 0xa802, 7], [0xa806, 0xa806, 7], [0xa80b, 0xa80b, 7], [0xa825, 0xa826, 7],
84
+ [0xa828, 0xa82b, 12], [0xa82c, 0xa82c, 7], [0xa838, 0xa839, 4], [0xa874, 0xa877, 12], [0xa8c4, 0xa8c5, 7],
85
+ [0xa8e0, 0xa8f1, 7], [0xa8ff, 0xa8ff, 7], [0xa926, 0xa92d, 7], [0xa947, 0xa951, 7], [0xa980, 0xa982, 7],
86
+ [0xa9b3, 0xa9b3, 7], [0xa9b6, 0xa9b9, 7], [0xa9bc, 0xa9bd, 7], [0xa9e5, 0xa9e5, 7], [0xaa29, 0xaa2e, 7],
87
+ [0xaa31, 0xaa32, 7], [0xaa35, 0xaa36, 7], [0xaa43, 0xaa43, 7], [0xaa4c, 0xaa4c, 7], [0xaa7c, 0xaa7c, 7],
88
+ [0xaab0, 0xaab0, 7], [0xaab2, 0xaab4, 7], [0xaab7, 0xaab8, 7], [0xaabe, 0xaabf, 7], [0xaac1, 0xaac1, 7],
89
+ [0xaaec, 0xaaed, 7], [0xaaf6, 0xaaf6, 7], [0xab6a, 0xab6b, 12], [0xabe5, 0xabe5, 7], [0xabe8, 0xabe8, 7],
90
+ [0xabed, 0xabed, 7], [0xfb1d, 0xfb1d, 0], [0xfb1e, 0xfb1e, 7], [0xfb1f, 0xfb28, 0], [0xfb29, 0xfb29, 3],
91
+ [0xfb2a, 0xfb4f, 0], [0xfb50, 0xfbc2, 1], [0xfbc3, 0xfbd2, 12], [0xfbd3, 0xfd3d, 1], [0xfd3e, 0xfd4f, 12],
92
+ [0xfd50, 0xfd8f, 1], [0xfd90, 0xfd91, 12], [0xfd92, 0xfdc7, 1], [0xfdc8, 0xfdcf, 12], [0xfdd0, 0xfdef, 8],
93
+ [0xfdf0, 0xfdfc, 1], [0xfdfd, 0xfdff, 12], [0xfe00, 0xfe0f, 7], [0xfe10, 0xfe19, 12], [0xfe20, 0xfe2f, 7],
94
+ [0xfe30, 0xfe4f, 12], [0xfe50, 0xfe50, 6], [0xfe51, 0xfe51, 12], [0xfe52, 0xfe52, 6], [0xfe54, 0xfe54, 12],
95
+ [0xfe55, 0xfe55, 6], [0xfe56, 0xfe5e, 12], [0xfe5f, 0xfe5f, 4], [0xfe60, 0xfe61, 12], [0xfe62, 0xfe63, 3],
96
+ [0xfe64, 0xfe66, 12], [0xfe68, 0xfe68, 12], [0xfe69, 0xfe6a, 4], [0xfe6b, 0xfe6b, 12], [0xfe70, 0xfefe, 1],
97
+ [0xfeff, 0xfeff, 8], [0xff01, 0xff02, 12], [0xff03, 0xff05, 4], [0xff06, 0xff0a, 12], [0xff0b, 0xff0b, 3],
98
+ [0xff0c, 0xff0c, 6], [0xff0d, 0xff0d, 3], [0xff0e, 0xff0f, 6], [0xff10, 0xff19, 2], [0xff1a, 0xff1a, 6],
99
+ [0xff1b, 0xff20, 12], [0xff3b, 0xff40, 12], [0xff5b, 0xff65, 12], [0xffe0, 0xffe1, 4], [0xffe2, 0xffe4, 12],
100
+ [0xffe5, 0xffe6, 4], [0xffe8, 0xffee, 12], [0xfff0, 0xfff8, 8], [0xfff9, 0xfffd, 12], [0xfffe, 0xffff, 8],
101
+ [0x10101, 0x10101, 12], [0x10140, 0x1018c, 12], [0x10190, 0x1019c, 12], [0x101a0, 0x101a0, 12],
102
+ [0x101fd, 0x101fd, 7], [0x102e0, 0x102e0, 7], [0x102e1, 0x102fb, 2], [0x10376, 0x1037a, 7], [0x10800, 0x1091e, 0],
103
+ [0x1091f, 0x1091f, 12], [0x10920, 0x10a00, 0], [0x10a01, 0x10a03, 7], [0x10a04, 0x10a04, 0], [0x10a05, 0x10a06, 7],
104
+ [0x10a07, 0x10a0b, 0], [0x10a0c, 0x10a0f, 7], [0x10a10, 0x10a37, 0], [0x10a38, 0x10a3a, 7], [0x10a3b, 0x10a3e, 0],
105
+ [0x10a3f, 0x10a3f, 7], [0x10a40, 0x10ae4, 0], [0x10ae5, 0x10ae6, 7], [0x10ae7, 0x10b38, 0], [0x10b39, 0x10b3f, 12],
106
+ [0x10b40, 0x10cff, 0], [0x10d00, 0x10d23, 1], [0x10d24, 0x10d27, 7], [0x10d28, 0x10d2f, 1], [0x10d30, 0x10d39, 5],
107
+ [0x10d3a, 0x10d3f, 1], [0x10d40, 0x10d49, 5], [0x10d4a, 0x10d68, 0], [0x10d69, 0x10d6d, 7], [0x10d6e, 0x10d6e, 12],
108
+ [0x10d6f, 0x10e5f, 0], [0x10e60, 0x10e7e, 5], [0x10e7f, 0x10eaa, 0], [0x10eab, 0x10eac, 7], [0x10ead, 0x10ebf, 0],
109
+ [0x10ec0, 0x10ecf, 1], [0x10ed0, 0x10ed8, 12], [0x10ed9, 0x10ef9, 1], [0x10efa, 0x10eff, 7], [0x10f00, 0x10f2f, 0],
110
+ [0x10f30, 0x10f45, 1], [0x10f46, 0x10f50, 7], [0x10f51, 0x10f6f, 1], [0x10f70, 0x10f81, 0], [0x10f82, 0x10f85, 7],
111
+ [0x10f86, 0x10fff, 0], [0x11001, 0x11001, 7], [0x11038, 0x11046, 7], [0x11052, 0x11065, 12], [0x11070, 0x11070, 7],
112
+ [0x11073, 0x11074, 7], [0x1107f, 0x11081, 7], [0x110b3, 0x110b6, 7], [0x110b9, 0x110ba, 7], [0x110c2, 0x110c2, 7],
113
+ [0x11100, 0x11102, 7], [0x11127, 0x1112b, 7], [0x1112d, 0x11134, 7], [0x11173, 0x11173, 7], [0x11180, 0x11181, 7],
114
+ [0x111b6, 0x111be, 7], [0x111c9, 0x111cc, 7], [0x111cf, 0x111cf, 7], [0x1122f, 0x11231, 7], [0x11234, 0x11234, 7],
115
+ [0x11236, 0x11237, 7], [0x1123e, 0x1123e, 7], [0x11241, 0x11241, 7], [0x112df, 0x112df, 7], [0x112e3, 0x112ea, 7],
116
+ [0x11300, 0x11301, 7], [0x1133b, 0x1133c, 7], [0x11340, 0x11340, 7], [0x11366, 0x1136c, 7], [0x11370, 0x11374, 7],
117
+ [0x113bb, 0x113c0, 7], [0x113ce, 0x113ce, 7], [0x113d0, 0x113d0, 7], [0x113d2, 0x113d2, 7], [0x113e1, 0x113e2, 7],
118
+ [0x11438, 0x1143f, 7], [0x11442, 0x11444, 7], [0x11446, 0x11446, 7], [0x1145e, 0x1145e, 7], [0x114b3, 0x114b8, 7],
119
+ [0x114ba, 0x114ba, 7], [0x114bf, 0x114c0, 7], [0x114c2, 0x114c3, 7], [0x115b2, 0x115b5, 7], [0x115bc, 0x115bd, 7],
120
+ [0x115bf, 0x115c0, 7], [0x115dc, 0x115dd, 7], [0x11633, 0x1163a, 7], [0x1163d, 0x1163d, 7], [0x1163f, 0x11640, 7],
121
+ [0x11660, 0x1166c, 12], [0x116ab, 0x116ab, 7], [0x116ad, 0x116ad, 7], [0x116b0, 0x116b5, 7], [0x116b7, 0x116b7, 7],
122
+ [0x1171d, 0x1171d, 7], [0x1171f, 0x1171f, 7], [0x11722, 0x11725, 7], [0x11727, 0x1172b, 7], [0x1182f, 0x11837, 7],
123
+ [0x11839, 0x1183a, 7], [0x1193b, 0x1193c, 7], [0x1193e, 0x1193e, 7], [0x11943, 0x11943, 7], [0x119d4, 0x119d7, 7],
124
+ [0x119da, 0x119db, 7], [0x119e0, 0x119e0, 7], [0x11a01, 0x11a06, 7], [0x11a09, 0x11a0a, 7], [0x11a33, 0x11a38, 7],
125
+ [0x11a3b, 0x11a3e, 7], [0x11a47, 0x11a47, 7], [0x11a51, 0x11a56, 7], [0x11a59, 0x11a5b, 7], [0x11a8a, 0x11a96, 7],
126
+ [0x11a98, 0x11a99, 7], [0x11b60, 0x11b60, 7], [0x11b62, 0x11b64, 7], [0x11b66, 0x11b66, 7], [0x11c30, 0x11c36, 7],
127
+ [0x11c38, 0x11c3d, 7], [0x11c92, 0x11ca7, 7], [0x11caa, 0x11cb0, 7], [0x11cb2, 0x11cb3, 7], [0x11cb5, 0x11cb6, 7],
128
+ [0x11d31, 0x11d36, 7], [0x11d3a, 0x11d3a, 7], [0x11d3c, 0x11d3d, 7], [0x11d3f, 0x11d45, 7], [0x11d47, 0x11d47, 7],
129
+ [0x11d90, 0x11d91, 7], [0x11d95, 0x11d95, 7], [0x11d97, 0x11d97, 7], [0x11ef3, 0x11ef4, 7], [0x11f00, 0x11f01, 7],
130
+ [0x11f36, 0x11f3a, 7], [0x11f40, 0x11f40, 7], [0x11f42, 0x11f42, 7], [0x11f5a, 0x11f5a, 7], [0x11fd5, 0x11fdc, 12],
131
+ [0x11fdd, 0x11fe0, 4], [0x11fe1, 0x11ff1, 12], [0x13440, 0x13440, 7], [0x13447, 0x13455, 7], [0x1611e, 0x16129, 7],
132
+ [0x1612d, 0x1612f, 7], [0x16af0, 0x16af4, 7], [0x16b30, 0x16b36, 7], [0x16f4f, 0x16f4f, 7], [0x16f8f, 0x16f92, 7],
133
+ [0x16fe2, 0x16fe2, 12], [0x16fe4, 0x16fe4, 7], [0x1bc9d, 0x1bc9e, 7], [0x1bca0, 0x1bca3, 8], [0x1cc00, 0x1ccd5, 12],
134
+ [0x1ccf0, 0x1ccf9, 2], [0x1ccfa, 0x1ccfc, 12], [0x1cd00, 0x1ceb3, 12], [0x1ceba, 0x1ced0, 12],
135
+ [0x1cee0, 0x1cef0, 12], [0x1cf00, 0x1cf2d, 7], [0x1cf30, 0x1cf46, 7], [0x1d167, 0x1d169, 7], [0x1d173, 0x1d17a, 8],
136
+ [0x1d17b, 0x1d182, 7], [0x1d185, 0x1d18b, 7], [0x1d1aa, 0x1d1ad, 7], [0x1d1e9, 0x1d1ea, 12], [0x1d200, 0x1d241, 12],
137
+ [0x1d242, 0x1d244, 7], [0x1d245, 0x1d245, 12], [0x1d300, 0x1d356, 12], [0x1d6c1, 0x1d6c1, 12],
138
+ [0x1d6db, 0x1d6db, 12], [0x1d6fb, 0x1d6fb, 12], [0x1d715, 0x1d715, 12], [0x1d735, 0x1d735, 12],
139
+ [0x1d74f, 0x1d74f, 12], [0x1d76f, 0x1d76f, 12], [0x1d789, 0x1d789, 12], [0x1d7a9, 0x1d7a9, 12],
140
+ [0x1d7c3, 0x1d7c3, 12], [0x1d7ce, 0x1d7ff, 2], [0x1da00, 0x1da36, 7], [0x1da3b, 0x1da6c, 7], [0x1da75, 0x1da75, 7],
141
+ [0x1da84, 0x1da84, 7], [0x1da9b, 0x1da9f, 7], [0x1daa1, 0x1daaf, 7], [0x1e000, 0x1e006, 7], [0x1e008, 0x1e018, 7],
142
+ [0x1e01b, 0x1e021, 7], [0x1e023, 0x1e024, 7], [0x1e026, 0x1e02a, 7], [0x1e08f, 0x1e08f, 7], [0x1e130, 0x1e136, 7],
143
+ [0x1e2ae, 0x1e2ae, 7], [0x1e2ec, 0x1e2ef, 7], [0x1e2ff, 0x1e2ff, 4], [0x1e4ec, 0x1e4ef, 7], [0x1e5ee, 0x1e5ef, 7],
144
+ [0x1e6e3, 0x1e6e3, 7], [0x1e6e6, 0x1e6e6, 7], [0x1e6ee, 0x1e6ef, 7], [0x1e6f5, 0x1e6f5, 7], [0x1e800, 0x1e8cf, 0],
145
+ [0x1e8d0, 0x1e8d6, 7], [0x1e8d7, 0x1e943, 0], [0x1e944, 0x1e94a, 7], [0x1e94b, 0x1ec6f, 0], [0x1ec70, 0x1ecbf, 1],
146
+ [0x1ecc0, 0x1ecff, 0], [0x1ed00, 0x1ed4f, 1], [0x1ed50, 0x1edff, 0], [0x1ee00, 0x1eeef, 1], [0x1eef0, 0x1eef1, 12],
147
+ [0x1eef2, 0x1eeff, 1], [0x1ef00, 0x1efff, 0], [0x1f000, 0x1f02b, 12], [0x1f030, 0x1f093, 12], [0x1f0a0, 0x1f0ae, 12],
148
+ [0x1f0b1, 0x1f0bf, 12], [0x1f0c1, 0x1f0cf, 12], [0x1f0d1, 0x1f0f5, 12], [0x1f100, 0x1f10a, 2],
149
+ [0x1f10b, 0x1f10f, 12], [0x1f12f, 0x1f12f, 12], [0x1f16a, 0x1f16f, 12], [0x1f1ad, 0x1f1ad, 12],
150
+ [0x1f260, 0x1f265, 12], [0x1f300, 0x1f6d8, 12], [0x1f6dc, 0x1f6ec, 12], [0x1f6f0, 0x1f6fc, 12],
151
+ [0x1f700, 0x1f7d9, 12], [0x1f7e0, 0x1f7eb, 12], [0x1f7f0, 0x1f7f0, 12], [0x1f800, 0x1f80b, 12],
152
+ [0x1f810, 0x1f847, 12], [0x1f850, 0x1f859, 12], [0x1f860, 0x1f887, 12], [0x1f890, 0x1f8ad, 12],
153
+ [0x1f8b0, 0x1f8bb, 12], [0x1f8c0, 0x1f8c1, 12], [0x1f8d0, 0x1f8d8, 12], [0x1f900, 0x1fa57, 12],
154
+ [0x1fa60, 0x1fa6d, 12], [0x1fa70, 0x1fa7c, 12], [0x1fa80, 0x1fa8a, 12], [0x1fa8e, 0x1fac6, 12],
155
+ [0x1fac8, 0x1fac8, 12], [0x1facd, 0x1fadc, 12], [0x1fadf, 0x1faea, 12], [0x1faef, 0x1faf8, 12],
156
+ [0x1fb00, 0x1fb92, 12], [0x1fb94, 0x1fbef, 12], [0x1fbf0, 0x1fbf9, 2], [0x1fbfa, 0x1fbfa, 12], [0x1fffe, 0x1ffff, 8],
157
+ [0x2fffe, 0x2ffff, 8], [0x3fffe, 0x3ffff, 8], [0x4fffe, 0x4ffff, 8], [0x5fffe, 0x5ffff, 8], [0x6fffe, 0x6ffff, 8],
158
+ [0x7fffe, 0x7ffff, 8], [0x8fffe, 0x8ffff, 8], [0x9fffe, 0x9ffff, 8], [0xafffe, 0xaffff, 8], [0xbfffe, 0xbffff, 8],
159
+ [0xcfffe, 0xcffff, 8], [0xdfffe, 0xe00ff, 8], [0xe0100, 0xe01ef, 7], [0xe01f0, 0xe0fff, 8], [0xefffe, 0xeffff, 8],
160
+ [0xffffe, 0xfffff, 8], [0x10fffe, 0x10ffff, 8],
161
+ ];
162
+ // Every range of code points not U, as [first, last, index into JOINING_TYPES]: ascending, disjoint.
163
+ export const JOINING_RANGES = [
164
+ [0xad, 0xad, 4], [0x300, 0x36f, 4], [0x483, 0x489, 4], [0x591, 0x5bd, 4], [0x5bf, 0x5bf, 4], [0x5c1, 0x5c2, 4],
165
+ [0x5c4, 0x5c5, 4], [0x5c7, 0x5c7, 4], [0x610, 0x61a, 4], [0x61c, 0x61c, 4], [0x620, 0x620, 2], [0x622, 0x625, 0],
166
+ [0x626, 0x626, 2], [0x627, 0x627, 0], [0x628, 0x628, 2], [0x629, 0x629, 0], [0x62a, 0x62e, 2], [0x62f, 0x632, 0],
167
+ [0x633, 0x63f, 2], [0x640, 0x640, 3], [0x641, 0x647, 2], [0x648, 0x648, 0], [0x649, 0x64a, 2], [0x64b, 0x65f, 4],
168
+ [0x66e, 0x66f, 2], [0x670, 0x670, 4], [0x671, 0x673, 0], [0x675, 0x677, 0], [0x678, 0x687, 2], [0x688, 0x699, 0],
169
+ [0x69a, 0x6bf, 2], [0x6c0, 0x6c0, 0], [0x6c1, 0x6c2, 2], [0x6c3, 0x6cb, 0], [0x6cc, 0x6cc, 2], [0x6cd, 0x6cd, 0],
170
+ [0x6ce, 0x6ce, 2], [0x6cf, 0x6cf, 0], [0x6d0, 0x6d1, 2], [0x6d2, 0x6d3, 0], [0x6d5, 0x6d5, 0], [0x6d6, 0x6dc, 4],
171
+ [0x6df, 0x6e4, 4], [0x6e7, 0x6e8, 4], [0x6ea, 0x6ed, 4], [0x6ee, 0x6ef, 0], [0x6fa, 0x6fc, 2], [0x6ff, 0x6ff, 2],
172
+ [0x70f, 0x70f, 4], [0x710, 0x710, 0], [0x711, 0x711, 4], [0x712, 0x714, 2], [0x715, 0x719, 0], [0x71a, 0x71d, 2],
173
+ [0x71e, 0x71e, 0], [0x71f, 0x727, 2], [0x728, 0x728, 0], [0x729, 0x729, 2], [0x72a, 0x72a, 0], [0x72b, 0x72b, 2],
174
+ [0x72c, 0x72c, 0], [0x72d, 0x72e, 2], [0x72f, 0x72f, 0], [0x730, 0x74a, 4], [0x74d, 0x74d, 0], [0x74e, 0x758, 2],
175
+ [0x759, 0x75b, 0], [0x75c, 0x76a, 2], [0x76b, 0x76c, 0], [0x76d, 0x770, 2], [0x771, 0x771, 0], [0x772, 0x772, 2],
176
+ [0x773, 0x774, 0], [0x775, 0x777, 2], [0x778, 0x779, 0], [0x77a, 0x77f, 2], [0x7a6, 0x7b0, 4], [0x7ca, 0x7ea, 2],
177
+ [0x7eb, 0x7f3, 4], [0x7fa, 0x7fa, 3], [0x7fd, 0x7fd, 4], [0x816, 0x819, 4], [0x81b, 0x823, 4], [0x825, 0x827, 4],
178
+ [0x829, 0x82d, 4], [0x840, 0x840, 0], [0x841, 0x845, 2], [0x846, 0x847, 0], [0x848, 0x848, 2], [0x849, 0x849, 0],
179
+ [0x84a, 0x853, 2], [0x854, 0x854, 0], [0x855, 0x855, 2], [0x856, 0x858, 0], [0x859, 0x85b, 4], [0x860, 0x860, 2],
180
+ [0x862, 0x865, 2], [0x867, 0x867, 0], [0x868, 0x868, 2], [0x869, 0x86a, 0], [0x870, 0x882, 0], [0x883, 0x885, 3],
181
+ [0x886, 0x886, 2], [0x889, 0x88d, 2], [0x88e, 0x88e, 0], [0x88f, 0x88f, 2], [0x897, 0x89f, 4], [0x8a0, 0x8a9, 2],
182
+ [0x8aa, 0x8ac, 0], [0x8ae, 0x8ae, 0], [0x8af, 0x8b0, 2], [0x8b1, 0x8b2, 0], [0x8b3, 0x8b8, 2], [0x8b9, 0x8b9, 0],
183
+ [0x8ba, 0x8c8, 2], [0x8ca, 0x8e1, 4], [0x8e3, 0x902, 4], [0x93a, 0x93a, 4], [0x93c, 0x93c, 4], [0x941, 0x948, 4],
184
+ [0x94d, 0x94d, 4], [0x951, 0x957, 4], [0x962, 0x963, 4], [0x981, 0x981, 4], [0x9bc, 0x9bc, 4], [0x9c1, 0x9c4, 4],
185
+ [0x9cd, 0x9cd, 4], [0x9e2, 0x9e3, 4], [0x9fe, 0x9fe, 4], [0xa01, 0xa02, 4], [0xa3c, 0xa3c, 4], [0xa41, 0xa42, 4],
186
+ [0xa47, 0xa48, 4], [0xa4b, 0xa4d, 4], [0xa51, 0xa51, 4], [0xa70, 0xa71, 4], [0xa75, 0xa75, 4], [0xa81, 0xa82, 4],
187
+ [0xabc, 0xabc, 4], [0xac1, 0xac5, 4], [0xac7, 0xac8, 4], [0xacd, 0xacd, 4], [0xae2, 0xae3, 4], [0xafa, 0xaff, 4],
188
+ [0xb01, 0xb01, 4], [0xb3c, 0xb3c, 4], [0xb3f, 0xb3f, 4], [0xb41, 0xb44, 4], [0xb4d, 0xb4d, 4], [0xb55, 0xb56, 4],
189
+ [0xb62, 0xb63, 4], [0xb82, 0xb82, 4], [0xbc0, 0xbc0, 4], [0xbcd, 0xbcd, 4], [0xc00, 0xc00, 4], [0xc04, 0xc04, 4],
190
+ [0xc3c, 0xc3c, 4], [0xc3e, 0xc40, 4], [0xc46, 0xc48, 4], [0xc4a, 0xc4d, 4], [0xc55, 0xc56, 4], [0xc62, 0xc63, 4],
191
+ [0xc81, 0xc81, 4], [0xcbc, 0xcbc, 4], [0xcbf, 0xcbf, 4], [0xcc6, 0xcc6, 4], [0xccc, 0xccd, 4], [0xce2, 0xce3, 4],
192
+ [0xd00, 0xd01, 4], [0xd3b, 0xd3c, 4], [0xd41, 0xd44, 4], [0xd4d, 0xd4d, 4], [0xd62, 0xd63, 4], [0xd81, 0xd81, 4],
193
+ [0xdca, 0xdca, 4], [0xdd2, 0xdd4, 4], [0xdd6, 0xdd6, 4], [0xe31, 0xe31, 4], [0xe34, 0xe3a, 4], [0xe47, 0xe4e, 4],
194
+ [0xeb1, 0xeb1, 4], [0xeb4, 0xebc, 4], [0xec8, 0xece, 4], [0xf18, 0xf19, 4], [0xf35, 0xf35, 4], [0xf37, 0xf37, 4],
195
+ [0xf39, 0xf39, 4], [0xf71, 0xf7e, 4], [0xf80, 0xf84, 4], [0xf86, 0xf87, 4], [0xf8d, 0xf97, 4], [0xf99, 0xfbc, 4],
196
+ [0xfc6, 0xfc6, 4], [0x102d, 0x1030, 4], [0x1032, 0x1037, 4], [0x1039, 0x103a, 4], [0x103d, 0x103e, 4],
197
+ [0x1058, 0x1059, 4], [0x105e, 0x1060, 4], [0x1071, 0x1074, 4], [0x1082, 0x1082, 4], [0x1085, 0x1086, 4],
198
+ [0x108d, 0x108d, 4], [0x109d, 0x109d, 4], [0x135d, 0x135f, 4], [0x1712, 0x1714, 4], [0x1732, 0x1733, 4],
199
+ [0x1752, 0x1753, 4], [0x1772, 0x1773, 4], [0x17b4, 0x17b5, 4], [0x17b7, 0x17bd, 4], [0x17c6, 0x17c6, 4],
200
+ [0x17c9, 0x17d3, 4], [0x17dd, 0x17dd, 4], [0x1807, 0x1807, 2], [0x180a, 0x180a, 3], [0x180b, 0x180d, 4],
201
+ [0x180f, 0x180f, 4], [0x1820, 0x1878, 2], [0x1885, 0x1886, 4], [0x1887, 0x18a8, 2], [0x18a9, 0x18a9, 4],
202
+ [0x18aa, 0x18aa, 2], [0x1920, 0x1922, 4], [0x1927, 0x1928, 4], [0x1932, 0x1932, 4], [0x1939, 0x193b, 4],
203
+ [0x1a17, 0x1a18, 4], [0x1a1b, 0x1a1b, 4], [0x1a56, 0x1a56, 4], [0x1a58, 0x1a5e, 4], [0x1a60, 0x1a60, 4],
204
+ [0x1a62, 0x1a62, 4], [0x1a65, 0x1a6c, 4], [0x1a73, 0x1a7c, 4], [0x1a7f, 0x1a7f, 4], [0x1ab0, 0x1add, 4],
205
+ [0x1ae0, 0x1aeb, 4], [0x1b00, 0x1b03, 4], [0x1b34, 0x1b34, 4], [0x1b36, 0x1b3a, 4], [0x1b3c, 0x1b3c, 4],
206
+ [0x1b42, 0x1b42, 4], [0x1b6b, 0x1b73, 4], [0x1b80, 0x1b81, 4], [0x1ba2, 0x1ba5, 4], [0x1ba8, 0x1ba9, 4],
207
+ [0x1bab, 0x1bad, 4], [0x1be6, 0x1be6, 4], [0x1be8, 0x1be9, 4], [0x1bed, 0x1bed, 4], [0x1bef, 0x1bf1, 4],
208
+ [0x1c2c, 0x1c33, 4], [0x1c36, 0x1c37, 4], [0x1cd0, 0x1cd2, 4], [0x1cd4, 0x1ce0, 4], [0x1ce2, 0x1ce8, 4],
209
+ [0x1ced, 0x1ced, 4], [0x1cf4, 0x1cf4, 4], [0x1cf8, 0x1cf9, 4], [0x1dc0, 0x1dff, 4], [0x200b, 0x200b, 4],
210
+ [0x200d, 0x200d, 3], [0x200e, 0x200f, 4], [0x202a, 0x202e, 4], [0x2060, 0x2064, 4], [0x206a, 0x206f, 4],
211
+ [0x20d0, 0x20f0, 4], [0x2cef, 0x2cf1, 4], [0x2d7f, 0x2d7f, 4], [0x2de0, 0x2dff, 4], [0x302a, 0x302d, 4],
212
+ [0x3099, 0x309a, 4], [0xa66f, 0xa672, 4], [0xa674, 0xa67d, 4], [0xa69e, 0xa69f, 4], [0xa6f0, 0xa6f1, 4],
213
+ [0xa802, 0xa802, 4], [0xa806, 0xa806, 4], [0xa80b, 0xa80b, 4], [0xa825, 0xa826, 4], [0xa82c, 0xa82c, 4],
214
+ [0xa840, 0xa871, 2], [0xa872, 0xa872, 1], [0xa8c4, 0xa8c5, 4], [0xa8e0, 0xa8f1, 4], [0xa8ff, 0xa8ff, 4],
215
+ [0xa926, 0xa92d, 4], [0xa947, 0xa951, 4], [0xa980, 0xa982, 4], [0xa9b3, 0xa9b3, 4], [0xa9b6, 0xa9b9, 4],
216
+ [0xa9bc, 0xa9bd, 4], [0xa9e5, 0xa9e5, 4], [0xaa29, 0xaa2e, 4], [0xaa31, 0xaa32, 4], [0xaa35, 0xaa36, 4],
217
+ [0xaa43, 0xaa43, 4], [0xaa4c, 0xaa4c, 4], [0xaa7c, 0xaa7c, 4], [0xaab0, 0xaab0, 4], [0xaab2, 0xaab4, 4],
218
+ [0xaab7, 0xaab8, 4], [0xaabe, 0xaabf, 4], [0xaac1, 0xaac1, 4], [0xaaec, 0xaaed, 4], [0xaaf6, 0xaaf6, 4],
219
+ [0xabe5, 0xabe5, 4], [0xabe8, 0xabe8, 4], [0xabed, 0xabed, 4], [0xfb1e, 0xfb1e, 4], [0xfe00, 0xfe0f, 4],
220
+ [0xfe20, 0xfe2f, 4], [0xfeff, 0xfeff, 4], [0xfff9, 0xfffb, 4], [0x101fd, 0x101fd, 4], [0x102e0, 0x102e0, 4],
221
+ [0x10376, 0x1037a, 4], [0x10a01, 0x10a03, 4], [0x10a05, 0x10a06, 4], [0x10a0c, 0x10a0f, 4], [0x10a38, 0x10a3a, 4],
222
+ [0x10a3f, 0x10a3f, 4], [0x10ac0, 0x10ac4, 2], [0x10ac5, 0x10ac5, 0], [0x10ac7, 0x10ac7, 0], [0x10ac9, 0x10aca, 0],
223
+ [0x10acd, 0x10acd, 1], [0x10ace, 0x10ad2, 0], [0x10ad3, 0x10ad6, 2], [0x10ad7, 0x10ad7, 1], [0x10ad8, 0x10adc, 2],
224
+ [0x10add, 0x10add, 0], [0x10ade, 0x10ae0, 2], [0x10ae1, 0x10ae1, 0], [0x10ae4, 0x10ae4, 0], [0x10ae5, 0x10ae6, 4],
225
+ [0x10aeb, 0x10aee, 2], [0x10aef, 0x10aef, 0], [0x10b80, 0x10b80, 2], [0x10b81, 0x10b81, 0], [0x10b82, 0x10b82, 2],
226
+ [0x10b83, 0x10b85, 0], [0x10b86, 0x10b88, 2], [0x10b89, 0x10b89, 0], [0x10b8a, 0x10b8b, 2], [0x10b8c, 0x10b8c, 0],
227
+ [0x10b8d, 0x10b8d, 2], [0x10b8e, 0x10b8f, 0], [0x10b90, 0x10b90, 2], [0x10b91, 0x10b91, 0], [0x10ba9, 0x10bac, 0],
228
+ [0x10bad, 0x10bae, 2], [0x10d00, 0x10d00, 1], [0x10d01, 0x10d21, 2], [0x10d22, 0x10d22, 0], [0x10d23, 0x10d23, 2],
229
+ [0x10d24, 0x10d27, 4], [0x10d69, 0x10d6d, 4], [0x10eab, 0x10eac, 4], [0x10ec2, 0x10ec2, 0], [0x10ec3, 0x10ec4, 2],
230
+ [0x10ec6, 0x10ec7, 2], [0x10efa, 0x10eff, 4], [0x10f30, 0x10f32, 2], [0x10f33, 0x10f33, 0], [0x10f34, 0x10f44, 2],
231
+ [0x10f46, 0x10f50, 4], [0x10f51, 0x10f53, 2], [0x10f54, 0x10f54, 0], [0x10f70, 0x10f73, 2], [0x10f74, 0x10f75, 0],
232
+ [0x10f76, 0x10f81, 2], [0x10f82, 0x10f85, 4], [0x10fb0, 0x10fb0, 2], [0x10fb2, 0x10fb3, 2], [0x10fb4, 0x10fb6, 0],
233
+ [0x10fb8, 0x10fb8, 2], [0x10fb9, 0x10fba, 0], [0x10fbb, 0x10fbc, 2], [0x10fbd, 0x10fbd, 0], [0x10fbe, 0x10fbf, 2],
234
+ [0x10fc1, 0x10fc1, 2], [0x10fc2, 0x10fc3, 0], [0x10fc4, 0x10fc4, 2], [0x10fc9, 0x10fc9, 0], [0x10fca, 0x10fca, 2],
235
+ [0x10fcb, 0x10fcb, 1], [0x11001, 0x11001, 4], [0x11038, 0x11046, 4], [0x11070, 0x11070, 4], [0x11073, 0x11074, 4],
236
+ [0x1107f, 0x11081, 4], [0x110b3, 0x110b6, 4], [0x110b9, 0x110ba, 4], [0x110c2, 0x110c2, 4], [0x11100, 0x11102, 4],
237
+ [0x11127, 0x1112b, 4], [0x1112d, 0x11134, 4], [0x11173, 0x11173, 4], [0x11180, 0x11181, 4], [0x111b6, 0x111be, 4],
238
+ [0x111c9, 0x111cc, 4], [0x111cf, 0x111cf, 4], [0x1122f, 0x11231, 4], [0x11234, 0x11234, 4], [0x11236, 0x11237, 4],
239
+ [0x1123e, 0x1123e, 4], [0x11241, 0x11241, 4], [0x112df, 0x112df, 4], [0x112e3, 0x112ea, 4], [0x11300, 0x11301, 4],
240
+ [0x1133b, 0x1133c, 4], [0x11340, 0x11340, 4], [0x11366, 0x1136c, 4], [0x11370, 0x11374, 4], [0x113bb, 0x113c0, 4],
241
+ [0x113ce, 0x113ce, 4], [0x113d0, 0x113d0, 4], [0x113d2, 0x113d2, 4], [0x113e1, 0x113e2, 4], [0x11438, 0x1143f, 4],
242
+ [0x11442, 0x11444, 4], [0x11446, 0x11446, 4], [0x1145e, 0x1145e, 4], [0x114b3, 0x114b8, 4], [0x114ba, 0x114ba, 4],
243
+ [0x114bf, 0x114c0, 4], [0x114c2, 0x114c3, 4], [0x115b2, 0x115b5, 4], [0x115bc, 0x115bd, 4], [0x115bf, 0x115c0, 4],
244
+ [0x115dc, 0x115dd, 4], [0x11633, 0x1163a, 4], [0x1163d, 0x1163d, 4], [0x1163f, 0x11640, 4], [0x116ab, 0x116ab, 4],
245
+ [0x116ad, 0x116ad, 4], [0x116b0, 0x116b5, 4], [0x116b7, 0x116b7, 4], [0x1171d, 0x1171d, 4], [0x1171f, 0x1171f, 4],
246
+ [0x11722, 0x11725, 4], [0x11727, 0x1172b, 4], [0x1182f, 0x11837, 4], [0x11839, 0x1183a, 4], [0x1193b, 0x1193c, 4],
247
+ [0x1193e, 0x1193e, 4], [0x11943, 0x11943, 4], [0x119d4, 0x119d7, 4], [0x119da, 0x119db, 4], [0x119e0, 0x119e0, 4],
248
+ [0x11a01, 0x11a0a, 4], [0x11a33, 0x11a38, 4], [0x11a3b, 0x11a3e, 4], [0x11a47, 0x11a47, 4], [0x11a51, 0x11a56, 4],
249
+ [0x11a59, 0x11a5b, 4], [0x11a8a, 0x11a96, 4], [0x11a98, 0x11a99, 4], [0x11b60, 0x11b60, 4], [0x11b62, 0x11b64, 4],
250
+ [0x11b66, 0x11b66, 4], [0x11c30, 0x11c36, 4], [0x11c38, 0x11c3d, 4], [0x11c3f, 0x11c3f, 4], [0x11c92, 0x11ca7, 4],
251
+ [0x11caa, 0x11cb0, 4], [0x11cb2, 0x11cb3, 4], [0x11cb5, 0x11cb6, 4], [0x11d31, 0x11d36, 4], [0x11d3a, 0x11d3a, 4],
252
+ [0x11d3c, 0x11d3d, 4], [0x11d3f, 0x11d45, 4], [0x11d47, 0x11d47, 4], [0x11d90, 0x11d91, 4], [0x11d95, 0x11d95, 4],
253
+ [0x11d97, 0x11d97, 4], [0x11ef3, 0x11ef4, 4], [0x11f00, 0x11f01, 4], [0x11f36, 0x11f3a, 4], [0x11f40, 0x11f40, 4],
254
+ [0x11f42, 0x11f42, 4], [0x11f5a, 0x11f5a, 4], [0x13430, 0x13440, 4], [0x13447, 0x13455, 4], [0x1611e, 0x16129, 4],
255
+ [0x1612d, 0x1612f, 4], [0x16af0, 0x16af4, 4], [0x16b30, 0x16b36, 4], [0x16f4f, 0x16f4f, 4], [0x16f8f, 0x16f92, 4],
256
+ [0x16fe4, 0x16fe4, 4], [0x1bc9d, 0x1bc9e, 4], [0x1bca0, 0x1bca3, 4], [0x1cf00, 0x1cf2d, 4], [0x1cf30, 0x1cf46, 4],
257
+ [0x1d167, 0x1d169, 4], [0x1d173, 0x1d182, 4], [0x1d185, 0x1d18b, 4], [0x1d1aa, 0x1d1ad, 4], [0x1d242, 0x1d244, 4],
258
+ [0x1da00, 0x1da36, 4], [0x1da3b, 0x1da6c, 4], [0x1da75, 0x1da75, 4], [0x1da84, 0x1da84, 4], [0x1da9b, 0x1da9f, 4],
259
+ [0x1daa1, 0x1daaf, 4], [0x1e000, 0x1e006, 4], [0x1e008, 0x1e018, 4], [0x1e01b, 0x1e021, 4], [0x1e023, 0x1e024, 4],
260
+ [0x1e026, 0x1e02a, 4], [0x1e08f, 0x1e08f, 4], [0x1e130, 0x1e136, 4], [0x1e2ae, 0x1e2ae, 4], [0x1e2ec, 0x1e2ef, 4],
261
+ [0x1e4ec, 0x1e4ef, 4], [0x1e5ee, 0x1e5ef, 4], [0x1e6e3, 0x1e6e3, 4], [0x1e6e6, 0x1e6e6, 4], [0x1e6ee, 0x1e6ef, 4],
262
+ [0x1e6f5, 0x1e6f5, 4], [0x1e8d0, 0x1e8d6, 4], [0x1e900, 0x1e943, 2], [0x1e944, 0x1e94b, 4], [0xe0001, 0xe0001, 4],
263
+ [0xe0020, 0xe007f, 4], [0xe0100, 0xe01ef, 4],
264
+ ];
265
+ // Every paired bracket as [opening, closing].
266
+ export const BRACKET_PAIRS = [
267
+ [0x28, 0x29], [0x5b, 0x5d], [0x7b, 0x7d], [0xf3a, 0xf3b], [0xf3c, 0xf3d], [0x169b, 0x169c], [0x2045, 0x2046],
268
+ [0x207d, 0x207e], [0x208d, 0x208e], [0x2308, 0x2309], [0x230a, 0x230b], [0x2329, 0x232a], [0x2768, 0x2769],
269
+ [0x276a, 0x276b], [0x276c, 0x276d], [0x276e, 0x276f], [0x2770, 0x2771], [0x2772, 0x2773], [0x2774, 0x2775],
270
+ [0x27c5, 0x27c6], [0x27e6, 0x27e7], [0x27e8, 0x27e9], [0x27ea, 0x27eb], [0x27ec, 0x27ed], [0x27ee, 0x27ef],
271
+ [0x2983, 0x2984], [0x2985, 0x2986], [0x2987, 0x2988], [0x2989, 0x298a], [0x298b, 0x298c], [0x298d, 0x2990],
272
+ [0x298f, 0x298e], [0x2991, 0x2992], [0x2993, 0x2994], [0x2995, 0x2996], [0x2997, 0x2998], [0x29d8, 0x29d9],
273
+ [0x29da, 0x29db], [0x29fc, 0x29fd], [0x2e22, 0x2e23], [0x2e24, 0x2e25], [0x2e26, 0x2e27], [0x2e28, 0x2e29],
274
+ [0x2e55, 0x2e56], [0x2e57, 0x2e58], [0x2e59, 0x2e5a], [0x2e5b, 0x2e5c], [0x3008, 0x3009], [0x300a, 0x300b],
275
+ [0x300c, 0x300d], [0x300e, 0x300f], [0x3010, 0x3011], [0x3014, 0x3015], [0x3016, 0x3017], [0x3018, 0x3019],
276
+ [0x301a, 0x301b], [0xfe59, 0xfe5a], [0xfe5b, 0xfe5c], [0xfe5d, 0xfe5e], [0xff08, 0xff09], [0xff3b, 0xff3d],
277
+ [0xff5b, 0xff5d], [0xff5f, 0xff60], [0xff62, 0xff63],
278
+ ];
279
+ // Every Bidi_Mirroring_Glyph as [code point, its mirror].
280
+ export const MIRRORS = [
281
+ [0x28, 0x29], [0x29, 0x28], [0x3c, 0x3e], [0x3e, 0x3c], [0x5b, 0x5d], [0x5d, 0x5b], [0x7b, 0x7d], [0x7d, 0x7b],
282
+ [0xab, 0xbb], [0xbb, 0xab], [0xf3a, 0xf3b], [0xf3b, 0xf3a], [0xf3c, 0xf3d], [0xf3d, 0xf3c], [0x169b, 0x169c],
283
+ [0x169c, 0x169b], [0x2039, 0x203a], [0x203a, 0x2039], [0x2045, 0x2046], [0x2046, 0x2045], [0x207d, 0x207e],
284
+ [0x207e, 0x207d], [0x208d, 0x208e], [0x208e, 0x208d], [0x2208, 0x220b], [0x2209, 0x220c], [0x220a, 0x220d],
285
+ [0x220b, 0x2208], [0x220c, 0x2209], [0x220d, 0x220a], [0x2215, 0x29f5], [0x221f, 0x2bfe], [0x2220, 0x29a3],
286
+ [0x2221, 0x299b], [0x2222, 0x29a0], [0x2224, 0x2aee], [0x223c, 0x223d], [0x223d, 0x223c], [0x2243, 0x22cd],
287
+ [0x2245, 0x224c], [0x224c, 0x2245], [0x2252, 0x2253], [0x2253, 0x2252], [0x2254, 0x2255], [0x2255, 0x2254],
288
+ [0x2264, 0x2265], [0x2265, 0x2264], [0x2266, 0x2267], [0x2267, 0x2266], [0x2268, 0x2269], [0x2269, 0x2268],
289
+ [0x226a, 0x226b], [0x226b, 0x226a], [0x226e, 0x226f], [0x226f, 0x226e], [0x2270, 0x2271], [0x2271, 0x2270],
290
+ [0x2272, 0x2273], [0x2273, 0x2272], [0x2274, 0x2275], [0x2275, 0x2274], [0x2276, 0x2277], [0x2277, 0x2276],
291
+ [0x2278, 0x2279], [0x2279, 0x2278], [0x227a, 0x227b], [0x227b, 0x227a], [0x227c, 0x227d], [0x227d, 0x227c],
292
+ [0x227e, 0x227f], [0x227f, 0x227e], [0x2280, 0x2281], [0x2281, 0x2280], [0x2282, 0x2283], [0x2283, 0x2282],
293
+ [0x2284, 0x2285], [0x2285, 0x2284], [0x2286, 0x2287], [0x2287, 0x2286], [0x2288, 0x2289], [0x2289, 0x2288],
294
+ [0x228a, 0x228b], [0x228b, 0x228a], [0x228f, 0x2290], [0x2290, 0x228f], [0x2291, 0x2292], [0x2292, 0x2291],
295
+ [0x2298, 0x29b8], [0x22a2, 0x22a3], [0x22a3, 0x22a2], [0x22a6, 0x2ade], [0x22a8, 0x2ae4], [0x22a9, 0x2ae3],
296
+ [0x22ab, 0x2ae5], [0x22b0, 0x22b1], [0x22b1, 0x22b0], [0x22b2, 0x22b3], [0x22b3, 0x22b2], [0x22b4, 0x22b5],
297
+ [0x22b5, 0x22b4], [0x22b6, 0x22b7], [0x22b7, 0x22b6], [0x22b8, 0x27dc], [0x22c9, 0x22ca], [0x22ca, 0x22c9],
298
+ [0x22cb, 0x22cc], [0x22cc, 0x22cb], [0x22cd, 0x2243], [0x22d0, 0x22d1], [0x22d1, 0x22d0], [0x22d6, 0x22d7],
299
+ [0x22d7, 0x22d6], [0x22d8, 0x22d9], [0x22d9, 0x22d8], [0x22da, 0x22db], [0x22db, 0x22da], [0x22dc, 0x22dd],
300
+ [0x22dd, 0x22dc], [0x22de, 0x22df], [0x22df, 0x22de], [0x22e0, 0x22e1], [0x22e1, 0x22e0], [0x22e2, 0x22e3],
301
+ [0x22e3, 0x22e2], [0x22e4, 0x22e5], [0x22e5, 0x22e4], [0x22e6, 0x22e7], [0x22e7, 0x22e6], [0x22e8, 0x22e9],
302
+ [0x22e9, 0x22e8], [0x22ea, 0x22eb], [0x22eb, 0x22ea], [0x22ec, 0x22ed], [0x22ed, 0x22ec], [0x22f0, 0x22f1],
303
+ [0x22f1, 0x22f0], [0x22f2, 0x22fa], [0x22f3, 0x22fb], [0x22f4, 0x22fc], [0x22f6, 0x22fd], [0x22f7, 0x22fe],
304
+ [0x22fa, 0x22f2], [0x22fb, 0x22f3], [0x22fc, 0x22f4], [0x22fd, 0x22f6], [0x22fe, 0x22f7], [0x2308, 0x2309],
305
+ [0x2309, 0x2308], [0x230a, 0x230b], [0x230b, 0x230a], [0x2329, 0x232a], [0x232a, 0x2329], [0x2768, 0x2769],
306
+ [0x2769, 0x2768], [0x276a, 0x276b], [0x276b, 0x276a], [0x276c, 0x276d], [0x276d, 0x276c], [0x276e, 0x276f],
307
+ [0x276f, 0x276e], [0x2770, 0x2771], [0x2771, 0x2770], [0x2772, 0x2773], [0x2773, 0x2772], [0x2774, 0x2775],
308
+ [0x2775, 0x2774], [0x27c3, 0x27c4], [0x27c4, 0x27c3], [0x27c5, 0x27c6], [0x27c6, 0x27c5], [0x27c8, 0x27c9],
309
+ [0x27c9, 0x27c8], [0x27cb, 0x27cd], [0x27cd, 0x27cb], [0x27d5, 0x27d6], [0x27d6, 0x27d5], [0x27dc, 0x22b8],
310
+ [0x27dd, 0x27de], [0x27de, 0x27dd], [0x27e2, 0x27e3], [0x27e3, 0x27e2], [0x27e4, 0x27e5], [0x27e5, 0x27e4],
311
+ [0x27e6, 0x27e7], [0x27e7, 0x27e6], [0x27e8, 0x27e9], [0x27e9, 0x27e8], [0x27ea, 0x27eb], [0x27eb, 0x27ea],
312
+ [0x27ec, 0x27ed], [0x27ed, 0x27ec], [0x27ee, 0x27ef], [0x27ef, 0x27ee], [0x2983, 0x2984], [0x2984, 0x2983],
313
+ [0x2985, 0x2986], [0x2986, 0x2985], [0x2987, 0x2988], [0x2988, 0x2987], [0x2989, 0x298a], [0x298a, 0x2989],
314
+ [0x298b, 0x298c], [0x298c, 0x298b], [0x298d, 0x2990], [0x298e, 0x298f], [0x298f, 0x298e], [0x2990, 0x298d],
315
+ [0x2991, 0x2992], [0x2992, 0x2991], [0x2993, 0x2994], [0x2994, 0x2993], [0x2995, 0x2996], [0x2996, 0x2995],
316
+ [0x2997, 0x2998], [0x2998, 0x2997], [0x299b, 0x2221], [0x29a0, 0x2222], [0x29a3, 0x2220], [0x29a4, 0x29a5],
317
+ [0x29a5, 0x29a4], [0x29a8, 0x29a9], [0x29a9, 0x29a8], [0x29aa, 0x29ab], [0x29ab, 0x29aa], [0x29ac, 0x29ad],
318
+ [0x29ad, 0x29ac], [0x29ae, 0x29af], [0x29af, 0x29ae], [0x29b8, 0x2298], [0x29c0, 0x29c1], [0x29c1, 0x29c0],
319
+ [0x29c4, 0x29c5], [0x29c5, 0x29c4], [0x29cf, 0x29d0], [0x29d0, 0x29cf], [0x29d1, 0x29d2], [0x29d2, 0x29d1],
320
+ [0x29d4, 0x29d5], [0x29d5, 0x29d4], [0x29d8, 0x29d9], [0x29d9, 0x29d8], [0x29da, 0x29db], [0x29db, 0x29da],
321
+ [0x29e8, 0x29e9], [0x29e9, 0x29e8], [0x29f5, 0x2215], [0x29f8, 0x29f9], [0x29f9, 0x29f8], [0x29fc, 0x29fd],
322
+ [0x29fd, 0x29fc], [0x2a2b, 0x2a2c], [0x2a2c, 0x2a2b], [0x2a2d, 0x2a2e], [0x2a2e, 0x2a2d], [0x2a34, 0x2a35],
323
+ [0x2a35, 0x2a34], [0x2a3c, 0x2a3d], [0x2a3d, 0x2a3c], [0x2a64, 0x2a65], [0x2a65, 0x2a64], [0x2a79, 0x2a7a],
324
+ [0x2a7a, 0x2a79], [0x2a7b, 0x2a7c], [0x2a7c, 0x2a7b], [0x2a7d, 0x2a7e], [0x2a7e, 0x2a7d], [0x2a7f, 0x2a80],
325
+ [0x2a80, 0x2a7f], [0x2a81, 0x2a82], [0x2a82, 0x2a81], [0x2a83, 0x2a84], [0x2a84, 0x2a83], [0x2a85, 0x2a86],
326
+ [0x2a86, 0x2a85], [0x2a87, 0x2a88], [0x2a88, 0x2a87], [0x2a89, 0x2a8a], [0x2a8a, 0x2a89], [0x2a8b, 0x2a8c],
327
+ [0x2a8c, 0x2a8b], [0x2a8d, 0x2a8e], [0x2a8e, 0x2a8d], [0x2a8f, 0x2a90], [0x2a90, 0x2a8f], [0x2a91, 0x2a92],
328
+ [0x2a92, 0x2a91], [0x2a93, 0x2a94], [0x2a94, 0x2a93], [0x2a95, 0x2a96], [0x2a96, 0x2a95], [0x2a97, 0x2a98],
329
+ [0x2a98, 0x2a97], [0x2a99, 0x2a9a], [0x2a9a, 0x2a99], [0x2a9b, 0x2a9c], [0x2a9c, 0x2a9b], [0x2a9d, 0x2a9e],
330
+ [0x2a9e, 0x2a9d], [0x2a9f, 0x2aa0], [0x2aa0, 0x2a9f], [0x2aa1, 0x2aa2], [0x2aa2, 0x2aa1], [0x2aa6, 0x2aa7],
331
+ [0x2aa7, 0x2aa6], [0x2aa8, 0x2aa9], [0x2aa9, 0x2aa8], [0x2aaa, 0x2aab], [0x2aab, 0x2aaa], [0x2aac, 0x2aad],
332
+ [0x2aad, 0x2aac], [0x2aaf, 0x2ab0], [0x2ab0, 0x2aaf], [0x2ab1, 0x2ab2], [0x2ab2, 0x2ab1], [0x2ab3, 0x2ab4],
333
+ [0x2ab4, 0x2ab3], [0x2ab5, 0x2ab6], [0x2ab6, 0x2ab5], [0x2ab7, 0x2ab8], [0x2ab8, 0x2ab7], [0x2ab9, 0x2aba],
334
+ [0x2aba, 0x2ab9], [0x2abb, 0x2abc], [0x2abc, 0x2abb], [0x2abd, 0x2abe], [0x2abe, 0x2abd], [0x2abf, 0x2ac0],
335
+ [0x2ac0, 0x2abf], [0x2ac1, 0x2ac2], [0x2ac2, 0x2ac1], [0x2ac3, 0x2ac4], [0x2ac4, 0x2ac3], [0x2ac5, 0x2ac6],
336
+ [0x2ac6, 0x2ac5], [0x2ac7, 0x2ac8], [0x2ac8, 0x2ac7], [0x2ac9, 0x2aca], [0x2aca, 0x2ac9], [0x2acb, 0x2acc],
337
+ [0x2acc, 0x2acb], [0x2acd, 0x2ace], [0x2ace, 0x2acd], [0x2acf, 0x2ad0], [0x2ad0, 0x2acf], [0x2ad1, 0x2ad2],
338
+ [0x2ad2, 0x2ad1], [0x2ad3, 0x2ad4], [0x2ad4, 0x2ad3], [0x2ad5, 0x2ad6], [0x2ad6, 0x2ad5], [0x2ade, 0x22a6],
339
+ [0x2ae3, 0x22a9], [0x2ae4, 0x22a8], [0x2ae5, 0x22ab], [0x2aec, 0x2aed], [0x2aed, 0x2aec], [0x2aee, 0x2224],
340
+ [0x2af7, 0x2af8], [0x2af8, 0x2af7], [0x2af9, 0x2afa], [0x2afa, 0x2af9], [0x2bfe, 0x221f], [0x2e02, 0x2e03],
341
+ [0x2e03, 0x2e02], [0x2e04, 0x2e05], [0x2e05, 0x2e04], [0x2e09, 0x2e0a], [0x2e0a, 0x2e09], [0x2e0c, 0x2e0d],
342
+ [0x2e0d, 0x2e0c], [0x2e1c, 0x2e1d], [0x2e1d, 0x2e1c], [0x2e20, 0x2e21], [0x2e21, 0x2e20], [0x2e22, 0x2e23],
343
+ [0x2e23, 0x2e22], [0x2e24, 0x2e25], [0x2e25, 0x2e24], [0x2e26, 0x2e27], [0x2e27, 0x2e26], [0x2e28, 0x2e29],
344
+ [0x2e29, 0x2e28], [0x2e55, 0x2e56], [0x2e56, 0x2e55], [0x2e57, 0x2e58], [0x2e58, 0x2e57], [0x2e59, 0x2e5a],
345
+ [0x2e5a, 0x2e59], [0x2e5b, 0x2e5c], [0x2e5c, 0x2e5b], [0x3008, 0x3009], [0x3009, 0x3008], [0x300a, 0x300b],
346
+ [0x300b, 0x300a], [0x300c, 0x300d], [0x300d, 0x300c], [0x300e, 0x300f], [0x300f, 0x300e], [0x3010, 0x3011],
347
+ [0x3011, 0x3010], [0x3014, 0x3015], [0x3015, 0x3014], [0x3016, 0x3017], [0x3017, 0x3016], [0x3018, 0x3019],
348
+ [0x3019, 0x3018], [0x301a, 0x301b], [0x301b, 0x301a], [0xfe59, 0xfe5a], [0xfe5a, 0xfe59], [0xfe5b, 0xfe5c],
349
+ [0xfe5c, 0xfe5b], [0xfe5d, 0xfe5e], [0xfe5e, 0xfe5d], [0xfe64, 0xfe65], [0xfe65, 0xfe64], [0xff08, 0xff09],
350
+ [0xff09, 0xff08], [0xff1c, 0xff1e], [0xff1e, 0xff1c], [0xff3b, 0xff3d], [0xff3d, 0xff3b], [0xff5b, 0xff5d],
351
+ [0xff5d, 0xff5b], [0xff5f, 0xff60], [0xff60, 0xff5f], [0xff62, 0xff63], [0xff63, 0xff62],
352
+ ];
353
+ // Every letter with a presentation form, as [letter, isolated, final, initial, medial]; 0 is none encoded.
354
+ export const PRESENTATION_FORMS = [
355
+ [0x621, 0xfe80, 0, 0, 0], [0x622, 0xfe81, 0xfe82, 0, 0], [0x623, 0xfe83, 0xfe84, 0, 0],
356
+ [0x624, 0xfe85, 0xfe86, 0, 0], [0x625, 0xfe87, 0xfe88, 0, 0], [0x626, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c],
357
+ [0x627, 0xfe8d, 0xfe8e, 0, 0], [0x628, 0xfe8f, 0xfe90, 0xfe91, 0xfe92], [0x629, 0xfe93, 0xfe94, 0, 0],
358
+ [0x62a, 0xfe95, 0xfe96, 0xfe97, 0xfe98], [0x62b, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c],
359
+ [0x62c, 0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], [0x62d, 0xfea1, 0xfea2, 0xfea3, 0xfea4],
360
+ [0x62e, 0xfea5, 0xfea6, 0xfea7, 0xfea8], [0x62f, 0xfea9, 0xfeaa, 0, 0], [0x630, 0xfeab, 0xfeac, 0, 0],
361
+ [0x631, 0xfead, 0xfeae, 0, 0], [0x632, 0xfeaf, 0xfeb0, 0, 0], [0x633, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4],
362
+ [0x634, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], [0x635, 0xfeb9, 0xfeba, 0xfebb, 0xfebc],
363
+ [0x636, 0xfebd, 0xfebe, 0xfebf, 0xfec0], [0x637, 0xfec1, 0xfec2, 0xfec3, 0xfec4],
364
+ [0x638, 0xfec5, 0xfec6, 0xfec7, 0xfec8], [0x639, 0xfec9, 0xfeca, 0xfecb, 0xfecc],
365
+ [0x63a, 0xfecd, 0xfece, 0xfecf, 0xfed0], [0x641, 0xfed1, 0xfed2, 0xfed3, 0xfed4],
366
+ [0x642, 0xfed5, 0xfed6, 0xfed7, 0xfed8], [0x643, 0xfed9, 0xfeda, 0xfedb, 0xfedc],
367
+ [0x644, 0xfedd, 0xfede, 0xfedf, 0xfee0], [0x645, 0xfee1, 0xfee2, 0xfee3, 0xfee4],
368
+ [0x646, 0xfee5, 0xfee6, 0xfee7, 0xfee8], [0x647, 0xfee9, 0xfeea, 0xfeeb, 0xfeec], [0x648, 0xfeed, 0xfeee, 0, 0],
369
+ [0x649, 0xfeef, 0xfef0, 0xfbe8, 0xfbe9], [0x64a, 0xfef1, 0xfef2, 0xfef3, 0xfef4], [0x671, 0xfb50, 0xfb51, 0, 0],
370
+ [0x677, 0xfbdd, 0, 0, 0], [0x679, 0xfb66, 0xfb67, 0xfb68, 0xfb69], [0x67a, 0xfb5e, 0xfb5f, 0xfb60, 0xfb61],
371
+ [0x67b, 0xfb52, 0xfb53, 0xfb54, 0xfb55], [0x67e, 0xfb56, 0xfb57, 0xfb58, 0xfb59],
372
+ [0x67f, 0xfb62, 0xfb63, 0xfb64, 0xfb65], [0x680, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d],
373
+ [0x683, 0xfb76, 0xfb77, 0xfb78, 0xfb79], [0x684, 0xfb72, 0xfb73, 0xfb74, 0xfb75],
374
+ [0x686, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], [0x687, 0xfb7e, 0xfb7f, 0xfb80, 0xfb81], [0x688, 0xfb88, 0xfb89, 0, 0],
375
+ [0x68c, 0xfb84, 0xfb85, 0, 0], [0x68d, 0xfb82, 0xfb83, 0, 0], [0x68e, 0xfb86, 0xfb87, 0, 0],
376
+ [0x691, 0xfb8c, 0xfb8d, 0, 0], [0x698, 0xfb8a, 0xfb8b, 0, 0], [0x6a4, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d],
377
+ [0x6a6, 0xfb6e, 0xfb6f, 0xfb70, 0xfb71], [0x6a9, 0xfb8e, 0xfb8f, 0xfb90, 0xfb91],
378
+ [0x6ad, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], [0x6af, 0xfb92, 0xfb93, 0xfb94, 0xfb95],
379
+ [0x6b1, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], [0x6b3, 0xfb96, 0xfb97, 0xfb98, 0xfb99], [0x6ba, 0xfb9e, 0xfb9f, 0, 0],
380
+ [0x6bb, 0xfba0, 0xfba1, 0xfba2, 0xfba3], [0x6be, 0xfbaa, 0xfbab, 0xfbac, 0xfbad], [0x6c0, 0xfba4, 0xfba5, 0, 0],
381
+ [0x6c1, 0xfba6, 0xfba7, 0xfba8, 0xfba9], [0x6c5, 0xfbe0, 0xfbe1, 0, 0], [0x6c6, 0xfbd9, 0xfbda, 0, 0],
382
+ [0x6c7, 0xfbd7, 0xfbd8, 0, 0], [0x6c8, 0xfbdb, 0xfbdc, 0, 0], [0x6c9, 0xfbe2, 0xfbe3, 0, 0],
383
+ [0x6cb, 0xfbde, 0xfbdf, 0, 0], [0x6cc, 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], [0x6d0, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7],
384
+ [0x6d2, 0xfbae, 0xfbaf, 0, 0], [0x6d3, 0xfbb0, 0xfbb1, 0, 0],
385
+ ];
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The Unicode Bidirectional Algorithm (UAX #9): the embedding level of every
3
+ * character of a paragraph, and the visual order of a line of them.
4
+ *
5
+ * Levels are resolved over a whole paragraph and reordered a line at a time,
6
+ * because rules L1 and L2 run after line breaking (UAX #9 section 3.4). So a
7
+ * caller resolves first, cuts however it cuts, and asks for each piece's order
8
+ * with the levels it took along. Rule numbers below are the standard's.
9
+ *
10
+ * Levels index UTF-16 code units, as every offset into a JavaScript string does;
11
+ * both units of a surrogate pair carry one level. `REMOVED` is rule X9: a
12
+ * character the algorithm takes out of the text, which has no level.
13
+ */
14
+ import type { ParagraphLevel } from "./text-order.js";
15
+ export type { ParagraphLevel } from "./text-order.js";
16
+ /** The level of a character rule X9 removes. */
17
+ export declare const REMOVED = -1;
18
+ export interface Paragraph {
19
+ readonly level: ParagraphLevel;
20
+ /** One level per code unit of the text, `REMOVED` for what X9 removes. */
21
+ readonly levels: readonly number[];
22
+ }
23
+ /** `codePoint`'s Bidi_Mirroring_Glyph, or itself. */
24
+ export declare function mirrored(codePoint: number): number;
25
+ export declare const EXPLICIT: import("./pattern.js").Pattern;
26
+ /** `text` with every explicit formatting character gone. */
27
+ export declare function withoutExplicit(text: string): string;
28
+ /** `text` as data on show: what the wire would drop, and every explicit control, spelled by `escape`. */
29
+ export declare function escaped(text: string, escape: (character: string) => string): string;
30
+ /** `text` with LRM, RLM and ALM gone. */
31
+ export declare function withoutMarks(text: string): string;
32
+ /** The openers in force, outermost first, and how many are isolates, so an unmatched PDI costs no scan of them. */
33
+ export interface Open {
34
+ readonly stack: string[];
35
+ isolates: number;
36
+ }
37
+ /** `openers` in force, as a row's start states them. */
38
+ export declare function opened(openers?: string): Open;
39
+ /**
40
+ * `character` applied to `open`, the openers in force, outermost first: an
41
+ * opener joins them, a closer takes what it closes, and a line feed ends them
42
+ * all, as X8 does at a paragraph's end. A line is the paragraph here, so U+2029
43
+ * ends nothing: `paragraph` resolves it inside the line that holds it. False for
44
+ * a closer that matches nothing, which closes nothing: PDF closes an embedding
45
+ * opened since the innermost isolate, and PDI the innermost isolate with every
46
+ * embedding inside it.
47
+ */
48
+ export declare function advance(open: Open, character: string): boolean;
49
+ /** The openers `text` leaves open at its end, outermost first. */
50
+ export declare function openersOf(text: string): string;
51
+ /**
52
+ * What reopens `text`'s state at an offset: read forwards, since rows ask in
53
+ * order, and from the start again for one behind. An opener past `MAX_DEPTH` is
54
+ * one the algorithm ignores, so no row repeats it, or a hostile line's every row
55
+ * would carry them all. An explicit control is one code unit, so offsets need no
56
+ * care for surrogates.
57
+ */
58
+ export declare function openersAlong(text: string): (offset: number) => string;
59
+ /** What closes `openers`, innermost first. */
60
+ export declare function closersOf(openers: string): string;
61
+ /** What closes the direction state `content` leaves open. */
62
+ export declare function closing(content: string): string;
63
+ /** `content` with the direction state it leaves open closed: separate content starts clean after it. */
64
+ export declare function closed(content: string): string;
65
+ /** Whether `text` needs the algorithm at all. */
66
+ export declare function isBidi(text: string): boolean;
67
+ /**
68
+ * `text`, one paragraph, resolved to rule I2. `direction` is rule HL1: a
69
+ * paragraph direction stated rather than found. Absent, P2 and P3 find it.
70
+ */
71
+ /** P2 and P3 alone: `text`'s paragraph level, for a caller that resolves nothing else. */
72
+ export declare function paragraphLevel(text: string): ParagraphLevel;
73
+ export declare function paragraph(text: string, direction?: ParagraphLevel): Paragraph;
74
+ /** L1: the levels of one line, its separators and trailing whitespace back at the paragraph level. */
75
+ export declare function lineLevels(line: string, levels: readonly number[], paragraphLevel: ParagraphLevel): number[];
76
+ /** L2: the indexes of `levels` in visual order, what X9 removed left out. */
77
+ export declare function visualOrder(levels: readonly number[]): number[];
78
+ /**
79
+ * Arabic joining on one row's grapheme clusters, in logical order and in place:
80
+ * each letter takes the presentation form its neighbours call for, because a
81
+ * terminal that does not reorder does not join either. A presentation form is
82
+ * one cell, as the letter was, so no width moves. Lam-alef stays two forms rather
83
+ * than the one-cell ligature, as VTE leaves it, since the ligature would narrow
84
+ * a line after it was laid out. A letter Unicode encodes no such form for stays a
85
+ * base letter. A joiner beside a shaped letter goes, its effect carried by the
86
+ * form; any other joiner, an emoji sequence's among them, stays or `cellLen`
87
+ * would change after the cut.
88
+ */
89
+ export declare function shaped(clusters: readonly string[]): string[];