view x/static/js/7663.e79b053a.chunk.js.map @ 125:49f3d3878413 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author fubar
date Sat, 05 Oct 2024 23:58:05 +0000
parents
children
line wrap: on
line source

{"version":3,"file":"static/js/7663.e79b053a.chunk.js","mappings":"0VAIA,SAAe,EAAAA,EAAA,IAA4B,SAAK,OAAQ,CACtDC,EAAG,6HACD,e,0BCoBJ,MAAMC,GAAiBC,EAAAA,EAAAA,OAAK,IAAM,kCAIlC,SAASC,GAAU,IAAEC,IACnB,OACEC,EAAAA,cAACC,EAAAA,EAAS,CACRC,MAAM,MACNC,MAAOJ,EACPK,WAAY,CAAEC,UAAU,GACxBC,QAAQ,SACRC,WAAS,EACTC,QAASC,IACQA,EAAMC,OACdC,QAAQ,GAIvB,CAEA,MA2IA,GA3IoBC,EAAAA,EAAAA,WAAS,UAAU,YACrCC,EAAW,QACXC,IAKA,MAAOC,EAAcC,IAAmBC,EAAAA,EAAAA,UAAS,KAC1CC,EAAeC,IAAoBF,EAAAA,EAAAA,UAAS,KAC5CG,EAAUC,IAAeJ,EAAAA,EAAAA,UAAS,KAClCK,EAASC,IAAcN,EAAAA,EAAAA,UAAS,KAChCO,EAASC,IAAcR,EAAAA,EAAAA,WAAS,IAChCS,EAAOC,IAAYV,EAAAA,EAAAA,aACnBW,EAAoBC,IAAyBZ,EAAAA,EAAAA,WAAS,IACtD,CAAEa,IAAeC,EAAAA,EAAAA,eAAc,WAAYC,EAAAA,cAC3C,CAAEC,IAAcF,EAAAA,EAAAA,eAAc,UAAWC,EAAAA,aAE1CjC,EAAMe,EAAQoB,SACdC,EACJC,aAAaC,QArCkB,qBAqCqB,QAChDC,GAAOC,EAAAA,EAAAA,aAAYzB,IAEzB0B,EAAAA,EAAAA,YAAU,KAEP,WAEC,IAAId,EAGJ,IACE,GAAuB,UAAnBS,EAA4B,CAC9BV,GAAW,GACX,MAAMgB,EAAc,IAAIC,IAAIC,OAAOC,SAASC,MACtCC,QAAeC,EAAAA,EAAAA,GAAqBT,EAAMvC,EAAK0C,EAAYI,MAC3DG,EAAS,IAAIC,gBAAgBR,EAAYS,QAC/CF,EAAOG,IAAI,UAAW,SAASL,EAAOM,KAAKC,aAC3CL,EAAOG,IAAI,WAAYL,EAAOQ,UAC9Bb,EAAYS,OAASF,EAAOO,WAC5BlC,EAAYoB,EAAYI,MAExB7B,EAAgB,SAAS8B,EAAOM,KAAKC,aACrClC,EAAiB2B,EAAOQ,SAC1B,KAAO,CACL,MAAME,QAAaC,EAAAA,EAAAA,IAAaC,KAAKC,WAAUpB,EAAAA,EAAAA,aAAYzB,KACrDQ,EAAU,IAAIoB,IAAIC,OAAOC,SAASC,MAClCe,EAAa,IAAIX,gBAAgB3B,EAAQ4B,QAC/CU,EAAWT,IAAI,UAAW,WAAWK,KACrCxC,EAAgB,WAAWwC,KAC3BlC,EAAQ4B,OAASU,EAAWL,WAC5BhC,EAAWD,EAAQiC,WACrB,CACF,CAAE,MAAOM,GACPlC,EAASkC,EACX,CAAE,QACApC,GAAW,EACb,CACD,EAhCA,EAgCG,GACH,CAACU,EAAgBT,EAAOZ,EAASf,EAAKuC,IAEzC,MAAMwB,EAA+B,UAAnB3B,GAA8BX,KAAcE,EAC9D,OACE1B,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC+D,EAAAA,OAAM,CACLC,SAAS,KACTC,MAAI,EACJC,QAASrD,EACTsD,MAAM,0BAENnE,EAAAA,cAACoE,EAAAA,EAAa,KACZpE,EAAAA,cAACqE,EAAAA,EAAiB,KAAC,4DAEjBrE,EAAAA,cAACsE,EAAAA,EAAU,CACT9D,QAASA,KACPqB,GAAsB,EAAK,GAG7B7B,EAAAA,cAACuE,EAAAA,EAAY,QAIG,UAAnBpC,EACCT,EACE1B,EAAAA,cAACwE,EAAAA,aAAY,CACX9C,MAAOA,EACP+C,QAASA,KACP9C,OAAS+C,EAAU,IAGrBlD,EACFxB,EAAAA,cAAC2E,EAAAA,EAAU,KAAC,2BAEZ3E,EAAAA,cAACF,EAAS,CAACC,IAAKqB,IAGlBpB,EAAAA,cAACF,EAAS,CAACC,IAAKuB,KAGpBtB,EAAAA,cAAC4E,EAAAA,EAAa,KACZ5E,EAAAA,cAAC6E,EAAAA,EAAM,CACLC,UAAW9E,EAAAA,cAAC+E,EAAe,MAC3BjB,SAAUA,EACVtD,QAASC,IACPA,EAAMuE,iBACNlD,EAAYZ,EAAe,aAC3Be,EAAWlB,EAAc,aACzBkE,MAAM,uCAAuC,GAEhD,2BAIDjF,EAAAA,cAAC6E,EAAAA,EAAM,CACLrE,QAASA,KACP0E,IAAK9D,GAAYE,GACjBR,EAAQqE,OAAO,sBAAuB,UAAU,EAElDL,UAAW9E,EAAAA,cAACoF,EAAAA,GAAe,MAC3BtB,SAAUA,GACX,qBAID9D,EAAAA,cAAC6E,EAAAA,EAAM,CAACrE,QAASK,EAAawE,WAAS,GAAC,WAM5CrF,EAAAA,cAACJ,EAAc,CACbqE,KAAMrC,EACNsC,QAASA,KACPrC,GAAsB,EAAM,EAE9BM,eAAgBA,IAIxB,G","sources":["../../../node_modules/@mui/icons-material/esm/BookmarkAdd.js","components/ShareDialog.tsx"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M21 7h-2v2h-2V7h-2V5h2V3h2v2h2zm-2 14-7-3-7 3V5c0-1.1.9-2 2-2h7c-.63.84-1 1.87-1 3 0 2.76 2.24 5 5 5 .34 0 .68-.03 1-.1z\"\n}), 'BookmarkAdd');","import React, { useState, useEffect, lazy } from 'react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui'\nimport {\n  Button,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n  IconButton,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport copy from 'copy-to-clipboard'\nimport { StringParam, useQueryParam } from 'use-query-params'\nimport { AbstractSessionModel } from '@jbrowse/core/util'\n\n// icons\nimport SettingsIcon from '@mui/icons-material/Settings'\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport BookmarkAddIcon from '@mui/icons-material/BookmarkAdd'\n\n// locals\nimport { toUrlSafeB64 } from '../util'\nimport { shareSessionToDynamo } from '../sessionSharing'\n\nconst SettingsDialog = lazy(() => import('./ShareSettingsDialog'))\n\nconst SHARE_URL_LOCALSTORAGE_KEY = 'jbrowse-shareURL'\n\nfunction LinkField({ url }: { url: string }) {\n  return (\n    <TextField\n      label=\"URL\"\n      value={url}\n      InputProps={{ readOnly: true }}\n      variant=\"filled\"\n      fullWidth\n      onClick={event => {\n        const target = event.target as HTMLTextAreaElement\n        target.select()\n      }}\n    />\n  )\n}\n\nconst ShareDialog = observer(function ({\n  handleClose,\n  session,\n}: {\n  handleClose: () => void\n  session: AbstractSessionModel & { shareURL: string }\n}) {\n  const [sessionParam, setSessionParam] = useState('')\n  const [passwordParam, setPasswordParam] = useState('')\n  const [shortUrl, setShortUrl] = useState('')\n  const [longUrl, setLongUrl] = useState('')\n  const [loading, setLoading] = useState(true)\n  const [error, setError] = useState<unknown>()\n  const [settingsDialogOpen, setSettingsDialogOpen] = useState(false)\n  const [, setPassword] = useQueryParam('password', StringParam)\n  const [, setSession] = useQueryParam('session', StringParam)\n\n  const url = session.shareURL\n  const currentSetting =\n    localStorage.getItem(SHARE_URL_LOCALSTORAGE_KEY) || 'short'\n  const snap = getSnapshot(session)\n\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      // checking !error allows retry when error state is cleared\n      if (error) {\n        return\n      }\n      try {\n        if (currentSetting === 'short') {\n          setLoading(true)\n          const locationUrl = new URL(window.location.href)\n          const result = await shareSessionToDynamo(snap, url, locationUrl.href)\n          const params = new URLSearchParams(locationUrl.search)\n          params.set('session', `share-${result.json.sessionId}`)\n          params.set('password', result.password)\n          locationUrl.search = params.toString()\n          setShortUrl(locationUrl.href)\n\n          setSessionParam(`share-${result.json.sessionId}`)\n          setPasswordParam(result.password)\n        } else {\n          const sess = await toUrlSafeB64(JSON.stringify(getSnapshot(session)))\n          const longUrl = new URL(window.location.href)\n          const longParams = new URLSearchParams(longUrl.search)\n          longParams.set('session', `encoded-${sess}`)\n          setSessionParam(`encoded-${sess}`)\n          longUrl.search = longParams.toString()\n          setLongUrl(longUrl.toString())\n        }\n      } catch (e) {\n        setError(e)\n      } finally {\n        setLoading(false)\n      }\n    })()\n  }, [currentSetting, error, session, url, snap])\n\n  const disabled = (currentSetting === 'short' && loading) || !!error\n  return (\n    <>\n      <Dialog\n        maxWidth=\"xl\"\n        open\n        onClose={handleClose}\n        title=\"JBrowse Shareable Link\"\n      >\n        <DialogContent>\n          <DialogContentText>\n            Copy the URL below to share your current JBrowse session.\n            <IconButton\n              onClick={() => {\n                setSettingsDialogOpen(true)\n              }}\n            >\n              <SettingsIcon />\n            </IconButton>\n          </DialogContentText>\n\n          {currentSetting === 'short' ? (\n            error ? (\n              <ErrorMessage\n                error={error}\n                onReset={() => {\n                  setError(undefined)\n                }}\n              />\n            ) : loading ? (\n              <Typography>Generating short URL...</Typography>\n            ) : (\n              <LinkField url={shortUrl} />\n            )\n          ) : (\n            <LinkField url={longUrl} />\n          )}\n        </DialogContent>\n        <DialogActions>\n          <Button\n            startIcon={<BookmarkAddIcon />}\n            disabled={disabled}\n            onClick={event => {\n              event.preventDefault()\n              setPassword(passwordParam, 'replaceIn')\n              setSession(sessionParam, 'replaceIn')\n              alert('Now press Ctrl+D (PC) or Cmd+D (Mac)')\n            }}\n          >\n            Create browser Bookmark\n          </Button>\n\n          <Button\n            onClick={() => {\n              copy(shortUrl || longUrl)\n              session.notify('Copied to clipboard', 'success')\n            }}\n            startIcon={<ContentCopyIcon />}\n            disabled={disabled}\n          >\n            Copy to Clipboard\n          </Button>\n\n          <Button onClick={handleClose} autoFocus>\n            Close\n          </Button>\n        </DialogActions>\n      </Dialog>\n\n      <SettingsDialog\n        open={settingsDialogOpen}\n        onClose={() => {\n          setSettingsDialogOpen(false)\n        }}\n        currentSetting={currentSetting}\n      />\n    </>\n  )\n})\n\nexport default ShareDialog\n"],"names":["createSvgIcon","d","SettingsDialog","lazy","LinkField","url","React","TextField","label","value","InputProps","readOnly","variant","fullWidth","onClick","event","target","select","observer","handleClose","session","sessionParam","setSessionParam","useState","passwordParam","setPasswordParam","shortUrl","setShortUrl","longUrl","setLongUrl","loading","setLoading","error","setError","settingsDialogOpen","setSettingsDialogOpen","setPassword","useQueryParam","StringParam","setSession","shareURL","currentSetting","localStorage","getItem","snap","getSnapshot","useEffect","locationUrl","URL","window","location","href","result","shareSessionToDynamo","params","URLSearchParams","search","set","json","sessionId","password","toString","sess","toUrlSafeB64","JSON","stringify","longParams","e","disabled","Dialog","maxWidth","open","onClose","title","DialogContent","DialogContentText","IconButton","SettingsIcon","ErrorMessage","onReset","undefined","Typography","DialogActions","Button","startIcon","BookmarkAddIcon","preventDefault","alert","copy","notify","ContentCopyIcon","autoFocus"],"sourceRoot":""}