From 0142aac2e9ba6729655d1ee55efaaa5f6d4c04d0 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 20 May 2022 00:57:19 -0400 Subject: [PATCH] Add try it call out --- playgrounds/js/api/index.js.map | 4 ++-- playgrounds/js/app/routes/index.tsx | 6 +++-- playgrounds/js/app/tailwind.css | 35 +++++++++-------------------- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/playgrounds/js/api/index.js.map b/playgrounds/js/api/index.js.map index 81c6afd..a766b9d 100644 --- a/playgrounds/js/api/index.js.map +++ b/playgrounds/js/api/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["", "../node_modules/@remix-run/dev/compiler/shims/react.ts", "../app/entry.server.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx", "../app/components/button.tsx", "../app/components/error-msg.tsx", "../app/components/input.tsx", "../app/components/loader.tsx", "../app/components/page-title.tsx", "../app/components/logo.tsx", "../app/components/query-preview.tsx", "../app/components/query-result-table.tsx", "../app/components/query-stats.tsx", "../app/components/app-footer.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx", "server-assets-manifest:@remix-run/dev/assets-manifest", "server-entry-module:@remix-run/dev/server-build"], - "sourcesContent": ["export * from \"@remix-run/dev/server-build\";", "// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as React from \"react\";\nexport { React };\n", "import type { EntryContext } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { renderToString } from \"react-dom/server\";\n\nexport default function handleRequest(\n request: Request,\n responseStatusCode: number,\n responseHeaders: Headers,\n remixContext: EntryContext\n) {\n let markup = renderToString(\n \n );\n\n responseHeaders.set(\"Content-Type\", \"text/html\");\n\n return new Response(\"\" + markup, {\n status: responseStatusCode,\n headers: responseHeaders,\n });\n}\n", "import type { LinksFunction, MetaFunction } from \"@remix-run/node\";\nimport {\n Links,\n LiveReload,\n Meta,\n Outlet,\n Scripts,\n ScrollRestoration,\n useLoaderData,\n} from \"@remix-run/react\";\nimport styles from \"./tailwind.css\";\n\nexport const meta: MetaFunction = () => ({\n charset: \"utf-8\",\n title: \"Flipside SDK -- Playground\",\n viewport: \"width=device-width,initial-scale=1\",\n});\n\nexport const links: LinksFunction = () => [{ rel: \"stylesheet\", href: styles }];\n\nexport async function loader({ request }: { request: Request }) {\n return {\n ENV: {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n },\n };\n}\n\nexport default function App() {\n const data = useLoaderData<{ ENV: Record }>();\n return (\n \n \n \n );\n}\n\nfunction Document({\n children,\n title,\n env,\n}: {\n children: React.ReactNode;\n title?: string;\n env?: Record;\n}) {\n return (\n \n \n {env ? (\n \n ) : null}\n\n \n \n {title ? {title} : null}\n \n \n \n\n \n {children}\n \n \n \n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address,\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `SELECT contract_name, count(1) as event_count \n FROM flipside_prod_db.ethereum_core.fact_event_logs \n WHERE ORIGIN_FROM_ADDRESS = LOWER('${nextAddress}')\n GROUP BY 1 \n ORDER BY 2 desc`,\n ttlMinutes: 10,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
contract_name,\n
count(1) as event_count,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.fact_event_logs\n
\n WHERE\n
origin_from_address =\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link, LinkProps } from \"@remix-run/react\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\ntype Props = {\n cta: string;\n};\nexport function Button({ cta }: Props) {\n return (\n \n {cta}\n \n );\n}\n\ninterface ButtonProps {\n innerStyle?: Record;\n children: React.ReactNode | React.ReactNode[];\n}\n\nfunction getClassName(className?: string) {\n return clsx(\n \"rounded-full before:rounded-full px-2 border-2 border-white/80 inline-flex text-center transition-all hover:-translate-y-1\",\n className\n );\n}\n\nfunction ButtonInner({\n children,\n style,\n}: {\n children: React.ReactNode;\n style?: Record;\n}) {\n return (\n \n {children}\n \n );\n}\n\nfunction Button2({\n children,\n className,\n innerStyle,\n ...buttonProps\n}: ButtonProps & JSX.IntrinsicElements[\"button\"]) {\n return (\n \n );\n}\n\nfunction ButtonLink({\n children,\n className,\n ...linkProps\n}: ButtonProps & LinkProps) {\n return (\n \n {children}\n \n );\n}\n\nfunction LinkButton({\n children,\n className,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nfunction GradientButton({\n children,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nexport { Button2, ButtonLink, LinkButton, GradientButton };\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function ErrorMsg({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (!queryResultSet.error) {\n return <>;\n }\n return (\n
\n

Error

\n
{queryResultSet?.error.message}
\n
\n );\n}\n", "type Props = {\n onChange(value: string): void;\n placeholder: string;\n name: string;\n defaultValue: string | number | readonly string[] | undefined;\n};\n\nexport function Input({ onChange, placeholder, name, defaultValue }: Props) {\n return (\n onChange(e.currentTarget.value)}\n />\n );\n}\n", "type LoaderProps = {\n isLoading: boolean;\n children: React.ReactNode;\n};\n\nexport function Loader({ isLoading, children }: LoaderProps) {\n if (isLoading) {\n return
loading...
;\n }\n return <>{children};\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"./logo\";\n\ntype Props = {\n title: string;\n};\n\nexport function PageTitle({ title }: Props) {\n return (\n
\n \n \n \n
\n \n [back]\n \n

{title}

\n
\n
\n );\n}\n", "import React from \"react\";\n\ntype LogoProps = {\n width: number;\n height: number;\n className?: string;\n};\n\nfunction FlipsideLogo({ className, width, height }: LogoProps) {\n return (\n \n \n \n );\n}\n\nexport { FlipsideLogo };\n", "type Props = {\n children: React.ReactNode;\n};\nexport function QueryPreview({ children }: Props) {\n return (\n \n {children}\n \n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet;\n};\n\nexport function QueryResultTable({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n \n \n \n {queryResultSet.columns.map((column, i) => {\n return (\n \n );\n })}\n \n \n \n {queryResultSet.rows.map((row, i) => {\n return (\n \n {row.map((cell, j) => (\n \n ))}\n \n );\n })}\n \n
\n {column}\n
\n {cell}\n
\n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function QueryStats({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n
\n

\n Query Stats\n

\n
\n \n \n
\n
\n );\n}\n\ntype StatProps = {\n name: string;\n stat: string;\n};\n\nfunction Stat({ name, stat }: StatProps) {\n return (\n \n
{name}
\n
{stat}
\n \n );\n}\n", "import { AiFillGithub } from \"react-icons/ai\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { FlipsideLogo } from \"./logo\";\n\nexport function AppFooter() {\n return (\n <>\n
\n
\n \n
\n
\n \n

\n © COPYRIGHT {new Date().getFullYear()} FLIPSIDE CRYPTO\n

\n
\n
\n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address,\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `select nft_address, mint_price_eth, mint_price_usd from flipside_prod_db.ethereum_core.ez_nft_mints where nft_to_address = LOWER('${nextAddress}')`,\n ttlMinutes: 10,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
nft_address,\n
mint_price_eth,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.ez_nft_mints\n
\n WHERE\n
nft_to_address=\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"~/components/logo\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { AiFillGithub } from \"react-icons/ai\";\n\nexport default function Index() {\n return (\n <>\n
\n \n

\n Flipside SDK\n

\n
\n \n yarn install @flipsidecrypto/sdk\n \n \n \n \n
\n

\n \n \n Blockchain Data Where You Want It -- Join the Alpha\n \n

\n\n

\n
    \n
  1. \n \n NFT Mints\n

    \n what NFTs have been minted at an address?\n

    \n \n
  2. \n
  3. \n \n Top Contracts\n

    \n what contract does a particular address interact with the most?\n

    \n \n
  4. \n
\n
\n \n \n );\n}\n", "export default {'version':'d8ac1a4f','entry':{'module':'/build/entry.client-GW5EOPBU.js','imports':['/build/_shared/chunk-DXUJXU74.js']},'routes':{'root':{'id':'root','parentId':undefined,'path':'','index':undefined,'caseSensitive':undefined,'module':'/build/root-32UKODX6.js','imports':undefined,'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/index':{'id':'routes/index','parentId':'root','path':undefined,'index':true,'caseSensitive':undefined,'module':'/build/routes/index-QPZDQN3M.js','imports':['/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':false,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/nft-mints':{'id':'routes/nft-mints','parentId':'root','path':'nft-mints','index':undefined,'caseSensitive':undefined,'module':'/build/routes/nft-mints-QX6FONEU.js','imports':['/build/_shared/chunk-ESVKE4EU.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/top-contracts':{'id':'routes/top-contracts','parentId':'root','path':'top-contracts','index':undefined,'caseSensitive':undefined,'module':'/build/routes/top-contracts-PA6HGTAJ.js','imports':['/build/_shared/chunk-ESVKE4EU.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false}},'url':'/build/manifest-D8AC1A4F.js'};", "\nimport * as entryServer from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/entry.server.tsx\";\nimport * as route0 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx\";\nimport * as route1 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx\";\nimport * as route2 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx\";\nimport * as route3 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx\";\n export { default as assets } from \"@remix-run/dev/assets-manifest\";\n export const entry = { module: entryServer };\n export const routes = {\n \"root\": {\n id: \"root\",\n parentId: undefined,\n path: \"\",\n index: undefined,\n caseSensitive: undefined,\n module: route0\n },\n \"routes/top-contracts\": {\n id: \"routes/top-contracts\",\n parentId: \"root\",\n path: \"top-contracts\",\n index: undefined,\n caseSensitive: undefined,\n module: route1\n },\n \"routes/nft-mints\": {\n id: \"routes/nft-mints\",\n parentId: \"root\",\n path: \"nft-mints\",\n index: undefined,\n caseSensitive: undefined,\n module: route2\n },\n \"routes/index\": {\n id: \"routes/index\",\n parentId: \"root\",\n path: undefined,\n index: true,\n caseSensitive: undefined,\n module: route3\n }\n };"], - "mappings": "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", + "sourcesContent": ["export * from \"@remix-run/dev/server-build\";", "// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as React from \"react\";\nexport { React };\n", "import type { EntryContext } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { renderToString } from \"react-dom/server\";\n\nexport default function handleRequest(\n request: Request,\n responseStatusCode: number,\n responseHeaders: Headers,\n remixContext: EntryContext\n) {\n let markup = renderToString(\n \n );\n\n responseHeaders.set(\"Content-Type\", \"text/html\");\n\n return new Response(\"\" + markup, {\n status: responseStatusCode,\n headers: responseHeaders,\n });\n}\n", "import type { LinksFunction, MetaFunction } from \"@remix-run/node\";\nimport {\n Links,\n LiveReload,\n Meta,\n Outlet,\n Scripts,\n ScrollRestoration,\n useLoaderData,\n} from \"@remix-run/react\";\nimport styles from \"./tailwind.css\";\n\nexport const meta: MetaFunction = () => ({\n charset: \"utf-8\",\n title: \"Flipside SDK -- Playground\",\n viewport: \"width=device-width,initial-scale=1\",\n});\n\nexport const links: LinksFunction = () => [{ rel: \"stylesheet\", href: styles }];\n\nexport async function loader({ request }: { request: Request }) {\n return {\n ENV: {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n },\n };\n}\n\nexport default function App() {\n const data = useLoaderData<{ ENV: Record }>();\n return (\n \n \n \n );\n}\n\nfunction Document({\n children,\n title,\n env,\n}: {\n children: React.ReactNode;\n title?: string;\n env?: Record;\n}) {\n return (\n \n \n {env ? (\n \n ) : null}\n\n \n \n {title ? {title} : null}\n \n \n \n\n \n {children}\n \n \n \n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address,\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `SELECT contract_name, count(1) as event_count \n FROM flipside_prod_db.ethereum_core.fact_event_logs \n WHERE ORIGIN_FROM_ADDRESS = LOWER('${nextAddress}')\n GROUP BY 1 \n ORDER BY 2 desc`,\n ttlMinutes: 10,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
contract_name,\n
count(1) as event_count,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.fact_event_logs\n
\n WHERE\n
origin_from_address =\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link, LinkProps } from \"@remix-run/react\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\ntype Props = {\n cta: string;\n};\nexport function Button({ cta }: Props) {\n return (\n \n {cta}\n \n );\n}\n\ninterface ButtonProps {\n innerStyle?: Record;\n children: React.ReactNode | React.ReactNode[];\n}\n\nfunction getClassName(className?: string) {\n return clsx(\n \"rounded-full before:rounded-full px-2 border-2 border-white/80 inline-flex text-center transition-all hover:-translate-y-1\",\n className\n );\n}\n\nfunction ButtonInner({\n children,\n style,\n}: {\n children: React.ReactNode;\n style?: Record;\n}) {\n return (\n \n {children}\n \n );\n}\n\nfunction Button2({\n children,\n className,\n innerStyle,\n ...buttonProps\n}: ButtonProps & JSX.IntrinsicElements[\"button\"]) {\n return (\n \n );\n}\n\nfunction ButtonLink({\n children,\n className,\n ...linkProps\n}: ButtonProps & LinkProps) {\n return (\n \n {children}\n \n );\n}\n\nfunction LinkButton({\n children,\n className,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nfunction GradientButton({\n children,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nexport { Button2, ButtonLink, LinkButton, GradientButton };\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function ErrorMsg({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (!queryResultSet.error) {\n return <>;\n }\n return (\n
\n

Error

\n
{queryResultSet?.error.message}
\n
\n );\n}\n", "type Props = {\n onChange(value: string): void;\n placeholder: string;\n name: string;\n defaultValue: string | number | readonly string[] | undefined;\n};\n\nexport function Input({ onChange, placeholder, name, defaultValue }: Props) {\n return (\n onChange(e.currentTarget.value)}\n />\n );\n}\n", "type LoaderProps = {\n isLoading: boolean;\n children: React.ReactNode;\n};\n\nexport function Loader({ isLoading, children }: LoaderProps) {\n if (isLoading) {\n return
loading...
;\n }\n return <>{children};\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"./logo\";\n\ntype Props = {\n title: string;\n};\n\nexport function PageTitle({ title }: Props) {\n return (\n
\n \n \n \n
\n \n [back]\n \n

{title}

\n
\n
\n );\n}\n", "import React from \"react\";\n\ntype LogoProps = {\n width: number;\n height: number;\n className?: string;\n};\n\nfunction FlipsideLogo({ className, width, height }: LogoProps) {\n return (\n \n \n \n );\n}\n\nexport { FlipsideLogo };\n", "type Props = {\n children: React.ReactNode;\n};\nexport function QueryPreview({ children }: Props) {\n return (\n \n {children}\n \n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet;\n};\n\nexport function QueryResultTable({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n \n \n \n {queryResultSet.columns.map((column, i) => {\n return (\n \n );\n })}\n \n \n \n {queryResultSet.rows.map((row, i) => {\n return (\n \n {row.map((cell, j) => (\n \n ))}\n \n );\n })}\n \n
\n {column}\n
\n {cell}\n
\n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function QueryStats({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n
\n

\n Query Stats\n

\n
\n \n \n
\n
\n );\n}\n\ntype StatProps = {\n name: string;\n stat: string;\n};\n\nfunction Stat({ name, stat }: StatProps) {\n return (\n \n
{name}
\n
{stat}
\n \n );\n}\n", "import { AiFillGithub } from \"react-icons/ai\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { FlipsideLogo } from \"./logo\";\n\nexport function AppFooter() {\n return (\n <>\n
\n
\n \n
\n
\n \n

\n © COPYRIGHT {new Date().getFullYear()} FLIPSIDE CRYPTO\n

\n
\n
\n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address,\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `select nft_address, mint_price_eth, mint_price_usd from flipside_prod_db.ethereum_core.ez_nft_mints where nft_to_address = LOWER('${nextAddress}')`,\n ttlMinutes: 10,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
nft_address,\n
mint_price_eth,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.ez_nft_mints\n
\n WHERE\n
nft_to_address=\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"~/components/logo\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { AiFillGithub } from \"react-icons/ai\";\n\nexport default function Index() {\n return (\n <>\n
\n \n

\n FlipsideCrypto SDK\n

\n
\n \n yarn add @flipsidecrypto/sdk\n \n \n \n \n
\n

\n \n \n Blockchain Data Where You Want It -- Join the Alpha\n \n

\n\n

\n \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47 try it! \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n

\n
    \n
  1. \n \n NFT Mints\n

    \n what NFTs have been minted at an address?\n

    \n \n
  2. \n
  3. \n \n Top Contracts\n

    \n what contract does a particular address interact with the most?\n

    \n \n
  4. \n
\n
\n \n \n );\n}\n", "export default {'version':'5f2c8bf5','entry':{'module':'/build/entry.client-GW5EOPBU.js','imports':['/build/_shared/chunk-DXUJXU74.js']},'routes':{'root':{'id':'root','parentId':undefined,'path':'','index':undefined,'caseSensitive':undefined,'module':'/build/root-ORTC7HOC.js','imports':undefined,'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/index':{'id':'routes/index','parentId':'root','path':undefined,'index':true,'caseSensitive':undefined,'module':'/build/routes/index-QKLO2P53.js','imports':['/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':false,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/nft-mints':{'id':'routes/nft-mints','parentId':'root','path':'nft-mints','index':undefined,'caseSensitive':undefined,'module':'/build/routes/nft-mints-QX6FONEU.js','imports':['/build/_shared/chunk-ESVKE4EU.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/top-contracts':{'id':'routes/top-contracts','parentId':'root','path':'top-contracts','index':undefined,'caseSensitive':undefined,'module':'/build/routes/top-contracts-PA6HGTAJ.js','imports':['/build/_shared/chunk-ESVKE4EU.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false}},'url':'/build/manifest-5F2C8BF5.js'};", "\nimport * as entryServer from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/entry.server.tsx\";\nimport * as route0 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx\";\nimport * as route1 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx\";\nimport * as route2 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx\";\nimport * as route3 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx\";\n export { default as assets } from \"@remix-run/dev/assets-manifest\";\n export const entry = { module: entryServer };\n export const routes = {\n \"root\": {\n id: \"root\",\n parentId: undefined,\n path: \"\",\n index: undefined,\n caseSensitive: undefined,\n module: route0\n },\n \"routes/top-contracts\": {\n id: \"routes/top-contracts\",\n parentId: \"root\",\n path: \"top-contracts\",\n index: undefined,\n caseSensitive: undefined,\n module: route1\n },\n \"routes/nft-mints\": {\n id: \"routes/nft-mints\",\n parentId: \"root\",\n path: \"nft-mints\",\n index: undefined,\n caseSensitive: undefined,\n module: route2\n },\n \"routes/index\": {\n id: \"routes/index\",\n parentId: \"root\",\n path: undefined,\n index: true,\n caseSensitive: undefined,\n module: route3\n }\n };"], + "mappings": "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", "names": [] } diff --git a/playgrounds/js/app/routes/index.tsx b/playgrounds/js/app/routes/index.tsx index 0e1d647..0a44876 100644 --- a/playgrounds/js/app/routes/index.tsx +++ b/playgrounds/js/app/routes/index.tsx @@ -37,8 +37,10 @@ export default function Index() { -

-
    +

    + 👇👇👇 try it! 👇👇👇 +

    +
    1. NFT Mints diff --git a/playgrounds/js/app/tailwind.css b/playgrounds/js/app/tailwind.css index afbc886..b71ab62 100644 --- a/playgrounds/js/app/tailwind.css +++ b/playgrounds/js/app/tailwind.css @@ -501,24 +501,20 @@ Ensure the default browser behavior of the `hidden` attribute. margin-top: 0.25rem; } -.mt-8 { - margin-top: 2rem; +.ml-3 { + margin-left: 0.75rem; } .mt-6 { margin-top: 1.5rem; } -.ml-2 { - margin-left: 0.5rem; +.mt-8 { + margin-top: 2rem; } -.ml-3 { - margin-left: 0.75rem; -} - -.ml-4 { - margin-left: 1rem; +.mt-4 { + margin-top: 1rem; } .inline-block { @@ -687,11 +683,6 @@ Ensure the default browser behavior of the `hidden` attribute. background-color: rgb(249 250 251 / var(--tw-bg-opacity)); } -.bg-gray-300 { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity)); -} - .bg-gray-200 { --tw-bg-opacity: 1; background-color: rgb(229 231 235 / var(--tw-bg-opacity)); @@ -795,11 +786,6 @@ Ensure the default browser behavior of the `hidden` attribute. line-height: 1.75rem; } -.text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; -} - .font-medium { font-weight: 500; } @@ -808,6 +794,10 @@ Ensure the default browser behavior of the `hidden` attribute. font-weight: 600; } +.font-bold { + font-weight: 700; +} + .uppercase { text-transform: uppercase; } @@ -845,11 +835,6 @@ Ensure the default browser behavior of the `hidden` attribute. color: rgb(107 114 128 / var(--tw-text-opacity)); } -.underline { - -webkit-text-decoration-line: underline; - text-decoration-line: underline; -} - .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;