How to use the slate.Block function in slate

To help you get started, we’ve selected a few slate examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github olymp / olymp / external / slate / slate-writer.js View on Github external
if (e.key === 'Enter') {
        var value = change.value;
        var document = value.document,
            startKey = value.startKey,
            startBlock = value.startBlock;

        if (!startBlock || startBlock.type === 'list-item' || startBlock.type === 'code' || startBlock.type === 'code-line' || startBlock.type === 'paragraph') {
          return undefined;
        } else if (startBlock && !startBlock.isVoid) {
          return change.collapseToEndOf(startBlock).insertBlock(_slate.Block.create({ type: 'paragraph' })).collapseToEnd();
        } else if (startBlock && startBlock.isVoid) {
          var nextBlock = document.getNextBlock(startKey);
          var prevBlock = document.getPreviousBlock(startKey);
          var isFocusedStart = value.selection.hasEdgeAtStartOf(startBlock);
          var isFocusedEnd = value.selection.hasEdgeAtEndOf(startBlock);
          var blockToInsert = _slate.Block.create({ type: 'paragraph' });

          // Void block at the end of the document
          if (!nextBlock) {
            if (isFocusedEnd) {
              return change.collapseToEndOf(startBlock).insertBlock(blockToInsert).collapseToEnd();
            }
            if (prevBlock) {
              var index = document.nodes.indexOf(prevBlock);
              return change.collapseToEndOf(prevBlock).insertNodeByKey(document.key, index + 1, blockToInsert).collapseToStartOf(startBlock);
            }
            return change.collapseToStartOf(startBlock).insertNodeByKey(document.key, 0, blockToInsert);
          }
          // Void block between two blocks
          if (nextBlock && prevBlock) {
            if (isFocusedStart) {
              var _index = document.nodes.indexOf(prevBlock);
github olymp / olymp / packages / slate / plugins / paragrapher.es6 View on Github external
match(node) {
            return (
              Slate.Block.isBlock(node) &&
              node.type !== 'paragraph' &&
              node.type !== 'block-quote' &&
              node.type !== 'link' &&
              node.type !== 'bulleted-list' &&
              node.type !== 'bulleted-list-item' &&
              node.type.indexOf('heading') !== 0 &&
              node.type !== 'numbered-list' &&
              node.type !== 'numbered-list-item' &&
              node.isVoid === false
            );
          },
          validate(node) {
github olymp / olymp / packages / slate / plugins / accordion.es6 View on Github external
match(node) {
            return Slate.Block.isBlock(node) && node.type === 'accordion' && !node.data.get('id');
          },
          validate(node) {
github GitbookIO / slate-edit-table / lib / makeSchema.js View on Github external
function makeEmptyRow(opts) {
    return Slate.Block.create({
        type: opts.typeRow,
        nodes: List([makeEmptyCell(opts)])
    });
}
github olymp / olymp / external / slate / add-block.js View on Github external
defaultNodes.forEach(function (item, index) {
          if (typeof item === 'string' && schema.nodes[item]) {
            transform = addBlock(value, schema.nodes[item].slate, schema, block.key, index, transform);
          } else if (item.type && schema.nodes[item.type]) {
            transform = addBlock(value, item, schema, block.key, index, transform);
          } else if (_slate.Text.isText(item) || _slate.Block.isBlock(item) || _slate.Inline.isInline(item)) {
            transform = transform.insertNodeByKey(block.key, index, item);
          } else {
            transform = block.kind === 'block' ? transform.insertNodeByKey(block.key, index, _slate.Block.create(item)) : transform.insertNodeByKey(block.key, index, _slate.Inline.create(item));
          }
        });
      }
github olymp / olymp / external / slate / slate-navigator.js View on Github external
_this.onChange(value.change().selectAll().delete().insertNodeByKey(value.document.key, 0, {
          type: 'image',
          kind: 'block',
          isVoid: true
        }).insertNodeByKey(value.document.key, 1, {
          type: 'containerText',
          kind: 'block',
          isVoid: false,
          nodes: [_slate.Text.create('Text')]
        }).focus());
      } else if (type === 'banner') {
        _this.onChange(value.change().selectAll().delete().insertNodeByKey(value.document.key, 0, {
          type: 'banner',
          kind: 'block',
          isVoid: false,
          nodes: [_slate.Block.create({
            type: 'paragraph',
            nodes: [_slate.Text.create('Titel')]
          })]
        }).insertNodeByKey(value.document.key, 1, {
          type: 'containerText',
          kind: 'block',
          isVoid: false,
          nodes: [_slate.Block.create({ type: 'paragraph', nodes: [_slate.Text.create('Text')] })]
        }).focus());
      } else if (type === 'carousel') {
        _this.onChange(value.change().selectAll().delete().insertNodeByKey(value.document.key, 0, {
          type: 'carousel',
          kind: 'block',
          isVoid: true
        }).insertNodeByKey(value.document.key, 1, {
          type: 'banner',
github GitbookIO / slate-trailing-block / lib / makeSchema.js View on Github external
normalize(transform, node, value) {
                    const lastIndex = node.nodes.count();
                    const block = Slate.Block.create({
                        type: opts.type
                    });

                    return transform.insertNodeByKey(node.key, lastIndex, block);
                }
            }
github GitbookIO / slate-edit-table / lib / onModEnter.js View on Github external
function onModEnter(event, change, opts) {
    const { state } = change;
    if (!state.isCollapsed) {
        return;
    }

    event.preventDefault();

    const exitBlock = Slate.Block.create({
        type: opts.exitBlockType,
        nodes: [Slate.Text.create('')]
    });

    const cell = state.startBlock;
    const table = TablePosition.create(state, cell).table;
    const tableParent = state.document.getParent(table.key);
    const insertionIndex = tableParent.nodes.indexOf(table) + 1;

    return change
    .insertNodeByKey(tableParent.key, insertionIndex, exitBlock)
    .collapseToStartOf(exitBlock);
}
github olymp / olymp / external / slate / defaults / templates.js View on Github external
}).insertNodeByKey(value.document.key, 1, {
          type: 'containerText',
          kind: 'block',
          isVoid: false,
          nodes: [_slate.Block.create({ type: 'paragraph', nodes: [Text.create('Text')] })]
        }).focus());
      } else if (type === 'carousel') {
        _this.onChange(value.change().selectAll().delete().insertNodeByKey(value.document.key, 0, {
          type: 'carousel',
          kind: 'block',
          isVoid: true
        }).insertNodeByKey(value.document.key, 1, {
          type: 'banner',
          kind: 'block',
          isVoid: false,
          nodes: [_slate.Block.create({
            type: 'paragraph',
            nodes: [Text.create('Titel')]
          })]
        }).insertNodeByKey(value.document.key, 2, _slate.Block.create({ type: 'paragraph' })).insertNodeByKey(value.document.key, 3, {
          type: 'containerText',
          kind: 'block',
          isVoid: false,
          nodes: [Text.create('Text')]
        }).focus());
      }
    }, _this.getItems = function (block) {
      var blockTypes = _this.props.blockTypes;
github olymp / olymp / external / slate / add-block.js View on Github external
key = block.key,
      kind = block.kind,
      data = block.data;

  if (!type) {
    type = key;
  }
  if (kind === 'inline' || !kind && isVoid) {
    return _slate.Inline.create({
      type: type,
      isVoid: isVoid,
      kind: kind,
      data: data || {}
    });
  }
  return _slate.Block.create({
    type: type,
    isVoid: isVoid,
    kind: kind,
    data: data || {}
  });
};
exports.default = addBlock;