postext 1.14.0 → 1.15.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 (489) hide show
  1. package/dist/__tests__/arabic/blockLanguageDigits.test.d.ts +2 -0
  2. package/dist/__tests__/arabic/blockLanguageDigits.test.d.ts.map +1 -0
  3. package/dist/__tests__/arabic/blockLanguageDigits.test.js +54 -0
  4. package/dist/__tests__/arabic/blockLanguageDigits.test.js.map +1 -0
  5. package/dist/__tests__/arabic/emphasis.test.d.ts +2 -0
  6. package/dist/__tests__/arabic/emphasis.test.d.ts.map +1 -0
  7. package/dist/__tests__/arabic/emphasis.test.js +206 -0
  8. package/dist/__tests__/arabic/emphasis.test.js.map +1 -0
  9. package/dist/__tests__/arabic/footnotes.test.d.ts +2 -0
  10. package/dist/__tests__/arabic/footnotes.test.d.ts.map +1 -0
  11. package/dist/__tests__/arabic/footnotes.test.js +118 -0
  12. package/dist/__tests__/arabic/footnotes.test.js.map +1 -0
  13. package/dist/__tests__/arabic/harakat.test.d.ts +2 -0
  14. package/dist/__tests__/arabic/harakat.test.d.ts.map +1 -0
  15. package/dist/__tests__/arabic/harakat.test.js +167 -0
  16. package/dist/__tests__/arabic/harakat.test.js.map +1 -0
  17. package/dist/__tests__/arabic/ornateBrackets.test.d.ts +2 -0
  18. package/dist/__tests__/arabic/ornateBrackets.test.d.ts.map +1 -0
  19. package/dist/__tests__/arabic/ornateBrackets.test.js +71 -0
  20. package/dist/__tests__/arabic/ornateBrackets.test.js.map +1 -0
  21. package/dist/__tests__/arabic/tashkil.test.d.ts +2 -0
  22. package/dist/__tests__/arabic/tashkil.test.d.ts.map +1 -0
  23. package/dist/__tests__/arabic/tashkil.test.js +106 -0
  24. package/dist/__tests__/arabic/tashkil.test.js.map +1 -0
  25. package/dist/__tests__/arabicLocale.test.d.ts +2 -0
  26. package/dist/__tests__/arabicLocale.test.d.ts.map +1 -0
  27. package/dist/__tests__/arabicLocale.test.js +232 -0
  28. package/dist/__tests__/arabicLocale.test.js.map +1 -0
  29. package/dist/__tests__/arabicNumberWords.test.d.ts +2 -0
  30. package/dist/__tests__/arabicNumberWords.test.d.ts.map +1 -0
  31. package/dist/__tests__/arabicNumberWords.test.js +176 -0
  32. package/dist/__tests__/arabicNumberWords.test.js.map +1 -0
  33. package/dist/__tests__/arabicNumbering.test.d.ts +2 -0
  34. package/dist/__tests__/arabicNumbering.test.d.ts.map +1 -0
  35. package/dist/__tests__/arabicNumbering.test.js +257 -0
  36. package/dist/__tests__/arabicNumbering.test.js.map +1 -0
  37. package/dist/__tests__/arabicWords.test.d.ts +2 -0
  38. package/dist/__tests__/arabicWords.test.d.ts.map +1 -0
  39. package/dist/__tests__/arabicWords.test.js +302 -0
  40. package/dist/__tests__/arabicWords.test.js.map +1 -0
  41. package/dist/__tests__/bidi.test.d.ts +2 -0
  42. package/dist/__tests__/bidi.test.d.ts.map +1 -0
  43. package/dist/__tests__/bidi.test.js +282 -0
  44. package/dist/__tests__/bidi.test.js.map +1 -0
  45. package/dist/__tests__/blockHints.test.d.ts +2 -0
  46. package/dist/__tests__/blockHints.test.d.ts.map +1 -0
  47. package/dist/__tests__/blockHints.test.js +79 -0
  48. package/dist/__tests__/blockHints.test.js.map +1 -0
  49. package/dist/__tests__/chineseLocale.test.js +2 -2
  50. package/dist/__tests__/chineseLocale.test.js.map +1 -1
  51. package/dist/__tests__/cjk/grid.test.js +2 -2
  52. package/dist/__tests__/cjk/grid.test.js.map +1 -1
  53. package/dist/__tests__/cjk/justifyRender.test.js +2 -1
  54. package/dist/__tests__/cjk/justifyRender.test.js.map +1 -1
  55. package/dist/__tests__/defaults/folio.test.js +16 -1
  56. package/dist/__tests__/defaults/folio.test.js.map +1 -1
  57. package/dist/__tests__/direction.test.d.ts +2 -0
  58. package/dist/__tests__/direction.test.d.ts.map +1 -0
  59. package/dist/__tests__/direction.test.js +117 -0
  60. package/dist/__tests__/direction.test.js.map +1 -0
  61. package/dist/__tests__/exports.test.js +29 -0
  62. package/dist/__tests__/exports.test.js.map +1 -1
  63. package/dist/__tests__/headingLetterSpacing.test.js +1 -1
  64. package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
  65. package/dist/__tests__/headingNumberPosition.test.d.ts +2 -0
  66. package/dist/__tests__/headingNumberPosition.test.d.ts.map +1 -0
  67. package/dist/__tests__/headingNumberPosition.test.js +87 -0
  68. package/dist/__tests__/headingNumberPosition.test.js.map +1 -0
  69. package/dist/__tests__/htmlCopyText.test.d.ts +2 -0
  70. package/dist/__tests__/htmlCopyText.test.d.ts.map +1 -0
  71. package/dist/__tests__/htmlCopyText.test.js +153 -0
  72. package/dist/__tests__/htmlCopyText.test.js.map +1 -0
  73. package/dist/__tests__/kashida.test.d.ts +2 -0
  74. package/dist/__tests__/kashida.test.d.ts.map +1 -0
  75. package/dist/__tests__/kashida.test.js +281 -0
  76. package/dist/__tests__/kashida.test.js.map +1 -0
  77. package/dist/__tests__/kashidaPatterns.test.d.ts +2 -0
  78. package/dist/__tests__/kashidaPatterns.test.d.ts.map +1 -0
  79. package/dist/__tests__/kashidaPatterns.test.js +143 -0
  80. package/dist/__tests__/kashidaPatterns.test.js.map +1 -0
  81. package/dist/__tests__/links.test.js +3 -1
  82. package/dist/__tests__/links.test.js.map +1 -1
  83. package/dist/__tests__/parse/containers.test.js +1 -1
  84. package/dist/__tests__/parse/containers.test.js.map +1 -1
  85. package/dist/__tests__/rtl/designText.test.d.ts +2 -0
  86. package/dist/__tests__/rtl/designText.test.d.ts.map +1 -0
  87. package/dist/__tests__/rtl/designText.test.js +301 -0
  88. package/dist/__tests__/rtl/designText.test.js.map +1 -0
  89. package/dist/__tests__/rtl/designTextPaint.test.d.ts +2 -0
  90. package/dist/__tests__/rtl/designTextPaint.test.d.ts.map +1 -0
  91. package/dist/__tests__/rtl/designTextPaint.test.js +140 -0
  92. package/dist/__tests__/rtl/designTextPaint.test.js.map +1 -0
  93. package/dist/__tests__/rtl/htmlRtl.test.d.ts +2 -0
  94. package/dist/__tests__/rtl/htmlRtl.test.d.ts.map +1 -0
  95. package/dist/__tests__/rtl/htmlRtl.test.js +175 -0
  96. package/dist/__tests__/rtl/htmlRtl.test.js.map +1 -0
  97. package/dist/__tests__/rtl/mirroredFrame.test.d.ts +2 -0
  98. package/dist/__tests__/rtl/mirroredFrame.test.d.ts.map +1 -0
  99. package/dist/__tests__/rtl/mirroredFrame.test.js +313 -0
  100. package/dist/__tests__/rtl/mirroredFrame.test.js.map +1 -0
  101. package/dist/__tests__/rtl/mirroredPaint.test.d.ts +2 -0
  102. package/dist/__tests__/rtl/mirroredPaint.test.d.ts.map +1 -0
  103. package/dist/__tests__/rtl/mirroredPaint.test.js +116 -0
  104. package/dist/__tests__/rtl/mirroredPaint.test.js.map +1 -0
  105. package/dist/__tests__/rtl/oppositeBlocks.test.d.ts +2 -0
  106. package/dist/__tests__/rtl/oppositeBlocks.test.d.ts.map +1 -0
  107. package/dist/__tests__/rtl/oppositeBlocks.test.js +273 -0
  108. package/dist/__tests__/rtl/oppositeBlocks.test.js.map +1 -0
  109. package/dist/__tests__/rtl/segmentLang.test.d.ts +2 -0
  110. package/dist/__tests__/rtl/segmentLang.test.d.ts.map +1 -0
  111. package/dist/__tests__/rtl/segmentLang.test.js +54 -0
  112. package/dist/__tests__/rtl/segmentLang.test.js.map +1 -0
  113. package/dist/__tests__/rtlLines.test.d.ts +2 -0
  114. package/dist/__tests__/rtlLines.test.d.ts.map +1 -0
  115. package/dist/__tests__/rtlLines.test.js +180 -0
  116. package/dist/__tests__/rtlLines.test.js.map +1 -0
  117. package/dist/__tests__/tocNumberColumn.test.d.ts +2 -0
  118. package/dist/__tests__/tocNumberColumn.test.d.ts.map +1 -0
  119. package/dist/__tests__/tocNumberColumn.test.js +67 -0
  120. package/dist/__tests__/tocNumberColumn.test.js.map +1 -0
  121. package/dist/__tests__/verse.test.d.ts +2 -0
  122. package/dist/__tests__/verse.test.d.ts.map +1 -0
  123. package/dist/__tests__/verse.test.js +232 -0
  124. package/dist/__tests__/verse.test.js.map +1 -0
  125. package/dist/__tests__/vertical/geometry.test.js +2 -2
  126. package/dist/__tests__/vertical/geometry.test.js.map +1 -1
  127. package/dist/__tests__/vertical/htmlTurnedCells.test.js +2 -2
  128. package/dist/__tests__/vertical/htmlTurnedCells.test.js.map +1 -1
  129. package/dist/arabicMarks.d.ts +80 -0
  130. package/dist/arabicMarks.d.ts.map +1 -0
  131. package/dist/arabicMarks.js +267 -0
  132. package/dist/arabicMarks.js.map +1 -0
  133. package/dist/arabicNumberWords.d.ts +43 -0
  134. package/dist/arabicNumberWords.d.ts.map +1 -0
  135. package/dist/arabicNumberWords.js +163 -0
  136. package/dist/arabicNumberWords.js.map +1 -0
  137. package/dist/arabicNumerals.d.ts +54 -0
  138. package/dist/arabicNumerals.d.ts.map +1 -0
  139. package/dist/arabicNumerals.js +143 -0
  140. package/dist/arabicNumerals.js.map +1 -0
  141. package/dist/bidi.d.ts +186 -0
  142. package/dist/bidi.d.ts.map +1 -0
  143. package/dist/bidi.js +851 -0
  144. package/dist/bidi.js.map +1 -0
  145. package/dist/bidiData.d.ts +13 -0
  146. package/dist/bidiData.d.ts.map +1 -0
  147. package/dist/bidiData.js +318 -0
  148. package/dist/bidiData.js.map +1 -0
  149. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  150. package/dist/canvas-backend/blockRender.js +58 -27
  151. package/dist/canvas-backend/blockRender.js.map +1 -1
  152. package/dist/canvas-backend/chip.d.ts.map +1 -1
  153. package/dist/canvas-backend/chip.js +16 -2
  154. package/dist/canvas-backend/chip.js.map +1 -1
  155. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  156. package/dist/canvas-backend/headerFooter.js +7 -3
  157. package/dist/canvas-backend/headerFooter.js.map +1 -1
  158. package/dist/canvas-backend/index.d.ts.map +1 -1
  159. package/dist/canvas-backend/index.js +9 -4
  160. package/dist/canvas-backend/index.js.map +1 -1
  161. package/dist/canvas-backend/mirrorFrame.d.ts +38 -0
  162. package/dist/canvas-backend/mirrorFrame.d.ts.map +1 -0
  163. package/dist/canvas-backend/mirrorFrame.js +129 -0
  164. package/dist/canvas-backend/mirrorFrame.js.map +1 -0
  165. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  166. package/dist/canvas-backend/renderResourceBlock.js +16 -5
  167. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  168. package/dist/canvas-backend/runDirection.d.ts +21 -0
  169. package/dist/canvas-backend/runDirection.d.ts.map +1 -0
  170. package/dist/canvas-backend/runDirection.js +46 -0
  171. package/dist/canvas-backend/runDirection.js.map +1 -0
  172. package/dist/canvas-backend/wordRuns.d.ts +49 -0
  173. package/dist/canvas-backend/wordRuns.d.ts.map +1 -0
  174. package/dist/canvas-backend/wordRuns.js +111 -0
  175. package/dist/canvas-backend/wordRuns.js.map +1 -0
  176. package/dist/columnClip.d.ts +4 -1
  177. package/dist/columnClip.d.ts.map +1 -1
  178. package/dist/columnClip.js +8 -3
  179. package/dist/columnClip.js.map +1 -1
  180. package/dist/configWarnings.d.ts +3 -1
  181. package/dist/configWarnings.d.ts.map +1 -1
  182. package/dist/configWarnings.js +59 -5
  183. package/dist/configWarnings.js.map +1 -1
  184. package/dist/defaults/bodyText.d.ts +28 -6
  185. package/dist/defaults/bodyText.d.ts.map +1 -1
  186. package/dist/defaults/bodyText.js +158 -30
  187. package/dist/defaults/bodyText.js.map +1 -1
  188. package/dist/defaults/calloutStyles.js +1 -1
  189. package/dist/defaults/calloutStyles.js.map +1 -1
  190. package/dist/defaults/captionStyle.js +5 -5
  191. package/dist/defaults/captionStyle.js.map +1 -1
  192. package/dist/defaults/folio.d.ts +4 -0
  193. package/dist/defaults/folio.d.ts.map +1 -1
  194. package/dist/defaults/folio.js +12 -1
  195. package/dist/defaults/folio.js.map +1 -1
  196. package/dist/defaults/footnotes.d.ts.map +1 -1
  197. package/dist/defaults/footnotes.js +12 -2
  198. package/dist/defaults/footnotes.js.map +1 -1
  199. package/dist/defaults/headerFooter.d.ts.map +1 -1
  200. package/dist/defaults/headerFooter.js +1 -0
  201. package/dist/defaults/headerFooter.js.map +1 -1
  202. package/dist/defaults/headingStyles.d.ts.map +1 -1
  203. package/dist/defaults/headingStyles.js +2 -1
  204. package/dist/defaults/headingStyles.js.map +1 -1
  205. package/dist/defaults/headings.d.ts.map +1 -1
  206. package/dist/defaults/headings.js +9 -2
  207. package/dist/defaults/headings.js.map +1 -1
  208. package/dist/defaults/index.d.ts +1 -1
  209. package/dist/defaults/index.d.ts.map +1 -1
  210. package/dist/defaults/index.js +7 -1
  211. package/dist/defaults/index.js.map +1 -1
  212. package/dist/defaults/indexConfig.d.ts +6 -2
  213. package/dist/defaults/indexConfig.d.ts.map +1 -1
  214. package/dist/defaults/indexConfig.js +25 -5
  215. package/dist/defaults/indexConfig.js.map +1 -1
  216. package/dist/defaults/page.d.ts +7 -4
  217. package/dist/defaults/page.d.ts.map +1 -1
  218. package/dist/defaults/page.js +10 -7
  219. package/dist/defaults/page.js.map +1 -1
  220. package/dist/defaults/paragraphStyles.js +2 -2
  221. package/dist/defaults/paragraphStyles.js.map +1 -1
  222. package/dist/defaults/parts.d.ts.map +1 -1
  223. package/dist/defaults/parts.js +2 -1
  224. package/dist/defaults/parts.js.map +1 -1
  225. package/dist/defaults/resourceTypes.d.ts +1 -1
  226. package/dist/defaults/resourceTypes.d.ts.map +1 -1
  227. package/dist/defaults/resourceTypes.js +10 -2
  228. package/dist/defaults/resourceTypes.js.map +1 -1
  229. package/dist/defaults/shared.d.ts +9 -0
  230. package/dist/defaults/shared.d.ts.map +1 -1
  231. package/dist/defaults/shared.js +15 -0
  232. package/dist/defaults/shared.js.map +1 -1
  233. package/dist/defaults/tableStyle.d.ts.map +1 -1
  234. package/dist/defaults/tableStyle.js +5 -1
  235. package/dist/defaults/tableStyle.js.map +1 -1
  236. package/dist/design/bidiText.d.ts +89 -0
  237. package/dist/design/bidiText.d.ts.map +1 -0
  238. package/dist/design/bidiText.js +165 -0
  239. package/dist/design/bidiText.js.map +1 -0
  240. package/dist/design/layout.d.ts +20 -0
  241. package/dist/design/layout.d.ts.map +1 -1
  242. package/dist/design/layout.js +46 -5
  243. package/dist/design/layout.js.map +1 -1
  244. package/dist/design/placeholders.d.ts +7 -1
  245. package/dist/design/placeholders.d.ts.map +1 -1
  246. package/dist/design/placeholders.js +6 -3
  247. package/dist/design/placeholders.js.map +1 -1
  248. package/dist/design/richText.d.ts +5 -2
  249. package/dist/design/richText.d.ts.map +1 -1
  250. package/dist/design/richText.js +35 -2
  251. package/dist/design/richText.js.map +1 -1
  252. package/dist/emphasisOverline.d.ts +27 -0
  253. package/dist/emphasisOverline.d.ts.map +1 -0
  254. package/dist/emphasisOverline.js +107 -0
  255. package/dist/emphasisOverline.js.map +1 -0
  256. package/dist/frontmatter.d.ts +25 -6
  257. package/dist/frontmatter.d.ts.map +1 -1
  258. package/dist/frontmatter.js +51 -10
  259. package/dist/frontmatter.js.map +1 -1
  260. package/dist/html-backend.d.ts +4 -1
  261. package/dist/html-backend.d.ts.map +1 -1
  262. package/dist/html-backend.js +363 -87
  263. package/dist/html-backend.js.map +1 -1
  264. package/dist/hyphenate.d.ts.map +1 -1
  265. package/dist/hyphenate.js +4 -1
  266. package/dist/hyphenate.js.map +1 -1
  267. package/dist/index.d.ts +11 -8
  268. package/dist/index.d.ts.map +1 -1
  269. package/dist/index.js +6 -4
  270. package/dist/index.js.map +1 -1
  271. package/dist/knuthPlass/breakpoints.d.ts.map +1 -1
  272. package/dist/knuthPlass/breakpoints.js +3 -0
  273. package/dist/knuthPlass/breakpoints.js.map +1 -1
  274. package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
  275. package/dist/knuthPlass/pretextAdapter.js +9 -3
  276. package/dist/knuthPlass/pretextAdapter.js.map +1 -1
  277. package/dist/knuthPlass/richAdapter.d.ts +11 -0
  278. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  279. package/dist/knuthPlass/richAdapter.js +11 -4
  280. package/dist/knuthPlass/richAdapter.js.map +1 -1
  281. package/dist/knuthPlass/tracking.d.ts +2 -1
  282. package/dist/knuthPlass/tracking.d.ts.map +1 -1
  283. package/dist/knuthPlass/tracking.js +5 -2
  284. package/dist/knuthPlass/tracking.js.map +1 -1
  285. package/dist/knuthPlass/types.d.ts +4 -0
  286. package/dist/knuthPlass/types.d.ts.map +1 -1
  287. package/dist/locale.d.ts +63 -9
  288. package/dist/locale.d.ts.map +1 -1
  289. package/dist/locale.js +129 -12
  290. package/dist/locale.js.map +1 -1
  291. package/dist/measure/bidiLines.d.ts +91 -0
  292. package/dist/measure/bidiLines.d.ts.map +1 -0
  293. package/dist/measure/bidiLines.js +293 -0
  294. package/dist/measure/bidiLines.js.map +1 -0
  295. package/dist/measure/cache.d.ts.map +1 -1
  296. package/dist/measure/cache.js +10 -4
  297. package/dist/measure/cache.js.map +1 -1
  298. package/dist/measure/joining.d.ts +39 -0
  299. package/dist/measure/joining.d.ts.map +1 -0
  300. package/dist/measure/joining.js +91 -0
  301. package/dist/measure/joining.js.map +1 -0
  302. package/dist/measure/joiningGroups.d.ts +7 -0
  303. package/dist/measure/joiningGroups.d.ts.map +1 -0
  304. package/dist/measure/joiningGroups.js +110 -0
  305. package/dist/measure/joiningGroups.js.map +1 -0
  306. package/dist/measure/kashida.d.ts +97 -0
  307. package/dist/measure/kashida.d.ts.map +1 -0
  308. package/dist/measure/kashida.js +285 -0
  309. package/dist/measure/kashida.js.map +1 -0
  310. package/dist/measure/kashidaPatterns.d.ts +109 -0
  311. package/dist/measure/kashidaPatterns.d.ts.map +1 -0
  312. package/dist/measure/kashidaPatterns.js +519 -0
  313. package/dist/measure/kashidaPatterns.js.map +1 -0
  314. package/dist/measure/links.d.ts.map +1 -1
  315. package/dist/measure/links.js +5 -2
  316. package/dist/measure/links.js.map +1 -1
  317. package/dist/measure/plain.d.ts.map +1 -1
  318. package/dist/measure/plain.js +31 -0
  319. package/dist/measure/plain.js.map +1 -1
  320. package/dist/measure/rich.d.ts +24 -0
  321. package/dist/measure/rich.d.ts.map +1 -1
  322. package/dist/measure/rich.js +250 -22
  323. package/dist/measure/rich.js.map +1 -1
  324. package/dist/measure/types.d.ts +14 -0
  325. package/dist/measure/types.d.ts.map +1 -1
  326. package/dist/measure/types.js.map +1 -1
  327. package/dist/numberWords.d.ts +17 -4
  328. package/dist/numberWords.d.ts.map +1 -1
  329. package/dist/numberWords.js +19 -13
  330. package/dist/numberWords.js.map +1 -1
  331. package/dist/numbering.d.ts +49 -11
  332. package/dist/numbering.d.ts.map +1 -1
  333. package/dist/numbering.js +117 -21
  334. package/dist/numbering.js.map +1 -1
  335. package/dist/parse/annotations.d.ts +6 -3
  336. package/dist/parse/annotations.d.ts.map +1 -1
  337. package/dist/parse/annotations.js +31 -7
  338. package/dist/parse/annotations.js.map +1 -1
  339. package/dist/parse/attrs.d.ts +3 -3
  340. package/dist/parse/attrs.d.ts.map +1 -1
  341. package/dist/parse/attrs.js +5 -4
  342. package/dist/parse/attrs.js.map +1 -1
  343. package/dist/parse/blockParser.d.ts.map +1 -1
  344. package/dist/parse/blockParser.js +158 -14
  345. package/dist/parse/blockParser.js.map +1 -1
  346. package/dist/parse/index.d.ts +1 -1
  347. package/dist/parse/index.d.ts.map +1 -1
  348. package/dist/parse/index.js.map +1 -1
  349. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  350. package/dist/parse/inlineFormatting.js +5 -4
  351. package/dist/parse/inlineFormatting.js.map +1 -1
  352. package/dist/parse/types.d.ts +63 -1
  353. package/dist/parse/types.d.ts.map +1 -1
  354. package/dist/pipeline/build.d.ts.map +1 -1
  355. package/dist/pipeline/build.js +161 -43
  356. package/dist/pipeline/build.js.map +1 -1
  357. package/dist/pipeline/buildBlockKind.d.ts +2 -0
  358. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  359. package/dist/pipeline/buildBlockKind.js +67 -2
  360. package/dist/pipeline/buildBlockKind.js.map +1 -1
  361. package/dist/pipeline/buildHelpers.d.ts +22 -1
  362. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  363. package/dist/pipeline/buildHelpers.js +55 -5
  364. package/dist/pipeline/buildHelpers.js.map +1 -1
  365. package/dist/pipeline/calloutLayout.d.ts +6 -1
  366. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  367. package/dist/pipeline/calloutLayout.js +63 -18
  368. package/dist/pipeline/calloutLayout.js.map +1 -1
  369. package/dist/pipeline/citations.d.ts +2 -1
  370. package/dist/pipeline/citations.d.ts.map +1 -1
  371. package/dist/pipeline/citations.js +29 -9
  372. package/dist/pipeline/citations.js.map +1 -1
  373. package/dist/pipeline/cjkGrid.d.ts +3 -2
  374. package/dist/pipeline/cjkGrid.d.ts.map +1 -1
  375. package/dist/pipeline/cjkGrid.js +3 -2
  376. package/dist/pipeline/cjkGrid.js.map +1 -1
  377. package/dist/pipeline/config.d.ts +13 -1
  378. package/dist/pipeline/config.d.ts.map +1 -1
  379. package/dist/pipeline/config.js +32 -3
  380. package/dist/pipeline/config.js.map +1 -1
  381. package/dist/pipeline/contentWarnings.d.ts +10 -0
  382. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  383. package/dist/pipeline/contentWarnings.js +88 -0
  384. package/dist/pipeline/contentWarnings.js.map +1 -1
  385. package/dist/pipeline/continuation.d.ts.map +1 -1
  386. package/dist/pipeline/continuation.js +1 -1
  387. package/dist/pipeline/continuation.js.map +1 -1
  388. package/dist/pipeline/crossRefs.d.ts.map +1 -1
  389. package/dist/pipeline/crossRefs.js +2 -0
  390. package/dist/pipeline/crossRefs.js.map +1 -1
  391. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  392. package/dist/pipeline/floatPlacement.js +2 -1
  393. package/dist/pipeline/floatPlacement.js.map +1 -1
  394. package/dist/pipeline/footnotes.d.ts +13 -5
  395. package/dist/pipeline/footnotes.d.ts.map +1 -1
  396. package/dist/pipeline/footnotes.js +19 -8
  397. package/dist/pipeline/footnotes.js.map +1 -1
  398. package/dist/pipeline/headerFooter.d.ts +4 -0
  399. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  400. package/dist/pipeline/headerFooter.js +41 -13
  401. package/dist/pipeline/headerFooter.js.map +1 -1
  402. package/dist/pipeline/headingDesignCuts.d.ts +1 -1
  403. package/dist/pipeline/headingDesignCuts.d.ts.map +1 -1
  404. package/dist/pipeline/headingDesignCuts.js +2 -1
  405. package/dist/pipeline/headingDesignCuts.js.map +1 -1
  406. package/dist/pipeline/headingStyles.d.ts +10 -0
  407. package/dist/pipeline/headingStyles.d.ts.map +1 -1
  408. package/dist/pipeline/headingStyles.js +46 -0
  409. package/dist/pipeline/headingStyles.js.map +1 -1
  410. package/dist/pipeline/indexDirective.d.ts.map +1 -1
  411. package/dist/pipeline/indexDirective.js +33 -6
  412. package/dist/pipeline/indexDirective.js.map +1 -1
  413. package/dist/pipeline/indexGroups.d.ts +23 -1
  414. package/dist/pipeline/indexGroups.d.ts.map +1 -1
  415. package/dist/pipeline/indexGroups.js +50 -1
  416. package/dist/pipeline/indexGroups.js.map +1 -1
  417. package/dist/pipeline/lists.d.ts +16 -4
  418. package/dist/pipeline/lists.d.ts.map +1 -1
  419. package/dist/pipeline/lists.js +51 -12
  420. package/dist/pipeline/lists.js.map +1 -1
  421. package/dist/pipeline/measureContentBlock.d.ts +5 -0
  422. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  423. package/dist/pipeline/measureContentBlock.js +63 -4
  424. package/dist/pipeline/measureContentBlock.js.map +1 -1
  425. package/dist/pipeline/mirrorFrame.d.ts +37 -0
  426. package/dist/pipeline/mirrorFrame.d.ts.map +1 -0
  427. package/dist/pipeline/mirrorFrame.js +143 -0
  428. package/dist/pipeline/mirrorFrame.js.map +1 -0
  429. package/dist/pipeline/outline.d.ts +2 -2
  430. package/dist/pipeline/outline.d.ts.map +1 -1
  431. package/dist/pipeline/outline.js +33 -6
  432. package/dist/pipeline/outline.js.map +1 -1
  433. package/dist/pipeline/paragraphContainers.d.ts +5 -0
  434. package/dist/pipeline/paragraphContainers.d.ts.map +1 -1
  435. package/dist/pipeline/paragraphContainers.js +12 -0
  436. package/dist/pipeline/paragraphContainers.js.map +1 -1
  437. package/dist/pipeline/parts.d.ts +1 -1
  438. package/dist/pipeline/parts.d.ts.map +1 -1
  439. package/dist/pipeline/parts.js +3 -2
  440. package/dist/pipeline/parts.js.map +1 -1
  441. package/dist/pipeline/placeholders.d.ts +13 -6
  442. package/dist/pipeline/placeholders.d.ts.map +1 -1
  443. package/dist/pipeline/placeholders.js +15 -11
  444. package/dist/pipeline/placeholders.js.map +1 -1
  445. package/dist/pipeline/placement.d.ts +3 -2
  446. package/dist/pipeline/placement.d.ts.map +1 -1
  447. package/dist/pipeline/placement.js +18 -6
  448. package/dist/pipeline/placement.js.map +1 -1
  449. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  450. package/dist/pipeline/resourceLayout.js +70 -7
  451. package/dist/pipeline/resourceLayout.js.map +1 -1
  452. package/dist/pipeline/resourceNumbering.d.ts +5 -3
  453. package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
  454. package/dist/pipeline/resourceNumbering.js +11 -8
  455. package/dist/pipeline/resourceNumbering.js.map +1 -1
  456. package/dist/pipeline/styles.d.ts +6 -1
  457. package/dist/pipeline/styles.d.ts.map +1 -1
  458. package/dist/pipeline/styles.js +44 -14
  459. package/dist/pipeline/styles.js.map +1 -1
  460. package/dist/pipeline/tashkil.d.ts +27 -0
  461. package/dist/pipeline/tashkil.d.ts.map +1 -0
  462. package/dist/pipeline/tashkil.js +161 -0
  463. package/dist/pipeline/tashkil.js.map +1 -0
  464. package/dist/pipeline/toc.d.ts +12 -0
  465. package/dist/pipeline/toc.d.ts.map +1 -1
  466. package/dist/pipeline/toc.js +64 -4
  467. package/dist/pipeline/toc.js.map +1 -1
  468. package/dist/pipeline/verse.d.ts +65 -0
  469. package/dist/pipeline/verse.d.ts.map +1 -0
  470. package/dist/pipeline/verse.js +252 -0
  471. package/dist/pipeline/verse.js.map +1 -0
  472. package/dist/pipeline/verticalMetrics.d.ts +1 -1
  473. package/dist/pipeline/verticalMetrics.d.ts.map +1 -1
  474. package/dist/pipeline/verticalMetrics.js +7 -5
  475. package/dist/pipeline/verticalMetrics.js.map +1 -1
  476. package/dist/table/model.d.ts +4 -3
  477. package/dist/table/model.d.ts.map +1 -1
  478. package/dist/table/model.js.map +1 -1
  479. package/dist/types.d.ts +286 -36
  480. package/dist/types.d.ts.map +1 -1
  481. package/dist/uprightArabic.d.ts +39 -0
  482. package/dist/uprightArabic.d.ts.map +1 -0
  483. package/dist/uprightArabic.js +105 -0
  484. package/dist/uprightArabic.js.map +1 -0
  485. package/dist/vdt.d.ts +276 -11
  486. package/dist/vdt.d.ts.map +1 -1
  487. package/dist/vdt.js +46 -9
  488. package/dist/vdt.js.map +1 -1
  489. package/package.json +1 -1
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Arabic-script numerals, written and read: the Arabic-Indic digits of the
3
+ * Mashriq (٠١٢٣٤٥٦٧٨٩, U+0660–0669) and the Extended Arabic-Indic digits
4
+ * of Persian and Urdu (۰۱۲۳۴۵۶۷۸۹, U+06F0–06F9); the additive abjad
5
+ * numerals of Classical Arabic and manuscript foliation (يا = 11,
6
+ * غتمو = 1446) in the Mashriqi and the Maghrebi values; and the letter
7
+ * series that number list items and front matter, in abjad order
8
+ * (أ ب ج د هـ) and in the alphabetical, hijāʾī order (أ ب ت ث). Also
9
+ * the reverse for digits: an Arabic author types ٣ where a Latin one
10
+ * types 3.
11
+ */
12
+ const ARABIC_INDIC_ZERO = 0x0660;
13
+ const PERSIAN_ZERO = 0x06f0;
14
+ /** `n` in Arabic-Indic digits: 2026 → ٢٠٢٦. */
15
+ export function arabicIndicDecimal(n) {
16
+ return String(n).replace(/\d/g, (d) => String.fromCharCode(ARABIC_INDIC_ZERO + Number(d)));
17
+ }
18
+ /** `n` in Extended Arabic-Indic (Persian) digits: 2026 → ۲۰۲۶. Urdu writes
19
+ * the same code points; its glyph forms come from the font (`locl`). */
20
+ export function persianDecimal(n) {
21
+ return String(n).replace(/\d/g, (d) => String.fromCharCode(PERSIAN_ZERO + Number(d)));
22
+ }
23
+ /**
24
+ * The ASCII digits of an engine-generated string in the document's digit
25
+ * system: `'arab'` writes ٠–٩, `'arabext'` ۰–۹, `'latn'` (or none) leaves
26
+ * the string as it is. Only strings the engine composed go through it — a
27
+ * page count, a chapter ordinal, the fallback of a list number — never
28
+ * the author's text.
29
+ */
30
+ export function withDigits(text, digits) {
31
+ if (!digits || digits === 'latn')
32
+ return text;
33
+ const zero = digits === 'arab' ? ARABIC_INDIC_ZERO : PERSIAN_ZERO;
34
+ return text.replace(/[0-9]/g, (d) => String.fromCharCode(zero + d.charCodeAt(0) - 48));
35
+ }
36
+ /** Arabic-Indic (٠–٩) and Extended Arabic-Indic (۰–۹) digits turned into
37
+ * ASCII ones, everything else kept: what a number an author typed on an
38
+ * Arabic or Persian keyboard (`startAt=٣`, `:::part{number="١٢"}`) is
39
+ * read through before `Number()`. */
40
+ export function asciiDigits(text) {
41
+ return text.replace(/[٠-٩۰-۹]/g, (d) => {
42
+ const c = d.charCodeAt(0);
43
+ return String.fromCharCode(48 + c - (c >= PERSIAN_ZERO ? PERSIAN_ZERO : ARABIC_INDIC_ZERO));
44
+ });
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Abjad numerals
48
+ // ---------------------------------------------------------------------------
49
+ /** Units, tens and hundreds (index 1–9) and the thousand of the Mashriqi
50
+ * abjad (أبجد هوز حطي كلمن سعفص قرشت ثخذ ضظغ). */
51
+ const MASHRIQI = {
52
+ units: ['', 'ا', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط'],
53
+ tens: ['', 'ي', 'ك', 'ل', 'م', 'ن', 'س', 'ع', 'ف', 'ص'],
54
+ hundreds: ['', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ض', 'ظ'],
55
+ thousand: 'غ',
56
+ };
57
+ /** The Maghrebi abjad (أبجد هوز حطي كلمن صعفض قرست ثخذ ظغش): the same up to
58
+ * ن = 50, then ص 60, ض 90, س 300, ظ 800, غ 900 and ش 1000. The W3C
59
+ * `maghrebi-abjad` counter lists ض before ع (60) and ص after ف (90); the
60
+ * mnemonic صعفض and the reference tables put them the other way round,
61
+ * which is what is followed here. */
62
+ const MAGHREBI = {
63
+ units: MASHRIQI.units,
64
+ tens: ['', 'ي', 'ك', 'ل', 'م', 'ن', 'ص', 'ع', 'ف', 'ض'],
65
+ hundreds: ['', 'ق', 'ر', 'س', 'ت', 'ث', 'خ', 'ذ', 'ظ', 'غ'],
66
+ thousand: 'ش',
67
+ };
68
+ /** Largest abjad numeral written; past it the number prints in digits. */
69
+ const MAX_ABJAD = 999_999;
70
+ /** Letters that join only to the letter before them: a ه written after
71
+ * one of them stands alone. */
72
+ const RIGHT_JOINING = new Set(['ا', 'أ', 'إ', 'آ', 'د', 'ذ', 'ر', 'ز', 'و']);
73
+ /**
74
+ * A heh that would stand alone at the end of a numeral or a list marker —
75
+ * the whole marker (the fifth item, هـ) or after a letter that does not
76
+ * join forward (ده) — takes a tatweel, هـ, as Arabic books write it, so it
77
+ * is not read as the digit ٥. A heh joined to the letter before it (يه,
78
+ * 15) is clear as it is. The W3C counter styles write ه followed by a
79
+ * zero-width joiner, which shapes the same in a font that honours the
80
+ * joiner; the tatweel shapes alike everywhere, and is the form printed
81
+ * books use.
82
+ */
83
+ function settleFinalHeh(text) {
84
+ if (!text.endsWith('ه'))
85
+ return text;
86
+ const before = text.slice(-2, -1);
87
+ return before === '' || RIGHT_JOINING.has(before) ? `${text}ـ` : text;
88
+ }
89
+ function abjadBelow1000(n, table) {
90
+ return table.hundreds[Math.floor(n / 100)] + table.tens[Math.floor(n / 10) % 10] + table.units[n % 10];
91
+ }
92
+ /**
93
+ * `n` in additive abjad numerals, highest value first in logical order
94
+ * (the reader sees it right to left): 11 يا, 15 يه, 1446 غتمو, 1835 غضله.
95
+ * The thousands count is written before the thousand letter (2000 بغ, as
96
+ * against 1002 غب). `'maghrebi'` takes the Maghrebi values. A final heh
97
+ * that would stand alone takes a tatweel (5 هـ). Zero has no abjad numeral
98
+ * and prints nothing; past 999 999 the number prints in digits.
99
+ */
100
+ export function abjadNumeral(n, variant = 'mashriqi') {
101
+ if (!Number.isSafeInteger(n) || n < 1)
102
+ return '';
103
+ if (n > MAX_ABJAD)
104
+ return String(n);
105
+ const table = variant === 'maghrebi' ? MAGHREBI : MASHRIQI;
106
+ const thousands = Math.floor(n / 1000);
107
+ const rest = n % 1000;
108
+ const head = thousands === 0 ? '' : (thousands === 1 ? '' : abjadBelow1000(thousands, table)) + table.thousand;
109
+ return settleFinalHeh(head + abjadBelow1000(rest, table));
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Letter series
113
+ // ---------------------------------------------------------------------------
114
+ /** The 28 letters in abjad order, as list items are lettered in Arabic
115
+ * textbooks and outlines (أ، ب، ج، د، هـ…). The first is written with its
116
+ * hamza, as a list marker always is: a bare alif reads as the digit ١. */
117
+ export const ABJAD_LETTERS = Object.freeze([
118
+ 'أ', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط', 'ي', 'ك', 'ل', 'م', 'ن',
119
+ 'س', 'ع', 'ف', 'ص', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ض', 'ظ', 'غ',
120
+ ]);
121
+ /** The 28 letters in alphabetical (hijāʾī) order, the dictionary order of
122
+ * today (أ، ب، ت، ث، ج…); the first with its hamza, as above. */
123
+ export const HIJAI_LETTERS = Object.freeze([
124
+ 'أ', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص',
125
+ 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ي',
126
+ ]);
127
+ /**
128
+ * The `n`th marker of a letter series, by the bijective rule of
129
+ * `lower-alpha` (z, aa, ab…): past the last letter the series goes on in
130
+ * two letters (أأ, أب…), then three. A final heh that would stand alone
131
+ * takes a tatweel (هـ). Zero and below print nothing.
132
+ */
133
+ export function arabicLettering(n, letters) {
134
+ if (!Number.isSafeInteger(n) || n < 1)
135
+ return '';
136
+ let s = '';
137
+ for (let x = n; x > 0; x = Math.floor(x / letters.length)) {
138
+ x -= 1;
139
+ s = letters[x % letters.length] + s;
140
+ }
141
+ return settleFinalHeh(s);
142
+ }
143
+ //# sourceMappingURL=arabicNumerals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arabicNumerals.js","sourceRoot":"","sources":["../src/arabicNumerals.ts"],"names":[],"mappings":"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"}
package/dist/bidi.d.ts ADDED
@@ -0,0 +1,186 @@
1
+ /**
2
+ * The Unicode Bidirectional Algorithm (UAX #9), shared by the measurer and
3
+ * every renderer the way `writingMode.ts` shares vertical orientation.
4
+ *
5
+ * Arabic and Hebrew run right to left, digits and Latin words inside them
6
+ * left to right, and the order in which a line's pieces are painted follows
7
+ * from the characters themselves: their `Bidi_Class`, the paragraph's base
8
+ * direction and any explicit isolates (`:rtl[…]`, `:ltr[…]`, or the Unicode
9
+ * controls U+2066–U+2069). {@link resolveParagraph} resolves a paragraph's
10
+ * embedding levels (rules P2–P3, X1–X10, W1–W7, N0–N2, I1–I2); the line
11
+ * functions apply L1 (trailing white space back to the paragraph level) and
12
+ * L2 (reversal) to one line of it once the line breaker has cut it, so the
13
+ * breaker works on the logical text and never needs to know about
14
+ * direction. L3 (combining marks) is the shaper's business and L4
15
+ * (mirroring) is {@link mirroredChar}.
16
+ *
17
+ * Text is UTF-16: levels are kept per code unit, a surrogate pair's two
18
+ * units always share one level, and the order functions return the index
19
+ * of each code point's first unit. Characters rule X9 removes (embedding
20
+ * and override controls, `BN`) get the level of the character before them,
21
+ * so they never split a run; they paint nothing.
22
+ *
23
+ * Conformance: the full `BidiCharacterTest.txt` and `BidiTest.txt` of
24
+ * Unicode 18 pass (see `__tests__/bidi.test.ts`). The data tables are in
25
+ * `bidiData.ts`, generated by `scripts/gen-bidi-data.mjs`.
26
+ */
27
+ import type { InlineDirection } from './parse/types';
28
+ /** A Unicode `Bidi_Class` (UAX #9 table 4). */
29
+ export type BidiClass = 'L' | 'R' | 'AL' | 'EN' | 'ES' | 'ET' | 'AN' | 'CS' | 'NSM' | 'BN' | 'B' | 'S' | 'WS' | 'ON' | 'LRE' | 'LRO' | 'RLE' | 'RLO' | 'PDF' | 'LRI' | 'RLI' | 'FSI' | 'PDI';
30
+ /** Every `Bidi_Class`, by its code in the data tables. */
31
+ export declare const BIDI_CLASS_NAMES: readonly BidiClass[];
32
+ /** A paragraph's base direction as configured: `auto` takes it from the
33
+ * first strong letter (rules P2–P3), left to right when there is none. */
34
+ export type BaseDirection = 'ltr' | 'rtl' | 'auto';
35
+ /** A code point's Unicode `Bidi_Class`. */
36
+ export declare function bidiClassOf(cp: number): BidiClass;
37
+ /** Whether a code point is a right-to-left letter (`Bidi_Class` `R` or
38
+ * `AL`): Hebrew, Arabic, Syriac, Thaana, N'Ko, Adlam and the other
39
+ * scripts written from right to left. Digits, punctuation and marks are
40
+ * not, whatever text they sit in. */
41
+ export declare function isRtlScriptChar(cp: number): boolean;
42
+ /**
43
+ * Whether a paragraph needs the bidi algorithm at all: it holds a
44
+ * right-to-left letter or a control that opens a right-to-left embedding,
45
+ * override or isolate. Text without one, in a left-to-right paragraph,
46
+ * resolves to even levels throughout and paints in logical order, so the
47
+ * layout can skip the algorithm (and stays exactly as it was). Arabic-Indic
48
+ * digits alone do not count: they run left to right.
49
+ */
50
+ export declare function needsBidi(text: string): boolean;
51
+ /**
52
+ * The mirrored form of a character (`Bidi_Mirroring_Glyph`, rule L4): `)`
53
+ * for `(`, `»` for `«`, `≥` for `≤`. A renderer paints it in place of the
54
+ * character when the character's resolved level is odd and the font does
55
+ * not mirror it itself (OpenType `rtlm`). A character without a mirror is
56
+ * returned unchanged, as is anything longer than one code point.
57
+ *
58
+ * The ornate parentheses of Quranic text, U+FD3E ﴾ and U+FD3F ﴿, have no
59
+ * mirror and are not paired brackets: Unicode 14 gave them their present
60
+ * general categories (FD3F opens, FD3E closes, as they are written in
61
+ * Arabic) and keeps them out of `BidiMirroring.txt` and `BidiBrackets.txt`
62
+ * on purpose, so they always paint as they are encoded.
63
+ */
64
+ export declare function mirroredChar(ch: string): string;
65
+ /** The mirrored form of a code point (see {@link mirroredChar}), or the
66
+ * code point itself when it has none. */
67
+ export declare function mirroredCodePoint(cp: number): number;
68
+ /** A Unicode `Joining_Type` (ArabicShaping.txt): `D` dual-joining (most
69
+ * Arabic letters), `R` right-joining (alef, dal, ra, waw…: joined only to
70
+ * the letter before them), `L` left-joining, `C` join-causing (tatweel,
71
+ * ZWJ), `T` transparent (harakat and other marks, skipped when deciding
72
+ * what joins), `U` non-joining. */
73
+ export type JoiningType = 'U' | 'C' | 'D' | 'R' | 'L' | 'T';
74
+ /** A code point's Unicode `Joining_Type`. */
75
+ export declare function joiningTypeOf(cp: number): JoiningType;
76
+ /** Whether a text holds a letter of a joining script: a character that is
77
+ * dual-, right- or left-joining (Arabic, Syriac, N'Ko, Mongolian, Adlam…).
78
+ * Join-causing characters alone do not count: a ZWJ also sits inside emoji
79
+ * sequences. */
80
+ export declare function hasJoiningScript(text: string): boolean;
81
+ /**
82
+ * Whether the character starting at `index` is joined to the next
83
+ * non-transparent character of `text` (cursive Arabic: the two letters
84
+ * connect, so a cut, a style change or a kashida between them must keep
85
+ * the connection). It joins when it joins forward (`D`, `L`, `C`) and the
86
+ * next one joins backward (`D`, `R`, `C`); transparent marks between them
87
+ * (harakat) are skipped. `false` at the end of the text, and when `index`
88
+ * itself is a transparent mark.
89
+ */
90
+ export declare function joinsWithNext(text: string, index: number): boolean;
91
+ /** Whether any two characters of a text join (see {@link joinsWithNext}):
92
+ * a word that must be measured, cut and painted as one shaped run. */
93
+ export declare function joinsLetters(text: string): boolean;
94
+ /** The embedding levels of one paragraph, before any line is cut. */
95
+ export interface BidiParagraph {
96
+ /** The paragraph's text, in logical order. */
97
+ readonly text: string;
98
+ /** The paragraph embedding level: 0 left to right, 1 right to left. */
99
+ readonly paragraphLevel: number;
100
+ /** Resolved embedding level of each UTF-16 unit (rules X1–I2; L1 is per
101
+ * line, see {@link lineLevels}). Odd levels run right to left. */
102
+ readonly levels: Uint8Array;
103
+ /** Each unit's original `Bidi_Class` code: what L1 reads. */
104
+ readonly classes: Uint8Array;
105
+ }
106
+ /** A stretch of a paragraph set as an isolate of its own direction (an
107
+ * inline `:rtl[…]` / `:ltr[…]`), as if it were wrapped in RLI/LRI … PDI:
108
+ * `[start, end)` in UTF-16 units. Isolates nest or are disjoint. */
109
+ export interface BidiIsolate {
110
+ start: number;
111
+ end: number;
112
+ direction: 'ltr' | 'rtl';
113
+ }
114
+ /**
115
+ * Resolve the embedding levels of one paragraph (UAX #9 up to I2). `base`
116
+ * is the paragraph direction: `ltr`, `rtl`, or `auto` for the direction of
117
+ * its first strong letter (left to right when it has none). `isolates`
118
+ * sets stretches of the text as directional isolates, as if their bounds
119
+ * held RLI/LRI and PDI controls (the inline `:rtl[…]` and `:ltr[…]`); the
120
+ * text itself may also hold the Unicode controls. A paragraph separator
121
+ * (`B`) ends the embeddings opened before it, as at the end of a paragraph;
122
+ * callers split the text at paragraph breaks first (rule P1).
123
+ */
124
+ export declare function resolveParagraph(text: string, base?: BaseDirection, isolates?: readonly BidiIsolate[]): BidiParagraph;
125
+ /** A span of a parsed paragraph as {@link resolveSpans} reads it. */
126
+ interface DirectedSpan {
127
+ text: string;
128
+ direction?: InlineDirection;
129
+ }
130
+ /**
131
+ * The isolates of a paragraph's spans (`InlineSpan.direction`, set by
132
+ * `:rtl[…]` and `:ltr[…]`) as ranges of their joined text. Spans of one
133
+ * isolate share its `id`; an isolate nested in another names it as `outer`.
134
+ */
135
+ export declare function spanIsolates(spans: readonly DirectedSpan[]): BidiIsolate[];
136
+ /** {@link resolveParagraph} for a paragraph given as its spans: the text is
137
+ * their texts joined, and their `direction` isolates apply. */
138
+ export declare function resolveSpans(spans: readonly DirectedSpan[], base?: BaseDirection): BidiParagraph;
139
+ /**
140
+ * The algorithm proper, on class codes. `text` (with `map` from class
141
+ * positions to text positions, `-1` for a virtual control) gives the code
142
+ * units the paired-bracket rule reads; without it no bracket pairs.
143
+ * @internal Exported for the conformance tests (`BidiTest.txt` lists
144
+ * classes, not characters).
145
+ */
146
+ export declare function resolveClasses(cls: Uint8Array, baseLevel: number, text: string | null, map: Int32Array | null): {
147
+ levels: Uint8Array;
148
+ paragraphLevel: number;
149
+ };
150
+ /**
151
+ * The levels of one line of a paragraph, `[start, end)` in UTF-16 units,
152
+ * after rule L1: segment and paragraph separators, and the white space and
153
+ * isolate controls before them or at the end of the line, go back to the
154
+ * paragraph level (a space that ends an Arabic line inside an English
155
+ * paragraph sits at the line's right end, not inside the Arabic run).
156
+ * Index 0 of the result is the line's first unit.
157
+ */
158
+ export declare function lineLevels(par: BidiParagraph, start?: number, end?: number): Uint8Array;
159
+ /**
160
+ * Rule L2 on any sequence of items with levels (characters, or a line's
161
+ * segments with the level of each): the indices of `levels[start..end)`
162
+ * from left to right. Every run at or above each odd level is reversed,
163
+ * from the highest level down.
164
+ */
165
+ export declare function visualOrder(levels: ArrayLike<number>, start?: number, end?: number): number[];
166
+ /**
167
+ * The characters of one line of a paragraph in visual order, left to right
168
+ * (rules L1 and L2): the index, in the paragraph's text, of each code
169
+ * point's first unit.
170
+ */
171
+ export declare function lineVisualOrder(par: BidiParagraph, start?: number, end?: number): number[];
172
+ /** A run of one level within a line: `[start, end)` in the paragraph's
173
+ * text, painted right to left when `level` is odd. */
174
+ export interface BidiRun {
175
+ start: number;
176
+ end: number;
177
+ level: number;
178
+ }
179
+ /**
180
+ * One line of a paragraph as runs of one level each, in visual order (left
181
+ * to right): what a renderer paints, each run shaped in its own direction
182
+ * (an odd level is right to left). Rules L1 and L2.
183
+ */
184
+ export declare function lineRuns(par: BidiParagraph, start?: number, end?: number): BidiRun[];
185
+ export {};
186
+ //# sourceMappingURL=bidi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidi.d.ts","sourceRoot":"","sources":["../src/bidi.ts"],"names":[],"mappings":"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"}