@sanity/vision 6.20.0 → 6.21.0-next.103

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.
@@ -1,7 +1,7 @@
1
- import { t as visionLocaleNamespace } from "./i18n-JS8KzGj8.js";
2
- import { A as VARIANTS_API_VERSION, C as getActivePerspective, D as resultJsonExtensions, E as paramsExtensions, O as API_VERSIONS, S as encodeQueryString, T as groqExtensions, _ as VISION_STORAGE_KEY_PREFIX, a as getAtKeypath, b as isPlainObject, c as DelayedSpinner, d as getJsonBlobUrl, f as useSavedQueries, g as validateApiVersion, h as parseQueryUrl, i as describeKeypath, j as prefixApiVersion, k as DEFAULT_API_VERSION, l as canEncodeCsv, m as isApiCdnHost, n as createRetryableLazy, o as QueryErrorDialog, p as parseParams, r as ResultView, s as isApiVersionBelow, u as getCsvBlobUrl, v as getStorage, w as VisionCodeMirror, x as isVisionPasteTarget, y as onLocalStorageCleared } from "./SanityVision-ePOzvdmp.js";
1
+ import { t as visionLocaleNamespace } from "./i18n-BGSN3nAJ.js";
2
+ import { A as DEFAULT_API_VERSION, C as getActivePerspective, D as paramsExtensions, E as groqExtensions, M as prefixApiVersion, O as resultJsonExtensions, S as encodeQueryString, T as VisionCodeMirror, _ as VISION_STORAGE_KEY_PREFIX, a as getAtKeypath, b as isPlainObject, c as DelayedSpinner, d as getJsonBlobUrl, f as useSavedQueries, g as validateApiVersion, h as parseQueryUrl, i as describeKeypath, j as VARIANTS_API_VERSION, k as API_VERSIONS, l as canEncodeCsv, m as isApiCdnHost, n as createRetryableLazy, o as QueryErrorDialog, p as parseParams, r as ResultView, s as isApiVersionBelow, u as getCsvBlobUrl, v as getStorage, w as useVariantsEnabled, x as isVisionPasteTarget, y as onLocalStorageCleared } from "./SanityVision-tHhBPbsg.js";
3
3
  import { Component, Suspense, createContext, memo, use, useContext, useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
4
- import { ContextMenuButton, UserAvatar, getDefaultVariant, getReleaseIdFromReleaseDocumentId, getVariantTitle, isCardinalityOneRelease, sortReleases, useActiveReleases, useClient, useDateTimeFormat, usePerspective, useScheduledDraftsEnabled, useSchema, useTranslation, useWorkspace } from "sanity";
4
+ import { ContextMenuButton, UserAvatar, getDefaultVariant, getReleaseIdFromReleaseDocumentId, getVariantTitle, isCardinalityOneRelease, sortReleases, useActiveReleases, useClient, useDateTimeFormat, useNumberFormat, usePerspective, useProjectStore, useScheduledDraftsEnabled, useSchema, useTranslation, useWorkspace } from "sanity";
5
5
  import { useRouter } from "sanity/router";
6
6
  import { c } from "react/compiler-runtime";
7
7
  import { ChevronRightIcon } from "@sanity/icons/ChevronRight";
@@ -15,7 +15,6 @@ import { syntaxTree } from "@codemirror/language";
15
15
  import { EditorSelection, EditorState, Facet, StateField } from "@codemirror/state";
16
16
  import { EditorView, hoverTooltip, keymap, showTooltip } from "@codemirror/view";
17
17
  import { parser } from "@sanity/lezer-groq";
18
- import { assignInlineVars } from "@vanilla-extract/dynamic";
19
18
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
20
19
  import { ErrorOutlineIcon } from "@sanity/icons/ErrorOutline";
21
20
  import { Tooltip } from "@sanity/ui/tooltip";
@@ -33,7 +32,9 @@ import { uuid } from "@sanity/uuid";
33
32
  import { PlayIcon } from "@sanity/icons/Play";
34
33
  import { StopIcon } from "@sanity/icons/Stop";
35
34
  import { CopyIcon } from "@sanity/icons/Copy";
35
+ import { isHttpError } from "@sanity/client";
36
36
  import { DocumentSheetIcon } from "@sanity/icons/DocumentSheet";
37
+ import { useObservable } from "react-rx";
37
38
  import { useActorRef, useSelector } from "@xstate/react";
38
39
  import { assign, enqueueActions, fromObservable, fromPromise, raise, setup } from "xstate";
39
40
  import { BoltIcon } from "@sanity/icons/Bolt";
@@ -710,7 +711,10 @@ const vistaMachine = setup({
710
711
  ...context.runners,
711
712
  [tab.id]: spawnRunner(spawn, tab.id)
712
713
  },
713
- fetchOnOpen: event.fetch ? [...context.fetchOnOpen, tab.id] : context.fetchOnOpen
714
+ fetchOnOpen: event.fetch ? {
715
+ ...context.fetchOnOpen,
716
+ [tab.id]: event.fetch
717
+ } : context.fetchOnOpen
714
718
  };
715
719
  }),
716
720
  closeTab: enqueueActions(({ context, event, enqueue }) => {
@@ -720,7 +724,11 @@ const vistaMachine = setup({
720
724
  let runner = context.runners[event.id];
721
725
  runner && enqueue.stopChild(runner);
722
726
  let { [event.id]: _removed, ...runners } = context.runners, remaining = context.tabs.filter((tab) => tab.id !== event.id);
723
- if (context.fetchOnOpen.includes(event.id) && enqueue.assign({ fetchOnOpen: context.fetchOnOpen.filter((id) => id !== event.id) }), remaining.length === 0) {
727
+ if (event.id in context.fetchOnOpen) {
728
+ let { [event.id]: _pending, ...fetchOnOpen } = context.fetchOnOpen;
729
+ enqueue.assign({ fetchOnOpen });
730
+ }
731
+ if (remaining.length === 0) {
724
732
  let fallback = createTab(context.settings);
725
733
  enqueue.assign(({ spawn }) => ({
726
734
  tabs: [fallback],
@@ -750,7 +758,7 @@ const vistaMachine = setup({
750
758
  historyDiff: fresh.historyDiff,
751
759
  functions: fresh.functions,
752
760
  runners: spawnRunners(spawn, fresh.tabs),
753
- fetchOnOpen: []
761
+ fetchOnOpen: {}
754
762
  };
755
763
  });
756
764
  })
@@ -768,7 +776,7 @@ const vistaMachine = setup({
768
776
  functions: input.persisted.functions,
769
777
  runners: spawnRunners(spawn, input.persisted.tabs),
770
778
  loadRevisions: {},
771
- fetchOnOpen: [],
779
+ fetchOnOpen: {},
772
780
  restoredSidebar: input.persisted.sidebar,
773
781
  drawer: input.persisted.sidebar.drawer ?? "saved",
774
782
  restoredPanels: input.persisted.panels
@@ -787,7 +795,10 @@ const vistaMachine = setup({
787
795
  return event.ids.flatMap((id) => byId.get(id) ?? []);
788
796
  } })
789
797
  },
790
- "tab.fetchedOnOpen": { actions: assign({ fetchOnOpen: ({ context, event }) => context.fetchOnOpen.filter((id) => id !== event.id) }) },
798
+ "tab.fetchedOnOpen": { actions: assign({ fetchOnOpen: ({ context, event }) => {
799
+ let { [event.id]: _fetched, ...fetchOnOpen } = context.fetchOnOpen;
800
+ return fetchOnOpen;
801
+ } }) },
791
802
  "tab.rename": { actions: assign({ tabs: ({ context, event }) => updateTab(context.tabs, event.id, (tab) => ({
792
803
  ...tab,
793
804
  title: event.title?.trim() || void 0
@@ -824,7 +835,10 @@ const vistaMachine = setup({
824
835
  ...context.loadRevisions,
825
836
  [event.id]: (context.loadRevisions[event.id] || 0) + 1
826
837
  }),
827
- fetchOnOpen: ({ context, event }) => event.fetch && !context.fetchOnOpen.includes(event.id) ? [...context.fetchOnOpen, event.id] : context.fetchOnOpen
838
+ fetchOnOpen: ({ context, event }) => event.fetch ? {
839
+ ...context.fetchOnOpen,
840
+ [event.id]: event.fetch
841
+ } : context.fetchOnOpen
828
842
  }) },
829
843
  "settings.update": { actions: assign({ settings: ({ context, event }) => ({
830
844
  ...context.settings,
@@ -1184,7 +1198,7 @@ function useOnValueChange(value, onChange) {
1184
1198
  function cx(...classNames) {
1185
1199
  return classNames.filter(Boolean).join(" ");
1186
1200
  }
1187
- var codeBlock = "_1anxzyv1c", collapsibleSection = "_1anxzyvj", drawerScroller = "_1anxzyvg", editorContainer = "_1anxzyvr", editorLabel = "_1anxzyvb", jsonEditorBox = "_1anxzyvf", labelActions = "_1anxzyvd", lintFindingButton = "_1anxzyv1e", listItemButton = "_1anxzyv1g", optionsGrid = "_1anxzyvp", optionsSection = "_1anxzyvm", paneFill = "_1anxzyv9", panelTabs = "_1anxzyvh", paramsSection = "_1anxzyvk", previewCode = "_1anxzyv1d", querySection = "_1anxzyvi", resultContainer = "_1anxzyv1b", resultJson = "_1anxzyve", resultLabel = "_1anxzyvc _1anxzyvb", root = "_1anxzyv0", scrollArea = "_1anxzyvs", shrinkable = "_1anxzyv1f", sidebarDrawer = "_1anxzyv11", sidebarItem = "_1anxzyvx", sidebarRail = "_1anxzyvt", sidebarRailCollapsed = "_1anxzyvu", sidebarRailExpanded = "_1anxzyvv", sidebarSlot = "_1anxzyv10", splitHandle = "_1anxzyv5", splitHandleHorizontal = "_1anxzyv7", splitHandleVertical = "_1anxzyv6", splitPane = "_1anxzyv4", splitPaneContainer = "_1anxzyva", splitRoot = "_1anxzyv1", splitRootColumn = "_1anxzyv3", splitRootRow = "_1anxzyv2", tab = "_1anxzyv17", tabBar = "_1anxzyv14", tabCloseButton = "_1anxzyv19", tabItem = "_1anxzyv16", tabList = "_1anxzyv15", tabTitleButton = "_1anxzyv18", tabTitleInput = "_1anxzyv1a";
1201
+ const _key8$1 = "cTWfhW_lintFindingButton", _key12$1 = "cTWfhW_paneFill", _key16 = "cTWfhW_previewCode", _key29 = "cTWfhW_sidebarItem", _key41 = "cTWfhW_splitPane", _key42 = "cTWfhW_splitPaneContainer";
1188
1202
  /** The dataset a tab queries: the workspace's while following it, otherwise the pinned one */
1189
1203
  function getTabDataset(options, workspaceDataset) {
1190
1204
  return options.datasetMode === "workspace" ? workspaceDataset : options.dataset;
@@ -1215,9 +1229,9 @@ function withoutPublishedStack(perspective) {
1215
1229
  }
1216
1230
  /** Reads the studio state every tab's options are resolved against */
1217
1231
  function useRequestEnvironment() {
1218
- let $ = c(13), { perspectiveStack, selectedVariantNames } = usePerspective(), workspaceDataset = useVistaSelector(selectWorkspaceDataset), isScheduledDraftsEnabled = useScheduledDraftsEnabled(), { data: t0 } = useActiveReleases(), t1;
1232
+ let $ = c(14), { perspectiveStack, selectedVariantNames } = usePerspective(), workspaceDataset = useVistaSelector(selectWorkspaceDataset), isScheduledDraftsEnabled = useScheduledDraftsEnabled(), { data: t0 } = useActiveReleases(), t1;
1219
1233
  $[0] === t0 ? t1 = $[1] : (t1 = t0 === void 0 ? [] : t0, $[0] = t0, $[1] = t1);
1220
- let releases = t1, isDraftModelEnabled = useWorkspace().document.drafts.enabled, t2;
1234
+ let releases = t1, isDraftModelEnabled = useWorkspace().document.drafts.enabled, isVariantsEnabled = useVariantsEnabled(), t2;
1221
1235
  bb0: {
1222
1236
  if (!isScheduledDraftsEnabled) {
1223
1237
  t2 = void 0;
@@ -1233,13 +1247,14 @@ function useRequestEnvironment() {
1233
1247
  t2 = t3;
1234
1248
  }
1235
1249
  let scheduledDraftsStack = t2, t3;
1236
- return $[7] !== isScheduledDraftsEnabled || $[8] !== perspectiveStack || $[9] !== scheduledDraftsStack || $[10] !== selectedVariantNames || $[11] !== workspaceDataset ? (t3 = {
1250
+ return $[7] !== isScheduledDraftsEnabled || $[8] !== isVariantsEnabled || $[9] !== perspectiveStack || $[10] !== scheduledDraftsStack || $[11] !== selectedVariantNames || $[12] !== workspaceDataset ? (t3 = {
1237
1251
  workspaceDataset,
1238
1252
  perspectiveStack,
1239
1253
  selectedVariantNames,
1254
+ isVariantsEnabled,
1240
1255
  scheduledDraftsStack,
1241
1256
  isScheduledDraftsEnabled
1242
- }, $[7] = isScheduledDraftsEnabled, $[8] = perspectiveStack, $[9] = scheduledDraftsStack, $[10] = selectedVariantNames, $[11] = workspaceDataset, $[12] = t3) : t3 = $[12], t3;
1257
+ }, $[7] = isScheduledDraftsEnabled, $[8] = isVariantsEnabled, $[9] = perspectiveStack, $[10] = scheduledDraftsStack, $[11] = selectedVariantNames, $[12] = workspaceDataset, $[13] = t3) : t3 = $[13], t3;
1243
1258
  }
1244
1259
  function _temp2$12(release_0) {
1245
1260
  return getReleaseIdFromReleaseDocumentId(release_0._id);
@@ -1250,10 +1265,10 @@ function _temp$23(release) {
1250
1265
  /**
1251
1266
  * Resolves a tab's options against the studio state: a followed workspace dataset, the `global`
1252
1267
  * and `scheduledDrafts` perspectives becoming real perspective stacks, and the navbar variant,
1253
- * which locks the API version to the experimental one.
1268
+ * which locks the API version to the experimental one (where the workspace has variants at all).
1254
1269
  */
1255
1270
  function resolveRequestOptions(options, environment) {
1256
- let { workspaceDataset, perspectiveStack, selectedVariantNames, scheduledDraftsStack } = environment, dataset = getTabDataset(options, workspaceDataset), variant = options.variant === "global" ? getDefaultVariant(selectedVariantNames) : void 0, isValidApiVersion = validateApiVersion(options.apiVersion), userApiVersion = isValidApiVersion ? prefixApiVersion(options.apiVersion) : DEFAULT_API_VERSION, apiVersion = variant ? VARIANTS_API_VERSION : userApiVersion, tabPerspective = getEffectivePerspective(options.perspective, environment.isScheduledDraftsEnabled), perspective = withoutPublishedStack(getActivePerspective({
1271
+ let { workspaceDataset, perspectiveStack, selectedVariantNames, isVariantsEnabled, scheduledDraftsStack } = environment, dataset = getTabDataset(options, workspaceDataset), variant = isVariantsEnabled && options.variant === "global" ? getDefaultVariant(selectedVariantNames) : void 0, isValidApiVersion = validateApiVersion(options.apiVersion), userApiVersion = isValidApiVersion ? prefixApiVersion(options.apiVersion) : DEFAULT_API_VERSION, apiVersion = variant ? VARIANTS_API_VERSION : userApiVersion, tabPerspective = getEffectivePerspective(options.perspective, environment.isScheduledDraftsEnabled), perspective = withoutPublishedStack(getActivePerspective({
1257
1272
  visionPerspective: tabPerspective === "global" ? "pinnedRelease" : tabPerspective,
1258
1273
  perspectiveStack,
1259
1274
  scheduledDraftsStack
@@ -1525,7 +1540,7 @@ function QueryListPanel(t0) {
1525
1540
  closable: !0,
1526
1541
  id: "vista-saved-query-variant",
1527
1542
  status: "warning",
1528
- title: t("vista.saved.unavailable-variant", { variant: parsed_3.variant })
1543
+ title: t(environment.isVariantsEnabled ? "vista.saved.unavailable-variant" : "vista.saved.variants-disabled", { variant: parsed_3.variant })
1529
1544
  });
1530
1545
  }, $[22] = actorRef, $[23] = environment, $[24] = t, $[25] = toast, $[26] = t8) : t8 = $[26];
1531
1546
  let warnAboutUnrepresentable = t8, t9;
@@ -1647,7 +1662,7 @@ function QueryListPanel(t0) {
1647
1662
  }), $[67] = t19, $[68] = t20, $[69] = t21) : t21 = $[69];
1648
1663
  let t22;
1649
1664
  $[70] !== commitRename || $[71] !== deleteQuery || $[72] !== editingKey || $[73] !== editingTitle || $[74] !== emptyText || $[75] !== formatDate || $[76] !== handleUnshare || $[77] !== isOpenInTab || $[78] !== loadIntoCurrentTab || $[79] !== moving || $[80] !== openInNewTab || $[81] !== t || $[82] !== visibleItems ? (t22 = /* @__PURE__ */ jsx(Box, {
1650
- className: scrollArea,
1665
+ className: "cTWfhW_scrollArea",
1651
1666
  flexBasis: "0%",
1652
1667
  flexGrow: 1,
1653
1668
  children: visibleItems.length === 0 ? /* @__PURE__ */ jsx(Box, {
@@ -1688,7 +1703,7 @@ function QueryListPanel(t0) {
1688
1703
  value: editingTitle
1689
1704
  })
1690
1705
  }) : /* @__PURE__ */ jsx(Button, {
1691
- className: listItemButton,
1706
+ className: "cTWfhW_listItemButton",
1692
1707
  "data-testid": "vista-saved-query-open",
1693
1708
  justify: "flex-start",
1694
1709
  mode: "bleed",
@@ -1708,7 +1723,7 @@ function QueryListPanel(t0) {
1708
1723
  children: query_7.title || t("label.untitled-query")
1709
1724
  }),
1710
1725
  preview_0 && /* @__PURE__ */ jsx(Box, {
1711
- className: "_1anxzyv1d",
1726
+ className: "cTWfhW_previewCode",
1712
1727
  children: /* @__PURE__ */ jsx(Code, {
1713
1728
  size: 0,
1714
1729
  children: preview_0
@@ -2206,45 +2221,58 @@ function UseCdnField(t0) {
2206
2221
  children: t5
2207
2222
  }), $[11] = checked, $[12] = onChange, $[13] = t3, $[14] = t4, $[15] = t5, $[16] = testId, $[17] = t6) : t6 = $[17], t6;
2208
2223
  }
2209
- /** Sends the navbar's variant with the query, or none; picking another variant is not offered here */
2224
+ /**
2225
+ * Sends the navbar's variant with the query, or none; picking another variant is not offered
2226
+ * here. Shown only where the navbar has a variant selector of its own: a workspace with variants
2227
+ * switched off has no variant to send, so there is nothing to choose.
2228
+ */
2210
2229
  function VariantSelect(t0) {
2211
- let $ = c(47), { id, value, onChange } = t0, { t } = useTranslation(visionLocaleNamespace), { selectedVariants, selectedVariantNames } = usePerspective(), T0, T1, t1, t10, t2, t3, t4, t5, t6, t7, t8, t9;
2212
- if ($[0] !== id || $[1] !== onChange || $[2] !== selectedVariantNames || $[3] !== selectedVariants || $[4] !== t || $[5] !== value) {
2213
- let selectedVariant = getDefaultVariant(selectedVariants), globalVariantName = selectedVariant ? getVariantTitle(selectedVariant) : getDefaultVariant(selectedVariantNames);
2214
- T1 = Stack, t9 = 2;
2215
- let t11;
2216
- $[18] === t ? t11 = $[19] : (t11 = t("vista.options.variant-label"), $[18] = t, $[19] = t11), $[20] !== id || $[21] !== t11 ? (t10 = /* @__PURE__ */ jsx(FieldLabel, {
2217
- htmlFor: id,
2218
- children: t11
2219
- }), $[20] = id, $[21] = t11, $[22] = t10) : t10 = $[22], T0 = Select, t3 = `${id}-select`, t4 = 1, t5 = id, $[23] === onChange ? t6 = $[24] : (t6 = (event) => onChange(event.currentTarget.value === "none" ? "none" : "global"), $[23] = onChange, $[24] = t6), t7 = 2, t8 = value, t1 = "global", t2 = globalVariantName ? t("vista.options.variant.global", { name: globalVariantName }) : t("vista.options.variant.global-none"), $[0] = id, $[1] = onChange, $[2] = selectedVariantNames, $[3] = selectedVariants, $[4] = t, $[5] = value, $[6] = T0, $[7] = T1, $[8] = t1, $[9] = t10, $[10] = t2, $[11] = t3, $[12] = t4, $[13] = t5, $[14] = t6, $[15] = t7, $[16] = t8, $[17] = t9;
2220
- } else T0 = $[6], T1 = $[7], t1 = $[8], t10 = $[9], t2 = $[10], t3 = $[11], t4 = $[12], t5 = $[13], t6 = $[14], t7 = $[15], t8 = $[16], t9 = $[17];
2221
- let t11;
2222
- $[25] !== t1 || $[26] !== t2 ? (t11 = /* @__PURE__ */ jsx("option", {
2230
+ let $ = c(49), { id, value, onChange } = t0, { t } = useTranslation(visionLocaleNamespace), isVariantsEnabled = useVariantsEnabled(), { selectedVariants, selectedVariantNames } = usePerspective(), T0, T1, t1, t10, t11, t2, t3, t4, t5, t6, t7, t8, t9;
2231
+ if ($[0] !== id || $[1] !== isVariantsEnabled || $[2] !== onChange || $[3] !== selectedVariantNames || $[4] !== selectedVariants || $[5] !== t || $[6] !== value) {
2232
+ t11 = Symbol.for("react.early_return_sentinel");
2233
+ bb0: {
2234
+ let selectedVariant = getDefaultVariant(selectedVariants), globalVariantName = selectedVariant ? getVariantTitle(selectedVariant) : getDefaultVariant(selectedVariantNames);
2235
+ if (!isVariantsEnabled) {
2236
+ t11 = null;
2237
+ break bb0;
2238
+ }
2239
+ T1 = Stack, t9 = 2;
2240
+ let t12;
2241
+ $[20] === t ? t12 = $[21] : (t12 = t("vista.options.variant-label"), $[20] = t, $[21] = t12), $[22] !== id || $[23] !== t12 ? (t10 = /* @__PURE__ */ jsx(FieldLabel, {
2242
+ htmlFor: id,
2243
+ children: t12
2244
+ }), $[22] = id, $[23] = t12, $[24] = t10) : t10 = $[24], T0 = Select, t3 = `${id}-select`, t4 = 1, t5 = id, $[25] === onChange ? t6 = $[26] : (t6 = (event) => onChange(event.currentTarget.value === "none" ? "none" : "global"), $[25] = onChange, $[26] = t6), t7 = 2, t8 = value, t1 = "global", t2 = globalVariantName ? t("vista.options.variant.global", { name: globalVariantName }) : t("vista.options.variant.global-none");
2245
+ }
2246
+ $[0] = id, $[1] = isVariantsEnabled, $[2] = onChange, $[3] = selectedVariantNames, $[4] = selectedVariants, $[5] = t, $[6] = value, $[7] = T0, $[8] = T1, $[9] = t1, $[10] = t10, $[11] = t11, $[12] = t2, $[13] = t3, $[14] = t4, $[15] = t5, $[16] = t6, $[17] = t7, $[18] = t8, $[19] = t9;
2247
+ } else T0 = $[7], T1 = $[8], t1 = $[9], t10 = $[10], t11 = $[11], t2 = $[12], t3 = $[13], t4 = $[14], t5 = $[15], t6 = $[16], t7 = $[17], t8 = $[18], t9 = $[19];
2248
+ if (t11 !== Symbol.for("react.early_return_sentinel")) return t11;
2249
+ let t12;
2250
+ $[27] !== t1 || $[28] !== t2 ? (t12 = /* @__PURE__ */ jsx("option", {
2223
2251
  value: t1,
2224
2252
  children: t2
2225
- }), $[25] = t1, $[26] = t2, $[27] = t11) : t11 = $[27];
2226
- let t12;
2227
- $[28] === t ? t12 = $[29] : (t12 = t("vista.options.variant.none"), $[28] = t, $[29] = t12);
2253
+ }), $[27] = t1, $[28] = t2, $[29] = t12) : t12 = $[29];
2228
2254
  let t13;
2229
- $[30] === t12 ? t13 = $[31] : (t13 = /* @__PURE__ */ jsx("option", {
2230
- value: "none",
2231
- children: t12
2232
- }), $[30] = t12, $[31] = t13);
2255
+ $[30] === t ? t13 = $[31] : (t13 = t("vista.options.variant.none"), $[30] = t, $[31] = t13);
2233
2256
  let t14;
2234
- $[32] !== T0 || $[33] !== t11 || $[34] !== t13 || $[35] !== t3 || $[36] !== t4 || $[37] !== t5 || $[38] !== t6 || $[39] !== t7 || $[40] !== t8 ? (t14 = /* @__PURE__ */ jsxs(T0, {
2257
+ $[32] === t13 ? t14 = $[33] : (t14 = /* @__PURE__ */ jsx("option", {
2258
+ value: "none",
2259
+ children: t13
2260
+ }), $[32] = t13, $[33] = t14);
2261
+ let t15;
2262
+ $[34] !== T0 || $[35] !== t12 || $[36] !== t14 || $[37] !== t3 || $[38] !== t4 || $[39] !== t5 || $[40] !== t6 || $[41] !== t7 || $[42] !== t8 ? (t15 = /* @__PURE__ */ jsxs(T0, {
2235
2263
  "data-testid": t3,
2236
2264
  fontSize: t4,
2237
2265
  id: t5,
2238
2266
  onChange: t6,
2239
2267
  padding: t7,
2240
2268
  value: t8,
2241
- children: [t11, t13]
2242
- }), $[32] = T0, $[33] = t11, $[34] = t13, $[35] = t3, $[36] = t4, $[37] = t5, $[38] = t6, $[39] = t7, $[40] = t8, $[41] = t14) : t14 = $[41];
2243
- let t15;
2244
- return $[42] !== T1 || $[43] !== t10 || $[44] !== t14 || $[45] !== t9 ? (t15 = /* @__PURE__ */ jsxs(T1, {
2269
+ children: [t12, t14]
2270
+ }), $[34] = T0, $[35] = t12, $[36] = t14, $[37] = t3, $[38] = t4, $[39] = t5, $[40] = t6, $[41] = t7, $[42] = t8, $[43] = t15) : t15 = $[43];
2271
+ let t16;
2272
+ return $[44] !== T1 || $[45] !== t10 || $[46] !== t15 || $[47] !== t9 ? (t16 = /* @__PURE__ */ jsxs(T1, {
2245
2273
  gap: t9,
2246
- children: [t10, t14]
2247
- }), $[42] = T1, $[43] = t10, $[44] = t14, $[45] = t9, $[46] = t15) : t15 = $[46], t15;
2274
+ children: [t10, t15]
2275
+ }), $[44] = T1, $[45] = t10, $[46] = t15, $[47] = t9, $[48] = t16) : t16 = $[48], t16;
2248
2276
  }
2249
2277
  /** One field path per line (commas work too), each once */
2250
2278
  function parseFieldList(text) {
@@ -2613,8 +2641,8 @@ function SidebarDrawer(t0) {
2613
2641
  $[5] !== close || $[6] !== overlay ? (t3 = (event) => {
2614
2642
  overlay && event.key === "Escape" && (event.preventDefault(), close());
2615
2643
  }, $[5] = close, $[6] = overlay, $[7] = t3) : t3 = $[7];
2616
- let handleKeyDown = t3, t4 = !overlay, t5 = overlay ? title : void 0, t6 = overlay || void 0, t7 = drawer !== "saved" && drawer !== "shared" && "_1anxzyv12", t8 = overlay && "_1anxzyv13", t9;
2617
- $[8] !== t7 || $[9] !== t8 ? (t9 = cx(sidebarDrawer, t7, t8), $[8] = t7, $[9] = t8, $[10] = t9) : t9 = $[10];
2644
+ let handleKeyDown = t3, t4 = !overlay, t5 = overlay ? title : void 0, t6 = overlay || void 0, t7 = drawer !== "saved" && drawer !== "shared" && "cTWfhW_sidebarDrawerWide", t8 = overlay && "cTWfhW_sidebarDrawerOverlay", t9;
2645
+ $[8] !== t7 || $[9] !== t8 ? (t9 = cx("cTWfhW_sidebarDrawer", t7, t8), $[8] = t7, $[9] = t8, $[10] = t9) : t9 = $[10];
2618
2646
  let t10 = `vista-drawer-${drawer}`, t11 = overlay ? "dialog" : void 0, t12;
2619
2647
  $[11] === title ? t12 = $[12] : (t12 = /* @__PURE__ */ jsx(Text, {
2620
2648
  size: 1,
@@ -2670,7 +2698,7 @@ function SidebarItem(t0) {
2670
2698
  let $ = c(28), { icon, label, expanded, selected, badge, testId, onClick } = t0, name = badge ? `${label} (${badge.count})` : label, t1;
2671
2699
  $[0] !== badge || $[1] !== expanded || $[2] !== testId ? (t1 = badge && /* @__PURE__ */ jsx(Badge, {
2672
2700
  "aria-hidden": !0,
2673
- className: cx("_1anxzyvy", expanded && "_1anxzyvz"),
2701
+ className: cx("cTWfhW_sidebarItemBadge", expanded && "cTWfhW_sidebarItemBadgeExpanded"),
2674
2702
  "data-testid": `${testId}-badge`,
2675
2703
  fontSize: 0,
2676
2704
  tone: badge.tone,
@@ -2692,7 +2720,7 @@ function SidebarItem(t0) {
2692
2720
  }), $[4] = icon, $[5] = label, $[6] = name, $[7] = onClick, $[8] = selected, $[9] = testId, $[10] = t2) : t2 = $[10];
2693
2721
  let t3;
2694
2722
  return $[11] !== count || $[12] !== t2 ? (t3 = /* @__PURE__ */ jsxs("div", {
2695
- className: sidebarItem,
2723
+ className: _key29,
2696
2724
  children: [t2, count]
2697
2725
  }), $[11] = count, $[12] = t2, $[13] = t3) : t3 = $[13], t3;
2698
2726
  }
@@ -2720,7 +2748,7 @@ function SidebarItem(t0) {
2720
2748
  }), $[22] = t2, $[23] = t3, $[24] = t4) : t4 = $[24];
2721
2749
  let t5;
2722
2750
  return $[25] !== count || $[26] !== t4 ? (t5 = /* @__PURE__ */ jsxs("div", {
2723
- className: sidebarItem,
2751
+ className: _key29,
2724
2752
  children: [t4, count]
2725
2753
  }), $[25] = count, $[26] = t4, $[27] = t5) : t5 = $[27], t5;
2726
2754
  }
@@ -2738,8 +2766,8 @@ function VistaSidebar() {
2738
2766
  }, $[3] = t1) : t1 = $[3], useOnValueChange(drawer, t1);
2739
2767
  let t2;
2740
2768
  $[4] === t ? t2 = $[5] : (t2 = t("vista.sidebar.label"), $[4] = t, $[5] = t2);
2741
- let t3 = expanded ? sidebarRailExpanded : sidebarRailCollapsed, t4 = isMobile && expanded && "_1anxzyvw", t5;
2742
- $[6] !== t3 || $[7] !== t4 ? (t5 = cx(sidebarRail, t3, t4), $[6] = t3, $[7] = t4, $[8] = t5) : t5 = $[8];
2769
+ let t3 = expanded ? "cTWfhW_sidebarRailExpanded" : "cTWfhW_sidebarRailCollapsed", t4 = isMobile && expanded && "cTWfhW_sidebarRailOverlay", t5;
2770
+ $[6] !== t3 || $[7] !== t4 ? (t5 = cx("cTWfhW_sidebarRail", t3, t4), $[6] = t3, $[7] = t4, $[8] = t5) : t5 = $[8];
2743
2771
  let t6 = isMobile && drawer !== null, t7;
2744
2772
  $[9] === t ? t7 = $[10] : (t7 = t("vista.sidebar.shared-queries"), $[9] = t, $[10] = t7);
2745
2773
  let t8;
@@ -2928,7 +2956,7 @@ function VistaSidebar() {
2928
2956
  }), $[112] = t2, $[113] = t34, $[114] = t48, $[115] = t5, $[116] = t6, $[117] = t49) : t49 = $[117];
2929
2957
  let rail = t49, t50;
2930
2958
  $[118] !== isMobile || $[119] !== rail ? (t50 = isMobile ? /* @__PURE__ */ jsx("div", {
2931
- className: sidebarSlot,
2959
+ className: "cTWfhW_sidebarSlot",
2932
2960
  children: rail
2933
2961
  }) : rail, $[118] = isMobile, $[119] = rail, $[120] = t50) : t50 = $[120];
2934
2962
  let t51;
@@ -3140,7 +3168,7 @@ function createByteOffsetConverter(text) {
3140
3168
  return index;
3141
3169
  };
3142
3170
  }
3143
- const PARSE_WRAPPER_RE = /Parse\("((?:[^"\\]|\\.)*)"\)/, PREFIX_RE = /^(?:(?:Failed to parse query|Format failed|Lint failed|Format error|Lint error): )+/, POSITION_RE = /\s*at Position \{ start: (\d+), end: (\d+) \}\s*$/;
3171
+ const PARSE_WRAPPER_RE = /Parse\("((?:[^"\\]|\\.)*)"\)/, PREFIX_RE = /^(?:(?:Failed to parse query|Format failed|Lint failed|Format error|Lint error|Parse error): )+/, POSITION_RE = /\s*at Position \{ start: (\d+), end: (\d+) \}\s*$/;
3144
3172
  /** Turns the wasm wrapper's parse failures into a {@link GroqSyntaxError}; anything else is rethrown */
3145
3173
  function toSyntaxError(error, query) {
3146
3174
  if (!(error instanceof Error)) throw error;
@@ -3174,11 +3202,11 @@ async function lintGroq(query) {
3174
3202
  }
3175
3203
  return toGroqFindings(findings, query);
3176
3204
  }
3177
- /** Converts the wasm findings' byte spans into ranges of `query`; a finding without a span covers all of it */
3205
+ /** Converts the wasm findings' spans into ranges of `query`; a finding without a span covers all of it */
3178
3206
  function toGroqFindings(findings, query) {
3179
- let toIndex = createByteOffsetConverter(query);
3207
+ let clamp = (index) => Math.max(0, Math.min(index, query.length));
3180
3208
  return findings.map(({ ruleId, message, severity, span }) => {
3181
- let from = span ? toIndex(span.start.offset) : 0, to = span ? Math.max(from, toIndex(span.end.offset)) : query.length;
3209
+ let from = span ? clamp(span.start.offset) : 0, to = span ? Math.max(from, clamp(span.end.offset)) : query.length;
3182
3210
  return {
3183
3211
  ruleId,
3184
3212
  message: message.trim(),
@@ -3188,6 +3216,52 @@ function toGroqFindings(findings, query) {
3188
3216
  };
3189
3217
  });
3190
3218
  }
3219
+ /**
3220
+ * Extracts every `$name` parameter a query references, with their locations. `extractParams`
3221
+ * already returns indices into the query string, so no conversion happens here. Rejects with a
3222
+ * {@link GroqSyntaxError} when the query does not parse.
3223
+ */
3224
+ async function extractQueryParams(query) {
3225
+ let wasm = await loadGroqWasm();
3226
+ try {
3227
+ return wasm.extractParams(query).map(({ name, references }) => ({
3228
+ name,
3229
+ references: references.map(({ start, end }) => ({
3230
+ from: start,
3231
+ to: end
3232
+ }))
3233
+ }));
3234
+ } catch (error) {
3235
+ throw toSyntaxError(error, query);
3236
+ }
3237
+ }
3238
+ function buildParamsInsertion(names) {
3239
+ return names.map((name) => ` ${JSON.stringify(name)}: "",\n`).join("");
3240
+ }
3241
+ /**
3242
+ * Appends `"name": ""` for every `name` not already a key `rawParams` has, without touching any
3243
+ * of its existing text (so comments, formatting and values survive untouched). `rawParams` is
3244
+ * returned unchanged when its root is not a `{...}` object, since there is then nowhere
3245
+ * unambiguous to insert into; an empty or whitespace-only `rawParams` is treated as `{}`.
3246
+ */
3247
+ function addMissingParams(rawParams, missingNames) {
3248
+ if (missingNames.length === 0) return rawParams;
3249
+ let trimmed = rawParams.trim();
3250
+ if (trimmed === "") return `{\n${buildParamsInsertion(missingNames)}}`;
3251
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return rawParams;
3252
+ let closeIndex = rawParams.lastIndexOf("}"), before = rawParams.slice(0, closeIndex), after = rawParams.slice(closeIndex), isEmptyObject = before.trimEnd().endsWith("{"), hasTrailingComma = /,\s*$/.test(before);
3253
+ return `${before}${!isEmptyObject && !hasTrailingComma ? ",\n" : before.endsWith("\n") ? "" : "\n"}${buildParamsInsertion(missingNames)}${after}`;
3254
+ }
3255
+ /**
3256
+ * Which of `referencedNames` `rawParams` has no key for yet. `undefined` when `rawParams` is not
3257
+ * valid JSON5 (common while it is mid-edit, and not worth reporting as an error here).
3258
+ */
3259
+ function missingParamNames(referencedNames, rawParams, t) {
3260
+ let current = parseParams(rawParams, t);
3261
+ if (!current.valid) return;
3262
+ let existing = current.parsed ?? {};
3263
+ return referencedNames.filter((name) => !Object.hasOwn(existing, name));
3264
+ }
3191
3265
  const NO_FUNCTIONS = [], functionLibrary = Facet.define({ combine: (values) => values[0] ?? NO_FUNCTIONS }), groqEditorLabels = Facet.define({ combine: (values) => values[0] }), querySchema = Facet.define({ combine: (values) => values[0] }), V2021 = "v2021-03-25";
3192
3266
  function exactly(count) {
3193
3267
  return {
@@ -5096,6 +5170,38 @@ function ActionRail(t0) {
5096
5170
  }), $[0] = children, $[1] = testId, $[2] = t1) : t1 = $[2], t1;
5097
5171
  }
5098
5172
  /**
5173
+ * Tooltip of a control that calls Sanity Agent Actions: what it does, and that it spends the
5174
+ * organization's AI credits, which nothing else in the tool would say before the request is made
5175
+ */
5176
+ function AgentActionsTooltip(props) {
5177
+ let $ = c(13), { title, placement: t0, children } = props, placement = t0 === void 0 ? "bottom" : t0, { t } = useTranslation(visionLocaleNamespace), t1;
5178
+ $[0] === title ? t1 = $[1] : (t1 = title && /* @__PURE__ */ jsx(Text, {
5179
+ size: 1,
5180
+ children: title
5181
+ }), $[0] = title, $[1] = t1);
5182
+ let t2;
5183
+ $[2] === t ? t2 = $[3] : (t2 = t("vista.agent-actions.credits"), $[2] = t, $[3] = t2);
5184
+ let t3;
5185
+ $[4] === t2 ? t3 = $[5] : (t3 = /* @__PURE__ */ jsx(Text, {
5186
+ muted: !0,
5187
+ size: 1,
5188
+ children: t2
5189
+ }), $[4] = t2, $[5] = t3);
5190
+ let t4;
5191
+ $[6] !== t1 || $[7] !== t3 ? (t4 = /* @__PURE__ */ jsxs(Stack, {
5192
+ gap: 2,
5193
+ children: [t1, t3]
5194
+ }), $[6] = t1, $[7] = t3, $[8] = t4) : t4 = $[8];
5195
+ let t5;
5196
+ return $[9] !== children || $[10] !== placement || $[11] !== t4 ? (t5 = /* @__PURE__ */ jsx(Tooltip, {
5197
+ animate: !0,
5198
+ content: t4,
5199
+ placement,
5200
+ portal: !0,
5201
+ children
5202
+ }), $[9] = children, $[10] = placement, $[11] = t4, $[12] = t5) : t5 = $[12], t5;
5203
+ }
5204
+ /**
5099
5205
  * The tabbed bottom panel of the request and response columns. When collapsed only the tab
5100
5206
  * header remains, and picking a tab expands it again.
5101
5207
  */
@@ -5144,7 +5250,7 @@ function CollapsiblePanel(props) {
5144
5250
  } else t6 = $[16];
5145
5251
  let t7;
5146
5252
  $[23] === t6 ? t7 = $[24] : (t7 = /* @__PURE__ */ jsx(Box, {
5147
- className: panelTabs,
5253
+ className: "cTWfhW_panelTabs",
5148
5254
  ref: stripRef,
5149
5255
  children: /* @__PURE__ */ jsx(TabList, {
5150
5256
  gap: 1,
@@ -5200,7 +5306,7 @@ function _temp$17(tab_0) {
5200
5306
  */
5201
5307
  function CollapsibleSection(props) {
5202
5308
  let $ = c(31), { id, title, icon, actions, expanded, onToggle, className, style, ref, handle, children } = props, t0 = expanded && className, t1;
5203
- $[0] === t0 ? t1 = $[1] : (t1 = cx(collapsibleSection, t0), $[0] = t0, $[1] = t1);
5309
+ $[0] === t0 ? t1 = $[1] : (t1 = cx("cTWfhW_collapsibleSection", t0), $[0] = t0, $[1] = t1);
5204
5310
  let t2 = `${id}-panel`, t3 = expanded ? style : void 0, t4 = `${id}-content`, t5 = `${id}-toggle`, t6 = expanded ? ChevronDownIcon : ChevronRightIcon, t7 = `${id}-toggle`, t8;
5205
5311
  $[2] !== expanded || $[3] !== onToggle || $[4] !== t4 || $[5] !== t5 || $[6] !== t6 || $[7] !== t7 || $[8] !== title ? (t8 = /* @__PURE__ */ jsx(Button, {
5206
5312
  "aria-controls": t4,
@@ -5236,7 +5342,7 @@ function CollapsibleSection(props) {
5236
5342
  let t11;
5237
5343
  $[18] !== children || $[19] !== expanded || $[20] !== id ? (t11 = expanded && /* @__PURE__ */ jsx(Box, {
5238
5344
  "aria-labelledby": `${id}-toggle`,
5239
- className: "_1anxzyvn",
5345
+ className: "cTWfhW_sectionBody",
5240
5346
  id: `${id}-content`,
5241
5347
  role: "region",
5242
5348
  children
@@ -5385,6 +5491,146 @@ async function generateQuery(options) {
5385
5491
  }
5386
5492
  throw new GenerateQueryError(previous?.problem ?? "No query was generated", previous?.attempt);
5387
5493
  }
5494
+ function optionalString(value) {
5495
+ return typeof value == "string" && value ? value : void 0;
5496
+ }
5497
+ function optionalNumber(value) {
5498
+ return typeof value == "number" && Number.isFinite(value) ? value : void 0;
5499
+ }
5500
+ /**
5501
+ * The credits as the `ai-usage` resource of the project's subscription reports them; `undefined`
5502
+ * for a response of another shape, which is what a Studio talking to an API without it gets
5503
+ */
5504
+ function readAiCredits(response) {
5505
+ if (!isPlainObject(response) || typeof response.granted != "boolean") return;
5506
+ let subscription = isPlainObject(response.subscription) ? response.subscription : {}, usage = isPlainObject(response.usage) ? response.usage : {};
5507
+ return {
5508
+ granted: response.granted,
5509
+ reasonCode: optionalString(response.reasonCode),
5510
+ used: optionalNumber(usage.value),
5511
+ quota: optionalNumber(subscription.quota)
5512
+ };
5513
+ }
5514
+ /**
5515
+ * Reads the organization's AI credits through the project. The resource only exists on the
5516
+ * experimental API, and a Studio talking to an API without it resolves with `undefined`, so
5517
+ * nothing depends on the answer.
5518
+ */
5519
+ async function fetchAiCredits(client, signal) {
5520
+ let { projectId } = client.config();
5521
+ if (projectId) return readAiCredits(await client.withConfig({ apiVersion: "vX" }).request({
5522
+ url: `/subscriptions/project/${projectId}/resources/ai-usage`,
5523
+ tag: "vista.ai-credits",
5524
+ signal
5525
+ }));
5526
+ }
5527
+ /**
5528
+ * The credits a request was turned down for, from the 429 response Agent Actions give once the
5529
+ * organization's spending limit is reached: its body names the limit and carries the usage and
5530
+ * the quota, which a plain rate limit response does not. `undefined` for any other error.
5531
+ */
5532
+ function readAiCreditsLimit(error) {
5533
+ if (!isHttpError(error) || error.statusCode !== 429) return;
5534
+ let body = error.response.body;
5535
+ if (!isPlainObject(body)) return;
5536
+ let reasonCode = optionalString(body.reasonCode), quota = optionalNumber(body.quota);
5537
+ if (reasonCode !== void 0 || quota !== void 0) return {
5538
+ granted: !1,
5539
+ reasonCode,
5540
+ used: optionalNumber(body.usageValue),
5541
+ quota
5542
+ };
5543
+ }
5544
+ /** The Sanity website the project's API host belongs to, for links into Manage */
5545
+ function websiteUrl(apiHost) {
5546
+ return apiHost?.endsWith(".work") ? "https://www.sanity.work" : "https://www.sanity.io";
5547
+ }
5548
+ /**
5549
+ * The organization's AI usage in Manage; without the organization ID, Manage's own redirect to
5550
+ * the organization of the signed-in user
5551
+ */
5552
+ function aiUsageUrl(apiHost, organizationId) {
5553
+ let site = websiteUrl(apiHost);
5554
+ return organizationId ? `${site}/organizations/${organizationId}/usage/ai` : `${site}/manage/org/usage/ai`;
5555
+ }
5556
+ /** The organization's spending limits in Manage, where the AI credits limit is raised */
5557
+ function aiSpendingLimitUrl(apiHost, organizationId) {
5558
+ let site = websiteUrl(apiHost);
5559
+ return organizationId ? `${site}/organizations/${organizationId}/settings#caps` : `${site}/manage/org/settings`;
5560
+ }
5561
+ /** How long a reading stands before a control that mounts reads again */
5562
+ const entries = /* @__PURE__ */ new Map(), listeners = /* @__PURE__ */ new Set();
5563
+ function subscribe(listener) {
5564
+ return listeners.add(listener), () => {
5565
+ listeners.delete(listener);
5566
+ };
5567
+ }
5568
+ function update(projectId, entry) {
5569
+ entries.set(projectId, entry), listeners.forEach((listener) => listener());
5570
+ }
5571
+ async function read(projectId, client) {
5572
+ let previous = entries.get(projectId), version = (previous?.version ?? 0) + 1;
5573
+ update(projectId, {
5574
+ credits: previous?.credits,
5575
+ readAt: previous?.readAt ?? 0,
5576
+ reading: !0,
5577
+ version
5578
+ });
5579
+ let credits;
5580
+ try {
5581
+ credits = await fetchAiCredits(client);
5582
+ } catch {
5583
+ credits = void 0;
5584
+ }
5585
+ entries.get(projectId)?.version === version && update(projectId, {
5586
+ credits,
5587
+ readAt: Date.now(),
5588
+ reading: !1,
5589
+ version
5590
+ });
5591
+ }
5592
+ /**
5593
+ * The organization's AI credits, read through the project when a control that spends them
5594
+ * mounts and the last reading is more than a minute old; `undefined` until read, and when the
5595
+ * API has nothing to say about them
5596
+ */
5597
+ function useAiCredits(client) {
5598
+ let $ = c(8), t0;
5599
+ $[0] === client ? t0 = $[1] : (t0 = client.config(), $[0] = client, $[1] = t0);
5600
+ let { projectId } = t0, t1;
5601
+ $[2] === projectId ? t1 = $[3] : (t1 = () => projectId ? entries.get(projectId)?.credits : void 0, $[2] = projectId, $[3] = t1);
5602
+ let credits = useSyncExternalStore(subscribe, t1), t2, t3;
5603
+ return $[4] !== client || $[5] !== projectId ? (t2 = () => {
5604
+ if (!projectId) return;
5605
+ let entry = entries.get(projectId);
5606
+ entry && (entry.reading || Date.now() - entry.readAt < 6e4) || read(projectId, client);
5607
+ }, t3 = [client, projectId], $[4] = client, $[5] = projectId, $[6] = t2, $[7] = t3) : (t2 = $[6], t3 = $[7]), useEffect(t2, t3), credits;
5608
+ }
5609
+ /**
5610
+ * A request was turned down for the credits: every control shows the limit right away, with the
5611
+ * usage the response carried, rather than the reading from before
5612
+ */
5613
+ function reportAiCreditsLimit(client, limit) {
5614
+ let { projectId } = client.config();
5615
+ if (!projectId) return;
5616
+ let version = (entries.get(projectId)?.version ?? 0) + 1;
5617
+ update(projectId, {
5618
+ credits: limit,
5619
+ readAt: Date.now(),
5620
+ reading: !1,
5621
+ version
5622
+ });
5623
+ }
5624
+ /**
5625
+ * A request went through: a limit reported before no longer holds (the spending limit was
5626
+ * raised, or the month turned), so the credits are read again
5627
+ */
5628
+ function reportAiCreditsGranted(client) {
5629
+ let { projectId } = client.config();
5630
+ if (!projectId) return;
5631
+ let entry = entries.get(projectId);
5632
+ entry?.credits?.granted === !1 && !entry.reading && read(projectId, client);
5633
+ }
5388
5634
  function isReferenceType(type) {
5389
5635
  for (let current = type; current; current = current.type) if (current.name === "reference") return "to" in type;
5390
5636
  return !1;
@@ -5442,6 +5688,156 @@ function summarizeSchema(schema, request) {
5442
5688
  let lines = [...detailed];
5443
5689
  return others.length > 0 && lines.push(`${detailed.length > 0 ? "Other document types" : "Document types"}: ${others.join(", ")}`), lines.join("\n");
5444
5690
  }
5691
+ /** The ID of the organization the project belongs to, for links to its pages in Manage */
5692
+ function useOrganizationId() {
5693
+ let $ = c(2), projectStore = useProjectStore(), t0;
5694
+ return $[0] === projectStore ? t0 = $[1] : (t0 = projectStore.getOrganizationId(), $[0] = projectStore, $[1] = t0), useObservable(t0, null);
5695
+ }
5696
+ /** How many credits are left this month, with a link to the organization's AI usage in Manage */
5697
+ function AiCreditsNote(t0) {
5698
+ let $ = c(28), { used, quota, apiHost, size } = t0, { t } = useTranslation(visionLocaleNamespace), numberFormat = useNumberFormat(), organizationId = useOrganizationId(), t1;
5699
+ $[0] === numberFormat ? t1 = $[1] : (t1 = (value) => numberFormat.format(value), $[0] = numberFormat, $[1] = t1);
5700
+ let format = t1, note;
5701
+ if (quota === void 0) {
5702
+ let t2;
5703
+ $[2] !== format || $[3] !== t || $[4] !== used ? (t2 = t("vista.ai-credits.used", { used: format(used) }), $[2] = format, $[3] = t, $[4] = used, $[5] = t2) : t2 = $[5], note = t2;
5704
+ } else if (used > quota) {
5705
+ let t2;
5706
+ $[6] !== format || $[7] !== quota || $[8] !== t || $[9] !== used ? (t2 = t("vista.ai-credits.deficit", {
5707
+ used: format(used),
5708
+ deficit: format(used - quota),
5709
+ quota: format(quota)
5710
+ }), $[6] = format, $[7] = quota, $[8] = t, $[9] = used, $[10] = t2) : t2 = $[10], note = t2;
5711
+ } else {
5712
+ let t2;
5713
+ $[11] !== format || $[12] !== quota || $[13] !== t || $[14] !== used ? (t2 = t("vista.ai-credits.balance", {
5714
+ balance: format(quota - used),
5715
+ quota: format(quota)
5716
+ }), $[11] = format, $[12] = quota, $[13] = t, $[14] = used, $[15] = t2) : t2 = $[15], note = t2;
5717
+ }
5718
+ let t2 = note, t3;
5719
+ $[16] !== apiHost || $[17] !== organizationId ? (t3 = aiUsageUrl(apiHost, organizationId), $[16] = apiHost, $[17] = organizationId, $[18] = t3) : t3 = $[18];
5720
+ let t4;
5721
+ $[19] === t ? t4 = $[20] : (t4 = t("vista.ai-credits.usage"), $[19] = t, $[20] = t4);
5722
+ let t5;
5723
+ $[21] !== t3 || $[22] !== t4 ? (t5 = /* @__PURE__ */ jsx("a", {
5724
+ href: t3,
5725
+ rel: "noreferrer",
5726
+ target: "_blank",
5727
+ children: t4
5728
+ }), $[21] = t3, $[22] = t4, $[23] = t5) : t5 = $[23];
5729
+ let t6;
5730
+ return $[24] !== note || $[25] !== size || $[26] !== t5 ? (t6 = /* @__PURE__ */ jsxs(Text, {
5731
+ "data-testid": "vista-ai-credits",
5732
+ muted: !0,
5733
+ size,
5734
+ children: [
5735
+ t2,
5736
+ " ",
5737
+ t5
5738
+ ]
5739
+ }), $[24] = note, $[25] = size, $[26] = t5, $[27] = t6) : t6 = $[27], t6;
5740
+ }
5741
+ /**
5742
+ * The organization is out of AI credits: what that means, and where the limit is raised. Agent
5743
+ * Actions turn every request down until then, so this stands where their result would.
5744
+ */
5745
+ function AiCreditsLimitCard(t0) {
5746
+ let $ = c(30), { credits, apiHost } = t0, { t } = useTranslation(visionLocaleNamespace), numberFormat = useNumberFormat(), organizationId = useOrganizationId(), { used, quota } = credits, t1;
5747
+ $[0] === t ? t1 = $[1] : (t1 = t("vista.ai-credits.limit.title"), $[0] = t, $[1] = t1);
5748
+ let t2;
5749
+ $[2] === t1 ? t2 = $[3] : (t2 = /* @__PURE__ */ jsx(Text, {
5750
+ size: 1,
5751
+ weight: "medium",
5752
+ children: t1
5753
+ }), $[2] = t1, $[3] = t2);
5754
+ let t3;
5755
+ $[4] !== numberFormat || $[5] !== quota || $[6] !== t || $[7] !== used ? (t3 = used === void 0 || quota === void 0 ? t("vista.ai-credits.limit.description-unknown") : t("vista.ai-credits.limit.description", {
5756
+ used: numberFormat.format(used),
5757
+ quota: numberFormat.format(quota)
5758
+ }), $[4] = numberFormat, $[5] = quota, $[6] = t, $[7] = used, $[8] = t3) : t3 = $[8];
5759
+ let t4;
5760
+ $[9] === t3 ? t4 = $[10] : (t4 = /* @__PURE__ */ jsx(Text, {
5761
+ muted: !0,
5762
+ size: 1,
5763
+ children: t3
5764
+ }), $[9] = t3, $[10] = t4);
5765
+ let t5;
5766
+ $[11] === t ? t5 = $[12] : (t5 = t("vista.ai-credits.limit.learn-more"), $[11] = t, $[12] = t5);
5767
+ let t6;
5768
+ $[13] === t5 ? t6 = $[14] : (t6 = /* @__PURE__ */ jsx(Button, {
5769
+ as: "a",
5770
+ fontSize: 1,
5771
+ href: "https://www.sanity.io/docs/platform-management/how-ai-credits-work",
5772
+ iconRight: LaunchIcon,
5773
+ mode: "bleed",
5774
+ padding: 2,
5775
+ rel: "noreferrer",
5776
+ target: "_blank",
5777
+ text: t5
5778
+ }), $[13] = t5, $[14] = t6);
5779
+ let t7;
5780
+ $[15] !== apiHost || $[16] !== organizationId ? (t7 = aiSpendingLimitUrl(apiHost, organizationId), $[15] = apiHost, $[16] = organizationId, $[17] = t7) : t7 = $[17];
5781
+ let t8;
5782
+ $[18] === t ? t8 = $[19] : (t8 = t("vista.ai-credits.limit.manage"), $[18] = t, $[19] = t8);
5783
+ let t9;
5784
+ $[20] !== t7 || $[21] !== t8 ? (t9 = /* @__PURE__ */ jsx(Button, {
5785
+ as: "a",
5786
+ "data-testid": "vista-ai-credits-manage",
5787
+ fontSize: 1,
5788
+ href: t7,
5789
+ padding: 2,
5790
+ rel: "noreferrer",
5791
+ target: "_blank",
5792
+ text: t8,
5793
+ tone: "primary"
5794
+ }), $[20] = t7, $[21] = t8, $[22] = t9) : t9 = $[22];
5795
+ let t10;
5796
+ $[23] !== t6 || $[24] !== t9 ? (t10 = /* @__PURE__ */ jsxs(Flex, {
5797
+ gap: 2,
5798
+ justifyContent: "flex-end",
5799
+ children: [t6, t9]
5800
+ }), $[23] = t6, $[24] = t9, $[25] = t10) : t10 = $[25];
5801
+ let t11;
5802
+ return $[26] !== t10 || $[27] !== t2 || $[28] !== t4 ? (t11 = /* @__PURE__ */ jsx(Card, {
5803
+ border: !0,
5804
+ "data-testid": "vista-ai-credits-limit",
5805
+ padding: 3,
5806
+ radius: 2,
5807
+ children: /* @__PURE__ */ jsxs(Stack, {
5808
+ gap: 3,
5809
+ children: [
5810
+ t2,
5811
+ t4,
5812
+ t10
5813
+ ]
5814
+ })
5815
+ }), $[26] = t10, $[27] = t2, $[28] = t4, $[29] = t11) : t11 = $[29], t11;
5816
+ }
5817
+ /**
5818
+ * What the organization's AI credits mean for the Agent Actions control this stands under:
5819
+ * nothing while they are unknown, how many are left while requests go through, and the way to
5820
+ * more of them once the spending limit is reached
5821
+ */
5822
+ function AiCreditsStatus(t0) {
5823
+ let $ = c(8), { credits, apiHost, size: t1 } = t0, size = t1 === void 0 ? 1 : t1;
5824
+ if (!credits) return null;
5825
+ if (!credits.granted) {
5826
+ let t2;
5827
+ return $[0] !== apiHost || $[1] !== credits ? (t2 = /* @__PURE__ */ jsx(AiCreditsLimitCard, {
5828
+ apiHost,
5829
+ credits
5830
+ }), $[0] = apiHost, $[1] = credits, $[2] = t2) : t2 = $[2], t2;
5831
+ }
5832
+ if (credits.used === void 0) return null;
5833
+ let t2;
5834
+ return $[3] !== apiHost || $[4] !== credits.quota || $[5] !== credits.used || $[6] !== size ? (t2 = /* @__PURE__ */ jsx(AiCreditsNote, {
5835
+ apiHost,
5836
+ quota: credits.quota,
5837
+ size,
5838
+ used: credits.used
5839
+ }), $[3] = apiHost, $[4] = credits.quota, $[5] = credits.used, $[6] = size, $[7] = t2) : t2 = $[7], t2;
5840
+ }
5445
5841
  /** A description to generate from, with the button that generates: Enter submits, Escape closes */
5446
5842
  function PromptRow(props) {
5447
5843
  let $ = c(34), { label, placeholder, value, onChange, onSubmit, onClose, pending, testIdPrefix } = props, { t } = useTranslation(visionLocaleNamespace), t0;
@@ -5516,9 +5912,9 @@ function PromptRow(props) {
5516
5912
  * replaces the tab's query and params, and runs.
5517
5913
  */
5518
5914
  function GenerateQueryBar(t0) {
5519
- let $ = c(46), { tab, client, formatForEditor, onClose } = t0, { t } = useTranslation(visionLocaleNamespace), actorRef = useVistaActor(), schema = useSchema(), [request, setRequest] = useState(""), t1;
5915
+ let $ = c(54), { tab, client, formatForEditor, onClose } = t0, { t } = useTranslation(visionLocaleNamespace), actorRef = useVistaActor(), schema = useSchema(), [request, setRequest] = useState(""), t1;
5520
5916
  $[0] === Symbol.for("react.memo_cache_sentinel") ? (t1 = { type: "idle" }, $[0] = t1) : t1 = $[0];
5521
- let [status, setStatus] = useState(t1), controllerRef = useRef(null), t2, t3;
5917
+ let [status, setStatus] = useState(t1), controllerRef = useRef(null), credits = useAiCredits(client), t2, t3;
5522
5918
  $[1] === Symbol.for("react.memo_cache_sentinel") ? (t2 = () => () => controllerRef.current?.abort(), t3 = [], $[1] = t2, $[2] = t3) : (t2 = $[1], t3 = $[2]), useEffect(t2, t3);
5523
5919
  let t4;
5524
5920
  $[3] !== actorRef || $[4] !== formatForEditor || $[5] !== onClose || $[6] !== tab.id || $[7] !== tab.query || $[8] !== tab.title ? (t4 = async (generated, fetch, signal) => {
@@ -5533,7 +5929,7 @@ function GenerateQueryBar(t0) {
5533
5929
  rawParams: JSON.stringify(generated.params, null, 2),
5534
5930
  ...named ? { title: generated.title } : {}
5535
5931
  },
5536
- fetch
5932
+ fetch: fetch ? "generated" : void 0
5537
5933
  }), onClose();
5538
5934
  }, $[3] = actorRef, $[4] = formatForEditor, $[5] = onClose, $[6] = tab.id, $[7] = tab.query, $[8] = tab.title, $[9] = t4) : t4 = $[9];
5539
5935
  let open = t4, t5;
@@ -5557,18 +5953,20 @@ function GenerateQueryBar(t0) {
5557
5953
  attempt
5558
5954
  })
5559
5955
  });
5560
- await open(generated_0, !0, controller.signal);
5956
+ reportAiCreditsGranted(client), await open(generated_0, !0, controller.signal);
5561
5957
  } catch (t6) {
5562
5958
  let error = t6;
5563
5959
  if (controller.signal.aborted) return;
5564
- setStatus({
5960
+ let limit = readAiCreditsLimit(error);
5961
+ limit && reportAiCreditsLimit(client, limit), setStatus({
5565
5962
  type: "failed",
5566
5963
  message: error instanceof Error ? error.message : String(error),
5567
- lastAttempt: error instanceof GenerateQueryError ? error.lastAttempt : void 0
5964
+ lastAttempt: error instanceof GenerateQueryError ? error.lastAttempt : void 0,
5965
+ limit
5568
5966
  });
5569
5967
  }
5570
5968
  }, $[10] = client, $[11] = open, $[12] = request, $[13] = schema, $[14] = t5) : t5 = $[14];
5571
- let generate = t5, generating = status.type === "generating", lastAttempt = status.type === "failed" ? status.lastAttempt : void 0, t6;
5969
+ let generate = t5, generating = status.type === "generating", lastAttempt = status.type === "failed" ? status.lastAttempt : void 0, shownCredits = status.type === "failed" ? status.limit : status.type === "idle" ? credits : void 0, atLimit = shownCredits?.granted === !1, t6;
5572
5970
  $[15] === t ? t6 = $[16] : (t6 = t("vista.generate.label"), $[15] = t, $[16] = t6);
5573
5971
  let t7;
5574
5972
  $[17] === generate ? t7 = $[18] : (t7 = () => void generate(), $[17] = generate, $[18] = t7);
@@ -5586,13 +5984,13 @@ function GenerateQueryBar(t0) {
5586
5984
  value: request
5587
5985
  }), $[21] = generating, $[22] = onClose, $[23] = request, $[24] = t6, $[25] = t7, $[26] = t8, $[27] = t9) : t9 = $[27];
5588
5986
  let t10;
5589
- $[28] !== status.type || $[29] !== t ? (t10 = status.type === "idle" && /* @__PURE__ */ jsx(Text, {
5987
+ $[28] !== atLimit || $[29] !== status.type || $[30] !== t ? (t10 = status.type === "idle" && !atLimit && /* @__PURE__ */ jsx(Text, {
5590
5988
  muted: !0,
5591
5989
  size: 0,
5592
5990
  children: t("vista.generate.description")
5593
- }), $[28] = status.type, $[29] = t, $[30] = t10) : t10 = $[30];
5991
+ }), $[28] = atLimit, $[29] = status.type, $[30] = t, $[31] = t10) : t10 = $[31];
5594
5992
  let t11;
5595
- $[31] !== status.attempt || $[32] !== status.type || $[33] !== t ? (t11 = status.type === "generating" && /* @__PURE__ */ jsx(Text, {
5993
+ $[32] !== status.attempt || $[33] !== status.type || $[34] !== t ? (t11 = status.type === "generating" && /* @__PURE__ */ jsx(Text, {
5596
5994
  "data-testid": "vista-generate-progress",
5597
5995
  muted: !0,
5598
5996
  size: 1,
@@ -5600,9 +5998,9 @@ function GenerateQueryBar(t0) {
5600
5998
  attempt: status.attempt,
5601
5999
  max: 3
5602
6000
  }) : t("vista.generate.progress")
5603
- }), $[31] = status.attempt, $[32] = status.type, $[33] = t, $[34] = t11) : t11 = $[34];
6001
+ }), $[32] = status.attempt, $[33] = status.type, $[34] = t, $[35] = t11) : t11 = $[35];
5604
6002
  let t12;
5605
- $[35] !== lastAttempt || $[36] !== open || $[37] !== status.message || $[38] !== status.type || $[39] !== t ? (t12 = status.type === "failed" && /* @__PURE__ */ jsx(Card, {
6003
+ $[36] !== atLimit || $[37] !== lastAttempt || $[38] !== open || $[39] !== status.message || $[40] !== status.type || $[41] !== t ? (t12 = status.type === "failed" && !atLimit && /* @__PURE__ */ jsx(Card, {
5606
6004
  "data-testid": "vista-generate-error",
5607
6005
  padding: 3,
5608
6006
  radius: 2,
@@ -5632,9 +6030,17 @@ function GenerateQueryBar(t0) {
5632
6030
  }) })] })
5633
6031
  ]
5634
6032
  })
5635
- }), $[35] = lastAttempt, $[36] = open, $[37] = status.message, $[38] = status.type, $[39] = t, $[40] = t12) : t12 = $[40];
6033
+ }), $[36] = atLimit, $[37] = lastAttempt, $[38] = open, $[39] = status.message, $[40] = status.type, $[41] = t, $[42] = t12) : t12 = $[42];
5636
6034
  let t13;
5637
- return $[41] !== t10 || $[42] !== t11 || $[43] !== t12 || $[44] !== t9 ? (t13 = /* @__PURE__ */ jsx(Card, {
6035
+ $[43] === client ? t13 = $[44] : (t13 = client.config(), $[43] = client, $[44] = t13);
6036
+ let t14;
6037
+ $[45] !== shownCredits || $[46] !== t13.apiHost ? (t14 = /* @__PURE__ */ jsx(AiCreditsStatus, {
6038
+ apiHost: t13.apiHost,
6039
+ credits: shownCredits,
6040
+ size: 0
6041
+ }), $[45] = shownCredits, $[46] = t13.apiHost, $[47] = t14) : t14 = $[47];
6042
+ let t15;
6043
+ return $[48] !== t10 || $[49] !== t11 || $[50] !== t12 || $[51] !== t14 || $[52] !== t9 ? (t15 = /* @__PURE__ */ jsx(Card, {
5638
6044
  borderBottom: !0,
5639
6045
  "data-testid": "vista-generate-bar",
5640
6046
  padding: 2,
@@ -5644,10 +6050,11 @@ function GenerateQueryBar(t0) {
5644
6050
  t9,
5645
6051
  t10,
5646
6052
  t11,
5647
- t12
6053
+ t12,
6054
+ t14
5648
6055
  ]
5649
6056
  })
5650
- }), $[41] = t10, $[42] = t11, $[43] = t12, $[44] = t9, $[45] = t13) : t13 = $[45], t13;
6057
+ }), $[48] = t10, $[49] = t11, $[50] = t12, $[51] = t14, $[52] = t9, $[53] = t15) : t15 = $[53], t15;
5651
6058
  }
5652
6059
  /**
5653
6060
  * Live fetch, an alternative to Fetch: fetches the query, then fetches again whenever the
@@ -5795,7 +6202,7 @@ function OptionsPanel(t0) {
5795
6202
  }), $[19] = options.variant, $[20] = t6, $[21] = t7) : t7 = $[21];
5796
6203
  let t8;
5797
6204
  $[22] !== t1 || $[23] !== t3 || $[24] !== t5 || $[25] !== t7 ? (t8 = /* @__PURE__ */ jsxs("div", {
5798
- className: optionsGrid,
6205
+ className: "cTWfhW_optionsGrid",
5799
6206
  children: [
5800
6207
  t1,
5801
6208
  t3,
@@ -7037,7 +7444,7 @@ function ExportQueryDialog(t0) {
7037
7444
  let t8 = `vista-export-${active.id}-tab`, t9 = `vista-export-${active.id}-panel`, t10;
7038
7445
  $[27] !== active.code || $[28] !== active.language ? (t10 = /* @__PURE__ */ jsx(Card, {
7039
7446
  border: !0,
7040
- className: codeBlock,
7447
+ className: "cTWfhW_codeBlock",
7041
7448
  overflow: "auto",
7042
7449
  padding: 3,
7043
7450
  radius: 2,
@@ -7356,14 +7763,8 @@ function RequestPanel(props) {
7356
7763
  flexGrow: 1
7357
7764
  }), $[40] = t16) : t16 = $[40];
7358
7765
  let t17;
7359
- $[41] !== generatorOpen || $[42] !== t ? (t17 = !generatorOpen && /* @__PURE__ */ jsx(Tooltip, {
7360
- animate: !0,
7361
- content: /* @__PURE__ */ jsx(Text, {
7362
- size: 1,
7363
- children: t("vista.generate.button")
7364
- }),
7365
- placement: "bottom",
7366
- portal: !0,
7766
+ $[41] !== generatorOpen || $[42] !== t ? (t17 = !generatorOpen && /* @__PURE__ */ jsx(AgentActionsTooltip, {
7767
+ title: t("vista.generate.button"),
7367
7768
  children: /* @__PURE__ */ jsx(Button, {
7368
7769
  "aria-label": t("vista.generate.button"),
7369
7770
  "data-testid": "vista-generate-query",
@@ -7377,13 +7778,13 @@ function RequestPanel(props) {
7377
7778
  let t18;
7378
7779
  $[44] === t17 ? t18 = $[45] : (t18 = /* @__PURE__ */ jsx(Flex, {
7379
7780
  alignItems: "center",
7380
- className: labelActions,
7781
+ className: "cTWfhW_labelActions",
7381
7782
  gap: 1,
7382
7783
  children: t17
7383
7784
  }), $[44] = t17, $[45] = t18);
7384
7785
  let t19;
7385
7786
  $[46] !== t15 || $[47] !== t18 ? (t19 = /* @__PURE__ */ jsx(Box, {
7386
- className: editorLabel,
7787
+ className: "cTWfhW_editorLabel",
7387
7788
  children: /* @__PURE__ */ jsxs(Flex, {
7388
7789
  alignItems: "center",
7389
7790
  gap: 2,
@@ -7403,7 +7804,7 @@ function RequestPanel(props) {
7403
7804
  }), $[49] = onQueryChange, $[50] = queryEditorRef, $[51] = queryExtensions, $[52] = tab.query, $[53] = t20) : t20 = $[53];
7404
7805
  let t21;
7405
7806
  $[54] !== t19 || $[55] !== t20 ? (t21 = /* @__PURE__ */ jsxs(Box, {
7406
- className: editorContainer,
7807
+ className: "cTWfhW_editorContainer",
7407
7808
  "data-testid": "vista-query-editor",
7408
7809
  flexBasis: "0%",
7409
7810
  flexGrow: 1,
@@ -7413,11 +7814,11 @@ function RequestPanel(props) {
7413
7814
  }), $[54] = t19, $[55] = t20, $[56] = t21) : t21 = $[56];
7414
7815
  let t22;
7415
7816
  $[57] !== t13 || $[58] !== t21 ? (t22 = /* @__PURE__ */ jsxs(Flex, {
7416
- className: querySection,
7817
+ className: "cTWfhW_querySection",
7417
7818
  children: [t13, t21]
7418
7819
  }), $[57] = t13, $[58] = t21, $[59] = t22) : t22 = $[59];
7419
- let t23 = paramsResize.height !== null && "_1anxzyvl", t24;
7420
- $[60] === t23 ? t24 = $[61] : (t24 = cx(paramsSection, t23), $[60] = t23, $[61] = t24);
7820
+ let t23 = paramsResize.height !== null && "cTWfhW_paramsSectionResized", t24;
7821
+ $[60] === t23 ? t24 = $[61] : (t24 = cx("cTWfhW_paramsSection", t23), $[60] = t23, $[61] = t24);
7421
7822
  let t25;
7422
7823
  $[62] !== paramsExpanded || $[63] !== paramsHeightNow || $[64] !== paramsResize.dragging || $[65] !== paramsResize.height || $[66] !== paramsResize.measured?.max || $[67] !== paramsResize.onFocus || $[68] !== paramsResize.onKeyDown || $[69] !== paramsResize.onPointerDown || $[70] !== paramsResize.reset || $[71] !== t ? (t25 = paramsExpanded && /* @__PURE__ */ jsx("div", {
7423
7824
  "aria-label": t("vista.params.resize"),
@@ -7426,7 +7827,7 @@ function RequestPanel(props) {
7426
7827
  "aria-valuemin": 98,
7427
7828
  "aria-valuenow": paramsHeightNow,
7428
7829
  "aria-valuetext": paramsResize.height === null && paramsHeightNow !== void 0 ? t("vista.params.fit-height", { height: paramsHeightNow }) : void 0,
7429
- className: "_1anxzyvo",
7830
+ className: "cTWfhW_sectionResizer",
7430
7831
  "data-dragging": paramsResize.dragging,
7431
7832
  "data-testid": "vista-request-params-resizer",
7432
7833
  onDoubleClick: paramsResize.reset,
@@ -7521,7 +7922,7 @@ function RequestPanel(props) {
7521
7922
  }), $[125] = onOptionsChange, $[126] = resolved, $[127] = tab.options, $[128] = t44) : t44 = $[128];
7522
7923
  let t45;
7523
7924
  $[129] !== optionsExpanded || $[130] !== t42 || $[131] !== t43 || $[132] !== t44 ? (t45 = /* @__PURE__ */ jsx(CollapsibleSection, {
7524
- className: optionsSection,
7925
+ className: "cTWfhW_optionsSection",
7525
7926
  expanded: optionsExpanded,
7526
7927
  id: "vista-request-options",
7527
7928
  onToggle: t42,
@@ -7680,16 +8081,16 @@ function ResizableSplit(props) {
7680
8081
  }, $[14] = allowResize, $[15] = bounds, $[16] = onChange, $[17] = onReset, $[18] = primary, $[19] = shownSize, $[20] = split, $[21] = t5) : t5 = $[21];
7681
8082
  let onKeyDown = t5, t6 = `0 0 ${shownSize}px`, t7;
7682
8083
  $[22] === t6 ? t7 = $[23] : (t7 = { flex: t6 }, $[22] = t6, $[23] = t7);
7683
- let primaryStyle = t7, t8 = split === "vertical" ? splitRootRow : splitRootColumn, t9;
7684
- $[24] === t8 ? t9 = $[25] : (t9 = cx(splitRoot, t8), $[24] = t8, $[25] = t9);
8084
+ let primaryStyle = t7, t8 = split === "vertical" ? "cTWfhW_splitRootRow" : "cTWfhW_splitRootColumn", t9;
8085
+ $[24] === t8 ? t9 = $[25] : (t9 = cx("cTWfhW_splitRoot", t8), $[24] = t8, $[25] = t9);
7685
8086
  let t10 = primary === "first" ? primaryStyle : void 0, t11;
7686
8087
  $[26] !== children[0] || $[27] !== t10 ? (t11 = /* @__PURE__ */ jsx("div", {
7687
- className: splitPane,
8088
+ className: _key41,
7688
8089
  style: t10,
7689
8090
  children: children[0]
7690
8091
  }), $[26] = children[0], $[27] = t10, $[28] = t11) : t11 = $[28];
7691
- let t12 = !allowResize || void 0, t13 = bounds?.max, t14 = split === "vertical" ? splitHandleVertical : splitHandleHorizontal, t15 = !allowResize && "_1anxzyv8", t16;
7692
- $[29] !== t14 || $[30] !== t15 ? (t16 = cx(splitHandle, t14, t15), $[29] = t14, $[30] = t15, $[31] = t16) : t16 = $[31];
8092
+ let t12 = !allowResize || void 0, t13 = bounds?.max, t14 = split === "vertical" ? "cTWfhW_splitHandleVertical" : "cTWfhW_splitHandleHorizontal", t15 = !allowResize && "cTWfhW_splitHandleDisabled", t16;
8093
+ $[29] !== t14 || $[30] !== t15 ? (t16 = cx("cTWfhW_splitHandle", t14, t15), $[29] = t14, $[30] = t15, $[31] = t16) : t16 = $[31];
7693
8094
  let t17 = testId && `${testId}-handle`, t18 = allowResize ? 0 : -1, t19;
7694
8095
  $[32] !== dragging || $[33] !== label || $[34] !== minSize || $[35] !== onKeyDown || $[36] !== onPointerDown || $[37] !== shownSize || $[38] !== split || $[39] !== t12 || $[40] !== t13 || $[41] !== t16 || $[42] !== t17 || $[43] !== t18 ? (t19 = /* @__PURE__ */ jsx("div", {
7695
8096
  "aria-disabled": t12,
@@ -7709,7 +8110,7 @@ function ResizableSplit(props) {
7709
8110
  }), $[32] = dragging, $[33] = label, $[34] = minSize, $[35] = onKeyDown, $[36] = onPointerDown, $[37] = shownSize, $[38] = split, $[39] = t12, $[40] = t13, $[41] = t16, $[42] = t17, $[43] = t18, $[44] = t19) : t19 = $[44];
7710
8111
  let t20 = primary === "second" ? primaryStyle : void 0, t21;
7711
8112
  $[45] !== children[1] || $[46] !== t20 ? (t21 = /* @__PURE__ */ jsx("div", {
7712
- className: splitPane,
8113
+ className: _key41,
7713
8114
  style: t20,
7714
8115
  children: children[1]
7715
8116
  }), $[45] = children[1], $[46] = t20, $[47] = t21) : t21 = $[47];
@@ -7783,7 +8184,8 @@ function useQueryExplain(request) {
7783
8184
  setPlan({
7784
8185
  status: "failed",
7785
8186
  url: current.url,
7786
- message: toMessage(error)
8187
+ message: toMessage(error),
8188
+ limit: void 0
7787
8189
  });
7788
8190
  return;
7789
8191
  }
@@ -7803,17 +8205,18 @@ function useQueryExplain(request) {
7803
8205
  if (planText === void 0) setExplanation(IDLE);
7804
8206
  else try {
7805
8207
  let text_0 = await explainQuery(request.client, request, planText);
7806
- setExplanation({
8208
+ reportAiCreditsGranted(request.client), setExplanation({
7807
8209
  status: "done",
7808
8210
  url: request.url,
7809
8211
  text: text_0
7810
8212
  });
7811
8213
  } catch (t3) {
7812
- let error_0 = t3;
7813
- setExplanation({
8214
+ let error_0 = t3, limit = readAiCreditsLimit(error_0);
8215
+ limit && reportAiCreditsLimit(request.client, limit), setExplanation({
7814
8216
  status: "failed",
7815
8217
  url: request.url,
7816
- message: toMessage(error_0)
8218
+ message: toMessage(error_0),
8219
+ limit
7817
8220
  });
7818
8221
  }
7819
8222
  }, $[3] = currentPlan, $[4] = request, $[5] = t2) : t2 = $[5];
@@ -7854,14 +8257,14 @@ function SplitWithBottomPanel(props) {
7854
8257
  })), $[5] = layout, $[6] = t4, $[7] = t5);
7855
8258
  let t6 = collapsed ? 35 : bottomSize, t7 = `${testId}-split`, t8;
7856
8259
  $[8] === children ? t8 = $[9] : (t8 = /* @__PURE__ */ jsx(Flex, {
7857
- className: paneFill,
8260
+ className: _key12$1,
7858
8261
  children
7859
8262
  }), $[8] = children, $[9] = t8);
7860
8263
  let t9;
7861
8264
  $[10] === Symbol.for("react.memo_cache_sentinel") ? (t9 = () => setCollapsed(_temp$14), $[10] = t9) : t9 = $[10];
7862
8265
  let t10;
7863
8266
  $[11] !== activeTabId || $[12] !== collapsed || $[13] !== id || $[14] !== tabs ? (t10 = /* @__PURE__ */ jsx(Box, {
7864
- className: paneFill,
8267
+ className: _key12$1,
7865
8268
  children: /* @__PURE__ */ jsx(CollapsiblePanel, {
7866
8269
  activeTabId,
7867
8270
  collapsed,
@@ -7873,7 +8276,7 @@ function SplitWithBottomPanel(props) {
7873
8276
  }), $[11] = activeTabId, $[12] = collapsed, $[13] = id, $[14] = tabs, $[15] = t10) : t10 = $[15];
7874
8277
  let t11;
7875
8278
  $[16] !== t10 || $[17] !== t2 || $[18] !== t3 || $[19] !== t4 || $[20] !== t5 || $[21] !== t6 || $[22] !== t7 || $[23] !== t8 ? (t11 = /* @__PURE__ */ jsx(Box, {
7876
- className: splitPaneContainer,
8279
+ className: _key42,
7877
8280
  children: /* @__PURE__ */ jsxs(ResizableSplit, {
7878
8281
  allowResize: t2,
7879
8282
  label: t3,
@@ -8004,7 +8407,7 @@ function JsonEditor(props) {
8004
8407
  let t7;
8005
8408
  $[14] !== t6 || $[15] !== testId ? (t7 = /* @__PURE__ */ jsx(Card, {
8006
8409
  border: !0,
8007
- className: jsonEditorBox,
8410
+ className: "cTWfhW_jsonEditorBox",
8008
8411
  "data-testid": testId,
8009
8412
  radius: 2,
8010
8413
  children: t6
@@ -8438,7 +8841,7 @@ function DeltaResult(props) {
8438
8841
  let t9;
8439
8842
  $[29] !== evaluation.status || $[30] !== evaluation.value ? (t9 = evaluation.status === "done" && typeof evaluation.value != "boolean" && /* @__PURE__ */ jsx(Card, {
8440
8843
  border: !0,
8441
- className: "_1anxzyvg",
8844
+ className: "cTWfhW_drawerScroller",
8442
8845
  padding: 3,
8443
8846
  radius: 2,
8444
8847
  children: /* @__PURE__ */ jsx(Code, {
@@ -8568,9 +8971,9 @@ function describeInsight(insight, t) {
8568
8971
  * and on request an explanation of the query and the plan written by Agent Actions
8569
8972
  */
8570
8973
  function ExplainTab(props) {
8571
- let $ = c(54), { plan, explanation, canExplain, onShowPlan, onExplain } = props, { t } = useTranslation(visionLocaleNamespace), explaining = explanation.status === "loading", planText = plan.status === "done" ? plan.text : void 0, t0;
8974
+ let $ = c(61), { client, plan, explanation, canExplain, onShowPlan, onExplain } = props, { t } = useTranslation(visionLocaleNamespace), credits = useAiCredits(client), explaining = explanation.status === "loading", planText = plan.status === "done" ? plan.text : void 0, t0;
8572
8975
  $[0] === planText ? t0 = $[1] : (t0 = planText ? readPlanInsights(planText) : [], $[0] = planText, $[1] = t0);
8573
- let insights = t0, t1;
8976
+ let insights = t0, limit = explanation.status === "failed" ? explanation.limit : void 0, t1;
8574
8977
  $[2] === t ? t1 = $[3] : (t1 = t("vista.explain.description"), $[2] = t, $[3] = t1);
8575
8978
  let t2;
8576
8979
  $[4] === t1 ? t2 = $[5] : (t2 = /* @__PURE__ */ jsx(Text, {
@@ -8581,7 +8984,7 @@ function ExplainTab(props) {
8581
8984
  let t3 = !canExplain || explaining, t4;
8582
8985
  $[6] === t ? t4 = $[7] : (t4 = t("vista.explain.explain"), $[6] = t, $[7] = t4);
8583
8986
  let t5;
8584
- $[8] !== explaining || $[9] !== onExplain || $[10] !== t3 || $[11] !== t4 ? (t5 = /* @__PURE__ */ jsx(Button, {
8987
+ $[8] !== explaining || $[9] !== onExplain || $[10] !== t3 || $[11] !== t4 ? (t5 = /* @__PURE__ */ jsx(AgentActionsTooltip, { children: /* @__PURE__ */ jsx(Button, {
8585
8988
  "data-testid": "vista-explain-button",
8586
8989
  disabled: t3,
8587
8990
  fontSize: 1,
@@ -8591,7 +8994,7 @@ function ExplainTab(props) {
8591
8994
  padding: 2,
8592
8995
  text: t4,
8593
8996
  tone: "primary"
8594
- }), $[8] = explaining, $[9] = onExplain, $[10] = t3, $[11] = t4, $[12] = t5) : t5 = $[12];
8997
+ }) }), $[8] = explaining, $[9] = onExplain, $[10] = t3, $[11] = t4, $[12] = t5) : t5 = $[12];
8595
8998
  let t6 = !canExplain || plan.status === "loading", t7 = plan.status === "loading" && !explaining, t8;
8596
8999
  $[13] === t ? t8 = $[14] : (t8 = t("vista.explain.plan"), $[13] = t, $[14] = t8);
8597
9000
  let t9;
@@ -8612,13 +9015,20 @@ function ExplainTab(props) {
8612
9015
  children: [t5, t9]
8613
9016
  }), $[20] = t5, $[21] = t9, $[22] = t10) : t10 = $[22];
8614
9017
  let t11;
8615
- $[23] !== canExplain || $[24] !== t ? (t11 = !canExplain && /* @__PURE__ */ jsx(Text, {
9018
+ $[23] === client ? t11 = $[24] : (t11 = client.config(), $[23] = client, $[24] = t11);
9019
+ let t12 = limit ?? credits, t13;
9020
+ $[25] !== t11.apiHost || $[26] !== t12 ? (t13 = /* @__PURE__ */ jsx(AiCreditsStatus, {
9021
+ apiHost: t11.apiHost,
9022
+ credits: t12
9023
+ }), $[25] = t11.apiHost, $[26] = t12, $[27] = t13) : t13 = $[27];
9024
+ let t14;
9025
+ $[28] !== canExplain || $[29] !== t ? (t14 = !canExplain && /* @__PURE__ */ jsx(Text, {
8616
9026
  muted: !0,
8617
9027
  size: 1,
8618
9028
  children: t("vista.explain.empty")
8619
- }), $[23] = canExplain, $[24] = t, $[25] = t11) : t11 = $[25];
8620
- let t12;
8621
- $[26] !== explanation.status || $[27] !== explanation.text ? (t12 = explanation.status === "done" && /* @__PURE__ */ jsx(Card, {
9029
+ }), $[28] = canExplain, $[29] = t, $[30] = t14) : t14 = $[30];
9030
+ let t15;
9031
+ $[31] !== explanation.status || $[32] !== explanation.text ? (t15 = explanation.status === "done" && /* @__PURE__ */ jsx(Card, {
8622
9032
  "data-testid": "vista-explanation",
8623
9033
  padding: 3,
8624
9034
  radius: 2,
@@ -8628,21 +9038,21 @@ function ExplainTab(props) {
8628
9038
  gap: 4,
8629
9039
  children: explanation.text.split(/\n+/).filter(_temp$12).map(_temp3$6)
8630
9040
  })
8631
- }), $[26] = explanation.status, $[27] = explanation.text, $[28] = t12) : t12 = $[28];
8632
- let t13;
8633
- $[29] !== explanation.message || $[30] !== explanation.status || $[31] !== t ? (t13 = explanation.status === "failed" && /* @__PURE__ */ jsx(Text, {
9041
+ }), $[31] = explanation.status, $[32] = explanation.text, $[33] = t15) : t15 = $[33];
9042
+ let t16;
9043
+ $[34] !== explanation.message || $[35] !== explanation.status || $[36] !== limit || $[37] !== t ? (t16 = explanation.status === "failed" && !limit && /* @__PURE__ */ jsx(Text, {
8634
9044
  "data-testid": "vista-explain-error",
8635
9045
  size: 1,
8636
9046
  children: t("vista.explain.failed", { message: explanation.message })
8637
- }), $[29] = explanation.message, $[30] = explanation.status, $[31] = t, $[32] = t13) : t13 = $[32];
8638
- let t14;
8639
- $[33] !== plan.message || $[34] !== plan.status || $[35] !== t ? (t14 = plan.status === "failed" && /* @__PURE__ */ jsx(Text, {
9047
+ }), $[34] = explanation.message, $[35] = explanation.status, $[36] = limit, $[37] = t, $[38] = t16) : t16 = $[38];
9048
+ let t17;
9049
+ $[39] !== plan.message || $[40] !== plan.status || $[41] !== t ? (t17 = plan.status === "failed" && /* @__PURE__ */ jsx(Text, {
8640
9050
  "data-testid": "vista-explain-error",
8641
9051
  size: 1,
8642
9052
  children: t("vista.explain.plan-failed", { message: plan.message })
8643
- }), $[33] = plan.message, $[34] = plan.status, $[35] = t, $[36] = t14) : t14 = $[36];
8644
- let t15;
8645
- $[37] !== insights || $[38] !== plan.status || $[39] !== t ? (t15 = plan.status === "done" && insights.length > 0 && /* @__PURE__ */ jsxs(Stack, {
9053
+ }), $[39] = plan.message, $[40] = plan.status, $[41] = t, $[42] = t17) : t17 = $[42];
9054
+ let t18;
9055
+ $[43] !== insights || $[44] !== plan.status || $[45] !== t ? (t18 = plan.status === "done" && insights.length > 0 && /* @__PURE__ */ jsxs(Stack, {
8646
9056
  "data-testid": "vista-plan-insights",
8647
9057
  gap: 2,
8648
9058
  children: [
@@ -8679,9 +9089,9 @@ function ExplainTab(props) {
8679
9089
  })
8680
9090
  })
8681
9091
  ]
8682
- }), $[37] = insights, $[38] = plan.status, $[39] = t, $[40] = t15) : t15 = $[40];
8683
- let t16;
8684
- $[41] !== plan.status || $[42] !== plan.text || $[43] !== t ? (t16 = plan.status === "done" && /* @__PURE__ */ jsxs(Stack, {
9092
+ }), $[43] = insights, $[44] = plan.status, $[45] = t, $[46] = t18) : t18 = $[46];
9093
+ let t19;
9094
+ $[47] !== plan.status || $[48] !== plan.text || $[49] !== t ? (t19 = plan.status === "done" && /* @__PURE__ */ jsxs(Stack, {
8685
9095
  "data-testid": "vista-query-plan",
8686
9096
  gap: 2,
8687
9097
  children: [/* @__PURE__ */ jsx(Label, {
@@ -8692,9 +9102,9 @@ function ExplainTab(props) {
8692
9102
  size: 1,
8693
9103
  children: plan.text
8694
9104
  })]
8695
- }), $[41] = plan.status, $[42] = plan.text, $[43] = t, $[44] = t16) : t16 = $[44];
8696
- let t17;
8697
- return $[45] !== t10 || $[46] !== t11 || $[47] !== t12 || $[48] !== t13 || $[49] !== t14 || $[50] !== t15 || $[51] !== t16 || $[52] !== t2 ? (t17 = /* @__PURE__ */ jsx(Box, {
9105
+ }), $[47] = plan.status, $[48] = plan.text, $[49] = t, $[50] = t19) : t19 = $[50];
9106
+ let t20;
9107
+ return $[51] !== t10 || $[52] !== t13 || $[53] !== t14 || $[54] !== t15 || $[55] !== t16 || $[56] !== t17 || $[57] !== t18 || $[58] !== t19 || $[59] !== t2 ? (t20 = /* @__PURE__ */ jsx(Box, {
8698
9108
  "data-testid": "vista-explain",
8699
9109
  padding: 3,
8700
9110
  children: /* @__PURE__ */ jsxs(Stack, {
@@ -8702,15 +9112,16 @@ function ExplainTab(props) {
8702
9112
  children: [
8703
9113
  t2,
8704
9114
  t10,
8705
- t11,
8706
- t12,
8707
9115
  t13,
8708
9116
  t14,
8709
9117
  t15,
8710
- t16
9118
+ t16,
9119
+ t17,
9120
+ t18,
9121
+ t19
8711
9122
  ]
8712
9123
  })
8713
- }), $[45] = t10, $[46] = t11, $[47] = t12, $[48] = t13, $[49] = t14, $[50] = t15, $[51] = t16, $[52] = t2, $[53] = t17) : t17 = $[53], t17;
9124
+ }), $[51] = t10, $[52] = t13, $[53] = t14, $[54] = t15, $[55] = t16, $[56] = t17, $[57] = t18, $[58] = t19, $[59] = t2, $[60] = t20) : t20 = $[60], t20;
8714
9125
  }
8715
9126
  function _temp4$6(insight_0) {
8716
9127
  return insight_0.tone === "caution";
@@ -8730,7 +9141,7 @@ function _temp$12(paragraph) {
8730
9141
  function FunctionPreview(t0) {
8731
9142
  let $ = c(7), { signature, body } = t0, t1;
8732
9143
  $[0] === signature ? t1 = $[1] : (t1 = /* @__PURE__ */ jsx(Box, {
8733
- className: previewCode,
9144
+ className: _key16,
8734
9145
  children: /* @__PURE__ */ jsx(Code, {
8735
9146
  size: 1,
8736
9147
  children: signature
@@ -8738,7 +9149,7 @@ function FunctionPreview(t0) {
8738
9149
  }), $[0] = signature, $[1] = t1);
8739
9150
  let t2;
8740
9151
  $[2] === body ? t2 = $[3] : (t2 = /* @__PURE__ */ jsx(Box, {
8741
- className: previewCode,
9152
+ className: _key16,
8742
9153
  children: /* @__PURE__ */ jsx(Code, {
8743
9154
  size: 0,
8744
9155
  children: body
@@ -8756,7 +9167,7 @@ function DeclaredFunction(props) {
8756
9167
  let upToDate = t0, t1;
8757
9168
  $[3] !== declaration.id || $[4] !== t ? (t1 = t("vista.functions.reveal", { name: declaration.id }), $[3] = declaration.id, $[4] = t, $[5] = t1) : t1 = $[5];
8758
9169
  let t2;
8759
- $[6] === Symbol.for("react.memo_cache_sentinel") ? (t2 = cx(lintFindingButton, shrinkable), $[6] = t2) : t2 = $[6];
9170
+ $[6] === Symbol.for("react.memo_cache_sentinel") ? (t2 = cx(_key8$1, "cTWfhW_shrinkable"), $[6] = t2) : t2 = $[6];
8760
9171
  let t3;
8761
9172
  $[7] !== declaration.range || $[8] !== onReveal ? (t3 = () => onReveal(declaration.range), $[7] = declaration.range, $[8] = onReveal, $[9] = t3) : t3 = $[9];
8762
9173
  let t4;
@@ -9097,7 +9508,7 @@ function getRequestChanges(previous, next) {
9097
9508
  lang: "text"
9098
9509
  }), changes;
9099
9510
  }
9100
- const codeDiff = createRetryableLazy(() => import("./CodeDiff-Bj_o50Qy.js")), CodeDiffLoader = codeDiff.Component;
9511
+ const codeDiff = createRetryableLazy(() => import("./CodeDiff-MkS3Q87A.js")), CodeDiffLoader = codeDiff.Component;
9101
9512
  /** Catches a diff that failed to load or render, and offers to load it again */
9102
9513
  var DiffBoundary = class extends Component {
9103
9514
  state = { failed: !1 };
@@ -9120,6 +9531,8 @@ function describeFetchReason(reason, t) {
9120
9531
  case "resume": return t("vista.history.reason.resume");
9121
9532
  case "live-start": return t("vista.history.reason.live-start");
9122
9533
  case "generated": return t("vista.history.reason.generated");
9534
+ case "paste": return t("vista.history.reason.paste");
9535
+ case "link": return t("vista.history.reason.link");
9123
9536
  case "mutation": return t("vista.history.reason.mutation");
9124
9537
  case "live": return reason.matchedTags.length > 0 ? t("vista.history.reason.live") : t("vista.history.reason.live-restart");
9125
9538
  default: return String(reason);
@@ -9510,7 +9923,7 @@ function LintTab(t0) {
9510
9923
  $[8] !== onReveal || $[9] !== t ? (t2 = (finding) => /* @__PURE__ */ jsx(Card, {
9511
9924
  as: "button",
9512
9925
  borderBottom: !0,
9513
- className: lintFindingButton,
9926
+ className: _key8$1,
9514
9927
  "data-testid": "vista-lint-finding",
9515
9928
  onClick: () => onReveal(finding),
9516
9929
  paddingX: 3,
@@ -9830,9 +10243,9 @@ function toText(mutations) {
9830
10243
  * dry-run, which writes nothing, so what it would change shows straight away.
9831
10244
  */
9832
10245
  function GenerateMutationsBar(props) {
9833
- let $ = c(42), { client, dataset, result, mutationOptions, onGenerated, onOpenAttempt, onClose } = props, { t } = useTranslation(visionLocaleNamespace), schema = useSchema(), [request, setRequest] = useState(""), t0;
10246
+ let $ = c(50), { client, dataset, result, mutationOptions, onGenerated, onOpenAttempt, onClose } = props, { t } = useTranslation(visionLocaleNamespace), schema = useSchema(), [request, setRequest] = useState(""), t0;
9834
10247
  $[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = { type: "idle" }, $[0] = t0) : t0 = $[0];
9835
- let [status, setStatus] = useState(t0), controllerRef = useRef(null), t1, t2;
10248
+ let [status, setStatus] = useState(t0), controllerRef = useRef(null), credits = useAiCredits(client), t1, t2;
9836
10249
  $[1] === Symbol.for("react.memo_cache_sentinel") ? (t1 = () => () => controllerRef.current?.abort(), t2 = [], $[1] = t1, $[2] = t2) : (t1 = $[1], t2 = $[2]), useEffect(t1, t2);
9837
10250
  let t3;
9838
10251
  $[3] !== client || $[4] !== dataset || $[5] !== mutationOptions || $[6] !== onGenerated || $[7] !== request || $[8] !== result || $[9] !== schema ? (t3 = async () => {
@@ -9859,21 +10272,23 @@ function GenerateMutationsBar(props) {
9859
10272
  })
9860
10273
  });
9861
10274
  if (controller.signal.aborted) return;
9862
- onGenerated(toText(generated.mutations), {
10275
+ reportAiCreditsGranted(client), onGenerated(toText(generated.mutations), {
9863
10276
  key: mutationRunKey(dataset, generated.mutations, mutationOptions),
9864
10277
  result: generated.preview
9865
10278
  });
9866
10279
  } catch (t4) {
9867
10280
  let error = t4;
9868
10281
  if (controller.signal.aborted) return;
9869
- setStatus({
10282
+ let limit = readAiCreditsLimit(error);
10283
+ limit && reportAiCreditsLimit(client, limit), setStatus({
9870
10284
  type: "failed",
9871
10285
  message: error instanceof Error ? error.message : String(error),
9872
- lastAttempt: error instanceof GenerateMutationsError ? error.lastAttempt : void 0
10286
+ lastAttempt: error instanceof GenerateMutationsError ? error.lastAttempt : void 0,
10287
+ limit
9873
10288
  });
9874
10289
  }
9875
10290
  }, $[3] = client, $[4] = dataset, $[5] = mutationOptions, $[6] = onGenerated, $[7] = request, $[8] = result, $[9] = schema, $[10] = t3) : t3 = $[10];
9876
- let generate = t3, generating = status.type === "generating", lastAttempt = status.type === "failed" ? status.lastAttempt : void 0, t4;
10291
+ let generate = t3, generating = status.type === "generating", lastAttempt = status.type === "failed" ? status.lastAttempt : void 0, shownCredits = status.type === "failed" ? status.limit : status.type === "idle" ? credits : void 0, atLimit = shownCredits?.granted === !1, t4;
9877
10292
  $[11] === t ? t4 = $[12] : (t4 = t("vista.mutate.generate.label"), $[11] = t, $[12] = t4);
9878
10293
  let t5;
9879
10294
  $[13] === generate ? t5 = $[14] : (t5 = () => void generate(), $[13] = generate, $[14] = t5);
@@ -9891,13 +10306,13 @@ function GenerateMutationsBar(props) {
9891
10306
  value: request
9892
10307
  }), $[17] = generating, $[18] = onClose, $[19] = request, $[20] = t4, $[21] = t5, $[22] = t6, $[23] = t7) : t7 = $[23];
9893
10308
  let t8;
9894
- $[24] !== status.type || $[25] !== t ? (t8 = status.type === "idle" && /* @__PURE__ */ jsx(Text, {
10309
+ $[24] !== atLimit || $[25] !== status.type || $[26] !== t ? (t8 = status.type === "idle" && !atLimit && /* @__PURE__ */ jsx(Text, {
9895
10310
  muted: !0,
9896
10311
  size: 0,
9897
10312
  children: t("vista.mutate.generate.description")
9898
- }), $[24] = status.type, $[25] = t, $[26] = t8) : t8 = $[26];
10313
+ }), $[24] = atLimit, $[25] = status.type, $[26] = t, $[27] = t8) : t8 = $[27];
9899
10314
  let t9;
9900
- $[27] !== status.attempt || $[28] !== status.type || $[29] !== t ? (t9 = status.type === "generating" && /* @__PURE__ */ jsx(Text, {
10315
+ $[28] !== status.attempt || $[29] !== status.type || $[30] !== t ? (t9 = status.type === "generating" && /* @__PURE__ */ jsx(Text, {
9901
10316
  "data-testid": "vista-mutate-generate-progress",
9902
10317
  muted: !0,
9903
10318
  size: 1,
@@ -9905,9 +10320,9 @@ function GenerateMutationsBar(props) {
9905
10320
  attempt: status.attempt,
9906
10321
  max: 3
9907
10322
  }) : t("vista.mutate.generate.progress")
9908
- }), $[27] = status.attempt, $[28] = status.type, $[29] = t, $[30] = t9) : t9 = $[30];
10323
+ }), $[28] = status.attempt, $[29] = status.type, $[30] = t, $[31] = t9) : t9 = $[31];
9909
10324
  let t10;
9910
- $[31] !== lastAttempt || $[32] !== onOpenAttempt || $[33] !== status.message || $[34] !== status.type || $[35] !== t ? (t10 = status.type === "failed" && /* @__PURE__ */ jsx(Card, {
10325
+ $[32] !== atLimit || $[33] !== lastAttempt || $[34] !== onOpenAttempt || $[35] !== status.message || $[36] !== status.type || $[37] !== t ? (t10 = status.type === "failed" && !atLimit && /* @__PURE__ */ jsx(Card, {
9911
10326
  "data-testid": "vista-mutate-generate-error",
9912
10327
  padding: 3,
9913
10328
  radius: 2,
@@ -9934,9 +10349,17 @@ function GenerateMutationsBar(props) {
9934
10349
  }) })
9935
10350
  ]
9936
10351
  })
9937
- }), $[31] = lastAttempt, $[32] = onOpenAttempt, $[33] = status.message, $[34] = status.type, $[35] = t, $[36] = t10) : t10 = $[36];
10352
+ }), $[32] = atLimit, $[33] = lastAttempt, $[34] = onOpenAttempt, $[35] = status.message, $[36] = status.type, $[37] = t, $[38] = t10) : t10 = $[38];
9938
10353
  let t11;
9939
- return $[37] !== t10 || $[38] !== t7 || $[39] !== t8 || $[40] !== t9 ? (t11 = /* @__PURE__ */ jsx(Card, {
10354
+ $[39] === client ? t11 = $[40] : (t11 = client.config(), $[39] = client, $[40] = t11);
10355
+ let t12;
10356
+ $[41] !== shownCredits || $[42] !== t11.apiHost ? (t12 = /* @__PURE__ */ jsx(AiCreditsStatus, {
10357
+ apiHost: t11.apiHost,
10358
+ credits: shownCredits,
10359
+ size: 0
10360
+ }), $[41] = shownCredits, $[42] = t11.apiHost, $[43] = t12) : t12 = $[43];
10361
+ let t13;
10362
+ return $[44] !== t10 || $[45] !== t12 || $[46] !== t7 || $[47] !== t8 || $[48] !== t9 ? (t13 = /* @__PURE__ */ jsx(Card, {
9940
10363
  border: !0,
9941
10364
  "data-testid": "vista-mutate-generate-bar",
9942
10365
  padding: 2,
@@ -9947,10 +10370,11 @@ function GenerateMutationsBar(props) {
9947
10370
  t7,
9948
10371
  t8,
9949
10372
  t9,
9950
- t10
10373
+ t10,
10374
+ t12
9951
10375
  ]
9952
10376
  })
9953
- }), $[37] = t10, $[38] = t7, $[39] = t8, $[40] = t9, $[41] = t11) : t11 = $[41], t11;
10377
+ }), $[44] = t10, $[45] = t12, $[46] = t7, $[47] = t8, $[48] = t9, $[49] = t13) : t13 = $[49], t13;
9954
10378
  }
9955
10379
  function _temp$8(document) {
9956
10380
  return document.type ?? [];
@@ -10217,7 +10641,7 @@ function PreviewResult(props) {
10217
10641
  children: t("vista.mutate.no-documents")
10218
10642
  }) : /* @__PURE__ */ jsx(Card, {
10219
10643
  border: !0,
10220
- className: drawerScroller,
10644
+ className: "cTWfhW_drawerScroller",
10221
10645
  radius: 2,
10222
10646
  children: preview.changes.map((change_0, index) => /* @__PURE__ */ jsx(ChangeRow, {
10223
10647
  change: change_0,
@@ -10283,7 +10707,7 @@ function MutateTab(props) {
10283
10707
  let run = t2, t3;
10284
10708
  $[12] === result ? t3 = $[13] : (t3 = documentsInResult(result), $[12] = result, $[13] = t3);
10285
10709
  let documents = t3, previewIsCurrent = run !== void 0 && state.preview?.key === run.key, t4;
10286
- $[14] === state.preview ? t4 = $[15] : (t4 = state.preview ? state.preview.result.changes.some(_temp5$2) || state.preview.result.notShown > 0 : !1, $[14] = state.preview, $[15] = t4);
10710
+ $[14] === state.preview ? t4 = $[15] : (t4 = state.preview ? state.preview.result.changes.some(_temp5$3) || state.preview.result.notShown > 0 : !1, $[14] = state.preview, $[15] = t4);
10287
10711
  let canApply = canRequest && previewIsCurrent && t4 && !state.pending, canAdd = input.status === "empty" || input.status === "valid", t5;
10288
10712
  $[16] !== documents || $[17] !== mutate || $[18] !== state.text ? (t5 = (template) => {
10289
10713
  let next = addMutation(state.text, createMutationTemplate(template, documents));
@@ -10316,14 +10740,8 @@ function MutateTab(props) {
10316
10740
  result
10317
10741
  }), $[31] = client, $[32] = dataset, $[33] = generatorOpen, $[34] = mutate, $[35] = options, $[36] = result, $[37] = t9) : t9 = $[37];
10318
10742
  let t10 = hasOutcome ? "minmax(140px, 1fr) fit-content(50%)" : "minmax(140px, 1fr)", t11;
10319
- $[38] !== generatorOpen || $[39] !== t ? (t11 = !generatorOpen && /* @__PURE__ */ jsx(Tooltip, {
10320
- animate: !0,
10321
- content: /* @__PURE__ */ jsx(Text, {
10322
- size: 1,
10323
- children: t("vista.mutate.generate.button")
10324
- }),
10325
- placement: "bottom",
10326
- portal: !0,
10743
+ $[38] !== generatorOpen || $[39] !== t ? (t11 = !generatorOpen && /* @__PURE__ */ jsx(AgentActionsTooltip, {
10744
+ title: t("vista.mutate.generate.button"),
10327
10745
  children: /* @__PURE__ */ jsx(Button, {
10328
10746
  "aria-label": t("vista.mutate.generate.button"),
10329
10747
  "data-testid": "vista-mutate-generate",
@@ -10603,7 +11021,7 @@ function MutateTab(props) {
10603
11021
  children: [t36, t54]
10604
11022
  }), $[160] = t36, $[161] = t54, $[162] = t55) : t55 = $[162], t55;
10605
11023
  }
10606
- function _temp5$2(change) {
11024
+ function _temp5$3(change) {
10607
11025
  return change.operation !== "none";
10608
11026
  }
10609
11027
  const GCP_REGIONS = {
@@ -11624,7 +12042,7 @@ function ExportTypesDialog(t0) {
11624
12042
  let t6;
11625
12043
  $[25] !== copyToClipboard || $[26] !== output.code || $[27] !== t ? (t6 = output.code && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Card, {
11626
12044
  border: !0,
11627
- className: "_1anxzyv1c",
12045
+ className: "cTWfhW_codeBlock",
11628
12046
  overflow: "auto",
11629
12047
  padding: 3,
11630
12048
  radius: 2,
@@ -11924,8 +12342,7 @@ function layoutResultGraph(graph, { collapsed, charWidth }) {
11924
12342
  height
11925
12343
  };
11926
12344
  }
11927
- var graphBooleanVar = "var(--ofyam95)", graphCodeFamilyVar = "var(--ofyam90)", graphCodeSizeVar = "var(--ofyam91)", graphConstantVar = "var(--ofyam96)", graphControls = "ofyam9j", graphEdges = "ofyam99", graphNode = "ofyam9a", graphNodeButton = "ofyam9e", graphNodeHeader = "ofyam9b", graphNodeTitle = "ofyam9c", graphNumberVar = "var(--ofyam94)", graphPropertyVar = "var(--ofyam92)", graphRow = "ofyam9f", graphRowKey = "ofyam9g", graphRowValue = "ofyam9h", graphStringVar = "var(--ofyam93)", graphViewport = "ofyam97";
11928
- const FIRST_VIEW_SCALE = .8, ZOOM_STEP = 1.25;
12345
+ const _key12 = "uhT08W_graphRowValue", FIRST_VIEW_SCALE = .8, ZOOM_STEP = 1.25;
11929
12346
  /** What the graph leaves out of this result, or `undefined` when it shows all of it */
11930
12347
  function describeLeftOut(graph, t) {
11931
12348
  let { partialNodes, nodeLimitReached } = graph;
@@ -11980,12 +12397,12 @@ function RowContent(t0) {
11980
12397
  case "value": {
11981
12398
  let t1;
11982
12399
  $[0] === row.key ? t1 = $[1] : (t1 = row.key && /* @__PURE__ */ jsx("span", {
11983
- className: "ofyam9g",
12400
+ className: "uhT08W_graphRowKey",
11984
12401
  children: row.key
11985
12402
  }), $[0] = row.key, $[1] = t1);
11986
12403
  let t2;
11987
12404
  $[2] !== row.text || $[3] !== row.type ? (t2 = /* @__PURE__ */ jsx("span", {
11988
- className: graphRowValue,
12405
+ className: _key12,
11989
12406
  "data-type": row.type,
11990
12407
  children: row.text
11991
12408
  }), $[2] = row.text, $[3] = row.type, $[4] = t2) : t2 = $[4];
@@ -11995,17 +12412,17 @@ function RowContent(t0) {
11995
12412
  case "child": {
11996
12413
  let t1;
11997
12414
  $[8] === row.key ? t1 = $[9] : (t1 = /* @__PURE__ */ jsx("span", {
11998
- className: graphRowKey,
12415
+ className: "uhT08W_graphRowKey",
11999
12416
  children: row.key
12000
12417
  }), $[8] = row.key, $[9] = t1);
12001
12418
  let t2;
12002
12419
  $[10] === row.summary ? t2 = $[11] : (t2 = /* @__PURE__ */ jsx("span", {
12003
- className: graphRowValue,
12420
+ className: _key12,
12004
12421
  "data-type": "child",
12005
12422
  children: row.summary
12006
12423
  }), $[10] = row.summary, $[11] = t2);
12007
12424
  let t3;
12008
- $[12] === row.child ? t3 = $[13] : (t3 = row.child !== void 0 && /* @__PURE__ */ jsx("span", { className: "ofyam9i" }), $[12] = row.child, $[13] = t3);
12425
+ $[12] === row.child ? t3 = $[13] : (t3 = row.child !== void 0 && /* @__PURE__ */ jsx("span", { className: "uhT08W_graphRowPort" }), $[12] = row.child, $[13] = t3);
12009
12426
  let t4;
12010
12427
  return $[14] !== t1 || $[15] !== t2 || $[16] !== t3 ? (t4 = /* @__PURE__ */ jsxs(Fragment$1, { children: [
12011
12428
  t1,
@@ -12018,7 +12435,7 @@ function RowContent(t0) {
12018
12435
  $[18] !== row.count || $[19] !== t ? (t1 = t("vista.result.graph.more", { count: row.count }), $[18] = row.count, $[19] = t, $[20] = t1) : t1 = $[20];
12019
12436
  let t2;
12020
12437
  return $[21] === t1 ? t2 = $[22] : (t2 = /* @__PURE__ */ jsx("span", {
12021
- className: graphRowValue,
12438
+ className: _key12,
12022
12439
  "data-type": "more",
12023
12440
  children: t1
12024
12441
  }), $[21] = t1, $[22] = t2), t2;
@@ -12031,7 +12448,7 @@ function GraphNodes(t0) {
12031
12448
  $[0] === layout.edges ? t3 = $[1] : (t3 = layout.edges.map(_temp$4), $[0] = layout.edges, $[1] = t3);
12032
12449
  let t4;
12033
12450
  $[2] !== layout.height || $[3] !== layout.width || $[4] !== t3 ? (t4 = /* @__PURE__ */ jsx("svg", {
12034
- className: graphEdges,
12451
+ className: "uhT08W_graphEdges",
12035
12452
  "data-testid": "vista-graph-edges",
12036
12453
  height: t1,
12037
12454
  width: t2,
@@ -12044,7 +12461,7 @@ function GraphNodes(t0) {
12044
12461
  let { node, x, y, width, height, collapsed, childCount } = t7, title = node.label ?? t("vista.result.graph.root");
12045
12462
  return /* @__PURE__ */ jsxs("div", {
12046
12463
  "aria-label": `${title} ${node.summary}`,
12047
- className: graphNode,
12464
+ className: "uhT08W_graphNode",
12048
12465
  "data-testid": "vista-graph-node",
12049
12466
  "data-keypath": node.id,
12050
12467
  role: "group",
@@ -12055,19 +12472,19 @@ function GraphNodes(t0) {
12055
12472
  height
12056
12473
  },
12057
12474
  children: [/* @__PURE__ */ jsxs("div", {
12058
- className: graphNodeHeader,
12475
+ className: "uhT08W_graphNodeHeader",
12059
12476
  children: [
12060
12477
  /* @__PURE__ */ jsxs("span", {
12061
- className: graphNodeTitle,
12478
+ className: "uhT08W_graphNodeTitle",
12062
12479
  children: [title, node.summary && /* @__PURE__ */ jsx("span", {
12063
- className: "ofyam9d",
12480
+ className: "uhT08W_graphNodeSummary",
12064
12481
  children: node.summary
12065
12482
  })]
12066
12483
  }),
12067
12484
  childCount > 0 && /* @__PURE__ */ jsxs("button", {
12068
12485
  "aria-expanded": !collapsed,
12069
12486
  "aria-label": collapsed ? t("vista.result.graph.expand", { count: childCount }) : t("vista.result.graph.collapse"),
12070
- className: "ofyam9e",
12487
+ className: "uhT08W_graphNodeButton",
12071
12488
  "data-testid": "vista-graph-toggle",
12072
12489
  onClick: () => onToggle(node.id),
12073
12490
  type: "button",
@@ -12075,7 +12492,7 @@ function GraphNodes(t0) {
12075
12492
  }),
12076
12493
  /* @__PURE__ */ jsx("button", {
12077
12494
  "aria-label": copyLabel,
12078
- className: graphNodeButton,
12495
+ className: "uhT08W_graphNodeButton",
12079
12496
  "data-testid": "vista-graph-copy",
12080
12497
  onClick: () => onCopy(node.id),
12081
12498
  type: "button",
@@ -12091,7 +12508,7 @@ function GraphNodes(t0) {
12091
12508
  }
12092
12509
  function _temp2$4(row, index) {
12093
12510
  return /* @__PURE__ */ jsx("div", {
12094
- className: graphRow,
12511
+ className: "uhT08W_graphRow",
12095
12512
  children: /* @__PURE__ */ jsx(RowContent, { row })
12096
12513
  }, index);
12097
12514
  }
@@ -12237,21 +12654,24 @@ function ResultGraph(t0) {
12237
12654
  t22,
12238
12655
  t24
12239
12656
  ], $[66] = t19, $[67] = t22, $[68] = t24, $[69] = t25) : t25 = $[69];
12240
- let controls = t25, t26;
12241
- $[70] === t ? t26 = $[71] : (t26 = t("vista.result.graph.label"), $[70] = t, $[71] = t26);
12242
- let t27 = `${codeSize.fontSize}px`, t28;
12243
- $[72] !== color.syntax.boolean || $[73] !== color.syntax.constant || $[74] !== color.syntax.number || $[75] !== color.syntax.property || $[76] !== color.syntax.string || $[77] !== font.code.family || $[78] !== t27 ? (t28 = assignInlineVars({
12244
- [graphCodeFamilyVar]: font.code.family,
12245
- [graphCodeSizeVar]: t27,
12246
- [graphPropertyVar]: color.syntax.property,
12247
- [graphStringVar]: color.syntax.string,
12248
- [graphNumberVar]: color.syntax.number,
12249
- [graphBooleanVar]: color.syntax.boolean,
12250
- [graphConstantVar]: color.syntax.constant
12251
- }), $[72] = color.syntax.boolean, $[73] = color.syntax.constant, $[74] = color.syntax.number, $[75] = color.syntax.property, $[76] = color.syntax.string, $[77] = font.code.family, $[78] = t27, $[79] = t28) : t28 = $[79];
12657
+ let controls = t25, t26 = `${codeSize.fontSize}px`, t27;
12658
+ $[70] !== color.syntax.boolean || $[71] !== color.syntax.constant || $[72] !== color.syntax.number || $[73] !== color.syntax.property || $[74] !== color.syntax.string || $[75] !== font.code.family || $[76] !== t26 ? (t27 = {
12659
+ "--vision-graph-code-family": font.code.family,
12660
+ "--vision-graph-code-size": t26,
12661
+ "--vision-graph-property": color.syntax.property,
12662
+ "--vision-graph-string": color.syntax.string,
12663
+ "--vision-graph-number": color.syntax.number,
12664
+ "--vision-graph-boolean": color.syntax.boolean,
12665
+ "--vision-graph-constant": color.syntax.constant,
12666
+ "--vision-graph-header-height": `${GRAPH_METRICS.headerHeight}px`,
12667
+ "--vision-graph-row-height": `${GRAPH_METRICS.rowHeight}px`,
12668
+ "--vision-graph-padding-x": `${GRAPH_METRICS.paddingX}px`
12669
+ }, $[70] = color.syntax.boolean, $[71] = color.syntax.constant, $[72] = color.syntax.number, $[73] = color.syntax.property, $[74] = color.syntax.string, $[75] = font.code.family, $[76] = t26, $[77] = t27) : t27 = $[77];
12670
+ let viewportStyle = t27, t28;
12671
+ $[78] === t ? t28 = $[79] : (t28 = t("vista.result.graph.label"), $[78] = t, $[79] = t28);
12252
12672
  let t29;
12253
12673
  $[80] !== copy || $[81] !== layout || $[82] !== onCopy || $[83] !== view ? (t29 = view && /* @__PURE__ */ jsx("div", {
12254
- className: "ofyam98",
12674
+ className: "uhT08W_graphCanvas",
12255
12675
  "data-testid": "vista-graph-canvas",
12256
12676
  style: {
12257
12677
  width: layout.width,
@@ -12267,7 +12687,7 @@ function ResultGraph(t0) {
12267
12687
  }), $[80] = copy, $[81] = layout, $[82] = onCopy, $[83] = view, $[84] = t29) : t29 = $[84];
12268
12688
  let t30;
12269
12689
  $[85] === leftOut ? t30 = $[86] : (t30 = leftOut && /* @__PURE__ */ jsx("div", {
12270
- className: "ofyam9k",
12690
+ className: "uhT08W_graphNotice",
12271
12691
  "data-testid": "vista-graph-left-out",
12272
12692
  children: /* @__PURE__ */ jsx(Text, {
12273
12693
  muted: !0,
@@ -12277,13 +12697,13 @@ function ResultGraph(t0) {
12277
12697
  }), $[85] = leftOut, $[86] = t30);
12278
12698
  let t31;
12279
12699
  $[87] === controls ? t31 = $[88] : (t31 = /* @__PURE__ */ jsx("div", {
12280
- className: graphControls,
12700
+ className: "uhT08W_graphControls",
12281
12701
  children: controls.map(_temp4$3)
12282
12702
  }), $[87] = controls, $[88] = t31);
12283
12703
  let t32;
12284
- return $[89] !== dragging || $[90] !== id || $[91] !== onKeyDown || $[92] !== onPointerDown || $[93] !== onPointerMove || $[94] !== t26 || $[95] !== t28 || $[96] !== t29 || $[97] !== t30 || $[98] !== t31 ? (t32 = /* @__PURE__ */ jsxs("div", {
12285
- "aria-label": t26,
12286
- className: graphViewport,
12704
+ return $[89] !== dragging || $[90] !== id || $[91] !== onKeyDown || $[92] !== onPointerDown || $[93] !== onPointerMove || $[94] !== t28 || $[95] !== t29 || $[96] !== t30 || $[97] !== t31 || $[98] !== viewportStyle ? (t32 = /* @__PURE__ */ jsxs("div", {
12705
+ "aria-label": t28,
12706
+ className: "uhT08W_graphViewport",
12287
12707
  "data-dragging": dragging,
12288
12708
  "data-testid": "vista-result-graph",
12289
12709
  id,
@@ -12295,14 +12715,14 @@ function ResultGraph(t0) {
12295
12715
  onPointerUp: endDrag,
12296
12716
  ref: setViewport,
12297
12717
  role: "application",
12298
- style: t28,
12718
+ style: viewportStyle,
12299
12719
  tabIndex: 0,
12300
12720
  children: [
12301
12721
  t29,
12302
12722
  t30,
12303
12723
  t31
12304
12724
  ]
12305
- }), $[89] = dragging, $[90] = id, $[91] = onKeyDown, $[92] = onPointerDown, $[93] = onPointerMove, $[94] = t26, $[95] = t28, $[96] = t29, $[97] = t30, $[98] = t31, $[99] = t32) : t32 = $[99], t32;
12725
+ }), $[89] = dragging, $[90] = id, $[91] = onKeyDown, $[92] = onPointerDown, $[93] = onPointerMove, $[94] = t28, $[95] = t29, $[96] = t30, $[97] = t31, $[98] = viewportStyle, $[99] = t32) : t32 = $[99], t32;
12306
12726
  }
12307
12727
  function _temp4$3(t0) {
12308
12728
  let { action, label, icon, onClick } = t0;
@@ -12347,7 +12767,7 @@ function ResultJson(props) {
12347
12767
  }), $[5] = text, $[6] = t3);
12348
12768
  let t4;
12349
12769
  return $[7] !== props.id || $[8] !== t3 ? (t4 = /* @__PURE__ */ jsx("div", {
12350
- className: resultJson,
12770
+ className: "cTWfhW_resultJson",
12351
12771
  "data-testid": "vista-result-json",
12352
12772
  id: props.id,
12353
12773
  children: t3
@@ -12384,9 +12804,9 @@ const DEFAULT_BOTTOM_PANEL_SIZE = {
12384
12804
  mobile: 160
12385
12805
  };
12386
12806
  function ResponsePanel(props) {
12387
- let $ = c(190), { tab, runnerRef, resolved, request, lintFindings, onRevealRange, onEditQuery, onMutationsApplied } = props, { t } = useTranslation(visionLocaleNamespace), toast = useToast(), status = useSelector(runnerRef, selectRequestStatus), result = useSelector(runnerRef, _temp$3), settledRequest = useSelector(runnerRef, _temp2$3), error = useSelector(runnerRef, _temp3$2), failedRequest = useSelector(runnerRef, _temp4$2), t0;
12807
+ let $ = c(191), { tab, runnerRef, resolved, request, lintFindings, onRevealRange, onEditQuery, onMutationsApplied } = props, { t } = useTranslation(visionLocaleNamespace), toast = useToast(), status = useSelector(runnerRef, selectRequestStatus), result = useSelector(runnerRef, _temp$3), settledRequest = useSelector(runnerRef, _temp2$3), error = useSelector(runnerRef, _temp3$2), failedRequest = useSelector(runnerRef, _temp4$2), t0;
12388
12808
  $[0] === failedRequest?.client ? t0 = $[1] : (t0 = failedRequest?.client.config(), $[0] = failedRequest?.client, $[1] = t0);
12389
- let failedConfig = t0, meta = useSelector(runnerRef, _temp5$1), url = useSelector(runnerRef, _temp6), history = useSelector(runnerRef, _temp7), hiddenDiffFields = useVistaSelector(_temp8), isLive = useSelector(runnerRef, _temp9), hasResult = meta !== void 0, t1;
12809
+ let failedConfig = t0, meta = useSelector(runnerRef, _temp5$2), url = useSelector(runnerRef, _temp6), history = useSelector(runnerRef, _temp7), hiddenDiffFields = useVistaSelector(_temp8), isLive = useSelector(runnerRef, _temp9), hasResult = meta !== void 0, t1;
12390
12810
  $[2] !== hasResult || $[3] !== request || $[4] !== settledRequest ? (t1 = hasResult && settledRequest !== void 0 && request !== null && haveSameQuery(settledRequest, request), $[2] = hasResult, $[3] = request, $[4] = settledRequest, $[5] = t1) : t1 = $[5];
12391
12811
  let resultIsCurrent = t1, t2;
12392
12812
  $[6] !== resolved.dataset || $[7] !== settledRequest?.client ? (t2 = settledRequest?.client.config().dataset || resolved.dataset, $[6] = resolved.dataset, $[7] = settledRequest?.client, $[8] = t2) : t2 = $[8];
@@ -12483,42 +12903,43 @@ function ResponsePanel(props) {
12483
12903
  let t25 = request !== null, t26;
12484
12904
  $[67] === queryExplain ? t26 = $[68] : (t26 = () => void queryExplain.explain(), $[67] = queryExplain, $[68] = t26);
12485
12905
  let t27;
12486
- $[69] !== queryExplain.explanation || $[70] !== queryExplain.plan || $[71] !== queryExplain.showPlan || $[72] !== t25 || $[73] !== t26 ? (t27 = /* @__PURE__ */ jsx(ExplainTab, {
12906
+ $[69] !== queryExplain.explanation || $[70] !== queryExplain.plan || $[71] !== queryExplain.showPlan || $[72] !== resolved.client || $[73] !== t25 || $[74] !== t26 ? (t27 = /* @__PURE__ */ jsx(ExplainTab, {
12487
12907
  canExplain: t25,
12908
+ client: resolved.client,
12488
12909
  explanation: queryExplain.explanation,
12489
12910
  onExplain: t26,
12490
12911
  onShowPlan: queryExplain.showPlan,
12491
12912
  plan: queryExplain.plan
12492
- }), $[69] = queryExplain.explanation, $[70] = queryExplain.plan, $[71] = queryExplain.showPlan, $[72] = t25, $[73] = t26, $[74] = t27) : t27 = $[74];
12913
+ }), $[69] = queryExplain.explanation, $[70] = queryExplain.plan, $[71] = queryExplain.showPlan, $[72] = resolved.client, $[73] = t25, $[74] = t26, $[75] = t27) : t27 = $[75];
12493
12914
  let t28;
12494
- $[75] !== t24 || $[76] !== t27 ? (t28 = {
12915
+ $[76] !== t24 || $[77] !== t27 ? (t28 = {
12495
12916
  id: "explain",
12496
12917
  label: t24,
12497
12918
  content: t27
12498
- }, $[75] = t24, $[76] = t27, $[77] = t28) : t28 = $[77];
12919
+ }, $[76] = t24, $[77] = t27, $[78] = t28) : t28 = $[78];
12499
12920
  let t29;
12500
- $[78] === t ? t29 = $[79] : (t29 = t("vista.panel.source-map"), $[78] = t, $[79] = t29);
12921
+ $[79] === t ? t29 = $[80] : (t29 = t("vista.panel.source-map"), $[79] = t, $[80] = t29);
12501
12922
  let t30;
12502
- $[80] !== meta || $[81] !== resultDataset ? (t30 = /* @__PURE__ */ jsx(SourceMapTab, {
12923
+ $[81] !== meta || $[82] !== resultDataset ? (t30 = /* @__PURE__ */ jsx(SourceMapTab, {
12503
12924
  dataset: resultDataset,
12504
12925
  meta
12505
- }), $[80] = meta, $[81] = resultDataset, $[82] = t30) : t30 = $[82];
12926
+ }), $[81] = meta, $[82] = resultDataset, $[83] = t30) : t30 = $[83];
12506
12927
  let t31;
12507
- $[83] !== t29 || $[84] !== t30 ? (t31 = {
12928
+ $[84] !== t29 || $[85] !== t30 ? (t31 = {
12508
12929
  id: "source-map",
12509
12930
  label: t29,
12510
12931
  content: t30
12511
- }, $[83] = t29, $[84] = t30, $[85] = t31) : t31 = $[85];
12932
+ }, $[84] = t29, $[85] = t30, $[86] = t31) : t31 = $[86];
12512
12933
  let t32;
12513
- $[86] !== t17 || $[87] !== t20 || $[88] !== t23 || $[89] !== t28 || $[90] !== t31 ? (t32 = [
12934
+ $[87] !== t17 || $[88] !== t20 || $[89] !== t23 || $[90] !== t28 || $[91] !== t31 ? (t32 = [
12514
12935
  t17,
12515
12936
  t20,
12516
12937
  t23,
12517
12938
  t28,
12518
12939
  t31
12519
- ], $[86] = t17, $[87] = t20, $[88] = t23, $[89] = t28, $[90] = t31, $[91] = t32) : t32 = $[91];
12940
+ ], $[87] = t17, $[88] = t20, $[89] = t23, $[90] = t28, $[91] = t31, $[92] = t32) : t32 = $[92];
12520
12941
  let panelTabs = t32, tabDrawer = useVistaSelector(selectOpenTabDrawer), t33;
12521
- $[92] !== declaredFunctions || $[93] !== delta || $[94] !== functionLibrary || $[95] !== hasResult || $[96] !== hiddenDiffFields || $[97] !== lintFindings || $[98] !== mutate || $[99] !== onEditQuery || $[100] !== onMutationsApplied || $[101] !== onRevealRange || $[102] !== removeFunction || $[103] !== request || $[104] !== resolved.client || $[105] !== resolved.dataset || $[106] !== resolved.isValidApiVersion || $[107] !== result || $[108] !== saveFunction || $[109] !== tab.query ? (t33 = (drawer) => {
12942
+ $[93] !== declaredFunctions || $[94] !== delta || $[95] !== functionLibrary || $[96] !== hasResult || $[97] !== hiddenDiffFields || $[98] !== lintFindings || $[99] !== mutate || $[100] !== onEditQuery || $[101] !== onMutationsApplied || $[102] !== onRevealRange || $[103] !== removeFunction || $[104] !== request || $[105] !== resolved.client || $[106] !== resolved.dataset || $[107] !== resolved.isValidApiVersion || $[108] !== result || $[109] !== saveFunction || $[110] !== tab.query ? (t33 = (drawer) => {
12522
12943
  switch (drawer) {
12523
12944
  case "lint": return /* @__PURE__ */ jsx(LintTab, {
12524
12945
  findings: lintFindings,
@@ -12548,9 +12969,9 @@ function ResponsePanel(props) {
12548
12969
  });
12549
12970
  default: return String(drawer);
12550
12971
  }
12551
- }, $[92] = declaredFunctions, $[93] = delta, $[94] = functionLibrary, $[95] = hasResult, $[96] = hiddenDiffFields, $[97] = lintFindings, $[98] = mutate, $[99] = onEditQuery, $[100] = onMutationsApplied, $[101] = onRevealRange, $[102] = removeFunction, $[103] = request, $[104] = resolved.client, $[105] = resolved.dataset, $[106] = resolved.isValidApiVersion, $[107] = result, $[108] = saveFunction, $[109] = tab.query, $[110] = t33) : t33 = $[110];
12972
+ }, $[93] = declaredFunctions, $[94] = delta, $[95] = functionLibrary, $[96] = hasResult, $[97] = hiddenDiffFields, $[98] = lintFindings, $[99] = mutate, $[100] = onEditQuery, $[101] = onMutationsApplied, $[102] = onRevealRange, $[103] = removeFunction, $[104] = request, $[105] = resolved.client, $[106] = resolved.dataset, $[107] = resolved.isValidApiVersion, $[108] = result, $[109] = saveFunction, $[110] = tab.query, $[111] = t33) : t33 = $[111];
12552
12973
  let renderTabDrawer = t33, sidebarBadges = useSidebarBadges(), lintCount = lintFindings.length, lintTone = lintFindings.some(_temp11) ? "critical" : "caution", functionCount = declaredFunctions.length, t34, t35;
12553
- $[111] !== functionCount || $[112] !== lintCount || $[113] !== lintTone || $[114] !== sidebarBadges ? (t34 = () => {
12974
+ $[112] !== functionCount || $[113] !== lintCount || $[114] !== lintTone || $[115] !== sidebarBadges ? (t34 = () => {
12554
12975
  sidebarBadges.set("lint", lintCount > 0 ? {
12555
12976
  count: lintCount,
12556
12977
  tone: lintTone
@@ -12563,29 +12984,29 @@ function ResponsePanel(props) {
12563
12984
  lintCount,
12564
12985
  lintTone,
12565
12986
  sidebarBadges
12566
- ], $[111] = functionCount, $[112] = lintCount, $[113] = lintTone, $[114] = sidebarBadges, $[115] = t34, $[116] = t35) : (t34 = $[115], t35 = $[116]), useEffect(t34, t35);
12987
+ ], $[112] = functionCount, $[113] = lintCount, $[114] = lintTone, $[115] = sidebarBadges, $[116] = t34, $[117] = t35) : (t34 = $[116], t35 = $[117]), useEffect(t34, t35);
12567
12988
  let t36, t37;
12568
- $[117] === sidebarBadges ? (t36 = $[118], t37 = $[119]) : (t36 = () => () => {
12989
+ $[118] === sidebarBadges ? (t36 = $[119], t37 = $[120]) : (t36 = () => () => {
12569
12990
  sidebarBadges.set("lint", void 0), sidebarBadges.set("functions", void 0);
12570
- }, t37 = [sidebarBadges], $[117] = sidebarBadges, $[118] = t36, $[119] = t37), useEffect(t36, t37);
12991
+ }, t37 = [sidebarBadges], $[118] = sidebarBadges, $[119] = t36, $[120] = t37), useEffect(t36, t37);
12571
12992
  let t38;
12572
- $[120] !== renderTabDrawer || $[121] !== tabDrawer ? (t38 = tabDrawer && /* @__PURE__ */ jsx(TabDrawerPortal, { children: renderTabDrawer(tabDrawer) }), $[120] = renderTabDrawer, $[121] = tabDrawer, $[122] = t38) : t38 = $[122];
12993
+ $[121] !== renderTabDrawer || $[122] !== tabDrawer ? (t38 = tabDrawer && /* @__PURE__ */ jsx(TabDrawerPortal, { children: renderTabDrawer(tabDrawer) }), $[121] = renderTabDrawer, $[122] = tabDrawer, $[123] = t38) : t38 = $[123];
12573
12994
  let t39 = hasResult ? getJsonUrl : void 0, t40;
12574
- $[123] === t ? t40 = $[124] : (t40 = t("vista.result.export-json"), $[123] = t, $[124] = t40);
12995
+ $[124] === t ? t40 = $[125] : (t40 = t("vista.result.export-json"), $[124] = t, $[125] = t40);
12575
12996
  let t41;
12576
- $[125] !== t39 || $[126] !== t40 ? (t41 = /* @__PURE__ */ jsx(DownloadButton, {
12997
+ $[126] !== t39 || $[127] !== t40 ? (t41 = /* @__PURE__ */ jsx(DownloadButton, {
12577
12998
  download: "query-result.json",
12578
12999
  getBlobUrl: t39,
12579
13000
  icon: JsonIcon,
12580
13001
  label: t40,
12581
13002
  testId: "vista-export-json"
12582
- }), $[125] = t39, $[126] = t40, $[127] = t41) : t41 = $[127];
13003
+ }), $[126] = t39, $[127] = t40, $[128] = t41) : t41 = $[128];
12583
13004
  let t42 = canExportCsv ? getCsvUrl : void 0, t43;
12584
- $[128] === t ? t43 = $[129] : (t43 = t("vista.result.export-csv"), $[128] = t, $[129] = t43);
13005
+ $[129] === t ? t43 = $[130] : (t43 = t("vista.result.export-csv"), $[129] = t, $[130] = t43);
12585
13006
  let t44;
12586
- $[130] !== canExportCsv || $[131] !== hasResult || $[132] !== t ? (t44 = hasResult && !canExportCsv ? t("result.save-result-as-csv.not-csv-encodable") : void 0, $[130] = canExportCsv, $[131] = hasResult, $[132] = t, $[133] = t44) : t44 = $[133];
13007
+ $[131] !== canExportCsv || $[132] !== hasResult || $[133] !== t ? (t44 = hasResult && !canExportCsv ? t("result.save-result-as-csv.not-csv-encodable") : void 0, $[131] = canExportCsv, $[132] = hasResult, $[133] = t, $[134] = t44) : t44 = $[134];
12587
13008
  let t45;
12588
- $[134] !== reportCsvUnavailable || $[135] !== t42 || $[136] !== t43 || $[137] !== t44 ? (t45 = /* @__PURE__ */ jsx(DownloadButton, {
13009
+ $[135] !== reportCsvUnavailable || $[136] !== t42 || $[137] !== t43 || $[138] !== t44 ? (t45 = /* @__PURE__ */ jsx(DownloadButton, {
12589
13010
  download: "query-result.csv",
12590
13011
  getBlobUrl: t42,
12591
13012
  icon: DocumentSheetIcon,
@@ -12593,46 +13014,46 @@ function ResponsePanel(props) {
12593
13014
  onUnavailable: reportCsvUnavailable,
12594
13015
  testId: "vista-export-csv",
12595
13016
  tooltip: t44
12596
- }), $[134] = reportCsvUnavailable, $[135] = t42, $[136] = t43, $[137] = t44, $[138] = t45) : t45 = $[138];
13017
+ }), $[135] = reportCsvUnavailable, $[136] = t42, $[137] = t43, $[138] = t44, $[139] = t45) : t45 = $[139];
12597
13018
  let t46;
12598
- $[139] !== hasResult || $[140] !== result || $[141] !== resultIsCurrent || $[142] !== tab ? (t46 = /* @__PURE__ */ jsx(ResultActionsMenu, {
13019
+ $[140] !== hasResult || $[141] !== result || $[142] !== resultIsCurrent || $[143] !== tab ? (t46 = /* @__PURE__ */ jsx(ResultActionsMenu, {
12599
13020
  hasResult,
12600
13021
  result,
12601
13022
  resultIsCurrent,
12602
13023
  tab
12603
- }), $[139] = hasResult, $[140] = result, $[141] = resultIsCurrent, $[142] = tab, $[143] = t46) : t46 = $[143];
13024
+ }), $[140] = hasResult, $[141] = result, $[142] = resultIsCurrent, $[143] = tab, $[144] = t46) : t46 = $[144];
12604
13025
  let t47;
12605
- $[144] !== t41 || $[145] !== t45 || $[146] !== t46 ? (t47 = /* @__PURE__ */ jsxs(ActionRail, {
13026
+ $[145] !== t41 || $[146] !== t45 || $[147] !== t46 ? (t47 = /* @__PURE__ */ jsxs(ActionRail, {
12606
13027
  testId: "vista-result-actions",
12607
13028
  children: [
12608
13029
  t41,
12609
13030
  t45,
12610
13031
  t46
12611
13032
  ]
12612
- }), $[144] = t41, $[145] = t45, $[146] = t46, $[147] = t47) : t47 = $[147];
13033
+ }), $[145] = t41, $[146] = t45, $[147] = t46, $[148] = t47) : t47 = $[148];
12613
13034
  let t48 = status === "failed" ? "critical" : "default", t49;
12614
- $[148] === t ? t49 = $[149] : (t49 = t("result.label"), $[148] = t, $[149] = t49);
13035
+ $[149] === t ? t49 = $[150] : (t49 = t("result.label"), $[149] = t, $[150] = t49);
12615
13036
  let t50;
12616
- $[150] === t49 ? t50 = $[151] : (t50 = /* @__PURE__ */ jsx(Label, {
13037
+ $[151] === t49 ? t50 = $[152] : (t50 = /* @__PURE__ */ jsx(Label, {
12617
13038
  muted: !0,
12618
13039
  size: 1,
12619
13040
  children: t49
12620
- }), $[150] = t49, $[151] = t50);
13041
+ }), $[151] = t49, $[152] = t50);
12621
13042
  let t51;
12622
- $[152] !== isLive || $[153] !== t ? (t51 = isLive && /* @__PURE__ */ jsx(Badge, {
13043
+ $[153] !== isLive || $[154] !== t ? (t51 = isLive && /* @__PURE__ */ jsx(Badge, {
12623
13044
  fontSize: 0,
12624
13045
  tone: "positive",
12625
13046
  children: t("vista.live.active")
12626
- }), $[152] = isLive, $[153] = t, $[154] = t51) : t51 = $[154];
13047
+ }), $[153] = isLive, $[154] = t, $[155] = t51) : t51 = $[155];
12627
13048
  let t52;
12628
- $[155] === Symbol.for("react.memo_cache_sentinel") ? (t52 = /* @__PURE__ */ jsx(Box, {
13049
+ $[156] === Symbol.for("react.memo_cache_sentinel") ? (t52 = /* @__PURE__ */ jsx(Box, {
12629
13050
  flexBasis: "0%",
12630
13051
  flexGrow: 1
12631
- }), $[155] = t52) : t52 = $[155];
13052
+ }), $[156] = t52) : t52 = $[156];
12632
13053
  let t53;
12633
- $[156] !== copyResult || $[157] !== hasResult || $[158] !== resultView || $[159] !== setResultView || $[160] !== t ? (t53 = hasResult && /* @__PURE__ */ jsxs(Flex, {
13054
+ $[157] !== copyResult || $[158] !== hasResult || $[159] !== resultView || $[160] !== setResultView || $[161] !== t ? (t53 = hasResult && /* @__PURE__ */ jsxs(Flex, {
12634
13055
  alignItems: "center",
12635
- className: "_1anxzyvd",
13056
+ className: "cTWfhW_labelActions",
12636
13057
  gap: 1,
12637
13058
  children: [/* @__PURE__ */ jsxs(TabList, {
12638
13059
  "aria-label": t("vista.result.view.label"),
@@ -12684,10 +13105,10 @@ function ResponsePanel(props) {
12684
13105
  padding: 2
12685
13106
  })
12686
13107
  })]
12687
- }), $[156] = copyResult, $[157] = hasResult, $[158] = resultView, $[159] = setResultView, $[160] = t, $[161] = t53) : t53 = $[161];
13108
+ }), $[157] = copyResult, $[158] = hasResult, $[159] = resultView, $[160] = setResultView, $[161] = t, $[162] = t53) : t53 = $[162];
12688
13109
  let t54;
12689
- $[162] !== t50 || $[163] !== t51 || $[164] !== t53 ? (t54 = /* @__PURE__ */ jsx(Box, {
12690
- className: resultLabel,
13110
+ $[163] !== t50 || $[164] !== t51 || $[165] !== t53 ? (t54 = /* @__PURE__ */ jsx(Box, {
13111
+ className: "cTWfhW_resultLabel cTWfhW_editorLabel",
12691
13112
  children: /* @__PURE__ */ jsxs(Flex, {
12692
13113
  alignItems: "center",
12693
13114
  gap: 2,
@@ -12698,9 +13119,9 @@ function ResponsePanel(props) {
12698
13119
  t53
12699
13120
  ]
12700
13121
  })
12701
- }), $[162] = t50, $[163] = t51, $[164] = t53, $[165] = t54) : t54 = $[165];
13122
+ }), $[163] = t50, $[164] = t51, $[165] = t53, $[166] = t54) : t54 = $[166];
12702
13123
  let t55;
12703
- $[166] !== copyValue || $[167] !== error || $[168] !== failedConfig || $[169] !== hasResult || $[170] !== resolved.apiVersion || $[171] !== resolved.perspective || $[172] !== resolved.variant || $[173] !== result || $[174] !== resultDataset || $[175] !== resultView || $[176] !== status || $[177] !== t ? (t55 = hasResult && resultView === "json" ? /* @__PURE__ */ jsx(ResultJson, {
13124
+ $[167] !== copyValue || $[168] !== error || $[169] !== failedConfig || $[170] !== hasResult || $[171] !== resolved.apiVersion || $[172] !== resolved.perspective || $[173] !== resolved.variant || $[174] !== result || $[175] !== resultDataset || $[176] !== resultView || $[177] !== status || $[178] !== t ? (t55 = hasResult && resultView === "json" ? /* @__PURE__ */ jsx(ResultJson, {
12704
13125
  id: "vista-result-content",
12705
13126
  value: result
12706
13127
  }) : hasResult && resultView === "graph" ? /* @__PURE__ */ jsx(ResultGraph, {
@@ -12733,25 +13154,25 @@ function ResponsePanel(props) {
12733
13154
  children: t("vista.result.empty")
12734
13155
  })
12735
13156
  ]
12736
- }), $[166] = copyValue, $[167] = error, $[168] = failedConfig, $[169] = hasResult, $[170] = resolved.apiVersion, $[171] = resolved.perspective, $[172] = resolved.variant, $[173] = result, $[174] = resultDataset, $[175] = resultView, $[176] = status, $[177] = t, $[178] = t55) : t55 = $[178];
13157
+ }), $[167] = copyValue, $[168] = error, $[169] = failedConfig, $[170] = hasResult, $[171] = resolved.apiVersion, $[172] = resolved.perspective, $[173] = resolved.variant, $[174] = result, $[175] = resultDataset, $[176] = resultView, $[177] = status, $[178] = t, $[179] = t55) : t55 = $[179];
12737
13158
  let t56;
12738
- $[179] !== t48 || $[180] !== t54 || $[181] !== t55 ? (t56 = /* @__PURE__ */ jsxs(Card, {
12739
- className: resultContainer,
13159
+ $[180] !== t48 || $[181] !== t54 || $[182] !== t55 ? (t56 = /* @__PURE__ */ jsxs(Card, {
13160
+ className: "cTWfhW_resultContainer",
12740
13161
  "data-testid": "vista-result",
12741
13162
  tone: t48,
12742
13163
  children: [t54, t55]
12743
- }), $[179] = t48, $[180] = t54, $[181] = t55, $[182] = t56) : t56 = $[182];
13164
+ }), $[180] = t48, $[181] = t54, $[182] = t55, $[183] = t56) : t56 = $[183];
12744
13165
  let t57;
12745
- $[183] !== panelTabs || $[184] !== t47 || $[185] !== t56 ? (t57 = /* @__PURE__ */ jsx(SplitWithBottomPanel, {
13166
+ $[184] !== panelTabs || $[185] !== t47 || $[186] !== t56 ? (t57 = /* @__PURE__ */ jsx(SplitWithBottomPanel, {
12746
13167
  defaultBottomSize: DEFAULT_BOTTOM_PANEL_SIZE,
12747
13168
  footer: t47,
12748
13169
  id: "vista-response",
12749
13170
  tabs: panelTabs,
12750
13171
  testId: "vista-response-panel",
12751
13172
  children: t56
12752
- }), $[183] = panelTabs, $[184] = t47, $[185] = t56, $[186] = t57) : t57 = $[186];
13173
+ }), $[184] = panelTabs, $[185] = t47, $[186] = t56, $[187] = t57) : t57 = $[187];
12753
13174
  let t58;
12754
- return $[187] !== t38 || $[188] !== t57 ? (t58 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t38, t57] }), $[187] = t38, $[188] = t57, $[189] = t58) : t58 = $[189], t58;
13175
+ return $[188] !== t38 || $[189] !== t57 ? (t58 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t38, t57] }), $[188] = t38, $[189] = t57, $[190] = t58) : t58 = $[190], t58;
12755
13176
  }
12756
13177
  function _temp11(finding) {
12757
13178
  return finding.severity === "error";
@@ -12771,7 +13192,7 @@ function _temp7(snapshot_5) {
12771
13192
  function _temp6(snapshot_4) {
12772
13193
  return snapshot_4.context.meta?.url ?? snapshot_4.context.url;
12773
13194
  }
12774
- function _temp5$1(snapshot_3) {
13195
+ function _temp5$2(snapshot_3) {
12775
13196
  return snapshot_3.context.meta;
12776
13197
  }
12777
13198
  function _temp4$2(snapshot_2) {
@@ -12814,7 +13235,7 @@ function TabTitleInput(t0) {
12814
13235
  $[9] === t ? t5 = $[10] : (t5 = t("vista.tabs.title-placeholder"), $[9] = t, $[10] = t5);
12815
13236
  let t6;
12816
13237
  return $[11] !== commit || $[12] !== draft || $[13] !== t4 || $[14] !== t5 ? (t6 = /* @__PURE__ */ jsx(Box, {
12817
- className: tabTitleInput,
13238
+ className: "cTWfhW_tabTitleInput",
12818
13239
  paddingY: 1,
12819
13240
  children: /* @__PURE__ */ jsx(TextInput, {
12820
13241
  autoFocus: !0,
@@ -12838,10 +13259,10 @@ function _temp$2(event_0) {
12838
13259
  * keep their own pointer behaviour.
12839
13260
  */
12840
13261
  function TabHandle(props) {
12841
- let $ = c(42), { tab: tab$1, selected, editing, listRef, onSelect, onClose, onStartRename, onRename, onCancelRename, onKeyDown } = props, { t } = useTranslation(visionLocaleNamespace), t0;
12842
- $[0] !== t || $[1] !== tab$1 ? (t0 = getTabTitle(tab$1, t("vista.tabs.untitled")), $[0] = t, $[1] = tab$1, $[2] = t0) : t0 = $[2];
13262
+ let $ = c(42), { tab, selected, editing, listRef, onSelect, onClose, onStartRename, onRename, onCancelRename, onKeyDown } = props, { t } = useTranslation(visionLocaleNamespace), t0;
13263
+ $[0] !== t || $[1] !== tab ? (t0 = getTabTitle(tab, t("vista.tabs.untitled")), $[0] = t, $[1] = tab, $[2] = t0) : t0 = $[2];
12843
13264
  let title = t0, dragControls = useDragControls(), [dragging, setDragging] = useState(!1), t1;
12844
- $[3] === tab$1.id ? t1 = $[4] : (t1 = (snapshot) => snapshot.context.runners[tab$1.id], $[3] = tab$1.id, $[4] = t1);
13265
+ $[3] === tab.id ? t1 = $[4] : (t1 = (snapshot) => snapshot.context.runners[tab.id], $[3] = tab.id, $[4] = t1);
12845
13266
  let runnerRef = useVistaSelector(t1), isLive = useSelector(runnerRef, _temp2$2), t2;
12846
13267
  $[5] === onClose ? t2 = $[6] : (t2 = (event) => {
12847
13268
  event.button === 1 && (event.preventDefault(), onClose());
@@ -12853,17 +13274,17 @@ function TabHandle(props) {
12853
13274
  let startDrag = t3, t4 = dragging ? "true" : void 0, t5, t6;
12854
13275
  $[9] === Symbol.for("react.memo_cache_sentinel") ? (t5 = () => setDragging(!1), t6 = () => setDragging(!0), $[9] = t5, $[10] = t6) : (t5 = $[9], t6 = $[10]);
12855
13276
  let t7 = selected ? "true" : void 0, t8;
12856
- $[11] !== editing || $[12] !== handleAuxClick || $[13] !== onCancelRename || $[14] !== onKeyDown || $[15] !== onRename || $[16] !== onSelect || $[17] !== onStartRename || $[18] !== selected || $[19] !== startDrag || $[20] !== tab$1.id || $[21] !== title ? (t8 = editing ? /* @__PURE__ */ jsx(TabTitleInput, {
13277
+ $[11] !== editing || $[12] !== handleAuxClick || $[13] !== onCancelRename || $[14] !== onKeyDown || $[15] !== onRename || $[16] !== onSelect || $[17] !== onStartRename || $[18] !== selected || $[19] !== startDrag || $[20] !== tab.id || $[21] !== title ? (t8 = editing ? /* @__PURE__ */ jsx(TabTitleInput, {
12857
13278
  onCancel: onCancelRename,
12858
13279
  onCommit: onRename,
12859
13280
  title
12860
13281
  }) : /* @__PURE__ */ jsx(Button, {
12861
13282
  "aria-controls": QUERY_TAB_PANEL_ID,
12862
13283
  "aria-selected": selected,
12863
- className: tabTitleButton,
13284
+ className: "cTWfhW_tabTitleButton",
12864
13285
  "data-testid": "vista-tab-button",
12865
13286
  fontSize: 1,
12866
- id: getQueryTabId(tab$1.id),
13287
+ id: getQueryTabId(tab.id),
12867
13288
  mode: "bleed",
12868
13289
  onAuxClick: handleAuxClick,
12869
13290
  onClick: onSelect,
@@ -12875,7 +13296,7 @@ function TabHandle(props) {
12875
13296
  tabIndex: selected ? 0 : -1,
12876
13297
  text: title,
12877
13298
  textWeight: selected ? "medium" : "regular"
12878
- }), $[11] = editing, $[12] = handleAuxClick, $[13] = onCancelRename, $[14] = onKeyDown, $[15] = onRename, $[16] = onSelect, $[17] = onStartRename, $[18] = selected, $[19] = startDrag, $[20] = tab$1.id, $[21] = title, $[22] = t8) : t8 = $[22];
13299
+ }), $[11] = editing, $[12] = handleAuxClick, $[13] = onCancelRename, $[14] = onKeyDown, $[15] = onRename, $[16] = onSelect, $[17] = onStartRename, $[18] = selected, $[19] = startDrag, $[20] = tab.id, $[21] = title, $[22] = t8) : t8 = $[22];
12879
13300
  let t9;
12880
13301
  $[23] !== isLive || $[24] !== t ? (t9 = isLive && /* @__PURE__ */ jsx(Box, {
12881
13302
  flexShrink: 0,
@@ -12890,7 +13311,7 @@ function TabHandle(props) {
12890
13311
  let t11;
12891
13312
  $[28] !== onClose || $[29] !== t10 ? (t11 = /* @__PURE__ */ jsx(Button, {
12892
13313
  "aria-label": t10,
12893
- className: tabCloseButton,
13314
+ className: "cTWfhW_tabCloseButton",
12894
13315
  "data-testid": "vista-tab-close",
12895
13316
  fontSize: 1,
12896
13317
  icon: CloseIcon,
@@ -12902,7 +13323,7 @@ function TabHandle(props) {
12902
13323
  let t12;
12903
13324
  $[31] !== t11 || $[32] !== t7 || $[33] !== t8 || $[34] !== t9 ? (t12 = /* @__PURE__ */ jsxs(Flex, {
12904
13325
  alignItems: "center",
12905
- className: tab,
13326
+ className: "cTWfhW_tab",
12906
13327
  "data-selected": t7,
12907
13328
  "data-testid": "vista-tab",
12908
13329
  gap: 1,
@@ -12916,9 +13337,9 @@ function TabHandle(props) {
12916
13337
  ]
12917
13338
  }), $[31] = t11, $[32] = t7, $[33] = t8, $[34] = t9, $[35] = t12) : t12 = $[35];
12918
13339
  let t13;
12919
- return $[36] !== dragControls || $[37] !== listRef || $[38] !== t12 || $[39] !== t4 || $[40] !== tab$1 ? (t13 = /* @__PURE__ */ jsx(Reorder.Item, {
13340
+ return $[36] !== dragControls || $[37] !== listRef || $[38] !== t12 || $[39] !== t4 || $[40] !== tab ? (t13 = /* @__PURE__ */ jsx(Reorder.Item, {
12920
13341
  as: "div",
12921
- className: tabItem,
13342
+ className: "cTWfhW_tabItem",
12922
13343
  "data-dragging": t4,
12923
13344
  "data-testid": "vista-tab-item",
12924
13345
  dragConstraints: listRef,
@@ -12928,9 +13349,9 @@ function TabHandle(props) {
12928
13349
  layout: "position",
12929
13350
  onDragEnd: t5,
12930
13351
  onDragStart: t6,
12931
- value: tab$1,
13352
+ value: tab,
12932
13353
  children: t12
12933
- }), $[36] = dragControls, $[37] = listRef, $[38] = t12, $[39] = t4, $[40] = tab$1, $[41] = t13) : t13 = $[41], t13;
13354
+ }), $[36] = dragControls, $[37] = listRef, $[38] = t12, $[39] = t4, $[40] = tab, $[41] = t13) : t13 = $[41], t13;
12934
13355
  }
12935
13356
  function _temp2$2(snapshot_0) {
12936
13357
  return snapshot_0.matches({ live: "on" });
@@ -12948,7 +13369,7 @@ function QueryTabBar() {
12948
13369
  let stopRenaming = t1, t2;
12949
13370
  $[2] === actorRef ? t2 = $[3] : (t2 = (ordered) => actorRef.send({
12950
13371
  type: "tab.reorder",
12951
- ids: ordered.map(_temp5)
13372
+ ids: ordered.map(_temp5$1)
12952
13373
  }), $[2] = actorRef, $[3] = t2);
12953
13374
  let reorder = t2, t3;
12954
13375
  $[4] !== activeTabId || $[5] !== actorRef || $[6] !== reorder || $[7] !== tabs ? (t3 = (event) => {
@@ -13016,7 +13437,7 @@ function QueryTabBar() {
13016
13437
  "aria-label": t4,
13017
13438
  as: "div",
13018
13439
  axis: "x",
13019
- className: tabList,
13440
+ className: "cTWfhW_tabList",
13020
13441
  onReorder: reorder,
13021
13442
  ref: listRef,
13022
13443
  role: "tablist",
@@ -13044,14 +13465,14 @@ function QueryTabBar() {
13044
13465
  let t10;
13045
13466
  return $[29] !== t6 || $[30] !== t9 ? (t10 = /* @__PURE__ */ jsxs(Flex, {
13046
13467
  alignItems: "stretch",
13047
- className: tabBar,
13468
+ className: "cTWfhW_tabBar",
13048
13469
  "data-testid": "vista-tab-bar",
13049
13470
  flexShrink: 0,
13050
13471
  paddingX: 1,
13051
13472
  children: [t6, t9]
13052
13473
  }), $[29] = t6, $[30] = t9, $[31] = t10) : t10 = $[31], t10;
13053
13474
  }
13054
- function _temp5(tab) {
13475
+ function _temp5$1(tab) {
13055
13476
  return tab.id;
13056
13477
  }
13057
13478
  function _temp4$1(snapshot_0) {
@@ -13083,7 +13504,7 @@ const DEFAULT_REQUEST_SHARE = {
13083
13504
  * paste-a-query-URL handler.
13084
13505
  */
13085
13506
  function QueryTab(t0) {
13086
- let $ = c(214), { tab, rootElement } = t0, { t } = useTranslation(visionLocaleNamespace), toast = useToast(), copyToClipboard = useCopyToClipboard(), actorRef = useVistaActor(), { layout } = useVistaExperience(), datasets = useVistaSelector(selectDatasets), t1;
13507
+ let $ = c(227), { tab, rootElement } = t0, { t } = useTranslation(visionLocaleNamespace), toast = useToast(), copyToClipboard = useCopyToClipboard(), actorRef = useVistaActor(), { layout } = useVistaExperience(), datasets = useVistaSelector(selectDatasets), t1;
13087
13508
  $[0] === tab.id ? t1 = $[1] : (t1 = (snapshot) => snapshot.context.runners[tab.id], $[0] = tab.id, $[1] = t1);
13088
13509
  let runnerRef = useVistaSelector(t1), t2;
13089
13510
  $[2] === tab.id ? t2 = $[3] : (t2 = (snapshot_0) => snapshot_0.context.loadRevisions[tab.id] || 0, $[2] = tab.id, $[3] = t2);
@@ -13091,7 +13512,7 @@ function QueryTab(t0) {
13091
13512
  $[4] === Symbol.for("react.memo_cache_sentinel") ? (t3 = {}, $[4] = t3) : t3 = $[4];
13092
13513
  let [splitSizes, setSplitSizes] = useState(t3), [mobilePane, setMobilePane] = useState("request"), queryEditorRef = useRef(null), paramsEditorRef = useRef(null), t4;
13093
13514
  $[5] === Symbol.for("react.memo_cache_sentinel") ? (t4 = [], $[5] = t4) : t4 = $[5];
13094
- let [lintFindings, setLintFindings] = useState(t4), { resolved, params, request, buildRequest } = useQueryRequestBuilder(tab), isFetching = useSelector(runnerRef, selectIsFetching), t5;
13515
+ let [lintFindings, setLintFindings] = useState(t4), { resolved, params, request, buildRequest } = useQueryRequestBuilder(tab), isVariantsEnabled = useVariantsEnabled(), isFetching = useSelector(runnerRef, selectIsFetching), t5;
13095
13516
  $[6] !== actorRef || $[7] !== tab.id ? (t5 = (query) => actorRef.send({
13096
13517
  type: "tab.setQuery",
13097
13518
  id: tab.id,
@@ -13120,34 +13541,59 @@ function QueryTab(t0) {
13120
13541
  setParams.cancel(), setParamsNow(rawParams_0);
13121
13542
  }, $[25] = setParams, $[26] = setParamsNow, $[27] = t14) : t14 = $[27];
13122
13543
  let replaceParams = t14, t15;
13123
- $[28] !== actorRef || $[29] !== buildRequest || $[30] !== setParams || $[31] !== tab ? (t15 = () => {
13544
+ $[28] !== actorRef || $[29] !== setParams || $[30] !== setParamsNow || $[31] !== t || $[32] !== tab.id ? (t15 = async (query_0) => {
13545
+ if (!paramsEditorRef.current) return;
13546
+ let referenced;
13547
+ try {
13548
+ referenced = await extractQueryParams(query_0);
13549
+ } catch {
13550
+ return;
13551
+ }
13552
+ if (referenced.length === 0 || !paramsEditorRef.current) return;
13553
+ setParams.flush();
13554
+ let latest = actorRef.getSnapshot().context.tabs.find((it) => it.id === tab.id);
13555
+ if (!latest || latest.query !== query_0) return;
13556
+ let missing = missingParamNames(referenced.map(_temp2$1), latest.rawParams, t);
13557
+ if (!missing || missing.length === 0) return;
13558
+ let nextRawParams = addMissingParams(latest.rawParams, missing);
13559
+ nextRawParams !== latest.rawParams && (paramsEditorRef.current.resetEditorContent(nextRawParams), setParamsNow(nextRawParams));
13560
+ }, $[28] = actorRef, $[29] = setParams, $[30] = setParamsNow, $[31] = t, $[32] = tab.id, $[33] = t15) : t15 = $[33];
13561
+ let prefillParams = useEffectEvent(t15), t16;
13562
+ $[34] !== prefillParams || $[35] !== tab.query ? (t16 = () => {
13563
+ let timeoutId = setTimeout(() => void prefillParams(tab.query), 333);
13564
+ return () => clearTimeout(timeoutId);
13565
+ }, $[34] = prefillParams, $[35] = tab.query, $[36] = t16) : t16 = $[36];
13566
+ let t17;
13567
+ $[37] === tab.query ? t17 = $[38] : (t17 = [tab.query], $[37] = tab.query, $[38] = t17), useEffect(t16, t17);
13568
+ let t18;
13569
+ $[39] !== actorRef || $[40] !== buildRequest || $[41] !== setParams || $[42] !== tab ? (t18 = () => {
13124
13570
  setParams.flush();
13125
- let latest = actorRef.getSnapshot().context.tabs.find((it) => it.id === tab.id) ?? tab;
13126
- return buildRequest(latest.query, latest.rawParams);
13127
- }, $[28] = actorRef, $[29] = buildRequest, $[30] = setParams, $[31] = tab, $[32] = t15) : t15 = $[32];
13128
- let buildCurrentRequest = t15, t16;
13129
- $[33] !== buildCurrentRequest || $[34] !== layout || $[35] !== runnerRef ? (t16 = (reason) => {
13571
+ let latest_0 = actorRef.getSnapshot().context.tabs.find((it_0) => it_0.id === tab.id) ?? tab;
13572
+ return buildRequest(latest_0.query, latest_0.rawParams);
13573
+ }, $[39] = actorRef, $[40] = buildRequest, $[41] = setParams, $[42] = tab, $[43] = t18) : t18 = $[43];
13574
+ let buildCurrentRequest = t18, t19;
13575
+ $[44] !== buildCurrentRequest || $[45] !== layout || $[46] !== runnerRef ? (t19 = (reason) => {
13130
13576
  let current = buildCurrentRequest();
13131
13577
  return current ? (runnerRef.send({
13132
13578
  type: "fetch",
13133
13579
  request: current,
13134
13580
  reason
13135
13581
  }), layout === "mobile" && setMobilePane("response"), !0) : !1;
13136
- }, $[33] = buildCurrentRequest, $[34] = layout, $[35] = runnerRef, $[36] = t16) : t16 = $[36];
13137
- let run = t16, t17;
13138
- $[37] === runnerRef ? t17 = $[38] : (t17 = () => runnerRef.send({ type: "cancel" }), $[37] = runnerRef, $[38] = t17);
13139
- let cancel = t17, t18;
13140
- $[39] === run ? t18 = $[40] : (t18 = () => {
13582
+ }, $[44] = buildCurrentRequest, $[45] = layout, $[46] = runnerRef, $[47] = t19) : t19 = $[47];
13583
+ let run = t19, t20;
13584
+ $[48] === runnerRef ? t20 = $[49] : (t20 = () => runnerRef.send({ type: "cancel" }), $[48] = runnerRef, $[49] = t20);
13585
+ let cancel = t20, t21;
13586
+ $[50] === run ? t21 = $[51] : (t21 = () => {
13141
13587
  run({ type: "mutation" });
13142
- }, $[39] = run, $[40] = t18);
13143
- let refetchAfterMutations = t18, t19;
13144
- $[41] !== actorRef || $[42] !== tab.id ? (t19 = (options) => actorRef.send({
13588
+ }, $[50] = run, $[51] = t21);
13589
+ let refetchAfterMutations = t21, t22;
13590
+ $[52] !== actorRef || $[53] !== tab.id ? (t22 = (options) => actorRef.send({
13145
13591
  type: "tab.setOptions",
13146
13592
  id: tab.id,
13147
13593
  options
13148
- }), $[41] = actorRef, $[42] = tab.id, $[43] = t19) : t19 = $[43];
13149
- let setOptions = t19, t20;
13150
- $[44] !== actorRef || $[45] !== run || $[46] !== tab.autoRefetch || $[47] !== tab.id ? (t20 = () => {
13594
+ }), $[52] = actorRef, $[53] = tab.id, $[54] = t22) : t22 = $[54];
13595
+ let setOptions = t22, t23;
13596
+ $[55] !== actorRef || $[56] !== run || $[57] !== tab.autoRefetch || $[58] !== tab.id ? (t23 = () => {
13151
13597
  tab.autoRefetch ? actorRef.send({
13152
13598
  type: "tab.setAutoRefetch",
13153
13599
  id: tab.id,
@@ -13157,28 +13603,28 @@ function QueryTab(t0) {
13157
13603
  id: tab.id,
13158
13604
  autoRefetch: !0
13159
13605
  });
13160
- }, $[44] = actorRef, $[45] = run, $[46] = tab.autoRefetch, $[47] = tab.id, $[48] = t20) : t20 = $[48];
13161
- let toggleAutoRefetch = t20, t21;
13162
- $[49] === Symbol.for("react.memo_cache_sentinel") ? (t21 = async (query_0) => {
13163
- let editor = queryEditorRef.current, width = editor?.getVisibleColumns(countLines(query_0)), formatted = await formatGroq(query_0, width);
13606
+ }, $[55] = actorRef, $[56] = run, $[57] = tab.autoRefetch, $[58] = tab.id, $[59] = t23) : t23 = $[59];
13607
+ let toggleAutoRefetch = t23, t24;
13608
+ $[60] === Symbol.for("react.memo_cache_sentinel") ? (t24 = async (query_1) => {
13609
+ let editor = queryEditorRef.current, width = editor?.getVisibleColumns(countLines(query_1)), formatted = await formatGroq(query_1, width);
13164
13610
  for (let pass = 0; pass < 2 && width !== void 0; pass++) {
13165
13611
  let nextWidth = editor?.getVisibleColumns(countLines(formatted));
13166
13612
  if (nextWidth === void 0 || nextWidth >= width) break;
13167
- width = nextWidth, formatted = await formatGroq(query_0, width);
13613
+ width = nextWidth, formatted = await formatGroq(query_1, width);
13168
13614
  }
13169
13615
  return formatted;
13170
- }, $[49] = t21) : t21 = $[49];
13171
- let formatForEditor = t21, t22;
13172
- $[50] !== actorRef || $[51] !== setQuery || $[52] !== tab ? (t22 = async () => {
13173
- let { query: query_1 } = tab, formatted_0 = await formatForEditor(query_1);
13174
- actorRef.getSnapshot().context.tabs.find((it_0) => it_0.id === tab.id)?.query === query_1 && formatted_0 !== query_1 && (queryEditorRef.current?.resetEditorContent(formatted_0), setQuery(formatted_0));
13175
- }, $[50] = actorRef, $[51] = setQuery, $[52] = tab, $[53] = t22) : t22 = $[53];
13176
- let formatQuery = t22, t23;
13177
- $[54] !== formatQuery || $[55] !== t || $[56] !== toast ? (t23 = async () => {
13616
+ }, $[60] = t24) : t24 = $[60];
13617
+ let formatForEditor = t24, t25;
13618
+ $[61] !== actorRef || $[62] !== setQuery || $[63] !== tab ? (t25 = async () => {
13619
+ let { query: query_2 } = tab, formatted_0 = await formatForEditor(query_2);
13620
+ actorRef.getSnapshot().context.tabs.find((it_1) => it_1.id === tab.id)?.query === query_2 && formatted_0 !== query_2 && (queryEditorRef.current?.resetEditorContent(formatted_0), setQuery(formatted_0));
13621
+ }, $[61] = actorRef, $[62] = setQuery, $[63] = tab, $[64] = t25) : t25 = $[64];
13622
+ let formatQuery = t25, t26;
13623
+ $[65] !== formatQuery || $[66] !== t || $[67] !== toast ? (t26 = async () => {
13178
13624
  try {
13179
13625
  await formatQuery();
13180
- } catch (t24) {
13181
- let error = t24;
13626
+ } catch (t27) {
13627
+ let error = t27;
13182
13628
  toast.push({
13183
13629
  closable: !0,
13184
13630
  description: error instanceof GroqSyntaxError ? error.message : void 0,
@@ -13186,33 +13632,33 @@ function QueryTab(t0) {
13186
13632
  title: t("vista.query.prettify.failed")
13187
13633
  });
13188
13634
  }
13189
- }, $[54] = formatQuery, $[55] = t, $[56] = toast, $[57] = t23) : t23 = $[57];
13190
- let prettify = t23, t24;
13191
- $[58] !== copyToClipboard || $[59] !== t || $[60] !== tab.query ? (t24 = () => void copyToClipboard(tab.query, t("vista.query.copied")), $[58] = copyToClipboard, $[59] = t, $[60] = tab.query, $[61] = t24) : t24 = $[61];
13192
- let copyQuery = t24, pendingRevealRef = useRef(null), drawerOpen = useVistaSelector(_temp2$1), t25;
13193
- $[62] !== actorRef || $[63] !== drawerOpen || $[64] !== layout || $[65] !== mobilePane ? (t25 = (range) => {
13635
+ }, $[65] = formatQuery, $[66] = t, $[67] = toast, $[68] = t26) : t26 = $[68];
13636
+ let prettify = t26, t27;
13637
+ $[69] !== copyToClipboard || $[70] !== t || $[71] !== tab.query ? (t27 = () => void copyToClipboard(tab.query, t("vista.query.copied")), $[69] = copyToClipboard, $[70] = t, $[71] = tab.query, $[72] = t27) : t27 = $[72];
13638
+ let copyQuery = t27, pendingRevealRef = useRef(null), drawerOpen = useVistaSelector(_temp3), t28;
13639
+ $[73] !== actorRef || $[74] !== drawerOpen || $[75] !== layout || $[76] !== mobilePane ? (t28 = (range) => {
13194
13640
  layout === "mobile" && (mobilePane !== "request" || drawerOpen) ? (pendingRevealRef.current = range, setMobilePane("request"), drawerOpen && actorRef.send({ type: "drawer.close" })) : queryEditorRef.current?.selectRange(range.from, range.to);
13195
- }, $[62] = actorRef, $[63] = drawerOpen, $[64] = layout, $[65] = mobilePane, $[66] = t25) : t25 = $[66];
13196
- let revealRange = t25, t26;
13197
- $[67] === Symbol.for("react.memo_cache_sentinel") ? (t26 = (edit) => queryEditorRef.current?.applyChanges([edit]), $[67] = t26) : t26 = $[67];
13198
- let editQuery = t26, t27, t28;
13199
- $[68] !== drawerOpen || $[69] !== mobilePane ? (t27 = () => {
13641
+ }, $[73] = actorRef, $[74] = drawerOpen, $[75] = layout, $[76] = mobilePane, $[77] = t28) : t28 = $[77];
13642
+ let revealRange = t28, t29;
13643
+ $[78] === Symbol.for("react.memo_cache_sentinel") ? (t29 = (edit) => queryEditorRef.current?.applyChanges([edit]), $[78] = t29) : t29 = $[78];
13644
+ let editQuery = t29, t30, t31;
13645
+ $[79] !== drawerOpen || $[80] !== mobilePane ? (t30 = () => {
13200
13646
  let pending = pendingRevealRef.current;
13201
13647
  mobilePane === "request" && !drawerOpen && pending && (pendingRevealRef.current = null, queryEditorRef.current?.selectRange(pending.from, pending.to));
13202
- }, t28 = [drawerOpen, mobilePane], $[68] = drawerOpen, $[69] = mobilePane, $[70] = t27, $[71] = t28) : (t27 = $[70], t28 = $[71]), useEffect(t27, t28);
13203
- let t29;
13204
- $[72] !== runnerRef || $[73] !== setParams || $[74] !== tab.query || $[75] !== tab.rawParams ? (t29 = () => {
13648
+ }, t31 = [drawerOpen, mobilePane], $[79] = drawerOpen, $[80] = mobilePane, $[81] = t30, $[82] = t31) : (t30 = $[81], t31 = $[82]), useEffect(t30, t31);
13649
+ let t32;
13650
+ $[83] !== runnerRef || $[84] !== setParams || $[85] !== tab.query || $[86] !== tab.rawParams ? (t32 = () => {
13205
13651
  setParams.cancel(), queryEditorRef.current?.resetEditorContent(tab.query), paramsEditorRef.current?.resetEditorContent(tab.rawParams), runnerRef.send({ type: "clear" });
13206
- }, $[72] = runnerRef, $[73] = setParams, $[74] = tab.query, $[75] = tab.rawParams, $[76] = t29) : t29 = $[76], useOnValueChange(loadRevision, t29);
13207
- let t30 = tab.autoRefetch && resolved.supportsSyncTags, t31;
13208
- $[77] !== resolved.dataset || $[78] !== runnerRef || $[79] !== t30 || $[80] !== tab.id ? (t31 = {
13652
+ }, $[83] = runnerRef, $[84] = setParams, $[85] = tab.query, $[86] = tab.rawParams, $[87] = t32) : t32 = $[87], useOnValueChange(loadRevision, t32);
13653
+ let t33 = tab.autoRefetch && resolved.supportsSyncTags, t34;
13654
+ $[88] !== resolved.dataset || $[89] !== runnerRef || $[90] !== t33 || $[91] !== tab.id ? (t34 = {
13209
13655
  runnerRef,
13210
13656
  dataset: resolved.dataset,
13211
- enabled: t30,
13657
+ enabled: t33,
13212
13658
  tabId: tab.id
13213
- }, $[77] = resolved.dataset, $[78] = runnerRef, $[79] = t30, $[80] = tab.id, $[81] = t31) : t31 = $[81], useLiveSubscription(t31);
13214
- let t32;
13215
- $[82] !== buildCurrentRequest || $[83] !== buildRequest || $[84] !== runnerRef || $[85] !== tab.autoRefetch ? (t32 = () => {
13659
+ }, $[88] = resolved.dataset, $[89] = runnerRef, $[90] = t33, $[91] = tab.id, $[92] = t34) : t34 = $[92], useLiveSubscription(t34);
13660
+ let t35;
13661
+ $[93] !== buildCurrentRequest || $[94] !== buildRequest || $[95] !== runnerRef || $[96] !== tab.autoRefetch ? (t35 = () => {
13216
13662
  if (!tab.autoRefetch) return;
13217
13663
  let lastRequest = runnerRef.getSnapshot().context.request;
13218
13664
  if (!lastRequest) {
@@ -13230,79 +13676,86 @@ function QueryTab(t0) {
13230
13676
  request: current_1,
13231
13677
  reason: { type: "resume" }
13232
13678
  });
13233
- }, $[82] = buildCurrentRequest, $[83] = buildRequest, $[84] = runnerRef, $[85] = tab.autoRefetch, $[86] = t32) : t32 = $[86];
13234
- let resumeAutoRefetch = useEffectEvent(t32), t33;
13235
- $[87] === tab.id ? t33 = $[88] : (t33 = (snapshot_3) => snapshot_3.context.fetchOnOpen.includes(tab.id), $[87] = tab.id, $[88] = t33);
13236
- let generatedQueryPending = useVistaSelector(t33), t34;
13237
- $[89] !== actorRef || $[90] !== formatQuery || $[91] !== run || $[92] !== tab.id ? (t34 = async () => {
13238
- if (!actorRef.getSnapshot().context.fetchOnOpen.includes(tab.id)) return;
13239
- actorRef.send({
13240
- type: "tab.fetchedOnOpen",
13241
- id: tab.id
13242
- });
13243
- let previousColumns, settledFrames = 0;
13244
- for (let frame = 0; frame < 30; frame++) {
13245
- let columns = queryEditorRef.current?.getVisibleColumns();
13246
- if (settledFrames = columns !== void 0 && columns === previousColumns ? settledFrames + 1 : 0, settledFrames >= 3) break;
13247
- previousColumns = columns, await new Promise(_temp3);
13679
+ }, $[93] = buildCurrentRequest, $[94] = buildRequest, $[95] = runnerRef, $[96] = tab.autoRefetch, $[97] = t35) : t35 = $[97];
13680
+ let resumeAutoRefetch = useEffectEvent(t35), t36;
13681
+ $[98] === tab.id ? t36 = $[99] : (t36 = (snapshot_3) => snapshot_3.context.fetchOnOpen[tab.id], $[98] = tab.id, $[99] = t36);
13682
+ let fetchOnOpen = useVistaSelector(t36), t37;
13683
+ $[100] !== actorRef || $[101] !== formatQuery || $[102] !== run || $[103] !== tab.id ? (t37 = async () => {
13684
+ let source = actorRef.getSnapshot().context.fetchOnOpen[tab.id];
13685
+ if (source) {
13686
+ if (actorRef.send({
13687
+ type: "tab.fetchedOnOpen",
13688
+ id: tab.id
13689
+ }), source === "generated") {
13690
+ let previousColumns, settledFrames = 0;
13691
+ for (let frame = 0; frame < 30; frame++) {
13692
+ let columns = queryEditorRef.current?.getVisibleColumns();
13693
+ if (settledFrames = columns !== void 0 && columns === previousColumns ? settledFrames + 1 : 0, settledFrames >= 3) break;
13694
+ previousColumns = columns, await new Promise(_temp4);
13695
+ }
13696
+ await formatQuery().catch(_temp5);
13697
+ }
13698
+ run({ type: source });
13248
13699
  }
13249
- await formatQuery().catch(_temp4), run({ type: "generated" });
13250
- }, $[89] = actorRef, $[90] = formatQuery, $[91] = run, $[92] = tab.id, $[93] = t34) : t34 = $[93];
13251
- let fetchGeneratedQuery = useEffectEvent(t34), t35;
13252
- $[94] === resumeAutoRefetch ? t35 = $[95] : (t35 = () => {
13700
+ }, $[100] = actorRef, $[101] = formatQuery, $[102] = run, $[103] = tab.id, $[104] = t37) : t37 = $[104];
13701
+ let fetchOpenedQuery = useEffectEvent(t37), t38;
13702
+ $[105] === resumeAutoRefetch ? t38 = $[106] : (t38 = () => {
13253
13703
  resumeAutoRefetch();
13254
- }, $[94] = resumeAutoRefetch, $[95] = t35);
13255
- let t36;
13256
- $[96] === Symbol.for("react.memo_cache_sentinel") ? (t36 = [], $[96] = t36) : t36 = $[96], useEffect(t35, t36);
13257
- let t37;
13258
- $[97] !== fetchGeneratedQuery || $[98] !== generatedQueryPending ? (t37 = () => {
13259
- generatedQueryPending && fetchGeneratedQuery();
13260
- }, $[97] = fetchGeneratedQuery, $[98] = generatedQueryPending, $[99] = t37) : t37 = $[99];
13261
- let t38;
13262
- $[100] === generatedQueryPending ? t38 = $[101] : (t38 = [generatedQueryPending], $[100] = generatedQueryPending, $[101] = t38), useEffect(t37, t38);
13704
+ }, $[105] = resumeAutoRefetch, $[106] = t38);
13263
13705
  let t39;
13264
- $[102] !== resolved.apiVersion || $[103] !== resolved.dataset || $[104] !== resolved.perspective || $[105] !== resolved.useCdn || $[106] !== resolved.variant || $[107] !== tab.options.includeSourceMap ? (t39 = JSON.stringify([
13706
+ $[107] === Symbol.for("react.memo_cache_sentinel") ? (t39 = [], $[107] = t39) : t39 = $[107], useEffect(t38, t39);
13707
+ let t40;
13708
+ $[108] !== fetchOnOpen || $[109] !== fetchOpenedQuery ? (t40 = () => {
13709
+ fetchOnOpen && fetchOpenedQuery();
13710
+ }, $[108] = fetchOnOpen, $[109] = fetchOpenedQuery, $[110] = t40) : t40 = $[110];
13711
+ let t41;
13712
+ $[111] === fetchOnOpen ? t41 = $[112] : (t41 = [fetchOnOpen], $[111] = fetchOnOpen, $[112] = t41), useEffect(t40, t41);
13713
+ let t42;
13714
+ $[113] !== resolved.apiVersion || $[114] !== resolved.dataset || $[115] !== resolved.perspective || $[116] !== resolved.useCdn || $[117] !== resolved.variant || $[118] !== tab.options.includeSourceMap ? (t42 = JSON.stringify([
13265
13715
  resolved.apiVersion,
13266
13716
  resolved.dataset,
13267
13717
  resolved.perspective,
13268
13718
  resolved.variant,
13269
13719
  resolved.useCdn,
13270
13720
  tab.options.includeSourceMap
13271
- ]), $[102] = resolved.apiVersion, $[103] = resolved.dataset, $[104] = resolved.perspective, $[105] = resolved.useCdn, $[106] = resolved.variant, $[107] = tab.options.includeSourceMap, $[108] = t39) : t39 = $[108];
13272
- let refetchKey = `${loadRevision}|${t39}`, t40;
13273
- $[109] !== buildCurrentRequest || $[110] !== runnerRef || $[111] !== tab.autoRefetch ? (t40 = (key, previous) => {
13721
+ ]), $[113] = resolved.apiVersion, $[114] = resolved.dataset, $[115] = resolved.perspective, $[116] = resolved.useCdn, $[117] = resolved.variant, $[118] = tab.options.includeSourceMap, $[119] = t42) : t42 = $[119];
13722
+ let refetchKey = `${loadRevision}|${t42}`, t43;
13723
+ $[120] !== buildCurrentRequest || $[121] !== fetchOnOpen || $[122] !== runnerRef || $[123] !== tab.autoRefetch ? (t43 = (key, previous) => {
13274
13724
  if (!tab.autoRefetch) return;
13275
- let loaded = key.split("|", 1)[0] !== previous.split("|", 1)[0], current_2 = buildCurrentRequest();
13725
+ let loaded = key.split("|", 1)[0] !== previous.split("|", 1)[0];
13726
+ if (loaded && fetchOnOpen) return;
13727
+ let current_2 = buildCurrentRequest();
13276
13728
  current_2 && runnerRef.send({
13277
13729
  type: "fetch",
13278
13730
  request: current_2,
13279
13731
  reason: { type: loaded ? "load" : "options" }
13280
13732
  });
13281
- }, $[109] = buildCurrentRequest, $[110] = runnerRef, $[111] = tab.autoRefetch, $[112] = t40) : t40 = $[112], useOnValueChange(refetchKey, t40);
13282
- let t41;
13283
- $[113] === setOptions ? t41 = $[114] : (t41 = (perspective) => setOptions({ perspective }), $[113] = setOptions, $[114] = t41), useFollowNavbarPerspective(resolved.tabPerspective, t41);
13284
- let t42;
13285
- $[115] !== copyQuery || $[116] !== prettify || $[117] !== run ? (t42 = (shortcut) => {
13286
- bb262: switch (shortcut) {
13733
+ }, $[120] = buildCurrentRequest, $[121] = fetchOnOpen, $[122] = runnerRef, $[123] = tab.autoRefetch, $[124] = t43) : t43 = $[124], useOnValueChange(refetchKey, t43);
13734
+ let t44;
13735
+ $[125] === setOptions ? t44 = $[126] : (t44 = (perspective) => setOptions({ perspective }), $[125] = setOptions, $[126] = t44), useFollowNavbarPerspective(resolved.tabPerspective, t44);
13736
+ let t45;
13737
+ $[127] !== copyQuery || $[128] !== prettify || $[129] !== run ? (t45 = (shortcut) => {
13738
+ bb317: switch (shortcut) {
13287
13739
  case "fetch":
13288
13740
  run({ type: "shortcut" });
13289
- break bb262;
13741
+ break bb317;
13290
13742
  case "prettify":
13291
13743
  prettify();
13292
- break bb262;
13744
+ break bb317;
13293
13745
  case "copy-query":
13294
13746
  copyQuery();
13295
- break bb262;
13747
+ break bb317;
13296
13748
  default: throw Error(`Unhandled shortcut: ${String(shortcut)}`);
13297
13749
  }
13298
- }, $[115] = copyQuery, $[116] = prettify, $[117] = run, $[118] = t42) : t42 = $[118];
13299
- let t43;
13300
- $[119] !== actorRef || $[120] !== datasets || $[121] !== resolved.variant || $[122] !== t || $[123] !== tab.id || $[124] !== toast ? (t43 = (text) => {
13750
+ }, $[127] = copyQuery, $[128] = prettify, $[129] = run, $[130] = t45) : t45 = $[130];
13751
+ let t46;
13752
+ $[131] !== actorRef || $[132] !== datasets || $[133] !== isVariantsEnabled || $[134] !== resolved.variant || $[135] !== t || $[136] !== tab.id || $[137] !== toast ? (t46 = (text) => {
13301
13753
  let parsed = parseQueryUrl(text, datasets);
13302
13754
  return parsed ? (actorRef.send({
13303
13755
  type: "tab.load",
13304
13756
  id: tab.id,
13305
- tab: parsedQueryToTabInit(parsed)
13757
+ tab: parsedQueryToTabInit(parsed),
13758
+ fetch: "paste"
13306
13759
  }), toast.push({
13307
13760
  closable: !0,
13308
13761
  id: "vista-paste",
@@ -13322,21 +13775,21 @@ function QueryTab(t0) {
13322
13775
  closable: !0,
13323
13776
  id: "vista-paste-variant",
13324
13777
  status: "warning",
13325
- title: t("vista.paste.unavailable-variant", { variant: parsed.variant })
13778
+ title: t(isVariantsEnabled ? "vista.paste.unavailable-variant" : "vista.paste.variants-disabled", { variant: parsed.variant })
13326
13779
  }), !0) : !1;
13327
- }, $[119] = actorRef, $[120] = datasets, $[121] = resolved.variant, $[122] = t, $[123] = tab.id, $[124] = toast, $[125] = t43) : t43 = $[125];
13328
- let t44;
13329
- $[126] !== rootElement || $[127] !== t42 || $[128] !== t43 ? (t44 = {
13330
- rootElement,
13331
- onShortcut: t42,
13332
- onPaste: t43
13333
- }, $[126] = rootElement, $[127] = t42, $[128] = t43, $[129] = t44) : t44 = $[129], useVistaDocumentEvents(t44);
13334
- let t45;
13335
- $[130] === prettify ? t45 = $[131] : (t45 = () => void prettify(), $[130] = prettify, $[131] = t45);
13336
- let t46;
13337
- $[132] === run ? t46 = $[133] : (t46 = () => run({ type: "manual" }), $[132] = run, $[133] = t46);
13780
+ }, $[131] = actorRef, $[132] = datasets, $[133] = isVariantsEnabled, $[134] = resolved.variant, $[135] = t, $[136] = tab.id, $[137] = toast, $[138] = t46) : t46 = $[138];
13338
13781
  let t47;
13339
- $[134] !== buildRequest || $[135] !== cancel || $[136] !== copyQuery || $[137] !== isFetching || $[138] !== params || $[139] !== replaceParams || $[140] !== request || $[141] !== resolved || $[142] !== setOptions || $[143] !== setParams || $[144] !== setQuery || $[145] !== t45 || $[146] !== t46 || $[147] !== tab || $[148] !== toggleAutoRefetch ? (t47 = /* @__PURE__ */ jsx(RequestPanel, {
13782
+ $[139] !== rootElement || $[140] !== t45 || $[141] !== t46 ? (t47 = {
13783
+ rootElement,
13784
+ onShortcut: t45,
13785
+ onPaste: t46
13786
+ }, $[139] = rootElement, $[140] = t45, $[141] = t46, $[142] = t47) : t47 = $[142], useVistaDocumentEvents(t47);
13787
+ let t48;
13788
+ $[143] === prettify ? t48 = $[144] : (t48 = () => void prettify(), $[143] = prettify, $[144] = t48);
13789
+ let t49;
13790
+ $[145] === run ? t49 = $[146] : (t49 = () => run({ type: "manual" }), $[145] = run, $[146] = t49);
13791
+ let t50;
13792
+ $[147] !== buildRequest || $[148] !== cancel || $[149] !== copyQuery || $[150] !== isFetching || $[151] !== params || $[152] !== replaceParams || $[153] !== request || $[154] !== resolved || $[155] !== setOptions || $[156] !== setParams || $[157] !== setQuery || $[158] !== t48 || $[159] !== t49 || $[160] !== tab || $[161] !== toggleAutoRefetch ? (t50 = /* @__PURE__ */ jsx(RequestPanel, {
13340
13793
  buildRequest,
13341
13794
  formatForEditor,
13342
13795
  isFetching,
@@ -13346,9 +13799,9 @@ function QueryTab(t0) {
13346
13799
  onOptionsChange: setOptions,
13347
13800
  onParamsChange: setParams,
13348
13801
  onParamsReplace: replaceParams,
13349
- onPrettify: t45,
13802
+ onPrettify: t48,
13350
13803
  onQueryChange: setQuery,
13351
- onRun: t46,
13804
+ onRun: t49,
13352
13805
  onToggleAutoRefetch: toggleAutoRefetch,
13353
13806
  params,
13354
13807
  paramsEditorRef,
@@ -13356,9 +13809,9 @@ function QueryTab(t0) {
13356
13809
  request,
13357
13810
  resolved,
13358
13811
  tab
13359
- }), $[134] = buildRequest, $[135] = cancel, $[136] = copyQuery, $[137] = isFetching, $[138] = params, $[139] = replaceParams, $[140] = request, $[141] = resolved, $[142] = setOptions, $[143] = setParams, $[144] = setQuery, $[145] = t45, $[146] = t46, $[147] = tab, $[148] = toggleAutoRefetch, $[149] = t47) : t47 = $[149];
13360
- let requestPanel = t47, t48;
13361
- $[150] !== lintFindings || $[151] !== refetchAfterMutations || $[152] !== request || $[153] !== resolved || $[154] !== revealRange || $[155] !== runnerRef || $[156] !== tab ? (t48 = /* @__PURE__ */ jsx(ResponsePanel, {
13812
+ }), $[147] = buildRequest, $[148] = cancel, $[149] = copyQuery, $[150] = isFetching, $[151] = params, $[152] = replaceParams, $[153] = request, $[154] = resolved, $[155] = setOptions, $[156] = setParams, $[157] = setQuery, $[158] = t48, $[159] = t49, $[160] = tab, $[161] = toggleAutoRefetch, $[162] = t50) : t50 = $[162];
13813
+ let requestPanel = t50, t51;
13814
+ $[163] !== lintFindings || $[164] !== refetchAfterMutations || $[165] !== request || $[166] !== resolved || $[167] !== revealRange || $[168] !== runnerRef || $[169] !== tab ? (t51 = /* @__PURE__ */ jsx(ResponsePanel, {
13362
13815
  lintFindings,
13363
13816
  onEditQuery: editQuery,
13364
13817
  onMutationsApplied: refetchAfterMutations,
@@ -13367,142 +13820,145 @@ function QueryTab(t0) {
13367
13820
  resolved,
13368
13821
  runnerRef,
13369
13822
  tab
13370
- }), $[150] = lintFindings, $[151] = refetchAfterMutations, $[152] = request, $[153] = resolved, $[154] = revealRange, $[155] = runnerRef, $[156] = tab, $[157] = t48) : t48 = $[157];
13371
- let responsePanel = t48, t49;
13372
- $[158] === tab.id ? t49 = $[159] : (t49 = getQueryTabId(tab.id), $[158] = tab.id, $[159] = t49);
13373
- let t50;
13374
- $[160] === t49 ? t50 = $[161] : (t50 = {
13375
- "aria-labelledby": t49,
13823
+ }), $[163] = lintFindings, $[164] = refetchAfterMutations, $[165] = request, $[166] = resolved, $[167] = revealRange, $[168] = runnerRef, $[169] = tab, $[170] = t51) : t51 = $[170];
13824
+ let responsePanel = t51, t52;
13825
+ $[171] === tab.id ? t52 = $[172] : (t52 = getQueryTabId(tab.id), $[171] = tab.id, $[172] = t52);
13826
+ let t53;
13827
+ $[173] === t52 ? t53 = $[174] : (t53 = {
13828
+ "aria-labelledby": t52,
13376
13829
  "data-testid": "vista-query-tab",
13377
13830
  id: QUERY_TAB_PANEL_ID,
13378
13831
  role: "tabpanel"
13379
- }, $[160] = t49, $[161] = t50);
13380
- let panelProps = t50;
13832
+ }, $[173] = t52, $[174] = t53);
13833
+ let panelProps = t53;
13381
13834
  if (layout === "mobile") {
13382
- let t51;
13383
- $[162] === t ? t51 = $[163] : (t51 = t("query.label"), $[162] = t, $[163] = t51);
13384
- let t52;
13385
- $[164] === Symbol.for("react.memo_cache_sentinel") ? (t52 = () => setMobilePane("request"), $[164] = t52) : t52 = $[164];
13386
- let t53 = mobilePane === "request", t54;
13387
- $[165] !== t51 || $[166] !== t53 ? (t54 = /* @__PURE__ */ jsx(Tab, {
13835
+ let t54;
13836
+ $[175] === t ? t54 = $[176] : (t54 = t("query.label"), $[175] = t, $[176] = t54);
13837
+ let t55;
13838
+ $[177] === Symbol.for("react.memo_cache_sentinel") ? (t55 = () => setMobilePane("request"), $[177] = t55) : t55 = $[177];
13839
+ let t56 = mobilePane === "request", t57;
13840
+ $[178] !== t54 || $[179] !== t56 ? (t57 = /* @__PURE__ */ jsx(Tab, {
13388
13841
  "aria-controls": "vista-mobile-request-pane",
13389
13842
  fontSize: 1,
13390
13843
  id: "vista-mobile-request-tab",
13391
- label: t51,
13392
- onClick: t52,
13844
+ label: t54,
13845
+ onClick: t55,
13393
13846
  padding: 2,
13394
- selected: t53
13395
- }), $[165] = t51, $[166] = t53, $[167] = t54) : t54 = $[167];
13396
- let t55;
13397
- $[168] === t ? t55 = $[169] : (t55 = t("result.label"), $[168] = t, $[169] = t55);
13398
- let t56;
13399
- $[170] === Symbol.for("react.memo_cache_sentinel") ? (t56 = () => setMobilePane("response"), $[170] = t56) : t56 = $[170];
13400
- let t57 = mobilePane === "response", t58;
13401
- $[171] !== t55 || $[172] !== t57 ? (t58 = /* @__PURE__ */ jsx(Tab, {
13847
+ selected: t56
13848
+ }), $[178] = t54, $[179] = t56, $[180] = t57) : t57 = $[180];
13849
+ let t58;
13850
+ $[181] === t ? t58 = $[182] : (t58 = t("result.label"), $[181] = t, $[182] = t58);
13851
+ let t59;
13852
+ $[183] === Symbol.for("react.memo_cache_sentinel") ? (t59 = () => setMobilePane("response"), $[183] = t59) : t59 = $[183];
13853
+ let t60 = mobilePane === "response", t61;
13854
+ $[184] !== t58 || $[185] !== t60 ? (t61 = /* @__PURE__ */ jsx(Tab, {
13402
13855
  "aria-controls": "vista-mobile-response-pane",
13403
13856
  fontSize: 1,
13404
13857
  id: "vista-mobile-response-tab",
13405
- label: t55,
13406
- onClick: t56,
13858
+ label: t58,
13859
+ onClick: t59,
13407
13860
  padding: 2,
13408
- selected: t57
13409
- }), $[171] = t55, $[172] = t57, $[173] = t58) : t58 = $[173];
13410
- let t59;
13411
- $[174] !== t54 || $[175] !== t58 ? (t59 = /* @__PURE__ */ jsx(Flex, {
13861
+ selected: t60
13862
+ }), $[184] = t58, $[185] = t60, $[186] = t61) : t61 = $[186];
13863
+ let t62;
13864
+ $[187] !== t57 || $[188] !== t61 ? (t62 = /* @__PURE__ */ jsx(Flex, {
13412
13865
  borderBottom: !0,
13413
13866
  flexShrink: 0,
13414
13867
  justifyContent: "center",
13415
13868
  paddingY: 1,
13416
13869
  children: /* @__PURE__ */ jsxs(TabList, {
13417
13870
  gap: 1,
13418
- children: [t54, t58]
13871
+ children: [t57, t61]
13419
13872
  })
13420
- }), $[174] = t54, $[175] = t58, $[176] = t59) : t59 = $[176];
13421
- let t60 = mobilePane !== "request" && "_1anxzyvq", t61;
13422
- $[177] === t60 ? t61 = $[178] : (t61 = cx(paneFill, t60), $[177] = t60, $[178] = t61);
13423
- let t62;
13424
- $[179] !== requestPanel || $[180] !== t61 ? (t62 = /* @__PURE__ */ jsx(Box, {
13873
+ }), $[187] = t57, $[188] = t61, $[189] = t62) : t62 = $[189];
13874
+ let t63 = mobilePane !== "request" && "cTWfhW_hiddenPane", t64;
13875
+ $[190] === t63 ? t64 = $[191] : (t64 = cx(_key12$1, t63), $[190] = t63, $[191] = t64);
13876
+ let t65;
13877
+ $[192] !== requestPanel || $[193] !== t64 ? (t65 = /* @__PURE__ */ jsx(Box, {
13425
13878
  "aria-labelledby": "vista-mobile-request-tab",
13426
- className: t61,
13879
+ className: t64,
13427
13880
  flexBasis: "0%",
13428
13881
  flexGrow: 1,
13429
13882
  id: "vista-mobile-request-pane",
13430
13883
  role: "tabpanel",
13431
13884
  children: requestPanel
13432
- }), $[179] = requestPanel, $[180] = t61, $[181] = t62) : t62 = $[181];
13433
- let t63 = mobilePane !== "response" && "_1anxzyvq", t64;
13434
- $[182] === t63 ? t64 = $[183] : (t64 = cx(paneFill, t63), $[182] = t63, $[183] = t64);
13435
- let t65;
13436
- $[184] !== responsePanel || $[185] !== t64 ? (t65 = /* @__PURE__ */ jsx(Box, {
13885
+ }), $[192] = requestPanel, $[193] = t64, $[194] = t65) : t65 = $[194];
13886
+ let t66 = mobilePane !== "response" && "cTWfhW_hiddenPane", t67;
13887
+ $[195] === t66 ? t67 = $[196] : (t67 = cx(_key12$1, t66), $[195] = t66, $[196] = t67);
13888
+ let t68;
13889
+ $[197] !== responsePanel || $[198] !== t67 ? (t68 = /* @__PURE__ */ jsx(Box, {
13437
13890
  "aria-labelledby": "vista-mobile-response-tab",
13438
- className: t64,
13891
+ className: t67,
13439
13892
  flexBasis: "0%",
13440
13893
  flexGrow: 1,
13441
13894
  id: "vista-mobile-response-pane",
13442
13895
  role: "tabpanel",
13443
13896
  children: responsePanel
13444
- }), $[184] = responsePanel, $[185] = t64, $[186] = t65) : t65 = $[186];
13445
- let t66;
13446
- return $[187] !== panelProps || $[188] !== t59 || $[189] !== t62 || $[190] !== t65 ? (t66 = /* @__PURE__ */ jsxs(Flex, {
13897
+ }), $[197] = responsePanel, $[198] = t67, $[199] = t68) : t68 = $[199];
13898
+ let t69;
13899
+ return $[200] !== panelProps || $[201] !== t62 || $[202] !== t65 || $[203] !== t68 ? (t69 = /* @__PURE__ */ jsxs(Flex, {
13447
13900
  ...panelProps,
13448
13901
  flexBasis: "0%",
13449
13902
  flexDirection: "column",
13450
13903
  flexGrow: 1,
13451
13904
  minHeight: "0",
13452
13905
  children: [
13453
- t59,
13454
13906
  t62,
13455
- t65
13907
+ t65,
13908
+ t68
13456
13909
  ]
13457
- }), $[187] = panelProps, $[188] = t59, $[189] = t62, $[190] = t65, $[191] = t66) : t66 = $[191], t66;
13910
+ }), $[200] = panelProps, $[201] = t62, $[202] = t65, $[203] = t68, $[204] = t69) : t69 = $[204], t69;
13458
13911
  }
13459
- let minSize = MIN_PANE_SIZE[layout], containerExtent = layout === "stacked" ? splitContainerSize?.height : splitContainerSize?.width, defaultSplitSize = Math.max(minSize, Math.floor((containerExtent || 0) * DEFAULT_REQUEST_SHARE[layout])), t51;
13460
- $[192] === t ? t51 = $[193] : (t51 = t("vista.split.request-response"), $[192] = t, $[193] = t51);
13461
- let t52, t53;
13462
- $[194] === layout ? (t52 = $[195], t53 = $[196]) : (t52 = (size) => setSplitSizes((sizes) => ({
13912
+ let minSize = MIN_PANE_SIZE[layout], containerExtent = layout === "stacked" ? splitContainerSize?.height : splitContainerSize?.width, defaultSplitSize = Math.max(minSize, Math.floor((containerExtent || 0) * DEFAULT_REQUEST_SHARE[layout])), t54;
13913
+ $[205] === t ? t54 = $[206] : (t54 = t("vista.split.request-response"), $[205] = t, $[206] = t54);
13914
+ let t55, t56;
13915
+ $[207] === layout ? (t55 = $[208], t56 = $[209]) : (t55 = (size) => setSplitSizes((sizes) => ({
13463
13916
  ...sizes,
13464
13917
  [layout]: size
13465
- })), t53 = () => setSplitSizes((sizes_0) => ({
13918
+ })), t56 = () => setSplitSizes((sizes_0) => ({
13466
13919
  ...sizes_0,
13467
13920
  [layout]: void 0
13468
- })), $[194] = layout, $[195] = t52, $[196] = t53);
13469
- let t54 = splitSizes[layout] ?? defaultSplitSize, t55 = layout === "stacked" ? "horizontal" : "vertical", t56;
13470
- $[197] === requestPanel ? t56 = $[198] : (t56 = /* @__PURE__ */ jsx(Box, {
13471
- className: paneFill,
13921
+ })), $[207] = layout, $[208] = t55, $[209] = t56);
13922
+ let t57 = splitSizes[layout] ?? defaultSplitSize, t58 = layout === "stacked" ? "horizontal" : "vertical", t59;
13923
+ $[210] === requestPanel ? t59 = $[211] : (t59 = /* @__PURE__ */ jsx(Box, {
13924
+ className: _key12$1,
13472
13925
  children: requestPanel
13473
- }), $[197] = requestPanel, $[198] = t56);
13474
- let t57;
13475
- $[199] === responsePanel ? t57 = $[200] : (t57 = /* @__PURE__ */ jsx(Box, {
13476
- className: paneFill,
13926
+ }), $[210] = requestPanel, $[211] = t59);
13927
+ let t60;
13928
+ $[212] === responsePanel ? t60 = $[213] : (t60 = /* @__PURE__ */ jsx(Box, {
13929
+ className: _key12$1,
13477
13930
  children: responsePanel
13478
- }), $[199] = responsePanel, $[200] = t57);
13479
- let t58;
13480
- $[201] !== layout || $[202] !== minSize || $[203] !== t51 || $[204] !== t52 || $[205] !== t53 || $[206] !== t54 || $[207] !== t55 || $[208] !== t56 || $[209] !== t57 ? (t58 = /* @__PURE__ */ jsxs(ResizableSplit, {
13481
- label: t51,
13931
+ }), $[212] = responsePanel, $[213] = t60);
13932
+ let t61;
13933
+ $[214] !== layout || $[215] !== minSize || $[216] !== t54 || $[217] !== t55 || $[218] !== t56 || $[219] !== t57 || $[220] !== t58 || $[221] !== t59 || $[222] !== t60 ? (t61 = /* @__PURE__ */ jsxs(ResizableSplit, {
13934
+ label: t54,
13482
13935
  minSecondarySize: minSize,
13483
13936
  minSize,
13484
- onChange: t52,
13485
- onReset: t53,
13486
- size: t54,
13487
- split: t55,
13937
+ onChange: t55,
13938
+ onReset: t56,
13939
+ size: t57,
13940
+ split: t58,
13488
13941
  testId: "vista-split",
13489
- children: [t56, t57]
13490
- }, layout), $[201] = layout, $[202] = minSize, $[203] = t51, $[204] = t52, $[205] = t53, $[206] = t54, $[207] = t55, $[208] = t56, $[209] = t57, $[210] = t58) : t58 = $[210];
13491
- let t59;
13492
- return $[211] !== panelProps || $[212] !== t58 ? (t59 = /* @__PURE__ */ jsx(Box, {
13942
+ children: [t59, t60]
13943
+ }, layout), $[214] = layout, $[215] = minSize, $[216] = t54, $[217] = t55, $[218] = t56, $[219] = t57, $[220] = t58, $[221] = t59, $[222] = t60, $[223] = t61) : t61 = $[223];
13944
+ let t62;
13945
+ return $[224] !== panelProps || $[225] !== t61 ? (t62 = /* @__PURE__ */ jsx(Box, {
13493
13946
  ...panelProps,
13494
- className: splitPaneContainer,
13947
+ className: _key42,
13495
13948
  ref: setSplitContainer,
13496
- children: t58
13497
- }), $[211] = panelProps, $[212] = t58, $[213] = t59) : t59 = $[213], t59;
13949
+ children: t61
13950
+ }), $[224] = panelProps, $[225] = t61, $[226] = t62) : t62 = $[226], t62;
13498
13951
  }
13499
- function _temp4() {}
13500
- function _temp3(resolve) {
13952
+ function _temp5() {}
13953
+ function _temp4(resolve) {
13501
13954
  return requestAnimationFrame(resolve);
13502
13955
  }
13503
- function _temp2$1(snapshot_2) {
13956
+ function _temp3(snapshot_2) {
13504
13957
  return selectOpenDrawer(snapshot_2) !== null;
13505
13958
  }
13959
+ function _temp2$1(param) {
13960
+ return param.name;
13961
+ }
13506
13962
  function _temp$1(snapshot_1) {
13507
13963
  return isPanelExpanded(snapshot_1, "params");
13508
13964
  }
@@ -13572,7 +14028,9 @@ function VistaDialogs() {
13572
14028
  * shared, and opens the request a URL names when it is not what the tool wrote there itself (a
13573
14029
  * link opened from elsewhere, a bookmark). The value is the query URL the Response panel shows,
13574
14030
  * read the way a pasted one is: a tab already showing the request is selected, otherwise one
13575
- * opens for it.
14031
+ * opens for it and runs the query right away, as a pasted URL does. A tab that already shows the
14032
+ * request is only selected (after a reload, the address names the active tab's own request), so
14033
+ * its last result stays as it was.
13576
14034
  */
13577
14035
  function VistaUrlState(t0) {
13578
14036
  let $ = c(21), { tab } = t0, { t } = useTranslation(visionLocaleNamespace), toast = useToast(), router = useRouter(), actorRef = useVistaActor(), datasets = useVistaSelector(selectDatasets), environment = useRequestEnvironment(), { request } = useQueryRequestBuilder(tab), activeUrl = request?.url ?? null, t1;
@@ -13587,7 +14045,8 @@ function VistaUrlState(t0) {
13587
14045
  id: existing.id
13588
14046
  }) : (actorRef.send({
13589
14047
  type: "tab.add",
13590
- tab: parsedQueryToTabInit(parsed)
14048
+ tab: parsedQueryToTabInit(parsed),
14049
+ fetch: "link"
13591
14050
  }), parsed.isKnownDataset || toast.push({
13592
14051
  closable: !0,
13593
14052
  status: "warning",
@@ -13787,7 +14246,7 @@ function VistaWebMcp(t0) {
13787
14246
  title,
13788
14247
  options: tab.options
13789
14248
  },
13790
- fetch: input.run !== !1
14249
+ fetch: input.run === !1 ? void 0 : "generated"
13791
14250
  }), text(`Opened the query in a new tab${input.run === !1 ? "" : " and ran it"}.`);
13792
14251
  }
13793
14252
  case "vision_check_query": {
@@ -13936,7 +14395,7 @@ function VistaGui(props) {
13936
14395
  }), $[23] = t11, $[24] = t9, $[25] = t12) : t12 = $[25];
13937
14396
  let t13;
13938
14397
  $[26] !== layout || $[27] !== t12 ? (t13 = /* @__PURE__ */ jsxs(Flex, {
13939
- className: root,
14398
+ className: "cTWfhW_root",
13940
14399
  "data-testid": "vista-root",
13941
14400
  "data-vista-layout": layout,
13942
14401
  height: "100%",
@@ -13986,4 +14445,4 @@ function VistaGui(props) {
13986
14445
  }
13987
14446
  export { VistaGui };
13988
14447
 
13989
- //# sourceMappingURL=VistaGui-DmXZyJ6k.js.map
14448
+ //# sourceMappingURL=VistaGui-D3NHSIsK.js.map