@grafana/scenes 6.19.0 → 6.20.1

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
@@ -2986,7 +2986,6 @@ class GroupByVariableUrlSyncHandler {
2986
2986
  };
2987
2987
  }
2988
2988
  updateFromUrl(values) {
2989
- var _a, _b, _c, _d;
2990
2989
  let urlValue = values[this.getKey()];
2991
2990
  let restorableValue = values[this.getRestorableKey()];
2992
2991
  if (urlValue != null) {
@@ -2994,24 +2993,11 @@ class GroupByVariableUrlSyncHandler {
2994
2993
  this._sceneObject.skipNextValidation = true;
2995
2994
  }
2996
2995
  const { values: values2, texts } = fromUrlValues(urlValue);
2997
- if (restorableValue === "false") {
2998
- if (this._sceneObject.state.defaultValue) {
2999
- this._sceneObject.changeValueTo(
3000
- (_a = this._sceneObject.state.defaultValue) == null ? void 0 : _a.value,
3001
- (_b = this._sceneObject.state.defaultValue) == null ? void 0 : _b.text,
3002
- false
3003
- );
3004
- return;
3005
- }
3006
- this._sceneObject.changeValueTo([], []);
2996
+ if (this._sceneObject.state.defaultValue && (restorableValue === "false" || restorableValue === void 0)) {
3007
2997
  return;
3008
2998
  }
3009
- if (restorableValue === void 0 && this._sceneObject.state.defaultValue) {
3010
- this._sceneObject.changeValueTo(
3011
- (_c = this._sceneObject.state.defaultValue) == null ? void 0 : _c.value,
3012
- (_d = this._sceneObject.state.defaultValue) == null ? void 0 : _d.text,
3013
- false
3014
- );
2999
+ if (restorableValue === "false") {
3000
+ this._sceneObject.changeValueTo([], [], false);
3015
3001
  return;
3016
3002
  }
3017
3003
  this._sceneObject.changeValueTo(values2, texts);
@@ -3226,17 +3212,8 @@ class GroupByVariable extends MultiValueVariable {
3226
3212
  this._urlSync = new GroupByVariableUrlSyncHandler(this);
3227
3213
  this._activationHandler = () => {
3228
3214
  if (this.state.defaultValue) {
3229
- const partial = {};
3230
- if (lodash.isArray(this.state.value) && !this.state.value.length || !this.state.value) {
3231
- partial.value = this.state.defaultValue.value;
3232
- partial.text = this.state.defaultValue.text;
3233
- partial.restorable = false;
3234
- }
3235
- if (this.state.defaultValue && this.checkIfRestorable(this.state.value)) {
3236
- partial.restorable = true;
3237
- }
3238
- if (Object.keys(partial).length) {
3239
- this.setState(partial);
3215
+ if (this.checkIfRestorable(this.state.value)) {
3216
+ this.setState({ restorable: true });
3240
3217
  }
3241
3218
  }
3242
3219
  return () => {
@@ -3283,6 +3260,9 @@ class GroupByVariable extends MultiValueVariable {
3283
3260
  }
3284
3261
  return keys;
3285
3262
  };
3263
+ if (this.state.defaultValue) {
3264
+ this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);
3265
+ }
3286
3266
  if (this.state.applyMode === "auto") {
3287
3267
  this.addActivationHandler(() => {
3288
3268
  allActiveGroupByVariables.add(this);
@@ -3957,20 +3937,20 @@ class AdHocFiltersVariableUrlSyncHandler {
3957
3937
  }
3958
3938
  getUrlState() {
3959
3939
  const filters = this._variable.state.filters;
3960
- const baseFilters = this._variable.state.baseFilters;
3940
+ const originFilters = this._variable.state.originFilters;
3961
3941
  let value = [];
3962
- if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {
3942
+ if (filters.length === 0 && (originFilters == null ? void 0 : originFilters.length) === 0) {
3963
3943
  return { [this.getKey()]: [""] };
3964
3944
  }
3965
3945
  if (filters.length) {
3966
3946
  value.push(
3967
- ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|"))
3947
+ ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeOriginFilterUrlDelimiters).join("|"))
3968
3948
  );
3969
3949
  }
3970
- if (baseFilters == null ? void 0 : baseFilters.length) {
3950
+ if (originFilters == null ? void 0 : originFilters.length) {
3971
3951
  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`)
3952
+ ...originFilters == null ? void 0 : originFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
3953
+ (filter) => toArray(filter).map(escapeOriginFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
3974
3954
  )
3975
3955
  );
3976
3956
  }
@@ -3984,31 +3964,35 @@ class AdHocFiltersVariableUrlSyncHandler {
3984
3964
  return;
3985
3965
  }
3986
3966
  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
- }
3967
+ const originFilters = updateOriginFilters([...this._variable.state.originFilters || []], filters);
4006
3968
  this._variable.setState({
4007
3969
  filters: filters.filter((f) => !f.origin),
4008
- baseFilters
3970
+ originFilters
4009
3971
  });
4010
3972
  }
4011
3973
  }
3974
+ function updateOriginFilters(prevOriginFilters, filters) {
3975
+ const updatedOriginFilters = [...prevOriginFilters];
3976
+ for (let i = 0; i < filters.length; i++) {
3977
+ const foundOriginFilterIndex = prevOriginFilters.findIndex((f) => f.key === filters[i].key);
3978
+ if (foundOriginFilterIndex > -1) {
3979
+ if (!filters[i].origin && prevOriginFilters[foundOriginFilterIndex].origin === "dashboard") {
3980
+ filters[i].origin = "dashboard";
3981
+ filters[i].restorable = true;
3982
+ }
3983
+ if (isMatchAllFilter(filters[i])) {
3984
+ filters[i].matchAllFilter = true;
3985
+ }
3986
+ updatedOriginFilters[foundOriginFilterIndex] = filters[i];
3987
+ } else if (filters[i].origin === "dashboard") {
3988
+ delete filters[i].origin;
3989
+ delete filters[i].restorable;
3990
+ } else if (foundOriginFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
3991
+ updatedOriginFilters.push(filters[i]);
3992
+ }
3993
+ }
3994
+ return updatedOriginFilters;
3995
+ }
4012
3996
  function deserializeUrlToFilters(value) {
4013
3997
  if (Array.isArray(value)) {
4014
3998
  const values = value;
@@ -5336,7 +5320,7 @@ const AdHocFiltersAlwaysWipCombobox = React.forwardRef(function AdHocFiltersAlwa
5336
5320
  });
5337
5321
 
5338
5322
  const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRenderer2({ model }) {
5339
- const { baseFilters, filters, readOnly } = model.useState();
5323
+ const { originFilters, filters, readOnly } = model.useState();
5340
5324
  const styles = ui.useStyles2(getStyles$a);
5341
5325
  const focusOnWipInputRef = React.useRef();
5342
5326
  return /* @__PURE__ */ React__default.default.createElement(
@@ -5349,7 +5333,7 @@ const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRen
5349
5333
  }
5350
5334
  },
5351
5335
  /* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "filter", className: styles.filterIcon, size: "lg" }),
5352
- baseFilters == null ? void 0 : baseFilters.map(
5336
+ originFilters == null ? void 0 : originFilters.map(
5353
5337
  (filter, index) => filter.origin ? /* @__PURE__ */ React__default.default.createElement(
5354
5338
  AdHocFilterPill,
5355
5339
  {
@@ -5513,17 +5497,14 @@ const OPERATORS = [
5513
5497
  ];
5514
5498
  class AdHocFiltersVariable extends SceneObjectBase {
5515
5499
  constructor(state) {
5516
- var _a, _b, _c, _d, _e, _f;
5500
+ var _a, _b, _c, _d, _e;
5517
5501
  super({
5518
5502
  type: "adhoc",
5519
5503
  name: (_a = state.name) != null ? _a : "Filters",
5520
5504
  filters: [],
5521
5505
  datasource: null,
5522
5506
  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
- ]),
5507
+ filterExpression: (_d = state.filterExpression) != null ? _d : renderExpression(state.expressionBuilder, [...(_b = state.originFilters) != null ? _b : [], ...(_c = state.filters) != null ? _c : []]),
5527
5508
  ...state
5528
5509
  });
5529
5510
  this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
@@ -5532,6 +5513,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
5532
5513
  // are set on construct and used to restore a baseFilter with an origin
5533
5514
  // to its original value if edited at some point
5534
5515
  this._originalValues = /* @__PURE__ */ new Map();
5516
+ this._prevScopes = [];
5535
5517
  /** Needed for scopes dependency */
5536
5518
  this._variableDependency = new VariableDependencyConfig(this, {
5537
5519
  dependsOnScopes: true,
@@ -5539,44 +5521,33 @@ class AdHocFiltersVariable extends SceneObjectBase {
5539
5521
  });
5540
5522
  this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
5541
5523
  this._activationHandler = () => {
5542
- this._updateScopesFilters();
5543
5524
  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
- }
5525
+ var _a;
5526
+ (_a = this.state.originFilters) == null ? void 0 : _a.forEach((filter) => {
5527
+ if (filter.restorable) {
5528
+ this.restoreOriginalFilter(filter);
5529
+ }
5530
+ });
5555
5531
  };
5556
5532
  };
5557
5533
  if (this.state.applyMode === "auto") {
5558
5534
  patchGetAdhocFilters(this);
5559
5535
  }
5560
- (_f = this.state.baseFilters) == null ? void 0 : _f.forEach((baseFilter) => {
5536
+ (_e = this.state.originFilters) == null ? void 0 : _e.forEach((filter) => {
5561
5537
  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
- }
5538
+ this._originalValues.set(filter.key, {
5539
+ operator: filter.operator,
5540
+ value: (_a2 = filter.values) != null ? _a2 : [filter.value]
5541
+ });
5568
5542
  });
5569
5543
  this.addActivationHandler(this._activationHandler);
5570
5544
  }
5571
5545
  _updateScopesFilters() {
5572
5546
  var _a, _b;
5573
5547
  const scopes = sceneGraph.getScopes(this);
5574
- if (!scopes) {
5575
- return;
5576
- }
5577
- if (!scopes.length) {
5548
+ if (!scopes || !scopes.length) {
5578
5549
  this.setState({
5579
- baseFilters: (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
5550
+ originFilters: (_a = this.state.originFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
5580
5551
  });
5581
5552
  return;
5582
5553
  }
@@ -5594,13 +5565,18 @@ class AdHocFiltersVariable extends SceneObjectBase {
5594
5565
  operator: scopeFilter.operator
5595
5566
  });
5596
5567
  });
5597
- (_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
5568
+ (_b = this.state.originFilters) == null ? void 0 : _b.forEach((filter) => {
5598
5569
  if (filter.origin === "scope") {
5599
5570
  scopeInjectedFilters.push(filter);
5600
5571
  } else {
5601
5572
  remainingFilters.push(filter);
5602
5573
  }
5603
5574
  });
5575
+ if (this._prevScopes.length) {
5576
+ this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
5577
+ this._prevScopes = scopes;
5578
+ return;
5579
+ }
5604
5580
  const editedScopeFilters = scopeInjectedFilters.filter((filter) => filter.restorable);
5605
5581
  const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
5606
5582
  const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
@@ -5608,18 +5584,16 @@ class AdHocFiltersVariable extends SceneObjectBase {
5608
5584
  ...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
5609
5585
  ...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
5610
5586
  ];
5611
- this.setState({ baseFilters: [...finalFilters, ...remainingFilters] });
5587
+ this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
5588
+ this._prevScopes = scopes;
5612
5589
  }
5613
5590
  setState(update) {
5614
- var _a, _b, _c;
5591
+ var _a, _b;
5615
5592
  let filterExpressionChanged = false;
5616
- if ((update.filters && update.filters !== this.state.filters || update.baseFilters && update.baseFilters !== this.state.baseFilters) && !update.filterExpression) {
5593
+ if ((update.filters && update.filters !== this.state.filters || update.originFilters && update.originFilters !== this.state.originFilters) && !update.filterExpression) {
5617
5594
  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
- ]);
5595
+ const originFilters = (_b = update.originFilters) != null ? _b : this.state.originFilters;
5596
+ update.filterExpression = renderExpression(this.state.expressionBuilder, [...originFilters != null ? originFilters : [], ...filters]);
5623
5597
  filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
5624
5598
  }
5625
5599
  super.setState(update);
@@ -5633,12 +5607,12 @@ class AdHocFiltersVariable extends SceneObjectBase {
5633
5607
  * allowing consumers to update the filters without triggering dependent data providers.
5634
5608
  */
5635
5609
  updateFilters(filters, options) {
5636
- var _a, _b;
5610
+ var _a;
5637
5611
  let filterExpressionChanged = false;
5638
5612
  let filterExpression = void 0;
5639
5613
  if (filters && filters !== this.state.filters) {
5640
5614
  filterExpression = renderExpression(this.state.expressionBuilder, [
5641
- ...(_b = (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin)) != null ? _b : [],
5615
+ ...(_a = this.state.originFilters) != null ? _a : [],
5642
5616
  ...filters
5643
5617
  ]);
5644
5618
  filterExpressionChanged = filterExpression !== this.state.filterExpression;
@@ -5658,32 +5632,34 @@ class AdHocFiltersVariable extends SceneObjectBase {
5658
5632
  };
5659
5633
  if (filter.restorable) {
5660
5634
  const originalFilter = this._originalValues.get(filter.key);
5635
+ if (!originalFilter) {
5636
+ return;
5637
+ }
5661
5638
  original.value = originalFilter == null ? void 0 : originalFilter.value[0];
5662
5639
  original.values = originalFilter == null ? void 0 : originalFilter.value;
5663
5640
  original.valueLabels = originalFilter == null ? void 0 : originalFilter.value;
5664
5641
  original.operator = originalFilter == null ? void 0 : originalFilter.operator;
5642
+ this._updateFilter(filter, original);
5665
5643
  }
5666
- this._updateFilter(filter, original);
5667
5644
  }
5668
5645
  getValue() {
5669
5646
  return this.state.filterExpression;
5670
5647
  }
5671
5648
  _updateFilter(filter, update) {
5672
5649
  var _a;
5673
- const { baseFilters, filters, _wip } = this.state;
5650
+ const { originFilters, filters, _wip } = this.state;
5674
5651
  if (filter.origin) {
5675
5652
  const originalValues = this._originalValues.get(filter.key);
5676
5653
  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))) {
5654
+ if (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator)) {
5679
5655
  update.restorable = true;
5680
5656
  } else if (updateValues && lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value)) {
5681
5657
  update.restorable = false;
5682
5658
  }
5683
- const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
5659
+ const updatedFilters2 = (_a = originFilters == null ? void 0 : originFilters.map((f) => {
5684
5660
  return f === filter ? { ...f, ...update } : f;
5685
5661
  })) != null ? _a : [];
5686
- this.setState({ baseFilters: updatedBaseFilters });
5662
+ this.setState({ originFilters: updatedFilters2 });
5687
5663
  return;
5688
5664
  }
5689
5665
  if (filter === _wip) {
@@ -5746,13 +5722,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
5746
5722
  return [...acc, f];
5747
5723
  }, [])
5748
5724
  });
5749
- } else if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
5750
- let filterToForceIndex = this.state.baseFilters.length - 1;
5725
+ } else if ((_a = this.state.originFilters) == null ? void 0 : _a.length) {
5726
+ let filterToForceIndex = this.state.originFilters.length - 1;
5751
5727
  if (filter !== this.state._wip) {
5752
5728
  filterToForceIndex = -1;
5753
5729
  }
5754
5730
  this.setState({
5755
- baseFilters: this.state.baseFilters.reduce((acc, f, index) => {
5731
+ originFilters: this.state.originFilters.reduce((acc, f, index) => {
5756
5732
  if (index === filterToForceIndex && !f.readOnly) {
5757
5733
  return [
5758
5734
  ...acc,
@@ -5822,8 +5798,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
5822
5798
  if (!ds || !ds.getTagValues) {
5823
5799
  return [];
5824
5800
  }
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);
5801
+ const originFilters = (_d = (_c = this.state.originFilters) == null ? void 0 : _c.filter((f) => f.key !== filter.key)) != null ? _d : [];
5802
+ const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(originFilters);
5827
5803
  const timeRange = sceneGraph.getTimeRange(this).state.value;
5828
5804
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
5829
5805
  let scopes = sceneGraph.getScopes(this);
@@ -6307,12 +6283,10 @@ class SceneQueryRunner extends SceneObjectBase {
6307
6283
  ...getEnrichedDataRequest(this)
6308
6284
  };
6309
6285
  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));
6286
+ request.filters = [
6287
+ ...(_a = this._adhocFiltersVar.state.originFilters) != null ? _a : [],
6288
+ ...this._adhocFiltersVar.state.filters
6289
+ ].filter(isFilterComplete);
6316
6290
  }
6317
6291
  if (this._groupByVar) {
6318
6292
  request.groupByKeys = this._groupByVar.state.value;
@@ -6549,7 +6523,7 @@ function escapeUrlHashDelimiters(value) {
6549
6523
  }
6550
6524
  return /#/g[Symbol.replace](value, "__gfh__");
6551
6525
  }
6552
- function escapeInjectedFilterUrlDelimiters(value) {
6526
+ function escapeOriginFilterUrlDelimiters(value) {
6553
6527
  return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));
6554
6528
  }
6555
6529
  function escapeURLDelimiters(value) {
@@ -6651,11 +6625,9 @@ class VariableDependencyConfig {
6651
6625
  * This is called whenever any set of variables have new values. It is up to this implementation to check if it's relevant given the current dependencies.
6652
6626
  */
6653
6627
  variableUpdateCompleted(variable, hasChanged) {
6628
+ var _a, _b, _c, _d;
6654
6629
  const deps = this.getNames();
6655
- let dependencyChanged = false;
6656
- if ((deps.has(variable.state.name) || deps.has(data.DataLinkBuiltInVars.includeVars)) && hasChanged) {
6657
- dependencyChanged = true;
6658
- }
6630
+ const dependencyChanged = (deps.has(variable.state.name) || deps.has(data.DataLinkBuiltInVars.includeVars)) && hasChanged;
6659
6631
  writeSceneLog(
6660
6632
  "VariableDependencyConfig",
6661
6633
  "variableUpdateCompleted",
@@ -6663,47 +6635,29 @@ class VariableDependencyConfig {
6663
6635
  dependencyChanged,
6664
6636
  this._isWaitingForVariables
6665
6637
  );
6666
- if (this._options.onAnyVariableChanged) {
6667
- this._options.onAnyVariableChanged(variable);
6668
- }
6638
+ (_b = (_a = this._options).onAnyVariableChanged) == null ? void 0 : _b.call(_a, variable);
6669
6639
  if (this._options.onVariableUpdateCompleted && (this._isWaitingForVariables || dependencyChanged)) {
6670
6640
  this._options.onVariableUpdateCompleted();
6671
6641
  }
6672
6642
  if (dependencyChanged) {
6673
- if (this._options.onReferencedVariableValueChanged) {
6674
- this._options.onReferencedVariableValueChanged(variable);
6675
- }
6643
+ (_d = (_c = this._options).onReferencedVariableValueChanged) == null ? void 0 : _d.call(_c, variable);
6676
6644
  if (!this._options.onReferencedVariableValueChanged && !this._options.onVariableUpdateCompleted) {
6677
6645
  this._sceneObject.forceRender();
6678
6646
  }
6679
6647
  }
6680
6648
  }
6681
6649
  hasDependencyInLoadingState() {
6682
- if (sceneGraph.hasVariableDependencyInLoadingState(this._sceneObject)) {
6683
- this._isWaitingForVariables = true;
6684
- return true;
6685
- }
6686
- this._isWaitingForVariables = false;
6687
- return false;
6650
+ this._isWaitingForVariables = sceneGraph.hasVariableDependencyInLoadingState(this._sceneObject);
6651
+ return this._isWaitingForVariables;
6688
6652
  }
6689
6653
  getNames() {
6690
6654
  const prevState = this._state;
6691
6655
  const newState = this._state = this._sceneObject.state;
6692
- if (!prevState) {
6693
- this.scanStateForDependencies(this._state);
6694
- return this._dependencies;
6695
- }
6696
- if (newState !== prevState) {
6697
- if (this._statePaths) {
6698
- for (const path of this._statePaths) {
6699
- if (path === "*" || newState[path] !== prevState[path]) {
6700
- this.scanStateForDependencies(newState);
6701
- break;
6702
- }
6703
- }
6704
- } else {
6705
- this.scanStateForDependencies(newState);
6706
- }
6656
+ const noPreviousState = !prevState;
6657
+ const stateDiffers = newState !== prevState;
6658
+ const shouldScanForDependencies = noPreviousState || stateDiffers && (!this._statePaths || this._statePaths.some((path) => path === "*" || newState[path] !== prevState[path]));
6659
+ if (shouldScanForDependencies) {
6660
+ this.scanStateForDependencies(newState);
6707
6661
  }
6708
6662
  return this._dependencies;
6709
6663
  }
@@ -6719,7 +6673,7 @@ class VariableDependencyConfig {
6719
6673
  }
6720
6674
  scanStateForDependencies(state) {
6721
6675
  this._dependencies.clear();
6722
- this.scanCount += 1;
6676
+ this.scanCount++;
6723
6677
  if (this._options.variableNames) {
6724
6678
  for (const name of this._options.variableNames) {
6725
6679
  this._dependencies.add(name);