// #import <React/RCTViewManager.h>
// #import <MapKit/MapKit.h>
// #import "Headers/extend.h"
// #import "EventEmitter.m"
// #import "Headers/JMapCoreKit.h"
// #import "Headers/JMapController.h"
// #import "Headers/JMap.h"
// #import <MapKit/MapKit.h>
// #import "AppDelegate.h"
// #import "MapViewController.m"

// @interface OdpViewManagerManager : RCTViewManager <RCTBridgeModule, OnExtendDelegate, JMapDelegate, JMapRenderingKitDelegate>

//   // ODP SDK Imports
//   @property (strong, nonatomic) Extend * extend;

//   - (void) enableExtend: (bool) enabled;
//   @property (weak, nonatomic) IBOutlet UIPickerView *destinationPicker;
//   @property (weak, nonatomic) IBOutlet UISwitch *claritySwitch;
//   @property (weak, nonatomic) IBOutlet UISwitch *vicinitySwitch;
//   @property (weak, nonatomic) IBOutlet UISwitch *mobilitySwitch;
//   @property (weak, nonatomic) IBOutlet UILabel *regionLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *waypointLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *destinationLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *routeLengthLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *routeNodeCountLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *bearingLabel;
//   @property (weak, nonatomic) IBOutlet UILabel *floorLabel;
//   @property (weak, nonatomic) IBOutlet UIButton *masterSwitch;
//   @property (weak, nonatomic) IBOutlet UIControl *pickerTapControl;


//   // Map Kit Properties
//   @property (nonatomic) JMap *jMap;
//   @property (nonatomic) JMapJCore *jCore;
//   @property (nonatomic) JMapController *controller;
//   @property (weak, nonatomic) IBOutlet JMapCanvas *canvas;

//   @property (strong, nonatomic) UIWindow *window;


// @end

// @implementation OdpViewManagerManager
// {
//   bool hasListeners;
//   CTPEventEmitter *eventEmitter;
    
// }

// RCT_EXPORT_MODULE(OdpViewManagerManager)
// - (UIView *)view
// {   
//     return [[UIView alloc] init];
// }

// RCT_EXPORT_METHOD(showMap) {
//   NSLog(@"Showing Map");
//     dispatch_async(dispatch_get_main_queue(), ^{
//         UIViewController *map = [[MapViewController alloc] init];
       
//         UIViewController *vc = [UIStoryboard storyboardWithName:@"Map" bundle:nil].instantiateInitialViewController;
        
//         UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
        
//         self.window.rootViewController = vc;
        
//         rootViewController = vc;

//         [UIApplication sharedApplication].delegate.window.rootViewController = vc;
//         NSLog(@"Switching Root View Controller");
//     });
// }

// RCT_EXPORT_METHOD(start:(NSString *) key url:(NSString *) url)
// {
//   NSLog(@"IOS Start Method Called");
//   // eventEmitter = [CTPEventEmitter allocWithZone: nil];
//   // self.extend = [Extend sharedExtendWithKey:key url:url delegate:self];
//   // self.mobilitySwitch.on = true;
//   // self.claritySwitch.on = true;
//   // self.vicinitySwitch.on = true;
// }

// // - (void)viewDidLoad {
// //     NSLog(@"\n\n\nView Did Load!");
// // //     [super viewDidLoad];
// //     // Do any additional setup after loading the view, typically from a nib.
    
// //     //Initialize app delegate
// //     // self.myAppDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
// //     //Initialize the options
    
    
    
// // }

// //  - (void)jmapInitialized:(JMapError *)error {
// //      NSLog(@"JMap Initialized");
// //      if (error) {
// //          NSLog(@"Error: %@", error.message);
// //      } else {
// //          NSLog(@"Successfully Brought up Mapping SDK");
// //          self.controller = _jMap.controller;
        
// //          JMapBuilding *building = [self.controller.activeVenue.buildings getById:2344];
        
// //          if(building){
// //              NSArray *destinations = [self.controller.activeVenue.destinations getByBuilding:building];
// //          }else{
// //              NSLog(@"Building was Not");
// //          }
        
// //          NSArray *destinationsAll = [self.controller.activeVenue.destinations getAll];
// //          for (JMapDestination *dest in destinationsAll){
// //              NSLog(dest.name);
// //          }
// //      }
// //  }

// // static id ObjectOrNull(id object){
// //   return object ?: [NSNull null];
// // }

// // - (void) onReady:(bool)ready
// // {
// //   NSDictionary *eventData = @{
// //     @"ready": @(ready),
// //   };

// //   NSLog(@"Ready!");

// //   [eventEmitter sendEvent:@"onReady" body:eventData];
// // }

// // - (void) onKeyValidation:(bool)validated
// // {
    
// //     if (![self.extend isServiceStarted] && validated)
// //     {
// //       NSLog(@"On Key Validation");
// //       [self.extend setVicinityEnabled:true];
// //       [self.extend start];
       
// //     }else{
// //       NSLog(@"Failed to Validate Key");
// //     }
  
// //   NSDictionary *eventData = @{
// //     @"validated": @(validated),
// //   };

// //   [eventEmitter sendEvent:@"onKeyValidation" body:eventData];
// // }

// // - (void) onNavigationUpdate:(TDNavOutput *)navOutput{
// //   NSDictionary *eventData = @{
// //     @"lat": ObjectOrNull(@(navOutput.latitude)),
// //     @"long": ObjectOrNull(@(navOutput.longitude)),
// //     @"bearing": ObjectOrNull(@(navOutput.bearing)),
// //     @"viewHeading": ObjectOrNull(@(navOutput.viewHeading)),
// //     @"floor": ObjectOrNull(@(navOutput.floor)),
// //     @"accuracyRadius": ObjectOrNull(@(navOutput.accuracyRadius)),
// //     @"utc": ObjectOrNull(@(navOutput.utc)),
// //     @"x": ObjectOrNull(@(navOutput.x)),
// //     @"y": ObjectOrNull(@(navOutput.y)),
// //     @"xFom": ObjectOrNull(@(navOutput.xFom)),
// //     @"yFom": ObjectOrNull(@(navOutput.yFom)),
// //     @"usedSystems": ObjectOrNull(@(navOutput.usedSystems)),
// //     @"dynamicState": ObjectOrNull(@(navOutput.dynamicState)),
// //     @"elevationState": ObjectOrNull(@(navOutput.elevationState)),
// //     @"pdrSpeedLimitExceeded": ObjectOrNull(@(navOutput.pdrSpeedLimitExceeded))
// //   };
  
// //   [eventEmitter sendEvent:@"onNavigationUpdate" body:eventData];
// // }

// // - (void) onFacilityUpdateName:(NSString *)name onFacilityUpdateLocation:(Location *)location onFacilityUpdateRegion:(Region *)region onFacilityUpdateFloorPlans:(NSArray *)plans onFacilityUpdateCategories:(NSArray *)categories {
  
// //     NSDictionary *locationDict = @{
// //       @"latitude": ObjectOrNull(@(location.latLong.latitude)),
// //       @"longitude": ObjectOrNull(@(location.latLong.longitude)),
// //       @"x": ObjectOrNull(@(location.x)),
// //       @"y": ObjectOrNull(@(location.y)),
// //       @"z": ObjectOrNull(@(location.z)),
// //       @"altitude": ObjectOrNull(@(location.altitude)),
// //       @"isGeo": ObjectOrNull(@(location.isGeo)),
      
// //     };
  
  
// //     NSDictionary *regionDict = @{
// //       @"floor": ObjectOrNull(@(region.floor)),
// //       @"id": ObjectOrNull(@(region.uid)),
// //       @"name": ObjectOrNull(region.name),
// //       @"icon": ObjectOrNull(region.icon),
// //       @"type": ObjectOrNull(region.type),
// //       @"points": ObjectOrNull(region.locations),
// //       @"distanceToUser": ObjectOrNull(@(region.distanceToUser)),
// //       @"userOnSameFloor": ObjectOrNull(@(region.userOnSameFloor)),
// //       @"className": ObjectOrNull(region.type),
// //     };
  
// //   NSDictionary *eventData = @{
// //     @"name": name,
// //     @"location": locationDict,
// //     @"region": regionDict,
// //     @"floorPlans": ObjectOrNull(plans),
// //   };
  
// //   [eventEmitter sendEvent:@"onFacilityUpdate" body:eventData];
  
// // }

// // - (void) dataLoadEvent: (NSString *)data
// // {
// //     NSLog(@"On Region Change");
// //     NSLog(data);
    
// // }




// //RCT_CUSTOM_VIEW_PROPERTY(color, NSString, UIView)
// //{
// //   [view setBackgroundColor:[self hexStringToColor:json]];
// //
// //
// ////  NSLog(@"Apple Start Function");
// ////    JMapOptions *options = [[JMapOptions alloc] init];
// ////    options.customerId = 450;
// ////    options.venueId = 2344;
// ////    options.host = @"https://api.jibestream.com";
// ////    options.clientId = @"5cabbd60-ace7-427e-a677-bc1da0074217";
// ////    options.clientSecret = @"hga/7X2YTwSaCQRZRdKSFzgqaFAc298yAD+qbycH90I=";
// ////    options.stage = self.canvas;
// ////    options.clearCacheData = true;
// ////    options.autoReloadCache = [NSNumber numberWithBool:true];
// //
// //
// //    view = self.canvas;
// //}

// // - hexStringToColor:(NSString *)stringToConvert
// // {
// //   NSString *noHashString = [stringToConvert stringByReplacingOccurrencesOfString:@"#" withString:@""];
// //   NSScanner *stringScanner = [NSScanner scannerWithString:noHashString];
// //
// //   unsigned hex;
// //   if (![stringScanner scanHexInt:&hex]) return nil;
// //   int r = (hex >> 16) & 0xFF;
// //   int g = (hex >> 8) & 0xFF;
// //   int b = (hex) & 0xFF;
// //
// //   return [UIColor colorWithRed:1.0f green:0.0f blue:1.0f alpha:1.0f];
// // }

// @end
