ember-inspector 4.11.0-alpha.2024.3.8 → 4.11.0-alpha.2024.4.1
Sign up to get free protection for your applications and to get access to all the features.
- package/app/components/component-tree-arg.js +9 -0
- package/app/components/component-tree-item.hbs +18 -2
- package/app/components/object-inspector/properties-all.hbs +1 -0
- package/app/components/object-inspector/properties-base.js +10 -0
- package/app/components/object-inspector/properties-grouped.hbs +1 -0
- package/app/components/object-inspector/property.hbs +12 -1
- package/app/components/object-inspector/property.ts +4 -2
- package/app/components/object-inspector.hbs +16 -2
- package/app/components/object-inspector.js +14 -0
- package/app/controllers/component-tree.js +54 -3
- package/app/routes/component-tree.js +0 -6
- package/app/services/adapters/web-extension.js +3 -3
- package/app/services/port.js +4 -0
- package/app/styles/component_tree.scss +13 -0
- package/app/utils/parse-text.ts +1 -0
- package/dist/bookmarklet/panes-3-16-0/assets/{chunk.143.f51e4d776c3646d0317c.js → chunk.143.113e8b75c912ce3c25a2.js} +4 -4
- package/dist/{firefox/panes-3-16-0/assets/chunk.178.349e34d6ec504e36d770.js → bookmarklet/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
- package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.css +13 -0
- package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.js +27 -23
- package/dist/bookmarklet/panes-3-16-0/assets/svg/code-source.svg +9 -0
- package/dist/bookmarklet/panes-3-16-0/assets/vendor.css +33 -0
- package/dist/bookmarklet/panes-3-16-0/assets/vendor.js +12 -10
- package/dist/bookmarklet/panes-3-16-0/ember_debug.js +408 -538
- package/dist/bookmarklet/panes-3-16-0/index.html +2 -2
- package/dist/chrome/manifest.json +2 -2
- package/dist/{firefox/panes-3-16-0/assets/chunk.143.f51e4d776c3646d0317c.js → chrome/panes-3-16-0/assets/chunk.143.113e8b75c912ce3c25a2.js} +4 -4
- package/dist/{bookmarklet/panes-3-16-0/assets/chunk.178.349e34d6ec504e36d770.js → chrome/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
- package/dist/chrome/panes-3-16-0/assets/ember-inspector.css +13 -0
- package/dist/chrome/panes-3-16-0/assets/ember-inspector.js +27 -23
- package/dist/chrome/panes-3-16-0/assets/svg/code-source.svg +9 -0
- package/dist/chrome/panes-3-16-0/assets/vendor.css +33 -0
- package/dist/chrome/panes-3-16-0/assets/vendor.js +12 -10
- package/dist/chrome/panes-3-16-0/ember_debug.js +408 -538
- package/dist/chrome/panes-3-16-0/index.html +2 -2
- package/dist/firefox/manifest.json +2 -2
- package/dist/{chrome/panes-3-16-0/assets/chunk.143.f51e4d776c3646d0317c.js → firefox/panes-3-16-0/assets/chunk.143.113e8b75c912ce3c25a2.js} +4 -4
- package/dist/{websocket/assets/chunk.178.349e34d6ec504e36d770.js → firefox/panes-3-16-0/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
- package/dist/firefox/panes-3-16-0/assets/ember-inspector.css +13 -0
- package/dist/firefox/panes-3-16-0/assets/ember-inspector.js +27 -23
- package/dist/firefox/panes-3-16-0/assets/svg/code-source.svg +9 -0
- package/dist/firefox/panes-3-16-0/assets/vendor.css +33 -0
- package/dist/firefox/panes-3-16-0/assets/vendor.js +12 -10
- package/dist/firefox/panes-3-16-0/ember_debug.js +408 -538
- package/dist/firefox/panes-3-16-0/index.html +2 -2
- package/dist/websocket/assets/{chunk.143.f51e4d776c3646d0317c.js → chunk.143.113e8b75c912ce3c25a2.js} +4 -4
- package/dist/{chrome/panes-3-16-0/assets/chunk.178.349e34d6ec504e36d770.js → websocket/assets/chunk.178.d4c26666ebefd8cf7ed3.js} +3 -3
- package/dist/websocket/assets/ember-inspector.css +13 -0
- package/dist/websocket/assets/ember-inspector.js +27 -23
- package/dist/websocket/assets/svg/code-source.svg +9 -0
- package/dist/websocket/assets/vendor.css +33 -0
- package/dist/websocket/assets/vendor.js +12 -10
- package/dist/websocket/ember_debug.js +408 -538
- package/dist/websocket/index.html +2 -2
- package/ember-cli-build.js +3 -4
- package/ember_debug/adapters/basic.js +4 -4
- package/ember_debug/adapters/web-extension.js +9 -5
- package/ember_debug/general-debug.js +3 -1
- package/ember_debug/libs/capture-render-tree.js +7 -426
- package/ember_debug/libs/render-tree.js +210 -31
- package/ember_debug/libs/view-inspection.js +28 -0
- package/ember_debug/object-inspector.js +49 -88
- package/ember_debug/route-debug.js +2 -3
- package/ember_debug/utils/ember.js +16 -0
- package/ember_debug/utils/get-object-name.js +4 -0
- package/ember_debug/utils/name-functions.js +1 -1
- package/ember_debug/utils/type-check.js +82 -12
- package/ember_debug/utils/version.js +37 -0
- package/ember_debug/view-debug.js +1 -1
- package/lib/ui/addon/styles/_goto-source.scss +30 -0
- package/lib/ui/addon/styles/addon.scss +1 -0
- package/lib/ui/addon/styles/toolbar/_index.scss +4 -0
- package/package.json +1 -1
- package/public/assets/svg/code-source.svg +9 -0
- package/skeletons/web-extension/manifest.json +2 -2
- package/tests/acceptance/object-inspector-test.js +68 -0
- package/tests/ember_debug/view-debug-test.js +211 -69
- 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
|
-
|
159
|
+
For functions, it will open the sources tab and goto the definition
|
160
|
+
@param {Node|Function} node
|
160
161
|
*/
|
161
|
-
|
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
|
-
|
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}
|
358
|
+
* @param {Node|Function} value The DOM node to select
|
354
359
|
*/
|
355
|
-
|
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] =
|
377
|
-
this.namespace.port.send('view:
|
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
|
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/
|
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.
|
5339
|
-
if (_ember.
|
5340
|
-
|
5341
|
+
if (_ember.captureRenderTree) {
|
5342
|
+
if ((0, _ember.getEnv)()._DEBUG_RENDER_TREE) {
|
5343
|
+
capture = _ember.captureRenderTree;
|
5341
5344
|
} else {
|
5342
|
-
|
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 =
|
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
|
-
|
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:
|
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
|
5703
|
+
return r;
|
5995
5704
|
};
|
5996
5705
|
const popRemoteElement = NewElementBuilder.prototype.popRemoteElement;
|
5997
5706
|
NewElementBuilder.prototype.popRemoteElement = function (...args) {
|
5998
|
-
const
|
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(
|
5711
|
+
debugRenderTree?.didRender(block, {
|
6003
5712
|
parentElement: () => parentElement,
|
6004
|
-
firstNode: () =>
|
6005
|
-
lastNode: () =>
|
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'
|
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
|
-
|
5971
|
+
_createSimpleInstance(name, args) {
|
6261
5972
|
const obj = Object.create(null);
|
6262
5973
|
obj.args = args;
|
6263
5974
|
obj.constructor = {
|
6264
|
-
name:
|
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
|
-
|
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
|
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
|
-
|
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
|
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
|
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 (
|
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 =
|
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 =
|
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 =
|
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
|
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.
|
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 =
|
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 =
|
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.
|
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.
|
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.
|
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.
|
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/
|
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.
|
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.
|
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 (
|
10199
|
+
if (object[key]?.isDescriptor) {
|
10434
10200
|
return object[key];
|
10435
10201
|
}
|
10436
10202
|
|
10437
|
-
// exists
|
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.
|
10460
|
+
this.adapter.inspectValue(node);
|
10591
10461
|
}
|
10592
10462
|
sendTree(immediate = false) {
|
10593
10463
|
if (immediate) {
|