const assertRange = function (root, range, startPath, startOffset, endPath, endOffset) { const sc = Hierarchy.follow(Element.fromDom(root), startPath).getOrDie(); const ec = Hierarchy.follow(Element.fromDom(root), endPath).getOrDie(); const actualRange = range.getOrDie('Should be some'); Assertions.assertDomEq('Should be expected start container', sc, Element.fromDom(actualRange.startContainer)); Assertions.assertEq('Should be expected start offset', startOffset, actualRange.startOffset); Assertions.assertDomEq('Should be expected end container', ec, Element.fromDom(actualRange.endContainer)); Assertions.assertEq('Should be expected end offset', endOffset, actualRange.endOffset); };
return Chain.mapper(function (editor) { const startContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), startPath).getOrDie(); const endContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), endPath).getOrDie(); const rng = editor.dom.createRng(); rng.setStart(startContainer.dom(), startOffset); rng.setEnd(endContainer.dom(), endOffset); return ExpandRange.expandRng(editor, rng, format, remove); });
return Chain.op(function (editor: any) { const startContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), startPath).getOrDie(); const endContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), endPath).getOrDie(); const rng = editor.dom.createRng(); rng.setStart(startContainer.dom(), startOffset); rng.setEnd(endContainer.dom(), endOffset); editor.selection.setRng(rng); });
const setSelection = function (editor, start, soffset, finish, foffset) { const sc = Hierarchy.follow(Element.fromDom(editor.getBody()), start).getOrDie(); const fc = Hierarchy.follow(Element.fromDom(editor.getBody()), start).getOrDie(); const rng = document.createRange(); rng.setStart(sc.dom(), soffset); rng.setEnd(fc.dom(), foffset); editor.selection.setRng(rng); };
return Chain.mapper(function (viewBlock) { const sc = Hierarchy.follow(Element.fromDom(viewBlock.get()), startPath).getOrDie(); const ec = Hierarchy.follow(Element.fromDom(viewBlock.get()), endPath).getOrDie(); const rng = document.createRange(); rng.setStart(sc.dom(), startOffset); rng.setEnd(ec.dom(), endOffset); return SelectionUtils.hasAllContentsSelected(Element.fromDom(viewBlock.get()), rng); });
return Chain.op(function (editor: any) { const startContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), startPath).getOrDie(); const endContainer = Hierarchy.follow(Element.fromDom(editor.getBody()), endPath).getOrDie(); const rng = editor.selection.getRng(); Assertions.assertDomEq('Should be expected from start container', startContainer, Element.fromDom(rng.startContainer)); Assertions.assertEq('Should be expected from start offset', startOffset, rng.startOffset); Assertions.assertDomEq('Should be expected end container', endContainer, Element.fromDom(rng.endContainer)); Assertions.assertEq('Should be expected end offset', endOffset, rng.endOffset); });
return Chain.op(function (blockBoundaryOption: Option<any>) { const fromContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), fromPath).getOrDie(); const toContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), toPath).getOrDie(); const blockBoundary = blockBoundaryOption.getOrDie(); Assertions.assertDomEq('Should be expected from container', fromContainer, Element.fromDom(blockBoundary.from().position().container())); Assertions.assertEq('Should be expected from offset', fromOffset, blockBoundary.from().position().offset()); Assertions.assertDomEq('Should be expected to container', toContainer, Element.fromDom(blockBoundary.to().position().container())); Assertions.assertEq('Should be expected to offset', toOffset, blockBoundary.to().position().offset()); });
return Chain.mapper(function (viewBlock: any) { const sc = Hierarchy.follow(Element.fromDom(viewBlock.get()), startPath).getOrDie(); const ec = Hierarchy.follow(Element.fromDom(viewBlock.get()), endPath).getOrDie(); const rng = document.createRange(); rng.setStart(sc.dom(), startOffset); rng.setEnd(ec.dom(), endOffset); return NormalizeRange.normalize(DOMUtils(document, { root_element: viewBlock.get() }), rng); });
return Chain.mapper(function (viewBlock) { const sc = Hierarchy.follow(Element.fromDom(viewBlock.get()), startPath).getOrDie(); const ec = Hierarchy.follow(Element.fromDom(viewBlock.get()), endPath).getOrDie(); const rng = document.createRange(); rng.setStart(sc.dom(), startOffset); rng.setEnd(ec.dom(), endOffset); return FragmentReader.read(Element.fromDom(viewBlock.get()), [rng]); });
return Chain.mapper(function () { const elm = Element.fromHtml(html); const sc = Hierarchy.follow(elm, startPath).getOrDie(); const ec = Hierarchy.follow(elm, endPath).getOrDie(); const rng = document.createRange(); rng.setStart(sc.dom(), startOffset); rng.setEnd(ec.dom(), endOffset); return TableDeleteAction.getActionFromRange(elm, rng); });