@malloydata/malloy-explorer 0.0.257-dev250417005958 → 0.0.264-dev250418182827

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -17,7 +17,7 @@ import * as React from "react";
17
17
  import React__default, { useLayoutEffect, useEffect, useMemo, useState, useRef, createElement, useCallback, useContext } from "react";
18
18
  import { jsx, Fragment, jsxs } from "react/jsx-runtime";
19
19
  import * as QB from "@malloydata/malloy-query-builder";
20
- import { ASTArrowQueryDefinition, ASTSegmentViewDefinition, ASTLimitViewOperation, ASTNestViewOperation, ASTRefinementViewDefinition, ASTOrderByViewOperation, ASTGroupByViewOperation, ASTAggregateViewOperation, ASTWhereViewOperation, ASTHavingViewOperation, ASTArrowViewDefinition } from "@malloydata/malloy-query-builder";
20
+ import { ASTArrowQueryDefinition, ASTSegmentViewDefinition, ASTNestViewOperation, ASTRefinementViewDefinition, ASTLimitViewOperation, ASTOrderByViewOperation, ASTGroupByViewOperation, ASTAggregateViewOperation, ASTWhereViewOperation, ASTHavingViewOperation, ASTArrowViewDefinition } from "@malloydata/malloy-query-builder";
21
21
  import { Tag } from "@malloydata/malloy-tag";
22
22
  import * as render from "@malloydata/render";
23
23
  import "@malloydata/render/webcomponent";
@@ -5094,10 +5094,10 @@ function Icon({
5094
5094
  return null;
5095
5095
  }
5096
5096
  return /* @__PURE__ */ jsx(IconComponent, {
5097
- ..._stylex.props(styles$A.main, colorVariants$3[color], SMALL_ICONS.includes(name) && styles$A.scaleUp, customStyle)
5097
+ ..._stylex.props(styles$F.main, colorVariants$3[color], SMALL_ICONS.includes(name) && styles$F.scaleUp, customStyle)
5098
5098
  });
5099
5099
  }
5100
- const styles$A = {
5100
+ const styles$F = {
5101
5101
  main: {
5102
5102
  display: "mly1rg5ohu",
5103
5103
  width: "mly1kky2od",
@@ -5170,17 +5170,17 @@ function Badge({
5170
5170
  customStyle
5171
5171
  }) {
5172
5172
  return /* @__PURE__ */ jsxs("div", {
5173
- ..._stylex.props(styles$z.main, colorVariants$2[color], customStyle),
5173
+ ..._stylex.props(styles$E.main, colorVariants$2[color], customStyle),
5174
5174
  children: [icon && /* @__PURE__ */ jsx(Icon, {
5175
5175
  color,
5176
5176
  name: icon
5177
5177
  }), /* @__PURE__ */ jsx("div", {
5178
- ..._stylex.props(fontStyles.badge, styles$z.label),
5178
+ ..._stylex.props(fontStyles.badge, styles$E.label),
5179
5179
  children: label
5180
5180
  })]
5181
5181
  });
5182
5182
  }
5183
- const styles$z = {
5183
+ const styles$E = {
5184
5184
  main: {
5185
5185
  display: "mly3nfvp2",
5186
5186
  height: "mly1qx5ct2",
@@ -5262,10 +5262,10 @@ function Divider({
5262
5262
  customStyle
5263
5263
  }) {
5264
5264
  return /* @__PURE__ */ jsx("div", {
5265
- ..._stylex.props(styles$y.main, orientationVariants[orientation], customStyle)
5265
+ ..._stylex.props(styles$D.main, orientationVariants[orientation], customStyle)
5266
5266
  });
5267
5267
  }
5268
- const styles$y = {
5268
+ const styles$D = {
5269
5269
  main: {
5270
5270
  background: "mly1xnbgy5",
5271
5271
  backgroundAttachment: null,
@@ -5318,7 +5318,7 @@ function ListItem({
5318
5318
  children: [startIcon && /* @__PURE__ */ jsx(Fragment, {
5319
5319
  children: startIcon
5320
5320
  }), /* @__PURE__ */ jsx("span", {
5321
- ..._stylex.props(fontStyles.body, styles$x.label),
5321
+ ..._stylex.props(fontStyles.body, styles$C.label),
5322
5322
  children: label
5323
5323
  }), badge && /* @__PURE__ */ jsx(Fragment, {
5324
5324
  children: badge
@@ -5327,7 +5327,7 @@ function ListItem({
5327
5327
  })]
5328
5328
  });
5329
5329
  }
5330
- const styles$x = {
5330
+ const styles$C = {
5331
5331
  label: {
5332
5332
  flexGrow: "mly1iyjqo2",
5333
5333
  $$css: true
@@ -6102,7 +6102,7 @@ function Button({
6102
6102
  ...props2
6103
6103
  }) {
6104
6104
  const button = /* @__PURE__ */ jsxs("button", {
6105
- ..._stylex.props(styles$w.main, colorVariants$1[variant], sizeVariants$1[size2], customStyle),
6105
+ ..._stylex.props(styles$B.main, colorVariants$1[variant], sizeVariants$1[size2], customStyle),
6106
6106
  ...onClick && {
6107
6107
  onClick: (e) => {
6108
6108
  e.preventDefault();
@@ -6118,9 +6118,9 @@ function Button({
6118
6118
  },
6119
6119
  children: [icon && /* @__PURE__ */ jsx(Icon, {
6120
6120
  name: icon,
6121
- customStyle: styles$w.icon
6121
+ customStyle: styles$B.icon
6122
6122
  }), label && /* @__PURE__ */ jsx("div", {
6123
- ..._stylex.props(variant === "primary" ? fontStyles.emphasized : fontStyles.body, styles$w.label),
6123
+ ..._stylex.props(variant === "primary" ? fontStyles.emphasized : fontStyles.body, styles$B.label),
6124
6124
  children: label
6125
6125
  })]
6126
6126
  }), isDisabled && /* @__PURE__ */ jsx("div", {
@@ -6147,7 +6147,7 @@ function Button({
6147
6147
  return button;
6148
6148
  }
6149
6149
  }
6150
- const styles$w = {
6150
+ const styles$B = {
6151
6151
  main: {
6152
6152
  display: "mly3nfvp2",
6153
6153
  flexDirection: "mlydt5ytf",
@@ -6394,7 +6394,7 @@ function Token({
6394
6394
  }) {
6395
6395
  const isInteractive = onClick !== void 0 || asButtonTrigger;
6396
6396
  const token2 = /* @__PURE__ */ jsxs("div", {
6397
- ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], !isInteractive && styles$v.nonInteractive, customStyle),
6397
+ ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], !isInteractive && styles$A.nonInteractive, customStyle),
6398
6398
  children: [icon && /* @__PURE__ */ jsx(Icon, {
6399
6399
  name: icon,
6400
6400
  customStyle: tokenStyles.icon
@@ -6429,7 +6429,7 @@ function Token({
6429
6429
  })]
6430
6430
  }) : token2;
6431
6431
  }
6432
- const styles$v = {
6432
+ const styles$A = {
6433
6433
  nonInteractive: {
6434
6434
  cursor: "mlyt0e3qv",
6435
6435
  background: "mly1np9qvj",
@@ -6453,7 +6453,7 @@ function TokenGroup({
6453
6453
  }) {
6454
6454
  const count2 = React.Children.count(children);
6455
6455
  return /* @__PURE__ */ jsx("div", {
6456
- ..._stylex.props(styles$u.main, customStyle),
6456
+ ..._stylex.props(styles$z.main, customStyle),
6457
6457
  children: React.Children.map(children, (child, index2) => /* @__PURE__ */ React.cloneElement(child, {
6458
6458
  customStyle: {
6459
6459
  ...child.props.customStyle,
@@ -6464,16 +6464,16 @@ function TokenGroup({
6464
6464
  });
6465
6465
  }
6466
6466
  const getChildStyle = (index2, count2) => {
6467
- if (count2 === 1) return styles$u.onlyChild;
6468
- if (index2 === 0) return styles$u.firstChild;
6469
- if (index2 === count2 - 1) return styles$u.lastChild;
6470
- return styles$u.innerChild;
6467
+ if (count2 === 1) return styles$z.onlyChild;
6468
+ if (index2 === 0) return styles$z.firstChild;
6469
+ if (index2 === count2 - 1) return styles$z.lastChild;
6470
+ return styles$z.innerChild;
6471
6471
  };
6472
6472
  const getTokenColor = (child, groupColor) => {
6473
6473
  const childColor = child.props.color;
6474
6474
  return childColor === void 0 ? groupColor : childColor;
6475
6475
  };
6476
- const styles$u = {
6476
+ const styles$z = {
6477
6477
  main: {
6478
6478
  display: "mlyrvj5dj",
6479
6479
  gridAutoFlow: "mly1mt1orb",
@@ -6545,7 +6545,7 @@ function ErrorIcon({
6545
6545
  },
6546
6546
  children: /* @__PURE__ */ jsx(Icon, {
6547
6547
  name: "warning",
6548
- customStyle: styles$t.errorIcon
6548
+ customStyle: styles$y.errorIcon
6549
6549
  })
6550
6550
  })
6551
6551
  }), /* @__PURE__ */ jsx(TooltipPortal, {
@@ -6558,7 +6558,7 @@ function ErrorIcon({
6558
6558
  })]
6559
6559
  });
6560
6560
  }
6561
- const styles$t = {
6561
+ const styles$y = {
6562
6562
  errorIcon: {
6563
6563
  color: "mly1e2nbdu",
6564
6564
  $$css: true
@@ -6603,28 +6603,29 @@ function EditableToken({
6603
6603
  className: "mly78zum5 mly6s0dn4"
6604
6604
  },
6605
6605
  children: [/* @__PURE__ */ jsxs("div", {
6606
- ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], isFocused && styles$s.focused, !!errorMessage && styles$s.hasError, customStyle),
6606
+ ..._stylex.props(tokenStyles.main, tokenColorVariants[color], tokenSizeVariants[size2], isFocused && styles$x.focused, !!errorMessage && styles$x.hasError, customStyle),
6607
6607
  children: [icon && /* @__PURE__ */ jsx(Icon, {
6608
6608
  name: icon,
6609
- customStyle: styles$s.icon
6609
+ customStyle: styles$x.icon
6610
6610
  }), /* @__PURE__ */ jsxs("span", {
6611
6611
  ...{
6612
- className: "mlywz0xwf mlynq0rdo"
6612
+ className: "mlywz0xwf"
6613
6613
  },
6614
6614
  children: [/* @__PURE__ */ jsx("span", {
6615
- ..._stylex.props(fontStyles.body, styles$s.placeholder),
6615
+ ..._stylex.props(fontStyles.body, styles$x.placeholder),
6616
6616
  style: {
6617
6617
  whiteSpaceCollapse: "preserve"
6618
6618
  },
6619
6619
  children: value
6620
6620
  }), /* @__PURE__ */ jsx("input", {
6621
- ..._stylex.props(styles$s.input, fontStyles.body),
6621
+ ..._stylex.props(styles$x.input, fontStyles.body),
6622
6622
  ref: inputRef,
6623
6623
  pattern: type === "number" ? "^-?[0-9.]*$" : void 0,
6624
6624
  value,
6625
6625
  onChange: handleChange,
6626
6626
  onFocus: handleFocus,
6627
- onBlur: handleBlur
6627
+ onBlur: handleBlur,
6628
+ size: 1
6628
6629
  })]
6629
6630
  }), onRemove && isFocused && /* @__PURE__ */ jsx("button", {
6630
6631
  ...{
@@ -6642,7 +6643,7 @@ function EditableToken({
6642
6643
  })]
6643
6644
  });
6644
6645
  }
6645
- const styles$s = {
6646
+ const styles$x = {
6646
6647
  focused: {
6647
6648
  background: "mlyotlr4g",
6648
6649
  backgroundAttachment: null,
@@ -6714,6 +6715,7 @@ const styles$s = {
6714
6715
  gridColumnStart: null,
6715
6716
  gridColumnEnd: null,
6716
6717
  whiteSpace: "mlyuxw1ft",
6718
+ minWidth: "mlygc0pbm",
6717
6719
  $$css: true
6718
6720
  },
6719
6721
  input: {
@@ -6725,7 +6727,6 @@ const styles$s = {
6725
6727
  gridColumn: null,
6726
6728
  gridColumnStart: null,
6727
6729
  gridColumnEnd: null,
6728
- minWidth: "mly1mnxie6",
6729
6730
  padding: "mly1717udv",
6730
6731
  paddingInline: null,
6731
6732
  paddingStart: null,
@@ -6761,6 +6762,7 @@ const styles$s = {
6761
6762
  outlineStyle: null,
6762
6763
  outlineWidth: null,
6763
6764
  whiteSpace: "mlyuxw1ft",
6765
+ minWidth: "mlygc0pbm",
6764
6766
  $$css: true
6765
6767
  }
6766
6768
  };
@@ -7985,12 +7987,12 @@ function TextInput({
7985
7987
  }
7986
7988
  };
7987
7989
  return /* @__PURE__ */ jsxs("div", {
7988
- ..._stylex.props(styles$r.main, isFocused && styles$r.focused, sizeVariants[size2], customStyle),
7990
+ ..._stylex.props(styles$w.main, isFocused && styles$w.focused, sizeVariants[size2], customStyle),
7989
7991
  children: [icon && /* @__PURE__ */ jsx(Icon, {
7990
7992
  name: icon,
7991
7993
  color: "secondary"
7992
7994
  }), /* @__PURE__ */ jsx("input", {
7993
- ..._stylex.props(fontStyles.body, styles$r.input),
7995
+ ..._stylex.props(fontStyles.body, styles$w.input),
7994
7996
  value,
7995
7997
  placeholder,
7996
7998
  onChange: handleChange,
@@ -7998,7 +8000,7 @@ function TextInput({
7998
8000
  onBlur: handleBlur,
7999
8001
  onKeyDown
8000
8002
  }), hasClear && /* @__PURE__ */ jsx("button", {
8001
- ..._stylex.props(fontStyles.supporting, styles$r.actionButton, value === "" && styles$r.hidden),
8003
+ ..._stylex.props(fontStyles.supporting, styles$w.actionButton, value === "" && styles$w.hidden),
8002
8004
  ref: buttonRef,
8003
8005
  onClick: () => onChange(""),
8004
8006
  tabIndex: 0,
@@ -8006,7 +8008,7 @@ function TextInput({
8006
8008
  })]
8007
8009
  });
8008
8010
  }
8009
- const styles$r = {
8011
+ const styles$w = {
8010
8012
  main: {
8011
8013
  display: "mly78zum5",
8012
8014
  alignItems: "mly6s0dn4",
@@ -8081,6 +8083,7 @@ const styles$r = {
8081
8083
  input: {
8082
8084
  flexGrow: "mly1iyjqo2",
8083
8085
  height: "mly1qx5ct2",
8086
+ minWidth: "mlygc0pbm",
8084
8087
  padding: "mly1717udv",
8085
8088
  paddingInline: null,
8086
8089
  paddingStart: null,
@@ -8214,7 +8217,7 @@ function SelectorToken({
8214
8217
  onValueChange: handleValueChange,
8215
8218
  required: true,
8216
8219
  children: [/* @__PURE__ */ jsxs(Trigger$3, {
8217
- ..._stylex.props(tokenStyles.main, styles$q.selectTrigger, tokenColorVariants[color], tokenSizeVariants[size2], fontStyles.body, tokenStyles.label, customStyle),
8220
+ ..._stylex.props(tokenStyles.main, styles$v.selectTrigger, tokenColorVariants[color], tokenSizeVariants[size2], fontStyles.body, tokenStyles.label, customStyle),
8218
8221
  children: [icon && /* @__PURE__ */ jsx(Icon, {
8219
8222
  name: icon,
8220
8223
  customStyle: tokenStyles.icon
@@ -8243,7 +8246,7 @@ function SelectorToken({
8243
8246
  size: "compact",
8244
8247
  icon: "search",
8245
8248
  hasClear: true,
8246
- customStyle: styles$q.searchInput,
8249
+ customStyle: styles$v.searchInput,
8247
8250
  onKeyDown: (event) => {
8248
8251
  const excludedKeys = ["ArrowUp", "ArrowDown"];
8249
8252
  if (!excludedKeys.includes(event.key)) {
@@ -8276,21 +8279,21 @@ function SelectItem({
8276
8279
  ...props2
8277
8280
  }) {
8278
8281
  return /* @__PURE__ */ jsxs(Item$1, {
8279
- ..._stylex.props(fontStyles.body, styles$q.selectItem),
8282
+ ..._stylex.props(fontStyles.body, styles$v.selectItem),
8280
8283
  value,
8281
8284
  ...props2,
8282
8285
  children: [value === selectedValue ? /* @__PURE__ */ jsx(Icon, {
8283
8286
  name: "radioChecked",
8284
- customStyle: styles$q.radioChecked
8287
+ customStyle: styles$v.radioChecked
8285
8288
  }) : /* @__PURE__ */ jsx(Icon, {
8286
8289
  name: "radioUnchecked",
8287
- customStyle: styles$q.radioUnchecked
8290
+ customStyle: styles$v.radioUnchecked
8288
8291
  }), /* @__PURE__ */ jsx(ItemText, {
8289
8292
  children
8290
8293
  })]
8291
8294
  });
8292
8295
  }
8293
- const styles$q = {
8296
+ const styles$v = {
8294
8297
  selectTrigger: {
8295
8298
  whiteSpace: "mlyuxw1ft",
8296
8299
  overflow: "mlyb3r6kr",
@@ -8380,7 +8383,7 @@ function Card({
8380
8383
  customStyle
8381
8384
  }) {
8382
8385
  return /* @__PURE__ */ jsxs("div", {
8383
- ..._stylex.props(styles$p.container, customStyle),
8386
+ ..._stylex.props(styles$u.container, customStyle),
8384
8387
  children: [/* @__PURE__ */ jsx("div", {
8385
8388
  ...{
8386
8389
  className: "mly1717udv"
@@ -8394,7 +8397,7 @@ function Card({
8394
8397
  })]
8395
8398
  });
8396
8399
  }
8397
- const styles$p = {
8400
+ const styles$u = {
8398
8401
  container: {
8399
8402
  display: "mly78zum5",
8400
8403
  flexDirection: "mlydt5ytf",
@@ -8485,10 +8488,10 @@ function CollapsibleListItem({
8485
8488
  className: "mly78zum5 mlydt5ytf mly1iyjqo2 mlyb3r6kr"
8486
8489
  },
8487
8490
  children: [/* @__PURE__ */ jsx("span", {
8488
- ..._stylex.props(fontStyles.body, styles$o.label),
8491
+ ..._stylex.props(fontStyles.body, styles$t.label),
8489
8492
  children: label
8490
8493
  }), sublabel && /* @__PURE__ */ jsx("span", {
8491
- ..._stylex.props(fontStyles.supporting, styles$o.sublabel),
8494
+ ..._stylex.props(fontStyles.supporting, styles$t.sublabel),
8492
8495
  children: sublabel
8493
8496
  })]
8494
8497
  })]
@@ -8500,7 +8503,7 @@ function CollapsibleListItem({
8500
8503
  })]
8501
8504
  });
8502
8505
  }
8503
- const styles$o = {
8506
+ const styles$t = {
8504
8507
  label: {
8505
8508
  flexGrow: "mly1iyjqo2",
8506
8509
  fontWeight: "mly1xlr1w8",
@@ -19310,7 +19313,7 @@ function Spinner({
19310
19313
  } = SIZES[size2];
19311
19314
  const frameSize = diameter + border * 2;
19312
19315
  return /* @__PURE__ */ jsx("div", {
19313
- ..._stylex.props(styles$n.root, customStyle),
19316
+ ..._stylex.props(styles$s.root, customStyle),
19314
19317
  children: /* @__PURE__ */ jsx("span", {
19315
19318
  "aria-valuetext": "Loading",
19316
19319
  ...{
@@ -19330,7 +19333,7 @@ function Spinner({
19330
19333
  })
19331
19334
  });
19332
19335
  }
19333
- const styles$n = {
19336
+ const styles$s = {
19334
19337
  root: {
19335
19338
  alignItems: "mly6s0dn4",
19336
19339
  display: "mly3nfvp2",
@@ -22015,20 +22018,20 @@ function getCalendarFormat(myMoment, now2) {
22015
22018
  var diff2 = myMoment.diff(now2, "days", true);
22016
22019
  return diff2 < -6 ? "sameElse" : diff2 < -1 ? "lastWeek" : diff2 < 0 ? "lastDay" : diff2 < 1 ? "sameDay" : diff2 < 2 ? "nextDay" : diff2 < 7 ? "nextWeek" : "sameElse";
22017
22020
  }
22018
- function calendar$1(time, formats) {
22021
+ function calendar$1(time, formats2) {
22019
22022
  if (arguments.length === 1) {
22020
22023
  if (!arguments[0]) {
22021
22024
  time = void 0;
22022
- formats = void 0;
22025
+ formats2 = void 0;
22023
22026
  } else if (isMomentInput(arguments[0])) {
22024
22027
  time = arguments[0];
22025
- formats = void 0;
22028
+ formats2 = void 0;
22026
22029
  } else if (isCalendarSpec(arguments[0])) {
22027
- formats = arguments[0];
22030
+ formats2 = arguments[0];
22028
22031
  time = void 0;
22029
22032
  }
22030
22033
  }
22031
- var now2 = time || createLocal(), sod = cloneWithOffset(now2, this).startOf("day"), format2 = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction(formats[format2]) ? formats[format2].call(this, now2) : formats[format2]);
22034
+ var now2 = time || createLocal(), sod = cloneWithOffset(now2, this).startOf("day"), format2 = hooks.calendarFormat(this, sod) || "sameElse", output = formats2 && (isFunction(formats2[format2]) ? formats2[format2].call(this, now2) : formats2[format2]);
22032
22035
  return this.format(
22033
22036
  output || this.localeData().calendar(format2, this, createLocal(now2))
22034
22037
  );
@@ -22384,7 +22387,7 @@ function valueOf() {
22384
22387
  function unix() {
22385
22388
  return Math.floor(this.valueOf() / 1e3);
22386
22389
  }
22387
- function toDate$1() {
22390
+ function toDate() {
22388
22391
  return new Date(this.valueOf());
22389
22392
  }
22390
22393
  function toArray() {
@@ -22838,7 +22841,7 @@ proto.startOf = startOf;
22838
22841
  proto.subtract = subtract;
22839
22842
  proto.toArray = toArray;
22840
22843
  proto.toObject = toObject;
22841
- proto.toDate = toDate$1;
22844
+ proto.toDate = toDate;
22842
22845
  proto.toISOString = toISOString;
22843
22846
  proto.inspect = inspect;
22844
22847
  if (typeof Symbol !== "undefined" && Symbol.for != null) {
@@ -23729,7 +23732,7 @@ const Popover = ({
23729
23732
  })
23730
23733
  });
23731
23734
  };
23732
- const styles$m = {
23735
+ const styles$r = {
23733
23736
  wrapper: {
23734
23737
  position: "mly1n2onr6",
23735
23738
  $$css: true
@@ -23780,7 +23783,7 @@ const SelectDropdown = ({
23780
23783
  setOpen(false);
23781
23784
  };
23782
23785
  return /* @__PURE__ */ jsxs("div", {
23783
- ..._stylex.props(styles$m.wrapper, customStyle),
23786
+ ..._stylex.props(styles$r.wrapper, customStyle),
23784
23787
  children: [/* @__PURE__ */ jsxs("button", {
23785
23788
  type: "button",
23786
23789
  autoFocus,
@@ -23847,7 +23850,7 @@ function SelectList({
23847
23850
  }) {
23848
23851
  const [hoveredIndex, setHoveredIndex] = useState(null);
23849
23852
  return /* @__PURE__ */ jsx("div", {
23850
- ..._stylex.props(styles$m.selectListDiv, customStyle),
23853
+ ..._stylex.props(styles$r.selectListDiv, customStyle),
23851
23854
  children: options.reduce((result, option2, index2) => {
23852
23855
  const isSelected = value !== void 0 && valueEqual(value, option2.value);
23853
23856
  if (option2.divider) {
@@ -23879,8 +23882,8 @@ function SelectList({
23879
23882
  }), /* @__PURE__ */ jsx(Icon, {
23880
23883
  name: "checkmark",
23881
23884
  customStyle: {
23882
- ...styles$m.checkIcon,
23883
- ...isSelected ? styles$m.checkIconSelected : void 0
23885
+ ...styles$r.checkIcon,
23886
+ ...isSelected ? styles$r.checkIconSelected : void 0
23884
23887
  }
23885
23888
  }), /* @__PURE__ */ jsx("span", {
23886
23889
  ...{
@@ -23893,31 +23896,20 @@ function SelectList({
23893
23896
  }, [])
23894
23897
  });
23895
23898
  }
23896
- function granularityIndex(granularity) {
23897
- return ["year", "quarter", "month", "week", "day", "hour", "minute", "second"].indexOf(granularity);
23898
- }
23899
23899
  function monthName(month) {
23900
23900
  return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][month];
23901
23901
  }
23902
23902
  function DatePicker({
23903
23903
  value,
23904
23904
  setValue,
23905
+ units,
23905
23906
  maxLevel,
23906
- style
23907
+ customStyle
23907
23908
  }) {
23908
23909
  const [date, setDate] = useState(value);
23909
23910
  const calendar2 = getCalendar(date);
23910
- const [pickLevel, setPickLevel] = useState(maxLevel);
23911
+ const [pickLevel, setPickLevel] = useState(units);
23911
23912
  const yearBucket = Math.floor(hooks(date).year() / 10) * 10;
23912
- useEffect(() => {
23913
- if (granularityIndex(maxLevel) < granularityIndex(pickLevel)) {
23914
- setPickLevel(maxLevel);
23915
- } else if (pickLevel === "quarter" && maxLevel !== "quarter") {
23916
- setPickLevel(maxLevel);
23917
- } else if (pickLevel === "week" && maxLevel !== "week") {
23918
- setPickLevel(maxLevel);
23919
- }
23920
- }, [maxLevel, pickLevel]);
23921
23913
  useEffect(() => {
23922
23914
  setDate(value);
23923
23915
  }, [value]);
@@ -23925,13 +23917,6 @@ function DatePicker({
23925
23917
  const newDate = hooks(date).year(year).toDate();
23926
23918
  setDate(newDate);
23927
23919
  setValue(newDate);
23928
- if (maxLevel !== "year") {
23929
- if (maxLevel === "quarter") {
23930
- setPickLevel("quarter");
23931
- } else {
23932
- setPickLevel("month");
23933
- }
23934
- }
23935
23920
  };
23936
23921
  const yearButton = (offset2) => {
23937
23922
  const click = () => setYear(yearBucket + offset2);
@@ -23961,27 +23946,14 @@ function DatePicker({
23961
23946
  const newDate = hooks(date).month(month).toDate();
23962
23947
  setDate(newDate);
23963
23948
  setValue(newDate);
23964
- if (maxLevel !== "month") {
23965
- if (maxLevel === "week") {
23966
- setPickLevel("week");
23967
- } else {
23968
- setPickLevel("day");
23969
- }
23970
- }
23971
23949
  };
23972
23950
  const setDay = (day) => {
23973
23951
  setDate(day);
23974
23952
  setValue(day);
23975
- if (maxLevel !== "day") {
23976
- setPickLevel(maxLevel);
23977
- }
23978
23953
  };
23979
23954
  const setWeekByDay = (dateOfFirstDayOfWeek) => {
23980
23955
  setDate(dateOfFirstDayOfWeek);
23981
23956
  setValue(dateOfFirstDayOfWeek);
23982
- if (maxLevel !== "week") {
23983
- setPickLevel("day");
23984
- }
23985
23957
  };
23986
23958
  const setQuarter = (quarter) => {
23987
23959
  const newDate = hooks(date).quarter(quarter + 1).toDate();
@@ -24021,7 +23993,7 @@ function DatePicker({
24021
23993
  });
24022
23994
  };
24023
23995
  return /* @__PURE__ */ jsxs("div", {
24024
- ..._stylex.props(styles$l.outer, style),
23996
+ ..._stylex.props(styles$q.outer, customStyle),
24025
23997
  children: [/* @__PURE__ */ jsxs("div", {
24026
23998
  ...{
24027
23999
  className: "mly78zum5 mly1q0g3np mly1qughib mly1nejdyq mlyu06os2"
@@ -24057,6 +24029,8 @@ function DatePicker({
24057
24029
  setPickLevel("year");
24058
24030
  } else if (pickLevel === "hour" || pickLevel === "minute" || pickLevel === "second") {
24059
24031
  setPickLevel("day");
24032
+ } else {
24033
+ setPickLevel(maxLevel);
24060
24034
  }
24061
24035
  },
24062
24036
  children: [(pickLevel === "day" || pickLevel === "week") && hooks(date).format("MMMM YYYY"), (pickLevel === "month" || pickLevel === "quarter") && hooks(date).format("YYYY"), pickLevel === "year" && /* @__PURE__ */ jsxs(Fragment, {
@@ -24294,14 +24268,14 @@ function DatePicker({
24294
24268
  setValue(hooks(date).hour(newHour24).toDate());
24295
24269
  },
24296
24270
  width: "40px"
24297
- }), (maxLevel === "minute" || maxLevel === "second") && /* @__PURE__ */ jsx(NumberInput, {
24271
+ }), (units === "minute" || units === "second") && /* @__PURE__ */ jsx(NumberInput, {
24298
24272
  label: "Minutes",
24299
24273
  value: hooks(date).minutes(),
24300
24274
  setValue: (minute) => {
24301
24275
  setValue(hooks(date).minute(minute).toDate());
24302
24276
  },
24303
24277
  width: "40px"
24304
- }), maxLevel === "second" && /* @__PURE__ */ jsx(NumberInput, {
24278
+ }), units === "second" && /* @__PURE__ */ jsx(NumberInput, {
24305
24279
  label: "Seconds",
24306
24280
  value: hooks(date).seconds(),
24307
24281
  setValue: (second) => {
@@ -24334,7 +24308,7 @@ function DatePicker({
24334
24308
  })]
24335
24309
  });
24336
24310
  }
24337
- const styles$l = {
24311
+ const styles$q = {
24338
24312
  outer: {
24339
24313
  userSelect: "mly87ps6o",
24340
24314
  fontSize: "mlymhiqyu",
@@ -24420,7 +24394,7 @@ function Banner({
24420
24394
  className: "mly1q4ynmn mlyh8yej3 mly5yr21d mly78zum5 mlydt5ytf mly1kmqopl mly16zck5j"
24421
24395
  },
24422
24396
  children: [/* @__PURE__ */ jsxs("div", {
24423
- ..._stylex.props(styles$k.header, variantColors[variant], children ? styles$k.headerWithContent : null),
24397
+ ..._stylex.props(styles$p.header, variantColors[variant], children ? styles$p.headerWithContent : null),
24424
24398
  children: [/* @__PURE__ */ jsx("div", {
24425
24399
  ...{
24426
24400
  className: "mly1qx5ct2 mly78zum5 mlyl56j7k mly6s0dn4"
@@ -24433,22 +24407,22 @@ function Banner({
24433
24407
  className: "mly78zum5 mlydt5ytf mlyb3r6kr"
24434
24408
  },
24435
24409
  children: [/* @__PURE__ */ jsx("div", {
24436
- ..._stylex.props(styles$k.title, fontStyles.emphasized),
24410
+ ..._stylex.props(styles$p.title, fontStyles.emphasized),
24437
24411
  children: title
24438
24412
  }), /* @__PURE__ */ jsx("div", {
24439
- ..._stylex.props(styles$k.description, fontStyles.supporting),
24413
+ ..._stylex.props(styles$p.description, fontStyles.supporting),
24440
24414
  children: description
24441
24415
  })]
24442
24416
  })]
24443
24417
  }), children && /* @__PURE__ */ jsx("div", {
24444
- ..._stylex.props(styles$k.content, fontStyles.body),
24418
+ ..._stylex.props(styles$p.content, fontStyles.body),
24445
24419
  children: /* @__PURE__ */ jsx(ScrollableArea, {
24446
24420
  children
24447
24421
  })
24448
24422
  })]
24449
24423
  });
24450
24424
  }
24451
- const styles$k = {
24425
+ const styles$p = {
24452
24426
  header: {
24453
24427
  borderRadius: "mly1q4ynmn",
24454
24428
  borderStartStartRadius: null,
@@ -25883,7 +25857,7 @@ function DropdownMenu({
25883
25857
  children: trigger
25884
25858
  }), /* @__PURE__ */ jsx(Portal2, {
25885
25859
  children: /* @__PURE__ */ jsx(Content2, {
25886
- ..._stylex.props(fontStyles.body, styles$j.content),
25860
+ ..._stylex.props(fontStyles.body, styles$o.content),
25887
25861
  side: "bottom",
25888
25862
  align: "start",
25889
25863
  sideOffset: 4,
@@ -25910,16 +25884,16 @@ function DropdownMenuItem({
25910
25884
  disabled,
25911
25885
  children: [icon && /* @__PURE__ */ jsx(Icon, {
25912
25886
  name: icon,
25913
- customStyle: styles$j.icon
25887
+ customStyle: styles$o.icon
25914
25888
  }), /* @__PURE__ */ jsxs("div", {
25915
25889
  ...{
25916
25890
  className: "mly78zum5 mlydt5ytf mly1iyjqo2"
25917
25891
  },
25918
25892
  children: [/* @__PURE__ */ jsx("span", {
25919
- ..._stylex.props(fontStyles.body, styles$j.label),
25893
+ ..._stylex.props(fontStyles.body, styles$o.label),
25920
25894
  children: label
25921
25895
  }), sublabel && /* @__PURE__ */ jsx("span", {
25922
- ..._stylex.props(fontStyles.supporting, styles$j.sublabel),
25896
+ ..._stylex.props(fontStyles.supporting, styles$o.sublabel),
25923
25897
  children: sublabel
25924
25898
  })]
25925
25899
  })]
@@ -25940,21 +25914,21 @@ function DropdownSubMenuItem({
25940
25914
  disabled,
25941
25915
  children: [icon && /* @__PURE__ */ jsx(Icon, {
25942
25916
  name: icon,
25943
- customStyle: styles$j.icon
25917
+ customStyle: styles$o.icon
25944
25918
  }), /* @__PURE__ */ jsxs("div", {
25945
25919
  ...{
25946
25920
  className: "mly78zum5 mlydt5ytf mly1iyjqo2"
25947
25921
  },
25948
25922
  children: [/* @__PURE__ */ jsx("span", {
25949
- ..._stylex.props(fontStyles.body, styles$j.label),
25923
+ ..._stylex.props(fontStyles.body, styles$o.label),
25950
25924
  children: label
25951
25925
  }), sublabel && /* @__PURE__ */ jsx("span", {
25952
- ..._stylex.props(fontStyles.supporting, styles$j.sublabel),
25926
+ ..._stylex.props(fontStyles.supporting, styles$o.sublabel),
25953
25927
  children: sublabel
25954
25928
  })]
25955
25929
  }), /* @__PURE__ */ jsx(Icon, {
25956
25930
  name: "chevronRight",
25957
- customStyle: styles$j.icon
25931
+ customStyle: styles$o.icon
25958
25932
  })]
25959
25933
  }), /* @__PURE__ */ jsx(SubContent2, {
25960
25934
  ...{
@@ -25969,11 +25943,11 @@ function DropdownMenuLabel({
25969
25943
  label
25970
25944
  }) {
25971
25945
  return /* @__PURE__ */ jsx(Label2, {
25972
- ..._stylex.props(fontStyles.supporting, styles$j.menuLabel),
25946
+ ..._stylex.props(fontStyles.supporting, styles$o.menuLabel),
25973
25947
  children: label
25974
25948
  });
25975
25949
  }
25976
- const styles$j = {
25950
+ const styles$o = {
25977
25951
  content: {
25978
25952
  display: "mly78zum5",
25979
25953
  flexDirection: "mlydt5ytf",
@@ -26062,6 +26036,7 @@ const filterStyles = {
26062
26036
  paddingTop: null,
26063
26037
  paddingBottom: null,
26064
26038
  minWidth: "mly1jzhcrs",
26039
+ maxWidth: "mly1j9u4d2",
26065
26040
  gap: "mly167g77z",
26066
26041
  rowGap: null,
26067
26042
  columnGap: null,
@@ -26083,35 +26058,11 @@ const filterStyles = {
26083
26058
  $$css: true
26084
26059
  }
26085
26060
  };
26086
- const BooleanFilterFragments = {
26087
- is_true: {
26088
- operator: "true"
26089
- },
26090
- is_false: {
26091
- operator: "false"
26092
- },
26093
- is_null: {
26094
- operator: "null"
26095
- },
26096
- is_not_null: {
26097
- operator: "null",
26098
- not: true
26099
- },
26100
- is_false_or_null: {
26101
- operator: "false_or_null"
26102
- }
26103
- };
26104
26061
  function typeFromFilter$3(filter) {
26105
- for (const key2 in BooleanFilterFragments) {
26106
- const type = key2;
26107
- const value = BooleanFilterFragments[type];
26108
- const filterNot = filter.not ?? false;
26109
- const valueNot = value.not ?? false;
26110
- if (value.operator === filter.operator && valueNot === filterNot) {
26111
- return type;
26112
- }
26062
+ if (filter.operator === "null" && filter.not) {
26063
+ return "-null";
26113
26064
  }
26114
- throw new Error(`Unhandled boolean filter type ${filter.operator}`);
26065
+ return filter.operator;
26115
26066
  }
26116
26067
  function BooleanFilterCore({
26117
26068
  filter,
@@ -26119,26 +26070,32 @@ function BooleanFilterCore({
26119
26070
  }) {
26120
26071
  const type = typeFromFilter$3(filter);
26121
26072
  const onChangeType = (type2) => {
26122
- setFilter(BooleanFilterFragments[type2]);
26073
+ const filter2 = type2 === "-null" ? {
26074
+ operator: "null",
26075
+ not: true
26076
+ } : {
26077
+ operator: type2
26078
+ };
26079
+ setFilter(filter2);
26123
26080
  };
26124
26081
  return /* @__PURE__ */ jsx(Fragment, {
26125
26082
  children: /* @__PURE__ */ jsx(SelectDropdown, {
26126
26083
  value: type,
26127
26084
  onChange: onChangeType,
26128
26085
  options: [{
26129
- value: "is_true",
26086
+ value: "true",
26130
26087
  label: "is true"
26131
26088
  }, {
26132
- value: "is_false",
26089
+ value: "false",
26133
26090
  label: "is false"
26134
26091
  }, {
26135
- value: "is_null",
26092
+ value: "null",
26136
26093
  label: "is null"
26137
26094
  }, {
26138
- value: "is_not_null",
26095
+ value: "-null",
26139
26096
  label: "is not null"
26140
26097
  }, {
26141
- value: "is_false_or_null",
26098
+ value: "false_or_null",
26142
26099
  label: "is false or null"
26143
26100
  }],
26144
26101
  customStyle: filterStyles.filterTypeDropdown
@@ -26260,7 +26217,7 @@ const PillInput = ({
26260
26217
  commitValue();
26261
26218
  });
26262
26219
  return /* @__PURE__ */ jsxs("div", {
26263
- ..._stylex.props(styles$i.outer, customStyle),
26220
+ ..._stylex.props(styles$n.outer, customStyle),
26264
26221
  onKeyUp,
26265
26222
  onClick: () => {
26266
26223
  var _a2;
@@ -26325,7 +26282,7 @@ const Pill = ({
26325
26282
  onClick,
26326
26283
  tabIndex: 0,
26327
26284
  ref: forwardRef,
26328
- ..._stylex.props(styles$i.pill, colorVariants[color]),
26285
+ ..._stylex.props(styles$n.pill, colorVariants[color]),
26329
26286
  children: [children, /* @__PURE__ */ jsx("div", {
26330
26287
  title: "Remove",
26331
26288
  ...{
@@ -26340,7 +26297,7 @@ const Pill = ({
26340
26297
  })]
26341
26298
  });
26342
26299
  };
26343
- const styles$i = {
26300
+ const styles$n = {
26344
26301
  outer: {
26345
26302
  fontFamily: "mly6icuqf",
26346
26303
  fontSize: "mlyif65rj",
@@ -26394,7 +26351,7 @@ const styles$i = {
26394
26351
  gap: "mly1ed6fcf",
26395
26352
  rowGap: null,
26396
26353
  columnGap: null,
26397
- flexWrap: "mlyozqiw3",
26354
+ flexWrap: "mly1a02dak",
26398
26355
  borderColor: "mly1akygb0 mlyetl2wx",
26399
26356
  borderInlineColor: null,
26400
26357
  borderInlineStartColor: null,
@@ -26435,6 +26392,7 @@ const styles$i = {
26435
26392
  textTransform: "mly6mezaz",
26436
26393
  cursor: "mly1ypdohk",
26437
26394
  height: "mly1qx5ct2",
26395
+ whiteSpace: "mlyuxw1ft",
26438
26396
  $$css: true
26439
26397
  }
26440
26398
  };
@@ -26592,7 +26550,8 @@ function ValueList({
26592
26550
  onClick,
26593
26551
  search,
26594
26552
  fieldPath,
26595
- ref
26553
+ ref,
26554
+ customStyle
26596
26555
  }) {
26597
26556
  const {
26598
26557
  searchResults
@@ -26600,10 +26559,11 @@ function ValueList({
26600
26559
  const stringSearchResults = useMemo(() => searchResults && searchResults.filter((r2) => r2.fieldType === "string" && r2.fieldValue !== null).sort((a, b2) => b2.weight - a.weight).slice(0, 100), [searchResults]);
26601
26560
  return /* @__PURE__ */ jsx("div", {
26602
26561
  ref,
26562
+ ..._stylex.props(customStyle),
26603
26563
  children: (stringSearchResults == null ? void 0 : stringSearchResults.length) ? stringSearchResults.map((value) => /* @__PURE__ */ jsxs("div", {
26604
26564
  role: "menuitem",
26605
26565
  tabIndex: -1,
26606
- ..._stylex.props(addMenuStyles.item, styles$h.valueItem),
26566
+ ..._stylex.props(addMenuStyles.item, styles$m.valueItem),
26607
26567
  onClick: () => onClick(value),
26608
26568
  children: [/* @__PURE__ */ jsx(Value, {
26609
26569
  value
@@ -26626,16 +26586,22 @@ function Value({
26626
26586
  return /* @__PURE__ */ jsx(Token, {
26627
26587
  label: value.fieldValue ?? "∅",
26628
26588
  icon: "filter",
26629
- color: "purple"
26589
+ color: "purple",
26590
+ customStyle: styles$m.token
26630
26591
  });
26631
26592
  }
26632
- const styles$h = {
26593
+ const styles$m = {
26633
26594
  valueItem: {
26634
26595
  height: "mly1qx5ct2",
26635
26596
  paddingTop: "mly1y1aw1k",
26636
26597
  paddingBottom: "mlywib8y2",
26637
26598
  display: "mly78zum5",
26638
26599
  justifyContent: "mly1qughib",
26600
+ cursor: "mly1ypdohk",
26601
+ $$css: true
26602
+ },
26603
+ token: {
26604
+ cursor: "mly1ypdohk",
26639
26605
  $$css: true
26640
26606
  }
26641
26607
  };
@@ -26793,7 +26759,8 @@ const StringFilterCore = ({
26793
26759
  });
26794
26760
  setSearchValue("");
26795
26761
  }
26796
- }
26762
+ },
26763
+ customStyle: styles$l.valueList
26797
26764
  })]
26798
26765
  }) : currentFilter.operator === "~" ? /* @__PURE__ */ jsx(StringEditor, {
26799
26766
  values: currentFilter.escaped_values,
@@ -26860,6 +26827,15 @@ function stringFilterChangeType(filter, type) {
26860
26827
  };
26861
26828
  }
26862
26829
  }
26830
+ const styles$l = {
26831
+ valueList: {
26832
+ maxHeight: "mly1hkcv85",
26833
+ overflow: "mlyysyzu8",
26834
+ overflowX: null,
26835
+ overflowY: null,
26836
+ $$css: true
26837
+ }
26838
+ };
26863
26839
  const NumberFilterFragments = {
26864
26840
  is_equal_to: {
26865
26841
  operator: "="
@@ -26983,10 +26959,10 @@ const NumberFilterCore = ({
26983
26959
  }]
26984
26960
  }), errorMessage ? /* @__PURE__ */ jsx(ErrorIcon, {
26985
26961
  errorMessage
26986
- }) : null, getEditor$1(filter, innerValues, validateAndUpdateValues)]
26962
+ }) : null, getEditor(filter, innerValues, validateAndUpdateValues)]
26987
26963
  });
26988
26964
  };
26989
- function getEditor$1(filter, innerValues, validateAndUpdateValues) {
26965
+ function getEditor(filter, innerValues, validateAndUpdateValues) {
26990
26966
  switch (filter.operator) {
26991
26967
  case "!=":
26992
26968
  case "=":
@@ -27056,41 +27032,102 @@ function makeFilterWithNewType(filter, type) {
27056
27032
  };
27057
27033
  }
27058
27034
  }
27059
- function typeFromFilter(filter) {
27060
- if (filter.operator === "null") {
27061
- return filter.not ? "is_not_null" : "is_null";
27062
- } else if (filter.operator === "in") {
27063
- return "is_equal_to";
27064
- } else if (filter.operator === "before") {
27065
- return "is_before";
27066
- } else if (filter.operator === "after") {
27067
- return "is_after";
27068
- } else if (filter.operator === "to") {
27069
- return "is_between";
27035
+ const formats = {
27036
+ second: "YYYY-MM-DD HH:mm:ss",
27037
+ minute: "YYYY-MM-DD HH:mm",
27038
+ hour: "YYYY-MM-DD HH:00",
27039
+ day: "YYYY-MM-DD",
27040
+ week: "[WK]YYYY-WW",
27041
+ month: "YYYY-MM",
27042
+ quarter: "YYYY-[Q]Q",
27043
+ year: "YYYY"
27044
+ };
27045
+ const regexps = {
27046
+ second: /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/,
27047
+ minute: /\d\d\d\d-\d\d-\d\d \d\d:\d\d/,
27048
+ hour: /\d\d\d\d-\d\d-\d\d \d\d:00/,
27049
+ day: /\d\d\d\d-\d\d-\d\d/,
27050
+ week: /WK\d\d\d\d-\d\d-\d\d/,
27051
+ month: /\d\d\d\d-\d\d/,
27052
+ quarter: /\d\d\d\d-Q\d/,
27053
+ year: /\d\d\d\d/
27054
+ };
27055
+ const DateInput = ({
27056
+ value,
27057
+ setValue,
27058
+ placeholder,
27059
+ autoFocus,
27060
+ units,
27061
+ onFocus,
27062
+ onBlur,
27063
+ isActive,
27064
+ customStyle
27065
+ }) => {
27066
+ const format2 = formats[units];
27067
+ const [tempValue, setTempValue] = useState(hooks(value).format(format2));
27068
+ useEffect(() => {
27069
+ setTempValue(hooks(value).format(format2));
27070
+ }, [value, format2]);
27071
+ return /* @__PURE__ */ jsx("input", {
27072
+ ..._stylex.props(customStyle, isActive ? styles$k.active : null),
27073
+ type: "text",
27074
+ placeholder: placeholder || format2,
27075
+ value: tempValue,
27076
+ onFocus,
27077
+ onBlur,
27078
+ onChange: (event) => {
27079
+ const raw2 = event.target.value;
27080
+ setTempValue(raw2);
27081
+ const regex = regexps[units];
27082
+ if (raw2.match(regex)) {
27083
+ const m = hooks(raw2, format2);
27084
+ if (m.isValid()) {
27085
+ setValue(m.toDate());
27086
+ }
27087
+ }
27088
+ },
27089
+ autoFocus
27090
+ });
27091
+ };
27092
+ function guessUnits(moment2, isDateTime) {
27093
+ if (moment2.moment === "literal") {
27094
+ const {
27095
+ literal
27096
+ } = moment2;
27097
+ for (const unit in regexps) {
27098
+ const temporalUnit = unit;
27099
+ if (literal.match(regexps[temporalUnit])) {
27100
+ return temporalUnit;
27101
+ }
27102
+ }
27070
27103
  }
27071
- return "is_equal_to";
27104
+ return isDateTime ? "second" : "day";
27072
27105
  }
27073
- function createTemporalLiteral(date) {
27074
- return {
27075
- moment: "literal",
27076
- literal: hooks(date).format("YYYY-MM-DD HH:mm:ss.0")
27077
- };
27078
- }
27079
- function createNowMoment() {
27080
- return {
27081
- moment: "now"
27082
- };
27083
- }
27084
- function extractDateFromMoment(momentObj) {
27085
- if (!momentObj) {
27086
- return /* @__PURE__ */ new Date();
27106
+ const styles$k = {
27107
+ active: {
27108
+ backgroundColor: "mly1vzefiq",
27109
+ $$css: true
27087
27110
  }
27088
- if (momentObj.moment === "literal") {
27089
- return new Date(momentObj.literal);
27090
- } else if (momentObj.moment === "now") {
27091
- return /* @__PURE__ */ new Date();
27111
+ };
27112
+ function typeFromFilter(filter) {
27113
+ if (filter.operator === "null" && filter.not) {
27114
+ return "-null";
27092
27115
  }
27093
- return /* @__PURE__ */ new Date();
27116
+ return filter.operator;
27117
+ }
27118
+ function unitsFromFilter(filter, isDateTime) {
27119
+ if (filter.operator === "last" || filter.operator === "next") {
27120
+ return filter.units;
27121
+ } else if (filter.operator === "to") {
27122
+ return guessUnits(filter.fromMoment, isDateTime);
27123
+ } else if (filter.operator === "before" && filter.before.moment === "literal") {
27124
+ return guessUnits(filter.before, isDateTime);
27125
+ } else if (filter.operator === "after") {
27126
+ return guessUnits(filter.after, isDateTime);
27127
+ } else if (filter.operator === "in") {
27128
+ return guessUnits(filter.in, isDateTime);
27129
+ }
27130
+ return isDateTime ? "second" : "day";
27094
27131
  }
27095
27132
  const DateTimeFilterCore = ({
27096
27133
  filter,
@@ -27098,299 +27135,443 @@ const DateTimeFilterCore = ({
27098
27135
  isDateTime
27099
27136
  }) => {
27100
27137
  filter ?? (filter = {
27101
- operator: "in",
27102
- in: createNowMoment()
27138
+ operator: "last",
27139
+ n: "7",
27140
+ units: "day"
27103
27141
  });
27142
+ const [units, setUnits] = useState(unitsFromFilter(filter, isDateTime));
27104
27143
  const [currentFilter, setCurrentFilter] = useState(filter);
27105
27144
  const changeType = (type2) => {
27106
- updateFilter(dateTimeFilterChangeType(currentFilter, type2));
27145
+ updateFilter(dateTimeFilterChangeType(currentFilter, type2, units));
27107
27146
  };
27108
27147
  const updateFilter = (newFilter) => {
27109
27148
  setCurrentFilter(newFilter);
27110
27149
  setFilter(newFilter);
27111
27150
  };
27112
- const type = typeFromFilter(currentFilter);
27113
27151
  const maxLevel = isDateTime ? "second" : "day";
27114
- return /* @__PURE__ */ jsxs(Fragment, {
27115
- children: [/* @__PURE__ */ jsx(SelectDropdown, {
27116
- value: type,
27117
- onChange: changeType,
27118
- options: [{
27119
- value: "is_equal_to",
27120
- label: "is"
27121
- }, {
27122
- value: "is_before",
27123
- label: "is before"
27124
- }, {
27125
- value: "is_after",
27126
- label: "is after"
27127
- }, {
27128
- value: "is_between",
27129
- label: "is between"
27130
- }, {
27131
- value: "is_null",
27132
- label: "is null"
27133
- }, {
27134
- value: "is_not_null",
27135
- label: "is not null"
27136
- }]
27137
- }), getEditor(currentFilter, updateFilter, maxLevel)]
27152
+ const type = typeFromFilter(currentFilter);
27153
+ return /* @__PURE__ */ jsxs("div", {
27154
+ ...{
27155
+ className: "mlyxsgkw5 mly78zum5 mlydt5ytf mly167g77z"
27156
+ },
27157
+ children: [/* @__PURE__ */ jsxs("div", {
27158
+ ...{
27159
+ className: "mly78zum5 mly167g77z"
27160
+ },
27161
+ children: [/* @__PURE__ */ jsx(SelectDropdown, {
27162
+ value: type,
27163
+ onChange: changeType,
27164
+ options: [{
27165
+ value: "last",
27166
+ label: "last"
27167
+ }, {
27168
+ value: "next",
27169
+ label: "next"
27170
+ }, {
27171
+ value: "after",
27172
+ label: "after"
27173
+ }, {
27174
+ value: "before",
27175
+ label: "before"
27176
+ }, {
27177
+ value: "in",
27178
+ label: "is"
27179
+ }, {
27180
+ value: "to",
27181
+ label: "between"
27182
+ }, {
27183
+ value: "null",
27184
+ label: "null"
27185
+ }, {
27186
+ value: "-null",
27187
+ label: "not null"
27188
+ }],
27189
+ customStyle: styles$j.editorCell
27190
+ }), getTopEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel)]
27191
+ }), getBottomEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel)]
27138
27192
  });
27139
27193
  };
27140
- let inDate;
27141
- let beforeDate;
27142
- let afterDate;
27143
- let fromDate;
27144
- let toDate;
27145
- function getEditor(currentFilter, updateFilter, maxLevel) {
27194
+ function getTopEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel) {
27146
27195
  switch (currentFilter.operator) {
27147
- case "in": {
27148
- const inMoment = currentFilter;
27149
- inDate = extractDateFromMoment(inMoment.in);
27150
- return /* @__PURE__ */ jsx(DateTimeEditor, {
27151
- value: inDate,
27152
- setValue: (newDate) => {
27153
- updateFilter({
27154
- ...currentFilter,
27155
- in: createTemporalLiteral(newDate)
27156
- });
27157
- },
27158
- maxLevel
27196
+ case "last":
27197
+ case "next":
27198
+ return /* @__PURE__ */ jsx(NUnitFilter, {
27199
+ currentFilter,
27200
+ maxLevel,
27201
+ updateFilter,
27202
+ units,
27203
+ setUnits
27159
27204
  });
27160
- }
27161
- case "before": {
27162
- const beforeMoment = currentFilter;
27163
- beforeDate = extractDateFromMoment(beforeMoment.before);
27164
- return /* @__PURE__ */ jsx(DateTimeEditor, {
27165
- value: beforeDate,
27166
- setValue: (newDate) => {
27167
- updateFilter({
27168
- ...currentFilter,
27169
- before: createTemporalLiteral(newDate)
27170
- });
27171
- },
27172
- maxLevel
27205
+ case "after":
27206
+ case "before":
27207
+ case "to":
27208
+ case "in":
27209
+ return /* @__PURE__ */ jsx(UnitFilter, {
27210
+ currentFilter,
27211
+ maxLevel,
27212
+ updateFilter,
27213
+ units,
27214
+ setUnits
27173
27215
  });
27174
- }
27175
- case "after": {
27176
- const afterMoment = currentFilter;
27177
- afterDate = extractDateFromMoment(afterMoment.after);
27178
- return /* @__PURE__ */ jsx(DateTimeEditor, {
27179
- value: afterDate,
27180
- setValue: (newDate) => {
27181
- updateFilter({
27182
- ...currentFilter,
27183
- after: createTemporalLiteral(newDate)
27184
- });
27185
- },
27186
- maxLevel
27216
+ }
27217
+ return null;
27218
+ }
27219
+ function getBottomEditorRow(currentFilter, updateFilter, units, setUnits, maxLevel) {
27220
+ switch (currentFilter.operator) {
27221
+ case "after":
27222
+ case "before":
27223
+ case "in":
27224
+ return /* @__PURE__ */ jsx(SingleDateFilter, {
27225
+ currentFilter,
27226
+ maxLevel,
27227
+ updateFilter,
27228
+ units,
27229
+ setUnits
27187
27230
  });
27188
- }
27189
- case "to": {
27190
- const toMoment = currentFilter;
27191
- fromDate = extractDateFromMoment(toMoment.fromMoment);
27192
- toDate = extractDateFromMoment(toMoment.toMoment);
27193
- return /* @__PURE__ */ jsx(DateTimeRangeEditor, {
27194
- fromValue: fromDate,
27195
- toValue: toDate,
27196
- setFromValue: (newFromDate) => {
27197
- updateFilter({
27198
- ...currentFilter,
27199
- fromMoment: createTemporalLiteral(newFromDate)
27200
- });
27201
- },
27202
- setToValue: (newToDate) => {
27203
- updateFilter({
27204
- ...currentFilter,
27205
- toMoment: createTemporalLiteral(newToDate)
27206
- });
27207
- },
27208
- maxLevel
27231
+ case "to":
27232
+ return /* @__PURE__ */ jsx(DoubleDateFilter, {
27233
+ currentFilter,
27234
+ maxLevel,
27235
+ updateFilter,
27236
+ units,
27237
+ setUnits
27209
27238
  });
27210
- }
27211
27239
  }
27212
27240
  return null;
27213
27241
  }
27214
- const formatDate = (date, maxLevel) => {
27215
- if (maxLevel === "day") {
27216
- return hooks(date).format("YYYY-MM-DD");
27217
- } else {
27218
- return hooks(date).format("YYYY-MM-DD hh:mm:ss");
27219
- }
27220
- };
27221
- function ClickableDateToken({
27222
- value,
27223
- setValue,
27224
- maxLevel,
27225
- label
27242
+ const DateUnits = [{
27243
+ value: "year",
27244
+ label: "years"
27245
+ }, {
27246
+ value: "quarter",
27247
+ label: "quarters"
27248
+ }, {
27249
+ value: "month",
27250
+ label: "months"
27251
+ }, {
27252
+ value: "week",
27253
+ label: "weeks"
27254
+ }, {
27255
+ value: "day",
27256
+ label: "days"
27257
+ }];
27258
+ const TimeUnits = [{
27259
+ value: "hour",
27260
+ label: "hours"
27261
+ }, {
27262
+ value: "minute",
27263
+ label: "minutes"
27264
+ }, {
27265
+ value: "second",
27266
+ label: "seconds"
27267
+ }];
27268
+ function NUnitFilter({
27269
+ currentFilter,
27270
+ updateFilter,
27271
+ setUnits,
27272
+ maxLevel
27226
27273
  }) {
27227
- const [innerValue, setInnerValue] = useState(formatDate(value, maxLevel));
27228
- const [errorMessage, setErrorMessage] = useState("");
27229
- React.useEffect(() => {
27230
- setInnerValue(formatDate(value, maxLevel));
27231
- }, [maxLevel, value]);
27232
- const [isPickerOpen, setIsPickerOpen] = useState(false);
27233
- const ref = React.useRef(null);
27234
- const checkForErrorsOrCommit = (date) => {
27235
- if (date && !isNaN(date.getTime()) && date.getFullYear() < 1e4) {
27236
- setErrorMessage("");
27237
- setValue(date);
27274
+ const {
27275
+ n,
27276
+ units
27277
+ } = currentFilter;
27278
+ const options = maxLevel === "day" ? DateUnits : [...DateUnits, ...TimeUnits];
27279
+ const updateN = (event) => {
27280
+ const n2 = event.target.value;
27281
+ updateFilter({
27282
+ ...currentFilter,
27283
+ n: n2
27284
+ });
27285
+ };
27286
+ const updateUnits = (units2) => {
27287
+ setUnits(units2);
27288
+ updateFilter({
27289
+ ...currentFilter,
27290
+ units: units2
27291
+ });
27292
+ };
27293
+ return /* @__PURE__ */ jsxs(Fragment, {
27294
+ children: [/* @__PURE__ */ jsx("input", {
27295
+ type: "number",
27296
+ value: n,
27297
+ ...{
27298
+ className: "mly2yh2zd mlyizdh9v mly9cpjcd mly1sxf85j mly1iyjqo2"
27299
+ },
27300
+ onChange: updateN
27301
+ }), /* @__PURE__ */ jsx(SelectDropdown, {
27302
+ options,
27303
+ value: units,
27304
+ onChange: updateUnits,
27305
+ customStyle: styles$j.editorCell
27306
+ })]
27307
+ });
27308
+ }
27309
+ function UnitFilter({
27310
+ units,
27311
+ setUnits,
27312
+ maxLevel
27313
+ }) {
27314
+ const options = maxLevel === "day" ? DateUnits : [...DateUnits, ...TimeUnits];
27315
+ return /* @__PURE__ */ jsx(SelectDropdown, {
27316
+ options,
27317
+ value: units,
27318
+ onChange: setUnits,
27319
+ customStyle: styles$j.editorCell
27320
+ });
27321
+ }
27322
+ function SingleDateFilter({
27323
+ currentFilter,
27324
+ updateFilter,
27325
+ units,
27326
+ maxLevel
27327
+ }) {
27328
+ const moment2 = currentFilter.operator === "after" ? currentFilter.after : currentFilter.operator === "before" ? currentFilter.before : currentFilter.in;
27329
+ const date = extractDateFromMoment(moment2);
27330
+ const updateDate = (date2) => {
27331
+ updateFilter({
27332
+ ...currentFilter,
27333
+ [currentFilter.operator]: createTemporalLiteral(date2, units)
27334
+ });
27335
+ };
27336
+ return /* @__PURE__ */ jsxs(Fragment, {
27337
+ children: [/* @__PURE__ */ jsx("div", {
27338
+ ...{
27339
+ className: "mly78zum5 mly167g77z"
27340
+ },
27341
+ children: /* @__PURE__ */ jsx(DateInput, {
27342
+ value: date,
27343
+ setValue: updateDate,
27344
+ units,
27345
+ customStyle: {
27346
+ ...styles$j.input,
27347
+ ...styles$j.editorCell
27348
+ }
27349
+ })
27350
+ }), /* @__PURE__ */ jsx("div", {
27351
+ ...{
27352
+ className: "mly78zum5 mly167g77z"
27353
+ },
27354
+ children: /* @__PURE__ */ jsx(DatePicker, {
27355
+ value: date,
27356
+ setValue: updateDate,
27357
+ units,
27358
+ maxLevel,
27359
+ customStyle: styles$j.editorCell
27360
+ })
27361
+ })]
27362
+ });
27363
+ }
27364
+ function DoubleDateFilter({
27365
+ currentFilter,
27366
+ updateFilter,
27367
+ units,
27368
+ maxLevel
27369
+ }) {
27370
+ const {
27371
+ fromMoment,
27372
+ toMoment
27373
+ } = currentFilter;
27374
+ const fromDate = extractDateFromMoment(fromMoment);
27375
+ const toDate2 = extractDateFromMoment(toMoment);
27376
+ const [date, setDate] = useState(fromDate);
27377
+ const [focusedDate, setFocusedDate] = useState("from");
27378
+ const updateFromDate = (date2) => {
27379
+ updateFilter({
27380
+ ...currentFilter,
27381
+ fromMoment: createTemporalLiteral(date2, units)
27382
+ });
27383
+ };
27384
+ const updateToDate = (date2) => {
27385
+ updateFilter({
27386
+ ...currentFilter,
27387
+ toMoment: createTemporalLiteral(date2, units)
27388
+ });
27389
+ };
27390
+ const updateDate = (date2) => {
27391
+ if (focusedDate === "from") {
27392
+ updateFromDate(date2);
27238
27393
  } else {
27239
- setErrorMessage(`Date must be in YYYY-MM-DD${maxLevel !== "day" && " hh:mm:ss"} format.`);
27394
+ updateToDate(date2);
27240
27395
  }
27396
+ setDate(date2);
27241
27397
  };
27242
- useClickOutside(ref, () => {
27243
- if (isPickerOpen) {
27244
- setIsPickerOpen(false);
27245
- checkForErrorsOrCommit(new Date(innerValue));
27246
- }
27247
- });
27248
- const getDateForDatePicker = () => {
27249
- try {
27250
- const parsedDate = new Date(innerValue);
27251
- if (!isNaN(parsedDate.getTime())) {
27252
- return parsedDate;
27253
- }
27254
- } catch (ex) {
27398
+ const updateFocusedDate = (focusedDate2) => {
27399
+ setFocusedDate(focusedDate2);
27400
+ if (focusedDate2 === "from") {
27401
+ const fromDate2 = extractDateFromMoment(fromMoment);
27402
+ setDate(fromDate2);
27403
+ } else {
27404
+ const toDate22 = extractDateFromMoment(toMoment);
27405
+ setDate(toDate22);
27255
27406
  }
27256
- return value;
27257
27407
  };
27258
- return /* @__PURE__ */ jsxs("div", {
27259
- ref,
27260
- style: {
27261
- position: "relative",
27262
- color: "rgb(95, 99, 104)"
27263
- },
27264
- onFocus: () => setIsPickerOpen(true),
27265
- onBlur: (e) => {
27266
- if (e.relatedTarget && ref.current && !ref.current.contains(e.relatedTarget)) {
27267
- setIsPickerOpen(false);
27268
- checkForErrorsOrCommit(new Date(innerValue));
27269
- }
27270
- },
27408
+ return /* @__PURE__ */ jsxs(Fragment, {
27271
27409
  children: [/* @__PURE__ */ jsxs("div", {
27272
- style: {
27273
- display: "flex"
27410
+ ...{
27411
+ className: "mly78zum5 mly167g77z"
27274
27412
  },
27275
- children: [/* @__PURE__ */ jsx("input", {
27276
- value: label ? `${label}: ${innerValue}` : innerValue,
27277
- onChange: (event) => {
27278
- setInnerValue(event.target.value);
27413
+ children: [/* @__PURE__ */ jsx(DateInput, {
27414
+ value: fromDate,
27415
+ setValue: updateFromDate,
27416
+ units,
27417
+ customStyle: {
27418
+ ...styles$j.input,
27419
+ ...styles$j.editorCell
27279
27420
  },
27280
- style: {
27281
- border: "1px solid #e0e0e0",
27282
- color: "rgb(95, 99, 104)",
27283
- padding: "4px 8px 4px 8px",
27284
- borderRadius: 5
27285
- }
27286
- }), errorMessage && /* @__PURE__ */ jsx(ErrorIcon, {
27287
- errorMessage
27421
+ onFocus: () => updateFocusedDate("from"),
27422
+ isActive: focusedDate === "from"
27423
+ }), /* @__PURE__ */ jsx(DateInput, {
27424
+ value: toDate2,
27425
+ setValue: updateToDate,
27426
+ units,
27427
+ customStyle: {
27428
+ ...styles$j.input,
27429
+ ...styles$j.editorCell
27430
+ },
27431
+ onFocus: () => updateFocusedDate("to"),
27432
+ isActive: focusedDate === "to"
27288
27433
  })]
27289
- }), isPickerOpen && /* @__PURE__ */ jsx("div", {
27290
- style: {
27291
- position: "absolute",
27292
- top: "100%",
27293
- left: 0,
27294
- zIndex: 1e3,
27295
- marginTop: "5px",
27296
- padding: "10px",
27297
- backgroundColor: "white",
27298
- borderRadius: "5px",
27299
- boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
27300
- border: "1px solid #e0e0e0"
27434
+ }), /* @__PURE__ */ jsx("div", {
27435
+ ...{
27436
+ className: "mly78zum5 mly167g77z"
27301
27437
  },
27302
27438
  children: /* @__PURE__ */ jsx(DatePicker, {
27303
- value: getDateForDatePicker(),
27304
- setValue: (newValue) => {
27305
- checkForErrorsOrCommit(newValue);
27306
- },
27307
- maxLevel
27439
+ value: date,
27440
+ setValue: updateDate,
27441
+ units,
27442
+ maxLevel,
27443
+ customStyle: styles$j.editorCell
27308
27444
  })
27309
27445
  })]
27310
27446
  });
27311
27447
  }
27312
- function DateTimeEditor({
27313
- value,
27314
- setValue,
27315
- maxLevel
27316
- }) {
27317
- return /* @__PURE__ */ jsx(ClickableDateToken, {
27318
- value,
27319
- setValue,
27320
- maxLevel
27321
- });
27448
+ function createTemporalLiteral(date, units) {
27449
+ return {
27450
+ moment: "literal",
27451
+ literal: hooks(date).format(formats[units])
27452
+ };
27322
27453
  }
27323
- function DateTimeRangeEditor({
27324
- fromValue,
27325
- toValue,
27326
- setFromValue,
27327
- setToValue,
27328
- maxLevel
27329
- }) {
27330
- return /* @__PURE__ */ jsxs("div", {
27331
- style: {
27332
- display: "flex",
27333
- gap: "10px"
27334
- },
27335
- children: [/* @__PURE__ */ jsx(ClickableDateToken, {
27336
- value: fromValue,
27337
- setValue: setFromValue,
27338
- maxLevel
27339
- }), /* @__PURE__ */ jsx(ClickableDateToken, {
27340
- value: toValue,
27341
- setValue: setToValue,
27342
- maxLevel
27343
- })]
27344
- });
27454
+ function extractDateFromMoment(momentObj) {
27455
+ if (momentObj && momentObj.moment === "literal") {
27456
+ return hooks(momentObj.literal).toDate();
27457
+ }
27458
+ return /* @__PURE__ */ new Date();
27345
27459
  }
27346
- function dateTimeFilterChangeType(filter, type) {
27347
- let currentDate = /* @__PURE__ */ new Date();
27348
- let endDate = hooks(currentDate).add(1, "day").toDate();
27349
- if (filter.operator === "in") {
27350
- currentDate = extractDateFromMoment(filter.in);
27351
- } else if (filter.operator === "before") {
27352
- currentDate = extractDateFromMoment(filter.before);
27353
- } else if (filter.operator === "after") {
27354
- currentDate = extractDateFromMoment(filter.after);
27355
- } else if (filter.operator === "to") {
27356
- currentDate = extractDateFromMoment(filter.fromMoment);
27357
- endDate = extractDateFromMoment(filter.toMoment);
27460
+ function dateTimeFilterChangeType(filter, type, units) {
27461
+ let n = "7";
27462
+ let fromMoment = createTemporalLiteral(/* @__PURE__ */ new Date(), units);
27463
+ let toMoment = createTemporalLiteral(/* @__PURE__ */ new Date(), units);
27464
+ switch (filter.operator) {
27465
+ case "last":
27466
+ case "next":
27467
+ n = filter.n;
27468
+ units = filter.units;
27469
+ break;
27470
+ case "after":
27471
+ fromMoment = filter.after;
27472
+ toMoment = filter.after;
27473
+ break;
27474
+ case "before":
27475
+ fromMoment = filter.before;
27476
+ toMoment = filter.before;
27477
+ break;
27478
+ case "to":
27479
+ fromMoment = filter.fromMoment;
27480
+ toMoment = filter.toMoment;
27481
+ break;
27358
27482
  }
27359
27483
  switch (type) {
27360
- case "is_equal_to":
27484
+ case "last":
27485
+ case "next":
27361
27486
  return {
27362
- operator: "in",
27363
- in: createTemporalLiteral(currentDate)
27487
+ operator: type,
27488
+ n,
27489
+ units
27364
27490
  };
27365
- case "is_before":
27491
+ case "after":
27366
27492
  return {
27367
- operator: "before",
27368
- before: createTemporalLiteral(currentDate)
27493
+ operator: type,
27494
+ after: fromMoment
27369
27495
  };
27370
- case "is_after":
27496
+ case "before":
27371
27497
  return {
27372
- operator: "after",
27373
- after: createTemporalLiteral(currentDate)
27498
+ operator: type,
27499
+ before: fromMoment
27374
27500
  };
27375
- case "is_between":
27501
+ case "to":
27376
27502
  return {
27377
- operator: "to",
27378
- fromMoment: createTemporalLiteral(currentDate),
27379
- toMoment: createTemporalLiteral(endDate)
27503
+ operator: type,
27504
+ fromMoment,
27505
+ toMoment
27380
27506
  };
27381
- case "is_null":
27507
+ case "null":
27382
27508
  return {
27383
27509
  operator: "null"
27384
27510
  };
27385
- case "is_not_null":
27511
+ case "-null":
27386
27512
  return {
27387
27513
  operator: "null",
27388
27514
  not: true
27389
27515
  };
27390
- default:
27391
- return filter;
27392
27516
  }
27517
+ return filter;
27393
27518
  }
27519
+ const styles$j = {
27520
+ editorCell: {
27521
+ flexGrow: "mly1iyjqo2",
27522
+ $$css: true
27523
+ },
27524
+ input: {
27525
+ border: "mly2yh2zd",
27526
+ borderWidth: null,
27527
+ borderInlineWidth: null,
27528
+ borderInlineStartWidth: null,
27529
+ borderLeftWidth: null,
27530
+ borderInlineEndWidth: null,
27531
+ borderRightWidth: null,
27532
+ borderBlockWidth: null,
27533
+ borderTopWidth: null,
27534
+ borderBottomWidth: null,
27535
+ borderStyle: null,
27536
+ borderInlineStyle: null,
27537
+ borderInlineStartStyle: null,
27538
+ borderLeftStyle: null,
27539
+ borderInlineEndStyle: null,
27540
+ borderRightStyle: null,
27541
+ borderBlockStyle: null,
27542
+ borderTopStyle: null,
27543
+ borderBottomStyle: null,
27544
+ borderColor: null,
27545
+ borderInlineColor: null,
27546
+ borderInlineStartColor: null,
27547
+ borderLeftColor: null,
27548
+ borderInlineEndColor: null,
27549
+ borderRightColor: null,
27550
+ borderBlockColor: null,
27551
+ borderTopColor: null,
27552
+ borderBottomColor: null,
27553
+ color: "mlyizdh9v",
27554
+ padding: "mly9cpjcd",
27555
+ paddingInline: null,
27556
+ paddingStart: null,
27557
+ paddingLeft: null,
27558
+ paddingEnd: null,
27559
+ paddingRight: null,
27560
+ paddingBlock: null,
27561
+ paddingTop: null,
27562
+ paddingBottom: null,
27563
+ borderRadius: "mly1sxf85j",
27564
+ borderStartStartRadius: null,
27565
+ borderStartEndRadius: null,
27566
+ borderEndStartRadius: null,
27567
+ borderEndEndRadius: null,
27568
+ borderTopLeftRadius: null,
27569
+ borderTopRightRadius: null,
27570
+ borderBottomLeftRadius: null,
27571
+ borderBottomRightRadius: null,
27572
+ $$css: true
27573
+ }
27574
+ };
27394
27575
  function FilterDialog({
27395
27576
  fieldInfo,
27396
27577
  path,
@@ -27522,21 +27703,43 @@ function useFilterModal({
27522
27703
  }
27523
27704
  setQuery == null ? void 0 : setQuery(rootQuery == null ? void 0 : rootQuery.build());
27524
27705
  };
27525
- const FilterModal = () => /* @__PURE__ */ jsx(Root$2, {
27526
- open,
27527
- onOpenChange: setOpen,
27528
- children: /* @__PURE__ */ jsx(Portal$3, {
27529
- children: /* @__PURE__ */ jsx(Overlay, {
27530
- ...{
27531
- className: "mly5uxqc1 mlyixxii4 mly13vifvy mlyu96u03 mly3m8u43 mly1ey2m1c mlyrvj5dj mly1ku5rj1 mly11uqc5h"
27532
- },
27533
- children: /* @__PURE__ */ jsxs(Content$1, {
27534
- ...{},
27535
- style: x2 && y2 ? {
27536
- position: "fixed",
27537
- top: y2,
27538
- left: x2
27539
- } : {},
27706
+ const FilterModal = () => {
27707
+ const {
27708
+ refs,
27709
+ floatingStyles
27710
+ } = useFloating({
27711
+ placement: "right-start",
27712
+ strategy: "fixed",
27713
+ open,
27714
+ middleware: [offset$1({
27715
+ mainAxis: 3,
27716
+ crossAxis: 3
27717
+ }), flip({
27718
+ boundary: document.body
27719
+ })]
27720
+ });
27721
+ return /* @__PURE__ */ jsx(Root$2, {
27722
+ open,
27723
+ onOpenChange: setOpen,
27724
+ children: /* @__PURE__ */ jsxs(Portal$3, {
27725
+ children: [/* @__PURE__ */ jsx(Overlay, {
27726
+ ...{
27727
+ className: "mly5uxqc1 mlyixxii4 mly13vifvy mlyu96u03 mly3m8u43 mly1ey2m1c mlyrvj5dj mly1ku5rj1 mly11uqc5h"
27728
+ },
27729
+ children: /* @__PURE__ */ jsx("div", {
27730
+ style: {
27731
+ position: "fixed",
27732
+ left: x2,
27733
+ top: y2
27734
+ },
27735
+ ref: refs.setReference
27736
+ })
27737
+ }), /* @__PURE__ */ jsxs(Content$1, {
27738
+ ...{
27739
+ className: "mly11uqc5h"
27740
+ },
27741
+ style: floatingStyles,
27742
+ ref: refs.setFloating,
27540
27743
  children: [/* @__PURE__ */ jsx(Title, {
27541
27744
  ...{
27542
27745
  className: "mly1s85apg"
@@ -27554,10 +27757,10 @@ function useFilterModal({
27554
27757
  setFilter: (filter2) => setFilter(filter2),
27555
27758
  setOpen
27556
27759
  })]
27557
- })
27760
+ })]
27558
27761
  })
27559
- })
27560
- });
27762
+ });
27763
+ };
27561
27764
  return {
27562
27765
  openFilterModal,
27563
27766
  FilterModal
@@ -27591,26 +27794,22 @@ function getDefaultFilter(fieldInfo) {
27591
27794
  return {
27592
27795
  kind: "date",
27593
27796
  parsed: {
27594
- operator: "after",
27595
- after: createTemporalDefault()
27797
+ operator: "last",
27798
+ n: "7",
27799
+ units: "day"
27596
27800
  }
27597
27801
  };
27598
27802
  } else {
27599
27803
  return {
27600
27804
  kind: "timestamp",
27601
27805
  parsed: {
27602
- operator: "after",
27603
- after: createTemporalDefault()
27806
+ operator: "last",
27807
+ n: "7",
27808
+ units: "day"
27604
27809
  }
27605
27810
  };
27606
27811
  }
27607
27812
  }
27608
- function createTemporalDefault() {
27609
- return {
27610
- moment: "literal",
27611
- literal: hooks(/* @__PURE__ */ new Date()).format("YYYY-MM-DD HH:mm:ss.0")
27612
- };
27613
- }
27614
27813
  function MalloyExplorerProvider({
27615
27814
  source,
27616
27815
  query,
@@ -27696,7 +27895,7 @@ function QueryActionBar({
27696
27895
  })]
27697
27896
  });
27698
27897
  }
27699
- const styles$g = {
27898
+ const styles$i = {
27700
27899
  labelWithIcon: {
27701
27900
  display: "mly78zum5",
27702
27901
  alignItems: "mly6s0dn4",
@@ -27794,6 +27993,10 @@ const hoverStyles = {
27794
27993
  display: "mly2b4tyj",
27795
27994
  flexShrink: "mly2lah0s",
27796
27995
  $$css: true
27996
+ },
27997
+ hoverOpen: {
27998
+ display: "mly3nfvp2",
27999
+ $$css: true
27797
28000
  }
27798
28001
  };
27799
28002
  function ClearButton({
@@ -27871,9 +28074,6 @@ function segmentNestNo(segment, name) {
27871
28074
  }
27872
28075
  function addGroupBy(rootQuery, segment, field, path, setQuery) {
27873
28076
  segment.addGroupBy(field.name, path);
27874
- if (!segmentHasLimit(segment)) {
27875
- segment.setLimit(1e3);
27876
- }
27877
28077
  setQuery == null ? void 0 : setQuery(rootQuery.build());
27878
28078
  }
27879
28079
  function getSegmentIfPresent(parent) {
@@ -27921,7 +28121,8 @@ const atomicTypeMap = {
27921
28121
  json_type: "json",
27922
28122
  record_type: "json",
27923
28123
  sql_native_type: "sql_native",
27924
- timestamp_type: "date"
28124
+ timestamp_type: "date",
28125
+ filter_expression_type: "filter"
27925
28126
  };
27926
28127
  const fieldKindMap = {
27927
28128
  view: "purple",
@@ -27975,32 +28176,32 @@ function BadgeForField({
27975
28176
  label: "view",
27976
28177
  icon: "view_filled",
27977
28178
  color: "purple",
27978
- customStyle: styles$f.noBackground
28179
+ customStyle: styles$h.noBackground
27979
28180
  });
27980
28181
  } else if (field.kind === "dimension") {
27981
28182
  return /* @__PURE__ */ jsx(Badge, {
27982
28183
  label: "dimension",
27983
28184
  icon: "dimension",
27984
28185
  color: "cyan",
27985
- customStyle: styles$f.noBackground
28186
+ customStyle: styles$h.noBackground
27986
28187
  });
27987
28188
  } else if (field.kind === "measure") {
27988
28189
  return /* @__PURE__ */ jsx(Badge, {
27989
28190
  label: "measure",
27990
28191
  icon: "measure",
27991
28192
  color: "green",
27992
- customStyle: styles$f.noBackground
28193
+ customStyle: styles$h.noBackground
27993
28194
  });
27994
28195
  } else if (field.kind === "join") {
27995
28196
  return /* @__PURE__ */ jsx(Badge, {
27996
28197
  label: "join",
27997
28198
  icon: "many_to_one",
27998
28199
  color: "gray",
27999
- customStyle: styles$f.noBackground
28200
+ customStyle: styles$h.noBackground
28000
28201
  });
28001
28202
  }
28002
28203
  }
28003
- const styles$f = {
28204
+ const styles$h = {
28004
28205
  noBackground: {
28005
28206
  backgroundColor: "mlyjbqb8w",
28006
28207
  $$css: true
@@ -28044,7 +28245,7 @@ function Visualization$1({
28044
28245
  onClick: () => setRenderer(viz)
28045
28246
  }));
28046
28247
  const tokens2 = [/* @__PURE__ */ jsx(SelectorToken, {
28047
- customStyle: styles$e.first,
28248
+ customStyle: styles$g.first,
28048
28249
  icon: `viz_${currentRenderer}`,
28049
28250
  value: currentRenderer,
28050
28251
  items: vizes,
@@ -28054,7 +28255,7 @@ function Visualization$1({
28054
28255
  children: tokens2
28055
28256
  });
28056
28257
  }
28057
- const styles$e = {
28258
+ const styles$g = {
28058
28259
  first: {
28059
28260
  flexGrow: "mly1iyjqo2",
28060
28261
  justifyContent: "mlylqzeqv",
@@ -28083,7 +28284,7 @@ function ViewAttributeTable({
28083
28284
  }) {
28084
28285
  const dimensions = viewInfo.schema.fields.filter((f2) => f2.kind === "dimension");
28085
28286
  return /* @__PURE__ */ jsx("div", {
28086
- ..._stylex.props(styles$d.attributeTableContainer, style),
28287
+ ..._stylex.props(styles$f.attributeTableContainer, style),
28087
28288
  children: /* @__PURE__ */ jsx(ScrollableArea, {
28088
28289
  children: /* @__PURE__ */ jsx("table", {
28089
28290
  ...{
@@ -28123,9 +28324,9 @@ function ViewAttributeTableRow({
28123
28324
  className: "mlydpxx8g"
28124
28325
  },
28125
28326
  children: [/* @__PURE__ */ jsx("td", {
28126
- ..._stylex.props(styles$d.attributeTableKeyCell, fontStyles.supporting),
28327
+ ..._stylex.props(styles$f.attributeTableKeyCell, fontStyles.supporting),
28127
28328
  children: /* @__PURE__ */ jsx("div", {
28128
- ..._stylex.props(styles$d.attributeTableKeyCellContent, fontStyles.supporting),
28329
+ ..._stylex.props(styles$f.attributeTableKeyCellContent, fontStyles.supporting),
28129
28330
  children: attribute
28130
28331
  })
28131
28332
  }), /* @__PURE__ */ jsx("td", {
@@ -28136,7 +28337,7 @@ function ViewAttributeTableRow({
28136
28337
  })]
28137
28338
  });
28138
28339
  }
28139
- const styles$d = {
28340
+ const styles$f = {
28140
28341
  attributeTableContainer: {
28141
28342
  padding: "mlye8ttls",
28142
28343
  paddingInline: null,
@@ -28292,7 +28493,7 @@ function HoverText({
28292
28493
  asChild: true,
28293
28494
  children: /* @__PURE__ */ jsx("div", {
28294
28495
  ref: textRef,
28295
- ..._stylex.props(styles$c.text, fontStyles.supporting),
28496
+ ..._stylex.props(styles$e.text, fontStyles.supporting),
28296
28497
  children: text2
28297
28498
  })
28298
28499
  }), /* @__PURE__ */ jsx(Portal$4, {
@@ -28300,7 +28501,7 @@ function HoverText({
28300
28501
  side,
28301
28502
  align,
28302
28503
  children: /* @__PURE__ */ jsx("pre", {
28303
- ..._stylex.props(styles$c.hoverText, fontStyles.tooltipText),
28504
+ ..._stylex.props(styles$e.hoverText, fontStyles.tooltipText),
28304
28505
  children: text2
28305
28506
  })
28306
28507
  })
@@ -28309,7 +28510,7 @@ function HoverText({
28309
28510
  })
28310
28511
  });
28311
28512
  }
28312
- const styles$c = {
28513
+ const styles$e = {
28313
28514
  text: {
28314
28515
  whiteSpace: "mlyuxw1ft",
28315
28516
  textOverflow: "mlylyipyv",
@@ -28371,7 +28572,7 @@ function FieldHoverCard({
28371
28572
  details = /* @__PURE__ */ jsx(ViewAttributeTable, {
28372
28573
  viewInfo: field,
28373
28574
  isCompact: true,
28374
- style: styles$b.viewAttributeTable
28575
+ style: styles$d.viewAttributeTable
28375
28576
  });
28376
28577
  } else if (field.kind === "dimension") {
28377
28578
  details = /* @__PURE__ */ jsx(TopValuesTable, {
@@ -28380,7 +28581,7 @@ function FieldHoverCard({
28380
28581
  });
28381
28582
  }
28382
28583
  return /* @__PURE__ */ jsxs("div", {
28383
- ..._stylex.props(styles$b.container, fontStyles.body),
28584
+ ..._stylex.props(styles$d.container, fontStyles.body),
28384
28585
  children: [/* @__PURE__ */ jsxs("div", {
28385
28586
  children: [/* @__PURE__ */ jsx("div", {
28386
28587
  ...{
@@ -28390,7 +28591,7 @@ function FieldHoverCard({
28390
28591
  field
28391
28592
  })
28392
28593
  }), /* @__PURE__ */ jsx("div", {
28393
- ..._stylex.props(fontStyles.supporting, styles$b.path),
28594
+ ..._stylex.props(fontStyles.supporting, styles$d.path),
28394
28595
  children: pathString
28395
28596
  }), /* @__PURE__ */ jsx("div", {
28396
28597
  ..._stylex.props(fontStyles.emphasized),
@@ -28404,7 +28605,7 @@ function FieldHoverCard({
28404
28605
  })]
28405
28606
  });
28406
28607
  }
28407
- const styles$b = {
28608
+ const styles$d = {
28408
28609
  container: {
28409
28610
  width: "mlybl57os",
28410
28611
  maxHeight: "mly1t2cwa7",
@@ -28481,14 +28682,14 @@ function FieldList({
28481
28682
  children: groups.length ? groups.map((group) => /* @__PURE__ */ jsxs("div", {
28482
28683
  children: [/* @__PURE__ */ jsx("div", {
28483
28684
  children: /* @__PURE__ */ jsx("div", {
28484
- ..._stylex.props(addMenuStyles.item, styles$a.fieldItem),
28685
+ ..._stylex.props(addMenuStyles.item, styles$c.fieldItem),
28485
28686
  "data-disabled": "true",
28486
28687
  children: group.name
28487
28688
  })
28488
28689
  }), group.fields.map((field) => /* @__PURE__ */ jsx("div", {
28489
28690
  role: "menuitem",
28490
28691
  tabIndex: -1,
28491
- ..._stylex.props(addMenuStyles.item, styles$a.fieldItem),
28692
+ ..._stylex.props(addMenuStyles.item, styles$c.fieldItem),
28492
28693
  children: /* @__PURE__ */ jsx(FieldToken, {
28493
28694
  field,
28494
28695
  onClick: (event) => onClick(field, group.path, event),
@@ -28511,7 +28712,7 @@ function FieldList({
28511
28712
  })
28512
28713
  });
28513
28714
  }
28514
- const styles$a = {
28715
+ const styles$c = {
28515
28716
  fieldItem: {
28516
28717
  height: "mly1qx5ct2",
28517
28718
  paddingTop: "mly1y1aw1k",
@@ -28563,13 +28764,15 @@ function OperationActionTitle({
28563
28764
  types: types2,
28564
28765
  onClick
28565
28766
  }) {
28767
+ const [isMenuOpen, setIsMenuOpen] = React.useState(false);
28566
28768
  return /* @__PURE__ */ jsxs("div", {
28567
- ..._stylex.props(styles$g.title, hoverStyles.main),
28769
+ ..._stylex.props(styles$i.title, hoverStyles.main),
28568
28770
  children: [/* @__PURE__ */ jsx("div", {
28569
28771
  children: title
28570
28772
  }), /* @__PURE__ */ jsx("div", {
28571
- ..._stylex.props(hoverStyles.hoverActions),
28773
+ ..._stylex.props(hoverStyles.hoverActions, isMenuOpen ? hoverStyles.hoverOpen : void 0),
28572
28774
  children: /* @__PURE__ */ jsxs(Root2$2, {
28775
+ onOpenChange: setIsMenuOpen,
28573
28776
  children: [/* @__PURE__ */ jsx(Trigger$2, {
28574
28777
  asChild: true,
28575
28778
  children: /* @__PURE__ */ jsx("div", {
@@ -28646,7 +28849,7 @@ function GroupByOperations({
28646
28849
  addGroupBy(rootQuery, segment, field, path, setQuery);
28647
28850
  }
28648
28851
  }), /* @__PURE__ */ jsx("div", {
28649
- ..._stylex.props(styles$g.tokenContainer),
28852
+ ..._stylex.props(styles$i.tokenContainer),
28650
28853
  children: groupBys.map((groupBy) => {
28651
28854
  const fieldInfo = groupBy.getFieldInfo();
28652
28855
  const path = groupBy.field.getReference().path ?? [];
@@ -28736,10 +28939,10 @@ function FilterOperations({
28736
28939
  }
28737
28940
  return /* @__PURE__ */ jsxs("div", {
28738
28941
  children: [/* @__PURE__ */ jsx("div", {
28739
- ..._stylex.props(styles$g.title),
28942
+ ..._stylex.props(styles$i.title),
28740
28943
  children: "filter by"
28741
28944
  }), /* @__PURE__ */ jsx("div", {
28742
- ..._stylex.props(styles$g.tokenContainer),
28945
+ ..._stylex.props(styles$i.tokenContainer),
28743
28946
  children: filters.map((filterOperation, key2) => {
28744
28947
  return /* @__PURE__ */ jsx(ErrorElement, {
28745
28948
  fallback: /* @__PURE__ */ jsxs("div", {
@@ -28997,7 +29200,7 @@ function LimitOperation({
28997
29200
  }
28998
29201
  return /* @__PURE__ */ jsxs("div", {
28999
29202
  children: [/* @__PURE__ */ jsx("div", {
29000
- ..._stylex.props(styles$g.title),
29203
+ ..._stylex.props(styles$i.title),
29001
29204
  children: "limit"
29002
29205
  }), /* @__PURE__ */ jsxs("div", {
29003
29206
  ..._stylex.props(hoverStyles.main),
@@ -29049,7 +29252,7 @@ function AggregateOperations({
29049
29252
  setQuery == null ? void 0 : setQuery(rootQuery.build());
29050
29253
  }
29051
29254
  }), " ", /* @__PURE__ */ jsx("div", {
29052
- ..._stylex.props(styles$g.tokenContainer),
29255
+ ..._stylex.props(styles$i.tokenContainer),
29053
29256
  children: aggregates.map((aggregate) => {
29054
29257
  const fieldInfo = aggregate.getFieldInfo();
29055
29258
  const path = aggregate.field.getReference().path ?? [];
@@ -29090,10 +29293,10 @@ function OrderByOperations({
29090
29293
  }
29091
29294
  return /* @__PURE__ */ jsxs("div", {
29092
29295
  children: [/* @__PURE__ */ jsx("div", {
29093
- ..._stylex.props(styles$g.title),
29296
+ ..._stylex.props(styles$i.title),
29094
29297
  children: "order by"
29095
29298
  }), /* @__PURE__ */ jsx("div", {
29096
- ..._stylex.props(styles$g.tokenContainer),
29299
+ ..._stylex.props(styles$i.tokenContainer),
29097
29300
  children: orderBys.map((orderBy) => {
29098
29301
  const {
29099
29302
  fieldReference
@@ -29176,16 +29379,21 @@ function CollapsiblePanel({
29176
29379
  },
29177
29380
  children: [/* @__PURE__ */ jsxs("div", {
29178
29381
  ...{
29179
- className: "mly78zum5 mly1qughib mlyfawy5m mly167g77z mly6s0dn4"
29382
+ className: "mlyrvj5dj mly1mt1orb mly52fmzj mlylqzeqv mlyfawy5m mly167g77z mly6s0dn4"
29180
29383
  },
29181
- children: [icon && /* @__PURE__ */ jsx(Icon, {
29182
- name: icon,
29183
- customStyle: styles$9.icon
29184
- }), /* @__PURE__ */ jsx("div", {
29384
+ children: [/* @__PURE__ */ jsxs("div", {
29185
29385
  ...{
29186
- className: "mlyuxw1ft mlyehqz9p mly1ghz6dp mly1iyjqo2"
29386
+ className: "mlyrvj5dj mly1mt1orb mlylqzeqv mly6s0dn4 mly167g77z"
29187
29387
  },
29188
- children: title
29388
+ children: [icon && /* @__PURE__ */ jsx(Icon, {
29389
+ name: icon,
29390
+ customStyle: styles$b.icon
29391
+ }), /* @__PURE__ */ jsx("div", {
29392
+ ...{
29393
+ className: "mlyuxw1ft mlyb3r6kr mlylyipyv mlyehqz9p mly1ghz6dp"
29394
+ },
29395
+ children: title
29396
+ })]
29189
29397
  }), /* @__PURE__ */ jsxs("div", {
29190
29398
  ...{
29191
29399
  className: "mly78zum5"
@@ -29216,7 +29424,7 @@ function CollapsiblePanel({
29216
29424
  })]
29217
29425
  });
29218
29426
  }
29219
- const styles$9 = {
29427
+ const styles$b = {
29220
29428
  icon: {
29221
29429
  $$css: true
29222
29430
  }
@@ -29316,7 +29524,7 @@ function AddFieldItem({
29316
29524
  const trigger = /* @__PURE__ */ jsxs("div", {
29317
29525
  role: "menuitem",
29318
29526
  tabIndex: -1,
29319
- ..._stylex.props(addMenuStyles.item, addMenuStyles.clickable),
29527
+ ..._stylex.props(addMenuStyles.item, addMenuStyles.clickable, open ? styles$a.open : null),
29320
29528
  "data-disabled": disabled ? "true" : void 0,
29321
29529
  children: [/* @__PURE__ */ jsxs("div", {
29322
29530
  ..._stylex.props(addMenuStyles.label),
@@ -29351,7 +29559,6 @@ function AddFieldItem({
29351
29559
  children: [/* @__PURE__ */ jsx(Trigger$2, {
29352
29560
  asChild: true,
29353
29561
  disabled,
29354
- onMouseEnter: () => setOpen(true),
29355
29562
  children: trigger
29356
29563
  }), /* @__PURE__ */ jsx(Portal$1, {
29357
29564
  children: /* @__PURE__ */ jsxs(Content2$2, {
@@ -29372,6 +29579,22 @@ function AddFieldItem({
29372
29579
  })]
29373
29580
  });
29374
29581
  }
29582
+ const styles$a = {
29583
+ open: {
29584
+ background: "mly1p5yd3t",
29585
+ backgroundAttachment: null,
29586
+ backgroundClip: null,
29587
+ backgroundColor: null,
29588
+ backgroundImage: null,
29589
+ backgroundOrigin: null,
29590
+ backgroundPosition: null,
29591
+ backgroundPositionX: null,
29592
+ backgroundPositionY: null,
29593
+ backgroundRepeat: null,
29594
+ backgroundSize: null,
29595
+ $$css: true
29596
+ }
29597
+ };
29375
29598
  function AddOrderBy({
29376
29599
  rootQuery,
29377
29600
  view
@@ -29560,9 +29783,6 @@ function AddMenu({
29560
29783
  const segment = view.getOrAddDefaultSegment();
29561
29784
  if (field.kind === "dimension") {
29562
29785
  segment.addGroupBy(field.name, path);
29563
- if (!segmentHasLimit(segment)) {
29564
- segment.setLimit(1e3);
29565
- }
29566
29786
  } else if (field.kind === "measure") {
29567
29787
  segment.addAggregate(field.name, path);
29568
29788
  } else {
@@ -29636,8 +29856,9 @@ function NestOperations({
29636
29856
  return null;
29637
29857
  }
29638
29858
  return /* @__PURE__ */ jsx("div", {
29639
- ..._stylex.props(styles$g.tokenContainer),
29859
+ ..._stylex.props(styles$i.tokenContainer),
29640
29860
  children: nests.map((nest) => {
29861
+ const defaultOpen = nest.view.definition.node.kind === "segment" && nest.view.definition.node.operations.length === 0;
29641
29862
  return /* @__PURE__ */ jsx("div", {
29642
29863
  ...{
29643
29864
  className: "mlyj3b58b mly1yf7rl7 mly1xmf6yo mlyh8yej3"
@@ -29645,7 +29866,7 @@ function NestOperations({
29645
29866
  children: /* @__PURE__ */ jsx(CollapsiblePanel, {
29646
29867
  title: nest.name,
29647
29868
  icon: "nest",
29648
- defaultOpen: false,
29869
+ defaultOpen,
29649
29870
  controls: /* @__PURE__ */ jsxs(Fragment, {
29650
29871
  children: [/* @__PURE__ */ jsx(DropdownMenu, {
29651
29872
  trigger: /* @__PURE__ */ jsx(Button, {
@@ -29806,11 +30027,11 @@ function CollapsingView({
29806
30027
  })]
29807
30028
  }), !collapsed && /* @__PURE__ */ jsx(ViewAttributeTable, {
29808
30029
  viewInfo: viewDef.getViewInfo(),
29809
- style: styles$8.preview
30030
+ style: styles$9.preview
29810
30031
  })]
29811
30032
  });
29812
30033
  }
29813
- const styles$8 = {
30034
+ const styles$9 = {
29814
30035
  preview: {
29815
30036
  height: "mlyt7dq6l",
29816
30037
  maxHeight: "mly1hkcv85",
@@ -29914,9 +30135,9 @@ function Source({
29914
30135
  } = useContext(ExplorerPanelsContext);
29915
30136
  if (!(isSourcePanelOpen && setIsSourcePanelOpen) && rootQuery.definition instanceof ASTArrowQueryDefinition) {
29916
30137
  return /* @__PURE__ */ jsxs("div", {
29917
- ..._stylex.props(styles$g.queryCard, styles$7.flex),
30138
+ ..._stylex.props(styles$i.queryCard, styles$8.flex),
29918
30139
  children: [/* @__PURE__ */ jsxs("div", {
29919
- ..._stylex.props(styles$g.labelWithIcon),
30140
+ ..._stylex.props(styles$i.labelWithIcon),
29920
30141
  children: [/* @__PURE__ */ jsx(Icon, {
29921
30142
  name: "database"
29922
30143
  }), rootQuery.definition.as.ArrowQueryDefinition().source.as.ReferenceQueryArrowSource().name]
@@ -29929,7 +30150,7 @@ function Source({
29929
30150
  }
29930
30151
  return null;
29931
30152
  }
29932
- const styles$7 = {
30153
+ const styles$8 = {
29933
30154
  flex: {
29934
30155
  display: "mly78zum5",
29935
30156
  justifyContent: "mly1qughib",
@@ -29993,6 +30214,12 @@ function LiteralValueEditor({
29993
30214
  granularity: "second"
29994
30215
  })
29995
30216
  });
30217
+ case "filter_expression_literal":
30218
+ return /* @__PURE__ */ jsx(EditableToken, {
30219
+ value: value.filter_expression_value,
30220
+ onChange: (value2) => setValue(value2),
30221
+ customStyle
30222
+ });
29996
30223
  }
29997
30224
  }
29998
30225
  function Parameters({
@@ -30016,6 +30243,7 @@ function Parameters({
30016
30243
  children: sourceParameters.map((parameter) => {
30017
30244
  var _a2;
30018
30245
  return /* @__PURE__ */ jsxs(TokenGroup, {
30246
+ customStyle: styles$7.tokenGroup,
30019
30247
  children: [/* @__PURE__ */ jsx(Token, {
30020
30248
  icon: atomicTypeToIcon(parameter.type.kind),
30021
30249
  label: parameter.name
@@ -30033,6 +30261,12 @@ function Parameters({
30033
30261
  }
30034
30262
  return null;
30035
30263
  }
30264
+ const styles$7 = {
30265
+ tokenGroup: {
30266
+ display: "mly78zum5",
30267
+ $$css: true
30268
+ }
30269
+ };
30036
30270
  function QueryEditor() {
30037
30271
  const {
30038
30272
  rootQuery,