@deephaven/grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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.
Files changed (60) hide show
  1. package/dist/CellInputField.js +41 -22
  2. package/dist/CellInputField.js.map +1 -1
  3. package/dist/CellRenderer.js +19 -27
  4. package/dist/CellRenderer.js.map +1 -1
  5. package/dist/DataBarCellRenderer.js +61 -87
  6. package/dist/DataBarCellRenderer.js.map +1 -1
  7. package/dist/Grid.js +281 -455
  8. package/dist/Grid.js.map +1 -1
  9. package/dist/GridColorUtils.js +23 -21
  10. package/dist/GridColorUtils.js.map +1 -1
  11. package/dist/GridMetricCalculator.js +192 -303
  12. package/dist/GridMetricCalculator.js.map +1 -1
  13. package/dist/GridRange.js +18 -28
  14. package/dist/GridRange.js.map +1 -1
  15. package/dist/GridRenderer.d.ts.map +1 -1
  16. package/dist/GridRenderer.js +432 -604
  17. package/dist/GridRenderer.js.map +1 -1
  18. package/dist/GridUtils.d.ts +33 -16
  19. package/dist/GridUtils.d.ts.map +1 -1
  20. package/dist/GridUtils.js +183 -213
  21. package/dist/GridUtils.js.map +1 -1
  22. package/dist/MockGridModel.js +17 -10
  23. package/dist/MockGridModel.js.map +1 -1
  24. package/dist/MockTreeGridModel.js +36 -31
  25. package/dist/MockTreeGridModel.js.map +1 -1
  26. package/dist/TextCellRenderer.js +36 -57
  27. package/dist/TextCellRenderer.js.map +1 -1
  28. package/dist/key-handlers/EditKeyHandler.js +4 -7
  29. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  30. package/dist/key-handlers/PasteKeyHandler.js +1 -3
  31. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  32. package/dist/key-handlers/SelectionKeyHandler.js +40 -71
  33. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  34. package/dist/key-handlers/TreeKeyHandler.js +4 -10
  35. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  36. package/dist/mouse-handlers/EditMouseHandler.js +3 -7
  37. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  38. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +54 -82
  39. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  40. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +4 -8
  41. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  42. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +31 -55
  43. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  44. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +26 -46
  45. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  46. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +2 -4
  47. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  48. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +14 -22
  49. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  50. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +8 -16
  51. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  52. package/dist/mouse-handlers/GridSelectionMouseHandler.js +47 -75
  53. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  54. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +9 -23
  55. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  56. package/dist/mouse-handlers/GridTokenMouseHandler.js +24 -39
  57. package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
  58. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +31 -55
  59. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  60. package/package.json +3 -3
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import convert from 'color-convert';
2
8
  import clamp from 'lodash.clamp';
3
9
  /**
@@ -25,7 +31,11 @@ export function darkenForDepth(color, depth) {
25
31
  * @returns Color with the newly applied alpha in rgba format
26
32
  */
27
33
  export function colorWithAlpha(color, alpha) {
28
- var [r, g, b] = convert.hex.rgb(color);
34
+ var _convert$hex$rgb = convert.hex.rgb(color),
35
+ _convert$hex$rgb2 = _slicedToArray(_convert$hex$rgb, 3),
36
+ r = _convert$hex$rgb2[0],
37
+ g = _convert$hex$rgb2[1],
38
+ b = _convert$hex$rgb2[2];
29
39
  return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
30
40
  }
31
41
 
@@ -36,11 +46,9 @@ export function colorWithAlpha(color, alpha) {
36
46
  * @returns The color but respresented as an Oklab color
37
47
  */
38
48
  var linearSRGBToOklab = color => {
39
- var {
40
- r,
41
- g,
42
- b
43
- } = color;
49
+ var r = color.r,
50
+ g = color.g,
51
+ b = color.b;
44
52
  var l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
45
53
  var m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
46
54
  var s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
@@ -61,11 +69,9 @@ var linearSRGBToOklab = color => {
61
69
  * @returns The given color but represented as a RGB color
62
70
  */
63
71
  var OklabToLinearSRGB = color => {
64
- var {
65
- L,
66
- a,
67
- b
68
- } = color;
72
+ var L = color.L,
73
+ a = color.a,
74
+ b = color.b;
69
75
  var l2 = L + 0.3963377774 * a + 0.2158037573 * b;
70
76
  var m2 = L - 0.1055613458 * a - 0.0638541728 * b;
71
77
  var s2 = L - 0.0894841775 * a - 1.291485548 * b;
@@ -119,16 +125,12 @@ var rgbToHex = color => {
119
125
  * @returns The color determined by the interpolation factor between the two colors
120
126
  */
121
127
  var lerpColor = (color1, color2, factor) => {
122
- var {
123
- L: L1,
124
- a: a1,
125
- b: b1
126
- } = color1;
127
- var {
128
- L: L2,
129
- a: a2,
130
- b: b2
131
- } = color2;
128
+ var L1 = color1.L,
129
+ a1 = color1.a,
130
+ b1 = color1.b;
131
+ var L2 = color2.L,
132
+ a2 = color2.a,
133
+ b2 = color2.b;
132
134
  var L = L1 + (L2 - L1) * factor;
133
135
  var a = a1 + (a2 - a1) * factor;
134
136
  var b = b1 + (b2 - b1) * factor;
@@ -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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","ignoreList":[]}
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","_convert$hex$rgb","rgb","_convert$hex$rgb2","_slicedToArray","r","g","b","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":";;;;;;AAAA,OAAOA,OAAO,MAAM,eAAe;AAEnC,OAAOC,KAAK,MAAM,cAAc;AAMhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,KAAU,EACVC,KAAa,EAEF;EAAA,IADXC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAEZ,IAAMG,GAAG,GAAGT,OAAO,CAACU,GAAG,CAACD,GAAG,CAACE,GAAG,CAACR,KAAK,CAAC;;EAEtC;EACA;EACA,IAAMS,QAAQ,GAAGH,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EAEtCA,GAAG,CAAC,CAAC,CAAC,GAAGI,IAAI,CAACC,GAAG,CAACL,GAAG,CAAC,CAAC,CAAC,GAAIG,QAAQ,GAAGP,QAAQ,GAAID,KAAK,EAAE,CAAC,CAAC;EAC5D,WAAAW,MAAA,CAAWf,OAAO,CAACS,GAAG,CAACC,GAAG,CAACD,GAAG,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,cAAcA,CAACb,KAAU,EAAEc,KAAa,EAAa;EACnE,IAAAC,gBAAA,GAAkBlB,OAAO,CAACU,GAAG,CAACS,GAAG,CAAChB,KAAK,CAAC;IAAAiB,iBAAA,GAAAC,cAAA,CAAAH,gBAAA;IAAjCI,CAAC,GAAAF,iBAAA;IAAEG,CAAC,GAAAH,iBAAA;IAAEI,CAAC,GAAAJ,iBAAA;EACd,eAAAL,MAAA,CAAeO,CAAC,QAAAP,MAAA,CAAKQ,CAAC,QAAAR,MAAA,CAAKS,CAAC,QAAAT,MAAA,CAAKE,KAAK;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMQ,iBAAiB,GAAItB,KAAU,IAAY;EAC/C,IAAQmB,CAAC,GAAWnB,KAAK,CAAjBmB,CAAC;IAAEC,CAAC,GAAQpB,KAAK,CAAdoB,CAAC;IAAEC,CAAC,GAAKrB,KAAK,CAAXqB,CAAC;EAEf,IAAME,CAAC,GAAG,YAAY,GAAGJ,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC;EAChE,IAAMG,CAAC,GAAG,YAAY,GAAGL,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC;EAChE,IAAMI,CAAC,GAAG,YAAY,GAAGN,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC;EAEhE,IAAMK,EAAE,GAAGhB,IAAI,CAACiB,IAAI,CAACJ,CAAC,CAAC;EACvB,IAAMK,EAAE,GAAGlB,IAAI,CAACiB,IAAI,CAACH,CAAC,CAAC;EACvB,IAAMK,EAAE,GAAGnB,IAAI,CAACiB,IAAI,CAACF,CAAC,CAAC;EAEvB,OAAO;IACLK,CAAC,EAAE,YAAY,GAAGJ,EAAE,GAAG,WAAW,GAAGE,EAAE,GAAG,YAAY,GAAGC,EAAE;IAC3DE,CAAC,EAAE,YAAY,GAAGL,EAAE,GAAG,WAAW,GAAGE,EAAE,GAAG,YAAY,GAAGC,EAAE;IAC3DR,CAAC,EAAE,YAAY,GAAGK,EAAE,GAAG,YAAY,GAAGE,EAAE,GAAG,WAAW,GAAGC;EAC3D,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAMG,iBAAiB,GAAIhC,KAAY,IAAU;EAC/C,IAAQ8B,CAAC,GAAW9B,KAAK,CAAjB8B,CAAC;IAAEC,CAAC,GAAQ/B,KAAK,CAAd+B,CAAC;IAAEV,CAAC,GAAKrB,KAAK,CAAXqB,CAAC;EAEf,IAAMK,EAAE,GAAGI,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGV,CAAC;EAClD,IAAMO,EAAE,GAAGE,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGV,CAAC;EAClD,IAAMQ,EAAE,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,WAAW,GAAGV,CAAC;EAEjD,IAAME,CAAC,GAAGG,EAAE,GAAGA,EAAE,GAAGA,EAAE;EACtB,IAAMF,CAAC,GAAGI,EAAE,GAAGA,EAAE,GAAGA,EAAE;EACtB,IAAMH,CAAC,GAAGI,EAAE,GAAGA,EAAE,GAAGA,EAAE;EAEtB,OAAO;IACLV,CAAC,EAAErB,KAAK,CAAC,CAAC,YAAY,GAAGyB,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzEL,CAAC,EAAEtB,KAAK,CAAC,CAAC,YAAY,GAAGyB,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,YAAY,GAAGC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzEJ,CAAC,EAAEvB,KAAK,CAAC,CAAC,YAAY,GAAGyB,CAAC,GAAG,YAAY,GAAGC,CAAC,GAAG,WAAW,GAAGC,CAAC,EAAE,CAAC,EAAE,GAAG;EACzE,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAMQ,QAAQ,GAAI1B,GAAW,IAAU;EAAA,IAAA2B,qBAAA,EAAAC,sBAAA;EACrC,IAAMC,QAAQ,IAAAF,qBAAA,IAAAC,sBAAA,GAAG5B,GAAG,CACjB8B,OAAO,CACN,kCAAkC,EAClC,CAACb,CAAS,EAAEL,CAAS,EAAEC,CAAS,EAAEC,CAAS,SAAAT,MAAA,CACrCO,CAAC,EAAAP,MAAA,CAAGO,CAAC,EAAAP,MAAA,CAAGQ,CAAC,EAAAR,MAAA,CAAGQ,CAAC,EAAAR,MAAA,CAAGS,CAAC,EAAAT,MAAA,CAAGS,CAAC,CAC7B,CAAC,CACAiB,SAAS,CAAC,CAAC,CAAC,CACZC,KAAK,CAAC,OAAO,CAAC,cAAAJ,sBAAA,uBAPAA,sBAAA,CAQbK,GAAG,CAAEC,CAAS,IAAKC,QAAQ,CAACD,CAAC,EAAE,EAAE,CAAC,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAEpD,OAAO;IAAEf,CAAC,EAAEiB,QAAQ,CAAC,CAAC,CAAC;IAAEhB,CAAC,EAAEgB,QAAQ,CAAC,CAAC,CAAC;IAAEf,CAAC,EAAEe,QAAQ,CAAC,CAAC;EAAE,CAAC;AAC3D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAMO,QAAQ,GAAI3C,KAAU,IAAa;EACvC,IAAMmB,CAAC,GAAGT,IAAI,CAACkC,KAAK,CAAC5C,KAAK,CAACmB,CAAC,CAAC;EAC7B,IAAMC,CAAC,GAAGV,IAAI,CAACkC,KAAK,CAAC5C,KAAK,CAACoB,CAAC,CAAC;EAC7B,IAAMC,CAAC,GAAGX,IAAI,CAACkC,KAAK,CAAC5C,KAAK,CAACqB,CAAC,CAAC;EAE7B,WAAAT,MAAA,CAAW,CAACO,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,CACjBmB,GAAG,CAACC,CAAC,IAAI;IACR,IAAMlC,GAAG,GAAGkC,CAAC,CAACI,QAAQ,CAAC,EAAE,CAAC;IAC1B,OAAOtC,GAAG,CAACH,MAAM,KAAK,CAAC,OAAAQ,MAAA,CAAOL,GAAG,IAAKA,GAAG;EAC3C,CAAC,CAAC,CACDuC,IAAI,CAAC,EAAE,CAAC;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,SAAS,GAAGA,CAACC,MAAa,EAAEC,MAAa,EAAEC,MAAc,KAAY;EACzE,IAAWC,EAAE,GAAmBH,MAAM,CAA9BlB,CAAC;IAASsB,EAAE,GAAYJ,MAAM,CAAvBjB,CAAC;IAASsB,EAAE,GAAKL,MAAM,CAAhB3B,CAAC;EACvB,IAAWiC,EAAE,GAAmBL,MAAM,CAA9BnB,CAAC;IAASyB,EAAE,GAAYN,MAAM,CAAvBlB,CAAC;IAASyB,EAAE,GAAKP,MAAM,CAAhB5B,CAAC;EAEvB,IAAMS,CAAC,GAAGqB,EAAE,GAAG,CAACG,EAAE,GAAGH,EAAE,IAAID,MAAM;EACjC,IAAMnB,CAAC,GAAGqB,EAAE,GAAG,CAACG,EAAE,GAAGH,EAAE,IAAIF,MAAM;EACjC,IAAM7B,CAAC,GAAGgC,EAAE,GAAG,CAACG,EAAE,GAAGH,EAAE,IAAIH,MAAM;EAEjC,OAAO;IAAEpB,CAAC;IAAEC,CAAC;IAAEV;EAAE,CAAC;AACpB,CAAC;AAED,eAAe;EACbR,cAAc;EACdd,cAAc;EACduB,iBAAiB;EACjBU,iBAAiB;EACjBC,QAAQ;EACRU,QAAQ;EACRI;AACF,CAAC","ignoreList":[]}