// 获取评论内容中标签、@同事相关信息
export var getCommentInfo = function getCommentInfo(html) {
  var emojiStrList = html === null || html === void 0 ? void 0 : html.match(/<span class="insertHtml insert-emoji"(.+?)<\/span>/g),
    // 插入的表情
    tagStrList = html === null || html === void 0 ? void 0 : html.match(/<span class="insertHtml tag"(.+?)<\/span>/g),
    // 插入的标签
    atStrList = html === null || html === void 0 ? void 0 : html.match(/<span class="insertHtml at"(.+?)<\/span>/g); // @的同事

  // 获取标签内容
  var tagList = [];
  if (tagStrList) {
    tagList = tagStrList.join('').match(/#(.+?)#/g) || [];
  }

  // 获取被@的同事信息
  var atList = [];
  if (atStrList) {
    var _atStrList$join$match;
    (_atStrList$join$match = atStrList.join('').match(/<a(.+?)<\/a>/g)) === null || _atStrList$join$match === void 0 ? void 0 : _atStrList$join$match.map(function (item) {
      // 将字符串转成html元素
      var parentNode = document.createElement('div'),
        htmlNode;
      parentNode.innerHTML = item;
      htmlNode = parentNode.childNodes[0];

      // 获取html元素的自定义属性
      atList.push(Object.assign({}, htmlNode.dataset));
    });
  }
  return {
    emojiStrList: emojiStrList,
    tagStrList: tagStrList,
    atStrList: atStrList,
    tagList: tagList,
    atList: atList
  };
};

// 匹配双##中间的内容，转换成标签
export var transform2Tag = function transform2Tag(html) {
  var pattern = /(?<!<a[^>]*>)(#(\S)+#)(?!<\/a>)/g;
  var res = html.match(pattern) || [];
  return [(res === null || res === void 0 ? void 0 : res.length) > 0, html.replace(pattern, '<span class="insertHtml tag" contenteditable="false"><a>$1</a></span>')];
};

// 光标始终展示在最后
export var setCursorAtLast = function setCursorAtLast(target) {
  var selection = getSelection();
  if (!selection || !target) return;
  var range = selection.getRangeAt(0);

  // 将选区的结束点设置为 innerHTML 的最后一个子节点
  range.setEnd(target, target.childNodes.length);

  // 创建新的 Range 对象并设置选区
  var newRange = document.createRange();
  newRange.setStart(range.endContainer, range.endOffset);
  newRange.setEnd(range.endContainer, range.endOffset);
  selection.removeAllRanges();
  selection.addRange(newRange);
};