ember-inspector 4.13.1-alpha.2025.6.19 → 4.13.1-alpha.2025.6.21

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 (32) hide show
  1. package/dist/bookmarklet/panes-3-16-0/assets/{chunk.524.7b97a9e9caaec2bf8dd7.js → chunk.524.ef839d668b8055a7b20a.js} +4 -4
  2. package/dist/{firefox/panes-3-16-0/assets/chunk.582.fb8575406d3fbe1d4a24.js → bookmarklet/panes-3-16-0/assets/chunk.582.3ef89902373ee8f2cf0a.js} +5 -5
  3. package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.js +2 -2
  4. package/dist/bookmarklet/panes-3-16-0/ember_debug.js +68 -54
  5. package/dist/bookmarklet/panes-3-16-0/index.html +2 -2
  6. package/dist/chrome/manifest.json +2 -2
  7. package/dist/{firefox/panes-3-16-0/assets/chunk.524.7b97a9e9caaec2bf8dd7.js → chrome/panes-3-16-0/assets/chunk.524.ef839d668b8055a7b20a.js} +4 -4
  8. package/dist/{bookmarklet/panes-3-16-0/assets/chunk.582.fb8575406d3fbe1d4a24.js → chrome/panes-3-16-0/assets/chunk.582.3ef89902373ee8f2cf0a.js} +5 -5
  9. package/dist/chrome/panes-3-16-0/assets/ember-inspector.js +2 -2
  10. package/dist/chrome/panes-3-16-0/ember_debug.js +68 -54
  11. package/dist/chrome/panes-3-16-0/index.html +2 -2
  12. package/dist/firefox/manifest.json +2 -2
  13. package/dist/{chrome/panes-3-16-0/assets/chunk.524.7b97a9e9caaec2bf8dd7.js → firefox/panes-3-16-0/assets/chunk.524.ef839d668b8055a7b20a.js} +4 -4
  14. package/dist/{websocket/assets/chunk.582.fb8575406d3fbe1d4a24.js → firefox/panes-3-16-0/assets/chunk.582.3ef89902373ee8f2cf0a.js} +5 -5
  15. package/dist/firefox/panes-3-16-0/assets/ember-inspector.js +2 -2
  16. package/dist/firefox/panes-3-16-0/ember_debug.js +68 -54
  17. package/dist/firefox/panes-3-16-0/index.html +2 -2
  18. package/dist/websocket/assets/{chunk.524.7b97a9e9caaec2bf8dd7.js → chunk.524.ef839d668b8055a7b20a.js} +4 -4
  19. package/dist/{chrome/panes-3-16-0/assets/chunk.582.fb8575406d3fbe1d4a24.js → websocket/assets/chunk.582.3ef89902373ee8f2cf0a.js} +5 -5
  20. package/dist/websocket/assets/ember-inspector.js +2 -2
  21. package/dist/websocket/ember_debug.js +68 -54
  22. package/dist/websocket/index.html +2 -2
  23. package/ember_debug/libs/render-tree.js +23 -25
  24. package/ember_debug/libs/view-inspection.js +10 -2
  25. package/ember_debug/object-inspector.js +15 -30
  26. package/ember_debug/utils/ember-object-names.js +4 -5
  27. package/ember_debug/utils/ember.js +20 -0
  28. package/ember_debug/utils/type-check.js +2 -2
  29. package/ember_debug/view-debug.js +5 -0
  30. package/package.json +11 -5
  31. package/skeletons/web-extension/manifest.json +2 -2
  32. package/tests/ember_debug/view-debug-test.js +78 -1
@@ -419,11 +419,21 @@ define('ember-debug/ember', ['exports'], (function (exports) { 'use strict';
419
419
  exports.captureRenderTree = Ember._captureRenderTree;
420
420
  exports.getEnv = () => Ember.ENV;
421
421
  let Debug = emberSafeRequire('@ember/debug');
422
+ let InternalsMetal = emberSafeRequire('@ember/-internals/metal');
423
+ let InternalsRuntime = emberSafeRequire('@ember/-internals/runtime');
422
424
  let InternalsUtils = emberSafeRequire('@ember/-internals/utils');
425
+ let InternalsViews = emberSafeRequire('@ember/-internals/views');
426
+ let EmberDestroyable = emberSafeRequire('@ember/destroyable');
423
427
  let ObjectInternals = emberSafeRequire('@ember/object/internals');
424
428
  let Instrumentation = emberSafeRequire('@ember/instrumentation');
425
429
  let Runloop = emberSafeRequire('@ember/runloop');
426
430
  let RSVP = emberSafeRequire('rsvp');
431
+ let GlimmerComponent = emberSafeRequire('@glimmer/component');
432
+ let GlimmerManager = emberSafeRequire('@glimmer/manager');
433
+ let GlimmerReference = emberSafeRequire('@glimmer/reference');
434
+ let GlimmerRuntime = emberSafeRequire('@glimmer/runtime');
435
+ let GlimmerUtil = emberSafeRequire('@glimmer/util');
436
+ let GlimmerValidator = emberSafeRequire('@glimmer/validator');
427
437
  if (!Ember) {
428
438
  exports.captureRenderTree = emberSafeRequire('@ember/debug')?.captureRenderTree;
429
439
  exports.getEnv = emberSafeRequire('@ember/-internals/environment')?.getENV;
@@ -452,8 +462,18 @@ define('ember-debug/ember', ['exports'], (function (exports) { 'use strict';
452
462
 
453
463
  exports.ActionHandler = ActionHandler;
454
464
  exports.Debug = Debug;
465
+ exports.EmberDestroyable = EmberDestroyable;
466
+ exports.GlimmerComponent = GlimmerComponent;
467
+ exports.GlimmerManager = GlimmerManager;
468
+ exports.GlimmerReference = GlimmerReference;
469
+ exports.GlimmerRuntime = GlimmerRuntime;
470
+ exports.GlimmerUtil = GlimmerUtil;
471
+ exports.GlimmerValidator = GlimmerValidator;
455
472
  exports.Instrumentation = Instrumentation;
473
+ exports.InternalsMetal = InternalsMetal;
474
+ exports.InternalsRuntime = InternalsRuntime;
456
475
  exports.InternalsUtils = InternalsUtils;
476
+ exports.InternalsViews = InternalsViews;
457
477
  exports.ObjectInternals = ObjectInternals;
458
478
  exports.RSVP = RSVP;
459
479
  exports.Runloop = Runloop;
@@ -665,11 +685,11 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
665
685
  */
666
686
  const emberNames = new Map([[ember.Evented, 'Evented Mixin'], [ember.PromiseProxyMixin, 'PromiseProxy Mixin'], [ember.MutableArray, 'MutableArray Mixin'], [ember.MutableEnumerable, 'MutableEnumerable Mixin'], [ember.NativeArray, 'NativeArray Mixin'], [ember.Observable, 'Observable Mixin'], [ember.ControllerMixin, 'Controller Mixin'], [ember.ActionHandler, 'ActionHandler Mixin'], [ember.CoreObject, 'CoreObject'], [ember.EmberObject, 'EmberObject'], [ember.Component, 'Component']]);
667
687
  if (version.compareVersion(ember.VERSION, '3.27.0') === -1) {
668
- const TargetActionSupport = ember.emberSafeRequire('@ember/-internals/runtime')?.TargetActionSupport;
688
+ const TargetActionSupport = ember.InternalsRuntime?.TargetActionSupport;
669
689
  emberNames.set(TargetActionSupport, 'TargetActionSupport Mixin');
670
690
  }
671
691
  try {
672
- const Views = ember.emberSafeRequire('@ember/-internals/views') || {};
692
+ const Views = ember.InternalsViews || {};
673
693
  emberNames.set(Views.ViewStateSupport, 'ViewStateSupport Mixin');
674
694
  emberNames.set(Views.ViewMixin, 'View Mixin');
675
695
  emberNames.set(Views.ActionSupport, 'ActionSupport Mixin');
@@ -727,24 +747,19 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
727
747
  return name || className || '(unknown class)';
728
748
  }
729
749
 
730
- const GlimmerComponent = (() => {
731
- try {
732
- return ember.emberSafeRequire('@glimmer/component').default;
733
- } catch {
734
- // ignore, return undefined
735
- }
736
- })();
737
750
  let tagValue, tagValidate, track, tagForProperty;
738
- try {
739
- // Try to load the most recent library
740
- let GlimmerValidator = ember.emberSafeRequire('@glimmer/validator');
741
- tagValue = GlimmerValidator.value || GlimmerValidator.valueForTag;
742
- tagValidate = GlimmerValidator.validate || GlimmerValidator.validateTag;
743
- track = GlimmerValidator.track;
751
+ const GlimmerDebugComponent = (() => ember.GlimmerComponent?.default)();
752
+
753
+ // Try to use the most recent library (GlimmerValidator), else
754
+ // fallback on the previous implementation (GlimmerReference).
755
+ if (ember.GlimmerValidator) {
756
+ tagValue = ember.GlimmerValidator.value || ember.GlimmerValidator.valueForTag;
757
+ tagValidate = ember.GlimmerValidator.validate || ember.GlimmerValidator.validateTag;
758
+ track = ember.GlimmerValidator.track;
744
759
 
745
760
  // patch tagFor to add debug info, older versions already have _propertyKey
746
- const tagFor = GlimmerValidator.tagFor;
747
- GlimmerValidator.tagFor = function (...args) {
761
+ const tagFor = ember.GlimmerValidator.tagFor;
762
+ ember.GlimmerValidator.tagFor = function (...args) {
748
763
  const tag = tagFor.call(this, ...args);
749
764
  const [obj, key] = args;
750
765
  if ((!tag._propertyKey || !tag._object) && typeof obj === 'object' && typeof key === 'string') {
@@ -753,36 +768,27 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
753
768
  }
754
769
  return tag;
755
770
  };
756
- const trackedData = GlimmerValidator.trackedData;
757
- GlimmerValidator.trackedData = function (...args) {
771
+ const trackedData = ember.GlimmerValidator.trackedData;
772
+ ember.GlimmerValidator.trackedData = function (...args) {
758
773
  const r = trackedData.call(this, ...args);
759
774
  if (r.getter && args.length === 2) {
760
775
  const [key] = args;
761
776
  const getter = r.getter;
762
777
  r.getter = function (self) {
763
- GlimmerValidator.tagFor(self, key);
778
+ ember.GlimmerValidator.tagFor(self, key);
764
779
  return getter.call(this, self);
765
780
  };
766
781
  }
767
782
  return r;
768
783
  };
769
- } catch {
770
- try {
771
- // Fallback to the previous implementation
772
- let GlimmerReference = ember.emberSafeRequire('@glimmer/reference');
773
- tagValue = GlimmerReference.value;
774
- tagValidate = GlimmerReference.validate;
775
- } catch {
776
- // ignore
777
- }
784
+ } else if (ember.GlimmerReference) {
785
+ tagValue = ember.GlimmerReference.value;
786
+ tagValidate = ember.GlimmerReference.validate;
778
787
  }
779
- try {
780
- let metal = ember.emberSafeRequire('@ember/-internals/metal');
781
- tagForProperty = metal.tagForProperty;
788
+ if (ember.InternalsMetal) {
789
+ tagForProperty = ember.InternalsMetal.tagForProperty;
782
790
  // If track was not already loaded, use metal's version (the previous version)
783
- track = track || metal.track;
784
- } catch {
785
- // ignore
791
+ track = track || ember.InternalsMetal.track;
786
792
  }
787
793
  const HAS_GLIMMER_TRACKING = tagValue && tagValidate && track && tagForProperty;
788
794
  const keys = Object.keys;
@@ -1790,7 +1796,7 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
1790
1796
  // The rest are skipped to reduce noise in the inspector.
1791
1797
  if (ember.Component && object instanceof ember.Component) {
1792
1798
  skipProperties.push('currentState', 'state', 'buffer', 'outletSource', 'lengthBeforeRender', 'lengthAfterRender', 'template', 'layout', 'templateData', 'domManager', 'states', 'element', 'targetObject');
1793
- } else if (GlimmerComponent && object instanceof GlimmerComponent) {
1799
+ } else if (GlimmerDebugComponent && object instanceof GlimmerDebugComponent) {
1794
1800
  // These properties don't really exist on Glimmer Components, but
1795
1801
  // reading their values trigger a development mode assertion. The
1796
1802
  // more correct long term fix is to make getters lazy (shows "..."
@@ -2298,20 +2304,13 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
2298
2304
  constructor(owner) {
2299
2305
  this.nodeMap = new Map();
2300
2306
  this.remoteRoots = [];
2301
- this.runtime = ember.emberSafeRequire('@glimmer/runtime');
2302
- this.reference = ember.emberSafeRequire('@glimmer/reference');
2303
- try {
2304
- this.Wormhole = requireModule('ember-wormhole/components/ember-wormhole');
2305
- } catch {
2306
- // nope
2307
- }
2308
- try {
2309
- requireModule('@glimmer/manager').CustomModifierManager.prototype.getDebugInstance = args => args.modifier || args.delegate;
2310
- } catch {
2311
- // nope
2307
+ this.runtime = ember.GlimmerRuntime;
2308
+ this.reference = ember.GlimmerReference;
2309
+ if (ember.GlimmerManager) {
2310
+ ember.GlimmerManager.CustomModifierManager.prototype.getDebugInstance = args => args.modifier || args.delegate;
2312
2311
  }
2313
- this.DESTROY = ember.emberSafeRequire('@glimmer/util')?.DESTROY;
2314
- this.registerDestructor = ember.emberSafeRequire('@glimmer/destroyable')?.registerDestructor || ember.emberSafeRequire('@ember/destroyable')?.registerDestructor || ember.emberSafeRequire('@ember/runtime')?.registerDestructor;
2312
+ this.DESTROY = ember.GlimmerUtil?.DESTROY;
2313
+ this.registerDestructor = ember.EmberDestroyable?.registerDestructor;
2315
2314
  this.debugRenderTree = owner.lookup('renderer:-dom')?.debugRenderTree || owner.lookup('service:-glimmer-environment')._debugRenderTree;
2316
2315
  this.NewElementBuilder = this.runtime.NewElementBuilder || this.runtime.NewTreeBuilder;
2317
2316
  this.patch();
@@ -2816,7 +2815,10 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
2816
2815
  this.inElementSupport?.nodeMap.set(node, node.id);
2817
2816
  this.inElementSupport?.remoteRoots.push(node);
2818
2817
  }
2819
- if (this.inElementSupport?.Wormhole && node.instance instanceof this.inElementSupport.Wormhole.default) {
2818
+
2819
+ // EmberWormhole component from ember-wormhole was used to provide
2820
+ // rendering into a given DOM element prior to built-in in-element.
2821
+ if (node.template === 'ember-wormhole/templates/components/ember-wormhole.hbs') {
2820
2822
  this.inElementSupport?.remoteRoots.push(node);
2821
2823
  const bounds = node.bounds;
2822
2824
  Object.defineProperty(node, 'bounds', {
@@ -2841,8 +2843,9 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
2841
2843
  node.args.named[attr.nodeName] = attr.nodeValue;
2842
2844
  });
2843
2845
  // move modifiers and components into the element children
2846
+
2844
2847
  parentNode.children.forEach(child => {
2845
- if (child.bounds.parentElement === node.instance || child.meta?.parentElement === node.instance || child.type === 'modifier' && child.bounds.firstNode === node.instance) {
2848
+ if (node.instance.contains(child.bounds.parentElement) || node.instance.contains(child.meta?.parentElement) || child.type === 'modifier' && child.bounds.firstNode === node.instance) {
2846
2849
  node.children.push(child);
2847
2850
  }
2848
2851
  });
@@ -3346,7 +3349,11 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
3346
3349
  onMouseMove(event) {
3347
3350
  event.preventDefault();
3348
3351
  event.stopPropagation();
3349
- this.inspectNearest(event.target, false);
3352
+ let target = event.target;
3353
+ if (target.shadowRoot) {
3354
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
3355
+ }
3356
+ this.inspectNearest(target, false);
3350
3357
  }
3351
3358
  onKeyDown(event) {
3352
3359
  if (event.key === 'Escape' || event.key === 'Esc') {
@@ -3369,7 +3376,11 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
3369
3376
  } else if (this.isInspecting && event.button === 0) {
3370
3377
  event.preventDefault();
3371
3378
  event.stopPropagation();
3372
- this.inspectNearest(event.target, true);
3379
+ let target = event.target;
3380
+ if (target.shadowRoot) {
3381
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
3382
+ }
3383
+ this.inspectNearest(target, true);
3373
3384
  this.stop(false);
3374
3385
  }
3375
3386
  }
@@ -3726,6 +3737,9 @@ define('ember-debug/main', ['ember-debug/base-object', 'ember-debug/basic2', 'em
3726
3737
  onRightClick(event) {
3727
3738
  if (event.button === 2) {
3728
3739
  this.lastRightClicked = event.target;
3740
+ if (event.target.shadowRoot) {
3741
+ this.lastRightClicked = event.target.shadowRoot.elementFromPoint(event.x, event.y) || event.target;
3742
+ }
3729
3743
  }
3730
3744
  }
3731
3745
  onResize() {
@@ -9854,7 +9868,7 @@ define('ember-debug/type-check', ['exports', 'ember-debug/ember'], (function (ex
9854
9868
  const {
9855
9869
  descriptorForDecorator,
9856
9870
  descriptorForProperty
9857
- } = ember.emberSafeRequire('@ember/-internals/metal') || {};
9871
+ } = ember.InternalsMetal || {};
9858
9872
  return descriptorForDecorator?.(object[key]) || descriptorForProperty?.(object, key);
9859
9873
  }
9860
9874
  return object[key];
@@ -8,7 +8,7 @@
8
8
  <meta name="description" content="">
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1">
10
10
 
11
- <meta name="ember-inspector/config/environment" content="%7B%22modulePrefix%22%3A%22ember-inspector%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22hash%22%2C%22version%22%3A%224.13.1-alpha.2025.6.19%2B42198be%22%2C%22emberVersionsSupported%22%3A%5B%223.16.0%22%2C%22%22%5D%2C%22previousEmberVersionsSupported%22%3A%5B%220.0.0%22%2C%222.7.0%22%2C%223.4.0%22%5D%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_NO_IMPLICIT_ROUTE_MODEL%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22ember-inspector%22%2C%22version%22%3A%224.13.1-alpha.2025.6.19%2B42198be%2B42198bed%22%7D%7D" />
11
+ <meta name="ember-inspector/config/environment" content="%7B%22modulePrefix%22%3A%22ember-inspector%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22hash%22%2C%22version%22%3A%224.13.1-alpha.2025.6.21%2B8188179%22%2C%22emberVersionsSupported%22%3A%5B%223.16.0%22%2C%22%22%5D%2C%22previousEmberVersionsSupported%22%3A%5B%220.0.0%22%2C%222.7.0%22%2C%223.4.0%22%5D%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_NO_IMPLICIT_ROUTE_MODEL%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22ember-inspector%22%2C%22version%22%3A%224.13.1-alpha.2025.6.21%2B8188179%2B81881796%22%7D%7D" />
12
12
 
13
13
  <style type="text/css">
14
14
  @font-face {
@@ -38,7 +38,7 @@
38
38
 
39
39
  <script src="assets/vendor.js"></script>
40
40
  <script src="assets/chunk.443.86a005e528b587663b78.js"></script>
41
- <script src="assets/chunk.524.7b97a9e9caaec2bf8dd7.js"></script>
41
+ <script src="assets/chunk.524.ef839d668b8055a7b20a.js"></script>
42
42
  <script src="assets/ember-inspector.js"></script>
43
43
 
44
44
 
@@ -1,36 +1,31 @@
1
1
  import captureRenderTree from './capture-render-tree';
2
2
  import { guidFor } from 'ember-debug/utils/ember/object/internals';
3
- import { emberSafeRequire } from 'ember-debug/utils/ember';
4
3
  import { inspect } from 'ember-debug/utils/type-check';
5
4
  import { isInVersionSpecifier } from 'ember-debug/utils/version';
6
- import { VERSION } from 'ember-debug/utils/ember';
5
+ import {
6
+ VERSION,
7
+ EmberDestroyable,
8
+ GlimmerManager,
9
+ GlimmerReference,
10
+ GlimmerRuntime,
11
+ GlimmerUtil,
12
+ } from 'ember-debug/utils/ember';
7
13
 
8
14
  class InElementSupportProvider {
9
15
  constructor(owner) {
10
16
  this.nodeMap = new Map();
11
17
  this.remoteRoots = [];
12
- this.runtime = emberSafeRequire('@glimmer/runtime');
13
- this.reference = emberSafeRequire('@glimmer/reference');
14
- try {
15
- this.Wormhole = requireModule('ember-wormhole/components/ember-wormhole');
16
- } catch {
17
- // nope
18
- }
18
+ this.runtime = GlimmerRuntime;
19
+ this.reference = GlimmerReference;
19
20
 
20
- try {
21
- requireModule(
22
- '@glimmer/manager',
23
- ).CustomModifierManager.prototype.getDebugInstance = (args) =>
24
- args.modifier || args.delegate;
25
- } catch {
26
- // nope
21
+ if (GlimmerManager) {
22
+ GlimmerManager.CustomModifierManager.prototype.getDebugInstance = (
23
+ args,
24
+ ) => args.modifier || args.delegate;
27
25
  }
28
26
 
29
- this.DESTROY = emberSafeRequire('@glimmer/util')?.DESTROY;
30
- this.registerDestructor =
31
- emberSafeRequire('@glimmer/destroyable')?.registerDestructor ||
32
- emberSafeRequire('@ember/destroyable')?.registerDestructor ||
33
- emberSafeRequire('@ember/runtime')?.registerDestructor;
27
+ this.DESTROY = GlimmerUtil?.DESTROY;
28
+ this.registerDestructor = EmberDestroyable?.registerDestructor;
34
29
 
35
30
  this.debugRenderTree =
36
31
  owner.lookup('renderer:-dom')?.debugRenderTree ||
@@ -607,9 +602,11 @@ export default class RenderTree {
607
602
  this.inElementSupport?.remoteRoots.push(node);
608
603
  }
609
604
 
605
+ // EmberWormhole component from ember-wormhole was used to provide
606
+ // rendering into a given DOM element prior to built-in in-element.
610
607
  if (
611
- this.inElementSupport?.Wormhole &&
612
- node.instance instanceof this.inElementSupport.Wormhole.default
608
+ node.template ===
609
+ 'ember-wormhole/templates/components/ember-wormhole.hbs'
613
610
  ) {
614
611
  this.inElementSupport?.remoteRoots.push(node);
615
612
  const bounds = node.bounds;
@@ -637,10 +634,11 @@ export default class RenderTree {
637
634
  node.args.named[attr.nodeName] = attr.nodeValue;
638
635
  });
639
636
  // move modifiers and components into the element children
637
+
640
638
  parentNode.children.forEach((child) => {
641
639
  if (
642
- child.bounds.parentElement === node.instance ||
643
- child.meta?.parentElement === node.instance ||
640
+ node.instance.contains(child.bounds.parentElement) ||
641
+ node.instance.contains(child.meta?.parentElement) ||
644
642
  (child.type === 'modifier' &&
645
643
  child.bounds.firstNode === node.instance)
646
644
  ) {
@@ -317,7 +317,11 @@ export default class ViewInspection {
317
317
  onMouseMove(event) {
318
318
  event.preventDefault();
319
319
  event.stopPropagation();
320
- this.inspectNearest(event.target, false);
320
+ let target = event.target;
321
+ if (target.shadowRoot) {
322
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
323
+ }
324
+ this.inspectNearest(target, false);
321
325
  }
322
326
 
323
327
  onKeyDown(event) {
@@ -342,7 +346,11 @@ export default class ViewInspection {
342
346
  } else if (this.isInspecting && event.button === 0) {
343
347
  event.preventDefault();
344
348
  event.stopPropagation();
345
- this.inspectNearest(event.target, true);
349
+ let target = event.target;
350
+ if (target.shadowRoot) {
351
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
352
+ }
353
+ this.inspectNearest(target, true);
346
354
  this.stop(false);
347
355
  }
348
356
  }
@@ -16,28 +16,24 @@ import {
16
16
  ObjectProxy,
17
17
  ArrayProxy,
18
18
  Service,
19
+ InternalsMetal,
19
20
  Component,
20
- emberSafeRequire,
21
+ GlimmerComponent,
22
+ GlimmerReference,
23
+ GlimmerValidator,
21
24
  } from 'ember-debug/utils/ember';
22
25
  import { cacheFor, guidFor } from 'ember-debug/utils/ember/object/internals';
23
26
  import { _backburner, join } from 'ember-debug/utils/ember/runloop';
24
27
  import emberNames from './utils/ember-object-names';
25
28
  import getObjectName from './utils/get-object-name';
26
29
 
27
- const GlimmerComponent = (() => {
28
- try {
29
- return emberSafeRequire('@glimmer/component').default;
30
- } catch {
31
- // ignore, return undefined
32
- }
33
- })();
34
-
35
30
  let tagValue, tagValidate, track, tagForProperty;
36
31
 
37
- try {
38
- // Try to load the most recent library
39
- let GlimmerValidator = emberSafeRequire('@glimmer/validator');
32
+ const GlimmerDebugComponent = (() => GlimmerComponent?.default)();
40
33
 
34
+ // Try to use the most recent library (GlimmerValidator), else
35
+ // fallback on the previous implementation (GlimmerReference).
36
+ if (GlimmerValidator) {
41
37
  tagValue = GlimmerValidator.value || GlimmerValidator.valueForTag;
42
38
  tagValidate = GlimmerValidator.validate || GlimmerValidator.validateTag;
43
39
  track = GlimmerValidator.track;
@@ -70,26 +66,15 @@ try {
70
66
  }
71
67
  return r;
72
68
  };
73
- } catch {
74
- try {
75
- // Fallback to the previous implementation
76
- let GlimmerReference = emberSafeRequire('@glimmer/reference');
77
-
78
- tagValue = GlimmerReference.value;
79
- tagValidate = GlimmerReference.validate;
80
- } catch {
81
- // ignore
82
- }
69
+ } else if (GlimmerReference) {
70
+ tagValue = GlimmerReference.value;
71
+ tagValidate = GlimmerReference.validate;
83
72
  }
84
73
 
85
- try {
86
- let metal = emberSafeRequire('@ember/-internals/metal');
87
-
88
- tagForProperty = metal.tagForProperty;
74
+ if (InternalsMetal) {
75
+ tagForProperty = InternalsMetal.tagForProperty;
89
76
  // If track was not already loaded, use metal's version (the previous version)
90
- track = track || metal.track;
91
- } catch {
92
- // ignore
77
+ track = track || InternalsMetal.track;
93
78
  }
94
79
 
95
80
  const HAS_GLIMMER_TRACKING = tagValue && tagValidate && track && tagForProperty;
@@ -1285,7 +1270,7 @@ function getDebugInfo(object) {
1285
1270
  'element',
1286
1271
  'targetObject',
1287
1272
  );
1288
- } else if (GlimmerComponent && object instanceof GlimmerComponent) {
1273
+ } else if (GlimmerDebugComponent && object instanceof GlimmerDebugComponent) {
1289
1274
  // These properties don't really exist on Glimmer Components, but
1290
1275
  // reading their values trigger a development mode assertion. The
1291
1276
  // more correct long term fix is to make getters lazy (shows "..."
@@ -1,5 +1,4 @@
1
1
  import { compareVersion } from 'ember-debug/utils/version';
2
- import { emberSafeRequire } from 'ember-debug/utils/ember';
3
2
  import {
4
3
  VERSION,
5
4
  ActionHandler,
@@ -10,6 +9,8 @@ import {
10
9
  MutableArray,
11
10
  Component,
12
11
  Evented,
12
+ InternalsRuntime,
13
+ InternalsViews,
13
14
  PromiseProxyMixin,
14
15
  EmberObject,
15
16
  Observable,
@@ -33,14 +34,12 @@ const emberNames = new Map([
33
34
  ]);
34
35
 
35
36
  if (compareVersion(VERSION, '3.27.0') === -1) {
36
- const TargetActionSupport = emberSafeRequire(
37
- '@ember/-internals/runtime',
38
- )?.TargetActionSupport;
37
+ const TargetActionSupport = InternalsRuntime?.TargetActionSupport;
39
38
  emberNames.set(TargetActionSupport, 'TargetActionSupport Mixin');
40
39
  }
41
40
 
42
41
  try {
43
- const Views = emberSafeRequire('@ember/-internals/views') || {};
42
+ const Views = InternalsViews || {};
44
43
  emberNames.set(Views.ViewStateSupport, 'ViewStateSupport Mixin');
45
44
  emberNames.set(Views.ViewMixin, 'View Mixin');
46
45
  emberNames.set(Views.ActionSupport, 'ActionSupport Mixin');
@@ -56,11 +56,21 @@ let captureRenderTree = Ember._captureRenderTree;
56
56
  let getEnv = () => Ember.ENV;
57
57
 
58
58
  let Debug = emberSafeRequire('@ember/debug');
59
+ let InternalsMetal = emberSafeRequire('@ember/-internals/metal');
60
+ let InternalsRuntime = emberSafeRequire('@ember/-internals/runtime');
59
61
  let InternalsUtils = emberSafeRequire('@ember/-internals/utils');
62
+ let InternalsViews = emberSafeRequire('@ember/-internals/views');
63
+ let EmberDestroyable = emberSafeRequire('@ember/destroyable');
60
64
  let ObjectInternals = emberSafeRequire('@ember/object/internals');
61
65
  let Instrumentation = emberSafeRequire('@ember/instrumentation');
62
66
  let Runloop = emberSafeRequire('@ember/runloop');
63
67
  let RSVP = emberSafeRequire('rsvp');
68
+ let GlimmerComponent = emberSafeRequire('@glimmer/component');
69
+ let GlimmerManager = emberSafeRequire('@glimmer/manager');
70
+ let GlimmerReference = emberSafeRequire('@glimmer/reference');
71
+ let GlimmerRuntime = emberSafeRequire('@glimmer/runtime');
72
+ let GlimmerUtil = emberSafeRequire('@glimmer/util');
73
+ let GlimmerValidator = emberSafeRequire('@glimmer/validator');
64
74
 
65
75
  if (!Ember) {
66
76
  captureRenderTree = emberSafeRequire('@ember/debug')?.captureRenderTree;
@@ -94,7 +104,10 @@ if (!Ember) {
94
104
  export {
95
105
  Runloop,
96
106
  Debug,
107
+ InternalsMetal,
108
+ InternalsRuntime,
97
109
  InternalsUtils,
110
+ InternalsViews,
98
111
  ObjectInternals,
99
112
  Instrumentation,
100
113
  RSVP,
@@ -113,6 +126,7 @@ export {
113
126
  Evented,
114
127
  Service,
115
128
  PromiseProxyMixin,
129
+ EmberDestroyable,
116
130
  EmberObject,
117
131
  VERSION,
118
132
  ComputedProperty,
@@ -122,6 +136,12 @@ export {
122
136
  set,
123
137
  captureRenderTree,
124
138
  getEnv,
139
+ GlimmerComponent,
140
+ GlimmerManager,
141
+ GlimmerReference,
142
+ GlimmerRuntime,
143
+ GlimmerUtil,
144
+ GlimmerValidator,
125
145
  };
126
146
 
127
147
  export default Ember;
@@ -3,7 +3,7 @@ import {
3
3
  ComputedProperty,
4
4
  EmberObject,
5
5
  meta as emberMeta,
6
- emberSafeRequire,
6
+ InternalsMetal,
7
7
  } from 'ember-debug/utils/ember';
8
8
 
9
9
  /**
@@ -41,7 +41,7 @@ export function getDescriptorFor(object, key) {
41
41
  // exists longer than ember 3.10
42
42
  if (Debug.isComputed) {
43
43
  const { descriptorForDecorator, descriptorForProperty } =
44
- emberSafeRequire('@ember/-internals/metal') || {};
44
+ InternalsMetal || {};
45
45
  return (
46
46
  descriptorForDecorator?.(object[key]) ||
47
47
  descriptorForProperty?.(object, key)
@@ -103,6 +103,11 @@ export default class extends DebugPort {
103
103
  onRightClick(event) {
104
104
  if (event.button === 2) {
105
105
  this.lastRightClicked = event.target;
106
+ if (event.target.shadowRoot) {
107
+ this.lastRightClicked =
108
+ event.target.shadowRoot.elementFromPoint(event.x, event.y) ||
109
+ event.target;
110
+ }
106
111
  }
107
112
  }
108
113
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-inspector",
3
- "version": "4.13.1-alpha.2025.6.19+42198be",
3
+ "version": "4.13.1-alpha.2025.6.21+8188179",
4
4
  "description": "Extends developer tools to allow you to better inspect your Ember.js apps.",
5
5
  "repository": "https://github.com/emberjs/ember-inspector",
6
6
  "license": "MIT",
@@ -173,8 +173,9 @@
173
173
  }
174
174
  },
175
175
  "scripts": {
176
- "build": "ember build",
177
- "build:production": "EMBER_ENV=production node scripts/download-panes.js && ember build --environment production && gulp compress:chrome && gulp compress:firefox && gulp clean-tmp",
176
+ "build": "pnpm build:ember-debug && ember build",
177
+ "build:ember-debug": "pnpm --filter ember-debug build",
178
+ "build:production": "pnpm build:ember-debug && EMBER_ENV=production node scripts/download-panes.js && ember build --environment production && gulp compress:chrome && gulp compress:firefox && gulp clean-tmp",
178
179
  "changelog": "github_changelog_generator -u emberjs -p ember-inspector --since-tag v3.8.0",
179
180
  "compress:panes": "gulp compress:chrome-pane && gulp compress:firefox-pane && gulp compress:bookmarklet-pane",
180
181
  "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
@@ -190,7 +191,12 @@
190
191
  "serve:bookmarklet": "ember serve --port 9191",
191
192
  "start": "ember serve",
192
193
  "test": "concurrently \"pnpm:lint\" \"pnpm:test:*\" --names \"lint,test:\" --prefixColors auto",
193
- "test:ember": "COVERAGE=true ember test",
194
- "watch": "ember build --watch"
194
+ "test:ember": "pnpm build:ember-debug && COVERAGE=true ember test",
195
+ "watch-test": "pnpm '/test-watch:/'",
196
+ "watch-test:ember-debug": "pnpm --filter ember-debug watch",
197
+ "watch-test:inspector-ui": "ember test --serv",
198
+ "watch": "pnpm '/watch:/'",
199
+ "watch:inspector-ui": "ember build --watch",
200
+ "watch:ember-debug": "pnpm --filter ember-debug watch"
195
201
  }
196
202
  }
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 3,
3
3
  "name": "Ember Inspector (Nightly)",
4
4
  "description": "Tool for debugging Ember applications.",
5
- "version": "2025.6.19",
5
+ "version": "2025.6.21",
6
6
  "icons": {
7
7
  "16": "{{PANE_ROOT}}/assets/images/icon16.png",
8
8
  "38": "{{PANE_ROOT}}/assets/images/icon38.png",
@@ -74,5 +74,5 @@
74
74
  ]
75
75
  }
76
76
  ],
77
- "version_name": "4.13.1 (nightly build 2025.6.19 / 42198be)"
77
+ "version_name": "4.13.1 (nightly build 2025.6.21 / 8188179)"
78
78
  }