@deephaven/grid 1.1.2-beta.0 → 1.1.2-grid-render-loop.4

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.
Files changed (60) hide show
  1. package/dist/CellInputField.js.map +1 -1
  2. package/dist/CellRenderer.js.map +1 -1
  3. package/dist/ColumnHeaderGroup.js.map +1 -1
  4. package/dist/DataBarCellRenderer.js.map +1 -1
  5. package/dist/DataBarGridModel.js.map +1 -1
  6. package/dist/DeletableGridModel.js.map +1 -1
  7. package/dist/EditableGridModel.js.map +1 -1
  8. package/dist/EventHandlerResult.js.map +1 -1
  9. package/dist/ExpandableGridModel.js.map +1 -1
  10. package/dist/Grid.d.ts +3 -0
  11. package/dist/Grid.d.ts.map +1 -1
  12. package/dist/Grid.js +16 -5
  13. package/dist/Grid.js.map +1 -1
  14. package/dist/GridAxisRange.js.map +1 -1
  15. package/dist/GridColorUtils.js.map +1 -1
  16. package/dist/GridMetricCalculator.js.map +1 -1
  17. package/dist/GridMetrics.js.map +1 -1
  18. package/dist/GridModel.js.map +1 -1
  19. package/dist/GridMouseHandler.js.map +1 -1
  20. package/dist/GridRange.js.map +1 -1
  21. package/dist/GridRenderer.js.map +1 -1
  22. package/dist/GridRendererTypes.js.map +1 -1
  23. package/dist/GridTestUtils.js.map +1 -1
  24. package/dist/GridTheme.js.map +1 -1
  25. package/dist/GridUtils.js.map +1 -1
  26. package/dist/KeyHandler.js.map +1 -1
  27. package/dist/MockDataBarGridModel.js.map +1 -1
  28. package/dist/MockGridData.js.map +1 -1
  29. package/dist/MockGridModel.js.map +1 -1
  30. package/dist/MockTreeGridModel.js.map +1 -1
  31. package/dist/StaticDataGridModel.js.map +1 -1
  32. package/dist/TextCellRenderer.js.map +1 -1
  33. package/dist/ThemeContext.js.map +1 -1
  34. package/dist/TokenBoxCellRenderer.js.map +1 -1
  35. package/dist/ViewportDataGridModel.js.map +1 -1
  36. package/dist/errors/AssertionError.js.map +1 -1
  37. package/dist/errors/PasteError.js.map +1 -1
  38. package/dist/errors/assertIsDefined.js.map +1 -1
  39. package/dist/errors/index.js.map +1 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  42. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  43. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  44. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  45. package/dist/key-handlers/index.js.map +1 -1
  46. package/dist/memoizeClear.js.map +1 -1
  47. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  48. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  49. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  50. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  51. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  52. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  53. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  54. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  55. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  56. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  57. package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
  58. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  59. package/dist/mouse-handlers/index.js.map +1 -1
  60. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"GridAxisRange.js","names":["isAxisRange","range","Array","isArray","length","assertAxisRange","Error","concat","isBoundedAxisRange","assertBoundedAxisRange"],"sources":["../src/GridAxisRange.ts"],"sourcesContent":["import type { GridRangeIndex } from './GridRange';\nimport type { VisibleIndex } from './GridMetrics';\n\nexport type Range<T> = [start: T, end: T];\n\nexport type AxisRange = Range<GridRangeIndex>;\nexport type BoundedAxisRange = Range<VisibleIndex>;\n\nexport function isAxisRange(range: unknown): range is AxisRange {\n return (\n Array.isArray(range) &&\n range.length === 2 &&\n (range[0] === null || typeof range[0] === 'number') &&\n (range[1] === null || typeof range[1] === 'number')\n );\n}\n\nexport function assertAxisRange(range: unknown): asserts range is AxisRange {\n if (!isAxisRange(range)) {\n throw new Error(`Expected axis range. Received: ${range}`);\n }\n}\n\nexport function isBoundedAxisRange(range: unknown): range is BoundedAxisRange {\n return isAxisRange(range) && range[0] != null && range[1] != null;\n}\n\nexport function assertBoundedAxisRange(\n range: unknown\n): asserts range is BoundedAxisRange {\n if (!isBoundedAxisRange(range)) {\n throw new Error(`Expected bounded axis range. Received: ${range}`);\n }\n}\n"],"mappings":"AAQA,OAAO,SAASA,WAAWA,CAACC,KAAc,EAAsB;EAC9D,OACEC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IACpBA,KAAK,CAACG,MAAM,KAAK,CAAC,KACjBH,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,KAClDA,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAEvD;AAEA,OAAO,SAASI,eAAeA,CAACJ,KAAc,EAA8B;EAC1E,IAAI,CAACD,WAAW,CAACC,KAAK,CAAC,EAAE;IACvB,MAAM,IAAIK,KAAK,mCAAAC,MAAA,CAAmCN,KAAK,CAAE,CAAC;EAC5D;AACF;AAEA,OAAO,SAASO,kBAAkBA,CAACP,KAAc,EAA6B;EAC5E,OAAOD,WAAW,CAACC,KAAK,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;AACnE;AAEA,OAAO,SAASQ,sBAAsBA,CACpCR,KAAc,EACqB;EACnC,IAAI,CAACO,kBAAkB,CAACP,KAAK,CAAC,EAAE;IAC9B,MAAM,IAAIK,KAAK,2CAAAC,MAAA,CAA2CN,KAAK,CAAE,CAAC;EACpE;AACF"}
1
+ {"version":3,"file":"GridAxisRange.js","names":["isAxisRange","range","Array","isArray","length","assertAxisRange","Error","concat","isBoundedAxisRange","assertBoundedAxisRange"],"sources":["../src/GridAxisRange.ts"],"sourcesContent":["import type { GridRangeIndex } from './GridRange';\nimport type { VisibleIndex } from './GridMetrics';\n\nexport type Range<T> = [start: T, end: T];\n\nexport type AxisRange = Range<GridRangeIndex>;\nexport type BoundedAxisRange = Range<VisibleIndex>;\n\nexport function isAxisRange(range: unknown): range is AxisRange {\n return (\n Array.isArray(range) &&\n range.length === 2 &&\n (range[0] === null || typeof range[0] === 'number') &&\n (range[1] === null || typeof range[1] === 'number')\n );\n}\n\nexport function assertAxisRange(range: unknown): asserts range is AxisRange {\n if (!isAxisRange(range)) {\n throw new Error(`Expected axis range. Received: ${range}`);\n }\n}\n\nexport function isBoundedAxisRange(range: unknown): range is BoundedAxisRange {\n return isAxisRange(range) && range[0] != null && range[1] != null;\n}\n\nexport function assertBoundedAxisRange(\n range: unknown\n): asserts range is BoundedAxisRange {\n if (!isBoundedAxisRange(range)) {\n throw new Error(`Expected bounded axis range. Received: ${range}`);\n }\n}\n"],"mappings":"AAQA,OAAO,SAASA,WAAWA,CAACC,KAAc,EAAsB;EAC9D,OACEC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IACpBA,KAAK,CAACG,MAAM,KAAK,CAAC,KACjBH,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,KAClDA,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAEvD;AAEA,OAAO,SAASI,eAAeA,CAACJ,KAAc,EAA8B;EAC1E,IAAI,CAACD,WAAW,CAACC,KAAK,CAAC,EAAE;IACvB,MAAM,IAAIK,KAAK,mCAAAC,MAAA,CAAmCN,KAAK,CAAE,CAAC;EAC5D;AACF;AAEA,OAAO,SAASO,kBAAkBA,CAACP,KAAc,EAA6B;EAC5E,OAAOD,WAAW,CAACC,KAAK,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;AACnE;AAEA,OAAO,SAASQ,sBAAsBA,CACpCR,KAAc,EACqB;EACnC,IAAI,CAACO,kBAAkB,CAACP,KAAK,CAAC,EAAE;IAC9B,MAAM,IAAIK,KAAK,2CAAAC,MAAA,CAA2CN,KAAK,CAAE,CAAC;EACpE;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"GridColorUtils.js","names":["convert","clamp","darkenForDepth","color","depth","maxDepth","arguments","length","undefined","lab","hex","raw","modifier","Math","max","concat","colorWithAlpha","alpha","r","g","b","rgb","linearSRGBToOklab","l","m","s","l2","cbrt","m2","s2","L","a","OklabToLinearSRGB","hexToRgb","_hex$replace$substrin","_hex$replace$substrin2","rgbArray","replace","substring","match","map","x","parseInt","rgbToHex","round","toString","join","lerpColor","color1","color2","factor","L1","a1","b1","L2","a2","b2"],"sources":["../src/GridColorUtils.ts"],"sourcesContent":["import convert from 'color-convert';\nimport { type HEX } from 'color-convert/conversions';\nimport clamp from 'lodash.clamp';\nimport { type GridColor } from './GridTheme';\n\nexport type RGB = { r: number; g: number; b: number };\nexport type Oklab = { L: number; a: number; b: number };\n\n/**\n * Darken the provided colour\n * @param color Color in hex format to convert (with #)\n * @param depth Depth to convert the color to\n * @param maxDepth Maximum depth. Defaults to 6\n * @returns Darkened colour in hex format\n */\nexport function darkenForDepth(\n color: HEX,\n depth: number,\n maxDepth = 6\n): GridColor {\n const lab = convert.hex.lab.raw(color);\n\n // determined via a trial an error approach to getting\n // something that works for both light and dark\n const modifier = lab[0] < 50 ? 17 : 10;\n\n lab[0] = Math.max(lab[0] - (modifier / maxDepth) * depth, 0);\n return `#${convert.lab.hex(lab)}`;\n}\n\n/**\n * Convert a hex colour to an rgba with specified alpha\n * @param color Color in hex format to convert (with #)\n * @param alpha Alpha to apply to the color\n * @returns Color with the newly applied alpha in rgba format\n */\nexport function colorWithAlpha(color: HEX, alpha: number): GridColor {\n const [r, g, b] = convert.hex.rgb(color);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\n/**\n * Converts a color in RGB to Oklab\n * Formula provided here: https://bottosson.github.io/posts/oklab/#converting-from-linear-srgb-to-oklab\n * @param color An RGB color\n * @returns The color but respresented as an Oklab color\n */\nconst linearSRGBToOklab = (color: RGB): Oklab => {\n const { r, g, b } = color;\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l2 = Math.cbrt(l);\n const m2 = Math.cbrt(m);\n const s2 = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l2 + 0.793617785 * m2 - 0.0040720468 * s2,\n a: 1.9779984951 * l2 - 2.428592205 * m2 + 0.4505937099 * s2,\n b: 0.0259040371 * l2 + 0.7827717662 * m2 - 0.808675766 * s2,\n };\n};\n\n/**\n * Converts an Oklab color to RGB\n * Formula provided here: https://bottosson.github.io/posts/oklab/#converting-from-linear-srgb-to-oklab\n * @param color An Oklab color\n * @returns The given color but represented as a RGB color\n */\nconst OklabToLinearSRGB = (color: Oklab): RGB => {\n const { L, a, b } = color;\n\n const l2 = L + 0.3963377774 * a + 0.2158037573 * b;\n const m2 = L - 0.1055613458 * a - 0.0638541728 * b;\n const s2 = L - 0.0894841775 * a - 1.291485548 * b;\n\n const l = l2 * l2 * l2;\n const m = m2 * m2 * m2;\n const s = s2 * s2 * s2;\n\n return {\n r: clamp(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s, 0, 255),\n g: clamp(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s, 0, 255),\n b: clamp(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s, 0, 255),\n };\n};\n\n/**\n * Converts a hex color to RGB\n * Algorithm from https://stackoverflow.com/a/39077686/20005358\n * @param hex A hex color\n * @returns The RGB representation of the given color\n */\nconst hexToRgb = (hex: string): RGB => {\n const rgbArray = hex\n .replace(\n /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\n (m: string, r: string, g: string, b: string) =>\n `#${r}${r}${g}${g}${b}${b}`\n )\n .substring(1)\n .match(/.{2}/g)\n ?.map((x: string) => parseInt(x, 16)) ?? [0, 0, 0];\n\n return { r: rgbArray[0], g: rgbArray[1], b: rgbArray[2] };\n};\n\n/**\n * Converts a RGB color to hex\n * Algorithm from https://stackoverflow.com/a/39077686/20005358\n * @param color A RGB color\n * @returns The hexcode of the given color\n */\nconst rgbToHex = (color: RGB): string => {\n const r = Math.round(color.r);\n const g = Math.round(color.g);\n const b = Math.round(color.b);\n\n return `#${[r, g, b]\n .map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('')}`;\n};\n\n/**\n * Calculates a color given an interpolation factor between two given colors\n * @param color1 Color on one end\n * @param color2 Color on other end\n * @param factor The interpolation factor (0 to 1, 0 will be color1 while 1 will be color2)\n * @returns The color determined by the interpolation factor between the two colors\n */\nconst lerpColor = (color1: Oklab, color2: Oklab, factor: number): Oklab => {\n const { L: L1, a: a1, b: b1 } = color1;\n const { L: L2, a: a2, b: b2 } = color2;\n\n const L = L1 + (L2 - L1) * factor;\n const a = a1 + (a2 - a1) * factor;\n const b = b1 + (b2 - b1) * factor;\n\n return { L, a, b };\n};\n\nexport default {\n colorWithAlpha,\n darkenForDepth,\n linearSRGBToOklab,\n OklabToLinearSRGB,\n hexToRgb,\n rgbToHex,\n lerpColor,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridColorUtils.js","names":["convert","clamp","darkenForDepth","color","depth","maxDepth","arguments","length","undefined","lab","hex","raw","modifier","Math","max","concat","colorWithAlpha","alpha","r","g","b","rgb","linearSRGBToOklab","l","m","s","l2","cbrt","m2","s2","L","a","OklabToLinearSRGB","hexToRgb","_hex$replace$substrin","_hex$replace$substrin2","rgbArray","replace","substring","match","map","x","parseInt","rgbToHex","round","toString","join","lerpColor","color1","color2","factor","L1","a1","b1","L2","a2","b2"],"sources":["../src/GridColorUtils.ts"],"sourcesContent":["import convert from 'color-convert';\nimport { type HEX } from 'color-convert/conversions';\nimport clamp from 'lodash.clamp';\nimport { type GridColor } from './GridTheme';\n\nexport type RGB = { r: number; g: number; b: number };\nexport type Oklab = { L: number; a: number; b: number };\n\n/**\n * Darken the provided colour\n * @param color Color in hex format to convert (with #)\n * @param depth Depth to convert the color to\n * @param maxDepth Maximum depth. Defaults to 6\n * @returns Darkened colour in hex format\n */\nexport function darkenForDepth(\n color: HEX,\n depth: number,\n maxDepth = 6\n): GridColor {\n const lab = convert.hex.lab.raw(color);\n\n // determined via a trial an error approach to getting\n // something that works for both light and dark\n const modifier = lab[0] < 50 ? 17 : 10;\n\n lab[0] = Math.max(lab[0] - (modifier / maxDepth) * depth, 0);\n return `#${convert.lab.hex(lab)}`;\n}\n\n/**\n * Convert a hex colour to an rgba with specified alpha\n * @param color Color in hex format to convert (with #)\n * @param alpha Alpha to apply to the color\n * @returns Color with the newly applied alpha in rgba format\n */\nexport function colorWithAlpha(color: HEX, alpha: number): GridColor {\n const [r, g, b] = convert.hex.rgb(color);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\n/**\n * Converts a color in RGB to Oklab\n * Formula provided here: https://bottosson.github.io/posts/oklab/#converting-from-linear-srgb-to-oklab\n * @param color An RGB color\n * @returns The color but respresented as an Oklab color\n */\nconst linearSRGBToOklab = (color: RGB): Oklab => {\n const { r, g, b } = color;\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l2 = Math.cbrt(l);\n const m2 = Math.cbrt(m);\n const s2 = Math.cbrt(s);\n\n return {\n L: 0.2104542553 * l2 + 0.793617785 * m2 - 0.0040720468 * s2,\n a: 1.9779984951 * l2 - 2.428592205 * m2 + 0.4505937099 * s2,\n b: 0.0259040371 * l2 + 0.7827717662 * m2 - 0.808675766 * s2,\n };\n};\n\n/**\n * Converts an Oklab color to RGB\n * Formula provided here: https://bottosson.github.io/posts/oklab/#converting-from-linear-srgb-to-oklab\n * @param color An Oklab color\n * @returns The given color but represented as a RGB color\n */\nconst OklabToLinearSRGB = (color: Oklab): RGB => {\n const { L, a, b } = color;\n\n const l2 = L + 0.3963377774 * a + 0.2158037573 * b;\n const m2 = L - 0.1055613458 * a - 0.0638541728 * b;\n const s2 = L - 0.0894841775 * a - 1.291485548 * b;\n\n const l = l2 * l2 * l2;\n const m = m2 * m2 * m2;\n const s = s2 * s2 * s2;\n\n return {\n r: clamp(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s, 0, 255),\n g: clamp(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s, 0, 255),\n b: clamp(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s, 0, 255),\n };\n};\n\n/**\n * Converts a hex color to RGB\n * Algorithm from https://stackoverflow.com/a/39077686/20005358\n * @param hex A hex color\n * @returns The RGB representation of the given color\n */\nconst hexToRgb = (hex: string): RGB => {\n const rgbArray = hex\n .replace(\n /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\n (m: string, r: string, g: string, b: string) =>\n `#${r}${r}${g}${g}${b}${b}`\n )\n .substring(1)\n .match(/.{2}/g)\n ?.map((x: string) => parseInt(x, 16)) ?? [0, 0, 0];\n\n return { r: rgbArray[0], g: rgbArray[1], b: rgbArray[2] };\n};\n\n/**\n * Converts a RGB color to hex\n * Algorithm from https://stackoverflow.com/a/39077686/20005358\n * @param color A RGB color\n * @returns The hexcode of the given color\n */\nconst rgbToHex = (color: RGB): string => {\n const r = Math.round(color.r);\n const g = Math.round(color.g);\n const b = Math.round(color.b);\n\n return `#${[r, g, b]\n .map(x => {\n const hex = x.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('')}`;\n};\n\n/**\n * Calculates a color given an interpolation factor between two given colors\n * @param color1 Color on one end\n * @param color2 Color on other end\n * @param factor The interpolation factor (0 to 1, 0 will be color1 while 1 will be color2)\n * @returns The color determined by the interpolation factor between the two colors\n */\nconst lerpColor = (color1: Oklab, color2: Oklab, factor: number): Oklab => {\n const { L: L1, a: a1, b: b1 } = color1;\n const { L: L2, a: a2, b: b2 } = color2;\n\n const L = L1 + (L2 - L1) * factor;\n const a = a1 + (a2 - a1) * factor;\n const b = b1 + (b2 - b1) * factor;\n\n return { L, a, b };\n};\n\nexport default {\n colorWithAlpha,\n darkenForDepth,\n linearSRGBToOklab,\n OklabToLinearSRGB,\n hexToRgb,\n rgbToHex,\n lerpColor,\n};\n"],"mappings":"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","ignoreList":[]}