ember-source 6.3.0-alpha.2 → 6.3.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-metadata.json +3 -3
- package/dist/ember-template-compiler.js +2 -2
- package/dist/ember-testing.js +1 -1
- package/dist/ember.debug.js +305 -71
- package/dist/ember.prod.js +258 -69
- package/dist/packages/@ember/-internals/glimmer/index.js +2 -2
- package/dist/packages/@ember/application/index.js +2 -2
- package/dist/packages/@ember/application/instance.js +1 -1
- package/dist/packages/@ember/component/helper.js +1 -1
- package/dist/packages/@ember/component/index.js +1 -1
- package/dist/packages/@ember/engine/index.js +2 -2
- package/dist/packages/@ember/helper/index.js +1 -1
- package/dist/packages/@ember/modifier/index.js +1 -1
- package/dist/packages/@ember/renderer/index.js +1 -1
- package/dist/packages/@ember/routing/index.js +1 -1
- package/dist/packages/@ember/routing/route.js +46 -4
- package/dist/packages/@ember/template/index.js +1 -1
- package/dist/packages/ember/barrel.js +1 -1
- package/dist/packages/ember/version.js +1 -1
- package/dist/packages/ember-testing/lib/initializers.js +1 -1
- package/dist/packages/shared-chunks/{index-C7oKNWrX.js → index-4KqgXTKl.js} +256 -64
- package/dist/packages/shared-chunks/{setup-registry-CFRLjlg1.js → setup-registry-ziuiqoKc.js} +1 -1
- package/docs/data.json +94 -76
- package/package.json +2 -2
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +14 -21
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/route-template.d.ts +78 -0
- package/types/stable/@ember/-internals/glimmer/lib/utils/outlet.d.ts +3 -2
- package/types/stable/index.d.ts +1 -0
package/dist/ember.prod.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
|
6
6
|
* @license Licensed under MIT license
|
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
|
8
|
-
* @version 6.3.0-alpha.
|
|
8
|
+
* @version 6.3.0-alpha.3
|
|
9
9
|
*/
|
|
10
10
|
/* eslint-disable no-var */
|
|
11
11
|
/* globals global globalThis self */
|
|
@@ -2620,7 +2620,7 @@ var define, require;
|
|
|
2620
2620
|
}, Symbol.toStringTag, { value: 'Module' });
|
|
2621
2621
|
|
|
2622
2622
|
// this file gets replaced with the real value during the build
|
|
2623
|
-
const Version = '6.3.0-alpha.
|
|
2623
|
+
const Version = '6.3.0-alpha.3';
|
|
2624
2624
|
|
|
2625
2625
|
const emberVersion = /*#__PURE__*/Object.defineProperty({
|
|
2626
2626
|
__proto__: null,
|
|
@@ -4327,7 +4327,7 @@ var define, require;
|
|
|
4327
4327
|
function hasInternalModifierManager(definition) {
|
|
4328
4328
|
return void 0 !== getManager(MODIFIER_MANAGERS, definition);
|
|
4329
4329
|
}
|
|
4330
|
-
const CAPABILITIES$
|
|
4330
|
+
const CAPABILITIES$5 = {
|
|
4331
4331
|
dynamicLayout: !1,
|
|
4332
4332
|
dynamicTag: !1,
|
|
4333
4333
|
prepareArgs: !1,
|
|
@@ -4461,7 +4461,7 @@ var define, require;
|
|
|
4461
4461
|
return null;
|
|
4462
4462
|
}
|
|
4463
4463
|
getCapabilities() {
|
|
4464
|
-
return CAPABILITIES$
|
|
4464
|
+
return CAPABILITIES$5;
|
|
4465
4465
|
}
|
|
4466
4466
|
}
|
|
4467
4467
|
|
|
@@ -18300,7 +18300,7 @@ var define, require;
|
|
|
18300
18300
|
let item = vm.stack.peek().next();
|
|
18301
18301
|
null !== item ? vm.registerItem(vm.enterItem(item)) : vm.goto(breaks);
|
|
18302
18302
|
});
|
|
18303
|
-
const CAPABILITIES$
|
|
18303
|
+
const CAPABILITIES$4 = {
|
|
18304
18304
|
dynamicLayout: !1,
|
|
18305
18305
|
dynamicTag: !1,
|
|
18306
18306
|
prepareArgs: !1,
|
|
@@ -18317,7 +18317,7 @@ var define, require;
|
|
|
18317
18317
|
};
|
|
18318
18318
|
class TemplateOnlyComponentManager {
|
|
18319
18319
|
getCapabilities() {
|
|
18320
|
-
return CAPABILITIES$
|
|
18320
|
+
return CAPABILITIES$4;
|
|
18321
18321
|
}
|
|
18322
18322
|
getDebugName({
|
|
18323
18323
|
name: name
|
|
@@ -20339,7 +20339,7 @@ var define, require;
|
|
|
20339
20339
|
let constructor = OPAQUE_CONSTRUCTOR_MAP.get(opaque);
|
|
20340
20340
|
return constructor;
|
|
20341
20341
|
}
|
|
20342
|
-
const CAPABILITIES$
|
|
20342
|
+
const CAPABILITIES$3 = {
|
|
20343
20343
|
dynamicLayout: false,
|
|
20344
20344
|
dynamicTag: false,
|
|
20345
20345
|
prepareArgs: false,
|
|
@@ -20356,7 +20356,7 @@ var define, require;
|
|
|
20356
20356
|
};
|
|
20357
20357
|
class InternalManager {
|
|
20358
20358
|
getCapabilities() {
|
|
20359
|
-
return CAPABILITIES$
|
|
20359
|
+
return CAPABILITIES$3;
|
|
20360
20360
|
}
|
|
20361
20361
|
create(owner, definition, args, _env, _dynamicScope, caller) {
|
|
20362
20362
|
let ComponentClass = deopaquify(definition);
|
|
@@ -25579,7 +25579,7 @@ var define, require;
|
|
|
25579
25579
|
object: `${def.name}:main`
|
|
25580
25580
|
};
|
|
25581
25581
|
}
|
|
25582
|
-
const CAPABILITIES$
|
|
25582
|
+
const CAPABILITIES$2 = {
|
|
25583
25583
|
dynamicLayout: false,
|
|
25584
25584
|
dynamicTag: false,
|
|
25585
25585
|
prepareArgs: false,
|
|
@@ -25594,26 +25594,33 @@ var define, require;
|
|
|
25594
25594
|
willDestroy: false,
|
|
25595
25595
|
hasSubOwner: false
|
|
25596
25596
|
};
|
|
25597
|
+
const CAPABILITIES_MASK$1 = capabilityFlagsFrom(CAPABILITIES$2);
|
|
25597
25598
|
class OutletComponentManager {
|
|
25598
25599
|
create(_owner, definition, _args, env, dynamicScope) {
|
|
25599
25600
|
let parentStateRef = dynamicScope.get('outletState');
|
|
25600
25601
|
let currentStateRef = definition.ref;
|
|
25602
|
+
|
|
25603
|
+
// This is the actual primary responsibility of the outlet component –
|
|
25604
|
+
// it represents the switching from one route component/template into
|
|
25605
|
+
// the next. The rest only exists to support the debug render tree and
|
|
25606
|
+
// the old-school (and unreliable) instrumentation.
|
|
25601
25607
|
dynamicScope.set('outletState', currentStateRef);
|
|
25602
25608
|
let state = {
|
|
25603
|
-
self: createConstRef(definition.controller),
|
|
25604
25609
|
finalize: _instrumentStart('render.outlet', instrumentationPayload$1, definition)
|
|
25605
25610
|
};
|
|
25606
25611
|
if (env.debugRenderTree !== undefined) {
|
|
25607
|
-
state.outletBucket = {};
|
|
25608
25612
|
let parentState = valueForRef(parentStateRef);
|
|
25609
|
-
let parentOwner = parentState
|
|
25610
|
-
let
|
|
25613
|
+
let parentOwner = parentState?.render?.owner;
|
|
25614
|
+
let currentState = valueForRef(currentStateRef);
|
|
25615
|
+
let currentOwner = currentState?.render?.owner;
|
|
25611
25616
|
if (parentOwner && parentOwner !== currentOwner) {
|
|
25612
|
-
let
|
|
25613
|
-
|
|
25617
|
+
let {
|
|
25618
|
+
mountPoint
|
|
25619
|
+
} = currentOwner;
|
|
25614
25620
|
if (mountPoint) {
|
|
25615
|
-
state.
|
|
25616
|
-
mountPoint
|
|
25621
|
+
state.engine = {
|
|
25622
|
+
mountPoint,
|
|
25623
|
+
instance: currentOwner
|
|
25617
25624
|
};
|
|
25618
25625
|
}
|
|
25619
25626
|
}
|
|
@@ -25623,12 +25630,12 @@ var define, require;
|
|
|
25623
25630
|
getDebugName({
|
|
25624
25631
|
name
|
|
25625
25632
|
}) {
|
|
25626
|
-
return name
|
|
25633
|
+
return `{{outlet}} for ${name}`;
|
|
25627
25634
|
}
|
|
25628
|
-
getDebugCustomRenderTree(
|
|
25635
|
+
getDebugCustomRenderTree(_definition, state) {
|
|
25629
25636
|
let nodes = [];
|
|
25630
25637
|
nodes.push({
|
|
25631
|
-
bucket: state
|
|
25638
|
+
bucket: state,
|
|
25632
25639
|
type: 'outlet',
|
|
25633
25640
|
// "main" used to be the outlet name, keeping it around for compatibility
|
|
25634
25641
|
name: 'main',
|
|
@@ -25636,33 +25643,23 @@ var define, require;
|
|
|
25636
25643
|
instance: undefined,
|
|
25637
25644
|
template: undefined
|
|
25638
25645
|
});
|
|
25639
|
-
if (state.
|
|
25646
|
+
if (state.engine) {
|
|
25640
25647
|
nodes.push({
|
|
25641
|
-
bucket: state.
|
|
25648
|
+
bucket: state.engine,
|
|
25642
25649
|
type: 'engine',
|
|
25643
|
-
name: state.
|
|
25650
|
+
name: state.engine.mountPoint,
|
|
25644
25651
|
args: EMPTY_ARGS,
|
|
25645
|
-
instance: state.engine,
|
|
25652
|
+
instance: state.engine.instance,
|
|
25646
25653
|
template: undefined
|
|
25647
25654
|
});
|
|
25648
25655
|
}
|
|
25649
|
-
nodes.push({
|
|
25650
|
-
bucket: state,
|
|
25651
|
-
type: 'route-template',
|
|
25652
|
-
name: definition.name,
|
|
25653
|
-
args: args,
|
|
25654
|
-
instance: definition.controller,
|
|
25655
|
-
template: unwrapTemplate(definition.template).moduleName
|
|
25656
|
-
});
|
|
25657
25656
|
return nodes;
|
|
25658
25657
|
}
|
|
25659
25658
|
getCapabilities() {
|
|
25660
|
-
return CAPABILITIES$
|
|
25659
|
+
return CAPABILITIES$2;
|
|
25661
25660
|
}
|
|
25662
|
-
getSelf({
|
|
25663
|
-
|
|
25664
|
-
}) {
|
|
25665
|
-
return self;
|
|
25661
|
+
getSelf() {
|
|
25662
|
+
return UNDEFINED_REFERENCE;
|
|
25666
25663
|
}
|
|
25667
25664
|
didCreate() {}
|
|
25668
25665
|
didUpdate() {}
|
|
@@ -25675,23 +25672,30 @@ var define, require;
|
|
|
25675
25672
|
}
|
|
25676
25673
|
}
|
|
25677
25674
|
const OUTLET_MANAGER = new OutletComponentManager();
|
|
25678
|
-
|
|
25675
|
+
const OUTLET_COMPONENT_TEMPLATE = templateFactory(
|
|
25676
|
+
/*
|
|
25677
|
+
<@Component @controller={{@controller}} @model={{@model}} />
|
|
25678
|
+
*/
|
|
25679
|
+
{
|
|
25680
|
+
"id": "tiv/fOHO",
|
|
25681
|
+
"block": "[[[8,[30,1],null,[[\"@controller\",\"@model\"],[[30,2],[30,3]]],null]],[\"@Component\",\"@controller\",\"@model\"],false,[]]",
|
|
25682
|
+
"moduleName": "/home/runner/work/ember.js/ember.js/packages/@ember/-internals/glimmer/lib/component-managers/outlet.ts",
|
|
25683
|
+
"isStrictMode": true
|
|
25684
|
+
});
|
|
25685
|
+
class OutletComponent {
|
|
25679
25686
|
// handle is not used by this custom definition
|
|
25680
25687
|
handle = -1;
|
|
25681
|
-
resolvedName;
|
|
25688
|
+
resolvedName = null;
|
|
25689
|
+
manager = OUTLET_MANAGER;
|
|
25690
|
+
capabilities = CAPABILITIES_MASK$1;
|
|
25682
25691
|
compilable;
|
|
25683
|
-
|
|
25684
|
-
constructor(state, manager = OUTLET_MANAGER) {
|
|
25692
|
+
constructor(owner, state) {
|
|
25685
25693
|
this.state = state;
|
|
25686
|
-
this.
|
|
25687
|
-
let capabilities = manager.getCapabilities();
|
|
25688
|
-
this.capabilities = capabilityFlagsFrom(capabilities);
|
|
25689
|
-
this.compilable = capabilities.wrapped ? unwrapTemplate(state.template).asWrappedLayout() : unwrapTemplate(state.template).asLayout();
|
|
25690
|
-
this.resolvedName = state.name;
|
|
25694
|
+
this.compilable = unwrapTemplate(OUTLET_COMPONENT_TEMPLATE(owner)).asLayout();
|
|
25691
25695
|
}
|
|
25692
25696
|
}
|
|
25693
25697
|
function createRootOutlet(outletView) {
|
|
25694
|
-
return new
|
|
25698
|
+
return new OutletComponent(outletView.owner, outletView.state);
|
|
25695
25699
|
}
|
|
25696
25700
|
|
|
25697
25701
|
class RootComponentManager extends CurlyComponentManager {
|
|
@@ -34969,13 +34973,40 @@ var define, require;
|
|
|
34969
34973
|
let name = route.routeName;
|
|
34970
34974
|
let controller = owner.lookup(`controller:${route.controllerName || name}`);
|
|
34971
34975
|
let model = route.currentModel;
|
|
34972
|
-
let
|
|
34976
|
+
let templateFactoryOrComponent = owner.lookup(`template:${route.templateName || name}`);
|
|
34977
|
+
|
|
34978
|
+
// Now we support either a component or a template to be returned by this
|
|
34979
|
+
// resolver call, but if it's a `TemplateFactory`, we need to instantiate
|
|
34980
|
+
// it into a `Template`, since that's what `RenderState` wants. We can't
|
|
34981
|
+
// easily change it, it's intimate API used by @ember/test-helpers and the
|
|
34982
|
+
// like. We could compatibly allow `Template` | `TemplateFactory`, and that's
|
|
34983
|
+
// what it used to do but we _just_ went through deprecations to get that
|
|
34984
|
+
// removed. It's also not ideal since once you mix the two types, they are
|
|
34985
|
+
// not exactly easy to tell apart.
|
|
34986
|
+
//
|
|
34987
|
+
// It may also be tempting to just normalize `Template` into `RouteTemplate`
|
|
34988
|
+
// here, and we could. However, this is not the only entrypoint where this
|
|
34989
|
+
// `RenderState` is made – @ember/test-helpers punches through an impressive
|
|
34990
|
+
// amount of private API to set it directly, and this feature would also be
|
|
34991
|
+
// useful for them. So, even if we had normalized here, we'd still have to
|
|
34992
|
+
// check and do that again during render anyway.
|
|
34993
|
+
let template;
|
|
34994
|
+
if (templateFactoryOrComponent) {
|
|
34995
|
+
if (hasInternalComponentManager(templateFactoryOrComponent)) {
|
|
34996
|
+
template = templateFactoryOrComponent;
|
|
34997
|
+
} else {
|
|
34998
|
+
template = templateFactoryOrComponent(owner);
|
|
34999
|
+
}
|
|
35000
|
+
} else {
|
|
35001
|
+
// default `{{outlet}}`
|
|
35002
|
+
template = route._topLevelViewTemplate(owner);
|
|
35003
|
+
}
|
|
34973
35004
|
let render = {
|
|
34974
35005
|
owner,
|
|
34975
35006
|
name,
|
|
34976
35007
|
controller,
|
|
34977
35008
|
model,
|
|
34978
|
-
template
|
|
35009
|
+
template
|
|
34979
35010
|
};
|
|
34980
35011
|
return render;
|
|
34981
35012
|
}
|
|
@@ -37340,7 +37371,7 @@ var define, require;
|
|
|
37340
37371
|
prefixRouteNameArg
|
|
37341
37372
|
}, Symbol.toStringTag, { value: 'Module' });
|
|
37342
37373
|
|
|
37343
|
-
const CAPABILITIES = {
|
|
37374
|
+
const CAPABILITIES$1 = {
|
|
37344
37375
|
dynamicLayout: true,
|
|
37345
37376
|
dynamicTag: false,
|
|
37346
37377
|
prepareArgs: false,
|
|
@@ -37361,7 +37392,7 @@ var define, require;
|
|
|
37361
37392
|
return unwrapTemplate(templateFactory(state.engine)).asLayout();
|
|
37362
37393
|
}
|
|
37363
37394
|
getCapabilities() {
|
|
37364
|
-
return CAPABILITIES;
|
|
37395
|
+
return CAPABILITIES$1;
|
|
37365
37396
|
}
|
|
37366
37397
|
getOwner(state) {
|
|
37367
37398
|
return state.engine;
|
|
@@ -37457,7 +37488,7 @@ var define, require;
|
|
|
37457
37488
|
state;
|
|
37458
37489
|
manager = MOUNT_MANAGER;
|
|
37459
37490
|
compilable = null;
|
|
37460
|
-
capabilities = capabilityFlagsFrom(CAPABILITIES);
|
|
37491
|
+
capabilities = capabilityFlagsFrom(CAPABILITIES$1);
|
|
37461
37492
|
constructor(resolvedName) {
|
|
37462
37493
|
this.resolvedName = resolvedName;
|
|
37463
37494
|
this.state = {
|
|
@@ -37533,6 +37564,107 @@ var define, require;
|
|
|
37533
37564
|
});
|
|
37534
37565
|
});
|
|
37535
37566
|
|
|
37567
|
+
const CAPABILITIES = {
|
|
37568
|
+
dynamicLayout: false,
|
|
37569
|
+
dynamicTag: false,
|
|
37570
|
+
prepareArgs: false,
|
|
37571
|
+
createArgs: true,
|
|
37572
|
+
attributeHook: false,
|
|
37573
|
+
elementHook: false,
|
|
37574
|
+
createCaller: false,
|
|
37575
|
+
dynamicScope: false,
|
|
37576
|
+
updateHook: false,
|
|
37577
|
+
createInstance: true,
|
|
37578
|
+
wrapped: false,
|
|
37579
|
+
willDestroy: false,
|
|
37580
|
+
hasSubOwner: false
|
|
37581
|
+
};
|
|
37582
|
+
const CAPABILITIES_MASK = capabilityFlagsFrom(CAPABILITIES);
|
|
37583
|
+
class RouteTemplateManager {
|
|
37584
|
+
create(_owner, _definition, args) {
|
|
37585
|
+
let self = args.named.get('controller');
|
|
37586
|
+
let controller = valueForRef(self);
|
|
37587
|
+
return {
|
|
37588
|
+
self,
|
|
37589
|
+
controller
|
|
37590
|
+
};
|
|
37591
|
+
}
|
|
37592
|
+
getSelf({
|
|
37593
|
+
self
|
|
37594
|
+
}) {
|
|
37595
|
+
return self;
|
|
37596
|
+
}
|
|
37597
|
+
getDebugName({
|
|
37598
|
+
name
|
|
37599
|
+
}) {
|
|
37600
|
+
return `route-template (${name})`;
|
|
37601
|
+
}
|
|
37602
|
+
getDebugCustomRenderTree({
|
|
37603
|
+
name,
|
|
37604
|
+
templateName
|
|
37605
|
+
}, state, args) {
|
|
37606
|
+
return [{
|
|
37607
|
+
bucket: state,
|
|
37608
|
+
type: 'route-template',
|
|
37609
|
+
name,
|
|
37610
|
+
args,
|
|
37611
|
+
instance: state.controller,
|
|
37612
|
+
template: templateName
|
|
37613
|
+
}];
|
|
37614
|
+
}
|
|
37615
|
+
getCapabilities() {
|
|
37616
|
+
return CAPABILITIES;
|
|
37617
|
+
}
|
|
37618
|
+
didRenderLayout() {}
|
|
37619
|
+
didUpdateLayout() {}
|
|
37620
|
+
didCreate() {}
|
|
37621
|
+
didUpdate() {}
|
|
37622
|
+
getDestroyable() {
|
|
37623
|
+
return null;
|
|
37624
|
+
}
|
|
37625
|
+
}
|
|
37626
|
+
const ROUTE_TEMPLATE_MANAGER = new RouteTemplateManager();
|
|
37627
|
+
|
|
37628
|
+
/**
|
|
37629
|
+
* This "upgrades" a route template into a invocable component. Conceptually
|
|
37630
|
+
* it can be 1:1 for each unique `Template`, but it's also cheap to construct,
|
|
37631
|
+
* so unless the stability is desirable for other reasons, it's probably not
|
|
37632
|
+
* worth caching this.
|
|
37633
|
+
*/
|
|
37634
|
+
class RouteTemplate {
|
|
37635
|
+
// handle is not used by this custom definition
|
|
37636
|
+
handle = -1;
|
|
37637
|
+
resolvedName;
|
|
37638
|
+
state;
|
|
37639
|
+
manager = ROUTE_TEMPLATE_MANAGER;
|
|
37640
|
+
capabilities = CAPABILITIES_MASK;
|
|
37641
|
+
compilable;
|
|
37642
|
+
constructor(name, template) {
|
|
37643
|
+
let unwrapped = unwrapTemplate(template);
|
|
37644
|
+
// TODO This actually seems inaccurate – it ultimately came from the
|
|
37645
|
+
// outlet's name. Also, setting this overrides `getDebugName()` in that
|
|
37646
|
+
// message. Is that desirable?
|
|
37647
|
+
this.resolvedName = name;
|
|
37648
|
+
this.state = {
|
|
37649
|
+
name,
|
|
37650
|
+
templateName: unwrapped.moduleName
|
|
37651
|
+
};
|
|
37652
|
+
this.compilable = unwrapped.asLayout();
|
|
37653
|
+
}
|
|
37654
|
+
}
|
|
37655
|
+
|
|
37656
|
+
// TODO a lot these fields are copied from the adjacent existing components
|
|
37657
|
+
// implementation, haven't looked into who cares about `ComponentDefinition`
|
|
37658
|
+
// and if it is appropriate here. It seems like this version is intended to
|
|
37659
|
+
// be used with `curry` which probably isn't necessary here. It could be the
|
|
37660
|
+
// case that we just want to do something more similar to `InternalComponent`
|
|
37661
|
+
// (the one we used to implement `Input` and `LinkTo`). For now it follows
|
|
37662
|
+
// the same pattern to get things going.
|
|
37663
|
+
function makeRouteTemplate(owner, name, template) {
|
|
37664
|
+
let routeTemplate = new RouteTemplate(name, template);
|
|
37665
|
+
return curry(CurriedTypes.Component, routeTemplate, owner, null, true);
|
|
37666
|
+
}
|
|
37667
|
+
|
|
37536
37668
|
/**
|
|
37537
37669
|
The `{{outlet}}` helper lets you specify where a child route will render in
|
|
37538
37670
|
your template. An important use of the `{{outlet}}` helper is in your
|
|
@@ -37563,15 +37695,49 @@ var define, require;
|
|
|
37563
37695
|
return state?.outlets?.main;
|
|
37564
37696
|
});
|
|
37565
37697
|
let lastState = null;
|
|
37566
|
-
let
|
|
37698
|
+
let outlet = null;
|
|
37567
37699
|
return createComputeRef(() => {
|
|
37568
37700
|
let outletState = valueForRef(outletRef);
|
|
37569
37701
|
let state = stateFor(outletRef, outletState);
|
|
37570
|
-
|
|
37702
|
+
|
|
37703
|
+
// This code is deliberately using the behavior in glimmer-vm where in
|
|
37704
|
+
// <@Component />, the component is considered stabled via `===`, and
|
|
37705
|
+
// will continue to re-render in-place as long as the `===` holds, but
|
|
37706
|
+
// when it changes to a different object, it teardown the old component
|
|
37707
|
+
// (running destructors, etc), and render the component in its place (or
|
|
37708
|
+
// nothing if the new value is nullish. Here we are carefully exploiting
|
|
37709
|
+
// that fact, and returns the same stable object so long as it is the
|
|
37710
|
+
// same route, but return a different one when the route changes. On the
|
|
37711
|
+
// other hand, changing the model only intentionally do not teardown the
|
|
37712
|
+
// component and instead re-render in-place.
|
|
37713
|
+
if (!isStable(state, lastState)) {
|
|
37571
37714
|
lastState = state;
|
|
37572
37715
|
if (state !== null) {
|
|
37716
|
+
// If we are crossing an engine mount point, this is how the owner
|
|
37717
|
+
// gets switched.
|
|
37718
|
+
let outletOwner = outletState?.render?.owner ?? owner;
|
|
37573
37719
|
let named = dict();
|
|
37574
37720
|
|
|
37721
|
+
// Here we either have a raw template that needs to be normalized,
|
|
37722
|
+
// or a component that we can render as-is. `RouteTemplate` upgrades
|
|
37723
|
+
// the template into a component so we can have a unified code path.
|
|
37724
|
+
// We still store the original `template` value, because we rely on
|
|
37725
|
+
// its identity for the stability check, and the `RouteTemplate`
|
|
37726
|
+
// wrapper doesn't dedup for us.
|
|
37727
|
+
let template = state.template;
|
|
37728
|
+
let component;
|
|
37729
|
+
if (hasInternalComponentManager(template)) {
|
|
37730
|
+
component = template;
|
|
37731
|
+
} else {
|
|
37732
|
+
component = makeRouteTemplate(outletOwner, state.name, template);
|
|
37733
|
+
}
|
|
37734
|
+
|
|
37735
|
+
// Component is stable for the lifetime of the outlet
|
|
37736
|
+
named['Component'] = createConstRef(component);
|
|
37737
|
+
|
|
37738
|
+
// Controller is stable for the lifetime of the outlet
|
|
37739
|
+
named['controller'] = createConstRef(state.controller);
|
|
37740
|
+
|
|
37575
37741
|
// Create a ref for the model
|
|
37576
37742
|
let modelRef = childRefFromParts(outletRef, ['render', 'model']);
|
|
37577
37743
|
|
|
@@ -37591,12 +37757,14 @@ var define, require;
|
|
|
37591
37757
|
return model;
|
|
37592
37758
|
});
|
|
37593
37759
|
let args = createCapturedArgs(named, EMPTY_POSITIONAL);
|
|
37594
|
-
|
|
37760
|
+
|
|
37761
|
+
// Package up everything
|
|
37762
|
+
outlet = curry(CurriedTypes.Component, new OutletComponent(owner, state), outletOwner, args, true);
|
|
37595
37763
|
} else {
|
|
37596
|
-
|
|
37764
|
+
outlet = null;
|
|
37597
37765
|
}
|
|
37598
37766
|
}
|
|
37599
|
-
return
|
|
37767
|
+
return outlet;
|
|
37600
37768
|
});
|
|
37601
37769
|
});
|
|
37602
37770
|
function stateFor(ref, outlet) {
|
|
@@ -37604,20 +37772,19 @@ var define, require;
|
|
|
37604
37772
|
let render = outlet.render;
|
|
37605
37773
|
if (render === undefined) return null;
|
|
37606
37774
|
let template = render.template;
|
|
37607
|
-
if
|
|
37775
|
+
// The type doesn't actually allow for `null`, but if we make it past this
|
|
37776
|
+
// point it is really important that we have _something_ to render. We could
|
|
37777
|
+
// assert, but that is probably overly strict for very little to gain.
|
|
37778
|
+
if (template === undefined || template === null) return null;
|
|
37608
37779
|
return {
|
|
37609
37780
|
ref,
|
|
37610
37781
|
name: render.name,
|
|
37611
37782
|
template,
|
|
37612
|
-
controller: render.controller
|
|
37613
|
-
model: render.model
|
|
37783
|
+
controller: render.controller
|
|
37614
37784
|
};
|
|
37615
37785
|
}
|
|
37616
|
-
function
|
|
37617
|
-
if (state === null) {
|
|
37618
|
-
return lastState === null;
|
|
37619
|
-
}
|
|
37620
|
-
if (lastState === null) {
|
|
37786
|
+
function isStable(state, lastState) {
|
|
37787
|
+
if (state === null || lastState === null) {
|
|
37621
37788
|
return false;
|
|
37622
37789
|
}
|
|
37623
37790
|
return state.template === lastState.template && state.controller === lastState.controller;
|
|
@@ -37856,8 +38023,7 @@ var define, require;
|
|
|
37856
38023
|
ref,
|
|
37857
38024
|
name: TOP_LEVEL_NAME,
|
|
37858
38025
|
template,
|
|
37859
|
-
controller: undefined
|
|
37860
|
-
model: undefined
|
|
38026
|
+
controller: undefined
|
|
37861
38027
|
};
|
|
37862
38028
|
}
|
|
37863
38029
|
appendTo(selector) {
|
|
@@ -38084,8 +38250,31 @@ var define, require;
|
|
|
38084
38250
|
// renderer HOOKS
|
|
38085
38251
|
|
|
38086
38252
|
appendOutletView(view, target) {
|
|
38087
|
-
|
|
38088
|
-
|
|
38253
|
+
// TODO: This bypasses the {{outlet}} syntax so logically duplicates
|
|
38254
|
+
// some of the set up code. Since this is all internal (or is it?),
|
|
38255
|
+
// we can refactor this to do something more direct/less convoluted
|
|
38256
|
+
// and with less setup, but get it working first
|
|
38257
|
+
let outlet = createRootOutlet(view);
|
|
38258
|
+
let {
|
|
38259
|
+
name,
|
|
38260
|
+
/* controller, */template
|
|
38261
|
+
} = view.state;
|
|
38262
|
+
let named = dict();
|
|
38263
|
+
named['Component'] = createConstRef(makeRouteTemplate(view.owner, name, template));
|
|
38264
|
+
|
|
38265
|
+
// TODO: is this guaranteed to be undefined? It seems to be the
|
|
38266
|
+
// case in the `OutletView` class. Investigate how much that class
|
|
38267
|
+
// exists as an internal implementation detail only, or if it was
|
|
38268
|
+
// used outside of core. As far as I can tell, test-helpers uses
|
|
38269
|
+
// it but only for `setOutletState`.
|
|
38270
|
+
// named['controller'] = createConstRef(controller, '@controller');
|
|
38271
|
+
// Update: at least according to the debug render tree tests, we
|
|
38272
|
+
// appear to always expect this to be undefined. Not a definitive
|
|
38273
|
+
// source by any means, but is useful evidence
|
|
38274
|
+
named['controller'] = UNDEFINED_REFERENCE;
|
|
38275
|
+
named['model'] = UNDEFINED_REFERENCE;
|
|
38276
|
+
let args = createCapturedArgs(named, EMPTY_POSITIONAL);
|
|
38277
|
+
this._appendDefinition(view, curry(CurriedTypes.Component, outlet, view.owner, args, true), target);
|
|
38089
38278
|
}
|
|
38090
38279
|
appendTo(view, target) {
|
|
38091
38280
|
let definition = new RootComponentDefinition(view);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { templateFactory as template, templateCacheCounters } from '../../../@glimmer/opcode-compiler/index.js';
|
|
2
|
-
export { C as Component, H as Helper, I as Input, L as LinkTo, O as OutletView, b as Renderer, R as RootTemplate, S as SafeString, T as Textarea, _ as _resetRenderers, e as escapeExpression, h as helper, a as htmlSafe, i as isHTMLSafe, r as renderSettled, u as uniqueId } from '../../../shared-chunks/index-
|
|
2
|
+
export { C as Component, H as Helper, I as Input, L as LinkTo, O as OutletView, b as Renderer, R as RootTemplate, S as SafeString, T as Textarea, _ as _resetRenderers, e as escapeExpression, h as helper, a as htmlSafe, i as isHTMLSafe, r as renderSettled, u as uniqueId } from '../../../shared-chunks/index-4KqgXTKl.js';
|
|
3
3
|
export { g as getTemplate, a as getTemplates, h as hasTemplate, s as setTemplate, b as setTemplates } from '../../../shared-chunks/template_registry-DigcUg9m.js';
|
|
4
|
-
export { a as setupApplicationRegistry, s as setupEngineRegistry } from '../../../shared-chunks/setup-registry-
|
|
4
|
+
export { a as setupApplicationRegistry, s as setupEngineRegistry } from '../../../shared-chunks/setup-registry-ziuiqoKc.js';
|
|
5
5
|
export { DOMChanges, DOMTreeConstruction, isSerializationFirstNode } from '../../../@glimmer/runtime/index.js';
|
|
6
6
|
export { NodeDOMTreeConstruction } from '../../../@glimmer/node/index.js';
|
|
7
7
|
export { s as setComponentManager } from '../../../shared-chunks/managers-CbMgnSoo.js';
|
|
@@ -47,8 +47,8 @@ import ApplicationInstance from './instance.js';
|
|
|
47
47
|
import Engine, { buildInitializerMethod } from '../engine/index.js';
|
|
48
48
|
import { p as privatize } from '../../shared-chunks/registry-B8WARvkP.js';
|
|
49
49
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
50
|
-
import '../../shared-chunks/index-
|
|
51
|
-
import { a as setupApplicationRegistry } from '../../shared-chunks/setup-registry-
|
|
50
|
+
import '../../shared-chunks/index-4KqgXTKl.js';
|
|
51
|
+
import { a as setupApplicationRegistry } from '../../shared-chunks/setup-registry-ziuiqoKc.js';
|
|
52
52
|
import '../../@glimmer/runtime/index.js';
|
|
53
53
|
import '../../@glimmer/reference/index.js';
|
|
54
54
|
import RouterService from '../routing/router-service.js';
|
|
@@ -2,7 +2,7 @@ import '../object/index.js';
|
|
|
2
2
|
import { h as hasDOM, e as environment } from '../../shared-chunks/index-BGP1rw3B.js';
|
|
3
3
|
import EngineInstance from '../engine/instance.js';
|
|
4
4
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
5
|
-
import { r as renderSettled } from '../../shared-chunks/index-
|
|
5
|
+
import { r as renderSettled } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
6
6
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
7
7
|
import '../debug/index.js';
|
|
8
8
|
import '../../@glimmer/runtime/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
2
|
-
export { H as default, h as helper } from '../../shared-chunks/index-
|
|
2
|
+
export { H as default, h as helper } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
3
3
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
4
4
|
import '../debug/index.js';
|
|
5
5
|
import '../../@glimmer/runtime/index.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { componentCapabilities as capabilities, getComponentTemplate, setComponentTemplate } from '../../@glimmer/manager/index.js';
|
|
2
2
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
3
|
-
export { I as Input, T as Textarea, C as default } from '../../shared-chunks/index-
|
|
3
|
+
export { I as Input, T as Textarea, C as default } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
4
4
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
5
5
|
import '../debug/index.js';
|
|
6
6
|
import '../../@glimmer/runtime/index.js';
|
|
@@ -30,8 +30,8 @@ import '../-internals/views/lib/mixins/view_state_support.js';
|
|
|
30
30
|
import '../-internals/views/lib/mixins/view_support.js';
|
|
31
31
|
import '../-internals/views/lib/mixins/action_support.js';
|
|
32
32
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
33
|
-
import '../../shared-chunks/index-
|
|
34
|
-
import { s as setupEngineRegistry } from '../../shared-chunks/setup-registry-
|
|
33
|
+
import '../../shared-chunks/index-4KqgXTKl.js';
|
|
34
|
+
import { s as setupEngineRegistry } from '../../shared-chunks/setup-registry-ziuiqoKc.js';
|
|
35
35
|
import '../../@glimmer/runtime/index.js';
|
|
36
36
|
import '../runloop/index.js';
|
|
37
37
|
import '../../@glimmer/reference/index.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { helperCapabilities, setHelperManager as setHelperManager$1 } from '../../@glimmer/manager/index.js';
|
|
2
2
|
import { invokeHelper as invokeHelper$1, hash as hash$1, array as array$1, concat as concat$1, get as get$1, fn as fn$1 } from '../../@glimmer/runtime/index.js';
|
|
3
3
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
4
|
-
import { u as uniqueId$1 } from '../../shared-chunks/index-
|
|
4
|
+
import { u as uniqueId$1 } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
5
5
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
6
6
|
import '../debug/index.js';
|
|
7
7
|
import '../runloop/index.js';
|
|
@@ -2,7 +2,7 @@ import { setModifierManager as setModifierManager$1 } from '../../@glimmer/manag
|
|
|
2
2
|
export { modifierCapabilities as capabilities } from '../../@glimmer/manager/index.js';
|
|
3
3
|
export { on } from './on.js';
|
|
4
4
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
5
|
-
import '../../shared-chunks/index-
|
|
5
|
+
import '../../shared-chunks/index-4KqgXTKl.js';
|
|
6
6
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
7
7
|
import '../debug/index.js';
|
|
8
8
|
import '../../@glimmer/runtime/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
2
|
-
export { r as renderSettled } from '../../shared-chunks/index-
|
|
2
|
+
export { r as renderSettled } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
3
3
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
4
4
|
import '../debug/index.js';
|
|
5
5
|
import '../../@glimmer/runtime/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../../@glimmer/opcode-compiler/index.js';
|
|
2
|
-
export { L as LinkTo } from '../../shared-chunks/index-
|
|
2
|
+
export { L as LinkTo } from '../../shared-chunks/index-4KqgXTKl.js';
|
|
3
3
|
import '../../shared-chunks/registry-B8WARvkP.js';
|
|
4
4
|
import '../debug/index.js';
|
|
5
5
|
import '../../@glimmer/runtime/index.js';
|