@malloydata/malloy-explorer 0.0.264-dev250418182827 → 0.0.266-dev250422000026

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.
@@ -5010,6 +5010,8 @@ const SvgWarning = (props2) => /* @__PURE__ */ React__namespace.createElement("s
5010
5010
  const SvgCheckCircle = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 -960 960 960", width: "24px", fill: "currentColor", ...props2 }, /* @__PURE__ */ React__namespace.createElement("path", { d: "m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" }));
5011
5011
  const SvgInfo = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 -960 960 960", width: "24px", fill: "currentColor", ...props2 }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" }));
5012
5012
  const SvgError = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 -960 960 960", width: "24px", fill: "currentColor", ...props2 }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240ZM330-120 120-330v-300l210-210h300l210 210v300L630-120H330Zm34-80h232l164-164v-232L596-760H364L200-596v232l164 164Zm116-280Z" }));
5013
+ const SvgRefresh = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { height: 20, viewBox: "0 0 20 20", width: 20, xmlns: "http://www.w3.org/2000/svg", ...props2 }, /* @__PURE__ */ React__namespace.createElement("g", { fill: "none", stroke: "currentColor" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "m17.08 11.15c.01.16.02.32.02.49 0 3.89-3.16 7.05-7.05 7.05-3.89-.01-7.05-3.16-7.05-7.06 0-3.89 3.16-7.05 7.05-7.05.85 0 1.66.15 2.41.42", strokeWidth: 1.1 }), /* @__PURE__ */ React__namespace.createElement("path", { d: "m9.9 2 2.89 2.89-3 3.01" })));
5014
+ const SvgSidebarCollapse = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { height: 24, viewBox: "0 0 24 24", width: 24, xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", stroke: "none", ...props2 }, /* @__PURE__ */ React__namespace.createElement("path", { fill: "currentColor", stroke: "none", d: "m20 24h-16c-2.2 0-4-1.8-4-4v-16c0-2.2 1.8-4 4-4h16c2.2 0 4 1.8 4 4v16c0 2.2-1.8 4-4 4zm-16-22c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-16c0-1.1-.9-2-2-2z" }), /* @__PURE__ */ React__namespace.createElement("path", { fill: "currentColor", d: "m8 24c-.6 0-1-.4-1-1v-22c0-.6.4-1 1-1s1 .4 1 1v22c0 .6-.4 1-1 1z" }), /* @__PURE__ */ React__namespace.createElement("path", { fill: "currentColor", d: "m14 13c-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l3-3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-3 3c-.2.2-.4.3-.7.3z" }), /* @__PURE__ */ React__namespace.createElement("path", { fill: "currentColor", d: "m17 16c-.3 0-.5-.1-.7-.3l-3-3c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l3 3c.4.4.4 1 0 1.4-.2.2-.4.3-.7.3z" }));
5013
5015
  const SvgVizBarChart = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "110px", height: "110px", viewBox: "0 0 110 110", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", ...props2 }, /* @__PURE__ */ React__namespace.createElement("g", { id: "viz_bar_chart", stroke: "none", strokeWidth: 1, fill: "none", fillRule: "evenodd" }, /* @__PURE__ */ React__namespace.createElement("g", { id: "Group-3", transform: "translate(20.000000, 24.000000)", fill: "currentColor" }, /* @__PURE__ */ React__namespace.createElement("g", { id: "Group-2", transform: "translate(34.500000, 31.000000) rotate(-270.000000) translate(-34.500000, -31.000000) translate(3.500000, -3.500000)" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M-26.056314,30.056314 L34.943686,30.056314 C37.152825,30.056314 38.943686,31.847175 38.943686,34.056314 L38.943686,34.943686 C38.943686,37.152825 37.152825,38.943686 34.943686,38.943686 L-26.056314,38.943686 C-28.265453,38.943686 -30.056314,37.152825 -30.056314,34.943686 L-30.056314,34.056314 C-30.056314,31.847175 -28.265453,30.056314 -26.056314,30.056314 Z", id: "Rectangle-Copy-59", transform: "translate(4.443686, 34.500000) rotate(-90.000000) translate(-4.443686, -34.500000) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M-0.491247385,37.8466366 L44.9281075,37.8466366 C47.1372465,37.8466366 48.9281075,39.6374976 48.9281075,41.8466366 L48.9281075,42.7340086 C48.9281075,44.9431476 47.1372465,46.7340086 44.9281075,46.7340086 L-0.491247385,46.7340086 C-2.70038638,46.7340086 -4.49124739,44.9431476 -4.49124739,42.7340086 L-4.49124739,41.8466366 C-4.49124739,39.6374976 -2.70038638,37.8466366 -0.491247385,37.8466366 Z", id: "Rectangle-Copy-62", transform: "translate(22.218430, 42.290323) rotate(-90.000000) translate(-22.218430, -42.290323) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M23.3837854,43.9469253 L56.6025627,43.9469253 C58.8117017,43.9469253 60.6025627,45.7377863 60.6025627,47.9469253 L60.6025627,48.8342973 C60.6025627,51.0434363 58.8117017,52.8342973 56.6025627,52.8342973 L23.3837854,52.8342973 C21.1746464,52.8342973 19.3837854,51.0434363 19.3837854,48.8342973 L19.3837854,47.9469253 C19.3837854,45.7377863 21.1746464,43.9469253 23.3837854,43.9469253 Z", id: "Rectangle-Copy-66", transform: "translate(39.993174, 48.390611) rotate(-90.000000) translate(-39.993174, -48.390611) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M46.7286345,49.7286345 L68.8072017,49.7286345 C71.0163407,49.7286345 72.8072017,51.5194955 72.8072017,53.7286345 L72.8072017,54.1927983 C72.8072017,56.4019373 71.0163407,58.1927983 68.8072017,58.1927983 L46.7286345,58.1927983 C44.5194955,58.1927983 42.7286345,56.4019373 42.7286345,54.1927983 L42.7286345,53.7286345 C42.7286345,51.5194955 44.5194955,49.7286345 46.7286345,49.7286345 Z", id: "Rectangle-Copy-67", transform: "translate(57.767918, 53.960716) rotate(-90.000000) translate(-57.767918, -53.960716) " })))));
5014
5016
  const SvgVizBoolean = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "110px", height: "110px", viewBox: "0 0 110 110", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", ...props2 }, /* @__PURE__ */ React__namespace.createElement("g", { id: "viz_boolean", stroke: "none", strokeWidth: 1, fill: "none", fillRule: "evenodd" }, /* @__PURE__ */ React__namespace.createElement("g", { id: "noun_switch_3350414-2", transform: "translate(20.000000, 22.000000)", fill: "currentColor", fillRule: "nonzero" }, /* @__PURE__ */ React__namespace.createElement("g", { id: "noun_switch_3350414" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M15.2972028,30.8 L54.7027972,30.8 C63.151209,30.8 70,23.9051851 70,15.4 C70,6.89481485 63.151209,0 54.7027972,0 L15.2972028,0 C6.84879098,0 0,6.89481485 0,15.4 C0,23.9051851 6.84879098,30.8 15.2972028,30.8 Z M15.2972028,6.16 L54.7027972,6.16 C59.7718443,6.16 63.8811189,10.2968889 63.8811189,15.4 C63.8811189,20.5031111 59.7718443,24.64 54.7027972,24.64 L15.2972028,24.64 C10.2281557,24.64 6.11888112,20.5031111 6.11888112,15.4 C6.11888112,10.2968889 10.2281557,6.16 15.2972028,6.16 Z", id: "Shape" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M19.6340542,21.9997804 C22.2930484,22.0215224 24.7022661,20.4273668 25.7348338,17.9629544 C26.7674016,15.4985421 26.2191958,12.6510518 24.3466309,10.7523518 C22.474066,8.85365189 19.6473211,8.27908795 17.1885612,9.29740315 C14.7298014,10.3157183 13.125,12.7256064 13.125,15.3998806 C13.125,19.0240523 16.0305897,21.9703156 19.6340542,21.9997804 L19.6340542,21.9997804 Z", id: "Path" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M54.7027971,35.2 L15.2972025,35.2 C6.84879081,35.2 0,42.094815 0,50.6 C0,59.105185 6.84879081,66 15.2972025,66 L54.7027971,66 C63.151209,66 70,59.1051851 70,50.6 C70,42.0948149 63.151209,35.2 54.7027971,35.2 L54.7027971,35.2 Z M54.7027971,59.84 L15.2972025,59.84 C10.2281554,59.84 6.11888082,55.7031111 6.11888082,50.6 C6.11888082,45.4968889 10.2281554,41.36 15.2972025,41.36 L54.7027971,41.36 C59.7718442,41.36 63.8811189,45.4968889 63.8811189,50.6 C63.8811189,55.7031111 59.7718442,59.84 54.7027971,59.84 L54.7027971,59.84 Z", id: "Shape" }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M50.3659458,44.0002196 C47.7069516,43.9784776 45.2977339,45.5726332 44.2651662,48.0370456 C43.2325984,50.5014579 43.7808042,53.3489482 45.6533691,55.2476482 C47.525934,57.1463481 50.3526789,57.720912 52.8114388,56.7025969 C55.2701986,55.6842817 56.875,53.2743936 56.875,50.6001194 C56.875,46.9759477 53.9694103,44.0296844 50.3659458,44.0002196 Z", id: "Path" })))));
5015
5017
  const SvgVizColumnChart = (props2) => /* @__PURE__ */ React__namespace.createElement("svg", { width: "110px", height: "110px", viewBox: "0 0 110 110", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", ...props2 }, /* @__PURE__ */ React__namespace.createElement("g", { id: "viz_column_chart", stroke: "none", strokeWidth: 1, fill: "none", fillRule: "evenodd" }, /* @__PURE__ */ React__namespace.createElement("g", { id: "Group", transform: "translate(23.500000, 19.500000)", fill: "currentColor" }, /* @__PURE__ */ React__namespace.createElement("path", { d: "M-26.5,30.5 L35.5,30.5 C37.709139,30.5 39.5,32.290861 39.5,34.5 L39.5,35.5 C39.5,37.709139 37.709139,39.5 35.5,39.5 L-26.5,39.5 C-28.709139,39.5 -30.5,37.709139 -30.5,35.5 L-30.5,34.5 C-30.5,32.290861 -28.709139,30.5 -26.5,30.5 Z", id: "Rectangle-Copy-59", transform: "translate(4.500000, 35.000000) rotate(-90.000000) translate(-4.500000, -35.000000) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M-0.5,38.5 L45.5,38.5 C47.709139,38.5 49.5,40.290861 49.5,42.5 L49.5,43.5 C49.5,45.709139 47.709139,47.5 45.5,47.5 L-0.5,47.5 C-2.709139,47.5 -4.5,45.709139 -4.5,43.5 L-4.5,42.5 C-4.5,40.290861 -2.709139,38.5 -0.5,38.5 Z", id: "Rectangle-Copy-62", transform: "translate(22.500000, 43.000000) rotate(-90.000000) translate(-22.500000, -43.000000) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M23.5,45.5 L57.5,45.5 C59.709139,45.5 61.5,47.290861 61.5,49.5 L61.5,50.5 C61.5,52.709139 59.709139,54.5 57.5,54.5 L23.5,54.5 C21.290861,54.5 19.5,52.709139 19.5,50.5 L19.5,49.5 C19.5,47.290861 21.290861,45.5 23.5,45.5 Z", id: "Rectangle-Copy-66", transform: "translate(40.500000, 50.000000) rotate(-90.000000) translate(-40.500000, -50.000000) " }), /* @__PURE__ */ React__namespace.createElement("path", { d: "M47.5,50.5 L70.5,50.5 C72.709139,50.5 74.5,52.290861 74.5,54.5 L74.5,55.5 C74.5,57.709139 72.709139,59.5 70.5,59.5 L47.5,59.5 C45.290861,59.5 43.5,57.709139 43.5,55.5 L43.5,54.5 C43.5,52.290861 45.290861,50.5 47.5,50.5 Z", id: "Rectangle-Copy-67", transform: "translate(59.000000, 55.000000) rotate(-90.000000) translate(-59.000000, -55.000000) " }))));
@@ -5047,6 +5049,8 @@ const ICON_MAP = {
5047
5049
  check_circle: SvgCheckCircle,
5048
5050
  info: SvgInfo,
5049
5051
  error: SvgError,
5052
+ refresh: SvgRefresh,
5053
+ sidebarCollapse: SvgSidebarCollapse,
5050
5054
  // Operations
5051
5055
  aggregate: SvgInsertMeasure,
5052
5056
  dimension: SvgTypeIconString,
@@ -5113,10 +5117,10 @@ function Icon({
5113
5117
  return null;
5114
5118
  }
5115
5119
  return /* @__PURE__ */ jsxRuntime.jsx(IconComponent, {
5116
- ..._stylex.props(styles$F.main, colorVariants$3[color], SMALL_ICONS.includes(name) && styles$F.scaleUp, customStyle)
5120
+ ..._stylex.props(styles$G.main, colorVariants$3[color], SMALL_ICONS.includes(name) && styles$G.scaleUp, customStyle)
5117
5121
  });
5118
5122
  }
5119
- const styles$F = {
5123
+ const styles$G = {
5120
5124
  main: {
5121
5125
  display: "mly1rg5ohu",
5122
5126
  width: "mly1kky2od",
@@ -5189,17 +5193,17 @@ function Badge({
5189
5193
  customStyle
5190
5194
  }) {
5191
5195
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
5192
- ..._stylex.props(styles$E.main, colorVariants$2[color], customStyle),
5196
+ ..._stylex.props(styles$F.main, colorVariants$2[color], customStyle),
5193
5197
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
5194
5198
  color,
5195
5199
  name: icon
5196
5200
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
5197
- ..._stylex.props(fontStyles.badge, styles$E.label),
5201
+ ..._stylex.props(fontStyles.badge, styles$F.label),
5198
5202
  children: label
5199
5203
  })]
5200
5204
  });
5201
5205
  }
5202
- const styles$E = {
5206
+ const styles$F = {
5203
5207
  main: {
5204
5208
  display: "mly3nfvp2",
5205
5209
  height: "mly1qx5ct2",
@@ -5281,10 +5285,10 @@ function Divider({
5281
5285
  customStyle
5282
5286
  }) {
5283
5287
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
5284
- ..._stylex.props(styles$D.main, orientationVariants[orientation], customStyle)
5288
+ ..._stylex.props(styles$E.main, orientationVariants[orientation], customStyle)
5285
5289
  });
5286
5290
  }
5287
- const styles$D = {
5291
+ const styles$E = {
5288
5292
  main: {
5289
5293
  background: "mly1xnbgy5",
5290
5294
  backgroundAttachment: null,
@@ -5337,7 +5341,7 @@ function ListItem({
5337
5341
  children: [startIcon && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
5338
5342
  children: startIcon
5339
5343
  }), /* @__PURE__ */ jsxRuntime.jsx("span", {
5340
- ..._stylex.props(fontStyles.body, styles$C.label),
5344
+ ..._stylex.props(fontStyles.body, styles$D.label),
5341
5345
  children: label
5342
5346
  }), badge && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
5343
5347
  children: badge
@@ -5346,7 +5350,7 @@ function ListItem({
5346
5350
  })]
5347
5351
  });
5348
5352
  }
5349
- const styles$C = {
5353
+ const styles$D = {
5350
5354
  label: {
5351
5355
  flexGrow: "mly1iyjqo2",
5352
5356
  $$css: true
@@ -6121,7 +6125,7 @@ function Button({
6121
6125
  ...props2
6122
6126
  }) {
6123
6127
  const button = /* @__PURE__ */ jsxRuntime.jsxs("button", {
6124
- ..._stylex.props(styles$B.main, colorVariants$1[variant], sizeVariants$1[size2], customStyle),
6128
+ ..._stylex.props(styles$C.main, colorVariants$1[variant], sizeVariants$1[size2], customStyle),
6125
6129
  ...onClick && {
6126
6130
  onClick: (e) => {
6127
6131
  e.preventDefault();
@@ -6137,9 +6141,9 @@ function Button({
6137
6141
  },
6138
6142
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
6139
6143
  name: icon,
6140
- customStyle: styles$B.icon
6144
+ customStyle: styles$C.icon
6141
6145
  }), label && /* @__PURE__ */ jsxRuntime.jsx("div", {
6142
- ..._stylex.props(variant === "primary" ? fontStyles.emphasized : fontStyles.body, styles$B.label),
6146
+ ..._stylex.props(variant === "primary" ? fontStyles.emphasized : fontStyles.body, styles$C.label),
6143
6147
  children: label
6144
6148
  })]
6145
6149
  }), isDisabled && /* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -6166,7 +6170,7 @@ function Button({
6166
6170
  return button;
6167
6171
  }
6168
6172
  }
6169
- const styles$B = {
6173
+ const styles$C = {
6170
6174
  main: {
6171
6175
  display: "mly3nfvp2",
6172
6176
  flexDirection: "mlydt5ytf",
@@ -6288,7 +6292,8 @@ const sizeVariants$1 = {
6288
6292
  };
6289
6293
  const tokenStyles = {
6290
6294
  main: {
6291
- display: "mly78zum5",
6295
+ display: "mlywz0xwf",
6296
+ gridAutoFlow: "mly1mt1orb",
6292
6297
  alignItems: "mly6s0dn4",
6293
6298
  justifyContent: "mlyl56j7k",
6294
6299
  gap: "mly167g77z",
@@ -6345,6 +6350,7 @@ const tokenStyles = {
6345
6350
  overflow: "mlyb3r6kr",
6346
6351
  overflowX: null,
6347
6352
  overflowY: null,
6353
+ whiteSpace: "mlyuxw1ft",
6348
6354
  $$css: true
6349
6355
  }
6350
6356
  };
@@ -6413,7 +6419,7 @@ function Token({
6413
6419
  }) {
6414
6420
  const isInteractive = onClick !== void 0 || asButtonTrigger;
6415
6421
  const token2 = /* @__PURE__ */ jsxRuntime.jsxs("div", {
6416
- ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], !isInteractive && styles$A.nonInteractive, customStyle),
6422
+ ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], !isInteractive && styles$B.nonInteractive, customStyle),
6417
6423
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
6418
6424
  name: icon,
6419
6425
  customStyle: tokenStyles.icon
@@ -6448,7 +6454,7 @@ function Token({
6448
6454
  })]
6449
6455
  }) : token2;
6450
6456
  }
6451
- const styles$A = {
6457
+ const styles$B = {
6452
6458
  nonInteractive: {
6453
6459
  cursor: "mlyt0e3qv",
6454
6460
  background: "mly1np9qvj",
@@ -6472,7 +6478,7 @@ function TokenGroup({
6472
6478
  }) {
6473
6479
  const count2 = React__namespace.Children.count(children);
6474
6480
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
6475
- ..._stylex.props(styles$z.main, customStyle),
6481
+ ..._stylex.props(styles$A.main, customStyle),
6476
6482
  children: React__namespace.Children.map(children, (child, index2) => /* @__PURE__ */ React__namespace.cloneElement(child, {
6477
6483
  customStyle: {
6478
6484
  ...child.props.customStyle,
@@ -6483,16 +6489,16 @@ function TokenGroup({
6483
6489
  });
6484
6490
  }
6485
6491
  const getChildStyle = (index2, count2) => {
6486
- if (count2 === 1) return styles$z.onlyChild;
6487
- if (index2 === 0) return styles$z.firstChild;
6488
- if (index2 === count2 - 1) return styles$z.lastChild;
6489
- return styles$z.innerChild;
6492
+ if (count2 === 1) return styles$A.onlyChild;
6493
+ if (index2 === 0) return styles$A.firstChild;
6494
+ if (index2 === count2 - 1) return styles$A.lastChild;
6495
+ return styles$A.innerChild;
6490
6496
  };
6491
6497
  const getTokenColor = (child, groupColor) => {
6492
6498
  const childColor = child.props.color;
6493
6499
  return childColor === void 0 ? groupColor : childColor;
6494
6500
  };
6495
- const styles$z = {
6501
+ const styles$A = {
6496
6502
  main: {
6497
6503
  display: "mlyrvj5dj",
6498
6504
  gridAutoFlow: "mly1mt1orb",
@@ -6564,7 +6570,7 @@ function ErrorIcon({
6564
6570
  },
6565
6571
  children: /* @__PURE__ */ jsxRuntime.jsx(Icon, {
6566
6572
  name: "warning",
6567
- customStyle: styles$y.errorIcon
6573
+ customStyle: styles$z.errorIcon
6568
6574
  })
6569
6575
  })
6570
6576
  }), /* @__PURE__ */ jsxRuntime.jsx(TooltipPortal, {
@@ -6577,7 +6583,7 @@ function ErrorIcon({
6577
6583
  })]
6578
6584
  });
6579
6585
  }
6580
- const styles$y = {
6586
+ const styles$z = {
6581
6587
  errorIcon: {
6582
6588
  color: "mly1e2nbdu",
6583
6589
  $$css: true
@@ -6622,22 +6628,22 @@ function EditableToken({
6622
6628
  className: "mly78zum5 mly6s0dn4"
6623
6629
  },
6624
6630
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
6625
- ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], isFocused && styles$x.focused, !!errorMessage && styles$x.hasError, customStyle),
6631
+ ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], isFocused && styles$y.focused, !!errorMessage && styles$y.hasError, customStyle),
6626
6632
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
6627
6633
  name: icon,
6628
- customStyle: styles$x.icon
6634
+ customStyle: styles$y.icon
6629
6635
  }), /* @__PURE__ */ jsxRuntime.jsxs("span", {
6630
6636
  ...{
6631
6637
  className: "mlywz0xwf"
6632
6638
  },
6633
6639
  children: [/* @__PURE__ */ jsxRuntime.jsx("span", {
6634
- ..._stylex.props(fontStyles.body, styles$x.placeholder),
6640
+ ..._stylex.props(fontStyles.body, styles$y.placeholder),
6635
6641
  style: {
6636
6642
  whiteSpaceCollapse: "preserve"
6637
6643
  },
6638
6644
  children: value
6639
6645
  }), /* @__PURE__ */ jsxRuntime.jsx("input", {
6640
- ..._stylex.props(styles$x.input, fontStyles.body),
6646
+ ..._stylex.props(styles$y.input, fontStyles.body),
6641
6647
  ref: inputRef,
6642
6648
  pattern: type === "number" ? "^-?[0-9.]*$" : void 0,
6643
6649
  value,
@@ -6662,7 +6668,7 @@ function EditableToken({
6662
6668
  })]
6663
6669
  });
6664
6670
  }
6665
- const styles$x = {
6671
+ const styles$y = {
6666
6672
  focused: {
6667
6673
  background: "mlyotlr4g",
6668
6674
  backgroundAttachment: null,
@@ -8006,12 +8012,12 @@ function TextInput({
8006
8012
  }
8007
8013
  };
8008
8014
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
8009
- ..._stylex.props(styles$w.main, isFocused && styles$w.focused, sizeVariants[size2], customStyle),
8015
+ ..._stylex.props(styles$x.main, isFocused && styles$x.focused, sizeVariants[size2], customStyle),
8010
8016
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
8011
8017
  name: icon,
8012
8018
  color: "secondary"
8013
8019
  }), /* @__PURE__ */ jsxRuntime.jsx("input", {
8014
- ..._stylex.props(fontStyles.body, styles$w.input),
8020
+ ..._stylex.props(fontStyles.body, styles$x.input),
8015
8021
  value,
8016
8022
  placeholder,
8017
8023
  onChange: handleChange,
@@ -8019,7 +8025,7 @@ function TextInput({
8019
8025
  onBlur: handleBlur,
8020
8026
  onKeyDown
8021
8027
  }), hasClear && /* @__PURE__ */ jsxRuntime.jsx("button", {
8022
- ..._stylex.props(fontStyles.supporting, styles$w.actionButton, value === "" && styles$w.hidden),
8028
+ ..._stylex.props(fontStyles.supporting, styles$x.actionButton, value === "" && styles$x.hidden),
8023
8029
  ref: buttonRef,
8024
8030
  onClick: () => onChange(""),
8025
8031
  tabIndex: 0,
@@ -8027,7 +8033,7 @@ function TextInput({
8027
8033
  })]
8028
8034
  });
8029
8035
  }
8030
- const styles$w = {
8036
+ const styles$x = {
8031
8037
  main: {
8032
8038
  display: "mly78zum5",
8033
8039
  alignItems: "mly6s0dn4",
@@ -8236,7 +8242,7 @@ function SelectorToken({
8236
8242
  onValueChange: handleValueChange,
8237
8243
  required: true,
8238
8244
  children: [/* @__PURE__ */ jsxRuntime.jsxs(Trigger$3, {
8239
- ..._stylex.props(tokenStyles.main, styles$v.selectTrigger, tokenColorVariants[color], tokenSizeVariants[size2], fontStyles.body, tokenStyles.label, customStyle),
8245
+ ..._stylex.props(tokenStyles.main, styles$w.selectTrigger, tokenColorVariants[color], tokenSizeVariants[size2], fontStyles.body, tokenStyles.label, customStyle),
8240
8246
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
8241
8247
  name: icon,
8242
8248
  customStyle: tokenStyles.icon
@@ -8265,7 +8271,7 @@ function SelectorToken({
8265
8271
  size: "compact",
8266
8272
  icon: "search",
8267
8273
  hasClear: true,
8268
- customStyle: styles$v.searchInput,
8274
+ customStyle: styles$w.searchInput,
8269
8275
  onKeyDown: (event) => {
8270
8276
  const excludedKeys = ["ArrowUp", "ArrowDown"];
8271
8277
  if (!excludedKeys.includes(event.key)) {
@@ -8298,21 +8304,21 @@ function SelectItem({
8298
8304
  ...props2
8299
8305
  }) {
8300
8306
  return /* @__PURE__ */ jsxRuntime.jsxs(Item$1, {
8301
- ..._stylex.props(fontStyles.body, styles$v.selectItem),
8307
+ ..._stylex.props(fontStyles.body, styles$w.selectItem),
8302
8308
  value,
8303
8309
  ...props2,
8304
8310
  children: [value === selectedValue ? /* @__PURE__ */ jsxRuntime.jsx(Icon, {
8305
8311
  name: "radioChecked",
8306
- customStyle: styles$v.radioChecked
8312
+ customStyle: styles$w.radioChecked
8307
8313
  }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, {
8308
8314
  name: "radioUnchecked",
8309
- customStyle: styles$v.radioUnchecked
8315
+ customStyle: styles$w.radioUnchecked
8310
8316
  }), /* @__PURE__ */ jsxRuntime.jsx(ItemText, {
8311
8317
  children
8312
8318
  })]
8313
8319
  });
8314
8320
  }
8315
- const styles$v = {
8321
+ const styles$w = {
8316
8322
  selectTrigger: {
8317
8323
  whiteSpace: "mlyuxw1ft",
8318
8324
  overflow: "mlyb3r6kr",
@@ -8402,7 +8408,7 @@ function Card({
8402
8408
  customStyle
8403
8409
  }) {
8404
8410
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
8405
- ..._stylex.props(styles$u.container, customStyle),
8411
+ ..._stylex.props(styles$v.container, customStyle),
8406
8412
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
8407
8413
  ...{
8408
8414
  className: "mly1717udv"
@@ -8416,7 +8422,7 @@ function Card({
8416
8422
  })]
8417
8423
  });
8418
8424
  }
8419
- const styles$u = {
8425
+ const styles$v = {
8420
8426
  container: {
8421
8427
  display: "mly78zum5",
8422
8428
  flexDirection: "mlydt5ytf",
@@ -8507,10 +8513,10 @@ function CollapsibleListItem({
8507
8513
  className: "mly78zum5 mlydt5ytf mly1iyjqo2 mlyb3r6kr"
8508
8514
  },
8509
8515
  children: [/* @__PURE__ */ jsxRuntime.jsx("span", {
8510
- ..._stylex.props(fontStyles.body, styles$t.label),
8516
+ ..._stylex.props(fontStyles.body, styles$u.label),
8511
8517
  children: label
8512
8518
  }), sublabel && /* @__PURE__ */ jsxRuntime.jsx("span", {
8513
- ..._stylex.props(fontStyles.supporting, styles$t.sublabel),
8519
+ ..._stylex.props(fontStyles.supporting, styles$u.sublabel),
8514
8520
  children: sublabel
8515
8521
  })]
8516
8522
  })]
@@ -8522,7 +8528,7 @@ function CollapsibleListItem({
8522
8528
  })]
8523
8529
  });
8524
8530
  }
8525
- const styles$t = {
8531
+ const styles$u = {
8526
8532
  label: {
8527
8533
  flexGrow: "mly1iyjqo2",
8528
8534
  fontWeight: "mly1xlr1w8",
@@ -19332,7 +19338,7 @@ function Spinner({
19332
19338
  } = SIZES[size2];
19333
19339
  const frameSize = diameter + border * 2;
19334
19340
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
19335
- ..._stylex.props(styles$s.root, customStyle),
19341
+ ..._stylex.props(styles$t.root, customStyle),
19336
19342
  children: /* @__PURE__ */ jsxRuntime.jsx("span", {
19337
19343
  "aria-valuetext": "Loading",
19338
19344
  ...{
@@ -19352,7 +19358,7 @@ function Spinner({
19352
19358
  })
19353
19359
  });
19354
19360
  }
19355
- const styles$s = {
19361
+ const styles$t = {
19356
19362
  root: {
19357
19363
  alignItems: "mly6s0dn4",
19358
19364
  display: "mly3nfvp2",
@@ -23751,7 +23757,7 @@ const Popover = ({
23751
23757
  })
23752
23758
  });
23753
23759
  };
23754
- const styles$r = {
23760
+ const styles$s = {
23755
23761
  wrapper: {
23756
23762
  position: "mly1n2onr6",
23757
23763
  $$css: true
@@ -23802,7 +23808,7 @@ const SelectDropdown = ({
23802
23808
  setOpen(false);
23803
23809
  };
23804
23810
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
23805
- ..._stylex.props(styles$r.wrapper, customStyle),
23811
+ ..._stylex.props(styles$s.wrapper, customStyle),
23806
23812
  children: [/* @__PURE__ */ jsxRuntime.jsxs("button", {
23807
23813
  type: "button",
23808
23814
  autoFocus,
@@ -23869,7 +23875,7 @@ function SelectList({
23869
23875
  }) {
23870
23876
  const [hoveredIndex, setHoveredIndex] = React.useState(null);
23871
23877
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
23872
- ..._stylex.props(styles$r.selectListDiv, customStyle),
23878
+ ..._stylex.props(styles$s.selectListDiv, customStyle),
23873
23879
  children: options.reduce((result, option2, index2) => {
23874
23880
  const isSelected = value !== void 0 && valueEqual(value, option2.value);
23875
23881
  if (option2.divider) {
@@ -23901,8 +23907,8 @@ function SelectList({
23901
23907
  }), /* @__PURE__ */ jsxRuntime.jsx(Icon, {
23902
23908
  name: "checkmark",
23903
23909
  customStyle: {
23904
- ...styles$r.checkIcon,
23905
- ...isSelected ? styles$r.checkIconSelected : void 0
23910
+ ...styles$s.checkIcon,
23911
+ ...isSelected ? styles$s.checkIconSelected : void 0
23906
23912
  }
23907
23913
  }), /* @__PURE__ */ jsxRuntime.jsx("span", {
23908
23914
  ...{
@@ -24012,7 +24018,7 @@ function DatePicker({
24012
24018
  });
24013
24019
  };
24014
24020
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
24015
- ..._stylex.props(styles$q.outer, customStyle),
24021
+ ..._stylex.props(styles$r.outer, customStyle),
24016
24022
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
24017
24023
  ...{
24018
24024
  className: "mly78zum5 mly1q0g3np mly1qughib mly1nejdyq mlyu06os2"
@@ -24327,7 +24333,7 @@ function DatePicker({
24327
24333
  })]
24328
24334
  });
24329
24335
  }
24330
- const styles$q = {
24336
+ const styles$r = {
24331
24337
  outer: {
24332
24338
  userSelect: "mly87ps6o",
24333
24339
  fontSize: "mlymhiqyu",
@@ -24413,7 +24419,7 @@ function Banner({
24413
24419
  className: "mly1q4ynmn mlyh8yej3 mly5yr21d mly78zum5 mlydt5ytf mly1kmqopl mly16zck5j"
24414
24420
  },
24415
24421
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
24416
- ..._stylex.props(styles$p.header, variantColors[variant], children ? styles$p.headerWithContent : null),
24422
+ ..._stylex.props(styles$q.header, variantColors[variant], children ? styles$q.headerWithContent : null),
24417
24423
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
24418
24424
  ...{
24419
24425
  className: "mly1qx5ct2 mly78zum5 mlyl56j7k mly6s0dn4"
@@ -24426,22 +24432,22 @@ function Banner({
24426
24432
  className: "mly78zum5 mlydt5ytf mlyb3r6kr"
24427
24433
  },
24428
24434
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
24429
- ..._stylex.props(styles$p.title, fontStyles.emphasized),
24435
+ ..._stylex.props(styles$q.title, fontStyles.emphasized),
24430
24436
  children: title
24431
24437
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
24432
- ..._stylex.props(styles$p.description, fontStyles.supporting),
24438
+ ..._stylex.props(styles$q.description, fontStyles.supporting),
24433
24439
  children: description
24434
24440
  })]
24435
24441
  })]
24436
24442
  }), children && /* @__PURE__ */ jsxRuntime.jsx("div", {
24437
- ..._stylex.props(styles$p.content, fontStyles.body),
24443
+ ..._stylex.props(styles$q.content, fontStyles.body),
24438
24444
  children: /* @__PURE__ */ jsxRuntime.jsx(ScrollableArea, {
24439
24445
  children
24440
24446
  })
24441
24447
  })]
24442
24448
  });
24443
24449
  }
24444
- const styles$p = {
24450
+ const styles$q = {
24445
24451
  header: {
24446
24452
  borderRadius: "mly1q4ynmn",
24447
24453
  borderStartStartRadius: null,
@@ -25876,7 +25882,7 @@ function DropdownMenu({
25876
25882
  children: trigger
25877
25883
  }), /* @__PURE__ */ jsxRuntime.jsx(Portal2, {
25878
25884
  children: /* @__PURE__ */ jsxRuntime.jsx(Content2, {
25879
- ..._stylex.props(fontStyles.body, styles$o.content),
25885
+ ..._stylex.props(fontStyles.body, styles$p.content),
25880
25886
  side: "bottom",
25881
25887
  align: "start",
25882
25888
  sideOffset: 4,
@@ -25903,16 +25909,16 @@ function DropdownMenuItem({
25903
25909
  disabled,
25904
25910
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
25905
25911
  name: icon,
25906
- customStyle: styles$o.icon
25912
+ customStyle: styles$p.icon
25907
25913
  }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
25908
25914
  ...{
25909
25915
  className: "mly78zum5 mlydt5ytf mly1iyjqo2"
25910
25916
  },
25911
25917
  children: [/* @__PURE__ */ jsxRuntime.jsx("span", {
25912
- ..._stylex.props(fontStyles.body, styles$o.label),
25918
+ ..._stylex.props(fontStyles.body, styles$p.label),
25913
25919
  children: label
25914
25920
  }), sublabel && /* @__PURE__ */ jsxRuntime.jsx("span", {
25915
- ..._stylex.props(fontStyles.supporting, styles$o.sublabel),
25921
+ ..._stylex.props(fontStyles.supporting, styles$p.sublabel),
25916
25922
  children: sublabel
25917
25923
  })]
25918
25924
  })]
@@ -25933,21 +25939,21 @@ function DropdownSubMenuItem({
25933
25939
  disabled,
25934
25940
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
25935
25941
  name: icon,
25936
- customStyle: styles$o.icon
25942
+ customStyle: styles$p.icon
25937
25943
  }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
25938
25944
  ...{
25939
25945
  className: "mly78zum5 mlydt5ytf mly1iyjqo2"
25940
25946
  },
25941
25947
  children: [/* @__PURE__ */ jsxRuntime.jsx("span", {
25942
- ..._stylex.props(fontStyles.body, styles$o.label),
25948
+ ..._stylex.props(fontStyles.body, styles$p.label),
25943
25949
  children: label
25944
25950
  }), sublabel && /* @__PURE__ */ jsxRuntime.jsx("span", {
25945
- ..._stylex.props(fontStyles.supporting, styles$o.sublabel),
25951
+ ..._stylex.props(fontStyles.supporting, styles$p.sublabel),
25946
25952
  children: sublabel
25947
25953
  })]
25948
25954
  }), /* @__PURE__ */ jsxRuntime.jsx(Icon, {
25949
25955
  name: "chevronRight",
25950
- customStyle: styles$o.icon
25956
+ customStyle: styles$p.icon
25951
25957
  })]
25952
25958
  }), /* @__PURE__ */ jsxRuntime.jsx(SubContent2, {
25953
25959
  ...{
@@ -25962,11 +25968,11 @@ function DropdownMenuLabel({
25962
25968
  label
25963
25969
  }) {
25964
25970
  return /* @__PURE__ */ jsxRuntime.jsx(Label2, {
25965
- ..._stylex.props(fontStyles.supporting, styles$o.menuLabel),
25971
+ ..._stylex.props(fontStyles.supporting, styles$p.menuLabel),
25966
25972
  children: label
25967
25973
  });
25968
25974
  }
25969
- const styles$o = {
25975
+ const styles$p = {
25970
25976
  content: {
25971
25977
  display: "mly78zum5",
25972
25978
  flexDirection: "mlydt5ytf",
@@ -26075,6 +26081,76 @@ const filterStyles = {
26075
26081
  rowGap: null,
26076
26082
  columnGap: null,
26077
26083
  $$css: true
26084
+ },
26085
+ editor: {
26086
+ width: "mlyxsgkw5",
26087
+ display: "mly78zum5",
26088
+ flexDirection: "mlydt5ytf",
26089
+ gap: "mly167g77z",
26090
+ rowGap: null,
26091
+ columnGap: null,
26092
+ $$css: true
26093
+ },
26094
+ editorRow: {
26095
+ display: "mly78zum5",
26096
+ gap: "mly167g77z",
26097
+ rowGap: null,
26098
+ columnGap: null,
26099
+ $$css: true
26100
+ },
26101
+ editorCell: {
26102
+ flexGrow: "mly1iyjqo2",
26103
+ $$css: true
26104
+ },
26105
+ input: {
26106
+ border: "mly2yh2zd",
26107
+ borderWidth: null,
26108
+ borderInlineWidth: null,
26109
+ borderInlineStartWidth: null,
26110
+ borderLeftWidth: null,
26111
+ borderInlineEndWidth: null,
26112
+ borderRightWidth: null,
26113
+ borderBlockWidth: null,
26114
+ borderTopWidth: null,
26115
+ borderBottomWidth: null,
26116
+ borderStyle: null,
26117
+ borderInlineStyle: null,
26118
+ borderInlineStartStyle: null,
26119
+ borderLeftStyle: null,
26120
+ borderInlineEndStyle: null,
26121
+ borderRightStyle: null,
26122
+ borderBlockStyle: null,
26123
+ borderTopStyle: null,
26124
+ borderBottomStyle: null,
26125
+ borderColor: null,
26126
+ borderInlineColor: null,
26127
+ borderInlineStartColor: null,
26128
+ borderLeftColor: null,
26129
+ borderInlineEndColor: null,
26130
+ borderRightColor: null,
26131
+ borderBlockColor: null,
26132
+ borderTopColor: null,
26133
+ borderBottomColor: null,
26134
+ color: "mlyizdh9v",
26135
+ padding: "mly9cpjcd",
26136
+ paddingInline: null,
26137
+ paddingStart: null,
26138
+ paddingLeft: null,
26139
+ paddingEnd: null,
26140
+ paddingRight: null,
26141
+ paddingBlock: null,
26142
+ paddingTop: null,
26143
+ paddingBottom: null,
26144
+ borderRadius: "mly1sxf85j",
26145
+ borderStartStartRadius: null,
26146
+ borderStartEndRadius: null,
26147
+ borderEndStartRadius: null,
26148
+ borderEndEndRadius: null,
26149
+ borderTopLeftRadius: null,
26150
+ borderTopRightRadius: null,
26151
+ borderBottomLeftRadius: null,
26152
+ borderBottomRightRadius: null,
26153
+ $$css: true
26078
26154
  }
26079
26155
  };
26080
26156
  function typeFromFilter$3(filter) {
@@ -26097,7 +26173,8 @@ function BooleanFilterCore({
26097
26173
  };
26098
26174
  setFilter(filter2);
26099
26175
  };
26100
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
26176
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
26177
+ ..._stylex.props(filterStyles.editor),
26101
26178
  children: /* @__PURE__ */ jsxRuntime.jsx(SelectDropdown, {
26102
26179
  value: type,
26103
26180
  onChange: onChangeType,
@@ -26226,7 +26303,7 @@ const PillInput = ({
26226
26303
  }
26227
26304
  };
26228
26305
  const commitValue = () => {
26229
- if (value.length > 0) {
26306
+ if (value.length > 0 && !values.includes(value)) {
26230
26307
  setValues([...values, value]);
26231
26308
  setValue("");
26232
26309
  }
@@ -26236,7 +26313,7 @@ const PillInput = ({
26236
26313
  commitValue();
26237
26314
  });
26238
26315
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
26239
- ..._stylex.props(styles$n.outer, customStyle),
26316
+ ..._stylex.props(styles$o.outer, customStyle),
26240
26317
  onKeyUp,
26241
26318
  onClick: () => {
26242
26319
  var _a2;
@@ -26301,7 +26378,7 @@ const Pill = ({
26301
26378
  onClick,
26302
26379
  tabIndex: 0,
26303
26380
  ref: forwardRef,
26304
- ..._stylex.props(styles$n.pill, colorVariants[color]),
26381
+ ..._stylex.props(styles$o.pill, colorVariants[color]),
26305
26382
  children: [children, /* @__PURE__ */ jsxRuntime.jsx("div", {
26306
26383
  title: "Remove",
26307
26384
  ...{
@@ -26316,7 +26393,7 @@ const Pill = ({
26316
26393
  })]
26317
26394
  });
26318
26395
  };
26319
- const styles$n = {
26396
+ const styles$o = {
26320
26397
  outer: {
26321
26398
  fontFamily: "mly6icuqf",
26322
26399
  fontSize: "mlyif65rj",
@@ -26582,7 +26659,7 @@ function ValueList({
26582
26659
  children: (stringSearchResults == null ? void 0 : stringSearchResults.length) ? stringSearchResults.map((value) => /* @__PURE__ */ jsxRuntime.jsxs("div", {
26583
26660
  role: "menuitem",
26584
26661
  tabIndex: -1,
26585
- ..._stylex.props(addMenuStyles.item, styles$m.valueItem),
26662
+ ..._stylex.props(addMenuStyles.item, styles$n.valueItem),
26586
26663
  onClick: () => onClick(value),
26587
26664
  children: [/* @__PURE__ */ jsxRuntime.jsx(Value, {
26588
26665
  value
@@ -26606,10 +26683,10 @@ function Value({
26606
26683
  label: value.fieldValue ?? "∅",
26607
26684
  icon: "filter",
26608
26685
  color: "purple",
26609
- customStyle: styles$m.token
26686
+ customStyle: styles$n.token
26610
26687
  });
26611
26688
  }
26612
- const styles$m = {
26689
+ const styles$n = {
26613
26690
  valueItem: {
26614
26691
  height: "mly1qx5ct2",
26615
26692
  paddingTop: "mly1y1aw1k",
@@ -26708,7 +26785,8 @@ const StringFilterCore = ({
26708
26785
  setCurrentFilter(newFilter);
26709
26786
  setFilter(newFilter);
26710
26787
  };
26711
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
26788
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
26789
+ ..._stylex.props(filterStyles.editor),
26712
26790
  children: [/* @__PURE__ */ jsxRuntime.jsx(SelectDropdown, {
26713
26791
  value: type,
26714
26792
  onChange: changeType,
@@ -26779,7 +26857,7 @@ const StringFilterCore = ({
26779
26857
  setSearchValue("");
26780
26858
  }
26781
26859
  },
26782
- customStyle: styles$l.valueList
26860
+ customStyle: styles$m.valueList
26783
26861
  })]
26784
26862
  }) : currentFilter.operator === "~" ? /* @__PURE__ */ jsxRuntime.jsx(StringEditor, {
26785
26863
  values: currentFilter.escaped_values,
@@ -26846,7 +26924,7 @@ function stringFilterChangeType(filter, type) {
26846
26924
  };
26847
26925
  }
26848
26926
  }
26849
- const styles$l = {
26927
+ const styles$m = {
26850
26928
  valueList: {
26851
26929
  maxHeight: "mly1hkcv85",
26852
26930
  overflow: "mlyysyzu8",
@@ -26855,6 +26933,9 @@ const styles$l = {
26855
26933
  $$css: true
26856
26934
  }
26857
26935
  };
26936
+ const isRangeOperator = (operator) => {
26937
+ return operator === "range";
26938
+ };
26858
26939
  const NumberFilterFragments = {
26859
26940
  is_equal_to: {
26860
26941
  operator: "="
@@ -26875,7 +26956,11 @@ const NumberFilterFragments = {
26875
26956
  is_less_than_or_equal_to: {
26876
26957
  operator: "<="
26877
26958
  },
26878
- // is_between: {operator: 'to'},
26959
+ is_between: {
26960
+ operator: "range",
26961
+ startOperator: ">=",
26962
+ endOperator: "<="
26963
+ },
26879
26964
  is_null: {
26880
26965
  operator: "null"
26881
26966
  },
@@ -26904,7 +26989,7 @@ const NumberFilterCore = ({
26904
26989
  operator: "=",
26905
26990
  values: []
26906
26991
  });
26907
- const [innerValues, setInnerValues] = React.useState(["0"]);
26992
+ const [innerValues, setInnerValues] = React.useState(isRangeOperator(filter.operator) ? ["0", "0"] : ["0"]);
26908
26993
  const [errorMessage, setErrorMessage] = React.useState("");
26909
26994
  const changeType = (type2) => {
26910
26995
  const maybeNumberCondition = filter;
@@ -26918,19 +27003,23 @@ const NumberFilterCore = ({
26918
27003
  const type = typeFromFilter$1(filter);
26919
27004
  React.useEffect(() => {
26920
27005
  setErrorMessage("");
26921
- const maybeNumberCondition = filter;
26922
- if (maybeNumberCondition.values) {
26923
- let values = maybeNumberCondition.values;
26924
- if (!values || values.length === 0) {
26925
- values = ["0"];
26926
- }
26927
- setInnerValues(values);
27006
+ if (isRangeOperator(filter.operator)) {
27007
+ const numberRange = filter;
27008
+ setInnerValues([numberRange.startValue, numberRange.endValue]);
26928
27009
  } else {
26929
- setInnerValues(["0"]);
27010
+ const maybeNumberCondition = filter;
27011
+ if (maybeNumberCondition.values) {
27012
+ let values = maybeNumberCondition.values;
27013
+ if (!values || values.length === 0) {
27014
+ values = ["0"];
27015
+ }
27016
+ setInnerValues(values);
27017
+ } else {
27018
+ setInnerValues(["0"]);
27019
+ }
26930
27020
  }
26931
27021
  }, [filter]);
26932
27022
  const validateAndUpdateValues = (values) => {
26933
- const numberCondition = filter;
26934
27023
  setInnerValues(values);
26935
27024
  const hasInvalidValues = values.some((v2) => {
26936
27025
  return isNaN(parseFloat(v2));
@@ -26941,10 +27030,22 @@ const NumberFilterCore = ({
26941
27030
  setErrorMessage("Requires at least one numeric value.");
26942
27031
  } else {
26943
27032
  setErrorMessage("");
26944
- setFilter({
26945
- ...numberCondition,
26946
- values
26947
- });
27033
+ if (filter.operator === "range") {
27034
+ const numberCondition = filter;
27035
+ setFilter({
27036
+ ...numberCondition,
27037
+ startOperator: ">=",
27038
+ startValue: values[0],
27039
+ endOperator: "<=",
27040
+ endValue: values[1]
27041
+ });
27042
+ } else {
27043
+ const numberCondition = filter;
27044
+ setFilter({
27045
+ ...numberCondition,
27046
+ values
27047
+ });
27048
+ }
26948
27049
  }
26949
27050
  };
26950
27051
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -26969,6 +27070,9 @@ const NumberFilterCore = ({
26969
27070
  }, {
26970
27071
  value: "is_less_than_or_equal_to",
26971
27072
  label: "is less than or equal to"
27073
+ }, {
27074
+ value: "is_between",
27075
+ label: "between"
26972
27076
  }, {
26973
27077
  value: "is_null",
26974
27078
  label: "is null"
@@ -26999,6 +27103,23 @@ function getEditor(filter, innerValues, validateAndUpdateValues) {
26999
27103
  setValue: (value) => validateAndUpdateValues([value]),
27000
27104
  type: "number"
27001
27105
  });
27106
+ case "range":
27107
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
27108
+ ...{
27109
+ className: "mlyrvj5dj mly15396mt mly167g77z mlypqajaz"
27110
+ },
27111
+ children: [/* @__PURE__ */ jsxRuntime.jsx(SingleNumberEditor, {
27112
+ value: innerValues[0],
27113
+ setValue: (value) => validateAndUpdateValues([value, innerValues[1]]),
27114
+ type: "number"
27115
+ }), /* @__PURE__ */ jsxRuntime.jsx("span", {
27116
+ children: "to"
27117
+ }), /* @__PURE__ */ jsxRuntime.jsx(SingleNumberEditor, {
27118
+ value: innerValues[1],
27119
+ setValue: (value) => validateAndUpdateValues([innerValues[0], value]),
27120
+ type: "number"
27121
+ })]
27122
+ });
27002
27123
  }
27003
27124
  return null;
27004
27125
  }
@@ -27049,6 +27170,12 @@ function makeFilterWithNewType(filter, type) {
27049
27170
  return {
27050
27171
  ...NumberFilterFragments[type]
27051
27172
  };
27173
+ case "is_between":
27174
+ return {
27175
+ ...NumberFilterFragments[type],
27176
+ startValue: values.length > 0 ? values[0] : "0",
27177
+ endValue: values.length > 1 ? values[1] : "0"
27178
+ };
27052
27179
  }
27053
27180
  }
27054
27181
  const formats = {
@@ -27088,7 +27215,7 @@ const DateInput = ({
27088
27215
  setTempValue(hooks(value).format(format2));
27089
27216
  }, [value, format2]);
27090
27217
  return /* @__PURE__ */ jsxRuntime.jsx("input", {
27091
- ..._stylex.props(customStyle, isActive ? styles$k.active : null),
27218
+ ..._stylex.props(customStyle, isActive ? styles$l.active : null),
27092
27219
  type: "text",
27093
27220
  placeholder: placeholder || format2,
27094
27221
  value: tempValue,
@@ -27122,7 +27249,7 @@ function guessUnits(moment2, isDateTime) {
27122
27249
  }
27123
27250
  return isDateTime ? "second" : "day";
27124
27251
  }
27125
- const styles$k = {
27252
+ const styles$l = {
27126
27253
  active: {
27127
27254
  backgroundColor: "mly1vzefiq",
27128
27255
  $$css: true
@@ -27170,13 +27297,9 @@ const DateTimeFilterCore = ({
27170
27297
  const maxLevel = isDateTime ? "second" : "day";
27171
27298
  const type = typeFromFilter(currentFilter);
27172
27299
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
27173
- ...{
27174
- className: "mlyxsgkw5 mly78zum5 mlydt5ytf mly167g77z"
27175
- },
27300
+ ..._stylex.props(filterStyles.editor),
27176
27301
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
27177
- ...{
27178
- className: "mly78zum5 mly167g77z"
27179
- },
27302
+ ..._stylex.props(filterStyles.editorRow),
27180
27303
  children: [/* @__PURE__ */ jsxRuntime.jsx(SelectDropdown, {
27181
27304
  value: type,
27182
27305
  onChange: changeType,
@@ -27205,7 +27328,7 @@ const DateTimeFilterCore = ({
27205
27328
  value: "-null",
27206
27329
  label: "not null"
27207
27330
  }],
27208
- customStyle: styles$j.editorCell
27331
+ customStyle: filterStyles.editorCell
27209
27332
  }), getTopEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel)]
27210
27333
  }), getBottomEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel)]
27211
27334
  });
@@ -27313,15 +27436,13 @@ function NUnitFilter({
27313
27436
  children: [/* @__PURE__ */ jsxRuntime.jsx("input", {
27314
27437
  type: "number",
27315
27438
  value: n,
27316
- ...{
27317
- className: "mly2yh2zd mlyizdh9v mly9cpjcd mly1sxf85j mly1iyjqo2"
27318
- },
27439
+ ..._stylex.props(filterStyles.input, filterStyles.editorCell),
27319
27440
  onChange: updateN
27320
27441
  }), /* @__PURE__ */ jsxRuntime.jsx(SelectDropdown, {
27321
27442
  options,
27322
27443
  value: units,
27323
27444
  onChange: updateUnits,
27324
- customStyle: styles$j.editorCell
27445
+ customStyle: filterStyles.editorCell
27325
27446
  })]
27326
27447
  });
27327
27448
  }
@@ -27335,7 +27456,7 @@ function UnitFilter({
27335
27456
  options,
27336
27457
  value: units,
27337
27458
  onChange: setUnits,
27338
- customStyle: styles$j.editorCell
27459
+ customStyle: filterStyles.editorCell
27339
27460
  });
27340
27461
  }
27341
27462
  function SingleDateFilter({
@@ -27354,28 +27475,24 @@ function SingleDateFilter({
27354
27475
  };
27355
27476
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
27356
27477
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
27357
- ...{
27358
- className: "mly78zum5 mly167g77z"
27359
- },
27478
+ ..._stylex.props(filterStyles.editorRow),
27360
27479
  children: /* @__PURE__ */ jsxRuntime.jsx(DateInput, {
27361
27480
  value: date,
27362
27481
  setValue: updateDate,
27363
27482
  units,
27364
27483
  customStyle: {
27365
- ...styles$j.input,
27366
- ...styles$j.editorCell
27484
+ ...filterStyles.input,
27485
+ ...filterStyles.editorCell
27367
27486
  }
27368
27487
  })
27369
27488
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
27370
- ...{
27371
- className: "mly78zum5 mly167g77z"
27372
- },
27489
+ ..._stylex.props(filterStyles.editorRow),
27373
27490
  children: /* @__PURE__ */ jsxRuntime.jsx(DatePicker, {
27374
27491
  value: date,
27375
27492
  setValue: updateDate,
27376
27493
  units,
27377
27494
  maxLevel,
27378
- customStyle: styles$j.editorCell
27495
+ customStyle: filterStyles.editorCell
27379
27496
  })
27380
27497
  })]
27381
27498
  });
@@ -27426,16 +27543,14 @@ function DoubleDateFilter({
27426
27543
  };
27427
27544
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
27428
27545
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
27429
- ...{
27430
- className: "mly78zum5 mly167g77z"
27431
- },
27546
+ ..._stylex.props(filterStyles.editorRow),
27432
27547
  children: [/* @__PURE__ */ jsxRuntime.jsx(DateInput, {
27433
27548
  value: fromDate,
27434
27549
  setValue: updateFromDate,
27435
27550
  units,
27436
27551
  customStyle: {
27437
- ...styles$j.input,
27438
- ...styles$j.editorCell
27552
+ ...filterStyles.input,
27553
+ ...filterStyles.editorCell
27439
27554
  },
27440
27555
  onFocus: () => updateFocusedDate("from"),
27441
27556
  isActive: focusedDate === "from"
@@ -27444,22 +27559,20 @@ function DoubleDateFilter({
27444
27559
  setValue: updateToDate,
27445
27560
  units,
27446
27561
  customStyle: {
27447
- ...styles$j.input,
27448
- ...styles$j.editorCell
27562
+ ...filterStyles.input,
27563
+ ...filterStyles.editorCell
27449
27564
  },
27450
27565
  onFocus: () => updateFocusedDate("to"),
27451
27566
  isActive: focusedDate === "to"
27452
27567
  })]
27453
27568
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
27454
- ...{
27455
- className: "mly78zum5 mly167g77z"
27456
- },
27569
+ ..._stylex.props(filterStyles.editorRow),
27457
27570
  children: /* @__PURE__ */ jsxRuntime.jsx(DatePicker, {
27458
27571
  value: date,
27459
27572
  setValue: updateDate,
27460
27573
  units,
27461
27574
  maxLevel,
27462
- customStyle: styles$j.editorCell
27575
+ customStyle: filterStyles.editorCell
27463
27576
  })
27464
27577
  })]
27465
27578
  });
@@ -27535,62 +27648,6 @@ function dateTimeFilterChangeType(filter, type, units) {
27535
27648
  }
27536
27649
  return filter;
27537
27650
  }
27538
- const styles$j = {
27539
- editorCell: {
27540
- flexGrow: "mly1iyjqo2",
27541
- $$css: true
27542
- },
27543
- input: {
27544
- border: "mly2yh2zd",
27545
- borderWidth: null,
27546
- borderInlineWidth: null,
27547
- borderInlineStartWidth: null,
27548
- borderLeftWidth: null,
27549
- borderInlineEndWidth: null,
27550
- borderRightWidth: null,
27551
- borderBlockWidth: null,
27552
- borderTopWidth: null,
27553
- borderBottomWidth: null,
27554
- borderStyle: null,
27555
- borderInlineStyle: null,
27556
- borderInlineStartStyle: null,
27557
- borderLeftStyle: null,
27558
- borderInlineEndStyle: null,
27559
- borderRightStyle: null,
27560
- borderBlockStyle: null,
27561
- borderTopStyle: null,
27562
- borderBottomStyle: null,
27563
- borderColor: null,
27564
- borderInlineColor: null,
27565
- borderInlineStartColor: null,
27566
- borderLeftColor: null,
27567
- borderInlineEndColor: null,
27568
- borderRightColor: null,
27569
- borderBlockColor: null,
27570
- borderTopColor: null,
27571
- borderBottomColor: null,
27572
- color: "mlyizdh9v",
27573
- padding: "mly9cpjcd",
27574
- paddingInline: null,
27575
- paddingStart: null,
27576
- paddingLeft: null,
27577
- paddingEnd: null,
27578
- paddingRight: null,
27579
- paddingBlock: null,
27580
- paddingTop: null,
27581
- paddingBottom: null,
27582
- borderRadius: "mly1sxf85j",
27583
- borderStartStartRadius: null,
27584
- borderStartEndRadius: null,
27585
- borderEndStartRadius: null,
27586
- borderEndEndRadius: null,
27587
- borderTopLeftRadius: null,
27588
- borderTopRightRadius: null,
27589
- borderBottomLeftRadius: null,
27590
- borderBottomRightRadius: null,
27591
- $$css: true
27592
- }
27593
- };
27594
27651
  function FilterDialog({
27595
27652
  fieldInfo,
27596
27653
  path,
@@ -27733,9 +27790,12 @@ function useFilterModal({
27733
27790
  middleware: [offset$1({
27734
27791
  mainAxis: 3,
27735
27792
  crossAxis: 3
27736
- }), flip({
27737
- boundary: document.body
27738
- })]
27793
+ }), shift({
27794
+ boundary: document.body,
27795
+ crossAxis: true,
27796
+ padding: 10
27797
+ })],
27798
+ whileElementsMounted: autoUpdate
27739
27799
  });
27740
27800
  return /* @__PURE__ */ jsxRuntime.jsx(Root$2, {
27741
27801
  open,
@@ -27874,12 +27934,10 @@ function QueryActionBar({
27874
27934
  };
27875
27935
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
27876
27936
  ...{
27877
- className: "mly78zum5 mly1qughib mly6s0dn4 mly1vjfegm"
27937
+ className: "mly78zum5 mly1qughib mly6s0dn4 mly153ncpu"
27878
27938
  },
27879
27939
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
27880
- ...{
27881
- className: "mly6icuqf mly117nqv4 mly1j61zf2"
27882
- },
27940
+ ..._stylex.props(fontStyles.largeBody, styles$k.title),
27883
27941
  children: "Query"
27884
27942
  }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
27885
27943
  ...{
@@ -27914,7 +27972,13 @@ function QueryActionBar({
27914
27972
  })]
27915
27973
  });
27916
27974
  }
27917
- const styles$i = {
27975
+ const styles$k = {
27976
+ title: {
27977
+ fontWeight: "mly1xlr1w8",
27978
+ $$css: true
27979
+ }
27980
+ };
27981
+ const styles$j = {
27918
27982
  labelWithIcon: {
27919
27983
  display: "mly78zum5",
27920
27984
  alignItems: "mly6s0dn4",
@@ -28106,6 +28170,21 @@ function getSegmentIfPresent(parent) {
28106
28170
  }
28107
28171
  return void 0;
28108
28172
  }
28173
+ const QUERY_RENDERERS = ["table", "bar_chart", "dashboard", "json", "line_chart", "list", "list_detail", "point_map", "scatter_chart", "segment_map", "shape_map", "sparkline"];
28174
+ const ATOMIC_RENDERERS = ["number", "boolean", "currency", "image", "url", "percent", "text", "time"];
28175
+ const RENDERERS = [...QUERY_RENDERERS, ...ATOMIC_RENDERERS];
28176
+ function tagToRenderer(tag) {
28177
+ if (tag) {
28178
+ const tagProps = tag.getProperties();
28179
+ const tags = Object.keys(tagProps);
28180
+ for (const tag2 of tags) {
28181
+ if (RENDERERS.includes(tag2) && !tagProps[tag2].deleted) {
28182
+ return tag2;
28183
+ }
28184
+ }
28185
+ }
28186
+ return null;
28187
+ }
28109
28188
  function atomicTypeToIcon(type) {
28110
28189
  return atomicTypeMap[type];
28111
28190
  }
@@ -28131,6 +28210,11 @@ function fieldToIcon(field) {
28131
28210
  function relationshipToIcon(relationship) {
28132
28211
  return relationshipMap[relationship];
28133
28212
  }
28213
+ function viewToVisualizationIcon(view) {
28214
+ const currentTag = view.getTag();
28215
+ const currentRenderer = tagToRenderer(currentTag) ?? "table";
28216
+ return `viz_${currentRenderer}`;
28217
+ }
28134
28218
  const atomicTypeMap = {
28135
28219
  array_type: "array",
28136
28220
  string_type: "string",
@@ -28169,16 +28253,11 @@ function FieldToken({
28169
28253
  className: "mly78zum5 mly6s0dn4 mly1nhvcw1 mly1jnr06f mly1ypdohk mlym9y5t7"
28170
28254
  }
28171
28255
  }[!!hoverActionsVisible << 0],
28172
- children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
28173
- style: {
28174
- display: "inline-grid"
28175
- },
28176
- children: /* @__PURE__ */ jsxRuntime.jsx(Token, {
28177
- label: field.name,
28178
- color: fieldKindToColor(field.kind),
28179
- icon: fieldToIcon(field),
28180
- ...props2
28181
- })
28256
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Token, {
28257
+ label: field.name,
28258
+ color: fieldKindToColor(field.kind),
28259
+ icon: fieldToIcon(field),
28260
+ ...props2
28182
28261
  }), hoverActions && /* @__PURE__ */ jsxRuntime.jsx("div", {
28183
28262
  ...{
28184
28263
  className: "mly1vsucm1 mly2lah0s"
@@ -28195,52 +28274,37 @@ function BadgeForField({
28195
28274
  label: "view",
28196
28275
  icon: "view_filled",
28197
28276
  color: "purple",
28198
- customStyle: styles$h.noBackground
28277
+ customStyle: styles$i.noBackground
28199
28278
  });
28200
28279
  } else if (field.kind === "dimension") {
28201
28280
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, {
28202
28281
  label: "dimension",
28203
- icon: "dimension",
28282
+ icon: fieldToIcon(field),
28204
28283
  color: "cyan",
28205
- customStyle: styles$h.noBackground
28284
+ customStyle: styles$i.noBackground
28206
28285
  });
28207
28286
  } else if (field.kind === "measure") {
28208
28287
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, {
28209
28288
  label: "measure",
28210
- icon: "measure",
28289
+ icon: fieldToIcon(field),
28211
28290
  color: "green",
28212
- customStyle: styles$h.noBackground
28291
+ customStyle: styles$i.noBackground
28213
28292
  });
28214
28293
  } else if (field.kind === "join") {
28215
28294
  return /* @__PURE__ */ jsxRuntime.jsx(Badge, {
28216
28295
  label: "join",
28217
- icon: "many_to_one",
28296
+ icon: fieldToIcon(field),
28218
28297
  color: "gray",
28219
- customStyle: styles$h.noBackground
28298
+ customStyle: styles$i.noBackground
28220
28299
  });
28221
28300
  }
28222
28301
  }
28223
- const styles$h = {
28302
+ const styles$i = {
28224
28303
  noBackground: {
28225
28304
  backgroundColor: "mlyjbqb8w",
28226
28305
  $$css: true
28227
28306
  }
28228
28307
  };
28229
- const QUERY_RENDERERS = ["table", "bar_chart", "dashboard", "json", "line_chart", "list", "list_detail", "point_map", "scatter_chart", "segment_map", "shape_map", "sparkline"];
28230
- const ATOMIC_RENDERERS = ["number", "boolean", "currency", "image", "url", "percent", "text", "time"];
28231
- const RENDERERS = [...QUERY_RENDERERS, ...ATOMIC_RENDERERS];
28232
- function tagToRenderer(tag) {
28233
- if (tag) {
28234
- const tagProps = tag.getProperties();
28235
- const tags = Object.keys(tagProps);
28236
- for (const tag2 of tags) {
28237
- if (RENDERERS.includes(tag2) && !tagProps[tag2].deleted) {
28238
- return tag2;
28239
- }
28240
- }
28241
- }
28242
- return null;
28243
- }
28244
28308
  function Visualization$1({
28245
28309
  rootQuery,
28246
28310
  view
@@ -28264,7 +28328,7 @@ function Visualization$1({
28264
28328
  onClick: () => setRenderer(viz)
28265
28329
  }));
28266
28330
  const tokens2 = [/* @__PURE__ */ jsxRuntime.jsx(SelectorToken, {
28267
- customStyle: styles$g.first,
28331
+ customStyle: styles$h.first,
28268
28332
  icon: `viz_${currentRenderer}`,
28269
28333
  value: currentRenderer,
28270
28334
  items: vizes,
@@ -28274,7 +28338,7 @@ function Visualization$1({
28274
28338
  children: tokens2
28275
28339
  });
28276
28340
  }
28277
- const styles$g = {
28341
+ const styles$h = {
28278
28342
  first: {
28279
28343
  flexGrow: "mly1iyjqo2",
28280
28344
  justifyContent: "mlylqzeqv",
@@ -28303,7 +28367,7 @@ function ViewAttributeTable({
28303
28367
  }) {
28304
28368
  const dimensions = viewInfo.schema.fields.filter((f2) => f2.kind === "dimension");
28305
28369
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
28306
- ..._stylex.props(styles$f.attributeTableContainer, style),
28370
+ ..._stylex.props(styles$g.attributeTableContainer, style),
28307
28371
  children: /* @__PURE__ */ jsxRuntime.jsx(ScrollableArea, {
28308
28372
  children: /* @__PURE__ */ jsxRuntime.jsx("table", {
28309
28373
  ...{
@@ -28343,9 +28407,9 @@ function ViewAttributeTableRow({
28343
28407
  className: "mlydpxx8g"
28344
28408
  },
28345
28409
  children: [/* @__PURE__ */ jsxRuntime.jsx("td", {
28346
- ..._stylex.props(styles$f.attributeTableKeyCell, fontStyles.supporting),
28410
+ ..._stylex.props(styles$g.attributeTableKeyCell, fontStyles.supporting),
28347
28411
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
28348
- ..._stylex.props(styles$f.attributeTableKeyCellContent, fontStyles.supporting),
28412
+ ..._stylex.props(styles$g.attributeTableKeyCellContent, fontStyles.supporting),
28349
28413
  children: attribute
28350
28414
  })
28351
28415
  }), /* @__PURE__ */ jsxRuntime.jsx("td", {
@@ -28356,7 +28420,7 @@ function ViewAttributeTableRow({
28356
28420
  })]
28357
28421
  });
28358
28422
  }
28359
- const styles$f = {
28423
+ const styles$g = {
28360
28424
  attributeTableContainer: {
28361
28425
  padding: "mlye8ttls",
28362
28426
  paddingInline: null,
@@ -28512,7 +28576,7 @@ function HoverText({
28512
28576
  asChild: true,
28513
28577
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
28514
28578
  ref: textRef,
28515
- ..._stylex.props(styles$e.text, fontStyles.supporting),
28579
+ ..._stylex.props(styles$f.text, fontStyles.supporting),
28516
28580
  children: text2
28517
28581
  })
28518
28582
  }), /* @__PURE__ */ jsxRuntime.jsx(Portal$4, {
@@ -28520,7 +28584,7 @@ function HoverText({
28520
28584
  side,
28521
28585
  align,
28522
28586
  children: /* @__PURE__ */ jsxRuntime.jsx("pre", {
28523
- ..._stylex.props(styles$e.hoverText, fontStyles.tooltipText),
28587
+ ..._stylex.props(styles$f.hoverText, fontStyles.tooltipText),
28524
28588
  children: text2
28525
28589
  })
28526
28590
  })
@@ -28529,7 +28593,7 @@ function HoverText({
28529
28593
  })
28530
28594
  });
28531
28595
  }
28532
- const styles$e = {
28596
+ const styles$f = {
28533
28597
  text: {
28534
28598
  whiteSpace: "mlyuxw1ft",
28535
28599
  textOverflow: "mlylyipyv",
@@ -28591,7 +28655,7 @@ function FieldHoverCard({
28591
28655
  details = /* @__PURE__ */ jsxRuntime.jsx(ViewAttributeTable, {
28592
28656
  viewInfo: field,
28593
28657
  isCompact: true,
28594
- style: styles$d.viewAttributeTable
28658
+ style: styles$e.viewAttributeTable
28595
28659
  });
28596
28660
  } else if (field.kind === "dimension") {
28597
28661
  details = /* @__PURE__ */ jsxRuntime.jsx(TopValuesTable, {
@@ -28600,7 +28664,7 @@ function FieldHoverCard({
28600
28664
  });
28601
28665
  }
28602
28666
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28603
- ..._stylex.props(styles$d.container, fontStyles.body),
28667
+ ..._stylex.props(styles$e.container, fontStyles.body),
28604
28668
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
28605
28669
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
28606
28670
  ...{
@@ -28610,7 +28674,7 @@ function FieldHoverCard({
28610
28674
  field
28611
28675
  })
28612
28676
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
28613
- ..._stylex.props(fontStyles.supporting, styles$d.path),
28677
+ ..._stylex.props(fontStyles.supporting, styles$e.path),
28614
28678
  children: pathString
28615
28679
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
28616
28680
  ..._stylex.props(fontStyles.emphasized),
@@ -28624,7 +28688,7 @@ function FieldHoverCard({
28624
28688
  })]
28625
28689
  });
28626
28690
  }
28627
- const styles$d = {
28691
+ const styles$e = {
28628
28692
  container: {
28629
28693
  width: "mlybl57os",
28630
28694
  maxHeight: "mly1t2cwa7",
@@ -28664,6 +28728,7 @@ const styles$d = {
28664
28728
  $$css: true
28665
28729
  }
28666
28730
  };
28731
+ const isArrayOrRecord = (field) => field.kind === "dimension" && (field.type.kind === "array_type" && field.type.element_type.kind === "record_type" || field.type.kind === "record_type");
28667
28732
  function FieldList({
28668
28733
  view,
28669
28734
  fields,
@@ -28675,8 +28740,9 @@ function FieldList({
28675
28740
  const groups = React.useMemo(() => {
28676
28741
  const groups2 = [];
28677
28742
  const buildGroups = (types22, path, name, fields2) => {
28678
- const filteredFields = sortFieldInfos(fields2).filter((field) => field.kind !== "join").filter((field) => field.name.includes(search) && types22.includes(field.kind)).filter((field) => filter ? filter(view, field, path) : true);
28743
+ const filteredFields = sortFieldInfos(fields2).filter((field) => field.kind !== "join").filter((field) => !isArrayOrRecord(field)).filter((field) => field.name.includes(search) && types22.includes(field.kind)).filter((field) => filter ? filter(view, field, path) : true);
28679
28744
  const joins = fields2.filter((field) => field.kind === "join");
28745
+ const arraysAndRecords = fields2.filter(isArrayOrRecord);
28680
28746
  if (filteredFields.length) {
28681
28747
  groups2.push({
28682
28748
  path,
@@ -28684,6 +28750,19 @@ function FieldList({
28684
28750
  fields: filteredFields
28685
28751
  });
28686
28752
  }
28753
+ for (const array of arraysAndRecords) {
28754
+ if (array.type.kind === "array_type" && array.type.element_type.kind === "record_type") {
28755
+ buildGroups(types22, [...path, array.name], array.name, array.type.element_type.fields.map((dimension) => ({
28756
+ kind: "dimension",
28757
+ ...dimension
28758
+ })));
28759
+ } else if (array.type.kind === "record_type") {
28760
+ buildGroups(types22, [...path, array.name], array.name, array.type.fields.map((dimension) => ({
28761
+ kind: "dimension",
28762
+ ...dimension
28763
+ })));
28764
+ }
28765
+ }
28687
28766
  for (const join of joins) {
28688
28767
  buildGroups(
28689
28768
  types22.filter((type) => type !== "view"),
@@ -28701,14 +28780,14 @@ function FieldList({
28701
28780
  children: groups.length ? groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", {
28702
28781
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
28703
28782
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
28704
- ..._stylex.props(addMenuStyles.item, styles$c.fieldItem),
28783
+ ..._stylex.props(addMenuStyles.item, styles$d.fieldItem),
28705
28784
  "data-disabled": "true",
28706
28785
  children: group.name
28707
28786
  })
28708
28787
  }), group.fields.map((field) => /* @__PURE__ */ jsxRuntime.jsx("div", {
28709
28788
  role: "menuitem",
28710
28789
  tabIndex: -1,
28711
- ..._stylex.props(addMenuStyles.item, styles$c.fieldItem),
28790
+ ..._stylex.props(addMenuStyles.item, styles$d.fieldItem),
28712
28791
  children: /* @__PURE__ */ jsxRuntime.jsx(FieldToken, {
28713
28792
  field,
28714
28793
  onClick: (event) => onClick(field, group.path, event),
@@ -28731,7 +28810,7 @@ function FieldList({
28731
28810
  })
28732
28811
  });
28733
28812
  }
28734
- const styles$c = {
28813
+ const styles$d = {
28735
28814
  fieldItem: {
28736
28815
  height: "mly1qx5ct2",
28737
28816
  paddingTop: "mly1y1aw1k",
@@ -28785,7 +28864,7 @@ function OperationActionTitle({
28785
28864
  }) {
28786
28865
  const [isMenuOpen, setIsMenuOpen] = React__namespace.useState(false);
28787
28866
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28788
- ..._stylex.props(styles$i.title, hoverStyles.main),
28867
+ ..._stylex.props(styles$j.title, hoverStyles.main),
28789
28868
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
28790
28869
  children: title
28791
28870
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -28868,7 +28947,7 @@ function GroupByOperations({
28868
28947
  addGroupBy(rootQuery, segment, field, path, setQuery);
28869
28948
  }
28870
28949
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
28871
- ..._stylex.props(styles$i.tokenContainer),
28950
+ ..._stylex.props(styles$j.tokenContainer),
28872
28951
  children: groupBys.map((groupBy) => {
28873
28952
  const fieldInfo = groupBy.getFieldInfo();
28874
28953
  const path = groupBy.field.getReference().path ?? [];
@@ -28958,10 +29037,10 @@ function FilterOperations({
28958
29037
  }
28959
29038
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28960
29039
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
28961
- ..._stylex.props(styles$i.title),
29040
+ ..._stylex.props(styles$j.title),
28962
29041
  children: "filter by"
28963
29042
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
28964
- ..._stylex.props(styles$i.tokenContainer),
29043
+ ..._stylex.props(styles$j.tokenContainer),
28965
29044
  children: filters.map((filterOperation, key2) => {
28966
29045
  return /* @__PURE__ */ jsxRuntime.jsx(ErrorElement, {
28967
29046
  fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", {
@@ -29219,7 +29298,7 @@ function LimitOperation({
29219
29298
  }
29220
29299
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
29221
29300
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
29222
- ..._stylex.props(styles$i.title),
29301
+ ..._stylex.props(styles$j.title),
29223
29302
  children: "limit"
29224
29303
  }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
29225
29304
  ..._stylex.props(hoverStyles.main),
@@ -29271,7 +29350,7 @@ function AggregateOperations({
29271
29350
  setQuery == null ? void 0 : setQuery(rootQuery.build());
29272
29351
  }
29273
29352
  }), " ", /* @__PURE__ */ jsxRuntime.jsx("div", {
29274
- ..._stylex.props(styles$i.tokenContainer),
29353
+ ..._stylex.props(styles$j.tokenContainer),
29275
29354
  children: aggregates.map((aggregate) => {
29276
29355
  const fieldInfo = aggregate.getFieldInfo();
29277
29356
  const path = aggregate.field.getReference().path ?? [];
@@ -29312,10 +29391,10 @@ function OrderByOperations({
29312
29391
  }
29313
29392
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
29314
29393
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
29315
- ..._stylex.props(styles$i.title),
29394
+ ..._stylex.props(styles$j.title),
29316
29395
  children: "order by"
29317
29396
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
29318
- ..._stylex.props(styles$i.tokenContainer),
29397
+ ..._stylex.props(styles$j.tokenContainer),
29319
29398
  children: orderBys.map((orderBy) => {
29320
29399
  const {
29321
29400
  fieldReference
@@ -29406,7 +29485,7 @@ function CollapsiblePanel({
29406
29485
  },
29407
29486
  children: [icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, {
29408
29487
  name: icon,
29409
- customStyle: styles$b.icon
29488
+ customStyle: styles$c.icon
29410
29489
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
29411
29490
  ...{
29412
29491
  className: "mlyuxw1ft mlyb3r6kr mlylyipyv mlyehqz9p mly1ghz6dp"
@@ -29443,7 +29522,7 @@ function CollapsiblePanel({
29443
29522
  })]
29444
29523
  });
29445
29524
  }
29446
- const styles$b = {
29525
+ const styles$c = {
29447
29526
  icon: {
29448
29527
  $$css: true
29449
29528
  }
@@ -29543,7 +29622,7 @@ function AddFieldItem({
29543
29622
  const trigger = /* @__PURE__ */ jsxRuntime.jsxs("div", {
29544
29623
  role: "menuitem",
29545
29624
  tabIndex: -1,
29546
- ..._stylex.props(addMenuStyles.item, addMenuStyles.clickable, open ? styles$a.open : null),
29625
+ ..._stylex.props(addMenuStyles.item, addMenuStyles.clickable, open ? styles$b.open : null),
29547
29626
  "data-disabled": disabled ? "true" : void 0,
29548
29627
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
29549
29628
  ..._stylex.props(addMenuStyles.label),
@@ -29598,7 +29677,7 @@ function AddFieldItem({
29598
29677
  })]
29599
29678
  });
29600
29679
  }
29601
- const styles$a = {
29680
+ const styles$b = {
29602
29681
  open: {
29603
29682
  background: "mly1p5yd3t",
29604
29683
  backgroundAttachment: null,
@@ -29855,15 +29934,6 @@ function AddMenu({
29855
29934
  })]
29856
29935
  });
29857
29936
  }
29858
- function VisualizationIcon({
29859
- view
29860
- }) {
29861
- const currentTag = view.getTag();
29862
- const currentRenderer = tagToRenderer(currentTag) ?? "table";
29863
- return /* @__PURE__ */ jsxRuntime.jsx(Icon, {
29864
- name: `viz_${currentRenderer}`
29865
- });
29866
- }
29867
29937
  function NestOperations({
29868
29938
  rootQuery,
29869
29939
  nests
@@ -29874,8 +29944,29 @@ function NestOperations({
29874
29944
  if (nests.length === 0) {
29875
29945
  return null;
29876
29946
  }
29947
+ const getControls = (nest) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
29948
+ children: [/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu, {
29949
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, {
29950
+ variant: "flat",
29951
+ icon: "meatballs",
29952
+ size: "compact",
29953
+ tooltip: "More Actions"
29954
+ }),
29955
+ children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, {
29956
+ icon: "clear",
29957
+ label: "Delete Query",
29958
+ onClick: () => {
29959
+ nest.delete();
29960
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
29961
+ }
29962
+ })
29963
+ }), /* @__PURE__ */ jsxRuntime.jsx(AddMenu, {
29964
+ rootQuery,
29965
+ view: nest.view
29966
+ })]
29967
+ });
29877
29968
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
29878
- ..._stylex.props(styles$i.tokenContainer),
29969
+ ..._stylex.props(styles$j.tokenContainer),
29879
29970
  children: nests.map((nest) => {
29880
29971
  const defaultOpen = nest.view.definition.node.kind === "segment" && nest.view.definition.node.operations.length === 0;
29881
29972
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -29884,32 +29975,10 @@ function NestOperations({
29884
29975
  },
29885
29976
  children: /* @__PURE__ */ jsxRuntime.jsx(CollapsiblePanel, {
29886
29977
  title: nest.name,
29887
- icon: "nest",
29978
+ icon: viewToVisualizationIcon(nest.view),
29888
29979
  defaultOpen,
29889
- controls: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
29890
- children: [/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu, {
29891
- trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, {
29892
- variant: "flat",
29893
- icon: "meatballs",
29894
- size: "compact",
29895
- tooltip: "More Actions"
29896
- }),
29897
- children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, {
29898
- icon: "clear",
29899
- label: "Delete Query",
29900
- onClick: () => {
29901
- nest.delete();
29902
- setQuery == null ? void 0 : setQuery(rootQuery.build());
29903
- }
29904
- })
29905
- }), /* @__PURE__ */ jsxRuntime.jsx(AddMenu, {
29906
- rootQuery,
29907
- view: nest.view
29908
- })]
29909
- }),
29910
- collapsedControls: /* @__PURE__ */ jsxRuntime.jsx(VisualizationIcon, {
29911
- view: nest.view
29912
- }),
29980
+ controls: getControls(nest),
29981
+ collapsedControls: getControls(nest),
29913
29982
  children: /* @__PURE__ */ jsxRuntime.jsx(View, {
29914
29983
  rootQuery,
29915
29984
  view: nest.view
@@ -30046,11 +30115,11 @@ function CollapsingView({
30046
30115
  })]
30047
30116
  }), !collapsed && /* @__PURE__ */ jsxRuntime.jsx(ViewAttributeTable, {
30048
30117
  viewInfo: viewDef.getViewInfo(),
30049
- style: styles$9.preview
30118
+ style: styles$a.preview
30050
30119
  })]
30051
30120
  });
30052
30121
  }
30053
- const styles$9 = {
30122
+ const styles$a = {
30054
30123
  preview: {
30055
30124
  height: "mlyt7dq6l",
30056
30125
  maxHeight: "mly1hkcv85",
@@ -30092,21 +30161,33 @@ function Query({
30092
30161
  size: "compact",
30093
30162
  tooltip: "More Actions"
30094
30163
  }),
30095
- children: setQuery ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, {
30096
- icon: "clear",
30097
- label: "Clear query",
30098
- onClick: () => {
30099
- setQuery == null ? void 0 : setQuery(void 0);
30100
- },
30101
- disabled: rootQuery.isEmpty()
30164
+ children: setQuery ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
30165
+ children: [/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, {
30166
+ icon: "clear",
30167
+ label: "Clear query",
30168
+ onClick: () => {
30169
+ setQuery == null ? void 0 : setQuery(void 0);
30170
+ },
30171
+ disabled: rootQuery.isEmpty()
30172
+ }), /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, {
30173
+ icon: "nest",
30174
+ label: "Nest query",
30175
+ onClick: () => {
30176
+ if (rootQuery.definition instanceof QB.ASTArrowQueryDefinition) {
30177
+ rootQuery.definition.view.convertToNest("Nest");
30178
+ }
30179
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
30180
+ },
30181
+ disabled: rootQuery.isEmpty()
30182
+ })]
30102
30183
  }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
30103
30184
  }), query.definition instanceof QB.ASTArrowQueryDefinition ? /* @__PURE__ */ jsxRuntime.jsx(AddMenu, {
30104
30185
  rootQuery,
30105
30186
  view: query.definition
30106
30187
  }) : null]
30107
30188
  }),
30108
- collapsedControls: /* @__PURE__ */ jsxRuntime.jsx(VisualizationIcon, {
30109
- view: query
30189
+ collapsedControls: /* @__PURE__ */ jsxRuntime.jsx(Icon, {
30190
+ name: viewToVisualizationIcon(query)
30110
30191
  }),
30111
30192
  children: [query.definition instanceof QB.ASTArrowQueryDefinition ? /* @__PURE__ */ jsxRuntime.jsxs("div", {
30112
30193
  style: {
@@ -30154,9 +30235,9 @@ function Source({
30154
30235
  } = React.useContext(ExplorerPanelsContext);
30155
30236
  if (!(isSourcePanelOpen && setIsSourcePanelOpen) && rootQuery.definition instanceof QB.ASTArrowQueryDefinition) {
30156
30237
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
30157
- ..._stylex.props(styles$i.queryCard, styles$8.flex),
30238
+ ..._stylex.props(styles$j.queryCard, styles$9.flex),
30158
30239
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
30159
- ..._stylex.props(styles$i.labelWithIcon),
30240
+ ..._stylex.props(styles$j.labelWithIcon),
30160
30241
  children: [/* @__PURE__ */ jsxRuntime.jsx(Icon, {
30161
30242
  name: "database"
30162
30243
  }), rootQuery.definition.as.ArrowQueryDefinition().source.as.ReferenceQueryArrowSource().name]
@@ -30169,7 +30250,7 @@ function Source({
30169
30250
  }
30170
30251
  return null;
30171
30252
  }
30172
- const styles$8 = {
30253
+ const styles$9 = {
30173
30254
  flex: {
30174
30255
  display: "mly78zum5",
30175
30256
  justifyContent: "mly1qughib",
@@ -30262,7 +30343,7 @@ function Parameters({
30262
30343
  children: sourceParameters.map((parameter) => {
30263
30344
  var _a2;
30264
30345
  return /* @__PURE__ */ jsxRuntime.jsxs(TokenGroup, {
30265
- customStyle: styles$7.tokenGroup,
30346
+ customStyle: styles$8.tokenGroup,
30266
30347
  children: [/* @__PURE__ */ jsxRuntime.jsx(Token, {
30267
30348
  icon: atomicTypeToIcon(parameter.type.kind),
30268
30349
  label: parameter.name
@@ -30280,7 +30361,7 @@ function Parameters({
30280
30361
  }
30281
30362
  return null;
30282
30363
  }
30283
- const styles$7 = {
30364
+ const styles$8 = {
30284
30365
  tokenGroup: {
30285
30366
  display: "mly78zum5",
30286
30367
  $$css: true
@@ -30295,21 +30376,40 @@ function QueryEditor() {
30295
30376
  console.error("Missing <MalloyExplorerProvider>");
30296
30377
  return null;
30297
30378
  }
30298
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
30299
- ...{
30300
- className: "mly6icuqf mlyif65rj mlywxc2jc mly78zum5 mlydt5ytf mly167g77z"
30301
- },
30302
- children: [/* @__PURE__ */ jsxRuntime.jsx(Source, {
30303
- rootQuery
30304
- }), /* @__PURE__ */ jsxRuntime.jsx(Parameters, {
30305
- rootQuery
30306
- }), /* @__PURE__ */ jsxRuntime.jsx(Query, {
30307
- rootQuery,
30308
- query: rootQuery,
30309
- setQuery
30310
- })]
30379
+ return /* @__PURE__ */ jsxRuntime.jsx(ScrollableArea, {
30380
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
30381
+ ..._stylex.props(fontStyles.body, styles$7.main),
30382
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Source, {
30383
+ rootQuery
30384
+ }), /* @__PURE__ */ jsxRuntime.jsx(Parameters, {
30385
+ rootQuery
30386
+ }), /* @__PURE__ */ jsxRuntime.jsx(Query, {
30387
+ rootQuery,
30388
+ query: rootQuery,
30389
+ setQuery
30390
+ })]
30391
+ })
30311
30392
  });
30312
30393
  }
30394
+ const styles$7 = {
30395
+ main: {
30396
+ display: "mly78zum5",
30397
+ flexDirection: "mlydt5ytf",
30398
+ gap: "mly167g77z",
30399
+ rowGap: null,
30400
+ columnGap: null,
30401
+ padding: "mly1fut7tt",
30402
+ paddingInline: null,
30403
+ paddingStart: null,
30404
+ paddingLeft: null,
30405
+ paddingEnd: null,
30406
+ paddingRight: null,
30407
+ paddingBlock: null,
30408
+ paddingTop: null,
30409
+ paddingBottom: null,
30410
+ $$css: true
30411
+ }
30412
+ };
30313
30413
  function QueryPanel({
30314
30414
  runQuery
30315
30415
  }) {
@@ -30317,20 +30417,10 @@ function QueryPanel({
30317
30417
  ...{
30318
30418
  className: "mly78zum5 mlydt5ytf mly2lah0s mlyh8yej3 mly5yr21d mlyotlr4g mly1roky18"
30319
30419
  },
30320
- children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
30321
- ...{
30322
- className: "mly78zum5 mlydt5ytf mly153ncpu"
30323
- },
30324
- children: /* @__PURE__ */ jsxRuntime.jsx(QueryActionBar, {
30325
- runQuery
30326
- })
30420
+ children: [/* @__PURE__ */ jsxRuntime.jsx(QueryActionBar, {
30421
+ runQuery
30327
30422
  }), /* @__PURE__ */ jsxRuntime.jsx(ScrollableArea, {
30328
- children: /* @__PURE__ */ jsxRuntime.jsx("div", {
30329
- ...{
30330
- className: "mly78zum5 mlydt5ytf mly1fut7tt mly167g77z"
30331
- },
30332
- children: /* @__PURE__ */ jsxRuntime.jsx(QueryEditor, {})
30333
- })
30423
+ children: /* @__PURE__ */ jsxRuntime.jsx(QueryEditor, {})
30334
30424
  })]
30335
30425
  });
30336
30426
  }
@@ -31123,7 +31213,22 @@ function flattenFieldsTree(fields, path = []) {
31123
31213
  }];
31124
31214
  }
31125
31215
  case "measure":
31216
+ return [{
31217
+ path,
31218
+ field
31219
+ }];
31126
31220
  case "dimension":
31221
+ if (field.type.kind === "array_type" && field.type.element_type.kind === "record_type") {
31222
+ return flattenFieldsTree(field.type.element_type.fields.map((dimension) => ({
31223
+ kind: "dimension",
31224
+ ...dimension
31225
+ })), [...path, field.name]);
31226
+ } else if (field.type.kind === "record_type") {
31227
+ return flattenFieldsTree(field.type.fields.map((dimension) => ({
31228
+ kind: "dimension",
31229
+ ...dimension
31230
+ })), [...path, field.name]);
31231
+ }
31127
31232
  return [{
31128
31233
  path,
31129
31234
  field
@@ -31617,7 +31722,9 @@ const styles$1 = {
31617
31722
  $$css: true
31618
31723
  }
31619
31724
  };
31620
- function SourcePanel() {
31725
+ function SourcePanel({
31726
+ onRefresh
31727
+ }) {
31621
31728
  const {
31622
31729
  source
31623
31730
  } = React__namespace.useContext(QueryEditorContext);
@@ -31690,13 +31797,23 @@ function SourcePanel() {
31690
31797
  variant: "flat",
31691
31798
  size: "compact",
31692
31799
  onClick: () => setSubpanelType(null)
31693
- }), setIsSourcePanelOpen && /* @__PURE__ */ jsxRuntime.jsx("div", {
31694
- children: /* @__PURE__ */ jsxRuntime.jsx(Button, {
31695
- icon: "chevronLeft",
31800
+ }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
31801
+ ...{
31802
+ className: "mly78zum5"
31803
+ },
31804
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Button, {
31805
+ icon: "refresh",
31806
+ tooltip: "Refresh the source",
31807
+ onClick: onRefresh,
31808
+ size: "compact",
31809
+ variant: "flat"
31810
+ }), setIsSourcePanelOpen && /* @__PURE__ */ jsxRuntime.jsx(Button, {
31811
+ icon: "sidebarCollapse",
31696
31812
  tooltip: "Close the source panel",
31697
31813
  onClick: () => setIsSourcePanelOpen(false),
31698
- size: "compact"
31699
- })
31814
+ size: "compact",
31815
+ variant: "flat"
31816
+ })]
31700
31817
  })]
31701
31818
  }), /* @__PURE__ */ jsxRuntime.jsx(TextInput, {
31702
31819
  value: searchQuery,