{"version":3,"file":"DJfN9JHw.js","sources":["../../../../node_modules/@heroicons/vue/solid/esm/GlobeIcon.js","../../../../components/goby/GobyPaymentInfoModal.vue"],"sourcesContent":["import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n  return (_openBlock(), _createBlock(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 20 20\",\n    fill: \"currentColor\",\n    \"aria-hidden\": \"true\"\n  }, [\n    _createVNode(\"path\", {\n      \"fill-rule\": \"evenodd\",\n      d: \"M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z\",\n      \"clip-rule\": \"evenodd\"\n    })\n  ]))\n}","<script setup lang=\"ts\">\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { GlobeIcon } from '@heroicons/vue/solid';\nimport countryCodes from 'country-codes-list';\nimport SalesTax from 'sales-tax';\nimport type { PropType } from 'vue';\n\nconst props = defineProps({\n  modelValue: Boolean as PropType<boolean>,\n});\nconst emit = defineEmits(['update:modelValue', 'onSave']);\n\nconst countries = countryCodes.all().sort((a, b) => a.countryNameEn.localeCompare(b.countryNameEn));\nconst selectedCountry = ref<string | undefined>(undefined);\n\nconst submissionError = ref<string | undefined>(undefined);\n\nconst taxRate = ref<any>(undefined);\nwatch(selectedCountry, async () => {\n  if (selectedCountry.value) {\n    SalesTax.setTaxOriginCountry('DE', false);\n    const salesTax = await SalesTax.getSalesTax(selectedCountry.value);\n    taxRate.value = salesTax.rate;\n  } else {\n    taxRate.value = undefined;\n  }\n});\n\nconst submit = async () => {\n  submissionError.value = undefined;\n\n  if (!selectedCountry.value || taxRate.value === undefined) {\n    submissionError.value = 'Country is required.';\n    return;\n  }\n\n  emit('onSave', { country: selectedCountry.value, taxRate: taxRate.value });\n  emit('update:modelValue', false);\n};\n</script>\n<template>\n  <TransitionRoot as=\"template\" :show=\"props.modelValue\">\n    <Dialog as=\"div\" class=\"relative z-50\" @close=\"emit('update:modelValue', false)\">\n      <TransitionChild\n        as=\"template\"\n        enter=\"ease-out duration-300\"\n        enter-from=\"opacity-0\"\n        enter-to=\"opacity-100\"\n        leave=\"ease-in duration-200\"\n        leave-from=\"opacity-100\"\n        leave-to=\"opacity-0\"\n      >\n        <div class=\"bg-opacity-75 fixed inset-0 bg-neutral-500/70 transition-opacity dark:bg-neutral-400/70\" />\n      </TransitionChild>\n\n      <div class=\"fixed inset-0 z-10 overflow-y-auto\">\n        <div class=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\n          <TransitionChild\n            as=\"template\"\n            enter=\"ease-out duration-300\"\n            enter-from=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n            enter-to=\"opacity-100 translate-y-0 sm:scale-100\"\n            leave=\"ease-in duration-200\"\n            leave-from=\"opacity-100 translate-y-0 sm:scale-100\"\n            leave-to=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n          >\n            <DialogPanel\n              class=\"relative transform overflow-hidden rounded-lg bg-white px-4 pb-4 pt-5 text-left shadow-xl transition-all dark:bg-black sm:my-8 sm:w-full sm:max-w-lg sm:p-6\"\n            >\n              <div>\n                <div class=\"sm:flex sm:items-start\">\n                  <div\n                    class=\"mx-auto flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-emerald-100 sm:mx-0 sm:h-10 sm:w-10\"\n                  >\n                    <GlobeIcon class=\"h-6 w-6 text-emerald-600\" aria-hidden=\"true\" />\n                  </div>\n                  <div class=\"mt-3 flex flex-col gap-2 text-center sm:ml-4 sm:mt-0 sm:text-left\">\n                    <DialogTitle as=\"h3\" class=\"text-lg font-medium leading-6 text-neutral-900 dark:text-neutral-50\">\n                      Country of Residence\n                    </DialogTitle>\n                    <div>\n                      <p class=\"text-sm text-neutral-500 dark:text-neutral-400\">\n                        Please select your country of residence (for tax purposes).\n                      </p>\n                    </div>\n                    <div class=\"mt-2\">\n                      <label for=\"profile\" class=\"block text-sm font-medium text-neutral-700 dark:text-neutral-200\"\n                        >Country</label\n                      >\n                      <select\n                        id=\"location\"\n                        v-model=\"selectedCountry\"\n                        name=\"location\"\n                        class=\"mt-1 block w-full rounded-md border-0 py-1.5 pl-3 pr-10 text-neutral-900 ring-1 ring-inset ring-neutral-300 focus:ring-2 focus:ring-emerald-600 dark:bg-neutral-800 dark:text-neutral-50 dark:text-white dark:ring-neutral-600 sm:text-sm sm:leading-6\"\n                      >\n                        <option value=\"\" disabled selected>Country of Residence</option>\n                        <option v-for=\"country in countries\" :value=\"country.countryCode\">\n                          {{ country.countryNameEn }}\n                        </option>\n                      </select>\n                    </div>\n                    <div v-if=\"submissionError\">\n                      <div class=\"text-sm font-medium text-red-600\">{{ submissionError }}</div>\n                    </div>\n                  </div>\n                </div>\n                <div class=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n                  <button\n                    type=\"button\"\n                    class=\"inline-flex w-full justify-center rounded-md border border-transparent bg-emerald-600 px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-emerald-700 dark:text-black sm:ml-3 sm:w-auto sm:text-sm\"\n                    @click=\"submit\"\n                  >\n                    Save\n                  </button>\n                  <button\n                    ref=\"cancelButtonRef\"\n                    type=\"button\"\n                    class=\"mt-3 inline-flex w-full justify-center rounded-md border border-neutral-300 bg-white px-4 py-2 text-base font-medium text-neutral-700 shadow-sm hover:bg-neutral-50 dark:bg-black dark:text-neutral-200 dark:hover:bg-neutral-900 sm:mt-0 sm:w-auto sm:text-sm\"\n                    @click=\"emit('update:modelValue', false)\"\n                  >\n                    Cancel\n                  </button>\n                </div>\n              </div>\n            </DialogPanel>\n          </TransitionChild>\n        </div>\n      </div>\n    </Dialog>\n  </TransitionRoot>\n</template>\n"],"names":["render","_ctx","_cache","_openBlock","_createBlock","_createVNode","props","__props","emit","__emit","countries","countryCodes","a","b","selectedCountry","ref","submissionError","taxRate","watch","SalesTax","salesTax","submit"],"mappings":"2PAEe,SAASA,EAAOC,EAAMC,EAAQ,CAC3C,OAAQC,EAAU,EAAIC,EAAa,MAAO,CACxC,MAAO,6BACP,QAAS,YACT,KAAM,eACN,cAAe,MACnB,EAAK,CACDC,EAAa,OAAQ,CACnB,YAAa,UACb,EAAG,oSACH,YAAa,SACnB,CAAK,CACL,CAAG,CACH,2kCCRA,MAAMC,EAAQC,EAGRC,EAAOC,EAEPC,EAAYC,EAAa,IAAI,EAAE,KAAK,CAACC,EAAGC,IAAMD,EAAE,cAAc,cAAcC,EAAE,aAAa,CAAC,EAC5FC,EAAkBC,EAAwB,MAAS,EAEnDC,EAAkBD,EAAwB,MAAS,EAEnDE,EAAUF,EAAS,MAAS,EAClCG,EAAMJ,EAAiB,SAAY,CACjC,GAAIA,EAAgB,MAAO,CAChBK,EAAA,oBAAoB,KAAM,EAAK,EACxC,MAAMC,EAAW,MAAMD,EAAS,YAAYL,EAAgB,KAAK,EACjEG,EAAQ,MAAQG,EAAS,IAAA,MAEzBH,EAAQ,MAAQ,MAClB,CACD,EAED,MAAMI,EAAS,SAAY,CAGzB,GAFAL,EAAgB,MAAQ,OAEpB,CAACF,EAAgB,OAASG,EAAQ,QAAU,OAAW,CACzDD,EAAgB,MAAQ,uBACxB,MACF,CAEKR,EAAA,SAAU,CAAE,QAASM,EAAgB,MAAO,QAASG,EAAQ,MAAO,EACzET,EAAK,oBAAqB,EAAK,CAAA","x_google_ignoreList":[0]}