universal-transition
Version:
A universal transition API.
107 lines (87 loc) • 2.71 kB
JavaScript
;
exports.__esModule = true;
exports.default = transition;
var _process = require("../../process");
var _universalUnitTool = require("universal-unit-tool");
var __read = void 0 && (void 0).__read || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o),
r,
ar = [],
e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
ar.push(r.value);
}
} catch (error) {
e = {
error: error
};
} finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
};
var __spread = void 0 && (void 0).__spread || function () {
for (var ar = [], i = 0; i < arguments.length; i++) {
ar = ar.concat(__read(arguments[i]));
}
return ar;
};
function parseTransform(transformValue) {
var keyValueMap = {};
if (!transformValue || transformValue.length < 1) {
return keyValueMap;
}
var functionList = transformValue.match(/\w+\(.+?\)/g);
if (functionList) {
functionList.forEach(function (functionString) {
var functionArray = functionString.match(/(\w+)\((.+?)\)/);
if (functionArray && functionArray.length === 3) {
keyValueMap[functionArray[1]] = functionArray[2].replace('deg', '').split(',');
}
});
}
return keyValueMap;
}
function transition(node, styles, options, callback) {
var _a;
_a = __read((0, _process.processParams)(options, callback), 2), options = _a[0], callback = _a[1]; // eslint-disable-next-line no-undef
var animation = wx.createAnimation(Object.assign({}, options, {
timeFunction: options.timingFunction || 'ease'
}));
var properties = Object.keys(styles);
properties.map(function (property) {
if (animation[property]) {
animation = animation[property](styles[property]);
}
if (property === 'transform') {
var transformList_1 = parseTransform(styles[property]); // WeChat does not support translate rpx units
Object.keys(transformList_1).forEach(function (key) {
if (Array.isArray(transformList_1[key])) {
transformList_1[key] = transformList_1[key].map(function (v) {
if (/rpx$/.test(v)) {
return (0, _universalUnitTool.rpx2px)(parseFloat(v));
}
return v;
});
}
});
Object.keys(transformList_1).forEach(function (key) {
if (animation[key]) {
animation = animation[key].apply(animation, __spread(transformList_1[key]));
}
});
}
});
return {
export: function _export() {
return animation.step().export();
}
};
}