lit-ui-router 1.16.3 → 1.16.4

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.
@@ -3,8 +3,8 @@ import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { getScopedRouter } from "./context.js";
5
5
  import { warnMissingRouter } from "./dev-warn.js";
6
+ import { subscribeRouter } from "./router-subscription.js";
6
7
  import { resolveAriaCurrent, SrefTargets } from "./sref-status.js";
7
- import { UIRouterLitElement } from "./ui-router.js";
8
8
  import { UI_SREF_TARGET_EVENT, UI_SREF_TARGET_REMOVED_EVENT } from "./ui-sref.js";
9
9
  import { UiView } from "./ui-view.js";
10
10
  export class SrefStatusDirective extends AsyncDirective {
@@ -16,7 +16,16 @@ export class SrefStatusDirective extends AsyncDirective {
16
16
  this.targets = new SrefTargets();
17
17
  this._firstUpdated = false;
18
18
  this._deregister = [];
19
+ this._routerDeregister = [];
19
20
  this._connection = 0;
21
+ this.onRouterReplaced = (router) => {
22
+ this.unwatch();
23
+ this.uiRouter = router;
24
+ this.targets.router = router;
25
+ this.targets.rebuild();
26
+ this.watch(router);
27
+ this.refresh();
28
+ };
20
29
  this.onUiSrefTargetEvent = (event) => {
21
30
  this.targets.onLink(event);
22
31
  this.refresh();
@@ -74,7 +83,9 @@ export class SrefStatusDirective extends AsyncDirective {
74
83
  firstUpdated() {
75
84
  if (this._firstUpdated || !this.isConnected) return;
76
85
  const element = this.element;
77
- this.uiRouter = UIRouterLitElement.seekRouter(element);
86
+ const { router, unsubscribe } = subscribeRouter(element, this.onRouterReplaced);
87
+ this.uiRouter = router;
88
+ if (unsubscribe) this._deregister.push(unsubscribe);
78
89
  this.parentView = UiView.seekParentView(element);
79
90
  this.targets.router = this.uiRouter;
80
91
  this.targets.relative = this.parentView?.viewContext?.name;
@@ -85,19 +96,26 @@ export class SrefStatusDirective extends AsyncDirective {
85
96
  element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
86
97
  element.removeEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
87
98
  });
88
- const router = this.uiRouter;
89
- if (router) this._deregister.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
99
+ if (router) this.watch(router);
90
100
  else warnMissingRouter(element, `<${element.localName} ${this.attributeName}=\${${this.directiveName}(...)}>`, "will never be marked active");
91
101
  this._firstUpdated = true;
92
102
  this.refresh();
93
103
  }
104
+ watch(router) {
105
+ this._routerDeregister.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
106
+ }
107
+ unwatch() {
108
+ this._connection++;
109
+ this._routerDeregister.forEach((deregister) => deregister());
110
+ this._routerDeregister = [];
111
+ }
94
112
  refresh(event) {
95
113
  this.status = this.targets.status(event);
96
114
  const value = this.commit();
97
115
  if (value !== noChange && this.isConnected) this.setValue(value);
98
116
  }
99
117
  disconnected() {
100
- this._connection++;
118
+ this.unwatch();
101
119
  this._deregister.forEach((deregister) => deregister());
102
120
  this._deregister = [];
103
121
  this._firstUpdated = false;
@@ -1 +1 @@
1
- {"version":3,"file":"sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-active.ts"]}
1
+ {"version":3,"file":"sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-active.ts"]}
@@ -3,7 +3,7 @@ import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { getScopedRouter } from "./context.js";
5
5
  import { warnMissingRouter } from "./dev-warn.js";
6
- import { UIRouterLitElement } from "./ui-router.js";
6
+ import { subscribeRouter } from "./router-subscription.js";
7
7
  import { clickBelongsToBrowser, sameTarget, srefTransitionOptions, uiSrefTargetEvent, uiSrefTargetRemovedEvent } from "./sref-internals.js";
8
8
  import { UiView } from "./ui-view.js";
9
9
  export class SrefHrefDirective extends AsyncDirective {
@@ -18,6 +18,13 @@ export class SrefHrefDirective extends AsyncDirective {
18
18
  this.targetState = null;
19
19
  this._seekedRouter = false;
20
20
  this._firstUpdated = false;
21
+ this.onRouterReplaced = (router) => {
22
+ this._unsubscribeRouter = void 0;
23
+ this.unsubscribe?.();
24
+ this.uiRouter = router;
25
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
26
+ this.doRender();
27
+ };
21
28
  this.doRender = () => {
22
29
  const value = this.render(this.state, this.params, this.options);
23
30
  if (value !== noChange && this.isConnected) this.setValue(value);
@@ -67,7 +74,9 @@ export class SrefHrefDirective extends AsyncDirective {
67
74
  firstUpdated() {
68
75
  if (this._firstUpdated || !this.isConnected) return;
69
76
  const element = this.element;
70
- this.uiRouter = UIRouterLitElement.seekRouter(element);
77
+ const { router, unsubscribe } = subscribeRouter(element, this.onRouterReplaced);
78
+ this.uiRouter = router;
79
+ this._unsubscribeRouter = unsubscribe;
71
80
  this._seekedRouter = true;
72
81
  this.parentView = UiView.seekParentView(element);
73
82
  element.addEventListener("click", this.onClick);
@@ -86,6 +95,8 @@ export class SrefHrefDirective extends AsyncDirective {
86
95
  this.targetState = null;
87
96
  this.unsubscribe?.();
88
97
  this.unsubscribe = void 0;
98
+ this._unsubscribeRouter?.();
99
+ this._unsubscribeRouter = void 0;
89
100
  this._firstUpdated = false;
90
101
  }
91
102
  reconnected() {
@@ -1 +1 @@
1
- {"version":3,"file":"sref-href.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-href.ts"]}
1
+ {"version":3,"file":"sref-href.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-href.ts"]}
@@ -1,8 +1,8 @@
1
1
  import { noChange } from "lit";
2
2
  import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
- import { UIRouterLitElement } from "./ui-router.js";
5
4
  import { inLitDevMode, warnMissingRouter } from "./dev-warn.js";
5
+ import { subscribeRouter } from "./router-subscription.js";
6
6
  import { isNativeLink, mergeSrefStatus, srefStatus, toAriaCurrentValues, UI_SREF_TARGET_EVENT } from "./sref-internals.js";
7
7
  import { UiView } from "./ui-view.js";
8
8
  export { mergeSrefStatus, srefStatus } from "./sref-internals.js";
@@ -17,7 +17,10 @@ const isLinkElement = (element) => isNativeLink(element) || element.matches("[ro
17
17
  let _first = null;
18
18
  export class UiSrefActiveDirective extends AsyncDirective {
19
19
  seekRouter() {
20
- this.uiRouter = UIRouterLitElement.seekRouter(this.element);
20
+ this._unsubscribeRouter?.();
21
+ const { router, unsubscribe } = subscribeRouter(this.element, this.onRouterReplaced);
22
+ this.uiRouter = router;
23
+ this._unsubscribeRouter = unsubscribe;
21
24
  }
22
25
  seekParentView() {
23
26
  this.parentView = UiView.seekParentView(this.element);
@@ -46,6 +49,17 @@ export class UiSrefActiveDirective extends AsyncDirective {
46
49
  });
47
50
  };
48
51
  this._firstUpdated = false;
52
+ this.onRouterReplaced = (router) => {
53
+ this._unsubscribeRouter = void 0;
54
+ this.unwatch();
55
+ this.uiRouter = router;
56
+ if (!this._lastTargetStates && this.state) {
57
+ this.targetStates.clear();
58
+ this.targetStates.add(this.explicitTarget(router, this.state));
59
+ }
60
+ this.watch(router);
61
+ this.onStatesChanged();
62
+ };
49
63
  this.onUiSrefTargetEvent = (event) => {
50
64
  const { targetState } = event.detail;
51
65
  const previous = this._linkTargets.get(event.target);
@@ -159,13 +173,10 @@ export class UiSrefActiveDirective extends AsyncDirective {
159
173
  this.targetStates.add(targetState);
160
174
  });
161
175
  else if (this.state) {
162
- if (this.uiRouter) this.targetStates.add(this.uiRouter.stateService.target(this.state, this.params, this.getOptions()));
176
+ if (this.uiRouter) this.targetStates.add(this.explicitTarget(this.uiRouter, this.state));
163
177
  } else this.element.addEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
164
178
  this.element.addEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
165
- if (this.uiRouter) {
166
- this._deregisterOnStart = this.uiRouter.transitionService.onStart({}, this.onTransitionStart);
167
- this._deregisterOnStatesChanged = this.uiRouter.stateRegistry.onStatesChanged(this.onStatesChanged);
168
- }
179
+ if (this.uiRouter) this.watch(this.uiRouter);
169
180
  setTimeout(() => {
170
181
  if (this.targetStates.size) {
171
182
  const { active, exact } = this.getStatus() || {};
@@ -176,17 +187,29 @@ export class UiSrefActiveDirective extends AsyncDirective {
176
187
  }, 0);
177
188
  this._firstUpdated = true;
178
189
  }
190
+ explicitTarget(router, state) {
191
+ return router.stateService.target(state, this.params, this.getOptions());
192
+ }
193
+ watch(router) {
194
+ this._deregisterOnStart = router.transitionService.onStart({}, this.onTransitionStart);
195
+ this._deregisterOnStatesChanged = router.stateRegistry.onStatesChanged(this.onStatesChanged);
196
+ }
197
+ unwatch() {
198
+ this._connection++;
199
+ this._deregisterOnStart?.();
200
+ this._deregisterOnStart = void 0;
201
+ this._deregisterOnStatesChanged?.();
202
+ this._deregisterOnStatesChanged = void 0;
203
+ }
179
204
  disconnected() {
180
205
  this._firstUpdated = false;
181
- this._connection++;
206
+ this.unwatch();
207
+ this._unsubscribeRouter?.();
208
+ this._unsubscribeRouter = void 0;
182
209
  if (!this.element) return;
183
210
  this.element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
184
211
  this.element.removeEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
185
212
  this.element = null;
186
- this._deregisterOnStart?.();
187
- this._deregisterOnStart = void 0;
188
- this._deregisterOnStatesChanged?.();
189
- this._deregisterOnStatesChanged = void 0;
190
213
  }
191
214
  reconnected() {
192
215
  this.element = this._partElement;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref-active.ts"]}
1
+ {"version":3,"file":"ui-sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref-active.ts"]}
@@ -2,7 +2,7 @@ import { noChange } from "lit";
2
2
  import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { inLitDevMode, warnMissingRouter } from "./dev-warn.js";
5
- import { UIRouterLitElement } from "./ui-router.js";
5
+ import { subscribeRouter } from "./router-subscription.js";
6
6
  import { UiView } from "./ui-view.js";
7
7
  import { clickBelongsToBrowser, isNativeLink, sameTarget, srefTransitionOptions, uiSrefTargetEvent, uiSrefTargetRemovedEvent } from "./sref-internals.js";
8
8
  export { inLitDevMode };
@@ -23,6 +23,13 @@ export class UiSrefDirective extends AsyncDirective {
23
23
  this._ownsHref = false;
24
24
  this._seekedRouter = false;
25
25
  this._partElement = null;
26
+ this.onRouterReplaced = (router) => {
27
+ this._unsubscribeRouter = void 0;
28
+ this.unsubscribe?.();
29
+ this.uiRouter = router;
30
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
31
+ this.doRender();
32
+ };
26
33
  this.onClick = (event) => {
27
34
  const { uiRouter: router, state, params } = this;
28
35
  const options = this.getOptions();
@@ -85,7 +92,10 @@ export class UiSrefDirective extends AsyncDirective {
85
92
  return true;
86
93
  }
87
94
  seekRouter() {
88
- this.uiRouter = UIRouterLitElement.seekRouter(this.element);
95
+ this._unsubscribeRouter?.();
96
+ const { router, unsubscribe } = subscribeRouter(this.element, this.onRouterReplaced);
97
+ this.uiRouter = router;
98
+ this._unsubscribeRouter = unsubscribe;
89
99
  this._seekedRouter = true;
90
100
  }
91
101
  warnMissingRouter(state) {
@@ -104,6 +114,8 @@ export class UiSrefDirective extends AsyncDirective {
104
114
  this._ownsHref = false;
105
115
  this.unsubscribe?.();
106
116
  this.unsubscribe = void 0;
117
+ this._unsubscribeRouter?.();
118
+ this._unsubscribeRouter = void 0;
107
119
  this._firstUpdated = false;
108
120
  }
109
121
  reconnected() {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref.ts"]}
1
+ {"version":3,"file":"ui-sref.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-sref.ts"]}
@@ -59,6 +59,8 @@ export declare abstract class SrefStatusDirective<
59
59
  protected readonly targets: SrefTargets;
60
60
  private _firstUpdated;
61
61
  private _deregister;
62
+ /** the hooks on the router itself, which a replacement router moves */
63
+ private _routerDeregister;
62
64
  /** bumped on disconnect, so a settlement subscribed before it stays quiet */
63
65
  private _connection;
64
66
  /** the attribute this directive is bound in, for warnings */
@@ -93,6 +95,10 @@ export declare abstract class SrefStatusDirective<
93
95
  update(part: AttributePart, [params]: [Params]): Rendered | typeof noChange;
94
96
  /** @internal */
95
97
  firstUpdated(): void;
98
+ private watch;
99
+ private unwatch;
100
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
101
+ private readonly onRouterReplaced;
96
102
  /** @internal */
97
103
  onUiSrefTargetEvent: (event: UiSrefTargetEvent) => void;
98
104
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"sref-active.d.ts","mappings":"AAAA,SAAS,WAAW,YAAY,yBAAyB;AACzD,SAAS,UAAU,SAAS,qBAAqB;AACjD,SAGE,gBAEK;AACP,cAAc,uBAAuB;AACrC,cAAc,iBAAiB;AAC/B,SAAS,sBAAsB;AAG/B,SAAS,mBAAmB;AAE5B,SAA6B,mBAAmB;AAEhD,SAGE,yBACK;AACP,SACE,kBACA,mBACA,YACA,gBACK;AACP,cAAc,kBAAkB;;;;;;;;AAUhC,iBAAiB,iBAAiB;;CAEhC;;CAEA,SAAS;;CAET,UAAU;AACZ;;;;;;;;;;;;;;AAiBA,OAAO,uBAAe;CACpB,eAAe;CACf;UACQ,eAAe;CAiCrB;;CA/BF,SAAS;;CAET,UAAU;;CAEV,YAAY;;CAGZ,QAAQ;;CAER,QAAQ;;;;;CAMR,mBAAmB,SAAS;CAE5B,QAAQ;CACR,QAAQ;;CAER,QAAQ;;CAGR,iBAAiB;;;;;CAMjB,YACE,UAAU,UACV,AAAmB;;CAcrB,SAAS,OAAO,QAAQ,SAAS;;;;;;;CAQjC,mBAAmB,UAAU;;;;;;;;;;;;CAa7B,UAAU,gBAAgB,QAAQ,SAAS;;CAc3C,OAAO,MAAM,eAAe,CAAC,UAAU,UAAU,kBAAkB;;CAuBnE;;CAyDA,sBAAuB,OAAO;;CAM9B,6BAA8B,OAAO;;;;;;;CAYrC;;CAMA,oBAAqB,OAAO;;;;;;CAuB5B,QAAQ,QAAQ;;CAUhB;;CAQA;AAOF;;;;;;AAOA,iBAAiB,8BAA8B,iBAAiB;;CAE9D;;CAEA;;;;;;;;CAQA,UAAU;AACZ;;;;;;;;;;;;;;;;;AAkBA,OAAO,cAAM,iCAAiC,oBAC5C,uCACgB,UAChB;;CAEA,QAAQ;;CAER,QAAQ;;CAGR,YAAY,UAAU;;CAatB,QAAQ;;;;;CA2BR,OAAO,QAAQ,wCAAwC;;CAmBvD,OACE,MAAM,eACN,OAAO,yCACU;;CAcnB,UAAU,0BAA0B;AA+CtC;;;;;;AAOA,iBAAiB,8BAA8B,iBAAiB;;;;;;CAM9D,QAAQ,mBAAmB;AAC7B;;;;;;;;;AAUA,OAAO,cAAM,iCAAiC,oBAC5C,uBACA,0BAA0B,iBAAiB,UAC3C;;CAEA,QAAQ;;CAGR,YAAY,UAAU;;CAYtB,UAAU,UAAU,0BAA0B,iBAAiB;;;;;CAc/D,OACE,QAAQ,wBACP,0BAA0B,iBAAiB;AAShD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,OAAO,cAAM,kBACX,QAAQ,0BACL,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B5B,OAAO,cAAM,kBACX,QAAQ,0BACL,uBAAuB","names":[],"ignoreList":[],"sources":["../src/sref-active.ts"]}
1
+ {"version":3,"file":"sref-active.d.ts","mappings":"AAAA,SAAS,WAAW,YAAY,yBAAyB;AACzD,SAAS,UAAU,SAAS,qBAAqB;AACjD,SAGE,gBAEK;AACP,cAAc,uBAAuB;AACrC,cAAc,iBAAiB;AAC/B,SAAS,sBAAsB;AAG/B,SAAS,mBAAmB;AAG5B,SAA6B,mBAAmB;AAChD,SAGE,yBACK;AACP,SACE,kBACA,mBACA,YACA,gBACK;AACP,cAAc,kBAAkB;;;;;;;;AAUhC,iBAAiB,iBAAiB;;CAEhC;;CAEA,SAAS;;CAET,UAAU;AACZ;;;;;;;;;;;;;;AAiBA,OAAO,uBAAe;CACpB,eAAe;CACf;UACQ,eAAe;CAmCrB;;CAjCF,SAAS;;CAET,UAAU;;CAEV,YAAY;;CAGZ,QAAQ;;CAER,QAAQ;;;;;CAMR,mBAAmB,SAAS;CAE5B,QAAQ;CACR,QAAQ;;CAER,QAAQ;;CAER,QAAQ;;CAGR,iBAAiB;;;;;CAMjB,YACE,UAAU,UACV,AAAmB;;CAcrB,SAAS,OAAO,QAAQ,SAAS;;;;;;;CAQjC,mBAAmB,UAAU;;;;;;;;;;;;CAa7B,UAAU,gBAAgB,QAAQ,SAAS;;CAc3C,OAAO,MAAM,eAAe,CAAC,UAAU,UAAU,kBAAkB;;CAuBnE;CA2DA,QAAQ;CAUR,QAAQ;;CAOR,iBAAiB;;CAUjB,sBAAuB,OAAO;;CAM9B,6BAA8B,OAAO;;;;;;;CAYrC;;CAMA,oBAAqB,OAAO;;;;;;CAuB5B,QAAQ,QAAQ;;CAUhB;;CAQA;AAOF;;;;;;AAOA,iBAAiB,8BAA8B,iBAAiB;;CAE9D;;CAEA;;;;;;;;CAQA,UAAU;AACZ;;;;;;;;;;;;;;;;;AAkBA,OAAO,cAAM,iCAAiC,oBAC5C,uCACgB,UAChB;;CAEA,QAAQ;;CAER,QAAQ;;CAGR,YAAY,UAAU;;CAatB,QAAQ;;;;;CA2BR,OAAO,QAAQ,wCAAwC;;CAmBvD,OACE,MAAM,eACN,OAAO,yCACU;;CAcnB,UAAU,0BAA0B;AA+CtC;;;;;;AAOA,iBAAiB,8BAA8B,iBAAiB;;;;;;CAM9D,QAAQ,mBAAmB;AAC7B;;;;;;;;;AAUA,OAAO,cAAM,iCAAiC,oBAC5C,uBACA,0BAA0B,iBAAiB,UAC3C;;CAEA,QAAQ;;CAGR,YAAY,UAAU;;CAYtB,UAAU,UAAU,0BAA0B,iBAAiB;;;;;CAc/D,OACE,QAAQ,wBACP,0BAA0B,iBAAiB;AAShD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,OAAO,cAAM,kBACX,QAAQ,0BACL,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B5B,OAAO,cAAM,kBACX,QAAQ,0BACL,uBAAuB","names":[],"ignoreList":[],"sources":["../src/sref-active.ts"]}
@@ -3,8 +3,8 @@ import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { getScopedRouter } from "./context.js";
5
5
  import { warnMissingRouter } from "./dev-warn.js";
6
+ import { subscribeRouter } from "./router-subscription.js";
6
7
  import { resolveAriaCurrent, SrefTargets } from "./sref-status.js";
7
- import { UIRouterLitElement } from "./ui-router.js";
8
8
  import { UI_SREF_TARGET_EVENT, UI_SREF_TARGET_REMOVED_EVENT } from "./ui-sref.js";
9
9
  import { UiView } from "./ui-view.js";
10
10
  export class SrefStatusDirective extends AsyncDirective {
@@ -16,7 +16,16 @@ export class SrefStatusDirective extends AsyncDirective {
16
16
  this.targets = new SrefTargets();
17
17
  this._firstUpdated = false;
18
18
  this._deregister = [];
19
+ this._routerDeregister = [];
19
20
  this._connection = 0;
21
+ this.onRouterReplaced = (router) => {
22
+ this.unwatch();
23
+ this.uiRouter = router;
24
+ this.targets.router = router;
25
+ this.targets.rebuild();
26
+ this.watch(router);
27
+ this.refresh();
28
+ };
20
29
  this.onUiSrefTargetEvent = (event) => {
21
30
  this.targets.onLink(event);
22
31
  this.refresh();
@@ -74,7 +83,9 @@ export class SrefStatusDirective extends AsyncDirective {
74
83
  firstUpdated() {
75
84
  if (this._firstUpdated || !this.isConnected) return;
76
85
  const element = this.element;
77
- this.uiRouter = UIRouterLitElement.seekRouter(element);
86
+ const { router, unsubscribe } = subscribeRouter(element, this.onRouterReplaced);
87
+ this.uiRouter = router;
88
+ if (unsubscribe) this._deregister.push(unsubscribe);
78
89
  this.parentView = UiView.seekParentView(element);
79
90
  this.targets.router = this.uiRouter;
80
91
  this.targets.relative = this.parentView?.viewContext?.name;
@@ -85,19 +96,26 @@ export class SrefStatusDirective extends AsyncDirective {
85
96
  element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
86
97
  element.removeEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
87
98
  });
88
- const router = this.uiRouter;
89
- if (router) this._deregister.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
99
+ if (router) this.watch(router);
90
100
  else warnMissingRouter(element, `<${element.localName} ${this.attributeName}=\${${this.directiveName}(...)}>`, "will never be marked active");
91
101
  this._firstUpdated = true;
92
102
  this.refresh();
93
103
  }
104
+ watch(router) {
105
+ this._routerDeregister.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
106
+ }
107
+ unwatch() {
108
+ this._connection++;
109
+ this._routerDeregister.forEach((deregister) => deregister());
110
+ this._routerDeregister = [];
111
+ }
94
112
  refresh(event) {
95
113
  this.status = this.targets.status(event);
96
114
  const value = this.commit();
97
115
  if (value !== noChange && this.isConnected) this.setValue(value);
98
116
  }
99
117
  disconnected() {
100
- this._connection++;
118
+ this.unwatch();
101
119
  this._deregister.forEach((deregister) => deregister());
102
120
  this._deregister = [];
103
121
  this._firstUpdated = false;
@@ -1 +1 @@
1
- {"version":3,"file":"sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/sref-active.ts"]}
1
+ {"version":3,"file":"sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/sref-active.ts"]}
@@ -43,6 +43,8 @@ export declare class SrefHrefDirective extends AsyncDirective {
43
43
  private _firstUpdated;
44
44
  /** @internal */
45
45
  unsubscribe: (() => void) | undefined;
46
+ /** drops the subscription to a provider that may still replace its router */
47
+ private _unsubscribeRouter;
46
48
  /** @internal */
47
49
  constructor(partInfo: PartInfo);
48
50
  /** @internal */
@@ -60,6 +62,8 @@ export declare class SrefHrefDirective extends AsyncDirective {
60
62
  update(part: AttributePart, [state, params, options]: [string, RawParams?, TransitionOptions?]): ReturnType<SrefHrefDirective["render"]>;
61
63
  /** @internal */
62
64
  firstUpdated(): void;
65
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
66
+ private readonly onRouterReplaced;
63
67
  /** @internal */
64
68
  doRender: () => void;
65
69
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"sref-href.d.ts","mappings":"AAAA,SAAS,WAAW,aAAa,yBAAyB;AAC1D,SAAS,UAAU,SAAS,qBAAqB;AACjD,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAG/B,SAAS,mBAAmB;AAU5B,cAAc,kBAAkB;;;;;;;;;;;;;;;;;AAmBhC,OAAO,cAAM,0BAA0B,eAAe;;CAEpD;;CAEA,QAAQ;;CAER,SAAS;;CAGT,SAAS;;CAGT,UAAU;;CAEV,YAAY;;CAGZ;;CAEA,aAAa;;CAGb,QAAQ;CACR,QAAQ;;CAGR;;CAGA,YAAY,UAAU;;CActB,WAAW,OAAM,oBAAmC;;;;;;;;;CAYpD,OACE,eACA,SAAS,WACT,UAAU,oCACO,iBAAiB;;CA4BpC,OACE,MAAM,eACN,CAAC,OAAO,QAAa,mBAEnB,YACA,sBAED,WAAW,kBAAkB;;CAkBhC;;CAyBA;;CASA,UAAW,OAAO;CAsBlB,QAAQ;;CAYR;;CAaA;AAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,OAAO,cAAM,WACX,eACA,SAAS,WACT,UAAU,sBACP,uBAAuB","names":[],"ignoreList":[],"sources":["../src/sref-href.ts"]}
1
+ {"version":3,"file":"sref-href.d.ts","mappings":"AAAA,SAAS,WAAW,aAAa,yBAAyB;AAC1D,SAAS,UAAU,SAAS,qBAAqB;AACjD,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAG/B,SAAS,mBAAmB;AAU5B,cAAc,kBAAkB;;;;;;;;;;;;;;;;;AAmBhC,OAAO,cAAM,0BAA0B,eAAe;;CAEpD;;CAEA,QAAQ;;CAER,SAAS;;CAGT,SAAS;;CAGT,UAAU;;CAEV,YAAY;;CAGZ;;CAEA,aAAa;;CAGb,QAAQ;CACR,QAAQ;;CAGR;;CAGA,QAAQ;;CAGR,YAAY,UAAU;;CActB,WAAW,OAAM,oBAAmC;;;;;;;;;CAYpD,OACE,eACA,SAAS,WACT,UAAU,oCACO,iBAAiB;;CA4BpC,OACE,MAAM,eACN,CAAC,OAAO,QAAa,mBAEnB,YACA,sBAED,WAAW,kBAAkB;;CAkBhC;;CAgCA,iBAAiB;;CASjB;;CASA,UAAW,OAAO;CAsBlB,QAAQ;;CAYR;;CAeA;AAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,OAAO,cAAM,WACX,eACA,SAAS,WACT,UAAU,sBACP,uBAAuB","names":[],"ignoreList":[],"sources":["../src/sref-href.ts"]}
package/dist/sref-href.js CHANGED
@@ -3,7 +3,7 @@ import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { getScopedRouter } from "./context.js";
5
5
  import { warnMissingRouter } from "./dev-warn.js";
6
- import { UIRouterLitElement } from "./ui-router.js";
6
+ import { subscribeRouter } from "./router-subscription.js";
7
7
  import { clickBelongsToBrowser, sameTarget, srefTransitionOptions, uiSrefTargetEvent, uiSrefTargetRemovedEvent } from "./sref-internals.js";
8
8
  import { UiView } from "./ui-view.js";
9
9
  export class SrefHrefDirective extends AsyncDirective {
@@ -18,6 +18,13 @@ export class SrefHrefDirective extends AsyncDirective {
18
18
  this.targetState = null;
19
19
  this._seekedRouter = false;
20
20
  this._firstUpdated = false;
21
+ this.onRouterReplaced = (router) => {
22
+ this._unsubscribeRouter = void 0;
23
+ this.unsubscribe?.();
24
+ this.uiRouter = router;
25
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
26
+ this.doRender();
27
+ };
21
28
  this.doRender = () => {
22
29
  const value = this.render(this.state, this.params, this.options);
23
30
  if (value !== noChange && this.isConnected) this.setValue(value);
@@ -67,7 +74,9 @@ export class SrefHrefDirective extends AsyncDirective {
67
74
  firstUpdated() {
68
75
  if (this._firstUpdated || !this.isConnected) return;
69
76
  const element = this.element;
70
- this.uiRouter = UIRouterLitElement.seekRouter(element);
77
+ const { router, unsubscribe } = subscribeRouter(element, this.onRouterReplaced);
78
+ this.uiRouter = router;
79
+ this._unsubscribeRouter = unsubscribe;
71
80
  this._seekedRouter = true;
72
81
  this.parentView = UiView.seekParentView(element);
73
82
  element.addEventListener("click", this.onClick);
@@ -86,6 +95,8 @@ export class SrefHrefDirective extends AsyncDirective {
86
95
  this.targetState = null;
87
96
  this.unsubscribe?.();
88
97
  this.unsubscribe = void 0;
98
+ this._unsubscribeRouter?.();
99
+ this._unsubscribeRouter = void 0;
89
100
  this._firstUpdated = false;
90
101
  }
91
102
  reconnected() {
@@ -1 +1 @@
1
- {"version":3,"file":"sref-href.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/sref-href.ts"]}
1
+ {"version":3,"file":"sref-href.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/sref-href.ts"]}
@@ -158,6 +158,8 @@ export declare class UiSrefActiveDirective extends AsyncDirective {
158
158
  uiRouter: UIRouterLit | undefined;
159
159
  /** @internal */
160
160
  seekRouter(): void;
161
+ /** drops the subscription to a provider that may still replace its router */
162
+ private _unsubscribeRouter;
161
163
  /** @internal */
162
164
  parentView: ParentView | null;
163
165
  /** @internal */
@@ -280,6 +282,11 @@ export declare class UiSrefActiveDirective extends AsyncDirective {
280
282
  _firstUpdated: boolean;
281
283
  /** @internal */
282
284
  firstUpdated({ targetStates }: Partial<UiSrefActiveParams>): void;
285
+ private explicitTarget;
286
+ private watch;
287
+ private unwatch;
288
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
289
+ private readonly onRouterReplaced;
283
290
  /** @internal */
284
291
  disconnected(): void;
285
292
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref-active.d.ts","mappings":"AAAA,SACE,WACA,aACA,YACA,yBACK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAG5B,SAKE,eACA,yBAEK;AACP,cAAc,kBAAkB;AAGhC;;;;;CAKE;;;;;CAKA,kBACK;;AAGP,iBAAiB,SAAS;CACxB;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;;;;;;;;;AAUA,YAAY,mBACR,SACA,SACA,aACA,SACA,SACA;;;;;;;;;;;;;;AAeJ,iBAAiB,kBAAkB;;CAEjC,QAAQ,mBAAmB;;;;;CAK3B,SAAS,mBAAmB;AAC9B;;;;;;;;AAuBA,iBAAiB,mBAAmB;;CAElC;;CAEA;;;;;;;;;;;;;;;;;;CAkBA,mBAAmB,mBAAmB,QAAQ;;CAE9C;;CAEA,SAAS;;CAET,UAAU;;CAEV,cAAc;AAChB;KAKK;;;;;;;;;;;;;;;;;;AAmBL,OAAO,cAAM,8BAA8B,eAAe;;CAExD,SAAS;;CAGT,UAAU;;CAEV;;CAKA,YAAY;;CAEZ;;CAKA;;CAEA;;CAEA,kBAAkB,mBAAmB,QAAQ;;;;;;;CAO7C,QAAQ;;;;;;;;CAQR,QAAQ;;CAGR;;CAEA,QAAQ;;CAER,SAAS;;CAGT;;CAEA;;CAEA;;CAEA;;CAGA,cAAc,IAAI;;CAElB,SAAS,QAAQ,aAAa;;;;;CAS9B,iBAAiB;;CAGjB,oBAAoB;;CAEpB,4BAA4B;;;;;CAM5B,QAAQ;;;;;CAMR,QAAQ;;;;;CAMR,QAAQ;;CAGR,YAAY,UAAU;;CAatB,OAAO,EACL,eACA,cACA,oBACC,QAAQ,6BAA6B;;;;;;;;;;;CAoCxC,QAAQ;;;;;;;;;CAsBR,QAAQ;;;;;;;;;;;;CA+BR,QAAQ;;CAuBR,cAAc;;;;;;;;;CAgBd,cACE,OAAO,sBACP,YAAY,cACX;;CAKH,AAAM,OACJ,MAAM,aACN,CACE,EACE,eACA,cACA,kBACA,OACA,QACA,SACA,kBAEA,sBACH;;CAkCH,uBAAsB;;CAStB;;CAEA,aAAa,EAAE,gBAAgB,QAAQ;;CA+DvC;;;;;CA6BA;;CAqBA,iCACE,KAAK,uBACL,OAAO,aACN,YAAY;;CAef,sBAAuB,OAAO;;CAmB9B,0BAA2B,GAAG;;CAkB9B,UAAU,WAAW,WAAW;;CAiBhC,oBAAqB,OAAO;;CAsB5B;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0HA,OAAO,cAAM,eACX,QAAQ,QAAQ,wBACb,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref-active.ts"]}
1
+ {"version":3,"file":"ui-sref-active.d.ts","mappings":"AAAA,SACE,WACA,aACA,YACA,yBACK;AACP,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAG5B,SAKE,eACA,yBAEK;AACP,cAAc,kBAAkB;AAGhC;;;;;CAKE;;;;;CAKA,kBACK;;AAGP,iBAAiB,SAAS;CACxB;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;;;;;;;;;AAUA,YAAY,mBACR,SACA,SACA,aACA,SACA,SACA;;;;;;;;;;;;;;AAeJ,iBAAiB,kBAAkB;;CAEjC,QAAQ,mBAAmB;;;;;CAK3B,SAAS,mBAAmB;AAC9B;;;;;;;;AAuBA,iBAAiB,mBAAmB;;CAElC;;CAEA;;;;;;;;;;;;;;;;;;CAkBA,mBAAmB,mBAAmB,QAAQ;;CAE9C;;CAEA,SAAS;;CAET,UAAU;;CAEV,cAAc;AAChB;KAKK;;;;;;;;;;;;;;;;;;AAmBL,OAAO,cAAM,8BAA8B,eAAe;;CAExD,SAAS;;CAGT,UAAU;;CAEV;;CAaA,QAAQ;;CAGR,YAAY;;CAEZ;;CAKA;;CAEA;;CAEA,kBAAkB,mBAAmB,QAAQ;;;;;;;CAO7C,QAAQ;;;;;;;;CAQR,QAAQ;;CAGR;;CAEA,QAAQ;;CAER,SAAS;;CAGT;;CAEA;;CAEA;;CAEA;;CAGA,cAAc,IAAI;;CAElB,SAAS,QAAQ,aAAa;;;;;CAS9B,iBAAiB;;CAGjB,oBAAoB;;CAEpB,4BAA4B;;;;;CAM5B,QAAQ;;;;;CAMR,QAAQ;;;;;CAMR,QAAQ;;CAGR,YAAY,UAAU;;CAatB,OAAO,EACL,eACA,cACA,oBACC,QAAQ,6BAA6B;;;;;;;;;;;CAoCxC,QAAQ;;;;;;;;;CAsBR,QAAQ;;;;;;;;;;;;CA+BR,QAAQ;;CAuBR,cAAc;;;;;;;;;CAgBd,cACE,OAAO,sBACP,YAAY,cACX;;CAKH,AAAM,OACJ,MAAM,aACN,CACE,EACE,eACA,cACA,kBACA,OACA,QACA,SACA,kBAEA,sBACH;;CAkCH,uBAAsB;;CAStB;;CAEA,aAAa,EAAE,gBAAgB,QAAQ;CAkDvC,QAAQ;CAIR,QAAQ;CAWR,QAAQ;;CASR,iBAAiB;;CAejB;;;;;CA2BA;;CAqBA,iCACE,KAAK,uBACL,OAAO,aACN,YAAY;;CAef,sBAAuB,OAAO;;CAmB9B,0BAA2B,GAAG;;CAkB9B,UAAU,WAAW,WAAW;;CAiBhC,oBAAqB,OAAO;;CAsB5B;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0HA,OAAO,cAAM,eACX,QAAQ,QAAQ,wBACb,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref-active.ts"]}
@@ -1,8 +1,8 @@
1
1
  import { noChange } from "lit";
2
2
  import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
- import { UIRouterLitElement } from "./ui-router.js";
5
4
  import { warnMissingRouter } from "./dev-warn.js";
5
+ import { subscribeRouter } from "./router-subscription.js";
6
6
  import { isNativeLink, mergeSrefStatus, srefStatus, toAriaCurrentValues, UI_SREF_TARGET_EVENT } from "./sref-internals.js";
7
7
  import { UiView } from "./ui-view.js";
8
8
  export { mergeSrefStatus, srefStatus } from "./sref-internals.js";
@@ -17,7 +17,10 @@ const isLinkElement = (element) => isNativeLink(element) || element.matches("[ro
17
17
  let _first = null;
18
18
  export class UiSrefActiveDirective extends AsyncDirective {
19
19
  seekRouter() {
20
- this.uiRouter = UIRouterLitElement.seekRouter(this.element);
20
+ this._unsubscribeRouter?.();
21
+ const { router, unsubscribe } = subscribeRouter(this.element, this.onRouterReplaced);
22
+ this.uiRouter = router;
23
+ this._unsubscribeRouter = unsubscribe;
21
24
  }
22
25
  seekParentView() {
23
26
  this.parentView = UiView.seekParentView(this.element);
@@ -46,6 +49,17 @@ export class UiSrefActiveDirective extends AsyncDirective {
46
49
  });
47
50
  };
48
51
  this._firstUpdated = false;
52
+ this.onRouterReplaced = (router) => {
53
+ this._unsubscribeRouter = void 0;
54
+ this.unwatch();
55
+ this.uiRouter = router;
56
+ if (!this._lastTargetStates && this.state) {
57
+ this.targetStates.clear();
58
+ this.targetStates.add(this.explicitTarget(router, this.state));
59
+ }
60
+ this.watch(router);
61
+ this.onStatesChanged();
62
+ };
49
63
  this.onUiSrefTargetEvent = (event) => {
50
64
  const { targetState } = event.detail;
51
65
  const previous = this._linkTargets.get(event.target);
@@ -154,13 +168,10 @@ export class UiSrefActiveDirective extends AsyncDirective {
154
168
  this.targetStates.add(targetState);
155
169
  });
156
170
  else if (this.state) {
157
- if (this.uiRouter) this.targetStates.add(this.uiRouter.stateService.target(this.state, this.params, this.getOptions()));
171
+ if (this.uiRouter) this.targetStates.add(this.explicitTarget(this.uiRouter, this.state));
158
172
  } else this.element.addEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
159
173
  this.element.addEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
160
- if (this.uiRouter) {
161
- this._deregisterOnStart = this.uiRouter.transitionService.onStart({}, this.onTransitionStart);
162
- this._deregisterOnStatesChanged = this.uiRouter.stateRegistry.onStatesChanged(this.onStatesChanged);
163
- }
174
+ if (this.uiRouter) this.watch(this.uiRouter);
164
175
  setTimeout(() => {
165
176
  if (this.targetStates.size) {
166
177
  const { active, exact } = this.getStatus() || {};
@@ -171,17 +182,29 @@ export class UiSrefActiveDirective extends AsyncDirective {
171
182
  }, 0);
172
183
  this._firstUpdated = true;
173
184
  }
185
+ explicitTarget(router, state) {
186
+ return router.stateService.target(state, this.params, this.getOptions());
187
+ }
188
+ watch(router) {
189
+ this._deregisterOnStart = router.transitionService.onStart({}, this.onTransitionStart);
190
+ this._deregisterOnStatesChanged = router.stateRegistry.onStatesChanged(this.onStatesChanged);
191
+ }
192
+ unwatch() {
193
+ this._connection++;
194
+ this._deregisterOnStart?.();
195
+ this._deregisterOnStart = void 0;
196
+ this._deregisterOnStatesChanged?.();
197
+ this._deregisterOnStatesChanged = void 0;
198
+ }
174
199
  disconnected() {
175
200
  this._firstUpdated = false;
176
- this._connection++;
201
+ this.unwatch();
202
+ this._unsubscribeRouter?.();
203
+ this._unsubscribeRouter = void 0;
177
204
  if (!this.element) return;
178
205
  this.element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
179
206
  this.element.removeEventListener(TRANSITION_STATE_CHANGE_EVENT, this.onTransitionStateChange);
180
207
  this.element = null;
181
- this._deregisterOnStart?.();
182
- this._deregisterOnStart = void 0;
183
- this._deregisterOnStatesChanged?.();
184
- this._deregisterOnStatesChanged = void 0;
185
208
  }
186
209
  reconnected() {
187
210
  this.element = this._partElement;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-sref-active.ts"]}
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
@@ -125,6 +125,8 @@ export declare class UiSrefDirective extends AsyncDirective {
125
125
  private _seekedRouter;
126
126
  /** @internal */
127
127
  unsubscribe: (() => void) | undefined;
128
+ /** drops the subscription to a provider that may still replace its router */
129
+ private _unsubscribeRouter;
128
130
  /**
129
131
  * Kept across a disconnect so {@link reconnected} can re-arm.
130
132
  * @internal
@@ -144,6 +146,8 @@ export declare class UiSrefDirective extends AsyncDirective {
144
146
  shouldAssignHref(): boolean;
145
147
  /** @internal */
146
148
  seekRouter(): void;
149
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
150
+ private readonly onRouterReplaced;
147
151
  /**
148
152
  * Names this sref in the missing-provider warning. Shared by the two sites
149
153
  * that observe the no-op — the render that writes no `href` and the click
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref.d.ts","mappings":"AAAA,SAAS,WAAW,mBAAmB,mBAAmB;AAC1D,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAuC;AAEhD,cAAc,kBAAkB;AAWhC,cAAc,qBAAqB;AAGnC,SAAS;AAET,SACE,sBACA,oCACK;AAEP,cAAc,eAAe,yBAAyB;AAEtD;;;;;CAKE;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA,gCACK;;;;;;;AAQP,iBAAiB,cAAc;;;;;;;;;;;;;;;;;;;CAmB7B,uBAAuB;AACzB;;;;;;;AAQA,YAAY,0BAA0B,oBAAoB;;;;;;;;;;;;;;AAkB1D,OAAO,cAAM,wBAAwB,eAAe;;CAElD;;CAEA,QAAQ;;CAER,SAAS;;CAGT,SAAS;;CAGT,UAAU;;CAEV,YAAY;;CAGZ,eAAe;;CAGf;;CAEA,aAAa;;CAGb,QAAQ;;;;;;;;;CAUR,QAAQ;;CAGR;;;;;CAMA,QAAQ;;CAGR,YAAY,UAAU;;CAStB,WAAW,OAAM,oBAAmC;;CAKpD,OACE,eACA,SAAS,WACT,UAAU,2BACF;;;;;;CAqDV;;CA+BA;;;;;;;;CAYA,QAAQ;;CAUR;;CAKA;;;;;CAmBA;;CASA,UAAW,OAAO;;CAwBlB,OACE,MAAM,aACN,CAAC,OAAO,QAAa,mBAEnB,YACA,mCAEM;;CAuBV,uBAAsB;CAItB,QAAQ;;;;CAIR;AAqBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,OAAO,cAAM,SACX,eACA,SAAS,WACT,UAAU,4BACP,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
1
+ {"version":3,"file":"ui-sref.d.ts","mappings":"AAAA,SAAS,WAAW,mBAAmB,mBAAmB;AAC1D,SAAS,UAAU,mBAAmB;AACtC,SAAoB,gBAA0B;AAC9C,cAAc,uBAAuB;AACrC,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAuC;AAEhD,cAAc,kBAAkB;AAWhC,cAAc,qBAAqB;AAGnC,SAAS;AAET,SACE,sBACA,oCACK;AAEP,cAAc,eAAe,yBAAyB;AAEtD;;;;;CAKE;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA;;;;;CAKA,gCACK;;;;;;;AAQP,iBAAiB,cAAc;;;;;;;;;;;;;;;;;;;CAmB7B,uBAAuB;AACzB;;;;;;;AAQA,YAAY,0BAA0B,oBAAoB;;;;;;;;;;;;;;AAkB1D,OAAO,cAAM,wBAAwB,eAAe;;CAElD;;CAEA,QAAQ;;CAER,SAAS;;CAGT,SAAS;;CAGT,UAAU;;CAEV,YAAY;;CAGZ,eAAe;;CAGf;;CAEA,aAAa;;CAGb,QAAQ;;;;;;;;;CAUR,QAAQ;;CAGR;;CAGA,QAAQ;;;;;CAMR,QAAQ;;CAGR,YAAY,UAAU;;CAStB,WAAW,OAAM,oBAAmC;;CAKpD,OACE,eACA,SAAS,WACT,UAAU,2BACF;;;;;;CAqDV;;CA+BA;;CAcA,iBAAiB;;;;;;;;CAejB,QAAQ;;CAUR;;CAKA;;;;;CAqBA;;CASA,UAAW,OAAO;;CAwBlB,OACE,MAAM,aACN,CAAC,OAAO,QAAa,mBAEnB,YACA,mCAEM;;CAuBV,uBAAsB;CAItB,QAAQ;;;;CAIR;AAqBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,OAAO,cAAM,SACX,eACA,SAAS,WACT,UAAU,4BACP,uBAAuB","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
package/dist/ui-sref.js CHANGED
@@ -2,7 +2,7 @@ import { noChange } from "lit";
2
2
  import { directive, PartType } from "lit/directive.js";
3
3
  import { AsyncDirective } from "lit/async-directive.js";
4
4
  import { inLitDevMode, warnMissingRouter } from "./dev-warn.js";
5
- import { UIRouterLitElement } from "./ui-router.js";
5
+ import { subscribeRouter } from "./router-subscription.js";
6
6
  import { UiView } from "./ui-view.js";
7
7
  import { clickBelongsToBrowser, isNativeLink, sameTarget, srefTransitionOptions, uiSrefTargetEvent, uiSrefTargetRemovedEvent } from "./sref-internals.js";
8
8
  export { inLitDevMode };
@@ -22,6 +22,13 @@ export class UiSrefDirective extends AsyncDirective {
22
22
  this._ownsHref = false;
23
23
  this._seekedRouter = false;
24
24
  this._partElement = null;
25
+ this.onRouterReplaced = (router) => {
26
+ this._unsubscribeRouter = void 0;
27
+ this.unsubscribe?.();
28
+ this.uiRouter = router;
29
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
30
+ this.doRender();
31
+ };
25
32
  this.onClick = (event) => {
26
33
  const { uiRouter: router, state, params } = this;
27
34
  const options = this.getOptions();
@@ -80,7 +87,10 @@ export class UiSrefDirective extends AsyncDirective {
80
87
  return true;
81
88
  }
82
89
  seekRouter() {
83
- this.uiRouter = UIRouterLitElement.seekRouter(this.element);
90
+ this._unsubscribeRouter?.();
91
+ const { router, unsubscribe } = subscribeRouter(this.element, this.onRouterReplaced);
92
+ this.uiRouter = router;
93
+ this._unsubscribeRouter = unsubscribe;
84
94
  this._seekedRouter = true;
85
95
  }
86
96
  warnMissingRouter(state) {
@@ -99,6 +109,8 @@ export class UiSrefDirective extends AsyncDirective {
99
109
  this._ownsHref = false;
100
110
  this.unsubscribe?.();
101
111
  this.unsubscribe = void 0;
112
+ this._unsubscribeRouter?.();
113
+ this._unsubscribeRouter = void 0;
102
114
  this._firstUpdated = false;
103
115
  }
104
116
  reconnected() {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
1
+ {"version":3,"file":"ui-sref.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-sref.ts"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lit-ui-router",
3
- "version": "1.16.3",
3
+ "version": "1.16.4",
4
4
  "description": "State-based routing for Lit",
5
5
  "homepage": "https://lit-ui-router.dev",
6
6
  "license": "MIT",
@@ -13,8 +13,8 @@ import { AsyncDirective } from 'lit/async-directive.js';
13
13
  import { getScopedRouter } from './context.js';
14
14
  import { UIRouterLit } from './core.js';
15
15
  import { warnMissingRouter } from './dev-warn.js';
16
+ import { subscribeRouter } from './router-subscription.js';
16
17
  import { resolveAriaCurrent, SrefTargets } from './sref-status.js';
17
- import { UIRouterLitElement } from './ui-router.js';
18
18
  import {
19
19
  UI_SREF_TARGET_EVENT,
20
20
  UI_SREF_TARGET_REMOVED_EVENT,
@@ -84,6 +84,8 @@ export abstract class SrefStatusDirective<
84
84
 
85
85
  private _firstUpdated = false;
86
86
  private _deregister: deregisterFn[] = [];
87
+ /** the hooks on the router itself, which a replacement router moves */
88
+ private _routerDeregister: deregisterFn[] = [];
87
89
  /** bumped on disconnect, so a settlement subscribed before it stays quiet */
88
90
  private _connection = 0;
89
91
 
@@ -174,7 +176,18 @@ export abstract class SrefStatusDirective<
174
176
  }
175
177
 
176
178
  const element = this.element!;
177
- this.uiRouter = UIRouterLitElement.seekRouter(element);
179
+
180
+ const { router, unsubscribe } = subscribeRouter(
181
+ element,
182
+ this.onRouterReplaced,
183
+ );
184
+
185
+ this.uiRouter = router;
186
+
187
+ if (unsubscribe) {
188
+ this._deregister.push(unsubscribe);
189
+ }
190
+
178
191
  this.parentView = UiView.seekParentView(element);
179
192
  this.targets.router = this.uiRouter;
180
193
  this.targets.relative = this.parentView?.viewContext?.name;
@@ -202,16 +215,8 @@ export abstract class SrefStatusDirective<
202
215
  );
203
216
  });
204
217
 
205
- const router = this.uiRouter;
206
-
207
218
  if (router) {
208
- // SAFETY: hook registration returns its deregistration function
209
- this._deregister.push(
210
- router.transitionService.onStart({}, this.onTransitionStart, {
211
- priority: -Infinity,
212
- }) as deregisterFn,
213
- router.stateRegistry.onStatesChanged(this.onStatesChanged),
214
- );
219
+ this.watch(router);
215
220
  } else {
216
221
  warnMissingRouter(
217
222
  element,
@@ -224,6 +229,32 @@ export abstract class SrefStatusDirective<
224
229
  this.refresh();
225
230
  }
226
231
 
232
+ private watch(router: UIRouterLit): void {
233
+ // SAFETY: hook registration returns its deregistration function
234
+ this._routerDeregister.push(
235
+ router.transitionService.onStart({}, this.onTransitionStart, {
236
+ priority: -Infinity,
237
+ }) as deregisterFn,
238
+ router.stateRegistry.onStatesChanged(this.onStatesChanged),
239
+ );
240
+ }
241
+
242
+ private unwatch(): void {
243
+ this._connection++;
244
+ this._routerDeregister.forEach((deregister) => deregister());
245
+ this._routerDeregister = [];
246
+ }
247
+
248
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
249
+ private readonly onRouterReplaced = (router: UIRouterLit): void => {
250
+ this.unwatch();
251
+ this.uiRouter = router;
252
+ this.targets.router = router;
253
+ this.targets.rebuild();
254
+ this.watch(router);
255
+ this.refresh();
256
+ };
257
+
227
258
  /** @internal */
228
259
  onUiSrefTargetEvent = (event: UiSrefTargetEvent): void => {
229
260
  this.targets.onLink(event);
@@ -283,7 +314,7 @@ export abstract class SrefStatusDirective<
283
314
 
284
315
  /** @internal */
285
316
  disconnected(): void {
286
- this._connection++;
317
+ this.unwatch();
287
318
  this._deregister.forEach((deregister) => deregister());
288
319
  this._deregister = [];
289
320
  this._firstUpdated = false;
package/src/sref-href.ts CHANGED
@@ -7,7 +7,7 @@ import { AsyncDirective } from 'lit/async-directive.js';
7
7
  import { getScopedRouter } from './context.js';
8
8
  import { UIRouterLit } from './core.js';
9
9
  import { warnMissingRouter } from './dev-warn.js';
10
- import { UIRouterLitElement } from './ui-router.js';
10
+ import { subscribeRouter } from './router-subscription.js';
11
11
  import {
12
12
  clickBelongsToBrowser,
13
13
  sameTarget,
@@ -62,6 +62,9 @@ export class SrefHrefDirective extends AsyncDirective {
62
62
  /** @internal */
63
63
  unsubscribe: (() => void) | undefined;
64
64
 
65
+ /** drops the subscription to a provider that may still replace its router */
66
+ private _unsubscribeRouter: (() => void) | undefined;
67
+
65
68
  /** @internal */
66
69
  constructor(partInfo: PartInfo) {
67
70
  super(partInfo);
@@ -152,7 +155,14 @@ export class SrefHrefDirective extends AsyncDirective {
152
155
  }
153
156
 
154
157
  const element = this.element!;
155
- this.uiRouter = UIRouterLitElement.seekRouter(element);
158
+
159
+ const { router, unsubscribe } = subscribeRouter(
160
+ element,
161
+ this.onRouterReplaced,
162
+ );
163
+
164
+ this.uiRouter = router;
165
+ this._unsubscribeRouter = unsubscribe;
156
166
  this._seekedRouter = true;
157
167
  this.parentView = UiView.seekParentView(element);
158
168
  // SAFETY: a 'click' event is a MouseEvent
@@ -170,6 +180,15 @@ export class SrefHrefDirective extends AsyncDirective {
170
180
  this._firstUpdated = true;
171
181
  }
172
182
 
183
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
184
+ private readonly onRouterReplaced = (router: UIRouterLit): void => {
185
+ this._unsubscribeRouter = undefined;
186
+ this.unsubscribe?.();
187
+ this.uiRouter = router;
188
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
189
+ this.doRender();
190
+ };
191
+
173
192
  /** @internal */
174
193
  doRender = (): void => {
175
194
  const value = this.render(this.state!, this.params, this.options);
@@ -223,6 +242,8 @@ export class SrefHrefDirective extends AsyncDirective {
223
242
  this.targetState = null;
224
243
  this.unsubscribe?.();
225
244
  this.unsubscribe = undefined;
245
+ this._unsubscribeRouter?.();
246
+ this._unsubscribeRouter = undefined;
226
247
  this._firstUpdated = false;
227
248
  }
228
249
 
@@ -10,8 +10,8 @@ import type { DirectiveResult } from 'lit/directive.js';
10
10
  import { AsyncDirective } from 'lit/async-directive.js';
11
11
 
12
12
  import { UIRouterLit } from './core.js';
13
- import { UIRouterLitElement } from './ui-router.js';
14
13
  import { inLitDevMode, warnMissingRouter } from './dev-warn.js';
14
+ import { subscribeRouter } from './router-subscription.js';
15
15
  import {
16
16
  isNativeLink,
17
17
  mergeSrefStatus,
@@ -210,9 +210,20 @@ export class UiSrefActiveDirective extends AsyncDirective {
210
210
  uiRouter: UIRouterLit | undefined;
211
211
  /** @internal */
212
212
  seekRouter(): void {
213
- this.uiRouter = UIRouterLitElement.seekRouter(this.element!);
213
+ this._unsubscribeRouter?.();
214
+
215
+ const { router, unsubscribe } = subscribeRouter(
216
+ this.element!,
217
+ this.onRouterReplaced,
218
+ );
219
+
220
+ this.uiRouter = router;
221
+ this._unsubscribeRouter = unsubscribe;
214
222
  }
215
223
 
224
+ /** drops the subscription to a provider that may still replace its router */
225
+ private _unsubscribeRouter: deregisterFn | undefined;
226
+
216
227
  /** @internal */
217
228
  parentView: ParentView | null = null;
218
229
  /** @internal */
@@ -524,13 +535,7 @@ export class UiSrefActiveDirective extends AsyncDirective {
524
535
  } else if (this.state) {
525
536
  // no router: no target to resolve, and the update that follows reports it
526
537
  if (this.uiRouter) {
527
- this.targetStates.add(
528
- this.uiRouter.stateService.target(
529
- this.state,
530
- this.params,
531
- this.getOptions(),
532
- ),
533
- );
538
+ this.targetStates.add(this.explicitTarget(this.uiRouter, this.state));
534
539
  }
535
540
  } else {
536
541
  this.element!.addEventListener(
@@ -548,13 +553,7 @@ export class UiSrefActiveDirective extends AsyncDirective {
548
553
  // no router: nothing to subscribe to, and `_firstUpdated` still has to be
549
554
  // reached so the next update can report the no-op
550
555
  if (this.uiRouter) {
551
- // SAFETY: hook registration returns its deregistration function
552
- this._deregisterOnStart = this.uiRouter.transitionService.onStart(
553
- {},
554
- this.onTransitionStart,
555
- ) as deregisterFn;
556
- this._deregisterOnStatesChanged =
557
- this.uiRouter.stateRegistry.onStatesChanged(this.onStatesChanged);
556
+ this.watch(this.uiRouter);
558
557
  }
559
558
 
560
559
  setTimeout(() => {
@@ -569,11 +568,51 @@ export class UiSrefActiveDirective extends AsyncDirective {
569
568
  this._firstUpdated = true;
570
569
  }
571
570
 
571
+ private explicitTarget(router: UIRouterLit, state: string): TargetState {
572
+ return router.stateService.target(state, this.params, this.getOptions());
573
+ }
574
+
575
+ private watch(router: UIRouterLit): void {
576
+ // SAFETY: hook registration returns its deregistration function
577
+ this._deregisterOnStart = router.transitionService.onStart(
578
+ {},
579
+ this.onTransitionStart,
580
+ ) as deregisterFn;
581
+ this._deregisterOnStatesChanged = router.stateRegistry.onStatesChanged(
582
+ this.onStatesChanged,
583
+ );
584
+ }
585
+
586
+ private unwatch(): void {
587
+ this._connection++;
588
+ this._deregisterOnStart?.();
589
+ this._deregisterOnStart = undefined;
590
+ this._deregisterOnStatesChanged?.();
591
+ this._deregisterOnStatesChanged = undefined;
592
+ }
593
+
594
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
595
+ private readonly onRouterReplaced = (router: UIRouterLit): void => {
596
+ this._unsubscribeRouter = undefined;
597
+ this.unwatch();
598
+ this.uiRouter = router;
599
+
600
+ if (!this._lastTargetStates && this.state) {
601
+ this.targetStates.clear();
602
+ this.targetStates.add(this.explicitTarget(router, this.state));
603
+ }
604
+
605
+ this.watch(router);
606
+ this.onStatesChanged();
607
+ };
608
+
572
609
  /** @internal */
573
610
  disconnected(): void {
574
611
  // re-arming is what `reconnected` does; without this it would no-op
575
612
  this._firstUpdated = false;
576
- this._connection++;
613
+ this.unwatch();
614
+ this._unsubscribeRouter?.();
615
+ this._unsubscribeRouter = undefined;
577
616
 
578
617
  if (!this.element) {
579
618
  return;
@@ -589,10 +628,6 @@ export class UiSrefActiveDirective extends AsyncDirective {
589
628
  this.onTransitionStateChange,
590
629
  );
591
630
  this.element = null;
592
- this._deregisterOnStart?.();
593
- this._deregisterOnStart = undefined;
594
- this._deregisterOnStatesChanged?.();
595
- this._deregisterOnStatesChanged = undefined;
596
631
  }
597
632
 
598
633
  /**
package/src/ui-sref.ts CHANGED
@@ -6,7 +6,7 @@ import { AsyncDirective } from 'lit/async-directive.js';
6
6
 
7
7
  import { UIRouterLit } from './core.js';
8
8
  import { inLitDevMode, warnMissingRouter } from './dev-warn.js';
9
- import { UIRouterLitElement } from './ui-router.js';
9
+ import { subscribeRouter } from './router-subscription.js';
10
10
  import type { ParentView } from './events.js';
11
11
  import { UiView } from './ui-view.js';
12
12
 
@@ -160,6 +160,9 @@ export class UiSrefDirective extends AsyncDirective {
160
160
  /** @internal */
161
161
  unsubscribe: (() => void) | undefined;
162
162
 
163
+ /** drops the subscription to a provider that may still replace its router */
164
+ private _unsubscribeRouter: (() => void) | undefined;
165
+
163
166
  /**
164
167
  * Kept across a disconnect so {@link reconnected} can re-arm.
165
168
  * @internal
@@ -270,10 +273,27 @@ export class UiSrefDirective extends AsyncDirective {
270
273
 
271
274
  /** @internal */
272
275
  seekRouter(): void {
273
- this.uiRouter = UIRouterLitElement.seekRouter(this.element!);
276
+ this._unsubscribeRouter?.();
277
+
278
+ const { router, unsubscribe } = subscribeRouter(
279
+ this.element!,
280
+ this.onRouterReplaced,
281
+ );
282
+
283
+ this.uiRouter = router;
284
+ this._unsubscribeRouter = unsubscribe;
274
285
  this._seekedRouter = true;
275
286
  }
276
287
 
288
+ /** What a disconnect and reconnect would do, for the router that replaced the one found. */
289
+ private readonly onRouterReplaced = (router: UIRouterLit): void => {
290
+ this._unsubscribeRouter = undefined;
291
+ this.unsubscribe?.();
292
+ this.uiRouter = router;
293
+ this.unsubscribe = router.stateRegistry.onStatesChanged(this.doRender);
294
+ this.doRender();
295
+ };
296
+
277
297
  /**
278
298
  * Names this sref in the missing-provider warning. Shared by the two sites
279
299
  * that observe the no-op — the render that writes no `href` and the click
@@ -307,6 +327,8 @@ export class UiSrefDirective extends AsyncDirective {
307
327
  this._ownsHref = false;
308
328
  this.unsubscribe?.();
309
329
  this.unsubscribe = undefined;
330
+ this._unsubscribeRouter?.();
331
+ this._unsubscribeRouter = undefined;
310
332
  // re-arming is what `reconnected` does; without this it would no-op
311
333
  this._firstUpdated = false;
312
334
  }