@morjs/runtime-web
Version:
mor runtime for web
62 lines • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const attribute_value_1 = require("../dsl/attribute-value");
const NO_DETAIL_EVENT = ['regionchange'];
function default_1(e) {
const target = e.target && convertTarget(e.target);
try {
// 在支付宝小程序,e.target.dataset 取的是 e.currentTarget.dataset
const currentTargetDataset = (e.currentTarget && convertTarget(e.currentTarget).dataset) || {};
target.dataset = Object.assign(Object.assign({}, target.dataset), currentTargetDataset);
}
catch (e) { }
// 回传参数不用detail包装直接返回
if (NO_DETAIL_EVENT.includes(e.type)) {
return Object.assign(Object.assign({}, e.detail), { nativeEvent: e, currentTarget: e.currentTarget &&
(e.target === e.currentTarget
? target
: convertTarget(e.currentTarget)), target, timeStamp: new Date().valueOf() });
}
const info = Object.assign({ nativeEvent: e, type: e.type, detail: e.detail, target: target, currentTarget: e.currentTarget &&
(e.target === e.currentTarget ? target : convertTarget(e.currentTarget)), timeStamp: new Date().valueOf() }, e.other);
switch (e.type) {
case 'scroll': {
info.detail = scrollDetail(e);
break;
}
}
return info;
}
exports.default = default_1;
function convertTarget(el) {
return {
id: el.id,
dataset: convertDataSet(el.dataset),
tagName: el.tagName // TODO: tagName转换成标准的小程序标签名称
};
}
function convertDataSet(dataset) {
const ds = {};
if (dataset) {
// 这里的转换,主要是为了 dataset 支持对象或者数组
Object.keys(dataset).forEach((key) => {
const value = dataset[key];
ds[key] = (0, attribute_value_1.parseDatasetValue)(value);
});
}
return ds;
}
/**
* 滚动事件的detail
* @param {*} e
*/
function scrollDetail(e) {
const currentTarget = e.currentTarget;
return {
scrollTop: currentTarget.scrollTop,
scrollLeft: currentTarget.scrollLeft,
scrollHeight: currentTarget.scrollHeight,
scrollWidth: currentTarget.scrollWidth
};
}
//# sourceMappingURL=event-convert.js.map