Keil MDK Compiler Migration Guide from V5 to V6

This is an official migration video. You can reply with 【Keil Series Tutorial】 in the background of my public account “strongerHuang” to view the corresponding article.

var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _arrayLikeToArray$2(arr, len) {
    if (len == null || len > arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$2(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray$2(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$2(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$2(arr) || _nonIterableSpread();
  }

  function textOverflow(el, binding) {
    var _a, _b;
    var text = el.innerHTML;
    if (!text || !text.length) return;
    var retainTail = [];
    if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.tailNum) {
      retainTail = Array.from(el.childNodes).slice(-binding.value.tailNum);
    }
    var count = 0;
    function needTextOverflow() {
      var _a;
      if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.lineClamp) {
        return binding.value.lineClamp < computeLineNum(el);
      }
      return el.offsetHeight < el.scrollHeight;
    }
    if (needTextOverflow()) {
      try {
        var getLeaf = function getLeaf(node) {
          var result = [];
          if (!node.childNodes || node.childNodes.length === 0) {
            return [node];
          }
          node.childNodes.forEach(function (child) {
            result = [].concat(_toConsumableArray(result), _toConsumableArray(getLeaf(child)));
          });
          return result;
        };
        var getFragmentHTML = function getFragmentHTML(frag) {
          var _a, _b;
          var div = document.createDocumentFragment();
          div.appendChild(frag);
          var span = document.createElement('span');
          span.innerHTML = ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.html) || '...';
          if (div.lastElementChild) {
            div.lastElementChild.style.display = 'inline';
          }
          div.appendChild(span);
          el.extraElement = span;
          if ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.tailNum) {
            retainTail.forEach(function (tail) {
              div.appendChild(tail);
            });
          }
          return div;
        };
        var findLastNode = function findLastNode(start, end) {
          if (end - start <= 1) {
            range.setEndAfter(leaves[start]);
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return needTextOverflow() ? start : end;
          }
          var mid = start + end >> 1;
          count++;
          range.setEndAfter(leaves[mid]);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastNode(start, mid) : findLastNode(mid, end);
        };
        var findLastCharIndex = function findLastCharIndex(start, end) {
          if (end - start <= 1) {
            if (start === 0) {
              range.setEndAfter(leaves[Math.max(lastNodeIndex - 1, 0)]);
            } else {
              range.setEnd(lastNode, start);
            }
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return start;
          }
          var mid = start + end >> 1;
          count++;
          range.setEnd(lastNode, mid);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastCharIndex(start, mid) : findLastCharIndex(mid, end);
        };
        var dom = document.createElement('div');
        dom.innerHTML = text;
        var leaves = getLeaf(dom);
        var range = document.createRange();
        range.setStartBefore(leaves[0]);
        var lastNodeIndex = findLastNode(0, leaves.length - 1);
        var lastNode = leaves[lastNodeIndex];
        findLastCharIndex(0, lastNode.textContent.length);
        ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.processExtraElement) && binding.value.processExtraElement(el.extraElement, el);
        console.log(count);
      } catch (error) {
        console.error(error);
      }
    }
  }
  function computeLineNum(el) {
    var computyStyle = getComputedStyle(el);
    return Math.round(el.offsetHeight / parseFloat(computyStyle.lineHeight));
  }
  function removeAllChild(el) {
    var childNodes = Array.from(el.childNodes);
    childNodes.forEach(function (child) {
      el.removeChild(child);
    });
  }
  function setNewFrag(el, frag) {
    removeAllChild(el);
    el.appendChild(frag);
  }

  // ... (rest of the code)

Leave a Comment