@grafana/scenes 6.18.2--canary.1144.15561582453.0 → 6.19.0--canary.1132.15579595251.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3957,20 +3957,20 @@ class AdHocFiltersVariableUrlSyncHandler {
3957
3957
  }
3958
3958
  getUrlState() {
3959
3959
  const filters = this._variable.state.filters;
3960
- const baseFilters = this._variable.state.baseFilters;
3960
+ const originFilters = this._variable.state.originFilters;
3961
3961
  let value = [];
3962
- if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {
3962
+ if (filters.length === 0 && (originFilters == null ? void 0 : originFilters.length) === 0) {
3963
3963
  return { [this.getKey()]: [""] };
3964
3964
  }
3965
3965
  if (filters.length) {
3966
3966
  value.push(
3967
- ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|"))
3967
+ ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeOriginFilterUrlDelimiters).join("|"))
3968
3968
  );
3969
3969
  }
3970
- if (baseFilters == null ? void 0 : baseFilters.length) {
3970
+ if (originFilters == null ? void 0 : originFilters.length) {
3971
3971
  value.push(
3972
- ...baseFilters == null ? void 0 : baseFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
3973
- (filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
3972
+ ...originFilters == null ? void 0 : originFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
3973
+ (filter) => toArray(filter).map(escapeOriginFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
3974
3974
  )
3975
3975
  );
3976
3976
  }
@@ -3984,31 +3984,35 @@ class AdHocFiltersVariableUrlSyncHandler {
3984
3984
  return;
3985
3985
  }
3986
3986
  const filters = deserializeUrlToFilters(urlValue);
3987
- const baseFilters = [...this._variable.state.baseFilters || []];
3988
- for (let i = 0; i < filters.length; i++) {
3989
- const foundBaseFilterIndex = baseFilters.findIndex((f) => f.key === filters[i].key);
3990
- if (foundBaseFilterIndex > -1) {
3991
- if (!filters[i].origin && baseFilters[foundBaseFilterIndex].origin === "dashboard") {
3992
- filters[i].origin = "dashboard";
3993
- filters[i].restorable = true;
3994
- }
3995
- if (isMatchAllFilter(filters[i])) {
3996
- filters[i].matchAllFilter = true;
3997
- }
3998
- baseFilters[foundBaseFilterIndex] = filters[i];
3999
- } else if (filters[i].origin === "dashboard") {
4000
- delete filters[i].origin;
4001
- delete filters[i].restorable;
4002
- } else if (foundBaseFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
4003
- baseFilters.push(filters[i]);
4004
- }
4005
- }
3987
+ const originFilters = updateOriginFilters([...this._variable.state.originFilters || []], filters);
4006
3988
  this._variable.setState({
4007
3989
  filters: filters.filter((f) => !f.origin),
4008
- baseFilters
3990
+ originFilters
4009
3991
  });
4010
3992
  }
4011
3993
  }
3994
+ function updateOriginFilters(prevOriginFilters, filters) {
3995
+ const updatedOriginFilters = [...prevOriginFilters];
3996
+ for (let i = 0; i < filters.length; i++) {
3997
+ const foundOriginFilterIndex = prevOriginFilters.findIndex((f) => f.key === filters[i].key);
3998
+ if (foundOriginFilterIndex > -1) {
3999
+ if (!filters[i].origin && prevOriginFilters[foundOriginFilterIndex].origin === "dashboard") {
4000
+ filters[i].origin = "dashboard";
4001
+ filters[i].restorable = true;
4002
+ }
4003
+ if (isMatchAllFilter(filters[i])) {
4004
+ filters[i].matchAllFilter = true;
4005
+ }
4006
+ updatedOriginFilters[foundOriginFilterIndex] = filters[i];
4007
+ } else if (filters[i].origin === "dashboard") {
4008
+ delete filters[i].origin;
4009
+ delete filters[i].restorable;
4010
+ } else if (foundOriginFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
4011
+ updatedOriginFilters.push(filters[i]);
4012
+ }
4013
+ }
4014
+ return updatedOriginFilters;
4015
+ }
4012
4016
  function deserializeUrlToFilters(value) {
4013
4017
  if (Array.isArray(value)) {
4014
4018
  const values = value;
@@ -5336,7 +5340,7 @@ const AdHocFiltersAlwaysWipCombobox = React.forwardRef(function AdHocFiltersAlwa
5336
5340
  });
5337
5341
 
5338
5342
  const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRenderer2({ model }) {
5339
- const { baseFilters, filters, readOnly } = model.useState();
5343
+ const { originFilters, filters, readOnly } = model.useState();
5340
5344
  const styles = ui.useStyles2(getStyles$a);
5341
5345
  const focusOnWipInputRef = React.useRef();
5342
5346
  return /* @__PURE__ */ React__default.default.createElement(
@@ -5349,7 +5353,7 @@ const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRen
5349
5353
  }
5350
5354
  },
5351
5355
  /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "filter", className: styles.filterIcon, size: "lg" }),
5352
- baseFilters == null ? void 0 : baseFilters.map(
5356
+ originFilters == null ? void 0 : originFilters.map(
5353
5357
  (filter, index) => filter.origin ? /* @__PURE__ */ React__default.default.createElement(
5354
5358
  AdHocFilterPill,
5355
5359
  {
@@ -5513,17 +5517,14 @@ const OPERATORS = [
5513
5517
  ];
5514
5518
  class AdHocFiltersVariable extends SceneObjectBase {
5515
5519
  constructor(state) {
5516
- var _a, _b, _c, _d, _e, _f;
5520
+ var _a, _b, _c, _d, _e;
5517
5521
  super({
5518
5522
  type: "adhoc",
5519
5523
  name: (_a = state.name) != null ? _a : "Filters",
5520
5524
  filters: [],
5521
5525
  datasource: null,
5522
5526
  applyMode: "auto",
5523
- filterExpression: (_e = state.filterExpression) != null ? _e : renderExpression(state.expressionBuilder, [
5524
- ...(_c = (_b = state.baseFilters) == null ? void 0 : _b.filter((filter) => filter.origin)) != null ? _c : [],
5525
- ...(_d = state.filters) != null ? _d : []
5526
- ]),
5527
+ filterExpression: (_d = state.filterExpression) != null ? _d : renderExpression(state.expressionBuilder, [...(_b = state.originFilters) != null ? _b : [], ...(_c = state.filters) != null ? _c : []]),
5527
5528
  ...state
5528
5529
  });
5529
5530
  this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
@@ -5532,6 +5533,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
5532
5533
  // are set on construct and used to restore a baseFilter with an origin
5533
5534
  // to its original value if edited at some point
5534
5535
  this._originalValues = /* @__PURE__ */ new Map();
5536
+ this._prevScopes = [];
5535
5537
  /** Needed for scopes dependency */
5536
5538
  this._variableDependency = new VariableDependencyConfig(this, {
5537
5539
  dependsOnScopes: true,
@@ -5539,44 +5541,33 @@ class AdHocFiltersVariable extends SceneObjectBase {
5539
5541
  });
5540
5542
  this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
5541
5543
  this._activationHandler = () => {
5542
- this._updateScopesFilters();
5543
5544
  return () => {
5544
- var _a, _b;
5545
- if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
5546
- this.setState({
5547
- baseFilters: [...this.state.baseFilters.filter((filter) => filter.origin !== "scope")]
5548
- });
5549
- (_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
5550
- if (filter.origin === "dashboard" && filter.restorable) {
5551
- this.restoreOriginalFilter(filter);
5552
- }
5553
- });
5554
- }
5545
+ var _a;
5546
+ (_a = this.state.originFilters) == null ? void 0 : _a.forEach((filter) => {
5547
+ if (filter.restorable) {
5548
+ this.restoreOriginalFilter(filter);
5549
+ }
5550
+ });
5555
5551
  };
5556
5552
  };
5557
5553
  if (this.state.applyMode === "auto") {
5558
5554
  patchGetAdhocFilters(this);
5559
5555
  }
5560
- (_f = this.state.baseFilters) == null ? void 0 : _f.forEach((baseFilter) => {
5556
+ (_e = this.state.originFilters) == null ? void 0 : _e.forEach((filter) => {
5561
5557
  var _a2;
5562
- if (baseFilter.origin === "dashboard") {
5563
- this._originalValues.set(baseFilter.key, {
5564
- operator: baseFilter.operator,
5565
- value: (_a2 = baseFilter.values) != null ? _a2 : [baseFilter.value]
5566
- });
5567
- }
5558
+ this._originalValues.set(filter.key, {
5559
+ operator: filter.operator,
5560
+ value: (_a2 = filter.values) != null ? _a2 : [filter.value]
5561
+ });
5568
5562
  });
5569
5563
  this.addActivationHandler(this._activationHandler);
5570
5564
  }
5571
5565
  _updateScopesFilters() {
5572
5566
  var _a, _b;
5573
5567
  const scopes = sceneGraph.getScopes(this);
5574
- if (!scopes) {
5575
- return;
5576
- }
5577
- if (!scopes.length) {
5568
+ if (!scopes || !scopes.length) {
5578
5569
  this.setState({
5579
- baseFilters: (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
5570
+ originFilters: (_a = this.state.originFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
5580
5571
  });
5581
5572
  return;
5582
5573
  }
@@ -5594,13 +5585,18 @@ class AdHocFiltersVariable extends SceneObjectBase {
5594
5585
  operator: scopeFilter.operator
5595
5586
  });
5596
5587
  });
5597
- (_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
5588
+ (_b = this.state.originFilters) == null ? void 0 : _b.forEach((filter) => {
5598
5589
  if (filter.origin === "scope") {
5599
5590
  scopeInjectedFilters.push(filter);
5600
5591
  } else {
5601
5592
  remainingFilters.push(filter);
5602
5593
  }
5603
5594
  });
5595
+ if (this._prevScopes.length) {
5596
+ this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
5597
+ this._prevScopes = scopes;
5598
+ return;
5599
+ }
5604
5600
  const editedScopeFilters = scopeInjectedFilters.filter((filter) => filter.restorable);
5605
5601
  const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
5606
5602
  const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
@@ -5608,18 +5604,16 @@ class AdHocFiltersVariable extends SceneObjectBase {
5608
5604
  ...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
5609
5605
  ...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
5610
5606
  ];
5611
- this.setState({ baseFilters: [...finalFilters, ...remainingFilters] });
5607
+ this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
5608
+ this._prevScopes = scopes;
5612
5609
  }
5613
5610
  setState(update) {
5614
- var _a, _b, _c;
5611
+ var _a, _b;
5615
5612
  let filterExpressionChanged = false;
5616
- if ((update.filters && update.filters !== this.state.filters || update.baseFilters && update.baseFilters !== this.state.baseFilters) && !update.filterExpression) {
5613
+ if ((update.filters && update.filters !== this.state.filters || update.originFilters && update.originFilters !== this.state.originFilters) && !update.filterExpression) {
5617
5614
  const filters = (_a = update.filters) != null ? _a : this.state.filters;
5618
- const baseFilters = (_b = update.baseFilters) != null ? _b : this.state.baseFilters;
5619
- update.filterExpression = renderExpression(this.state.expressionBuilder, [
5620
- ...(_c = baseFilters == null ? void 0 : baseFilters.filter((filter) => filter.origin)) != null ? _c : [],
5621
- ...filters != null ? filters : []
5622
- ]);
5615
+ const originFilters = (_b = update.originFilters) != null ? _b : this.state.originFilters;
5616
+ update.filterExpression = renderExpression(this.state.expressionBuilder, [...originFilters != null ? originFilters : [], ...filters]);
5623
5617
  filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
5624
5618
  }
5625
5619
  super.setState(update);
@@ -5633,12 +5627,12 @@ class AdHocFiltersVariable extends SceneObjectBase {
5633
5627
  * allowing consumers to update the filters without triggering dependent data providers.
5634
5628
  */
5635
5629
  updateFilters(filters, options) {
5636
- var _a, _b;
5630
+ var _a;
5637
5631
  let filterExpressionChanged = false;
5638
5632
  let filterExpression = void 0;
5639
5633
  if (filters && filters !== this.state.filters) {
5640
5634
  filterExpression = renderExpression(this.state.expressionBuilder, [
5641
- ...(_b = (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin)) != null ? _b : [],
5635
+ ...(_a = this.state.originFilters) != null ? _a : [],
5642
5636
  ...filters
5643
5637
  ]);
5644
5638
  filterExpressionChanged = filterExpression !== this.state.filterExpression;
@@ -5658,32 +5652,34 @@ class AdHocFiltersVariable extends SceneObjectBase {
5658
5652
  };
5659
5653
  if (filter.restorable) {
5660
5654
  const originalFilter = this._originalValues.get(filter.key);
5655
+ if (!originalFilter) {
5656
+ return;
5657
+ }
5661
5658
  original.value = originalFilter == null ? void 0 : originalFilter.value[0];
5662
5659
  original.values = originalFilter == null ? void 0 : originalFilter.value;
5663
5660
  original.valueLabels = originalFilter == null ? void 0 : originalFilter.value;
5664
5661
  original.operator = originalFilter == null ? void 0 : originalFilter.operator;
5662
+ this._updateFilter(filter, original);
5665
5663
  }
5666
- this._updateFilter(filter, original);
5667
5664
  }
5668
5665
  getValue() {
5669
5666
  return this.state.filterExpression;
5670
5667
  }
5671
5668
  _updateFilter(filter, update) {
5672
5669
  var _a;
5673
- const { baseFilters, filters, _wip } = this.state;
5670
+ const { originFilters, filters, _wip } = this.state;
5674
5671
  if (filter.origin) {
5675
5672
  const originalValues = this._originalValues.get(filter.key);
5676
5673
  const updateValues = update.values || (update.value ? [update.value] : void 0);
5677
- const isRestorableOverride = update.hasOwnProperty("restorable");
5678
- if (!isRestorableOverride && (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator))) {
5674
+ if (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator)) {
5679
5675
  update.restorable = true;
5680
5676
  } else if (updateValues && lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value)) {
5681
5677
  update.restorable = false;
5682
5678
  }
5683
- const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
5679
+ const updatedFilters2 = (_a = originFilters == null ? void 0 : originFilters.map((f) => {
5684
5680
  return f === filter ? { ...f, ...update } : f;
5685
5681
  })) != null ? _a : [];
5686
- this.setState({ baseFilters: updatedBaseFilters });
5682
+ this.setState({ originFilters: updatedFilters2 });
5687
5683
  return;
5688
5684
  }
5689
5685
  if (filter === _wip) {
@@ -5746,13 +5742,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
5746
5742
  return [...acc, f];
5747
5743
  }, [])
5748
5744
  });
5749
- } else if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
5750
- let filterToForceIndex = this.state.baseFilters.length - 1;
5745
+ } else if ((_a = this.state.originFilters) == null ? void 0 : _a.length) {
5746
+ let filterToForceIndex = this.state.originFilters.length - 1;
5751
5747
  if (filter !== this.state._wip) {
5752
5748
  filterToForceIndex = -1;
5753
5749
  }
5754
5750
  this.setState({
5755
- baseFilters: this.state.baseFilters.reduce((acc, f, index) => {
5751
+ originFilters: this.state.originFilters.reduce((acc, f, index) => {
5756
5752
  if (index === filterToForceIndex && !f.readOnly) {
5757
5753
  return [
5758
5754
  ...acc,
@@ -5822,8 +5818,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
5822
5818
  if (!ds || !ds.getTagValues) {
5823
5819
  return [];
5824
5820
  }
5825
- const filteredBaseFilters = (_d = (_c = this.state.baseFilters) == null ? void 0 : _c.filter((f) => f.origin && f.key !== filter.key)) != null ? _d : [];
5826
- const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(filteredBaseFilters);
5821
+ const originFilters = (_d = (_c = this.state.originFilters) == null ? void 0 : _c.filter((f) => f.key !== filter.key)) != null ? _d : [];
5822
+ const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(originFilters);
5827
5823
  const timeRange = sceneGraph.getTimeRange(this).state.value;
5828
5824
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
5829
5825
  let scopes = sceneGraph.getScopes(this);
@@ -6307,12 +6303,10 @@ class SceneQueryRunner extends SceneObjectBase {
6307
6303
  ...getEnrichedDataRequest(this)
6308
6304
  };
6309
6305
  if (this._adhocFiltersVar) {
6310
- request.filters = [];
6311
- if ((_a = this._adhocFiltersVar.state.baseFilters) == null ? void 0 : _a.length) {
6312
- const injectedBaseFilters = this._adhocFiltersVar.state.baseFilters.filter((filter) => filter.origin);
6313
- request.filters = request.filters.concat(injectedBaseFilters);
6314
- }
6315
- request.filters = request.filters.concat(this._adhocFiltersVar.state.filters.filter(isFilterComplete));
6306
+ request.filters = [
6307
+ ...(_a = this._adhocFiltersVar.state.originFilters) != null ? _a : [],
6308
+ ...this._adhocFiltersVar.state.filters
6309
+ ].filter(isFilterComplete);
6316
6310
  }
6317
6311
  if (this._groupByVar) {
6318
6312
  request.groupByKeys = this._groupByVar.state.value;
@@ -6549,7 +6543,7 @@ function escapeUrlHashDelimiters(value) {
6549
6543
  }
6550
6544
  return /#/g[Symbol.replace](value, "__gfh__");
6551
6545
  }
6552
- function escapeInjectedFilterUrlDelimiters(value) {
6546
+ function escapeOriginFilterUrlDelimiters(value) {
6553
6547
  return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));
6554
6548
  }
6555
6549
  function escapeURLDelimiters(value) {
@@ -9052,7 +9046,6 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
9052
9046
  refId: "Anno"
9053
9047
  }
9054
9048
  ],
9055
- scopes: sceneGraph.getScopes(layer),
9056
9049
  ...getEnrichedDataRequest(layer)
9057
9050
  };
9058
9051
  const runRequest = runtime.getRunRequest();