@malloydata/malloy-explorer 0.0.257-dev250410160631 → 0.0.257-dev250412010850

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 (33) hide show
  1. package/@flowtypes/components/ResultPanel/ResultPanel.flow.js +6 -1
  2. package/babel.config.mjs +1 -0
  3. package/dist/cjs/index.cjs +358 -210
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/esm/index.js +359 -211
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/malloy-explorer.css +1 -1
  8. package/dist/types/components/QueryPanel/AddMenu/AddAggregate.d.ts +4 -3
  9. package/dist/types/components/QueryPanel/AddMenu/AddEmptyNest.d.ts +4 -3
  10. package/dist/types/components/QueryPanel/AddMenu/AddFieldItem.d.ts +4 -4
  11. package/dist/types/components/QueryPanel/AddMenu/AddGroupBy.d.ts +4 -3
  12. package/dist/types/components/QueryPanel/AddMenu/AddLimit.d.ts +4 -3
  13. package/dist/types/components/QueryPanel/AddMenu/AddMenu.d.ts +3 -2
  14. package/dist/types/components/QueryPanel/AddMenu/AddOrderBy.d.ts +4 -3
  15. package/dist/types/components/QueryPanel/AddMenu/AddView.d.ts +4 -4
  16. package/dist/types/components/QueryPanel/AddMenu/AddWhere.d.ts +4 -3
  17. package/dist/types/components/QueryPanel/AddMenu/FieldList.d.ts +4 -4
  18. package/dist/types/components/QueryPanel/AddMenu/FieldMenu.d.ts +4 -4
  19. package/dist/types/components/QueryPanel/Operations.d.ts +3 -1
  20. package/dist/types/components/QueryPanel/ViewDefinition.d.ts +3 -1
  21. package/dist/types/components/QueryPanel/operations/AggregateOperations.d.ts +4 -3
  22. package/dist/types/components/QueryPanel/operations/GroupByOperations.d.ts +4 -3
  23. package/dist/types/components/QueryPanel/operations/LimitOperation.d.ts +1 -2
  24. package/dist/types/components/QueryPanel/operations/NestOperation.d.ts +1 -2
  25. package/dist/types/components/QueryPanel/operations/OperationActionTitle.d.ts +4 -3
  26. package/dist/types/components/QueryPanel/operations/OrderByOperations.d.ts +1 -2
  27. package/dist/types/components/QueryPanel/operations/WhereOperations.d.ts +1 -2
  28. package/dist/types/components/ResultPanel/DebugPane.d.ts +11 -0
  29. package/dist/types/components/ResultPanel/ResultPanel.d.ts +2 -0
  30. package/dist/types/components/primitives/CollapsibleListItem.d.ts +5 -1
  31. package/dist/types/components/utils/fields.d.ts +6 -0
  32. package/dist/types/components/utils/segment.d.ts +2 -0
  33. package/package.json +1 -1
@@ -3611,6 +3611,15 @@ const tooltipStyles = {
3611
3611
  }
3612
3612
  };
3613
3613
  const fontStyles = {
3614
+ largeBody: {
3615
+ fontFamily: "x1rj5sg5",
3616
+ color: "x1dhlylr",
3617
+ fontWeight: "xo1l8bm",
3618
+ fontSize: "x1j61zf2",
3619
+ lineHeight: "x1fc57z9",
3620
+ letterSpacing: "x12oo3zp",
3621
+ $$css: true
3622
+ },
3614
3623
  emphasized: {
3615
3624
  fontFamily: "x1rj5sg5",
3616
3625
  color: "x1dhlylr",
@@ -8160,16 +8169,17 @@ const styles$o = {
8160
8169
  function CollapsibleListItem({
8161
8170
  label,
8162
8171
  sublabel,
8163
- children
8172
+ children,
8173
+ isInitiallyExpanded = false
8164
8174
  }) {
8165
- const [isExpanded, setIsExpanded] = React__namespace.useState(false);
8175
+ const [isExpanded, setIsExpanded] = React__namespace.useState(isInitiallyExpanded);
8166
8176
  const handleToggle = () => {
8167
8177
  setIsExpanded((prev) => !prev);
8168
8178
  };
8169
8179
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
8170
8180
  children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
8171
8181
  ...{
8172
- className: "x78zum5 x6s0dn4 xl56j7k xe8ttls x167g77z xur7f20 x1ypdohk x1haqvef"
8182
+ className: "xrvj5dj x1mt1orb x6s0dn4 xlqzeqv xe8ttls x167g77z xur7f20 x1ypdohk x1haqvef"
8173
8183
  },
8174
8184
  onClick: handleToggle,
8175
8185
  children: [isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(Icon, {
@@ -8180,7 +8190,7 @@ function CollapsibleListItem({
8180
8190
  color: "secondary"
8181
8191
  }), /* @__PURE__ */ jsxRuntime.jsxs("div", {
8182
8192
  ...{
8183
- className: "x78zum5 xdt5ytf x1iyjqo2"
8193
+ className: "x78zum5 xdt5ytf x1iyjqo2 xb3r6kr"
8184
8194
  },
8185
8195
  children: [/* @__PURE__ */ jsxRuntime.jsx("span", {
8186
8196
  ..._stylex.props(fontStyles.body, styles$n.label),
@@ -8202,11 +8212,19 @@ const styles$n = {
8202
8212
  label: {
8203
8213
  flexGrow: "x1iyjqo2",
8204
8214
  fontWeight: "x1xlr1w8",
8215
+ overflow: "xb3r6kr",
8216
+ overflowX: null,
8217
+ overflowY: null,
8218
+ textOverflow: "xlyipyv",
8205
8219
  $$css: true
8206
8220
  },
8207
8221
  sublabel: {
8208
8222
  flexGrow: "x1iyjqo2",
8209
8223
  color: "x12ohj93",
8224
+ overflow: "xb3r6kr",
8225
+ overflowX: null,
8226
+ overflowY: null,
8227
+ textOverflow: "xlyipyv",
8210
8228
  $$css: true
8211
8229
  }
8212
8230
  };
@@ -25898,6 +25916,46 @@ function ClearButton({
25898
25916
  onClick
25899
25917
  });
25900
25918
  }
25919
+ function sortFieldInfoOrder(field) {
25920
+ if (field.kind === "join") {
25921
+ return 3;
25922
+ } else if (field.kind === "view") {
25923
+ return 2;
25924
+ } else if (field.kind === "dimension") {
25925
+ return 1;
25926
+ } else {
25927
+ return 0;
25928
+ }
25929
+ }
25930
+ function sortFieldInfos(fields) {
25931
+ return fields.sort((a, b2) => {
25932
+ const orderA = sortFieldInfoOrder(a);
25933
+ const orderB = sortFieldInfoOrder(b2);
25934
+ return orderA === orderB ? a.name.localeCompare(b2.name) : orderB - orderA;
25935
+ });
25936
+ }
25937
+ const INDEX_FIELDS = ["fieldName", "fieldPath", "fieldValue", "fieldType", "fieldRange", "weight"];
25938
+ function isIndexView(field) {
25939
+ const allFields = /* @__PURE__ */ new Set([...INDEX_FIELDS, ...field.schema.fields.map((field2) => field2.name)]);
25940
+ return allFields.size === INDEX_FIELDS.length;
25941
+ }
25942
+ function getViewDefinition(parent) {
25943
+ return parent instanceof QB.ASTArrowQueryDefinition ? parent.view : parent.definition;
25944
+ }
25945
+ function getInputSchemaFromViewParent(parent) {
25946
+ const definition = getViewDefinition(parent);
25947
+ return definition.getInputSchema();
25948
+ }
25949
+ function viewParentHasField(parent, field, path) {
25950
+ const definition = getViewDefinition(parent);
25951
+ if (definition instanceof QB.ASTSegmentViewDefinition) {
25952
+ return definition.hasField(field.name, path);
25953
+ }
25954
+ return false;
25955
+ }
25956
+ function viewParentDoesNotHaveField(parent, field, path) {
25957
+ return !viewParentHasField(parent, field, path);
25958
+ }
25901
25959
  function segmentHasLimit(segment) {
25902
25960
  return segment.operations.items.find((operation) => operation instanceof QB.ASTLimitViewOperation) !== void 0;
25903
25961
  }
@@ -25923,11 +25981,21 @@ function segmentNestNo(segment, name) {
25923
25981
  function addGroupBy(rootQuery, segment, field, path, setQuery) {
25924
25982
  segment.addGroupBy(field.name, path);
25925
25983
  if (!segmentHasLimit(segment)) {
25926
- segment.setLimit(10);
25984
+ segment.setLimit(1e3);
25927
25985
  }
25928
- segment.addOrderBy(field.name);
25929
25986
  setQuery == null ? void 0 : setQuery(rootQuery.build());
25930
25987
  }
25988
+ function getSegmentIfPresent(parent) {
25989
+ const definition = getViewDefinition(parent);
25990
+ if (definition instanceof QB.ASTSegmentViewDefinition) {
25991
+ return definition;
25992
+ } else if (definition instanceof QB.ASTRefinementViewDefinition) {
25993
+ if (definition.refinement instanceof QB.ASTSegmentViewDefinition) {
25994
+ return definition.refinement;
25995
+ }
25996
+ }
25997
+ return void 0;
25998
+ }
25931
25999
  const addMenuStyles = {
25932
26000
  content: {
25933
26001
  background: "x82tljd",
@@ -26018,29 +26086,6 @@ const addMenuStyles = {
26018
26086
  $$css: true
26019
26087
  }
26020
26088
  };
26021
- function sortFieldInfoOrder(field) {
26022
- if (field.kind === "join") {
26023
- return 3;
26024
- } else if (field.kind === "view") {
26025
- return 2;
26026
- } else if (field.kind === "dimension") {
26027
- return 1;
26028
- } else {
26029
- return 0;
26030
- }
26031
- }
26032
- function sortFieldInfos(fields) {
26033
- return fields.sort((a, b2) => {
26034
- const orderA = sortFieldInfoOrder(a);
26035
- const orderB = sortFieldInfoOrder(b2);
26036
- return orderA === orderB ? a.name.localeCompare(b2.name) : orderB - orderA;
26037
- });
26038
- }
26039
- const INDEX_FIELDS = ["fieldName", "fieldPath", "fieldValue", "fieldType", "fieldRange", "weight"];
26040
- function isIndexView(field) {
26041
- const allFields = /* @__PURE__ */ new Set([...INDEX_FIELDS, ...field.schema.fields.map((field2) => field2.name)]);
26042
- return allFields.size === INDEX_FIELDS.length;
26043
- }
26044
26089
  function atomicTypeToIcon(type) {
26045
26090
  return atomicTypeMap[type];
26046
26091
  }
@@ -26482,7 +26527,7 @@ const styles$d = {
26482
26527
  }
26483
26528
  };
26484
26529
  function FieldList({
26485
- segment,
26530
+ view,
26486
26531
  fields,
26487
26532
  onClick,
26488
26533
  search,
@@ -26492,7 +26537,7 @@ function FieldList({
26492
26537
  const groups = React.useMemo(() => {
26493
26538
  const groups2 = [];
26494
26539
  const buildGroups = (types22, path, name, fields2) => {
26495
- const filteredFields = sortFieldInfos(fields2).filter((field) => field.kind !== "join").filter((field) => field.name.includes(search) && types22.includes(field.kind)).filter((field) => filter ? filter(segment, field, path) : true);
26540
+ 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);
26496
26541
  const joins = fields2.filter((field) => field.kind === "join");
26497
26542
  if (filteredFields.length) {
26498
26543
  groups2.push({
@@ -26513,7 +26558,7 @@ function FieldList({
26513
26558
  };
26514
26559
  buildGroups(types2, [], "Source", fields);
26515
26560
  return groups2;
26516
- }, [fields, filter, search, segment, types2]);
26561
+ }, [fields, filter, search, view, types2]);
26517
26562
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
26518
26563
  children: groups.length ? groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", {
26519
26564
  children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -26536,7 +26581,8 @@ function FieldList({
26536
26581
  tooltipProps: {
26537
26582
  side: "right",
26538
26583
  align: "start",
26539
- sideOffset: 4
26584
+ sideOffset: 4,
26585
+ alignOffset: 24
26540
26586
  }
26541
26587
  })
26542
26588
  }, group.name + ":" + field.name))]
@@ -26556,7 +26602,7 @@ const styles$c = {
26556
26602
  }
26557
26603
  };
26558
26604
  function FieldMenu({
26559
- segment,
26605
+ view,
26560
26606
  fields,
26561
26607
  types: types2,
26562
26608
  filter,
@@ -26581,7 +26627,7 @@ function FieldMenu({
26581
26627
  flex: 1
26582
26628
  },
26583
26629
  children: /* @__PURE__ */ jsxRuntime.jsx(FieldList, {
26584
- segment,
26630
+ view,
26585
26631
  fields,
26586
26632
  search,
26587
26633
  types: types2,
@@ -26593,7 +26639,7 @@ function FieldMenu({
26593
26639
  }
26594
26640
  function OperationActionTitle({
26595
26641
  actionTitle,
26596
- segment,
26642
+ view,
26597
26643
  fields,
26598
26644
  title,
26599
26645
  types: types2,
@@ -26620,10 +26666,10 @@ function OperationActionTitle({
26620
26666
  align: "start",
26621
26667
  alignOffset: -16,
26622
26668
  children: /* @__PURE__ */ jsxRuntime.jsx(FieldMenu, {
26623
- segment,
26669
+ view,
26624
26670
  fields,
26625
26671
  types: types2,
26626
- filter: (segment2, field, path) => !segment2.hasField(field.name, path),
26672
+ filter: viewParentDoesNotHaveField,
26627
26673
  onClick
26628
26674
  })
26629
26675
  })
@@ -26657,7 +26703,7 @@ function FieldHover({
26657
26703
  }
26658
26704
  function GroupByOperations({
26659
26705
  rootQuery,
26660
- segment,
26706
+ view,
26661
26707
  groupBys
26662
26708
  }) {
26663
26709
  const {
@@ -26668,16 +26714,17 @@ function GroupByOperations({
26668
26714
  }
26669
26715
  const {
26670
26716
  fields
26671
- } = segment.getInputSchema();
26717
+ } = getInputSchemaFromViewParent(view);
26672
26718
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
26673
26719
  children: [/* @__PURE__ */ jsxRuntime.jsx(OperationActionTitle, {
26674
26720
  title: "group by",
26675
26721
  actionTitle: "Add group by",
26676
26722
  rootQuery,
26677
- segment,
26723
+ view,
26678
26724
  fields,
26679
26725
  types: ["dimension"],
26680
26726
  onClick: (field, path) => {
26727
+ const segment = view.getOrAddDefaultSegment();
26681
26728
  addGroupBy(rootQuery, segment, field, path, setQuery);
26682
26729
  }
26683
26730
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -27854,6 +27901,28 @@ function dateTimeFilterChangeType(filter, type) {
27854
27901
  return filter;
27855
27902
  }
27856
27903
  }
27904
+ class ErrorElement extends React__namespace.Component {
27905
+ constructor(props2) {
27906
+ super(props2);
27907
+ this.state = {
27908
+ hasError: false
27909
+ };
27910
+ }
27911
+ static getDerivedStateFromError(_error) {
27912
+ return {
27913
+ hasError: true
27914
+ };
27915
+ }
27916
+ componentDidCatch(error, info) {
27917
+ console.error(error, info);
27918
+ }
27919
+ render() {
27920
+ if (this.state.hasError) {
27921
+ return this.props.fallback;
27922
+ }
27923
+ return this.props.children;
27924
+ }
27925
+ }
27857
27926
  function WhereOperations({
27858
27927
  rootQuery,
27859
27928
  wheres
@@ -27871,117 +27940,139 @@ function WhereOperations({
27871
27940
  }), /* @__PURE__ */ jsxRuntime.jsx("div", {
27872
27941
  ..._stylex.props(styles$h.tokenContainer),
27873
27942
  children: wheres.map((where, key2) => {
27874
- const {
27875
- fieldReference,
27876
- filterString
27877
- } = where.filter;
27878
- const fieldInfo = fieldReference.getFieldInfo();
27879
- if (fieldInfo.kind !== "dimension" && fieldInfo.kind !== "measure") {
27880
- return null;
27881
- }
27882
- const icon = atomicTypeToIcon(fieldInfo.type.kind);
27883
- const color = fieldKindToColor(fieldInfo.kind);
27884
- const filter = where.filter.getFilter();
27885
- let rhsToken = null;
27886
- if (filter.kind === "string") {
27887
- rhsToken = /* @__PURE__ */ jsxRuntime.jsx(StringFilterToken, {
27888
- fieldInfo,
27889
- path: where.filter.fieldReference.path ?? [],
27890
- filter: filter.parsed,
27891
- setFilter: (filter2) => {
27892
- where.filter.setFilter({
27893
- kind: "string",
27894
- parsed: filter2
27895
- });
27896
- setQuery == null ? void 0 : setQuery(rootQuery.build());
27897
- }
27898
- }, key2);
27899
- }
27900
- if (filter.kind === "boolean" && filter.parsed) {
27901
- rhsToken = /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterToken, {
27902
- fieldInfo,
27903
- filter: filter.parsed,
27904
- setFilter: (filter2) => {
27905
- where.filter.setFilter({
27906
- kind: "boolean",
27907
- parsed: filter2
27908
- });
27909
- setQuery == null ? void 0 : setQuery(rootQuery.build());
27910
- }
27911
- }, key2);
27912
- }
27913
- if (filter.kind === "number" && filter.parsed) {
27914
- rhsToken = /* @__PURE__ */ jsxRuntime.jsx(NumberFilterToken, {
27915
- fieldInfo,
27916
- filter: filter.parsed,
27917
- setFilter: (filter2) => {
27918
- where.filter.setFilter({
27919
- kind: "number",
27920
- parsed: filter2
27921
- });
27922
- setQuery == null ? void 0 : setQuery(rootQuery.build());
27923
- }
27924
- }, key2);
27925
- }
27926
- if (filter.kind === "date" && filter.parsed) {
27927
- rhsToken = /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterToken, {
27928
- fieldInfo,
27929
- filter: filter.parsed,
27930
- setFilter: (filter2) => {
27931
- where.filter.setFilter({
27932
- kind: "date",
27933
- parsed: filter2
27934
- });
27935
- setQuery == null ? void 0 : setQuery(rootQuery.build());
27936
- }
27937
- }, key2);
27938
- }
27939
- if (filter.kind === "timestamp" && filter.parsed) {
27940
- rhsToken = /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterToken, {
27941
- fieldInfo,
27942
- filter: filter.parsed,
27943
- setFilter: (filter2) => {
27944
- where.filter.setFilter({
27945
- kind: "timestamp",
27946
- parsed: filter2
27947
- });
27948
- setQuery == null ? void 0 : setQuery(rootQuery.build());
27949
- }
27950
- }, key2);
27951
- }
27952
- const {
27953
- op,
27954
- value
27955
- } = parsedToLabels(filter, filterString);
27956
- if (!rhsToken) {
27957
- rhsToken = /* @__PURE__ */ jsxRuntime.jsxs(TokenGroup, {
27958
- color,
27959
- children: [/* @__PURE__ */ jsxRuntime.jsx(Token, {
27960
- icon,
27961
- label: fieldInfo.name
27962
- }), /* @__PURE__ */ jsxRuntime.jsx(Token, {
27963
- label: op
27964
- }), /* @__PURE__ */ jsxRuntime.jsx(Token, {
27965
- label: value
27966
- })]
27967
- });
27968
- }
27969
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
27970
- ..._stylex.props(hoverStyles.main),
27971
- children: [rhsToken, /* @__PURE__ */ jsxRuntime.jsx("div", {
27972
- ..._stylex.props(hoverStyles.hoverActions),
27973
- children: /* @__PURE__ */ jsxRuntime.jsx(ClearButton, {
27943
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorElement, {
27944
+ fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", {
27945
+ children: ["Invalid filter", /* @__PURE__ */ jsxRuntime.jsx(ClearButton, {
27974
27946
  onClick: () => {
27975
27947
  where.delete();
27976
27948
  setQuery == null ? void 0 : setQuery(rootQuery.build());
27977
27949
  }
27978
- })
27979
- })]
27950
+ })]
27951
+ }),
27952
+ children: /* @__PURE__ */ jsxRuntime.jsx(SingleWhereOperation, {
27953
+ where,
27954
+ rootQuery
27955
+ })
27980
27956
  }, key2);
27981
27957
  })
27982
27958
  })]
27983
27959
  });
27984
27960
  }
27961
+ function SingleWhereOperation({
27962
+ rootQuery,
27963
+ where
27964
+ }) {
27965
+ const {
27966
+ fieldReference,
27967
+ filterString
27968
+ } = where.filter;
27969
+ const fieldInfo = fieldReference.getFieldInfo();
27970
+ const {
27971
+ setQuery
27972
+ } = React.useContext(QueryEditorContext);
27973
+ if (fieldInfo.kind !== "dimension" && fieldInfo.kind !== "measure") {
27974
+ return null;
27975
+ }
27976
+ const icon = atomicTypeToIcon(fieldInfo.type.kind);
27977
+ const color = fieldKindToColor(fieldInfo.kind);
27978
+ const filter = where.filter.getFilter();
27979
+ let rhsToken = null;
27980
+ if (filter.kind === "string") {
27981
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsx(StringFilterToken, {
27982
+ fieldInfo,
27983
+ path: where.filter.fieldReference.path ?? [],
27984
+ filter: filter.parsed,
27985
+ setFilter: (filter2) => {
27986
+ where.filter.setFilter({
27987
+ kind: "string",
27988
+ parsed: filter2
27989
+ });
27990
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
27991
+ }
27992
+ });
27993
+ }
27994
+ if (filter.kind === "boolean" && filter.parsed) {
27995
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterToken, {
27996
+ fieldInfo,
27997
+ filter: filter.parsed,
27998
+ setFilter: (filter2) => {
27999
+ where.filter.setFilter({
28000
+ kind: "boolean",
28001
+ parsed: filter2
28002
+ });
28003
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
28004
+ }
28005
+ });
28006
+ }
28007
+ if (filter.kind === "number" && filter.parsed) {
28008
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsx(NumberFilterToken, {
28009
+ fieldInfo,
28010
+ filter: filter.parsed,
28011
+ setFilter: (filter2) => {
28012
+ where.filter.setFilter({
28013
+ kind: "number",
28014
+ parsed: filter2
28015
+ });
28016
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
28017
+ }
28018
+ });
28019
+ }
28020
+ if (filter.kind === "date" && filter.parsed) {
28021
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterToken, {
28022
+ fieldInfo,
28023
+ filter: filter.parsed,
28024
+ setFilter: (filter2) => {
28025
+ where.filter.setFilter({
28026
+ kind: "date",
28027
+ parsed: filter2
28028
+ });
28029
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
28030
+ }
28031
+ });
28032
+ }
28033
+ if (filter.kind === "timestamp" && filter.parsed) {
28034
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterToken, {
28035
+ fieldInfo,
28036
+ filter: filter.parsed,
28037
+ setFilter: (filter2) => {
28038
+ where.filter.setFilter({
28039
+ kind: "timestamp",
28040
+ parsed: filter2
28041
+ });
28042
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
28043
+ }
28044
+ });
28045
+ }
28046
+ const {
28047
+ op,
28048
+ value
28049
+ } = parsedToLabels(filter, filterString);
28050
+ if (!rhsToken) {
28051
+ rhsToken = /* @__PURE__ */ jsxRuntime.jsxs(TokenGroup, {
28052
+ color,
28053
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Token, {
28054
+ icon,
28055
+ label: fieldInfo.name
28056
+ }), /* @__PURE__ */ jsxRuntime.jsx(Token, {
28057
+ label: op
28058
+ }), /* @__PURE__ */ jsxRuntime.jsx(Token, {
28059
+ label: value
28060
+ })]
28061
+ });
28062
+ }
28063
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28064
+ ..._stylex.props(hoverStyles.main),
28065
+ children: [rhsToken, /* @__PURE__ */ jsxRuntime.jsx("div", {
28066
+ ..._stylex.props(hoverStyles.hoverActions),
28067
+ children: /* @__PURE__ */ jsxRuntime.jsx(ClearButton, {
28068
+ onClick: () => {
28069
+ where.delete();
28070
+ setQuery == null ? void 0 : setQuery(rootQuery.build());
28071
+ }
28072
+ })
28073
+ })]
28074
+ });
28075
+ }
27985
28076
  const parsedToLabels = (parsed, filterString) => {
27986
28077
  if (parsed.parsed === null) {
27987
28078
  return {
@@ -28188,7 +28279,7 @@ function LimitOperation({
28188
28279
  }
28189
28280
  function AggregateOperations({
28190
28281
  rootQuery,
28191
- segment,
28282
+ view,
28192
28283
  aggregates
28193
28284
  }) {
28194
28285
  const {
@@ -28199,16 +28290,17 @@ function AggregateOperations({
28199
28290
  }
28200
28291
  const {
28201
28292
  fields
28202
- } = segment.getInputSchema();
28293
+ } = getInputSchemaFromViewParent(view);
28203
28294
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28204
28295
  children: [/* @__PURE__ */ jsxRuntime.jsx(OperationActionTitle, {
28205
28296
  title: "aggregate",
28206
28297
  actionTitle: "Add aggregate",
28207
28298
  rootQuery,
28208
- segment,
28299
+ view,
28209
28300
  fields,
28210
28301
  types: ["measure"],
28211
28302
  onClick: (field, path) => {
28303
+ const segment = view.getOrAddDefaultSegment();
28212
28304
  segment.addAggregate(field.name, path);
28213
28305
  setQuery == null ? void 0 : setQuery(rootQuery.build());
28214
28306
  }
@@ -28319,6 +28411,7 @@ function View({
28319
28411
  view
28320
28412
  }), /* @__PURE__ */ jsxRuntime.jsx(ViewDefinition, {
28321
28413
  rootQuery,
28414
+ view,
28322
28415
  viewDef: view.definition
28323
28416
  })]
28324
28417
  });
@@ -28423,12 +28516,13 @@ function AddItem({
28423
28516
  }
28424
28517
  function AddLimit({
28425
28518
  rootQuery,
28426
- segment
28519
+ view
28427
28520
  }) {
28428
28521
  const {
28429
28522
  setQuery
28430
28523
  } = React.useContext(QueryEditorContext);
28431
- const hasLimit = React.useMemo(() => segmentHasLimit(segment), [segment]);
28524
+ const segment = getSegmentIfPresent(view);
28525
+ const hasLimit = segment ? segmentHasLimit(segment) : false;
28432
28526
  return /* @__PURE__ */ jsxRuntime.jsx(AddItem, {
28433
28527
  icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, {
28434
28528
  name: "limit"
@@ -28436,32 +28530,34 @@ function AddLimit({
28436
28530
  label: "Limit",
28437
28531
  disable: () => hasLimit,
28438
28532
  onClick: () => {
28439
- segment.setLimit(10);
28533
+ const segment2 = view.getOrAddDefaultSegment();
28534
+ segment2.setLimit(10);
28440
28535
  setQuery == null ? void 0 : setQuery(rootQuery.build());
28441
28536
  }
28442
28537
  });
28443
28538
  }
28444
28539
  function AddEmptyNest({
28445
28540
  rootQuery,
28446
- segment
28541
+ view
28447
28542
  }) {
28448
28543
  const {
28449
28544
  setQuery
28450
28545
  } = React.useContext(QueryEditorContext);
28451
- const nestNo = segmentNestNo(segment, `Nest`);
28452
28546
  return /* @__PURE__ */ jsxRuntime.jsx(AddItem, {
28453
28547
  icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, {
28454
28548
  name: "nest"
28455
28549
  }),
28456
28550
  label: "Add blank nested query",
28457
28551
  onClick: () => {
28552
+ const segment = view.getOrAddDefaultSegment();
28553
+ const nestNo = segmentNestNo(segment, `Nest`);
28458
28554
  segment.addEmptyNest(nestNo > 1 ? `Nest ${nestNo}` : `Nest`);
28459
28555
  setQuery == null ? void 0 : setQuery(rootQuery.build());
28460
28556
  }
28461
28557
  });
28462
28558
  }
28463
28559
  function AddFieldItem({
28464
- segment,
28560
+ view,
28465
28561
  fields,
28466
28562
  icon,
28467
28563
  label,
@@ -28523,7 +28619,7 @@ function AddFieldItem({
28523
28619
  }), /* @__PURE__ */ jsxRuntime.jsx(FieldMenu, {
28524
28620
  types: types2,
28525
28621
  filter,
28526
- segment,
28622
+ view,
28527
28623
  fields,
28528
28624
  onClick
28529
28625
  })]
@@ -28533,21 +28629,23 @@ function AddFieldItem({
28533
28629
  }
28534
28630
  function AddOrderBy({
28535
28631
  rootQuery,
28536
- segment
28632
+ view
28537
28633
  }) {
28538
28634
  const {
28539
28635
  setQuery
28540
28636
  } = React.useContext(QueryEditorContext);
28541
- const outputSchemaFields = segment.getOutputSchema().fields;
28542
- const fields = React.useMemo(() => outputSchemaFields.filter((field) => field.kind === "dimension").filter((field) => ORDERABLE_TYPES$1.includes(field.type.kind)).filter((field) => !segmentHasOrderBy(segment, field.name)), [outputSchemaFields, segment]);
28637
+ const outputSchemaFields = view.getOutputSchema().fields;
28638
+ const segment = getSegmentIfPresent(view);
28639
+ const fields = React.useMemo(() => outputSchemaFields.filter((field) => field.kind === "dimension").filter((field) => ORDERABLE_TYPES$1.includes(field.type.kind)).filter((field) => segment ? !segmentHasOrderBy(segment, field.name) : true), [outputSchemaFields, segment]);
28543
28640
  return /* @__PURE__ */ jsxRuntime.jsx(AddFieldItem, {
28544
28641
  label: "Add order by",
28545
28642
  icon: "orderBy",
28546
- segment,
28643
+ view,
28547
28644
  fields,
28548
28645
  types: ["dimension"],
28549
28646
  onClick: (field) => {
28550
- segment.addOrderBy(field.name, "asc");
28647
+ const segment2 = view.getOrAddDefaultSegment();
28648
+ segment2.addOrderBy(field.name, "asc");
28551
28649
  setQuery == null ? void 0 : setQuery(rootQuery.build());
28552
28650
  },
28553
28651
  disabledMessage: "There must be at least one field in the output to order by."
@@ -28556,44 +28654,46 @@ function AddOrderBy({
28556
28654
  const ORDERABLE_TYPES$1 = ["string_type", "number_type", "boolean_type", "date_type", "timestamp_type"];
28557
28655
  function AddGroupBy({
28558
28656
  rootQuery,
28559
- segment
28657
+ view
28560
28658
  }) {
28561
28659
  const {
28562
28660
  setQuery
28563
28661
  } = React.useContext(QueryEditorContext);
28564
28662
  const {
28565
28663
  fields
28566
- } = segment.getInputSchema();
28664
+ } = getInputSchemaFromViewParent(view);
28567
28665
  return /* @__PURE__ */ jsxRuntime.jsx(AddFieldItem, {
28568
28666
  label: "Add group by",
28569
28667
  icon: "groupBy",
28570
- segment,
28668
+ view,
28571
28669
  fields,
28572
28670
  types: ["dimension"],
28573
- filter: (segment2, field, path) => !segment2.hasField(field.name, path),
28671
+ filter: viewParentDoesNotHaveField,
28574
28672
  onClick: (field, path) => {
28673
+ const segment = view.getOrAddDefaultSegment();
28575
28674
  addGroupBy(rootQuery, segment, field, path, setQuery);
28576
28675
  }
28577
28676
  });
28578
28677
  }
28579
28678
  function AddAggregate({
28580
28679
  rootQuery,
28581
- segment
28680
+ view
28582
28681
  }) {
28583
28682
  const {
28584
28683
  setQuery
28585
28684
  } = React.useContext(QueryEditorContext);
28586
28685
  const {
28587
28686
  fields
28588
- } = segment.getInputSchema();
28687
+ } = getInputSchemaFromViewParent(view);
28589
28688
  return /* @__PURE__ */ jsxRuntime.jsx(AddFieldItem, {
28590
28689
  label: "Add aggregate",
28591
28690
  icon: "aggregate",
28592
- segment,
28691
+ view,
28593
28692
  fields,
28594
28693
  types: ["measure"],
28595
- filter: (segment2, field, path) => !segment2.hasField(field.name, path),
28694
+ filter: viewParentDoesNotHaveField,
28596
28695
  onClick: (field, path) => {
28696
+ const segment = view.getOrAddDefaultSegment();
28597
28697
  segment.addAggregate(field.name, path);
28598
28698
  setQuery == null ? void 0 : setQuery(rootQuery.build());
28599
28699
  }
@@ -28601,22 +28701,23 @@ function AddAggregate({
28601
28701
  }
28602
28702
  function AddWhere({
28603
28703
  rootQuery,
28604
- segment
28704
+ view
28605
28705
  }) {
28606
28706
  const {
28607
28707
  setQuery
28608
28708
  } = React.useContext(QueryEditorContext);
28609
28709
  const {
28610
28710
  fields
28611
- } = segment.getInputSchema();
28711
+ } = getInputSchemaFromViewParent(view);
28612
28712
  return /* @__PURE__ */ jsxRuntime.jsx(AddFieldItem, {
28613
28713
  label: "Add filter",
28614
28714
  icon: "filter",
28615
- segment,
28715
+ view,
28616
28716
  fields,
28617
28717
  types: ["measure", "dimension"],
28618
28718
  filter: (_segment, field) => (field.kind === "dimension" || field.kind === "measure") && FILTERABLE_TYPES$1.has(field.type.kind),
28619
28719
  onClick: (field, path) => {
28720
+ const segment = view.getOrAddDefaultSegment();
28620
28721
  if (field.kind === "dimension" || field.kind === "measure") {
28621
28722
  if (field.type.kind === "string_type") {
28622
28723
  segment.addWhere(field.name, path, "-null");
@@ -28637,24 +28738,24 @@ function AddWhere({
28637
28738
  const FILTERABLE_TYPES$1 = /* @__PURE__ */ new Set(["string_type", "boolean_type", "number_type", "date_type", "timestamp_type"]);
28638
28739
  function AddView({
28639
28740
  rootQuery,
28640
- view,
28641
- segment
28741
+ view
28642
28742
  }) {
28643
28743
  const {
28644
28744
  setQuery
28645
28745
  } = React.useContext(QueryEditorContext);
28646
- const allFields = segment.getInputSchema().fields;
28746
+ const allFields = getInputSchemaFromViewParent(view).fields;
28647
28747
  const fields = React.useMemo(() => allFields.filter((field) => field.kind === "view" && !isIndexView(field)), [allFields]);
28648
28748
  return /* @__PURE__ */ jsxRuntime.jsx(AddFieldItem, {
28649
28749
  label: "Add view",
28650
28750
  icon: "view",
28651
- segment,
28751
+ view,
28652
28752
  fields,
28653
28753
  types: ["view"],
28654
28754
  onClick: (field) => {
28655
- if (view === rootQuery && rootQuery.isEmpty()) {
28755
+ if (rootQuery.isEmpty()) {
28656
28756
  rootQuery.setView(field.name);
28657
28757
  } else {
28758
+ const segment = view.getOrAddDefaultSegment();
28658
28759
  const nestNo = segmentNestNo(segment, field.name);
28659
28760
  segment.addNest(field.name, nestNo > 1 ? `${field.name} ${nestNo}` : void 0);
28660
28761
  }
@@ -28749,7 +28850,6 @@ function AddMenu({
28749
28850
  setQuery
28750
28851
  } = React.useContext(QueryEditorContext);
28751
28852
  const [search, setSearch] = React.useState("");
28752
- const segment = view.getOrAddDefaultSegment();
28753
28853
  return /* @__PURE__ */ jsxRuntime.jsxs(Root2$2, {
28754
28854
  open,
28755
28855
  onOpenChange: (open2) => {
@@ -28789,16 +28889,16 @@ function AddMenu({
28789
28889
  flex: 1
28790
28890
  },
28791
28891
  children: [/* @__PURE__ */ jsxRuntime.jsx(FieldList, {
28792
- segment,
28793
- fields: segment.getInputSchema().fields,
28892
+ view,
28893
+ fields: getInputSchemaFromViewParent(view).fields,
28794
28894
  types: ["dimension", "measure", "view"],
28795
28895
  onClick: function(field, path) {
28896
+ const segment = view.getOrAddDefaultSegment();
28796
28897
  if (field.kind === "dimension") {
28797
28898
  segment.addGroupBy(field.name, path);
28798
28899
  if (!segmentHasLimit(segment)) {
28799
- segment.setLimit(10);
28900
+ segment.setLimit(1e3);
28800
28901
  }
28801
- segment.addOrderBy(field.name);
28802
28902
  } else if (field.kind === "measure") {
28803
28903
  segment.addAggregate(field.name, path);
28804
28904
  } else {
@@ -28813,6 +28913,7 @@ function AddMenu({
28813
28913
  onClick: (value) => {
28814
28914
  const path = value.fieldName.split(".");
28815
28915
  const name = path.pop();
28916
+ const segment = view.getOrAddDefaultSegment();
28816
28917
  segment.addWhere(name, path, {
28817
28918
  kind: "string",
28818
28919
  parsed: {
@@ -28826,26 +28927,25 @@ function AddMenu({
28826
28927
  }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
28827
28928
  children: [/* @__PURE__ */ jsxRuntime.jsx(AddGroupBy, {
28828
28929
  rootQuery,
28829
- segment
28930
+ view
28830
28931
  }), /* @__PURE__ */ jsxRuntime.jsx(AddAggregate, {
28831
28932
  rootQuery,
28832
- segment
28933
+ view
28833
28934
  }), /* @__PURE__ */ jsxRuntime.jsx(AddWhere, {
28834
28935
  rootQuery,
28835
- segment
28936
+ view
28836
28937
  }), /* @__PURE__ */ jsxRuntime.jsx(AddView, {
28837
28938
  rootQuery,
28838
- view,
28839
- segment
28939
+ view
28840
28940
  }), /* @__PURE__ */ jsxRuntime.jsx(Divider, {}), /* @__PURE__ */ jsxRuntime.jsx(AddLimit, {
28841
28941
  rootQuery,
28842
- segment
28942
+ view
28843
28943
  }), /* @__PURE__ */ jsxRuntime.jsx(AddOrderBy, {
28844
28944
  rootQuery,
28845
- segment
28945
+ view
28846
28946
  }), /* @__PURE__ */ jsxRuntime.jsx(AddEmptyNest, {
28847
28947
  rootQuery,
28848
- segment
28948
+ view
28849
28949
  })]
28850
28950
  })]
28851
28951
  })
@@ -28917,6 +29017,7 @@ function NestOperations({
28917
29017
  }
28918
29018
  function Operations({
28919
29019
  rootQuery,
29020
+ view,
28920
29021
  viewDef
28921
29022
  }) {
28922
29023
  const groupBys = [];
@@ -28925,7 +29026,10 @@ function Operations({
28925
29026
  const orderBys = [];
28926
29027
  const nests = [];
28927
29028
  let limit;
28928
- const segment = viewDef.getOrAddDefaultSegment();
29029
+ if (!(viewDef instanceof QB.ASTSegmentViewDefinition)) {
29030
+ return null;
29031
+ }
29032
+ const segment = viewDef;
28929
29033
  segment.operations.items.forEach((operation) => {
28930
29034
  if (operation instanceof QB.ASTGroupByViewOperation) {
28931
29035
  groupBys.push(operation);
@@ -28947,53 +29051,54 @@ function Operations({
28947
29051
  },
28948
29052
  children: [/* @__PURE__ */ jsxRuntime.jsx(GroupByOperations, {
28949
29053
  rootQuery,
28950
- segment,
29054
+ view,
28951
29055
  groupBys
28952
29056
  }), /* @__PURE__ */ jsxRuntime.jsx(AggregateOperations, {
28953
29057
  rootQuery,
28954
- segment,
29058
+ view,
28955
29059
  aggregates
28956
29060
  }), /* @__PURE__ */ jsxRuntime.jsx(WhereOperations, {
28957
29061
  rootQuery,
28958
- segment,
28959
29062
  wheres
28960
29063
  }), /* @__PURE__ */ jsxRuntime.jsx(OrderByOperations, {
28961
29064
  rootQuery,
28962
- segment,
28963
29065
  orderBys
28964
29066
  }), /* @__PURE__ */ jsxRuntime.jsx(NestOperations, {
28965
29067
  rootQuery,
28966
- segment,
28967
29068
  nests
28968
29069
  }), /* @__PURE__ */ jsxRuntime.jsx(LimitOperation, {
28969
29070
  rootQuery,
28970
- segment,
28971
29071
  limit
28972
29072
  })]
28973
29073
  });
28974
29074
  }
28975
29075
  function ViewDefinition({
28976
29076
  rootQuery,
29077
+ view,
28977
29078
  viewDef
28978
29079
  }) {
28979
29080
  if (viewDef instanceof QB.ASTArrowViewDefinition) {
28980
29081
  return /* @__PURE__ */ jsxRuntime.jsx(ViewDefinition, {
28981
29082
  rootQuery,
29083
+ view,
28982
29084
  viewDef: viewDef.view
28983
29085
  });
28984
29086
  } else if (viewDef instanceof QB.ASTRefinementViewDefinition) {
28985
29087
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
28986
29088
  children: [/* @__PURE__ */ jsxRuntime.jsx(ViewDefinition, {
28987
29089
  rootQuery,
29090
+ view,
28988
29091
  viewDef: viewDef.base
28989
29092
  }), /* @__PURE__ */ jsxRuntime.jsx(ViewDefinition, {
28990
29093
  rootQuery,
29094
+ view,
28991
29095
  viewDef: viewDef.refinement
28992
29096
  })]
28993
29097
  });
28994
29098
  } else if (viewDef instanceof QB.ASTSegmentViewDefinition) {
28995
29099
  return /* @__PURE__ */ jsxRuntime.jsx(Operations, {
28996
29100
  rootQuery,
29101
+ view,
28997
29102
  viewDef
28998
29103
  });
28999
29104
  } else {
@@ -29106,10 +29211,10 @@ function Query({
29106
29211
  },
29107
29212
  disabled: rootQuery.isEmpty()
29108
29213
  }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
29109
- }), /* @__PURE__ */ jsxRuntime.jsx(AddMenu, {
29214
+ }), query.definition instanceof QB.ASTArrowQueryDefinition ? /* @__PURE__ */ jsxRuntime.jsx(AddMenu, {
29110
29215
  rootQuery,
29111
- view: query
29112
- })]
29216
+ view: query.definition
29217
+ }) : null]
29113
29218
  }),
29114
29219
  collapsedControls: /* @__PURE__ */ jsxRuntime.jsx(VisualizationIcon, {
29115
29220
  view: query
@@ -29125,6 +29230,7 @@ function Query({
29125
29230
  view: query
29126
29231
  }), /* @__PURE__ */ jsxRuntime.jsx(ViewDefinition, {
29127
29232
  rootQuery,
29233
+ view: query.definition,
29128
29234
  viewDef: query.definition.view
29129
29235
  })]
29130
29236
  }) : null, query.isEmpty() ? /* @__PURE__ */ jsxRuntime.jsx("div", {
@@ -29256,7 +29362,7 @@ function Parameters({
29256
29362
  title: "Source parameters",
29257
29363
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
29258
29364
  ...{
29259
- className: "x78zum5 xf18ygs"
29365
+ className: "x78zum5 xdt5ytf x1jnr06f xnm25rq"
29260
29366
  },
29261
29367
  children: sourceParameters.map((parameter) => {
29262
29368
  var _a2;
@@ -29656,11 +29762,6 @@ function ResponseDisplay({
29656
29762
  title: "Empty Response",
29657
29763
  variant: "critical"
29658
29764
  };
29659
- } else if (!response.result) {
29660
- bannerProps = {
29661
- title: "Empty Result",
29662
- variant: "critical"
29663
- };
29664
29765
  } else if (response.error && !response.error.customRenderer) {
29665
29766
  const e = response.error;
29666
29767
  let variant;
@@ -29685,6 +29786,11 @@ function ResponseDisplay({
29685
29786
  children: e.content,
29686
29787
  variant
29687
29788
  };
29789
+ } else if (!response.result) {
29790
+ bannerProps = {
29791
+ title: "Empty Result",
29792
+ variant: "critical"
29793
+ };
29688
29794
  }
29689
29795
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
29690
29796
  children: [bannerProps && /* @__PURE__ */ jsxRuntime.jsx(Banner, {
@@ -29775,6 +29881,38 @@ const styles$4 = {
29775
29881
  $$css: true
29776
29882
  }
29777
29883
  };
29884
+ function DebugPane({
29885
+ query,
29886
+ debug
29887
+ }) {
29888
+ const [selectedDebugger, setSelectedDebugger] = React.useState();
29889
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
29890
+ children: [debug && /* @__PURE__ */ jsxRuntime.jsxs("div", {
29891
+ ...{
29892
+ className: "x78zum5 x167g77z x6s0dn4"
29893
+ },
29894
+ children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
29895
+ ..._stylex.props(fontStyles.largeBody),
29896
+ children: "Debug with:"
29897
+ }), /* @__PURE__ */ jsxRuntime.jsx(SelectDropdown, {
29898
+ options: debug.debuggers.map((d) => ({
29899
+ label: d,
29900
+ value: d
29901
+ })),
29902
+ value: selectedDebugger,
29903
+ onChange: (v2) => setSelectedDebugger(v2)
29904
+ }), /* @__PURE__ */ jsxRuntime.jsx(Button, {
29905
+ variant: "default",
29906
+ label: "Run",
29907
+ isDisabled: !selectedDebugger,
29908
+ onClick: () => selectedDebugger && debug.onDebugQuery(query, selectedDebugger)
29909
+ })]
29910
+ }), /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, {
29911
+ code: JSON.stringify(query, null, 2),
29912
+ language: "json"
29913
+ })]
29914
+ });
29915
+ }
29778
29916
  function ResultPanel({
29779
29917
  source,
29780
29918
  draftQuery,
@@ -29917,9 +30055,12 @@ function ResultPanel({
29917
30055
  ...{
29918
30056
  className: "xwp4ipm xh8yej3 x5yr21d x9f619"
29919
30057
  },
29920
- children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, {
29921
- code: JSON.stringify(draftQuery, null, 2),
29922
- language: "json"
30058
+ children: /* @__PURE__ */ jsxRuntime.jsx(DebugPane, {
30059
+ query: draftQuery,
30060
+ debug: options.debugOptions ? {
30061
+ debuggers: options.debugOptions.debuggers,
30062
+ onDebugQuery: options.debugOptions.onDebugQuery
30063
+ } : void 0
29923
30064
  })
29924
30065
  })]
29925
30066
  })]
@@ -30539,9 +30680,10 @@ function FieldGroupList({
30539
30680
  ..._stylex.props(fontStyles.body, styles$1.title),
30540
30681
  children: title
30541
30682
  }), /* @__PURE__ */ jsxRuntime.jsx(List$1, {
30542
- children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(CollapsibleListItem, {
30683
+ children: items.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsx(CollapsibleListItem, {
30543
30684
  label: getLabelFromPath(source, item.groupPath),
30544
30685
  sublabel: getSublabelFromPath(source, item.groupPath),
30686
+ isInitiallyExpanded: index2 === 0,
30545
30687
  children: item.items.map(({
30546
30688
  field,
30547
30689
  path
@@ -30617,12 +30759,17 @@ function SourcePanel({
30617
30759
  },
30618
30760
  children: [subpanelType == null ? /* @__PURE__ */ jsxRuntime.jsxs("div", {
30619
30761
  ...{
30620
- className: "x78zum5 x6s0dn4 x167g77z xdqdrvq"
30762
+ className: "x78zum5 x6s0dn4 x167g77z xdqdrvq xb3r6kr"
30621
30763
  },
30622
30764
  children: [/* @__PURE__ */ jsxRuntime.jsx(Icon, {
30623
30765
  name: "database",
30624
30766
  color: "gray"
30625
- }), source.name]
30767
+ }), /* @__PURE__ */ jsxRuntime.jsx("div", {
30768
+ ...{
30769
+ className: "xb3r6kr xlyipyv"
30770
+ },
30771
+ children: source.name
30772
+ })]
30626
30773
  }) : /* @__PURE__ */ jsxRuntime.jsx(Button, {
30627
30774
  icon: "chevronLeft",
30628
30775
  label: "Back",
@@ -30633,7 +30780,8 @@ function SourcePanel({
30633
30780
  children: /* @__PURE__ */ jsxRuntime.jsx(Button, {
30634
30781
  icon: "chevronLeft",
30635
30782
  tooltip: "Close the source panel",
30636
- onClick: () => setIsSourcePanelOpen(false)
30783
+ onClick: () => setIsSourcePanelOpen(false),
30784
+ size: "compact"
30637
30785
  })
30638
30786
  })]
30639
30787
  }), /* @__PURE__ */ jsxRuntime.jsx(TextInput, {