@antv/f6
Version:
A Mobile Graph Visualization Framework in JavaScript
72 lines (71 loc) • 2.06 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = {
firstScale: null,
getDefaultCfg: function getDefaultCfg() {
return {
originScale: 1,
sensitivity: 2,
minZoom: undefined,
maxZoom: undefined,
enableOptimize: false,
optimizeZoom: 0.1,
fixSelectedItems: {
fixAll: false,
fixLineWidth: false,
fixLabel: false,
fixState: 'selected'
}
};
},
getEvents: function getEvents() {
var fixSelectedItems = this.fixSelectedItems;
if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';
if (fixSelectedItems.fixAll) {
fixSelectedItems.fixLineWidth = true;
fixSelectedItems.fixLabel = true;
}
return {
pinchstart: 'onPinch',
pinchmove: 'onPinch'
};
},
onPinch: function onPinch(evt) {
if (evt.preventDefault) evt.preventDefault();
if (evt.originalEvent.preventDefault) evt.originalEvent.preventDefault();
var pointers = evt.originalEvent.pointers;
if (pointers.length < 2) return;
if (evt.type === 'pinchstart') {
this.firstScale = this.graph.getZoom();
}
var scale = evt.originalEvent.scale || evt.originalEvent.srcEvent.extra.scale;
// 应用到画布上的缩放比例
var zoom = this.firstScale * scale;
// 缓存当前的缩放比例
this.currentScale = zoom;
var minZoom = this.get('minZoom') || this.graph.get('minZoom');
var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');
if (zoom > maxZoom || zoom < minZoom) {
return;
}
var canvas = this.graph.get('canvas');
var posA = {
x: pointers[0].clientX,
y: pointers[0].clientY
};
var posB = {
x: pointers[1].clientX,
y: pointers[1].clientY
};
// 缩放点放中间
var point = canvas.getPointByClient((posA.x + posB.x) / 2, (posA.y + posB.y) / 2);
this.graph.zoomTo(zoom, {
x: point.x,
y: point.y
});
}
};
exports.default = _default;