@deephaven/console 0.107.1-beta.1 → 0.107.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -62,7 +62,7 @@ class CsvInputBar extends Component {
62
62
  if (!tableNameSet && file != null && !tableName) {
63
63
  var _this$inputRef$curren;
64
64
  var dotIndex = file.name.lastIndexOf('.');
65
- var fileTableName = DbNameValidator.legalizeTableName(file.name.substring(0, dotIndex));
65
+ var fileTableName = DbNameValidator.makeVariableName(file.name.substring(0, dotIndex));
66
66
  this.setState({
67
67
  tableName: fileTableName,
68
68
  tableNameSet: true
@@ -1 +1 @@
1
- {"version":3,"file":"CsvInputBar.js","names":["React","Component","classNames","Button","Checkbox","Select","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","jsx","_jsx","jsxs","_jsxs","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","_ref","key","value","children","name","CsvInputBar","constructor","props","_defineProperty","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","_this$inputRef$curren","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","undefined","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","endsWith","handleZipFile","handleFile","Blob","isZip","arguments","length","info","concat","File","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","eventTargetValue","render","isNameInvalid","Boolean","className","onSubmit","htmlFor","ref","id","onChange","checked","kind","onClick","disabled","style","width"],"sources":["../../src/csv/CsvInputBar.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type FormEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\ninterface CsvInputBarProps {\n session: dh.IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.legalizeTableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current?.focus();\n } else if (\n (file == null && prevProps.file != null) ||\n (paste == null && prevProps.paste != null)\n ) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (\n paste != null &&\n paste !== '' &&\n (prevProps.paste === undefined || prevProps.paste === '')\n ) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: File | Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: dh.Table[]): void => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress(): void {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(eventTargetValue: string): void {\n this.setState({\n type: eventTargetValue as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const { tableName, isFirstRowHeaders, showProgress, progressValue, type } =\n this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = Boolean(paste) && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <Select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </Select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={\n !(file !== null || (paste !== undefined && paste !== '')) ||\n !tableName\n }\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <label>{progressValue}%</label>\n <Button kind=\"primary\" onClick={this.handleCancelInProgress}>\n Cancel\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAEVC,SAAS,QAIJ,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,uBAAuB;AAEhE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,QAAQ,kBAAkB;AAAC,OAC5CC,UAAU;AAAA,OACVC,SAAS;AAAA,OACTC,UAAU;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGjB,IAAMC,GAAG,GAAGT,GAAG,CAACU,MAAM,CAAC,aAAa,CAAC;AAErC,IAAMC,YAAY,GAAGC,MAAM,CAACC,OAAO,CAACT,UAAU,CAACU,KAAK,CAAC,CAACC,GAAG,CAACC,IAAA;EAAA,IAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAAF,IAAA;EAAA,oBACrEV,IAAA;IAAkBY,KAAK,EAAED,GAAI;IAAAE,QAAA,EAC1BD,KAAK,CAACE;EAAI,GADAH,GAEL,CAAC;AAAA,CACV,CAAC;AAwBF;AACA;AACA;AACA,MAAMI,WAAW,SAAS1B,SAAS,CAAqC;EAOtE2B,WAAWA,CAACC,KAAuB,EAAE;IACnC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACD,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACE,WAAW,GAAG,IAAI,CAACA,WAAW,CAACF,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACG,eAAe,GAAG,IAAI,CAACA,eAAe,CAACH,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACI,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACK,cAAc,GAAG,IAAI,CAACA,cAAc,CAACL,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACM,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACN,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACP,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACQ,QAAQ,gBAAGxC,KAAK,CAACyC,SAAS,CAAC,CAAC;IAEjC,IAAI,CAACC,KAAK,GAAG;MACXC,SAAS,EAAE,EAAE;MACbC,YAAY,EAAE,KAAK;MACnBC,iBAAiB,EAAE,IAAI;MACvBC,YAAY,EAAE,KAAK;MACnBC,aAAa,EAAE,CAAC;MAChBC,IAAI,EAAEtC,UAAU,CAACuC,YAAY;MAC7BC,MAAM,EAAE;IACV,CAAC;EACH;;EAEA;EACA;EACAC,kBAAkBA,CAACC,SAA2B,EAAQ;IACpD,IAAM;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACzB,KAAK;IAClC,IAAM;MAAEc,SAAS;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACF,KAAK;IAC9C;IACA,IAAI,CAACE,YAAY,IAAIS,IAAI,IAAI,IAAI,IAAI,CAACV,SAAS,EAAE;MAAA,IAAAY,qBAAA;MAC/C,IAAMC,QAAQ,GAAGH,IAAI,CAAC3B,IAAI,CAAC+B,WAAW,CAAC,GAAG,CAAC;MAC3C,IAAMC,aAAa,GAAGnD,eAAe,CAACoD,iBAAiB,CACrDN,IAAI,CAAC3B,IAAI,CAACkC,SAAS,CAAC,CAAC,EAAEJ,QAAQ,CACjC,CAAC;MACD,IAAI,CAACK,QAAQ,CAAC;QACZlB,SAAS,EAAEe,aAAa;QACxBd,YAAY,EAAE;MAChB,CAAC,CAAC;MACF,CAAAW,qBAAA,OAAI,CAACf,QAAQ,CAACsB,OAAO,cAAAP,qBAAA,uBAArBA,qBAAA,CAAuBQ,KAAK,CAAC,CAAC;IAChC,CAAC,MAAM,IACJV,IAAI,IAAI,IAAI,IAAID,SAAS,CAACC,IAAI,IAAI,IAAI,IACtCC,KAAK,IAAI,IAAI,IAAIF,SAAS,CAACE,KAAK,IAAI,IAAK,EAC1C;MACA;MACA,IAAI,CAACO,QAAQ,CAAC;QACZlB,SAAS,EAAE,EAAE;QACbC,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ;;IAEA;IACA,IAAIU,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE,IAAI,CAACX,SAAS,IAAI,IAAI,CAACH,QAAQ,CAACsB,OAAO,EAAE;MACxE,IAAI,CAACtB,QAAQ,CAACsB,OAAO,CAACC,KAAK,CAAC,CAAC;IAC/B;;IAEA;IACA,IAAIV,IAAI,IAAI,IAAI,IAAIA,IAAI,KAAKD,SAAS,CAACC,IAAI,EAAE;MAC3C,IAAI,CAACQ,QAAQ,CAAC;QACZb,IAAI,EAAEtC,UAAU,CAACsD,aAAa,CAACX,IAAI,CAAC3B,IAAI;MAC1C,CAAC,CAAC;IACJ,CAAC,MAAM,IACL4B,KAAK,IAAI,IAAI,IACbA,KAAK,KAAK,EAAE,KACXF,SAAS,CAACE,KAAK,KAAKW,SAAS,IAAIb,SAAS,CAACE,KAAK,KAAK,EAAE,CAAC,EACzD;MACA,IAAI,CAACO,QAAQ,CAAC;QACZb,IAAI,EAAEtC,UAAU,CAACwD;MACnB,CAAC,CAAC;IACJ;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEjB;IAAO,CAAC,GAAG,IAAI,CAACR,KAAK;IAC7B,IAAIQ,MAAM,EAAE;MACVA,MAAM,CAACkB,MAAM,CAAC,CAAC;IACjB;EACF;EAIAnC,YAAYA,CAAA,EAAS;IACnB,IAAM;MAAEoC;IAAQ,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC9BwC,OAAO,CAAC,CAAC;EACX;EAEAnC,WAAWA,CAACoC,CAAU,EAAQ;IAC5B,IAAM;MAAED,OAAO;MAAEE;IAAQ,CAAC,GAAG,IAAI,CAAC1C,KAAK;IACvCd,GAAG,CAACyD,KAAK,CAACF,CAAC,CAAC;IACZC,OAAO,CAACD,CAAC,CAAC;IACVD,OAAO,CAAC,CAAC;EACX;EAEAlC,eAAeA,CAACsC,KAAoC,EAAQ;IAC1D,IAAI,CAACZ,QAAQ,CAAC;MAAElB,SAAS,EAAE8B,KAAK,CAACC,MAAM,CAAClD,KAAK;MAAEoB,YAAY,EAAE;IAAK,CAAC,CAAC;EACtE;EAEAR,qBAAqBA,CAAA,EAAS;IAC5B,IAAM;MAAES;IAAkB,CAAC,GAAG,IAAI,CAACH,KAAK;IACxC,IAAI,CAACmB,QAAQ,CAAC;MAAEhB,iBAAiB,EAAE,CAACA;IAAkB,CAAC,CAAC;EAC1D;EAEAd,YAAYA,CAAC0C,KAAiC,EAAQ;IACpDA,KAAK,CAACE,eAAe,CAAC,CAAC;IACvBF,KAAK,CAACG,cAAc,CAAC,CAAC;IACtB,IAAM;MAAEvB,IAAI;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACzB,KAAK;IAClC,IAAIwB,IAAI,IAAI,IAAI,EAAE;MAChB,IAAIA,IAAI,CAAC3B,IAAI,CAACmD,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC9B,IAAI,CAACC,aAAa,CAACzB,IAAI,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAAC0B,UAAU,CAAC1B,IAAI,CAAC;MACvB;IACF,CAAC,MAAM,IAAIC,KAAK,KAAKW,SAAS,IAAIX,KAAK,KAAK,EAAE,EAAE;MAC9C,IAAI,CAACyB,UAAU,CACb,IAAIC,IAAI,CAAC,CAAC1B,KAAK,CAAC,EAAE;QAChBN,IAAI,EAAE;MACR,CAAC,CACH,CAAC;IACH;EACF;EAEA+B,UAAUA,CAAC1B,IAA+B,EAAuB;IAAA,IAArB4B,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAjB,SAAA,GAAAiB,SAAA,MAAG,KAAK;IACvDnE,GAAG,CAACqE,IAAI,4BAAAC,MAAA,CAEJhC,IAAI,YAAYiC,IAAI,GAAGjC,IAAI,CAAC3B,IAAI,GAAG,eAAe,OAAA2D,MAAA,CAChDJ,KAAK,GAAG,EAAE,GAAI5B,IAAI,CAAUkC,IAAI,WACtC,CAAC;IACD,IAAM;MAAEC,OAAO;MAAEC,QAAQ;MAAEC;IAAa,CAAC,GAAG,IAAI,CAAC7D,KAAK;IACtD,IAAM;MAAEc,SAAS;MAAEE,iBAAiB;MAAEG;IAAK,CAAC,GAAG,IAAI,CAACN,KAAK;IACzD,IAAMiD,eAAe,GAAIC,MAAkB,IAAW;MACpD;MACA,IAAIA,MAAM,CAACT,MAAM,KAAK,CAAC,EAAE;QACvBK,OAAO,CACJK,mBAAmB,CAACD,MAAM,CAAC,CAAC,CAAC,EAAEjD,SAAS,CAAC,CACzCmD,IAAI,CAAC,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAC5BC,KAAK,CAAC1B,CAAC,IAAI,IAAI,CAACpC,WAAW,CAACoC,CAAC,CAAC,CAAC;MACpC,CAAC,MAAM;QACLkB,OAAO,CACJS,WAAW,CAACL,MAAM,CAAC,CACnBE,IAAI,CAACI,KAAK,IAAI;UACbV,OAAO,CACJK,mBAAmB,CAACK,KAAK,EAAEvD,SAAS,CAAC,CACrCmD,IAAI,CAAC,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAC5BC,KAAK,CAAC1B,CAAC,IAAI,IAAI,CAACpC,WAAW,CAACoC,CAAC,CAAC,CAAC;UAClCsB,MAAM,CAACO,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CACDL,KAAK,CAAC1B,CAAC,IAAI,IAAI,CAACpC,WAAW,CAACoC,CAAC,CAAC,CAAC;MACpC;IACF,CAAC;IACD,IAAMpB,MAAM,GAAG,IAAIzC,SAAS,CAAC;MAC3B6F,eAAe,EAAEX,eAAe;MAChCH,OAAO;MACPnC,IAAI;MACJL,IAAI,EAAEtC,UAAU,CAACU,KAAK,CAAC4B,IAAI,CAAC;MAC5BuD,WAAW,EAAE1D,iBAAiB;MAC9B2D,UAAU,EAAE,IAAI,CAACnE,cAAc;MAC/BkC,OAAO,EAAE,IAAI,CAACrC,WAAW;MACzBuD,QAAQ;MACRR;IACF,CAAC,CAAC;IACF/B,MAAM,CAACuD,KAAK,CAAC,CAAC;IACd,IAAI,CAAC5C,QAAQ,CAAC;MACZf,YAAY,EAAE,IAAI;MAClBI;IACF,CAAC,CAAC;IACF;IACAwC,YAAY,CAAC,IAAI,CAAC;EACpB;EAEAZ,aAAaA,CAAC4B,OAAa,EAAQ;IACjC,IAAM;MAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAG,IAAI,CAAC/E,KAAK;IACtC,IAAI+E,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,CAAC1E,WAAW,CAAC,IAAI2E,KAAK,CAAC,qCAAqC,CAAC,CAAC;MAClE;IACF;IAEAD,KAAK,CAACF,OAAO,CAAC,CACXZ,IAAI,CAACgB,KAAK,IAAI;MACb,IAAIC,QAAQ,GAAG,KAAK;MACpB;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAAC3B,MAAM,EAAE6B,CAAC,IAAI,CAAC,EAAE;QACxC,IAAMC,CAAC,GAAGH,KAAK,CAACE,CAAC,CAAC;QAClB,IAAIxG,UAAU,CAAC0G,gBAAgB,CAACD,CAAC,CAACvF,IAAI,CAAC,EAAE;UACvCiF,QAAQ,YAAAtB,MAAA,CAAY4B,CAAC,CAACvF,IAAI,mBAAA2D,MAAA,CAAgBqB,OAAO,CAAChF,IAAI,CAAE,CAAC;UACzDqF,QAAQ,GAAG,IAAI;UACf,IAAI,CAAChC,UAAU,CAACkC,CAAC,EAAE,IAAI,CAAC;UACxB;QACF;MACF;MACA,IAAI,CAACF,QAAQ,EAAE;QACb,MAAM,IAAIF,KAAK,yBAAAxB,MAAA,CAAyBqB,OAAO,CAAChF,IAAI,CAAE,CAAC;MACzD;IACF,CAAC,CAAC,CACDsE,KAAK,CAAC1B,CAAC,IAAI,IAAI,CAACpC,WAAW,CAACoC,CAAC,CAAC,CAAC;EACpC;EAEAjC,cAAcA,CAACU,aAAqB,EAAW;IAC7C,IAAM;MAAED;IAAa,CAAC,GAAG,IAAI,CAACJ,KAAK;IACnC,IAAII,YAAY,EAAE;MAChB,IAAI,CAACe,QAAQ,CAAC;QACZd;MACF,CAAC,CAAC;IACJ;IACA;IACA,OAAO,CAACD,YAAY;EACtB;;EAEA;EACAR,sBAAsBA,CAAA,EAAS;IAC7B,IAAM;MAAEoD;IAAa,CAAC,GAAG,IAAI,CAAC7D,KAAK;IACnC,IAAM;MAAEqB;IAAO,CAAC,GAAG,IAAI,CAACR,KAAK;IAC7B,IAAIQ,MAAM,EAAE;MACVA,MAAM,CAACkB,MAAM,CAAC,CAAC;IACjB;IACA,IAAI,CAACP,QAAQ,CAAC;MACZf,YAAY,EAAE,KAAK;MACnBC,aAAa,EAAE;IACjB,CAAC,CAAC;IACF2C,YAAY,CAAC,KAAK,CAAC;EACrB;EAEAK,SAASA,CAAA,EAAS;IAChB,IAAM;MAAEoB,WAAW;MAAE9C;IAAQ,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC3C,IAAM;MAAEc;IAAU,CAAC,GAAG,IAAI,CAACD,KAAK;IAChCyE,WAAW,CAACxE,SAAS,CAAC;IACtB0B,OAAO,CAAC,CAAC;EACX;EAEA9B,qBAAqBA,CAAC6E,gBAAwB,EAAQ;IACpD,IAAI,CAACvD,QAAQ,CAAC;MACZb,IAAI,EAAEoE;IACR,CAAC,CAAC;EACJ;EAEAC,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEhE,IAAI;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACzB,KAAK;IAClC,IAAM;MAAEc,SAAS;MAAEE,iBAAiB;MAAEC,YAAY;MAAEC,aAAa;MAAEC;IAAK,CAAC,GACvE,IAAI,CAACN,KAAK;IACZ;IACA,IAAM4E,aAAa,GAAGC,OAAO,CAACjE,KAAK,CAAC,IAAI,CAACX,SAAS;IAClD,oBACE7B,KAAA;MAAK0G,SAAS,EAAC,eAAe;MAAA/F,QAAA,GAC3B,CAACqB,YAAY,iBACZhC,KAAA;QACE2G,QAAQ,EAAE,IAAI,CAAC1F,YAAa;QAC5ByF,SAAS,EAAC,qCAAqC;QAAA/F,QAAA,gBAE/CX,KAAA;UAAK0G,SAAS,EAAC,YAAY;UAAA/F,QAAA,gBACzBb,IAAA;YAAO8G,OAAO,EAAC,gBAAgB;YAAAjG,QAAA,EAAC;UAAU,CAAO,CAAC,eAClDb,IAAA;YACE+G,GAAG,EAAE,IAAI,CAACnF,QAAS;YACnBoF,EAAE,EAAC,gBAAgB;YACnB5E,IAAI,EAAC,MAAM;YACXwE,SAAS,EAAEtH,UAAU,CAAC,cAAc,EAAE;cACpC,YAAY,EAAEoH;YAChB,CAAC,CAAE;YACH9F,KAAK,EAAEmB,SAAU;YACjBkF,QAAQ,EAAE,IAAI,CAAC1F;UAAgB,CAChC,CAAC;QAAA,CACC,CAAC,eACNrB,KAAA;UAAK0G,SAAS,EAAC,YAAY;UAAA/F,QAAA,gBACzBb,IAAA;YAAO8G,OAAO,EAAC,cAAc;YAAAjG,QAAA,EAAC;UAAW,CAAO,CAAC,eACjDb,IAAA,CAACP,MAAM;YACLuH,EAAE,EAAC,cAAc;YACjBJ,SAAS,EAAC,eAAe;YACzBhG,KAAK,EAAEwB,IAAK;YACZ6E,QAAQ,EAAE,IAAI,CAACtF,qBAAsB;YAAAd,QAAA,EAEpCR;UAAY,CACP,CAAC;QAAA,CACN,CAAC,eACNL,IAAA,CAACR,QAAQ;UACPoH,SAAS,EAAC,iBAAiB;UAC3BM,OAAO,EAAEjF,iBAAkB;UAC3BgF,QAAQ,EAAE,IAAI,CAACzF,qBAAsB;UAAAX,QAAA,EACtC;QAED,CAAU,CAAC,eACXX,KAAA;UAAK0G,SAAS,EAAC,8BAA8B;UAAA/F,QAAA,gBAC3Cb,IAAA,CAACT,MAAM;YAAC4H,IAAI,EAAC,WAAW;YAACC,OAAO,EAAE,IAAI,CAAC/F,YAAa;YAAAR,QAAA,EAAC;UAErD,CAAQ,CAAC,eACTb,IAAA,CAACT,MAAM;YACL4H,IAAI,EAAC,SAAS;YACd/E,IAAI,EAAC,QAAQ;YACbiF,QAAQ,EACN,EAAE5E,IAAI,KAAK,IAAI,IAAKC,KAAK,KAAKW,SAAS,IAAIX,KAAK,KAAK,EAAG,CAAC,IACzD,CAACX,SACF;YAAAlB,QAAA,EACF;UAED,CAAQ,CAAC;QAAA,CACN,CAAC;MAAA,CACF,CACP,EACAqB,YAAY,iBACXhC,KAAA;QAAK0G,SAAS,EAAC,wBAAwB;QAAA/F,QAAA,gBACrCb,IAAA;UAAAa,QAAA,EAAO;QAAe,CAAO,CAAC,eAC9Bb,IAAA;UAAK4G,SAAS,EAAC,UAAU;UAAA/F,QAAA,eACvBb,IAAA;YACE4G,SAAS,EAAC,yBAAyB;YACnCU,KAAK,EAAE;cAAEC,KAAK,KAAA9C,MAAA,CAAKtC,aAAa;YAAI,CAAE;YACtC,iBAAeA,aAAc;YAC7B,iBAAe,CAAE;YACjB,iBAAe;UAAI,CACpB;QAAC,CACC,CAAC,eACNjC,KAAA;UAAAW,QAAA,GAAQsB,aAAa,EAAC,GAAC;QAAA,CAAO,CAAC,eAC/BnC,IAAA,CAACT,MAAM;UAAC4H,IAAI,EAAC,SAAS;UAACC,OAAO,EAAE,IAAI,CAAC1F,sBAAuB;UAAAb,QAAA,EAAC;QAE7D,CAAQ,CAAC;MAAA,CACN,CACN;IAAA,CACE,CAAC;EAEV;AACF;AAACK,eAAA,CApUKH,WAAW,kBACO;EACpB0B,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,IAAI;EACXsD,KAAK,EAAE;AACT,CAAC;AAiUH,eAAejF,WAAW"}
1
+ {"version":3,"file":"CsvInputBar.js","names":["React","Component","classNames","Button","Checkbox","Select","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","jsx","_jsx","jsxs","_jsxs","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","_ref","key","value","children","name","CsvInputBar","constructor","props","_defineProperty","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","_this$inputRef$curren","dotIndex","lastIndexOf","fileTableName","makeVariableName","substring","setState","current","focus","fromExtension","undefined","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","endsWith","handleZipFile","handleFile","Blob","isZip","arguments","length","info","concat","File","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","eventTargetValue","render","isNameInvalid","Boolean","className","onSubmit","htmlFor","ref","id","onChange","checked","kind","onClick","disabled","style","width"],"sources":["../../src/csv/CsvInputBar.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type FormEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\ninterface CsvInputBarProps {\n session: dh.IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.makeVariableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current?.focus();\n } else if (\n (file == null && prevProps.file != null) ||\n (paste == null && prevProps.paste != null)\n ) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (\n paste != null &&\n paste !== '' &&\n (prevProps.paste === undefined || prevProps.paste === '')\n ) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: File | Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: dh.Table[]): void => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress(): void {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(eventTargetValue: string): void {\n this.setState({\n type: eventTargetValue as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const { tableName, isFirstRowHeaders, showProgress, progressValue, type } =\n this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = Boolean(paste) && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <Select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </Select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={\n !(file !== null || (paste !== undefined && paste !== '')) ||\n !tableName\n }\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <label>{progressValue}%</label>\n <Button kind=\"primary\" onClick={this.handleCancelInProgress}>\n Cancel\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.107.1-beta.1+0f4f2388",
3
+ "version": "0.107.1",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -24,16 +24,16 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@astral-sh/ruff-wasm-web": "0.6.4",
27
- "@deephaven/chart": "^0.107.1-beta.1+0f4f2388",
28
- "@deephaven/components": "^0.107.1-beta.1+0f4f2388",
29
- "@deephaven/icons": "^0.107.1-beta.1+0f4f2388",
30
- "@deephaven/jsapi-bootstrap": "^0.107.1-beta.1+0f4f2388",
27
+ "@deephaven/chart": "^0.107.1",
28
+ "@deephaven/components": "^0.107.1",
29
+ "@deephaven/icons": "^0.107.0",
30
+ "@deephaven/jsapi-bootstrap": "^0.107.1",
31
31
  "@deephaven/jsapi-types": "^1.0.0-dev0.37.2",
32
- "@deephaven/jsapi-utils": "^0.107.1-beta.1+0f4f2388",
33
- "@deephaven/log": "^0.107.1-beta.1+0f4f2388",
34
- "@deephaven/react-hooks": "^0.107.1-beta.1+0f4f2388",
35
- "@deephaven/storage": "^0.107.1-beta.1+0f4f2388",
36
- "@deephaven/utils": "^0.107.1-beta.1+0f4f2388",
32
+ "@deephaven/jsapi-utils": "^0.107.1",
33
+ "@deephaven/log": "^0.107.0",
34
+ "@deephaven/react-hooks": "^0.107.1",
35
+ "@deephaven/storage": "^0.107.0",
36
+ "@deephaven/utils": "^0.107.1",
37
37
  "@fortawesome/react-fontawesome": "^0.2.0",
38
38
  "classnames": "^2.3.1",
39
39
  "linkifyjs": "^4.1.0",
@@ -53,9 +53,9 @@
53
53
  "react-dom": ">=16.8.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@deephaven/jsapi-shim": "^0.107.1-beta.1+0f4f2388",
57
- "@deephaven/mocks": "^0.107.1-beta.1+0f4f2388",
58
- "@deephaven/test-utils": "^0.107.1-beta.1+0f4f2388"
56
+ "@deephaven/jsapi-shim": "^0.107.0",
57
+ "@deephaven/mocks": "^0.107.0",
58
+ "@deephaven/test-utils": "^0.107.0"
59
59
  },
60
60
  "files": [
61
61
  "dist"
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "gitHead": "0f4f23880539f2358e27db0963aa1c5bd244edc4"
69
+ "gitHead": "0d60c28716d8b058e572243fc373ec3dc24b6e1f"
70
70
  }