UNPKG

@atlaskit/renderer

Version:
32 lines (31 loc) 914 B
/* eslint-disable @atlaskit/platform/no-direct-document-usage -- draft selection uses document range APIs */ export const dataAttributes = ({ from, to }) => { return { ['data-annotation-draft-mark']: true, ['data-draft-start-at']: from, ['data-draft-end-at']: to }; }; const buildDataAttributesQuery = pos => { const a = dataAttributes(pos); return Object.entries(a).map(([k, v]) => `[${k}="${v}"]`).join(''); }; export const updateWindowSelectionAroundDraft = pos => { const sel = window.getSelection(); if (!sel) { return false; } const draftNodes = document.querySelectorAll(buildDataAttributesQuery(pos)); if (!draftNodes || draftNodes.length === 0) { return false; } sel.removeAllRanges(); const range = document.createRange(); range.setStart(draftNodes[0], 0); range.setEndAfter(draftNodes[draftNodes.length - 1]); sel.addRange(range); return true; };