@atlaskit/renderer
Version:
Renderer component
34 lines (33 loc) • 1.32 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
/* eslint-disable @atlaskit/platform/no-direct-document-usage -- draft selection uses document range APIs */
export var dataAttributes = function dataAttributes(_ref) {
var from = _ref.from,
to = _ref.to;
return _defineProperty(_defineProperty(_defineProperty({}, 'data-annotation-draft-mark', true), 'data-draft-start-at', from), 'data-draft-end-at', to);
};
var buildDataAttributesQuery = function buildDataAttributesQuery(pos) {
var a = dataAttributes(pos);
return Object.entries(a).map(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
k = _ref4[0],
v = _ref4[1];
return "[".concat(k, "=\"").concat(v, "\"]");
}).join('');
};
export var updateWindowSelectionAroundDraft = function updateWindowSelectionAroundDraft(pos) {
var sel = window.getSelection();
if (!sel) {
return false;
}
var draftNodes = document.querySelectorAll(buildDataAttributesQuery(pos));
if (!draftNodes || draftNodes.length === 0) {
return false;
}
sel.removeAllRanges();
var range = document.createRange();
range.setStart(draftNodes[0], 0);
range.setEndAfter(draftNodes[draftNodes.length - 1]);
sel.addRange(range);
return true;
};