# prosemirror_ex v0.3.0 - Table of Contents

ProseMirror document model and transforms for Elixir. Full port of prosemirror-model and prosemirror-transform with wire-format JSON compatibility for collaborative editing.

## Modules

- [ProsemirrorEx](ProsemirrorEx.md): ProseMirror document model for Elixir.
- [ProsemirrorEx.Authority](ProsemirrorEx.Authority.md): Functional core for a collaborative editing authority server.
- [ProsemirrorEx.Authority.Server](ProsemirrorEx.Authority.Server.md): GenServer wrapper around `ProsemirrorEx.Authority`.
- [ProsemirrorEx.Model](ProsemirrorEx.Model.md): Core document model types and operations.
- [ProsemirrorEx.Model.ContentMatch](ProsemirrorEx.Model.ContentMatch.md): Instances of this struct represent a match state of a node type's
content expression, and can be used to find out whether further
content matches here, and whether a given position is a valid end
of the node.
- [ProsemirrorEx.Model.Diff](ProsemirrorEx.Model.Diff.md): Finds the first and last differing positions between two fragments.
- [ProsemirrorEx.Model.Fragment](ProsemirrorEx.Model.Fragment.md): A fragment represents a node's collection of child nodes.
- [ProsemirrorEx.Model.Mark](ProsemirrorEx.Model.Mark.md): A mark is a piece of information that can be attached to a node, such as
it being emphasized, in code font, or a link. It has a type and optionally
a set of attributes that provide further information (such as the target of
the link). Marks are created through a Schema, which controls which types
exist and which attributes they have.

- [ProsemirrorEx.Model.MarkType](ProsemirrorEx.Model.MarkType.md): A mark type is a specification for a type of mark in a schema.
- [ProsemirrorEx.Model.Node](ProsemirrorEx.Model.Node.md): Represents a ProseMirror document node. It holds a type,
optional attributes, a content Fragment, marks, and (for text nodes) text.

- [ProsemirrorEx.Model.NodeRange](ProsemirrorEx.Model.NodeRange.md): Represents a flat range of content, i.e. one that starts and ends in the
same node.
- [ProsemirrorEx.Model.NodeType](ProsemirrorEx.Model.NodeType.md): A node type is a specification for a type of node in a schema.
- [ProsemirrorEx.Model.Replace](ProsemirrorEx.Model.Replace.md): The replace algorithm for ProseMirror documents.
- [ProsemirrorEx.Model.ResolvedPos](ProsemirrorEx.Model.ResolvedPos.md): Represents a resolved position in a ProseMirror document.
- [ProsemirrorEx.Model.Schema](ProsemirrorEx.Model.Schema.md): A document schema. Holds node and mark type objects for the nodes
and marks that may occur in conforming documents, and provides
functionality for creating and deserializing such documents.
- [ProsemirrorEx.Model.Slice](ProsemirrorEx.Model.Slice.md): A slice represents a piece cut out of a larger document. It stores not only
a fragment, but also the depth up to which nodes on both sides are 'open'
(cut through).
- [ProsemirrorEx.Schema](ProsemirrorEx.Schema.md): Optional convenience schemas matching the ProseMirror JavaScript packages
[`prosemirror-schema-basic`](https://github.com/ProseMirror/prosemirror-schema-basic)
and [`prosemirror-schema-list`](https://github.com/ProseMirror/prosemirror-schema-list).
- [ProsemirrorEx.Schema.Basic](ProsemirrorEx.Schema.Basic.md): Node and mark specifications from
[`prosemirror-schema-basic`](https://github.com/ProseMirror/prosemirror-schema-basic).
- [ProsemirrorEx.Schema.List](ProsemirrorEx.Schema.List.md): DX sugar porting [prosemirror-schema-list](https://github.com/ProseMirror/prosemirror-schema-list)
node specs and `addListNodes/3`.
- [ProsemirrorEx.Transform.AddMarkStep](ProsemirrorEx.Transform.AddMarkStep.md): Add a mark to all inline content between two positions.
- [ProsemirrorEx.Transform.AddNodeMarkStep](ProsemirrorEx.Transform.AddNodeMarkStep.md): Add a mark to a specific node.
- [ProsemirrorEx.Transform.AttrStep](ProsemirrorEx.Transform.AttrStep.md): Update an attribute in a specific node.
- [ProsemirrorEx.Transform.DocAttrStep](ProsemirrorEx.Transform.DocAttrStep.md): Update an attribute in the doc node.
- [ProsemirrorEx.Transform.MapResult](ProsemirrorEx.Transform.MapResult.md): An object representing a mapped position with extra information.
- [ProsemirrorEx.Transform.Mappable](ProsemirrorEx.Transform.Mappable.md): Protocol for things that positions can be mapped through.
- [ProsemirrorEx.Transform.Mapping](ProsemirrorEx.Transform.Mapping.md): A mapping represents a pipeline of zero or more StepMaps. It has special
provisions for losslessly handling mapping positions through a series of
steps in which some steps are inverted versions of earlier steps.
- [ProsemirrorEx.Transform.Mark](ProsemirrorEx.Transform.Mark.md): Helper functions for adding and removing marks via Transform steps.
- [ProsemirrorEx.Transform.RemoveMarkStep](ProsemirrorEx.Transform.RemoveMarkStep.md): Remove a mark from all inline content between two positions.
- [ProsemirrorEx.Transform.RemoveNodeMarkStep](ProsemirrorEx.Transform.RemoveNodeMarkStep.md): Remove a mark from a specific node.
- [ProsemirrorEx.Transform.Replace](ProsemirrorEx.Transform.Replace.md): Fitter algorithm and replace helpers for fitting slices into document gaps.
- [ProsemirrorEx.Transform.ReplaceAroundStep](ProsemirrorEx.Transform.ReplaceAroundStep.md): Replace a part of the document with a slice of content, but
preserve a range of the replaced content by moving it into the slice.
- [ProsemirrorEx.Transform.ReplaceStep](ProsemirrorEx.Transform.ReplaceStep.md): Replace a part of the document with a slice of new content.
- [ProsemirrorEx.Transform.Step](ProsemirrorEx.Transform.Step.md): A step object represents an atomic change. It generally applies only to the
document it was created for, since the positions stored in it will only make
sense for that document.
- [ProsemirrorEx.Transform.StepMap](ProsemirrorEx.Transform.StepMap.md): A map describing the deletions and insertions made by a step, which
can be used to find the correspondence between positions in the
pre-step version of a document and the same position in the post-step version.
- [ProsemirrorEx.Transform.StepResult](ProsemirrorEx.Transform.StepResult.md): The result of applying a step. Contains either a new document or a failure value.
- [ProsemirrorEx.Transform.Structure](ProsemirrorEx.Transform.Structure.md): Structural transform operations: lift, wrap, split, join, and
related utility functions.
- [ProsemirrorEx.Transform.Transform](ProsemirrorEx.Transform.Transform.md): Abstraction to build up and track an array of steps representing a
document transformation.

- Exceptions
  - [ProsemirrorEx.Model.RangeError](ProsemirrorEx.Model.RangeError.md): Error raised when a position is outside valid range.
  - [ProsemirrorEx.Model.ReplaceError](ProsemirrorEx.Model.ReplaceError.md)
  - [ProsemirrorEx.Transform.TransformError](ProsemirrorEx.Transform.TransformError.md): Error raised when a transform operation fails.

