prosemirror-flat-list

Functions

findListsRange()

function findListsRange($from: ResolvedPos, $to: ResolvedPos): null | NodeRange;

Returns a minimal block range that includes the given two positions and represents one or multiple sibling list nodes.

Parameters

ParameterTypeDefault value
$fromResolvedPos (opens in a new tab)undefined
$toResolvedPos (opens in a new tab)$from

Returns

null | NodeRange (opens in a new tab)


isListNode()

function isListNode(node: 
  | undefined
  | null
  | Node): boolean;

Parameters

ParameterType
node| undefined | null | Node (opens in a new tab)

Returns

boolean


isListType()

function isListType(type: NodeType): boolean;

Parameters

ParameterType
typeNodeType (opens in a new tab)

Returns

boolean


joinListElements()

function joinListElements<T>(parent: T): T;

Merge adjacent

    elements or adjacent
      elements into a single list element.

      Type Parameters

      Type Parameter
      T extends | Element (opens in a new tab) | DocumentFragment (opens in a new tab)

      Parameters

      ParameterType
      parentT

      Returns

      T


      migrateDocJSON()

      function migrateDocJSON(docJSON: ProsemirrorNodeJSON): null | ProsemirrorNodeJSON;

      Migrate a ProseMirror document JSON object from the old list structure to the new. A new document JSON object is returned if the document is updated, otherwise null is returned.

      Parameters

      ParameterType
      docJSONProsemirrorNodeJSON

      Returns

      null | ProsemirrorNodeJSON

      Commands

      DedentListOptions

      Properties

      PropertyTypeDefault valueDescription
      from?numberstate.selection.fromA optional from position to indent.
      to?numberstate.selection.toA optional to position to indent.

      IndentListOptions

      Properties

      PropertyTypeDefault valueDescription
      from?numberstate.selection.fromA optional from position to indent.
      to?numberstate.selection.toA optional to position to indent.

      ToggleCollapsedOptions

      Properties

      PropertyTypeDescription
      collapsed?booleanIf this value exists, the command will set the collapsed attribute to this value instead of toggle it.
      isToggleable?(node: Node (opens in a new tab)) => booleanAn optional function to accept a list node and return whether or not this node can toggle its collapsed attribute.

      UnwrapListOptions

      Properties

      PropertyTypeDescription
      kind?stringIf given, only this kind of list will be unwrap.

      WrapInListGetAttrs<T>

      type WrapInListGetAttrs<T> = 
        | T
        | (range: NodeRange) => T | null;

      The list node attributes or a callback function to take the current selection block range and return list node attributes. If this callback function returns null, the command won't do anything.

      Type Parameters

      Type Parameter
      T extends ListAttributes

      backspaceCommand

      const backspaceCommand: Command;

      Keybinding for Backspace. It's chained with following commands:


      deleteCommand

      const deleteCommand: Command;

      Keybinding for Delete. It's chained with following commands:


      enterCommand

      const enterCommand: Command;

      Keybinding for Enter. It's chained with following commands:


      joinCollapsedListBackward

      const joinCollapsedListBackward: Command;

      If the selection is empty and at the start of a block, and there is a collapsed list node right before the cursor, move current block and append it to the first child of the collapsed list node (i.e. skip the hidden content).


      joinListUp

      const joinListUp: Command;

      If the text cursor is at the start of the first child of a list node, lift all content inside the list. If the text cursor is at the start of the last child of a list node, lift this child.


      listKeymap

      const listKeymap: {
        Backspace: Command;
        Delete: Command;
        Enter: Command;
        Mod-[: Command;
        Mod-]: Command;
      };

      Returns an object containing the keymap for the list commands.

      Type declaration

      NameTypeDefault value
      BackspaceCommand (opens in a new tab)backspaceCommand
      DeleteCommand (opens in a new tab)deleteCommand
      EnterCommand (opens in a new tab)enterCommand
      Mod-[Command (opens in a new tab)-
      Mod-]Command (opens in a new tab)-

      protectCollapsed

      const protectCollapsed: Command;

      This command will protect the collapsed items from being deleted.

      If current selection contains a collapsed item, we don't want the user to delete this selection by pressing Backspace or Delete, because this could be unintentional.

      In such case, we will stop the delete action and expand the collapsed items instead. Therefore the user can clearly know what content he is trying to delete.


      createDedentListCommand()

      function createDedentListCommand(options?: DedentListOptions): Command;

      Returns a command function that decreases the indentation of selected list nodes.

      Parameters

      ParameterType
      options?DedentListOptions

      Returns

      Command (opens in a new tab)


      createIndentListCommand()

      function createIndentListCommand(options?: IndentListOptions): Command;

      Returns a command function that increases the indentation of selected list nodes.

      Parameters

      ParameterType
      options?IndentListOptions

      Returns

      Command (opens in a new tab)


      createMoveListCommand()

      function createMoveListCommand(direction: "up" | "down"): Command;

      Returns a command function that moves up or down selected list nodes.

      Parameters

      ParameterType
      direction"up" | "down"

      Returns

      Command (opens in a new tab)


      createSplitListCommand()

      function createSplitListCommand(): Command;

      Returns a command that split the current list node.

      Returns

      Command (opens in a new tab)


      createToggleCollapsedCommand()

      function createToggleCollapsedCommand(options: ToggleCollapsedOptions): Command;

      Return a command function that toggle the collapsed attribute of the list node.

      Parameters

      ParameterType
      optionsToggleCollapsedOptions

      Returns

      Command (opens in a new tab)


      createToggleListCommand()

      function createToggleListCommand<T>(attrs: T): Command;

      Returns a command function that wraps the selection in a list with the given type and attributes, or change the list kind if the selection is already in another kind of list, or unwrap the selected list if otherwise.

      Type Parameters

      Type ParameterDefault type
      T extends ListAttributesListAttributes

      Parameters

      ParameterTypeDescription
      attrsTThe list node attributes to toggle.

      Returns

      Command (opens in a new tab)


      createUnwrapListCommand()

      function createUnwrapListCommand(options?: UnwrapListOptions): Command;

      Returns a command function that unwraps the list around the selection.

      Parameters

      ParameterType
      options?UnwrapListOptions

      Returns

      Command (opens in a new tab)


      createWrapInListCommand()

      function createWrapInListCommand<T>(getAttrs: WrapInListGetAttrs<T>): Command;

      Returns a command function that wraps the selection in a list with the given type and attributes.

      Type Parameters

      Type ParameterDefault type
      T extends ListAttributesListAttributes

      Parameters

      ParameterType
      getAttrsWrapInListGetAttrs<T>

      Returns

      Command (opens in a new tab)

      Input Rules

      ListInputRuleAttributesGetter()<T>

      type ListInputRuleAttributesGetter<T> = (options: {
        attributes?: T;
        match: RegExpMatchArray;
      }) => T;

      A callback function to get the attributes for a list input rule.

      Type Parameters

      Type ParameterDefault type
      T extends ListAttributesListAttributes

      Parameters

      ParameterTypeDescription
      options{ attributes?: T; match: RegExpMatchArray; }-
      options.attributes?TThe previous attributes of the existing list node, if it exists.
      options.matchRegExpMatchArrayThe match result of the regular expression.

      Returns

      T


      listInputRules

      const listInputRules: InputRule[];

      All input rules for lists.


      wrappingListInputRule()

      function wrappingListInputRule<T>(regexp: RegExp, getAttrs: 
        | T
        | ListInputRuleAttributesGetter<T>): InputRule;

      Build an input rule for automatically wrapping a textblock into a list node when a given string is typed.

      Type Parameters

      Type ParameterDefault type
      T extends ListAttributesListAttributes

      Parameters

      ParameterType
      regexpRegExp (opens in a new tab)
      getAttrs| T | ListInputRuleAttributesGetter<T>

      Returns

      InputRule (opens in a new tab)

      Plugins

      ListDOMSerializer

      A custom DOM serializer class that can serialize flat list nodes into native HTML list elements (i.e. <ul> and <ol>).

      Extends

      Constructors

      Constructor
      new ListDOMSerializer(nodes: {
      [node: string]: (node: Node) => DOMOutputSpec;
      }, marks: {
      [mark: string]: (mark: Mark, inline: boolean) => DOMOutputSpec;
      }): ListDOMSerializer;

      Create a serializer. nodes should map node names to functions that take a node and return a description of the corresponding DOM. marks does the same for mark names, but also gets an argument that tells it whether the mark's content is block or inline content (for typical use, it'll always be inline). A mark serializer may be null to indicate that marks of that type should not be serialized.

      Parameters
      ParameterTypeDescription
      nodes{ [node: string]: (node: Node (opens in a new tab)) => DOMOutputSpec (opens in a new tab); }The node serialization functions.
      marks{ [mark: string]: (mark: Mark (opens in a new tab), inline: boolean) => DOMOutputSpec (opens in a new tab); }The mark serialization functions.
      Returns

      ListDOMSerializer

      Inherited from
      DOMSerializer.constructor

      Methods

      serializeFragment()
      serializeFragment(
         fragment: Fragment, 
         options?: {
        document?: Document;
      }, 
         target?: 
        | HTMLElement
        | DocumentFragment): 
        | HTMLElement
        | DocumentFragment;

      Serialize the content of this fragment to a DOM fragment. When not in the browser, the document option, containing a DOM document, should be passed so that the serializer can create nodes.

      Parameters
      ParameterType
      fragmentFragment (opens in a new tab)
      options?{ document?: Document (opens in a new tab); }
      options.document?Document (opens in a new tab)
      target?| HTMLElement (opens in a new tab) | DocumentFragment (opens in a new tab)
      Returns

      | HTMLElement (opens in a new tab) | DocumentFragment (opens in a new tab)

      Overrides
      DOMSerializer.serializeFragment
      fromSchema()
      static fromSchema(schema: Schema): ListDOMSerializer;

      Build a serializer using the toDOM (opens in a new tab) properties in a schema's node and mark specs.

      Parameters
      ParameterType
      schemaSchema (opens in a new tab)
      Returns

      ListDOMSerializer

      Overrides
      DOMSerializer.fromSchema
      nodesFromSchema()
      static nodesFromSchema(schema: Schema): {
      [node: string]: (node: Node) => DOMOutputSpec;
      };

      Gather the serializers in a schema's node specs into an object. This can be useful as a base to build a custom serializer from.

      Parameters
      ParameterType
      schemaSchema (opens in a new tab)
      Returns
      {
      [node: string]: (node: Node) => DOMOutputSpec;
      }
      Overrides
      DOMSerializer.nodesFromSchema

      createListNodeView

      const createListNodeView: NodeViewConstructor;

      A simple node view that is used to render the list node. It ensures that the list node get updated when its marker styling should changes.


      createListClipboardPlugin()

      function createListClipboardPlugin(schema: Schema): Plugin;

      Serialize list nodes into native HTML list elements (i.e. <ul>, <ol>) to clipboard. See ListDOMSerializer.

      Parameters

      ParameterType
      schemaSchema (opens in a new tab)

      Returns

      Plugin (opens in a new tab)


      createListEventPlugin()

      function createListEventPlugin(): Plugin;

      Handle DOM events for list.

      Returns

      Plugin (opens in a new tab)


      createListPlugins()

      function createListPlugins(options: {
        schema: Schema;
      }): Plugin<any>[];

      This function returns an array of plugins that are required for list to work.

      The plugins are shown below. You can pick and choose which plugins you want to use if you want to customize some behavior.

      Parameters

      ParameterType
      options{ schema: Schema (opens in a new tab); }
      options.schemaSchema (opens in a new tab)

      Returns

      Plugin (opens in a new tab)<any>[]


      createListRenderingPlugin()

      function createListRenderingPlugin(): Plugin;

      Handle the list node rendering.

      Returns

      Plugin (opens in a new tab)


      createSafariInputMethodWorkaroundPlugin()

      function createSafariInputMethodWorkaroundPlugin(): Plugin;

      Return a plugin as a workaround for a bug in Safari that causes the composition based IME to remove the empty HTML element with CSS position: relative.

      See also https://github.com/ProseMirror/prosemirror/issues/934 (opens in a new tab)

      Returns

      Plugin (opens in a new tab)

      Schema

      ListAttributes

      Properties

      PropertyType
      checked?boolean
      collapsed?boolean
      kind?string
      order?null | number

      ListToDOMOptions

      Properties

      PropertyTypeDefault valueDescription
      getAttributes?(node: Node (opens in a new tab)) => Record (opens in a new tab)<string, undefined | string>undefinedAn optional function to get the attributes added to HTML element.
      getMarkers?(node: Node (opens in a new tab)) => | null | DOMOutputSpec (opens in a new tab)[]undefinedAn optional function to get elements inside <div class="list-marker">. Return null to hide the marker.
      nativeList?booleanfalseIf true, the list will be rendered as a native <ul> or <ol> element. You might want to use joinListElements to join the list elements afterward.
      nodeNode (opens in a new tab)undefinedThe list node to be rendered.

      ProsemirrorNodeJSON

      Properties

      PropertyType
      attrs?Attrs (opens in a new tab)
      content?ProsemirrorNodeJSON[]
      marks?( | string | { attrs?: Attrs (opens in a new tab); type: string; })[]
      text?string
      typestring

      ListKind

      type ListKind = "bullet" | "ordered" | "task" | "toggle";

      All default list node kinds.


      createListSpec()

      function createListSpec(): NodeSpec;

      Return the spec for list node.

      Returns

      NodeSpec (opens in a new tab)


      createParseDomRules()

      function createParseDomRules(): readonly TagParseRule[];

      Returns a set of rules for parsing HTML into ProseMirror list nodes.

      Returns

      readonly TagParseRule (opens in a new tab)[]


      listToDOM()

      function listToDOM(options: ListToDOMOptions): DOMOutputSpec;

      Renders a list node to DOM output spec.

      Parameters

      ParameterType
      optionsListToDOMOptions

      Returns

      DOMOutputSpec (opens in a new tab)