# y_ex v0.12.1 - Table of Contents > Elixir wrapper for Yjs ## Modules - [Yex](Yex.md): Yex is wrapper library for the Yjs CRDT library. - [Yex.Array](Yex.Array.md): A shareable Array-like type that supports efficient insert/delete of elements at any position. This module provides functionality for collaborative array manipulation with support for concurrent modifications and automatic conflict resolution. - [Yex.ArrayEvent](Yex.ArrayEvent.md): Event when Array type changes - [Yex.ArrayPrelim](Yex.ArrayPrelim.md): A preliminary array. It can be used to early initialize the contents of a Array. - [Yex.Awareness](Yex.Awareness.md): Awareness is an optional feature that works well together with Yjs. - [Yex.Doc](Yex.Doc.md): Document module. - [Yex.Doc.Options](Yex.Doc.Options.md): Document options. - [Yex.DocServer](Yex.DocServer.md): Define a `Yex.DocServer` process. - [Yex.DocServer.State](Yex.DocServer.State.md): Provides the `State` struct and functions to manage the internal state of `Yex.DocServer`. - [Yex.Map](Yex.Map.md): A shareable Map type that supports concurrent modifications with automatic conflict resolution. This module provides functionality for collaborative key-value pair management with support for nested shared types and JSON compatibility. - [Yex.MapEvent](Yex.MapEvent.md): Event when Map type changes - [Yex.MapPrelim](Yex.MapPrelim.md): A preliminary map representation used for initializing map content. This module provides functionality for creating map content before it is inserted into a shared document. - [Yex.Output](Yex.Output.md): Protocol for converting shared types to their preliminary representations. This is useful for serialization and data transfer between different parts of the system. - [Yex.PrelimType](Yex.PrelimType.md): A type that represents preliminary data structures used in Yex. This is used to represent data that can be serialized or transferred without the full shared type overhead. - [Yex.SharedType](Yex.SharedType.md): The SharedType protocol defines the behavior of shared types in Yex. This module provides functionality for observing changes to shared types, including arrays, maps, text, and XML nodes. - [Yex.Snapshot](Yex.Snapshot.md): Opaque snapshot of a document state at a specific point in time. - [Yex.StickyIndex](Yex.StickyIndex.md): A sticky index provides position references that are unaffected by document changes, based on the Yjs model. It maintains its relative position when placed before or after specific characters or elements. - [Yex.Subscription](Yex.Subscription.md): Provides subscription functionality for monitoring changes in shared types. This module implements features for observing changes in documents and other shared types, and receiving notifications when changes occur. - [Yex.Sync](Yex.Sync.md): Yex.Sync provides functions to handle the synchronization protocol for Yex documents. - [Yex.Sync.SharedDoc](Yex.Sync.SharedDoc.md): This process handles messages for yjs protocol sync and awareness. https://github.com/yjs/y-protocols - [Yex.Sync.SharedDoc.PersistenceBehaviour](Yex.Sync.SharedDoc.PersistenceBehaviour.md): Persistence behavior for SharedDoc - [Yex.Text](Yex.Text.md): A shareable type that is optimized for shared editing on text. This module provides functionality for collaborative text editing with support for rich text formatting. - [Yex.TextEvent](Yex.TextEvent.md): Event when Text type changes - [Yex.TextPrelim](Yex.TextPrelim.md): A preliminary text representation used for initializing text content. This module provides functionality for creating text content with formatting before it is inserted into a shared document. - [Yex.UndoManager](Yex.UndoManager.md): Represents a Y.UndoManager instance. - [Yex.UndoManager.Options](Yex.UndoManager.Options.md): Options for creating an UndoManager. - [Yex.WeakLink](Yex.WeakLink.md): ### ⚠️ Experimental - [Yex.WeakPrelim](Yex.WeakPrelim.md): ### ⚠️ Experimental - [Yex.Xml](Yex.Xml.md): Defines a protocol for XML node operations. This protocol provides basic navigation and string conversion functionality for XML nodes. - [Yex.XmlElement](Yex.XmlElement.md): A shared type that represents an XML node. Provides functionality for manipulating XML elements including child nodes, attributes, and navigation. - [Yex.XmlElementPrelim](Yex.XmlElementPrelim.md): A preliminary xml element. It can be used to early initialize the contents of a XmlElement. - [Yex.XmlEvent](Yex.XmlEvent.md): Event when XMLFragment/Element type changes - [Yex.XmlFragment](Yex.XmlFragment.md): A shared type to manage a collection of XML nodes. Provides functionality for manipulating XML fragments including child nodes and navigation. - [Yex.XmlFragmentPrelim](Yex.XmlFragmentPrelim.md): A preliminary xml fragment. It can be used to early initialize the contents of a XmlFragment. - [Yex.XmlText](Yex.XmlText.md): A shared type that represents an XML text node. Extends Y.Text to provide functionality for manipulating text content within XML nodes, including text formatting and navigation. - [Yex.XmlTextEvent](Yex.XmlTextEvent.md): Event when Text type changes - [Yex.XmlTextPrelim](Yex.XmlTextPrelim.md): A preliminary xml text. It can be used to early initialize the contents of a XmlText. - Exceptions - [Yex.DeletedSharedTypeError](Yex.DeletedSharedTypeError.md) - [Yex.TransactionAcqError](Yex.TransactionAcqError.md): Raised when a transaction on a document cannot be acquired because another transaction is already open, for example inside `Yex.Doc.transaction/3` or while another process holds one.