all files / mapbox-gl-draw/src/ options.js

95.45% Statements 21/22
87.5% Branches 7/8
100% Functions 3/3
100% Lines 19/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                                         34× 548× 548×   274×         12× 17×   17× 15×     17×   15×     17×     17×   17×    
const xtend = require('xtend');
const Constants = require('./constants');
 
const defaultOptions = {
  defaultMode: Constants.modes.SIMPLE_SELECT,
  position: 'top-left',
  keybindings: true,
  clickBuffer: 2,
  boxSelect: true,
  displayControlsDefault: true,
  styles: require('./lib/theme'),
  controls: {}
};
 
const showControls = {
  point: true,
  line_string: true,
  polygon: true,
  trash: true,
  combine_features: true,
  uncombine_features: true
};
 
const hideControls = {
  point: false,
  line_string: false,
  polygon: false,
  trash: false,
  combine_features: false,
  uncombine_features: false
};
 
function addSources(styles, sourceBucket) {
  return styles.map(style => {
    Iif (style.source) return style;
    return xtend(style, {
      id: `${style.id}.${sourceBucket}`,
      source: (sourceBucket === 'hot') ? Constants.sources.HOT : Constants.sources.COLD
    });
  });
}
 
module.exports = function(options = {}) {
  let withDefaults = xtend(options);
 
  if (!options.controls) {
    withDefaults.controls = {};
  }
 
  if (options.displayControlsDefault === false) {
    withDefaults.controls = xtend(hideControls, options.controls);
  } else {
    withDefaults.controls = xtend(showControls, options.controls);
  }
 
  withDefaults = xtend(defaultOptions, withDefaults);
 
  // Layers with a shared source should be adjacent for performance reasons
  withDefaults.styles = addSources(withDefaults.styles, 'cold').concat(addSources(withDefaults.styles, 'hot'));
 
  return withDefaults;
};