UNPKG

substance

Version:

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.

235 lines (205 loc) 4.18 kB
import { EditingInterface } from 'substance' export const H1_TEXT = 'h1:abcdefg' export function _h1(doc, body) { doc.create({ type: 'heading', id: 'h1', content: H1_TEXT, level: 1 }) body.show('h1') } export const H2_TEXT = 'h2:lmnopqrs' export function _h2(doc, body) { doc.create({ type: 'heading', id: 'h2', content: H2_TEXT, level:2 }) body.show('h2') } export const P1_TEXT = 'p1:abcdef' export function _p1(doc, body) { doc.create({ type: 'paragraph', id: 'p1', content: P1_TEXT }) body.show('p1') } export const P2_TEXT = 'p2:ghijk' export function _p2(doc, body) { doc.create({ type: 'paragraph', id: 'p2', content: P2_TEXT }) body.show('p2') } export function _empty(doc, body) { doc.create({ type: 'paragraph', id: 'empty', content: '' }) body.show('empty') } export function _s1(doc) { doc.create({ type: 'strong', id: 's1', start: { path: ['p1', 'content'], offset: 3, }, end: { offset: 5 } }) } export function _il1(doc) { let tx = new EditingInterface(doc) tx.setSelection({ type: 'property', path: ['p1', 'content'], startOffset: 3, containerId: 'body' }) tx.insertInlineNode({ type: 'test-inline-node', id: 'il1', content: 'X' }) } export const LI1_TEXT = 'l1-1:abcdef' export const LI2_TEXT = 'l1-2:0123456' export const LI3_TEXT = 'l1-3:ghij' // list with two items export function _l1(doc, body) { doc.create({ type: 'list', id: 'l1' }) body.show('l1') } export function _l11(doc) { const l1 = doc.get('l1') doc.create({ type: 'list-item', id: 'l1-1', content: LI1_TEXT }) l1.appendItem('l1-1') } export function _l12(doc) { const l1 = doc.get('l1') doc.create({ type: 'list-item', id: 'l1-2', content: LI2_TEXT }) l1.appendItem('l1-2') } export function _l13(doc) { const l1 = doc.get('l1') doc.create({ type: 'list-item', id: 'l1-3', content: LI3_TEXT }) l1.appendItem('l1-3') } export function _l1_empty(doc) { const l1 = doc.get('l1') doc.create({ type: 'list-item', id: 'l1-empty', content: '' }) l1.appendItem('l1-empty') } export function _li1plus(doc) { doc.set(['l1-1', 'level'], 2) } export const LI21_TEXT = 'l2-1:abcdef' export const LI22_TEXT = 'l2-2:0123456' export function _l2(doc, body) { doc.create({ type: 'list', id: 'l2' }) body.show('l2') } export function _l21(doc) { const l2 = doc.get('l2') doc.create({ type: 'list-item', id: 'l2-1', content: LI21_TEXT }) l2.appendItem('l2-1') } export function _l22(doc) { const l2 = doc.get('l2') doc.create({ type: 'list-item', id: 'l2-2', content: LI22_TEXT }) l2.appendItem('l2-2') } export function _l1_single(doc, body) { doc.create({ type: 'list-item', id: 'l1-1', content: LI1_TEXT }) doc.create({ type: 'list', id: 'l1', items: ['l1-1'] }) body.show('l1') } export function _block1(doc, body) { doc.create({ type: 'test-block', id: 'block1' }) body.show('block1') } export function _block2(doc, body) { doc.create({ type: 'test-block', id: 'block2' }) body.show('block2') } export const IN1_TITLE = 'TITLE' export const IN1_BODY = 'BODY' export const IN1_CAPTION = 'CAPTION' export function _in1(doc, body) { doc.create({ type: 'structured-node', id: 'in1', title: IN1_TITLE, body: IN1_BODY, caption: IN1_CAPTION }) body.show('in1') } export const T_CONTENT = [['A1', 'B1'], ['A2', 'B2']] export function _t1(doc, body) { doc.create({type: 'table-cell', id: 't1_a1', content:T_CONTENT[0][0]}) doc.create({type: 'table-cell', id: 't1_b1', content:T_CONTENT[0][1]}) doc.create({type: 'table-cell', id: 't1_a2', content:T_CONTENT[1][0]}) doc.create({type: 'table-cell', id: 't1_b2', content:T_CONTENT[1][1]}) body.show(doc.create({ type: 'table', id: 't1', cells: [['t1_a1', 't1_b1'], ['t1_a2', 't1_b2']] })) } export function _t1_sparse(doc, body) { _t1(doc, body) doc.set(['t1', 'cells'], [['t1_a1', null], [null, 't1_b2']]) }