0.4.4 • Published 4 years ago

flowerpiece v0.4.4

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

Flower Piece (WIP)

A Rich Text Editor Data Model

Warning: Before 1.0.0 release, the api may change. It's not prepared for production now.

Build Status codecov

Features

Rich Text Manipulation Operations
Build-in Redo/Undo
Statistic / Counts

installing

Using npm:

$ npm install flowerpiece

Using yarn:

$ yarn add flowerpiece

Examples

import { Model } from 'flowerpiece'

cconst model = new Model()
const { operations, queries } = model

const changes = model.change((operations) => {
  operations.insert(0, 'test', {})
})

Model

operations

insert(offset: number, length: number, text: string, meta: PieceMeta | null): DocumentChange

insertText(offset: number, text: string, meta: PieceMeta | null): DocumentChange

insertLineBrea(offset: number, meta: PieceMeta | null): DocumentChange

insertLine(offset: number, meta: PieceMeta | null): DocumentChange

insertNonText(offset: number, meta: PieceMeta): DocumentChange

delete(offset: number, length: number): DocumentChange

deleteLine(lineNumber: number): DocumentChange

format(offset: number, length: number, meta: PieceMeta): DocumentChange

formatText(offset: number, length: number, meta: PieceMeta): DocumentChange

formatNonText(offset: number, length: number, meta: PieceMeta): DocumentChange

formatLine(lineNumber: number, meta: PieceMeta): DocumentChange

formatInLine(lineNumber: number, meta: PieceMeta): DocumentChange

formatTextInLine(lineNumber: number, meta: PieceMeta): DocumentChange

formatNonTextInLine(linetNumber: number, meat: PieceMeta): DocumentChange

queries

getMaxOffset()

getCountOfCharacter()

getCountOfLine()

getAllText()

getLine(lineNumber: number): Piece[]

getLInes(): Line[]

getLineMeta(lineNumber: number): PieceMeta | null

getPieces(): Piece[]

forEachLine(callback: (line: IPiece[], lineNumber: number)

Methods

change(callback: (operations: operations) => void)

redo()

undo()

Piece

A Piece represet a piece content of the whole document

interface Piece {
  // Text Content
  text: string
  // Length of this piece
  length: number
  // Meta info of this piece
  meta: PieceMeta | null
}

Line

A Line is a list of pieces

interface Line {
  meta: PieceMeta
  pieces: Piece[]
}

Diff

Diff indicate which line of content is newly added, removed or modified after operation

interface Diff {
  // Diff type
  type: 'insert' | 'remove' | 'replace'
  // Which line of content has change
  lineNumber: number
}

PieceMeta

Must Be Plain Object

interface PieceMeta {
  [key: string]: any
}

DocumentChange

interface DocumentChange {
  type: 'insert' | 'delete' | 'format'
  diffs: Diff[]
  startOffset: number
  length: number
}
0.4.4

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.0

4 years ago

0.3.1

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.3

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.0.17

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.13

4 years ago

0.0.14

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago