@grafana/scenes 6.33.0 → 6.33.1--canary.1235.17401388269.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.
Files changed (26) hide show
  1. package/CHANGELOG.md +0 -16
  2. package/dist/esm/behaviors/LongFrameDetector.js +185 -0
  3. package/dist/esm/behaviors/LongFrameDetector.js.map +1 -0
  4. package/dist/esm/behaviors/SceneRenderProfiler.js +103 -20
  5. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  6. package/dist/esm/querying/SceneQueryRunner.js +41 -14
  7. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  8. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +1 -12
  9. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  10. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +1 -3
  11. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  12. package/dist/esm/utils/writeSceneLog.js +10 -1
  13. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  14. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +2 -2
  15. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  16. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js +2 -2
  17. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  18. package/dist/esm/variables/groupby/GroupByValueContainer.js.map +1 -1
  19. package/dist/esm/variables/groupby/GroupByVariable.js +4 -3
  20. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  21. package/dist/index.d.ts +38 -5
  22. package/dist/index.js +405 -172
  23. package/dist/index.js.map +1 -1
  24. package/package.json +2 -2
  25. package/dist/esm/variables/DrilldownDependenciesManager.js +0 -60
  26. package/dist/esm/variables/DrilldownDependenciesManager.js.map +0 -1
package/dist/index.js CHANGED
@@ -137,21 +137,21 @@ class UserActionEvent extends data.BusEventWithPayload {
137
137
  }
138
138
  UserActionEvent.type = "scene-object-user-action";
139
139
 
140
- var __typeError$4 = (msg) => {
140
+ var __typeError$5 = (msg) => {
141
141
  throw TypeError(msg);
142
142
  };
143
- var __accessCheck$4 = (obj, member, msg) => member.has(obj) || __typeError$4("Cannot " + msg);
144
- var __privateGet$4 = (obj, member, getter) => (__accessCheck$4(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
145
- var __privateAdd$4 = (obj, member, value) => member.has(obj) ? __typeError$4("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
146
- var __privateSet$4 = (obj, member, value, setter) => (__accessCheck$4(obj, member, "write to private field"), member.set(obj, value), value);
143
+ var __accessCheck$5 = (obj, member, msg) => member.has(obj) || __typeError$5("Cannot " + msg);
144
+ var __privateGet$5 = (obj, member, getter) => (__accessCheck$5(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
145
+ var __privateAdd$5 = (obj, member, value) => member.has(obj) ? __typeError$5("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
146
+ var __privateSet$5 = (obj, member, value, setter) => (__accessCheck$5(obj, member, "write to private field"), member.set(obj, value), value);
147
147
  var _ref;
148
148
  class SceneObjectRef {
149
149
  constructor(ref) {
150
- __privateAdd$4(this, _ref);
151
- __privateSet$4(this, _ref, ref);
150
+ __privateAdd$5(this, _ref);
151
+ __privateSet$5(this, _ref, ref);
152
152
  }
153
153
  resolve() {
154
- return __privateGet$4(this, _ref);
154
+ return __privateGet$5(this, _ref);
155
155
  }
156
156
  }
157
157
  _ref = new WeakMap();
@@ -599,14 +599,23 @@ function writeSceneLog(logger, message, ...rest) {
599
599
  console.log(`${logger}: `, message, ...rest);
600
600
  }
601
601
  }
602
+ function writeSceneLogStyled(logger, message, style, ...rest) {
603
+ let loggingEnabled = false;
604
+ if (typeof window !== "undefined") {
605
+ loggingEnabled = localStorage.getItem("grafana.debug.scenes") === "true";
606
+ }
607
+ if (loggingEnabled) {
608
+ console.log(`%c${logger}: ${message}`, style, ...rest);
609
+ }
610
+ }
602
611
 
603
- var __typeError$3 = (msg) => {
612
+ var __typeError$4 = (msg) => {
604
613
  throw TypeError(msg);
605
614
  };
606
- var __accessCheck$3 = (obj, member, msg) => member.has(obj) || __typeError$3("Cannot " + msg);
607
- var __privateGet$3 = (obj, member, getter) => (__accessCheck$3(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
608
- var __privateAdd$3 = (obj, member, value) => member.has(obj) ? __typeError$3("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
609
- var __privateSet$3 = (obj, member, value, setter) => (__accessCheck$3(obj, member, "write to private field"), member.set(obj, value), value);
615
+ var __accessCheck$4 = (obj, member, msg) => member.has(obj) || __typeError$4("Cannot " + msg);
616
+ var __privateGet$4 = (obj, member, getter) => (__accessCheck$4(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
617
+ var __privateAdd$4 = (obj, member, value) => member.has(obj) ? __typeError$4("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
618
+ var __privateSet$4 = (obj, member, value, setter) => (__accessCheck$4(obj, member, "write to private field"), member.set(obj, value), value);
610
619
  var _running, _tryCompleteProfileFrameId;
611
620
  function isQueryController(s) {
612
621
  return "isQueryController" in s;
@@ -616,10 +625,10 @@ class SceneQueryController extends SceneObjectBase {
616
625
  super({ ...state, isRunning: false });
617
626
  this.profiler = profiler;
618
627
  this.isQueryController = true;
619
- __privateAdd$3(this, _running, /* @__PURE__ */ new Set());
620
- __privateAdd$3(this, _tryCompleteProfileFrameId, null);
628
+ __privateAdd$4(this, _running, /* @__PURE__ */ new Set());
629
+ __privateAdd$4(this, _tryCompleteProfileFrameId, null);
621
630
  this.runningQueriesCount = () => {
622
- return __privateGet$3(this, _running).size;
631
+ return __privateGet$4(this, _running).size;
623
632
  };
624
633
  if (profiler) {
625
634
  this.profiler = profiler;
@@ -628,7 +637,7 @@ class SceneQueryController extends SceneObjectBase {
628
637
  this.addActivationHandler(() => {
629
638
  var _a;
630
639
  (_a = this.profiler) == null ? void 0 : _a.setQueryController(this);
631
- return () => __privateGet$3(this, _running).clear();
640
+ return () => __privateGet$4(this, _running).clear();
632
641
  });
633
642
  }
634
643
  startProfile(name) {
@@ -643,19 +652,19 @@ class SceneQueryController extends SceneObjectBase {
643
652
  (_a = this.profiler) == null ? void 0 : _a.cancelProfile();
644
653
  }
645
654
  queryStarted(entry) {
646
- __privateGet$3(this, _running).add(entry);
655
+ __privateGet$4(this, _running).add(entry);
647
656
  this.changeRunningQueryCount(1, entry);
648
657
  if (!this.state.isRunning) {
649
658
  this.setState({ isRunning: true });
650
659
  }
651
660
  }
652
661
  queryCompleted(entry) {
653
- if (!__privateGet$3(this, _running).has(entry)) {
662
+ if (!__privateGet$4(this, _running).has(entry)) {
654
663
  return;
655
664
  }
656
- __privateGet$3(this, _running).delete(entry);
665
+ __privateGet$4(this, _running).delete(entry);
657
666
  this.changeRunningQueryCount(-1);
658
- if (__privateGet$3(this, _running).size === 0) {
667
+ if (__privateGet$4(this, _running).size === 0) {
659
668
  this.setState({ isRunning: false });
660
669
  }
661
670
  }
@@ -672,10 +681,10 @@ class SceneQueryController extends SceneObjectBase {
672
681
  }
673
682
  }
674
683
  if (this.state.enableProfiling) {
675
- if (__privateGet$3(this, _tryCompleteProfileFrameId)) {
676
- cancelAnimationFrame(__privateGet$3(this, _tryCompleteProfileFrameId));
684
+ if (__privateGet$4(this, _tryCompleteProfileFrameId)) {
685
+ cancelAnimationFrame(__privateGet$4(this, _tryCompleteProfileFrameId));
677
686
  }
678
- __privateSet$3(this, _tryCompleteProfileFrameId, requestAnimationFrame(() => {
687
+ __privateSet$4(this, _tryCompleteProfileFrameId, requestAnimationFrame(() => {
679
688
  var _a2;
680
689
  (_a2 = this.profiler) == null ? void 0 : _a2.tryCompletingProfile();
681
690
  }));
@@ -683,7 +692,7 @@ class SceneQueryController extends SceneObjectBase {
683
692
  }
684
693
  cancelAll() {
685
694
  var _a;
686
- for (const entry of __privateGet$3(this, _running).values()) {
695
+ for (const entry of __privateGet$4(this, _running).values()) {
687
696
  (_a = entry.cancel) == null ? void 0 : _a.call(entry);
688
697
  }
689
698
  }
@@ -853,6 +862,187 @@ function isValid$1(value, roundUp, timeZone) {
853
862
  return parsed.isValid();
854
863
  }
855
864
 
865
+ var __typeError$3 = (msg) => {
866
+ throw TypeError(msg);
867
+ };
868
+ var __accessCheck$3 = (obj, member, msg) => member.has(obj) || __typeError$3("Cannot " + msg);
869
+ var __privateGet$3 = (obj, member, getter) => (__accessCheck$3(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
870
+ var __privateAdd$3 = (obj, member, value) => member.has(obj) ? __typeError$3("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
871
+ var __privateSet$3 = (obj, member, value, setter) => (__accessCheck$3(obj, member, "write to private field"), member.set(obj, value), value);
872
+ var _isTracking, _callback, _frameTrackingId, _lastFrameTime, _loafObserver;
873
+ const LONG_FRAME_THRESHOLD = 50;
874
+ class LongFrameDetector {
875
+ constructor() {
876
+ __privateAdd$3(this, _isTracking, false);
877
+ __privateAdd$3(this, _callback, null);
878
+ // Manual tracking state
879
+ __privateAdd$3(this, _frameTrackingId, null);
880
+ __privateAdd$3(this, _lastFrameTime, 0);
881
+ // LoAF tracking state
882
+ __privateAdd$3(this, _loafObserver, null);
883
+ /**
884
+ * Measure frame durations using requestAnimationFrame
885
+ */
886
+ this.measureFrames = () => {
887
+ if (!__privateGet$3(this, _isTracking)) {
888
+ return;
889
+ }
890
+ const currentFrameTime = performance.now();
891
+ const frameLength = currentFrameTime - __privateGet$3(this, _lastFrameTime);
892
+ if (frameLength > LONG_FRAME_THRESHOLD) {
893
+ const event = {
894
+ duration: frameLength,
895
+ timestamp: currentFrameTime,
896
+ method: "manual"
897
+ };
898
+ if (__privateGet$3(this, _callback)) {
899
+ __privateGet$3(this, _callback).call(this, event);
900
+ }
901
+ if (typeof performance !== "undefined" && performance.mark && performance.measure) {
902
+ const frameId = `long-frame-manual-${currentFrameTime.toFixed(0)}`;
903
+ const startMarkName = `${frameId}-start`;
904
+ const endMarkName = `${frameId}-end`;
905
+ const measureName = `Long Frame (Manual): ${frameLength.toFixed(1)}ms`;
906
+ try {
907
+ performance.mark(startMarkName, { startTime: currentFrameTime - frameLength });
908
+ performance.mark(endMarkName, { startTime: currentFrameTime });
909
+ performance.measure(measureName, startMarkName, endMarkName);
910
+ } catch (e) {
911
+ performance.mark(measureName);
912
+ }
913
+ }
914
+ writeSceneLog(
915
+ "LongFrameDetector",
916
+ `Long frame detected (manual): ${frameLength}ms (threshold: ${LONG_FRAME_THRESHOLD}ms)`
917
+ );
918
+ }
919
+ __privateSet$3(this, _lastFrameTime, currentFrameTime);
920
+ if (__privateGet$3(this, _isTracking)) {
921
+ __privateSet$3(this, _frameTrackingId, requestAnimationFrame(this.measureFrames));
922
+ }
923
+ };
924
+ }
925
+ /**
926
+ * Check if LoAF API is available in the browser
927
+ */
928
+ isLoAFAvailable() {
929
+ return typeof PerformanceObserver !== "undefined" && PerformanceObserver.supportedEntryTypes && PerformanceObserver.supportedEntryTypes.includes("long-animation-frame");
930
+ }
931
+ /**
932
+ * Start detecting long frames and call the provided callback when they occur
933
+ */
934
+ start(callback) {
935
+ if (__privateGet$3(this, _isTracking)) {
936
+ writeSceneLog("LongFrameDetector", "Already tracking frames, stopping previous session");
937
+ this.stop();
938
+ }
939
+ __privateSet$3(this, _callback, callback);
940
+ __privateSet$3(this, _isTracking, true);
941
+ if (this.isLoAFAvailable()) {
942
+ this.startLoAFTracking();
943
+ } else {
944
+ this.startManualFrameTracking();
945
+ }
946
+ writeSceneLog(
947
+ "LongFrameDetector",
948
+ `Started tracking with ${this.isLoAFAvailable() ? "LoAF API" : "manual"} method, threshold: ${LONG_FRAME_THRESHOLD}ms`
949
+ );
950
+ }
951
+ /**
952
+ * Stop detecting long frames
953
+ */
954
+ stop() {
955
+ if (!__privateGet$3(this, _isTracking)) {
956
+ return;
957
+ }
958
+ __privateSet$3(this, _isTracking, false);
959
+ __privateSet$3(this, _callback, null);
960
+ this.stopLoAFTracking();
961
+ this.stopManualFrameTracking();
962
+ }
963
+ /**
964
+ * Check if currently tracking frames
965
+ */
966
+ isTracking() {
967
+ return __privateGet$3(this, _isTracking);
968
+ }
969
+ /**
970
+ * Start tracking using the Long Animation Frame API
971
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongAnimationFrameTiming
972
+ */
973
+ startLoAFTracking() {
974
+ if (!this.isLoAFAvailable()) {
975
+ writeSceneLog("LongFrameDetector", "LoAF API not available, falling back to manual tracking");
976
+ this.startManualFrameTracking();
977
+ return;
978
+ }
979
+ try {
980
+ __privateSet$3(this, _loafObserver, new PerformanceObserver((list) => {
981
+ for (const entry of list.getEntries()) {
982
+ const event = {
983
+ duration: entry.duration,
984
+ timestamp: entry.startTime,
985
+ method: "loaf"
986
+ };
987
+ if (__privateGet$3(this, _callback)) {
988
+ __privateGet$3(this, _callback).call(this, event);
989
+ }
990
+ if (typeof performance !== "undefined" && performance.mark && performance.measure) {
991
+ const frameId = `long-frame-${entry.startTime.toFixed(0)}`;
992
+ const startMarkName = `${frameId}-start`;
993
+ const endMarkName = `${frameId}-end`;
994
+ const measureName = `Long Frame (LoAF): ${entry.duration.toFixed(1)}ms`;
995
+ try {
996
+ performance.mark(startMarkName, { startTime: entry.startTime });
997
+ performance.mark(endMarkName, { startTime: entry.startTime + entry.duration });
998
+ performance.measure(measureName, startMarkName, endMarkName);
999
+ } catch (e) {
1000
+ performance.mark(measureName);
1001
+ }
1002
+ }
1003
+ writeSceneLog("LongFrameDetector", `Long frame detected (LoAF): ${entry.duration}ms at ${entry.startTime}ms`);
1004
+ }
1005
+ }));
1006
+ __privateGet$3(this, _loafObserver).observe({ type: "long-animation-frame", buffered: false });
1007
+ } catch (error) {
1008
+ writeSceneLog("LongFrameDetector", "Failed to start LoAF tracking, falling back to manual:", error);
1009
+ this.startManualFrameTracking();
1010
+ }
1011
+ }
1012
+ /**
1013
+ * Stop LoAF tracking
1014
+ */
1015
+ stopLoAFTracking() {
1016
+ if (__privateGet$3(this, _loafObserver)) {
1017
+ __privateGet$3(this, _loafObserver).disconnect();
1018
+ __privateSet$3(this, _loafObserver, null);
1019
+ writeSceneLog("LongFrameDetector", "Stopped LoAF tracking");
1020
+ }
1021
+ }
1022
+ /**
1023
+ * Start manual frame tracking using requestAnimationFrame
1024
+ */
1025
+ startManualFrameTracking() {
1026
+ __privateSet$3(this, _lastFrameTime, performance.now());
1027
+ __privateSet$3(this, _frameTrackingId, requestAnimationFrame(() => this.measureFrames()));
1028
+ }
1029
+ /**
1030
+ * Stop manual frame tracking
1031
+ */
1032
+ stopManualFrameTracking() {
1033
+ if (__privateGet$3(this, _frameTrackingId)) {
1034
+ cancelAnimationFrame(__privateGet$3(this, _frameTrackingId));
1035
+ __privateSet$3(this, _frameTrackingId, null);
1036
+ writeSceneLog("LongFrameDetector", "Stopped manual frame tracking");
1037
+ }
1038
+ }
1039
+ }
1040
+ _isTracking = new WeakMap();
1041
+ _callback = new WeakMap();
1042
+ _frameTrackingId = new WeakMap();
1043
+ _lastFrameTime = new WeakMap();
1044
+ _loafObserver = new WeakMap();
1045
+
856
1046
  var __typeError$2 = (msg) => {
857
1047
  throw TypeError(msg);
858
1048
  };
@@ -860,9 +1050,17 @@ var __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$2("Ca
860
1050
  var __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
861
1051
  var __privateAdd$2 = (obj, member, value) => member.has(obj) ? __typeError$2("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
862
1052
  var __privateSet$2 = (obj, member, value, setter) => (__accessCheck$2(obj, member, "write to private field"), member.set(obj, value), value);
863
- var _profileInProgress, _profileStartTs, _trailAnimationFrameId, _recordedTrailingSpans, _visibilityChangeHandler;
1053
+ var __privateWrapper = (obj, member, setter, getter) => ({
1054
+ set _(value) {
1055
+ __privateSet$2(obj, member, value);
1056
+ },
1057
+ get _() {
1058
+ return __privateGet$2(obj, member, getter);
1059
+ }
1060
+ });
1061
+ var _profileInProgress, _profileStartTs, _trailAnimationFrameId, _recordedTrailingSpans, _longFrameDetector, _longFramesCount, _longFramesTotalTime, _visibilityChangeHandler;
864
1062
  const POST_STORM_WINDOW = 2e3;
865
- const SPAN_THRESHOLD = 30;
1063
+ const DEFAULT_LONG_FRAME_THRESHOLD = 30;
866
1064
  const TAB_INACTIVE_THRESHOLD = 1e3;
867
1065
  class SceneRenderProfiler {
868
1066
  constructor(queryController) {
@@ -872,10 +1070,13 @@ class SceneRenderProfiler {
872
1070
  __privateAdd$2(this, _trailAnimationFrameId, null);
873
1071
  // Will keep measured lengths trailing frames
874
1072
  __privateAdd$2(this, _recordedTrailingSpans, []);
875
- this.lastFrameTime = 0;
1073
+ // Long frame tracking
1074
+ __privateAdd$2(this, _longFrameDetector);
1075
+ __privateAdd$2(this, _longFramesCount, 0);
1076
+ __privateAdd$2(this, _longFramesTotalTime, 0);
876
1077
  __privateAdd$2(this, _visibilityChangeHandler, null);
877
1078
  this.measureTrailingFrames = (measurementStartTs, lastFrameTime, profileStartTs) => {
878
- var _a;
1079
+ var _a, _b, _c, _d;
879
1080
  const currentFrameTime = performance.now();
880
1081
  const frameLength = currentFrameTime - lastFrameTime;
881
1082
  if (frameLength > TAB_INACTIVE_THRESHOLD) {
@@ -894,18 +1095,60 @@ class SceneRenderProfiler {
894
1095
  const slowFrames = processRecordedSpans(__privateGet$2(this, _recordedTrailingSpans));
895
1096
  const slowFramesTime = slowFrames.reduce((acc, val) => acc + val, 0);
896
1097
  writeSceneLog(
897
- this.constructor.name,
898
- "Profile tail recorded, slow frames duration:",
899
- slowFramesTime,
900
- slowFrames,
901
- __privateGet$2(this, _profileInProgress)
1098
+ "SceneRenderProfiler",
1099
+ `Profile tail recorded - Slow frames: ${slowFramesTime.toFixed(1)}ms (${slowFrames.length} frames)`
902
1100
  );
1101
+ writeSceneLog("", ` \u251C\u2500 Origin: ${((_a = __privateGet$2(this, _profileInProgress)) == null ? void 0 : _a.origin) || "unknown"}`);
1102
+ writeSceneLog("", ` \u2514\u2500 Crumbs:`, ((_b = __privateGet$2(this, _profileInProgress)) == null ? void 0 : _b.crumbs) || []);
903
1103
  __privateSet$2(this, _recordedTrailingSpans, []);
904
1104
  const profileDuration = measurementStartTs - profileStartTs;
905
- writeSceneLog(
906
- this.constructor.name,
907
- "Stoped recording, total measured time (network included):",
908
- profileDuration + slowFramesTime
1105
+ if (typeof performance !== "undefined" && performance.mark) {
1106
+ const profileName = ((_c = __privateGet$2(this, _profileInProgress)) == null ? void 0 : _c.origin) || "unknown";
1107
+ const totalTime = profileDuration + slowFramesTime;
1108
+ performance.mark(`Dashboard Profile End: ${profileName}`);
1109
+ const startMarkName = `Dashboard Profile Start: ${profileName}`;
1110
+ try {
1111
+ performance.measure(
1112
+ `Dashboard Profile: ${profileName} (${totalTime.toFixed(1)}ms)`,
1113
+ startMarkName,
1114
+ `Dashboard Profile End: ${profileName}`
1115
+ );
1116
+ } catch (e) {
1117
+ performance.mark(`Dashboard Profile Complete: ${profileName} (${totalTime.toFixed(1)}ms)`);
1118
+ }
1119
+ if (slowFrames.length > 0) {
1120
+ const slowFramesMarkName = `Slow Frames Summary: ${slowFrames.length} frames (${slowFramesTime.toFixed(
1121
+ 1
1122
+ )}ms)`;
1123
+ performance.mark(slowFramesMarkName);
1124
+ slowFrames.forEach((frameTime, index) => {
1125
+ if (frameTime > 16) {
1126
+ try {
1127
+ const frameStartTime = __privateGet$2(this, _profileStartTs) + profileDuration + (index > 0 ? slowFrames.slice(0, index).reduce((sum, t) => sum + t, 0) : 0);
1128
+ const frameId = `slow-frame-${index}`;
1129
+ const frameStartMark = `${frameId}-start`;
1130
+ const frameEndMark = `${frameId}-end`;
1131
+ performance.mark(frameStartMark, { startTime: frameStartTime });
1132
+ performance.mark(frameEndMark, { startTime: frameStartTime + frameTime });
1133
+ performance.measure(`Slow Frame ${index + 1}: ${frameTime.toFixed(1)}ms`, frameStartMark, frameEndMark);
1134
+ } catch (e) {
1135
+ performance.mark(`Slow Frame ${index + 1}: ${frameTime.toFixed(1)}ms`);
1136
+ }
1137
+ }
1138
+ });
1139
+ }
1140
+ }
1141
+ const completionTimestamp = performance.now();
1142
+ writeSceneLog("SceneRenderProfiler", "Profile completed");
1143
+ writeSceneLog("", ` \u251C\u2500 Timestamp: ${completionTimestamp.toFixed(1)}ms`);
1144
+ writeSceneLog("", ` \u251C\u2500 Total time: ${(profileDuration + slowFramesTime).toFixed(1)}ms`);
1145
+ writeSceneLog("", ` \u251C\u2500 Slow frames: ${slowFramesTime}ms (${slowFrames.length} frames)`);
1146
+ writeSceneLog("", ` \u2514\u2500 Long frames: ${__privateGet$2(this, _longFramesTotalTime)}ms (${__privateGet$2(this, _longFramesCount)} frames)`);
1147
+ __privateGet$2(this, _longFrameDetector).stop();
1148
+ writeSceneLogStyled(
1149
+ "SceneRenderProfiler",
1150
+ `Stopped long frame detection - profile complete at ${completionTimestamp.toFixed(1)}ms`,
1151
+ "color: #00CC00; font-weight: bold;"
909
1152
  );
910
1153
  __privateSet$2(this, _trailAnimationFrameId, null);
911
1154
  const profileEndTs = profileStartTs + profileDuration + slowFramesTime;
@@ -917,7 +1160,7 @@ class SceneRenderProfiler {
917
1160
  end: profileEndTs
918
1161
  });
919
1162
  const networkDuration = captureNetwork(profileStartTs, profileEndTs);
920
- if (((_a = this.queryController) == null ? void 0 : _a.state.onProfileComplete) && __privateGet$2(this, _profileInProgress)) {
1163
+ if (((_d = this.queryController) == null ? void 0 : _d.state.onProfileComplete) && __privateGet$2(this, _profileInProgress)) {
921
1164
  this.queryController.state.onProfileComplete({
922
1165
  origin: __privateGet$2(this, _profileInProgress).origin,
923
1166
  crumbs: __privateGet$2(this, _profileInProgress).crumbs,
@@ -925,6 +1168,8 @@ class SceneRenderProfiler {
925
1168
  networkDuration,
926
1169
  startTs: profileStartTs,
927
1170
  endTs: profileEndTs,
1171
+ longFramesCount: __privateGet$2(this, _longFramesCount),
1172
+ longFramesTotalTime: __privateGet$2(this, _longFramesTotalTime),
928
1173
  // @ts-ignore
929
1174
  jsHeapSizeLimit: performance.memory ? performance.memory.jsHeapSizeLimit : 0,
930
1175
  // @ts-ignore
@@ -944,6 +1189,7 @@ class SceneRenderProfiler {
944
1189
  }
945
1190
  }
946
1191
  };
1192
+ __privateSet$2(this, _longFrameDetector, new LongFrameDetector());
947
1193
  this.setupVisibilityChangeHandler();
948
1194
  }
949
1195
  setQueryController(queryController) {
@@ -968,6 +1214,7 @@ class SceneRenderProfiler {
968
1214
  document.removeEventListener("visibilitychange", __privateGet$2(this, _visibilityChangeHandler));
969
1215
  __privateSet$2(this, _visibilityChangeHandler, null);
970
1216
  }
1217
+ __privateGet$2(this, _longFrameDetector).stop();
971
1218
  this.cancelProfile();
972
1219
  }
973
1220
  startProfile(name) {
@@ -997,14 +1244,32 @@ class SceneRenderProfiler {
997
1244
  * - "clean": Started when no profile is currently active
998
1245
  */
999
1246
  _startNewProfile(name, force = false) {
1247
+ var _a;
1000
1248
  __privateSet$2(this, _profileInProgress, { origin: name, crumbs: [] });
1001
1249
  __privateSet$2(this, _profileStartTs, performance.now());
1002
- writeSceneLog(
1250
+ __privateSet$2(this, _longFramesCount, 0);
1251
+ __privateSet$2(this, _longFramesTotalTime, 0);
1252
+ if (typeof performance !== "undefined" && performance.mark) {
1253
+ const markName = `Dashboard Profile Start: ${name}`;
1254
+ performance.mark(markName);
1255
+ }
1256
+ writeSceneLogStyled(
1003
1257
  "SceneRenderProfiler",
1004
1258
  `Profile started[${force ? "forced" : "clean"}]`,
1005
- __privateGet$2(this, _profileInProgress),
1006
- __privateGet$2(this, _profileStartTs)
1259
+ "color: #FFCC00; font-weight: bold;"
1007
1260
  );
1261
+ writeSceneLog("", ` \u251C\u2500 Origin: ${((_a = __privateGet$2(this, _profileInProgress)) == null ? void 0 : _a.origin) || "unknown"}`);
1262
+ writeSceneLog("", ` \u2514\u2500 Timestamp: ${__privateGet$2(this, _profileStartTs).toFixed(1)}ms`);
1263
+ __privateGet$2(this, _longFrameDetector).start((event) => {
1264
+ if (!__privateGet$2(this, _profileInProgress) || !__privateGet$2(this, _profileStartTs)) {
1265
+ return;
1266
+ }
1267
+ if (event.timestamp < __privateGet$2(this, _profileStartTs)) {
1268
+ return;
1269
+ }
1270
+ __privateWrapper(this, _longFramesCount)._++;
1271
+ __privateSet$2(this, _longFramesTotalTime, __privateGet$2(this, _longFramesTotalTime) + event.duration);
1272
+ });
1008
1273
  }
1009
1274
  recordProfileTail(measurementStartTime, profileStartTs) {
1010
1275
  __privateSet$2(this, _trailAnimationFrameId, requestAnimationFrame(
@@ -1015,7 +1280,7 @@ class SceneRenderProfiler {
1015
1280
  var _a;
1016
1281
  writeSceneLog("SceneRenderProfiler", "Trying to complete profile", __privateGet$2(this, _profileInProgress));
1017
1282
  if (((_a = this.queryController) == null ? void 0 : _a.runningQueriesCount()) === 0 && __privateGet$2(this, _profileInProgress)) {
1018
- writeSceneLog("SceneRenderProfiler", "All queries completed, stopping profile");
1283
+ writeSceneLog("SceneRenderProfiler", "All queries completed, starting tail measurement");
1019
1284
  this.recordProfileTail(performance.now(), __privateGet$2(this, _profileStartTs));
1020
1285
  }
1021
1286
  }
@@ -1038,7 +1303,11 @@ class SceneRenderProfiler {
1038
1303
  cancelAnimationFrame(__privateGet$2(this, _trailAnimationFrameId));
1039
1304
  __privateSet$2(this, _trailAnimationFrameId, null);
1040
1305
  }
1306
+ __privateGet$2(this, _longFrameDetector).stop();
1307
+ writeSceneLog("SceneRenderProfiler", "Stopped long frame detection - profile cancelled");
1041
1308
  __privateSet$2(this, _recordedTrailingSpans, []);
1309
+ __privateSet$2(this, _longFramesCount, 0);
1310
+ __privateSet$2(this, _longFramesTotalTime, 0);
1042
1311
  }
1043
1312
  }
1044
1313
  addCrumb(crumb) {
@@ -1052,10 +1321,13 @@ _profileInProgress = new WeakMap();
1052
1321
  _profileStartTs = new WeakMap();
1053
1322
  _trailAnimationFrameId = new WeakMap();
1054
1323
  _recordedTrailingSpans = new WeakMap();
1324
+ _longFrameDetector = new WeakMap();
1325
+ _longFramesCount = new WeakMap();
1326
+ _longFramesTotalTime = new WeakMap();
1055
1327
  _visibilityChangeHandler = new WeakMap();
1056
1328
  function processRecordedSpans(spans) {
1057
1329
  for (let i = spans.length - 1; i >= 0; i--) {
1058
- if (spans[i] > SPAN_THRESHOLD) {
1330
+ if (spans[i] > DEFAULT_LONG_FRAME_THRESHOLD) {
1059
1331
  return spans.slice(0, i + 1);
1060
1332
  }
1061
1333
  }
@@ -2868,6 +3140,49 @@ function getEnrichedDataRequest(sourceRunner) {
2868
3140
  return null;
2869
3141
  }
2870
3142
 
3143
+ let originalGetAdhocFilters = void 0;
3144
+ let allActiveFilterSets = /* @__PURE__ */ new Set();
3145
+ function patchGetAdhocFilters(filterVar) {
3146
+ filterVar.addActivationHandler(() => {
3147
+ allActiveFilterSets.add(filterVar);
3148
+ return () => allActiveFilterSets.delete(filterVar);
3149
+ });
3150
+ if (originalGetAdhocFilters) {
3151
+ return;
3152
+ }
3153
+ const templateSrv = runtime.getTemplateSrv();
3154
+ if (!(templateSrv == null ? void 0 : templateSrv.getAdhocFilters)) {
3155
+ console.log("Failed to patch getAdhocFilters");
3156
+ return;
3157
+ }
3158
+ originalGetAdhocFilters = templateSrv.getAdhocFilters;
3159
+ templateSrv.getAdhocFilters = function getAdhocFiltersScenePatch(dsName) {
3160
+ var _a;
3161
+ if (allActiveFilterSets.size === 0) {
3162
+ return originalGetAdhocFilters.call(templateSrv, dsName);
3163
+ }
3164
+ const ds = runtime.getDataSourceSrv().getInstanceSettings(dsName);
3165
+ if (!ds) {
3166
+ return [];
3167
+ }
3168
+ for (const filter of allActiveFilterSets.values()) {
3169
+ if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === ds.uid) {
3170
+ return filter.state.filters;
3171
+ }
3172
+ }
3173
+ return [];
3174
+ }.bind(templateSrv);
3175
+ }
3176
+ function findActiveAdHocFilterVariableByUid(dsUid) {
3177
+ var _a;
3178
+ for (const filter of allActiveFilterSets.values()) {
3179
+ if (interpolate(filter, (_a = filter.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
3180
+ return filter;
3181
+ }
3182
+ }
3183
+ return void 0;
3184
+ }
3185
+
2871
3186
  const allActiveGroupByVariables = /* @__PURE__ */ new Set();
2872
3187
  function findActiveGroupByVariablesByUid(dsUid) {
2873
3188
  var _a;
@@ -3536,13 +3851,13 @@ class GroupByVariable extends MultiValueVariable {
3536
3851
  const ds = await getDataSource(this.state.datasource, {
3537
3852
  __sceneObject: wrapInSafeSerializableSceneObject(this)
3538
3853
  });
3539
- if (!ds.getDrilldownsApplicability) {
3854
+ if (!ds.getFiltersApplicability) {
3540
3855
  return;
3541
3856
  }
3542
3857
  const queries = getQueriesForVariables(this);
3543
3858
  const timeRange = sceneGraph.getTimeRange(this).state.value;
3544
3859
  const value = this.state.value;
3545
- const response = await ds.getDrilldownsApplicability({
3860
+ const response = await ds.getFiltersApplicability({
3546
3861
  groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],
3547
3862
  queries,
3548
3863
  timeRange,
@@ -3679,11 +3994,12 @@ function GroupByVariableRenderer({ model }) {
3679
3994
  if (restorable !== model.state.restorable) {
3680
3995
  model.setState({ restorable });
3681
3996
  }
3682
- model._verifyApplicability();
3683
3997
  },
3684
3998
  onChange: (newValue, action) => {
3685
3999
  if (action.action === "clear" && noValueOnClear) {
3686
4000
  model.changeValueTo([], void 0, true);
4001
+ } else {
4002
+ model._verifyApplicability();
3687
4003
  }
3688
4004
  setUncommittedValue(newValue);
3689
4005
  },
@@ -3765,49 +4081,6 @@ function toSelectableValue$1(input) {
3765
4081
  return result;
3766
4082
  }
3767
4083
 
3768
- let originalGetAdhocFilters = void 0;
3769
- const allActiveFilterSets = /* @__PURE__ */ new Set();
3770
- function patchGetAdhocFilters(filterVar) {
3771
- filterVar.addActivationHandler(() => {
3772
- allActiveFilterSets.add(filterVar);
3773
- return () => allActiveFilterSets.delete(filterVar);
3774
- });
3775
- if (originalGetAdhocFilters) {
3776
- return;
3777
- }
3778
- const templateSrv = runtime.getTemplateSrv();
3779
- if (!(templateSrv == null ? void 0 : templateSrv.getAdhocFilters)) {
3780
- console.log("Failed to patch getAdhocFilters");
3781
- return;
3782
- }
3783
- originalGetAdhocFilters = templateSrv.getAdhocFilters;
3784
- templateSrv.getAdhocFilters = function getAdhocFiltersScenePatch(dsName) {
3785
- var _a;
3786
- if (allActiveFilterSets.size === 0) {
3787
- return originalGetAdhocFilters.call(templateSrv, dsName);
3788
- }
3789
- const ds = runtime.getDataSourceSrv().getInstanceSettings(dsName);
3790
- if (!ds) {
3791
- return [];
3792
- }
3793
- for (const filter of allActiveFilterSets.values()) {
3794
- if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === ds.uid) {
3795
- return filter.state.filters;
3796
- }
3797
- }
3798
- return [];
3799
- }.bind(templateSrv);
3800
- }
3801
- function findActiveAdHocFilterVariableByUid(dsUid) {
3802
- var _a;
3803
- for (const filter of allActiveFilterSets.values()) {
3804
- if (interpolate(filter, (_a = filter.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
3805
- return filter;
3806
- }
3807
- }
3808
- return void 0;
3809
- }
3810
-
3811
4084
  function LoadingIndicator(props) {
3812
4085
  return /* @__PURE__ */ React__default.default.createElement(ui.Tooltip, { content: i18n.t("grafana-scenes.utils.loading-indicator.content-cancel-query", "Cancel query") }, /* @__PURE__ */ React__default.default.createElement(
3813
4086
  ui.Icon,
@@ -6158,7 +6431,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
6158
6431
  var _a, _b, _c;
6159
6432
  const filters = [...this.state.filters, ...(_a = this.state.originFilters) != null ? _a : []];
6160
6433
  const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
6161
- if (!ds || !ds.getDrilldownsApplicability) {
6434
+ if (!ds || !ds.getFiltersApplicability) {
6162
6435
  return;
6163
6436
  }
6164
6437
  if (!filters) {
@@ -6166,7 +6439,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
6166
6439
  }
6167
6440
  const timeRange = sceneGraph.getTimeRange(this).state.value;
6168
6441
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
6169
- const response = await ds.getDrilldownsApplicability({
6442
+ const response = await ds.getFiltersApplicability({
6170
6443
  filters,
6171
6444
  queries,
6172
6445
  timeRange,
@@ -6409,60 +6682,6 @@ function areDifferentLayers(a, b) {
6409
6682
  return false;
6410
6683
  }
6411
6684
 
6412
- class DrilldownDependenciesManager {
6413
- constructor(variableDependency) {
6414
- this._variableDependency = variableDependency;
6415
- }
6416
- /**
6417
- * Walk up scene graph and find the closest filterset with matching data source
6418
- */
6419
- findAndSubscribeToDrilldowns(interpolatedUid) {
6420
- const filtersVar = findActiveAdHocFilterVariableByUid(interpolatedUid);
6421
- const groupByVar = findActiveGroupByVariablesByUid(interpolatedUid);
6422
- let hasChanges = false;
6423
- if (this._adhocFiltersVar !== filtersVar) {
6424
- this._adhocFiltersVar = filtersVar;
6425
- hasChanges = true;
6426
- }
6427
- if (this._groupByVar !== groupByVar) {
6428
- this._groupByVar = groupByVar;
6429
- hasChanges = true;
6430
- }
6431
- if (hasChanges) {
6432
- this._updateExplicitDrilldownVariableDependencies();
6433
- }
6434
- }
6435
- _updateExplicitDrilldownVariableDependencies() {
6436
- const explicitDependencies = [];
6437
- if (this._adhocFiltersVar) {
6438
- explicitDependencies.push(this._adhocFiltersVar.state.name);
6439
- }
6440
- if (this._groupByVar) {
6441
- explicitDependencies.push(this._groupByVar.state.name);
6442
- }
6443
- this._variableDependency.setVariableNames(explicitDependencies);
6444
- }
6445
- get adHocFiltersVar() {
6446
- return this._adhocFiltersVar;
6447
- }
6448
- get groupByVar() {
6449
- return this._groupByVar;
6450
- }
6451
- getFilters() {
6452
- var _a;
6453
- return this._adhocFiltersVar ? [...(_a = this._adhocFiltersVar.state.originFilters) != null ? _a : [], ...this._adhocFiltersVar.state.filters].filter(
6454
- (f) => isFilterComplete(f) && isFilterApplicable(f)
6455
- ) : void 0;
6456
- }
6457
- getGroupByKeys() {
6458
- return this._groupByVar ? this._groupByVar.getApplicableKeys() : void 0;
6459
- }
6460
- cleanup() {
6461
- this._adhocFiltersVar = void 0;
6462
- this._groupByVar = void 0;
6463
- }
6464
- }
6465
-
6466
6685
  let counter$1 = 100;
6467
6686
  function getNextRequestId$1() {
6468
6687
  return "SQR" + counter$1++;
@@ -6480,7 +6699,6 @@ class SceneQueryRunner extends SceneObjectBase {
6480
6699
  onAnyVariableChanged: this.onAnyVariableChanged.bind(this),
6481
6700
  dependsOnScopes: true
6482
6701
  });
6483
- this._drilldownDependenciesManager = new DrilldownDependenciesManager(this._variableDependency);
6484
6702
  this.onDataReceived = (data$1) => {
6485
6703
  const preProcessedData = data.preProcessPanelData(data$1, this.state.data);
6486
6704
  this._resultAnnotations = data$1.annotations;
@@ -6596,7 +6814,7 @@ class SceneQueryRunner extends SceneObjectBase {
6596
6814
  * Check if value changed is a adhoc filter o group by variable that did not exist when we issued the last query
6597
6815
  */
6598
6816
  onAnyVariableChanged(variable) {
6599
- if (this._drilldownDependenciesManager.adHocFiltersVar === variable || this._drilldownDependenciesManager.groupByVar === variable || !this.isQueryModeAuto()) {
6817
+ if (this._adhocFiltersVar === variable || this._groupByVar === variable || !this.isQueryModeAuto()) {
6600
6818
  return;
6601
6819
  }
6602
6820
  if (variable instanceof AdHocFiltersVariable && this._isRelevantAutoVariable(variable)) {
@@ -6650,7 +6868,8 @@ class SceneQueryRunner extends SceneObjectBase {
6650
6868
  (_a = this._timeSub) == null ? void 0 : _a.unsubscribe();
6651
6869
  this._timeSub = void 0;
6652
6870
  this._timeSubRange = void 0;
6653
- this._drilldownDependenciesManager.cleanup();
6871
+ this._adhocFiltersVar = void 0;
6872
+ this._groupByVar = void 0;
6654
6873
  }
6655
6874
  setContainerWidth(width) {
6656
6875
  if (!this._containerWidth && width > 0) {
@@ -6731,7 +6950,7 @@ class SceneQueryRunner extends SceneObjectBase {
6731
6950
  try {
6732
6951
  const datasource = (_c = this.state.datasource) != null ? _c : findFirstDatasource(queries);
6733
6952
  const ds = await getDataSource(datasource, this._scopedVars);
6734
- this._drilldownDependenciesManager.findAndSubscribeToDrilldowns(ds.uid);
6953
+ this.findAndSubscribeToAdHocFilters(ds.uid);
6735
6954
  const runRequest = runtime.getRunRequest();
6736
6955
  const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds);
6737
6956
  writeSceneLog("SceneQueryRunner", "Starting runRequest", this.state.key);
@@ -6775,7 +6994,7 @@ class SceneQueryRunner extends SceneObjectBase {
6775
6994
  return clone;
6776
6995
  }
6777
6996
  prepareRequests(timeRange, ds) {
6778
- var _a;
6997
+ var _a, _b;
6779
6998
  const { minInterval, queries } = this.state;
6780
6999
  let request = {
6781
7000
  app: "scenes",
@@ -6799,13 +7018,14 @@ class SceneQueryRunner extends SceneObjectBase {
6799
7018
  // This asks the scene root to provide context properties like app, panel and dashboardUID
6800
7019
  ...getEnrichedDataRequest(this)
6801
7020
  };
6802
- const filters = this._drilldownDependenciesManager.getFilters();
6803
- const groupByKeys = this._drilldownDependenciesManager.getGroupByKeys();
6804
- if (filters) {
6805
- request.filters = filters;
7021
+ if (this._adhocFiltersVar) {
7022
+ request.filters = [
7023
+ ...(_a = this._adhocFiltersVar.state.originFilters) != null ? _a : [],
7024
+ ...this._adhocFiltersVar.state.filters
7025
+ ].filter((f) => isFilterComplete(f) && isFilterApplicable(f));
6806
7026
  }
6807
- if (groupByKeys) {
6808
- request.groupByKeys = groupByKeys;
7027
+ if (this._groupByVar) {
7028
+ request.groupByKeys = this._groupByVar.getApplicableKeys();
6809
7029
  }
6810
7030
  request.targets = request.targets.map((query) => {
6811
7031
  var _a2;
@@ -6825,7 +7045,7 @@ class SceneQueryRunner extends SceneObjectBase {
6825
7045
  const primaryTimeRange = timeRange.state.value;
6826
7046
  let secondaryRequests = [];
6827
7047
  let secondaryProcessors = /* @__PURE__ */ new Map();
6828
- for (const provider of (_a = this.getClosestExtraQueryProviders()) != null ? _a : []) {
7048
+ for (const provider of (_b = this.getClosestExtraQueryProviders()) != null ? _b : []) {
6829
7049
  for (const { req, processor } of provider.getExtraQueries(request)) {
6830
7050
  const requestId = getNextRequestId$1();
6831
7051
  secondaryRequests.push({ ...req, requestId });
@@ -6872,6 +7092,31 @@ class SceneQueryRunner extends SceneObjectBase {
6872
7092
  });
6873
7093
  return Array.from(found.values());
6874
7094
  }
7095
+ /**
7096
+ * Walk up scene graph and find the closest filterset with matching data source
7097
+ */
7098
+ findAndSubscribeToAdHocFilters(interpolatedUid) {
7099
+ const filtersVar = findActiveAdHocFilterVariableByUid(interpolatedUid);
7100
+ if (this._adhocFiltersVar !== filtersVar) {
7101
+ this._adhocFiltersVar = filtersVar;
7102
+ this._updateExplicitVariableDependencies();
7103
+ }
7104
+ const groupByVar = findActiveGroupByVariablesByUid(interpolatedUid);
7105
+ if (this._groupByVar !== groupByVar) {
7106
+ this._groupByVar = groupByVar;
7107
+ this._updateExplicitVariableDependencies();
7108
+ }
7109
+ }
7110
+ _updateExplicitVariableDependencies() {
7111
+ const explicitDependencies = [];
7112
+ if (this._adhocFiltersVar) {
7113
+ explicitDependencies.push(this._adhocFiltersVar.state.name);
7114
+ }
7115
+ if (this._groupByVar) {
7116
+ explicitDependencies.push(this._groupByVar.state.name);
7117
+ }
7118
+ this._variableDependency.setVariableNames(explicitDependencies);
7119
+ }
6875
7120
  isQueryModeAuto() {
6876
7121
  var _a;
6877
7122
  return ((_a = this.state.runQueriesMode) != null ? _a : "auto") === "auto";
@@ -9825,7 +10070,7 @@ let counter = 100;
9825
10070
  function getNextRequestId() {
9826
10071
  return "AQ" + counter++;
9827
10072
  }
9828
- function executeAnnotationQuery(datasource, timeRange, query, layer, filters, groupByKeys) {
10073
+ function executeAnnotationQuery(datasource, timeRange, query, layer) {
9829
10074
  var _a;
9830
10075
  if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {
9831
10076
  console.warn("Using deprecated annotationQuery method, please upgrade your datasource");
@@ -9892,8 +10137,6 @@ function executeAnnotationQuery(datasource, timeRange, query, layer, filters, gr
9892
10137
  }
9893
10138
  ],
9894
10139
  scopes: sceneGraph.getScopes(layer),
9895
- filters,
9896
- groupByKeys,
9897
10140
  ...getEnrichedDataRequest(layer)
9898
10141
  };
9899
10142
  const runRequest = runtime.getRunRequest();
@@ -9992,7 +10235,6 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
9992
10235
  this._scopedVars = {
9993
10236
  __sceneObject: wrapInSafeSerializableSceneObject(this)
9994
10237
  };
9995
- this._drilldownDependenciesManager = new DrilldownDependenciesManager(this._variableDependency);
9996
10238
  }
9997
10239
  onEnable() {
9998
10240
  this.publishEvent(new runtime.RefreshEvent(), true);
@@ -10024,12 +10266,10 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
10024
10266
  this.runWithTimeRange(timeRange);
10025
10267
  }
10026
10268
  async runWithTimeRange(timeRange) {
10027
- var _a;
10028
10269
  const { query } = this.state;
10029
10270
  if (!query.enable) {
10030
10271
  return;
10031
10272
  }
10032
- this._drilldownDependenciesManager.findAndSubscribeToDrilldowns((_a = query.datasource) == null ? void 0 : _a.uid);
10033
10273
  if (this.querySub) {
10034
10274
  this.querySub.unsubscribe();
10035
10275
  }
@@ -10039,14 +10279,7 @@ class AnnotationsDataLayer extends SceneDataLayerBase {
10039
10279
  }
10040
10280
  try {
10041
10281
  const ds = await this.resolveDataSource(query);
10042
- let stream = executeAnnotationQuery(
10043
- ds,
10044
- timeRange,
10045
- query,
10046
- this,
10047
- this._drilldownDependenciesManager.getFilters(),
10048
- this._drilldownDependenciesManager.getGroupByKeys()
10049
- ).pipe(
10282
+ let stream = executeAnnotationQuery(ds, timeRange, query, this).pipe(
10050
10283
  registerQueryWithController({
10051
10284
  type: "AnnotationsDataLayer/annotationsLoading",
10052
10285
  origin: this,