view x/static/js/8546.0a89cbee.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/8546.0a89cbee.chunk.js","mappings":"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","sources":["../../../plugins/spreadsheet-view/src/SpreadsheetView/components/NumberEditor.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ImportWizard.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/RowMenu.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/CellData.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataRow.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ColumnMenu.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/SortIndicator.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/util.ts","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataTableHeader.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/DataTable.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/Spreadsheet.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/GlobalFilterControls.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/ColumnFilterControls.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/RowCountMessage.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/StatusBar.tsx","../../../plugins/spreadsheet-view/src/SpreadsheetView/components/SpreadsheetView.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { TextField } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { ImportWizardModel } from '../models/ImportWizard'\n\nconst useStyles = makeStyles()({\n  textField: {\n    width: '2rem',\n    verticalAlign: 'baseline',\n  },\n})\n\nconst NumberEditor = observer(function ({\n  model,\n  disabled,\n  modelPropName,\n  modelSetterName,\n}: {\n  model: ImportWizardModel\n  disabled: boolean\n  modelPropName: string\n  modelSetterName: string\n}) {\n  // @ts-expect-error\n  const [val, setVal] = useState(model[modelPropName])\n  const { classes } = useStyles()\n  useEffect(() => {\n    const num = Number.parseInt(val, 10)\n    if (!Number.isNaN(num)) {\n      if (num > 0) {\n        // @ts-expect-error\n        model[modelSetterName](num)\n      } else {\n        setVal(1)\n      }\n    }\n  }, [model, modelSetterName, val])\n  return (\n    <TextField\n      value={val}\n      disabled={disabled}\n      type=\"number\"\n      onChange={evt => {\n        setVal(evt.target.value)\n      }}\n      className={classes.textField}\n    />\n  )\n})\n\nexport default NumberEditor\n","import React, { useState } from 'react'\nimport {\n  Button,\n  Checkbox,\n  FormControl,\n  FormGroup,\n  FormLabel,\n  FormControlLabel,\n  RadioGroup,\n  Radio,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getRoot } from 'mobx-state-tree'\nimport { AbstractRootModel, getSession } from '@jbrowse/core/util'\nimport { FileSelector, ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { ImportWizardModel } from '../models/ImportWizard'\nimport NumberEditor from './NumberEditor'\nimport { makeStyles } from 'tss-react/mui'\n\nconst useStyles = makeStyles()({\n  container: {\n    margin: '0 auto',\n    maxWidth: '25em',\n    padding: 20,\n  },\n})\n\nconst ImportWizard = observer(({ model }: { model: ImportWizardModel }) => {\n  const session = getSession(model)\n  const { classes } = useStyles()\n  const { assemblyNames, assemblyManager } = session\n  const {\n    fileType,\n    canCancel,\n    fileSource,\n    isReadyToOpen,\n    fileTypes,\n    hasColumnNameLine,\n    error,\n  } = model\n  const [selected, setSelected] = useState(assemblyNames[0])\n  const err = assemblyManager.get(selected!)?.error || error\n  const showRowControls = fileType === 'CSV' || fileType === 'TSV'\n  const rootModel = getRoot(model)\n\n  return (\n    <div className={classes.container}>\n      {err ? <ErrorMessage error={err} /> : null}\n      <div>\n        <FormControl component=\"fieldset\">\n          <FormLabel component=\"legend\">Tabular file</FormLabel>\n          <FormGroup>\n            <FileSelector\n              location={fileSource}\n              setLocation={arg => {\n                model.setFileSource(arg)\n              }}\n              rootModel={rootModel as AbstractRootModel}\n            />\n          </FormGroup>\n        </FormControl>\n      </div>\n      <div>\n        <FormControl component=\"fieldset\">\n          <FormLabel component=\"legend\">File Type</FormLabel>\n          <RadioGroup row aria-label=\"file type\" name=\"type\" value={fileType}>\n            {fileTypes.map(fileTypeName => (\n              <FormControlLabel\n                key={fileTypeName}\n                checked={fileType === fileTypeName}\n                value={fileTypeName}\n                onClick={() => {\n                  model.setFileType(fileTypeName)\n                }}\n                control={<Radio />}\n                label={fileTypeName}\n              />\n            ))}\n          </RadioGroup>\n        </FormControl>\n      </div>\n      {showRowControls ? (\n        <div>\n          <FormControl component=\"fieldset\">\n            <FormLabel component=\"legend\">Column Names</FormLabel>\n            <FormControlLabel\n              disabled={!showRowControls}\n              label=\"has column names on line\"\n              labelPlacement=\"end\"\n              control={\n                <Checkbox\n                  checked={hasColumnNameLine}\n                  onClick={() => {\n                    model.toggleHasColumnNameLine()\n                  }}\n                />\n              }\n            />\n            <NumberEditor\n              model={model}\n              disabled={!hasColumnNameLine}\n              modelPropName=\"columnNameLineNumber\"\n              modelSetterName=\"setColumnNameLineNumber\"\n            />\n          </FormControl>\n        </div>\n      ) : null}\n      <div>\n        <AssemblySelector\n          session={session}\n          selected={selected}\n          onChange={val => {\n            setSelected(val)\n          }}\n        />\n      </div>\n      <div>\n        {canCancel ? (\n          <Button\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={() => {\n              model.cancelButton()\n            }}\n            disabled={!canCancel}\n          >\n            Cancel\n          </Button>\n        ) : null}{' '}\n        <Button\n          disabled={!isReadyToOpen || !!err}\n          variant=\"contained\"\n          data-testid=\"open_spreadsheet\"\n          color=\"primary\"\n          onClick={() => {\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            model.import(selected!)\n          }}\n        >\n          Open\n        </Button>\n      </div>\n    </div>\n  )\n})\n\nexport default ImportWizard\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Menu, MenuItem } from '@jbrowse/core/ui'\nimport { Instance } from 'mobx-state-tree'\n\n// locals\nimport type SpreadsheetModel from '../models/Spreadsheet'\nimport type ViewModel from '../models/SpreadsheetView'\n\nconst RowMenu = observer(function ({\n  viewModel,\n  spreadsheetModel,\n}: {\n  viewModel: Instance<typeof ViewModel>\n  spreadsheetModel: Instance<typeof SpreadsheetModel>\n}) {\n  const currentRowMenu = spreadsheetModel.rowMenuPosition\n  const { setRowMenuPosition } = spreadsheetModel\n\n  const rowMenuClose = () => {\n    setRowMenuPosition(null)\n  }\n\n  const rowNumber = spreadsheetModel.rowMenuPosition?.rowNumber\n  if (rowNumber === undefined) {\n    return null\n  }\n\n  const row = spreadsheetModel.rowSet.rows[+rowNumber - 1]\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n  function handleMenuItemClick(_event: unknown, callback: Function) {\n    callback(viewModel, spreadsheetModel, rowNumber, row)\n    rowMenuClose()\n  }\n\n  // got through and evaluate all the `disabled` callbacks of the menu items\n  const menuItems: MenuItem[] = viewModel.rowMenuItems.map(item => {\n    if (typeof item.disabled === 'function') {\n      const disabled = item.disabled(\n        viewModel,\n        spreadsheetModel,\n        +rowNumber,\n        row!,\n      )\n      return { ...item, disabled }\n    }\n    return item\n  })\n\n  return (\n    <Menu\n      anchorEl={currentRowMenu?.anchorEl}\n      open={Boolean(currentRowMenu)}\n      onMenuItemClick={handleMenuItemClick}\n      onClose={rowMenuClose}\n      menuItems={menuItems}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n      }}\n    />\n  )\n})\n\nexport default RowMenu\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\n\nconst CellData = observer(function ({\n  cell,\n  spreadsheetModel,\n  columnNumber,\n}: {\n  cell: any\n  spreadsheetModel: SpreadsheetModel\n  columnNumber: number\n}) {\n  const column = spreadsheetModel.columns[columnNumber]\n  return column &&\n    'dataType' in column &&\n    column.dataType.DataCellReactComponent ? (\n    <column.dataType.DataCellReactComponent\n      cell={cell}\n      dataType={column.dataType}\n      columnNumber={columnNumber}\n      spreadsheet={spreadsheetModel}\n    />\n  ) : (\n    cell.text\n  )\n})\n\nexport default CellData\n","import React from 'react'\nimport { Checkbox, IconButton, FormControlLabel } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { indigo } from '@mui/material/colors'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport type RowStateModel from '../models/Row'\n\nimport CellData from './CellData'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\ntype RowModel = Instance<typeof RowStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  rowNumCell: {\n    textAlign: 'left',\n    border: `1px solid ${theme.palette.action.disabledBackground}`,\n    position: 'relative',\n    padding: '0 2px 0 0',\n    whiteSpace: 'nowrap',\n    userSelect: 'none',\n  },\n  rowNumber: {\n    fontWeight: 'normal',\n    display: 'inline-block',\n    flex: 'none',\n    paddingRight: '20px',\n    margin: 0,\n    whiteSpace: 'nowrap',\n  },\n  rowMenuButton: {\n    padding: 0,\n    margin: 0,\n    position: 'absolute',\n    right: 0,\n    display: 'inline-block',\n    whiteSpace: 'nowrap',\n    flex: 'none',\n  },\n  rowMenuButtonIcon: {},\n  rowSelector: {\n    position: 'relative',\n    top: '-2px',\n    margin: 0,\n    padding: '0 0.2rem',\n  },\n\n  dataRowSelected: {\n    background: indigo[100],\n    '& th': {\n      background: indigo[100],\n    },\n  },\n}))\n\nconst DataRow = observer(function ({\n  rowModel,\n  rowNumber,\n  spreadsheetModel,\n}: {\n  rowModel: RowModel\n  rowNumber: string\n  spreadsheetModel: SpreadsheetModel\n}) {\n  const { classes } = useStyles()\n  const { hideRowSelection, columnDisplayOrder } = spreadsheetModel\n  let rowClass = ''\n  if (rowModel.isSelected) {\n    rowClass += classes.dataRowSelected\n  }\n\n  function labelClick(evt: React.MouseEvent) {\n    rowModel.toggleSelect()\n    evt.stopPropagation()\n    evt.preventDefault()\n  }\n\n  return (\n    <tr className={rowClass}>\n      <td className={classes.rowNumCell} onClick={labelClick}>\n        {hideRowSelection ? (\n          <FormControlLabel\n            className={classes.rowNumber}\n            control={\n              <Checkbox\n                className={classes.rowSelector}\n                checked={rowModel.isSelected}\n                onClick={labelClick}\n              />\n            }\n            label={rowModel.id}\n          />\n        ) : null}\n        <IconButton\n          className={classes.rowMenuButton}\n          onClick={event => {\n            spreadsheetModel.setRowMenuPosition({\n              anchorEl: event.currentTarget,\n              rowNumber,\n            })\n            event.preventDefault()\n            event.stopPropagation()\n          }}\n        >\n          <ArrowDropDown className={classes.rowMenuButtonIcon} />\n        </IconButton>\n      </td>\n      {columnDisplayOrder.map(colNumber => (\n        <td key={colNumber}>\n          <CellData\n            cell={rowModel.cellsWithDerived[colNumber]}\n            spreadsheetModel={spreadsheetModel}\n            columnNumber={colNumber}\n          />\n        </td>\n      ))}\n    </tr>\n  )\n})\n\nexport default DataRow\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { iterMap } from '@jbrowse/core/util'\nimport { Menu } from '@jbrowse/core/ui'\nimport { MenuItem } from '@jbrowse/core/ui/Menu'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport { SpreadsheetViewModel } from '../models/SpreadsheetView'\n\n// icons\nimport CheckIcon from '@mui/icons-material/Check'\nimport FilterListIcon from '@mui/icons-material/FilterList'\nimport PermDataSettingIcon from '@mui/icons-material/PermDataSetting'\nimport SortIcon from '@mui/icons-material/Sort'\n\nconst ColumnMenu = observer(function ({\n  viewModel,\n  spreadsheetModel,\n  currentColumnMenu,\n  setColumnMenu,\n}: {\n  spreadsheetModel: SpreadsheetModel\n  viewModel: SpreadsheetViewModel\n  currentColumnMenu?: { colNumber: number; anchorEl: HTMLElement }\n  setColumnMenu: (arg?: { anchorEl: HTMLElement; colNumber: number }) => void\n}) {\n  const columnMenuClose = () => {\n    setColumnMenu(undefined)\n  }\n  const columnNumber = currentColumnMenu?.colNumber || 0\n  const sortMenuClick = (descending: boolean) => {\n    spreadsheetModel.setSortColumns([\n      {\n        columnNumber,\n        descending,\n      },\n    ])\n  }\n\n  const { dataTypeChoices } = spreadsheetModel\n\n  // make a Map of categoryName => [entry...]\n  type Record = (typeof dataTypeChoices)[0]\n  interface RecordGroup {\n    isCategory: boolean\n    subMenuItems: Record[]\n  }\n  const dataTypeTopLevelMenu = new Map<string, Record | RecordGroup>()\n  dataTypeChoices.forEach(dataTypeRecord => {\n    const { displayName, categoryName } = dataTypeRecord\n    if (categoryName) {\n      let entry = dataTypeTopLevelMenu.get(categoryName) as\n        | RecordGroup\n        | undefined\n      if (!entry) {\n        entry = {\n          isCategory: true,\n          subMenuItems: [],\n        }\n        dataTypeTopLevelMenu.set(categoryName, entry)\n      }\n      entry.subMenuItems.push(dataTypeRecord)\n    } else {\n      dataTypeTopLevelMenu.set(displayName, dataTypeRecord)\n    }\n  })\n\n  const { columns, sortColumns } = spreadsheetModel\n  const dataType = currentColumnMenu && columns[columnNumber]!.dataType\n  const dataTypeName = dataType?.type || ''\n  const dataTypeDisplayName =\n    (currentColumnMenu && columns[columnNumber]!.dataType.displayName) || ''\n\n  const isSortingAscending =\n    !!currentColumnMenu &&\n    sortColumns.some(\n      c => c.columnNumber === currentColumnMenu.colNumber && !c.descending,\n    )\n  const isSortingDescending =\n    !!currentColumnMenu &&\n    sortColumns.some(\n      c => c.columnNumber === currentColumnMenu.colNumber && c.descending,\n    )\n\n  const menuItems = [\n    // top-level column menu\n    {\n      label: 'Sort ascending',\n      icon: SortIcon,\n      type: 'radio',\n      checked: isSortingAscending,\n      onClick: () => {\n        sortMenuClick(false)\n      },\n    },\n    {\n      label: 'Sort descending',\n      icon: SortIcon,\n      type: 'radio',\n      checked: isSortingDescending,\n      onClick: () => {\n        sortMenuClick(true)\n      },\n    },\n    {\n      label: 'No sort',\n      icon: SortIcon,\n      type: 'radio',\n      checked: !isSortingDescending && !isSortingAscending,\n      onClick: () => {\n        spreadsheetModel.setSortColumns([])\n      },\n    },\n    // data type menu\n    {\n      label: `Type: ${dataTypeDisplayName}`,\n      icon: PermDataSettingIcon,\n      subMenu: iterMap(\n        dataTypeTopLevelMenu.entries(),\n        ([displayName, record]) => {\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          if ('typeName' in record && record.typeName) {\n            const { typeName } = record\n            return {\n              label: displayName || typeName,\n              icon: dataTypeName === typeName ? CheckIcon : undefined,\n              onClick: () => {\n                spreadsheetModel.setColumnType(columnNumber, typeName)\n              },\n            }\n          }\n\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          if ('subMenuItems' in record && record.subMenuItems) {\n            const { subMenuItems } = record\n            return {\n              label: displayName,\n              icon: subMenuItems.some(i => i.typeName === dataTypeName)\n                ? CheckIcon\n                : undefined,\n              subMenu: subMenuItems.map(({ typeName, displayName }) => ({\n                label: displayName,\n                icon: typeName === dataTypeName ? CheckIcon : undefined,\n                onClick: () => {\n                  spreadsheetModel.setColumnType(columnNumber, typeName)\n                },\n              })),\n            }\n          }\n          return null\n        },\n      ).filter(Boolean),\n    },\n  ] as MenuItem[]\n\n  // don't display the filter item if this data type doesn't have filtering\n  // implemented\n  if (dataType?.hasFilter) {\n    menuItems.push({\n      label: 'Create filter',\n      icon: FilterListIcon,\n      onClick: () => {\n        viewModel.filterControls.addBlankColumnFilter(columnNumber)\n      },\n    })\n  }\n\n  return (\n    <Menu\n      anchorEl={currentColumnMenu?.anchorEl}\n      open={Boolean(currentColumnMenu)}\n      onMenuItemClick={(_event, callback) => {\n        callback()\n        columnMenuClose()\n      }}\n      onClose={columnMenuClose}\n      menuItems={menuItems}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right',\n      }}\n    />\n  )\n})\n\nexport default ColumnMenu\n","import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\n\nconst useStyles = makeStyles()({\n  sortIndicator: {\n    position: 'relative',\n    top: '0.2rem',\n    fontSize: '1rem',\n  },\n})\n\nexport default function SortIndicator({\n  model,\n  columnNumber,\n}: {\n  model: SpreadsheetModel\n  columnNumber: number\n}) {\n  const { classes } = useStyles()\n  const sortSpec = model.sortColumns.find(c => c.columnNumber === columnNumber)\n\n  if (sortSpec) {\n    const { descending } = sortSpec\n    return descending ? (\n      <KeyboardArrowUpIcon className={classes.sortIndicator} />\n    ) : (\n      <KeyboardArrowDownIcon className={classes.sortIndicator} />\n    )\n  }\n  return null\n}\n","function letterFor(n: number) {\n  return String.fromCharCode(n + 65)\n}\n\nexport function numToColName(num: number) {\n  if (num >= 0) {\n    if (num < 26) {\n      return letterFor(num)\n    }\n    if (num < 27 * 26) {\n      return letterFor(Math.floor(num / 26 - 1)) + letterFor(num % 26)\n    }\n  }\n\n  throw new RangeError('column number out of range')\n}\n","import React, { useState } from 'react'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport CropFreeIcon from '@mui/icons-material/CropFree'\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown'\n\n// locals\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport ColumnMenu from './ColumnMenu'\nimport SortIndicator from './SortIndicator'\nimport { numToColName } from './util'\n\ninterface ColMenu {\n  colNumber: number\n  anchorEl: HTMLElement\n}\n\nconst useStyles = makeStyles()(theme => ({\n  columnHead: {\n    fontWeight: 'normal',\n    background: theme.palette.mode === 'dark' ? '#333' : '#eee',\n    position: 'sticky',\n    top: 0,\n    zIndex: 2,\n    whiteSpace: 'nowrap',\n  },\n\n  columnButtonContainer: {\n    display: 'none',\n    position: 'absolute',\n    right: 0,\n    top: 0,\n    background: theme.palette.background.paper,\n    height: '100%',\n  },\n\n  topLeftCorner: {\n    background: theme.palette.mode === 'dark' ? '#333' : '#eee',\n    zIndex: 2,\n    position: 'sticky',\n    top: 0,\n    minWidth: theme.spacing(2),\n    textAlign: 'left',\n  },\n}))\n\nconst DataTableHeader = observer(function ({\n  model,\n}: {\n  model: SpreadsheetModel\n}) {\n  const { classes } = useStyles()\n  const { columnDisplayOrder, columns, hasColumnNames, rowSet } = model\n  const [currentColumnMenu, setColumnMenu] = useState<ColMenu>()\n  const [currentHoveredColumn, setHoveredColumn] = useState<number>()\n\n  return (\n    <>\n      <thead>\n        <tr>\n          <th className={classes.topLeftCorner}>\n            <Tooltip title=\"Unselect all\" placement=\"right\">\n              <span>\n                <IconButton\n                  onClick={() => {\n                    model.unselectAll()\n                  }}\n                  disabled={!rowSet.selectedCount}\n                >\n                  <CropFreeIcon />\n                </IconButton>\n              </span>\n            </Tooltip>\n          </th>\n          {columnDisplayOrder.map(colNumber => (\n            <th\n              className={classes.columnHead}\n              key={colNumber}\n              onMouseOver={() => {\n                setHoveredColumn(colNumber)\n              }}\n              onMouseOut={() => {\n                setHoveredColumn(undefined)\n              }}\n            >\n              <SortIndicator model={model} columnNumber={colNumber} />\n              {(hasColumnNames && columns[colNumber]!.name) ||\n                numToColName(colNumber)}\n              <div\n                className={classes.columnButtonContainer}\n                style={{\n                  display:\n                    currentHoveredColumn === colNumber ||\n                    currentColumnMenu?.colNumber === colNumber\n                      ? 'block'\n                      : 'none',\n                }}\n              >\n                <IconButton\n                  onClick={evt => {\n                    setColumnMenu({\n                      colNumber,\n                      anchorEl: evt.currentTarget,\n                    })\n                  }}\n                >\n                  <ArrowDropDown />\n                </IconButton>\n              </div>\n            </th>\n          ))}\n        </tr>\n      </thead>\n      <ColumnMenu\n        viewModel={getParent(model)}\n        spreadsheetModel={model}\n        currentColumnMenu={currentColumnMenu}\n        setColumnMenu={setColumnMenu}\n      />\n    </>\n  )\n})\n\nexport default DataTableHeader\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { getParent, Instance } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport type RowStateModel from '../models/Row'\nimport RowMenu from './RowMenu'\nimport DataRow from './DataRow'\nimport DataTableHeader from './DataTableHeader'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\ntype RowModel = Instance<typeof RowStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  dataTable: {\n    borderCollapse: 'collapse',\n    '& td': {\n      border: `1px solid ${theme.palette.action.disabledBackground}`,\n      padding: '0.2rem',\n      maxWidth: '50em',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    },\n  },\n\n  emptyMessage: {\n    captionSide: 'bottom',\n  },\n}))\n\nconst DataTableBody = observer(function ({\n  rows,\n  spreadsheetModel,\n  page,\n  rowsPerPage,\n}: {\n  rows: RowModel[]\n  spreadsheetModel: SpreadsheetModel\n  page: number\n  rowsPerPage: number\n}) {\n  return (\n    <tbody>\n      {rows.slice(rowsPerPage * page, rowsPerPage * (page + 1)).map(row => (\n        <DataRow\n          key={row.id}\n          rowNumber={row.id}\n          spreadsheetModel={spreadsheetModel}\n          rowModel={row}\n        />\n      ))}\n    </tbody>\n  )\n})\n\nconst DataTable = observer(function ({\n  model,\n  page,\n  rowsPerPage,\n}: {\n  model: SpreadsheetModel\n  page: number\n  rowsPerPage: number\n}) {\n  const { rowSet } = model\n  const { classes } = useStyles()\n  const rows = rowSet.sortedFilteredRows\n  return (\n    <>\n      <RowMenu viewModel={getParent(model)} spreadsheetModel={model} />\n      <table className={classes.dataTable}>\n        <DataTableHeader model={model} />\n        <DataTableBody\n          rows={rows}\n          spreadsheetModel={model}\n          page={page}\n          rowsPerPage={rowsPerPage}\n        />\n        {!rows.length ? (\n          <caption className={classes.emptyMessage}>\n            {rowSet.count ? 'no rows match criteria' : 'no rows present'}\n          </caption>\n        ) : null}\n      </table>\n    </>\n  )\n})\n\nexport default DataTable\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { Instance } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\nimport { LoadingEllipses } from '@jbrowse/core/ui'\n\n// locals\nimport type SpreadsheetStateModel from '../models/Spreadsheet'\nimport DataTable from './DataTable'\n\ntype SpreadsheetModel = Instance<typeof SpreadsheetStateModel>\n\nconst useStyles = makeStyles()(theme => ({\n  root: {\n    position: 'relative',\n    marginBottom: theme.spacing(1),\n    background: theme.palette.background.paper,\n    overflow: 'auto',\n  },\n}))\n\nconst Spreadsheet = observer(function ({\n  model,\n  height,\n  page,\n  rowsPerPage,\n}: {\n  model: SpreadsheetModel\n  height: number\n  page: number\n  rowsPerPage: number\n}) {\n  const { classes } = useStyles()\n\n  return (\n    <div className={classes.root} style={{ height }}>\n      {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        model.rowSet.isLoaded && model.initialized ? (\n          <DataTable model={model} page={page} rowsPerPage={rowsPerPage} />\n        ) : (\n          <LoadingEllipses variant=\"h6\" />\n        )\n      }\n    </div>\n  )\n})\n\nexport default Spreadsheet\n","import React, { useState, useEffect } from 'react'\n\nimport { IconButton, InputAdornment, TextField } from '@mui/material'\nimport ClearIcon from '@mui/icons-material/Clear'\nimport FilterIcon from '@mui/icons-material/FilterList'\n\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\nimport { useDebounce } from '@jbrowse/core/util'\n\nconst useStyles = makeStyles()({\n  textFilterControlEndAdornment: {\n    marginRight: '-18px',\n  },\n})\n\nconst TextFilter = observer(function ({\n  textFilter,\n}: {\n  textFilter: { stringToFind: string; setString: (arg: string) => void }\n}) {\n  const { classes } = useStyles()\n  // this paragraph is silliness to debounce the text filter input\n  const [textFilterValue, setTextFilterValue] = useState(\n    textFilter.stringToFind,\n  )\n  const debouncedTextFilter = useDebounce(textFilterValue, 500)\n  useEffect(() => {\n    textFilter.setString(debouncedTextFilter)\n  }, [debouncedTextFilter, textFilter])\n\n  return (\n    <div>\n      <TextField\n        label=\"text filter\"\n        value={textFilterValue}\n        onChange={evt => {\n          setTextFilterValue(evt.target.value)\n        }}\n        variant=\"outlined\"\n        InputProps={{\n          startAdornment: (\n            <InputAdornment position=\"start\">\n              <FilterIcon />\n            </InputAdornment>\n          ),\n          endAdornment: (\n            <InputAdornment\n              className={classes.textFilterControlEndAdornment}\n              position=\"end\"\n            >\n              <IconButton\n                aria-label=\"clear filter\"\n                onClick={() => {\n                  setTextFilterValue('')\n                }}\n              >\n                <ClearIcon />\n              </IconButton>\n            </InputAdornment>\n          ),\n        }}\n      />\n    </div>\n  )\n})\n\nconst GlobalFilterControls = observer(({ model }: { model: any }) => {\n  const textFilter = model.filterControls.rowFullText\n  return <TextFilter textFilter={textFilter} />\n})\n\nexport default GlobalFilterControls\n","import React from 'react'\nimport { Grid, IconButton, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { getParent } from 'mobx-state-tree'\nimport { makeStyles } from 'tss-react/mui'\n\n// icons\nimport FilterIcon from '@mui/icons-material/FilterList'\nimport CloseIcon from '@mui/icons-material/Close'\n\nconst useStyles = makeStyles()(theme => ({\n  columnName: {\n    verticalAlign: 'middle',\n    paddingRight: '0.3em',\n  },\n  columnFilter: {\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    boxSizing: 'border-box',\n    width: '100%',\n    position: 'relative',\n  },\n  filterIcon: {\n    position: 'relative',\n    top: '12px',\n  },\n  filterIconBg: {\n    background: theme.palette.tertiary.main,\n    color: 'white',\n    padding: theme.spacing(1.5),\n  },\n}))\n\nfunction FilterOperations({ filterModel }: { filterModel: any }) {\n  if (filterModel) {\n    return <filterModel.ReactComponent filterModel={filterModel} />\n  }\n  return null\n}\n\nconst ColumnFilterControls = observer(function ({\n  viewModel,\n  filterModel,\n  columnNumber,\n  height,\n}: any) {\n  const { classes } = useStyles()\n\n  const columnDefinition = viewModel.spreadsheet.columns[columnNumber]\n  if (!columnDefinition) {\n    throw new Error('no column definition! filters are probably out of date')\n  }\n  return (\n    <Grid\n      container\n      direction=\"row\"\n      className={classes.columnFilter}\n      style={{ height }}\n    >\n      <Grid item className={classes.filterIconBg}>\n        <FilterIcon className={classes.filterIcon} />\n      </Grid>\n      <Grid item>\n        <IconButton\n          onClick={() =>\n            getParent<any>(filterModel, 2).removeColumnFilter(filterModel)\n          }\n          title=\"remove filter\"\n        >\n          <CloseIcon />\n        </IconButton>\n        <Typography className={classes.columnName} component=\"span\">\n          {columnDefinition.name}\n        </Typography>{' '}\n        <FilterOperations filterModel={filterModel} />\n      </Grid>\n    </Grid>\n  )\n})\n\nexport default ColumnFilterControls\n","import React from 'react'\nimport { observer } from 'mobx-react'\n\n// locals\nimport type { SpreadsheetModel } from '../models/Spreadsheet'\n\nconst RowCountMessage = observer(function ({\n  spreadsheet,\n}: {\n  spreadsheet: SpreadsheetModel\n}) {\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (spreadsheet.rowSet.isLoaded) {\n    const {\n      passingFiltersCount,\n      count,\n      selectedCount,\n      selectedAndPassingFiltersCount,\n    } = spreadsheet.rowSet\n\n    let rowMessage: string\n    if (passingFiltersCount !== count) {\n      rowMessage = `${spreadsheet.rowSet.passingFiltersCount} rows of ${spreadsheet.rowSet.count} total`\n      if (selectedCount) {\n        rowMessage += `, ${selectedAndPassingFiltersCount} selected`\n        const selectedAndNotPassingFiltersCount =\n          selectedCount - selectedAndPassingFiltersCount\n        if (selectedAndNotPassingFiltersCount) {\n          rowMessage += ` (${selectedAndNotPassingFiltersCount} selected rows do not pass filters)`\n        }\n      }\n    } else {\n      rowMessage = `${spreadsheet.rowSet.count} rows`\n      if (selectedCount) {\n        rowMessage += `, ${selectedCount} selected`\n      }\n    }\n    return <>{rowMessage}</>\n  }\n  return null\n})\nexport default RowCountMessage\n","import React from 'react'\nimport { FormGroup, TablePagination } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport RowCountMessage from './RowCountMessage'\nimport { SpreadsheetModel } from '../models/Spreadsheet'\nimport { observer } from 'mobx-react'\n\nconst statusBarHeight = 40\n\nconst useStyles = makeStyles()(theme => ({\n  statusBar: {\n    height: statusBarHeight,\n    boxSizing: 'border-box',\n    borderTop: '1px outset #b1b1b1',\n    paddingLeft: theme.spacing(1),\n  },\n  verticallyCenter: {\n    display: 'flex',\n    justifyContent: 'center',\n    flexDirection: 'column',\n  },\n  spacer: {\n    flexGrow: 1,\n  },\n}))\n\nconst StatusBar = observer(function StatusBar({\n  page,\n  rowsPerPage,\n  setPage,\n  setRowsPerPage,\n  spreadsheet,\n  mode,\n}: {\n  page: number\n  mode: string\n  spreadsheet: SpreadsheetModel\n  rowsPerPage: number\n  setPage: (arg: number) => void\n  setRowsPerPage: (arg: number) => void\n}) {\n  const { classes } = useStyles()\n  return (\n    <div\n      className={classes.statusBar}\n      style={{ display: mode === 'display' ? undefined : 'none' }}\n    >\n      <FormGroup row>\n        <div className={classes.verticallyCenter}>\n          <RowCountMessage spreadsheet={spreadsheet} />\n        </div>\n        <div className={classes.spacer} />\n        <TablePagination\n          rowsPerPageOptions={[10, 25, 100, 1000]}\n          count={spreadsheet.rowSet.count}\n          component=\"div\"\n          rowsPerPage={rowsPerPage}\n          page={page}\n          onPageChange={(_, newPage) => {\n            setPage(newPage)\n          }}\n          onRowsPerPageChange={event => {\n            setRowsPerPage(+event.target.value)\n            setPage(0)\n          }}\n        />\n        <div className={classes.spacer} />\n      </FormGroup>\n    </div>\n  )\n})\n\nexport default StatusBar\n","import React, { useState } from 'react'\nimport { Grid } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { ResizeHandle } from '@jbrowse/core/ui'\n\n// locals\nimport ImportWizard from './ImportWizard'\nimport Spreadsheet from './Spreadsheet'\nimport GlobalFilterControls from './GlobalFilterControls'\nimport ColumnFilterControls from './ColumnFilterControls'\nimport { SpreadsheetViewModel } from '../models/SpreadsheetView'\nimport StatusBar from './StatusBar'\n\nconst headerHeight = 52\nconst colFilterHeight = 46\nconst statusBarHeight = 40\n\nconst useStyles = makeStyles()(theme => ({\n  header: {\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    boxSizing: 'border-box',\n    height: headerHeight,\n    paddingLeft: theme.spacing(1),\n  },\n  contentArea: {\n    overflow: 'auto',\n  },\n  resizeHandle: {\n    height: 3,\n    position: 'absolute',\n    bottom: 0,\n    left: 0,\n    background: theme.palette.action.disabled,\n    boxSizing: 'border-box',\n    borderTop: '1px solid #fafafa',\n  },\n}))\n\nconst SpreadsheetView = observer(function ({\n  model,\n}: {\n  model: SpreadsheetViewModel\n}) {\n  const { classes } = useStyles()\n  const {\n    spreadsheet,\n    filterControls,\n    hideFilterControls,\n    hideVerticalResizeHandle,\n    mode,\n    height,\n  } = model\n  const [page, setPage] = useState(0)\n  const [rowsPerPage, setRowsPerPage] = useState(100)\n\n  return (\n    <div>\n      {mode !== 'display' || hideFilterControls ? null : (\n        <>\n          <Grid container direction=\"row\" className={classes.header}>\n            <Grid item>\n              <GlobalFilterControls model={model} />\n            </Grid>\n          </Grid>\n          {filterControls.columnFilters.map((f, i) => (\n            <ColumnFilterControls\n              key={`${f.columnNumber}-${i}`}\n              viewModel={model}\n              filterModel={f}\n              columnNumber={f.columnNumber}\n              height={colFilterHeight}\n            />\n          ))}\n        </>\n      )}\n\n      {mode === 'import' ? (\n        <ImportWizard model={model.importWizard} />\n      ) : (\n        <div className={classes.contentArea}>\n          <div\n            style={{\n              position: 'relative',\n              display: mode === 'display' ? undefined : 'none',\n            }}\n          >\n            {spreadsheet ? (\n              <Spreadsheet\n                page={page}\n                rowsPerPage={rowsPerPage}\n                model={spreadsheet}\n                height={\n                  height -\n                  headerHeight -\n                  filterControls.columnFilters.length * colFilterHeight -\n                  statusBarHeight\n                }\n              />\n            ) : null}\n          </div>\n        </div>\n      )}\n      {spreadsheet ? (\n        <StatusBar\n          page={page}\n          setPage={setPage}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          mode={mode}\n          spreadsheet={spreadsheet}\n        />\n      ) : null}\n      {hideVerticalResizeHandle ? null : (\n        <ResizeHandle\n          onDrag={model.resizeHeight}\n          className={classes.resizeHandle}\n        />\n      )}\n    </div>\n  )\n})\n\nexport default SpreadsheetView\n"],"names":["useStyles","makeStyles","textField","width","verticalAlign","observer","model","disabled","modelPropName","modelSetterName","val","setVal","useState","classes","useEffect","num","Number","parseInt","isNaN","React","TextField","value","type","onChange","evt","target","className","container","margin","maxWidth","padding","session","getSession","assemblyNames","assemblyManager","fileType","canCancel","fileSource","isReadyToOpen","fileTypes","hasColumnNameLine","error","selected","setSelected","err","get","showRowControls","rootModel","getRoot","ErrorMessage","FormControl","component","FormLabel","FormGroup","FileSelector","location","setLocation","arg","setFileSource","RadioGroup","row","name","map","fileTypeName","FormControlLabel","key","checked","onClick","setFileType","control","Radio","label","labelPlacement","Checkbox","toggleHasColumnNameLine","NumberEditor","AssemblySelector","Button","variant","color","cancelButton","import","viewModel","spreadsheetModel","currentRowMenu","rowMenuPosition","setRowMenuPosition","rowMenuClose","rowNumber","undefined","rowSet","rows","menuItems","rowMenuItems","item","Menu","anchorEl","open","Boolean","onMenuItemClick","_event","callback","onClose","anchorOrigin","vertical","horizontal","cell","columnNumber","column","columns","dataType","DataCellReactComponent","spreadsheet","text","theme","rowNumCell","textAlign","border","palette","action","disabledBackground","position","whiteSpace","userSelect","fontWeight","display","flex","paddingRight","rowMenuButton","right","rowMenuButtonIcon","rowSelector","top","dataRowSelected","background","indigo","rowModel","hideRowSelection","columnDisplayOrder","rowClass","labelClick","toggleSelect","stopPropagation","preventDefault","isSelected","id","IconButton","event","currentTarget","ArrowDropDown","colNumber","CellData","cellsWithDerived","currentColumnMenu","setColumnMenu","columnMenuClose","sortMenuClick","descending","setSortColumns","dataTypeChoices","dataTypeTopLevelMenu","Map","forEach","dataTypeRecord","displayName","categoryName","entry","isCategory","subMenuItems","set","push","sortColumns","dataTypeName","dataTypeDisplayName","isSortingAscending","some","c","isSortingDescending","icon","SortIcon","PermDataSettingIcon","subMenu","iterMap","entries","record","typeName","CheckIcon","setColumnType","i","filter","hasFilter","FilterListIcon","filterControls","addBlankColumnFilter","sortIndicator","fontSize","SortIndicator","sortSpec","find","KeyboardArrowUpIcon","KeyboardArrowDownIcon","letterFor","n","String","fromCharCode","columnHead","mode","zIndex","columnButtonContainer","paper","height","topLeftCorner","minWidth","spacing","hasColumnNames","currentHoveredColumn","setHoveredColumn","Tooltip","title","placement","unselectAll","selectedCount","CropFreeIcon","onMouseOver","onMouseOut","Math","floor","RangeError","numToColName","style","ColumnMenu","getParent","dataTable","borderCollapse","overflow","textOverflow","emptyMessage","captionSide","DataTableBody","page","rowsPerPage","slice","DataRow","sortedFilteredRows","RowMenu","DataTableHeader","length","count","root","marginBottom","isLoaded","initialized","DataTable","LoadingEllipses","textFilterControlEndAdornment","marginRight","TextFilter","textFilter","textFilterValue","setTextFilterValue","stringToFind","debouncedTextFilter","useDebounce","setString","InputProps","startAdornment","InputAdornment","FilterIcon","endAdornment","ClearIcon","rowFullText","columnName","columnFilter","boxSizing","filterIcon","filterIconBg","tertiary","main","FilterOperations","filterModel","ReactComponent","columnDefinition","Error","Grid","direction","removeColumnFilter","CloseIcon","Typography","passingFiltersCount","selectedAndPassingFiltersCount","rowMessage","selectedAndNotPassingFiltersCount","statusBar","borderTop","paddingLeft","verticallyCenter","justifyContent","flexDirection","spacer","flexGrow","setPage","setRowsPerPage","RowCountMessage","TablePagination","rowsPerPageOptions","onPageChange","_","newPage","onRowsPerPageChange","header","contentArea","resizeHandle","bottom","left","hideFilterControls","hideVerticalResizeHandle","GlobalFilterControls","columnFilters","f","ColumnFilterControls","ImportWizard","importWizard","Spreadsheet","StatusBar","ResizeHandle","onDrag","resizeHeight"],"sourceRoot":""}