@deephaven/jsapi-utils 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.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.
package/dist/DateUtils.js CHANGED
@@ -1,5 +1,11 @@
1
1
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
2
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
4
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
8
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
3
9
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
11
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -57,15 +63,13 @@ export class DateUtils {
57
63
  * @returns Returns the DateWrapper for the next date, or null if a full date was passed in
58
64
  */
59
65
  static getNextDate(dh, components, values, timeZone) {
60
- var {
61
- year,
62
- month,
63
- date,
64
- hours,
65
- minutes,
66
- seconds,
67
- nanos
68
- } = values;
66
+ var year = values.year,
67
+ month = values.month,
68
+ date = values.date,
69
+ hours = values.hours,
70
+ minutes = values.minutes,
71
+ seconds = values.seconds,
72
+ nanos = values.nanos;
69
73
  if (components.nanos != null) {
70
74
  if (components.nanos.length === 9) {
71
75
  // They want an exact match
@@ -172,7 +176,15 @@ export class DateUtils {
172
176
  if (result == null) {
173
177
  throw new Error("Unexpected date string: ".concat(dateTimeString));
174
178
  }
175
- var [, year,, month,, date,, hours,, minutes,, seconds,, nanos, overflow] = result;
179
+ var _result = _slicedToArray(result, 15),
180
+ year = _result[1],
181
+ month = _result[3],
182
+ date = _result[5],
183
+ hours = _result[7],
184
+ minutes = _result[9],
185
+ seconds = _result[11],
186
+ nanos = _result[13],
187
+ overflow = _result[14];
176
188
  if (!allowOverflow && overflow != null && overflow.length > 0) {
177
189
  throw new Error("Unexpected characters after date string '".concat(dateTimeString, "': ").concat(overflow));
178
190
  }
@@ -254,9 +266,9 @@ export class DateUtils {
254
266
  * @returns The date time string without overflow
255
267
  */
256
268
  static trimDateTimeStringTimeZone(dateTimeString) {
257
- var {
258
- overflow = ''
259
- } = DateUtils.parseDateTimeString(dateTimeString, true);
269
+ var _DateUtils$parseDateT = DateUtils.parseDateTimeString(dateTimeString, true),
270
+ _DateUtils$parseDateT2 = _DateUtils$parseDateT.overflow,
271
+ overflow = _DateUtils$parseDateT2 === void 0 ? '' : _DateUtils$parseDateT2;
260
272
  if (overflow === '') {
261
273
  return dateTimeString;
262
274
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DateUtils.js","names":["DATE_TIME_REGEX","DateUtils","makeDateWrapper","dh","timeZone","year","month","arguments","length","undefined","day","hour","minute","second","ns","Error","yearString","concat","padStart","monthString","dayString","hourString","minuteString","secondString","nanoString","dateString","i18n","DateTimeFormat","parse","FULL_DATE_FORMAT","TimeZone","getTimeZone","getNextNanos","sigNanos","parseInt","zeros","repeat","nextNanoString","getNextDate","components","values","date","hours","minutes","seconds","nanos","jsDate","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","parseMonth","Number","isNaN","NaN","cleanMonthString","trim","toLowerCase","i","months","startsWith","parseDateValues","padEnd","parseDateTimeString","dateTimeString","allowOverflow","result","exec","overflow","dateParts","_objectSpread","parseDateRange","text","cleanText","now","startDate","tomorrow","endDate","yesterday","DateWrapper","ofJsDate","getJsDate","dateWrapper","asDate","trimDateTimeStringTimeZone","test","slice","_defineProperty"],"sources":["../src/DateUtils.ts"],"sourcesContent":["import type { dh as DhType } from '@deephaven/jsapi-types';\n\nconst DATE_TIME_REGEX =\n /\\s*(\\d{4})([-./](\\d{1,2}|[a-z]+))?([-./](\\d{1,2}))?([tT\\s](\\d{2})([:](\\d{2}))?([:](\\d{2}))?([.](\\d{1,9}))?)?(.*)/;\n\ninterface DateParts<T> {\n year: T;\n month: T;\n date: T;\n hours: T;\n minutes: T;\n seconds: T;\n nanos: T;\n}\n\nexport class DateUtils {\n static FULL_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n static months = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december',\n ];\n\n /**\n *\n * @param timeZone The time zone to parse this time in. E.g. America/New_York\n * @param year The year for the date\n * @param month The month, starting at 0\n * @param day The day, starting at 1\n * @param hour The hours\n * @param minute The minutes\n * @param second The seconds\n * @param ns The nanoseconds\n */\n static makeDateWrapper(\n dh: typeof DhType,\n timeZone: string,\n year: number,\n month = 0,\n day = 1,\n hour = 0,\n minute = 0,\n second = 0,\n ns = 0\n ): DhType.DateWrapper {\n if (!timeZone) {\n throw new Error('No timezone provided');\n }\n const yearString = `${year}`.padStart(4, '0');\n const monthString = `${month + 1}`.padStart(2, '0');\n const dayString = `${day}`.padStart(2, '0');\n const hourString = `${hour}`.padStart(2, '0');\n const minuteString = `${minute}`.padStart(2, '0');\n const secondString = `${second}`.padStart(2, '0');\n const nanoString = `${ns}`.padStart(9, '0');\n\n const dateString = `${yearString}-${monthString}-${dayString} ${hourString}:${minuteString}:${secondString}.${nanoString}`;\n return dh.i18n.DateTimeFormat.parse(\n DateUtils.FULL_DATE_FORMAT,\n dateString,\n dh.i18n.TimeZone.getTimeZone(timeZone)\n );\n }\n\n /**\n * Takes the string the user entered and returns the next nanos value\n * @param nanoString The nano string to get the next one of\n * @returns The value of the next nanos\n */\n static getNextNanos(nanoString: string): number {\n const sigNanos = parseInt(nanoString, 10);\n // Get the zeroes needed for padding before adding one so we handle overflow properly.\n const zeros = '0'.repeat(9 - nanoString.length);\n const nextNanoString = `${sigNanos + 1}${zeros}`;\n return parseInt(nextNanoString, 10);\n }\n\n /**\n * @param components The string components that were parsed from the original string\n * @param values The values that were parsed from the components\n * @param timeZone The time zone to parse the date in. E.g. America/New_York\n * @returns Returns the DateWrapper for the next date, or null if a full date was passed in\n */\n static getNextDate(\n dh: typeof DhType,\n components: DateParts<string>,\n values: DateParts<number>,\n timeZone: string\n ): DhType.DateWrapper | null {\n let { year, month, date, hours, minutes, seconds, nanos } = values;\n\n if (components.nanos != null) {\n if (components.nanos.length === 9) {\n // They want an exact match\n return null;\n }\n nanos = DateUtils.getNextNanos(components.nanos);\n if (nanos > 999999999) {\n // There's an overflow, add it to the seconds manually\n seconds += 1;\n nanos = 0;\n }\n } else if (components.seconds != null) {\n seconds += 1;\n } else if (components.minutes != null) {\n minutes += 1;\n } else if (components.hours != null) {\n hours += 1;\n } else if (components.date != null) {\n date += 1;\n } else if (components.month != null) {\n month += 1;\n } else {\n year += 1;\n }\n\n // Use the JS date to handle overflow rather than doing our own logic\n // Because handling leap years and stuff is a pain\n // Still need to add nanos after, and the overflow from that is already added to seconds above\n const jsDate = new Date(year, month, date, hours, minutes, seconds);\n return DateUtils.makeDateWrapper(\n dh,\n timeZone,\n jsDate.getFullYear(),\n jsDate.getMonth(),\n jsDate.getDate(),\n jsDate.getHours(),\n jsDate.getMinutes(),\n jsDate.getSeconds(),\n nanos\n );\n }\n\n /**\n * Get the JS month value for the provided string.\n * Matches digits or a month name (eg. '1', '01', 'jan', 'january' should all work)\n * @param monthString The string to parse to a JS month value\n * @returns number The JS month value, which starts at 0 for january, or NaN if nothing could be parsed\n */\n static parseMonth(monthString: string): number {\n const month = parseInt(monthString, 10);\n if (!Number.isNaN(month)) {\n if (month >= 1 && month <= 12) {\n return month - 1;\n }\n return NaN;\n }\n\n const cleanMonthString = monthString.trim().toLowerCase();\n if (cleanMonthString.length >= 3) {\n for (let i = 0; i < DateUtils.months.length; i += 1) {\n if (DateUtils.months[i].startsWith(cleanMonthString)) {\n return i;\n }\n }\n }\n\n return NaN;\n }\n\n /**\n * Parse a date object out of the provided string segments.\n * Also using `parseMonth` to get month names like Aug/August rather than\n * simply doing `parseInt`.\n * @param yearString The year part of the string\n * @param monthString The month part of the string\n * @param dayString The day part of the string\n * @param hourString The hour part of the string\n * @param minuteString The minute part of the string\n * @param secondString The second part of the string\n * @param nanoString The milli part of the string\n */\n static parseDateValues(\n yearString: string,\n monthString: string,\n dayString: string,\n hourString: string,\n minuteString: string,\n secondString: string,\n nanoString: string\n ): DateParts<number> | null {\n const year = parseInt(yearString, 10);\n const month = monthString != null ? this.parseMonth(monthString) : 0;\n const date = dayString != null ? parseInt(dayString, 10) : 1;\n const hours = hourString != null ? parseInt(hourString, 10) : 0;\n const minutes = minuteString != null ? parseInt(minuteString, 10) : 0;\n const seconds = secondString != null ? parseInt(secondString, 10) : 0;\n const nanos =\n nanoString != null ? parseInt(nanoString.padEnd(9, '0'), 10) : 0;\n if (\n Number.isNaN(year) ||\n Number.isNaN(month) ||\n Number.isNaN(date) ||\n Number.isNaN(hours) ||\n Number.isNaN(minutes) ||\n Number.isNaN(seconds) ||\n Number.isNaN(nanos)\n ) {\n return null;\n }\n\n return { year, month, date, hours, minutes, seconds, nanos };\n }\n\n /**\n * Parse out a date time string into it's string components.\n * Anything that is not captured in the string will be undefined.\n *\n * @param dateTimeString The date time string to parse\n * @param allowOverflow If true, will allow overflow characters after the date\n * string\n * @returns Containing the date time components\n */\n static parseDateTimeString(\n dateTimeString: string,\n allowOverflow = false\n ): DateParts<string> & { overflow?: string } {\n const result = DATE_TIME_REGEX.exec(dateTimeString);\n if (result == null) {\n throw new Error(`Unexpected date string: ${dateTimeString}`);\n }\n\n const [\n ,\n year,\n ,\n month,\n ,\n date,\n ,\n hours,\n ,\n minutes,\n ,\n seconds,\n ,\n nanos,\n overflow,\n ] = result;\n\n if (!allowOverflow && overflow != null && overflow.length > 0) {\n throw new Error(\n `Unexpected characters after date string '${dateTimeString}': ${overflow}`\n );\n }\n\n const dateParts = { year, month, date, hours, minutes, seconds, nanos };\n\n return allowOverflow ? { ...dateParts, overflow } : dateParts;\n }\n\n /**\n * Parses the date range provided from a string of text.\n * @param text The string to parse the date from. Can be a keyword like \"today\", or in the format \"2018-08-04\"\n * @param timeZone The time zone to parse this range in. E.g. America/New_York\n * @returns A tuple with the start and end value/null for that date range, or both null\n */\n static parseDateRange(\n dh: typeof DhType,\n text: string,\n timeZone: string\n ): [DhType.DateWrapper, DhType.DateWrapper | null] | [null, null] {\n const cleanText = text.trim().toLowerCase();\n if (cleanText.length === 0) {\n throw new Error('Cannot parse date range from empty string');\n }\n\n if (cleanText === 'null') {\n return [null, null];\n }\n\n if (cleanText === 'today') {\n const now = new Date(Date.now());\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n now.getFullYear(),\n now.getMonth(),\n now.getDate()\n );\n const tomorrow = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() + 1\n );\n const endDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n tomorrow.getFullYear(),\n tomorrow.getMonth(),\n tomorrow.getDate()\n );\n return [startDate, endDate];\n }\n\n if (cleanText === 'yesterday') {\n const now = new Date(Date.now());\n const yesterday = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() - 1\n );\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n yesterday.getFullYear(),\n yesterday.getMonth(),\n yesterday.getDate()\n );\n const endDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n now.getFullYear(),\n now.getMonth(),\n now.getDate()\n );\n return [startDate, endDate];\n }\n\n if (cleanText === 'now') {\n const now = new Date(Date.now());\n const date = dh.DateWrapper.ofJsDate(now);\n return [date, null];\n }\n\n const components = DateUtils.parseDateTimeString(cleanText);\n if (\n components.year == null &&\n components.month == null &&\n components.date == null\n ) {\n throw new Error(`Unable to extract year, month, or day ${cleanText}`);\n }\n\n const values = DateUtils.parseDateValues(\n components.year,\n components.month,\n components.date,\n components.hours,\n components.minutes,\n components.seconds,\n components.nanos\n );\n\n if (values == null) {\n throw new Error(`Unable to extract date values from ${components}`);\n }\n\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n values.year,\n values.month,\n values.date,\n values.hours,\n values.minutes,\n values.seconds,\n values.nanos\n );\n\n const endDate = DateUtils.getNextDate(dh, components, values, timeZone);\n return [startDate, endDate];\n }\n\n /**\n * Gets the Js Date object from the provided DateWrapper.\n * In unit test, DateWrapper is just a number provided in millis, so handles that case.\n * @param dateWrapper The DateWrapper object, or time in millis\n */\n static getJsDate(dateWrapper: DhType.DateWrapper | number): Date {\n if (typeof dateWrapper === 'number') {\n return new Date(dateWrapper);\n }\n return dateWrapper.asDate();\n }\n\n /**\n * Trim overflow (usually timezone) from a date time string.\n * @param dateTimeString The date time string to trim\n * @returns The date time string without overflow\n */\n static trimDateTimeStringTimeZone(dateTimeString: string): string {\n const { overflow = '' } = DateUtils.parseDateTimeString(\n dateTimeString,\n true\n );\n\n if (overflow === '') {\n return dateTimeString;\n }\n\n // Expecting timezone overflow to be a single space followed by some\n // combination of letters\n if (!/^\\s[A-Za-z]+/.test(overflow)) {\n throw new Error(\n `Unexpected timezone format in overflow: '${dateTimeString}'`\n );\n }\n\n return dateTimeString.slice(0, -overflow.length);\n }\n}\n\nexport default DateUtils;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DateUtils.js","names":["DATE_TIME_REGEX","DateUtils","makeDateWrapper","dh","timeZone","year","month","arguments","length","undefined","day","hour","minute","second","ns","Error","yearString","concat","padStart","monthString","dayString","hourString","minuteString","secondString","nanoString","dateString","i18n","DateTimeFormat","parse","FULL_DATE_FORMAT","TimeZone","getTimeZone","getNextNanos","sigNanos","parseInt","zeros","repeat","nextNanoString","getNextDate","components","values","date","hours","minutes","seconds","nanos","jsDate","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","parseMonth","Number","isNaN","NaN","cleanMonthString","trim","toLowerCase","i","months","startsWith","parseDateValues","padEnd","parseDateTimeString","dateTimeString","allowOverflow","result","exec","_result","_slicedToArray","overflow","dateParts","_objectSpread","parseDateRange","text","cleanText","now","startDate","tomorrow","endDate","yesterday","DateWrapper","ofJsDate","getJsDate","dateWrapper","asDate","trimDateTimeStringTimeZone","_DateUtils$parseDateT","_DateUtils$parseDateT2","test","slice","_defineProperty"],"sources":["../src/DateUtils.ts"],"sourcesContent":["import type { dh as DhType } from '@deephaven/jsapi-types';\n\nconst DATE_TIME_REGEX =\n /\\s*(\\d{4})([-./](\\d{1,2}|[a-z]+))?([-./](\\d{1,2}))?([tT\\s](\\d{2})([:](\\d{2}))?([:](\\d{2}))?([.](\\d{1,9}))?)?(.*)/;\n\ninterface DateParts<T> {\n year: T;\n month: T;\n date: T;\n hours: T;\n minutes: T;\n seconds: T;\n nanos: T;\n}\n\nexport class DateUtils {\n static FULL_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n static months = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december',\n ];\n\n /**\n *\n * @param timeZone The time zone to parse this time in. E.g. America/New_York\n * @param year The year for the date\n * @param month The month, starting at 0\n * @param day The day, starting at 1\n * @param hour The hours\n * @param minute The minutes\n * @param second The seconds\n * @param ns The nanoseconds\n */\n static makeDateWrapper(\n dh: typeof DhType,\n timeZone: string,\n year: number,\n month = 0,\n day = 1,\n hour = 0,\n minute = 0,\n second = 0,\n ns = 0\n ): DhType.DateWrapper {\n if (!timeZone) {\n throw new Error('No timezone provided');\n }\n const yearString = `${year}`.padStart(4, '0');\n const monthString = `${month + 1}`.padStart(2, '0');\n const dayString = `${day}`.padStart(2, '0');\n const hourString = `${hour}`.padStart(2, '0');\n const minuteString = `${minute}`.padStart(2, '0');\n const secondString = `${second}`.padStart(2, '0');\n const nanoString = `${ns}`.padStart(9, '0');\n\n const dateString = `${yearString}-${monthString}-${dayString} ${hourString}:${minuteString}:${secondString}.${nanoString}`;\n return dh.i18n.DateTimeFormat.parse(\n DateUtils.FULL_DATE_FORMAT,\n dateString,\n dh.i18n.TimeZone.getTimeZone(timeZone)\n );\n }\n\n /**\n * Takes the string the user entered and returns the next nanos value\n * @param nanoString The nano string to get the next one of\n * @returns The value of the next nanos\n */\n static getNextNanos(nanoString: string): number {\n const sigNanos = parseInt(nanoString, 10);\n // Get the zeroes needed for padding before adding one so we handle overflow properly.\n const zeros = '0'.repeat(9 - nanoString.length);\n const nextNanoString = `${sigNanos + 1}${zeros}`;\n return parseInt(nextNanoString, 10);\n }\n\n /**\n * @param components The string components that were parsed from the original string\n * @param values The values that were parsed from the components\n * @param timeZone The time zone to parse the date in. E.g. America/New_York\n * @returns Returns the DateWrapper for the next date, or null if a full date was passed in\n */\n static getNextDate(\n dh: typeof DhType,\n components: DateParts<string>,\n values: DateParts<number>,\n timeZone: string\n ): DhType.DateWrapper | null {\n let { year, month, date, hours, minutes, seconds, nanos } = values;\n\n if (components.nanos != null) {\n if (components.nanos.length === 9) {\n // They want an exact match\n return null;\n }\n nanos = DateUtils.getNextNanos(components.nanos);\n if (nanos > 999999999) {\n // There's an overflow, add it to the seconds manually\n seconds += 1;\n nanos = 0;\n }\n } else if (components.seconds != null) {\n seconds += 1;\n } else if (components.minutes != null) {\n minutes += 1;\n } else if (components.hours != null) {\n hours += 1;\n } else if (components.date != null) {\n date += 1;\n } else if (components.month != null) {\n month += 1;\n } else {\n year += 1;\n }\n\n // Use the JS date to handle overflow rather than doing our own logic\n // Because handling leap years and stuff is a pain\n // Still need to add nanos after, and the overflow from that is already added to seconds above\n const jsDate = new Date(year, month, date, hours, minutes, seconds);\n return DateUtils.makeDateWrapper(\n dh,\n timeZone,\n jsDate.getFullYear(),\n jsDate.getMonth(),\n jsDate.getDate(),\n jsDate.getHours(),\n jsDate.getMinutes(),\n jsDate.getSeconds(),\n nanos\n );\n }\n\n /**\n * Get the JS month value for the provided string.\n * Matches digits or a month name (eg. '1', '01', 'jan', 'january' should all work)\n * @param monthString The string to parse to a JS month value\n * @returns number The JS month value, which starts at 0 for january, or NaN if nothing could be parsed\n */\n static parseMonth(monthString: string): number {\n const month = parseInt(monthString, 10);\n if (!Number.isNaN(month)) {\n if (month >= 1 && month <= 12) {\n return month - 1;\n }\n return NaN;\n }\n\n const cleanMonthString = monthString.trim().toLowerCase();\n if (cleanMonthString.length >= 3) {\n for (let i = 0; i < DateUtils.months.length; i += 1) {\n if (DateUtils.months[i].startsWith(cleanMonthString)) {\n return i;\n }\n }\n }\n\n return NaN;\n }\n\n /**\n * Parse a date object out of the provided string segments.\n * Also using `parseMonth` to get month names like Aug/August rather than\n * simply doing `parseInt`.\n * @param yearString The year part of the string\n * @param monthString The month part of the string\n * @param dayString The day part of the string\n * @param hourString The hour part of the string\n * @param minuteString The minute part of the string\n * @param secondString The second part of the string\n * @param nanoString The milli part of the string\n */\n static parseDateValues(\n yearString: string,\n monthString: string,\n dayString: string,\n hourString: string,\n minuteString: string,\n secondString: string,\n nanoString: string\n ): DateParts<number> | null {\n const year = parseInt(yearString, 10);\n const month = monthString != null ? this.parseMonth(monthString) : 0;\n const date = dayString != null ? parseInt(dayString, 10) : 1;\n const hours = hourString != null ? parseInt(hourString, 10) : 0;\n const minutes = minuteString != null ? parseInt(minuteString, 10) : 0;\n const seconds = secondString != null ? parseInt(secondString, 10) : 0;\n const nanos =\n nanoString != null ? parseInt(nanoString.padEnd(9, '0'), 10) : 0;\n if (\n Number.isNaN(year) ||\n Number.isNaN(month) ||\n Number.isNaN(date) ||\n Number.isNaN(hours) ||\n Number.isNaN(minutes) ||\n Number.isNaN(seconds) ||\n Number.isNaN(nanos)\n ) {\n return null;\n }\n\n return { year, month, date, hours, minutes, seconds, nanos };\n }\n\n /**\n * Parse out a date time string into it's string components.\n * Anything that is not captured in the string will be undefined.\n *\n * @param dateTimeString The date time string to parse\n * @param allowOverflow If true, will allow overflow characters after the date\n * string\n * @returns Containing the date time components\n */\n static parseDateTimeString(\n dateTimeString: string,\n allowOverflow = false\n ): DateParts<string> & { overflow?: string } {\n const result = DATE_TIME_REGEX.exec(dateTimeString);\n if (result == null) {\n throw new Error(`Unexpected date string: ${dateTimeString}`);\n }\n\n const [\n ,\n year,\n ,\n month,\n ,\n date,\n ,\n hours,\n ,\n minutes,\n ,\n seconds,\n ,\n nanos,\n overflow,\n ] = result;\n\n if (!allowOverflow && overflow != null && overflow.length > 0) {\n throw new Error(\n `Unexpected characters after date string '${dateTimeString}': ${overflow}`\n );\n }\n\n const dateParts = { year, month, date, hours, minutes, seconds, nanos };\n\n return allowOverflow ? { ...dateParts, overflow } : dateParts;\n }\n\n /**\n * Parses the date range provided from a string of text.\n * @param text The string to parse the date from. Can be a keyword like \"today\", or in the format \"2018-08-04\"\n * @param timeZone The time zone to parse this range in. E.g. America/New_York\n * @returns A tuple with the start and end value/null for that date range, or both null\n */\n static parseDateRange(\n dh: typeof DhType,\n text: string,\n timeZone: string\n ): [DhType.DateWrapper, DhType.DateWrapper | null] | [null, null] {\n const cleanText = text.trim().toLowerCase();\n if (cleanText.length === 0) {\n throw new Error('Cannot parse date range from empty string');\n }\n\n if (cleanText === 'null') {\n return [null, null];\n }\n\n if (cleanText === 'today') {\n const now = new Date(Date.now());\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n now.getFullYear(),\n now.getMonth(),\n now.getDate()\n );\n const tomorrow = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() + 1\n );\n const endDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n tomorrow.getFullYear(),\n tomorrow.getMonth(),\n tomorrow.getDate()\n );\n return [startDate, endDate];\n }\n\n if (cleanText === 'yesterday') {\n const now = new Date(Date.now());\n const yesterday = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() - 1\n );\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n yesterday.getFullYear(),\n yesterday.getMonth(),\n yesterday.getDate()\n );\n const endDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n now.getFullYear(),\n now.getMonth(),\n now.getDate()\n );\n return [startDate, endDate];\n }\n\n if (cleanText === 'now') {\n const now = new Date(Date.now());\n const date = dh.DateWrapper.ofJsDate(now);\n return [date, null];\n }\n\n const components = DateUtils.parseDateTimeString(cleanText);\n if (\n components.year == null &&\n components.month == null &&\n components.date == null\n ) {\n throw new Error(`Unable to extract year, month, or day ${cleanText}`);\n }\n\n const values = DateUtils.parseDateValues(\n components.year,\n components.month,\n components.date,\n components.hours,\n components.minutes,\n components.seconds,\n components.nanos\n );\n\n if (values == null) {\n throw new Error(`Unable to extract date values from ${components}`);\n }\n\n const startDate = DateUtils.makeDateWrapper(\n dh,\n timeZone,\n values.year,\n values.month,\n values.date,\n values.hours,\n values.minutes,\n values.seconds,\n values.nanos\n );\n\n const endDate = DateUtils.getNextDate(dh, components, values, timeZone);\n return [startDate, endDate];\n }\n\n /**\n * Gets the Js Date object from the provided DateWrapper.\n * In unit test, DateWrapper is just a number provided in millis, so handles that case.\n * @param dateWrapper The DateWrapper object, or time in millis\n */\n static getJsDate(dateWrapper: DhType.DateWrapper | number): Date {\n if (typeof dateWrapper === 'number') {\n return new Date(dateWrapper);\n }\n return dateWrapper.asDate();\n }\n\n /**\n * Trim overflow (usually timezone) from a date time string.\n * @param dateTimeString The date time string to trim\n * @returns The date time string without overflow\n */\n static trimDateTimeStringTimeZone(dateTimeString: string): string {\n const { overflow = '' } = DateUtils.parseDateTimeString(\n dateTimeString,\n true\n );\n\n if (overflow === '') {\n return dateTimeString;\n }\n\n // Expecting timezone overflow to be a single space followed by some\n // combination of letters\n if (!/^\\s[A-Za-z]+/.test(overflow)) {\n throw new Error(\n `Unexpected timezone format in overflow: '${dateTimeString}'`\n );\n }\n\n return dateTimeString.slice(0, -overflow.length);\n }\n}\n\nexport default DateUtils;\n"],"mappings":"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","ignoreList":[]}
@@ -9,20 +9,17 @@ import { TableColumnFormatter } from "./formatters/index.js";
9
9
  export function createFormatterFromSettings(dh, settings) {
10
10
  var columnRules = getColumnFormats(settings);
11
11
  var dateTimeOptions = getDateTimeFormatterOptions(settings);
12
- var {
13
- defaultDecimalFormatOptions,
14
- defaultIntegerFormatOptions,
15
- truncateNumbersWithPound,
16
- showEmptyStrings,
17
- showNullStrings
18
- } = settings !== null && settings !== void 0 ? settings : {};
12
+ var _ref = settings !== null && settings !== void 0 ? settings : {},
13
+ defaultDecimalFormatOptions = _ref.defaultDecimalFormatOptions,
14
+ defaultIntegerFormatOptions = _ref.defaultIntegerFormatOptions,
15
+ truncateNumbersWithPound = _ref.truncateNumbersWithPound,
16
+ showEmptyStrings = _ref.showEmptyStrings,
17
+ showNullStrings = _ref.showNullStrings;
19
18
  return new Formatter(dh, columnRules, dateTimeOptions, defaultDecimalFormatOptions, defaultIntegerFormatOptions, truncateNumbersWithPound, showEmptyStrings, showNullStrings);
20
19
  }
21
20
  export function getColumnFormats(settings) {
22
21
  if (settings && settings.formatter) {
23
- var {
24
- formatter
25
- } = settings;
22
+ var formatter = settings.formatter;
26
23
  return formatter;
27
24
  }
28
25
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"FormatterUtils.js","names":["Formatter","TableColumnFormatter","createFormatterFromSettings","dh","settings","columnRules","getColumnFormats","dateTimeOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","formatter","undefined","timeZone","defaultDateTimeFormatString","defaultDateTimeFormat","showTimeZone","showTSeparator","isCustomColumnFormatDefined","columnName","columnType","columnFormat","getColumnFormat","type","TYPE_CONTEXT_PRESET","TYPE_CONTEXT_CUSTOM"],"sources":["../src/FormatterUtils.ts"],"sourcesContent":["import type { dh as DhType } from '@deephaven/jsapi-types';\nimport type { FormattingRule } from './Formatter';\nimport Formatter from './Formatter';\nimport {\n type DateTimeColumnFormatter,\n TableColumnFormatter,\n} from './formatters';\nimport {\n type ColumnFormatSettings,\n type DateTimeFormatSettings,\n} from './Settings';\nimport type Settings from './Settings';\n\n/**\n * Instantiate a `Formatter` from the given settings.\n * @param dh The `dh` object\n * @param settings Optional settings to use\n * @returns A new `Formatter` instance\n */\nexport function createFormatterFromSettings(\n dh: typeof DhType,\n settings?: Settings\n): Formatter {\n const columnRules = getColumnFormats(settings);\n const dateTimeOptions = getDateTimeFormatterOptions(settings);\n\n const {\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions,\n truncateNumbersWithPound,\n showEmptyStrings,\n showNullStrings,\n } = settings ?? {};\n\n return new Formatter(\n dh,\n columnRules,\n dateTimeOptions,\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions,\n truncateNumbersWithPound,\n showEmptyStrings,\n showNullStrings\n );\n}\n\nexport function getColumnFormats(\n settings?: ColumnFormatSettings\n): readonly FormattingRule[] | undefined {\n if (settings && settings.formatter) {\n const { formatter } = settings;\n return formatter;\n }\n return undefined;\n}\n\nexport function getDateTimeFormatterOptions(\n settings?: DateTimeFormatSettings | null\n): ConstructorParameters<typeof DateTimeColumnFormatter>[1] {\n return {\n timeZone: settings?.timeZone,\n defaultDateTimeFormatString: settings?.defaultDateTimeFormat,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n };\n}\n\n/**\n * Check if the formatter has a custom format defined for the column name and type\n * @param formatter Formatter to check\n * @param columnName Column name\n * @param columnType Column type\n * @returns True, if a custom format is defined\n */\nexport function isCustomColumnFormatDefined(\n formatter: Formatter,\n columnName: string,\n columnType: string\n): boolean {\n const columnFormat = formatter.getColumnFormat(columnType, columnName);\n return (\n columnFormat != null &&\n (columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_PRESET ||\n columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM)\n );\n}\n\nexport default {\n createFormatterFromSettings,\n getColumnFormats,\n getDateTimeFormatterOptions,\n isCustomColumnFormatDefined,\n};\n"],"mappings":"OAEOA,SAAS;AAAA,SAGdC,oBAAoB;AAQtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCC,EAAiB,EACjBC,QAAmB,EACR;EACX,IAAMC,WAAW,GAAGC,gBAAgB,CAACF,QAAQ,CAAC;EAC9C,IAAMG,eAAe,GAAGC,2BAA2B,CAACJ,QAAQ,CAAC;EAE7D,IAAM;IACJK,2BAA2B;IAC3BC,2BAA2B;IAC3BC,wBAAwB;IACxBC,gBAAgB;IAChBC;EACF,CAAC,GAAGT,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,CAAC,CAAC;EAElB,OAAO,IAAIJ,SAAS,CAClBG,EAAE,EACFE,WAAW,EACXE,eAAe,EACfE,2BAA2B,EAC3BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,gBAAgB,EAChBC,eACF,CAAC;AACH;AAEA,OAAO,SAASP,gBAAgBA,CAC9BF,QAA+B,EACQ;EACvC,IAAIA,QAAQ,IAAIA,QAAQ,CAACU,SAAS,EAAE;IAClC,IAAM;MAAEA;IAAU,CAAC,GAAGV,QAAQ;IAC9B,OAAOU,SAAS;EAClB;EACA,OAAOC,SAAS;AAClB;AAEA,OAAO,SAASP,2BAA2BA,CACzCJ,QAAwC,EACkB;EAC1D,OAAO;IACLY,QAAQ,EAAEZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,QAAQ;IAC5BC,2BAA2B,EAAEb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEc,qBAAqB;IAC5DC,YAAY,EAAEf,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEe,YAAY;IACpCC,cAAc,EAAEhB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEgB;EAC5B,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCP,SAAoB,EACpBQ,UAAkB,EAClBC,UAAkB,EACT;EACT,IAAMC,YAAY,GAAGV,SAAS,CAACW,eAAe,CAACF,UAAU,EAAED,UAAU,CAAC;EACtE,OACEE,YAAY,IAAI,IAAI,KACnBA,YAAY,CAACE,IAAI,KAAKzB,oBAAoB,CAAC0B,mBAAmB,IAC7DH,YAAY,CAACE,IAAI,KAAKzB,oBAAoB,CAAC2B,mBAAmB,CAAC;AAErE;AAEA,eAAe;EACb1B,2BAA2B;EAC3BI,gBAAgB;EAChBE,2BAA2B;EAC3Ba;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"FormatterUtils.js","names":["Formatter","TableColumnFormatter","createFormatterFromSettings","dh","settings","columnRules","getColumnFormats","dateTimeOptions","getDateTimeFormatterOptions","_ref","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","formatter","undefined","timeZone","defaultDateTimeFormatString","defaultDateTimeFormat","showTimeZone","showTSeparator","isCustomColumnFormatDefined","columnName","columnType","columnFormat","getColumnFormat","type","TYPE_CONTEXT_PRESET","TYPE_CONTEXT_CUSTOM"],"sources":["../src/FormatterUtils.ts"],"sourcesContent":["import type { dh as DhType } from '@deephaven/jsapi-types';\nimport type { FormattingRule } from './Formatter';\nimport Formatter from './Formatter';\nimport {\n type DateTimeColumnFormatter,\n TableColumnFormatter,\n} from './formatters';\nimport {\n type ColumnFormatSettings,\n type DateTimeFormatSettings,\n} from './Settings';\nimport type Settings from './Settings';\n\n/**\n * Instantiate a `Formatter` from the given settings.\n * @param dh The `dh` object\n * @param settings Optional settings to use\n * @returns A new `Formatter` instance\n */\nexport function createFormatterFromSettings(\n dh: typeof DhType,\n settings?: Settings\n): Formatter {\n const columnRules = getColumnFormats(settings);\n const dateTimeOptions = getDateTimeFormatterOptions(settings);\n\n const {\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions,\n truncateNumbersWithPound,\n showEmptyStrings,\n showNullStrings,\n } = settings ?? {};\n\n return new Formatter(\n dh,\n columnRules,\n dateTimeOptions,\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions,\n truncateNumbersWithPound,\n showEmptyStrings,\n showNullStrings\n );\n}\n\nexport function getColumnFormats(\n settings?: ColumnFormatSettings\n): readonly FormattingRule[] | undefined {\n if (settings && settings.formatter) {\n const { formatter } = settings;\n return formatter;\n }\n return undefined;\n}\n\nexport function getDateTimeFormatterOptions(\n settings?: DateTimeFormatSettings | null\n): ConstructorParameters<typeof DateTimeColumnFormatter>[1] {\n return {\n timeZone: settings?.timeZone,\n defaultDateTimeFormatString: settings?.defaultDateTimeFormat,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n };\n}\n\n/**\n * Check if the formatter has a custom format defined for the column name and type\n * @param formatter Formatter to check\n * @param columnName Column name\n * @param columnType Column type\n * @returns True, if a custom format is defined\n */\nexport function isCustomColumnFormatDefined(\n formatter: Formatter,\n columnName: string,\n columnType: string\n): boolean {\n const columnFormat = formatter.getColumnFormat(columnType, columnName);\n return (\n columnFormat != null &&\n (columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_PRESET ||\n columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM)\n );\n}\n\nexport default {\n createFormatterFromSettings,\n getColumnFormats,\n getDateTimeFormatterOptions,\n isCustomColumnFormatDefined,\n};\n"],"mappings":"OAEOA,SAAS;AAAA,SAGdC,oBAAoB;AAQtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCC,EAAiB,EACjBC,QAAmB,EACR;EACX,IAAMC,WAAW,GAAGC,gBAAgB,CAACF,QAAQ,CAAC;EAC9C,IAAMG,eAAe,GAAGC,2BAA2B,CAACJ,QAAQ,CAAC;EAE7D,IAAAK,IAAA,GAMIL,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,CAAC,CAAC;IALhBM,2BAA2B,GAAAD,IAAA,CAA3BC,2BAA2B;IAC3BC,2BAA2B,GAAAF,IAAA,CAA3BE,2BAA2B;IAC3BC,wBAAwB,GAAAH,IAAA,CAAxBG,wBAAwB;IACxBC,gBAAgB,GAAAJ,IAAA,CAAhBI,gBAAgB;IAChBC,eAAe,GAAAL,IAAA,CAAfK,eAAe;EAGjB,OAAO,IAAId,SAAS,CAClBG,EAAE,EACFE,WAAW,EACXE,eAAe,EACfG,2BAA2B,EAC3BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,gBAAgB,EAChBC,eACF,CAAC;AACH;AAEA,OAAO,SAASR,gBAAgBA,CAC9BF,QAA+B,EACQ;EACvC,IAAIA,QAAQ,IAAIA,QAAQ,CAACW,SAAS,EAAE;IAClC,IAAQA,SAAS,GAAKX,QAAQ,CAAtBW,SAAS;IACjB,OAAOA,SAAS;EAClB;EACA,OAAOC,SAAS;AAClB;AAEA,OAAO,SAASR,2BAA2BA,CACzCJ,QAAwC,EACkB;EAC1D,OAAO;IACLa,QAAQ,EAAEb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEa,QAAQ;IAC5BC,2BAA2B,EAAEd,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEe,qBAAqB;IAC5DC,YAAY,EAAEhB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEgB,YAAY;IACpCC,cAAc,EAAEjB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEiB;EAC5B,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCP,SAAoB,EACpBQ,UAAkB,EAClBC,UAAkB,EACT;EACT,IAAMC,YAAY,GAAGV,SAAS,CAACW,eAAe,CAACF,UAAU,EAAED,UAAU,CAAC;EACtE,OACEE,YAAY,IAAI,IAAI,KACnBA,YAAY,CAACE,IAAI,KAAK1B,oBAAoB,CAAC2B,mBAAmB,IAC7DH,YAAY,CAACE,IAAI,KAAK1B,oBAAoB,CAAC4B,mBAAmB,CAAC;AAErE;AAEA,eAAe;EACb3B,2BAA2B;EAC3BI,gBAAgB;EAChBE,2BAA2B;EAC3Bc;AACF,CAAC","ignoreList":[]}
@@ -1,4 +1,10 @@
1
1
  var _TableUtils;
2
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
7
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
2
8
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
3
9
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
4
10
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -166,9 +172,7 @@ export class TableUtils {
166
172
  var sorts = [];
167
173
  if (addToExisting) {
168
174
  sorts = sorts.concat(tableSort.filter(_ref => {
169
- var {
170
- direction
171
- } = _ref;
175
+ var direction = _ref.direction;
172
176
  return direction !== TableUtils.sortDirection.reverse;
173
177
  }));
174
178
  if (sortIndex !== null) {
@@ -434,10 +438,9 @@ export class TableUtils {
434
438
  */
435
439
  static makeCancelableEventPromise(emitter, eventName) {
436
440
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
437
- var {
438
- timeout = 0,
439
- matcher
440
- } = options;
441
+ var _options$timeout = options.timeout,
442
+ timeout = _options$timeout === void 0 ? 0 : _options$timeout,
443
+ matcher = options.matcher;
441
444
  var eventCleanup;
442
445
  var timeoutId;
443
446
  var isPending = true;
@@ -708,9 +711,7 @@ export class TableUtils {
708
711
  * @returns Returns the created filter, null if text could not be parsed
709
712
  */
710
713
  makeQuickFilterFromComponent(column, text, timeZone) {
711
- var {
712
- type
713
- } = column;
714
+ var type = column.type;
714
715
  if (TableUtils.isNumberType(type)) {
715
716
  return this.makeQuickNumberFilter(column, text);
716
717
  }
@@ -727,9 +728,7 @@ export class TableUtils {
727
728
  }
728
729
  makeQuickNumberFilter(column, text) {
729
730
  var columnFilter = column.filter();
730
- var {
731
- dh
732
- } = this;
731
+ var dh = this.dh;
733
732
  var filter = null;
734
733
  var regex = /\s*(>=|<=|=>|=<|>|<|!=|=|!)?(\s*-\s*)?(\s*\d*(?:,\d{3})*(?:\.\d*)?\s*)?(null|nan|infinity|inf|\u221E)?(.*)/i;
735
734
  var result = regex.exec(text);
@@ -739,7 +738,12 @@ export class TableUtils {
739
738
  var abnormalValue = null; // includes nan, null and infinity(positive & negative)
740
739
  var overflow = null;
741
740
  if (result !== null && result.length > 3) {
742
- [, operation, negativeSign, value, abnormalValue, overflow] = result;
741
+ var _result = _slicedToArray(result, 6);
742
+ operation = _result[1];
743
+ negativeSign = _result[2];
744
+ value = _result[3];
745
+ abnormalValue = _result[4];
746
+ overflow = _result[5];
743
747
  }
744
748
  if (overflow != null && overflow.trim().length > 0) {
745
749
  // Some bad characters after the number, bail out!
@@ -815,7 +819,9 @@ export class TableUtils {
815
819
  var operation = null;
816
820
  var value = null;
817
821
  if (result !== null && result.length > 2) {
818
- [, operation, value] = result;
822
+ var _result2 = _slicedToArray(result, 3);
823
+ operation = _result2[1];
824
+ value = _result2[2];
819
825
  }
820
826
  if (operation != null) {
821
827
  return "\\".concat(operation).concat(value !== null && value !== void 0 ? value : '');
@@ -848,7 +854,9 @@ export class TableUtils {
848
854
  var operation = null;
849
855
  var value = null;
850
856
  if (result !== null && result.length > 2) {
851
- [, operation, value] = result;
857
+ var _result3 = _slicedToArray(result, 3);
858
+ operation = _result3[1];
859
+ value = _result3[2];
852
860
  }
853
861
  if (operation != null) {
854
862
  operation = operation.replace('\\', '');
@@ -867,16 +875,16 @@ export class TableUtils {
867
875
  return "".concat(operation !== null && operation !== void 0 ? operation : '').concat(value !== null && value !== void 0 ? value : "");
868
876
  }
869
877
  makeQuickTextFilter(column, text) {
870
- var {
871
- dh
872
- } = this;
878
+ var dh = this.dh;
873
879
  var cleanText = "".concat(text).trim();
874
880
  var regex = /^(!~|!=|~|=|!)?(.*)/;
875
881
  var result = regex.exec(cleanText);
876
882
  var operation = null;
877
883
  var value = null;
878
884
  if (result !== null && result.length > 2) {
879
- [, operation, value] = result;
885
+ var _result4 = _slicedToArray(result, 3);
886
+ operation = _result4[1];
887
+ value = _result4[2];
880
888
  if (value != null) {
881
889
  value = value.trim();
882
890
  }
@@ -959,7 +967,9 @@ export class TableUtils {
959
967
  if (result === null) {
960
968
  return null;
961
969
  }
962
- var [, operation, value] = result;
970
+ var _result5 = _slicedToArray(result, 3),
971
+ operation = _result5[1],
972
+ value = _result5[2];
963
973
  var notEqual = operation === '!' || operation === '!=';
964
974
  var cleanValue = value.trim().toLowerCase();
965
975
  var filter = column.filter();
@@ -993,7 +1003,9 @@ export class TableUtils {
993
1003
  }
994
1004
  var operation = null;
995
1005
  var dateText = null;
996
- [, operation, dateText] = result;
1006
+ var _result6 = _slicedToArray(result, 3);
1007
+ operation = _result6[1];
1008
+ dateText = _result6[2];
997
1009
  var filterOperation = FilterType.eq;
998
1010
  switch (operation) {
999
1011
  case '<':
@@ -1031,10 +1043,11 @@ export class TableUtils {
1031
1043
  * @param timeZone The time zone to make this filter with. E.g. America/New_York
1032
1044
  */
1033
1045
  makeQuickDateFilterWithOperation(column, text, operation, timeZone) {
1034
- var {
1035
- dh
1036
- } = this;
1037
- var [startDate, endDate] = DateUtils.parseDateRange(dh, text, timeZone);
1046
+ var dh = this.dh;
1047
+ var _DateUtils$parseDateR = DateUtils.parseDateRange(dh, text, timeZone),
1048
+ _DateUtils$parseDateR2 = _slicedToArray(_DateUtils$parseDateR, 2),
1049
+ startDate = _DateUtils$parseDateR2[0],
1050
+ endDate = _DateUtils$parseDateR2[1];
1038
1051
  var startValue = startDate != null ? dh.FilterValue.ofNumber(startDate) : null;
1039
1052
  var endValue = endDate != null ? dh.FilterValue.ofNumber(endDate) : null;
1040
1053
  var filter = column.filter();
@@ -1085,9 +1098,7 @@ export class TableUtils {
1085
1098
  }
1086
1099
  }
1087
1100
  makeQuickCharFilter(column, text) {
1088
- var {
1089
- dh
1090
- } = this;
1101
+ var dh = this.dh;
1091
1102
  var cleanText = "".concat(text).trim();
1092
1103
  var regex = /^(>=|<=|=>|=<|>|<|!=|=|!)?(null|"."|'.'|.)?(.*)/;
1093
1104
  var result = regex.exec(cleanText);
@@ -1095,7 +1106,10 @@ export class TableUtils {
1095
1106
  var value = null;
1096
1107
  var overflow = null;
1097
1108
  if (result !== null && result.length > 3) {
1098
- [, operation, value, overflow] = result;
1109
+ var _result7 = _slicedToArray(result, 4);
1110
+ operation = _result7[1];
1111
+ value = _result7[2];
1112
+ overflow = _result7[3];
1099
1113
  }
1100
1114
  if (overflow != null && overflow.trim().length > 0) {
1101
1115
  // Some bad characters after the number, bail out!
@@ -1126,19 +1140,15 @@ export class TableUtils {
1126
1140
  return TableUtils.makeRangeFilterWithOperation(filter, operation, filterValue);
1127
1141
  }
1128
1142
  makeAdvancedFilter(column, options, timeZone) {
1129
- var {
1130
- filterItems,
1131
- filterOperators,
1132
- invertSelection,
1133
- selectedValues
1134
- } = options;
1143
+ var filterItems = options.filterItems,
1144
+ filterOperators = options.filterOperators,
1145
+ invertSelection = options.invertSelection,
1146
+ selectedValues = options.selectedValues;
1135
1147
  var filter = null;
1136
1148
  for (var i = 0; i < filterItems.length; i += 1) {
1137
1149
  var filterItem = filterItems[i];
1138
- var {
1139
- selectedType,
1140
- value
1141
- } = filterItem;
1150
+ var selectedType = filterItem.selectedType,
1151
+ value = filterItem.value;
1142
1152
  if (selectedType != null && selectedType.length > 0 && value != null && value.length > 0) {
1143
1153
  try {
1144
1154
  var newFilter = this.makeAdvancedValueFilter(column, selectedType, value, timeZone);
@@ -1178,9 +1188,7 @@ export class TableUtils {
1178
1188
  return filter;
1179
1189
  }
1180
1190
  makeAdvancedValueFilter(column, operation, value, timeZone) {
1181
- var {
1182
- dh
1183
- } = this;
1191
+ var dh = this.dh;
1184
1192
  if (TableUtils.isDateType(column.type)) {
1185
1193
  return this.makeQuickDateFilterWithOperation(column, value, operation, timeZone);
1186
1194
  }
@@ -1302,9 +1310,7 @@ export class TableUtils {
1302
1310
  _this4 = this;
1303
1311
  return _asyncToGenerator(function* () {
1304
1312
  var timeout = _arguments4.length > 2 && _arguments4[2] !== undefined ? _arguments4[2] : TableUtils.APPLY_TABLE_CHANGE_TIMEOUT_MS;
1305
- var {
1306
- dh
1307
- } = _this4;
1313
+ var dh = _this4.dh;
1308
1314
  return TableUtils.executeAndWaitForEvent(t => t === null || t === void 0 ? void 0 : t.applyCustomColumns(columns), table, dh.Table.EVENT_CUSTOMCOLUMNSCHANGED, timeout);
1309
1315
  })();
1310
1316
  }
@@ -1323,9 +1329,7 @@ export class TableUtils {
1323
1329
  _this5 = this;
1324
1330
  return _asyncToGenerator(function* () {
1325
1331
  var timeout = _arguments5.length > 2 && _arguments5[2] !== undefined ? _arguments5[2] : TableUtils.APPLY_TABLE_CHANGE_TIMEOUT_MS;
1326
- var {
1327
- dh
1328
- } = _this5;
1332
+ var dh = _this5.dh;
1329
1333
  return TableUtils.executeAndWaitForEvent(
1330
1334
  // TODO: #21450 Update JS API to accept readonly arrays
1331
1335
  t => t === null || t === void 0 ? void 0 : t.applyFilter(filters), table, dh.Table.EVENT_FILTERCHANGED, timeout);
@@ -1346,9 +1350,7 @@ export class TableUtils {
1346
1350
  _this6 = this;
1347
1351
  return _asyncToGenerator(function* () {
1348
1352
  var timeout = _arguments6.length > 2 && _arguments6[2] !== undefined ? _arguments6[2] : TableUtils.APPLY_TABLE_CHANGE_TIMEOUT_MS;
1349
- var {
1350
- dh
1351
- } = _this6;
1353
+ var dh = _this6.dh;
1352
1354
  return TableUtils.executeAndWaitForEvent(
1353
1355
  // TODO: #21450 Update JS API to accept readonly arrays
1354
1356
  t => t === null || t === void 0 ? void 0 : t.applySort(sorts), table, dh.Table.EVENT_SORTCHANGED, timeout);
@@ -1360,9 +1362,7 @@ export class TableUtils {
1360
1362
  * @param column
1361
1363
  */
1362
1364
  makeNeverFilter(column) {
1363
- var {
1364
- dh
1365
- } = this;
1365
+ var dh = this.dh;
1366
1366
  var value = null;
1367
1367
  if (TableUtils.isTextType(column.type)) {
1368
1368
  // Use 'a' so that it can work for String or Character types
@@ -1385,9 +1385,7 @@ export class TableUtils {
1385
1385
  * @returns The FilterValue item for this column/value combination
1386
1386
  */
1387
1387
  makeFilterValue(columnType, value) {
1388
- var {
1389
- dh
1390
- } = this;
1388
+ var dh = this.dh;
1391
1389
  var type = TableUtils.getBaseType(columnType);
1392
1390
  if (TableUtils.isTextType(type)) {
1393
1391
  return dh.FilterValue.ofString(value);
@@ -1406,9 +1404,7 @@ export class TableUtils {
1406
1404
  * @returns The FilterValue item for this column/value combination
1407
1405
  */
1408
1406
  makeFilterRawValue(columnType, rawValue) {
1409
- var {
1410
- dh
1411
- } = this;
1407
+ var dh = this.dh;
1412
1408
  if (TableUtils.isCharType(columnType)) {
1413
1409
  return dh.FilterValue.ofString(typeof rawValue === 'number' ? String.fromCharCode(rawValue) : rawValue);
1414
1410
  }
@@ -1441,9 +1437,7 @@ export class TableUtils {
1441
1437
  * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
1442
1438
  */
1443
1439
  makeValue(columnType, text, timeZone) {
1444
- var {
1445
- dh
1446
- } = this;
1440
+ var dh = this.dh;
1447
1441
  if (text === 'null') {
1448
1442
  return null;
1449
1443
  }
@@ -1457,7 +1451,9 @@ export class TableUtils {
1457
1451
  return TableUtils.makeBooleanValue(text, true);
1458
1452
  }
1459
1453
  if (TableUtils.isDateType(columnType)) {
1460
- var [date] = DateUtils.parseDateRange(dh, text, timeZone);
1454
+ var _DateUtils$parseDateR3 = DateUtils.parseDateRange(dh, text, timeZone),
1455
+ _DateUtils$parseDateR4 = _slicedToArray(_DateUtils$parseDateR3, 1),
1456
+ date = _DateUtils$parseDateR4[0];
1461
1457
  return date;
1462
1458
  }
1463
1459
  if (TableUtils.isNumberType(columnType)) {
@@ -1477,9 +1473,7 @@ export class TableUtils {
1477
1473
  * @returns Returns a `in` or `notIn` FilterCondition as necessary, or null if no filtering should be applied (everything selected)
1478
1474
  */
1479
1475
  makeSelectValueFilter(column, selectedValues, invertSelection) {
1480
- var {
1481
- dh
1482
- } = this;
1476
+ var dh = this.dh;
1483
1477
  if (selectedValues.length === 0) {
1484
1478
  if (invertSelection) {
1485
1479
  // No filter means select everything