{"version":3,"file":"CZAS2dcF.js","sources":["../../../../node_modules/@heroicons/vue/solid/esm/DownloadIcon.js","../../../../components/details/DetailsWalletConnectButton.vue","../../../../components/details/DetailsWalletConnect.client.vue","../../../../utilities/offer-handling.ts","../../../../components/offer/OfferButtons.client.vue","../../../../pages/offers/[id].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: \"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","<script setup lang=\"ts\">\nconst props = defineProps(['showSpinner', 'compact', 'title']);\nconst { showSpinner, compact, title } = toRefs(props);\n</script>\n<template>\n <button\n :class=\"[compact ? 'px-2' : 'px-4']\"\n :title=\"title\"\n class=\"text-md betterhover:hover:shadow-card-hover dark:text-neutral-white flex w-full justify-center rounded-full border border-transparent bg-black py-2 font-medium text-white transition duration-100 ease-in-out dark:bg-neutral-800 betterhover:hover:-translate-y-0.5\"\n >\n <svg\n v-if=\"showSpinner\"\n :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\"\n class=\"animate-spin text-white dark:text-black\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n <svg v-else :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\" viewBox=\"0 0 28 20\">\n <g clip-path=\"url(#a)\">\n <path\n d=\"M7.386 6.482c3.653-3.576 9.575-3.576 13.228 0l.44.43a.451.451 0 0 1 0 .648L19.55 9.033a.237.237 0 0 1-.33 0l-.606-.592c-2.548-2.496-6.68-2.496-9.228 0l-.648.634a.237.237 0 0 1-.33 0L6.902 7.602a.451.451 0 0 1 0-.647l.483-.473Zm16.338 3.046 1.339 1.31a.451.451 0 0 1 0 .648l-6.035 5.909a.475.475 0 0 1-.662 0L14.083 13.2a.119.119 0 0 0-.166 0l-4.283 4.194a.475.475 0 0 1-.662 0l-6.035-5.91a.451.451 0 0 1 0-.647l1.338-1.31a.475.475 0 0 1 .662 0l4.283 4.194c.046.044.12.044.166 0l4.283-4.194a.475.475 0 0 1 .662 0l4.283 4.194c.046.044.12.044.166 0l4.283-4.194a.475.475 0 0 1 .662 0Z\"\n fill=\"#ffffff\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#ffffff\" d=\"M0 0h28v20H0z\"></path>\n </clipPath>\n </defs>\n </svg>\n <slot />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport type { PropType } from 'vue';\nimport { getApiRoot } from '~/utilities/api';\n\nconst props = defineProps({\n compact: { type: Boolean, required: true },\n offer: { type: Object as PropType<any>, required: true },\n});\nconst { compact, offer } = toRefs(props);\n\nconst timeout = (ms: number) => new Promise((_resolve, reject) => setTimeout(() => reject(new Error('Time out!')), ms));\n\nconst { connect, session, pairings, takeOffer } = await useWalletConnect();\nconst waitingForConfirmation = ref(false);\n\nconst takeOfferSuccess = ref(false);\nconst takeOfferFailed = ref(false);\nconst takeOfferUsingWalletConnect = async () => {\n try {\n useTrackEvent('offer_walletconnect');\n const offerBech32 = await $fetch<any>(`${getApiRoot()}/offers/${offer.value.id}/bech32`);\n const { status } = await $fetch<any>(`https://api.dexie.space/v1/status`);\n\n if (offerBech32) {\n waitingForConfirmation.value = true;\n const { valid } = (await Promise.race([\n takeOffer(offerBech32, status?.fees?.recommended || 0),\n timeout(60000),\n ])) as any;\n if (valid) {\n takeOfferSuccess.value = true;\n } else {\n takeOfferFailed.value = true;\n }\n } else {\n takeOfferFailed.value = true;\n }\n } catch (e) {\n takeOfferFailed.value = true;\n } finally {\n waitingForConfirmation.value = false;\n }\n};\n</script>\n<template>\n <div>\n <DetailsWalletConnectButton\n v-if=\"session && pairings?.length > 0\"\n :show-spinner=\"waitingForConfirmation\"\n :compact=\"compact\"\n :title=\"$t('offers.takeOffer')\"\n @click.prevent=\"takeOfferUsingWalletConnect\"\n >\n <template v-if=\"!compact\">{{ $t('offers.takeOffer') }}</template>\n </DetailsWalletConnectButton>\n <DetailsWalletConnectButton v-else :compact=\"compact\" :title=\"$t('offers.connectWallet')\" @click.prevent=\"connect\">\n <template v-if=\"!compact\">{{ $t('offers.connectWallet') }}</template>\n </DetailsWalletConnectButton>\n </div>\n</template>\n","import { getApiRoot } from '~/utilities/api';\n\nexport const downloadOffer = async (offer: any, nft: any) => {\n useTrackEvent('offer_download');\n const offerBech32 = await $fetch<any>(`${getApiRoot()}/offers/${offer.id}/bech32`);\n\n if (offerBech32) {\n const c = document.createElement('a');\n c.download = `1_${nft.encoded_id}_x_${offer.xch_price}XCH.offer`;\n\n const t = new Blob([offerBech32], {\n type: 'text/plain',\n });\n c.href = window.URL.createObjectURL(t);\n c.click();\n }\n};\n","<script setup lang=\"ts\">\nimport { ClipboardCheckIcon, ClipboardCopyIcon } from '@heroicons/vue/outline';\nimport { DownloadIcon } from '@heroicons/vue/solid';\nimport type { PropType } from 'vue';\nimport { useGoby } from '~/composables/useGoby';\nimport { getApiRoot } from '~/utilities/api';\nimport { downloadOffer } from '~/utilities/offer-handling';\n\nconst props = defineProps({\n compact: { type: Boolean, default: false },\n offer: { type: Object as PropType<any>, required: true },\n nft: { type: Object as PropType<any>, required: true },\n});\nconst { compact, offer, nft } = toRefs(props);\n\nconst offerBech32 = await $fetch<any>(`${getApiRoot()}/offers/${offer.value.id}/bech32`);\n\nconst { goby, takeOffer: takeOfferInGoby } = useGoby();\n\nconst copied = ref(false);\nconst copyToClipboard = async () => {\n useTrackEvent('offer_copy');\n if (offerBech32) {\n try {\n // Try the modern clipboard API first\n if (navigator.clipboard && navigator.clipboard.writeText) {\n await navigator.clipboard.writeText(offerBech32);\n } else {\n // Fallback for iOS Safari\n const textArea = document.createElement('textarea');\n textArea.value = offerBech32;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand('copy');\n textArea.remove();\n }\n copied.value = true;\n setTimeout(() => (copied.value = false), 1000);\n } catch (e) {\n console.error('Failed to copy text:', e);\n }\n }\n};\nconst getAndTakeOfferInGoby = async () => {\n if (offerBech32) {\n await takeOfferInGoby(offerBech32);\n }\n};\n</script>\n\n<template>\n <div\n class=\"grid grid-cols-1 items-center\"\n :class=\"[compact ? 'gap-2' : 'gap-4', offer.contains_mint_spend ? 'lg:grid-cols-3' : 'lg:grid-cols-4']\"\n >\n <button\n :class=\"[compact ? 'px-2' : 'px-4']\"\n :title=\"$t('offers.copyOffer')\"\n class=\"shadow-attribute betterhover:hover:shadow-card-hover flex w-full items-center justify-center rounded-full border border-transparent bg-white py-2 text-center text-base font-medium text-black transition duration-100 ease-in-out dark:bg-black dark:text-white betterhover:hover:-translate-y-0.5\"\n @click.prevent=\"copyToClipboard()\"\n >\n <ClipboardCheckIcon v-if=\"copied\" :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\" />\n <ClipboardCopyIcon v-else :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\" />\n <template v-if=\"!compact\">{{ $t('offers.copyOffer') }}</template>\n </button>\n <button\n :class=\"[compact ? 'px-2' : 'px-4']\"\n :title=\"$t('offers.downloadOffer')\"\n class=\"shadow-attribute betterhover:hover:shadow-card-hover flex w-full items-center justify-center rounded-full border border-transparent bg-white py-2 text-center text-base font-medium text-black transition duration-100 ease-in-out dark:bg-black dark:text-white betterhover:hover:-translate-y-0.5\"\n @click.prevent=\"downloadOffer(offer, nft)\"\n >\n <DownloadIcon :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\" />\n <template v-if=\"!compact\">{{ $t('offers.downloadOffer') }}</template>\n </button>\n <DetailsWalletConnect v-if=\"!offer.contains_mint_spend\" :offer=\"offer\" :nft=\"nft\" :compact=\"compact\" />\n <button\n v-if=\"goby.isGobyInstalled\"\n type=\"button\"\n class=\"betterhover:hover:shadow-card-hover flex w-full justify-center rounded-full border border-transparent bg-green-600 py-2 font-medium text-white transition duration-100 ease-in-out betterhover:hover:-translate-y-0.5\"\n @click=\"getAndTakeOfferInGoby()\"\n >\n <img :class=\"[compact ? 'h-5 w-5' : '-ml-1 mr-2 h-6 w-6']\" aria-hidden=\"true\" src=\"/goby-logo-white.svg\" />\n <template v-if=\"!compact\">{{ $t('offers.takeOffer') }}</template>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useRoute } from '#imports';\nimport { getApiRoot } from '~/utilities/api';\nimport { formatXchPrice } from '~/utilities/chia-display-utils';\nimport { BASE_TITLE } from '~/utilities/constants';\n\nconst route = useRoute();\n\nconst { data: offer } = await useFetch<any>(`${getApiRoot()}/offers/${route.params.id}`);\nconst { data: nft } = await useFetch<any>(`${getApiRoot()}/nfts/${offer.value?.nft_id}`);\n\nconst title = computed(() => {\n if (offer.value && nft.value) {\n const offeredThings = Object.keys(offer.value.offered || {});\n const requestedThings = Object.keys(offer.value.requested || {});\n\n const isNftNftOffer =\n !offer.value.xch_price &&\n offeredThings.length === 1 &&\n offeredThings[0].startsWith('nft') &&\n requestedThings.length === 1 &&\n requestedThings[0].startsWith('nft');\n\n const name = nft.value?.data.metadata_json?.name;\n const price = formatXchPrice(offer.value?.xch_price);\n if (offer.value.side === 1) {\n return `Offering \"${name}\" for ${price}`;\n } else if (isNftNftOffer) {\n return `Offering \"${name}\"`;\n } else {\n return `Offering ${price} for \"${name}\"`;\n }\n } else if (offer.value) {\n return offer.value.id;\n } else {\n return 'Unknown offer';\n }\n});\nuseHead({\n title: `${title.value} ${BASE_TITLE}`,\n meta: [\n { property: 'og:title', content: `${title.value} ${BASE_TITLE}` },\n {\n property: 'og:image',\n content: nft.value?.data?.thumbnail_uri || nft.value?.thumbnail_uri,\n },\n { name: 'twitter:image', content: nft.value?.data?.thumbnail_uri || nft.value?.thumbnail_uri },\n { name: 'twitter:title', content: `${title.value} ${BASE_TITLE}` },\n { name: 'twitter:card', content: 'summary_large_image' },\n ],\n} as any);\n</script>\n\n<template>\n <Container>\n <Error404 v-if=\"!offer || !nft\" />\n <div v-else class=\"\">\n <div class=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\n <div class=\"relative w-full max-w-md flex-grow rounded-lg pb-4 pt-5 text-left sm:my-8 lg:w-full lg:max-w-4xl\">\n <div class=\"sm:flex sm:items-start\">\n <div class=\"mt-3 flex-grow text-center sm:mt-0\">\n <h3 class=\"mt-2 text-3xl font-extrabold tracking-tight text-neutral-900 dark:text-neutral-50 sm:text-4xl\">\n {{ $t('offers.offer') }}\n </h3>\n <span\n class=\"cursor-pointer font-mono text-xs tracking-tight text-neutral-500 dark:text-neutral-400 lg:text-base\"\n >{{ offer.id }}</span\n >\n <div class=\"mt-4\">\n <span\n v-if=\"offer.status === 0\"\n class=\"inline-flex items-center rounded-md bg-green-50 px-3 py-1 font-semibold text-green-700 ring-1 ring-inset ring-green-600/20\"\n >ACTIVE</span\n >\n <span\n v-if=\"offer.status === 1\"\n class=\"inline-flex animate-pulse items-center rounded-md bg-purple-50 px-3 py-1 font-semibold text-purple-700 ring-1 ring-inset ring-purple-600/20\"\n >PENDING</span\n >\n <span\n v-if=\"offer.status === 3\"\n class=\"inline-flex items-center rounded-md bg-neutral-50 px-3 py-1 font-semibold text-neutral-700 ring-1 ring-inset ring-neutral-600/20 dark:text-neutral-200\"\n >CANCELED</span\n >\n <span\n v-if=\"offer.status === 4\"\n class=\"inline-flex items-center rounded-md bg-blue-50 px-3 py-1 font-semibold text-blue-700 ring-1 ring-inset ring-blue-600/20\"\n >CONFIRMED</span\n >\n <span\n v-if=\"offer.status === 6\"\n class=\"inline-flex items-center rounded-md bg-neutral-50 px-3 py-1 font-semibold text-neutral-700 ring-1 ring-inset ring-neutral-600/20 dark:text-neutral-200\"\n >EXPIRED</span\n >\n </div>\n <OfferDetails :offer=\"offer\" :nft=\"nft\" />\n <OfferButtons v-if=\"offer.status < 3\" :offer=\"offer\" :nft=\"nft\" />\n <div v-else class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </Container>\n</template>\n"],"names":["render","_ctx","_cache","_openBlock","_createBlock","_createVNode","props","__props","showSpinner","compact","title","toRefs","offer","timeout","ms","_resolve","reject","connect","session","pairings","takeOffer","__temp","__restore","_withAsyncContext","useWalletConnect","waitingForConfirmation","ref","takeOfferSuccess","takeOfferFailed","takeOfferUsingWalletConnect","useTrackEvent","offerBech32","getApiRoot","status","valid","_a","downloadOffer","nft","c","goby","takeOfferInGoby","useGoby","copied","copyToClipboard","textArea","e","getAndTakeOfferInGoby","route","useRoute","useFetch","computed","offeredThings","requestedThings","isNftNftOffer","name","_b","price","formatXchPrice","_c","useHead","BASE_TITLE","_e","_d","_f"],"mappings":"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","x_google_ignoreList":[0]}