Abstract:
Solutions, systems, and techniques for applying 2-dimensional changes to a shared document are discussed. The document is divided into vertical columns of a particular width, each column represented as a one-dimensional vector that is a sequential list of blocks in that column, each block representing a content item included in the document. Each block has a starting column, a block height, and a block width indicated by how many columns the block occupies. Each block has row indexes that represent a relative position of the block in each column it occupies. A document modification command is represented as transfer functions, each transfer function corresponding to a document column. The transfer functions are applied to the document columns to alter a row index of block(s) in the corresponding column(s), thereby altering the relative position of a block with respect to other blocks in that column.