UNPKG

ten-design-vue

Version:

ten-vue

122 lines (102 loc) 3.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KEY_CODE = void 0; exports.filterOption = filterOption; exports.getBeforeSelectionText = getBeforeSelectionText; exports.getLastMeasureIndex = getLastMeasureIndex; exports.replaceWithMeasure = replaceWithMeasure; exports.setInputSelection = setInputSelection; exports.validateSearch = validateSearch; var KEY_CODE = { ENTER: 13, UP: 38, DOWN: 40, LEFT: 37, RIGHT: 39, ESC: 27, SPACE: 32, DELETE: 46 }; exports.KEY_CODE = KEY_CODE; function lower(char) { return (char || '').toLowerCase(); } function reduceText(text, targetText, split) { var firstChar = text.slice(0, 1); if (!firstChar || firstChar === split) { return text; } var restText = text; var targetTextLen = targetText.length; for (var i = 0; i < targetTextLen; i += 1) { if (lower(restText[i]) !== lower(targetText[i])) { restText = restText.slice(i); break; } else if (i === targetTextLen - 1) { restText = restText.slice(targetTextLen); } } return restText; } function getBeforeSelectionText(input) { var selectionStart = input.selectionStart; return input.value.slice(0, selectionStart); } function getLastMeasureIndex(text, prefix) { var prefixList = Array.isArray(prefix) ? prefix : [prefix]; return prefixList.reduce(function (lastMatch, prefixStr) { var lastIndex = text.lastIndexOf(prefixStr); if (lastIndex > lastMatch.location) { return { location: lastIndex, prefix: prefixStr }; } return lastMatch; }, { location: -1, prefix: '' }); } function replaceWithMeasure(text, measureConfig) { var location = measureConfig.location, prefix = measureConfig.prefix, targetText = measureConfig.targetText, selectionStart = measureConfig.selectionStart, split = measureConfig.split; var beforeMeasureText = text.slice(0, location); if (beforeMeasureText[beforeMeasureText.length - split.length] === split) { beforeMeasureText = beforeMeasureText.slice(0, beforeMeasureText.length - split.length); } if (beforeMeasureText) { beforeMeasureText = "".concat(beforeMeasureText).concat(split); } var restText = reduceText(text.slice(selectionStart), targetText.slice(selectionStart - location - prefix.length), split); if (restText.slice(0, split.length) === split) { restText = restText.slice(split.length); } var connectedStartText = "".concat(beforeMeasureText).concat(prefix).concat(targetText).concat(split); return { text: "".concat(connectedStartText).concat(restText), selectionLocation: connectedStartText.length }; } function setInputSelection(input, location) { input.setSelectionRange(location, location); input.focus(); } function validateSearch(text, _ref) { var split = _ref.split; return !split || text.indexOf(split) === -1; } function filterOption(input, _ref2) { var _ref2$value = _ref2.value, value = _ref2$value === void 0 ? '' : _ref2$value, _ref2$label = _ref2.label, label = _ref2$label === void 0 ? '' : _ref2$label; var matchValue = lower(String(value)).includes(lower(input)); var matchLabel = lower(String(label)).includes(lower(input)); return matchValue || matchLabel; }