{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/FJknUyd9749g1X1epoik/qI8vU7gTKFVlr4t4thYs/PricingContext.js"],
  "sourcesContent": ["import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useState, useContext, createContext, useEffect } from \"react\";\nimport { countries } from \"https://framerusercontent.com/modules/bO7pHAqAW2JxDHRhiUmh/ABkv0UwfwKZLVttTkwCd/Shared.js\";\nconst initialContext = {\n  country: {\n    label: \"United States\",\n    value: \"us\"\n  },\n  currency: {\n    label: \"USD\",\n    value: \"usd\"\n  },\n  changeCountry: country => {},\n  changeCurrency: currency => {},\n  prices: {\n    data: {},\n    loaded: false,\n    loading: false,\n    error: false\n  }\n};\nconst PricingContext = /*#__PURE__*/createContext(initialContext);\nconst initialEmailSendingContext = {\n  volume: 0,\n  changeVolume: volume => {}\n};\nconst EmailSendingVolumeContext = /*#__PURE__*/createContext(initialEmailSendingContext);\nfunction contructId({\n  selector,\n  country,\n  currency,\n  dimension,\n  unit\n}) {\n  const id = [selector, country, currency, dimension, unit].join(\":\").toLowerCase();\n  return id;\n}\nfunction useFetchPrices(country, currency) {\n  const [isLoading, setIsLoading] = useState(true);\n  const [isError, setIsError] = useState(false);\n  const [prices, setPrices] = useState({\n    data: {},\n    loaded: false,\n    loading: false,\n    error: false\n  });\n  useEffect(() => {\n    async function fetchData() {\n      try {\n        const res = await fetch(`https://dotcom.messagebird.com/pricing/${country.toUpperCase()}/${currency.toUpperCase()}`);\n        const data = await res.json();\n        setIsLoading(false);\n        const normalized = {};\n        if (!data || !data.prices) {\n          console.error(\"Failed loading prices\", data);\n          setPrices({\n            data: {},\n            loaded: true,\n            loading: false,\n            error: true\n          });\n          return;\n        }\n        data.prices.forEach(item => {\n          let {\n            selector,\n            country,\n            currency,\n            dimension,\n            unit\n          } = item;\n          const id = contructId({\n            selector,\n            country,\n            currency,\n            dimension,\n            unit\n          });\n          normalized[id] = item;\n        });\n        setPrices({\n          data: normalized,\n          loading: false,\n          loaded: true,\n          error: false\n        });\n      } catch (e) {\n        console.error(\"Failed loading prices\", e);\n        setIsError(true);\n      }\n    }\n    setPrices({\n      data: {},\n      loaded: false,\n      loading: true,\n      error: false\n    });\n    fetchData();\n  }, [country, currency]);\n  return prices;\n}\nexport function withPricingContext(Component) {\n  return props => {\n    const [country, changeCountry] = useState(initialContext.country);\n    const [currency, changeCurrency] = useState(initialContext.currency);\n    const prices = useFetchPrices(country.value, currency.value);\n    return /*#__PURE__*/_jsx(PricingContext.Provider, {\n      value: {\n        country,\n        currency,\n        changeCountry,\n        changeCurrency,\n        prices\n      },\n      children: /*#__PURE__*/_jsx(Component, {\n        ...props\n      })\n    });\n  };\n}\nexport function withEmailSendingVolumeContext(Component) {\n  return props => {\n    const [volume, setVolume] = useState(0);\n    return /*#__PURE__*/_jsx(EmailSendingVolumeContext.Provider, {\n      value: {\n        volume,\n        changeVolume: setVolume\n      },\n      children: /*#__PURE__*/_jsx(Component, {\n        ...props\n      })\n    });\n  };\n}\nconst currencies = [{\n  label: \"USD\",\n  value: \"USD\"\n}, {\n  label: \"EUR\",\n  value: \"EUR\"\n}, {\n  label: \"AUD\",\n  value: \"AUD\"\n}, {\n  label: \"GBP\",\n  value: \"GBP\"\n}];\nconst CURRENCY = {\n  USD: \"$\",\n  EUR: \"\u20AC\",\n  AUD: \"A$\",\n  GBP: \"\\xa3\"\n};\nexport function withChangeCountryContext(Component) {\n  return props => {\n    const {\n      country,\n      changeCountry\n    } = useContext(PricingContext);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      selectedOption: {\n        label: country.label,\n        value: country.value,\n        selected: true\n      },\n      options: Object.values(countries).map(country => {\n        return {\n          label: country.englishName,\n          value: country.code,\n          selected: country.code === \"US\"\n        };\n      }).sort((a, b) => a.label > b.label ? 1 : -1),\n      onChange: input => {\n        changeCountry({\n          label: input.label,\n          value: input.value\n        });\n      }\n    });\n  };\n}\nexport function withChangeCurrencyContext(Component) {\n  return props => {\n    const {\n      currency,\n      changeCurrency\n    } = useContext(PricingContext);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      selectedOption: {\n        label: currency.label,\n        value: currency.value\n      },\n      options: currencies,\n      onChange: input => {\n        changeCurrency({\n          label: input.label,\n          value: input.value\n        });\n      }\n    });\n  };\n}\nexport function withChangeVolumeContext(Component) {\n  return props => {\n    const {\n      volume,\n      changeVolume\n    } = useContext(EmailSendingVolumeContext);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      volume: volume,\n      onChange: input => {\n        changeVolume(input);\n      }\n    });\n  };\n}\nconst EMAIL_SENDING_TIERS_FROM_RANGE_SLIDER = {\n  0: \"test\",\n  1: \"0-50k\",\n  2: \"50k-100k\",\n  3: \"100k-250k\",\n  4: \"250k-500k\",\n  5: \"500k-1m\",\n  6: \"1m-5m\",\n  7: \"5m+\"\n};\nexport function withRecommendationsAppliedForStarter(Component) {\n  return props => {\n    const {\n      volume\n    } = useContext(EmailSendingVolumeContext);\n    const volumeTranslated = EMAIL_SENDING_TIERS_FROM_RANGE_SLIDER[volume];\n    if (volume >= 2) {\n      return /*#__PURE__*/_jsx(Component, {\n        ...props,\n        style: {\n          opacity: .6,\n          pointerEvents: \"none\"\n        }\n      });\n    }\n    return /*#__PURE__*/_jsx(Component, {\n      ...props\n    });\n  };\n}\nexport function withRecommendationsAppliedForPremier(Component) {\n  return props => {\n    const {\n      volume\n    } = useContext(EmailSendingVolumeContext);\n    const volumeTranslated = EMAIL_SENDING_TIERS_FROM_RANGE_SLIDER[volume];\n    if (volume > 5) {\n      return /*#__PURE__*/_jsx(Component, {\n        ...props,\n        style: {\n          opacity: .6,\n          pointerEvents: \"none\"\n        }\n      });\n    }\n    return /*#__PURE__*/_jsx(Component, {\n      ...props\n    });\n  };\n}\nexport function withCountryAndCurrencyReplacedBasedOnVolume(Component) {\n  return props => {\n    const {\n      volume\n    } = useContext(EmailSendingVolumeContext);\n    const volumeTranslated = EMAIL_SENDING_TIERS_FROM_RANGE_SLIDER[volume];\n    const {\n      country,\n      currency,\n      prices\n    } = useContext(PricingContext);\n    const id = contructId({\n      selector: props.selector,\n      country: country.value,\n      currency: currency.value,\n      dimension: `${volumeTranslated}.${props.dimension}`,\n      unit: props.unit\n    });\n    const selected = prices.data[id];\n    if (prices.loading || !prices.loaded) {\n      return /*#__PURE__*/_jsx(Component, {\n        ...props,\n        loaded: false,\n        country: country.label,\n        currency: currency.label\n      });\n    }\n    return /*#__PURE__*/_jsx(_Fragment, {\n      children: /*#__PURE__*/_jsx(Component, {\n        ...props,\n        variant: !prices.loading && prices.loaded && (!selected || !selected.price) ? \"N/A\" : props.variant,\n        loaded: true,\n        price: selected && `${selected.price}`,\n        country: country.label,\n        currency: currency.label\n      })\n    });\n  };\n}\nexport function withCountryAndCurrencyReplaced(Component) {\n  return props => {\n    const {\n      country,\n      currency,\n      prices\n    } = useContext(PricingContext);\n    const id = contructId({\n      selector: props.selector,\n      country: country.value,\n      currency: currency.value,\n      dimension: props.dimension,\n      unit: props.unit\n    });\n    const selected = prices.data[id];\n    if (prices.loading || !prices.loaded) {\n      return /*#__PURE__*/_jsx(Component, {\n        ...props,\n        loaded: false,\n        country: country.label,\n        currency: currency.label\n      });\n    }\n    return /*#__PURE__*/_jsx(_Fragment, {\n      children: /*#__PURE__*/_jsx(Component, {\n        ...props,\n        variant: !prices.loading && prices.loaded && (!selected || !selected.price) ? \"N/A\" : props.variant,\n        loaded: true,\n        price: selected && `${selected.price}`,\n        country: country.label,\n        currency: currency.label\n      })\n    });\n  };\n}\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"withChangeVolumeContext\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withChangeVolumeContext\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withRecommendationsAppliedForStarter\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withRecommendationsAppliedForStarter\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withChangeCurrencyContext\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withChangeCurrencyContext\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withEmailSendingVolumeContext\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withEmailSendingVolumeContext\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withCountryAndCurrencyReplaced\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withCountryAndCurrencyReplaced\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withPricingContext\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withPricingContext\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withChangeCountryContext\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withChangeCountryContext\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withRecommendationsAppliedForPremier\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withRecommendationsAppliedForPremier\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"withCountryAndCurrencyReplacedBasedOnVolume\": {\n      \"type\": \"reactHoc\",\n      \"name\": \"withCountryAndCurrencyReplacedBasedOnVolume\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};"],
  "mappings": "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",
  "names": ["initialContext", "country", "currency", "PricingContext", "z", "initialEmailSendingContext", "volume", "EmailSendingVolumeContext", "contructId", "selector", "dimension", "unit", "useFetchPrices", "isLoading", "setIsLoading", "ye", "isError", "setIsError", "prices", "setPrices", "ue", "fetchData", "data", "normalized", "item", "id", "e", "withPricingContext", "Component", "props", "changeCountry", "changeCurrency", "p", "withEmailSendingVolumeContext", "setVolume", "currencies", "withChangeCountryContext", "Component", "props", "country", "changeCountry", "re", "PricingContext", "p", "countries", "a", "b", "input", "withChangeCurrencyContext", "currency", "changeCurrency", "currencies", "withChangeVolumeContext", "volume", "changeVolume", "EmailSendingVolumeContext", "EMAIL_SENDING_TIERS_FROM_RANGE_SLIDER", "withRecommendationsAppliedForStarter", "volumeTranslated", "withRecommendationsAppliedForPremier", "withCountryAndCurrencyReplacedBasedOnVolume", "prices", "id", "contructId", "selected", "l", "withCountryAndCurrencyReplaced"]
}
