lit-ui-router 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-elements.json +75 -1
- package/dist/development/ui-sref-active.js +33 -6
- package/dist/development/ui-sref-active.js.map +1 -1
- package/dist/development/ui-sref.js +9 -1
- package/dist/development/ui-sref.js.map +1 -1
- package/dist/development/ui-view.js +31 -5
- package/dist/development/ui-view.js.map +1 -1
- package/dist/ui-sref-active.d.ts +25 -0
- package/dist/ui-sref-active.d.ts.map +1 -1
- package/dist/ui-sref-active.js +33 -6
- package/dist/ui-sref-active.js.map +1 -1
- package/dist/ui-sref.d.ts +10 -0
- package/dist/ui-sref.d.ts.map +1 -1
- package/dist/ui-sref.js +9 -1
- package/dist/ui-sref.js.map +1 -1
- package/dist/ui-view.d.ts +36 -1
- package/dist/ui-view.d.ts.map +1 -1
- package/dist/ui-view.js +31 -5
- package/dist/ui-view.js.map +1 -1
- package/package.json +1 -1
- package/src/ui-sref-active.ts +74 -19
- package/src/ui-sref.ts +25 -3
- package/src/ui-view.ts +81 -8
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
"kind": "class",
|
|
11
11
|
"description": "",
|
|
12
12
|
"name": "UiView",
|
|
13
|
+
"slots": [
|
|
14
|
+
{
|
|
15
|
+
"description": "<code><ui-view></code> renders slotted content as fallback whenever no routed component is active.",
|
|
16
|
+
"name": ""
|
|
17
|
+
}
|
|
18
|
+
],
|
|
13
19
|
"members": [
|
|
14
20
|
{
|
|
15
21
|
"kind": "field",
|
|
@@ -49,8 +55,11 @@
|
|
|
49
55
|
{
|
|
50
56
|
"kind": "field",
|
|
51
57
|
"name": "inner",
|
|
58
|
+
"type": {
|
|
59
|
+
"text": "DocumentFragment | undefined"
|
|
60
|
+
},
|
|
52
61
|
"privacy": "private",
|
|
53
|
-
"
|
|
62
|
+
"description": "Created on connect: the"
|
|
54
63
|
},
|
|
55
64
|
{
|
|
56
65
|
"kind": "field",
|
|
@@ -153,6 +162,67 @@
|
|
|
153
162
|
"name": "seekRouter",
|
|
154
163
|
"privacy": "private"
|
|
155
164
|
},
|
|
165
|
+
{
|
|
166
|
+
"kind": "field",
|
|
167
|
+
"name": "routerFromProvider",
|
|
168
|
+
"type": {
|
|
169
|
+
"text": "boolean"
|
|
170
|
+
},
|
|
171
|
+
"privacy": "private",
|
|
172
|
+
"default": "false",
|
|
173
|
+
"description": "Whether `uiRouter` came from the context event rather than the app."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"kind": "field",
|
|
177
|
+
"name": "registeredRouter",
|
|
178
|
+
"type": {
|
|
179
|
+
"text": "UIRouterLit | undefined"
|
|
180
|
+
},
|
|
181
|
+
"privacy": "private",
|
|
182
|
+
"description": "The router this view registered with; a late upgrade can supersede it."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"kind": "field",
|
|
186
|
+
"name": "seekingProvidedRouter",
|
|
187
|
+
"type": {
|
|
188
|
+
"text": "boolean"
|
|
189
|
+
},
|
|
190
|
+
"privacy": "private",
|
|
191
|
+
"default": "false",
|
|
192
|
+
"description": "Set only for the synchronous span of our own re-seek."
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"kind": "method",
|
|
196
|
+
"name": "seekProvidedRouter",
|
|
197
|
+
"privacy": "private",
|
|
198
|
+
"return": {
|
|
199
|
+
"type": {
|
|
200
|
+
"text": "UIRouterLit | undefined"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"description": "Seeks the provider's router, past our own answer.\n\n`<ui-view>` answers this event for descendants and stops it, deliberately —\nsee `listener-identity.spec.ts`. Suppressing that for the span of our own\ndispatch keeps the guarantee intact for everyone else."
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"kind": "method",
|
|
207
|
+
"name": "adoptProvidedRouter",
|
|
208
|
+
"privacy": "private",
|
|
209
|
+
"return": {
|
|
210
|
+
"type": {
|
|
211
|
+
"text": "void"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"description": "Adopts the router the provider now offers, when this view registered\nwithout it.\n\nlit replays a pre-upgrade property inside the element's first update, not\nat upgrade, so `<ui-router>` can run `connectedCallback` with `uiRouter`\nstill undefined and provide an instance of its own; a `<ui-view>`\nconnecting in between registers with that one and never sees a transition.\nFirefox upgrades a detached subtree later than Chrome and WebKit, so\ndeclarative shadow DOM parsed off-document reaches this there first.\n\n`registerUIView` syncs, so the re-registered view picks up the current\nstate without waiting for the next transition."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"kind": "method",
|
|
218
|
+
"name": "deregisterAll",
|
|
219
|
+
"privacy": "private",
|
|
220
|
+
"return": {
|
|
221
|
+
"type": {
|
|
222
|
+
"text": "void"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
},
|
|
156
226
|
{
|
|
157
227
|
"kind": "method",
|
|
158
228
|
"name": "captureContent",
|
|
@@ -236,6 +306,10 @@
|
|
|
236
306
|
"tagName": "ui-view",
|
|
237
307
|
"customElement": true
|
|
238
308
|
},
|
|
309
|
+
{
|
|
310
|
+
"kind": "variable",
|
|
311
|
+
"name": "router"
|
|
312
|
+
},
|
|
239
313
|
{
|
|
240
314
|
"kind": "variable",
|
|
241
315
|
"name": "resolves"
|
|
@@ -59,6 +59,10 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
59
59
|
this.options = {};
|
|
60
60
|
this.targetStates = new Set();
|
|
61
61
|
this.uiSrefs = new WeakMap();
|
|
62
|
+
this._linkTargets = new WeakMap();
|
|
63
|
+
this._partElement = null;
|
|
64
|
+
this._lastTargetStates = void 0;
|
|
65
|
+
this._connection = 0;
|
|
62
66
|
this.doRender = () => {
|
|
63
67
|
return this.render({
|
|
64
68
|
activeClasses: this.activeClasses,
|
|
@@ -69,8 +73,15 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
69
73
|
this._firstUpdated = false;
|
|
70
74
|
this.onUiSrefTargetEvent = (event) => {
|
|
71
75
|
const { targetState } = event.detail;
|
|
76
|
+
const previous = this._linkTargets.get(event.target);
|
|
77
|
+
if (previous) {
|
|
78
|
+
this.targetStates.delete(previous);
|
|
79
|
+
this.uiSrefs.delete(previous);
|
|
80
|
+
}
|
|
72
81
|
this.targetStates.add(targetState);
|
|
73
82
|
this.uiSrefs.set(targetState, event.target);
|
|
83
|
+
this._linkTargets.set(event.target, targetState);
|
|
84
|
+
if (this._firstUpdated) this.onStatesChanged();
|
|
74
85
|
};
|
|
75
86
|
this.onTransitionStateChange = (e) => {
|
|
76
87
|
const event = e;
|
|
@@ -84,12 +95,13 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
84
95
|
this.doRender();
|
|
85
96
|
};
|
|
86
97
|
this.onTransitionStart = (trans) => {
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
const connection = this._connection;
|
|
99
|
+
const dispatch = (evt) => {
|
|
100
|
+
if (connection !== this._connection) return;
|
|
101
|
+
this.element?.dispatchEvent(this.createTransitionStateChangeEvent(evt, trans));
|
|
102
|
+
};
|
|
103
|
+
dispatch(TransitionStateChange.start);
|
|
104
|
+
trans.promise.then(() => dispatch(TransitionStateChange.success), () => dispatch(TransitionStateChange.error));
|
|
93
105
|
};
|
|
94
106
|
this.onStatesChanged = () => {
|
|
95
107
|
const { active, exact } = this.getStatus() || {};
|
|
@@ -164,6 +176,8 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
164
176
|
this.params = params;
|
|
165
177
|
this.options = options;
|
|
166
178
|
const { element } = part;
|
|
179
|
+
this._partElement = element;
|
|
180
|
+
this._lastTargetStates = targetStates && Array.from(targetStates);
|
|
167
181
|
if (this.element !== element) {
|
|
168
182
|
this.element = element;
|
|
169
183
|
this._firstUpdated = false;
|
|
@@ -200,12 +214,25 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
200
214
|
this._firstUpdated = true;
|
|
201
215
|
}
|
|
202
216
|
disconnected() {
|
|
217
|
+
this._firstUpdated = false;
|
|
218
|
+
this._connection++;
|
|
203
219
|
if (!this.element) return;
|
|
204
220
|
this.element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
|
|
205
221
|
this.element.removeEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
|
|
206
222
|
this.element = null;
|
|
207
223
|
this._deregisterOnStart?.();
|
|
224
|
+
this._deregisterOnStart = void 0;
|
|
208
225
|
this._deregisterOnStatesChanged?.();
|
|
226
|
+
this._deregisterOnStatesChanged = void 0;
|
|
227
|
+
}
|
|
228
|
+
reconnected() {
|
|
229
|
+
this.element = this._partElement;
|
|
230
|
+
if (!this.element) return;
|
|
231
|
+
const retained = !this._lastTargetStates && !this.state ? [...this.targetStates] : [];
|
|
232
|
+
this.firstUpdated({ targetStates: this._lastTargetStates });
|
|
233
|
+
retained.forEach((targetState) => this.targetStates.add(targetState));
|
|
234
|
+
const inFlight = this.uiRouter?.globals.transition;
|
|
235
|
+
if (inFlight) this.onTransitionStart(inFlight);
|
|
209
236
|
}
|
|
210
237
|
createTransitionStateChangeEvent(evt, trans) {
|
|
211
238
|
const detail = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref-active.js","mappings":"AAAA,SACE,UACA,QACA,OAEA,WAIA,MAIA,eACK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,0BAA0B;AACnC,SAAS,cAAc,yBAAyB;AAChD,SACE,cAGA,4BACK;AACP,SAAS,cAAc;AAavB,OAAO,MAAM,gCAAgC;AAM7C,OAAO,IAAK,wBAAL;CAEL;CAEA;CAEA;;AACF;AAkCA,MAAM,eAAe,WAA+C;CAClE,IAAI,CAAC,OAAO,OAAO,GAAG,aAAa;CACnC,MAAM,QAAqB,OAAO,OAAO;CACzC,MAAM,kBAAkB,OAAO,OAAO;CAEtC,MAAM,cADyB,UAAU,UAAU,MACb,CAAC,CACpC,KAAK,SAAS,KAAK,WAAW,CAAC,CAC/B,OAAgB,SAAS,CAAC,CAAC,CAAC,CAC5B,QAAQ,UACP,OAAO,UAAU,eAAe,KAAK,iBAAiB,MAAM,EAAE,CAChE;CACF,QAAQ,OAAmB,CAAC,MAAM;EAChC,MAAM,WAAW,KAAK,IAAI;EAC1B,IAAI,CAAC,YAAY,SAAS,UAAU,OAAO,OAAO;EAClD,MAAM,cAAc,UAAU,YAAY,IAAI;EAC9C,OAAO,MAAM,OAAO,aAAa,aAAa,eAAe;CAC/D;AACF;AASA,SAAS,iBACP,UACA,YACc;CACd,OAAO,WAAW,KAAK,SACrB,SAAS,OACP,UAAU,QAAQ,aAAa,MAAM,EAAG,UAAU,KAAK,KAAK,CAC9D,CACF;AACF;AAGA,OAAO,SAAS,gBACd,MACA,OACY;CACZ,OAAO;EACL,QAAQ,KAAK,UAAU,MAAM;EAC7B,OAAO,KAAK,SAAS,MAAM;EAC3B,UAAU,KAAK,YAAY,MAAM;EACjC,SAAS,KAAK,WAAW,MAAM;EAC/B,cAAc,CAAC,GAAG,KAAK,cAAc,GAAG,MAAM,YAAY;CAC5D;AACF;AAoDA,MAAM,iBAAiB,YACrB,aAAa,OAAO,KAAK,QAAQ,QAAQ,kBAAgB;AAQ3D,MAAM,uBACJ,qBAEA,OAAO,qBAAqB,WACxB,mBACA,EAAE,OAAO,iBAAiB;AA2ChC,IAAI,SAAuC;AAqB3C,OAAO,MAAM,8BAA8B,eAAe;CAKxD,aAAmB;EACjB,KAAK,WAAW,mBAAmB,WAAW,KAAK,OAAQ;CAC7D;CAIA,iBAAuB;EACrB,KAAK,aAAa,OAAO,eAAe,KAAK,OAAQ;CACvD;
|
|
1
|
+
{"version":3,"file":"ui-sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref-active.ts"]}
|
|
@@ -16,7 +16,7 @@ export function uiSrefTargetEvent(targetState) {
|
|
|
16
16
|
}
|
|
17
17
|
const paramsEqual = equals;
|
|
18
18
|
function sameTarget(a, b) {
|
|
19
|
-
return !!a && a
|
|
19
|
+
return !!a && a.$state() === b.$state() && paramsEqual(a.params(), b.params());
|
|
20
20
|
}
|
|
21
21
|
const warnedAssignHref = new WeakSet();
|
|
22
22
|
export function isNativeLink(element) {
|
|
@@ -45,6 +45,7 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
45
45
|
this.targetState = null;
|
|
46
46
|
this._ownsHref = false;
|
|
47
47
|
this._seekedRouter = false;
|
|
48
|
+
this._partElement = null;
|
|
48
49
|
this.onClick = (event) => {
|
|
49
50
|
const { uiRouter: router, state, params } = this;
|
|
50
51
|
const options = this.getOptions();
|
|
@@ -131,6 +132,12 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
131
132
|
this.href = null;
|
|
132
133
|
this._ownsHref = false;
|
|
133
134
|
this.unsubscribe?.();
|
|
135
|
+
this.unsubscribe = void 0;
|
|
136
|
+
this._firstUpdated = false;
|
|
137
|
+
}
|
|
138
|
+
reconnected() {
|
|
139
|
+
this.element = this._partElement;
|
|
140
|
+
if (this.element) this.firstUpdated();
|
|
134
141
|
}
|
|
135
142
|
update(part, [state, params = {}, options = {}]) {
|
|
136
143
|
const { assignHref, ...transitionOptions } = options;
|
|
@@ -139,6 +146,7 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
139
146
|
this.options = transitionOptions;
|
|
140
147
|
this.uiSrefOptions = { assignHref };
|
|
141
148
|
const uiSrefElement = part.element;
|
|
149
|
+
this._partElement = uiSrefElement;
|
|
142
150
|
if (this.element !== uiSrefElement) {
|
|
143
151
|
this.element = uiSrefElement;
|
|
144
152
|
this._firstUpdated = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref.js","mappings":"AAAA,SACE,QACA,QAGA,gBAEK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,cAAc,yBAAyB;AAChD,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAGvB,SAAS;AAMT,OAAO,MAAM,uBAAuB;AA8BpC,OAAO,SAAS,kBAAkB,aAA6C;CAC7E,OAAO,IAAI,YAAY,sBAAsB;EAC3C,SAAS;EACT,UAAU;EACV,QAAQ,EAAE,YAAY;CACxB,CAAC;AACH;AAQA,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"ui-sref.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref.ts"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
2
|
import { property, state } from "lit/decorators.js";
|
|
3
3
|
import { ResolveContext, Transition, applyPairs, trace, isFunction, isString, unnestR, filter } from "@uirouter/core";
|
|
4
4
|
import { LitViewConfig, isRoutedLitElement } from "./core.js";
|
|
@@ -12,7 +12,6 @@ export class UiView extends LitElement {
|
|
|
12
12
|
super(..._args);
|
|
13
13
|
this.name = "";
|
|
14
14
|
this.component = null;
|
|
15
|
-
this.inner = document.createDocumentFragment();
|
|
16
15
|
this.viewId = viewIdCounter++;
|
|
17
16
|
this.onUiViewContextEvent = (event) => {
|
|
18
17
|
if (event.target === this) return;
|
|
@@ -20,8 +19,11 @@ export class UiView extends LitElement {
|
|
|
20
19
|
event.detail.parentView = this;
|
|
21
20
|
};
|
|
22
21
|
this.onUiRouterContextEvent = (event) => {
|
|
22
|
+
if (this.seekingProvidedRouter) return;
|
|
23
23
|
UIRouterLitElement.onUiRouterContextEvent(this.uiRouter)(event);
|
|
24
24
|
};
|
|
25
|
+
this.routerFromProvider = false;
|
|
26
|
+
this.seekingProvidedRouter = false;
|
|
25
27
|
this.disconnectedHandlers = [];
|
|
26
28
|
}
|
|
27
29
|
createRenderRoot() {
|
|
@@ -74,10 +76,32 @@ export class UiView extends LitElement {
|
|
|
74
76
|
this.parentView = this.constructor.seekParentView(this);
|
|
75
77
|
}
|
|
76
78
|
seekRouter() {
|
|
77
|
-
|
|
79
|
+
if (!this.uiRouter) {
|
|
80
|
+
this.uiRouter = UIRouterLitElement.seekRouter(this);
|
|
81
|
+
this.routerFromProvider = !!this.uiRouter;
|
|
82
|
+
}
|
|
78
83
|
this.addEventListener(UIRouterLitElement.uiRouterContextEventName, this.onUiRouterContextEvent);
|
|
79
84
|
}
|
|
85
|
+
seekProvidedRouter() {
|
|
86
|
+
this.seekingProvidedRouter = true;
|
|
87
|
+
try {
|
|
88
|
+
return UIRouterLitElement.seekRouter(this);
|
|
89
|
+
} finally {
|
|
90
|
+
this.seekingProvidedRouter = false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
adoptProvidedRouter() {
|
|
94
|
+
const router = this.routerFromProvider ? this.seekProvidedRouter() : this.uiRouter;
|
|
95
|
+
if (!router || router === this.registeredRouter) return;
|
|
96
|
+
this.deregisterAll();
|
|
97
|
+
this.uiRouter = router;
|
|
98
|
+
this.setupUiView();
|
|
99
|
+
}
|
|
100
|
+
deregisterAll() {
|
|
101
|
+
while (this.disconnectedHandlers.length) this.disconnectedHandlers.shift()?.();
|
|
102
|
+
}
|
|
80
103
|
captureContent() {
|
|
104
|
+
this.inner ??= document.createDocumentFragment();
|
|
81
105
|
this.inner.append(...this.childNodes.values());
|
|
82
106
|
}
|
|
83
107
|
setupUiView() {
|
|
@@ -103,11 +127,12 @@ export class UiView extends LitElement {
|
|
|
103
127
|
}));
|
|
104
128
|
this.disconnectedHandlers.push(router.transitionService.onSuccess({}, (trans) => this._invokeUiOnParamsChangedHook(trans)));
|
|
105
129
|
this.disconnectedHandlers.push(router.viewService.registerUIView(this._uiViewData));
|
|
130
|
+
this.registeredRouter = router;
|
|
106
131
|
}
|
|
107
132
|
disconnectedCallback() {
|
|
108
133
|
super.disconnectedCallback();
|
|
109
134
|
this.removeEventListener(this.constructor.uiViewContextEventName, this.onUiViewContextEvent);
|
|
110
|
-
|
|
135
|
+
this.deregisterAll();
|
|
111
136
|
}
|
|
112
137
|
_invokeUiCanExitHook(trans) {
|
|
113
138
|
const instance = this.firstElementChild;
|
|
@@ -155,10 +180,11 @@ export class UiView extends LitElement {
|
|
|
155
180
|
}
|
|
156
181
|
firstUpdated(changed) {
|
|
157
182
|
super.firstUpdated(changed);
|
|
183
|
+
this.adoptProvidedRouter();
|
|
158
184
|
if (!this.uiRouter) warnMissingRouter(this, "<ui-view>", "will never render a routed view");
|
|
159
185
|
}
|
|
160
186
|
render() {
|
|
161
|
-
if (!this.component || !this.viewAddress) return this.inner
|
|
187
|
+
if (!this.component || !this.viewAddress) return this.inner?.cloneNode(true) ?? html`<slot></slot>`;
|
|
162
188
|
const { uiRouter: router } = this;
|
|
163
189
|
const injector = this.resolveContext.injector();
|
|
164
190
|
const props = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-view.js","mappings":"AAAA,SAAS,
|
|
1
|
+
{"version":3,"file":"ui-view.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-view.ts"]}
|
package/dist/ui-sref-active.d.ts
CHANGED
|
@@ -178,10 +178,30 @@ export declare class UiSrefActiveDirective extends AsyncDirective {
|
|
|
178
178
|
exiting: boolean | undefined;
|
|
179
179
|
targetStates: Set<TargetState>;
|
|
180
180
|
uiSrefs: WeakMap<TargetState, UiSrefElement>;
|
|
181
|
+
/**
|
|
182
|
+
* The reverse of {@link uiSrefs}, so a re-targeting link retires its old one.
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
private readonly _linkTargets;
|
|
181
186
|
/** @internal */
|
|
182
187
|
_deregisterOnStart: deregisterFn | undefined;
|
|
183
188
|
/** @internal */
|
|
184
189
|
_deregisterOnStatesChanged: deregisterFn | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Kept across a disconnect so {@link reconnected} can re-arm.
|
|
192
|
+
* @internal
|
|
193
|
+
*/
|
|
194
|
+
private _partElement;
|
|
195
|
+
/**
|
|
196
|
+
* Replayed by {@link reconnected} so it re-arms the way `firstUpdated` did.
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
199
|
+
private _lastTargetStates;
|
|
200
|
+
/**
|
|
201
|
+
* Bumped on disconnect; `reconnected` re-subscribes to what is in flight.
|
|
202
|
+
* @internal
|
|
203
|
+
*/
|
|
204
|
+
private _connection;
|
|
185
205
|
/** @internal */
|
|
186
206
|
constructor(partInfo: PartInfo);
|
|
187
207
|
/** @internal */
|
|
@@ -239,6 +259,11 @@ export declare class UiSrefActiveDirective extends AsyncDirective {
|
|
|
239
259
|
firstUpdated({ targetStates }: Partial<UiSrefActiveParams>): void;
|
|
240
260
|
/** @internal */
|
|
241
261
|
disconnected(): void;
|
|
262
|
+
/**
|
|
263
|
+
* Re-arms after a detach/re-attach; `update` only re-arms on a NEW element.
|
|
264
|
+
* @internal
|
|
265
|
+
*/
|
|
266
|
+
reconnected(): void;
|
|
242
267
|
/** @internal */
|
|
243
268
|
createTransitionStateChangeEvent(evt: TransitionStateChange, trans: Transition): CustomEvent<TransEvt>;
|
|
244
269
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref-active.d.ts","mappings":"AAAA,SAOE,WAGA,aACA,YACA,yBAEK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAG5B,SAEE,eACA,yBAEK;AACP,SAAS,cAAc;;UAGb,SAAS;CACjB;CACA,OAAO;CACP,SAAS;AACX;;;;;AAMA,OAAO,cAAM,gCAAgC;;;;;AAM7C,oBAAY,sBAAsB;;CAEhC;;CAEA;;CAEA;AACF;;;;;;;;;;;;AAaA,iBAAiB,WAAW;;CAE1B;;CAEA;;CAEA;;CAEA;;CAEA,cAAc;AAChB;;AAgDA,OAAO,iBAAS,gBACd,MAAM,YACN,OAAO,aACN;;;;;;;;;AAkBH,YAAY,mBACR,SACA,SACA,aACA,SACA,SACA;;;;;;;;;;;;;;AAeJ,iBAAiB,kBAAkB;;CAEjC,QAAQ,mBAAmB;;;;;CAK3B,SAAS,mBAAmB;AAC9B;;;;;;;;AAoCA,iBAAiB,mBAAmB;;CAElC;;CAEA;;;;;;;;;;;;;;;;;;CAkBA,mBAAmB,mBAAmB,QAAQ;;CAE9C;;CAEA,SAAS;;CAET,UAAU;;CAEV,cAAc;AAChB;KAKK;;;;;;;;;;;;;;;;;;AAmBL,OAAO,cAAM,8BAA8B,eAAe;CACxD,SAAS;CAET,UAAU;;CAEV;CAIA,YAAY;;CAEZ;CAIA;CACA;;CAEA,kBAAkB,mBAAmB,QAAQ;;;;;;;CAO7C,QAAQ;;;;;;;;CAQR,QAAQ;CAER;CACA,QAAQ;CACR,SAAS;CAET;CACA;CACA;CACA;CAEA,cAAc,IAAI;CAClB,SAAS,QAAQ,aAAa;;
|
|
1
|
+
{"version":3,"file":"ui-sref-active.d.ts","mappings":"AAAA,SAOE,WAGA,aACA,YACA,yBAEK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAG5B,SAEE,eACA,yBAEK;AACP,SAAS,cAAc;;UAGb,SAAS;CACjB;CACA,OAAO;CACP,SAAS;AACX;;;;;AAMA,OAAO,cAAM,gCAAgC;;;;;AAM7C,oBAAY,sBAAsB;;CAEhC;;CAEA;;CAEA;AACF;;;;;;;;;;;;AAaA,iBAAiB,WAAW;;CAE1B;;CAEA;;CAEA;;CAEA;;CAEA,cAAc;AAChB;;AAgDA,OAAO,iBAAS,gBACd,MAAM,YACN,OAAO,aACN;;;;;;;;;AAkBH,YAAY,mBACR,SACA,SACA,aACA,SACA,SACA;;;;;;;;;;;;;;AAeJ,iBAAiB,kBAAkB;;CAEjC,QAAQ,mBAAmB;;;;;CAK3B,SAAS,mBAAmB;AAC9B;;;;;;;;AAoCA,iBAAiB,mBAAmB;;CAElC;;CAEA;;;;;;;;;;;;;;;;;;CAkBA,mBAAmB,mBAAmB,QAAQ;;CAE9C;;CAEA,SAAS;;CAET,UAAU;;CAEV,cAAc;AAChB;KAKK;;;;;;;;;;;;;;;;;;AAmBL,OAAO,cAAM,8BAA8B,eAAe;CACxD,SAAS;CAET,UAAU;;CAEV;CAIA,YAAY;;CAEZ;CAIA;CACA;;CAEA,kBAAkB,mBAAmB,QAAQ;;;;;;;CAO7C,QAAQ;;;;;;;;CAQR,QAAQ;CAER;CACA,QAAQ;CACR,SAAS;CAET;CACA;CACA;CACA;CAEA,cAAc,IAAI;CAClB,SAAS,QAAQ,aAAa;;;;;CAS9B,iBAAiB;;CAGjB,oBAAoB;;CAEpB,4BAA4B;;;;;CAM5B,QAAQ;;;;;CAMR,QAAQ;;;;;CAMR,QAAQ;;CAGR,YAAY,UAAU;;CAYtB,OAAO,EACL,eACA,cACA,oBACC,QAAQ,6BAA6B;;;;;;;;;;;CAmCxC,QAAQ;;;;;;;;;CAoBR,QAAQ;;;;;;;;;;;;CA8BR,QAAQ;;CAqBR,cAAc;;;;;;;;;CAed,cACE,OAAO,sBACP,YAAY,cACX;;CAiDH,AAAM,OACJ,MAAM,aACN,CACE,EACE,eACA,cACA,kBACA,OACA,QACA,SACA,kBAEA,sBACH;;CAkCH,uBAAsB;;CAStB;;CAEA,aAAa,EAAE,gBAAgB,QAAQ;;CAyDvC;;;;;CA0BA;;CAkBA,iCACE,KAAK,uBACL,OAAO,aACN,YAAY;;CAcf,sBAAuB,OAAO;;CAgB9B,0BAA2B,GAAG;;CAe9B,UAAU,WAAW,WAAW;;CAahC,oBAAqB,OAAO;;CAmB5B;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0HA,OAAO,cAAM,eACX,QAAQ,QAAQ,wBACb,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref-active.ts"]}
|
package/dist/ui-sref-active.js
CHANGED
|
@@ -59,6 +59,10 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
59
59
|
this.options = {};
|
|
60
60
|
this.targetStates = new Set();
|
|
61
61
|
this.uiSrefs = new WeakMap();
|
|
62
|
+
this._linkTargets = new WeakMap();
|
|
63
|
+
this._partElement = null;
|
|
64
|
+
this._lastTargetStates = void 0;
|
|
65
|
+
this._connection = 0;
|
|
62
66
|
this.doRender = () => {
|
|
63
67
|
return this.render({
|
|
64
68
|
activeClasses: this.activeClasses,
|
|
@@ -69,8 +73,15 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
69
73
|
this._firstUpdated = false;
|
|
70
74
|
this.onUiSrefTargetEvent = (event) => {
|
|
71
75
|
const { targetState } = event.detail;
|
|
76
|
+
const previous = this._linkTargets.get(event.target);
|
|
77
|
+
if (previous) {
|
|
78
|
+
this.targetStates.delete(previous);
|
|
79
|
+
this.uiSrefs.delete(previous);
|
|
80
|
+
}
|
|
72
81
|
this.targetStates.add(targetState);
|
|
73
82
|
this.uiSrefs.set(targetState, event.target);
|
|
83
|
+
this._linkTargets.set(event.target, targetState);
|
|
84
|
+
if (this._firstUpdated) this.onStatesChanged();
|
|
74
85
|
};
|
|
75
86
|
this.onTransitionStateChange = (e) => {
|
|
76
87
|
const event = e;
|
|
@@ -84,12 +95,13 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
84
95
|
this.doRender();
|
|
85
96
|
};
|
|
86
97
|
this.onTransitionStart = (trans) => {
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
const connection = this._connection;
|
|
99
|
+
const dispatch = (evt) => {
|
|
100
|
+
if (connection !== this._connection) return;
|
|
101
|
+
this.element?.dispatchEvent(this.createTransitionStateChangeEvent(evt, trans));
|
|
102
|
+
};
|
|
103
|
+
dispatch(TransitionStateChange.start);
|
|
104
|
+
trans.promise.then(() => dispatch(TransitionStateChange.success), () => dispatch(TransitionStateChange.error));
|
|
93
105
|
};
|
|
94
106
|
this.onStatesChanged = () => {
|
|
95
107
|
const { active, exact } = this.getStatus() || {};
|
|
@@ -159,6 +171,8 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
159
171
|
this.params = params;
|
|
160
172
|
this.options = options;
|
|
161
173
|
const { element } = part;
|
|
174
|
+
this._partElement = element;
|
|
175
|
+
this._lastTargetStates = targetStates && Array.from(targetStates);
|
|
162
176
|
if (this.element !== element) {
|
|
163
177
|
this.element = element;
|
|
164
178
|
this._firstUpdated = false;
|
|
@@ -195,12 +209,25 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
195
209
|
this._firstUpdated = true;
|
|
196
210
|
}
|
|
197
211
|
disconnected() {
|
|
212
|
+
this._firstUpdated = false;
|
|
213
|
+
this._connection++;
|
|
198
214
|
if (!this.element) return;
|
|
199
215
|
this.element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
|
|
200
216
|
this.element.removeEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
|
|
201
217
|
this.element = null;
|
|
202
218
|
this._deregisterOnStart?.();
|
|
219
|
+
this._deregisterOnStart = void 0;
|
|
203
220
|
this._deregisterOnStatesChanged?.();
|
|
221
|
+
this._deregisterOnStatesChanged = void 0;
|
|
222
|
+
}
|
|
223
|
+
reconnected() {
|
|
224
|
+
this.element = this._partElement;
|
|
225
|
+
if (!this.element) return;
|
|
226
|
+
const retained = !this._lastTargetStates && !this.state ? [...this.targetStates] : [];
|
|
227
|
+
this.firstUpdated({ targetStates: this._lastTargetStates });
|
|
228
|
+
retained.forEach((targetState) => this.targetStates.add(targetState));
|
|
229
|
+
const inFlight = this.uiRouter?.globals.transition;
|
|
230
|
+
if (inFlight) this.onTransitionStart(inFlight);
|
|
204
231
|
}
|
|
205
232
|
createTransitionStateChangeEvent(evt, trans) {
|
|
206
233
|
const detail = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref-active.js","mappings":"AAAA,SACE,UACA,QACA,OAEA,WAIA,MAIA,eACK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,0BAA0B;AACnC,SAAuB,yBAAyB;AAChD,SACE,cAGA,4BACK;AACP,SAAS,cAAc;AAavB,OAAO,MAAM,gCAAgC;AAM7C,OAAO,IAAK,wBAAL;CAEL;CAEA;CAEA;;AACF;AAkCA,MAAM,eAAe,WAA+C;CAClE,IAAI,CAAC,OAAO,OAAO,GAAG,aAAa;CACnC,MAAM,QAAqB,OAAO,OAAO;CACzC,MAAM,kBAAkB,OAAO,OAAO;CAEtC,MAAM,cADyB,UAAU,UAAU,MACb,CAAC,CACpC,KAAK,SAAS,KAAK,WAAW,CAAC,CAC/B,OAAgB,SAAS,CAAC,CAAC,CAAC,CAC5B,QAAQ,UACP,OAAO,UAAU,eAAe,KAAK,iBAAiB,MAAM,EAAE,CAChE;CACF,QAAQ,OAAmB,CAAC,MAAM;EAChC,MAAM,WAAW,KAAK,IAAI;EAC1B,IAAI,CAAC,YAAY,SAAS,UAAU,OAAO,OAAO;EAClD,MAAM,cAAc,UAAU,YAAY,IAAI;EAC9C,OAAO,MAAM,OAAO,aAAa,aAAa,eAAe;CAC/D;AACF;AASA,SAAS,iBACP,UACA,YACc;CACd,OAAO,WAAW,KAAK,SACrB,SAAS,OACP,UAAU,QAAQ,aAAa,MAAM,EAAG,UAAU,KAAK,KAAK,CAC9D,CACF;AACF;AAGA,OAAO,SAAS,gBACd,MACA,OACY;CACZ,OAAO;EACL,QAAQ,KAAK,UAAU,MAAM;EAC7B,OAAO,KAAK,SAAS,MAAM;EAC3B,UAAU,KAAK,YAAY,MAAM;EACjC,SAAS,KAAK,WAAW,MAAM;EAC/B,cAAc,CAAC,GAAG,KAAK,cAAc,GAAG,MAAM,YAAY;CAC5D;AACF;AAoDA,MAAM,iBAAiB,YACrB,aAAa,OAAO,KAAK,QAAQ,QAAQ,kBAAgB;AAQ3D,MAAM,uBACJ,qBAEA,OAAO,qBAAqB,WACxB,mBACA,EAAE,OAAO,iBAAiB;AA2ChC,IAAI,SAAuC;AAqB3C,OAAO,MAAM,8BAA8B,eAAe;CAKxD,aAAmB;EACjB,KAAK,WAAW,mBAAmB,WAAW,KAAK,OAAQ;CAC7D;CAIA,iBAAuB;EACrB,KAAK,aAAa,OAAO,eAAe,KAAK,OAAQ;CACvD;
|
|
1
|
+
{"version":3,"file":"ui-sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-sref-active.ts"]}
|
package/dist/ui-sref.d.ts
CHANGED
|
@@ -124,6 +124,11 @@ export declare class UiSrefDirective extends AsyncDirective {
|
|
|
124
124
|
private _seekedRouter;
|
|
125
125
|
/** @internal */
|
|
126
126
|
unsubscribe: (() => void) | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* Kept across a disconnect so {@link reconnected} can re-arm.
|
|
129
|
+
* @internal
|
|
130
|
+
*/
|
|
131
|
+
private _partElement;
|
|
127
132
|
/** @internal */
|
|
128
133
|
constructor(partInfo: PartInfo);
|
|
129
134
|
getOptions(opts?: TransitionOptions): TransitionOptions;
|
|
@@ -148,6 +153,11 @@ export declare class UiSrefDirective extends AsyncDirective {
|
|
|
148
153
|
seekParentView(): void;
|
|
149
154
|
/** @internal */
|
|
150
155
|
disconnected(): void;
|
|
156
|
+
/**
|
|
157
|
+
* Re-arms after a detach/re-attach; `update` only re-arms on a NEW element.
|
|
158
|
+
* @internal
|
|
159
|
+
*/
|
|
160
|
+
reconnected(): void;
|
|
151
161
|
onClick: (event: MouseEvent) => void;
|
|
152
162
|
update(part: ElementPart, [state, params, options]: [string, RawParams?, UiSrefTransitionOptions?]): typeof noChange;
|
|
153
163
|
doRender: () => typeof noChange;
|
package/dist/ui-sref.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref.d.ts","mappings":"AAAA,SAGE,WACA,mBAEA,mBACK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAuC;AAEhD,SAAS,cAAc;AAGvB,SAAS;;;;;AAMT,OAAO,cAAM,uBAAuB;;;;;AAMpC,iBAAiB,sBAAsB,QAAQ;;CAE7C;;CAEA,aAAa;AACf;;;;;;AAOA,iBAAiB,0BAA0B,YAAY;CACrD,aAAa;AACf,GAAG;CACD,QAAQ;AACV;;;;;;;AAQA,OAAO,iBAAS,kBAAkB,aAAa,cAAc;;;;;;;
|
|
1
|
+
{"version":3,"file":"ui-sref.d.ts","mappings":"AAAA,SAGE,WACA,mBAEA,mBACK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAuC;AAEhD,SAAS,cAAc;AAGvB,SAAS;;;;;AAMT,OAAO,cAAM,uBAAuB;;;;;AAMpC,iBAAiB,sBAAsB,QAAQ;;CAE7C;;CAEA,aAAa;AACf;;;;;;AAOA,iBAAiB,0BAA0B,YAAY;CACrD,aAAa;AACf,GAAG;CACD,QAAQ;AACV;;;;;;;AAQA,OAAO,iBAAS,kBAAkB,aAAa,cAAc;;;;;;;AAgC7D,iBAAiB,cAAc;;;;;;;;;;;;;;;;;;;CAmB7B,uBAAuB;AACzB;;;;;;;AAQA,YAAY,0BAA0B,oBAAoB;;;;;;;;;;;;;;AAkB1D,OAAO,iBAAS,aAAa,SAAS;;;;;;;;;;;;;;AA+CtC,OAAO,cAAM,wBAAwB,eAAe;CAClD;CACA,QAAQ;CACR,SAAS;CAET,SAAS;CAET,UAAU;CACV,YAAY;;CAGZ,eAAe;CAEf;CACA,aAAa;;CAGb,QAAQ;;;;;;;;;CAUR,QAAQ;;CAGR;;;;;CAMA,QAAQ;;CAGR,YAAY,UAAU;CAOtB,WAAW,OAAM,oBAAmC;CASpD,OACE,eACA,SAAS,WACT,UAAU,2BACF;;;;;;CAkDV;;CA6BA;;;;;;;;CAYA,QAAQ;;CAUR;;CAKA;;;;;CAgBA;CAOA,UAAW,OAAO;CAiClB,OACE,MAAM,aACN,CAAC,OAAO,QAAa,mBAEnB,YACA,mCAEM;CAoBV,uBAAsB;CAItB,QAAQ;;;;CAIR;AAkBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,OAAO,cAAM,SACX,eACA,SAAS,WACT,UAAU,4BACP,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
|
package/dist/ui-sref.js
CHANGED
|
@@ -16,7 +16,7 @@ export function uiSrefTargetEvent(targetState) {
|
|
|
16
16
|
}
|
|
17
17
|
const paramsEqual = equals;
|
|
18
18
|
function sameTarget(a, b) {
|
|
19
|
-
return !!a && a
|
|
19
|
+
return !!a && a.$state() === b.$state() && paramsEqual(a.params(), b.params());
|
|
20
20
|
}
|
|
21
21
|
export function isNativeLink(element) {
|
|
22
22
|
const tag = element.localName;
|
|
@@ -44,6 +44,7 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
44
44
|
this.targetState = null;
|
|
45
45
|
this._ownsHref = false;
|
|
46
46
|
this._seekedRouter = false;
|
|
47
|
+
this._partElement = null;
|
|
47
48
|
this.onClick = (event) => {
|
|
48
49
|
const { uiRouter: router, state, params } = this;
|
|
49
50
|
const options = this.getOptions();
|
|
@@ -126,6 +127,12 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
126
127
|
this.href = null;
|
|
127
128
|
this._ownsHref = false;
|
|
128
129
|
this.unsubscribe?.();
|
|
130
|
+
this.unsubscribe = void 0;
|
|
131
|
+
this._firstUpdated = false;
|
|
132
|
+
}
|
|
133
|
+
reconnected() {
|
|
134
|
+
this.element = this._partElement;
|
|
135
|
+
if (this.element) this.firstUpdated();
|
|
129
136
|
}
|
|
130
137
|
update(part, [state, params = {}, options = {}]) {
|
|
131
138
|
const { assignHref, ...transitionOptions } = options;
|
|
@@ -134,6 +141,7 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
134
141
|
this.options = transitionOptions;
|
|
135
142
|
this.uiSrefOptions = { assignHref };
|
|
136
143
|
const uiSrefElement = part.element;
|
|
144
|
+
this._partElement = uiSrefElement;
|
|
137
145
|
if (this.element !== uiSrefElement) {
|
|
138
146
|
this.element = uiSrefElement;
|
|
139
147
|
this._firstUpdated = false;
|
package/dist/ui-sref.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-sref.js","mappings":"AAAA,SACE,QACA,QAGA,gBAEK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,cAAc,yBAAyB;AAChD,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAGvB,SAAS;AAMT,OAAO,MAAM,uBAAuB;AA8BpC,OAAO,SAAS,kBAAkB,aAA6C;CAC7E,OAAO,IAAI,YAAY,sBAAsB;EAC3C,SAAS;EACT,UAAU;EACV,QAAQ,EAAE,YAAY;CACxB,CAAC;AACH;AAQA,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"ui-sref.js","mappings":"AAAA,SACE,QACA,QAGA,gBAEK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,cAAc,yBAAyB;AAChD,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAGvB,SAAS;AAMT,OAAO,MAAM,uBAAuB;AA8BpC,OAAO,SAAS,kBAAkB,aAA6C;CAC7E,OAAO,IAAI,YAAY,sBAAsB;EAC3C,SAAS;EACT,UAAU;EACV,QAAQ,EAAE,YAAY;CACxB,CAAC;AACH;AAQA,MAAM,cAAc;AAMpB,SAAS,WAAW,GAAuB,GAAyB;CAClE,OACE,CAAC,CAAC,KAAK,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,YAAY,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;AAE1E;AAsDA,OAAO,SAAS,aAAa,SAA2B;CACtD,MAAM,MAAM,QAAQ;CACpB,OAAO,QAAQ,OAAO,QAAQ;AAChC;AAOA,SAAS,gBAAgB,OAA4B;CACnD,MAAM,EAAE,QAAQ,SAAS,SAAS,UAAU,WAAW;CACvD,OACE,CAAC,SAAS,MAAM,KAAK,CAAC,CAAC,UAAU,WAAW,WAAW,YAAY;AAEvE;AAOA,SAAS,YAAY,SAA2B;CAC9C,MAAM,SAAS,QAAQ,aAAa,QAAQ;CAI5C,IAAI,UAAU,OAAO,YAAY,MAAM,SACrC,OAAO;CAGT,QAAQ,QAAQ,aAAa,KAAK,KAAK,GAAE,CAAE,MAAM,KAAK,CAAC,CAAC,SAAS,UAAU;AAC7E;AAeA,OAAO,MAAM,wBAAwB,eAAe;CAuClD,YAAY,UAAoB;EAC9B,MAAM,QAAQ;eAvCO;gBACH,CAAC;iBACQ,CAAC;iBAEE;oBAGJ;uBAGG,CAAC;cAEV;qBACY;mBAGd;uBAUI;sBASqB;kBAwJlC,UAA4B;GACrC,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW;GAC5C,MAAM,UAAU,KAAK,WAAW;GAChC,MAAM,SAAS,QAAQ;GACvB,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,eAAe,CAAC,OAAO;IACnD,IAAI,CAAC,UAAU,SAAS,KAAK,SAAS,aACpC,KAAK,kBAAkB,KAAK;IAE9B;GACF;GAEA,MAAM,UAAU,MAAM;GAGtB,IAAI,MAAM,oBAAoB,QAAQ,aAAa,UAAU,GAC3D;GAKF,IACE,aAAa,OAAO,KACpB,QAAQ,aAAa,MAAM,MAC1B,gBAAgB,KAAK,KAAK,YAAY,OAAO,IAE9C;GAIF,OAAY,GAAG,OAAO,QAAQ,OAAO;GACrC,MAAM,eAAe;EACvB;wBA6BkC;GAChC,OAAO,KAAK,OAAO,KAAK,OAAQ,KAAK,QAAQ,KAAK,OAAO;EAC3D;uBAEwB;EAnNtB,IAAI,SAAS,SAAS,SAAS,SAC7B,MAAM,IAAI,MAAM,mDAAmD;CAEvE;CAEA,WAAW,OAA0B,KAAK,SAA4B;EACpE,MAAM,cAAiC;GACrC,UAAU,KAAK,YAAY,aAAa;GACxC,SAAS;GACT,QAAQ;EACV;EACA,OAAO,OAAO,aAAa,QAAQ,CAAC,CAAC;CACvC;CAEA,OACE,OACA,QACA,SACiB;EACjB,IAAI,CAAC,KAAK,SACR,OAAO;EAGT,MAAM,EAAE,UAAU,WAAW;EAC7B,MAAM,SAAS,QAAQ;EACvB,IAAI,CAAC,QAAQ;GACX,IAAI,KAAK,eACP,KAAK,kBAAkB,KAAK;GAE9B,OAAO;EACT;EAEA,MAAM,cAAc,OAAO,OAAO,OAAO,QAAQ,KAAK,WAAW,OAAO,CAAC;EACzE,MAAM,gBAAgB,CAAC,WAAW,KAAK,aAAa,WAAW;EAC/D,KAAK,QAAQ,cAAc,KAAK,cAAc;EAG9C,KAAK,OAAO,OAAO,KAAK,OAAO,QAAQ,KAAK,WAAW,OAAO,CAAC;EAE/D,IAAI,KAAK,iBAAiB,GACxB;OAAI,KAAK,SAAS,KAAK,QAAQ,aAAa,MAAM,GAAG;IACnD,IAAI,KAAK,MAAM;KACb,KAAK,QAAQ,aAAa,QAAQ,KAAK,IAAI;KAC3C,KAAK,YAAY;IACnB,OAAO;KACL,KAAK,QAAQ,gBAAgB,MAAM;KACnC,KAAK,YAAY;IACnB;GACF;SACK,IAAI,KAAK,WAAW;GAEzB,KAAK,QAAQ,gBAAgB,MAAM;GACnC,KAAK,YAAY;EACnB;EAIA,IAAI,eACF,KAAK,QAAQ,cAAc,kBAAkB,KAAK,WAAW,CAAC;EAEhE,OAAO;CACT;CAOA,mBAA4B;EAC1B,MAAM,UAAU,KAAK;EACrB,MAAM,EAAE,aAAa,SAAS,KAAK;EAEnC,IAAI,eAAe,QACjB,OAAO,aAAa,OAAO;EAE7B,IAAI,CAAC,YACH,OAAO;EAiBT,OAAO;CACT;CAGA,aAAmB;EACjB,KAAK,WAAW,mBAAmB,WAAW,KAAK,OAAQ;EAC3D,KAAK,gBAAgB;CACvB;CASA,kBAA0B,OAAqB;EAC7C,MAAM,UAAU,KAAK;EACrB,kBACE,SACA,IAAI,QAAQ,UAAU,WAAW,MAAM,KACvC,mBACF;CACF;CAGA,iBAAuB;EACrB,KAAK,aAAa,OAAO,eAAe,KAAK,OAAQ;CACvD;CAGA,eAAqB;EACnB,KAAK,SAAS,oBAAoB,SAAS,KAAK,OAAwB;EACxE,KAAK,UAAU;EACf,KAAK,cAAc;EACnB,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,cAAc;EACnB,KAAK,cAAc;EAEnB,KAAK,gBAAgB;CACvB;CAMA,cAAoB;EAClB,KAAK,UAAU,KAAK;EACpB,IAAI,KAAK,SACP,KAAK,aAAa;CAEtB;CAmCA,OACE,MACA,CAAC,OAAO,SAAS,CAAC,GAAG,UAAU,CAAC,IAKf;EAEjB,MAAM,EAAE,YAAY,GAAG,sBAAsB;EAC7C,KAAK,QAAQ;EACb,KAAK,SAAS;EACd,KAAK,UAAU;EACf,KAAK,gBAAgB,EAAE,WAAW;EAClC,MAAM,gBAAgB,KAAK;EAC3B,KAAK,eAAe;EACpB,IAAI,KAAK,YAAY,eAAe;GAClC,KAAK,UAAU;GACf,KAAK,gBAAgB;GACrB,iBAAiB;IACf,KAAK,aAAa;GACpB,GAAG,CAAC;EACN;EAEA,OAAO,KAAK,SAAS;CACvB;CAUA,eAAqB;EACnB,IAAI,KAAK,iBAAiB,CAAC,KAAK,aAC9B;EAGF,KAAK,WAAW;EAChB,KAAK,eAAe;EACpB,KAAK,QAAS,iBAAiB,SAAS,KAAK,OAAwB;EAGrE,IAAI,KAAK,UACP,KAAK,cAAc,KAAK,SAAS,cAAc,gBAC7C,KAAK,QACP;EAEF,KAAK,SAAS;EACd,KAAK,gBAAgB;CACvB;AACF;AAwDA,OAAO,MAAM,SAIkC,UAAU,eAAe","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
|
package/dist/ui-view.d.ts
CHANGED
|
@@ -9,6 +9,10 @@ export interface UiViewAddress {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* @hideconstructor
|
|
12
|
+
*
|
|
13
|
+
* @slot - <code><ui-view></code> renders slotted content as fallback
|
|
14
|
+
* whenever no routed component is active.
|
|
15
|
+
*
|
|
12
16
|
* @fires {CustomEvent} ui-router-context
|
|
13
17
|
*
|
|
14
18
|
* This event is fired to obtain the <code>uiRouter</code> instance,
|
|
@@ -39,7 +43,8 @@ export declare class UiView extends LitElement {
|
|
|
39
43
|
private viewAddress;
|
|
40
44
|
/** Replaced only by a real view config change, so a retained view keeps its subtree. */
|
|
41
45
|
private component;
|
|
42
|
-
|
|
46
|
+
/** Created on connect: the @lit-labs/ssr DOM shim has no `createDocumentFragment`. */
|
|
47
|
+
private inner?;
|
|
43
48
|
/** @internal */
|
|
44
49
|
createRenderRoot(): this;
|
|
45
50
|
private readonly viewId;
|
|
@@ -58,6 +63,36 @@ export declare class UiView extends LitElement {
|
|
|
58
63
|
private seekParentView;
|
|
59
64
|
private readonly onUiRouterContextEvent;
|
|
60
65
|
private seekRouter;
|
|
66
|
+
/** Whether `uiRouter` came from the context event rather than the app. */
|
|
67
|
+
private routerFromProvider;
|
|
68
|
+
/** The router this view registered with; a late upgrade can supersede it. */
|
|
69
|
+
private registeredRouter?;
|
|
70
|
+
/** Set only for the synchronous span of our own re-seek. */
|
|
71
|
+
private seekingProvidedRouter;
|
|
72
|
+
/**
|
|
73
|
+
* Seeks the provider's router, past our own answer.
|
|
74
|
+
*
|
|
75
|
+
* `<ui-view>` answers this event for descendants and stops it, deliberately —
|
|
76
|
+
* see `listener-identity.spec.ts`. Suppressing that for the span of our own
|
|
77
|
+
* dispatch keeps the guarantee intact for everyone else.
|
|
78
|
+
*/
|
|
79
|
+
private seekProvidedRouter;
|
|
80
|
+
/**
|
|
81
|
+
* Adopts the router the provider now offers, when this view registered
|
|
82
|
+
* without it.
|
|
83
|
+
*
|
|
84
|
+
* lit replays a pre-upgrade property inside the element's first update, not
|
|
85
|
+
* at upgrade, so `<ui-router>` can run `connectedCallback` with `uiRouter`
|
|
86
|
+
* still undefined and provide an instance of its own; a `<ui-view>`
|
|
87
|
+
* connecting in between registers with that one and never sees a transition.
|
|
88
|
+
* Firefox upgrades a detached subtree later than Chrome and WebKit, so
|
|
89
|
+
* declarative shadow DOM parsed off-document reaches this there first.
|
|
90
|
+
*
|
|
91
|
+
* `registerUIView` syncs, so the re-registered view picks up the current
|
|
92
|
+
* state without waiting for the next transition.
|
|
93
|
+
*/
|
|
94
|
+
private adoptProvidedRouter;
|
|
95
|
+
private deregisterAll;
|
|
61
96
|
private captureContent;
|
|
62
97
|
private readonly disconnectedHandlers;
|
|
63
98
|
private setupUiView;
|
package/dist/ui-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-view.d.ts","mappings":"AAAA,SAAS,
|
|
1
|
+
{"version":3,"file":"ui-view.d.ts","mappings":"AAAA,SAAS,kBAAwB;AACjC,cAAc,gBAAgB,sBAAsB;AAEpD,SAME,kBASA,aACA,mBACK;AASP,SAAwB,mBAAuC;;AAS/D,iBAAiB,cAAc;CAC7B,SAAS,cAAc;CACvB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,OAAO,cAAM,eAAe,WAAW;CACrC,AACA;;;;;CAMA,AACA,UAAW;CAEX,QACQ;;CAGR,QACQ;;CAGR,QAAQ;;CAGR;CAIA,iBAAiB;CAEjB,QAAQ;CAER,QAAQ;CAER,QAAQ;CAoBR,QAAQ;CAoBR,QACQ;CAER,iBAAiB;;CAWjB;CAUA,wBAAwB;CAExB,eAAe;;CAWf,OAAO,eAAe,WAAW,UAAU;CAM3C,QAAQ;CAIR,iBAAiB;CAQjB,QAAQ;;CAaR,QAAQ;;CAGR,QAAQ;;CAGR,QAAQ;;;;;;;;CASR,QAAQ;;;;;;;;;;;;;;;CAuBR,QAAQ;CAaR,QAAQ;CAOR,QAAQ;CAKR,iBAAiB;CAEjB,QAAQ;;CA4CR;;;;;;;;;CAkBA,QAAQ;;CAeR,cAAc,GAAG,MAAM,WAAW,WAAW;;;;CAW7C,QAAQ;;CA2DR,IAAW,eAAe;;CAK1B,IAAW,SAAS;;;;;;;;;;;CAcpB,UAAU,aAAa,SAAS;;CAShC,UAAU,OAAO;AAuBnB;AAEA,iBAAiB,OAAO;;CAEtB,oBAAoB;AACtB","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
|
package/dist/ui-view.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
2
|
import { property, state } from "lit/decorators.js";
|
|
3
3
|
import { ResolveContext, Transition, applyPairs, trace, isFunction, isString, unnestR, filter } from "@uirouter/core";
|
|
4
4
|
import { LitViewConfig, isRoutedLitElement } from "./core.js";
|
|
@@ -12,7 +12,6 @@ export class UiView extends LitElement {
|
|
|
12
12
|
super(..._args);
|
|
13
13
|
this.name = "";
|
|
14
14
|
this.component = null;
|
|
15
|
-
this.inner = document.createDocumentFragment();
|
|
16
15
|
this.viewId = viewIdCounter++;
|
|
17
16
|
this.onUiViewContextEvent = (event) => {
|
|
18
17
|
if (event.target === this) return;
|
|
@@ -20,8 +19,11 @@ export class UiView extends LitElement {
|
|
|
20
19
|
event.detail.parentView = this;
|
|
21
20
|
};
|
|
22
21
|
this.onUiRouterContextEvent = (event) => {
|
|
22
|
+
if (this.seekingProvidedRouter) return;
|
|
23
23
|
UIRouterLitElement.onUiRouterContextEvent(this.uiRouter)(event);
|
|
24
24
|
};
|
|
25
|
+
this.routerFromProvider = false;
|
|
26
|
+
this.seekingProvidedRouter = false;
|
|
25
27
|
this.disconnectedHandlers = [];
|
|
26
28
|
}
|
|
27
29
|
createRenderRoot() {
|
|
@@ -74,10 +76,32 @@ export class UiView extends LitElement {
|
|
|
74
76
|
this.parentView = this.constructor.seekParentView(this);
|
|
75
77
|
}
|
|
76
78
|
seekRouter() {
|
|
77
|
-
|
|
79
|
+
if (!this.uiRouter) {
|
|
80
|
+
this.uiRouter = UIRouterLitElement.seekRouter(this);
|
|
81
|
+
this.routerFromProvider = !!this.uiRouter;
|
|
82
|
+
}
|
|
78
83
|
this.addEventListener(UIRouterLitElement.uiRouterContextEventName, this.onUiRouterContextEvent);
|
|
79
84
|
}
|
|
85
|
+
seekProvidedRouter() {
|
|
86
|
+
this.seekingProvidedRouter = true;
|
|
87
|
+
try {
|
|
88
|
+
return UIRouterLitElement.seekRouter(this);
|
|
89
|
+
} finally {
|
|
90
|
+
this.seekingProvidedRouter = false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
adoptProvidedRouter() {
|
|
94
|
+
const router = this.routerFromProvider ? this.seekProvidedRouter() : this.uiRouter;
|
|
95
|
+
if (!router || router === this.registeredRouter) return;
|
|
96
|
+
this.deregisterAll();
|
|
97
|
+
this.uiRouter = router;
|
|
98
|
+
this.setupUiView();
|
|
99
|
+
}
|
|
100
|
+
deregisterAll() {
|
|
101
|
+
while (this.disconnectedHandlers.length) this.disconnectedHandlers.shift()?.();
|
|
102
|
+
}
|
|
80
103
|
captureContent() {
|
|
104
|
+
this.inner ??= document.createDocumentFragment();
|
|
81
105
|
this.inner.append(...this.childNodes.values());
|
|
82
106
|
}
|
|
83
107
|
setupUiView() {
|
|
@@ -103,11 +127,12 @@ export class UiView extends LitElement {
|
|
|
103
127
|
}));
|
|
104
128
|
this.disconnectedHandlers.push(router.transitionService.onSuccess({}, (trans) => this._invokeUiOnParamsChangedHook(trans)));
|
|
105
129
|
this.disconnectedHandlers.push(router.viewService.registerUIView(this._uiViewData));
|
|
130
|
+
this.registeredRouter = router;
|
|
106
131
|
}
|
|
107
132
|
disconnectedCallback() {
|
|
108
133
|
super.disconnectedCallback();
|
|
109
134
|
this.removeEventListener(this.constructor.uiViewContextEventName, this.onUiViewContextEvent);
|
|
110
|
-
|
|
135
|
+
this.deregisterAll();
|
|
111
136
|
}
|
|
112
137
|
_invokeUiCanExitHook(trans) {
|
|
113
138
|
const instance = this.firstElementChild;
|
|
@@ -155,10 +180,11 @@ export class UiView extends LitElement {
|
|
|
155
180
|
}
|
|
156
181
|
firstUpdated(changed) {
|
|
157
182
|
super.firstUpdated(changed);
|
|
183
|
+
this.adoptProvidedRouter();
|
|
158
184
|
if (!this.uiRouter) warnMissingRouter(this, "<ui-view>", "will never render a routed view");
|
|
159
185
|
}
|
|
160
186
|
render() {
|
|
161
|
-
if (!this.component || !this.viewAddress) return this.inner
|
|
187
|
+
if (!this.component || !this.viewAddress) return this.inner?.cloneNode(true) ?? html`<slot></slot>`;
|
|
162
188
|
const { uiRouter: router } = this;
|
|
163
189
|
const injector = this.resolveContext.injector();
|
|
164
190
|
const props = {
|
package/dist/ui-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-view.js","mappings":"AAAA,SAAS,
|
|
1
|
+
{"version":3,"file":"ui-view.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
|
package/package.json
CHANGED
package/src/ui-sref-active.ts
CHANGED
|
@@ -316,11 +316,35 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
316
316
|
UiSrefElement
|
|
317
317
|
>();
|
|
318
318
|
|
|
319
|
+
/**
|
|
320
|
+
* The reverse of {@link uiSrefs}, so a re-targeting link retires its old one.
|
|
321
|
+
* @internal
|
|
322
|
+
*/
|
|
323
|
+
private readonly _linkTargets = new WeakMap<UiSrefElement, TargetState>();
|
|
324
|
+
|
|
319
325
|
/** @internal */
|
|
320
326
|
_deregisterOnStart: deregisterFn | undefined;
|
|
321
327
|
/** @internal */
|
|
322
328
|
_deregisterOnStatesChanged: deregisterFn | undefined;
|
|
323
329
|
|
|
330
|
+
/**
|
|
331
|
+
* Kept across a disconnect so {@link reconnected} can re-arm.
|
|
332
|
+
* @internal
|
|
333
|
+
*/
|
|
334
|
+
private _partElement: Element | null = null;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Replayed by {@link reconnected} so it re-arms the way `firstUpdated` did.
|
|
338
|
+
* @internal
|
|
339
|
+
*/
|
|
340
|
+
private _lastTargetStates: TargetState[] | undefined = undefined;
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Bumped on disconnect; `reconnected` re-subscribes to what is in flight.
|
|
344
|
+
* @internal
|
|
345
|
+
*/
|
|
346
|
+
private _connection = 0;
|
|
347
|
+
|
|
324
348
|
/** @internal */
|
|
325
349
|
constructor(partInfo: PartInfo) {
|
|
326
350
|
super(partInfo);
|
|
@@ -533,6 +557,8 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
533
557
|
this.options = options;
|
|
534
558
|
|
|
535
559
|
const { element } = part;
|
|
560
|
+
this._partElement = element;
|
|
561
|
+
this._lastTargetStates = targetStates && Array.from(targetStates);
|
|
536
562
|
|
|
537
563
|
if (this.element !== element) {
|
|
538
564
|
this.element = element;
|
|
@@ -625,6 +651,9 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
625
651
|
|
|
626
652
|
/** @internal */
|
|
627
653
|
disconnected(): void {
|
|
654
|
+
// re-arming is what `reconnected` does; without this it would no-op
|
|
655
|
+
this._firstUpdated = false;
|
|
656
|
+
this._connection++;
|
|
628
657
|
if (!this.element) {
|
|
629
658
|
return;
|
|
630
659
|
}
|
|
@@ -638,7 +667,30 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
638
667
|
);
|
|
639
668
|
this.element = null;
|
|
640
669
|
this._deregisterOnStart?.();
|
|
670
|
+
this._deregisterOnStart = undefined;
|
|
641
671
|
this._deregisterOnStatesChanged?.();
|
|
672
|
+
this._deregisterOnStatesChanged = undefined;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Re-arms after a detach/re-attach; `update` only re-arms on a NEW element.
|
|
677
|
+
* @internal
|
|
678
|
+
*/
|
|
679
|
+
reconnected(): void {
|
|
680
|
+
this.element = this._partElement;
|
|
681
|
+
if (!this.element) {
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
684
|
+
// a same-element uiSref reconnects first; hold its target across the re-arm
|
|
685
|
+
const listening = !this._lastTargetStates && !this.state;
|
|
686
|
+
const retained = listening ? [...this.targetStates] : [];
|
|
687
|
+
this.firstUpdated({ targetStates: this._lastTargetStates });
|
|
688
|
+
retained.forEach((targetState) => this.targetStates.add(targetState));
|
|
689
|
+
// whatever is in flight either started, or was let go, while disconnected
|
|
690
|
+
const inFlight = this.uiRouter?.globals.transition;
|
|
691
|
+
if (inFlight) {
|
|
692
|
+
this.onTransitionStart(inFlight);
|
|
693
|
+
}
|
|
642
694
|
}
|
|
643
695
|
|
|
644
696
|
/** @internal */
|
|
@@ -661,8 +713,17 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
661
713
|
/** @internal */
|
|
662
714
|
onUiSrefTargetEvent = (event: UiSrefTargetEvent): void => {
|
|
663
715
|
const { targetState } = event.detail;
|
|
716
|
+
const previous = this._linkTargets.get(event.target);
|
|
717
|
+
if (previous) {
|
|
718
|
+
this.targetStates.delete(previous);
|
|
719
|
+
this.uiSrefs.delete(previous);
|
|
720
|
+
}
|
|
664
721
|
this.targetStates.add(targetState);
|
|
665
722
|
this.uiSrefs.set(targetState, event.target);
|
|
723
|
+
this._linkTargets.set(event.target, targetState);
|
|
724
|
+
if (this._firstUpdated) {
|
|
725
|
+
this.onStatesChanged();
|
|
726
|
+
}
|
|
666
727
|
};
|
|
667
728
|
|
|
668
729
|
/** @internal */
|
|
@@ -695,26 +756,20 @@ export class UiSrefActiveDirective extends AsyncDirective {
|
|
|
695
756
|
|
|
696
757
|
/** @internal */
|
|
697
758
|
onTransitionStart = (trans: Transition): void => {
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
)
|
|
759
|
+
// a settlement subscribed to before a disconnect stays quiet
|
|
760
|
+
const connection = this._connection;
|
|
761
|
+
const dispatch = (evt: TransitionStateChange): void => {
|
|
762
|
+
if (connection !== this._connection) {
|
|
763
|
+
return;
|
|
764
|
+
}
|
|
765
|
+
this.element?.dispatchEvent(
|
|
766
|
+
this.createTransitionStateChangeEvent(evt, trans),
|
|
767
|
+
);
|
|
768
|
+
};
|
|
769
|
+
dispatch(TransitionStateChange.start);
|
|
701
770
|
trans.promise.then(
|
|
702
|
-
() =>
|
|
703
|
-
|
|
704
|
-
this.createTransitionStateChangeEvent(
|
|
705
|
-
TransitionStateChange.success,
|
|
706
|
-
trans,
|
|
707
|
-
),
|
|
708
|
-
);
|
|
709
|
-
},
|
|
710
|
-
() => {
|
|
711
|
-
this.element!.dispatchEvent(
|
|
712
|
-
this.createTransitionStateChangeEvent(
|
|
713
|
-
TransitionStateChange.error,
|
|
714
|
-
trans,
|
|
715
|
-
),
|
|
716
|
-
);
|
|
717
|
-
},
|
|
771
|
+
() => dispatch(TransitionStateChange.success),
|
|
772
|
+
() => dispatch(TransitionStateChange.error),
|
|
718
773
|
);
|
|
719
774
|
};
|
|
720
775
|
|
package/src/ui-sref.ts
CHANGED
|
@@ -70,12 +70,13 @@ export function uiSrefTargetEvent(targetState: TargetState): UiSrefTargetEvent {
|
|
|
70
70
|
const paramsEqual = equals as (a: RawParams, b: RawParams) => boolean;
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
|
-
* Whether two target states
|
|
74
|
-
* `$state.target()` returns a fresh object every render, so identity is useless.
|
|
73
|
+
* Whether two target states resolve to the same definition with the same params.
|
|
75
74
|
* @internal
|
|
76
75
|
*/
|
|
77
76
|
function sameTarget(a: TargetState | null, b: TargetState): boolean {
|
|
78
|
-
return
|
|
77
|
+
return (
|
|
78
|
+
!!a && a.$state() === b.$state() && paramsEqual(a.params(), b.params())
|
|
79
|
+
);
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
/**
|
|
@@ -209,6 +210,12 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
209
210
|
/** @internal */
|
|
210
211
|
unsubscribe: (() => void) | undefined;
|
|
211
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Kept across a disconnect so {@link reconnected} can re-arm.
|
|
215
|
+
* @internal
|
|
216
|
+
*/
|
|
217
|
+
private _partElement: UiSrefElement | null = null;
|
|
218
|
+
|
|
212
219
|
/** @internal */
|
|
213
220
|
constructor(partInfo: PartInfo) {
|
|
214
221
|
super(partInfo);
|
|
@@ -343,6 +350,20 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
343
350
|
this.href = null;
|
|
344
351
|
this._ownsHref = false;
|
|
345
352
|
this.unsubscribe?.();
|
|
353
|
+
this.unsubscribe = undefined;
|
|
354
|
+
// re-arming is what `reconnected` does; without this it would no-op
|
|
355
|
+
this._firstUpdated = false;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Re-arms after a detach/re-attach; `update` only re-arms on a NEW element.
|
|
360
|
+
* @internal
|
|
361
|
+
*/
|
|
362
|
+
reconnected(): void {
|
|
363
|
+
this.element = this._partElement;
|
|
364
|
+
if (this.element) {
|
|
365
|
+
this.firstUpdated();
|
|
366
|
+
}
|
|
346
367
|
}
|
|
347
368
|
|
|
348
369
|
onClick = (event: MouseEvent): void => {
|
|
@@ -393,6 +414,7 @@ export class UiSrefDirective extends AsyncDirective {
|
|
|
393
414
|
this.options = transitionOptions;
|
|
394
415
|
this.uiSrefOptions = { assignHref };
|
|
395
416
|
const uiSrefElement = part.element as unknown as UiSrefElement;
|
|
417
|
+
this._partElement = uiSrefElement;
|
|
396
418
|
if (this.element !== uiSrefElement) {
|
|
397
419
|
this.element = uiSrefElement;
|
|
398
420
|
this._firstUpdated = false;
|
package/src/ui-view.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
1
|
+
import { LitElement, html } from 'lit';
|
|
2
2
|
import type { PropertyValues, TemplateResult } from 'lit';
|
|
3
3
|
import { property, state } from 'lit/decorators.js';
|
|
4
4
|
import {
|
|
@@ -51,6 +51,10 @@ type deregisterFn = () => void;
|
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* @hideconstructor
|
|
54
|
+
*
|
|
55
|
+
* @slot - <code><ui-view></code> renders slotted content as fallback
|
|
56
|
+
* whenever no routed component is active.
|
|
57
|
+
*
|
|
54
58
|
* @fires {CustomEvent} ui-router-context
|
|
55
59
|
*
|
|
56
60
|
* This event is fired to obtain the <code>uiRouter</code> instance,
|
|
@@ -89,7 +93,8 @@ export class UiView extends LitElement {
|
|
|
89
93
|
@state()
|
|
90
94
|
private component: RoutedLitTemplate | null = null;
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
/** Created on connect: the @lit-labs/ssr DOM shim has no `createDocumentFragment`. */
|
|
97
|
+
private inner?: DocumentFragment;
|
|
93
98
|
|
|
94
99
|
/** @internal */
|
|
95
100
|
createRenderRoot(): this {
|
|
@@ -190,18 +195,86 @@ export class UiView extends LitElement {
|
|
|
190
195
|
}
|
|
191
196
|
|
|
192
197
|
private readonly onUiRouterContextEvent = (event: UiRouterContextEvent) => {
|
|
198
|
+
// Answering our own re-seek would just hand back the router we are replacing.
|
|
199
|
+
if (this.seekingProvidedRouter) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
193
202
|
UIRouterLitElement.onUiRouterContextEvent(this.uiRouter)(event);
|
|
194
203
|
};
|
|
195
204
|
|
|
196
205
|
private seekRouter() {
|
|
197
|
-
|
|
206
|
+
if (!this.uiRouter) {
|
|
207
|
+
this.uiRouter = UIRouterLitElement.seekRouter(this)!;
|
|
208
|
+
// A sought router can be superseded; an app-provided one never is.
|
|
209
|
+
this.routerFromProvider = !!this.uiRouter;
|
|
210
|
+
}
|
|
198
211
|
this.addEventListener(
|
|
199
212
|
UIRouterLitElement.uiRouterContextEventName,
|
|
200
213
|
this.onUiRouterContextEvent as EventListener,
|
|
201
214
|
);
|
|
202
215
|
}
|
|
203
216
|
|
|
217
|
+
/** Whether `uiRouter` came from the context event rather than the app. */
|
|
218
|
+
private routerFromProvider = false;
|
|
219
|
+
|
|
220
|
+
/** The router this view registered with; a late upgrade can supersede it. */
|
|
221
|
+
private registeredRouter?: UIRouterLit;
|
|
222
|
+
|
|
223
|
+
/** Set only for the synchronous span of our own re-seek. */
|
|
224
|
+
private seekingProvidedRouter = false;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Seeks the provider's router, past our own answer.
|
|
228
|
+
*
|
|
229
|
+
* `<ui-view>` answers this event for descendants and stops it, deliberately —
|
|
230
|
+
* see `listener-identity.spec.ts`. Suppressing that for the span of our own
|
|
231
|
+
* dispatch keeps the guarantee intact for everyone else.
|
|
232
|
+
*/
|
|
233
|
+
private seekProvidedRouter(): UIRouterLit | undefined {
|
|
234
|
+
this.seekingProvidedRouter = true;
|
|
235
|
+
try {
|
|
236
|
+
return UIRouterLitElement.seekRouter(this);
|
|
237
|
+
} finally {
|
|
238
|
+
this.seekingProvidedRouter = false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Adopts the router the provider now offers, when this view registered
|
|
244
|
+
* without it.
|
|
245
|
+
*
|
|
246
|
+
* lit replays a pre-upgrade property inside the element's first update, not
|
|
247
|
+
* at upgrade, so `<ui-router>` can run `connectedCallback` with `uiRouter`
|
|
248
|
+
* still undefined and provide an instance of its own; a `<ui-view>`
|
|
249
|
+
* connecting in between registers with that one and never sees a transition.
|
|
250
|
+
* Firefox upgrades a detached subtree later than Chrome and WebKit, so
|
|
251
|
+
* declarative shadow DOM parsed off-document reaches this there first.
|
|
252
|
+
*
|
|
253
|
+
* `registerUIView` syncs, so the re-registered view picks up the current
|
|
254
|
+
* state without waiting for the next transition.
|
|
255
|
+
*/
|
|
256
|
+
private adoptProvidedRouter(): void {
|
|
257
|
+
const router = this.routerFromProvider
|
|
258
|
+
? this.seekProvidedRouter()
|
|
259
|
+
: this.uiRouter;
|
|
260
|
+
if (!router || router === this.registeredRouter) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
this.deregisterAll();
|
|
265
|
+
this.uiRouter = router;
|
|
266
|
+
this.setupUiView();
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
private deregisterAll(): void {
|
|
270
|
+
while (this.disconnectedHandlers.length) {
|
|
271
|
+
const handler = this.disconnectedHandlers.shift();
|
|
272
|
+
handler?.();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
204
276
|
private captureContent() {
|
|
277
|
+
this.inner ??= document.createDocumentFragment();
|
|
205
278
|
this.inner.append(...this.childNodes.values());
|
|
206
279
|
}
|
|
207
280
|
|
|
@@ -247,6 +320,7 @@ export class UiView extends LitElement {
|
|
|
247
320
|
this.disconnectedHandlers.push(
|
|
248
321
|
router.viewService.registerUIView(this._uiViewData),
|
|
249
322
|
);
|
|
323
|
+
this.registeredRouter = router;
|
|
250
324
|
}
|
|
251
325
|
|
|
252
326
|
/** @internal */
|
|
@@ -257,10 +331,7 @@ export class UiView extends LitElement {
|
|
|
257
331
|
this.onUiViewContextEvent as EventListener,
|
|
258
332
|
);
|
|
259
333
|
|
|
260
|
-
|
|
261
|
-
const handler = this.disconnectedHandlers.shift();
|
|
262
|
-
handler?.();
|
|
263
|
-
}
|
|
334
|
+
this.deregisterAll();
|
|
264
335
|
}
|
|
265
336
|
|
|
266
337
|
/**
|
|
@@ -377,6 +448,7 @@ export class UiView extends LitElement {
|
|
|
377
448
|
*/
|
|
378
449
|
protected firstUpdated(changed: PropertyValues): void {
|
|
379
450
|
super.firstUpdated(changed);
|
|
451
|
+
this.adoptProvidedRouter();
|
|
380
452
|
if (!this.uiRouter) {
|
|
381
453
|
warnMissingRouter(this, '<ui-view>', 'will never render a routed view');
|
|
382
454
|
}
|
|
@@ -385,7 +457,8 @@ export class UiView extends LitElement {
|
|
|
385
457
|
/** @internal */
|
|
386
458
|
render(): Node | TemplateResult {
|
|
387
459
|
if (!this.component || !this.viewAddress) {
|
|
388
|
-
|
|
460
|
+
// Never connected (server render): an empty declarative shadow root would hide the light DOM.
|
|
461
|
+
return this.inner?.cloneNode(true) ?? html`<slot></slot>`;
|
|
389
462
|
}
|
|
390
463
|
|
|
391
464
|
const { uiRouter: router } = this;
|