"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SliceTupleIndex = exports.SliceStackingName = exports.SliceStacking = exports.SliceHeaderShift = exports.SliceHeaderMask = exports.SliceTypeName = exports.CursorAnchor = void 0;
/**
 * Specifies whether the start or the end of the cursor is the "anchor", e.g.
 * the end which does not move when user changes selection. The other
 * end is free to move, the moving end of the cursor is "focus". By default
 * "anchor" is usually the start of the cursor.
 */
var CursorAnchor;
(function (CursorAnchor) {
    CursorAnchor[CursorAnchor["Start"] = 0] = "Start";
    CursorAnchor[CursorAnchor["End"] = 1] = "End";
})(CursorAnchor || (exports.CursorAnchor = CursorAnchor = {}));
/**
 * All type name must be fully lowercase, as HTML custom element tag names must
 * be lowercase.
 */
var SliceTypeName;
(function (SliceTypeName) {
    SliceTypeName[SliceTypeName["p"] = 0] = "p";
    SliceTypeName[SliceTypeName["blockquote"] = 1] = "blockquote";
    SliceTypeName[SliceTypeName["codeblock"] = 2] = "codeblock";
    SliceTypeName[SliceTypeName["pre"] = 3] = "pre";
    SliceTypeName[SliceTypeName["ul"] = 4] = "ul";
    SliceTypeName[SliceTypeName["ol"] = 5] = "ol";
    SliceTypeName[SliceTypeName["tl"] = 6] = "tl";
    SliceTypeName[SliceTypeName["li"] = 7] = "li";
    SliceTypeName[SliceTypeName["h1"] = 8] = "h1";
    SliceTypeName[SliceTypeName["h2"] = 9] = "h2";
    SliceTypeName[SliceTypeName["h3"] = 10] = "h3";
    SliceTypeName[SliceTypeName["h4"] = 11] = "h4";
    SliceTypeName[SliceTypeName["h5"] = 12] = "h5";
    SliceTypeName[SliceTypeName["h6"] = 13] = "h6";
    SliceTypeName[SliceTypeName["title"] = 14] = "title";
    SliceTypeName[SliceTypeName["subtitle"] = 15] = "subtitle";
    SliceTypeName[SliceTypeName["br"] = 16] = "br";
    SliceTypeName[SliceTypeName["nl"] = 17] = "nl";
    SliceTypeName[SliceTypeName["hr"] = 18] = "hr";
    SliceTypeName[SliceTypeName["page"] = 19] = "page";
    SliceTypeName[SliceTypeName["aside"] = 20] = "aside";
    SliceTypeName[SliceTypeName["embed"] = 21] = "embed";
    SliceTypeName[SliceTypeName["column"] = 22] = "column";
    SliceTypeName[SliceTypeName["contents"] = 23] = "contents";
    SliceTypeName[SliceTypeName["table"] = 24] = "table";
    SliceTypeName[SliceTypeName["row"] = 25] = "row";
    SliceTypeName[SliceTypeName["cell"] = 26] = "cell";
    SliceTypeName[SliceTypeName["collapselist"] = 27] = "collapselist";
    SliceTypeName[SliceTypeName["collapse"] = 28] = "collapse";
    SliceTypeName[SliceTypeName["note"] = 29] = "note";
    SliceTypeName[SliceTypeName["mathblock"] = 30] = "mathblock";
    SliceTypeName[SliceTypeName["div"] = 31] = "div";
    SliceTypeName[SliceTypeName["Cursor"] = -1] = "Cursor";
    SliceTypeName[SliceTypeName["RemoteCursor"] = -2] = "RemoteCursor";
    SliceTypeName[SliceTypeName["b"] = -3] = "b";
    SliceTypeName[SliceTypeName["i"] = -4] = "i";
    SliceTypeName[SliceTypeName["u"] = -5] = "u";
    SliceTypeName[SliceTypeName["s"] = -6] = "s";
    SliceTypeName[SliceTypeName["code"] = -7] = "code";
    SliceTypeName[SliceTypeName["mark"] = -8] = "mark";
    SliceTypeName[SliceTypeName["a"] = -9] = "a";
    SliceTypeName[SliceTypeName["comment"] = -10] = "comment";
    SliceTypeName[SliceTypeName["del"] = -11] = "del";
    SliceTypeName[SliceTypeName["ins"] = -12] = "ins";
    SliceTypeName[SliceTypeName["sup"] = -13] = "sup";
    SliceTypeName[SliceTypeName["sub"] = -14] = "sub";
    SliceTypeName[SliceTypeName["math"] = -15] = "math";
    SliceTypeName[SliceTypeName["font"] = -16] = "font";
    SliceTypeName[SliceTypeName["col"] = -17] = "col";
    SliceTypeName[SliceTypeName["bg"] = -18] = "bg";
    SliceTypeName[SliceTypeName["kbd"] = -19] = "kbd";
    SliceTypeName[SliceTypeName["spoiler"] = -20] = "spoiler";
    SliceTypeName[SliceTypeName["footnote"] = -23] = "footnote";
    SliceTypeName[SliceTypeName["ref"] = -24] = "ref";
    SliceTypeName[SliceTypeName["iaside"] = -25] = "iaside";
    SliceTypeName[SliceTypeName["iembed"] = -26] = "iembed";
    SliceTypeName[SliceTypeName["bookmark"] = -27] = "bookmark";
    SliceTypeName[SliceTypeName["overline"] = -28] = "overline";
})(SliceTypeName || (exports.SliceTypeName = SliceTypeName = {}));
/** Slice header octet (8 bits) masking specification. */
var SliceHeaderMask;
(function (SliceHeaderMask) {
    /** The {@link Anchor} of the slice start {@link Point}.  */
    SliceHeaderMask[SliceHeaderMask["X1Anchor"] = 1] = "X1Anchor";
    /** The {@link Anchor} of the slice end {@link Point}.  */
    SliceHeaderMask[SliceHeaderMask["X2Anchor"] = 2] = "X2Anchor";
    /** Slice stacking behavior, one of {@link SliceStacking}. */
    SliceHeaderMask[SliceHeaderMask["Stacking"] = 28] = "Stacking";
})(SliceHeaderMask || (exports.SliceHeaderMask = SliceHeaderMask = {}));
var SliceHeaderShift;
(function (SliceHeaderShift) {
    SliceHeaderShift[SliceHeaderShift["X1Anchor"] = 0] = "X1Anchor";
    SliceHeaderShift[SliceHeaderShift["X2Anchor"] = 1] = "X2Anchor";
    SliceHeaderShift[SliceHeaderShift["Stacking"] = 2] = "Stacking";
})(SliceHeaderShift || (exports.SliceHeaderShift = SliceHeaderShift = {}));
var SliceStacking;
(function (SliceStacking) {
    /**
     * The `Marker` slices are used to mark a block split position in the
     * document. For example, paragraph, heading, blockquote, etc. It separates
     * adjacent blocks and is used to determine the block type of the contents
     * following the marker, until the next marker is encountered.
     */
    SliceStacking[SliceStacking["Marker"] = 0] = "Marker";
    /**
     * The `Many` slices are inline formatting annotations, which allow one
     * or more annotations of the same type to apply to the same text. Slices with
     * stacking behavior `Many` are appended to the stack of attributes for a
     * specific slice type. With the most recent annotation on top.
     *
     * Slices with stacking behavior `Many` are used for inline formatting, like
     * for links, comments, etc. Where multiple annotations of the same type can
     * be applied to the same text.
     */
    SliceStacking[SliceStacking["Many"] = 1] = "Many";
    /**
     * The slices with stacking behavior `One` are used for inline formatting
     * annotations, they overwrite the stack of attributes for a specific slice
     * type. This type of slice is used when only one annotation of a specific
     * type can be applied to the same text. For example, those could be used
     * for simple inline formatting, like bold, italic, etc.
     */
    SliceStacking[SliceStacking["One"] = 2] = "One";
    /**
     * The `Erase` slices are used to soft remove all annotations
     * (`Many` or `One`) of the same type which are applied to the same text
     * range. The erase slices soft remove only the annotations which were applied
     * before the erase slice, as determined by the logical clock (there could
     * be many layers of annotations applied and erased).
     *
     * Usually slices with stacking behavior `Erase` are used to reverse inline
     * exclusive (`One`) inline formatting, like bold, italic, etc.
     */
    SliceStacking[SliceStacking["Erase"] = 3] = "Erase";
    /**
     * Used to mark the user's cursor position in the document.
     *
     * @todo Consider removing this.
     */
    SliceStacking[SliceStacking["Cursor"] = 4] = "Cursor";
})(SliceStacking || (exports.SliceStacking = SliceStacking = {}));
var SliceStackingName;
(function (SliceStackingName) {
    SliceStackingName[SliceStackingName["Marker"] = 0] = "Marker";
    SliceStackingName[SliceStackingName["Many"] = 1] = "Many";
    SliceStackingName[SliceStackingName["One"] = 2] = "One";
    SliceStackingName[SliceStackingName["Erase"] = 3] = "Erase";
    SliceStackingName[SliceStackingName["Cursor"] = 4] = "Cursor";
})(SliceStackingName || (exports.SliceStackingName = SliceStackingName = {}));
/**
 * Specifies `vec` offsets in the {@link SliceView}.
 */
var SliceTupleIndex;
(function (SliceTupleIndex) {
    SliceTupleIndex[SliceTupleIndex["Header"] = 0] = "Header";
    SliceTupleIndex[SliceTupleIndex["X1"] = 1] = "X1";
    SliceTupleIndex[SliceTupleIndex["X2"] = 2] = "X2";
    SliceTupleIndex[SliceTupleIndex["Type"] = 3] = "Type";
    SliceTupleIndex[SliceTupleIndex["Data"] = 4] = "Data";
})(SliceTupleIndex || (exports.SliceTupleIndex = SliceTupleIndex = {}));
//# sourceMappingURL=constants.js.map