@grafana/scenes 6.35.0--canary.1240.17499066940.0 → 6.35.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 (109) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/esm/behaviors/index.js +0 -1
  3. package/dist/esm/behaviors/index.js.map +1 -1
  4. package/dist/esm/components/layout/grid/SceneGridLayout.js +14 -0
  5. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  6. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +8 -9
  7. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  8. package/dist/esm/core/sceneGraph/index.js +0 -2
  9. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  10. package/dist/esm/index.js +1 -0
  11. package/dist/esm/index.js.map +1 -1
  12. package/dist/esm/locales/cs-CZ/grafana-scenes.json.js +4 -0
  13. package/dist/esm/locales/cs-CZ/grafana-scenes.json.js.map +1 -1
  14. package/dist/esm/locales/de-DE/grafana-scenes.json.js +4 -0
  15. package/dist/esm/locales/de-DE/grafana-scenes.json.js.map +1 -1
  16. package/dist/esm/locales/es-ES/grafana-scenes.json.js +4 -0
  17. package/dist/esm/locales/es-ES/grafana-scenes.json.js.map +1 -1
  18. package/dist/esm/locales/fr-FR/grafana-scenes.json.js +4 -0
  19. package/dist/esm/locales/fr-FR/grafana-scenes.json.js.map +1 -1
  20. package/dist/esm/locales/hu-HU/grafana-scenes.json.js +4 -0
  21. package/dist/esm/locales/hu-HU/grafana-scenes.json.js.map +1 -1
  22. package/dist/esm/locales/id-ID/grafana-scenes.json.js +4 -0
  23. package/dist/esm/locales/id-ID/grafana-scenes.json.js.map +1 -1
  24. package/dist/esm/locales/it-IT/grafana-scenes.json.js +4 -0
  25. package/dist/esm/locales/it-IT/grafana-scenes.json.js.map +1 -1
  26. package/dist/esm/locales/ja-JP/grafana-scenes.json.js +4 -0
  27. package/dist/esm/locales/ja-JP/grafana-scenes.json.js.map +1 -1
  28. package/dist/esm/locales/ko-KR/grafana-scenes.json.js +4 -0
  29. package/dist/esm/locales/ko-KR/grafana-scenes.json.js.map +1 -1
  30. package/dist/esm/locales/nl-NL/grafana-scenes.json.js +4 -0
  31. package/dist/esm/locales/nl-NL/grafana-scenes.json.js.map +1 -1
  32. package/dist/esm/locales/pl-PL/grafana-scenes.json.js +4 -0
  33. package/dist/esm/locales/pl-PL/grafana-scenes.json.js.map +1 -1
  34. package/dist/esm/locales/pt-BR/grafana-scenes.json.js +4 -0
  35. package/dist/esm/locales/pt-BR/grafana-scenes.json.js.map +1 -1
  36. package/dist/esm/locales/pt-PT/grafana-scenes.json.js +4 -0
  37. package/dist/esm/locales/pt-PT/grafana-scenes.json.js.map +1 -1
  38. package/dist/esm/locales/ru-RU/grafana-scenes.json.js +4 -0
  39. package/dist/esm/locales/ru-RU/grafana-scenes.json.js.map +1 -1
  40. package/dist/esm/locales/sv-SE/grafana-scenes.json.js +4 -0
  41. package/dist/esm/locales/sv-SE/grafana-scenes.json.js.map +1 -1
  42. package/dist/esm/locales/tr-TR/grafana-scenes.json.js +4 -0
  43. package/dist/esm/locales/tr-TR/grafana-scenes.json.js.map +1 -1
  44. package/dist/esm/locales/zh-Hans/grafana-scenes.json.js +4 -0
  45. package/dist/esm/locales/zh-Hans/grafana-scenes.json.js.map +1 -1
  46. package/dist/esm/locales/zh-Hant/grafana-scenes.json.js +4 -0
  47. package/dist/esm/locales/zh-Hant/grafana-scenes.json.js.map +1 -1
  48. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -9
  49. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  50. package/dist/esm/variables/groupby/GroupByVariable.js +0 -8
  51. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  52. package/dist/{grafana-scenes-CgIzGE5F.js → grafana-scenes-BbJq3cEa.js} +5 -1
  53. package/dist/{grafana-scenes-B0JDDOYY.js.map → grafana-scenes-BbJq3cEa.js.map} +1 -1
  54. package/dist/{grafana-scenes-B3ypGD5T.js → grafana-scenes-BbRDYrqK.js} +5 -1
  55. package/dist/{grafana-scenes-B3ypGD5T.js.map → grafana-scenes-BbRDYrqK.js.map} +1 -1
  56. package/dist/{grafana-scenes-CY85TD5F.js → grafana-scenes-BcDO8gk4.js} +5 -1
  57. package/dist/{grafana-scenes-BGCbMCFm.js.map → grafana-scenes-BcDO8gk4.js.map} +1 -1
  58. package/dist/{grafana-scenes-CqRf9pRc.js → grafana-scenes-BtGEpoZT.js} +5 -1
  59. package/dist/{grafana-scenes-Br6NPcwR.js.map → grafana-scenes-BtGEpoZT.js.map} +1 -1
  60. package/dist/{grafana-scenes-Br6NPcwR.js → grafana-scenes-BwQ_A3lk.js} +5 -1
  61. package/dist/grafana-scenes-BwQ_A3lk.js.map +1 -0
  62. package/dist/{grafana-scenes-B0JDDOYY.js → grafana-scenes-C-CibbsO.js} +5 -1
  63. package/dist/grafana-scenes-C-CibbsO.js.map +1 -0
  64. package/dist/{grafana-scenes-Dy2CLUY9.js → grafana-scenes-CMtHJ23j.js} +5 -1
  65. package/dist/grafana-scenes-CMtHJ23j.js.map +1 -0
  66. package/dist/{grafana-scenes-DObtL2WT.js → grafana-scenes-CS09sc_L.js} +5 -1
  67. package/dist/grafana-scenes-CS09sc_L.js.map +1 -0
  68. package/dist/{grafana-scenes-DXM1LI4B.js → grafana-scenes-CfoPR_PZ.js} +5 -1
  69. package/dist/grafana-scenes-CfoPR_PZ.js.map +1 -0
  70. package/dist/{grafana-scenes-Cub9Gl0n.js → grafana-scenes-CixWq8rH.js} +5 -1
  71. package/dist/grafana-scenes-CixWq8rH.js.map +1 -0
  72. package/dist/{grafana-scenes-DlUSL8jI.js → grafana-scenes-CoXR5Z7T.js} +5 -1
  73. package/dist/grafana-scenes-CoXR5Z7T.js.map +1 -0
  74. package/dist/{grafana-scenes-CeVkPanY.js → grafana-scenes-CqMfWT-f.js} +5 -1
  75. package/dist/grafana-scenes-CqMfWT-f.js.map +1 -0
  76. package/dist/{grafana-scenes-n10eQkNF.js → grafana-scenes-CzZTvOrf.js} +5 -1
  77. package/dist/grafana-scenes-CzZTvOrf.js.map +1 -0
  78. package/dist/{grafana-scenes-BGCbMCFm.js → grafana-scenes-VOzZRdKp.js} +5 -1
  79. package/dist/grafana-scenes-VOzZRdKp.js.map +1 -0
  80. package/dist/{grafana-scenes-CBRfJ-2H.js → grafana-scenes-cTJt4LR7.js} +5 -1
  81. package/dist/grafana-scenes-cTJt4LR7.js.map +1 -0
  82. package/dist/{grafana-scenes-D5qs_fc9.js → grafana-scenes-kfW02M-K.js} +5 -1
  83. package/dist/grafana-scenes-kfW02M-K.js.map +1 -0
  84. package/dist/{grafana-scenes-COr0P0oM.js → grafana-scenes-naZktXG6.js} +5 -1
  85. package/dist/grafana-scenes-naZktXG6.js.map +1 -0
  86. package/dist/{grafana-scenes-YMli37Xh.js → grafana-scenes-zGpJY4O3.js} +5 -1
  87. package/dist/grafana-scenes-zGpJY4O3.js.map +1 -0
  88. package/dist/index.d.ts +3 -31
  89. package/dist/index.js +310 -408
  90. package/dist/index.js.map +1 -1
  91. package/package.json +2 -2
  92. package/dist/esm/behaviors/SceneInteractionProfiler.js +0 -88
  93. package/dist/esm/behaviors/SceneInteractionProfiler.js.map +0 -1
  94. package/dist/esm/core/sceneGraph/getInteractionProfiler.js +0 -19
  95. package/dist/esm/core/sceneGraph/getInteractionProfiler.js.map +0 -1
  96. package/dist/grafana-scenes-CBRfJ-2H.js.map +0 -1
  97. package/dist/grafana-scenes-COr0P0oM.js.map +0 -1
  98. package/dist/grafana-scenes-CY85TD5F.js.map +0 -1
  99. package/dist/grafana-scenes-CeVkPanY.js.map +0 -1
  100. package/dist/grafana-scenes-CgIzGE5F.js.map +0 -1
  101. package/dist/grafana-scenes-CqRf9pRc.js.map +0 -1
  102. package/dist/grafana-scenes-Cub9Gl0n.js.map +0 -1
  103. package/dist/grafana-scenes-D5qs_fc9.js.map +0 -1
  104. package/dist/grafana-scenes-DObtL2WT.js.map +0 -1
  105. package/dist/grafana-scenes-DXM1LI4B.js.map +0 -1
  106. package/dist/grafana-scenes-DlUSL8jI.js.map +0 -1
  107. package/dist/grafana-scenes-Dy2CLUY9.js.map +0 -1
  108. package/dist/grafana-scenes-YMli37Xh.js.map +0 -1
  109. package/dist/grafana-scenes-n10eQkNF.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$5 = (msg) => {
140
+ var __typeError$4 = (msg) => {
141
141
  throw TypeError(msg);
142
142
  };
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);
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);
147
147
  var _ref;
148
148
  class SceneObjectRef {
149
149
  constructor(ref) {
150
- __privateAdd$5(this, _ref);
151
- __privateSet$5(this, _ref, ref);
150
+ __privateAdd$4(this, _ref);
151
+ __privateSet$4(this, _ref, ref);
152
152
  }
153
153
  resolve() {
154
- return __privateGet$5(this, _ref);
154
+ return __privateGet$4(this, _ref);
155
155
  }
156
156
  }
157
157
  _ref = new WeakMap();
@@ -600,359 +600,13 @@ function writeSceneLog(logger, message, ...rest) {
600
600
  }
601
601
  }
602
602
 
603
- var __typeError$4 = (msg) => {
604
- throw TypeError(msg);
605
- };
606
- var __accessCheck$4 = (obj, member, msg) => member.has(obj) || __typeError$4("Cannot " + msg);
607
- var __privateGet$4 = (obj, member, getter) => (__accessCheck$4(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
608
- 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);
609
- var __privateSet$4 = (obj, member, value, setter) => (__accessCheck$4(obj, member, "write to private field"), member.set(obj, value), value);
610
- var _profileInProgress$1, _profileStartTs, _trailAnimationFrameId, _recordedTrailingSpans, _visibilityChangeHandler;
611
- const POST_STORM_WINDOW = 2e3;
612
- const SPAN_THRESHOLD = 30;
613
- const TAB_INACTIVE_THRESHOLD = 1e3;
614
- class SceneRenderProfiler {
615
- constructor(queryController) {
616
- this.queryController = queryController;
617
- __privateAdd$4(this, _profileInProgress$1, null);
618
- __privateAdd$4(this, _profileStartTs, null);
619
- __privateAdd$4(this, _trailAnimationFrameId, null);
620
- // Will keep measured lengths trailing frames
621
- __privateAdd$4(this, _recordedTrailingSpans, []);
622
- __privateAdd$4(this, _visibilityChangeHandler, null);
623
- this.measureTrailingFrames = (measurementStartTs, lastFrameTime, profileStartTs) => {
624
- var _a;
625
- const currentFrameTime = performance.now();
626
- const frameLength = currentFrameTime - lastFrameTime;
627
- if (frameLength > TAB_INACTIVE_THRESHOLD) {
628
- writeSceneLog("SceneRenderProfiler", "Tab was inactive, cancelling profile measurement");
629
- this.cancelProfile();
630
- return;
631
- }
632
- __privateGet$4(this, _recordedTrailingSpans).push(frameLength);
633
- if (currentFrameTime - measurementStartTs < POST_STORM_WINDOW) {
634
- if (__privateGet$4(this, _profileInProgress$1)) {
635
- __privateSet$4(this, _trailAnimationFrameId, requestAnimationFrame(
636
- () => this.measureTrailingFrames(measurementStartTs, currentFrameTime, profileStartTs)
637
- ));
638
- }
639
- } else {
640
- const slowFrames = processRecordedSpans(__privateGet$4(this, _recordedTrailingSpans));
641
- const slowFramesTime = slowFrames.reduce((acc, val) => acc + val, 0);
642
- writeSceneLog(
643
- this.constructor.name,
644
- "Profile tail recorded, slow frames duration:",
645
- slowFramesTime,
646
- slowFrames,
647
- __privateGet$4(this, _profileInProgress$1)
648
- );
649
- __privateSet$4(this, _recordedTrailingSpans, []);
650
- const profileDuration = measurementStartTs - profileStartTs;
651
- writeSceneLog(
652
- this.constructor.name,
653
- "Stoped recording, total measured time (network included):",
654
- profileDuration + slowFramesTime
655
- );
656
- __privateSet$4(this, _trailAnimationFrameId, null);
657
- const profileEndTs = profileStartTs + profileDuration + slowFramesTime;
658
- if (!__privateGet$4(this, _profileInProgress$1)) {
659
- return;
660
- }
661
- performance.measure(`DashboardInteraction ${__privateGet$4(this, _profileInProgress$1).origin}`, {
662
- start: profileStartTs,
663
- end: profileEndTs
664
- });
665
- const networkDuration = captureNetwork(profileStartTs, profileEndTs);
666
- if (((_a = this.queryController) == null ? void 0 : _a.state.onProfileComplete) && __privateGet$4(this, _profileInProgress$1)) {
667
- this.queryController.state.onProfileComplete({
668
- origin: __privateGet$4(this, _profileInProgress$1).origin,
669
- crumbs: __privateGet$4(this, _profileInProgress$1).crumbs,
670
- duration: profileDuration + slowFramesTime,
671
- networkDuration,
672
- startTs: profileStartTs,
673
- endTs: profileEndTs,
674
- // @ts-ignore
675
- jsHeapSizeLimit: performance.memory ? performance.memory.jsHeapSizeLimit : 0,
676
- // @ts-ignore
677
- usedJSHeapSize: performance.memory ? performance.memory.usedJSHeapSize : 0,
678
- // @ts-ignore
679
- totalJSHeapSize: performance.memory ? performance.memory.totalJSHeapSize : 0
680
- });
681
- __privateSet$4(this, _profileInProgress$1, null);
682
- __privateSet$4(this, _trailAnimationFrameId, null);
683
- }
684
- if (window.__runs) {
685
- window.__runs += `${Date.now()}, ${profileDuration + slowFramesTime}
686
- `;
687
- } else {
688
- window.__runs = `${Date.now()}, ${profileDuration + slowFramesTime}
689
- `;
690
- }
691
- }
692
- };
693
- this.setupVisibilityChangeHandler();
694
- }
695
- setQueryController(queryController) {
696
- this.queryController = queryController;
697
- }
698
- setupVisibilityChangeHandler() {
699
- if (__privateGet$4(this, _visibilityChangeHandler)) {
700
- return;
701
- }
702
- __privateSet$4(this, _visibilityChangeHandler, () => {
703
- if (document.hidden && __privateGet$4(this, _profileInProgress$1)) {
704
- writeSceneLog("SceneRenderProfiler", "Tab became inactive, cancelling profile");
705
- this.cancelProfile();
706
- }
707
- });
708
- if (typeof document !== "undefined") {
709
- document.addEventListener("visibilitychange", __privateGet$4(this, _visibilityChangeHandler));
710
- }
711
- }
712
- cleanup() {
713
- if (__privateGet$4(this, _visibilityChangeHandler) && typeof document !== "undefined") {
714
- document.removeEventListener("visibilitychange", __privateGet$4(this, _visibilityChangeHandler));
715
- __privateSet$4(this, _visibilityChangeHandler, null);
716
- }
717
- this.cancelProfile();
718
- }
719
- startProfile(name) {
720
- if (document.hidden) {
721
- writeSceneLog("SceneRenderProfiler", "Tab is inactive, skipping profile", name);
722
- return;
723
- }
724
- if (__privateGet$4(this, _profileInProgress$1)) {
725
- if (__privateGet$4(this, _trailAnimationFrameId)) {
726
- this.cancelProfile();
727
- this._startNewProfile(name, true);
728
- } else {
729
- this.addCrumb(name);
730
- }
731
- } else {
732
- this._startNewProfile(name);
733
- }
734
- }
735
- /**
736
- * Starts a new profile for performance measurement.
737
- *
738
- * @param name - The origin/trigger of the profile (e.g., 'time_range_change', 'variable_value_changed')
739
- * @param force - Whether this is a "forced" profile (true) or "clean" profile (false)
740
- * - "forced": Started by canceling an existing profile that was recording trailing frames
741
- * This happens when a new user interaction occurs before the previous one
742
- * finished measuring its performance impact
743
- * - "clean": Started when no profile is currently active
744
- */
745
- _startNewProfile(name, force = false) {
746
- __privateSet$4(this, _profileInProgress$1, { origin: name, crumbs: [] });
747
- __privateSet$4(this, _profileStartTs, performance.now());
748
- writeSceneLog(
749
- "SceneRenderProfiler",
750
- `Profile started[${force ? "forced" : "clean"}]`,
751
- __privateGet$4(this, _profileInProgress$1),
752
- __privateGet$4(this, _profileStartTs)
753
- );
754
- }
755
- recordProfileTail(measurementStartTime, profileStartTs) {
756
- __privateSet$4(this, _trailAnimationFrameId, requestAnimationFrame(
757
- () => this.measureTrailingFrames(measurementStartTime, measurementStartTime, profileStartTs)
758
- ));
759
- }
760
- tryCompletingProfile() {
761
- var _a;
762
- writeSceneLog("SceneRenderProfiler", "Trying to complete profile", __privateGet$4(this, _profileInProgress$1));
763
- if (((_a = this.queryController) == null ? void 0 : _a.runningQueriesCount()) === 0 && __privateGet$4(this, _profileInProgress$1)) {
764
- writeSceneLog("SceneRenderProfiler", "All queries completed, stopping profile");
765
- this.recordProfileTail(performance.now(), __privateGet$4(this, _profileStartTs));
766
- }
767
- }
768
- isTailRecording() {
769
- return Boolean(__privateGet$4(this, _trailAnimationFrameId));
770
- }
771
- cancelTailRecording() {
772
- if (__privateGet$4(this, _trailAnimationFrameId)) {
773
- cancelAnimationFrame(__privateGet$4(this, _trailAnimationFrameId));
774
- __privateSet$4(this, _trailAnimationFrameId, null);
775
- writeSceneLog("SceneRenderProfiler", "Cancelled recording frames, new profile started");
776
- }
777
- }
778
- // cancel profile
779
- cancelProfile() {
780
- if (__privateGet$4(this, _profileInProgress$1)) {
781
- writeSceneLog("SceneRenderProfiler", "Cancelling profile", __privateGet$4(this, _profileInProgress$1));
782
- __privateSet$4(this, _profileInProgress$1, null);
783
- if (__privateGet$4(this, _trailAnimationFrameId)) {
784
- cancelAnimationFrame(__privateGet$4(this, _trailAnimationFrameId));
785
- __privateSet$4(this, _trailAnimationFrameId, null);
786
- }
787
- __privateSet$4(this, _recordedTrailingSpans, []);
788
- }
789
- }
790
- addCrumb(crumb) {
791
- if (__privateGet$4(this, _profileInProgress$1)) {
792
- writeSceneLog("SceneRenderProfiler", "Adding crumb:", crumb);
793
- __privateGet$4(this, _profileInProgress$1).crumbs.push(crumb);
794
- }
795
- }
796
- }
797
- _profileInProgress$1 = new WeakMap();
798
- _profileStartTs = new WeakMap();
799
- _trailAnimationFrameId = new WeakMap();
800
- _recordedTrailingSpans = new WeakMap();
801
- _visibilityChangeHandler = new WeakMap();
802
- function processRecordedSpans(spans) {
803
- for (let i = spans.length - 1; i >= 0; i--) {
804
- if (spans[i] > SPAN_THRESHOLD) {
805
- return spans.slice(0, i + 1);
806
- }
807
- }
808
- return [spans[0]];
809
- }
810
- function captureNetwork(startTs, endTs) {
811
- const entries = performance.getEntriesByType("resource");
812
- performance.clearResourceTimings();
813
- const networkEntries = entries.filter(
814
- (entry) => entry.startTime >= startTs && entry.startTime <= endTs && entry.responseEnd >= startTs && entry.responseEnd <= endTs
815
- );
816
- for (const entry of networkEntries) {
817
- performance.measure("Network entry " + entry.name, {
818
- start: entry.startTime,
819
- end: entry.responseEnd
820
- });
821
- }
822
- return calculateNetworkTime(networkEntries);
823
- }
824
- function calculateNetworkTime(requests) {
825
- if (requests.length === 0) {
826
- return 0;
827
- }
828
- requests.sort((a, b) => a.startTime - b.startTime);
829
- let totalNetworkTime = 0;
830
- let currentStart = requests[0].startTime;
831
- let currentEnd = requests[0].responseEnd;
832
- for (let i = 1; i < requests.length; i++) {
833
- if (requests[i].startTime <= currentEnd) {
834
- currentEnd = Math.max(currentEnd, requests[i].responseEnd);
835
- } else {
836
- totalNetworkTime += currentEnd - currentStart;
837
- currentStart = requests[i].startTime;
838
- currentEnd = requests[i].responseEnd;
839
- }
840
- }
841
- totalNetworkTime += currentEnd - currentStart;
842
- return totalNetworkTime;
843
- }
844
- const REFRESH_INTERACTION = "refresh";
845
- const TIME_RANGE_CHANGE_INTERACTION = "time_range_change";
846
- const FILTER_REMOVED_INTERACTION = "filter_removed";
847
- const FILTER_CHANGED_INTERACTION = "filter_changed";
848
- const FILTER_RESTORED_INTERACTION = "filter_restored";
849
- const VARIABLE_VALUE_CHANGED_INTERACTION = "variable_value_changed";
850
- const SCOPES_CHANGED_INTERACTION = "scopes_changed";
851
-
852
603
  var __typeError$3 = (msg) => {
853
604
  throw TypeError(msg);
854
605
  };
855
606
  var __accessCheck$3 = (obj, member, msg) => member.has(obj) || __typeError$3("Cannot " + msg);
856
- var __privateGet$3 = (obj, member, getter) => (__accessCheck$3(obj, member, "read from private field"), member.get(obj));
607
+ var __privateGet$3 = (obj, member, getter) => (__accessCheck$3(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
857
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);
858
609
  var __privateSet$3 = (obj, member, value, setter) => (__accessCheck$3(obj, member, "write to private field"), member.set(obj, value), value);
859
- var _profileInProgress;
860
- function isInteractionProfiler(obj) {
861
- return obj && typeof obj === "object" && "isInteractionProfiler" in obj;
862
- }
863
- class SceneInteractionProfiler extends SceneObjectBase {
864
- constructor() {
865
- super(...arguments);
866
- this.isInteractionProfiler = true;
867
- __privateAdd$3(this, _profileInProgress, null);
868
- }
869
- startProfile(interaction) {
870
- if (!this.state.enableProfiling) {
871
- return;
872
- }
873
- if (__privateGet$3(this, _profileInProgress)) {
874
- this.cancelProfile();
875
- }
876
- __privateSet$3(this, _profileInProgress, {
877
- interaction,
878
- startTs: performance.now()
879
- });
880
- writeSceneLog("SceneInteractionProfiler", "Started profiling interaction:", interaction);
881
- }
882
- stopProfile() {
883
- if (!__privateGet$3(this, _profileInProgress)) {
884
- return;
885
- }
886
- const endTs = performance.now();
887
- const interactionDuration = endTs - __privateGet$3(this, _profileInProgress).startTs;
888
- const networkDuration = captureNetwork(__privateGet$3(this, _profileInProgress).startTs, endTs);
889
- const result = {
890
- interaction: __privateGet$3(this, _profileInProgress).interaction,
891
- interactionDuration,
892
- networkDuration,
893
- startTs: __privateGet$3(this, _profileInProgress).startTs,
894
- endTs
895
- };
896
- writeSceneLog("SceneInteractionProfiler", "Completed profile:", result);
897
- if (this.state.onProfileComplete) {
898
- this.state.onProfileComplete(result);
899
- }
900
- performance.mark(`${__privateGet$3(this, _profileInProgress).interaction}_start`, {
901
- startTime: __privateGet$3(this, _profileInProgress).startTs
902
- });
903
- performance.mark(`${__privateGet$3(this, _profileInProgress).interaction}_end`, {
904
- startTime: endTs
905
- });
906
- performance.measure(
907
- `Interaction_${__privateGet$3(this, _profileInProgress).interaction}`,
908
- `${__privateGet$3(this, _profileInProgress).interaction}_start`,
909
- `${__privateGet$3(this, _profileInProgress).interaction}_end`
910
- );
911
- __privateSet$3(this, _profileInProgress, null);
912
- }
913
- cancelProfile() {
914
- if (__privateGet$3(this, _profileInProgress)) {
915
- writeSceneLog("SceneInteractionProfiler", "Cancelled profile:", __privateGet$3(this, _profileInProgress).interaction);
916
- __privateSet$3(this, _profileInProgress, null);
917
- }
918
- }
919
- isProfileActive() {
920
- return __privateGet$3(this, _profileInProgress) !== null;
921
- }
922
- getCurrentInteraction() {
923
- var _a, _b;
924
- return (_b = (_a = __privateGet$3(this, _profileInProgress)) == null ? void 0 : _a.interaction) != null ? _b : null;
925
- }
926
- }
927
- _profileInProgress = new WeakMap();
928
- const USER_INTERACTIONS = {
929
- ADHOC_KEYS_DROPDOWN: "adhoc_keys_dropdown",
930
- ADHOC_VALUES_DROPDOWN: "adhoc_values_dropdown",
931
- GROUPBY_DROPDOWN: "groupby_dropdown"
932
- };
933
-
934
- function getInteractionProfiler(sceneObject) {
935
- let parent = sceneObject;
936
- while (parent) {
937
- if (parent.state.$behaviors) {
938
- for (const behavior of parent.state.$behaviors) {
939
- if (isInteractionProfiler(behavior)) {
940
- return behavior;
941
- }
942
- }
943
- }
944
- parent = parent.parent;
945
- }
946
- return void 0;
947
- }
948
-
949
- var __typeError$2 = (msg) => {
950
- throw TypeError(msg);
951
- };
952
- var __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$2("Cannot " + msg);
953
- var __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
954
- 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);
955
- var __privateSet$2 = (obj, member, value, setter) => (__accessCheck$2(obj, member, "write to private field"), member.set(obj, value), value);
956
610
  var _running, _tryCompleteProfileFrameId;
957
611
  function isQueryController(s) {
958
612
  return "isQueryController" in s;
@@ -962,10 +616,10 @@ class SceneQueryController extends SceneObjectBase {
962
616
  super({ ...state, isRunning: false });
963
617
  this.profiler = profiler;
964
618
  this.isQueryController = true;
965
- __privateAdd$2(this, _running, /* @__PURE__ */ new Set());
966
- __privateAdd$2(this, _tryCompleteProfileFrameId, null);
619
+ __privateAdd$3(this, _running, /* @__PURE__ */ new Set());
620
+ __privateAdd$3(this, _tryCompleteProfileFrameId, null);
967
621
  this.runningQueriesCount = () => {
968
- return __privateGet$2(this, _running).size;
622
+ return __privateGet$3(this, _running).size;
969
623
  };
970
624
  if (profiler) {
971
625
  this.profiler = profiler;
@@ -974,7 +628,7 @@ class SceneQueryController extends SceneObjectBase {
974
628
  this.addActivationHandler(() => {
975
629
  var _a;
976
630
  (_a = this.profiler) == null ? void 0 : _a.setQueryController(this);
977
- return () => __privateGet$2(this, _running).clear();
631
+ return () => __privateGet$3(this, _running).clear();
978
632
  });
979
633
  }
980
634
  startProfile(name) {
@@ -989,19 +643,19 @@ class SceneQueryController extends SceneObjectBase {
989
643
  (_a = this.profiler) == null ? void 0 : _a.cancelProfile();
990
644
  }
991
645
  queryStarted(entry) {
992
- __privateGet$2(this, _running).add(entry);
646
+ __privateGet$3(this, _running).add(entry);
993
647
  this.changeRunningQueryCount(1, entry);
994
648
  if (!this.state.isRunning) {
995
649
  this.setState({ isRunning: true });
996
650
  }
997
651
  }
998
652
  queryCompleted(entry) {
999
- if (!__privateGet$2(this, _running).has(entry)) {
653
+ if (!__privateGet$3(this, _running).has(entry)) {
1000
654
  return;
1001
655
  }
1002
- __privateGet$2(this, _running).delete(entry);
656
+ __privateGet$3(this, _running).delete(entry);
1003
657
  this.changeRunningQueryCount(-1);
1004
- if (__privateGet$2(this, _running).size === 0) {
658
+ if (__privateGet$3(this, _running).size === 0) {
1005
659
  this.setState({ isRunning: false });
1006
660
  }
1007
661
  }
@@ -1018,10 +672,10 @@ class SceneQueryController extends SceneObjectBase {
1018
672
  }
1019
673
  }
1020
674
  if (this.state.enableProfiling) {
1021
- if (__privateGet$2(this, _tryCompleteProfileFrameId)) {
1022
- cancelAnimationFrame(__privateGet$2(this, _tryCompleteProfileFrameId));
675
+ if (__privateGet$3(this, _tryCompleteProfileFrameId)) {
676
+ cancelAnimationFrame(__privateGet$3(this, _tryCompleteProfileFrameId));
1023
677
  }
1024
- __privateSet$2(this, _tryCompleteProfileFrameId, requestAnimationFrame(() => {
678
+ __privateSet$3(this, _tryCompleteProfileFrameId, requestAnimationFrame(() => {
1025
679
  var _a2;
1026
680
  (_a2 = this.profiler) == null ? void 0 : _a2.tryCompletingProfile();
1027
681
  }));
@@ -1029,7 +683,7 @@ class SceneQueryController extends SceneObjectBase {
1029
683
  }
1030
684
  cancelAll() {
1031
685
  var _a;
1032
- for (const entry of __privateGet$2(this, _running).values()) {
686
+ for (const entry of __privateGet$3(this, _running).values()) {
1033
687
  (_a = entry.cancel) == null ? void 0 : _a.call(entry);
1034
688
  }
1035
689
  }
@@ -1199,6 +853,255 @@ function isValid$1(value, roundUp, timeZone) {
1199
853
  return parsed.isValid();
1200
854
  }
1201
855
 
856
+ var __typeError$2 = (msg) => {
857
+ throw TypeError(msg);
858
+ };
859
+ var __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$2("Cannot " + msg);
860
+ var __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
861
+ 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
+ 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;
864
+ const POST_STORM_WINDOW = 2e3;
865
+ const SPAN_THRESHOLD = 30;
866
+ const TAB_INACTIVE_THRESHOLD = 1e3;
867
+ class SceneRenderProfiler {
868
+ constructor(queryController) {
869
+ this.queryController = queryController;
870
+ __privateAdd$2(this, _profileInProgress, null);
871
+ __privateAdd$2(this, _profileStartTs, null);
872
+ __privateAdd$2(this, _trailAnimationFrameId, null);
873
+ // Will keep measured lengths trailing frames
874
+ __privateAdd$2(this, _recordedTrailingSpans, []);
875
+ __privateAdd$2(this, _visibilityChangeHandler, null);
876
+ this.measureTrailingFrames = (measurementStartTs, lastFrameTime, profileStartTs) => {
877
+ var _a;
878
+ const currentFrameTime = performance.now();
879
+ const frameLength = currentFrameTime - lastFrameTime;
880
+ if (frameLength > TAB_INACTIVE_THRESHOLD) {
881
+ writeSceneLog("SceneRenderProfiler", "Tab was inactive, cancelling profile measurement");
882
+ this.cancelProfile();
883
+ return;
884
+ }
885
+ __privateGet$2(this, _recordedTrailingSpans).push(frameLength);
886
+ if (currentFrameTime - measurementStartTs < POST_STORM_WINDOW) {
887
+ if (__privateGet$2(this, _profileInProgress)) {
888
+ __privateSet$2(this, _trailAnimationFrameId, requestAnimationFrame(
889
+ () => this.measureTrailingFrames(measurementStartTs, currentFrameTime, profileStartTs)
890
+ ));
891
+ }
892
+ } else {
893
+ const slowFrames = processRecordedSpans(__privateGet$2(this, _recordedTrailingSpans));
894
+ const slowFramesTime = slowFrames.reduce((acc, val) => acc + val, 0);
895
+ writeSceneLog(
896
+ this.constructor.name,
897
+ "Profile tail recorded, slow frames duration:",
898
+ slowFramesTime,
899
+ slowFrames,
900
+ __privateGet$2(this, _profileInProgress)
901
+ );
902
+ __privateSet$2(this, _recordedTrailingSpans, []);
903
+ const profileDuration = measurementStartTs - profileStartTs;
904
+ writeSceneLog(
905
+ this.constructor.name,
906
+ "Stoped recording, total measured time (network included):",
907
+ profileDuration + slowFramesTime
908
+ );
909
+ __privateSet$2(this, _trailAnimationFrameId, null);
910
+ const profileEndTs = profileStartTs + profileDuration + slowFramesTime;
911
+ if (!__privateGet$2(this, _profileInProgress)) {
912
+ return;
913
+ }
914
+ performance.measure(`DashboardInteraction ${__privateGet$2(this, _profileInProgress).origin}`, {
915
+ start: profileStartTs,
916
+ end: profileEndTs
917
+ });
918
+ const networkDuration = captureNetwork(profileStartTs, profileEndTs);
919
+ if (((_a = this.queryController) == null ? void 0 : _a.state.onProfileComplete) && __privateGet$2(this, _profileInProgress)) {
920
+ this.queryController.state.onProfileComplete({
921
+ origin: __privateGet$2(this, _profileInProgress).origin,
922
+ crumbs: __privateGet$2(this, _profileInProgress).crumbs,
923
+ duration: profileDuration + slowFramesTime,
924
+ networkDuration,
925
+ startTs: profileStartTs,
926
+ endTs: profileEndTs,
927
+ // @ts-ignore
928
+ jsHeapSizeLimit: performance.memory ? performance.memory.jsHeapSizeLimit : 0,
929
+ // @ts-ignore
930
+ usedJSHeapSize: performance.memory ? performance.memory.usedJSHeapSize : 0,
931
+ // @ts-ignore
932
+ totalJSHeapSize: performance.memory ? performance.memory.totalJSHeapSize : 0
933
+ });
934
+ __privateSet$2(this, _profileInProgress, null);
935
+ __privateSet$2(this, _trailAnimationFrameId, null);
936
+ }
937
+ if (window.__runs) {
938
+ window.__runs += `${Date.now()}, ${profileDuration + slowFramesTime}
939
+ `;
940
+ } else {
941
+ window.__runs = `${Date.now()}, ${profileDuration + slowFramesTime}
942
+ `;
943
+ }
944
+ }
945
+ };
946
+ this.setupVisibilityChangeHandler();
947
+ }
948
+ setQueryController(queryController) {
949
+ this.queryController = queryController;
950
+ }
951
+ setupVisibilityChangeHandler() {
952
+ if (__privateGet$2(this, _visibilityChangeHandler)) {
953
+ return;
954
+ }
955
+ __privateSet$2(this, _visibilityChangeHandler, () => {
956
+ if (document.hidden && __privateGet$2(this, _profileInProgress)) {
957
+ writeSceneLog("SceneRenderProfiler", "Tab became inactive, cancelling profile");
958
+ this.cancelProfile();
959
+ }
960
+ });
961
+ if (typeof document !== "undefined") {
962
+ document.addEventListener("visibilitychange", __privateGet$2(this, _visibilityChangeHandler));
963
+ }
964
+ }
965
+ cleanup() {
966
+ if (__privateGet$2(this, _visibilityChangeHandler) && typeof document !== "undefined") {
967
+ document.removeEventListener("visibilitychange", __privateGet$2(this, _visibilityChangeHandler));
968
+ __privateSet$2(this, _visibilityChangeHandler, null);
969
+ }
970
+ this.cancelProfile();
971
+ }
972
+ startProfile(name) {
973
+ if (document.hidden) {
974
+ writeSceneLog("SceneRenderProfiler", "Tab is inactive, skipping profile", name);
975
+ return;
976
+ }
977
+ if (__privateGet$2(this, _profileInProgress)) {
978
+ if (__privateGet$2(this, _trailAnimationFrameId)) {
979
+ this.cancelProfile();
980
+ this._startNewProfile(name, true);
981
+ } else {
982
+ this.addCrumb(name);
983
+ }
984
+ } else {
985
+ this._startNewProfile(name);
986
+ }
987
+ }
988
+ /**
989
+ * Starts a new profile for performance measurement.
990
+ *
991
+ * @param name - The origin/trigger of the profile (e.g., 'time_range_change', 'variable_value_changed')
992
+ * @param force - Whether this is a "forced" profile (true) or "clean" profile (false)
993
+ * - "forced": Started by canceling an existing profile that was recording trailing frames
994
+ * This happens when a new user interaction occurs before the previous one
995
+ * finished measuring its performance impact
996
+ * - "clean": Started when no profile is currently active
997
+ */
998
+ _startNewProfile(name, force = false) {
999
+ __privateSet$2(this, _profileInProgress, { origin: name, crumbs: [] });
1000
+ __privateSet$2(this, _profileStartTs, performance.now());
1001
+ writeSceneLog(
1002
+ "SceneRenderProfiler",
1003
+ `Profile started[${force ? "forced" : "clean"}]`,
1004
+ __privateGet$2(this, _profileInProgress),
1005
+ __privateGet$2(this, _profileStartTs)
1006
+ );
1007
+ }
1008
+ recordProfileTail(measurementStartTime, profileStartTs) {
1009
+ __privateSet$2(this, _trailAnimationFrameId, requestAnimationFrame(
1010
+ () => this.measureTrailingFrames(measurementStartTime, measurementStartTime, profileStartTs)
1011
+ ));
1012
+ }
1013
+ tryCompletingProfile() {
1014
+ var _a;
1015
+ writeSceneLog("SceneRenderProfiler", "Trying to complete profile", __privateGet$2(this, _profileInProgress));
1016
+ if (((_a = this.queryController) == null ? void 0 : _a.runningQueriesCount()) === 0 && __privateGet$2(this, _profileInProgress)) {
1017
+ writeSceneLog("SceneRenderProfiler", "All queries completed, stopping profile");
1018
+ this.recordProfileTail(performance.now(), __privateGet$2(this, _profileStartTs));
1019
+ }
1020
+ }
1021
+ isTailRecording() {
1022
+ return Boolean(__privateGet$2(this, _trailAnimationFrameId));
1023
+ }
1024
+ cancelTailRecording() {
1025
+ if (__privateGet$2(this, _trailAnimationFrameId)) {
1026
+ cancelAnimationFrame(__privateGet$2(this, _trailAnimationFrameId));
1027
+ __privateSet$2(this, _trailAnimationFrameId, null);
1028
+ writeSceneLog("SceneRenderProfiler", "Cancelled recording frames, new profile started");
1029
+ }
1030
+ }
1031
+ // cancel profile
1032
+ cancelProfile() {
1033
+ if (__privateGet$2(this, _profileInProgress)) {
1034
+ writeSceneLog("SceneRenderProfiler", "Cancelling profile", __privateGet$2(this, _profileInProgress));
1035
+ __privateSet$2(this, _profileInProgress, null);
1036
+ if (__privateGet$2(this, _trailAnimationFrameId)) {
1037
+ cancelAnimationFrame(__privateGet$2(this, _trailAnimationFrameId));
1038
+ __privateSet$2(this, _trailAnimationFrameId, null);
1039
+ }
1040
+ __privateSet$2(this, _recordedTrailingSpans, []);
1041
+ }
1042
+ }
1043
+ addCrumb(crumb) {
1044
+ if (__privateGet$2(this, _profileInProgress)) {
1045
+ writeSceneLog("SceneRenderProfiler", "Adding crumb:", crumb);
1046
+ __privateGet$2(this, _profileInProgress).crumbs.push(crumb);
1047
+ }
1048
+ }
1049
+ }
1050
+ _profileInProgress = new WeakMap();
1051
+ _profileStartTs = new WeakMap();
1052
+ _trailAnimationFrameId = new WeakMap();
1053
+ _recordedTrailingSpans = new WeakMap();
1054
+ _visibilityChangeHandler = new WeakMap();
1055
+ function processRecordedSpans(spans) {
1056
+ for (let i = spans.length - 1; i >= 0; i--) {
1057
+ if (spans[i] > SPAN_THRESHOLD) {
1058
+ return spans.slice(0, i + 1);
1059
+ }
1060
+ }
1061
+ return [spans[0]];
1062
+ }
1063
+ function captureNetwork(startTs, endTs) {
1064
+ const entries = performance.getEntriesByType("resource");
1065
+ performance.clearResourceTimings();
1066
+ const networkEntries = entries.filter(
1067
+ (entry) => entry.startTime >= startTs && entry.startTime <= endTs && entry.responseEnd >= startTs && entry.responseEnd <= endTs
1068
+ );
1069
+ for (const entry of networkEntries) {
1070
+ performance.measure("Network entry " + entry.name, {
1071
+ start: entry.startTime,
1072
+ end: entry.responseEnd
1073
+ });
1074
+ }
1075
+ return calculateNetworkTime(networkEntries);
1076
+ }
1077
+ function calculateNetworkTime(requests) {
1078
+ if (requests.length === 0) {
1079
+ return 0;
1080
+ }
1081
+ requests.sort((a, b) => a.startTime - b.startTime);
1082
+ let totalNetworkTime = 0;
1083
+ let currentStart = requests[0].startTime;
1084
+ let currentEnd = requests[0].responseEnd;
1085
+ for (let i = 1; i < requests.length; i++) {
1086
+ if (requests[i].startTime <= currentEnd) {
1087
+ currentEnd = Math.max(currentEnd, requests[i].responseEnd);
1088
+ } else {
1089
+ totalNetworkTime += currentEnd - currentStart;
1090
+ currentStart = requests[i].startTime;
1091
+ currentEnd = requests[i].responseEnd;
1092
+ }
1093
+ }
1094
+ totalNetworkTime += currentEnd - currentStart;
1095
+ return totalNetworkTime;
1096
+ }
1097
+ const REFRESH_INTERACTION = "refresh";
1098
+ const TIME_RANGE_CHANGE_INTERACTION = "time_range_change";
1099
+ const FILTER_REMOVED_INTERACTION = "filter_removed";
1100
+ const FILTER_CHANGED_INTERACTION = "filter_changed";
1101
+ const FILTER_RESTORED_INTERACTION = "filter_restored";
1102
+ const VARIABLE_VALUE_CHANGED_INTERACTION = "variable_value_changed";
1103
+ const SCOPES_CHANGED_INTERACTION = "scopes_changed";
1104
+
1202
1105
  class SceneTimeRange extends SceneObjectBase {
1203
1106
  constructor(state = {}) {
1204
1107
  var _a;
@@ -3784,13 +3687,10 @@ function GroupByVariableRenderer({ model }) {
3784
3687
  setUncommittedValue(newValue);
3785
3688
  },
3786
3689
  onOpenMenu: async () => {
3787
- const profiler = getInteractionProfiler(model);
3788
- profiler == null ? void 0 : profiler.startProfile(USER_INTERACTIONS.GROUPBY_DROPDOWN);
3789
3690
  setIsFetchingOptions(true);
3790
3691
  await rxjs.lastValueFrom(model.validateAndUpdate());
3791
3692
  setIsFetchingOptions(false);
3792
3693
  setIsOptionsOpen(true);
3793
- profiler == null ? void 0 : profiler.stopProfile();
3794
3694
  },
3795
3695
  onCloseMenu: () => {
3796
3696
  setIsOptionsOpen(false);
@@ -3840,13 +3740,10 @@ function GroupByVariableRenderer({ model }) {
3840
3740
  }
3841
3741
  },
3842
3742
  onOpenMenu: async () => {
3843
- const profiler = getInteractionProfiler(model);
3844
- profiler == null ? void 0 : profiler.startProfile(USER_INTERACTIONS.GROUPBY_DROPDOWN);
3845
3743
  setIsFetchingOptions(true);
3846
3744
  await rxjs.lastValueFrom(model.validateAndUpdate());
3847
3745
  setIsFetchingOptions(false);
3848
3746
  setIsOptionsOpen(true);
3849
- profiler == null ? void 0 : profiler.stopProfile();
3850
3747
  },
3851
3748
  onCloseMenu: () => {
3852
3749
  setIsOptionsOpen(false);
@@ -5011,11 +4908,6 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
5011
4908
  const handleFetchOptions = React.useCallback(
5012
4909
  async (inputType) => {
5013
4910
  var _a2;
5014
- const profiler = getInteractionProfiler(model);
5015
- const interactionName = inputType === "key" ? USER_INTERACTIONS.ADHOC_KEYS_DROPDOWN : USER_INTERACTIONS.ADHOC_VALUES_DROPDOWN;
5016
- if (inputType !== "operator") {
5017
- profiler == null ? void 0 : profiler.startProfile(interactionName);
5018
- }
5019
4911
  setOptionsError(false);
5020
4912
  setOptionsLoading(true);
5021
4913
  setOptions([]);
@@ -5029,7 +4921,6 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
5029
4921
  options2 = await model._getValuesFor(filter);
5030
4922
  }
5031
4923
  if (filterInputTypeRef.current !== inputType) {
5032
- profiler == null ? void 0 : profiler.stopProfile();
5033
4924
  return;
5034
4925
  }
5035
4926
  setOptions(options2);
@@ -5042,7 +4933,6 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
5042
4933
  setOptionsError(true);
5043
4934
  }
5044
4935
  setOptionsLoading(false);
5045
- profiler == null ? void 0 : profiler.stopProfile();
5046
4936
  },
5047
4937
  [filter, model]
5048
4938
  );
@@ -8090,7 +7980,6 @@ const sceneGraph = {
8090
7980
  findAllObjects,
8091
7981
  getAncestor,
8092
7982
  getQueryController,
8093
- getInteractionProfiler,
8094
7983
  findDescendents,
8095
7984
  getScopes
8096
7985
  };
@@ -9590,7 +9479,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
9590
9479
  ActWhenVariableChanged: ActWhenVariableChanged,
9591
9480
  CursorSync: CursorSync,
9592
9481
  LiveNowTimer: LiveNowTimer,
9593
- SceneInteractionProfiler: SceneInteractionProfiler,
9594
9482
  SceneQueryController: SceneQueryController
9595
9483
  });
9596
9484
 
@@ -11634,15 +11522,14 @@ function SceneGridLayoutRenderer({ model }) {
11634
11522
  ))
11635
11523
  );
11636
11524
  };
11637
- return /* @__PURE__ */ React__default.default.createElement(
11638
- "div",
11639
- {
11640
- ref: outerDivRef,
11641
- style: { flex: "1 1 auto", position: "relative", zIndex: 1, width: "100%" }
11642
- },
11643
- renderGrid(width, height)
11644
- );
11525
+ return /* @__PURE__ */ React__default.default.createElement("div", { ref: outerDivRef, className: gridWrapperClass }, renderGrid(width, height));
11645
11526
  }
11527
+ const gridWrapperClass = css.css({
11528
+ flex: "1 1 auto",
11529
+ position: "relative",
11530
+ zIndex: 1,
11531
+ width: "100%"
11532
+ });
11646
11533
  const GridItemWrapper = React__default.default.forwardRef((props, ref) => {
11647
11534
  var _a;
11648
11535
  const { grid, layoutItem, index, totalCount, isLazy, style, onLoad, onChange, children, ...divProps } = props;
@@ -11847,6 +11734,20 @@ const _SceneGridLayout = class _SceneGridLayout extends SceneObjectBase {
11847
11734
  }
11848
11735
  };
11849
11736
  }
11737
+ adjustYPositions(after, amount) {
11738
+ for (const child of this.state.children) {
11739
+ if (child.state.y > after) {
11740
+ child.setState({ y: child.state.y + amount });
11741
+ }
11742
+ if (child instanceof SceneGridRow) {
11743
+ for (const rowChild of child.state.children) {
11744
+ if (rowChild.state.y > after) {
11745
+ rowChild.setState({ y: rowChild.state.y + amount });
11746
+ }
11747
+ }
11748
+ }
11749
+ }
11750
+ }
11850
11751
  toggleRow(row) {
11851
11752
  var _a, _b;
11852
11753
  const isCollapsed = row.state.isCollapsed;
@@ -14887,25 +14788,25 @@ const VizConfigBuilders = {
14887
14788
 
14888
14789
  function __variableDynamicImportRuntime0__(path) {
14889
14790
  switch (path) {
14890
- case '../locales/cs-CZ/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CY85TD5F.js'); });
14891
- case '../locales/de-DE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-n10eQkNF.js'); });
14791
+ case '../locales/cs-CZ/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BcDO8gk4.js'); });
14792
+ case '../locales/de-DE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CzZTvOrf.js'); });
14892
14793
  case '../locales/en-US/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-C_CT7peT.js'); });
14893
- case '../locales/es-ES/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-YMli37Xh.js'); });
14894
- case '../locales/fr-FR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DXM1LI4B.js'); });
14895
- case '../locales/hu-HU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DlUSL8jI.js'); });
14896
- case '../locales/id-ID/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-D5qs_fc9.js'); });
14897
- case '../locales/it-IT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Dy2CLUY9.js'); });
14898
- case '../locales/ja-JP/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CBRfJ-2H.js'); });
14899
- case '../locales/ko-KR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CgIzGE5F.js'); });
14900
- case '../locales/nl-NL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Br6NPcwR.js'); });
14901
- case '../locales/pl-PL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-B3ypGD5T.js'); });
14902
- case '../locales/pt-BR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-COr0P0oM.js'); });
14903
- case '../locales/pt-PT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-Cub9Gl0n.js'); });
14904
- case '../locales/ru-RU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BGCbMCFm.js'); });
14905
- case '../locales/sv-SE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CqRf9pRc.js'); });
14906
- case '../locales/tr-TR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CeVkPanY.js'); });
14907
- case '../locales/zh-Hans/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-DObtL2WT.js'); });
14908
- case '../locales/zh-Hant/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-B0JDDOYY.js'); });
14794
+ case '../locales/es-ES/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-zGpJY4O3.js'); });
14795
+ case '../locales/fr-FR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CfoPR_PZ.js'); });
14796
+ case '../locales/hu-HU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CoXR5Z7T.js'); });
14797
+ case '../locales/id-ID/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-kfW02M-K.js'); });
14798
+ case '../locales/it-IT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CMtHJ23j.js'); });
14799
+ case '../locales/ja-JP/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-cTJt4LR7.js'); });
14800
+ case '../locales/ko-KR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BbJq3cEa.js'); });
14801
+ case '../locales/nl-NL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BwQ_A3lk.js'); });
14802
+ case '../locales/pl-PL/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BbRDYrqK.js'); });
14803
+ case '../locales/pt-BR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-naZktXG6.js'); });
14804
+ case '../locales/pt-PT/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CixWq8rH.js'); });
14805
+ case '../locales/ru-RU/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-VOzZRdKp.js'); });
14806
+ case '../locales/sv-SE/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-BtGEpoZT.js'); });
14807
+ case '../locales/tr-TR/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CqMfWT-f.js'); });
14808
+ case '../locales/zh-Hans/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-CS09sc_L.js'); });
14809
+ case '../locales/zh-Hant/grafana-scenes.json': return Promise.resolve().then(function () { return require('./grafana-scenes-C-CibbsO.js'); });
14909
14810
  default: return new Promise(function(resolve, reject) {
14910
14811
  (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
14911
14812
  reject.bind(null, new Error("Unknown variable dynamic import: " + path))
@@ -15028,6 +14929,7 @@ exports.VizPanelExploreButton = VizPanelExploreButton;
15028
14929
  exports.VizPanelMenu = VizPanelMenu;
15029
14930
  exports.behaviors = index$1;
15030
14931
  exports.dataLayers = index;
14932
+ exports.escapeUrlPipeDelimiters = escapeUrlPipeDelimiters;
15031
14933
  exports.formatRegistry = formatRegistry;
15032
14934
  exports.getExploreURL = getExploreURL;
15033
14935
  exports.isCustomVariableValue = isCustomVariableValue;