import React, {PureComponent} from 'react';
const camelPattern = /(^|[A-Z])[a-z]*/g;
const defaultContainer = ({children}) =>
{children}
;
export default class ControlPanel extends PureComponent {
_formatSettingName(name) {
return name.match(camelPattern).join(' ');
}
_renderCheckbox(name, value) {
return (
this.props.onChange(name, evt.target.checked)}
/>
);
}
_renderNumericInput(name, value) {
return (
this.props.onChange(name, Number(evt.target.value))}
/>
);
}
_renderSetting(name, value) {
switch (typeof value) {
case 'boolean':
return this._renderCheckbox(name, value);
case 'number':
return this._renderNumericInput(name, value);
default:
return null;
}
}
_renderInteractionStates({isDragging, isPanning, isRotating, isZooming, inTransition}) {
return (
{isDragging && 'Yes'}
{inTransition && 'Yes'}
{isPanning && 'Yes'}
{isRotating && 'Yes'}
{isZooming && 'Yes'}
);
}
render() {
const Container = this.props.containerComponent || defaultContainer;
const {settings, interactionState} = this.props;
return (
Limit Map Interaction
Turn interactive features off/on.
{Object.keys(settings).map(name => this._renderSetting(name, settings[name]))}
{this._renderInteractionStates(interactionState)}
);
}
}