ember-inspector 4.11.0-alpha.2024.3.9 → 4.11.0-alpha.2024.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/app/components/component-tree-arg.js +9 -0
  2. package/app/components/component-tree-item.hbs +18 -2
  3. package/app/components/object-inspector/properties-all.hbs +1 -0
  4. package/app/components/object-inspector/properties-base.js +10 -0
  5. package/app/components/object-inspector/properties-grouped.hbs +1 -0
  6. package/app/components/object-inspector/property.hbs +12 -1
  7. package/app/components/object-inspector/property.ts +4 -2
  8. package/app/components/object-inspector.hbs +16 -2
  9. package/app/components/object-inspector.js +14 -0
  10. package/app/controllers/component-tree.js +54 -3
  11. package/app/routes/component-tree.js +0 -6
  12. package/app/services/adapters/web-extension.js +3 -3
  13. package/app/services/port.js +4 -0
  14. package/app/styles/component_tree.scss +13 -0
  15. package/app/utils/parse-text.ts +1 -0
  16. package/dist/bookmarklet/panes-3-16-0/assets/{chunk.143.ac621af5331b75527946.js → chunk.143.113e8b75c912ce3c25a2.js} +4 -4
  17. package/dist/{firefox/panes-3-16-0/assets/chunk.178.e6b2f8bb19b9f072aa49.js → bookmarklet/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
  18. package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.css +13 -0
  19. package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.js +27 -23
  20. package/dist/bookmarklet/panes-3-16-0/assets/svg/code-source.svg +9 -0
  21. package/dist/bookmarklet/panes-3-16-0/assets/vendor.css +33 -0
  22. package/dist/bookmarklet/panes-3-16-0/assets/vendor.js +12 -10
  23. package/dist/bookmarklet/panes-3-16-0/ember_debug.js +408 -538
  24. package/dist/bookmarklet/panes-3-16-0/index.html +2 -2
  25. package/dist/chrome/manifest.json +2 -2
  26. package/dist/{firefox/panes-3-16-0/assets/chunk.143.ac621af5331b75527946.js → chrome/panes-3-16-0/assets/chunk.143.113e8b75c912ce3c25a2.js} +4 -4
  27. package/dist/{bookmarklet/panes-3-16-0/assets/chunk.178.e6b2f8bb19b9f072aa49.js → chrome/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
  28. package/dist/chrome/panes-3-16-0/assets/ember-inspector.css +13 -0
  29. package/dist/chrome/panes-3-16-0/assets/ember-inspector.js +27 -23
  30. package/dist/chrome/panes-3-16-0/assets/svg/code-source.svg +9 -0
  31. package/dist/chrome/panes-3-16-0/assets/vendor.css +33 -0
  32. package/dist/chrome/panes-3-16-0/assets/vendor.js +12 -10
  33. package/dist/chrome/panes-3-16-0/ember_debug.js +408 -538
  34. package/dist/chrome/panes-3-16-0/index.html +2 -2
  35. package/dist/firefox/manifest.json +2 -2
  36. package/dist/{chrome/panes-3-16-0/assets/chunk.143.ac621af5331b75527946.js → firefox/panes-3-16-0/assets/chunk.143.113e8b75c912ce3c25a2.js} +4 -4
  37. package/dist/{websocket/assets/chunk.178.e6b2f8bb19b9f072aa49.js → firefox/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
  38. package/dist/firefox/panes-3-16-0/assets/ember-inspector.css +13 -0
  39. package/dist/firefox/panes-3-16-0/assets/ember-inspector.js +27 -23
  40. package/dist/firefox/panes-3-16-0/assets/svg/code-source.svg +9 -0
  41. package/dist/firefox/panes-3-16-0/assets/vendor.css +33 -0
  42. package/dist/firefox/panes-3-16-0/assets/vendor.js +12 -10
  43. package/dist/firefox/panes-3-16-0/ember_debug.js +408 -538
  44. package/dist/firefox/panes-3-16-0/index.html +2 -2
  45. package/dist/websocket/assets/{chunk.143.ac621af5331b75527946.js → chunk.143.113e8b75c912ce3c25a2.js} +4 -4
  46. package/dist/{chrome/panes-3-16-0/assets/chunk.178.e6b2f8bb19b9f072aa49.js → websocket/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
  47. package/dist/websocket/assets/ember-inspector.css +13 -0
  48. package/dist/websocket/assets/ember-inspector.js +27 -23
  49. package/dist/websocket/assets/svg/code-source.svg +9 -0
  50. package/dist/websocket/assets/vendor.css +33 -0
  51. package/dist/websocket/assets/vendor.js +12 -10
  52. package/dist/websocket/ember_debug.js +408 -538
  53. package/dist/websocket/index.html +2 -2
  54. package/ember-cli-build.js +3 -4
  55. package/ember_debug/adapters/basic.js +4 -4
  56. package/ember_debug/adapters/web-extension.js +9 -5
  57. package/ember_debug/general-debug.js +3 -1
  58. package/ember_debug/libs/capture-render-tree.js +7 -426
  59. package/ember_debug/libs/render-tree.js +210 -31
  60. package/ember_debug/libs/view-inspection.js +28 -0
  61. package/ember_debug/object-inspector.js +49 -88
  62. package/ember_debug/route-debug.js +2 -3
  63. package/ember_debug/utils/ember.js +16 -0
  64. package/ember_debug/utils/get-object-name.js +4 -0
  65. package/ember_debug/utils/name-functions.js +1 -1
  66. package/ember_debug/utils/type-check.js +82 -12
  67. package/ember_debug/utils/version.js +37 -0
  68. package/ember_debug/view-debug.js +1 -1
  69. package/lib/ui/addon/styles/_goto-source.scss +30 -0
  70. package/lib/ui/addon/styles/addon.scss +1 -0
  71. package/lib/ui/addon/styles/toolbar/_index.scss +4 -0
  72. package/package.json +1 -1
  73. package/public/assets/svg/code-source.svg +9 -0
  74. package/skeletons/web-extension/manifest.json +2 -2
  75. package/tests/acceptance/object-inspector-test.js +68 -0
  76. package/tests/ember_debug/view-debug-test.js +211 -69
  77. package/tests/index.html +1 -0
@@ -150,15 +150,16 @@ define("ember-debug/adapters/basic", ["exports", "ember-debug/utils/on-ready", "
150
150
  }
151
151
 
152
152
  /**
153
- Inspect a specific DOM node. This usually
153
+ Inspect a js value or specific DOM node. This usually
154
154
  means using the current environment's tools
155
155
  to inspect the node in the DOM.
156
156
  For example, in chrome, `inspect(node)`
157
157
  will open the Elements tab in dev tools
158
158
  and highlight the DOM node.
159
- @param {Node} node
159
+ For functions, it will open the sources tab and goto the definition
160
+ @param {Node|Function} node
160
161
  */
161
- inspectNode( /* node */) {}
162
+ inspectValue( /* value */) {}
162
163
  _messageReceived(message) {
163
164
  this._messageCallbacks.forEach(callback => {
164
165
  callback(message);
@@ -344,15 +345,19 @@ define("ember-debug/adapters/web-extension", ["exports", "ember-debug/adapters/b
344
345
  // "clone" them through postMessage unless they are converted to a
345
346
  // native array.
346
347
  options = deepClone(options);
347
- this._chromePort.postMessage(options);
348
+ try {
349
+ this._chromePort.postMessage(options);
350
+ } catch (e) {
351
+ console.log('failed to send message', e);
352
+ }
348
353
  }
349
354
 
350
355
  /**
351
356
  * Open the devtools "Elements" and select an DOM node.
352
357
  *
353
- * @param {Node} node The DOM node to select
358
+ * @param {Node|Function} value The DOM node to select
354
359
  */
355
- inspectNode(node) {
360
+ inspectValue(value) {
356
361
  // NOTE:
357
362
  //
358
363
  // Basically, we are just trying to call `inspect(node)` here.
@@ -373,8 +378,8 @@ define("ember-debug/adapters/web-extension", ["exports", "ember-debug/adapters/b
373
378
  // so that the extension can find it.
374
379
 
375
380
  let name = `__EMBER_INSPECTOR_${(Math.random() * 100000000).toFixed(0)}`;
376
- window[name] = node;
377
- this.namespace.port.send('view:inspectDOMNode', {
381
+ window[name] = value;
382
+ this.namespace.port.send('view:inspectJSValue', {
378
383
  name
379
384
  });
380
385
  }
@@ -5294,7 +5299,7 @@ define("ember-debug/general-debug", ["exports", "ember-debug/debug-port", "ember
5294
5299
  */
5295
5300
  getLibraries() {
5296
5301
  this.sendMessage('libraries', {
5297
- libraries: _ember.default.libraries._registry
5302
+ libraries: _ember.default.libraries?._registry
5298
5303
  });
5299
5304
  },
5300
5305
  getEmberCliConfig() {
@@ -5323,7 +5328,7 @@ define("ember-debug/general-debug", ["exports", "ember-debug/debug-port", "ember
5323
5328
  return null;
5324
5329
  }
5325
5330
  });
5326
- define("ember-debug/libs/capture-render-tree", ["exports", "ember-debug/utils/version", "ember-debug/utils/ember"], function (_exports, _version, _ember) {
5331
+ define("ember-debug/libs/capture-render-tree", ["exports", "ember-debug/utils/ember"], function (_exports, _ember) {
5327
5332
  "use strict";
5328
5333
 
5329
5334
  Object.defineProperty(_exports, "__esModule", {
@@ -5331,401 +5336,18 @@ define("ember-debug/libs/capture-render-tree", ["exports", "ember-debug/utils/ve
5331
5336
  });
5332
5337
  _exports.default = void 0;
5333
5338
  /* eslint-disable no-console, no-inner-declarations */
5334
-
5335
- let captureRenderTree;
5336
-
5339
+ let capture = _ember.captureRenderTree;
5337
5340
  // Ember 3.14+ comes with debug render tree, but the version in 3.14.0/3.14.1 is buggy
5338
- if (_ember.default._captureRenderTree && (0, _version.compareVersion)(_ember.default.VERSION, '3.14.1') > 0) {
5339
- if (_ember.default.ENV._DEBUG_RENDER_TREE) {
5340
- captureRenderTree = _ember.default._captureRenderTree;
5341
+ if (_ember.captureRenderTree) {
5342
+ if ((0, _ember.getEnv)()._DEBUG_RENDER_TREE) {
5343
+ capture = _ember.captureRenderTree;
5341
5344
  } else {
5342
- captureRenderTree = function captureRenderTree() {
5345
+ capture = function captureRenderTree() {
5343
5346
  return [];
5344
5347
  };
5345
5348
  }
5346
- } else {
5347
- /**
5348
- * Best-effort polyfill for `Ember._captureRenderTree`.
5349
- *
5350
- * Just like the Ember API, it takes an owner (`ApplicationInstance`, specifically)
5351
- * and return an array of render nodes:
5352
- *
5353
- * interface CapturedRenderNode {
5354
- * id: string;
5355
- * type: 'outlet' | 'engine' | 'route-template' | 'component';
5356
- * name: string;
5357
- * args: {
5358
- * named: Dict<unknown>;
5359
- * positional: unknown[];
5360
- * };
5361
- * instance: unknown;
5362
- * template: Option<string>;
5363
- * bounds: Option<{
5364
- * parentElement: Simple.Element;
5365
- * firstNode: Simple.Node;
5366
- * lastNode: Simple.Node;
5367
- * }>;
5368
- * children: CapturedRenderNode[];
5369
- * }
5370
- *
5371
- * While the API is identical, there are some differences and limitations:
5372
- *
5373
- * 1. `args` property is not available (it always report empty args).
5374
- * 2. `bounds` property is only available on component nodes (`null` everywhere else).
5375
- * 3. `{{mount}}` does not insert an `engine` node.
5376
- * 4. `Ember.Component` (classic components) are the only type of component in the tree
5377
- * (other components are skipped over).
5378
- * 5. Ordering of `children` may be different (but this is also not guarenteed in the
5379
- * Ember API).
5380
- */
5381
-
5382
- const {
5383
- Controller,
5384
- ViewUtils,
5385
- get,
5386
- getOwner,
5387
- guidFor
5388
- } = _ember.default;
5389
- const {
5390
- getRootViews,
5391
- getChildViews,
5392
- getViewBounds
5393
- } = ViewUtils;
5394
-
5395
- /**
5396
- * We are building the final tree by doing the following steps:
5397
- *
5398
- * 1. Get the "outlet state" tree from the router.
5399
- * 2. Collect the "top level" components. That is, components rendered directly from within
5400
- * a route template.
5401
- * 3. Do an "interleaved walk" down the outlet and (classic) component tree and map things
5402
- * into render nodes.
5403
- * 4. Return the array of render nodes we captured.
5404
- *
5405
- * Usually, this function returns an array of exactly one render node, which is the "root"
5406
- * outlet. However, sometimes there may be other top-level components in the app (e.g.
5407
- * rendered using the `Ember.Component#appendTo` API).
5408
- */
5409
- captureRenderTree = function captureRenderTree(owner) {
5410
- let tree = [];
5411
- let outletState = getOutletState(owner);
5412
- let components = getTopLevelComponents(owner);
5413
- if (outletState && components) {
5414
- tree.push(captureOutlet('root', owner, components, outletState));
5415
- }
5416
- return tree;
5417
- };
5418
-
5419
- /**
5420
- * Get the "outlet state" tree from the router. It corresponds to the "settled",
5421
- * app state after resolving all the hooks, redirects, etc. The rendering layer
5422
- * takes this tree from the router and render it on screen.
5423
- *
5424
- * It has the following format:
5425
- *
5426
- * interface OutletState {
5427
- * render: {
5428
- * // The current owner, could be the app or an engine
5429
- * owner: Owner;
5430
- *
5431
- * // The name of the route
5432
- * name: string;
5433
- *
5434
- * // The controller for the route
5435
- * controller: Controller;
5436
- *
5437
- * // The template (or template factory?) for the route (can this really be undefined?)
5438
- * template: OwnedTemplate | undefined;
5439
- *
5440
- * // The name of the outlet this was rendered into (in the parent route template)
5441
- * outlet: string;
5442
- *
5443
- * // The name of the parent route (we don't use this)
5444
- * into: string | undefined;
5445
- * },
5446
- *
5447
- * // The children outlets of this route, keyed by the outlet names (e.g. "main", "sidebar", ...)
5448
- * outlets: Dict<OutletState | undefined>;
5449
- * }
5450
- *
5451
- * This function returns the "root" outlet state.
5452
- */
5453
- function getOutletState(owner) {
5454
- try {
5455
- // eslint-disable-next-line ember/no-private-routing-service
5456
- return owner.lookup('router:main')._toplevelView.state.ref.value();
5457
- } catch (error) {
5458
- console.log('[Ember Inspector] failed to capture render tree');
5459
- console.log(error);
5460
- return undefined;
5461
- }
5462
- }
5463
-
5464
- /**
5465
- * Collect the "top level" components. That is, components rendered directly
5466
- * from within a route template.
5467
- *
5468
- * We do this by walking the classic component tree and identify components
5469
- * that has its "target" (~= the parent template's `{{this}}` object) set to
5470
- * a controller (or undefined, for root components rendered outside of the
5471
- * application route).
5472
- *
5473
- * This function returns a `Map` keyed by controllers (`undefiend` is also a
5474
- * possible key) to arrays of top-level components for that route/controller.
5475
- */
5476
- function getTopLevelComponents(owner) {
5477
- try {
5478
- let map = new Map();
5479
- collectComponentsByController(map, null, getRootViews(owner));
5480
- return map;
5481
- } catch (error) {
5482
- console.log('[Ember Inspector] failed to capture render tree');
5483
- console.log(error);
5484
- return undefined;
5485
- }
5486
- }
5487
-
5488
- /**
5489
- * Returns the "target" of a (classic) component.
5490
- */
5491
- function targetForComponent(component) {
5492
- return get(component, '_target') || get(component, '_targetObject');
5493
- }
5494
-
5495
- /**
5496
- * Recursively walk an array of components and add any "top level" components
5497
- * to the map keyed by their controller.
5498
- */
5499
- function collectComponentsByController(map, controller, components) {
5500
- components.forEach(component => {
5501
- let target = targetForComponent(component);
5502
- if (target === undefined || target instanceof Controller) {
5503
- /**
5504
- * If our parent is already added, don't add ourself again.
5505
- *
5506
- * This is to prevent something like this:
5507
- *
5508
- * {{!-- app/templates/application.hbs}}
5509
- * <Parent>
5510
- * <Child />
5511
- * </Parent>
5512
- *
5513
- * Without this check, both the parent and the yielded child will be
5514
- * considered "top level" since they both have the controller as their
5515
- * target.
5516
- */
5517
- if (target !== controller) {
5518
- if (!map.has(target)) {
5519
- map.set(target, []);
5520
- }
5521
- map.get(target).push(component);
5522
- }
5523
- collectComponentsByController(map, target, getChildViews(component));
5524
- } else {
5525
- collectComponentsByController(map, controller, getChildViews(component));
5526
- }
5527
- });
5528
- }
5529
- const EMPTY_ARGS = {
5530
- named: Object.create(null),
5531
- positional: []
5532
- };
5533
-
5534
- /**
5535
- * Return the module name (e.g. `my-app/templates/application.hbs`) for a
5536
- * template or template factory, if available. This may not be present for,
5537
- * e.g. templates compiled using the "inline" `hbs` tagged string method.
5538
- */
5539
- function nameForTemplate(template) {
5540
- if (template.meta) {
5541
- // Factory
5542
- return template.meta.moduleName || null;
5543
- } else if (template.referrer) {
5544
- // Instance
5545
- return template.referrer.moduleName || null;
5546
- } else {
5547
- return null;
5548
- }
5549
- }
5550
-
5551
- /**
5552
- * Walk an outlet tree (the last parameter) and map its content into render nodes.
5553
- *
5554
- * For each level of the outlet tree, we also have to walk the (classic) component
5555
- * tree to attach any components for the current level (and their children) to the
5556
- * resulting render nodes tree.
5557
- *
5558
- * We also check if the owner has changed between the current level and the previous
5559
- * level, and if so, we infer that we must have just crossed an engine boundary and
5560
- * insert an engine render node to account for that.
5561
- *
5562
- * Because we don't have a good way to generate a stable ID for the outlet nodes, we
5563
- * also pass down a "path" of the routes/outlets we have encountered so far which we
5564
- * use to generate the ID.
5565
- */
5566
- function captureOutlet(path, owner, components, {
5567
- outlets,
5568
- render
5569
- }) {
5570
- let outlet = {
5571
- id: `render-node:${path}@${render.outlet}`,
5572
- type: 'outlet',
5573
- name: render.outlet,
5574
- args: EMPTY_ARGS,
5575
- instance: undefined,
5576
- template: null,
5577
- bounds: null,
5578
- children: []
5579
- };
5580
- let parent = outlet;
5581
- if (owner !== render.owner) {
5582
- let engine = {
5583
- id: `render-node:${guidFor(render.owner)}`,
5584
- type: 'engine',
5585
- name: render.owner.mountPoint,
5586
- args: EMPTY_ARGS,
5587
- instance: render.owner,
5588
- template: null,
5589
- bounds: null,
5590
- children: []
5591
- };
5592
- parent.children.push(engine);
5593
- parent = engine;
5594
- }
5595
- let subpath = `${path}@${render.outlet}/${render.name}`;
5596
- let route = {
5597
- id: `render-node:${subpath}`,
5598
- type: 'route-template',
5599
- name: render.name,
5600
- args: EMPTY_ARGS,
5601
- instance: render.controller,
5602
- template: nameForTemplate(render.template),
5603
- bounds: null,
5604
- children: []
5605
- };
5606
- parent.children.push(route);
5607
- parent = route;
5608
- let childOutlets = Object.keys(outlets).map(name => captureOutlet(subpath, render.owner, components, outlets[name]));
5609
- let childComponents = captureComponents(components.get(render.controller) || [], render.controller);
5610
- parent.children.push(...mergeOutletChildren(render.controller, childOutlets, childComponents));
5611
- return outlet;
5612
- }
5613
-
5614
- /**
5615
- * Its is possible to nest an outlet inside a component, one pretty common example
5616
- * is a "layout" component:
5617
- *
5618
- * <SidebarWrapper>
5619
- * {{outlet "sidebar"}}
5620
- * </SidebarWrapper>
5621
- *
5622
- * On the other hand, it's not possible to put a component inside an outlet anymore
5623
- * when we get to this point. Try to find a suitable parent for each child outlet
5624
- * taking the above into account.
5625
- */
5626
- function mergeOutletChildren(controller, outlets, components) {
5627
- let merged = [];
5628
- for (let outlet of outlets) {
5629
- if (controller) {
5630
- let parentComponent = findOutletComponentParent(outlet.children);
5631
- if (controllerForComponent(parentComponent) === controller) {
5632
- let parentNode = findOutletComponentNode(components, parentComponent);
5633
- if (parentNode) {
5634
- parentNode.children.unshift(outlet);
5635
- continue;
5636
- }
5637
- }
5638
- }
5639
- merged.push(outlet);
5640
- }
5641
- merged.push(...components);
5642
- return merged;
5643
- }
5644
- function findOutletComponentParent(nodes) {
5645
- let result;
5646
- for (let node of nodes) {
5647
- if (node.type === 'component') {
5648
- result = node.instance.parentView;
5649
- } else if (node.type === 'engine' || node.type === 'route-template') {
5650
- result = findOutletComponentParent(node.children);
5651
- }
5652
- if (result !== undefined) {
5653
- return result;
5654
- }
5655
- }
5656
- }
5657
- function findOutletComponentNode(nodes, instance) {
5658
- let result;
5659
- for (let node of nodes) {
5660
- if (node.type === 'component') {
5661
- if (node.instance === instance) {
5662
- result = node;
5663
- } else {
5664
- result = findOutletComponentNode(node.children, instance);
5665
- }
5666
- }
5667
- if (result !== undefined) {
5668
- return result;
5669
- }
5670
- }
5671
- }
5672
-
5673
- /**
5674
- * Returns the name of a (classic) component.
5675
- */
5676
- function nameForComponent(component) {
5677
- // remove "component:" prefix
5678
- return component._debugContainerKey.slice(10);
5679
- }
5680
-
5681
- /**
5682
- * Returns the nearest controller of a (classic) component. This is so that we know
5683
- * whether a given component belongs to the current level (the route that we are
5684
- * processing right now) or not.
5685
- */
5686
- function controllerForComponent(component) {
5687
- let target = component;
5688
- while (target && !(target instanceof Controller)) {
5689
- target = targetForComponent(target);
5690
- }
5691
- return target;
5692
- }
5693
-
5694
- /**
5695
- * Returns the template (or template factory?) for a (classic) component.
5696
- */
5697
- function templateForComponent(component) {
5698
- let layout = get(component, 'layout');
5699
- if (layout) {
5700
- return nameForTemplate(layout);
5701
- }
5702
- let layoutName = get(component, 'layoutName');
5703
- if (layoutName) {
5704
- let owner = getOwner(component);
5705
- let template = owner.lookup(`template:${layoutName}`);
5706
- return nameForTemplate(template);
5707
- }
5708
- return null;
5709
- }
5710
-
5711
- /**
5712
- * Return the render node for a given (classic) component, and its children up
5713
- * until the next route boundary.
5714
- */
5715
- function captureComponents(components, controller) {
5716
- return components.filter(component => controllerForComponent(component) === controller).map(component => ({
5717
- id: `render-node:${guidFor(component)}`,
5718
- type: 'component',
5719
- name: nameForComponent(component),
5720
- args: EMPTY_ARGS,
5721
- instance: component,
5722
- template: templateForComponent(component),
5723
- bounds: getViewBounds(component),
5724
- children: captureComponents(getChildViews(component), controller)
5725
- }));
5726
- }
5727
5349
  }
5728
- var _default = captureRenderTree;
5350
+ var _default = capture;
5729
5351
  _exports.default = _default;
5730
5352
  });
5731
5353
  define("ember-debug/libs/promise-assembler", ["exports", "ember-debug/models/promise", "ember-debug/utils/rsvp", "ember-debug/utils/base-object", "ember-debug/utils/evented"], function (_exports, _promise, _rsvp, _baseObject, _evented) {
@@ -5893,7 +5515,7 @@ define("ember-debug/libs/promise-assembler", ["exports", "ember-debug/models/pro
5893
5515
  });
5894
5516
  }
5895
5517
  });
5896
- define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-render-tree", "ember-debug/utils/ember/object/internals", "ember-debug/utils/ember/loader"], function (_exports, _captureRenderTree, _internals, _loader) {
5518
+ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-render-tree", "ember-debug/utils/ember/object/internals", "ember-debug/utils/ember/loader", "ember-debug/utils/type-check", "ember-debug/utils/version", "ember-debug/utils/ember"], function (_exports, _captureRenderTree, _internals, _loader, _typeCheck, _version, _ember) {
5897
5519
  "use strict";
5898
5520
 
5899
5521
  Object.defineProperty(_exports, "__esModule", {
@@ -5911,6 +5533,8 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5911
5533
  } catch (e) {
5912
5534
  // nope
5913
5535
  }
5536
+ this.DESTROY = (0, _loader.emberSafeRequire)('@glimmer/util')?.DESTROY;
5537
+ this.registerDestructor = (0, _loader.emberSafeRequire)('@glimmer/destroyable')?.registerDestructor || (0, _loader.emberSafeRequire)('@ember/destroyable')?.registerDestructor || (0, _loader.emberSafeRequire)('@ember/runtime')?.registerDestructor;
5914
5538
  this.debugRenderTree = owner.lookup('renderer:-dom')?.debugRenderTree || owner.lookup('service:-glimmer-environment')._debugRenderTree;
5915
5539
  this.NewElementBuilder = this.runtime.NewElementBuilder;
5916
5540
  this.patch();
@@ -5922,8 +5546,8 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5922
5546
  patch() {
5923
5547
  const self = this;
5924
5548
  const NewElementBuilder = this.NewElementBuilder;
5925
- const remoteStack = [];
5926
5549
  const componentStack = [];
5550
+ const enableModifierSupport = (0, _version.isInVersionSpecifier)('>3.28.0', _ember.VERSION);
5927
5551
  function createRef(value) {
5928
5552
  if (self.reference.createUnboundRef) {
5929
5553
  return self.reference.createUnboundRef(value);
@@ -5931,6 +5555,15 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5931
5555
  return value;
5932
5556
  }
5933
5557
  }
5558
+ function createArgs(args) {
5559
+ if (self.reference.createUnboundRef) {
5560
+ return args;
5561
+ } else {
5562
+ return {
5563
+ value: () => args
5564
+ };
5565
+ }
5566
+ }
5934
5567
  const appendChild = this.debugRenderTree.appendChild;
5935
5568
  this.debugRenderTree.appendChild = function (node, state) {
5936
5569
  if (node.type === 'component') {
@@ -5944,7 +5577,7 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5944
5577
  if (node?.type === 'component') {
5945
5578
  componentStack.pop();
5946
5579
  }
5947
- exit.call(this, state);
5580
+ return exit.call(this, state);
5948
5581
  };
5949
5582
  const didAppendNode = NewElementBuilder.prototype.didAppendNode;
5950
5583
  NewElementBuilder.prototype.didAppendNode = function (...args) {
@@ -5956,11 +5589,79 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5956
5589
  pushElement.call(this, ...args);
5957
5590
  args[0].__emberInspectorParentNode = componentStack.at(-1);
5958
5591
  };
5592
+ const pushModifiers = NewElementBuilder.prototype.pushModifiers;
5593
+ if (enableModifierSupport) {
5594
+ NewElementBuilder.prototype.pushModifiers = function (modifiers) {
5595
+ const debugRenderTree = self.debugRenderTree;
5596
+ if (debugRenderTree) {
5597
+ modifiers = modifiers || [];
5598
+ const modifier = modifiers[0];
5599
+ let element = null;
5600
+ if (modifiers.length) {
5601
+ element = modifier[1]?.element || modifier.state.element;
5602
+ }
5603
+ for (const modifier of modifiers) {
5604
+ const state = {};
5605
+ const modifierState = modifier.state?.instance || modifier.state || modifier[1];
5606
+ const instance = modifierState?.instance || modifierState?.delegate;
5607
+ let name = modifier.definition?.resolvedName || modifierState?.debugName || instance?.name;
5608
+ if (!name) {
5609
+ try {
5610
+ name = modifier.manager?.getDebugName?.();
5611
+ } catch (e) {
5612
+ // failed
5613
+ }
5614
+ name = name || 'unknown-modifier';
5615
+ }
5616
+ const args = {
5617
+ positional: [],
5618
+ named: {}
5619
+ };
5620
+ const positional = modifierState?.args?.positional?.references || modifierState?.args?.positional || [];
5621
+ for (const value of positional) {
5622
+ if (value && value[self.reference.REFERENCE]) {
5623
+ args.positional.push(value);
5624
+ } else {
5625
+ args.positional.push(createRef(value));
5626
+ }
5627
+ }
5628
+ let named = modifierState?.args?.named;
5629
+ if (!self.reference.createUnboundRef) {
5630
+ try {
5631
+ named = modifierState?.args?.named?.constructor;
5632
+ } catch (e) {
5633
+ //
5634
+ }
5635
+ try {
5636
+ named = named || modifierState?.args?.named?.map;
5637
+ } catch (e) {
5638
+ //
5639
+ }
5640
+ }
5641
+ for (const [key, value] of Object.entries(named || {})) {
5642
+ args.named[key] = createRef(value);
5643
+ }
5644
+ debugRenderTree?.create(state, {
5645
+ type: 'modifier',
5646
+ name,
5647
+ args: createArgs(args),
5648
+ instance: instance
5649
+ });
5650
+ debugRenderTree?.didRender(state, {
5651
+ parentElement: () => element.parentElement,
5652
+ firstNode: () => element,
5653
+ lastNode: () => element
5654
+ });
5655
+ self.registerDestructor(modifier.state, () => {
5656
+ debugRenderTree?.willDestroy(state);
5657
+ });
5658
+ }
5659
+ }
5660
+ return pushModifiers.call(this, modifiers);
5661
+ };
5662
+ }
5959
5663
  const pushRemoteElement = NewElementBuilder.prototype.pushRemoteElement;
5960
5664
  NewElementBuilder.prototype.pushRemoteElement = function (element, guid, insertBefore) {
5961
- remoteStack.push({
5962
- element
5963
- });
5964
5665
  const ref = createRef(element);
5965
5666
  const capturedArgs = {
5966
5667
  positional: [ref],
@@ -5969,16 +5670,24 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5969
5670
  if (insertBefore) {
5970
5671
  capturedArgs.named.insertBefore = insertBefore;
5971
5672
  }
5972
- const inElementArgs = self.reference.createUnboundRef ? capturedArgs : {
5973
- value() {
5974
- return capturedArgs;
5975
- }
5976
- };
5977
5673
  const debugRenderTree = self.debugRenderTree;
5978
- debugRenderTree?.create(remoteStack.at(-1), {
5674
+ const r = pushRemoteElement.call(this, element, guid, insertBefore);
5675
+ const block = this.blockStack.current;
5676
+ if (this.DESTROY) {
5677
+ const destructor = block[this.DESTROY];
5678
+ block[this.DESTROY] = function () {
5679
+ self.debugRenderTree?.willDestroy(block);
5680
+ destructor.call(this);
5681
+ };
5682
+ } else {
5683
+ self.registerDestructor?.(block, () => {
5684
+ self.debugRenderTree?.willDestroy(block);
5685
+ });
5686
+ }
5687
+ debugRenderTree?.create(block, {
5979
5688
  type: 'keyword',
5980
5689
  name: 'in-element',
5981
- args: inElementArgs,
5690
+ args: createArgs(capturedArgs),
5982
5691
  instance: {
5983
5692
  args: {
5984
5693
  named: {
@@ -5991,20 +5700,19 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
5991
5700
  }
5992
5701
  }
5993
5702
  });
5994
- return pushRemoteElement.call(this, element, guid, insertBefore);
5703
+ return r;
5995
5704
  };
5996
5705
  const popRemoteElement = NewElementBuilder.prototype.popRemoteElement;
5997
5706
  NewElementBuilder.prototype.popRemoteElement = function (...args) {
5998
- const element = this.element;
5707
+ const block = this.blockStack.current;
5999
5708
  popRemoteElement.call(this, ...args);
6000
5709
  const parentElement = this.element;
6001
5710
  const debugRenderTree = self.debugRenderTree;
6002
- debugRenderTree?.didRender(remoteStack.at(-1), {
5711
+ debugRenderTree?.didRender(block, {
6003
5712
  parentElement: () => parentElement,
6004
- firstNode: () => element,
6005
- lastNode: () => element
5713
+ firstNode: () => block.firstNode(),
5714
+ lastNode: () => block.lastNode()
6006
5715
  });
6007
- remoteStack.pop();
6008
5716
  };
6009
5717
  this.debugRenderTreeFunctions = {
6010
5718
  appendChild,
@@ -6014,7 +5722,8 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6014
5722
  pushElement,
6015
5723
  pushRemoteElement,
6016
5724
  popRemoteElement,
6017
- didAppendNode
5725
+ didAppendNode,
5726
+ pushModifiers
6018
5727
  };
6019
5728
  }
6020
5729
  teardown() {
@@ -6023,6 +5732,7 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6023
5732
  }
6024
5733
  Object.assign(this.debugRenderTree, this.debugRenderTreeFunctions);
6025
5734
  Object.assign(this.NewElementBuilder.prototype, this.NewElementBuilderFunctions);
5735
+ this.NewElementBuilderFunctions = null;
6026
5736
  }
6027
5737
  require(req) {
6028
5738
  return requireModule.has(req) ? requireModule(req) : _loader.EmberLoader.require(req);
@@ -6051,7 +5761,8 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6051
5761
  try {
6052
5762
  this.inElementSupport = new InElementSupportProvider(owner);
6053
5763
  } catch (e) {
6054
- console.error('failed to setup in element support', e);
5764
+ console.error('failed to setup in element support');
5765
+ console.error(e);
6055
5766
  // not supported
6056
5767
  }
6057
5768
 
@@ -6257,17 +5968,45 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6257
5968
  this.previouslyRetainedObjects = this.retainedObjects || new Map();
6258
5969
  this.retainedObjects = new Map();
6259
5970
  }
6260
- _createTemplateOnlyComponent(args) {
5971
+ _createSimpleInstance(name, args) {
6261
5972
  const obj = Object.create(null);
6262
5973
  obj.args = args;
6263
5974
  obj.constructor = {
6264
- name: 'TemplateOnlyComponent',
5975
+ name: name,
6265
5976
  comment: 'fake constructor'
6266
5977
  };
6267
5978
  return obj;
6268
5979
  }
5980
+ _insertHtmlElementNode(node, parentNode) {
5981
+ const element = node.bounds.firstNode;
5982
+ const htmlNode = {
5983
+ id: node.id + 'html-element',
5984
+ type: 'html-element',
5985
+ name: element.tagName.toLowerCase(),
5986
+ instance: element,
5987
+ template: null,
5988
+ bounds: {
5989
+ firstNode: element,
5990
+ lastNode: element,
5991
+ parentElement: element.parentElement
5992
+ },
5993
+ args: {
5994
+ named: {},
5995
+ positional: []
5996
+ },
5997
+ children: []
5998
+ };
5999
+ const idx = parentNode.children.indexOf(node);
6000
+ parentNode.children.splice(idx, 0, htmlNode);
6001
+ return this._serializeRenderNode(htmlNode, parentNode);
6002
+ }
6269
6003
  _serializeRenderNodes(nodes, parentNode = null) {
6270
- return nodes.map(node => this._serializeRenderNode(node, parentNode));
6004
+ const mapped = [];
6005
+ // nodes can be mutated during serialize, which is why we use indexing instead of .map
6006
+ for (let i = 0; i < nodes.length; i++) {
6007
+ mapped.push(this._serializeRenderNode(nodes[i], parentNode));
6008
+ }
6009
+ return mapped;
6271
6010
  }
6272
6011
  _serializeRenderNode(node, parentNode = null) {
6273
6012
  if (!node.id.startsWith(this.renderNodeIdPrefix)) {
@@ -6300,10 +6039,38 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6300
6039
  if (parentNode) {
6301
6040
  this.parentNodes[node.id] = parentNode;
6302
6041
  }
6042
+ if (node.type === 'html-element') {
6043
+ // show set attributes in inspector
6044
+ Array.from(node.instance.attributes).forEach(attr => {
6045
+ node.args.named[attr.nodeName] = attr.nodeValue;
6046
+ });
6047
+ // move modifiers and components into the element children
6048
+ parentNode.children.forEach(child => {
6049
+ if (child.bounds.parentElement === node.instance || child.type === 'modifier' && child.bounds.firstNode === node.instance) {
6050
+ node.children.push(child);
6051
+ }
6052
+ });
6053
+ node.children.forEach(child => {
6054
+ const idx = parentNode.children.indexOf(child);
6055
+ if (idx >= 0) {
6056
+ parentNode.children.splice(idx, 1);
6057
+ }
6058
+ });
6059
+ }
6060
+ if (node.type === 'component' && !node.instance) {
6061
+ node.instance = this._createSimpleInstance('TemplateOnlyComponent', node.args.named);
6062
+ }
6063
+ if (node.type === 'modifier') {
6064
+ node.instance = node.instance || this._createSimpleInstance(node.name, node.args);
6065
+ node.instance.toString = () => node.name;
6066
+ if (parentNode.instance !== node.bounds.firstNode) {
6067
+ return this._insertHtmlElementNode(node, parentNode);
6068
+ }
6069
+ }
6303
6070
  this.serialized[node.id] = serialized = {
6304
6071
  ...node,
6305
6072
  args: this._serializeArgs(node.args),
6306
- instance: this._serializeItem(node.instance || (node.type === 'component' ? this._createTemplateOnlyComponent(node.args.named) : undefined)),
6073
+ instance: this._serializeItem(node.instance),
6307
6074
  bounds: this._serializeBounds(node.bounds),
6308
6075
  children: this._serializeRenderNodes(node.children, node)
6309
6076
  };
@@ -6360,7 +6127,9 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6360
6127
  }
6361
6128
  this.retainedObjects.set(object, id);
6362
6129
  return {
6363
- id
6130
+ id,
6131
+ type: typeof object,
6132
+ inspect: (0, _typeCheck.inspect)(object)
6364
6133
  };
6365
6134
  }
6366
6135
  _releaseStaleObjects() {
@@ -6403,7 +6172,12 @@ define("ember-debug/libs/render-tree", ["exports", "ember-debug/libs/capture-ren
6403
6172
  while (candidates.length > 0) {
6404
6173
  let candidate = candidates.shift();
6405
6174
  let range = this.getRange(candidate.id);
6406
- if (range && range.isPointInRange(dom, 0)) {
6175
+ const isAllowed = candidate.type !== 'modifier' && candidate.type !== 'html-element';
6176
+ if (!isAllowed) {
6177
+ candidates.push(...candidate.children);
6178
+ continue;
6179
+ }
6180
+ if (isAllowed && range && range.isPointInRange(dom, 0)) {
6407
6181
  // We may be able to find a more exact match in one of the children.
6408
6182
  return this._matchRenderNodes(candidate.children, dom, false) || candidate;
6409
6183
  } else if (!range || deep) {
@@ -6711,6 +6485,22 @@ define("ember-debug/libs/view-inspection", ["exports", "ember-debug/utils/classi
6711
6485
  color: rgb(168, 148, 166);
6712
6486
  }
6713
6487
 
6488
+ #${prefix}-tooltip-${id} .${prefix}-tooltip-detail-instance > .${prefix}-tooltip-token-tag {
6489
+ cursor: pointer;
6490
+ }
6491
+
6492
+ #${prefix}-tooltip-${id} .${prefix}-tooltip-detail-instance > .${prefix}-tooltip-token-tag:after {
6493
+ content: "\\1F517"
6494
+ }
6495
+
6496
+ #${prefix}-tooltip-${id} .${prefix}-tooltip-detail-controller > .${prefix}-tooltip-token-tag {
6497
+ cursor: pointer;
6498
+ }
6499
+
6500
+ #${prefix}-tooltip-${id} .${prefix}-tooltip-detail-controller > .${prefix}-tooltip-token-tag:after {
6501
+ content: "\\1F517"
6502
+ }
6503
+
6714
6504
  #${prefix}-tooltip-${id} .${prefix}-tooltip-token-name {
6715
6505
  /* https://github.com/ChromeDevTools/devtools-frontend/blob/103326238685ac582d3bf2a02f1627a80e3fce5f/front_end/ui/inspectorSyntaxHighlight.css#L60 */
6716
6506
  color: rgb(136, 18, 128);
@@ -7075,6 +6865,12 @@ define("ember-debug/libs/view-inspection", ["exports", "ember-debug/utils/classi
7075
6865
  } else {
7076
6866
  this._renderTooltipDetail(tbody, 'Instance', this._tokenizeItem(node.instance));
7077
6867
  }
6868
+ const detail = tbody.querySelector('.ember-inspector-tooltip-detail-instance > .ember-inspector-tooltip-token-tag') || tbody.querySelector('.ember-inspector-tooltip-detail-controller > .ember-inspector-tooltip-token-tag');
6869
+ if (detail) {
6870
+ detail.onclick = () => {
6871
+ this.objectInspector.sendToConsole(node.instance.id);
6872
+ };
6873
+ }
7078
6874
  }
7079
6875
  }
7080
6876
  _renderTooltipDetail(tbody, key, value) {
@@ -7770,7 +7566,7 @@ define("ember-debug/models/promise", ["exports", "ember-debug/utils/type-check",
7770
7566
  })), _class2));
7771
7567
  _exports.default = _class;
7772
7568
  });
7773
- define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "ember-debug/utils/bound-method", "ember-debug/utils/type-check", "ember-debug/utils/version", "ember-debug/utils/ember/debug", "ember-debug/utils/ember", "ember-debug/utils/ember/object/internals", "ember-debug/utils/ember/runloop", "ember-debug/utils/ember-object-names", "ember-debug/utils/get-object-name", "ember-debug/utils/ember/loader"], function (_exports, _debugPort, _boundMethod, _typeCheck, _version, _debug, _ember, _internals, _runloop, _emberObjectNames, _getObjectName, _loader) {
7569
+ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "ember-debug/utils/bound-method", "ember-debug/utils/type-check", "ember-debug/utils/version", "ember-debug/utils/ember", "ember-debug/utils/ember/object/internals", "ember-debug/utils/ember/runloop", "ember-debug/utils/ember-object-names", "ember-debug/utils/get-object-name", "ember-debug/utils/ember/loader"], function (_exports, _debugPort, _boundMethod, _typeCheck, _version, _ember, _internals, _runloop, _emberObjectNames, _getObjectName, _loader) {
7774
7570
  "use strict";
7775
7571
 
7776
7572
  Object.defineProperty(_exports, "__esModule", {
@@ -7780,12 +7576,6 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
7780
7576
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7781
7577
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
7782
7578
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* eslint-disable ember/no-private-routing-service */
7783
- const {
7784
- meta: emberMeta,
7785
- VERSION,
7786
- CoreObject,
7787
- ObjectProxy
7788
- } = _ember.default;
7789
7579
  const GlimmerComponent = (() => {
7790
7580
  try {
7791
7581
  return _loader.EmberLoader.require('@glimmer/component').default;
@@ -7844,7 +7634,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
7844
7634
  // ignore
7845
7635
  }
7846
7636
  const HAS_GLIMMER_TRACKING = tagValue && tagValidate && track && tagForProperty;
7847
- const keys = Object.keys || _ember.default.keys;
7637
+ const keys = Object.keys;
7848
7638
 
7849
7639
  /**
7850
7640
  * Determine the type and get the value of the passed property
@@ -7865,9 +7655,15 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
7865
7655
 
7866
7656
  // TODO: this is not very clean. We should refactor calculateCP, etc, rather than passing computedValue
7867
7657
  if (computedValue !== undefined) {
7658
+ if (value instanceof HTMLElement) {
7659
+ return {
7660
+ type: 'type-object',
7661
+ inspect: `<${value.tagName.toLowerCase()}>`
7662
+ };
7663
+ }
7868
7664
  return {
7869
7665
  type: `type-${(0, _typeCheck.typeOf)(value)}`,
7870
- inspect: inspect(value)
7666
+ inspect: (0, _typeCheck.inspect)(value)
7871
7667
  };
7872
7668
  }
7873
7669
  if (value instanceof _ember.EmberObject) {
@@ -7881,88 +7677,24 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
7881
7677
  type: 'type-descriptor',
7882
7678
  inspect: string
7883
7679
  };
7884
- } else if ((0, _typeCheck.isDescriptor)(value)) {
7680
+ } else if (value?.isDescriptor) {
7885
7681
  return {
7886
7682
  type: 'type-descriptor',
7887
7683
  inspect: value.toString()
7888
7684
  };
7685
+ } else if (value instanceof HTMLElement) {
7686
+ return {
7687
+ type: 'type-object',
7688
+ inspect: value.tagName.toLowerCase()
7689
+ };
7889
7690
  } else {
7890
7691
  return {
7891
7692
  type: `type-${(0, _typeCheck.typeOf)(value)}`,
7892
- inspect: inspect(value)
7693
+ inspect: (0, _typeCheck.inspect)(value)
7893
7694
  };
7894
7695
  }
7895
7696
  }
7896
- function inspect(value) {
7897
- if (typeof value === 'function') {
7898
- return 'function() { ... }';
7899
- } else if (value instanceof _ember.EmberObject) {
7900
- return value.toString();
7901
- } else if ((0, _typeCheck.typeOf)(value) === 'array') {
7902
- if (value.length === 0) {
7903
- return '[]';
7904
- } else if (value.length === 1) {
7905
- return `[ ${inspect(value[0])} ]`;
7906
- } else {
7907
- return `[ ${inspect(value[0])}, ... ]`;
7908
- }
7909
- } else if (value instanceof Error) {
7910
- return `Error: ${value.message}`;
7911
- } else if (value === null) {
7912
- return 'null';
7913
- } else if ((0, _typeCheck.typeOf)(value) === 'date') {
7914
- return value.toString();
7915
- } else if (typeof value === 'object') {
7916
- // `Ember.inspect` is able to handle this use case,
7917
- // but it is very slow as it loops over all props,
7918
- // so summarize to just first 2 props
7919
- // if it defines a toString, we use that instead
7920
- if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString && value.toString !== Function.prototype.toString) {
7921
- try {
7922
- return `<Object:${value.toString()}>`;
7923
- } catch (e) {
7924
- //
7925
- }
7926
- }
7927
- let ret = [];
7928
- let v;
7929
- let count = 0;
7930
- let broken = false;
7931
- for (let key in value) {
7932
- if (!('hasOwnProperty' in value) || value.hasOwnProperty(key)) {
7933
- if (count++ > 1) {
7934
- broken = true;
7935
- break;
7936
- }
7937
- v = value[key];
7938
- if (v === 'toString') {
7939
- continue;
7940
- } // ignore useless items
7941
- if ((0, _typeCheck.typeOf)(v).includes('function')) {
7942
- v = 'function() { ... }';
7943
- }
7944
- if ((0, _typeCheck.typeOf)(v) === 'array') {
7945
- v = `[Array : ${v.length}]`;
7946
- }
7947
- if ((0, _typeCheck.typeOf)(v) === 'object') {
7948
- v = '[Object]';
7949
- }
7950
- ret.push(`${key}: ${v}`);
7951
- }
7952
- }
7953
- let suffix = ' }';
7954
- if (broken) {
7955
- suffix = ' ...}';
7956
- }
7957
- return `{ ${ret.join(', ')}${suffix}`;
7958
- } else {
7959
- return (0, _debug.inspect)(value);
7960
- }
7961
- }
7962
7697
  function isMandatorySetter(descriptor) {
7963
- if (descriptor.set && descriptor.set === _ember.default.MANDATORY_SETTER_FUNCTION) {
7964
- return true;
7965
- }
7966
7698
  if (descriptor.set && Function.prototype.toString.call(descriptor.set).includes('You attempted to update')) {
7967
7699
  return true;
7968
7700
  }
@@ -7992,7 +7724,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
7992
7724
  const tag = tagInfo.tag;
7993
7725
  const proto = Object.getPrototypeOf(object);
7994
7726
  if (!proto) return [];
7995
- const cpDesc = emberMeta(object).peekDescriptors(property);
7727
+ const cpDesc = (0, _ember.meta)(object).peekDescriptors(property);
7996
7728
  const dependentKeys = [];
7997
7729
  if (cpDesc) {
7998
7730
  dependentKeys.push(...(cpDesc._dependentKeys || []));
@@ -8041,7 +7773,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8041
7773
  _defineProperty(this, "objectPropertyValues", {});
8042
7774
  _defineProperty(this, "trackedTags", {});
8043
7775
  _defineProperty(this, "_errorsFor", {});
8044
- _defineProperty(this, "inspect", inspect);
7776
+ _defineProperty(this, "inspect", _typeCheck.inspect);
8045
7777
  _defineProperty(this, "inspectValue", inspectValue);
8046
7778
  }
8047
7779
  get adapter() {
@@ -8052,7 +7784,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8052
7784
  }
8053
7785
  updateCurrentObject() {
8054
7786
  Object.values(this.sentObjects).forEach(obj => {
8055
- if (obj instanceof CoreObject && obj.isDestroyed) {
7787
+ if (obj instanceof _ember.CoreObject && obj.isDestroyed) {
8056
7788
  this.dropObject((0, _internals.guidFor)(obj));
8057
7789
  }
8058
7790
  });
@@ -8145,6 +7877,26 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8145
7877
  }
8146
7878
  });
8147
7879
  }
7880
+ gotoSource(objectId, prop) {
7881
+ let object = this.sentObjects[objectId];
7882
+ let value;
7883
+ if (prop === null || prop === undefined) {
7884
+ value = this.sentObjects[objectId];
7885
+ } else {
7886
+ value = calculateCP(object, {
7887
+ name: prop
7888
+ }, {});
7889
+ }
7890
+ // for functions and classes we want to show the source
7891
+ if (typeof value === 'function') {
7892
+ this.adapter.inspectValue(value);
7893
+ }
7894
+ // use typeOf to distinguish basic objects/classes and Date, Error etc.
7895
+ // objects like {...} have the constructor set to Object
7896
+ if ((0, _typeCheck.typeOf)(value) === 'object' && value.constructor !== Object) {
7897
+ this.adapter.inspectValue(value.constructor);
7898
+ }
7899
+ }
8148
7900
  sendToConsole(objectId, prop) {
8149
7901
  let object = this.sentObjects[objectId];
8150
7902
  let value;
@@ -8164,7 +7916,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8164
7916
  }
8165
7917
  let args = [value];
8166
7918
  if (value instanceof _ember.EmberObject) {
8167
- args.unshift(inspect(value));
7919
+ args.unshift((0, _typeCheck.inspect)(value));
8168
7920
  }
8169
7921
  this.adapter.log('Ember Inspector ($E): ', ...args);
8170
7922
  }
@@ -8200,7 +7952,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8200
7952
  });
8201
7953
  }
8202
7954
  retainObject(object) {
8203
- let meta = emberMeta(object);
7955
+ let meta = (0, _ember.meta)(object);
8204
7956
  let guid = (0, _internals.guidFor)(object);
8205
7957
  meta._debugReferences = meta._debugReferences || 0;
8206
7958
  meta._debugReferences++;
@@ -8212,7 +7964,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8212
7964
  if (!object) {
8213
7965
  return;
8214
7966
  }
8215
- let meta = emberMeta(object);
7967
+ let meta = (0, _ember.meta)(object);
8216
7968
  let guid = (0, _internals.guidFor)(object);
8217
7969
  meta._debugReferences--;
8218
7970
  if (meta._debugReferences === 0) {
@@ -8287,7 +8039,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8287
8039
 
8288
8040
  // insert ember mixins
8289
8041
  for (let mixin of own) {
8290
- let name = (mixin[_ember.default.NAME_KEY] || mixin.ownerConstructor || _emberObjectNames.default.get(mixin) || '').toString();
8042
+ let name = (mixin.ownerConstructor || _emberObjectNames.default.get(mixin) || '').toString();
8291
8043
  if (!name && typeof mixin.toString === 'function') {
8292
8044
  try {
8293
8045
  name = mixin.toString();
@@ -8313,10 +8065,10 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8313
8065
  return mixins;
8314
8066
  }
8315
8067
  mixinsForObject(object) {
8316
- if (object instanceof ObjectProxy && object.content && !object._showProxyDetails) {
8068
+ if (object instanceof _ember.ObjectProxy && object.content && !object._showProxyDetails) {
8317
8069
  object = object.content;
8318
8070
  }
8319
- if (object instanceof _ember.default.ArrayProxy && object.content && !object._showProxyDetails) {
8071
+ if (object instanceof _ember.ArrayProxy && object.content && !object._showProxyDetails) {
8320
8072
  object = object.slice(0, 101);
8321
8073
  }
8322
8074
  let mixinDetails = this.mixinDetailsForObject(object);
@@ -8407,6 +8159,9 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8407
8159
  sendToConsole(message) {
8408
8160
  this.sendToConsole(message.objectId, message.property);
8409
8161
  },
8162
+ gotoSource(message) {
8163
+ this.gotoSource(message.objectId, message.property);
8164
+ },
8410
8165
  sendControllerToConsole(message) {
8411
8166
  const container = this.namespace?.owner;
8412
8167
  this.sendValueToConsole(container.lookup(`controller:${message.name}`));
@@ -8431,7 +8186,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8431
8186
  // 3.9.0 removed intimate APIs from router
8432
8187
  // https://github.com/emberjs/ember.js/pull/17843
8433
8188
  // https://deprecations.emberjs.com/v3.x/#toc_remove-handler-infos
8434
- if ((0, _version.compareVersion)(VERSION, '3.9.0') !== -1) {
8189
+ if ((0, _version.compareVersion)(_ember.VERSION, '3.9.0') !== -1) {
8435
8190
  // Ember >= 3.9.0
8436
8191
  this.sendObject(routerLib.getRoute(message.name));
8437
8192
  } else {
@@ -8469,7 +8224,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8469
8224
  })();
8470
8225
  function ownMixins(object) {
8471
8226
  // TODO: We need to expose an API for getting _just_ the own mixins directly
8472
- let meta = emberMeta(object);
8227
+ let meta = (0, _ember.meta)(object);
8473
8228
  let parentMeta = meta.parent;
8474
8229
  let mixins = new Set();
8475
8230
 
@@ -8487,7 +8242,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8487
8242
  return mixins;
8488
8243
  }
8489
8244
  function ownProperties(object, ownMixins) {
8490
- let meta = emberMeta(object);
8245
+ let meta = (0, _ember.meta)(object);
8491
8246
  if (Array.isArray(object)) {
8492
8247
  // slice to max 101, for performance and so that the object inspector will show a `more items` indicator above 100
8493
8248
  object = object.slice(0, 101);
@@ -8576,7 +8331,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8576
8331
  }
8577
8332
  }
8578
8333
  if (!options.isService) {
8579
- options.isService = desc.value instanceof _ember.default.Service;
8334
+ options.isService = desc.value instanceof _ember.Service;
8580
8335
  }
8581
8336
  }
8582
8337
  if (options.isService) {
@@ -8846,7 +8601,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8846
8601
  let debugInfo = null;
8847
8602
  let objectDebugInfo = object._debugInfo;
8848
8603
  if (objectDebugInfo && typeof objectDebugInfo === 'function') {
8849
- if (object instanceof _ember.default.ObjectProxy && object.content) {
8604
+ if (object instanceof _ember.ObjectProxy && object.content) {
8850
8605
  object = object.content;
8851
8606
  }
8852
8607
  debugInfo = objectDebugInfo.call(object);
@@ -8857,7 +8612,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8857
8612
  skipProperties.push('isDestroyed', 'isDestroying', 'container');
8858
8613
  // 'currentState' and 'state' are un-observable private properties.
8859
8614
  // The rest are skipped to reduce noise in the inspector.
8860
- if (_ember.default.Component && object instanceof _ember.default.Component) {
8615
+ if (_ember.Component && object instanceof _ember.Component) {
8861
8616
  skipProperties.push('currentState', 'state', 'buffer', 'outletSource', 'lengthBeforeRender', 'lengthAfterRender', 'template', 'layout', 'templateData', 'domManager', 'states', 'element', 'targetObject');
8862
8617
  } else if (GlimmerComponent && object instanceof GlimmerComponent) {
8863
8618
  // These properties don't really exist on Glimmer Components, but
@@ -8876,7 +8631,7 @@ define("ember-debug/object-inspector", ["exports", "ember-debug/debug-port", "em
8876
8631
  const property = item.name;
8877
8632
  delete errorsForObject[property];
8878
8633
  try {
8879
- if (object instanceof _ember.default.ArrayProxy && property == parseInt(property)) {
8634
+ if (object instanceof _ember.ArrayProxy && property == parseInt(property)) {
8880
8635
  return object.objectAt(property);
8881
8636
  }
8882
8637
  return item.isGetter || property.includes?.('.') ? object[property] : object.get?.(property) || object[property]; // need to use `get` to be able to detect tracked props
@@ -9281,7 +9036,7 @@ define("ember-debug/render-debug", ["exports", "ember-debug/debug-port", "ember-
9281
9036
  });
9282
9037
  }
9283
9038
  });
9284
- define("ember-debug/route-debug", ["exports", "ember-debug/debug-port", "ember-debug/utils/version", "ember-debug/utils/classify", "ember-debug/utils/dasherize", "ember-debug/utils/ember", "ember-debug/utils/ember/runloop", "ember-debug/utils/bound-method"], function (_exports, _debugPort, _version, _classify, _dasherize, _ember, _runloop, _boundMethod) {
9039
+ define("ember-debug/route-debug", ["exports", "ember-debug/debug-port", "ember-debug/utils/version", "ember-debug/utils/ember", "ember-debug/utils/classify", "ember-debug/utils/dasherize", "ember-debug/utils/ember/runloop", "ember-debug/utils/bound-method"], function (_exports, _debugPort, _version, _ember, _classify, _dasherize, _runloop, _boundMethod) {
9285
9040
  "use strict";
9286
9041
 
9287
9042
  Object.defineProperty(_exports, "__esModule", {
@@ -9481,7 +9236,7 @@ define("ember-debug/route-debug", ["exports", "ember-debug/debug-port", "ember-d
9481
9236
  // 3.9.0 removed intimate APIs from router
9482
9237
  // https://github.com/emberjs/ember.js/pull/17843
9483
9238
  // https://deprecations.emberjs.com/v3.x/#toc_remove-handler-infos
9484
- if ((0, _version.compareVersion)(_ember.default.VERSION, '3.9.0') !== -1) {
9239
+ if ((0, _version.compareVersion)(_ember.VERSION, '3.9.0') !== -1) {
9485
9240
  // Ember >= 3.9.0
9486
9241
  routeHandler = routerLib.getRoute(handler);
9487
9242
  } else {
@@ -9799,7 +9554,7 @@ define("ember-debug/utils/ember", ["exports", "ember-debug/utils/ember/loader"],
9799
9554
  Object.defineProperty(_exports, "__esModule", {
9800
9555
  value: true
9801
9556
  });
9802
- _exports.set = _exports.meta = _exports.get = _exports.default = _exports.computed = _exports.VERSION = _exports.PromiseProxyMixin = _exports.Observable = _exports.NativeArray = _exports.Namespace = _exports.MutableEnumerable = _exports.MutableArray = _exports.Evented = _exports.EmberObject = _exports.CoreObject = _exports.ControllerMixin = _exports.ComputedProperty = _exports.Component = _exports.Application = _exports.ActionHandler = void 0;
9557
+ _exports.set = _exports.meta = _exports.getEnv = _exports.get = _exports.default = _exports.computed = _exports.captureRenderTree = _exports.VERSION = _exports.Service = _exports.PromiseProxyMixin = _exports.Observable = _exports.ObjectProxy = _exports.NativeArray = _exports.Namespace = _exports.MutableEnumerable = _exports.MutableArray = _exports.Evented = _exports.EmberObject = _exports.CoreObject = _exports.ControllerMixin = _exports.ComputedProperty = _exports.Component = _exports.ArrayProxy = _exports.Application = _exports.ActionHandler = void 0;
9803
9558
  let Ember;
9804
9559
  try {
9805
9560
  Ember = requireModule('ember').default;
@@ -9807,6 +9562,7 @@ define("ember-debug/utils/ember", ["exports", "ember-debug/utils/ember/loader"],
9807
9562
  Ember = window.Ember;
9808
9563
  }
9809
9564
  let {
9565
+ ArrayProxy,
9810
9566
  Namespace,
9811
9567
  ActionHandler,
9812
9568
  ControllerMixin,
@@ -9819,21 +9575,27 @@ define("ember-debug/utils/ember", ["exports", "ember-debug/utils/ember/loader"],
9819
9575
  Observable,
9820
9576
  Evented,
9821
9577
  PromiseProxyMixin,
9578
+ Service,
9822
9579
  Object: EmberObject,
9580
+ ObjectProxy,
9823
9581
  VERSION,
9824
9582
  ComputedProperty,
9825
9583
  meta,
9826
9584
  get,
9827
9585
  set,
9828
- computed
9586
+ computed,
9587
+ _captureRenderTree: captureRenderTree
9829
9588
  } = Ember || {};
9589
+ _exports.captureRenderTree = captureRenderTree;
9830
9590
  _exports.computed = computed;
9831
9591
  _exports.set = set;
9832
9592
  _exports.get = get;
9833
9593
  _exports.meta = meta;
9834
9594
  _exports.ComputedProperty = ComputedProperty;
9835
9595
  _exports.VERSION = VERSION;
9596
+ _exports.ObjectProxy = ObjectProxy;
9836
9597
  _exports.EmberObject = EmberObject;
9598
+ _exports.Service = Service;
9837
9599
  _exports.PromiseProxyMixin = PromiseProxyMixin;
9838
9600
  _exports.Evented = Evented;
9839
9601
  _exports.Observable = Observable;
@@ -9846,7 +9608,14 @@ define("ember-debug/utils/ember", ["exports", "ember-debug/utils/ember/loader"],
9846
9608
  _exports.ControllerMixin = ControllerMixin;
9847
9609
  _exports.ActionHandler = ActionHandler;
9848
9610
  _exports.Namespace = Namespace;
9611
+ _exports.ArrayProxy = ArrayProxy;
9612
+ let getEnv = () => Ember.ENV;
9613
+ _exports.getEnv = getEnv;
9849
9614
  if (!Ember) {
9615
+ _exports.captureRenderTree = captureRenderTree = (0, _loader.emberSafeRequire)('@ember/debug')?.captureRenderTree;
9616
+ _exports.getEnv = getEnv = (0, _loader.emberSafeRequire)('@ember/-internals/environment')?.getENV;
9617
+ _exports.ArrayProxy = ArrayProxy = (0, _loader.emberSafeRequire)('@ember/array/proxy')?.default;
9618
+ _exports.ObjectProxy = ObjectProxy = (0, _loader.emberSafeRequire)('@ember/object/proxy')?.default;
9850
9619
  _exports.MutableArray = MutableArray = (0, _loader.emberSafeRequire)('@ember/array/mutable')?.default;
9851
9620
  _exports.Namespace = Namespace = (0, _loader.emberSafeRequire)('@ember/application/namespace')?.default;
9852
9621
  _exports.MutableEnumerable = MutableEnumerable = (0, _loader.emberSafeRequire)('@ember/enumerable/mutable')?.default;
@@ -9858,6 +9627,7 @@ define("ember-debug/utils/ember", ["exports", "ember-debug/utils/ember/loader"],
9858
9627
  _exports.Observable = Observable = (0, _loader.emberSafeRequire)('@ember/object/observable')?.default;
9859
9628
  _exports.Evented = Evented = (0, _loader.emberSafeRequire)('@ember/object/evented')?.default;
9860
9629
  _exports.PromiseProxyMixin = PromiseProxyMixin = (0, _loader.emberSafeRequire)('@ember/object/promise-proxy-mixin')?.default;
9630
+ _exports.Service = Service = (0, _loader.emberSafeRequire)('@ember/service')?.default;
9861
9631
  _exports.EmberObject = EmberObject = (0, _loader.emberSafeRequire)('@ember/object')?.default;
9862
9632
  _exports.VERSION = VERSION = (0, _loader.emberSafeRequire)('ember/version')?.default;
9863
9633
  _exports.ComputedProperty = ComputedProperty = (0, _loader.emberSafeRequire)('@ember/-internals/metal')?.ComputedProperty;
@@ -10182,6 +9952,9 @@ define("ember-debug/utils/get-object-name", ["exports", "ember-debug/utils/ember
10182
9952
  function getObjectName(object) {
10183
9953
  let name = '';
10184
9954
  let className = object.constructor && (_emberObjectNames.default.get(object.constructor) || object.constructor.name) || '';
9955
+ if (object instanceof Function) {
9956
+ return 'Function ' + object.name;
9957
+ }
10185
9958
 
10186
9959
  // check if object is a primitive value
10187
9960
  if (object !== Object(object)) {
@@ -10246,7 +10019,7 @@ define("ember-debug/utils/name-functions", ["exports"], function (_exports) {
10246
10019
  name = model.toString();
10247
10020
  }
10248
10021
  if (name.length > 50) {
10249
- name = `${name.substr(0, 50)}...`;
10022
+ name = `${name.slice(0, 50)}...`;
10250
10023
  }
10251
10024
  return name;
10252
10025
  }
@@ -10394,8 +10167,8 @@ define("ember-debug/utils/type-check", ["exports", "ember-debug/utils/ember/debu
10394
10167
  value: true
10395
10168
  });
10396
10169
  _exports.getDescriptorFor = getDescriptorFor;
10170
+ _exports.inspect = inspect;
10397
10171
  _exports.isComputed = isComputed;
10398
- _exports.isDescriptor = isDescriptor;
10399
10172
  _exports.typeOf = typeOf;
10400
10173
  /**
10401
10174
  * Check if given key on the passed object is a computed property
@@ -10414,13 +10187,6 @@ define("ember-debug/utils/type-check", ["exports", "ember-debug/utils/ember/debu
10414
10187
  if (getDescriptorFor(object, key) instanceof _ember.ComputedProperty) {
10415
10188
  return true;
10416
10189
  }
10417
-
10418
- // Ember < 3.10
10419
- return object[key] instanceof _ember.ComputedProperty;
10420
- }
10421
- function isDescriptor(value) {
10422
- // Ember >= 1.11
10423
- return value && typeof value === 'object' && value.isDescriptor;
10424
10190
  }
10425
10191
 
10426
10192
  /**
@@ -10430,11 +10196,11 @@ define("ember-debug/utils/type-check", ["exports", "ember-debug/utils/ember/debu
10430
10196
  * @param {String} key The key for the property on the object
10431
10197
  */
10432
10198
  function getDescriptorFor(object, key) {
10433
- if (isDescriptor(object[key])) {
10199
+ if (object[key]?.isDescriptor) {
10434
10200
  return object[key];
10435
10201
  }
10436
10202
 
10437
- // exists longeer than ember 3.10
10203
+ // exists longer than ember 3.10
10438
10204
  if (_debug.default.isComputed) {
10439
10205
  const {
10440
10206
  descriptorForDecorator,
@@ -10447,6 +10213,74 @@ define("ember-debug/utils/type-check", ["exports", "ember-debug/utils/ember/debu
10447
10213
  function typeOf(obj) {
10448
10214
  return Object.prototype.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
10449
10215
  }
10216
+ function inspect(value) {
10217
+ if (typeof value === 'function') {
10218
+ return `${value.name || 'function'}() { ... }`;
10219
+ } else if (value instanceof _ember.EmberObject) {
10220
+ return value.toString();
10221
+ } else if (value instanceof HTMLElement) {
10222
+ return `<${value.tagName.toLowerCase()}>`;
10223
+ } else if (typeOf(value) === 'array') {
10224
+ if (value.length === 0) {
10225
+ return '[]';
10226
+ } else if (value.length === 1) {
10227
+ return `[ ${inspect(value[0])} ]`;
10228
+ } else {
10229
+ return `[ ${inspect(value[0])}, ... ]`;
10230
+ }
10231
+ } else if (value instanceof Error) {
10232
+ return `Error: ${value.message}`;
10233
+ } else if (value === null) {
10234
+ return 'null';
10235
+ } else if (typeOf(value) === 'date') {
10236
+ return value.toString();
10237
+ } else if (typeof value === 'object') {
10238
+ // `Ember.inspect` is able to handle this use case,
10239
+ // but it is very slow as it loops over all props,
10240
+ // so summarize to just first 2 props
10241
+ // if it defines a toString, we use that instead
10242
+ if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString && value.toString !== Function.prototype.toString) {
10243
+ try {
10244
+ return `<Object:${value.toString()}>`;
10245
+ } catch (e) {
10246
+ //
10247
+ }
10248
+ }
10249
+ let ret = [];
10250
+ let v;
10251
+ let count = 0;
10252
+ let broken = false;
10253
+ for (let key in value) {
10254
+ if (!('hasOwnProperty' in value) || value.hasOwnProperty(key)) {
10255
+ if (count++ > 1) {
10256
+ broken = true;
10257
+ break;
10258
+ }
10259
+ v = value[key];
10260
+ if (v === 'toString') {
10261
+ continue;
10262
+ } // ignore useless items
10263
+ if (typeOf(v).includes('function')) {
10264
+ v = `function ${v.name}() { ... }`;
10265
+ }
10266
+ if (typeOf(v) === 'array') {
10267
+ v = `[Array : ${v.length}]`;
10268
+ }
10269
+ if (typeOf(v) === 'object') {
10270
+ v = '[Object]';
10271
+ }
10272
+ ret.push(`${key}: ${v}`);
10273
+ }
10274
+ }
10275
+ let suffix = ' }';
10276
+ if (broken) {
10277
+ suffix = ' ...}';
10278
+ }
10279
+ return `{ ${ret.join(', ')}${suffix}`;
10280
+ } else {
10281
+ return (0, _debug.inspect)(value);
10282
+ }
10283
+ }
10450
10284
  });
10451
10285
  define("ember-debug/utils/version", ["exports"], function (_exports) {
10452
10286
  "use strict";
@@ -10455,6 +10289,7 @@ define("ember-debug/utils/version", ["exports"], function (_exports) {
10455
10289
  value: true
10456
10290
  });
10457
10291
  _exports.compareVersion = compareVersion;
10292
+ _exports.isInVersionSpecifier = isInVersionSpecifier;
10458
10293
  /**
10459
10294
  * Compares two Ember versions.
10460
10295
  *
@@ -10480,6 +10315,41 @@ define("ember-debug/utils/version", ["exports"], function (_exports) {
10480
10315
  return 0;
10481
10316
  }
10482
10317
 
10318
+ /**
10319
+ *
10320
+ * @param specifier e.g. ^5.12.0
10321
+ * @param version 5.13
10322
+ * @return {boolean}
10323
+ */
10324
+ function isInVersionSpecifier(specifier, version) {
10325
+ let compared, i, version2;
10326
+ let operator = specifier[0];
10327
+ if (Number.isNaN(+operator)) {
10328
+ specifier = specifier.slice(1);
10329
+ }
10330
+ specifier = cleanupVersion(specifier).split('.');
10331
+ version2 = cleanupVersion(version).split('.');
10332
+ if (operator === '~' && specifier[1] !== version2[1]) {
10333
+ return false;
10334
+ }
10335
+ if (operator === '^' && specifier[0] !== version2[0]) {
10336
+ return false;
10337
+ }
10338
+ if (operator === '>' && specifier[0] > version2[0]) {
10339
+ return false;
10340
+ }
10341
+ for (i = 0; i < 3; i++) {
10342
+ compared = compare(+specifier[i], +version2[i]);
10343
+ if (compared < 0) {
10344
+ return true;
10345
+ }
10346
+ if (compared > 0) {
10347
+ return false;
10348
+ }
10349
+ }
10350
+ return true;
10351
+ }
10352
+
10483
10353
  /**
10484
10354
  * Remove -alpha, -beta, etc from versions
10485
10355
  *
@@ -10587,7 +10457,7 @@ define("ember-debug/view-debug", ["exports", "ember-debug/debug-port", "ember-de
10587
10457
  * @param {Node} node The DOM node to inspect
10588
10458
  */
10589
10459
  inspectNode(node) {
10590
- this.adapter.inspectNode(node);
10460
+ this.adapter.inspectValue(node);
10591
10461
  }
10592
10462
  sendTree(immediate = false) {
10593
10463
  if (immediate) {