UNPKG

prixa-telemedicine-rn-sdk

Version:

Welcome to Prixa Telemedicine. This is React Native SDK to our platform, Prixa Telemedicine.

10,144 lines 372 kB
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('i18n-js'), require('prop-types'), require('react'), require('react-navigation'), require('react-navigation-stack'), require('react-redux'), require('redux'), require('react-native'), require('react-native-auto-height-image'), require('axios'), require('react-native-markdown-renderer'), require('@react-native-community/async-storage'), require('react-native-timeline-flatlist'), require('lodash'), require('react-native-parallax-scroll-view'), require('moment'), require('react-native-webview'), require('react-native-modal'), require('react-native-wheel-picker-android'), require('react-native-slider'), require('react-native-picker-select'), require('react-native-collapsible/Accordion'), require('@react-native-community/datetimepicker'), require('@react-native-community/cameraroll'), require('rn-fetch-blob'), require('react-native-app-intro-slider'), require('react-native-incall-manager'), require('react-native-voximplant'), require('currency.js'), require('react-native-svg'), require('react-native-searchable-dropdown')) :
  typeof define === 'function' && define.amd ? define(['i18n-js', 'prop-types', 'react', 'react-navigation', 'react-navigation-stack', 'react-redux', 'redux', 'react-native', 'react-native-auto-height-image', 'axios', 'react-native-markdown-renderer', '@react-native-community/async-storage', 'react-native-timeline-flatlist', 'lodash', 'react-native-parallax-scroll-view', 'moment', 'react-native-webview', 'react-native-modal', 'react-native-wheel-picker-android', 'react-native-slider', 'react-native-picker-select', 'react-native-collapsible/Accordion', '@react-native-community/datetimepicker', '@react-native-community/cameraroll', 'rn-fetch-blob', 'react-native-app-intro-slider', 'react-native-incall-manager', 'react-native-voximplant', 'currency.js', 'react-native-svg', 'react-native-searchable-dropdown'], factory) :
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global['prixa-telemedicine-rn-sdk'] = factory(global.I18n, global.PropTypes, global.React, global.reactNavigation, global.reactNavigationStack, global.reactRedux, global.redux, global.reactNative, global.AutoHeightImage, global.axios, global.Markdown, global.AsyncStorage, global.Timeline, global._, global.ParallaxScrollView, global.moment, global.reactNativeWebview, global.Modal, global.reactNativeWheelPickerAndroid, global.Slider, global.PickerSelect, global.Accordion, global.DateTimePicker, global.CameraRoll, global.RNFetchBlob, global.AppIntroSlider, global.InCallManager, global.reactNativeVoximplant, global.currency, global.Svg, global.SearchableDropdown));
}(this, (function (I18n, PropTypes, React, reactNavigation, reactNavigationStack, reactRedux, redux, reactNative, AutoHeightImage, axios, Markdown, AsyncStorage, Timeline, _, ParallaxScrollView, moment, reactNativeWebview, Modal, reactNativeWheelPickerAndroid, Slider, PickerSelect, Accordion, DateTimePicker, CameraRoll, RNFetchBlob, AppIntroSlider, InCallManager, reactNativeVoximplant, currency, Svg, SearchableDropdown) { 'use strict';

  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

  var I18n__default = /*#__PURE__*/_interopDefaultLegacy(I18n);
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
  var AutoHeightImage__default = /*#__PURE__*/_interopDefaultLegacy(AutoHeightImage);
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
  var Markdown__default = /*#__PURE__*/_interopDefaultLegacy(Markdown);
  var AsyncStorage__default = /*#__PURE__*/_interopDefaultLegacy(AsyncStorage);
  var Timeline__default = /*#__PURE__*/_interopDefaultLegacy(Timeline);
  var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
  var ParallaxScrollView__default = /*#__PURE__*/_interopDefaultLegacy(ParallaxScrollView);
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
  var Modal__default = /*#__PURE__*/_interopDefaultLegacy(Modal);
  var Slider__default = /*#__PURE__*/_interopDefaultLegacy(Slider);
  var PickerSelect__default = /*#__PURE__*/_interopDefaultLegacy(PickerSelect);
  var Accordion__default = /*#__PURE__*/_interopDefaultLegacy(Accordion);
  var DateTimePicker__default = /*#__PURE__*/_interopDefaultLegacy(DateTimePicker);
  var CameraRoll__default = /*#__PURE__*/_interopDefaultLegacy(CameraRoll);
  var RNFetchBlob__default = /*#__PURE__*/_interopDefaultLegacy(RNFetchBlob);
  var AppIntroSlider__default = /*#__PURE__*/_interopDefaultLegacy(AppIntroSlider);
  var InCallManager__default = /*#__PURE__*/_interopDefaultLegacy(InCallManager);
  var currency__default = /*#__PURE__*/_interopDefaultLegacy(currency);
  var Svg__default = /*#__PURE__*/_interopDefaultLegacy(Svg);
  var SearchableDropdown__default = /*#__PURE__*/_interopDefaultLegacy(SearchableDropdown);

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }

    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }

  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
          args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);

        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }

        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }

        _next(undefined);
      });
    };
  }

  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }

    return obj;
  }

  function _extends() {
    _extends = Object.assign || function (target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];

        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }

      return target;
    };

    return _extends.apply(this, arguments);
  }

  function _inheritsLoose(subClass, superClass) {
    subClass.prototype = Object.create(superClass.prototype);
    subClass.prototype.constructor = subClass;
    subClass.__proto__ = superClass;
  }

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }

    return self;
  }

  var localizations = {
    date: {
      "default": "%-d %B %Y"
    },
    time: {
      "default": "%H:%M"
    }
  };
  var translations = {
    address: "Alamat",
    addressDelivery: "Alamat Pengiriman",
    age: "Usia",
    ageText: "Tahun",
    birthdate: "Tanggal Lahir",
    cancel: "Batal",
    "class": "Kelas",
    done: "Selesai",
    education: "Pendidikan",
    email: "Email",
    female: "Perempuan",
    gender: "Jenis Kelamin",
    hospital: "Rumah Sakit",
    intendedFor: "Ditujukan untuk siapa sesi konsultasi ini?",
    male: "Laki-Laki",
    myDependency: "Tertanggung",
    dependencyNotAvailable: "Daftar peserta tidak tersedia",
    next: "Selanjutnya",
    others: "Lainnya",
    phoneNumber: "Nomor Telepon",
    cellphoneNumber: "Nomor Ponsel",
    practiceLicense: "SIP",
    lifepackSubscriptionIdWithNumber: "Nomor Pesanan: {{no}}",
    lifepackSubscriptionId: "Nomor Pesanan",
    prescriptionNoAlt: "Nomor Resep",
    prescriptionDate: "Tanggal Resep Dibuat",
    redeemDate: "Tanggal Pembelian",
    prescriptionDelivery: "Status Pesanan",
    prescriptionStatusDelivery: "Status Pesanan: {{status}}",
    prescriptionDeliveryStatuses: {
      in_review: "Resep sedang ditinjau",
      prescription_approved: "Resep disetujui apoteker",
      prescriprion_adjusted: "Resep diterima dengan perubahan",
      order_cancelled: "Pesanan dibatalkan",
      prescription_rejected: "Resep ditolak apoteker",
      pending_address: "Menantikan alamat",
      payment_order: "Menunggu pembayaran",
      waiting_for_payment: "Menunggu pembayaran",
      payment_successful: "Pembayaran berhasil",
      payment_expired: "Tempo pembayaran kadaluarsa",
      payment_failed: "Pembayaran tidak berhasil",
      order_processed: "Pesanan dipersiapkan",
      waiting_for_pickup: "Menunggu dijemput",
      picked_up: "Pesanan sudah dijemput",
      on_delivery: "Pesanan dalam pengantaran",
      delivered: "Pesanan diterima",
      delivery_failed: "Pengantaran gagal",
      active: "Aktif",
      inactive: "Tidak aktif"
    },
    prescriptionDeliveryDetail: "Informasi Pengiriman",
    prescriptionDeliveryDetailRecipientName: "Nama Penerima",
    prescriptionDeliveryView: "Detail Status",
    prescriptionDownload: "Unduh Resep",
    prescriptionClaim: "Proses Klaim",
    prescriptionPatient: "Nama Pasien",
    prescriptionPayment: "Informasi Pembayaran",
    orderInfo: "Informasi Pesanan",
    prescriptionPaymentMedicine: "Total Biaya Obat",
    prescriptionPaymentDelivery: "Total Biaya Pengiriman",
    prescriptionPaymentTotal: "Total Harga",
    prescriptionPaymentDownload: "Unduh Invoice",
    prescriptionRejectReason: "Alasan ditolak: {{reason}}",
    prescriptionView: "Detail Pesanan",
    prescriptionRedeem: "Tebus Resep",
    prescriptionDetail: "Lihat Resep",
    prescriptionOn: "{{date}}, Pukul {{time}}",
    previous: "Sebelumnya",
    registrationCertificate: "STR",
    select: "Pilih",
    sessionOn: "Sesi pada {{date}}",
    skip: "Lewati",
    status: "Status",
    defaultStatusDelivery: "Status Pesanan: Resep Ditebus",
    consultationFor: "Pemeriksaan Untuk",
    day: "hari",
    week: "minggu",
    month: "bulan"
  };
  var id = {
    localizations: localizations,
    translations: translations
  };

  var internationalizations = {
    id: {
      date: {
        prixa: id.localizations.date
      },
      prixa: id.translations,
      time: {
        prixa: id.localizations.time
      }
    }
  };

  var CHANGE_CLIENT_ID = "CHANGE_CLIENT_ID";
  function saveClientId(clientId) {
    return {
      clientId: clientId,
      type: CHANGE_CLIENT_ID
    };
  }

  var initState = {
    clientId: ""
  };
  function appConfig(state, action) {
    if (state === void 0) {
      state = initState;
    }

    switch (action.type) {
      case CHANGE_CLIENT_ID:
        return _extends({}, state, {
          clientId: action.clientId
        });

      default:
        return state;
    }
  }

  var CHANGE_INTRO_SLIDES = "CHANGE_INTRO_SLIDES";
  function changeIntroSlides(introSlides) {
    return {
      introSlides: introSlides,
      type: CHANGE_INTRO_SLIDES
    };
  }

  function introSlides(state, action) {
    if (state === void 0) {
      state = [];
    }

    switch (action.type) {
      case CHANGE_INTRO_SLIDES:
        return action.introSlides.map(function (introSlide, index) {
          return _extends({
            key: index.toString()
          }, introSlide);
        });

      default:
        return state;
    }
  }

  var dynamicColors = {
    darkerPrimary: "#0056B3",
    darkestPrimary: "#1F4166",
    lighterPrimary: "#4695EA",
    lightestPrimary: "#E5F2FF",
    primary: "#006FE6"
  };

  var CHANGE_THEME_COLORS = "CHANGE_THEME_COLORS";
  function changeThemeColors(themeColors) {
    return {
      themeColors: themeColors,
      type: CHANGE_THEME_COLORS
    };
  }

  function themeColors(state, action) {
    if (state === void 0) {
      state = dynamicColors;
    }

    switch (action.type) {
      case CHANGE_THEME_COLORS:
        return _extends({}, state, action.themeColors);

      default:
        return state;
    }
  }

  var CHANGE_TOKEN = "CHANGE_TOKEN";
  var CHANGE_ACCESS_TOKEN = "CHANGE_ACCESS_TOKEN";
  var CHANGE_FCM_TOKEN = "CHANGE_FCM_TOKEN";
  var CHANGE_JWT_TOKEN = "CHANGE_JWT_TOKEN";
  var RESET_TOKEN_STORE = "RESET_TOKEN_STORE";
  function changeFcmToken(fcmToken) {
    return {
      fcmToken: fcmToken,
      type: CHANGE_FCM_TOKEN
    };
  }
  function changeToken(token) {
    return {
      token: token,
      type: CHANGE_TOKEN
    };
  }
  function changeAccessToken(accessToken) {
    return {
      accessToken: accessToken,
      type: CHANGE_ACCESS_TOKEN
    };
  }
  function resetTokenStore() {
    return {
      type: RESET_TOKEN_STORE
    };
  }

  function token(state, action) {
    if (state === void 0) {
      state = null;
    }

    switch (action.type) {
      case CHANGE_TOKEN:
        return _extends({}, state, {
          token: action.token
        });

      case CHANGE_ACCESS_TOKEN:
        return _extends({}, state, {
          accessToken: action.accessToken
        });

      case CHANGE_FCM_TOKEN:
        return _extends({}, state, {
          fcmToken: action.fcmToken
        });

      case CHANGE_JWT_TOKEN:
        return _extends({}, state, {
          jwt: action.jwt
        });

      case RESET_TOKEN_STORE:
        return {};

      default:
        return state;
    }
  }

  var reducers = redux.combineReducers({
    appConfig: appConfig,
    introSlides: introSlides,
    themeColors: themeColors,
    token: token
  });

  var store = redux.createStore(reducers);

  var fonts = reactNative.Platform.OS === 'android' ? {
    bold: {
      fontFamily: "OpenSans-Bold"
    },
    light: {
      fontFamily: "OpenSans-Light"
    },
    regular: {
      fontFamily: "OpenSans-Regular"
    }
  } : {
    bold: {
      fontWeight: "700"
    },
    light: {
      fontWeight: "300"
    },
    regular: {
      fontWeight: "400"
    }
  };

  var REACTIONS$1 = [{
    label: "Sangat Buruk",
    src: require("../assets/1a.png"),
    bigSrc: require("../assets/1.png")
  }, {
    label: "Buruk",
    src: require("../assets/2a.png"),
    bigSrc: require("../assets/2.png")
  }, {
    label: "Baik",
    src: require("../assets/3a.png"),
    bigSrc: require("../assets/3.png")
  }, {
    label: "Sangat Baik",
    src: require("../assets/4a.png"),
    bigSrc: require("../assets/4.png")
  }];
  var WIDTH = 320;
  var DISTANCE = WIDTH / REACTIONS$1.length;
  var END = WIDTH - DISTANCE;

  var EmojiRating = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(EmojiRating, _React$Component);

    function EmojiRating(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;
      var s = _this.props.selected ? _this.props.selected.key : 2;
      _this._pan = new reactNative.Animated.Value(s * DISTANCE);
      _this.state = {
        selected: _this.props.selected
      };
      return _this;
    }

    var _proto = EmojiRating.prototype;

    _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {
      var _this2 = this;

      this._panResponder = reactNative.PanResponder.create({
        onMoveShouldSetResponderCapture: function onMoveShouldSetResponderCapture() {
          return true;
        },
        onMoveShouldSetPanResponderCapture: function onMoveShouldSetPanResponderCapture() {
          return true;
        },
        onPanResponderGrant: function onPanResponderGrant(e, gestureState) {
          _this2._pan.setOffset(_this2._pan._value);

          _this2._pan.setValue(0);
        },
        onPanResponderMove: reactNative.Animated.event([null, {
          dx: this._pan
        }]),
        onPanResponderRelease: function onPanResponderRelease() {
          _this2._pan.flattenOffset();

          var offset = Math.max(0, _this2._pan._value + 0);
          if (offset < 0) return _this2._pan.setValue(0);

          if (offset >= END) {
            _this2.updatePan(END);

            return _this2._pan.setValue(offset);
          }

          var modulo = offset % DISTANCE;
          offset = modulo >= DISTANCE / 2 ? offset + (DISTANCE - modulo) : offset - modulo;

          _this2.updatePan(offset);
        }
      });
    };

    _proto.updatePan = function updatePan(toValue) {
      this.setState({
        selected: {
          key: toValue / DISTANCE,
          value: REACTIONS$1[toValue / DISTANCE].label
        }
      });
      this.props.onSelected({
        key: toValue / DISTANCE,
        value: REACTIONS$1[toValue / DISTANCE].label
      });
      reactNative.Animated.spring(this._pan, {
        toValue: toValue,
        friction: 7
      }).start();
    };

    _proto.render = function render() {
      var _this3 = this;

      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$z.container
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$z.wrap
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$z.line
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$z.reactions
      }, REACTIONS$1.map(function (reaction, idx) {
        var u = idx * DISTANCE;
        var inputRange = [u - 20, u, u + 20];
        var scaleOutputRange = [1, 0.25, 1];
        var topOutputRange = [0, 10, 0];
        var colorOutputRange = ["#999", "#222", "#999"];

        if (u - 20 < 0) {
          inputRange = [u, u + 20];
          scaleOutputRange = [0.25, 1];
          topOutputRange = [10, 0];
          colorOutputRange = ["#222", "#999"];
        }

        if (u + 20 > END) {
          inputRange = [u - 20, u];
          scaleOutputRange = [1, 0.25];
          topOutputRange = [0, 10];
          colorOutputRange = ["#999", "#222"];
        }

        return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            return _this3.updatePan(u);
          },
          activeOpacity: 0.9,
          key: idx
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: styles$z.smileyWrap
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Image, {
          source: reaction.src,
          style: [styles$z.smiley, {
            transform: [{
              scale: _this3.state.selected ? _this3._pan.interpolate({
                inputRange: inputRange,
                outputRange: scaleOutputRange,
                extrapolate: "clamp"
              }) : 1
            }]
          }]
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Text, {
          style: [styles$z.reactionText, {
            top: _this3.state.selected ? _this3._pan.interpolate({
              inputRange: inputRange,
              outputRange: topOutputRange,
              extrapolate: "clamp"
            }) : 0,
            color: _this3.state.selected ? _this3._pan.interpolate({
              inputRange: inputRange,
              outputRange: colorOutputRange,
              extrapolate: "clamp"
            }) : "#999"
          }]
        }, reaction.label));
      }), this.state.selected && /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.View, _extends({}, this._panResponder.panHandlers, {
        style: [styles$z.bigSmiley, {
          transform: [{
            translateX: this._pan.interpolate({
              inputRange: [0, END],
              outputRange: [0, END],
              extrapolate: "clamp"
            })
          }]
        }]
      }), REACTIONS$1.map(function (reaction, idx) {
        var inputRange = [(idx - 1) * DISTANCE, idx * DISTANCE, (idx + 1) * DISTANCE];
        var outputRange = [0, 1, 0];

        if (idx == 0) {
          inputRange = [idx * DISTANCE, (idx + 1) * DISTANCE];
          outputRange = [1, 0];
        }

        if (idx == REACTIONS$1.length - 1) {
          inputRange = [(idx - 1) * DISTANCE, idx * DISTANCE];
          outputRange = [0, 1];
        }

        return /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.Image, {
          key: idx,
          source: reaction.bigSrc,
          style: [styles$z.bigSmileyImage, {
            opacity: _this3._pan.interpolate({
              inputRange: inputRange,
              outputRange: outputRange,
              extrapolate: "clamp"
            })
          }]
        });
      })))));
    };

    return EmojiRating;
  }(React__default['default'].Component);
  var size = 42;
  var styles$z = reactNative.StyleSheet.create({
    container: {
      justifyContent: "center",
      alignItems: "center",
      backgroundColor: "transparent",
      marginTop: 30
    },
    wrap: {
      width: WIDTH
    },
    welcome: _extends({
      fontSize: 18,
      textAlign: "center",
      color: "#777"
    }, fonts.light, {
      marginBottom: 50
    }),
    reactions: {
      flexDirection: "row",
      justifyContent: "space-between",
      backgroundColor: "transparent"
    },
    smileyWrap: {
      width: DISTANCE,
      height: DISTANCE,
      justifyContent: "center",
      alignItems: "center"
    },
    smiley: {
      width: size,
      height: size,
      borderRadius: size / 2,
      backgroundColor: "#c7ced3"
    },
    bigSmiley: {
      width: DISTANCE,
      height: DISTANCE,
      borderRadius: DISTANCE / 2,
      backgroundColor: "#ffb18d",
      position: "absolute",
      top: 0,
      left: 0
    },
    bigSmileyImage: {
      width: DISTANCE,
      height: DISTANCE,
      position: "absolute",
      top: 0,
      left: 0
    },
    reactionText: _extends({
      fontSize: 12,
      textAlign: "center",
      color: "#999"
    }, fonts.light, {
      marginTop: 5
    }),
    line: {
      height: 4 / reactNative.PixelRatio.get(),
      backgroundColor: "#eee",
      width: WIDTH - (DISTANCE - size),
      left: (DISTANCE - size) / 2,
      top: DISTANCE / 2 + 2 / reactNative.PixelRatio.get()
    }
  });

  var styles$y = reactNative.StyleSheet.create({
    button: {
      alignItems: "center",
      flexDirection: "row",
      paddingHorizontal: 16,
      paddingVertical: 16
    },
    container: {
      paddingVertical: 24
    },
    text: _extends({}, fonts.bold, {
      fontSize: 16
    })
  });

  var Header = /*#__PURE__*/function (_Component) {
    _inheritsLoose(Header, _Component);

    function Header() {
      return _Component.apply(this, arguments) || this;
    }

    var _proto = Header.prototype;

    _proto.render = function render() {
      var color = "#FFF";
      var iconStart = /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/round_navigate_before_white.png")
      });
      var justifyContent = "flex-start";
      return /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, {
        style: styles$y.container
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: this.props.onPress
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$y.button, {
          justifyContent: justifyContent
        }]
      }, iconStart, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$y.text, {
          color: color
        }]
      }, this.props.text))));
    };

    return Header;
  }(React.Component);

  var Pulse = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(Pulse, _React$Component);

    function Pulse(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;
      _this.value = new reactNative.Animated.Value(0);
      return _this;
    }

    var _proto = Pulse.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var delay = this.props.delay;
      reactNative.Animated.sequence([reactNative.Animated.delay(delay), reactNative.Animated.loop(reactNative.Animated.timing(this.value, {
        duration: 3600,
        toValue: 1,
        useNativeDriver: true
      }))]).start();
    };

    _proto.render = function render() {
      var themeColors = this.props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Animated.View, {
        style: [styles$x.pulse, {
          backgroundColor: themeColors.lightestPrimary,
          opacity: this.value.interpolate({
            inputRange: [0, 1],
            outputRange: [1, 0]
          }),
          transform: [{
            scale: this.value.interpolate({
              inputRange: [0, 1],
              outputRange: [1, 3]
            })
          }]
        }]
      });
    };

    return Pulse;
  }(React__default['default'].Component);

  _defineProperty(Pulse, "propTypes", {
    delay: PropTypes__default['default'].number.isRequired
  });

  var styles$x = reactNative.StyleSheet.create({
    pulse: {
      borderRadius: 150,
      height: 100,
      position: "absolute",
      width: 100
    }
  });
  var Pulse$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(Pulse);

  var PulseLoader = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PulseLoader, _React$Component);

    function PulseLoader() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PulseLoader.prototype;

    _proto.render = function render() {
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$w.container
      }, Array.from({
        length: 4
      }).map(function (ignored, index) {
        return /*#__PURE__*/React__default['default'].createElement(Pulse$1, {
          delay: index * 900,
          key: index
        });
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/avatars/doctor.png"),
        style: styles$w.image
      }));
    };

    return PulseLoader;
  }(React__default['default'].Component);
  var styles$w = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      height: 300,
      justifyContent: "center"
    },
    image: {
      borderRadius: 50,
      height: 100,
      width: 100
    }
  });

  var STATIC_CARD_NUMBERS = ["parents", "partner", "children"];

  var DependencyDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DependencyDetail, _React$Component);

    function DependencyDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DependencyDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          cardNumber = _this$props.cardNumber,
          fullName = _this$props.fullName,
          themeColors = _this$props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        numberOfLines: 1,
        style: [styles$v.fullName, {
          color: themeColors.darkerPrimary
        }]
      }, fullName), !STATIC_CARD_NUMBERS.includes(cardNumber) && /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$v.cardNumber, {
          color: themeColors.darkestPrimary
        }]
      }, cardNumber));
    };

    return DependencyDetail;
  }(React__default['default'].Component);

  _defineProperty(DependencyDetail, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    fullName: PropTypes__default['default'].string.isRequired
  });

  var styles$v = reactNative.StyleSheet.create({
    cardNumber: _extends({
      fontSize: 16
    }, fonts.regular),
    fullName: _extends({
      fontSize: 20
    }, fonts.bold)
  });
  var DependencyDetail$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(DependencyDetail);

  var AVATARS$1 = {
    f: [require("../assets/avatars/girl/1.png"), require("../assets/avatars/girl/2.png"), require("../assets/avatars/girl/3.png"), require("../assets/avatars/girl/4.png"), require("../assets/avatars/girl/5.png"), require("../assets/avatars/girl/6.png"), require("../assets/avatars/girl/7.png"), require("../assets/avatars/girl/8.png"), require("../assets/avatars/girl/9.png"), require("../assets/avatars/girl/10.png"), require("../assets/avatars/girl/11.png"), require("../assets/avatars/girl/12.png"), require("../assets/avatars/girl/13.png"), require("../assets/avatars/girl/14.png"), require("../assets/avatars/girl/15.png"), require("../assets/avatars/girl/16.png"), require("../assets/avatars/girl/17.png"), require("../assets/avatars/girl/18.png"), require("../assets/avatars/girl/19.png"), require("../assets/avatars/girl/20.png"), require("../assets/avatars/girl/21.png"), require("../assets/avatars/girl/22.png"), require("../assets/avatars/girl/23.png"), require("../assets/avatars/girl/24.png"), require("../assets/avatars/girl/25.png"), require("../assets/avatars/girl/26.png"), require("../assets/avatars/girl/27.png")],
    m: [require("../assets/avatars/boy/1.png"), require("../assets/avatars/boy/2.png"), require("../assets/avatars/boy/3.png"), require("../assets/avatars/boy/4.png"), require("../assets/avatars/boy/5.png"), require("../assets/avatars/boy/6.png"), require("../assets/avatars/boy/7.png"), require("../assets/avatars/boy/8.png"), require("../assets/avatars/boy/9.png"), require("../assets/avatars/boy/10.png"), require("../assets/avatars/boy/11.png"), require("../assets/avatars/boy/12.png"), require("../assets/avatars/boy/13.png"), require("../assets/avatars/boy/14.png"), require("../assets/avatars/boy/15.png"), require("../assets/avatars/boy/16.png"), require("../assets/avatars/boy/17.png"), require("../assets/avatars/boy/18.png"), require("../assets/avatars/boy/19.png"), require("../assets/avatars/boy/20.png"), require("../assets/avatars/boy/21.png"), require("../assets/avatars/boy/22.png"), require("../assets/avatars/boy/23.png")]
  };
  var STATIC_AVATARS = {
    parents: require("../assets/avatars/parents.png"),
    partner: require("../assets/avatars/partner.png"),
    children: require("../assets/avatars/children.png")
  };

  var DependencyAvatar = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DependencyAvatar, _React$Component);

    function DependencyAvatar() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "state", {
        avatarImg: null
      });

      return _this;
    }

    var _proto = DependencyAvatar.prototype;

    _proto.selectAvatar = function selectAvatar() {
      var _this$props = this.props,
          cardNumber = _this$props.cardNumber,
          gender = _this$props.gender;
      var isStatic = STATIC_CARD_NUMBERS.includes(cardNumber);

      if (isStatic) {
        this.setState({
          avatarImg: STATIC_AVATARS[cardNumber]
        });
      } else {
        var seed = cardNumber.split("").reduce(function (currentSeed, c) {
          return (currentSeed + c.charCodeAt(0)) % AVATARS$1[gender].length;
        }, 0);
        this.setState({
          avatarImg: AVATARS$1[gender][seed]
        });
      }
    };

    _proto.componentDidMount = function componentDidMount() {
      this.selectAvatar();
    };

    _proto.render = function render() {
      var _this$props2 = this.props;
          _this$props2.cardNumber;
          _this$props2.gender;
          var themeColors = _this$props2.themeColors;
      var avatarImg = this.state.avatarImg;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: avatarImg,
        style: [styles$u.avatar, {
          backgroundColor: themeColors.lightestPrimary
        }]
      });
    };

    return DependencyAvatar;
  }(React__default['default'].Component);

  _defineProperty(DependencyAvatar, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired
  });

  var styles$u = reactNative.StyleSheet.create({
    avatar: {
      borderRadius: 30,
      height: 60,
      width: 60
    }
  });
  var DependencyAvatar$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(DependencyAvatar);

  var DependencyAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DependencyAvatarWithDetail, _React$Component);

    function DependencyAvatarWithDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DependencyAvatarWithDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          cardNumber = _this$props.cardNumber,
          fullName = _this$props.fullName,
          gender = _this$props.gender;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$t.container
      }, /*#__PURE__*/React__default['default'].createElement(DependencyAvatar$1, {
        cardNumber: cardNumber,
        gender: gender
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$t.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(DependencyDetail$1, {
        cardNumber: cardNumber,
        fullName: fullName
      })));
    };

    return DependencyAvatarWithDetail;
  }(React__default['default'].Component);

  _defineProperty(DependencyAvatarWithDetail, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    fullName: PropTypes__default['default'].string.isRequired,
    gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired
  });
  var styles$t = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      flexDirection: "row",
      flexGrow: 1,
      padding: 10,
      paddingEnd: 100,
      width: 0
    },
    detailContainer: {
      marginStart: 15
    }
  });

  var staticColors = {
    cavernous: "#515151",
    forestFern: "#5DBE66",
    grey: "#808080",
    thimbleberry: "#E64F4F",
    white: "#FFFFFF",
    red: "#B80F0A"
  };

  var DependencyItem = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DependencyItem, _React$Component);

    function DependencyItem() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DependencyItem.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          fullName = _this$props.fullName,
          cardNumber = _this$props.cardNumber,
          gender = _this$props.gender,
          onSelect = _this$props.onSelect;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$s.container
      }, /*#__PURE__*/React__default['default'].createElement(DependencyAvatarWithDetail, {
        fullName: fullName,
        cardNumber: cardNumber,
        gender: gender
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          onSelect(cardNumber);
        },
        style: styles$s.selectButton
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$s.selectText
      }, I18n__default['default'].t("prixa.select"))));
    };

    return DependencyItem;
  }(React__default['default'].Component);

  _defineProperty(DependencyItem, "propTypes", {
    fullName: PropTypes__default['default'].string.isRequired,
    cardNumber: PropTypes__default['default'].string.isRequired,
    gender: PropTypes__default['default'].oneOf(["f", "m", ""]).isRequired,
    onSelect: PropTypes__default['default'].func.isRequired
  });
  var styles$s = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      flex: 1,
      flexDirection: "row"
    },
    selectButton: {
      backgroundColor: staticColors.forestFern,
      borderRadius: 20,
      margin: 10,
      paddingHorizontal: 20,
      paddingVertical: 5
    },
    selectText: _extends({
      color: staticColors.white,
      fontSize: 18
    }, fonts.regular)
  });

  var styles$r = reactNative.StyleSheet.create({
    text: _extends({}, fonts.regular, {
      fontSize: 15,
      textAlign: "center",
      paddingTop: 50,
      marginHorizontal: 15,
      paddingBottom: 50
    })
  });

  var DependencyList = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DependencyList, _React$Component);

    function DependencyList() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "renderItem", function (_ref) {
        var fullName = _ref.fullName,
            cardNumber = _ref.cardNumber,
            gender = _ref.gender,
            hasDoB = _ref.hasDoB;
        var _onSelect = _this.props.onSelect;
        return /*#__PURE__*/React__default['default'].createElement(DependencyItem, {
          fullName: fullName,
          cardNumber: cardNumber,
          gender: gender,
          onSelect: function onSelect() {
            _onSelect(cardNumber, fullName, hasDoB);
          }
        });
      });

      return _this;
    }

    var _proto = DependencyList.prototype;

    _proto.render = function render() {
      var _this2 = this;

      var data = this.props.data;
      return data.length > 0 ? /*#__PURE__*/React__default['default'].createElement(reactNative.FlatList, {
        data: data,
        keyExtractor: function keyExtractor(item) {
          return item.cardNumber;
        },
        renderItem: function renderItem(_ref2) {
          var item = _ref2.item;
          return _this2.renderItem(item);
        }
      }) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$r.text
      }, I18n__default['default'].t("prixa.dependencyNotAvailable")));
    };

    return DependencyList;
  }(React__default['default'].Component);

  _defineProperty(DependencyList, "propTypes", {
    data: PropTypes__default['default'].array.isRequired,
    onSelect: PropTypes__default['default'].func.isRequired
  });

  var activeConsultation = null;
  function setConsultation(consultation) {
    activeConsultation = consultation;
  }
  function getConsultation() {
    return activeConsultation;
  }
  var medical = null;
  function setMedical(height, weight) {
    if (height && weight) {
      medical = {
        height: height,
        weight: weight
      };
    } else {
      medical = null;
    }
  }
  function getMedical() {
    return medical;
  }
  var baseUrl = null;
  var prixaEngineBaseUrl = null;
  var apiKey = null;
  var partnerAppId = null;
  var partnerId = null;
  var voximplantAccountName = null;
  var voximplantAppName = null;
  var APP_BASE_URL = null; // export const BAYMAX_WIDGET_URL = "https://poc-widget.netlify.app";

  var BAYMAX_WIDGET_URL = null;
  function setDevMode(devMode) {
    if (devMode) {
      APP_BASE_URL = "https://dev.api.core.prixa.ai/api";
      BAYMAX_WIDGET_URL = "https://dev.baymaxwidget.prixa.ai";
      baseUrl = "https://dev.api.core.prixa.ai/api/v1/";
      prixaEngineBaseUrl = "https://dev.api.core.prixa.ai/api/v1/nalar/";
      apiKey = "WZQRQzxN6bDxkwb8Lr7b2liEIM5E22JY";
      partnerAppId = "e58b641d-5714-45d0-9453-af17f805dc74";
      partnerId = "2255079e-752b-486d-886b-c00be708b6a1";
      voximplantAccountName = "prixa";
      voximplantAppName = "test";
    } else {
      APP_BASE_URL = "https://api.core.prixa.ai/api";
      BAYMAX_WIDGET_URL = "https://baymaxwidget.prixa.ai";
      baseUrl = "https://api.core.prixa.ai/api/v1/";
      prixaEngineBaseUrl = "https://api.core.prixa.ai/api/v1/nalar/";
      apiKey = "WZQRQzxN6bDxkwb8Lr7b2liEIM5E22JY";
      partnerAppId = "e58b641d-5714-45d0-9453-af17f805dc74";
      partnerId = "2255079e-752b-486d-886b-c00be708b6a1";
      voximplantAccountName = "prixa";
      voximplantAppName = "main";
    }
  }
  function getBaseUrl() {
    return baseUrl;
  }
  function getPrixaEngine() {
    return {
      prixaEngineBaseUrl: prixaEngineBaseUrl,
      apiKey: apiKey,
      partnerAppId: partnerAppId,
      partnerId: partnerId
    };
  }
  function getVoximplantAccountName() {
    return voximplantAccountName;
  }
  function getVoximplantAppName() {
    return voximplantAppName;
  } // source: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript

  function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return "";
    return decodeURIComponent(results[2].replace(/\+/g, " "));
  }

  var API = axios__default['default'].create({
    baseURL: APP_BASE_URL
  });
  API.interceptors.request.use(function (config) {
    // Do something before request is sent
    var _store$getState = store.getState(),
        accessToken = _store$getState.token.accessToken;

    if (accessToken && config.url !== APP_BASE_URL + "/v2/profile/token") config.headers.Authorization = "Bearer " + accessToken;
    return config;
  }, function (error) {
    return Promise.reject(error);
  });
  var isAlreadyFetchingAccessToken = false;
  var isAlreadyReturnGlobalError = false;
  var subscribers = [];

  function onAccessTokenFetched(access_token) {
    subscribers = subscribers.filter(function (callback) {
      return callback(access_token);
    });
  }

  function addSubscriber(callback) {
    subscribers.push(callback); // add request queue
  }

  var bypassRefresh = function bypassRefresh(originalRequest) {
    if (originalRequest.url.includes("v1/users/refresh") || originalRequest.url.includes("/login") || originalRequest.method === "delete") {
      return true;
    }

    return false;
  }; // intercept if token expired,then extend


  API.interceptors.response.use(function (response) {
    return response;
  }, function (error) {
    if (!error || !error.response) {
      if (!isAlreadyReturnGlobalError) {
        isAlreadyReturnGlobalError = true;
        setTimeout(function () {
          isAlreadyReturnGlobalError = false;
        }, 10000);
      }
    }

    var config = error.config,
        status = error.response.status;
    var originalRequest = config;

    if (status === 401 && originalRequest.method !== "delete" && !bypassRefresh(originalRequest)) {
      console.log("try reauth");

      if (!isAlreadyFetchingAccessToken) {
        isAlreadyFetchingAccessToken = true;
        console.log("reauth processing");
        API.post(APP_BASE_URL + "/v2/profile/token", {}, {
          headers: {
            Authorization: "Bearer " + store.getState().token.token
          }
        }).then(function (_ref) {
          var _ref$data = _ref.data,
              access_token = _ref$data.access_token,
              metadata = _ref$data.metadata;
          isAlreadyFetchingAccessToken = false;
          var newTokenBearer = "Bearer " + access_token;
          var newAccessToken = access_token;
          console.log("reauth success, save new token");
          store.dispatch(changeAccessToken(newAccessToken));
          store.dispatch(saveClientId(metadata.client_id));
          API.defaults.headers.Authorization = "Bearer " + newAccessToken;
          originalRequest.headers.Authorization = newTokenBearer;
          onAccessTokenFetched(newAccessToken);
        })["catch"](function (error) {
          console.log((error == null ? void 0 : error.response) || error);
          reactNative.Alert.alert("Gagal Login", "Terjadi kesalahan sistem, mohon untuk mengulang proses beberapa saat lagi.", [{
            text: "OK"
          }], {
            cancelable: false
          });
        });
      }

      var retryOriginalRequest = new Promise(function (resolve) {
        addSubscriber(function (access_token) {
          console.log("try request again");
          store.dispatch(changeAccessToken(access_token));
          originalRequest.headers.Authorization = "Bearer " + access_token;
          resolve(axios__default['default'](originalRequest));
        });
      });
      return retryOriginalRequest;
    }

    if (status === 429) {
      return axios__default['default'](originalRequest);
    }

    return Promise.reject(error);
  });

  var styles$q = reactNative.StyleSheet.create({
    container: {
      flex: 1
    },
    contentContainer: {
      paddingVertical: 30,
      paddingHorizontal: 5,
      backgroundColor: "#FFF",
      borderTopEndRadius: 30,
      borderTopStartRadius: 30
    },
    imageContainer: {
      flex: 1,
      justifyContent: "center",
      alignItems: "center"
    },
    text: _extends({}, fonts.regular, {
      fontSize: 22,
      textAlign: "center",
      marginTop: 10,
      marginHorizontal: 15,
      marginBottom: 30
    })
  });

  var AskScreen$2 = /*#__PURE__*/function (_Component) {
    _inheritsLoose(AskScreen, _Component);

    function AskScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "_handlePress", function () {
        _this.props.navigation.goBack();
      });

      _this.state = {
        dependencies: [],
        loading: false
      };
      return _this;
    }

    var _proto = AskScreen.prototype;

    _proto.fetchDependencies = /*#__PURE__*/function () {
      var _fetchDependencies = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var patientId, _yield$API$get, dependencyList;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.prev = 0;
                patientId = this.props.navigation.state.params.patientId;
                _context.next = 4;
                return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/dependencies");

              case 4:
                _yield$API$get = _context.sent;
                dependencyList = _yield$API$get.data.data;
                this.setState({
                  dependencies: dependencyList || ""
                });
                _context.next = 12;
                break;

              case 9:
                _context.prev = 9;
                _context.t0 = _context["catch"](0);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 12:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[0, 9]]);
      }));

      function fetchDependencies() {
        return _fetchDependencies.apply(this, arguments);
      }

      return fetchDependencies;
    }();

    _proto.setStaticData = function setStaticData() {
      this.setState({
        dependencies: [{
          fullName: "Orang Tua",
          cardNumber: "parents"
        }, {
          fullName: "Pasangan",
          cardNumber: "partner"
        }, {
          fullName: "Anak",
          cardNumber: "children"
        }]
      });
    };

    _proto.componentDidMount = /*#__PURE__*/function () {
      var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
        var _this$props$navigatio, config, dependenceStatus, dependencies;

        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                _this$props$navigatio = this.props.navigation.state.params, config = _this$props$navigatio.config, dependenceStatus = _this$props$navigatio.dependenceStatus;
                this.setState({
                  loading: true
                });
                _context2.prev = 2;

                if (!((config == null ? void 0 : config.is_dependent_enabled) && !!dependenceStatus)) {
                  _context2.next = 10;
                  break;
                }

                _context2.next = 6;
                return this.fetchDependencies();

              case 6:
                dependencies = this.state.dependencies;

                if (dependencies.length === 0) {
                  this.setStaticData();
                }

                _context2.next = 11;
                break;

              case 10:
                this.setStaticData();

              case 11:
                _context2.next = 16;
                break;

              case 13:
                _context2.prev = 13;
                _context2.t0 = _context2["catch"](2);
                console.log("Dependency failed to fetch");

              case 16:
                this.setState({
                  loading: false
                });

              case 17:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this, [[2, 13]]);
      }));

      function componentDidMount() {
        return _componentDidMount.apply(this, arguments);
      }

      return componentDidMount;
    }();

    _proto.render = function render() {
      var _this2 = this;

      var loading = this.state.loading;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$q.container, {
          backgroundColor: this.props.themeColors.primary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(Header, {
        onPress: this._handlePress,
        position: "start",
        text: "Batal",
        theme: "light"
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$q.imageContainer
      }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
        width: reactNative.Dimensions.get("window").width - 120,
        source: require("../assets/illustrations/ask.png")
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$q.contentContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$q.text, {
          color: this.props.themeColors.darkestPrimary
        }]
      }, "Untuk siapakah konsultasi ini?"), loading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          justifyContent: "center",
          paddingVertical: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        size: "large",
        color: this.props.themeColors.primary
      })) : /*#__PURE__*/React__default['default'].createElement(DependencyList, {
        data: this.state.dependencies.map(function (item) {
          if (!!item["fullName"]) {
            // from static data
            return {
              cardNumber: item.cardNumber,
              fullName: item.fullName,
              gender: "",
              hasDoB: true
            };
          } else {
            // from dynamic data
            return {
              cardNumber: item["card_number"],
              fullName: item["first_name"] + " " + item["last_name"],
              gender: item["gender"].toLowerCase(),
              hasDoB: !!item.dob
            };
          }
        }),
        onSelect: function onSelect(cardNumber, fullName, hasDoB) {
          console.log({
            hasDoB: hasDoB
          });

          _this2.props.navigation.replace("Symptoms", _extends({}, _this2.props.navigation.state.params, {
            policyNumber: cardNumber,
            fullName: fullName,
            hasDoB: hasDoB // patientId: this.props.navigation.state.params.patientId,
            // hasViId: this.props.navigation.state.params.hasViId,
            // enableVoiceCall: this.props.navigation.state.params
            //   .enableVoiceCall,
            // enableVideoCall: this.props.navigation.state.params
            //   .enableVideoCall,

          }));
        }
      })));
    };

    return AskScreen;
  }(React.Component);

  var ChildrenScreen = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(AskScreen$2);

  var ConsentScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(ConsentScreen, _React$Component);

    function ConsentScreen() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "state", {
        isLoading: true,
        consent: null
      });

      return _this;
    }

    var _proto = ConsentScreen.prototype;

    _proto.fetchData = /*#__PURE__*/function () {
      var _fetchData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var _this$props$navigatio, patientId, clientId, _yield$API$get, inboxes, _yield$API$get2, consent, inbox;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.prev = 0;
                _this$props$navigatio = this.props.navigation.state.params, patientId = _this$props$navigatio.patientId, clientId = _this$props$navigatio.clientId;
                _context.next = 4;
                return API.get(APP_BASE_URL + "/v1/clients/" + clientId + "/inboxes");

              case 4:
                _yield$API$get = _context.sent;
                inboxes = _yield$API$get.data.data;
                _context.next = 8;
                return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/consent");

              case 8:
                _yield$API$get2 = _context.sent;
                consent = _yield$API$get2.data.data;
                // execption no inbox in baymax
                if (inboxes.length === 0) reactNative.Alert.alert("Kesalahan", "Ada kesalahan pada sistem dokter, harap melaporkan hal ini ke pusat aduan."); // find DOKTER UMUM inbox

                inbox = inboxes.find(function (_ref) {
                  var name = _ref.name;
                  return name.toUpperCase() === "DOKTER UMUM";
                });
                this.setState({
                  isLoading: false,
                  consent: consent,
                  inboxId: inbox.id || inboxes[0].id,
                  websiteToken: inbox.website_token || inboxes[0].website_token
                });
                _context.next = 18;
                break;

              case 15:
                _context.prev = 15;
                _context.t0 = _context["catch"](0);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 18:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[0, 15]]);
      }));

      function fetchData() {
        return _fetchData.apply(this, arguments);
      }

      return fetchData;
    }();

    _proto.componentDidMount = function componentDidMount() {
      this.fetchData();
    };

    _proto.handleCancelPress = function handleCancelPress() {
      this.props.navigation.goBack();
    };

    _proto.render = function render() {
      var _this2 = this;

      var themeColors = this.props.themeColors;
      var content = null;

      if (this.state.isLoading) {
        content = /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
          size: "large",
          color: themeColors.primary
        });
      } else {
        content = /*#__PURE__*/React__default['default'].createElement(Markdown__default['default'], {
          style: markdownStyles
        }, this.state.consent);
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$p.container, {
          backgroundColor: themeColors.primary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.handleCancelPress();
        },
        style: styles$p.cancelButton
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/round_arrow_back_ios_white_18dp.png")
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$p.cancelText
      }, I18n__default['default'].t("prixa.cancel")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexGrow: 1,
          backgroundColor: themeColors.lightestPrimary,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
        style: {
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 25
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          marginBottom: 5,
          alignSelf: "center",
          color: themeColors.darkestPrimary,
          fontSize: 22
        }, fonts.bold)
      }, "Penjelasan dan Persetujuan"), content))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "white",
          padding: 25,
          flexDirection: "row",
          justifyContent: "space-between"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        style: {
          backgroundColor: "#E64F4F",
          borderRadius: 20,
          paddingVertical: 12,
          paddingHorizontal: 48
        },
        onPress: function onPress() {
          return _this2.props.navigation.goBack();
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: "white",
          fontSize: 16
        }, fonts.bold)
      }, "Tolak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        style: {
          backgroundColor: "#5DBE66",
          borderRadius: 20,
          paddingVertical: 12,
          paddingHorizontal: 48
        },
        onPress: function onPress() {
          if (_this2.state.inboxId && _this2.state.websiteToken && _this2.state.consent) {
            _this2.props.navigation.replace("Waiting", _extends({}, _this2.props.navigation.state.params, {
              inboxId: _this2.state.inboxId,
              websiteToken: _this2.state.websiteToken // params passed {
              //   patientId,
              //   cardNumberDependency,
              //   consultation,
              //   complaintIds,
              //   duration,
              //   durationUnit,
              //   sympthomSummary,
              //   fullName,
              //   hasViId,
              //   enableVoiceCall,
              //   enableVideoCall,
              //   clientId,
              // }

            }));
          } else reactNative.Alert.alert("Whoops", "Proses belum selesai, mohon tunggu beberapa saat lagi.");
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: "white",
          fontSize: 16
        }, fonts.bold)
      }, "Setuju"))));
    };

    return ConsentScreen;
  }(React__default['default'].Component);

  var styles$p = reactNative.StyleSheet.create({
    cancelButton: {
      alignItems: "center",
      flexDirection: "row",
      padding: 15
    },
    cancelText: _extends({
      color: staticColors.white,
      fontSize: 16,
      marginStart: 15
    }, fonts.bold),
    container: {
      flex: 1
    }
  });
  var markdownStyles = reactNative.StyleSheet.create({
    text: {
      textAlign: "justify"
    },
    heading: {
      textAlign: "justify"
    },
    bullet_list: {
      textAlign: "justify"
    },
    ordered_list: {
      textAlign: "justify"
    },
    list_item: {
      textAlign: "justify"
    }
  });
  var ConsentScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(ConsentScreen);

  var TimelineSection = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(TimelineSection, _React$Component);

    function TimelineSection() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = TimelineSection.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          date = _this$props.date,
          themeColors = _this$props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$o.section, {
          color: themeColors.darkestPrimary
        }]
      }, I18n__default['default'].t("prixa.sessionOn", {
        date: I18n__default['default'].l("date.prixa.default", date)
      }));
    };

    return TimelineSection;
  }(React__default['default'].Component);

  _defineProperty(TimelineSection, "propTypes", {
    date: PropTypes__default['default'].instanceOf(Date).isRequired
  });

  var styles$o = reactNative.StyleSheet.create({
    section: _extends({
      fontSize: 16
    }, fonts.regular)
  });
  var TimelineSection$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(TimelineSection);

  var AVATARS = {
    f: [require("../assets/avatars/woman/1.png"), require("../assets/avatars/woman/2.png"), require("../assets/avatars/woman/3.png"), require("../assets/avatars/woman/4.png"), require("../assets/avatars/woman/5.png"), require("../assets/avatars/woman/6.png"), require("../assets/avatars/woman/7.png"), require("../assets/avatars/woman/8.png"), require("../assets/avatars/woman/9.png"), require("../assets/avatars/woman/10.png"), require("../assets/avatars/woman/11.png"), require("../assets/avatars/woman/12.png"), require("../assets/avatars/woman/13.png"), require("../assets/avatars/woman/14.png"), require("../assets/avatars/woman/15.png"), require("../assets/avatars/woman/16.png"), require("../assets/avatars/woman/17.png"), require("../assets/avatars/woman/18.png"), require("../assets/avatars/woman/19.png"), require("../assets/avatars/woman/20.png"), require("../assets/avatars/woman/21.png"), require("../assets/avatars/woman/22.png")],
    m: [require("../assets/avatars/man/1.png"), require("../assets/avatars/man/2.png"), require("../assets/avatars/man/3.png"), require("../assets/avatars/man/4.png"), require("../assets/avatars/man/5.png"), require("../assets/avatars/man/6.png"), require("../assets/avatars/man/7.png"), require("../assets/avatars/man/8.png"), require("../assets/avatars/man/9.png"), require("../assets/avatars/man/10.png"), require("../assets/avatars/man/11.png"), require("../assets/avatars/man/12.png"), require("../assets/avatars/man/13.png"), require("../assets/avatars/man/14.png"), require("../assets/avatars/man/15.png"), require("../assets/avatars/man/16.png"), require("../assets/avatars/man/17.png"), require("../assets/avatars/man/18.png")]
  };

  var PatientAvatar = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PatientAvatar, _React$Component);

    function PatientAvatar() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PatientAvatar.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          cardNumber = _this$props.cardNumber,
          gender = _this$props.gender,
          themeColors = _this$props.themeColors;
      var seed = cardNumber.split("").reduce(function (currentSeed, c) {
        return (currentSeed + c.charCodeAt(0)) % AVATARS[gender].length;
      }, 0);
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: AVATARS[gender][seed],
        style: [styles$n.avatar, {
          backgroundColor: themeColors.lightestPrimary
        }]
      });
    };

    return PatientAvatar;
  }(React__default['default'].Component);

  _defineProperty(PatientAvatar, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired
  });

  var styles$n = reactNative.StyleSheet.create({
    avatar: {
      borderRadius: 30,
      height: 60,
      width: 60
    }
  });
  var PatientAvatar$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PatientAvatar);

  var PatientDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PatientDetail, _React$Component);

    function PatientDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PatientDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props;
          _this$props.cardNumber;
          var fullName = _this$props.fullName;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$m.fullName
      }, fullName));
    };

    return PatientDetail;
  }(React__default['default'].Component);

  _defineProperty(PatientDetail, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    fullName: PropTypes__default['default'].string.isRequired
  });
  var styles$m = reactNative.StyleSheet.create({
    cardNumber: _extends({
      color: staticColors.white,
      fontSize: 16
    }, fonts.light),
    fullName: _extends({
      color: staticColors.white,
      fontSize: 20
    }, fonts.regular)
  });

  var PatientAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PatientAvatarWithDetail, _React$Component);

    function PatientAvatarWithDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PatientAvatarWithDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          cardNumber = _this$props.cardNumber,
          fullName = _this$props.fullName,
          gender = _this$props.gender;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$l.container
      }, /*#__PURE__*/React__default['default'].createElement(PatientAvatar$1, {
        cardNumber: cardNumber,
        gender: gender
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$l.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(PatientDetail, {
        cardNumber: cardNumber,
        fullName: fullName
      })));
    };

    return PatientAvatarWithDetail;
  }(React__default['default'].Component);

  _defineProperty(PatientAvatarWithDetail, "propTypes", {
    cardNumber: PropTypes__default['default'].string.isRequired,
    fullName: PropTypes__default['default'].string.isRequired,
    gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired
  });
  var styles$l = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      flexDirection: "row",
      flexGrow: 1
    },
    detailContainer: {
      marginStart: 15
    }
  });

  var PatientField = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PatientField, _React$Component);

    function PatientField() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PatientField.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          containerStyle = _this$props.containerStyle,
          editable = _this$props.editable,
          label = _this$props.label,
          onEditPress = _this$props.onEditPress,
          themeColors = _this$props.themeColors,
          value = _this$props.value;
      var content = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$k.container, containerStyle]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$k.label, {
          color: themeColors.primary
        }]
      }, label.toUpperCase()), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          flexDirection: "row"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$k.value
      }, value), editable && /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/baseline_edit_black_18dp.png"),
        style: {
          marginStart: 10
        }
      })));

      if (editable) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: onEditPress,
          style: containerStyle
        }, content);
      } else {
        return content;
      }
    };

    return PatientField;
  }(React__default['default'].Component);

  _defineProperty(PatientField, "defaultProps", {
    editable: false,
    onEditPress: function onEditPress() {}
  });

  _defineProperty(PatientField, "propTypes", {
    containerStyle: reactNative.ViewPropTypes.style,
    editable: PropTypes__default['default'].bool,
    label: PropTypes__default['default'].string.isRequired,
    onEditPress: PropTypes__default['default'].func,
    value: PropTypes__default['default'].string.isRequired
  });

  var styles$k = reactNative.StyleSheet.create({
    container: {
      padding: 5
    },
    label: _extends({
      fontSize: 16
    }, fonts.bold),
    value: _extends({
      color: staticColors.cavernous,
      fontSize: 16
    }, fonts.bold)
  });
  var PatientField$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PatientField);

  var PatientDetailMore = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PatientDetailMore, _React$Component);

    function PatientDetailMore() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PatientDetailMore.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          gender = _this$props.gender,
          height = _this$props.height,
          onEditPress = _this$props.onEditPress,
          weight = _this$props.weight;
      var genders = {
        f: I18n__default['default'].t("prixa.female"),
        m: I18n__default['default'].t("prixa.male")
      };
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$j.rowContainer
      }, /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
        containerStyle: styles$j.halfWidth,
        label: I18n__default['default'].t("prixa.gender"),
        value: genders[gender]
      }), /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
        containerStyle: styles$j.halfWidth,
        label: I18n__default['default'].t("prixa.age"),
        value: this.props.age === null || this.props.age === undefined ? '-' : this.props.age + " " + I18n__default['default'].t("prixa.ageText")
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$j.rowContainer
      }, /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
        containerStyle: styles$j.halfWidth,
        editable: true,
        label: "Tinggi Badan",
        onEditPress: onEditPress,
        value: height ? height + " cm" : "-"
      }), /*#__PURE__*/React__default['default'].createElement(PatientField$1, {
        containerStyle: styles$j.halfWidth,
        editable: true,
        label: "Berat Badan",
        onEditPress: onEditPress,
        value: weight ? weight + " kg" : "-"
      })));
    };

    return PatientDetailMore;
  }(React__default['default'].Component);

  _defineProperty(PatientDetailMore, "propTypes", {
    "class": PropTypes__default['default'].string,
    gender: PropTypes__default['default'].oneOf(["f", "m"]).isRequired,
    height: PropTypes__default['default'].number,
    onEditPress: PropTypes__default['default'].func,
    organization: PropTypes__default['default'].string.isRequired,
    weight: PropTypes__default['default'].number,
    age: PropTypes__default['default'].number
  });

  var styles$j = reactNative.StyleSheet.create({
    fullWidth: {
      flex: 1
    },
    halfWidth: {
      flex: 0.5
    },
    organization: _extends({
      fontSize: 16,
      marginBottom: 10,
      textAlign: "center"
    }, fonts.bold),
    rowContainer: {
      flexDirection: "row",
      marginBottom: 10
    }
  });
  var PatientDetailMore$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PatientDetailMore);

  var DoctorAvatar = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DoctorAvatar, _React$Component);

    function DoctorAvatar() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DoctorAvatar.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          avatarUrl = _this$props.avatarUrl,
          themeColors = _this$props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: {
          uri: avatarUrl
        },
        style: [styles$i.avatar, {
          backgroundColor: themeColors.lightestPrimary
        }]
      });
    };

    return DoctorAvatar;
  }(React__default['default'].Component);

  _defineProperty(DoctorAvatar, "propTypes", {
    avatarUrl: PropTypes__default['default'].string
  });

  var styles$i = reactNative.StyleSheet.create({
    avatar: {
      borderRadius: 15,
      height: 30,
      width: 30
    }
  });
  var DoctorAvatar$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(DoctorAvatar);

  var DoctorDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DoctorDetail, _React$Component);

    function DoctorDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DoctorDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          fullName = _this$props.fullName,
          specialities = _this$props.specialities,
          themeColors = _this$props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$h.fullName
      }, fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$h.specialities, {
          color: themeColors.lighterPrimary
        }]
      }, specialities));
    };

    return DoctorDetail;
  }(React__default['default'].Component);

  _defineProperty(DoctorDetail, "propTypes", {
    fullName: PropTypes__default['default'].string.isRequired,
    specialities: PropTypes__default['default'].string.isRequired
  });

  var styles$h = reactNative.StyleSheet.create({
    fullName: _extends({
      color: staticColors.cavernous,
      fontSize: 14
    }, fonts.bold),
    specialities: _extends({
      fontSize: 12
    }, fonts.regular)
  });
  var DoctorDetail$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(DoctorDetail);

  var DoctorAvatarWithDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DoctorAvatarWithDetail, _React$Component);

    function DoctorAvatarWithDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DoctorAvatarWithDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          avatarUrl = _this$props.avatarUrl,
          fullName = _this$props.fullName,
          specialities = _this$props.specialities;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$g.container
      }, /*#__PURE__*/React__default['default'].createElement(DoctorAvatar$1, {
        avatarUrl: avatarUrl
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$g.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(DoctorDetail$1, {
        fullName: fullName,
        specialities: specialities
      })));
    };

    return DoctorAvatarWithDetail;
  }(React__default['default'].Component);

  _defineProperty(DoctorAvatarWithDetail, "propTypes", {
    avatarUrl: PropTypes__default['default'].string,
    fullName: PropTypes__default['default'].string.isRequired,
    specialities: PropTypes__default['default'].string.isRequired
  });
  var styles$g = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      flexDirection: "row"
    },
    detailContainer: {
      marginStart: 10
    }
  });

  var TimelineItem = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(TimelineItem, _React$Component);

    function TimelineItem() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = TimelineItem.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          createdAt = _this$props.createdAt,
          dependent = _this$props.dependent,
          dependentStatus = _this$props.dependentStatus,
          doctor = _this$props.doctor,
          patientName = _this$props.patientName,
          summary = _this$props.summary,
          themeColors = _this$props.themeColors,
          transactionDependency = _this$props.transactionDependency;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$f.createdAt, {
          color: themeColors.darkestPrimary
        }]
      }, I18n__default['default'].l("time.prixa.default", createdAt)), /*#__PURE__*/React__default['default'].createElement(DoctorAvatarWithDetail, {
        avatarUrl: doctor.avatarUrl,
        fullName: doctor.fullName,
        specialities: doctor.specialities
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, I18n__default['default'].t("prixa.consultationFor")), !!transactionDependency || !!dependentStatus ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$f.patient
      }, dependentStatus ? dependent : transactionDependency.first_name + " " + transactionDependency.last_name) : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$f.patient
      }, patientName)), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$f.summary
      }, summary));
    };

    return TimelineItem;
  }(React__default['default'].Component);

  _defineProperty(TimelineItem, "propTypes", {
    createdAt: PropTypes__default['default'].instanceOf(Date).isRequired,
    doctor: PropTypes__default['default'].shape({
      avatarUrl: PropTypes__default['default'].string,
      fullName: PropTypes__default['default'].string.isRequired,
      specialities: PropTypes__default['default'].string.isRequired
    }).isRequired,
    summary: PropTypes__default['default'].string.isRequired,
    patientName: PropTypes__default['default'].string.isRequired,
    transactionDependency: PropTypes__default['default'].object,
    dependentStatus: PropTypes__default['default'].number,
    dependent: PropTypes__default['default'].string
  });

  var styles$f = reactNative.StyleSheet.create({
    createdAt: _extends({
      fontSize: 16,
      marginBottom: 20
    }, fonts.regular),
    summary: _extends({
      color: staticColors.grey,
      fontSize: 12,
      marginTop: 16,
      textAlign: "justify"
    }, fonts.regular),
    patient: _extends({
      fontSize: 14,
      marginTop: 4,
      textAlign: "justify"
    }, fonts.bold)
  });
  var TimelineItem$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(TimelineItem);

  var CustomerProfileScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(CustomerProfileScreen, _Component);

    function CustomerProfileScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "_onPress", function () {
        if (_this.state.medical) {
          if (_this.state.activeConsultation) {
            _this.props.navigation.navigate("Waiting", {
              clientAppId: _this.state.clientAppId,
              patientId: _this.state.id,
              newPatientId: _this.state.newPatientId,
              activeConsultation: _this.state.activeConsultation,
              hasViId: _this.state.hasViId,
              enableVoiceCall: _this.state.config.is_voice_call_enabled,
              enableVideoCall: _this.state.config.is_video_call_enabled,
              inboxId: _this.state.inboxId,
              websiteToken: _this.state.websiteToken,
              transactionId: _this.state.transactionId,
              activeTransaction: _this.state.activeTransaction
            });
          } else {
            _this.props.navigation.navigate("ask", {
              clientAppId: _this.state.clientAppId,
              patientId: _this.state.id,
              newPatientId: _this.state.newPatientId,
              firstName: _this.state.firstName,
              config: _this.state.config,
              dependenceStatus: _this.state.dependenceStatus,
              hasViId: _this.state.hasViId,
              enableVoiceCall: _this.state.config.is_voice_call_enabled,
              enableVideoCall: _this.state.config.is_video_call_enabled,
              clientId: _this.state.clientId,
              hasDoB: _this.state.hasDoB
            });
          }
        } else {
          _this.props.navigation.navigate("Medical", {
            patientId: _this.state.newPatientId,
            birthdate: _this.state.birthdate,
            cardNumber: _this.state.cardNumber,
            fullName: _this.state.fullName,
            gender: _this.state.gender,
            age: _this.state.age,
            height: null,
            weight: null
          });
        }
      });

      _defineProperty(_assertThisInitialized(_this), "onHistoryPress", function () {
        var _this$state = _this.state,
            cardNumber = _this$state.cardNumber,
            fullName = _this$state.fullName,
            gender = _this$state.gender,
            config = _this$state.config,
            newPatientId = _this$state.newPatientId;

        _this.props.navigation.navigate("PrescriptionHistory", {
          cardNumber: cardNumber,
          fullName: fullName,
          gender: gender,
          config: config,
          patientId: newPatientId
        });
      });

      _defineProperty(_assertThisInitialized(_this), "onMedicalCheckPress", function () {
        _this.props.navigation.navigate("MedicalCheck", {
          url: "https://dev.diagnosa.prixa.ai/partner/dc6d7de0-cb0b-11ea-aa8b-6521aef536d7/app/a65ff9f0-dac6-11ea-811b-b3b0a791cc9e",
          patientId: _this.state.id
        });
      });

      _this.state = {
        firstName: "",
        fullName: "",
        cardNumber: "",
        organization: "",
        status: "",
        "class": "",
        age: 0,
        gender: "m",
        birthdate: new Date(),
        phone: "",
        email: "",
        id: "",
        dependenceStatus: "",
        activeConsultation: null,
        medical: null,
        historiesTotal: 0,
        historiesData: [],
        isLoading: true,
        symptomsCheckUrl: "",
        loading: false,
        config: {},
        hasViId: false
      };
      return _this;
    }

    var _proto = CustomerProfileScreen.prototype;

    _proto.checkLaunchStatus = function checkLaunchStatus() {
      if (this.props.introSlides.length > 0) {
        this.props.navigation.navigate("intro");
      }
    };

    _proto.fetchProfile = /*#__PURE__*/function () {
      var _fetchProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var _mainPatient$config, _yield$API$get, profileData, _yield$API$get2, patientList, mainPatient, resp, _yield$API$get3, _yield$API$get3$data, consultationsHistories, consultationsHistoriesTotal, histories, lastDate, activeConsultation, age, roundedAge, checkActiveTransaction, activeTransaction, prevConsultationData, prevConsultation, isPrevConsultationActive;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.prev = 0;
                setConsultation(null);
                this.setState({
                  loading: true
                }); // ---------- new flow with external users ----------
                // get external user data

                _context.next = 5;
                return API.get(APP_BASE_URL + "/v1/external/users/me", {
                  headers: {
                    "X-Client-Id": this.props.clientId
                  }
                });

              case 5:
                _yield$API$get = _context.sent;
                profileData = _yield$API$get.data;
                _context.next = 9;
                return API.get(APP_BASE_URL + "/v1/patients/user/" + profileData.id);

              case 9:
                _yield$API$get2 = _context.sent;
                patientList = _yield$API$get2.data.data;
                // find main patient (or main card holder)
                mainPatient = patientList.find(function (patient) {
                  return patient.dependecy_status === "0";
                }); // if no main patient in the list, get the first one

                if (!mainPatient) mainPatient = patientList[0];
                _context.next = 15;
                return API.get(APP_BASE_URL + "/v2/profile/" + mainPatient.id + "/me");

              case 15:
                resp = _context.sent;
                mainPatient = resp.data.data; // get list of consultation histories

                _context.next = 19;
                return API.get(APP_BASE_URL + "/v2/profile/" + mainPatient.id + "/consultation-history");

              case 19:
                _yield$API$get3 = _context.sent;
                _yield$API$get3$data = _yield$API$get3.data;
                consultationsHistories = _yield$API$get3$data.data;
                consultationsHistoriesTotal = _yield$API$get3$data.total;
                console.log({
                  profileData: profileData,
                  mainPatient: mainPatient,
                  patientList: patientList,
                  consultationsHistories: consultationsHistories
                }); // prepare data for consultation histories

                histories = [];

                ___default['default'].each(consultationsHistories, function (item) {
                  var n = moment__default['default'](item["created_at"]);
                  var date = n.format("D MMMM YYYY");

                  if (lastDate !== date) {
                    histories.push({
                      type: "section",
                      date: n.toDate(),
                      icon: require("../assets/round_access_time_white_18dp.png")
                    });
                    lastDate = date;
                  }

                  histories.push({
                    type: "single",
                    doctor: {
                      avatar: {
                        uri: item["doctor_photo"]
                      },
                      name: item["doctor_name"],
                      position: item["doctor_specialities"]
                    },
                    createdAt: n.toDate(),
                    description: item["trx_summary"] || item.detail_complaint,
                    prescriptionId: item["prescription_id"],
                    transactionDependency: item["transaction_dependency"],
                    dependentStatus: Number(item["dependent_status"]),
                    dependent: item["dependent"],
                    patientName: item["patient_name"]
                  });
                });

                activeConsultation = mainPatient.active_consultation;
                setConsultation(activeConsultation); // set medical data from patient data

                setMedical(mainPatient.patient_height, mainPatient.patient_weight);
                age = mainPatient.patient_age; // to handle if age is null, then set age = null. otherwise, age might be 0.

                roundedAge = age === null || age === undefined ? null : Math.floor(Number(age));
                mainPatient.config.is_symptoms_check_enabled;
                mainPatient.config.is_check_doctor_enabled;
                // prepare check active transaction in all member


                checkActiveTransaction = patientList.map(function (patient) {
                  return API.get(APP_BASE_URL + "/v2/consultations/patient/" + patient.id).then(function (resp) {
                    return resp.data.data;
                  });
                }); // GET check active transaction in patient and family member

                _context.next = 37;
                return axios__default['default'].all(checkActiveTransaction).then(axios__default['default'].spread(function () {
                  for (var _len = arguments.length, transactions = new Array(_len), _key = 0; _key < _len; _key++) {
                    transactions[_key] = arguments[_key];
                  }

                  return transactions.find(function (trx) {
                    if (trx.length !== 0) {
                      console.log("you have one active transaction", trx);
                      return trx[0];
                    }
                  });
                }));

              case 37:
                activeTransaction = _context.sent;
                setConsultation(activeTransaction);
                this.setState({
                  historiesData: histories,
                  historiesTotal: consultationsHistoriesTotal,
                  firstName: mainPatient.patient_f_name,
                  fullName: mainPatient.patient_f_name + " " + mainPatient.patient_l_name,
                  cardNumber: mainPatient.patient_card_number,
                  organization: mainPatient.patient_organization,
                  status: mainPatient.patient_vip_status ? "VIP" : "General",
                  "class": mainPatient.patient_class,
                  age: roundedAge,
                  gender: mainPatient.patient_gender,
                  birthdate: moment__default['default'](mainPatient.patient_dob).toDate(),
                  hasDoB: !!mainPatient.patient_dob,
                  phone: mainPatient.patient_phone,
                  email: mainPatient.patient_email,
                  id: mainPatient.id,
                  dependenceStatus: Number(mainPatient.dependence_status),
                  activeConsultation: getConsultation(),
                  medical: getMedical(),
                  isLoading: false,
                  symptomsCheckUrl: (_mainPatient$config = mainPatient.config) == null ? void 0 : _mainPatient$config.symptoms_check_url,
                  config: mainPatient.config,
                  hasViId: mainPatient.has_vi_id,
                  newPatientId: mainPatient.id,
                  clientId: profileData.client_id,
                  inboxId: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].inbox_id : null,
                  transactionId: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].transaction_id : null,
                  websiteToken: (activeTransaction == null ? void 0 : activeTransaction.length) > 0 ? activeTransaction[0].website_token : null,
                  activeTransaction: activeTransaction,
                  clientAppId: mainPatient.client_app_id
                });

                if (this.props.screenProps.intent) {
                  if (this.props.screenProps.intent.action === "text_message" && mainPatient.active_consultation) {
                    this.props.navigation.navigate("Waiting", {
                      patientId: this.state.id,
                      activeConsultation: this.state.activeConsultation
                    });
                  }
                } else if (mainPatient.transaction_to_post_assess) {
                  this.props.navigation.navigate("PostAssessment", {
                    transaction: {
                      doctor: {
                        avatarUrl: mainPatient.transaction_to_post_assess.doctor.doctor_photo,
                        fullName: mainPatient.transaction_to_post_assess.doctor.octor_f_name + " " + mainPatient.transaction_to_post_assess.doctor.octor_l_name
                      },
                      startedAt: mainPatient.transaction_to_post_assess.consultation_chat_started_at,
                      summary: mainPatient.transaction_to_post_assess.trx_summary
                    }
                  });
                } // check for previous active consultation on local storage


                _context.next = 43;
                return AsyncStorage__default['default'].getItem("active_consultation");

              case 43:
                prevConsultationData = _context.sent;

                if (prevConsultationData) {
                  prevConsultation = JSON.parse(prevConsultationData); // check prev with current active consultation

                  isPrevConsultationActive = activeConsultation ? prevConsultation.trx_id === activeConsultation.trx_id && prevConsultation.room_id === activeConsultation.room_id : false;

                  if (!isPrevConsultationActive) {
                    // transfer to rating page if previous consulation is not the same as current active
                    this.props.navigation.navigate("Rating", {
                      transactionId: prevConsultation.trx_id,
                      agentAvatar: prevConsultation.avatar_url,
                      agentName: prevConsultation.username,
                      agentSpecialities: prevConsultation.email
                    });
                  }
                }

                this.setState({
                  loading: false
                });
                _context.next = 52;
                break;

              case 48:
                _context.prev = 48;
                _context.t0 = _context["catch"](0);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);
                this.props.screenProps.onClose();

              case 52:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[0, 48]]);
      }));

      function fetchProfile() {
        return _fetchProfile.apply(this, arguments);
      }

      return fetchProfile;
    }();

    _proto.componentDidMount = /*#__PURE__*/function () {
      var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
        var _yield$API$post, _yield$API$post$data, access_token, metadata;

        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                this.checkLaunchStatus();
                _context2.prev = 1;
                _context2.next = 4;
                return API.post(APP_BASE_URL + "/v2/profile/token", {}, {
                  headers: {
                    Authorization: "Bearer " + this.props.token
                  }
                });

              case 4:
                _yield$API$post = _context2.sent;
                _yield$API$post$data = _yield$API$post.data;
                access_token = _yield$API$post$data.access_token;
                metadata = _yield$API$post$data.metadata;
                this.props.saveAccessToken(access_token);
                this.props.saveClientId(metadata.client_id);
                this.promise = this.fetchProfile();
                _context2.next = 17;
                break;

              case 13:
                _context2.prev = 13;
                _context2.t0 = _context2["catch"](1);
                console.log((_context2.t0 == null ? void 0 : _context2.t0.response) || _context2.t0);
                this.props.screenProps.onClose();

              case 17:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this, [[1, 13]]);
      }));

      function componentDidMount() {
        return _componentDidMount.apply(this, arguments);
      }

      return componentDidMount;
    }();

    _proto.render = function render() {
      var _this2 = this;

      if (this.state.isLoading) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 1,
            backgroundColor: this.props.themeColors.primary,
            justifyContent: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
          size: "large",
          color: "#fff"
        }));
      }

      var consultationHistoriesRender;

      if (this.state.historiesTotal > 0) {
        consultationHistoriesRender = /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
          innerCircle: "icon",
          circleColor: this.props.themeColors.lighterPrimary,
          lineColor: this.props.themeColors.primary,
          data: this.state.historiesData,
          detailContainerStyle: {
            marginTop: -13,
            marginBottom: 13
          },
          listViewContainerStyle: {
            marginLeft: 12,
            marginRight: 32
          },
          renderDetail: function renderDetail(rowData, sectionID, rowID) {
            if (rowData.type === "section") {
              return /*#__PURE__*/React__default['default'].createElement(TimelineSection$1, {
                date: rowData.date
              });
            } else {
              return /*#__PURE__*/React__default['default'].createElement(TimelineItem$1, {
                createdAt: rowData.createdAt,
                doctor: {
                  avatarUrl: rowData.doctor.avatar.uri,
                  specialities: rowData.doctor.position,
                  fullName: rowData.doctor.name
                },
                summary: rowData.description || "",
                transactionDependency: rowData.transactionDependency,
                dependentStatus: rowData.dependentStatus,
                dependent: rowData.dependent,
                patientName: rowData.patientName
              });
            }
          },
          showTime: false
        });
      } else {
        consultationHistoriesRender = null;
      }

      return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
        ref: function ref(_ref2) {
          _this2.scrollRef = _ref2;
        },
        backgroundColor: this.props.themeColors.primary,
        parallaxHeaderHeight: 600,
        refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
          refreshing: this.state.loading,
          onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
            return regeneratorRuntime.wrap(function _callee3$(_context3) {
              while (1) {
                switch (_context3.prev = _context3.next) {
                  case 0:
                    _context3.next = 2;
                    return _this2.fetchProfile();

                  case 2:
                    return _context3.abrupt("return", _context3.sent);

                  case 3:
                  case "end":
                    return _context3.stop();
                }
              }
            }, _callee3);
          }))
        }),
        renderForeground: function renderForeground() {
          var _React$createElement;

          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
            onPress: function onPress() {
              _this2.props.resetTokenStore();

              _this2.props.screenProps.onClose();
            },
            position: "start",
            text: "Tutup",
            theme: "light"
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              justifyContent: "center",
              alignItems: "center"
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
            source: require("../assets/intro.png"),
            width: reactNative.Dimensions.get("window").width - 140
          })), _this2.state.config.is_check_doctor_enabled ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            onPress: _this2._onPress,
            style: {
              marginBottom: 16
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              borderRadius: 30,
              backgroundColor: staticColors.forestFern
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
            style: _extends({
              fontSize: 20
            }, fonts.bold, {
              color: "#FFF",
              width: 250,
              textAlign: "center",
              paddingVertical: 16
            })
          }, _this2.state.activeConsultation ? "LANJUT KONSULTASI" : "TANYA DOKTER"))) : null, _this2.state.config["is_prescription_claim_enabled"] ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, (_React$createElement = {
            style: {
              marginBottom: 16
            },
            onPress: _this2.onHistoryPress
          }, _React$createElement["style"] = {
            marginBottom: 16
          }, _React$createElement), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              borderRadius: 30,
              backgroundColor: _this2.props.themeColors.darkestPrimary
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
            style: _extends({
              fontSize: 20
            }, fonts.bold, {
              color: "#FFF",
              width: 250,
              textAlign: "center",
              paddingVertical: 16
            })
          }, "RIWAYAT RESEP"))) : null, _this2.state.config.is_symptoms_check_enabled ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            onPress: _this2.onMedicalCheckPress,
            style: {
              marginBottom: 16
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              borderRadius: 30,
              backgroundColor: _this2.props.themeColors.lighterPrimary
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
            style: _extends({
              fontSize: 20
            }, fonts.bold, {
              color: "#FFF",
              width: 250,
              textAlign: "center",
              paddingVertical: 16
            })
          }, "PERIKSA GEJALA"))) : null));
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNavigation.NavigationEvents, {
        onDidFocus: function onDidFocus(payload) {
          var consultation = getConsultation();
          var medical = getMedical();

          _this2.setState({
            activeConsultation: consultation ? Object.assign({}, consultation) : null,
            medical: medical ? Object.assign({}, medical) : null
          });
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          alignItems: "center",
          padding: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
        cardNumber: this.state.cardNumber,
        fullName: this.state.fullName,
        gender: this.state.gender
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        style: {
          marginStart: 20
        },
        onPress: function onPress() {
          return _this2.scrollRef.scrollTo({
            x: 0,
            y: 500
          });
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 30,
          paddingTop: 15
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          width: 64,
          height: 6,
          borderRadius: 3,
          marginBottom: 15,
          opacity: 0.5,
          backgroundColor: "#808080",
          alignSelf: "center"
        }
      }), /*#__PURE__*/React__default['default'].createElement(PatientDetailMore$1, {
        onEditPress: function onEditPress() {
          _this2.props.navigation.navigate("Medical", {
            patientId: _this2.state.newPatientId,
            age: _this2.state.age,
            cardNumber: _this2.state.cardNumber,
            fullName: _this2.state.fullName,
            gender: _this2.state.gender,
            height: _this2.state.medical ? _this2.state.medical.height : null,
            weight: _this2.state.medical ? _this2.state.medical.weight : null
          });
        },
        "class": this.state["class"],
        gender: this.state.gender,
        height: this.state.medical ? this.state.medical.height : null,
        organization: this.state.organization,
        weight: this.state.medical ? this.state.medical.weight : null,
        age: this.state.age
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#F1F1F1",
          height: 1,
          width: "100%",
          marginBottom: 30
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 20
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          alignSelf: "center"
        })
      }, "RIWAYAT KONSULTASI"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 15
        }, fonts.regular, {
          color: this.props.themeColors.darkerPrimary,
          alignSelf: "center",
          marginBottom: 30
        })
      }, this.state.historiesTotal, " Konsultasi"), consultationHistoriesRender)));
    };

    return CustomerProfileScreen;
  }(React.Component);

  var mapDispatchToProps = function mapDispatchToProps(dispatch) {
    return {
      saveAccessToken: function saveAccessToken(accessToken) {
        return dispatch(changeAccessToken(accessToken));
      },
      resetTokenStore: function resetTokenStore$1() {
        return dispatch(resetTokenStore());
      },
      saveClientId: function saveClientId$1(clientId) {
        return dispatch(saveClientId(clientId));
      }
    };
  };

  var CustomerProfileScreen$1 = reactRedux.connect(function (state) {
    return {
      introSlides: state.introSlides,
      themeColors: state.themeColors,
      token: state.token.token,
      clientId: state.appConfig.clientId
    };
  }, mapDispatchToProps)(CustomerProfileScreen);

  var injectJs = "const element = document.getElementsByClassName('prixa-menubar');" + "if(element.length > 0) { element[0].style.display = 'none'; }";

  var MedicalCheck = /*#__PURE__*/function (_Component) {
    _inheritsLoose(MedicalCheck, _Component);

    function MedicalCheck() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _Component.call.apply(_Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "state", {
        loading: true,
        url: ""
      });

      _defineProperty(_assertThisInitialized(_this), "onNavigationStateChange", function (state) {
        if (state.loading) {
          _this.setState({
            loading: true
          });
        } else {
          _this.setState({
            loading: false
          });
        }

        var url = state.url;

        if (String(url).indexOf("/consultation-start") >= 0) {
          var sessionId = getParameterByName("sessionID", url);

          _this.getConsultationDetails(sessionId);
        }
      });

      _defineProperty(_assertThisInitialized(_this), "getConsultationDetails", /*#__PURE__*/function () {
        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(sessionId) {
          var prixaEngine, rp, response, json, consultation, profiles, symptoms, histories, historyText, weight, height, bmiProfile, bmiStatus, mainSymptoms, mainSymptomsText, otherSymptoms, otherSymptomsText, noSymptoms, noymptomsText, unknownSymptoms, unknownSymptomsText, consultationText, navigation, param;
          return regeneratorRuntime.wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  prixaEngine = getPrixaEngine();
                  rp = fetch(prixaEngine.prixaEngineBaseUrl + "prixa", {
                    method: "POST",
                    headers: {
                      "x-prixa-api-key": prixaEngine.apiKey,
                      "x-partner-app-id": prixaEngine.partnerAppId,
                      "x-partner-id": prixaEngine.partnerId
                    },
                    body: JSON.stringify({
                      sessionId: sessionId,
                      reply: {
                        type: "resume"
                      }
                    })
                  });
                  _context.next = 4;
                  return rp;

                case 4:
                  response = _context.sent;
                  _context.next = 7;
                  return response.json();

                case 7:
                  json = _context.sent;
                  consultation = [];
                  profiles = ___default['default'].get(json.result, "actions.diagnosisResult.profiles", []);
                  symptoms = ___default['default'].get(json.result, "actions.diagnosisResult.symptoms", []);
                  ___default['default'].get(json.result, "actions.diagnosisResult.diseases", []); // STATUS KESEHATAN DAN KEBIASAAN

                  consultation.push("STATUS KESEHATAN DAN KEBIASAAN");
                  histories = [];

                  if (profiles.length > 0) {
                    histories = ___default['default'].filter(profiles, function (profile) {
                      return profile.type === "history";
                    });
                  }

                  historyText = [];

                  ___default['default'].forEach(histories, function (history) {
                    historyText.push("- " + history.nameIndo);
                  });

                  consultation.push(historyText.length > 0 ? historyText.join("\n") : "-");
                  consultation.push(""); // new line
                  // BMI

                  consultation.push("BMI");
                  weight = ___default['default'].get(json.result, "actions.diagnosisResult.user.weight", "-");
                  height = ___default['default'].get(json.result, "actions.diagnosisResult.user.height", "-");
                  bmiProfile = ___default['default'].find(profiles, function (profile) {
                    return profile.type === "bmi";
                  });
                  bmiStatus = bmiProfile ? bmiProfile.nameIndo : "-";
                  consultation.push("Tinggi: " + height + " cm | berat badan " + weight + " kg (" + bmiStatus + ")");
                  consultation.push(""); // new line
                  // KELUHAN UTAMA

                  mainSymptoms = [];

                  if (symptoms.length > 0) {
                    mainSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                      return symptom.answer === "yes" && symptom.chief;
                    });
                  }

                  consultation.push("KELUHAN UTAMA");
                  mainSymptomsText = [];

                  ___default['default'].forEach(mainSymptoms, function (symptom) {
                    mainSymptomsText.push(symptom.symptomName);
                  });

                  consultation.push(mainSymptomsText.length > 0 ? mainSymptomsText.join(", ") : "-");
                  consultation.push(""); // new line
                  // KELUHAN LAIN

                  otherSymptoms = [];

                  if (symptoms.length > 0) {
                    otherSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                      return symptom.answer === "yes" && !symptom.chief;
                    });
                  }

                  consultation.push("KELUHAN LAIN");
                  otherSymptomsText = [];

                  ___default['default'].forEach(otherSymptoms, function (symptom) {
                    otherSymptomsText.push("- " + symptom.symptomName);
                  });

                  consultation.push(otherSymptomsText.length > 0 ? otherSymptomsText.join("\n") : "-");
                  consultation.push(""); // new line
                  // TIDAK ADA KELUHAN

                  consultation.push("TIDAK ADA");
                  noSymptoms = [];

                  if (symptoms.length > 0) {
                    noSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                      return symptom.answer === "no";
                    });
                  }

                  noymptomsText = [];

                  ___default['default'].forEach(noSymptoms, function (symptom) {
                    noymptomsText.push("- " + symptom.symptomName);
                  });

                  consultation.push(noymptomsText.length > 0 ? noymptomsText.join("\n") : "-");
                  consultation.push(""); // new line
                  // TIDAK TAHU

                  unknownSymptoms = [];

                  if (symptoms.length > 0) {
                    unknownSymptoms = ___default['default'].filter(symptoms, function (symptom) {
                      return symptom.answer === "unknown";
                    });
                  }

                  consultation.push("TIDAK TAHU");
                  unknownSymptomsText = [];

                  ___default['default'].forEach(unknownSymptoms, function (symptom) {
                    unknownSymptomsText.push("- " + symptom.symptomName);
                  });

                  consultation.push(unknownSymptomsText.length > 0 ? unknownSymptomsText.join("\n") : "-");
                  consultationText = consultation.join("\n");
                  navigation = _this.props.navigation;
                  param = {
                    patientId: navigation.state.params.patientId,
                    dependent: ___default['default'].get(navigation.state.params, "dependent", null),
                    consultation: consultationText,
                    complaintIds: [],
                    duration: 1,
                    durationUnit: "day"
                  };

                  _this.props.navigation.replace("Consent", param);

                case 57:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee);
        }));

        return function (_x) {
          return _ref.apply(this, arguments);
        };
      }());

      return _this;
    }

    var _proto = MedicalCheck.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var url = this.props.navigation.state.params.url;
      this.setState({
        url: url
      });
    };

    _proto.render = function render() {
      var _this2 = this;

      var _this$state = this.state,
          loading = _this$state.loading,
          url = _this$state.url;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$e.closeContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.props.navigation.goBack();
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/close.png"),
        width: 25,
        style: styles$e.icon
      }))), url ? /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNativeWebview.WebView, {
        onNavigationStateChange: this.onNavigationStateChange,
        source: {
          uri: url
        },
        style: {
          flex: 1
        },
        originWhitelist: ["https://*"],
        injectedJavaScript: injectJs
      }), loading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$e.activityIndicator
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        style: {
          flex: 1
        },
        size: "large",
        color: "#FFF"
      })) : null) : null);
    };

    return MedicalCheck;
  }(React.Component);

  var styles$e = reactNative.StyleSheet.create({
    closeContainer: {
      padding: 16,
      backgroundColor: staticColors.grey,
      flexDirection: "row",
      justifyContent: "flex-end"
    },
    icon: {
      width: 25,
      height: 25
    },
    activityIndicator: {
      flex: 1,
      position: "absolute",
      width: "100%",
      height: "100%",
      marginTop: 40,
      backgroundColor: staticColors.grey
    }
  });

  var DoctorField = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DoctorField, _React$Component);

    function DoctorField() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DoctorField.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          label = _this$props.label,
          themeColors = _this$props.themeColors,
          value = _this$props.value;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$d.label, {
          color: themeColors.primary
        }]
      }, label.toUpperCase()), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$d.value
      }, value));
    };

    return DoctorField;
  }(React__default['default'].Component);

  _defineProperty(DoctorField, "propTypes", {
    label: PropTypes__default['default'].string.isRequired,
    value: PropTypes__default['default'].string.isRequired
  });

  var styles$d = reactNative.StyleSheet.create({
    label: _extends({
      fontSize: 15
    }, fonts.bold),
    value: _extends({
      color: staticColors.grey,
      fontSize: 15,
      marginBottom: 25
    }, fonts.regular)
  });
  var DoctorField$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(DoctorField);

  var DoctorDetailMore = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(DoctorDetailMore, _React$Component);

    function DoctorDetailMore() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = DoctorDetailMore.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          education = _this$props.education,
          hospital = _this$props.hospital,
          practiceLicense = _this$props.practiceLicense,
          registrationCertificate = _this$props.registrationCertificate;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$c.container
      }, /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
        label: I18n__default['default'].t("prixa.registrationCertificate"),
        value: registrationCertificate
      }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
        label: I18n__default['default'].t("prixa.practiceLicense"),
        value: practiceLicense
      }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
        label: I18n__default['default'].t("prixa.education"),
        value: education
      }), /*#__PURE__*/React__default['default'].createElement(DoctorField$1, {
        label: I18n__default['default'].t("prixa.hospital"),
        value: hospital
      }));
    };

    return DoctorDetailMore;
  }(React__default['default'].Component);

  _defineProperty(DoctorDetailMore, "propTypes", {
    education: PropTypes__default['default'].string.isRequired,
    hospital: PropTypes__default['default'].string.isRequired,
    practiceLicense: PropTypes__default['default'].string.isRequired,
    registrationCertificate: PropTypes__default['default'].string.isRequired
  });
  var styles$c = reactNative.StyleSheet.create({
    container: {
      padding: 30
    }
  });

  var _Dimensions$get$3 = reactNative.Dimensions.get("window"),
      width$2 = _Dimensions$get$3.width;

  var styles$b = reactNative.StyleSheet.create({
    name: _extends({}, fonts.bold, {
      fontSize: 20,
      paddingHorizontal: 35,
      color: "#FFF"
    }),
    position: _extends({}, fonts.regular, {
      fontSize: 16,
      paddingHorizontal: 35,
      color: "#FFF"
    }),
    actionsContainer: {
      padding: 25,
      flexDirection: "row",
      justifyContent: "center",
      borderColor: "#F1F1F1",
      borderBottomWidth: 1
    },
    container: {
      backgroundColor: "#FFF",
      borderTopEndRadius: 40,
      borderTopStartRadius: 40,
      flex: 1,
      width: width$2,
      marginTop: -40
    },
    action: {
      height: 50,
      width: 50,
      borderRadius: 50,
      marginHorizontal: 10,
      alignItems: "center",
      justifyContent: "center"
    }
  });

  var DoctorProfileScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(DoctorProfileScreen, _Component);

    function DoctorProfileScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "checkPermissionAndLaunchAudio", function () {
        var _this$props$navigatio = _this.props.navigation.state.params,
            hasViId = _this$props$navigatio.hasViId,
            enableVoiceCall = _this$props$navigatio.enableVoiceCall;

        if (hasViId && enableVoiceCall) {
          if (reactNative.Platform.OS === "android") {
            var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
            reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
              var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";

              if (recordAudioGranted) {
                _this.goToAudioCallScreen();
              }
            });
          } else {
            _this.goToAudioCallScreen();
          }
        }
      });

      _defineProperty(_assertThisInitialized(_this), "checkPermissionAndLaunchVideo", function () {
        var _this$props$navigatio2 = _this.props.navigation.state.params,
            hasViId = _this$props$navigatio2.hasViId,
            enableVideoCall = _this$props$navigatio2.enableVideoCall;

        if (hasViId && enableVideoCall) {
          if (reactNative.Platform.OS === "android") {
            var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.CAMERA, reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
            reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
              var cameraGranted = granted["android.permission.CAMERA"] === "granted";
              var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";

              if (cameraGranted && recordAudioGranted) {
                _this.goToVideoCallScreen();
              }
            });
          } else {
            _this.goToVideoCallScreen();
          }
        }
      });

      _defineProperty(_assertThisInitialized(_this), "navigateCall", function (callType) {
        var navigation = _this.props.navigation;
        navigation.navigate(callType, {
          doctor: {
            fullName: navigation.state.params.doctorFullname
          },
          patient: {
            id: navigation.state.params.patientId
          },
          transaction: {
            id: navigation.state.params.transactionId
          }
        });
      });

      _defineProperty(_assertThisInitialized(_this), "goToVideoCallScreen", function () {
        _this.navigateCall("VideoCall");
      });

      _defineProperty(_assertThisInitialized(_this), "goToAudioCallScreen", function () {
        _this.navigateCall("AudioCall");
      });

      _this.state = {
        avatarUrl: "https://izi.medlinx.id/uploads/userfiles/test.png",
        fullName: "",
        specialities: "",
        str: "",
        sip: "",
        education: "",
        hospitalName: "",
        hospitalAdress: "-"
      };
      return _this;
    }

    var _proto = DoctorProfileScreen.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var _this2 = this;

      var token = this.props.token;
      fetch(getBaseUrl() + "consultations/doctor-info?trx_id=" + this.props.navigation.state.params.transactionId, {
        headers: {
          Authorization: "Bearer " + token,
          Accept: "application/json",
          "Content-Type": "application/json"
        }
      }).then(function (res) {
        return res.json();
      }).then(function (json) {
        _this2.setState({
          avatarUrl: json["data"]["doctor_photo"],
          fullName: json["data"]["doctor_f_name"] + " " + json["data"]["doctor_l_name"],
          specialities: json["data"]["speciality_name"].join(", "),
          str: json["data"]["doctor_str"],
          sip: json["data"]["doctor_sip"],
          education: json["data"]["doctor_education"],
          hospitalName: json["data"]["hospital_name"],
          hospitalAdress: json["data"]["doctor_address"]
        });
      });
    };

    _proto.render = function render() {
      var _this3 = this;

      var _this$props$navigatio3 = this.props.navigation.state.params,
          hasViId = _this$props$navigatio3.hasViId,
          enableVoiceCall = _this$props$navigatio3.enableVoiceCall,
          enableVideoCall = _this$props$navigatio3.enableVideoCall;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
        style: {
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
        source: {
          uri: this.state.avatarUrl
        },
        width: width$2
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          bottom: 0,
          position: "absolute",
          paddingBottom: 50,
          paddingVertical: 10,
          backgroundColor: this.props.themeColors.primary,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          left: 0,
          right: 0
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$b.name
      }, this.state.fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$b.position
      }, this.state.education))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$b.container
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$b.actionsContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this3.props.navigation.goBack();
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$b.action, {
          backgroundColor: this.props.themeColors.primary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/round_chat_bubble_white_18dp.png"),
        style: {
          height: 24,
          width: 24
        }
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: this.checkPermissionAndLaunchVideo
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$b.action, hasViId && enableVideoCall ? {
          backgroundColor: this.props.themeColors.primary
        } : {
          backgroundColor: staticColors.grey
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/round_videocam_white_18dp.png"),
        style: {
          height: 28,
          width: 28
        }
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: this.checkPermissionAndLaunchAudio
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$b.action, hasViId && enableVoiceCall ? {
          backgroundColor: this.props.themeColors.primary
        } : {
          backgroundColor: staticColors.grey
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/round_call_white_18dp.png"),
        style: {
          height: 26,
          width: 26
        }
      })))), /*#__PURE__*/React__default['default'].createElement(DoctorDetailMore, {
        education: this.state.education,
        hospital: this.state.hospitalName,
        practiceLicense: this.state.sip,
        registrationCertificate: this.state.str
      }))));
    };

    return DoctorProfileScreen;
  }(React.Component);

  var DoctorProfileScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(DoctorProfileScreen);

  var MedicalScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(MedicalScreen, _React$Component);

    function MedicalScreen(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;
      var _this$props$navigatio = _this.props.navigation.state.params,
          height = _this$props$navigatio.height,
          weight = _this$props$navigatio.weight;
      var heightDecimal = height ? parseInt(height * 10) % 10 : null;
      var heightInteger = height ? parseInt(height) : null;
      var weightDecimal = weight ? parseInt(weight * 10) % 10 : null;
      var weightInteger = weight ? parseInt(weight) : null;
      _this.state = {
        bmiContainerWidth: 0,
        heightDecimal: heightDecimal,
        heightInteger: heightInteger,
        heightSelectorVisible: false,
        temporaryHeightDecimal: null,
        temporaryHeightInteger: null,
        temporaryWeightDecimal: null,
        temporaryWeightInteger: null,
        weightDecimal: weightDecimal,
        weightInteger: weightInteger,
        weightSelectorVisible: false
      };
      return _this;
    }

    var _proto = MedicalScreen.prototype;

    _proto.updateProfile = /*#__PURE__*/function () {
      var _updateProfile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var _this$state, heightDecimal, heightInteger, weightDecimal, weightInteger, patient_height, patient_weight, _yield$API$patch, status;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _this$state = this.state, heightDecimal = _this$state.heightDecimal, heightInteger = _this$state.heightInteger, weightDecimal = _this$state.weightDecimal, weightInteger = _this$state.weightInteger;
                patient_height = heightInteger + heightDecimal / 10;
                patient_weight = weightInteger + weightDecimal / 10;
                _context.prev = 3;
                _context.next = 6;
                return API.patch(APP_BASE_URL + "/v2/profile/me", {
                  patient_id: this.props.navigation.state.params.patientId,
                  patient_height: patient_height,
                  patient_weight: patient_weight
                });

              case 6:
                _yield$API$patch = _context.sent;
                status = _yield$API$patch.status;

                if (status === 200) {
                  setMedical(patient_height, patient_weight);
                  this.props.navigation.goBack();
                }

                _context.next = 14;
                break;

              case 11:
                _context.prev = 11;
                _context.t0 = _context["catch"](3);
                console.log(_context.t0 == null ? void 0 : _context.t0.response);

              case 14:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[3, 11]]);
      }));

      function updateProfile() {
        return _updateProfile.apply(this, arguments);
      }

      return updateProfile;
    }();

    _proto.render = function render() {
      var _this2 = this;

      var themeColors = this.props.themeColors;
      var _this$props$navigatio2 = this.props.navigation.state.params,
          cardNumber = _this$props$navigatio2.cardNumber,
          fullName = _this$props$navigatio2.fullName,
          gender = _this$props$navigatio2.gender,
          age = _this$props$navigatio2.age;
      var _this$state2 = this.state,
          bmiContainerWidth = _this$state2.bmiContainerWidth,
          heightDecimal = _this$state2.heightDecimal,
          heightInteger = _this$state2.heightInteger,
          heightSelectorVisible = _this$state2.heightSelectorVisible,
          temporaryHeightDecimal = _this$state2.temporaryHeightDecimal,
          temporaryHeightInteger = _this$state2.temporaryHeightInteger,
          temporaryWeightDecimal = _this$state2.temporaryWeightDecimal,
          temporaryWeightInteger = _this$state2.temporaryWeightInteger,
          weightDecimal = _this$state2.weightDecimal,
          weightInteger = _this$state2.weightInteger,
          weightSelectorVisible = _this$state2.weightSelectorVisible;
      var ageText = age === null || age === undefined ? "-" : age;
      var genderName = gender === "m" ? "Laki-Laki" : "Perempuan";
      var height = heightInteger + heightDecimal / 10;
      var weight = weightInteger + weightDecimal / 10;
      var bmiContainer = null;

      if (height && weight) {
        var bmi = Math.round(weight / Math.pow(height / 100, 2) * 10) / 10;
        var normalizedBmi = bmi;

        if (bmi < 13.5) {
          normalizedBmi = 13.5;
        }

        if (bmi > 36.5) {
          normalizedBmi = 36.5;
        }

        var color = null;
        var description = null;

        if (bmi >= 30) {
          color = "#E64F4F";
          description = "Kegemukan (Obesitas)";
        } else if (bmi >= 25) {
          color = "#FEA501";
          description = "Kelebihan berat badan";
        } else if (bmi >= 18.5) {
          color = "#5DBE66";
          description = "Normal (Ideal)";
        } else {
          color = "#4695EA";
          description = "Kekurangan berat badan";
        }

        bmiContainer = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row",
            marginBottom: 10
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: color,
            fontSize: 18
          }, fonts.bold)
        }, bmi), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: color,
            fontSize: 18
          }, fonts.light)
        }, " - "), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: color,
            fontSize: 18
          }, fonts.regular)
        }, description)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          onLayout: function onLayout(event) {
            return _this2.setState({
              bmiContainerWidth: event.nativeEvent.layout.width
            });
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row",
            height: 100
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: "#4695EA",
            flex: 5,
            justifyContent: "flex-end"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 12,
            padding: 4
          }, fonts.bold)
        }, "Kurang")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: "#5DBE66",
            flex: 6.5,
            justifyContent: "flex-end"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 12,
            padding: 4
          }, fonts.bold)
        }, "Ideal")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: "#FEA501",
            flex: 5,
            justifyContent: "flex-end"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 12,
            padding: 4
          }, fonts.bold)
        }, "Lebih")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: "#E64F4F",
            flex: 6.5,
            justifyContent: "flex-end"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 12,
            padding: 4
          }, fonts.bold)
        }, "Obesitas"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            backgroundColor: staticColors.white,
            borderRadius: 10,
            height: 20,
            left: bmiContainerWidth * (normalizedBmi - 13.5) / 23 - 10,
            marginTop: 20,
            position: "absolute",
            width: 20
          }
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flexDirection: "row"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 3.5
          }
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            flex: 3,
            textAlign: "center"
          }, fonts.regular)
        }, "18.5"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 3.5
          }
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            flex: 3,
            textAlign: "center"
          }, fonts.regular)
        }, "25"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 2
          }
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            flex: 3,
            textAlign: "center"
          }, fonts.regular)
        }, "30"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 5
          }
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            return _this2.updateProfile();
          },
          style: {
            alignSelf: "center",
            backgroundColor: "#5DBE66",
            borderRadius: 20,
            marginTop: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 16,
            paddingHorizontal: 30,
            paddingVertical: 10
          }, fonts.bold)
        }, "Simpan")));
      } else {
        bmiContainer = /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: themeColors.darkestPrimary,
            fontSize: 14
          }, fonts.regular)
        }, "Silakan lengkapi tinggi & berat badan terlebih dahulu");
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
        style: {
          backgroundColor: staticColors.white,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: themeColors.primary
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          flexDirection: "row",
          paddingHorizontal: 30,
          paddingVertical: 15
        }
      }, /*#__PURE__*/React__default['default'].createElement(PatientAvatar$1, {
        cardNumber: cardNumber,
        gender: gender
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24,
          marginStart: 15
        }, fonts.bold)
      }, "Profil Medis")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          height: 40
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          paddingHorizontal: 30
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 24
        }, fonts.bold)
      }, fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 18,
          marginBottom: 20
        }, fonts.regular)
      }, genderName + ", " + ageText + " Tahun"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 18
        }, fonts.regular)
      }, "Sebelum memulai, mohon untuk dapat melengkapi informasi berikut:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 18,
          marginTop: 20
        }, fonts.bold)
      }, "Tinggi Badan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.setState({
            heightSelectorVisible: true
          });
        },
        style: {
          alignItems: "center",
          flexDirection: "row",
          marginTop: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
        editable: false,
        placeholder: "Input tinggi badan",
        style: {
          backgroundColor: "#F1F1F1",
          borderRadius: 10,
          paddingHorizontal: 16,
          paddingVertical: 8
        },
        value: height ? height + " cm" : ""
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/baseline_edit_black_18dp.png"),
        style: {
          marginStart: 10,
          padding: 10
        }
      }), /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
        isVisible: heightSelectorVisible,
        useNativeDriver: true
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderRadius: 40,
          padding: 30
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          alignSelf: "center",
          color: themeColors.darkestPrimary,
          fontSize: 20,
          marginBottom: 20
        }, fonts.bold)
      }, "Pilih Tinggi"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
        data: ___default['default'].range(30, 251).map(function (i) {
          return i.toString();
        }),
        initPosition: heightInteger ? heightInteger - 30 : 130,
        onItemSelected: function onItemSelected(selectedItem) {
          _this2.setState({
            temporaryHeightInteger: selectedItem + 30
          });
        },
        selectedItem: temporaryHeightInteger ? temporaryHeightInteger - 30 : heightInteger ? heightInteger - 30 : 130
      }), /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
        data: ___default['default'].range(0, 10).map(function (i) {
          return i.toString();
        }),
        initPosition: heightDecimal ? heightDecimal : 0,
        onItemSelected: function onItemSelected(selectedItem) {
          return _this2.setState({
            temporaryHeightDecimal: selectedItem
          });
        },
        selectedItem: temporaryHeightDecimal ? temporaryHeightDecimal : heightDecimal ? heightDecimal : 0,
        style: {
          width: 100
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          justifyContent: "space-between"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.setState({
            heightSelectorVisible: false,
            temporaryHeightDecimal: null,
            temporaryHeightInteger: null
          });
        },
        style: {
          backgroundColor: "#E64F4F",
          borderRadius: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16,
          paddingHorizontal: 30,
          paddingVertical: 10
        }, fonts.bold)
      }, "Batal")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          var defaultHeightInteger = 160;
          var defaultHeightDecimal = 0;

          _this2.setState({
            heightDecimal: temporaryHeightDecimal === 0 ? 0 : temporaryHeightDecimal || heightDecimal || defaultHeightDecimal,
            heightInteger: temporaryHeightInteger || heightInteger || defaultHeightInteger,
            heightSelectorVisible: false,
            temporaryHeightDecimal: null,
            temporaryHeightInteger: null
          });
        },
        style: {
          backgroundColor: "#5DBE66",
          borderRadius: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16,
          paddingHorizontal: 30,
          paddingVertical: 10
        }, fonts.bold)
      }, "Pilih")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 18,
          marginTop: 20
        }, fonts.bold)
      }, "Berat Badan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.setState({
            weightSelectorVisible: true
          });
        },
        style: {
          alignItems: "center",
          flexDirection: "row",
          marginTop: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
        editable: false,
        placeholder: "Input berat badan",
        style: {
          backgroundColor: "#F1F1F1",
          borderRadius: 10,
          paddingHorizontal: 16,
          paddingVertical: 8
        },
        value: weight ? weight + " kg" : ""
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/baseline_edit_black_18dp.png"),
        style: {
          marginStart: 10,
          padding: 10
        }
      }), /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
        isVisible: weightSelectorVisible,
        useNativeDriver: true
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderRadius: 40,
          padding: 30
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          alignSelf: "center",
          color: themeColors.darkestPrimary,
          fontSize: 20,
          marginBottom: 20
        }, fonts.bold)
      }, "Pilih Berat"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
        data: ___default['default'].range(1, 251).map(function (i) {
          return i.toString();
        }),
        initPosition: weightInteger ? weightInteger - 1 : 69,
        onItemSelected: function onItemSelected(selectedItem) {
          return _this2.setState({
            temporaryWeightInteger: selectedItem + 1
          });
        },
        selectedItem: temporaryWeightInteger ? temporaryWeightInteger - 1 : weightInteger ? weightInteger - 1 : 69
      }), /*#__PURE__*/React__default['default'].createElement(reactNativeWheelPickerAndroid.WheelPicker, {
        data: ___default['default'].range(0, 10).map(function (i) {
          return i.toString();
        }),
        initPosition: weightDecimal ? weightDecimal : 0,
        onItemSelected: function onItemSelected(selectedItem) {
          return _this2.setState({
            temporaryWeightDecimal: selectedItem
          });
        },
        selectedItem: temporaryWeightDecimal ? temporaryWeightDecimal : weightDecimal ? weightDecimal : 0,
        style: {
          width: 100
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          justifyContent: "space-between"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          _this2.setState({
            temporaryWeightDecimal: null,
            temporaryWeightInteger: null,
            weightSelectorVisible: false
          });
        },
        style: {
          backgroundColor: "#E64F4F",
          borderRadius: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16,
          paddingHorizontal: 30,
          paddingVertical: 10
        }, fonts.bold)
      }, "Batal")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          var defaultWeightDecimal = 0;
          var defaultWeightInteger = 70;

          _this2.setState({
            temporaryWeightDecimal: null,
            temporaryWeightInteger: null,
            weightDecimal: temporaryWeightDecimal === 0 ? 0 : temporaryWeightDecimal || weightDecimal || defaultWeightDecimal,
            weightInteger: temporaryWeightInteger || weightInteger || defaultWeightInteger,
            weightSelectorVisible: false
          });
        },
        style: {
          backgroundColor: "#5DBE66",
          borderRadius: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16,
          paddingHorizontal: 30,
          paddingVertical: 10
        }, fonts.bold)
      }, "Pilih")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: themeColors.darkestPrimary,
          fontSize: 18,
          marginTop: 20
        }, fonts.bold)
      }, "BMI:"), bmiContainer));
    };

    return MedicalScreen;
  }(React__default['default'].Component);

  var MedicalScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(MedicalScreen);

  var REACTIONS = [{
    label: "Sangat Buruk",
    src: require("../assets/1a.png"),
    bigSrc: require("../assets/1.png")
  }, {
    label: "Buruk",
    src: require("../assets/2a.png"),
    bigSrc: require("../assets/2.png")
  }, {
    label: "Baik",
    src: require("../assets/3a.png"),
    bigSrc: require("../assets/3.png")
  }, {
    label: "Sangat Baik",
    src: require("../assets/4a.png"),
    bigSrc: require("../assets/4.png")
  }];
  var styles$a = reactNative.StyleSheet.create({
    avatar: {
      borderRadius: 30,
      height: 60,
      marginRight: 15,
      width: 60
    },
    container: {
      justifyContent: "center",
      padding: 10
    },
    nameContainer: {
      flex: 1,
      flexWrap: "wrap",
      flexDirection: "row",
      justifyContent: "flex-start",
      alignItems: "center"
    },
    name: _extends({
      color: "#FFF"
    }, fonts.regular, {
      fontSize: 20
    }),
    position: _extends({
      color: "#FFF"
    }, fonts.light, {
      fontSize: 16
    }),
    profile: {
      alignItems: "center",
      flexDirection: "row",
      padding: 25
    },
    ratingContainer: {
      alignItems: "center",
      backgroundColor: "#FFF",
      borderRadius: 40,
      paddingVertical: 40
    },
    question: _extends({
      color: "#808080"
    }, fonts.regular, {
      fontSize: 20,
      textAlign: "center",
      paddingHorizontal: 40
    }),
    selectedValue: _extends({}, fonts.bold, {
      textTransform: "uppercase",
      fontSize: 30,
      marginTop: 30,
      textAlign: "center"
    }),
    thanks: _extends({}, fonts.regular, {
      fontSize: 20,
      marginVertical: 10,
      textAlign: "center",
      paddingHorizontal: 10
    }),
    itemLabelContainer: {
      flex: 1,
      flexDirection: "row",
      flexWrap: "wrap",
      paddingHorizontal: 0
    },
    itemLabel: _extends({}, fonts.regular, {
      fontSize: 12,
      color: "#808080",
      textAlign: "center"
    }),
    itemImage: {
      borderRadius: 72 / 2,
      height: 72,
      width: 72
    },
    item: {
      alignItems: "center",
      flex: 0.3,
      borderWidth: 1,
      padding: 2,
      margin: 2
    },
    itemContainer: {
      marginTop: 10
    },
    input: _extends({}, fonts.regular, {
      fontSize: 16,
      marginTop: 50,
      borderBottomColor: "#000000",
      borderBottomWidth: 1,
      paddingBottom: 5
    }),
    inputError: {
      borderColor: "#FF0000",
      borderWidth: 1,
      borderBottomColor: "#FF0000"
    },
    button: _extends({
      alignSelf: "center",
      borderRadius: 20,
      color: "#FFF"
    }, fonts.bold, {
      fontSize: 18,
      backgroundColor: "#5DBE66",
      paddingVertical: 10,
      paddingHorizontal: 50,
      marginTop: 40
    }),
    emoji: {
      width: 120,
      height: 120
    }
  });

  var RatingScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(RatingScreen, _Component);

    function RatingScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "_handleSelected", function (selection) {
        _this.setState({
          selectedRating: selection,
          selectedCategories: {},
          noteValid: true
        });
      });

      _this.state = {
        selectedRating: null,
        submitted: false,
        note: "",
        categories: [],
        selectedCategories: {},
        noteValid: true
      };
      return _this;
    }

    var _proto = RatingScreen.prototype;

    _proto.fetchRating = /*#__PURE__*/function () {
      var _fetchRating = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var _yield$API$get, categories;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                setConsultation(null);
                _context.prev = 1;
                _context.next = 4;
                return API.get(APP_BASE_URL + "/v2/rating-feedbacks");

              case 4:
                _yield$API$get = _context.sent;
                categories = _yield$API$get.data.data;
                this.setState({
                  categories: categories
                });
                _context.next = 12;
                break;

              case 9:
                _context.prev = 9;
                _context.t0 = _context["catch"](1);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 12:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[1, 9]]);
      }));

      function fetchRating() {
        return _fetchRating.apply(this, arguments);
      }

      return fetchRating;
    }();

    _proto.rate = /*#__PURE__*/function () {
      var _rate = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                _context2.prev = 0;
                _context2.next = 3;
                return API.post(APP_BASE_URL + "/v2/consultations/doctor-rating", {
                  trx_id: this.props.navigation.state.params.transactionId,
                  rating_score: this.state.selectedRating.key + 1,
                  rating_notes: this.state.note,
                  feedbacks: Object.keys(this.state.selectedCategories)
                });

              case 3:
                _context2.next = 5;
                return AsyncStorage__default['default'].removeItem("active_consultation");

              case 5:
                this.setState({
                  submitted: true
                });
                _context2.next = 11;
                break;

              case 8:
                _context2.prev = 8;
                _context2.t0 = _context2["catch"](0);
                console.log((_context2.t0 == null ? void 0 : _context2.t0.response) || _context2.t0);

              case 11:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this, [[0, 8]]);
      }));

      function rate() {
        return _rate.apply(this, arguments);
      }

      return rate;
    }();

    _proto.componentDidMount = function componentDidMount() {
      this.fetchRating();
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      clearTimeout(this.closeTimeoutId);
    };

    _proto.render = function render() {
      var _this2 = this;

      var ratingContent;
      var noteValid = this.state.noteValid;

      if (this.state.submitted) {
        ratingContent = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          style: styles$a.emoji,
          source: REACTIONS[this.state.selectedRating.key].bigSrc
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: [styles$a.selectedValue, {
            color: this.props.themeColors.primary
          }]
        }, this.state.selectedRating.value), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: styles$a.thanks
        }, "Terima kasih atas feedback yang diberikan"));
      } else {
        var categories = ___default['default'].reject(this.state.categories, function (item) {
          var filter;

          if (_this2.state.selectedRating) {
            if (_this2.state.selectedRating.key > 1) {
              filter = "positive";
            } else {
              filter = "negative";
            }

            return item["feedback_category"] !== filter;
          } else {
            return true;
          }
        });

        ratingContent = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: styles$a.question
        }, "Bagaimana pengalaman konsultasi Anda"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            paddingHorizontal: 30
          }
        }, /*#__PURE__*/React__default['default'].createElement(EmojiRating, {
          onSelected: this._handleSelected,
          selected: this.state.selectedRating
        })), this.state.selectedRating && /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: [styles$a.selectedValue, {
            color: this.props.themeColors.primary
          }]
        }, this.state.selectedRating.value), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: styles$a.thanks
        }, "Terima kasih, apa yang telah kami lakukan dengan", " ", this.state.selectedRating.value.toLowerCase(), "?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: styles$a.itemContainer
        }, ___default['default'].chunk(categories, 3).map(function (chunk, index) {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            key: index,
            style: {
              flexDirection: "row",
              justifyContent: "center",
              paddingVertical: 10
            }
          }, chunk.map(function (item) {
            var customStyles = {
              borderColor: "transparent"
            };

            if (_this2.state.selectedCategories[item["id"]]) {
              customStyles = {
                borderColor: "#5DBE66"
              };
            }

            return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
              style: [styles$a.item, customStyles],
              key: item["id"],
              onPress: function onPress() {
                var selectedCategories = Object.assign({}, _this2.state.selectedCategories);

                if (selectedCategories[item["id"]]) {
                  selectedCategories[item["id"]] = !selectedCategories[item["id"]];
                } else {
                  selectedCategories[item["id"]] = true;
                }

                _this2.setState({
                  selectedCategories: selectedCategories
                });
              }
            }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
              source: {
                uri: item["feedback_photo"]
              },
              style: [styles$a.itemImage, {
                backgroundColor: _this2.props.themeColors.lightestPrimary
              }]
            }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
              style: styles$a.itemLabelContainer
            }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
              style: styles$a.itemLabel
            }, item["feedback_name"])));
          }));
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            marginHorizontal: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
          style: [styles$a.input, noteValid ? {} : styles$a.inputError],
          placeholder: "Catatan",
          placeholderTextColor: "#808080",
          onChangeText: function onChangeText(note) {
            return _this2.setState({
              note: note,
              noteValid: true
            });
          },
          value: this.state.note
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            // check required if rate <= 1
            var _this2$state = _this2.state,
                selectedRating = _this2$state.selectedRating,
                note = _this2$state.note;
            var currentRating = selectedRating.key;
            var noteValid = true;

            if (currentRating <= 1 && !note) {
              noteValid = false;
            }

            _this2.setState({
              noteValid: noteValid
            }, function () {
              var noteValid = _this2.state.noteValid;

              if (!noteValid) {
                return;
              }

              _this2.rate();

              _this2.closeTimeoutId = setTimeout(function () {
                return _this2.props.navigation.goBack();
              }, 3000);
            });
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: styles$a.button
        }, "Kirim"))));
      }

      var profile = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$a.profile
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: this.props.navigation.state.params.agentAvatar ? {
          uri: this.props.navigation.state.params.agentAvatar
        } : require("../assets/avatars/doctor.png"),
        style: styles$a.avatar
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$a.nameContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.name
      }, this.props.navigation.state.params.agentName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$a.position
      }, this.props.navigation.state.params.agentSpecialities)), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
          return regeneratorRuntime.wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return AsyncStorage__default['default'].removeItem("active_consultation");

                case 2:
                  _this2.props.navigation.pop();

                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3);
        }))
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginStart: 15,
          backgroundColor: "#E64F4F",
          borderRadius: 10,
          paddingHorizontal: 10,
          paddingVertical: 10,
          borderColor: "#FFF",
          borderWidth: 2
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/outline_close_white_24dp.png")
      }))));
      var rating = /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$a.ratingContainer
      }, ratingContent);

      if (this.state.submitted || !this.state.selectedRating) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: this.props.themeColors.primary,
            flex: 1,
            alignItems: "center",
            justifyContent: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, {
          style: styles$a.container
        }, profile, rating));
      } else {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
          style: {
            backgroundColor: this.props.themeColors.primary,
            flex: 1
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: styles$a.container
        }, profile, rating));
      }
    };

    return RatingScreen;
  }(React.Component);

  var RatingScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(RatingScreen);

  var SymptomsScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(SymptomsScreen, _Component);

    function SymptomsScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "_renderHeader", function (section) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            padding: 20,
            borderTopColor: "#707070",
            borderTopWidth: 1,
            borderTopEndRadius: 20,
            borderTopStartRadius: 20,
            flexDirection: "row",
            justifyContent: "center",
            alignItems: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: "#707070",
            fontSize: 18
          }, fonts.bold, {
            flexGrow: 1
          })
        }, section.name), /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/round_keyboard_arrow_down_black_18dp.png")
        }));
      });

      _defineProperty(_assertThisInitialized(_this), "_renderContent", function (section) {
        var chunks = ___default['default'].chunk(section.items, 2);

        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            padding: 5
          }
        }, chunks.map(function (chunk, index) {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            key: index,
            style: {
              flexDirection: "row"
            }
          }, chunk.map(function (item) {
            return /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
              style: {
                flex: 0.5
              },
              key: item["id"],
              onPress: function onPress() {
                _this.setState({
                  symptomsSimple: _this.state.symptomsSimple.map(function (a) {
                    return {
                      name: a.name,
                      items: a.items.map(function (b) {
                        return b["id"] === item["id"] ? Object.assign({}, b, {
                          selected: !b.selected
                        }) : b;
                      })
                    };
                  })
                });
              }
            }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
              style: {
                padding: 10,
                margin: 10,
                borderRadius: 20,
                borderColor: item["selected"] ? "#5DBE66" : "#808080",
                borderWidth: 2,
                alignItems: "center"
              }
            }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
              style: _extends({
                color: "#808080",
                fontSize: 16
              }, fonts.regular)
            }, item["complaint_name"])));
          }));
        }));
      });

      _defineProperty(_assertThisInitialized(_this), "_updateSections", function (activeSections) {
        _this.setState({
          activeSections: activeSections
        });
      });

      _defineProperty(_assertThisInitialized(_this), "onDatePickerChange", function (_event, selectedDate) {
        var patientDob = selectedDate || _this.state.patientDob; // setShow(Platform.OS === "ios");

        _this.setState({
          patientDob: patientDob,
          showDatePicker: false
        });
      });

      _defineProperty(_assertThisInitialized(_this), "showDatePickerHandler", function () {
        _this.setState({
          showDatePicker: true
        });
      });

      _defineProperty(_assertThisInitialized(_this), "formatDate", function (date) {
        if (!date) return "Lengkapi Tanggal Lahir Anda";
        return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
      });

      _this.state = {
        consultation: "",
        duration: 0,
        activeSections: [],
        symptoms: [],
        symptomsSimple: [],
        selectedUnit: "day",
        patientDob: "",
        showDatePicker: false
      };
      return _this;
    }

    var _proto = SymptomsScreen.prototype;

    _proto.fetchSymptoms = /*#__PURE__*/function () {
      var _fetchSymptoms = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var _yield$API$get, symptoms;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.prev = 0;
                _context.next = 3;
                return API.get(APP_BASE_URL + "/v2/info/complaints");

              case 3:
                _yield$API$get = _context.sent;
                symptoms = _yield$API$get.data.data;
                this.setState({
                  symptoms: symptoms,
                  symptomsSimple: ___default['default'].map(___default['default'].groupBy(symptoms, "complaint_group"), function (item, key) {
                    return {
                      name: key,
                      items: item.map(function (item) {
                        return Object.assign({}, item, {
                          selected: false
                        });
                      })
                    };
                  })
                });
                _context.next = 11;
                break;

              case 8:
                _context.prev = 8;
                _context.t0 = _context["catch"](0);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 11:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[0, 8]]);
      }));

      function fetchSymptoms() {
        return _fetchSymptoms.apply(this, arguments);
      }

      return fetchSymptoms;
    }();

    _proto.componentDidMount = function componentDidMount() {
      this.promise = this.fetchSymptoms();
    };

    _proto.render = function render() {
      var _this2 = this;

      var fm1 = ___default['default'].flatMap(this.state.symptomsSimple, function (item) {
        return item.items;
      });

      var fm2 = ___default['default'].filter(fm1, function (item) {
        return item.selected;
      });

      var fm3 = ___default['default'].map(fm2, function (item) {
        return item["complaint_name"];
      });

      var fm4 = ___default['default'].map(fm2, function (item) {
        return item["id"];
      });

      var symptomsSummary = fm3.join(", ");
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(Header, {
        onPress: function onPress() {
          _this2.props.navigation.goBack();
        },
        position: "start",
        text: "Batal",
        theme: "light"
      })), !this.props.navigation.state.params.hasDoB && /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20,
          paddingTop: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: this.showDatePickerHandler
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          borderRadius: 20,
          paddingHorizontal: 20,
          paddingVertical: 20,
          backgroundColor: "#FFFFFF",
          minHeight: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          paddingHorizontal: 30,
          fontSize: 18
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          marginBottom: 10,
          alignSelf: "center"
        })
      }, "Tanggal Lahir:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: {
          alignSelf: "center"
        }
      }, this.formatDate(this.state.patientDob))))), this.state.showDatePicker && /*#__PURE__*/React__default['default'].createElement(DateTimePicker__default['default'], {
        testID: "dateTimePicker",
        value: this.state.patientDob || new Date(),
        mode: "date",
        display: reactNative.Platform.select({
          ios: "default",
          android: "spinner"
        }),
        maximumDate: Date.parse(new Date()),
        onChange: this.onDatePickerChange
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20,
          paddingTop: 0
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableWithoutFeedback, {
        onPress: function onPress() {
          return _this2.inputRef.focus();
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          borderRadius: 20,
          paddingHorizontal: 20,
          paddingVertical: 10,
          backgroundColor: "#FFFFFF",
          minHeight: 100
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
        ref: function ref(_ref) {
          _this2.inputRef = _ref;
        },
        value: this.state.consultation,
        onChangeText: function onChangeText(value) {
          return _this2.setState({
            consultation: value
          });
        },
        placeholder: "Tuliskan Keluhan Utama Anda",
        multiline: true,
        maxLength: 250,
        textAlignVertical: "top"
      })))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20,
          paddingTop: 0
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          paddingVertical: 20,
          paddingHorizontal: 10,
          backgroundColor: "#FFFFFF",
          borderRadius: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          paddingHorizontal: 30,
          fontSize: 18
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          marginBottom: 10,
          alignSelf: "center"
        })
      }, "Lama Keluhan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          paddingLeft: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(Slider__default['default'], {
        style: {
          flexGrow: 1,
          alignSelf: "center"
        },
        onValueChange: function onValueChange(value) {
          return _this2.setState({
            duration: value
          });
        },
        minimumTrackTintColor: this.props.themeColors.lighterPrimary,
        maximumTrackTintColor: this.props.themeColors.lightestPrimary,
        step: 1,
        minimumValue: 0,
        maximumValue: 13,
        thumbTintColor: this.props.themeColors.darkerPrimary
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [{
          marginStart: 20,
          width: 100
        }, reactNative.Platform.OS === "android" ? {
          alignItems: "center"
        } : null]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 27
        }, fonts.bold, {
          paddingHorizontal: 10,
          color: this.props.themeColors.lighterPrimary
        })
      }, this.state.duration > 12 ? "12+" : this.state.duration), /*#__PURE__*/React__default['default'].createElement(PickerSelect__default['default'], {
        onValueChange: function onValueChange(itemValue) {
          _this2.setState({
            selectedUnit: itemValue
          });
        },
        useNativeAndroidPickerStyle: false,
        items: [{
          label: "Hari",
          value: "day"
        }, {
          label: "Minggu",
          value: "week"
        }, {
          label: "Bulan",
          value: "month"
        }],
        style: {
          inputIOS: {
            fontSize: 16,
            paddingVertical: 12,
            paddingHorizontal: 10,
            color: "black",
            paddingRight: 30
          },
          inputAndroid: {
            fontSize: 16,
            paddingHorizontal: 10,
            paddingVertical: 8,
            color: "black",
            paddingRight: 30
          },
          iconContainer: {
            top: 10
          }
        },
        placeholder: {},
        Icon: function Icon() {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
            style: {
              height: 24,
              width: 24
            },
            source: require("../assets/round_keyboard_arrow_down_black_18dp.png")
          });
        }
      }))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          marginHorizontal: 30,
          color: "#FFFFFF",
          fontSize: 18
        }, fonts.bold, {
          marginTop: 25,
          alignSelf: "center"
        })
      }, "Keluhan Tambahan:"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          marginHorizontal: 30,
          color: "#FFFFFF",
          fontSize: 18
        }, fonts.light, {
          marginBottom: 25,
          alignSelf: "center"
        })
      }, symptomsSummary || "-"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          marginHorizontal: 10,
          borderRadius: 20,
          marginBottom: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(Accordion__default['default'], {
        touchableComponent: reactNative.TouchableOpacity,
        sections: this.state.symptomsSimple,
        activeSections: this.state.activeSections,
        renderHeader: this._renderHeader,
        renderContent: this._renderContent,
        onChange: this._updateSections
      }))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFFFFF"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "rgba(0, 0, 0, 0.16)",
          height: 3,
          width: reactNative.Dimensions.get("window").width
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          if (_this2.state.consultation.length === 0 || _this2.state.duration === 0 || !_this2.props.navigation.state.params.hasDoB && !_this2.state.patientDob) {
            reactNative.Alert.alert("Kesalahan", "Isi " + (!_this2.props.navigation.state.params.hasDoB ? "tanggal lahir, keluhan, dan durasi" : "keluhan dan durasi") + " sejak kapan keluhan dirasakan sebelum memulai konsultasi dengan dokter.");
            return;
          }

          _this2.props.navigation.replace("Consent", _extends({}, _this2.props.navigation.state.params, {
            // params passed {
            //   patientId,
            //   fullName,
            //   hasViId,
            //   enableVoiceCall,
            //   enableVideoCall,
            //   clientId,
            // }
            cardNumberDependency: _this2.props.navigation.state.params ? _this2.props.navigation.state.params.policyNumber : null,
            consultation: _this2.state.consultation,
            symptomsSummary: symptomsSummary,
            complaintIds: fm4,
            duration: _this2.state.duration,
            durationUnit: _this2.state.selectedUnit,
            patientDob: _this2.state.patientDob
          }));
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginBottom: 0,
          paddingVertical: 10,
          paddingHorizontal: 40,
          backgroundColor: "#5DBE66",
          borderRadius: 20,
          alignSelf: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 16
        }, fonts.bold, {
          color: "#FFFFFF"
        })
      }, "Selanjutnya"))))));
    };

    return SymptomsScreen;
  }(React.Component);

  var SymptomsScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(SymptomsScreen);

  var getDownloadPermissionAndroid = /*#__PURE__*/function () {
    var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
      var granted;
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              _context.next = 3;
              return reactNative.PermissionsAndroid.request(reactNative.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, {
                title: "Image Download Permission",
                message: "Your permission is required to save images to your device",
                buttonNegative: "Cancel",
                buttonPositive: "OK"
              });

            case 3:
              granted = _context.sent;

              if (!(granted === reactNative.PermissionsAndroid.RESULTS.GRANTED)) {
                _context.next = 6;
                break;
              }

              return _context.abrupt("return", true);

            case 6:
              reactNative.Alert.alert("Save remote Image", "Grant Me Permission to save Image", [{
                text: "OK",
                onPress: function onPress() {
                  return console.log("OK Pressed");
                }
              }], {
                cancelable: false
              });
              _context.next = 12;
              break;

            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](0);
              reactNative.Alert.alert("Save remote Image", "Failed to save Image: " + _context.t0.message, [{
                text: "OK",
                onPress: function onPress() {
                  return console.log("OK Pressed");
                }
              }], {
                cancelable: false
              });

            case 12:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, null, [[0, 9]]);
    }));

    return function getDownloadPermissionAndroid() {
      return _ref.apply(this, arguments);
    };
  }();

  var savePrescription = /*#__PURE__*/function () {
    var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(url) {
      var granted, dirs, splitted, fileName, blob, saveToDevice;
      return regeneratorRuntime.wrap(function _callee2$(_context2) {
        while (1) {
          switch (_context2.prev = _context2.next) {
            case 0:
              if (!(reactNative.Platform.OS === "android")) {
                _context2.next = 6;
                break;
              }

              _context2.next = 3;
              return getDownloadPermissionAndroid();

            case 3:
              granted = _context2.sent;

              if (granted) {
                _context2.next = 6;
                break;
              }

              return _context2.abrupt("return");

            case 6:
              dirs = RNFetchBlob__default['default'].fs.dirs;
              splitted = url.split("/");
              fileName = splitted[splitted.length - 1].match("([^/?]*)");
              _context2.prev = 9;
              _context2.next = 12;
              return RNFetchBlob__default['default'].config({
                fileCache: true,
                appendExt: "jpg",
                path: dirs.PictureDir + "/" + fileName[0]
              }).fetch("GET", encodeURI(url));

            case 12:
              blob = _context2.sent;
              console.log("savePrescription", {
                url: url,
                blob: blob,
                fileName: fileName
              });
              _context2.next = 16;
              return CameraRoll__default['default'].save(blob.data, {
                type: "photo",
                album: "prescription"
              });

            case 16:
              saveToDevice = _context2.sent;
              console.log({
                saveToDevice: saveToDevice
              });
              reactNative.Alert.alert("Simpan Resep", "Resep berhasil disimpan", [{
                text: "OK",
                onPress: function onPress() {
                  return console.log("OK Pressed");
                }
              }], {
                cancelable: false
              });
              return _context2.abrupt("return", true);

            case 22:
              _context2.prev = 22;
              _context2.t0 = _context2["catch"](9);
              reactNative.Alert.alert("Simpan Resep", "Resep gagal disimpan. Error:" + _context2.t0, [{
                text: "OK",
                onPress: function onPress() {
                  return console.log("OK Pressed");
                }
              }], {
                cancelable: false
              });
              return _context2.abrupt("return", false);

            case 26:
            case "end":
              return _context2.stop();
          }
        }
      }, _callee2, null, [[9, 22]]);
    }));

    return function savePrescription(_x) {
      return _ref2.apply(this, arguments);
    };
  }();

  var styles$9 = reactNative.StyleSheet.create({
    container: {
      flex: 1,
      position: "absolute",
      width: "100%",
      height: "100%"
    },
    content: {
      alignItems: "center",
      flex: 1,
      justifyContent: "center",
      padding: 30
    },
    message: _extends({
      color: "#FFF"
    }, fonts.regular, {
      fontSize: 20,
      padding: 40,
      paddingBottom: 10,
      textAlign: "center"
    }),
    activityIndicator: {
      flex: 1,
      position: "absolute",
      width: "100%",
      height: "100%",
      backgroundColor: staticColors.grey
    }
  });

  var WaitingScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(WaitingScreen, _Component);

    function WaitingScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "onCancel", function () {
        _this.clearRoom(_this.state.temporaryRoom);
      });

      _defineProperty(_assertThisInitialized(_this), "finishConsultation", function () {
        _this.props.navigation.replace("Rating", {
          transactionId: _this.state.room.transaction_id,
          agentAvatar: _this.state.doctorInfo.doctor_photo,
          agentName: _this.state.doctorInfo.doctor_f_name + " " + _this.state.doctorInfo.doctor_l_name,
          agentSpecialities: _this.state.doctorInfo.specialities[0].speciality_desc
        });
      });

      _defineProperty(_assertThisInitialized(_this), "onNavigationStateChange", function (state) {
        if (state.loading) {
          _this.setState({
            loading: true
          });
        } else {
          _this.setState({
            loading: false
          });

          if (reactNative.Platform.OS === "android") {
            var permissions = [reactNative.PermissionsAndroid.PERMISSIONS.CAMERA, reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO];
            reactNative.PermissionsAndroid.requestMultiple(permissions).then(function (granted) {
              var cameraGranted = granted["android.permission.CAMERA"] === "granted";
              var recordAudioGranted = granted["android.permission.RECORD_AUDIO"] === "granted";
              console.log({
                cameraGranted: cameraGranted,
                recordAudioGranted: recordAudioGranted
              });
            });
          }
        }
      });

      _defineProperty(_assertThisInitialized(_this), "onMessage", function (event) {
        var data = JSON.parse(event.nativeEvent.data); // console.log("onMessage", event, data);

        if (data.event === "endChat") {
          _this.finishConsultation();

          setConsultation(null);
        }

        if (data.event === "download") savePrescription(data.data);
      });

      _defineProperty(_assertThisInitialized(_this), "navigateCall", function (callType) {
        var navigation = _this.props.navigation;
        var _this$state = _this.state,
            agent = _this$state.agent,
            room = _this$state.room;
        navigation.navigate(callType, {
          doctor: {
            fullName: agent["username"]
          },
          patient: {
            id: navigation.state.params.patientId
          },
          transaction: {
            id: room["trx_id"]
          }
        });
      });

      _this.messageIds = new Set();
      _this.messages = [];
      _this.state = {
        agentAvatar: "",
        doctor: null,
        room: null,
        temporaryRoom: null,
        isModalVisible: false,
        agent: null,
        messages: [],
        time: 0,
        loading: true
      };
      return _this;
    }

    var _proto = WaitingScreen.prototype;

    _proto.createRoom = /*#__PURE__*/function () {
      var _createRoom = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var responseData, isStatic, card_number_dependency, dependent, dependency_full_name, symptoms, _this$props$navigatio, patient_id, inbox_id, client_app_id, patientDob, hasDoB, payload, patient_dob, _yield$API$post, data;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                // console.log("start create room");
                responseData = null;
                isStatic = STATIC_CARD_NUMBERS.includes(this.props.navigation.state.params.cardNumberDependency);
                card_number_dependency = !isStatic ? this.props.navigation.state.params.cardNumberDependency : undefined;
                dependent = isStatic ? this.props.navigation.state.params.cardNumberDependency : undefined;
                dependency_full_name = !isStatic ? this.props.navigation.state.params.fullName : undefined;
                symptoms = {
                  complaint_id: this.props.navigation.state.params.complaintIds,
                  consultation: this.props.navigation.state.params.consultation,
                  duration: this.props.navigation.state.params.duration,
                  duration_unit: this.props.navigation.state.params.durationUnit
                };

                if (!this.props.navigation.state.params.activeTransaction) {
                  _context.next = 10;
                  break;
                }

                // console.log("resume transaction");
                responseData = {
                  trx_id: this.props.navigation.state.params.transactionId,
                  patient_id: this.props.navigation.state.params.newPatientId
                };
                _context.next = 26;
                break;

              case 10:
                // console.log("create new transaction");
                _this$props$navigatio = this.props.navigation.state.params, patient_id = _this$props$navigatio.newPatientId, inbox_id = _this$props$navigatio.inboxId, client_app_id = _this$props$navigatio.clientAppId, patientDob = _this$props$navigatio.patientDob, hasDoB = _this$props$navigatio.hasDoB;
                payload = {
                  inbox_id: inbox_id,
                  patient_id: patient_id,
                  client_app_id: client_app_id,
                  card_number_dependency: card_number_dependency,
                  dependent: dependent,
                  dependency_full_name: dependency_full_name,
                  symptoms: symptoms
                };
                patient_dob = patientDob ? patientDob.getFullYear() + "-" + (patientDob.getMonth() + 1) + "-" + patientDob.getDate() : null;
                if (!hasDoB) payload["patient_dob"] = patient_dob;
                _context.prev = 14;
                _context.next = 17;
                return API.post(APP_BASE_URL + "/v2/consultations/start", payload);

              case 17:
                _yield$API$post = _context.sent;
                data = _yield$API$post.data.data;
                responseData = _extends({}, data, {
                  patient_id: patient_id
                });
                _context.next = 26;
                break;

              case 22:
                _context.prev = 22;
                _context.t0 = _context["catch"](14);
                reactNative.Alert.alert("Gagal", "Tidak berhasil menghubungkan dengan dokter, coba lagi beberapa saat lagi.");
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 26:
                this.setState({
                  temporaryRoom: responseData
                });

                if (responseData) {
                  this.checkRoom(responseData);
                }

              case 28:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[14, 22]]);
      }));

      function createRoom() {
        return _createRoom.apply(this, arguments);
      }

      return createRoom;
    }();

    _proto.sendMessage = function sendMessage(_ref) {
      var website_token = _ref.website_token,
          cw_token = _ref.cw_token;
      var _this$props$navigatio2 = this.props.navigation.state.params,
          consultation = _this$props$navigatio2.consultation,
          duration = _this$props$navigatio2.duration,
          durationUnit = _this$props$navigatio2.durationUnit,
          symptomsSummary = _this$props$navigatio2.symptomsSummary,
          cardNumberDependency = _this$props$navigatio2.cardNumberDependency,
          fullName = _this$props$navigatio2.fullName;
      var dependentMessage = "";

      if (STATIC_CARD_NUMBERS.includes(cardNumberDependency)) {
        dependentMessage = "Jenis Pasien: \"Tertanggung tidak terdaftar\"\n";
      }

      if (cardNumberDependency) {
        dependentMessage = dependentMessage + ("Pemeriksaan untuk: " + fullName + "\n");
      }

      var durationUnitTi18n = I18n__default['default'].t("prixa." + durationUnit);
      API.post(APP_BASE_URL + "/v1/widgets/messages?website_token=" + website_token + "&cw_conversation=" + cw_token, {
        message: {
          content: dependentMessage + "Keluhan Utama: " + consultation + "\n          Lama keluhan: " + duration + " " + durationUnitTi18n + "\n          Keluhan Tambahan: " + (symptomsSummary || "-") + "\n          ",
          timestamp: new Date().toString(),
          "content-type": "text"
        }
      })["catch"](function (err) {
        return console.log(err.response);
      });
    };

    _proto.clearRoom = /*#__PURE__*/function () {
      var _clearRoom = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(roomData) {
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                if (!roomData) {
                  _context2.next = 12;
                  break;
                }

                _context2.prev = 1;
                _context2.next = 4;
                return API.post(APP_BASE_URL + "/v2/consultations/cancel", {
                  trx_id: roomData.trx_id
                });

              case 4:
                _context2.next = 6;
                return API.post(APP_BASE_URL + "/v2/consultations/finish", {
                  trx_id: roomData.trx_id
                });

              case 6:
                _context2.next = 11;
                break;

              case 8:
                _context2.prev = 8;
                _context2.t0 = _context2["catch"](1);
                console.log(_context2.t0.response);

              case 11:
                reactNative.Alert.alert("Timeout", "Tidak ada dokter yang tersedia, silakan coba beberapa saat lagi.");

              case 12:
                this.props.navigation.goBack();

              case 13:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this, [[1, 8]]);
      }));

      function clearRoom(_x) {
        return _clearRoom.apply(this, arguments);
      }

      return clearRoom;
    }();

    _proto.getDoctorInfo = /*#__PURE__*/function () {
      var _getDoctorInfo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(transaction) {
        var _yield$API$get, doctorInfo;

        return regeneratorRuntime.wrap(function _callee3$(_context3) {
          while (1) {
            switch (_context3.prev = _context3.next) {
              case 0:
                _context3.prev = 0;
                _context3.next = 3;
                return API.get(APP_BASE_URL + "/v2/consultations/doctor-info?trx_id=" + transaction.transaction_id);

              case 3:
                _yield$API$get = _context3.sent;
                doctorInfo = _yield$API$get.data.data;
                this.setState({
                  doctorInfo: doctorInfo
                });
                console.log(doctorInfo);
                _context3.next = 12;
                break;

              case 9:
                _context3.prev = 9;
                _context3.t0 = _context3["catch"](0);
                console.log(_context3.t0.response);

              case 12:
              case "end":
                return _context3.stop();
            }
          }
        }, _callee3, this, [[0, 9]]);
      }));

      function getDoctorInfo(_x2) {
        return _getDoctorInfo.apply(this, arguments);
      }

      return getDoctorInfo;
    }();

    _proto.checkRoom = function checkRoom(roomData) {
      var _this2 = this;

      var time = 0; // start polling check transaction status

      this.pollingInterval = setInterval(function () {
        API.get(APP_BASE_URL + "/v2/consultations/patient/" + roomData.patient_id + "?trxId=" + roomData.trx_id).then(function (_ref2) {
          var pollingResp = _ref2.data.data;

          _this2.setState({
            time: time * 3
          }); // transaction get doctor


          if ((pollingResp == null ? void 0 : pollingResp.length) > 0 && pollingResp[0].state === "in_progress") {
            console.log("doctor found, connecting to doctor", pollingResp); // send consultation if new transaction to message room

            if (_this2.props.navigation.state.params.consultation && !_this2.props.navigation.state.params.activeTransaction) {
              _this2.sendMessage(pollingResp[0]);
            }

            _this2.setState({
              room: pollingResp[0]
            });

            _this2.getDoctorInfo(pollingResp[0]);

            clearInterval(_this2.pollingInterval);
          } // transaction didn't get doctor


          if ((pollingResp == null ? void 0 : pollingResp.length) > 0 && pollingResp[0].state === "doctor_not_found") {
            console.log("doctor not found, alert to cancel");

            _this2.clearRoom(roomData);

            clearInterval(_this2.pollingInterval);
          } // too long in progress state so canceled by system


          if (++time >= 20) {
            console.log("canceled by system");

            _this2.clearRoom(roomData);

            clearInterval(_this2.pollingInterval);
          }
        });
      }, 3000);
    };

    _proto.componentDidMount = function componentDidMount() {
      this.promise = this.createRoom();
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      clearInterval(this.interval);
      clearInterval(this.pollingInterval);
    };

    _proto.getBaymaxWidgetURL = function getBaymaxWidgetURL() {
      var _this$state$room = this.state.room,
          website_token = _this$state$room.website_token,
          transaction_id = _this$state$room.transaction_id;
      return BAYMAX_WIDGET_URL + "/website_token/" + website_token + "/transaction_id/" + transaction_id + "/access_token/" + this.props.accessToken;
    };

    _proto.render = function render() {
      var _this3 = this;

      var avatar;

      if (this.state.doctorInfo) {
        avatar = this.state.doctorInfo.doctor_photo;
      } else {
        avatar = require("../assets/avatars/doctor.png");
      }

      var _this$props$navigatio3 = this.props.navigation.state.params,
          enableVoiceCall = _this$props$navigatio3.enableVoiceCall,
          enableVideoCall = _this$props$navigatio3.enableVideoCall; // inject voximplant config to widget

      var injectJs = "window.voximplantConfig = {\n      enableVoiceCall:" + enableVoiceCall + ", \n      enableVideoCall:" + enableVideoCall + "\n    }";

      var foreground = function foreground(msg) {
        return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: [styles$9.container, {
            backgroundColor: _this3.props.themeColors.primary
          }]
        }, _this3.state.time >= 10 && /*#__PURE__*/React__default['default'].createElement(Header, {
          onPress: _this3.onCancel,
          position: "start",
          text: "Batal",
          theme: "light"
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: styles$9.content
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: styles$9.message
        }, msg), /*#__PURE__*/React__default['default'].createElement(PulseLoader, {
          avatar: avatar
        })));
      };

      if (this.state.room) {
        var uri = this.getBaymaxWidgetURL();
        return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.KeyboardAvoidingView, {
          enabled: true,
          contentContainerStyle: {
            flex: 1
          },
          keyboardVerticalOffset: reactNative.Platform.select({
            ios: -50,
            android: 20
          }),
          style: {
            flexGrow: 1
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNativeWebview.WebView, {
          onNavigationStateChange: this.onNavigationStateChange,
          source: {
            uri: uri
          },
          style: {
            flex: 1
          },
          originWhitelist: ["https://*"],
          onMessage: function onMessage(e) {
            return _this3.onMessage(e);
          },
          allowsInlineMediaPlayback: true,
          mediaPlaybackRequiresUserAction: false,
          injectedJavaScript: injectJs
        })), this.state.loading && this.state.doctorInfo ? foreground("Anda terhubung dengan " + this.state.doctorInfo.doctor_f_name + " " + this.state.doctorInfo.doctor_l_name + ", sedang memuat percakapan.") : null);
      } else {
        return foreground("Tunggu Sebentar ya, Kami sedang mencarikan Dokter untuk Anda");
      }
    };

    return WaitingScreen;
  }(React.Component);

  var WaitingScreen$1 = reactRedux.connect(function (state) {
    return {
      fcmToken: state.token.fcmToken,
      themeColors: state.themeColors,
      accessToken: state.token.accessToken
    };
  })(WaitingScreen);

  var AskScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(AskScreen, _React$Component);

    function AskScreen() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "state", {
        containerWidth: 0
      });

      return _this;
    }

    var _proto = AskScreen.prototype;

    _proto.handleCancelPress = function handleCancelPress() {
      this.props.navigation.goBack();
    };

    _proto.handleContainerLayout = function handleContainerLayout(_ref) {
      var width = _ref.nativeEvent.layout.width;
      this.setState({
        containerWidth: width
      });
    };

    _proto.handleDependencyPress = function handleDependencyPress() {
      this.props.navigation.replace("dependencies", _extends({}, this.props.navigation.state.params));
    };

    _proto.handlePatientPress = function handlePatientPress() {
      this.props.navigation.replace("symptom", _extends({}, this.props.navigation.state.params));
    };

    _proto.render = function render() {
      var _this2 = this;

      var themeColors = this.props.themeColors;
      var containerWidth = this.state.containerWidth;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        onLayout: function onLayout(e) {
          return _this2.handleContainerLayout(e);
        },
        style: [styles$8.container, {
          backgroundColor: themeColors.primary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.SafeAreaView, null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.handleCancelPress();
        },
        style: styles$8.cancelButton
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/round_arrow_back_ios_white_18dp.png")
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$8.cancelText
      }, I18n__default['default'].t("prixa.cancel")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$8.illustrationContainer
      }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
        source: require("../assets/illustrations/ask.png"),
        width: containerWidth - 120
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$8.contentContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$8.question, {
          color: themeColors.darkestPrimary
        }]
      }, I18n__default['default'].t("prixa.intendedFor")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$8.actionsContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.handlePatientPress();
        },
        style: [styles$8.dependencyButton, {
          backgroundColor: themeColors.darkestPrimary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$8.dependencyText
      }, this.props.navigation.state.params.firstName)), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.handleDependencyPress();
        },
        style: styles$8.patientButton
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$8.patientText
      }, I18n__default['default'].t("prixa.others"))))));
    };

    return AskScreen;
  }(React__default['default'].Component);

  var styles$8 = reactNative.StyleSheet.create({
    actionsContainer: {
      flexDirection: "row",
      justifyContent: "space-between"
    },
    cancelButton: {
      alignItems: "center",
      flexDirection: "row",
      padding: 15,
      paddingVertical: 36
    },
    cancelText: _extends({
      color: staticColors.white,
      fontSize: 16,
      marginStart: 15
    }, fonts.bold),
    container: {
      flex: 1
    },
    contentContainer: {
      backgroundColor: staticColors.white,
      borderTopEndRadius: 40,
      borderTopStartRadius: 40,
      paddingHorizontal: 30,
      paddingVertical: 40
    },
    dependencyButton: {
      borderRadius: 20,
      paddingHorizontal: 30,
      paddingVertical: 10
    },
    dependencyText: _extends({
      color: staticColors.white,
      fontSize: 16
    }, fonts.bold),
    illustrationContainer: {
      alignItems: "center",
      flexGrow: 1,
      justifyContent: "center"
    },
    patientButton: {
      backgroundColor: staticColors.forestFern,
      borderRadius: 20,
      paddingHorizontal: 30,
      paddingVertical: 10
    },
    patientText: _extends({
      color: staticColors.white,
      fontSize: 16
    }, fonts.bold),
    question: _extends({
      fontSize: 24,
      marginBottom: 30,
      textAlign: "center"
    }, fonts.regular)
  });
  var AskScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(AskScreen);

  var IntroSlide = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(IntroSlide, _React$Component);

    function IntroSlide() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = IntroSlide.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          content = _this$props.content,
          image = _this$props.image,
          themeColors = _this$props.themeColors,
          title = _this$props.title,
          width = _this$props.width;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$7.container, {
          width: width
        }]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        resizeMode: "contain",
        source: image,
        style: [styles$7.image, {
          width: width - 60
        }]
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$7.title, {
          color: themeColors.darkestPrimary
        }]
      }, title), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$7.content, {
          color: themeColors.darkestPrimary
        }]
      }, content));
    };

    return IntroSlide;
  }(React__default['default'].Component);

  _defineProperty(IntroSlide, "propTypes", {
    content: PropTypes__default['default'].string.isRequired,
    image: reactNative.Image.propTypes.source.isRequired,
    title: PropTypes__default['default'].string.isRequired,
    width: PropTypes__default['default'].number.isRequired
  });

  var styles$7 = reactNative.StyleSheet.create({
    container: {
      flex: 1,
      justifyContent: "center",
      padding: 30
    },
    content: _extends({
      fontSize: 22,
      textAlign: "center"
    }, fonts.regular),
    image: {
      flex: 0.5,
      marginBottom: 40
    },
    title: _extends({
      fontSize: 22,
      marginBottom: 10,
      textAlign: "center"
    }, fonts.bold)
  });
  var IntroSlide$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(IntroSlide);

  var _Dimensions$get$2 = reactNative.Dimensions.get("window"),
      width$1 = _Dimensions$get$2.width;

  var IntroScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(IntroScreen, _React$Component);

    function IntroScreen() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = IntroScreen.prototype;

    _proto.handleDone = function handleDone() {
      this.props.navigation.goBack();
    };

    _proto.handleSkip = function handleSkip() {
      this.props.navigation.goBack();
    };

    _proto.renderItem = function renderItem(_ref) {
      var item = _ref.item;
      return /*#__PURE__*/React__default['default'].createElement(IntroSlide$1, {
        content: item.text,
        image: item.image,
        title: item.title,
        width: width$1
      });
    };

    _proto.render = function render() {
      var _this = this;

      var _this$props = this.props,
          introSlides = _this$props.introSlides,
          themeColors = _this$props.themeColors;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$6.container, {
          backgroundColor: themeColors.lightestPrimary
        }]
      }, /*#__PURE__*/React__default['default'].createElement(AppIntroSlider__default['default'], {
        activeDotStyle: {
          backgroundColor: themeColors.darkestPrimary
        },
        buttonTextStyle: [styles$6.buttonText, {
          color: themeColors.darkestPrimary
        }],
        doneLabel: I18n__default['default'].t("prixa.done"),
        dotStyle: {
          backgroundColor: themeColors.lighterPrimary
        },
        nextLabel: I18n__default['default'].t("prixa.next"),
        onDone: function onDone() {
          return _this.handleDone();
        },
        onSkip: function onSkip() {
          return _this.handleSkip();
        },
        prevLabel: I18n__default['default'].t("prixa.previous"),
        renderItem: this.renderItem,
        showPrevButton: true,
        showSkipButton: true,
        skipLabel: I18n__default['default'].t("prixa.skip"),
        slides: introSlides
      }));
    };

    return IntroScreen;
  }(React__default['default'].Component);

  var styles$6 = reactNative.StyleSheet.create({
    buttonText: _extends({
      fontSize: 16
    }, fonts.bold),
    container: {
      flex: 1
    }
  });
  var IntroScreen$1 = reactRedux.connect(function (state) {
    return {
      introSlides: state.introSlides,
      themeColors: state.themeColors
    };
  })(IntroScreen);

  var VideoCallScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(VideoCallScreen, _React$Component);

    function VideoCallScreen(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "handleAppStateChange", function (appState) {
        if (appState === "background") {
          if (_this.client) {
            _this.client.disconnect();
          }
        }
      });

      _defineProperty(_assertThisInitialized(_this), "renderContent", function () {
        var _this$state = _this.state,
            audioSent = _this$state.audioSent,
            cameraType = _this$state.cameraType,
            localVideoStreamId = _this$state.localVideoStreamId,
            remoteVideoStreamId = _this$state.remoteVideoStreamId;
        return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNativeVoximplant.Voximplant.VideoView, {
          scaleType: reactNativeVoximplant.Voximplant.RenderScaleType.SCALE_FILL,
          style: {
            flex: 1
          },
          videoStreamId: remoteVideoStreamId
        }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            padding: 20,
            position: "absolute",
            right: 0
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNativeVoximplant.Voximplant.VideoView, {
          style: {
            height: 150,
            width: 150
          },
          videoStreamId: localVideoStreamId
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            bottom: 0,
            left: 0,
            padding: 40,
            position: "absolute",
            right: 0
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            flexDirection: "row",
            justifyContent: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            if (cameraType === reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT) {
              reactNativeVoximplant.Voximplant.Hardware.CameraManager.getInstance().switchCamera(reactNativeVoximplant.Voximplant.Hardware.CameraType.BACK);

              _this.setState({
                cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.BACK
              });
            } else {
              reactNativeVoximplant.Voximplant.Hardware.CameraManager.getInstance().switchCamera(reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT);

              _this.setState({
                cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT
              });
            }
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            backgroundColor: staticColors.white,
            borderRadius: 25,
            height: 50,
            justifyContent: "center",
            width: 50
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: cameraType === reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT ? require("../assets/icons/round_camera_rear_black_36dp.png") : require("../assets/icons/round_camera_front_black_36dp.png"),
          style: {
            height: 30,
            width: 30
          }
        }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            return _this.props.navigation.goBack();
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            backgroundColor: staticColors.thimbleberry,
            borderRadius: 37.5,
            height: 75,
            justifyContent: "center",
            margin: 25,
            width: 75
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/icons/round_call_end_white_36dp.png"),
          style: {
            height: 45,
            width: 45
          }
        }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            if (audioSent) {
              _this.call.sendAudio(false);

              _this.setState({
                audioSent: false
              });
            } else {
              _this.call.sendAudio(true);

              _this.setState({
                audioSent: true
              });
            }
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            backgroundColor: staticColors.white,
            borderRadius: 25,
            height: 50,
            justifyContent: "center",
            width: 50
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: audioSent ? require("../assets/mic-on.png") : require("../assets/mic-off.png"),
          style: {
            height: 30,
            width: 30
          }
        }))))));
      });

      _defineProperty(_assertThisInitialized(_this), "renderLoading", function () {
        var doctor = _this.state.doctor;
        return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            flex: 1,
            justifyContent: "space-around"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            alignSelf: "center",
            padding: 20
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 24
          }, fonts.regular)
        }, "Panggilan Video"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.white,
            fontSize: 24
          }, fonts.bold)
        }, doctor.fullName)), /*#__PURE__*/React__default['default'].createElement(PulseLoader, null)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            backgroundColor: staticColors.white,
            borderTopEndRadius: 40,
            borderTopStartRadius: 40,
            marginTop: -40,
            padding: 25
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
          onPress: function onPress() {
            return _this.props.navigation.goBack();
          },
          style: {
            alignItems: "center"
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
          style: {
            alignItems: "center",
            backgroundColor: staticColors.thimbleberry,
            borderRadius: 25,
            height: 50,
            justifyContent: "center",
            width: 50
          }
        }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: require("../assets/icons/round_call_end_white_36dp.png"),
          style: {
            height: 30,
            width: 30
          }
        })), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
          style: _extends({
            color: staticColors.cavernous,
            fontSize: 18,
            marginTop: 10
          }, fonts.regular)
        }, "Akhiri Panggilan"))));
      });

      var _this$props$navigatio = _this.props.navigation.state.params,
          _doctor = _this$props$navigatio.doctor,
          patient = _this$props$navigatio.patient,
          transaction = _this$props$navigatio.transaction;
      _this.state = {
        audioSent: true,
        cameraType: reactNativeVoximplant.Voximplant.Hardware.CameraType.FRONT,
        doctor: {
          fullName: _doctor.fullName
        },
        isLoading: true,
        localVideoStreamId: null,
        patient: {
          id: patient.id
        },
        remoteVideoStreamId: null,
        transaction: {
          id: transaction.id
        }
      };
      return _this;
    }

    var _proto = VideoCallScreen.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var _this2 = this;

      reactNative.AppState.addEventListener("change", this.handleAppStateChange);
      InCallManager__default['default'].start({
        media: "video",
        ringback: "_BUNDLE_"
      });
      this.client = reactNativeVoximplant.Voximplant.getInstance();
      this.connect().then(function () {
        return _this2.login();
      });
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      reactNative.AppState.removeEventListener("change", this.handleAppStateChange);
      this.client.disconnect();
      InCallManager__default['default'].stop({
        busytone: "_BUNDLE_"
      });
    };

    _proto.connect = /*#__PURE__*/function () {
      var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return this.client.connect();

              case 2:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function connect() {
        return _connect.apply(this, arguments);
      }

      return connect;
    }();

    _proto.exchangeLoginKey = /*#__PURE__*/function () {
      var _exchangeLoginKey = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(key) {
        var token, baseUrl, response, json;
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                token = this.props.token;
                baseUrl = getBaseUrl();
                _context2.next = 4;
                return fetch(baseUrl + "call/start", {
                  body: JSON.stringify({
                    login_key: key
                  }),
                  headers: {
                    Authorization: "Bearer " + token,
                    "Content-Type": "application/json"
                  },
                  method: "POST"
                });

              case 4:
                response = _context2.sent;
                _context2.next = 7;
                return response.json();

              case 7:
                json = _context2.sent;
                return _context2.abrupt("return", {
                  doctor: {
                    alias: json["data"]["doctor"]["alias"]
                  },
                  token: json["data"]["token"]
                });

              case 9:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this);
      }));

      function exchangeLoginKey(_x) {
        return _exchangeLoginKey.apply(this, arguments);
      }

      return exchangeLoginKey;
    }();

    _proto.login = /*#__PURE__*/function () {
      var _login = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
        var _this3 = this;

        var _this$state2, patient, transaction, accountName, appName, domain, alias, _yield$this$exchangeL, doctor, token;

        return regeneratorRuntime.wrap(function _callee3$(_context3) {
          while (1) {
            switch (_context3.prev = _context3.next) {
              case 0:
                _this$state2 = this.state, patient = _this$state2.patient, transaction = _this$state2.transaction;
                accountName = getVoximplantAccountName();
                appName = getVoximplantAppName();
                domain = appName + "." + accountName + ".voximplant.com";
                alias = "patient-" + patient.id;
                _context3.prev = 5;
                _context3.next = 8;
                return this.client.requestOneTimeLoginKey(alias + "@" + domain);

              case 8:
                _context3.next = 27;
                break;

              case 10:
                _context3.prev = 10;
                _context3.t0 = _context3["catch"](5);

                if (!(_context3.t0.code === 302)) {
                  _context3.next = 27;
                  break;
                }

                _context3.next = 15;
                return this.exchangeLoginKey(_context3.t0.key);

              case 15:
                _yield$this$exchangeL = _context3.sent;
                doctor = _yield$this$exchangeL.doctor;
                token = _yield$this$exchangeL.token;
                _context3.next = 20;
                return this.client.loginWithOneTimeKey(alias + "@" + domain, token);

              case 20:
                _context3.next = 22;
                return this.client.call(doctor.alias + "@" + domain, {
                  customData: JSON.stringify({
                    transaction_id: transaction.id
                  }),
                  video: {
                    receiveVideo: true,
                    sendVideo: true
                  }
                });

              case 22:
                this.call = _context3.sent;
                this.call.on(reactNativeVoximplant.Voximplant.CallEvents.Disconnected, function () {
                  return _this3.props.navigation.goBack();
                });
                this.call.on(reactNativeVoximplant.Voximplant.CallEvents.EndpointAdded, function (event) {
                  event.endpoint.on(reactNativeVoximplant.Voximplant.EndpointEvents.RemoteVideoStreamAdded, function (event) {
                    InCallManager__default['default'].stopRingback();
                    reactNativeVoximplant.Voximplant.Hardware.AudioDeviceManager.getInstance().selectAudioDevice(reactNativeVoximplant.Voximplant.Hardware.AudioDevice.SPEAKER);

                    _this3.setState({
                      isLoading: false,
                      remoteVideoStreamId: event.videoStream.id
                    });
                  });
                });
                this.call.on(reactNativeVoximplant.Voximplant.CallEvents.Failed, function (e) {
                  if (e.code === 603) {
                    reactNative.Alert.alert("Whoops", "Mohon maaf untuk sementara dokter tidak dapat menerima panggilan karena trafik yang tinggi.");
                  }

                  _this3.props.navigation.goBack();
                });
                this.call.on(reactNativeVoximplant.Voximplant.CallEvents.LocalVideoStreamAdded, function (event) {
                  return _this3.setState({
                    localVideoStreamId: event.videoStream.id
                  });
                });

              case 27:
              case "end":
                return _context3.stop();
            }
          }
        }, _callee3, this, [[5, 10]]);
      }));

      function login() {
        return _login.apply(this, arguments);
      }

      return login;
    }();

    _proto.render = function render() {
      var themeColors = this.props.themeColors;
      var isLoading = this.state.isLoading;
      var container;

      if (isLoading) {
        container = this.renderLoading();
      } else {
        container = this.renderContent();
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: themeColors.primary,
          flex: 1
        }
      }, container);
    };

    return VideoCallScreen;
  }(React__default['default'].Component);

  var VideoCallScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(VideoCallScreen);

  var AudioCallScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(AudioCallScreen, _React$Component);

    function AudioCallScreen(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "handleAppStateChange", function (appState) {
        if (appState === "background") {
          if (_this.client) {
            _this.client.disconnect();
          }
        }
      });

      _defineProperty(_assertThisInitialized(_this), "renderContent", function () {
        var doctor = _this.state.doctor;
        return /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
          source: {
            uri: doctor.avatarUrl
          },
          style: {
            flex: 1
          }
        });
      });

      _defineProperty(_assertThisInitialized(_this), "renderLoading", function () {
        return /*#__PURE__*/React__default['default'].createElement(PulseLoader, null);
      });

      var _this$props$navigatio = _this.props.navigation.state.params,
          _doctor = _this$props$navigatio.doctor,
          patient = _this$props$navigatio.patient,
          transaction = _this$props$navigatio.transaction;
      _this.state = {
        doctor: {
          avatarUrl: null,
          fullName: _doctor.fullName
        },
        isLoading: true,
        patient: {
          id: patient.id
        },
        transaction: {
          id: transaction.id
        }
      };
      return _this;
    }

    var _proto = AudioCallScreen.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var _this2 = this;

      reactNative.AppState.addEventListener("change", this.handleAppStateChange);
      InCallManager__default['default'].start({
        media: "audio",
        ringback: "_BUNDLE_"
      });
      this.client = reactNativeVoximplant.Voximplant.getInstance();
      this.connect().then(function () {
        return _this2.login();
      });
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      reactNative.AppState.removeEventListener("change", this.handleAppStateChange);
      this.client.disconnect();
      InCallManager__default['default'].stop({
        busytone: "_BUNDLE_"
      });
    };

    _proto.connect = /*#__PURE__*/function () {
      var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return this.client.connect();

              case 2:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function connect() {
        return _connect.apply(this, arguments);
      }

      return connect;
    }();

    _proto.exchangeLoginKey = /*#__PURE__*/function () {
      var _exchangeLoginKey = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(key) {
        var token, baseUrl, response, json;
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                token = this.props.token;
                baseUrl = getBaseUrl();
                _context2.next = 4;
                return fetch(baseUrl + "call/start", {
                  body: JSON.stringify({
                    login_key: key
                  }),
                  headers: {
                    Authorization: "Bearer " + token,
                    "Content-Type": "application/json"
                  },
                  method: "POST"
                });

              case 4:
                response = _context2.sent;
                _context2.next = 7;
                return response.json();

              case 7:
                json = _context2.sent;
                return _context2.abrupt("return", {
                  doctor: {
                    alias: json["data"]["doctor"]["alias"],
                    avatarUrl: json["data"]["doctor"]["avatar_url"]
                  },
                  token: json["data"]["token"]
                });

              case 9:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this);
      }));

      function exchangeLoginKey(_x) {
        return _exchangeLoginKey.apply(this, arguments);
      }

      return exchangeLoginKey;
    }();

    _proto.login = /*#__PURE__*/function () {
      var _login = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
        var _this3 = this;

        var _this$state, oldDoctor, patient, transaction, accountName, appName, domain, alias, _yield$this$exchangeL, newDoctor, token, call;

        return regeneratorRuntime.wrap(function _callee3$(_context3) {
          while (1) {
            switch (_context3.prev = _context3.next) {
              case 0:
                _this$state = this.state, oldDoctor = _this$state.doctor, patient = _this$state.patient, transaction = _this$state.transaction;
                accountName = getVoximplantAccountName();
                appName = getVoximplantAppName();
                domain = appName + "." + accountName + ".voximplant.com";
                alias = "patient-" + patient.id;
                _context3.prev = 5;
                _context3.next = 8;
                return this.client.requestOneTimeLoginKey(alias + "@" + domain);

              case 8:
                _context3.next = 26;
                break;

              case 10:
                _context3.prev = 10;
                _context3.t0 = _context3["catch"](5);

                if (!(_context3.t0.code === 302)) {
                  _context3.next = 26;
                  break;
                }

                _context3.next = 15;
                return this.exchangeLoginKey(_context3.t0.key);

              case 15:
                _yield$this$exchangeL = _context3.sent;
                newDoctor = _yield$this$exchangeL.doctor;
                token = _yield$this$exchangeL.token;
                _context3.next = 20;
                return this.client.loginWithOneTimeKey(alias + "@" + domain, token);

              case 20:
                _context3.next = 22;
                return this.client.call(newDoctor.alias + "@" + domain, {
                  customData: JSON.stringify({
                    transaction_id: transaction.id
                  })
                });

              case 22:
                call = _context3.sent;
                call.on(reactNativeVoximplant.Voximplant.CallEvents.Connected, function () {
                  InCallManager__default['default'].stopRingback();

                  _this3.setState({
                    doctor: {
                      avatarUrl: newDoctor.avatarUrl,
                      fullName: oldDoctor.fullName
                    },
                    isLoading: false
                  });
                });
                call.on(reactNativeVoximplant.Voximplant.CallEvents.Disconnected, function () {
                  return _this3.props.navigation.goBack();
                });
                call.on(reactNativeVoximplant.Voximplant.CallEvents.Failed, function (e) {
                  if (e.code === 603) {
                    reactNative.Alert.alert("Whoops", "Mohon maaf untuk sementara dokter tidak dapat menerima panggilan karena trafik yang tinggi.");
                  }

                  _this3.props.navigation.goBack();
                });

              case 26:
              case "end":
                return _context3.stop();
            }
          }
        }, _callee3, this, [[5, 10]]);
      }));

      function login() {
        return _login.apply(this, arguments);
      }

      return login;
    }();

    _proto.render = function render() {
      var _this4 = this;

      var themeColors = this.props.themeColors;
      var _this$state2 = this.state,
          doctor = _this$state2.doctor,
          isLoading = _this$state2.isLoading;
      var container;

      if (isLoading) {
        container = this.renderLoading();
      } else {
        container = this.renderContent();
      }

      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: themeColors.primary,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          justifyContent: "space-around"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          alignSelf: "center",
          padding: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24
        }, fonts.regular)
      }, "Panggilan Suara"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24
        }, fonts.bold)
      }, doctor.fullName)), container), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          marginTop: -40,
          padding: 25
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this4.props.navigation.goBack();
        },
        style: {
          alignItems: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          backgroundColor: staticColors.thimbleberry,
          borderRadius: 25,
          height: 50,
          justifyContent: "center",
          width: 50
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: require("../assets/icons/round_call_end_white_36dp.png"),
        style: {
          height: 30,
          width: 30
        }
      })), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.cavernous,
          fontSize: 18,
          marginTop: 10
        }, fonts.regular)
      }, "Akhiri Panggilan"))));
    };

    return AudioCallScreen;
  }(React__default['default'].Component);

  var AudioCallScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(AudioCallScreen);

  var PreAssessmentScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PreAssessmentScreen, _React$Component);

    function PreAssessmentScreen() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "handleBackPress", function () {
        return true;
      });

      return _this;
    }

    var _proto = PreAssessmentScreen.prototype;

    _proto.componentDidMount = function componentDidMount() {
      this.backHandler = reactNative.BackHandler.addEventListener("hardwareBackPress", this.handleBackPress);
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      this.backHandler.remove();
    };

    _proto.submit = /*#__PURE__*/function () {
      var _submit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(result) {
        var token;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                token = this.props.token;
                _context.next = 3;
                return fetch(getBaseUrl() + "consultations/pre-assessment", {
                  headers: {
                    Authorization: "Bearer " + token,
                    "Content-Type": "application/json"
                  },
                  method: "POST",
                  body: JSON.stringify({
                    result: result
                  })
                });

              case 3:
                this.props.navigation.goBack();

              case 4:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function submit(_x) {
        return _submit.apply(this, arguments);
      }

      return submit;
    }();

    _proto.render = function render() {
      var _this2 = this;

      var themeColors = this.props.themeColors;
      var doctor = this.props.navigation.state.params.doctor;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: themeColors.primary,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          alignItems: "center",
          flexGrow: 1,
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: {
          uri: doctor.avatarUrl
        },
        style: {
          borderColor: "rgba(255, 255, 255, 0.5)",
          borderRadius: 110,
          borderWidth: 10,
          height: 220,
          marginBottom: 40,
          width: 220
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.regular)
      }, "Konsultasi Anda akan terhubung dengan"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24
        }, fonts.bold)
      }, doctor.fullName)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          padding: 25
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.cavernous,
          fontSize: 24,
          marginBottom: 15,
          textAlign: "center"
        }, fonts.bold)
      }, "Survey Singkat"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.grey,
          fontSize: 16,
          marginBottom: 30,
          textAlign: "center"
        }, fonts.regular)
      }, "Sebelum memulai konsultasi, apakah Anda sebelumnya sudah ada rencana untuk datang ke rumah sakit/klinik untuk rawat jalan?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          justifyContent: "space-around"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.submit(false);
        },
        style: {
          backgroundColor: staticColors.thimbleberry,
          borderRadius: 20,
          paddingHorizontal: 30,
          paddingVertical: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.bold)
      }, "Tidak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.submit(true);
        },
        style: {
          backgroundColor: staticColors.forestFern,
          borderRadius: 20,
          paddingHorizontal: 30,
          paddingVertical: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.bold)
      }, "Ya")))));
    };

    return PreAssessmentScreen;
  }(React__default['default'].Component);

  var PreAssessmentScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(PreAssessmentScreen);

  var PostAssessmentScreen = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PostAssessmentScreen, _React$Component);

    function PostAssessmentScreen() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "handleBackPress", function () {
        return true;
      });

      return _this;
    }

    var _proto = PostAssessmentScreen.prototype;

    _proto.componentDidMount = function componentDidMount() {
      this.backHandler = reactNative.BackHandler.addEventListener("hardwareBackPress", this.handleBackPress);
    };

    _proto.componentWillUnmount = function componentWillUnmount() {
      this.backHandler.remove();
    };

    _proto.submit = /*#__PURE__*/function () {
      var _submit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(result) {
        var token;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                token = this.props.token;
                _context.next = 3;
                return fetch(getBaseUrl() + "consultations/post-assessment", {
                  headers: {
                    Authorization: "Bearer " + token,
                    "Content-Type": "application/json"
                  },
                  method: "POST",
                  body: JSON.stringify({
                    result: result
                  })
                });

              case 3:
                this.props.navigation.goBack();

              case 4:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function submit(_x) {
        return _submit.apply(this, arguments);
      }

      return submit;
    }();

    _proto.render = function render() {
      var _this2 = this;

      var themeColors = this.props.themeColors;
      var transaction = this.props.navigation.state.params.transaction;
      var time = moment__default['default'](transaction.startedAt).format("DD MMMM YYYY [pukul] H:m ");
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: themeColors.primary,
          flex: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
        style: {
          flexGrow: 1
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 24,
          padding: 20,
          textAlign: "center"
        }, fonts.bold)
      }, transaction.doctor.fullName), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
        source: {
          uri: transaction.doctor.avatarUrl
        },
        style: {
          alignSelf: "center",
          borderColor: "rgba(255, 255, 255, 0.5)",
          borderRadius: 90,
          borderWidth: 10,
          height: 180,
          marginVertical: 20,
          width: 180
        }
      }))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          padding: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.bold)
      }, "Summary Konsultasi"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.regular)
      }, transaction.summary))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: staticColors.white,
          borderTopEndRadius: 40,
          borderTopStartRadius: 40,
          padding: 25
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.cavernous,
          fontSize: 24,
          marginBottom: 15,
          textAlign: "center"
        }, fonts.bold)
      }, "Survey Singkat"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.grey,
          fontSize: 16,
          marginBottom: 30,
          textAlign: "center"
        }, fonts.regular)
      }, "Setelah konsultasi dengan ", transaction.doctor.fullName, " pada ", time, "apakah Anda jadi rawat jalan ke rumah sakit/klinik?"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flexDirection: "row",
          justifyContent: "space-around"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.submit(false);
        },
        style: {
          backgroundColor: staticColors.thimbleberry,
          borderRadius: 20,
          paddingHorizontal: 30,
          paddingVertical: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.bold)
      }, "Tidak")), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this2.submit(true);
        },
        style: {
          backgroundColor: staticColors.forestFern,
          borderRadius: 20,
          paddingHorizontal: 30,
          paddingVertical: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          color: staticColors.white,
          fontSize: 16
        }, fonts.bold)
      }, "Ya")))));
    };

    return PostAssessmentScreen;
  }(React__default['default'].Component);

  var PostAssessmentScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(PostAssessmentScreen);

  var PrescriptionHistoryDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PrescriptionHistoryDetail, _React$Component);

    function PrescriptionHistoryDetail() {
      var _this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;

      _defineProperty(_assertThisInitialized(_this), "state", {
        isLoading: true
      });

      _defineProperty(_assertThisInitialized(_this), "goToHistoryDetail", function (data) {
        var navigation = _this.props.navigation;
        var _navigation$state$par = navigation.state.params,
            cardNumber = _navigation$state$par.cardNumber,
            fullName = _navigation$state$par.fullName,
            gender = _navigation$state$par.gender;
        navigation.navigate("PrescriptionHistoryDetail", {
          data: data,
          cardNumber: cardNumber,
          fullName: fullName,
          gender: gender
        });
      });

      _defineProperty(_assertThisInitialized(_this), "goToPrescriptionDetail", function (data) {
        var navigation = _this.props.navigation;
        var _navigation$state$par2 = navigation.state.params,
            cardNumber = _navigation$state$par2.cardNumber,
            fullName = _navigation$state$par2.fullName,
            gender = _navigation$state$par2.gender,
            config = _navigation$state$par2.config;
        navigation.navigate("PrescriptionDetail", {
          prescriptionId: data.id,
          customerName: fullName,
          patientName: data.patientName,
          cardNumber: cardNumber,
          gender: gender,
          pharmacy: config.pharmacy
        });
      });

      return _this;
    }

    var _proto = PrescriptionHistoryDetail.prototype;

    _proto.componentDidMount = function componentDidMount() {
      var _this2 = this;

      this.props.navigation.addListener("willFocus", function () {
        console.info("willFocus");

        _this2.setState({
          isLoading: true
        });
      });
      this.props.navigation.addListener("didFocus", function () {
        console.info("didFocus");

        _this2.setState({
          isLoading: false
        });
      });
      this.props.navigation.addListener("willBlur", function () {
        return console.info("willBlur");
      });
      this.props.navigation.addListener("didBlur", function () {
        console.info("didBlur");

        _this2.setState({
          isLoading: false
        });
      });
    };

    _proto.render = function render() {
      var _this3 = this;

      var _this$props = this.props,
          data = _this$props.data,
          themeColors = _this$props.themeColors,
          navigation = _this$props.navigation;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$5.container
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$5.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$5.regularBold
      }, data.patientName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$5.section, {
          marginTop: 5,
          color: staticColors.grey
        }]
      }, I18n__default['default'].t("prixa.lifepackSubscriptionIdWithNumber", {
        no: data.lifepackSubscriptionId
      })), !!data.status ? navigation.state.params.config.pharmacy.pharmacy_name === "Siloam" ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$5.regular, _extends({
          marginTop: 5,
          color: themeColors.primary
        }, fonts.bold, {
          textTransform: "capitalize"
        })]
      }, I18n__default['default'].t("prixa.defaultStatusDelivery")) : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$5.regular, _extends({
          marginTop: 5,
          color: themeColors.primary
        }, fonts.bold, {
          textTransform: "capitalize"
        })]
      }, I18n__default['default'].t("prixa.prescriptionStatusDelivery", {
        status: data.status
      })) : null)), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$5.buttonContainer
      }, navigation.state.params.config.is_pharmacy_enabled == true && !!data.status ? /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this3.goToHistoryDetail(data);
        },
        style: {
          marginTop: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          borderRadius: 20,
          backgroundColor: staticColors.forestFern
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 11
        }, fonts.bold, {
          color: "#fff",
          width: 110,
          textAlign: "center",
          paddingVertical: 9,
          textTransform: "uppercase"
        })
      }, I18n__default['default'].t("prixa.prescriptionView")))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        onPress: function onPress() {
          return _this3.goToPrescriptionDetail(data);
        },
        style: {
          marginTop: 20,
          marginLeft: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          borderRadius: 20,
          borderColor: staticColors.forestFern,
          borderWidth: 2
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 11
        }, fonts.bold, {
          color: staticColors.forestFern,
          width: 120,
          textAlign: "center",
          paddingVertical: 7,
          textTransform: "uppercase"
        })
      }, !!data.status ? I18n__default['default'].t("prixa.prescriptionDetail") : I18n__default['default'].t("prixa.prescriptionRedeem"))))));
    };

    return PrescriptionHistoryDetail;
  }(React__default['default'].Component);

  _defineProperty(PrescriptionHistoryDetail, "propTypes", {
    data: PropTypes__default['default'].shape({
      id: PropTypes__default['default'].string.isRequired,
      prescriptionNo: PropTypes__default['default'].string,
      lifepackSubscriptionId: PropTypes__default['default'].string,
      patientName: PropTypes__default['default'].string.isRequired,
      patientClass: PropTypes__default['default'].string,
      status: PropTypes__default['default'].string,
      prescriptionDate: PropTypes__default['default'].string,
      lifepack: PropTypes__default['default'].object
    }),
    navigation: PropTypes__default['default'].object.isRequired
  });

  var styles$5 = reactNative.StyleSheet.create({
    container: {
      flexDirection: "row"
    },
    buttonContainer: {
      marginTop: 10,
      justifyContent: "flex-end",
      flexDirection: "row",
      flex: 1,
      paddingLeft: 40
    },
    detailContainer: {
      flex: 1,
      paddingRight: 8
    },
    section: _extends({
      fontSize: 12
    }, fonts.regular),
    regular: _extends({
      fontSize: 13
    }, fonts.regular),
    regularBold: _extends({
      fontSize: 13
    }, fonts.bold, {
      color: "#000"
    })
  });
  var PrescriptionHistoryDetail$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryDetail);

  var PrescriptionHistoryItem = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PrescriptionHistoryItem, _React$Component);

    function PrescriptionHistoryItem() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PrescriptionHistoryItem.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          createdAt = _this$props.createdAt,
          prescription = _this$props.prescription,
          themeColors = _this$props.themeColors,
          navigation = _this$props.navigation;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginBottom: 10
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$4.section, _extends({
          color: themeColors.primary
        }, fonts.bold)]
      }, I18n__default['default'].t("prixa.prescriptionOn", {
        date: I18n__default['default'].l("date.prixa.default", createdAt),
        time: I18n__default['default'].l("time.prixa.default", createdAt)
      }))), /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryDetail$1, {
        navigation: navigation,
        data: prescription
      }));
    };

    return PrescriptionHistoryItem;
  }(React__default['default'].Component);

  _defineProperty(PrescriptionHistoryItem, "propTypes", {
    createdAt: PropTypes__default['default'].instanceOf(Date).isRequired,
    prescription: PropTypes__default['default'].shape({
      id: PropTypes__default['default'].string.isRequired,
      prescriptionNo: PropTypes__default['default'].string,
      lifepackSubscriptionId: PropTypes__default['default'].string,
      patientName: PropTypes__default['default'].string.isRequired,
      patientClass: PropTypes__default['default'].string,
      status: PropTypes__default['default'].string,
      prescriptionDate: PropTypes__default['default'].string,
      lifepack: PropTypes__default['default'].object
    }).isRequired,
    navigation: PropTypes__default['default'].object.isRequired
  });

  var styles$4 = reactNative.StyleSheet.create({
    createdAt: _extends({
      fontSize: 14,
      marginBottom: 8
    }, fonts.regular),
    summary: _extends({
      color: staticColors.grey,
      fontSize: 10,
      marginTop: 5,
      textAlign: "justify"
    }, fonts.regular),
    section: _extends({
      fontSize: 16
    }, fonts.regular)
  });
  var PrescriptionHistoryItem$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryItem);

  var PrescriptionHistoryScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(PrescriptionHistoryScreen, _Component);

    function PrescriptionHistoryScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;
      _this.state = {
        isLoading: false,
        refreshing: false,
        historyData: []
      };
      return _this;
    }

    var _proto = PrescriptionHistoryScreen.prototype;

    _proto.fetchPrescriptionHistory = /*#__PURE__*/function () {
      var _fetchPrescriptionHistory = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(isInitializing) {
        var patientId, _yield$API$get, prescriptionHistories, historyData;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                if (!isInitializing) {
                  this.setState({
                    refreshing: true
                  });
                }

                _context.prev = 1;
                patientId = this.props.navigation.state.params.patientId;
                _context.next = 5;
                return API.get(APP_BASE_URL + "/v2/profile/" + patientId + "/prescriptions");

              case 5:
                _yield$API$get = _context.sent;
                prescriptionHistories = _yield$API$get.data.data;
                historyData = prescriptionHistories.map(function (val) {
                  var _val$lifepack_subscri;

                  return {
                    type: "section",
                    date: moment__default['default'](val.created_at).toDate(),
                    icon: require("../assets/round_access_time_white_18dp.png"),
                    prescription: {
                      id: val.id,
                      prescriptionNo: val.prescription_number,
                      lifepackSubscriptionId: (_val$lifepack_subscri = val == null ? void 0 : val.lifepack_subscription_id) != null ? _val$lifepack_subscri : "-",
                      patientName: val.transaction_dependency ? val.transaction_dependency.first_name + " " + val.transaction_dependency.last_name : val.patient.patient_f_name + " " + val.patient.patient_l_name,
                      patientClass: val.patient.patient_class,
                      status: val.order_status,
                      prescriptionDate: moment__default['default'](val.created_at).format("DD MMMM YYYY"),
                      redeemDate: (val == null ? void 0 : val.claim_at) ? moment__default['default'](val.claim_at).format("DD MMMM YYYY") : "-",
                      lifepack: {
                        lifepackClaimId: val.lifepack_claim_id,
                        lifepackClaimUrl: val.lifepack_claim_url,
                        lifepackInvoiceUrl: val.lifepack_invoice_url,
                        lifepackSubmitRequest: val.lifepack_submit_request,
                        lifepackSubmitResponse: val.lifepack_submit_response,
                        lifepackSubscriptionId: val.lifepack_subscription_id
                      }
                    },
                    createdAt: moment__default['default'](val.created_at).toDate()
                  };
                });
                console.log({
                  prescriptionHistories: prescriptionHistories
                });
                this.setState({
                  historyData: historyData,
                  refreshing: false
                });
                _context.next = 15;
                break;

              case 12:
                _context.prev = 12;
                _context.t0 = _context["catch"](1);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 15:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this, [[1, 12]]);
      }));

      function fetchPrescriptionHistory(_x) {
        return _fetchPrescriptionHistory.apply(this, arguments);
      }

      return fetchPrescriptionHistory;
    }();

    _proto.componentDidMount = /*#__PURE__*/function () {
      var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                this.setState({
                  isLoading: true
                });
                _context2.next = 3;
                return this.fetchPrescriptionHistory(true);

              case 3:
                this.setState({
                  isLoading: false
                });

              case 4:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this);
      }));

      function componentDidMount() {
        return _componentDidMount.apply(this, arguments);
      }

      return componentDidMount;
    }();

    _proto.render = function render() {
      var _this2 = this;

      return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
        ref: function ref(_ref2) {
          _this2.scrollRef = _ref2;
        },
        backgroundColor: this.props.themeColors.primary,
        parallaxHeaderHeight: 200,
        refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
          refreshing: this.state.refreshing,
          onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
            return regeneratorRuntime.wrap(function _callee3$(_context3) {
              while (1) {
                switch (_context3.prev = _context3.next) {
                  case 0:
                    _context3.next = 2;
                    return _this2.fetchPrescriptionHistory();

                  case 2:
                    return _context3.abrupt("return", _context3.sent);

                  case 3:
                  case "end":
                    return _context3.stop();
                }
              }
            }, _callee3);
          }))
        }),
        renderForeground: function renderForeground() {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
            onPress: function onPress() {
              _this2.props.navigation.goBack();
            },
            position: "start",
            text: "Kembali",
            theme: "light"
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              flexDirection: "row",
              alignItems: "center",
              padding: 20
            }
          }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
            cardNumber: _this2.props.navigation.state.params.cardNumber,
            fullName: _this2.props.navigation.state.params.fullName,
            gender: _this2.props.navigation.state.params.gender
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            style: {
              marginStart: 20
            },
            onPress: function onPress() {
              return _this2.scrollRef.scrollTo({
                x: 0,
                y: 500
              });
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
            source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
          }))));
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary
        }
      }, this.state.isLoading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          paddingTop: 64
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        size: "large",
        color: this.props.themeColors.primary
      }))) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          paddingTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          width: 64,
          height: 6,
          borderRadius: 3,
          marginBottom: 15,
          opacity: 0.5,
          backgroundColor: "#808080",
          alignSelf: "center"
        }
      }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 20
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          alignSelf: "center",
          marginBottom: 30
        })
      }, "Riwayat Resep"), /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
        innerCircle: "icon",
        circleColor: this.props.themeColors.lighterPrimary,
        lineColor: this.props.themeColors.primary,
        data: this.state.historyData,
        detailContainerStyle: {
          marginTop: -13,
          marginBottom: 13
        },
        listViewContainerStyle: {
          marginLeft: 12,
          marginRight: 32
        },
        renderDetail: function renderDetail(rowData) {
          return /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryItem$1, {
            createdAt: rowData.createdAt,
            prescription: rowData.prescription,
            navigation: _this2.props.navigation
          });
        },
        showTime: false
      }))));
    };

    return PrescriptionHistoryScreen;
  }(React.Component);

  var PrescriptionHistoryScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryScreen);

  var currencyFormatter = function currencyFormatter(value) {
    return currency__default['default'](value, {
      symbol: "Rp ",
      separator: ".",
      decimal: ",",
      precision: 0
    }).format();
  };

  var PrescriptionHistoryItemDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PrescriptionHistoryItemDetail, _React$Component);

    function PrescriptionHistoryItemDetail(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;
      _this.state = {
        products: [],
        totalPayment: 0,
        payments: {
          subtotal_price: 0,
          discount: 0,
          total_price: 0,
          delivery_price: 0
        },
        invoiceUrl: "",
        prescriptionUrl: "",
        claimId: ""
      };
      return _this;
    }

    var _proto = PrescriptionHistoryItemDetail.prototype;

    _proto.calculateProducts = function calculateProducts() {
      var detail = this.props.detail;
      var products = [];
      var payments = {
        subtotal_price: 0,
        discount: 0,
        total_price: 0,
        delivery_price: 0
      };
      var totalPayment = 0;

      if (!detail.prescription_order_histories) {
        return;
      }

      if (detail.prescription_order_histories.length === 0) {
        return;
      } // filter first history for products


      var history = detail.prescription_order_histories[0];
      var history_product = detail.prescription_order_histories.product;

      if (history_product) {
        history.product.map(function (product) {
          products.push(product);
          totalPayment += product.price || 0;
        });
      } // filter histories that has payments


      var paymentHistories = detail.prescription_order_histories.filter(function (order) {
        return !!order.payment;
      });

      if (paymentHistories.length > 0) {
        var _paymentHistory$payme, _paymentHistory$payme2, _paymentHistory$payme3, _paymentHistory$payme4;

        var paymentHistory = paymentHistories[0];
        payments.subtotal_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme.subtotal_price) || 0;
        payments.discount = (paymentHistory == null ? void 0 : (_paymentHistory$payme2 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme2.discount) || 0;
        payments.total_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme3 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme3.total_price) || 0;
        payments.delivery_price = (paymentHistory == null ? void 0 : (_paymentHistory$payme4 = paymentHistory.payment) == null ? void 0 : _paymentHistory$payme4.delivery_price) || 0;
      } // filter histories that have claim ID


      var claimHistories = detail.prescription_order_histories.filter(function (order) {
        return !!order.claim_id;
      });

      if (claimHistories.length > 0) {
        var claimHistory = claimHistories[0];
        this.setState({
          claimId: claimHistory.claim_id
        });
      } // filter histories that have invoice URL


      var invoiceHistories = detail.prescription_order_histories.filter(function (order) {
        return !!order.invoice_url;
      });

      if (invoiceHistories.length > 0) {
        var invoiceHistory = invoiceHistories[0];
        this.setState({
          invoiceUrl: invoiceHistory.invoice_url
        });
      } //filter histories that have prescription URL


      var prescriptionHistories = detail.prescription_order_histories.filter(function (order) {
        return !!order.prescription_image;
      });

      if (prescriptionHistories.length > 0) {
        var prescriptionHistory = prescriptionHistories[0];
        this.setState({
          prescriptionUrl: prescriptionHistory.prescription_image
        });
      } // set up address delivery


      if (prescriptionHistories.length > 0) {
        var _prescriptionHistory = prescriptionHistories[0];

        if (_prescriptionHistory.patient.address != null) {
          var _prescriptionHistory$, _prescriptionHistory$2, _prescriptionHistory$3, _prescriptionHistory$4;

          var deliveryAddress = (_prescriptionHistory$ = (_prescriptionHistory$2 = _prescriptionHistory.patient.address) == null ? void 0 : _prescriptionHistory$2.second_line) != null ? _prescriptionHistory$ : "";
          var deliveryPostalCode = (_prescriptionHistory$3 = (_prescriptionHistory$4 = _prescriptionHistory.patient.address) == null ? void 0 : _prescriptionHistory$4.postal_code) != null ? _prescriptionHistory$3 : "";
          var newAddressDelivery = deliveryAddress != null ? deliveryAddress + " " + deliveryPostalCode : "-";
          this.setState({
            address: newAddressDelivery
          });
        }
      }

      this.setState({
        products: products,
        totalPayment: totalPayment,
        payments: payments
      });
    };

    _proto.componentDidMount = function componentDidMount() {
      this.calculateProducts();
    };

    _proto.render = function render() {
      var _this2 = this;

      var _this$props = this.props,
          data = _this$props.data,
          themeColors = _this$props.themeColors,
          navigation = _this$props.navigation,
          detail = _this$props.detail;
      var _this$state = this.state,
          payments = _this$state.payments;
          _this$state.totalPayment;
          var invoiceUrl = _this$state.invoiceUrl,
          prescriptionUrl = _this$state.prescriptionUrl,
          claimId = _this$state.claimId,
          address = _this$state.address;
      return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginLeft: 20,
          marginRight: 20
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.container
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$3.section, fonts.bold, {
          color: themeColors.primary
        }]
      }, I18n__default['default'].t("prixa.orderInfo"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.statusContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        disabled: !claimId || data.patientClass.toLowerCase() !== "group",
        onPress: function onPress() {
          var onDestinationChange = _this2.props.onDestinationChange;
          onDestinationChange("geniclick://claim/" + claimId);
        },
        style: {
          backgroundColor: claimId && data.patientClass.toLowerCase() === "group" ? staticColors.forestFern : '#F2F2F2',
          flexDirection: "row",
          justifyContent: "center",
          alignItems: "center",
          paddingVertical: 8,
          paddingHorizontal: 16,
          borderRadius: 30
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [fonts.bold, {
          color: staticColors.white,
          textAlign: "center",
          fontSize: 10,
          textTransform: "uppercase"
        }]
      }, I18n__default['default'].t("prixa.prescriptionClaim"))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$3.container, styles$3.containerBorder]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.detailFullContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.lifepackSubscriptionId")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.lifepackSubscriptionId))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.prescriptionNoAlt")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.prescriptionNo))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.redeemDate")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.redeemDate))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.prescriptionDate")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.prescriptionDate))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.prescriptionPatient")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.patientName)))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$3.section, fonts.bold, {
          color: themeColors.primary
        }]
      }, I18n__default['default'].t("prixa.prescriptionDelivery"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$3.container, styles$3.containerBorder]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.detailContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$3.regularBold, {
          textTransform: "capitalize"
        }]
      }, detail.order_status || "-")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.statusContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        style: {
          backgroundColor: staticColors.forestFern,
          flexDirection: "row",
          justifyContent: "center",
          alignItems: "center",
          paddingVertical: 8,
          paddingHorizontal: 16,
          marginBottom: 8,
          borderRadius: 30
        },
        onPress: function onPress() {
          var detail = _this2.props.detail;
          var _navigation$state$par = navigation.state.params,
              cardNumber = _navigation$state$par.cardNumber,
              fullName = _navigation$state$par.fullName,
              gender = _navigation$state$par.gender;
          navigation.navigate("PrescriptionHistoryDetailStatus", {
            data: detail.prescription_order_histories,
            cardNumber: cardNumber,
            fullName: fullName,
            gender: gender
          });
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [fonts.bold, {
          color: staticColors.white,
          textAlign: "center",
          fontSize: 10,
          textTransform: "uppercase"
        }]
      }, I18n__default['default'].t("prixa.prescriptionDeliveryView")))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$3.section, fonts.bold, {
          color: themeColors.primary
        }]
      }, I18n__default['default'].t("prixa.prescriptionPayment"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$3.container, styles$3.containerBorder]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.detailFullContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.paymentContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.paymentLabel
      }, I18n__default['default'].t("prixa.prescriptionPaymentMedicine")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({}, styles$3.paymentText)
      }, currencyFormatter(payments.subtotal_price)))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.paymentContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.paymentLabel
      }, I18n__default['default'].t("prixa.prescriptionPaymentDelivery")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({}, styles$3.paymentText)
      }, currencyFormatter(payments.delivery_price)))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.paymentContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({}, styles$3.paymentLabel, fonts.bold, {
          color: themeColors.primary
        })
      }, I18n__default['default'].t("prixa.prescriptionPaymentTotal")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({}, styles$3.regularBold, {
          color: themeColors.primary
        })
      }, currencyFormatter(payments.total_price))))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [styles$3.section, fonts.bold, {
          color: themeColors.primary
        }]
      }, I18n__default['default'].t("prixa.prescriptionDeliveryDetail"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: [styles$3.container]
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.detailFullContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.prescriptionDeliveryDetailRecipientName")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, data.patientName))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.cellphoneNumber")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.regularBold
      }, detail.patient_phone || "-"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: styles$3.itemContainer
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.labelRegular
      }, "" + I18n__default['default'].t("prixa.addressDelivery")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$3.addressText
      }, address || "-"))))))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          marginTop: 30,
          flexDirection: "row",
          alignItems: "center",
          backgroundColor: staticColors.forestFern
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: !!invoiceUrl ? themeColors.darkerPrimary : staticColors.grey,
          height: 60,
          width: "50%",
          flexDirection: "row",
          justifyContent: "center",
          alignItems: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        disabled: !invoiceUrl,
        onPress: function onPress() {
          reactNative.Linking.openURL(invoiceUrl);
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [fonts.bold, {
          color: staticColors.white,
          textAlign: "center",
          fontSize: 15,
          textTransform: "capitalize"
        }]
      }, I18n__default['default'].t("prixa.prescriptionPaymentDownload")))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: !!prescriptionUrl ? staticColors.forestFern : '#C0C0C0',
          height: 60,
          width: "50%",
          flexDirection: "row",
          justifyContent: "center",
          alignItems: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
        disabled: !prescriptionUrl,
        onPress: function onPress() {
          reactNative.Linking.openURL(prescriptionUrl);
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [fonts.bold, {
          color: staticColors.white,
          textAlign: "center",
          fontSize: 15,
          textTransform: "capitalize"
        }]
      }, I18n__default['default'].t("prixa.prescriptionDownload"))))));
    };

    return PrescriptionHistoryItemDetail;
  }(React__default['default'].Component);

  _defineProperty(PrescriptionHistoryItemDetail, "propTypes", {
    data: PropTypes__default['default'].shape({
      prescriptionNo: PropTypes__default['default'].string,
      lifepackSubscriptionId: PropTypes__default['default'].string,
      patientName: PropTypes__default['default'].string.isRequired,
      prescriptionDate: PropTypes__default['default'].string,
      redeemDate: PropTypes__default['default'].string
    }),
    detail: PropTypes__default['default'].object.isRequired,
    navigation: PropTypes__default['default'].object.isRequired,
    onDestinationChange: PropTypes__default['default'].func
  });

  _defineProperty(PrescriptionHistoryItemDetail, "defaultProps", {
    onDestinationChange: function onDestinationChange() {
      console.log("onDestinationChange is not implemented!");
    }
  });

  var styles$3 = reactNative.StyleSheet.create({
    container: {
      alignItems: "center",
      flexDirection: "row",
      paddingTop: 8
    },
    containerBorder: {
      borderBottomColor: staticColors.grey,
      borderBottomWidth: 1,
      paddingBottom: 16
    },
    buttonContainer: {
      alignItems: "center",
      justifyContent: "center",
      flexDirection: "row"
    },
    detailFullContainer: {
      flexDirection: "column"
    },
    detailContainer: {
      flex: 0.6,
      flexDirection: "column"
    },
    bulletContainer: {
      width: 10
    },
    itemContainer: {
      flexDirection: "row",
      alignItems: "flex-start",
      justifyContent: "flex-start",
      marginBottom: 10
    },
    paymentContainer: {
      alignItems: "center",
      justifyContent: "space-between",
      flexDirection: "row",
      width: "100%"
    },
    statusContainer: {
      flex: 0.4,
      flexDirection: "column",
      alignItems: "flex-end",
      justifyContent: "space-between"
    },
    section: _extends({
      fontSize: 16
    }, fonts.regular),
    paymentText: _extends({
      fontSize: 12,
      marginVertical: 1
    }, fonts.bold, {
      textAlign: "right"
    }),
    paymentLabel: {
      fontSize: 12,
      textAlign: "right"
    },
    regularBig: _extends({
      fontSize: 14
    }, fonts.regular),
    regularBold: _extends({
      fontSize: 12,
      color: '#000',
      marginVertical: 2
    }, fonts.bold),
    labelRegular: {
      fontSize: 11,
      marginVertical: 2,
      color: staticColors.grey
    },
    addressText: _extends({
      fontSize: 12
    }, fonts.bold, {
      flex: 1,
      flexWrap: "wrap",
      marginRight: 5
    })
  });
  var PrescriptionHistoryItemDetail$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryItemDetail);

  var PrescriptionHistoryDetailScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(PrescriptionHistoryDetailScreen, _Component);

    function PrescriptionHistoryDetailScreen(props) {
      var _this;

      _this = _Component.call(this, props) || this;
      _this.state = {
        isLoading: false,
        refreshing: false,
        data: {}
      };
      return _this;
    }

    var _proto = PrescriptionHistoryDetailScreen.prototype;

    _proto.fetchPrescriptionHistoryDetail = /*#__PURE__*/function () {
      var _fetchPrescriptionHistoryDetail = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(isInitializing) {
        var id, _yield$API$get, data;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                if (!isInitializing) {
                  this.setState({
                    refreshing: true
                  });
                }

                id = this.props.navigation.state.params.data.id;
                _context.next = 4;
                return API.get(APP_BASE_URL + "/v2/prescription/" + id);

              case 4:
                _yield$API$get = _context.sent;
                data = _yield$API$get.data.data;
                this.setState({
                  data: data
                });
                this.setState({
                  refreshing: false
                });

              case 8:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function fetchPrescriptionHistoryDetail(_x) {
        return _fetchPrescriptionHistoryDetail.apply(this, arguments);
      }

      return fetchPrescriptionHistoryDetail;
    }();

    _proto.componentDidMount = /*#__PURE__*/function () {
      var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
        return regeneratorRuntime.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                this.setState({
                  isLoading: true
                });
                _context2.next = 3;
                return this.fetchPrescriptionHistoryDetail(true);

              case 3:
                this.setState({
                  isLoading: false
                });

              case 4:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this);
      }));

      function componentDidMount() {
        return _componentDidMount.apply(this, arguments);
      }

      return componentDidMount;
    }();

    _proto.render = function render() {
      var _this2 = this;

      var data = this.props.navigation.state.params.data;
      var detail = this.state.data;
      return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
        ref: function ref(_ref2) {
          _this2.scrollRef = _ref2;
        },
        backgroundColor: this.props.themeColors.primary,
        parallaxHeaderHeight: 200,
        refreshControl: /*#__PURE__*/React__default['default'].createElement(reactNative.RefreshControl, {
          refreshing: this.state.refreshing,
          onRefresh: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
            return regeneratorRuntime.wrap(function _callee3$(_context3) {
              while (1) {
                switch (_context3.prev = _context3.next) {
                  case 0:
                    _context3.next = 2;
                    return _this2.fetchPrescriptionHistoryDetail();

                  case 2:
                    return _context3.abrupt("return", _context3.sent);

                  case 3:
                  case "end":
                    return _context3.stop();
                }
              }
            }, _callee3);
          }))
        }),
        renderForeground: function renderForeground() {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
            onPress: function onPress() {
              _this2.props.navigation.goBack();
            },
            position: "start",
            text: "Kembali",
            theme: "light"
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              flexDirection: "row",
              alignItems: "center",
              padding: 20
            }
          }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
            cardNumber: _this2.props.navigation.state.params.cardNumber,
            fullName: _this2.props.navigation.state.params.fullName,
            gender: _this2.props.navigation.state.params.gender
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            style: {
              marginStart: 20
            },
            onPress: function onPress() {
              return _this2.scrollRef.scrollTo({
                x: 0,
                y: 500
              });
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
            source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
          }))));
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary
        }
      }, this.state.isLoading ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          paddingTop: 64
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          flex: 1,
          justifyContent: "center"
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
        size: "large",
        color: this.props.themeColors.primary
      }))) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          paddingTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 20
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          alignSelf: "center",
          marginBottom: 30
        })
      }, "Detail Pesanan"), /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryItemDetail$1, {
        data: data,
        navigation: this.props.navigation,
        detail: detail,
        onDestinationChange: this.props.screenProps.onDestinationChange
      }))));
    };

    return PrescriptionHistoryDetailScreen;
  }(React.Component);

  var PrescriptionHistoryDetailScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryDetailScreen);

  var PrescriptionHistoryOrderStatusDetail = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(PrescriptionHistoryOrderStatusDetail, _React$Component);

    function PrescriptionHistoryOrderStatusDetail() {
      return _React$Component.apply(this, arguments) || this;
    }

    var _proto = PrescriptionHistoryOrderStatusDetail.prototype;

    _proto.render = function render() {
      var _this$props = this.props,
          date = _this$props.date,
          status = _this$props.status,
          isLargeDetail = _this$props.isLargeDetail,
          rejectReason = _this$props.rejectReason;
      return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: [isLargeDetail ? styles$2.sectionLarge : styles$2.section, {
          textTransform: "uppercase"
        }]
      }, status), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: isLargeDetail ? styles$2.timestampLarge : styles$2.timestamp
      }, I18n__default['default'].l("date.prixa.default", date) + " jam " + I18n__default['default'].l("time.prixa.default", date)), status.toLowerCase() === "resep ditolak" && /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: styles$2.section
      }, "" + I18n__default['default'].t("prixa.prescriptionRejectReason", {
        reason: rejectReason.toLowerCase() || ""
      })));
    };

    return PrescriptionHistoryOrderStatusDetail;
  }(React__default['default'].Component);

  _defineProperty(PrescriptionHistoryOrderStatusDetail, "propTypes", {
    date: PropTypes__default['default'].instanceOf(Date).isRequired,
    status: PropTypes__default['default'].string.isRequired,
    isLargeDetail: PropTypes__default['default'].bool,
    rejectReason: PropTypes__default['default'].string
  });

  var styles$2 = reactNative.StyleSheet.create({
    sectionLarge: _extends({
      fontSize: 16
    }, fonts.bold),
    section: _extends({
      fontSize: 14
    }, fonts.bold),
    timestamp: _extends({
      fontSize: 12
    }, fonts.regular),
    timestampLarge: _extends({
      fontSize: 14
    }, fonts.regular)
  });
  var PrescriptionHistoryOrderStatusDetail$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryOrderStatusDetail);

  var PrescriptionHistoryDetailStatusScreen = /*#__PURE__*/function (_Component) {
    _inheritsLoose(PrescriptionHistoryDetailStatusScreen, _Component);

    function PrescriptionHistoryDetailStatusScreen(props) {
      return _Component.call(this, props) || this;
    }

    var _proto = PrescriptionHistoryDetailStatusScreen.prototype;

    _proto.render = function render() {
      var _this = this;

      var data = this.props.navigation.state.params.data;
      return /*#__PURE__*/React__default['default'].createElement(ParallaxScrollView__default['default'], {
        ref: function ref(_ref) {
          _this.scrollRef = _ref;
        },
        backgroundColor: this.props.themeColors.primary,
        parallaxHeaderHeight: 200,
        renderForeground: function renderForeground() {
          return /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(Header, {
            onPress: function onPress() {
              _this.props.navigation.goBack();
            },
            position: "start",
            text: "Kembali",
            theme: "light"
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
            style: {
              flexDirection: "row",
              alignItems: "center",
              padding: 20
            }
          }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
            cardNumber: _this.props.navigation.state.params.cardNumber,
            fullName: _this.props.navigation.state.params.fullName,
            gender: _this.props.navigation.state.params.gender
          }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
            style: {
              marginStart: 20
            },
            onPress: function onPress() {
              return _this.scrollRef.scrollTo({
                x: 0,
                y: 500
              });
            }
          }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
            source: require("../assets/baseline_keyboard_arrow_up_white_18dp.png")
          }))));
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: this.props.themeColors.primary
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
        style: {
          backgroundColor: "#FFF",
          borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
          paddingTop: 16
        }
      }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
        style: _extends({
          fontSize: 20
        }, fonts.bold, {
          color: this.props.themeColors.darkestPrimary,
          alignSelf: "center",
          marginBottom: 30
        })
      }, "DETAIL STATUS PESANAN"), /*#__PURE__*/React__default['default'].createElement(Timeline__default['default'], {
        innerCircle: "icon",
        circleColor: this.props.themeColors.lighterPrimary,
        lineColor: this.props.themeColors.primary,
        data: data,
        detailContainerStyle: {
          marginTop: -13,
          marginBottom: 13
        },
        listViewContainerStyle: {
          marginLeft: 12,
          marginRight: 32
        },
        renderDetail: function renderDetail(rowData, rowID) {
          return /*#__PURE__*/React__default['default'].createElement(PrescriptionHistoryOrderStatusDetail$1, {
            date: moment__default['default'](rowData.timestamp).toDate(),
            status: rowData.status,
            isLargeDetail: rowID === 0,
            rejectReason: rowData.reject_reason
          });
        },
        showTime: false
      }))));
    };

    return PrescriptionHistoryDetailStatusScreen;
  }(React.Component);

  var PrescriptionHistoryDetailStatusScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(PrescriptionHistoryDetailStatusScreen);

  /* SVGR has dropped some elements not supported by react-native-svg: style */

  function EnlargeIcon(props) {
    return /*#__PURE__*/React.createElement(Svg__default['default'], _extends({
      viewBox: "0 0 166.52 166.02"
    }, props), /*#__PURE__*/React.createElement(Svg.Defs, null), /*#__PURE__*/React.createElement(Svg.G, {
      id: "prefix__Layer_2",
      "data-name": "Layer 2"
    }, /*#__PURE__*/React.createElement(Svg.G, {
      id: "prefix__Layer_1-2",
      "data-name": "Layer 1"
    }, /*#__PURE__*/React.createElement(Svg.Path, {
      className: "prefix__cls-1",
      d: "M123 63.18A59.82 59.82 0 1163.18 3.36 59.82 59.82 0 01123 63.18z"
    }), /*#__PURE__*/React.createElement(Svg.Path, {
      className: "prefix__cls-1",
      d: "M99.34 110.64l51.47 52.01 12.35-12.71-51.53-51.69M63.18 33.1v60.16M33.1 63.18h60.16"
    }))));
  }

  function DownloadIcon(props) {
    return /*#__PURE__*/React.createElement(Svg__default['default'], _extends({
      viewBox: "0 0 206.34 166.13"
    }, props), /*#__PURE__*/React.createElement(Svg.Defs, null), /*#__PURE__*/React.createElement(Svg.G, {
      id: "prefix__Layer_2",
      "data-name": "Layer 2"
    }, /*#__PURE__*/React.createElement(Svg.G, {
      id: "prefix__Layer_1-2",
      "data-name": "Layer 1"
    }, /*#__PURE__*/React.createElement(Svg.Path, {
      className: "prefix__cls-1",
      d: "M103.09 90.93V3.36M63.85 83.13L98.28 121a8 8 0 0011.33 0L143 83.13"
    }), /*#__PURE__*/React.createElement(Svg.Path, {
      className: "prefix__cls-1",
      d: "M3.36 103.28v51.46a8.06 8.06 0 008 8H194.9a8.07 8.07 0 008.08-8v-51.46"
    }))));
  }

  var _this = undefined;

  var _Dimensions$get$1 = reactNative.Dimensions.get("window"),
      width = _Dimensions$get$1.width,
      height$1 = _Dimensions$get$1.height;

  var PrescriptionDetailScreen = function PrescriptionDetailScreen(props) {
    var _useState = React.useState(""),
        activeImage = _useState[0],
        setActiveImage = _useState[1];

    var _useState2 = React.useState(""),
        prescriptionImg = _useState2[0],
        setPrescriptionImg = _useState2[1];

    var _useState3 = React.useState(""),
        adjustedPrescriptionImg = _useState3[0],
        setAdjustedPrescriptionImg = _useState3[1];

    var _useState4 = React.useState(false),
        isZoomIn = _useState4[0],
        setIsZoomIn = _useState4[1];

    var _useState5 = React.useState(false),
        isDownloading = _useState5[0],
        setIsDownloading = _useState5[1];

    var _useState6 = React.useState(false),
        isPrescriptionAlreadyRedeemed = _useState6[0],
        setIsPrescriptionAlreadyRedeemed = _useState6[1];

    var _useState7 = React.useState(false),
        isPrescriptionEligible = _useState7[0],
        setIsPrescriptionEligible = _useState7[1];

    var _useState8 = React.useState(true),
        isLoadingPrescriptionData = _useState8[0],
        setIsLoadingPrescriptionData = _useState8[1];

    var _useState9 = React.useState(false),
        isPrescriptionLoadedSuccessfully = _useState9[0],
        setIsPrescriptionLoadedSuccessfully = _useState9[1];

    var _useState10 = React.useState(false),
        isPrescImgSelected = _useState10[0],
        setIsPrescImgSelected = _useState10[1];

    var _useState11 = React.useState(false),
        isAdjustedPrescImgSelected = _useState11[0],
        setIsAdjustedPrescImgSelected = _useState11[1];

    var _useState12 = React.useState(false),
        activeImageError = _useState12[0],
        setActiveImageError = _useState12[1];

    React.useEffect(function () {
      fetchPrescription();
    }, []);
    React.useEffect(function () {
      if (prescriptionImg) {
        setIsPrescImgSelected(true);
        reactNative.Image.getSize(prescriptionImg, function (width, height) {
          console.log("valid prescriptionImg", {
            width: width,
            height: height
          });
          setActiveImage(prescriptionImg);
        }, function (error) {
          setPrescriptionImg("invalid prescriptionImg", {
            error: error
          });
          setIsLoadingPrescriptionData(false);
          setActiveImageError(true);
        });
      }
    }, [prescriptionImg]);
    React.useEffect(function () {
      if (adjustedPrescriptionImg) {
        reactNative.Image.getSize(adjustedPrescriptionImg, function (width, height) {
          console.log("valid adjustedPrescriptionImg", {
            width: width,
            height: height
          });
        }, function (error) {
          setAdjustedPrescriptionImg("invalid adjustedPrescriptionImg", {
            error: error
          });
        });
      }
    }, [adjustedPrescriptionImg]);

    var fetchPrescription = /*#__PURE__*/function () {
      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var prescriptionId, _yield$API$get, prescription;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                prescriptionId = props.navigation.state.params.prescriptionId;
                _context.next = 3;
                return API.get(APP_BASE_URL + "/v2/prescription/" + prescriptionId);

              case 3:
                _yield$API$get = _context.sent;
                prescription = _yield$API$get.data.data;
                setPrescriptionImg(prescription.img_url);
                setIsPrescriptionAlreadyRedeemed(prescription.order_status !== null ? true : false);
                setIsPrescriptionEligible(!!prescription.is_eligible);

                if (prescription.has_prescription_adjustment === 1) {
                  setAdjustedPrescriptionImg(prescription.adjusted_img_url);
                }

              case 9:
              case "end":
                return _context.stop();
            }
          }
        }, _callee);
      }));

      return function fetchPrescription() {
        return _ref.apply(this, arguments);
      };
    }();

    var showZoomIn = function showZoomIn() {
      if (activeImage) {
        setIsZoomIn(true);
      } else {
        reactNative.Alert.alert("Kesalahan", "Invalid Image Url");
      }
    };

    var dismissZoomIn = function dismissZoomIn() {
      setIsZoomIn(false);
    };

    var onBackButtonPressed = function onBackButtonPressed() {
      props.navigation.navigate("PrescriptionHistory");
    };

    var onRedeemButtonPressed = function onRedeemButtonPressed() {
      var _props$navigation$sta = props.navigation.state.params,
          prescriptionId = _props$navigation$sta.prescriptionId,
          customerName = _props$navigation$sta.customerName,
          patientName = _props$navigation$sta.patientName,
          cardNumber = _props$navigation$sta.cardNumber,
          gender = _props$navigation$sta.gender,
          pharmacy = _props$navigation$sta.pharmacy;

      if (isPrescriptionAlreadyRedeemed) {
        reactNative.Alert.alert("Kesalahan", "Resep sudah ditebus");
      } else if (!isPrescriptionEligible) {
        reactNative.Alert.alert("Resep tidak dapat ditebus", "Mohon maaf, resep hanya dapat ditebus maksimal 7 hari setelah konsultasi");
      } else {
        props.navigation.navigate("OrderMedicine", {
          prescriptionId: prescriptionId,
          customerName: customerName,
          // this is used for avatar display
          patientName: patientName,
          // this is patient name used for prescription
          cardNumber: cardNumber,
          gender: gender,
          pharmacy: pharmacy
        });
      }
    };

    var changeImage = function changeImage(imageUrl, buttonSelected) {
      if (buttonSelected === "adjustedButton") {
        setIsAdjustedPrescImgSelected(true);
        setIsPrescImgSelected(false);
      } else {
        setIsAdjustedPrescImgSelected(false);
        setIsPrescImgSelected(true);
      }

      if (imageUrl === "invalid image") {
        setActiveImage();
        setActiveImageError(true);
      } else {
        setActiveImage();
        setActiveImageError();
        setActiveImage(imageUrl);
      }
    };

    var onDownloadButtonPressed = function onDownloadButtonPressed() {
      if (activeImage) {
        setIsDownloading(true);
        savePrescription(activeImage).then(function (x) {
          setIsDownloading(false);
        });
      } else {
        reactNative.Alert.alert("Kesalahan", "Resep tidak dapat diunduh.");
      }
    };

    var onLoadEnd = function onLoadEnd() {
      setIsLoadingPrescriptionData(false);
      setIsPrescriptionLoadedSuccessfully(true);
    };

    return /*#__PURE__*/React__default['default'].createElement(reactNative.ScrollView, {
      style: {
        flex: 1
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: props.themeColors.primary
      }
    }, /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: isZoomIn,
      backdropColor: "grey",
      onBackButtonPress: dismissZoomIn,
      onBackdropPress: dismissZoomIn,
      useNativeDriver: true
    }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
      alignSelf: "center",
      source: {
        uri: activeImage
      },
      width: width
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.header
    }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
      cardNumber: props.navigation.state.params.cardNumber,
      fullName: props.navigation.state.params.customerName,
      gender: props.navigation.state.params.gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        marginStart: 20
      },
      onPress: function onPress() {
        return _this.scrollRef.scrollTo({
          x: 0,
          y: 500
        });
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: 10,
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$1.prescriptionTitle
    }, "RESEP OBAT")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$1.containerImageFeatures, {
        marginRight: 20
      }]
    }, adjustedPrescriptionImg ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.containerImageFeatures
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$1.menu, styles$1.buttonMenu, {
        marginRight: 15
      }, isPrescImgSelected ? {
        backgroundColor: props.themeColors.primary
      } : styles$1.buttonMenuDisable]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return changeImage(prescriptionImg, "");
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$1.textButton, {
        fontSize: 12
      }]
    }, "RESEP AWAL"))), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles$1.menu, styles$1.buttonMenu, isAdjustedPrescImgSelected ? {
        backgroundColor: props.themeColors.primary
      } : styles$1.buttonMenuDisable]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        return changeImage(adjustedPrescriptionImg, "adjustedButton");
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: [styles$1.textButton, {
        fontSize: 12
      }]
    }, "RESEP BARU")))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: showZoomIn
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.menu
    }, /*#__PURE__*/React__default['default'].createElement(EnlargeIcon, {
      fill: "none",
      stroke: props.themeColors.primary,
      strokeWidth: "12",
      style: styles$1.imageFeature
    }))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onDownloadButtonPressed
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.menu
    }, isDownloading ? /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: props.themeColors.primary
    }) : /*#__PURE__*/React__default['default'].createElement(DownloadIcon, {
      fill: "none",
      stroke: props.themeColors.primary,
      strokeWidth: "19",
      style: styles$1.imageFeature
    })))), isLoadingPrescriptionData ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: height$1 * 0.2,
        alignItems: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: props.themeColors.primary
    })) : null, activeImage ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.containerImage
    }, /*#__PURE__*/React__default['default'].createElement(AutoHeightImage__default['default'], {
      source: {
        uri: activeImage
      },
      width: isAdjustedPrescImgSelected ? reactNative.Dimensions.get("window").width * 0.9 : reactNative.Dimensions.get("window").width,
      fadeDuration: 1000,
      onLoadEnd: onLoadEnd
    })), isPrescriptionLoadedSuccessfully ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.imageNote
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, "Resep hanya bisa ditebus satu kali")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.containerListButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onBackButtonPressed,
      style: {
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.containerButton
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$1.textButton
    }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onRedeemButtonPressed,
      style: {
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [isPrescriptionAlreadyRedeemed || !isPrescriptionEligible ? styles$1.redeemButtonDisabled : styles$1.redeemButtonEnabled]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles$1.textButton
    }, "TEBUS RESEP"))))) : null) : null, activeImageError ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: 10,
        alignSelf: "center",
        marginBottom: 30
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/fail.png"),
      style: styles$1.iconFail
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles$1.imageNote
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, null, "Data resep gagal dimuat"))) : null)));
  };

  var styles$1 = reactNative.StyleSheet.create({
    header: {
      flexDirection: "row",
      alignItems: "center",
      padding: 20
    },
    prescriptionTitle: _extends({
      fontSize: 24
    }, fonts.bold, {
      color: "#000",
      width: 250,
      textAlign: "center",
      paddingVertical: 16
    }),
    containerImageFeatures: {
      flexDirection: "row",
      justifyContent: "flex-end",
      marginBottom: 10
    },
    imageFeature: {
      width: 25,
      height: 27,
      marginRight: 20
    },
    containerImage: {
      marginRight: 30,
      marginLeft: 30,
      alignSelf: "center"
    },
    imageNote: {
      alignSelf: "center",
      marginVertical: 20
    },
    containerListButton: {
      flexDirection: "row",
      justifyContent: "space-between",
      marginBottom: 10
    },
    containerButton: {
      borderRadius: 30,
      alignSelf: "flex-start",
      backgroundColor: staticColors.red,
      paddingVertical: 10,
      paddingHorizontal: 35,
      marginLeft: width * 0.1
    },
    textButton: _extends({}, fonts.bold, {
      color: "#FFF",
      textAlign: "center"
    }),
    redeemButtonEnabled: {
      borderRadius: 30,
      alignSelf: "flex-start",
      backgroundColor: staticColors.forestFern,
      paddingVertical: 10,
      paddingHorizontal: 30,
      marginRight: width * 0.1
    },
    redeemButtonDisabled: {
      borderRadius: 30,
      alignSelf: "flex-start",
      backgroundColor: staticColors.grey,
      paddingVertical: 10,
      paddingHorizontal: 30,
      marginRight: width * 0.1
    },
    iconFail: {
      width: 250,
      height: 250,
      alignSelf: "center",
      marginTop: 40,
      marginBottom: 10
    },
    menu: {
      borderRadius: 30,
      alignSelf: "center",
      paddingVertical: 3
    },
    buttonMenu: {
      paddingHorizontal: 15,
      marginRight: 10,
      marginTop: 5
    },
    buttonMenuDisable: {
      backgroundColor: staticColors.grey
    }
  });
  var PrescriptionDetailScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors,
      token: state.token
    };
  })(PrescriptionDetailScreen);

  var _Dimensions$get = reactNative.Dimensions.get("window");
      _Dimensions$get.width;
      var height = _Dimensions$get.height;

  var OrderMedicineScreen = function OrderMedicineScreen(props) {
    var _useState = React.useState([]),
        fulfillmentCenters = _useState[0],
        setFulfillmentCenters = _useState[1];

    var _useState2 = React.useState(""),
        phone = _useState2[0],
        setPhone = _useState2[1];

    var _useState3 = React.useState(""),
        fulfillmentCenterId = _useState3[0],
        setFulfillmentCenterId = _useState3[1];

    var _useState4 = React.useState(""),
        fulfillmentCenterName = _useState4[0],
        setFulfillmentCenterName = _useState4[1];

    var _useState5 = React.useState(""),
        pharmacyName = _useState5[0],
        setPharmacyName = _useState5[1];

    var _useState6 = React.useState(false),
        isWaitingResponse = _useState6[0],
        setIsWaitingResponse = _useState6[1];

    var _useState7 = React.useState(false),
        isPatientDataModalVisible = _useState7[0],
        setIsPatientDataModalVisible = _useState7[1];

    var _useState8 = React.useState(false),
        isSuccessModalVisible = _useState8[0],
        setIsSuccessModalVisible = _useState8[1];

    var _useState9 = React.useState(false),
        isFailModalVisible = _useState9[0],
        setIsFailModalVisible = _useState9[1];

    var _useState10 = React.useState(false),
        hasErrorPhoneNumber = _useState10[0],
        setHasErrorPhoneNumber = _useState10[1];

    var _useState11 = React.useState(""),
        descErrorPhoneNumber = _useState11[0],
        setDescErrorPhoneNumber = _useState11[1];

    var _useState12 = React.useState(false),
        hasErrorFulfillmentCenter = _useState12[0],
        setHasErrorFulfillmentCenter = _useState12[1];

    var _useState13 = React.useState(""),
        descErrorFulfillmentCenter = _useState13[0],
        setDescErrorFulfillmentCenter = _useState13[1];

    React.useEffect(function () {
      var pharmacy = props.navigation.state.params.pharmacy;
      setPharmacyName(pharmacy.pharmacy_name);

      if (pharmacy.pharmacy_name === "Lifepack") {
        buildLifepackFulfillmentCenter(pharmacy.fulfillment_center);
      } else if (pharmacy.pharmacy_name === "Siloam") {
        buildSiloamFulfillmentCenter(pharmacy.fulfillment_center);
      } else ;
    }, []);
    React.useEffect(function () {
      var pharmacy = props.navigation.state.params.pharmacy;
      setPharmacyName(pharmacy.pharmacy_name);

      if (pharmacy.pharmacy_name === "Lifepack") {
        buildLifepackFulfillmentCenter(pharmacy.fulfillment_center);
      } else if (pharmacy.pharmacy_name === "Siloam") {
        buildSiloamFulfillmentCenter(pharmacy.fulfillment_center);
      } else ;
    }, []);

    var onBackButtonPressed = function onBackButtonPressed() {
      props.navigation.navigate("PrescriptionDetail");
    };

    var onOrderNowButtonPressed = function onOrderNowButtonPressed() {
      var isPhoneValid = isPhoneNumberValid();
      var isFlfillmentCenterValid = isFulfillmentCenterValid();

      if (isPhoneValid && isFlfillmentCenterValid) {
        setIsPatientDataModalVisible(true);
      }
    };

    var isPhoneNumberValid = function isPhoneNumberValid() {
      var valid = false;
      var regex = /^(08\d{8,10})$|(\+62\d{9,11})$/;

      if (phone == "") {
        setHasErrorPhoneNumber(true);
        setDescErrorPhoneNumber("Nomor HP tidak boleh kosong");
      } else if (isNaN(phone)) {
        setHasErrorPhoneNumber(true);
        setDescErrorPhoneNumber("Nomor HP harus angka");
      } else if (regex.test(phone) === false) {
        setHasErrorPhoneNumber(true);
        setDescErrorPhoneNumber("Format nomor HP salah");
      } else {
        valid = true;
        setHasErrorPhoneNumber(false);
        setDescErrorPhoneNumber("");
      }

      return valid;
    };

    var isFulfillmentCenterValid = function isFulfillmentCenterValid() {
      var valid = false;
      var foundMatchFC = findFulfillmentCenter(fulfillmentCenterId);

      if (fulfillmentCenterId == "" || fulfillmentCenterName == "") {
        setHasErrorFulfillmentCenter(true);
        setDescErrorFulfillmentCenter("Lokasi tidak boleh kosong");
      } else if (foundMatchFC <= 0) {
        setHasErrorFulfillmentCenter(true);
        setDescErrorFulfillmentCenter("Lokasi tidak ditemukan");
      } else {
        valid = true;
        setHasErrorFulfillmentCenter(false);
        setDescErrorFulfillmentCenter("");
      }

      return valid;
    };

    var buildSiloamFulfillmentCenter = function buildSiloamFulfillmentCenter(fulfillmentCenters) {
      var listFulfillmentCenters = [];

      ___default['default'].each(fulfillmentCenters, function (item) {
        var _ref, _item$city;

        listFulfillmentCenters.push({
          id: item.id,
          name: (_ref = item.name + " - " + ((_item$city = item.city) == null ? void 0 : _item$city.name)) != null ? _ref : null
        });
      });

      setFulfillmentCenters(listFulfillmentCenters);
    };

    var buildLifepackFulfillmentCenter = function buildLifepackFulfillmentCenter(fulfillmentCenters) {
      var listFulfillmentCenters = [];

      ___default['default'].each(fulfillmentCenters, function (item) {
        listFulfillmentCenters.push({
          id: item.id,
          name: item.name
        });
      });

      setFulfillmentCenters(listFulfillmentCenters);
    };

    var onProcessOrderButtonPressed = function onProcessOrderButtonPressed() {
      setIsPatientDataModalVisible(false);
      submitOrderPrescription();
    };

    var onSubmitOrderPrescriptionSuccess = function onSubmitOrderPrescriptionSuccess() {
      setIsSuccessModalVisible(true);
    };

    var onSubmitOrderPrescriptionFail = function onSubmitOrderPrescriptionFail() {
      setIsFailModalVisible(true);
    };

    var onRetrySubmitOrderPrescription = function onRetrySubmitOrderPrescription() {
      setIsFailModalVisible(false);
      submitOrderPrescription();
    };

    var submitOrderPrescription = function submitOrderPrescription() {
      setIsWaitingResponse(true);
      sendOrderPrescriptionToServer();
    };

    var sendOrderPrescriptionToServer = /*#__PURE__*/function () {
      var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var prescriptionId, payload, _yield$API$post, _yield$API$post$data, prescriptionOrder, status;

        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                prescriptionId = props.navigation.state.params.prescriptionId;
                payload = {
                  phone: phone,
                  fulfillment_center_id: fulfillmentCenterId
                };
                _context.prev = 2;
                _context.next = 5;
                return API.post(APP_BASE_URL + "/v2/prescription/" + prescriptionId + "/order", payload);

              case 5:
                _yield$API$post = _context.sent;
                _yield$API$post$data = _yield$API$post.data;
                prescriptionOrder = _yield$API$post$data.data;
                status = _yield$API$post$data.status;

                if (prescriptionOrder) {
                  if (status === "success") {
                    setTimeout(function () {
                      setIsWaitingResponse(false);
                      onSubmitOrderPrescriptionSuccess();
                    }, 350);
                  } else {
                    setTimeout(function () {
                      setIsWaitingResponse(false);
                      onSubmitOrderPrescriptionFail();
                    }, 350);
                  }
                }

                _context.next = 16;
                break;

              case 12:
                _context.prev = 12;
                _context.t0 = _context["catch"](2);
                setIsWaitingResponse(false);
                console.log((_context.t0 == null ? void 0 : _context.t0.response) || _context.t0);

              case 16:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, null, [[2, 12]]);
      }));

      return function sendOrderPrescriptionToServer() {
        return _ref2.apply(this, arguments);
      };
    }();

    var goDoubleBack = function goDoubleBack() {
      setIsSuccessModalVisible(false);
      props.navigation.navigate("CustomerProfile");
    };

    var onPhoneTextChange = function onPhoneTextChange(phone) {
      setPhone(phone);
      setDescErrorPhoneNumber("");
      setHasErrorPhoneNumber(false);
    };

    var onFulfillmentCenterSelected = function onFulfillmentCenterSelected(fulfillmentCenterId, fulfillmentCenterName) {
      setFulfillmentCenterName(fulfillmentCenterName);
      setFulfillmentCenterId(fulfillmentCenterId);
      setHasErrorFulfillmentCenter(false);
      setDescErrorFulfillmentCenter("");
    };

    var onFulfillmentCenterTextChange = function onFulfillmentCenterTextChange(fulfillmentCenterName) {
      setFulfillmentCenterName(fulfillmentCenterName);
      setHasErrorFulfillmentCenter(false);
      setDescErrorFulfillmentCenter("");
    };

    var findFulfillmentCenter = function findFulfillmentCenter(fulfillmentCenterId) {
      if (fulfillmentCenterId === "") {
        return [];
      }

      return fulfillmentCenters.filter(function (fulfillmentCenter) {
        return fulfillmentCenter.id.search(fulfillmentCenterId) >= 0;
      });
    };

    var closeVerificationModal = function closeVerificationModal() {
      setIsPatientDataModalVisible(false);
    };

    var closeSuccessModal = function closeSuccessModal() {
      setIsSuccessModalVisible(false);
    };

    var closeFailModal = function closeFailModal() {
      setIsFailModalVisible(false);
    };

    var closeLoadingModal = function closeLoadingModal() {
      setIsWaitingResponse(false);
    };

    return /*#__PURE__*/React__default['default'].createElement(reactNative.KeyboardAvoidingView, {
      behavior: "position",
      keyboardVerticalOffset: 50
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableWithoutFeedback, {
      onPress: reactNative.Keyboard.dismiss
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: props.themeColors.primary
      }
    }, isPatientDataModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: true,
      backdropColor: "#515151",
      useNativeDriver: true,
      onModalHide: closeVerificationModal,
      onDismiss: closeVerificationModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerTitleModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.titleVerificationModal
    }, "Apakah Anda yakin data yang dimasukkan sudah benar?"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.bodyVerificationModal
    }, "Dengan menyetujui untuk proses resep, Anda telah melakukan pengecekan data pasien dan detail kontak untuk pengiriman."), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerListButtonsVerificationModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        setIsPatientDataModalVisible(false);
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.buttonModal, {
        backgroundColor: "#E64F4F",
        paddingHorizontal: 25
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonModal
    }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onProcessOrderButtonPressed
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.buttonModal, {
        backgroundColor: "#5DBE66",
        paddingHorizontal: 17
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonModal
    }, "PROSES RESEP")))))) : null, isSuccessModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: true,
      backdropColor: "#515151",
      useNativeDriver: true,
      onModalHide: closeSuccessModal,
      onDismiss: closeSuccessModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerSuccessOrderModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/tick.png"),
      style: styles.imgSuccessOrderModal
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.titleSuccessOrderModal
    }, "Permintaan Resep Berhasil Dikirim"), pharmacyName === "Lifepack" ? /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textBodySuccessOrderModal
    }, "Tim Apoteker kami akan melakukan pengecekan dan mengkonfirmasi melalui push notifikasi. Mohon untuk menunggu beberapa menit.") : /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textBodySuccessOrderModal
    }, "Tim Apoteker kami akan melakukan pengecekan dan mengkonfirmasi pesanan melalui telepon/SMS/Whatsapp."), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerListButtonSuccessOrderModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: goDoubleBack
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.buttonModal, {
        backgroundColor: "#5DBE66",
        paddingHorizontal: 40
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonModal
    }, "SELESAI")))))) : null, isFailModalVisible ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: isFailModalVisible,
      backdropColor: "#515151",
      useNativeDriver: true,
      onModalHide: closeFailModal,
      onDismiss: closeFailModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerFailOrderModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Image, {
      source: require("../assets/icons/fail.png"),
      style: styles.imgFailOrderModal
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.titleFailOrderModal
    }, "Permintaan Resep Gagal Dikirim"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textBodyFailOrderModal
    }, "Silahkan coba kembali dalam beberapa saat"), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerListButtonsFailOrderModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: function onPress() {
        setIsFailModalVisible(false);
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.buttonModal, {
        backgroundColor: "#E64F4F",
        marginLeft: 10,
        paddingHorizontal: 30
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonModal
    }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onRetrySubmitOrderPrescription
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.buttonModal, {
        backgroundColor: "#5DBE66",
        marginRight: 10,
        paddingHorizontal: 25
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonModal
    }, "COBA LAGI")))))) : null, isWaitingResponse ? /*#__PURE__*/React__default['default'].createElement(Modal__default['default'], {
      isVisible: true,
      backdropColor: "#ffffff",
      useNativeDriver: true,
      onModalHide: closeLoadingModal,
      onDismiss: closeLoadingModal
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: [styles.containerTitleModal, {
        backgroundColor: "rgba(0,0,0,0)",
        alignItems: "center"
      }]
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: props.themeColors.primary
    }))) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.header
    }, /*#__PURE__*/React__default['default'].createElement(PatientAvatarWithDetail, {
      cardNumber: props.navigation.state.params.cardNumber,
      fullName: props.navigation.state.params.customerName,
      gender: props.navigation.state.params.gender
    }), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      style: {
        marginStart: 20
      },
      onPress: function onPress() {
        return scrollRef.scrollTo({
          x: 0,
          y: 500
        });
      }
    })), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        backgroundColor: "#FFF",
        borderTopEndRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40,
        borderTopStartRadius: reactNative.Platform.OS === "android" && reactNative.Platform.Version <= 26 ? 0 : 40
      }
    }, fulfillmentCenters.length <= 0 ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: height * 0.3,
        alignItems: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.ActivityIndicator, {
      size: "large",
      color: props.themeColors.primary
    })) : /*#__PURE__*/React__default['default'].createElement(reactNative.View, null, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerTitleOrderMedicine
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textTitleOrderMedicine
    }, "PEMESANAN OBAT")), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerBodyOrderMedicine
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerInfo
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textBodyOrderMedicine
    }, "Mohon untuk melengkapi data dibawah untuk kebutuhan pengiriman obat dan pembayaran.")), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textForm
    }, "Nama Pasien"), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: {
        color: "#000",
        fontSize: 18,
        paddingVertical: 7
      }
    }, props.navigation.state.params.patientName), /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textForm
    }, "Nomor Ponsel"), /*#__PURE__*/React__default['default'].createElement(reactNative.TextInput, {
      style: styles.inputTextForm,
      placeholder: "e.g. 08XXXXXXXXX",
      keyboardType: "phone-pad",
      onChangeText: function onChangeText(phone) {
        return onPhoneTextChange(phone);
      }
    }), hasErrorPhoneNumber ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: 5
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.error
    }, descErrorPhoneNumber)) : null, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textForm
    }, "Lokasi"), /*#__PURE__*/React__default['default'].createElement(SearchableDropdown__default['default'], {
      onTextChange: function onTextChange(text) {
        return onFulfillmentCenterTextChange(text);
      },
      onItemSelect: function onItemSelect(item) {
        return onFulfillmentCenterSelected(item["id"], item["name"]);
      },
      containerStyle: styles.containerDropDown,
      itemStyle: styles.itemDropDown,
      itemTextStyle: styles.itemTextStyleDropDown,
      itemsContainerStyle: {
        maxHeight: 240
      },
      items: fulfillmentCenters,
      textInputProps: {
        placeholder: "e.g DKI JAKARTA",
        underlineColorAndroid: "transparent",
        style: {
          padding: 5,
          borderWidth: 1,
          borderColor: "#ccc",
          borderRadius: 10,
          fontSize: 17,
          height: 40
        }
      },
      resetValue: false,
      underlineColorAndroid: "transparent"
    }), hasErrorFulfillmentCenter ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: 5
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.error
    }, descErrorFulfillmentCenter)) : null, pharmacyName === "Siloam" ? /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: {
        paddingTop: 20
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: {
        color: staticColors.grey,
        fontSize: 15,
        textAlign: "justify"
      }
    }, "Untuk sementara hanya melayani pengantaran pada kota-kota diatas. Untuk daerah lainnya Anda dapat download resep dan menebusnya di apotek yang bekerja sama dengan Mandiri InHealth")) : null), /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.containerListButtonOrderMedicine
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onBackButtonPressed,
      style: {
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.buttonBackOrderMedicine
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonOrderMedicine
    }, "KEMBALI"))), /*#__PURE__*/React__default['default'].createElement(reactNative.TouchableOpacity, {
      onPress: onOrderNowButtonPressed,
      style: {
        alignSelf: "center"
      }
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.View, {
      style: styles.buttonOrderMedicine
    }, /*#__PURE__*/React__default['default'].createElement(reactNative.Text, {
      style: styles.textButtonOrderMedicine
    }, "PESAN SEKARANG")))))))));
  };

  var styles = reactNative.StyleSheet.create({
    header: {
      flexDirection: "row",
      alignItems: "center",
      padding: 20
    },
    containerTitleModal: {
      backgroundColor: "#FFFFFF",
      borderRadius: 40,
      padding: 30
    },
    titleVerificationModal: _extends({
      color: "#808080",
      fontSize: 20
    }, fonts.bold, {
      textAlign: "center"
    }),
    bodyVerificationModal: {
      color: "#808080",
      fontSize: 17,
      textAlign: "center",
      lineHeight: 20,
      marginTop: 30,
      marginVertical: 30
    },
    containerListButtonsVerificationModal: {
      flexDirection: "row",
      justifyContent: "space-between"
    },
    buttonModal: {
      borderRadius: 20,
      paddingVertical: 10
    },
    textButtonModal: _extends({
      color: "#FFFFFF",
      fontSize: 15
    }, fonts.bold),
    containerSuccessOrderModal: {
      backgroundColor: "#FFFFFF",
      borderRadius: 40,
      padding: 15
    },
    imgSuccessOrderModal: {
      width: 100,
      height: 100,
      alignSelf: "center",
      marginTop: 20,
      marginBottom: 10
    },
    titleSuccessOrderModal: _extends({
      color: "#808080",
      fontSize: 18
    }, fonts.bold, {
      textAlign: "center"
    }),
    textBodySuccessOrderModal: {
      color: "#808080",
      fontSize: 16,
      textAlign: "center",
      marginTop: 10
    },
    containerListButtonSuccessOrderModal: {
      alignSelf: "center",
      marginVertical: 15
    },
    containerFailOrderModal: {
      backgroundColor: "#FFFFFF",
      borderRadius: 40,
      padding: 15
    },
    imgFailOrderModal: {
      width: 100,
      height: 100,
      alignSelf: "center",
      marginTop: 20,
      marginBottom: 10
    },
    titleFailOrderModal: _extends({
      color: "#808080",
      fontSize: 20
    }, fonts.bold, {
      textAlign: "center"
    }),
    textBodyFailOrderModal: {
      color: "#808080",
      fontSize: 16,
      textAlign: "center"
    },
    containerListButtonsFailOrderModal: {
      flexDirection: "row",
      justifyContent: "space-between",
      marginVertical: 15
    },
    containerTitleOrderMedicine: {
      paddingTop: 10,
      alignSelf: "center"
    },
    textTitleOrderMedicine: _extends({
      fontSize: 24
    }, fonts.bold, {
      color: "#000",
      width: 250,
      textAlign: "center",
      paddingVertical: 7
    }),
    containerBodyOrderMedicine: {
      paddingVertical: 7,
      marginHorizontal: 20
    },
    containerInfo: {
      paddingBottom: 5
    },
    textBodyOrderMedicine: {
      fontSize: 18,
      color: "#000",
      paddingVertical: 5,
      textAlign: "justify",
      lineHeight: 20,
      letterSpacing: 0.5
    },
    textForm: _extends({
      fontSize: 18
    }, fonts.bold, {
      color: "#000",
      width: 250,
      paddingVertical: 7,
      marginTop: 10
    }),
    inputTextForm: {
      padding: 5,
      height: 40,
      borderColor: "gray",
      borderWidth: 1,
      textAlignVertical: "top",
      fontSize: 18,
      borderRadius: 10,
      textTransform: "uppercase"
    },
    containerListButtonOrderMedicine: {
      flexDirection: "row",
      justifyContent: "space-between",
      marginTop: 30
    },
    buttonBackOrderMedicine: {
      borderRadius: 30,
      alignSelf: "flex-start",
      backgroundColor: staticColors.red,
      paddingVertical: 12,
      paddingHorizontal: 46,
      marginLeft: 20
    },
    buttonOrderMedicine: {
      borderRadius: 30,
      alignSelf: "flex-start",
      backgroundColor: staticColors.forestFern,
      paddingVertical: 12,
      paddingHorizontal: 20,
      marginRight: 20
    },
    textButtonOrderMedicine: _extends({}, fonts.bold, {
      color: "#FFF",
      textAlign: "center"
    }),
    error: {
      color: "red",
      fontSize: 15
    },
    containerDropDown: {
      borderColor: "gray",
      borderWidth: 1,
      fontSize: 18,
      borderRadius: 10,
      textTransform: "uppercase"
    },
    itemDropDown: {
      padding: 10,
      marginTop: 2,
      backgroundColor: "#FAF9F8",
      borderColor: "#bbb",
      borderRadius: 10,
      borderWidth: 1
    },
    itemTextStyleDropDown: {
      color: "#222",
      fontSize: 18
    }
  });
  var OrderMedicineScreen$1 = reactRedux.connect(function (state) {
    return {
      themeColors: state.themeColors
    };
  })(OrderMedicineScreen);

  var routeConfigMap = {
    ask: AskScreen$1,
    intro: IntroScreen$1,
    Children: ChildrenScreen,
    Consent: ConsentScreen$1,
    dependencies: ChildrenScreen,
    CustomerProfile: CustomerProfileScreen$1,
    DoctorProfile: DoctorProfileScreen$1,
    Medical: MedicalScreen$1,
    MedicalCheck: MedicalCheck,
    Rating: RatingScreen$1,
    Symptoms: SymptomsScreen$1,
    symptom: SymptomsScreen$1,
    VideoCall: VideoCallScreen$1,
    AudioCall: AudioCallScreen$1,
    Waiting: WaitingScreen$1,
    PreAssessment: PreAssessmentScreen$1,
    PostAssessment: PostAssessmentScreen$1,
    PrescriptionHistory: PrescriptionHistoryScreen$1,
    PrescriptionHistoryDetail: PrescriptionHistoryDetailScreen$1,
    PrescriptionHistoryDetailStatus: PrescriptionHistoryDetailStatusScreen$1,
    PrescriptionDetail: PrescriptionDetailScreen$1,
    OrderMedicine: OrderMedicineScreen$1
  };
  var stackConfig = {
    headerMode: "none",
    initialRouteName: "CustomerProfile"
  };

  I18n__default['default'].locale = "id";
  I18n__default['default'].translations = internationalizations;
  var PrixaNavigator = reactNavigationStack.createStackNavigator(routeConfigMap, stackConfig);
  var PrixaContainer = reactNavigation.createAppContainer(PrixaNavigator);

  var Prixa = /*#__PURE__*/function (_React$Component) {
    _inheritsLoose(Prixa, _React$Component);

    function Prixa(props) {
      var _this;

      _this = _React$Component.call(this, props) || this;

      _defineProperty(_assertThisInitialized(_this), "handleNavigationStateChange", function (_prevNavigationState, nextNavigationState) {
        var onDestinationChange = _this.props.onDestinationChange;
        var mapping = {
          Waiting: "Consultation"
        };
        var lastRoute = nextNavigationState.routes.slice(-1)[0];
        var destination = mapping[lastRoute.routeName] || "Other";
        onDestinationChange(destination);
      });

      var _this$props = _this.props,
          devMode = _this$props.devMode,
          fcmToken = _this$props.fcmToken,
          introSlides = _this$props.introSlides,
          showIntro = _this$props.showIntro,
          themeColors = _this$props.themeColors,
          token = _this$props.token;
      setDevMode(devMode);
      store.dispatch(changeFcmToken(fcmToken));
      store.dispatch(changeThemeColors(themeColors));
      store.dispatch(changeToken(token));

      if (showIntro) {
        store.dispatch(changeIntroSlides(introSlides));
      }

      return _this;
    }

    var _proto = Prixa.prototype;

    _proto.render = function render() {
      var _this$props2 = this.props,
          intent = _this$props2.intent,
          onClose = _this$props2.onClose,
          onDestinationChange = _this$props2.onDestinationChange;
      return /*#__PURE__*/React__default['default'].createElement(reactRedux.Provider, {
        store: store
      }, /*#__PURE__*/React__default['default'].createElement(PrixaContainer, {
        onNavigationStateChange: this.handleNavigationStateChange,
        screenProps: {
          intent: intent,
          onClose: onClose,
          onDestinationChange: onDestinationChange
        }
      }));
    };

    return Prixa;
  }(React__default['default'].Component);

  _defineProperty(Prixa, "defaultProps", {
    devMode: false,
    fcmToken: null,
    intent: null,
    introSlides: [],
    onClose: function onClose() {},
    onDestinationChange: function onDestinationChange() {},
    showIntro: true,
    themeColors: {}
  });

  _defineProperty(Prixa, "propTypes", {
    devMode: PropTypes__default['default'].bool,
    fcmToken: PropTypes__default['default'].string,
    intent: PropTypes__default['default'].shape({
      action: PropTypes__default['default'].string.isRequired
    }),
    introSlides: PropTypes__default['default'].array,
    onClose: PropTypes__default['default'].func,
    onDestinationChange: PropTypes__default['default'].func,
    showIntro: PropTypes__default['default'].bool,
    themeColors: PropTypes__default['default'].shape({
      darkerPrimary: PropTypes__default['default'].string,
      darkestPrimary: PropTypes__default['default'].string,
      lighterPrimary: PropTypes__default['default'].string,
      lightestPrimary: PropTypes__default['default'].string,
      primary: PropTypes__default['default'].string
    }),
    token: PropTypes__default['default'].string.isRequired
  });

  return Prixa;

})));
//# sourceMappingURL=prixa-telemedicine-rn-sdk.js.map