| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- // Type definitions for bidi-js
- // A JavaScript implementation of the Unicode Bidirectional Algorithm
- /**
- * One of the 23 Unicode bidirectional character type names, as returned by
- * {@link Bidi.getBidiCharTypeName}.
- */
- export type BidiCharTypeName =
- | "L"
- | "R"
- | "EN"
- | "ES"
- | "ET"
- | "AN"
- | "CS"
- | "B"
- | "S"
- | "WS"
- | "ON"
- | "BN"
- | "NSM"
- | "AL"
- | "LRO"
- | "RLO"
- | "LRE"
- | "RLE"
- | "PDF"
- | "LRI"
- | "RLI"
- | "FSI"
- | "PDI";
- /**
- * The resolved embedding levels for a string, as returned by
- * {@link Bidi.getEmbeddingLevels}.
- */
- export interface EmbeddingLevels {
- /**
- * A `Uint8Array` holding the calculated bidi embedding level for each
- * character in the string. A character is in a right-to-left scope if its
- * level is an odd number, and left-to-right if it's even.
- */
- levels: Uint8Array;
- /**
- * One entry per paragraph in the text (paragraphs are separated by explicit
- * breaking characters, not soft line wrapping). The `start` and `end` indices
- * are inclusive, and `level` is the resolved base embedding level of that
- * paragraph.
- */
- paragraphs: Array<{ start: number; end: number; level: number }>;
- }
- /**
- * A `bidi` object exposing the methods for bidi processing, as returned by the
- * default-exported factory function.
- */
- export interface Bidi {
- /**
- * Apply the Bidirectional Algorithm to a string, returning the resolved
- * embedding levels plus a list of each paragraph's start/end indices and
- * resolved base embedding level.
- *
- * @param string - The input string containing mixed-direction text.
- * @param baseDirection - Use `"ltr"` or `"rtl"` to force a base paragraph
- * direction, otherwise a direction will be chosen automatically from each
- * paragraph's contents.
- */
- getEmbeddingLevels(
- string: string,
- baseDirection?: "ltr" | "rtl" | "auto"
- ): EmbeddingLevels;
- /**
- * Given a start and end denoting a single line within a string, and a set of
- * precalculated bidi embedding levels, produce a list of `[start, end]`
- * segments whose ordering should be flipped, in sequence.
- *
- * @param string - The full input string.
- * @param embeddingLevelsResult - The result object from
- * {@link Bidi.getEmbeddingLevels}.
- * @param start - First character in a subset of the full string (inclusive).
- * @param end - Last character in a subset of the full string (inclusive).
- * @returns The list of start/end segments that should be flipped, in order.
- */
- getReorderSegments(
- string: string,
- embeddingLevelsResult: EmbeddingLevels,
- start?: number,
- end?: number
- ): number[][];
- /**
- * Given a string and its resolved embedding levels, return an array of
- * character indices in their new bidi order.
- *
- * @param string - The full input string.
- * @param embedLevelsResult - The result object from
- * {@link Bidi.getEmbeddingLevels}.
- * @param start - First character in a subset of the full string (inclusive).
- * @param end - Last character in a subset of the full string (inclusive).
- */
- getReorderedIndices(
- string: string,
- embedLevelsResult: EmbeddingLevels,
- start?: number,
- end?: number
- ): number[];
- /**
- * Given a string and its resolved embedding levels, return a new string with
- * its bidi segments reordered (and right-to-left mirrored characters
- * swapped).
- *
- * @param string - The full input string.
- * @param embedLevelsResult - The result object from
- * {@link Bidi.getEmbeddingLevels}.
- * @param start - First character in a subset of the full string (inclusive).
- * @param end - Last character in a subset of the full string (inclusive).
- */
- getReorderedString(
- string: string,
- embedLevelsResult: EmbeddingLevels,
- start?: number,
- end?: number
- ): string;
- /**
- * Get the bidi character type bit flag for a given character.
- */
- getBidiCharType(char: string): number;
- /**
- * Get the bidi character type name for a given character.
- */
- getBidiCharTypeName(char: string): BidiCharTypeName;
- /**
- * Get the mirrored character for a given character, if one exists, otherwise
- * `null`. Only meaningful for right-to-left characters (those whose embedding
- * level is an odd number).
- */
- getMirroredCharacter(char: string): string | null;
- /**
- * Given a string and its resolved embedding levels, build a map of indices to
- * replacement characters for any characters in right-to-left segments that
- * have defined mirrored characters.
- *
- * @param string - The full input string.
- * @param embeddingLevels - The `levels` array from
- * {@link Bidi.getEmbeddingLevels}.
- * @param start - First character in a subset of the full string (inclusive).
- * @param end - Last character in a subset of the full string (inclusive).
- */
- getMirroredCharactersMap(
- string: string,
- embeddingLevels: Uint8Array,
- start?: number,
- end?: number
- ): Map<number, string>;
- /**
- * Get the opening bracket character corresponding to a given closing bracket
- * character, or `null` if there is none.
- */
- closingToOpeningBracket(char: string): string | null;
- /**
- * Get the closing bracket character corresponding to a given opening bracket
- * character, or `null` if there is none.
- */
- openingToClosingBracket(char: string): string | null;
- /**
- * Retrieve the canonical form of a bracket character, or `null` if there is
- * none.
- */
- getCanonicalBracket(char: string): string | null;
- }
- /**
- * The `bidi-js` package's only export is this factory function, which you
- * _must invoke_ to return a `bidi` object exposing the methods for bidi
- * processing.
- *
- * The factory exists so the entire module's code is wrapped within a single
- * self-contained function with no closure dependencies, which enables that
- * function to be stringified and passed into a web worker.
- */
- export default function bidiFactory(): Bidi;
|