sanity-plugin-dashboard-widget-netlify

3.0.143.0.15
dist/index.js.map
~dist/index.js.mapModified
+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["FunctionComponent","PropsWithChildren","Link","props","$","_c","url","children","t0","Props","adminUrl","Links","t1","t2","Button","Flex","Box","Card","Text","Stack","Label","FunctionComponent","useCallback","useEffect","useRef","useState","DeployAction","Site","Links","Props","site","onDeploy","IMAGE_PULL_INTERVAL","getImageUrl","siteId","branchName","baseUrl","time","Date","getTime","branch","useBadgeImage","$","_c","t0","src","setSrc","t1","update","t2","t3","interval","window","setInterval","clearInterval","t4","const","useDeploy","updateBadge","timeoutRef","Symbol","for","clearTimeout","current","setTimeout","SiteItem","props","hasBadgeError","setHasBadgeError","id","name","title","url","adminUrl","buildHookId","badge","handleDeploy","handleBadgeError","t5","t6","t7","t8","t9","Flex","Box","Card","Text","Spinner","Stack","DeployAction","Site","SiteItem","Props","isLoading","sites","onDeploy","SiteList","props","$","_c","t0","Symbol","for","t1","length","site","id","map","DashboardWidgetContainer","Button","Flex","Card","Text","Box","styled","NetlifyWidgetProps","SiteList","ContentCard","NetlifyWidget","props","$","_c","title","description","isLoading","sites","onDeploy","t0","undefined","t1","footer","t2","__html","t3","t4","t5","ReactNode","NetlifyWidget","Site","SiteWidgetOption","WidgetOptions","DEFAULT_TITLE","toSite","option","apiId","name","title","buildHookId","url","branch","id","undefined","adminUrl","deploy","site","fetch","method","catch","Widget","options","$","_c","t0","sites","t1","map","t2","t3","description","DashboardWidget","LayoutConfig","WidgetOptions","Widget","NetlifyWidgetConfig","layout","netlifyWidget","config","name","component","width"],"sources":["../src/components/SiteItem/Links.tsx","../src/components/SiteItem/index.tsx","../src/components/SiteList.tsx","../src/components/NetlifyWidget.tsx","../src/widget.tsx","../src/plugin.tsx"],"sourcesContent":["import type {FunctionComponent, PropsWithChildren} from 'react'\n\nconst Link = (props: PropsWithChildren<{url: string}>) => {\n  const {url, children} = props\n\n  return (\n    <span>\n      <a href={url} target=\"_blank\" rel=\"noreferrer\">\n        {children}\n      </a>\n    </span>\n  )\n}\n\ntype Props = {\n  url?: string\n  adminUrl?: string\n}\n\nconst Links: FunctionComponent<Props> = (props) => {\n  const {url, adminUrl} = props\n\n  if (url && adminUrl) {\n    return (\n      <span>\n        (<Link url={url}>view</Link>, <Link url={adminUrl}>admin</Link>)\n      </span>\n    )\n  }\n\n  if (url) {\n    return <Link url={url}>(view)</Link>\n  }\n  if (adminUrl) {\n    return <Link url={adminUrl}>(admin)</Link>\n  }\n  return null\n}\n\nexport default Links\n","import {Button, Flex, Box, Card, Text, Stack, Label} from '@sanity/ui'\nimport {type FunctionComponent, useCallback, useEffect, useRef, useState} from 'react'\n\nimport {type DeployAction, type Site} from '../../types'\nimport Links from './Links'\n\ninterface Props {\n  site: Site\n  onDeploy: DeployAction\n}\n\nconst IMAGE_PULL_INTERVAL = 10000\n\nconst getImageUrl = (siteId: string, branchName?: string) => {\n  const baseUrl = `https://api.netlify.com/api/v1/badges/${siteId}/deploy-status`\n  const time = new Date().getTime()\n  const branch = `branch=${branchName}`\n\n  return branchName ? `${baseUrl}?${time}&${branch}` : `${baseUrl}?${time}`\n}\n\nconst useBadgeImage = (siteId: string, branchName?: string) => {\n  const [src, setSrc] = useState(() => getImageUrl(siteId, branchName))\n  const update = useCallback(() => setSrc(getImageUrl(siteId, branchName)), [siteId, branchName])\n\n  useEffect(() => {\n    const interval = window.setInterval(update, IMAGE_PULL_INTERVAL)\n    return () => window.clearInterval(interval)\n  }, [update])\n\n  return [src, update] as const\n}\n\nconst useDeploy = (site: Site, onDeploy: DeployAction, updateBadge: () => void) => {\n  const timeoutRef = useRef(-1)\n  useEffect(() => () => window.clearTimeout(timeoutRef.current), [])\n\n  return useCallback(() => {\n    onDeploy(site)\n    timeoutRef.current = window.setTimeout(updateBadge, 1000)\n  }, [site, onDeploy, updateBadge])\n}\n\nconst SiteItem: FunctionComponent<Props> = (props) => {\n  const [hasBadgeError, setHasBadgeError] = useState(false)\n  const {site, onDeploy} = props\n  const {id, name, title, url, adminUrl, buildHookId, branch} = site\n\n  const [badge, updateBadge] = useBadgeImage(id, branch)\n  const handleDeploy = useDeploy(site, onDeploy, updateBadge)\n  const handleBadgeError = () => {\n    setHasBadgeError(true)\n  }\n\n  return (\n    <Flex as=\"li\">\n      <Box flex={1} paddingY={2} paddingX={3}>\n        <Stack gap={2}>\n          <Text as=\"h4\">\n            {title || name}\n            <Links url={url} adminUrl={adminUrl} />\n          </Text>\n\n          <Flex justify=\"flex-start\">\n            {!hasBadgeError && <img src={badge} onError={handleBadgeError} alt=\"Badge\" />}\n            {hasBadgeError && (\n              <Card tone=\"critical\" radius={2} padding={2}>\n                <Label size={0} muted>\n                  Failed to load badge\n                </Label>\n              </Card>\n            )}\n          </Flex>\n        </Stack>\n      </Box>\n\n      {buildHookId ? (\n        <Box paddingY={2} paddingX={3}>\n          <Button mode=\"ghost\" onClick={handleDeploy} text=\"Deploy\" />\n        </Box>\n      ) : null}\n    </Flex>\n  )\n}\n\nexport default SiteItem\n","import {Flex, Box, Card, Text, Spinner, Stack} from '@sanity/ui'\n\nimport {type DeployAction, type Site} from '../types'\nimport SiteItem from './SiteItem'\n\ninterface Props {\n  isLoading: boolean\n  sites?: Site[]\n  onDeploy: DeployAction\n}\n\nexport default function SiteList(props: Props) {\n  const {isLoading, onDeploy, sites} = props\n  if (isLoading) {\n    return (\n      <Card padding={4}>\n        <Flex direction=\"column\" justify=\"center\" align=\"center\">\n          <Spinner muted />\n          <Box marginTop={3}>\n            <Text muted>Loading sites…</Text>\n          </Box>\n        </Flex>\n      </Card>\n    )\n  }\n  if (!sites || (sites && sites.length === 0)) {\n    return (\n      <Card tone=\"critical\" padding={3}>\n        <Text>No sites are defined in the widget options. Please check your config.</Text>\n      </Card>\n    )\n  }\n  return (\n    <Box paddingY={2}>\n      <Stack as=\"ul\" gap={2}>\n        {sites.map((site) => {\n          return <SiteItem onDeploy={onDeploy} site={site} key={site.id} />\n        })}\n      </Stack>\n    </Box>\n  )\n}\n","import {DashboardWidgetContainer} from '@sanity/dashboard'\nimport {Button, Flex, Card, Text, Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type NetlifyWidgetProps} from '../types'\nimport SiteList from './SiteList'\n\nconst ContentCard = styled(Card)`\n  min-height: 66px;\n`\n\nexport default function NetlifyWidget(props: NetlifyWidgetProps) {\n  const netlifySitesUrl = 'https://app.netlify.com/account/sites'\n  const {title, description, isLoading, sites, onDeploy} = props\n\n  const footer = (\n    <Flex direction=\"column\" align=\"stretch\">\n      <Button\n        as=\"a\"\n        href={isLoading ? undefined : netlifySitesUrl}\n        paddingX={2}\n        paddingY={4}\n        mode=\"bleed\"\n        tone=\"primary\"\n        text=\"Manage sites at Netlify\"\n        loading={isLoading}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n      />\n    </Flex>\n  )\n\n  return (\n    <DashboardWidgetContainer header={title} footer={footer}>\n      <ContentCard paddingY={1}>\n        {description && (\n          <Box paddingY={3} paddingX={3}>\n            <Text as=\"p\" size={1} muted>\n              <span dangerouslySetInnerHTML={{__html: description}} />\n            </Text>\n          </Box>\n        )}\n        <SiteList isLoading={isLoading} onDeploy={onDeploy} sites={sites} />\n      </ContentCard>\n    </DashboardWidgetContainer>\n  )\n}\n","import type {ReactNode} from 'react'\n\nimport NetlifyWidget from './components/NetlifyWidget'\nimport type {Site, SiteWidgetOption, WidgetOptions} from './types'\n\nconst DEFAULT_TITLE = 'Netlify sites'\n\nfunction toSite(option: SiteWidgetOption): Site {\n  const {apiId, name, title, buildHookId, url, branch} = option\n\n  return {\n    id: apiId,\n    name,\n    title,\n    buildHookId,\n    url:\n      url ||\n      (branch && name ? `https://${branch}--${name}.netlify.app/` : undefined) ||\n      (name ? `https://${name}.netlify.app/` : undefined),\n    adminUrl: name ? `https://app.netlify.com/sites/${name}` : undefined,\n    branch,\n  }\n}\n\nfunction deploy(site: Site): void {\n  if (!site.buildHookId) {\n    return\n  }\n\n  fetch(`https://api.netlify.com/build_hooks/${site.buildHookId}`, {method: 'POST'}).catch(() => {\n    // Build hook failures are intentionally ignored; the deploy badge will\n    // keep reflecting the actual deploy status of the site.\n  })\n}\n\nexport default function Widget(options: WidgetOptions): ReactNode {\n  const sites = (options.sites || []).map(toSite)\n\n  return (\n    <NetlifyWidget\n      title={options.title || DEFAULT_TITLE}\n      description={options.description}\n      sites={sites}\n      isLoading={false}\n      onDeploy={deploy}\n    />\n  )\n}\n","import {type DashboardWidget, type LayoutConfig} from '@sanity/dashboard'\n\nimport {type WidgetOptions} from './types'\nimport Widget from './widget'\n\nexport type NetlifyWidgetConfig = WidgetOptions & {layout?: LayoutConfig}\n\nexport function netlifyWidget(config: NetlifyWidgetConfig): DashboardWidget {\n  return {\n    name: 'netlify-widget',\n    component: () => {\n      return <Widget {...config} />\n    },\n    layout: config.layout ?? {width: 'medium'},\n  }\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["FunctionComponent","PropsWithChildren","Link","props","$","_c","url","children","t0","Props","adminUrl","Links","t1","t2","Button","Flex","Box","Card","Text","Stack","Label","FunctionComponent","useCallback","useEffect","useRef","useState","DeployAction","Site","Links","Props","site","onDeploy","IMAGE_PULL_INTERVAL","getImageUrl","siteId","branchName","baseUrl","time","Date","getTime","branch","useBadgeImage","$","_c","t0","src","setSrc","t1","update","t2","t3","interval","window","setInterval","clearInterval","t4","const","useDeploy","updateBadge","timeoutRef","Symbol","for","clearTimeout","current","setTimeout","SiteItem","props","hasBadgeError","setHasBadgeError","id","name","title","url","adminUrl","buildHookId","badge","handleDeploy","handleBadgeError","t5","t6","t7","t8","t9","Flex","Box","Card","Text","Spinner","Stack","DeployAction","Site","SiteItem","Props","isLoading","sites","onDeploy","SiteList","props","$","_c","t0","Symbol","for","t1","length","site","id","map","DashboardWidgetContainer","Button","Flex","Card","Text","Box","styled","NetlifyWidgetProps","SiteList","ContentCard","NetlifyWidget","props","$","_c","title","description","isLoading","sites","onDeploy","t0","undefined","t1","footer","t2","__html","t3","t4","t5","ReactNode","NetlifyWidget","Site","SiteWidgetOption","WidgetOptions","DEFAULT_TITLE","toSite","option","apiId","name","title","buildHookId","url","branch","id","undefined","adminUrl","deploy","site","fetch","method","catch","Widget","options","$","_c","t0","sites","t1","map","t2","t3","description","DashboardWidget","LayoutConfig","WidgetOptions","Widget","NetlifyWidgetConfig","layout","netlifyWidget","config","name","component","width"],"sources":["../src/components/SiteItem/Links.tsx","../src/components/SiteItem/index.tsx","../src/components/SiteList.tsx","../src/components/NetlifyWidget.tsx","../src/widget.tsx","../src/plugin.tsx"],"sourcesContent":["import type {FunctionComponent, PropsWithChildren} from 'react'\n\nconst Link = (props: PropsWithChildren<{url: string}>) => {\n  const {url, children} = props\n\n  return (\n    <span>\n      <a href={url} target=\"_blank\" rel=\"noreferrer\">\n        {children}\n      </a>\n    </span>\n  )\n}\n\ntype Props = {\n  url?: string\n  adminUrl?: string\n}\n\nconst Links: FunctionComponent<Props> = (props) => {\n  const {url, adminUrl} = props\n\n  if (url && adminUrl) {\n    return (\n      <span>\n        (<Link url={url}>view</Link>, <Link url={adminUrl}>admin</Link>)\n      </span>\n    )\n  }\n\n  if (url) {\n    return <Link url={url}>(view)</Link>\n  }\n  if (adminUrl) {\n    return <Link url={adminUrl}>(admin)</Link>\n  }\n  return null\n}\n\nexport default Links\n","import {Button, Flex, Box, Card, Text, Stack, Label} from '@sanity/ui'\nimport {type FunctionComponent, useCallback, useEffect, useRef, useState} from 'react'\n\nimport {type DeployAction, type Site} from '../../types'\nimport Links from './Links'\n\ninterface Props {\n  site: Site\n  onDeploy: DeployAction\n}\n\nconst IMAGE_PULL_INTERVAL = 10000\n\nconst getImageUrl = (siteId: string, branchName?: string) => {\n  const baseUrl = `https://api.netlify.com/api/v1/badges/${siteId}/deploy-status`\n  const time = new Date().getTime()\n  const branch = `branch=${branchName}`\n\n  return branchName ? `${baseUrl}?${time}&${branch}` : `${baseUrl}?${time}`\n}\n\nconst useBadgeImage = (siteId: string, branchName?: string) => {\n  const [src, setSrc] = useState(() => getImageUrl(siteId, branchName))\n  const update = useCallback(() => setSrc(getImageUrl(siteId, branchName)), [siteId, branchName])\n\n  useEffect(() => {\n    const interval = window.setInterval(update, IMAGE_PULL_INTERVAL)\n    return () => window.clearInterval(interval)\n  }, [update])\n\n  return [src, update] as const\n}\n\nconst useDeploy = (site: Site, onDeploy: DeployAction, updateBadge: () => void) => {\n  const timeoutRef = useRef(-1)\n  useEffect(() => () => window.clearTimeout(timeoutRef.current), [])\n\n  return useCallback(() => {\n    onDeploy(site)\n    timeoutRef.current = window.setTimeout(updateBadge, 1000)\n  }, [site, onDeploy, updateBadge])\n}\n\nconst SiteItem: FunctionComponent<Props> = (props) => {\n  const [hasBadgeError, setHasBadgeError] = useState(false)\n  const {site, onDeploy} = props\n  const {id, name, title, url, adminUrl, buildHookId, branch} = site\n\n  const [badge, updateBadge] = useBadgeImage(id, branch)\n  const handleDeploy = useDeploy(site, onDeploy, updateBadge)\n  const handleBadgeError = () => {\n    setHasBadgeError(true)\n  }\n\n  return (\n    <Flex as=\"li\">\n      <Box flex={1} paddingY={2} paddingX={3}>\n        <Stack gap={2}>\n          <Text as=\"h4\">\n            {title || name}\n            <Links url={url} adminUrl={adminUrl} />\n          </Text>\n\n          <Flex justify=\"flex-start\">\n            {!hasBadgeError && <img src={badge} onError={handleBadgeError} alt=\"Badge\" />}\n            {hasBadgeError && (\n              <Card tone=\"critical\" radius={2} padding={2}>\n                <Label size={0} muted>\n                  Failed to load badge\n                </Label>\n              </Card>\n            )}\n          </Flex>\n        </Stack>\n      </Box>\n\n      {buildHookId ? (\n        <Box paddingY={2} paddingX={3}>\n          <Button mode=\"ghost\" onClick={handleDeploy} text=\"Deploy\" />\n        </Box>\n      ) : null}\n    </Flex>\n  )\n}\n\nexport default SiteItem\n","import {Flex, Box, Card, Text, Spinner, Stack} from '@sanity/ui'\n\nimport {type DeployAction, type Site} from '../types'\nimport SiteItem from './SiteItem'\n\ninterface Props {\n  isLoading: boolean\n  sites?: Site[]\n  onDeploy: DeployAction\n}\n\nexport default function SiteList(props: Props) {\n  const {isLoading, onDeploy, sites} = props\n  if (isLoading) {\n    return (\n      <Card padding={4}>\n        <Flex direction=\"column\" justify=\"center\" align=\"center\">\n          <Spinner muted />\n          <Box marginTop={3}>\n            <Text muted>Loading sites…</Text>\n          </Box>\n        </Flex>\n      </Card>\n    )\n  }\n  if (!sites || (sites && sites.length === 0)) {\n    return (\n      <Card tone=\"critical\" padding={3}>\n        <Text>No sites are defined in the widget options. Please check your config.</Text>\n      </Card>\n    )\n  }\n  return (\n    <Box paddingY={2}>\n      <Stack as=\"ul\" gap={2}>\n        {sites.map((site) => {\n          return <SiteItem onDeploy={onDeploy} site={site} key={site.id} />\n        })}\n      </Stack>\n    </Box>\n  )\n}\n","import {DashboardWidgetContainer} from '@sanity/dashboard'\nimport {Button, Flex, Card, Text, Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type NetlifyWidgetProps} from '../types'\nimport SiteList from './SiteList'\n\nconst ContentCard = styled(Card)`\n  min-height: 66px;\n`\n\nexport default function NetlifyWidget(props: NetlifyWidgetProps) {\n  const netlifySitesUrl = 'https://app.netlify.com/account/sites'\n  const {title, description, isLoading, sites, onDeploy} = props\n\n  const footer = (\n    <Flex direction=\"column\" align=\"stretch\">\n      <Button\n        as=\"a\"\n        href={isLoading ? undefined : netlifySitesUrl}\n        paddingX={2}\n        paddingY={4}\n        mode=\"bleed\"\n        tone=\"primary\"\n        text=\"Manage sites at Netlify\"\n        loading={isLoading}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n      />\n    </Flex>\n  )\n\n  return (\n    <DashboardWidgetContainer header={title} footer={footer}>\n      <ContentCard paddingY={1}>\n        {description && (\n          <Box paddingY={3} paddingX={3}>\n            <Text as=\"p\" size={1} muted>\n              <span dangerouslySetInnerHTML={{__html: description}} />\n            </Text>\n          </Box>\n        )}\n        <SiteList isLoading={isLoading} onDeploy={onDeploy} sites={sites} />\n      </ContentCard>\n    </DashboardWidgetContainer>\n  )\n}\n","import type {ReactNode} from 'react'\n\nimport NetlifyWidget from './components/NetlifyWidget'\nimport type {Site, SiteWidgetOption, WidgetOptions} from './types'\n\nconst DEFAULT_TITLE = 'Netlify sites'\n\nfunction toSite(option: SiteWidgetOption): Site {\n  const {apiId, name, title, buildHookId, url, branch} = option\n\n  return {\n    id: apiId,\n    name,\n    title,\n    buildHookId,\n    url:\n      url ||\n      (branch && name ? `https://${branch}--${name}.netlify.app/` : undefined) ||\n      (name ? `https://${name}.netlify.app/` : undefined),\n    adminUrl: name ? `https://app.netlify.com/sites/${name}` : undefined,\n    branch,\n  }\n}\n\nfunction deploy(site: Site): void {\n  if (!site.buildHookId) {\n    return\n  }\n\n  fetch(`https://api.netlify.com/build_hooks/${site.buildHookId}`, {method: 'POST'}).catch(() => {\n    // Build hook failures are intentionally ignored; the deploy badge will\n    // keep reflecting the actual deploy status of the site.\n  })\n}\n\nexport default function Widget(options: WidgetOptions): ReactNode {\n  const sites = (options.sites || []).map(toSite)\n\n  return (\n    <NetlifyWidget\n      title={options.title || DEFAULT_TITLE}\n      description={options.description}\n      sites={sites}\n      isLoading={false}\n      onDeploy={deploy}\n    />\n  )\n}\n","import {type DashboardWidget, type LayoutConfig} from '@sanity/dashboard'\n\nimport {type WidgetOptions} from './types'\nimport Widget from './widget'\n\nexport type NetlifyWidgetConfig = WidgetOptions & {layout?: LayoutConfig}\n\nexport function netlifyWidget(config: NetlifyWidgetConfig): DashboardWidget {\n  return {\n    name: 'netlify-widget',\n    component: () => {\n      return <Widget {...config} />\n    },\n    layout: config.layout ?? {width: 'medium'},\n  }\n}\n"],"mappings":"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"}
\ No newline at end of file