modules/ui/tools/center_zoom.js (67 lines of code) (raw):
import { uiToolSimpleButton } from './simple_button';
import { t } from '../../util/locale';
export function uiToolCenterZoom(context) {
var originTransform;
var tool = uiToolSimpleButton({
id: 'center_zoom',
label: function() {
if (!originTransform) {
return t('toolbar.center_zoom.title');
} else {
return t('toolbar.return');
}
},
toolboxLabel: t('toolbar.center_zoom.title'),
iconName: function() {
if (!originTransform) {
return 'iD-icon-frame-pin';
} else {
return 'iD-icon-frame-back';
}
},
toolboxIconName: 'iD-icon-frame-pin',
iconClass: 'operation-icon',
onClick: function() {
if (!originTransform) {
context.mode().zoomToSelected();
originTransform = context.projection.transform();
} else {
context.map().transformEase(originTransform);
originTransform = null;
}
},
tooltipText: function() {
if (!originTransform) {
var mode = context.mode();
if (mode.id === 'select') {
return t('inspector.zoom_to.tooltip_feature');
} else if (mode.id === 'select-note') {
return t('inspector.zoom_to.tooltip_note');
} else if (mode.id === 'select-data') {
return t('inspector.zoom_to.tooltip_data');
} else if (mode.id === 'select-error') {
return t('inspector.zoom_to.tooltip_issue');
}
} else {
return t('toolbar.center_zoom.return_tooltip');
}
},
tooltipKey: t('inspector.zoom_to.key'),
barButtonClass: 'wide'
});
tool.allowed = function() {
var modeID = context.mode().id;
return (modeID === 'select' && !context.mode().newFeature()) || modeID === 'select-note' ||
modeID === 'select-data' || modeID === 'select-error';
};
tool.install = function() {
context.on('enter.uiToolCenterZoom', function() {
originTransform = null;
});
};
tool.uninstall = function() {
context.on('enter.uiToolCenterZoom', null);
originTransform = null;
};
return tool;
}