ten-design-vue
Version:
ten-vue
122 lines (102 loc) • 3.3 kB
JavaScript
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;
}
;