@deephaven/console 0.95.1-beta.6 → 0.96.0

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.
@@ -7,7 +7,7 @@ import { assertNotNull } from '@deephaven/utils';
7
7
  import Papa from 'papaparse';
8
8
  // Intentionally using isNaN rather than Number.isNaN
9
9
  /* eslint-disable no-restricted-globals */
10
- import NewTableColumnTypes from "./NewTableColumnTypes.js";
10
+ import { NewTableColumnTypes } from '@deephaven/jsapi-utils';
11
11
  import makeZipStreamHelper from "./ZipStreamHelper.js"; // Initially column types start as unknown
12
12
  var UNKNOWN = 'unknown';
13
13
  var MAX_INT = 2147483647;
@@ -1 +1 @@
1
- {"version":3,"file":"CsvTypeParser.js","names":["assertNotNull","Papa","NewTableColumnTypes","makeZipStreamHelper","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","_defineProperty","chunks","rowCount","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","_objectSpread","error","chunk","complete","parse","File","Blob","zipStream","resume","result","parser","data","types","abort","Array","fill","slice","cloneTypes","forEach","row","i","trim","concat","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"sources":["../../src/csv/CsvTypeParser.ts"],"sourcesContent":["import type { JSZipObject } from 'jszip';\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa, {\n type Parser,\n type ParseResult,\n type ParseLocalConfig,\n} from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport NewTableColumnTypes from './NewTableColumnTypes';\nimport makeZipStreamHelper from './ZipStreamHelper';\n\n// Initially column types start as unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX =\n /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX =\n /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(\n value: string,\n type: string,\n nullString: string | null\n ): string {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s: string): boolean {\n return (\n isNaN(s as unknown as number) || s === 'Infinity' || s === '-Infinity'\n );\n }\n\n static checkInteger(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value: string): string {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value: string): string {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value: string): string {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value: string): string {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted: (types: string[], rowCount: number) => void,\n file: File | Blob | JSZipObject,\n readHeaders: boolean,\n parentConfig: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>,\n nullString: string | null,\n onProgress: (progressValue: number) => boolean,\n onError: (e: unknown) => void,\n totalChunks: number,\n isZip: boolean,\n shouldTrim: boolean\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.rowCount = 0;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n onFileCompleted: (types: string[], rowCount: number) => void;\n\n file: File | Blob | JSZipObject;\n\n readHeaders: boolean;\n\n nullString: string | null;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n rowCount: number;\n\n isZip: boolean;\n\n shouldTrim: boolean;\n\n zipProgress: number;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n parse(): void {\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n const zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream as unknown as Blob, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n let { data } = result;\n if (!this.types) {\n if (data == null || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n this.rowCount += data.length;\n\n assertNotNull(this.types);\n\n const cloneTypes = [...this.types];\n\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (let i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n cloneTypes[i],\n this.nullString\n );\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${cloneTypes.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (results == null || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n // If the type is still unknown or a local time, just map it to a string.\n // Local times are not supported by the backend in DHC, and probably should have more context to parse safely anyway (such as a date or a time zone).\n // In these cases, we just map it to a string, and the user can use an `.update_view` later if they want to parse it into a different type.\n type === UNKNOWN || type === NewTableColumnTypes.LOCAL_TIME\n ? NewTableColumnTypes.STRING\n : type\n ),\n this.rowCount\n );\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CsvTypeParser.js","names":["assertNotNull","Papa","NewTableColumnTypes","makeZipStreamHelper","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","_defineProperty","chunks","rowCount","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","_objectSpread","error","chunk","complete","parse","File","Blob","zipStream","resume","result","parser","data","types","abort","Array","fill","slice","cloneTypes","forEach","row","i","trim","concat","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"sources":["../../src/csv/CsvTypeParser.ts"],"sourcesContent":["import type { JSZipObject } from 'jszip';\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa, {\n type Parser,\n type ParseResult,\n type ParseLocalConfig,\n} from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport { NewTableColumnTypes } from '@deephaven/jsapi-utils';\nimport makeZipStreamHelper from './ZipStreamHelper';\n\n// Initially column types start as unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX =\n /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX =\n /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(\n value: string,\n type: string,\n nullString: string | null\n ): string {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s: string): boolean {\n return (\n isNaN(s as unknown as number) || s === 'Infinity' || s === '-Infinity'\n );\n }\n\n static checkInteger(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value: string): string {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value: string): string {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value: string): string {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value: string): string {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted: (types: string[], rowCount: number) => void,\n file: File | Blob | JSZipObject,\n readHeaders: boolean,\n parentConfig: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>,\n nullString: string | null,\n onProgress: (progressValue: number) => boolean,\n onError: (e: unknown) => void,\n totalChunks: number,\n isZip: boolean,\n shouldTrim: boolean\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.rowCount = 0;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n onFileCompleted: (types: string[], rowCount: number) => void;\n\n file: File | Blob | JSZipObject;\n\n readHeaders: boolean;\n\n nullString: string | null;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n rowCount: number;\n\n isZip: boolean;\n\n shouldTrim: boolean;\n\n zipProgress: number;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n parse(): void {\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n const zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream as unknown as Blob, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n let { data } = result;\n if (!this.types) {\n if (data == null || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n this.rowCount += data.length;\n\n assertNotNull(this.types);\n\n const cloneTypes = [...this.types];\n\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (let i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n cloneTypes[i],\n this.nullString\n );\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${cloneTypes.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (results == null || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n // If the type is still unknown or a local time, just map it to a string.\n // Local times are not supported by the backend in DHC, and probably should have more context to parse safely anyway (such as a date or a time zone).\n // In these cases, we just map it to a string, and the user can use an `.update_view` later if they want to parse it into a different type.\n type === UNKNOWN || type === NewTableColumnTypes.LOCAL_TIME\n ? NewTableColumnTypes.STRING\n : type\n ),\n this.rowCount\n );\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"mappings":";;;;;AACA,SAASA,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,IAAI,MAIJ,WAAW;AAClB;AACA;AACA,SAASC,mBAAmB,QAAQ,wBAAwB;AAAC,OACtDC,mBAAmB,8BAE1B;AACA,IAAMC,OAAO,GAAG,SAAS;AAEzB,IAAMC,OAAO,GAAG,UAAU;AAC1B,IAAMC,OAAO,GAAG,CAAC,UAAU;AAE3B,IAAMC,eAAe,GACnB,sGAAsG;AACxG,IAAMC,gBAAgB,GACpB,0DAA0D;;AAE5D;AACA;AACA;AACA,MAAMC,aAAa,CAAC;EAClB,OAAOC,aAAaA,CAClBC,KAAa,EACbC,IAAY,EACZC,UAAyB,EACjB;IACR,IAAI,CAACF,KAAK,IAAIA,KAAK,KAAKE,UAAU,EAAE;MAClC;MACA,OAAOD,IAAI;IACb;IAEA,QAAQA,IAAI;MACV,KAAKV,mBAAmB,CAACY,MAAM;QAC7B;QACA,OAAOZ,mBAAmB,CAACY,MAAM;MACnC,KAAKZ,mBAAmB,CAACa,OAAO;QAC9B,OAAON,aAAa,CAACO,YAAY,CAACL,KAAK,CAAC;MAC1C,KAAKT,mBAAmB,CAACe,IAAI;QAC3B,OAAOR,aAAa,CAACS,SAAS,CAACP,KAAK,CAAC;MACvC,KAAKT,mBAAmB,CAACiB,MAAM;QAC7B,OAAOV,aAAa,CAACW,WAAW,CAACT,KAAK,CAAC;MACzC,KAAKT,mBAAmB,CAACmB,OAAO;QAC9B,OAAOZ,aAAa,CAACa,YAAY,CAACX,KAAK,CAAC;MAC1C,KAAKT,mBAAmB,CAACqB,SAAS;QAChC,OAAOd,aAAa,CAACe,aAAa,CAACb,KAAK,CAAC;MAC3C,KAAKT,mBAAmB,CAACuB,UAAU;QACjC,OAAOhB,aAAa,CAACiB,cAAc,CAACf,KAAK,CAAC;MAC5C;QACE,OAAOF,aAAa,CAACkB,kBAAkB,CAAChB,KAAK,CAAC;IAClD;EACF;;EAEA;EACA,OAAOiB,mBAAmBA,CAACC,CAAS,EAAW;IAC7C,OACEC,KAAK,CAACD,CAAsB,CAAC,IAAIA,CAAC,KAAK,UAAU,IAAIA,CAAC,KAAK,WAAW;EAE1E;EAEA,OAAOb,YAAYA,CAACL,KAAa,EAAU;IACzC,IAAMoB,QAAQ,GAAGpB,KAAK,CAACqB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,IAAIvB,aAAa,CAACmB,mBAAmB,CAACG,QAAQ,CAAC,EAAE;MAC/C,OAAO7B,mBAAmB,CAACY,MAAM;IACnC;IAEA,OAAOL,aAAa,CAACwB,aAAa,CAACF,QAAQ,CAAC;EAC9C;EAEA,OAAOb,SAASA,CAACP,KAAa,EAAU;IACtC,IAAMoB,QAAQ,GAAGpB,KAAK,CAACqB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,IAAIvB,aAAa,CAACmB,mBAAmB,CAACG,QAAQ,CAAC,EAAE;MAC/C,OAAO7B,mBAAmB,CAACY,MAAM;IACnC;IAEA,IAAIiB,QAAQ,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC1B,OAAOhC,mBAAmB,CAACiB,MAAM;IACnC;IAEA,OAAOjB,mBAAmB,CAACe,IAAI;EACjC;EAEA,OAAOG,WAAWA,CAACT,KAAa,EAAU;IACxC,IAAMoB,QAAQ,GAAGpB,KAAK,CAACqB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,IAAIvB,aAAa,CAACmB,mBAAmB,CAACG,QAAQ,CAAC,EAAE;MAC/C,OAAO7B,mBAAmB,CAACY,MAAM;IACnC;IAEA,OAAOZ,mBAAmB,CAACiB,MAAM;EACnC;EAEA,OAAOG,YAAYA,CAACX,KAAa,EAAU;IACzC,IAAMwB,KAAK,GAAGxB,KAAK,CAACyB,WAAW,CAAC,CAAC;IACjC,IAAID,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,OAAO,EAAE;MACzC,OAAOjC,mBAAmB,CAACmB,OAAO;IACpC;IACA,OAAOnB,mBAAmB,CAACY,MAAM;EACnC;EAEA,OAAOU,aAAaA,CAACb,KAAa,EAAU;IAC1C,IAAIJ,eAAe,CAAC8B,IAAI,CAAC1B,KAAK,CAAC,EAAE;MAC/B,OAAOT,mBAAmB,CAACqB,SAAS;IACtC;IAEA,OAAOrB,mBAAmB,CAACY,MAAM;EACnC;EAEA,OAAOY,cAAcA,CAACf,KAAa,EAAU;IAC3C,IAAIH,gBAAgB,CAAC6B,IAAI,CAAC1B,KAAK,CAAC,EAAE;MAChC,OAAOT,mBAAmB,CAACuB,UAAU;IACvC;IAEA,OAAOvB,mBAAmB,CAACY,MAAM;EACnC;EAEA,OAAOa,kBAAkBA,CAAChB,KAAa,EAAU;IAC/C,IAAMoB,QAAQ,GAAGpB,KAAK,CAACqB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,IAAIvB,aAAa,CAACmB,mBAAmB,CAACG,QAAQ,CAAC,EAAE;MAC/C,IAAMI,KAAK,GAAGxB,KAAK,CAACyB,WAAW,CAAC,CAAC;MACjC,IAAID,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,OAAO,EAAE;QACzC,OAAOjC,mBAAmB,CAACmB,OAAO;MACpC;MAEA,IAAId,eAAe,CAAC8B,IAAI,CAAC1B,KAAK,CAAC,IAAIA,KAAK,CAACuB,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtD,OAAOhC,mBAAmB,CAACqB,SAAS;MACtC;MAEA,IAAIf,gBAAgB,CAAC6B,IAAI,CAAC1B,KAAK,CAAC,EAAE;QAChC,OAAOT,mBAAmB,CAACuB,UAAU;MACvC;MAEA,OAAOvB,mBAAmB,CAACY,MAAM;IACnC;IAEA,OAAOL,aAAa,CAACwB,aAAa,CAACF,QAAQ,CAAC;EAC9C;EAEA,OAAOE,aAAaA,CAACtB,KAAa,EAAU;IAC1C,IAAIA,KAAK,CAACuB,QAAQ,CAAC,GAAG,CAAC,EAAE;MACvB,OAAOhC,mBAAmB,CAACiB,MAAM;IACnC;;IAEA;IACA,IAAMmB,YAAY,GAAG3B,KAAK,CAAC4B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;IACpD,IAAI5B,KAAK,CAAC6B,MAAM,GAAGF,YAAY,EAAE;MAC/B,OAAOpC,mBAAmB,CAACe,IAAI;IACjC;;IAEA;IACA,IAAMwB,QAAQ,GAAGC,QAAQ,CAAC/B,KAAK,EAAE,EAAE,CAAC;IACpC,IAAI8B,QAAQ,GAAGpC,OAAO,IAAIoC,QAAQ,GAAGnC,OAAO,EAAE;MAC5C,OAAOJ,mBAAmB,CAACe,IAAI;IACjC;IAEA,OAAOf,mBAAmB,CAACa,OAAO;EACpC;EAEA4B,WAAWA,CACTC,eAA4D,EAC5DC,IAA+B,EAC/BC,WAAoB,EACpBC,YAAqE,EACrElC,UAAyB,EACzBmC,UAA8C,EAC9CC,OAA6B,EAC7BC,WAAmB,EACnBC,KAAc,EACdC,UAAmB,EACnB;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACT,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACjC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACmC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACK,MAAM,GAAG,CAAC;IACf,IAAI,CAACJ,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACK,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACI,WAAW,GAAG,CAAC;IAEpB,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,cAAc,GAAG,IAAI,CAACA,cAAc,CAACD,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACE,WAAW,GAAG,IAAI,CAACA,WAAW,CAACF,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACG,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACH,IAAI,CAAC,IAAI,CAAC;IAExD,IAAI,CAACI,MAAM,GAAAC,aAAA,CAAAA,aAAA,KACNhB,YAAY;MACfiB,KAAK,EAAE,IAAI,CAACJ,WAAW;MACvBK,KAAK,EAAE,IAAI,CAACR,WAAW;MACvBS,QAAQ,EAAE,IAAI,CAACP;IAAc,EAC9B;EACH;EA8BAQ,KAAKA,CAAA,EAAS;IACZ,IAAI,IAAI,CAACtB,IAAI,YAAYuB,IAAI,IAAI,IAAI,CAACvB,IAAI,YAAYwB,IAAI,EAAE;MAC1DpE,IAAI,CAACkE,KAAK,CAAC,IAAI,CAACtB,IAAI,EAAE,IAAI,CAACiB,MAAM,CAAC;IACpC,CAAC,MAAM;MACL,IAAMQ,SAAS,GAAGnE,mBAAmB,CAAC,IAAI,CAAC0C,IAAI,EAAE,IAAI,CAACgB,gBAAgB,CAAC;MACvE;MACA5D,IAAI,CAACkE,KAAK,CAACG,SAAS,EAAqB,IAAI,CAACR,MAAM,CAAC;MACrD;MACA;MACAQ,SAAS,CAACC,MAAM,CAAC,CAAC;IACpB;EACF;EAEAd,WAAWA,CAACe,MAA6B,EAAEC,MAAc,EAAQ;IAC/D,IAAI;MAAEC;IAAK,CAAC,GAAGF,MAAM;IACrB,IAAI,CAAC,IAAI,CAACG,KAAK,EAAE;MACf,IAAID,IAAI,IAAI,IAAI,IAAIA,IAAI,CAAClC,MAAM,KAAK,CAAC,EAAE;QACrCiC,MAAM,CAACG,KAAK,CAAC,CAAC;QACd,IAAI,CAAC3B,OAAO,CAAC,qCAAqC,CAAC;QACnD;MACF;MACA,IAAI,CAAC0B,KAAK,GAAG,IAAIE,KAAK,CAACH,IAAI,CAAC,CAAC,CAAC,CAAClC,MAAM,CAAC,CAACsC,IAAI,CAAC1E,OAAO,CAAC;MACpD,IAAI,IAAI,CAAC0C,WAAW,EAAE;QACpB;QACA4B,IAAI,GAAGA,IAAI,CAACK,KAAK,CAAC,CAAC,CAAC;MACtB;IACF;IAEA,IAAI,CAACxB,QAAQ,IAAImB,IAAI,CAAClC,MAAM;IAE5BxC,aAAa,CAAC,IAAI,CAAC2E,KAAK,CAAC;IAEzB,IAAMK,UAAU,GAAG,CAAC,GAAG,IAAI,CAACL,KAAK,CAAC;IAElCD,IAAI,CAACO,OAAO,CAACC,GAAG,IAAI;MAClB,IAAIA,GAAG,CAAC1C,MAAM,IAAIwC,UAAU,CAACxC,MAAM,EAAE;QACnC,KAAK,IAAI2C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,CAACxC,MAAM,EAAE2C,CAAC,IAAI,CAAC,EAAE;UAC7CH,UAAU,CAACG,CAAC,CAAC,GAAG1E,aAAa,CAACC,aAAa,CACzC,IAAI,CAAC0C,UAAU,GAAG8B,GAAG,CAACC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,GAAGF,GAAG,CAACC,CAAC,CAAC,EACxCH,UAAU,CAACG,CAAC,CAAC,EACb,IAAI,CAACtE,UACP,CAAC;QACH;QACA,IAAI,CAAC8D,KAAK,GAAGK,UAAU;MACzB,CAAC,MAAM;QACLP,MAAM,CAACG,KAAK,CAAC,CAAC;QACd,IAAI,CAAC3B,OAAO,kEAAAoC,MAAA,CACuDL,UAAU,CAACxC,MAAM,iBAAA6C,MAAA,CAAcH,GAAG,CAAC1C,MAAM,eAAA6C,MAAA,CAAYH,GAAG,CAC3H,CAAC;MACH;IACF,CAAC,CAAC;IAEF,IAAI,CAAC5B,MAAM,IAAI,CAAC;IAChB;IACA,IAAIgC,QAAQ,GAAG,CAAC;IAChB,IAAI,IAAI,CAACpC,WAAW,GAAG,CAAC,EAAE;MACxBoC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAE,IAAI,CAAClC,MAAM,GAAG,IAAI,CAACJ,WAAW,GAAI,EAAE,CAAC;IAC9D,CAAC,MAAM;MACLoC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAChC,WAAW,GAAG,CAAC,CAAC;IAC7C;IACA,IAAMiC,WAAW,GAAG,IAAI,CAACzC,UAAU,CAACsC,QAAQ,CAAC;IAC7C,IAAIG,WAAW,EAAE;MACfhB,MAAM,CAACG,KAAK,CAAC,CAAC;IAChB;EACF;EAEAjB,cAAcA,CAAC+B,OAA6B,EAAQ;IAClD,IAAM;MAAEf,KAAK;MAAE/B;IAAgB,CAAC,GAAG,IAAI;IACvC;IACA5C,aAAa,CAAC2E,KAAK,CAAC;IACpB,IAAIe,OAAO,IAAI,IAAI,IAAI,CAACA,OAAO,CAACC,IAAI,CAACC,OAAO,EAAE;MAC5ChD,eAAe,CACb+B,KAAK,CAACkB,GAAG,CAACjF,IAAI;MACZ;MACA;MACA;MACAA,IAAI,KAAKR,OAAO,IAAIQ,IAAI,KAAKV,mBAAmB,CAACuB,UAAU,GACvDvB,mBAAmB,CAACY,MAAM,GAC1BF,IACN,CAAC,EACD,IAAI,CAAC2C,QACP,CAAC;IACH;EACF;EAEAK,WAAWA,CAACI,KAAc,EAAQ;IAChC,IAAM;MAAEf;IAAQ,CAAC,GAAG,IAAI;IACxBA,OAAO,CAACe,KAAK,CAAC;EAChB;EAEAH,gBAAgBA,CAACiC,QAA6B,EAAQ;IACpD,IAAI,CAACtC,WAAW,GAAGsC,QAAQ,CAACC,OAAO;EACrC;AACF;AAEA,eAAetF,aAAa"}
package/dist/index.d.ts CHANGED
@@ -15,5 +15,4 @@ export * from './console-history';
15
15
  export * from './monaco';
16
16
  export { default as LogView } from './log/LogView';
17
17
  export { default as HeapUsage } from './HeapUsage';
18
- export { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';
19
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -15,5 +15,4 @@ export * from "./console-history/index.js";
15
15
  export * from "./monaco/index.js";
16
16
  export { default as LogView } from "./log/LogView.js";
17
17
  export { default as HeapUsage } from "./HeapUsage.js";
18
- export { default as NewTableColumnTypes } from "./csv/NewTableColumnTypes.js";
19
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Console","default","ConsoleInput","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage","NewTableColumnTypes"],"sources":["../src/index.ts"],"sourcesContent":["import Console from './Console';\n\nexport default Console;\nexport { Console };\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport * from './monaco/MonacoThemeProvider';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor, type EditorProps } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport * from './monaco';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\nexport { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';\n"],"mappings":"OAAOA,OAAO;AAEd,eAAeA,OAAO;AACtB,SAASA,OAAO;AAAG,SACVC,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,gBAAgB;AAAA;AAAA,SAE3BH,OAAO,IAAII,WAAW;AAAA,SACtBJ,OAAO,IAAIK,MAAM;AAAA,SACjBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,SAK5BP,OAAO,IAAIQ,OAAO;AAAA,SAClBR,OAAO,IAAIS,SAAS;AAAA,SACpBT,OAAO,IAAIU,mBAAmB"}
1
+ {"version":3,"file":"index.js","names":["Console","default","ConsoleInput","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage"],"sources":["../src/index.ts"],"sourcesContent":["import Console from './Console';\n\nexport default Console;\nexport { Console };\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport * from './monaco/MonacoThemeProvider';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor, type EditorProps } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport * from './monaco';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\n"],"mappings":"OAAOA,OAAO;AAEd,eAAeA,OAAO;AACtB,SAASA,OAAO;AAAG,SACVC,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,gBAAgB;AAAA;AAAA,SAE3BH,OAAO,IAAII,WAAW;AAAA,SACtBJ,OAAO,IAAIK,MAAM;AAAA,SACjBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,SAK5BP,OAAO,IAAIQ,OAAO;AAAA,SAClBR,OAAO,IAAIS,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"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"}
@@ -79,17 +79,19 @@ class MonacoProviders extends PureComponent {
79
79
  if (!MonacoProviders.ruffWorkspace) {
80
80
  return;
81
81
  }
82
- monaco.editor.setModelMarkers(model, 'ruff', MonacoProviders.getDiagnostics(model).map(d => {
83
- // Unused variable or import. Mark as warning and unnecessary to fade the text
82
+ var diagnostics = MonacoProviders.getDiagnostics(model);
83
+ log.debug("Linting Python document: ".concat(model.uri.toString()), diagnostics);
84
+ monaco.editor.setModelMarkers(model, 'ruff', diagnostics.map(d => {
85
+ // Unused variable or import. Mark as unnecessary to fade the text
84
86
  var isUnnecessary = d.code === 'F401' || d.code === 'F841';
87
+ var isSyntaxError = d.code == null; // SyntaxError has no error code
85
88
  return {
86
89
  startLineNumber: d.location.row,
87
90
  startColumn: d.location.column,
88
91
  endLineNumber: d.end_location.row,
89
92
  endColumn: d.end_location.column,
90
- message: d.code != null ? "".concat(d.code, ": ").concat(d.message) : d.message,
91
- // SyntaxError has no code
92
- severity: isUnnecessary ? monaco.MarkerSeverity.Warning : monaco.MarkerSeverity.Error,
93
+ message: isSyntaxError ? d.message : "".concat(d.code, ": ").concat(d.message),
94
+ severity: isSyntaxError ? monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning,
93
95
  tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : []
94
96
  };
95
97
  }));
@@ -315,6 +317,7 @@ class MonacoProviders extends PureComponent {
315
317
  if (!MonacoProviders.ruffWorkspace) {
316
318
  return;
317
319
  }
320
+ log.debug("Formatting Python document: ".concat(model.uri.toString));
318
321
  return [{
319
322
  range: model.getFullModelRange(),
320
323
  text: MonacoProviders.ruffWorkspace.format(model.getValue())
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProviders.js","names":["PureComponent","monaco","throttle","Log","init","Workspace","RUFF_DEFAULT_SETTINGS","MonacoUtils","log","module","MonacoProviders","initRuff","_asyncToGenerator","initRuffPromise","then","debug","version","ruffWorkspace","ruffSettings","lintAllPython","setRuffSettings","_arguments","arguments","settings","length","undefined","getDiagnostics","model","diagnostics","check","getValue","isConsoleModel","filter","d","code","isRuffEnabled","editor","removeAllMarkers","getModels","m","getLanguageId","forEach","lintPython","setModelMarkers","map","isUnnecessary","startLineNumber","location","row","startColumn","column","endLineNumber","end_location","endColumn","message","concat","severity","MarkerSeverity","Warning","Error","tags","MarkerTag","Unnecessary","lspToMonacoKind","kind","monacoKinds","languages","CompletionItemKind","Text","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Property","Unit","Value","Enum","Keyword","Snippet","Color","File","Reference","Folder","EnumMember","Constant","Struct","Event","Operator","TypeParameter","lspToMonacoRange","range","start","end","line","character","monacoToLspPosition","position","lineNumber","handlePythonCodeActionRequest","actions","dispose","diagnosticRange","Range","intersectRanges","fixActions","_ref","fix","title","id","edit","edits","_edit$content","resource","uri","versionId","getVersionId","textEdit","text","content","disableActions","getLineContent","lastToken","tokenize","at","lineEdit","type","startsWith","offset","flat","handlePythonFormatRequest","options","token","getFullModelRange","format","constructor","props","_defineProperty","handleCompletionRequest","bind","handleSignatureRequest","handleHoverRequest","componentDidMount","language","session","registeredCompletionProvider","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","getSignatureHelp","registeredSignatureProvider","registerSignatureHelpProvider","provideSignatureHelp","signatureHelpTriggerCharacters","getHover","registeredHoverProvider","registerHoverProvider","provideHover","throttledLint","onDidChangeContent","componentWillUnmount","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","context","propModel","params","textDocument","completionItems","getCompletionItems","monacoCompletionItems","items","suggestions","item","label","detail","documentation","sortText","filterText","insertTextFormat","value","insertText","insertTextRules","incomplete","catch","error","defaultResult","signatures","activeSignature","activeParameter","signatureItems","monacoSignatures","parameters","hover","monacoHover","hoverItem","contents","hoverContents","render"],"sources":["../../src/monaco/MonacoProviders.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport init, { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';\nimport RUFF_DEFAULT_SETTINGS from './RuffDefaultSettings';\nimport MonacoUtils from './MonacoUtils';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoProviderProps {\n model: monaco.editor.ITextModel;\n session: dh.IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent<\n MonacoProviderProps,\n Record<string, never>\n> {\n static ruffWorkspace?: Workspace;\n\n static initRuffPromise?: Promise<void>;\n\n static isRuffEnabled = true;\n\n static ruffSettings: Record<string, unknown> = RUFF_DEFAULT_SETTINGS;\n\n /**\n * Loads and initializes Ruff.\n * Subsequent calls will return the same promise.\n */\n static async initRuff(): Promise<void> {\n if (MonacoProviders.initRuffPromise) {\n return MonacoProviders.initRuffPromise;\n }\n\n MonacoProviders.initRuffPromise = init({}).then(() => {\n log.debug('Initialized Ruff', Workspace.version());\n\n MonacoProviders.ruffWorkspace = new Workspace(\n MonacoProviders.ruffSettings\n );\n MonacoProviders.lintAllPython();\n });\n\n return MonacoProviders.initRuffPromise;\n }\n\n /**\n * Sets ruff settings\n * @param settings The ruff settings\n */\n static async setRuffSettings(\n settings: Record<string, unknown> = MonacoProviders.ruffSettings\n ): Promise<void> {\n MonacoProviders.ruffSettings = settings;\n\n // Ruff has not been initialized yet\n if (MonacoProviders.ruffWorkspace == null) {\n return;\n }\n\n MonacoProviders.ruffWorkspace = new Workspace(settings);\n MonacoProviders.lintAllPython();\n }\n\n static getDiagnostics(model: monaco.editor.ITextModel): Diagnostic[] {\n if (!MonacoProviders.ruffWorkspace) {\n return [];\n }\n\n const diagnostics = MonacoProviders.ruffWorkspace.check(\n model.getValue()\n ) as Diagnostic[];\n if (MonacoUtils.isConsoleModel(model)) {\n // Only want SyntaxErrors for console which have no code\n return diagnostics.filter(d => d.code == null);\n }\n return diagnostics;\n }\n\n static lintAllPython(): void {\n if (!MonacoProviders.isRuffEnabled) {\n monaco.editor.removeAllMarkers('ruff');\n return;\n }\n\n monaco.editor\n .getModels()\n .filter(m => m.getLanguageId() === 'python')\n .forEach(MonacoProviders.lintPython);\n }\n\n static lintPython(model: monaco.editor.ITextModel): void {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n monaco.editor.setModelMarkers(\n model,\n 'ruff',\n MonacoProviders.getDiagnostics(model).map((d: Diagnostic) => {\n // Unused variable or import. Mark as warning and unnecessary to fade the text\n const isUnnecessary = d.code === 'F401' || d.code === 'F841';\n return {\n startLineNumber: d.location.row,\n startColumn: d.location.column,\n endLineNumber: d.end_location.row,\n endColumn: d.end_location.column,\n message: d.code != null ? `${d.code}: ${d.message}` : d.message, // SyntaxError has no code\n severity: isUnnecessary\n ? monaco.MarkerSeverity.Warning\n : monaco.MarkerSeverity.Error,\n tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : [],\n };\n })\n );\n }\n\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind: number | undefined): number {\n const monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range: dh.lsp.Range): monaco.IRange {\n const { start, end } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(\n position: monaco.IPosition\n ): Pick<dh.lsp.Position, 'line' | 'character'> {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1,\n };\n }\n\n static handlePythonCodeActionRequest(\n model: monaco.editor.ITextModel,\n range: monaco.Range\n ): monaco.languages.ProviderResult<monaco.languages.CodeActionList> {\n if (!MonacoProviders.ruffWorkspace) {\n return {\n actions: [],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {\n const diagnosticRange = new monaco.Range(\n d.location.row,\n d.location.column,\n d.end_location.row,\n d.end_location.column\n );\n return diagnosticRange.intersectRanges(range);\n });\n\n const fixActions: monaco.languages.CodeAction[] = diagnostics\n .filter(({ fix }) => fix != null)\n .map(d => {\n let title = 'Fix';\n if (d.fix != null) {\n if (d.fix.message != null && d.fix.message !== '') {\n title = `${d.code}: ${d.fix.message}`;\n } else {\n title = `Fix ${d.code}`;\n }\n }\n return {\n title,\n id: `fix-${d.code}`,\n kind: 'quickfix',\n edit: d.fix\n ? {\n edits: d.fix.edits.map(edit => ({\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: edit.location.row,\n startColumn: edit.location.column,\n endLineNumber: edit.end_location.row,\n endColumn: edit.end_location.column,\n },\n text: edit.content ?? '',\n },\n })),\n }\n : undefined,\n };\n });\n\n const disableActions: monaco.languages.CodeAction[] = diagnostics\n .map(d => {\n const line = model.getLineContent(d.location.row);\n const lastToken = monaco.editor\n .tokenize(line, model.getLanguageId())[0]\n .at(-1);\n const lineEdit = {\n range: {\n startLineNumber: d.location.row,\n startColumn: line.length + 1,\n endLineNumber: d.location.row,\n endColumn: line.length + 1,\n },\n text: ` # noqa: ${d.code}`,\n };\n if (lastToken != null && lastToken.type.startsWith('comment')) {\n // Already a comment at the end of the line\n lineEdit.text = `# noqa: ${d.code} `;\n if (line.startsWith('# noqa:', lastToken.offset)) {\n // Already another suppressed rule on the line\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = lastToken.offset + 9; // \"# noqa: \" length + 1 to offset\n } else {\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset)\n ? lastToken.offset + 3 // \"# \" + 1 to offset\n : lastToken.offset + 2; // \"#\" + 1 to offset\n }\n }\n return [\n {\n title: `Disable ${d.code} for this line`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: lineEdit,\n },\n ],\n },\n },\n {\n title: `Disable ${d.code} for this file`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n },\n text: `# ruff: noqa: ${d.code}\\n`,\n },\n },\n ],\n },\n },\n ];\n })\n .flat();\n\n return {\n actions: [...fixActions, ...disableActions],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n static handlePythonFormatRequest(\n model: monaco.editor.ITextModel,\n options: monaco.languages.FormattingOptions,\n token: monaco.CancellationToken\n ): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> {\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n return [\n {\n range: model.getFullModelRange(),\n text: MonacoProviders.ruffWorkspace.format(model.getValue()),\n },\n ];\n }\n\n constructor(props: MonacoProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language, session, model } = this.props;\n\n this.registeredCompletionProvider =\n monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"],\n });\n\n if (session.getSignatureHelp != null) {\n this.registeredSignatureProvider =\n monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ','],\n });\n }\n\n if (session.getHover != null) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(\n language,\n {\n provideHover: this.handleHoverRequest,\n }\n );\n }\n\n if (language === 'python') {\n if (MonacoProviders.ruffWorkspace == null) {\n MonacoProviders.initRuff(); // This will also lint all open editors\n } else {\n MonacoProviders.lintPython(model);\n }\n\n const throttledLint = throttle(\n (m: monaco.editor.ITextModel) => MonacoProviders.lintPython(m),\n 250\n );\n\n model.onDidChangeContent(() => {\n throttledLint(model);\n });\n }\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n this.registeredSignatureProvider?.dispose();\n this.registeredHoverProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n registeredSignatureProvider?: monaco.IDisposable;\n\n registeredHoverProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n log.debug('Completion items received: ', params, items);\n\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range),\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n handleSignatureRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n token: monaco.CancellationToken,\n context: monaco.languages.SignatureHelpContext\n ): monaco.languages.ProviderResult<monaco.languages.SignatureHelpResult> {\n const defaultResult: monaco.languages.SignatureHelpResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: () => {\n /* no-op */\n },\n };\n\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getSignatureHelp == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n\n const monacoSignatures = signatureItems\n .then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n const signatures = items.map(item => {\n const { label, documentation, parameters } = item;\n\n return {\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n label,\n parameters: parameters ?? [],\n };\n });\n\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n const activeSignature = 0;\n\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter,\n },\n dispose: () => {\n /* no-op */\n },\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n\n return monacoSignatures;\n }\n\n handleHoverRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position\n ): monaco.languages.ProviderResult<monaco.languages.Hover> {\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getHover == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n };\n\n const hover = session.getHover(params);\n log.debug('Requested hover', params);\n\n const monacoHover = hover\n .then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n const { contents: hoverContents } = hoverItem;\n\n return {\n contents: hoverContents != null ? [hoverContents] : [],\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving hover', error);\n return { contents: [] };\n });\n\n return monacoHover;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoProviders;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MonacoProviders.js","names":["PureComponent","monaco","throttle","Log","init","Workspace","RUFF_DEFAULT_SETTINGS","MonacoUtils","log","module","MonacoProviders","initRuff","_asyncToGenerator","initRuffPromise","then","debug","version","ruffWorkspace","ruffSettings","lintAllPython","setRuffSettings","_arguments","arguments","settings","length","undefined","getDiagnostics","model","diagnostics","check","getValue","isConsoleModel","filter","d","code","isRuffEnabled","editor","removeAllMarkers","getModels","m","getLanguageId","forEach","lintPython","concat","uri","toString","setModelMarkers","map","isUnnecessary","isSyntaxError","startLineNumber","location","row","startColumn","column","endLineNumber","end_location","endColumn","message","severity","MarkerSeverity","Error","Warning","tags","MarkerTag","Unnecessary","lspToMonacoKind","kind","monacoKinds","languages","CompletionItemKind","Text","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Property","Unit","Value","Enum","Keyword","Snippet","Color","File","Reference","Folder","EnumMember","Constant","Struct","Event","Operator","TypeParameter","lspToMonacoRange","range","start","end","line","character","monacoToLspPosition","position","lineNumber","handlePythonCodeActionRequest","actions","dispose","diagnosticRange","Range","intersectRanges","fixActions","_ref","fix","title","id","edit","edits","_edit$content","resource","versionId","getVersionId","textEdit","text","content","disableActions","getLineContent","lastToken","tokenize","at","lineEdit","type","startsWith","offset","flat","handlePythonFormatRequest","options","token","getFullModelRange","format","constructor","props","_defineProperty","handleCompletionRequest","bind","handleSignatureRequest","handleHoverRequest","componentDidMount","language","session","registeredCompletionProvider","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","getSignatureHelp","registeredSignatureProvider","registerSignatureHelpProvider","provideSignatureHelp","signatureHelpTriggerCharacters","getHover","registeredHoverProvider","registerHoverProvider","provideHover","throttledLint","onDidChangeContent","componentWillUnmount","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","context","propModel","params","textDocument","completionItems","getCompletionItems","monacoCompletionItems","items","suggestions","item","label","detail","documentation","sortText","filterText","insertTextFormat","value","insertText","insertTextRules","incomplete","catch","error","defaultResult","signatures","activeSignature","activeParameter","signatureItems","monacoSignatures","parameters","hover","monacoHover","hoverItem","contents","hoverContents","render"],"sources":["../../src/monaco/MonacoProviders.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport init, { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';\nimport RUFF_DEFAULT_SETTINGS from './RuffDefaultSettings';\nimport MonacoUtils from './MonacoUtils';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoProviderProps {\n model: monaco.editor.ITextModel;\n session: dh.IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent<\n MonacoProviderProps,\n Record<string, never>\n> {\n static ruffWorkspace?: Workspace;\n\n static initRuffPromise?: Promise<void>;\n\n static isRuffEnabled = true;\n\n static ruffSettings: Record<string, unknown> = RUFF_DEFAULT_SETTINGS;\n\n /**\n * Loads and initializes Ruff.\n * Subsequent calls will return the same promise.\n */\n static async initRuff(): Promise<void> {\n if (MonacoProviders.initRuffPromise) {\n return MonacoProviders.initRuffPromise;\n }\n\n MonacoProviders.initRuffPromise = init({}).then(() => {\n log.debug('Initialized Ruff', Workspace.version());\n\n MonacoProviders.ruffWorkspace = new Workspace(\n MonacoProviders.ruffSettings\n );\n MonacoProviders.lintAllPython();\n });\n\n return MonacoProviders.initRuffPromise;\n }\n\n /**\n * Sets ruff settings\n * @param settings The ruff settings\n */\n static async setRuffSettings(\n settings: Record<string, unknown> = MonacoProviders.ruffSettings\n ): Promise<void> {\n MonacoProviders.ruffSettings = settings;\n\n // Ruff has not been initialized yet\n if (MonacoProviders.ruffWorkspace == null) {\n return;\n }\n\n MonacoProviders.ruffWorkspace = new Workspace(settings);\n MonacoProviders.lintAllPython();\n }\n\n static getDiagnostics(model: monaco.editor.ITextModel): Diagnostic[] {\n if (!MonacoProviders.ruffWorkspace) {\n return [];\n }\n\n const diagnostics = MonacoProviders.ruffWorkspace.check(\n model.getValue()\n ) as Diagnostic[];\n if (MonacoUtils.isConsoleModel(model)) {\n // Only want SyntaxErrors for console which have no code\n return diagnostics.filter(d => d.code == null);\n }\n return diagnostics;\n }\n\n static lintAllPython(): void {\n if (!MonacoProviders.isRuffEnabled) {\n monaco.editor.removeAllMarkers('ruff');\n return;\n }\n\n monaco.editor\n .getModels()\n .filter(m => m.getLanguageId() === 'python')\n .forEach(MonacoProviders.lintPython);\n }\n\n static lintPython(model: monaco.editor.ITextModel): void {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model);\n log.debug(`Linting Python document: ${model.uri.toString()}`, diagnostics);\n\n monaco.editor.setModelMarkers(\n model,\n 'ruff',\n diagnostics.map((d: Diagnostic) => {\n // Unused variable or import. Mark as unnecessary to fade the text\n const isUnnecessary = d.code === 'F401' || d.code === 'F841';\n const isSyntaxError = d.code == null; // SyntaxError has no error code\n return {\n startLineNumber: d.location.row,\n startColumn: d.location.column,\n endLineNumber: d.end_location.row,\n endColumn: d.end_location.column,\n message: isSyntaxError ? d.message : `${d.code}: ${d.message}`,\n severity: isSyntaxError\n ? monaco.MarkerSeverity.Error\n : monaco.MarkerSeverity.Warning,\n tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : [],\n };\n })\n );\n }\n\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind: number | undefined): number {\n const monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range: dh.lsp.Range): monaco.IRange {\n const { start, end } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(\n position: monaco.IPosition\n ): Pick<dh.lsp.Position, 'line' | 'character'> {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1,\n };\n }\n\n static handlePythonCodeActionRequest(\n model: monaco.editor.ITextModel,\n range: monaco.Range\n ): monaco.languages.ProviderResult<monaco.languages.CodeActionList> {\n if (!MonacoProviders.ruffWorkspace) {\n return {\n actions: [],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {\n const diagnosticRange = new monaco.Range(\n d.location.row,\n d.location.column,\n d.end_location.row,\n d.end_location.column\n );\n return diagnosticRange.intersectRanges(range);\n });\n\n const fixActions: monaco.languages.CodeAction[] = diagnostics\n .filter(({ fix }) => fix != null)\n .map(d => {\n let title = 'Fix';\n if (d.fix != null) {\n if (d.fix.message != null && d.fix.message !== '') {\n title = `${d.code}: ${d.fix.message}`;\n } else {\n title = `Fix ${d.code}`;\n }\n }\n return {\n title,\n id: `fix-${d.code}`,\n kind: 'quickfix',\n edit: d.fix\n ? {\n edits: d.fix.edits.map(edit => ({\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: edit.location.row,\n startColumn: edit.location.column,\n endLineNumber: edit.end_location.row,\n endColumn: edit.end_location.column,\n },\n text: edit.content ?? '',\n },\n })),\n }\n : undefined,\n };\n });\n\n const disableActions: monaco.languages.CodeAction[] = diagnostics\n .map(d => {\n const line = model.getLineContent(d.location.row);\n const lastToken = monaco.editor\n .tokenize(line, model.getLanguageId())[0]\n .at(-1);\n const lineEdit = {\n range: {\n startLineNumber: d.location.row,\n startColumn: line.length + 1,\n endLineNumber: d.location.row,\n endColumn: line.length + 1,\n },\n text: ` # noqa: ${d.code}`,\n };\n if (lastToken != null && lastToken.type.startsWith('comment')) {\n // Already a comment at the end of the line\n lineEdit.text = `# noqa: ${d.code} `;\n if (line.startsWith('# noqa:', lastToken.offset)) {\n // Already another suppressed rule on the line\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = lastToken.offset + 9; // \"# noqa: \" length + 1 to offset\n } else {\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset)\n ? lastToken.offset + 3 // \"# \" + 1 to offset\n : lastToken.offset + 2; // \"#\" + 1 to offset\n }\n }\n return [\n {\n title: `Disable ${d.code} for this line`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: lineEdit,\n },\n ],\n },\n },\n {\n title: `Disable ${d.code} for this file`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n },\n text: `# ruff: noqa: ${d.code}\\n`,\n },\n },\n ],\n },\n },\n ];\n })\n .flat();\n\n return {\n actions: [...fixActions, ...disableActions],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n static handlePythonFormatRequest(\n model: monaco.editor.ITextModel,\n options: monaco.languages.FormattingOptions,\n token: monaco.CancellationToken\n ): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> {\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n log.debug(`Formatting Python document: ${model.uri.toString}`);\n\n return [\n {\n range: model.getFullModelRange(),\n text: MonacoProviders.ruffWorkspace.format(model.getValue()),\n },\n ];\n }\n\n constructor(props: MonacoProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language, session, model } = this.props;\n\n this.registeredCompletionProvider =\n monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"],\n });\n\n if (session.getSignatureHelp != null) {\n this.registeredSignatureProvider =\n monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ','],\n });\n }\n\n if (session.getHover != null) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(\n language,\n {\n provideHover: this.handleHoverRequest,\n }\n );\n }\n\n if (language === 'python') {\n if (MonacoProviders.ruffWorkspace == null) {\n MonacoProviders.initRuff(); // This will also lint all open editors\n } else {\n MonacoProviders.lintPython(model);\n }\n\n const throttledLint = throttle(\n (m: monaco.editor.ITextModel) => MonacoProviders.lintPython(m),\n 250\n );\n\n model.onDidChangeContent(() => {\n throttledLint(model);\n });\n }\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n this.registeredSignatureProvider?.dispose();\n this.registeredHoverProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n registeredSignatureProvider?: monaco.IDisposable;\n\n registeredHoverProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n log.debug('Completion items received: ', params, items);\n\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range),\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n handleSignatureRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n token: monaco.CancellationToken,\n context: monaco.languages.SignatureHelpContext\n ): monaco.languages.ProviderResult<monaco.languages.SignatureHelpResult> {\n const defaultResult: monaco.languages.SignatureHelpResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: () => {\n /* no-op */\n },\n };\n\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getSignatureHelp == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n\n const monacoSignatures = signatureItems\n .then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n const signatures = items.map(item => {\n const { label, documentation, parameters } = item;\n\n return {\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n label,\n parameters: parameters ?? [],\n };\n });\n\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n const activeSignature = 0;\n\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter,\n },\n dispose: () => {\n /* no-op */\n },\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n\n return monacoSignatures;\n }\n\n handleHoverRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position\n ): monaco.languages.ProviderResult<monaco.languages.Hover> {\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getHover == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n };\n\n const hover = session.getHover(params);\n log.debug('Requested hover', params);\n\n const monacoHover = hover\n .then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n const { contents: hoverContents } = hoverItem;\n\n return {\n contents: hoverContents != null ? [hoverContents] : [],\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving hover', error);\n return { contents: [] };\n });\n\n return monacoHover;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoProviders;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.95.1-beta.6+d2c6eabb",
3
+ "version": "0.96.0",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -24,15 +24,16 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@astral-sh/ruff-wasm-web": "0.6.4",
27
- "@deephaven/chart": "^0.95.1-beta.6+d2c6eabb",
28
- "@deephaven/components": "^0.95.1-beta.6+d2c6eabb",
29
- "@deephaven/icons": "^0.95.1-beta.6+d2c6eabb",
30
- "@deephaven/jsapi-bootstrap": "^0.95.1-beta.6+d2c6eabb",
27
+ "@deephaven/chart": "^0.96.0",
28
+ "@deephaven/components": "^0.96.0",
29
+ "@deephaven/icons": "^0.96.0",
30
+ "@deephaven/jsapi-bootstrap": "^0.96.0",
31
31
  "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
32
- "@deephaven/log": "^0.95.1-beta.6+d2c6eabb",
33
- "@deephaven/react-hooks": "^0.95.1-beta.6+d2c6eabb",
34
- "@deephaven/storage": "^0.95.1-beta.6+d2c6eabb",
35
- "@deephaven/utils": "^0.95.1-beta.6+d2c6eabb",
32
+ "@deephaven/jsapi-utils": "^0.96.0",
33
+ "@deephaven/log": "^0.96.0",
34
+ "@deephaven/react-hooks": "^0.96.0",
35
+ "@deephaven/storage": "^0.96.0",
36
+ "@deephaven/utils": "^0.96.0",
36
37
  "@fortawesome/react-fontawesome": "^0.2.0",
37
38
  "classnames": "^2.3.1",
38
39
  "linkifyjs": "^4.1.0",
@@ -52,9 +53,9 @@
52
53
  "react-dom": ">=16.8.0"
53
54
  },
54
55
  "devDependencies": {
55
- "@deephaven/jsapi-shim": "^0.95.1-beta.6+d2c6eabb",
56
- "@deephaven/mocks": "^0.95.1-beta.6+d2c6eabb",
57
- "@deephaven/test-utils": "^0.95.1-beta.6+d2c6eabb"
56
+ "@deephaven/jsapi-shim": "^0.96.0",
57
+ "@deephaven/mocks": "^0.96.0",
58
+ "@deephaven/test-utils": "^0.96.0"
58
59
  },
59
60
  "files": [
60
61
  "dist"
@@ -65,5 +66,5 @@
65
66
  "publishConfig": {
66
67
  "access": "public"
67
68
  },
68
- "gitHead": "d2c6eabb1fe313708fadd6676858466710159fda"
69
+ "gitHead": "5e116d87231c1c1685e31da2bd27c8eeef23f41e"
69
70
  }
@@ -1,14 +0,0 @@
1
- /**
2
- * Valid column types to be used for a call to newTable.
3
- */
4
- declare class NewTableColumnTypes {
5
- static INTEGER: string;
6
- static LONG: string;
7
- static DOUBLE: string;
8
- static BOOLEAN: string;
9
- static STRING: string;
10
- static DATE_TIME: string;
11
- static LOCAL_TIME: string;
12
- }
13
- export default NewTableColumnTypes;
14
- //# sourceMappingURL=NewTableColumnTypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewTableColumnTypes.d.ts","sourceRoot":"","sources":["../../src/csv/NewTableColumnTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAM,mBAAmB;IACvB,MAAM,CAAC,OAAO,SAAS;IAEvB,MAAM,CAAC,IAAI,SAAU;IAErB,MAAM,CAAC,MAAM,SAAY;IAEzB,MAAM,CAAC,OAAO,SAAU;IAExB,MAAM,CAAC,MAAM,SAAY;IAEzB,MAAM,CAAC,SAAS,SAAc;IAE9B,MAAM,CAAC,UAAU,SAAe;CACjC;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,16 +0,0 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
- /**
5
- * Valid column types to be used for a call to newTable.
6
- */
7
- class NewTableColumnTypes {}
8
- _defineProperty(NewTableColumnTypes, "INTEGER", 'int');
9
- _defineProperty(NewTableColumnTypes, "LONG", 'long');
10
- _defineProperty(NewTableColumnTypes, "DOUBLE", 'double');
11
- _defineProperty(NewTableColumnTypes, "BOOLEAN", 'bool');
12
- _defineProperty(NewTableColumnTypes, "STRING", 'string');
13
- _defineProperty(NewTableColumnTypes, "DATE_TIME", 'datetime');
14
- _defineProperty(NewTableColumnTypes, "LOCAL_TIME", 'localtime');
15
- export default NewTableColumnTypes;
16
- //# sourceMappingURL=NewTableColumnTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewTableColumnTypes.js","names":["NewTableColumnTypes","_defineProperty"],"sources":["../../src/csv/NewTableColumnTypes.ts"],"sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"mappings":";;;AAAA;AACA;AACA;AACA,MAAMA,mBAAmB,CAAC;AAczBC,eAAA,CAdKD,mBAAmB,aACN,KAAK;AAAAC,eAAA,CADlBD,mBAAmB,UAGT,MAAM;AAAAC,eAAA,CAHhBD,mBAAmB,YAKP,QAAQ;AAAAC,eAAA,CALpBD,mBAAmB,aAON,MAAM;AAAAC,eAAA,CAPnBD,mBAAmB,YASP,QAAQ;AAAAC,eAAA,CATpBD,mBAAmB,eAWJ,UAAU;AAAAC,eAAA,CAXzBD,mBAAmB,gBAaH,WAAW;AAGjC,eAAeA,mBAAmB"}