Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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);
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) {
match(node) {
return Slate.Block.isBlock(node) && node.type === 'accordion' && !node.data.get('id');
},
validate(node) {
function makeEmptyRow(opts) {
return Slate.Block.create({
type: opts.typeRow,
nodes: List([makeEmptyCell(opts)])
});
}
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));
}
});
}
_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',
normalize(transform, node, value) {
const lastIndex = node.nodes.count();
const block = Slate.Block.create({
type: opts.type
});
return transform.insertNodeByKey(node.key, lastIndex, block);
}
}
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);
}
}).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;
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;