zent
Version:
一套前端设计语言和基于React的实现
76 lines (67 loc) • 2.03 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getValue = getValue;
exports.getDisplayName = getDisplayName;
exports.silenceEvent = silenceEvent;
exports.silenceEvents = silenceEvents;
var getSelectedValues = function getSelectedValues(options) {
var result = [];
if (options) {
for (var i = 0; i < options.length; i++) {
var option = options[i];
if (option.selected) {
result.push(option.value);
}
}
}
return result;
};
var isEvent = function isEvent(candidate) {
return !!(candidate && candidate.stopPropagation && candidate.preventDefault);
};
function getValue(event) {
// 简单判断是否是一个原生事件对象
if (isEvent(event)) {
var _event$target = event.target,
type = _event$target.type,
value = _event$target.value,
checked = _event$target.checked,
files = _event$target.files,
dataTransfer = event.dataTransfer;
if (type === 'checkbox') {
return checked;
}
if (type === 'file') {
return files || dataTransfer && dataTransfer.files;
}
if (type === 'select-multiple') {
return getSelectedValues(event.target.options);
}
if (value !== '' && (type === 'number' || type === 'range')) {
return parseFloat(value);
}
return value;
}
// 自定义组件需要直接抛出value或者把value放在一个对象中
return event && event.value !== undefined ? event.value : event;
}
function getDisplayName(Component) {
return Component.displayName || Component.name || 'Component';
}
function silenceEvent(event) {
var is = isEvent(event);
if (is) {
event.preventDefault();
}
return is;
}
function silenceEvents(fn) {
return function (event) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
silenceEvent(event) ? fn.apply(undefined, args) : fn.apply(undefined, [event].concat(args));
};
}
;