Modern society cannot function without sensors, such as those in mobile phones, robotic vacuum cleaners, and cars; without sensors, these devices would not operate properly.
var __INLINE_SCRIPT__ = (function () {
'use strict';
function _arrayLikeToArray$1(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$1(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray$1(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray$1(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$1(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$1(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 JavaScript code)
return __setDesc;
})();