import { UIManager, Platform, Image } from 'react-native';
let MapViewManagerCommands = {
  create: 1,
  center: 2,
  setMapVenue: 3,
  centerMapOnPoint: 4,
  setFollowBlueDot: 5,
  setUserPosition: 6,
  setUserPositionXY: 7,
  clearWayfindingPath: 8,
  wayfindToWaypoint: 9,
  wayfindBetweenWaypoints: 10,
  drawNavigationPath: 11,
  styleUnitsForDestination: 12,
  styleShape: 13,
  addMapIcon: 14,
  startOdp: 15,
  stopOdp: 16,
  uploadLogs: 17
};
if (Platform.OS == 'ios') {
  MapViewManagerCommands = {
    create: 'create',
    center: 'center',
    setMapVenue: 'setMapVenue',
    centerMapOnPoint: 'centerMapOnPoint',
    setFollowBlueDot: 'setFollowBlueDot',
    setUserPosition: 'setUserPosition',
    setUserPositionXY: 'setUserPositionXY',
    clearWayfindingPath: 'clearWayfindingPath',
    wayfindToWaypoint: 'wayfindToWaypoint',
    wayfindBetweenWaypoints: 'wayfindBetweenWaypoints',
    drawNavigationPath: 'drawNavigationPath',
    styleUnitsForDestination: 'styleUnitsForDestination',
    styleShape: 'styleShape',
    addMapIcon: 'addMapIcon',
    startOdp: 'startOdp',
    stopOdp: 'stopOdp',
    uploadLogs: 'uploadLogs'
  };
}
const createImage = imageSource => {
  const image = {
    iconSource: imageSource
  };
  return createImageUrl(image);
};
const createImageUrl = image => {
  if (image.iconSource) {
    const resolvedImage = Image.resolveAssetSource(image.iconSource);
    if (!image.iconHeight) {
      image.iconHeight = 25;
    }
    if (!image.iconWidth) {
      image.iconWidth = resolvedImage.width;
    }
    image.iconUrl = resolvedImage.uri;
    image.iconImage = resolvedImage;
  }
  return image;
};
export const createFragment = viewId => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.create.toString(), [viewId]);
export const centerMap = (viewId, rotation, zoom, animationDuration) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.center.toString(), [rotation, zoom, animationDuration]);
export function getRandomInt(max) {
  return Math.floor(Math.random() * max);
}
export const setMapVenue = _ref => {
  var _mapOptions$user;
  let {
    viewId,
    credentials,
    mapOptions = {}
  } = _ref;
  console.log('Setting up Map venue');
  if (mapOptions && mapOptions.user && (_mapOptions$user = mapOptions.user) !== null && _mapOptions$user !== void 0 && _mapOptions$user.iconImage) mapOptions.user = {
    ...mapOptions.user,
    ...createImage(mapOptions.user.iconImage)
  };
  UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.setMapVenue.toString(), [credentials, mapOptions]);
};
export const addMapIcon = (viewId, coordinates, coordType, icon) => {
  const mapIcon = createImageUrl(icon);
  UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.addMapIcon.toString(), [coordinates, coordType, mapIcon]);
};
export const centerMapOnPoint = (viewId, point) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.centerMapOnPoint.toString(), [point]);
export const setFollowBlueDot = function (viewId, enabled) {
  let rotate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  let interval = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 500;
  return UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.setFollowBlueDot.toString(), [enabled, rotate, interval]);
};
export const setUserPosition = (viewId, x, y, heading, confidence, format) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.setUserPosition.toString(), [x, y, heading, confidence, format]);
export const clearWayfindingPath = viewId => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.clearWayfindingPath.toString(), []);
export const wayfindToWaypoint = (viewId, waypointId) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.wayfindToWaypoint.toString(), [waypointId]);
export const wayfindBetweenWaypoints = (viewId, originId, destinationId) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.wayfindBetweenWaypoints.toString(), [originId, destinationId]);
export const drawNavigationPath = (viewId, pathId, shouldFocus, style, originIconUrl, destinationIconUrl) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.drawNavigationPath.toString(), [pathId, shouldFocus, style, originIconUrl ? createImageUrl(originIconUrl) : originIconUrl, destinationIconUrl ? createImageUrl(destinationIconUrl) : destinationIconUrl]);
export const styleUnitsForDestination = (viewId, destination, style) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.styleUnitsForDestination.toString(), [destination, style]);
export const styleShape = (viewId, id, style) => UIManager.dispatchViewManagerCommand(viewId, MapViewManagerCommands.styleShape.toString(), [id, style]);

// export type ImageSourcePropType = ImageURISource | ImageURISource[] | ImageRequireSource | Image;
//# sourceMappingURL=SendCommand.js.map