lit-ui-router 1.11.1 → 1.12.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/README.md CHANGED
@@ -45,6 +45,12 @@ registries or custom tag names) without touching the global registry, and pair
45
45
  it with `lit-ui-router/register` — or a single `*.register` entry — to opt
46
46
  into registration explicitly.
47
47
 
48
+ ## Development and Production Builds
49
+
50
+ Every entry point above publishes twice: `dist/development/*.js` alongside `dist/*.js`, picked by the `development` export condition, which bundlers resolve automatically. Nothing to configure.
51
+
52
+ The development build carries three console warnings — `uiSref` writing an inert `href`, `uiSrefActive` taking over an `aria-current` it did not set, and any binding finding no `<ui-router>` ancestor. Each is gated on lit's own development build as well, and none of them, message text included, is present in a production bundle. See the [Development & Production Builds guide](https://lit-ui-router.dev/guides/development-builds) for what each warning means and how the split is verified.
53
+
48
54
  ## Component Styles
49
55
 
50
56
  | Style | Best For | Example |
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","mappings":"AAAA,SAGE,UAIA,aACA,UACA,YAEA,wBACK;AAGP,SACE,kBACA,oBACA,4BACA,8BAEA,2BACA,2BACK;;;;;;;;;AA2BP,OAAO,cAAM,yBAAyB,WAAW;CAY7C,MAAa;CACb,UAAiB;;CAXnB;;CAEA;;;;;;CAOA,YACE,AAAO,MAAM,YACb,AAAO,UAAU;;;;;CAOnB,QAAQ;AAGV;;;;;;;;;;;;;AAcA,OAAO,iBAAS,6BACd,UAAU,sBAAsB,qBAEhC,QAAQ,mBAAmB,KAC1B,UAAU,2BAA2B,KAAK,0BAA0B;;;;;;;;AAWvE,OAAO,iBAAS,mBACd,UAAU,sBAAsB,qBAChC,sBAAsB,aAAa,iBAAiB;;;;;;;;;;;;;;AAiBtD,OAAO,iBAAS,gBACd,UAAU,sBAAsB,qBAChC,OAAO,cAAc,eAAe,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGnE,OAAO,cAAM,oBAAoB,SAAS;;;;;;;;;CASxC;;CASA,QAAQ;;;;;;;;;;;;;;;;;CAkBR;AAUF","names":[],"ignoreList":[],"sources":["../src/core.ts"]}
1
+ {"version":3,"file":"core.d.ts","mappings":"AAAA,SAGE,UAIA,aACA,UACA,YAEA,wBACK;AAGP,SACE,kBACA,oBACA,4BACA,8BACA,2BACA,2BACK;;;;;;;;;AA4BP,OAAO,cAAM,yBAAyB,WAAW;CAY7C,MAAa;CACb,UAAiB;;CAXnB;;CAEA;;;;;;CAOA,YACE,AAAO,MAAM,YACb,AAAO,UAAU;;;;;CAOnB,QAAQ;AAGV;;;;;;;;;;;;;AAcA,OAAO,iBAAS,6BACd,UAAU,sBAAsB,qBAEhC,QAAQ,mBAAmB,KAC1B,UAAU,2BAA2B,KAAK,0BAA0B;;;;;;;;AAWvE,OAAO,iBAAS,mBACd,UAAU,sBAAsB,qBAChC,sBAAsB,aAAa,iBAAiB;;;;;;;;;;;;;;AAiBtD,OAAO,iBAAS,gBACd,UAAU,sBAAsB,qBAChC,OAAO,cAAc,eAAe,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGnE,OAAO,cAAM,oBAAoB,SAAS;;;;;;;;;CASxC;;CASA,QAAQ;;;;;;;;;;;;;;;;;CAkBR;AAUF","names":[],"ignoreList":[],"sources":["../src/core.ts"]}
package/dist/core.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { forEach, isFunction, pick, servicesPlugin, UIRouter, ViewService } from "@uirouter/core";
2
- import { html, LitElement } from "lit";
2
+ import { LitElement } from "lit";
3
+ import { routedLitElementRenderer } from "./routed-element.js";
3
4
  const forEachValue = forEach;
4
5
  let viewConfigIdCounter = 0;
5
6
  export class LitViewConfig {
@@ -33,15 +34,7 @@ export function litViewsBuilder(state) {
33
34
  const normalizedTarget = ViewService.normalizeUIViewTarget(normalizedConfig.$context, normalizedConfig.$name);
34
35
  normalizedConfig.$uiViewName = normalizedTarget.uiViewName;
35
36
  normalizedConfig.$uiViewContextAnchor = normalizedTarget.uiViewContextAnchor;
36
- if (isRoutedLitElement(normalizedConfig.component)) {
37
- const Component = normalizedConfig.component;
38
- let component;
39
- normalizedConfig.component = (props) => {
40
- component = Component.sticky && component || new Component(props);
41
- component._uiViewProps = props;
42
- return html`${component}`;
43
- };
44
- }
37
+ if (isRoutedLitElement(normalizedConfig.component) && normalizedConfig.component.sticky) normalizedConfig.component = routedLitElementRenderer(normalizedConfig.component);
45
38
  views[name] = viewsObject[name] = normalizedConfig;
46
39
  });
47
40
  return views;
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","mappings":"AAAA,SACE,SACA,YAEA,MACA,gBAGA,UAEA,mBAEK;AACP,SAAS,MAAM,kBAAkB;AAkBjC,MAAM,eAAe;AASrB,IAAI,sBAAsB;AAU1B,OAAO,MAAM,cAAoC;CAW/C,YACE,MACA,UACA;EAFO;EACA;aAXK;gBAEL;CAUN;CAMH,OAAsB;EACpB,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAcA,OAAO,SAAS,6BAGd,QACwE;CACxE,OAAO,WAAW,MAAM;AAC1B;AASA,OAAO,SAAS,mBAEd,WAAuD;CACvD,OAAQ,WAAsC,qBAAqB;AACrE;AAeA,OAAO,SAAS,gBAEd,OAAqE;CACrE,MAAM,QAAyD,CAAC,GAC9D,cAAc,MAAM,SAAS,EAC3B,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,EACrC;CAEF,aACE,aACA,SAAU,QAA+B,MAAc;EACrD,IAAI;EACJ,OAAO,QAAQ;EACf,IAAI,6BAAgC,MAAM,GACxC,mBAAmB,EAAE,WAAW,OAAqC;OAErE,mBAAmB;EAErB,IAAI,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG;EAEtD,iBAAiB,QAAQ;EACzB,iBAAiB,WAAW;EAC5B,iBAAiB,QAAQ;EAEzB,MAAM,mBAAmB,YAAY,sBACnC,iBAAiB,UACjB,iBAAiB,KACnB;EACA,iBAAiB,cAAc,iBAAiB;EAChD,iBAAiB,uBACf,iBAAiB;EAEnB,IAAI,mBAAsB,iBAAiB,SAAS,GAAG;GACrD,MAAM,YAAY,iBAAiB;GACnC,IAAI;GACJ,iBAAiB,aAAa,UAAkC;IAC9D,YAAa,UAAU,UAAU,aAAc,IAAI,UAAU,KAAK;IAClE,UAAU,eAAe;IACzB,OAAO,IAAI,GAAG;GAChB;EACF;EAEA,MAAM,QAAQ,YAAY,QAAQ;CACpC,CACF;CACA,OAAO;AACT;AAMA,MAAM,qBAAqB,MAAkB,WAC3C,IAAI,cAAc,MAAM,MAAM;AAiDhC,OAAO,MAAM,oBAAoB,SAAS;CASxC,cAAc;EACZ,MAAM;iBAQU;EAPhB,KAAK,OAAuB,cAAc;EAE1C,KAAK,YAAY,WAAW,mBAAmB,OAAO,iBAAiB;EACvE,KAAK,cAAc,UAAU,SAAS,eAAe;CACvD;CAqBA,QAAc;EACZ,IAAI,KAAK,SACP,MAAM,IAAI,MAAM,+BAA+B;EAGjD,KAAK,kBAAkB,KAAK;EAC5B,KAAK,WAAW,OAAO;EACvB,KAAK,WAAW,KAAK;EACrB,KAAK,UAAU;CACjB;AACF","names":[],"ignoreList":[],"sources":["../src/core.ts"]}
1
+ {"version":3,"file":"core.js","mappings":"AAAA,SACE,SACA,YAEA,MACA,gBAGA,UAEA,mBAEK;AACP,SAAS,kBAAkB;AAU3B,SAAS,gCAAgC;AAQzC,MAAM,eAAe;AASrB,IAAI,sBAAsB;AAU1B,OAAO,MAAM,cAAoC;CAW/C,YACE,MACA,UACA;EAFO;EACA;aAXK;gBAEL;CAUN;CAMH,OAAsB;EACpB,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAcA,OAAO,SAAS,6BAGd,QACwE;CACxE,OAAO,WAAW,MAAM;AAC1B;AASA,OAAO,SAAS,mBAEd,WAAuD;CACvD,OAAQ,WAAsC,qBAAqB;AACrE;AAeA,OAAO,SAAS,gBAEd,OAAqE;CACrE,MAAM,QAAyD,CAAC,GAC9D,cAAc,MAAM,SAAS,EAC3B,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,EACrC;CAEF,aACE,aACA,SAAU,QAA+B,MAAc;EACrD,IAAI;EACJ,OAAO,QAAQ;EACf,IAAI,6BAAgC,MAAM,GACxC,mBAAmB,EAAE,WAAW,OAAO;OAEvC,mBAAmB;EAErB,IAAI,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG;EAEtD,iBAAiB,QAAQ;EACzB,iBAAiB,WAAW;EAC5B,iBAAiB,QAAQ;EAEzB,MAAM,mBAAmB,YAAY,sBACnC,iBAAiB,UACjB,iBAAiB,KACnB;EACA,iBAAiB,cAAc,iBAAiB;EAChD,iBAAiB,uBACf,iBAAiB;EAKnB,IACE,mBAAsB,iBAAiB,SAAS,KAChD,iBAAiB,UAAU,QAE3B,iBAAiB,YAAY,yBAC3B,iBAAiB,SACnB;EAGF,MAAM,QAAQ,YAAY,QAAQ;CACpC,CACF;CACA,OAAO;AACT;AAMA,MAAM,qBAAqB,MAAkB,WAC3C,IAAI,cAAc,MAAM,MAAM;AAiDhC,OAAO,MAAM,oBAAoB,SAAS;CASxC,cAAc;EACZ,MAAM;iBAQU;EAPhB,KAAK,OAAuB,cAAc;EAE1C,KAAK,YAAY,WAAW,mBAAmB,OAAO,iBAAiB;EACvE,KAAK,cAAc,UAAU,SAAS,eAAe;CACvD;CAqBA,QAAc;EACZ,IAAI,KAAK,SACP,MAAM,IAAI,MAAM,+BAA+B;EAGjD,KAAK,kBAAkB,KAAK;EAC5B,KAAK,WAAW,OAAO;EACvB,KAAK,WAAW,KAAK;EACrB,KAAK,UAAU;CACjB;AACF","names":[],"ignoreList":[],"sources":["../src/core.ts"]}
@@ -43,7 +43,8 @@
43
43
  "text": "RoutedLitTemplate | null"
44
44
  },
45
45
  "privacy": "private",
46
- "default": "null"
46
+ "default": "null",
47
+ "description": "Replaced only by a real view config change, so a retained view keeps its subtree."
47
48
  },
48
49
  {
49
50
  "kind": "field",
@@ -234,6 +235,15 @@
234
235
  "summary": "This is the <code>&lt;ui-view&gt;</code> component.\n\nThe <code>&lt;ui-view&gt;</code> component is a viewport for routed components.\nRouted components will be rendered inside the <code>&lt;ui-view&gt;</code> viewport.",
235
236
  "tagName": "ui-view",
236
237
  "customElement": true
238
+ },
239
+ {
240
+ "kind": "variable",
241
+ "name": "resolves"
242
+ },
243
+ {
244
+ "kind": "variable",
245
+ "name": "transition",
246
+ "default": "injector.get(Transition)"
237
247
  }
238
248
  ],
239
249
  "exports": [
@@ -1,5 +1,6 @@
1
1
  import { forEach, isFunction, pick, servicesPlugin, UIRouter, ViewService } from "@uirouter/core";
2
- import { html, LitElement } from "lit";
2
+ import { LitElement } from "lit";
3
+ import { routedLitElementRenderer } from "./routed-element.js";
3
4
  const forEachValue = forEach;
4
5
  let viewConfigIdCounter = 0;
5
6
  export class LitViewConfig {
@@ -33,15 +34,7 @@ export function litViewsBuilder(state) {
33
34
  const normalizedTarget = ViewService.normalizeUIViewTarget(normalizedConfig.$context, normalizedConfig.$name);
34
35
  normalizedConfig.$uiViewName = normalizedTarget.uiViewName;
35
36
  normalizedConfig.$uiViewContextAnchor = normalizedTarget.uiViewContextAnchor;
36
- if (isRoutedLitElement(normalizedConfig.component)) {
37
- const Component = normalizedConfig.component;
38
- let component;
39
- normalizedConfig.component = (props) => {
40
- component = Component.sticky && component || new Component(props);
41
- component._uiViewProps = props;
42
- return html`${component}`;
43
- };
44
- }
37
+ if (isRoutedLitElement(normalizedConfig.component) && normalizedConfig.component.sticky) normalizedConfig.component = routedLitElementRenderer(normalizedConfig.component);
45
38
  views[name] = viewsObject[name] = normalizedConfig;
46
39
  });
47
40
  return views;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","mappings":"AAAA,SACE,SACA,YAEA,MACA,gBAGA,UAEA,mBAEK;AACP,SAAS,MAAM,kBAAkB;AAkBjC,MAAM,eAAe;AASrB,IAAI,sBAAsB;AAU1B,OAAO,MAAM,cAAoC;CAW/C,YACE,MACA,UACA;EAFO;EACA;aAXK;gBAEL;CAUN;CAMH,OAAsB;EACpB,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAcA,OAAO,SAAS,6BAGd,QACwE;CACxE,OAAO,WAAW,MAAM;AAC1B;AASA,OAAO,SAAS,mBAEd,WAAuD;CACvD,OAAQ,WAAsC,qBAAqB;AACrE;AAeA,OAAO,SAAS,gBAEd,OAAqE;CACrE,MAAM,QAAyD,CAAC,GAC9D,cAAc,MAAM,SAAS,EAC3B,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,EACrC;CAEF,aACE,aACA,SAAU,QAA+B,MAAc;EACrD,IAAI;EACJ,OAAO,QAAQ;EACf,IAAI,6BAAgC,MAAM,GACxC,mBAAmB,EAAE,WAAW,OAAqC;OAErE,mBAAmB;EAErB,IAAI,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG;EAEtD,iBAAiB,QAAQ;EACzB,iBAAiB,WAAW;EAC5B,iBAAiB,QAAQ;EAEzB,MAAM,mBAAmB,YAAY,sBACnC,iBAAiB,UACjB,iBAAiB,KACnB;EACA,iBAAiB,cAAc,iBAAiB;EAChD,iBAAiB,uBACf,iBAAiB;EAEnB,IAAI,mBAAsB,iBAAiB,SAAS,GAAG;GACrD,MAAM,YAAY,iBAAiB;GACnC,IAAI;GACJ,iBAAiB,aAAa,UAAkC;IAC9D,YAAa,UAAU,UAAU,aAAc,IAAI,UAAU,KAAK;IAClE,UAAU,eAAe;IACzB,OAAO,IAAI,GAAG;GAChB;EACF;EAEA,MAAM,QAAQ,YAAY,QAAQ;CACpC,CACF;CACA,OAAO;AACT;AAMA,MAAM,qBAAqB,MAAkB,WAC3C,IAAI,cAAc,MAAM,MAAM;AAiDhC,OAAO,MAAM,oBAAoB,SAAS;CASxC,cAAc;EACZ,MAAM;iBAQU;EAPhB,KAAK,OAAuB,cAAc;EAE1C,KAAK,YAAY,WAAW,mBAAmB,OAAO,iBAAiB;EACvE,KAAK,cAAc,UAAU,SAAS,eAAe;CACvD;CAqBA,QAAc;EACZ,IAAI,KAAK,SACP,MAAM,IAAI,MAAM,+BAA+B;EAGjD,KAAK,kBAAkB,KAAK;EAC5B,KAAK,WAAW,OAAO;EACvB,KAAK,WAAW,KAAK;EACrB,KAAK,UAAU;CACjB;AACF","names":[],"ignoreList":[],"sources":["../../src/core.ts"]}
1
+ {"version":3,"file":"core.js","mappings":"AAAA,SACE,SACA,YAEA,MACA,gBAGA,UAEA,mBAEK;AACP,SAAS,kBAAkB;AAU3B,SAAS,gCAAgC;AAQzC,MAAM,eAAe;AASrB,IAAI,sBAAsB;AAU1B,OAAO,MAAM,cAAoC;CAW/C,YACE,MACA,UACA;EAFO;EACA;aAXK;gBAEL;CAUN;CAMH,OAAsB;EACpB,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAcA,OAAO,SAAS,6BAGd,QACwE;CACxE,OAAO,WAAW,MAAM;AAC1B;AASA,OAAO,SAAS,mBAEd,WAAuD;CACvD,OAAQ,WAAsC,qBAAqB;AACrE;AAeA,OAAO,SAAS,gBAEd,OAAqE;CACrE,MAAM,QAAyD,CAAC,GAC9D,cAAc,MAAM,SAAS,EAC3B,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,EACrC;CAEF,aACE,aACA,SAAU,QAA+B,MAAc;EACrD,IAAI;EACJ,OAAO,QAAQ;EACf,IAAI,6BAAgC,MAAM,GACxC,mBAAmB,EAAE,WAAW,OAAO;OAEvC,mBAAmB;EAErB,IAAI,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG;EAEtD,iBAAiB,QAAQ;EACzB,iBAAiB,WAAW;EAC5B,iBAAiB,QAAQ;EAEzB,MAAM,mBAAmB,YAAY,sBACnC,iBAAiB,UACjB,iBAAiB,KACnB;EACA,iBAAiB,cAAc,iBAAiB;EAChD,iBAAiB,uBACf,iBAAiB;EAKnB,IACE,mBAAsB,iBAAiB,SAAS,KAChD,iBAAiB,UAAU,QAE3B,iBAAiB,YAAY,yBAC3B,iBAAiB,SACnB;EAGF,MAAM,QAAQ,YAAY,QAAQ;CACpC,CACF;CACA,OAAO;AACT;AAMA,MAAM,qBAAqB,MAAkB,WAC3C,IAAI,cAAc,MAAM,MAAM;AAiDhC,OAAO,MAAM,oBAAoB,SAAS;CASxC,cAAc;EACZ,MAAM;iBAQU;EAPhB,KAAK,OAAuB,cAAc;EAE1C,KAAK,YAAY,WAAW,mBAAmB,OAAO,iBAAiB;EACvE,KAAK,cAAc,UAAU,SAAS,eAAe;CACvD;CAqBA,QAAc;EACZ,IAAI,KAAK,SACP,MAAM,IAAI,MAAM,+BAA+B;EAGjD,KAAK,kBAAkB,KAAK;EAC5B,KAAK,WAAW,OAAO;EACvB,KAAK,WAAW,KAAK;EACrB,KAAK,UAAU;CACjB;AACF","names":[],"ignoreList":[],"sources":["../../src/core.ts"]}
@@ -0,0 +1,10 @@
1
+ import { html } from "lit";
2
+ export function routedLitElementRenderer(Component) {
3
+ let element;
4
+ return (props) => {
5
+ element ??= new Component(props);
6
+ element._uiViewProps = props;
7
+ return html`${element}`;
8
+ };
9
+ }
10
+ //# sourceMappingURL=routed-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routed-element.js","mappings":"AAAA,SAAS,YAAY;AAiBrB,OAAO,SAAS,yBAEd,WAAsD;CACtD,IAAI;CACJ,QAAQ,UAAkC;EACxC,YAAY,IAAI,UAAU,KAAK;EAC/B,QAAQ,eAAe;EACvB,OAAO,IAAI,GAAG;CAChB;AACF","names":[],"ignoreList":[],"sources":["../../src/routed-element.ts"]}
@@ -1,7 +1,8 @@
1
1
  import { LitElement } 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
- import { LitViewConfig } from "./core.js";
4
+ import { LitViewConfig, isRoutedLitElement } from "./core.js";
5
+ import { routedLitElementRenderer } from "./routed-element.js";
5
6
  import { warnMissingRouter } from "./dev-warn.js";
6
7
  import { UIRouterLitElement } from "./ui-router.js";
7
8
  import _decorate from "@oxc-project/runtime/helpers/decorate";
@@ -44,7 +45,8 @@ export class UiView extends LitElement {
44
45
  context: config.viewDecl.$context
45
46
  };
46
47
  this.resolveContext = new ResolveContext(config.path);
47
- this.component = config.viewDecl.component;
48
+ const { component } = config.viewDecl;
49
+ this.component = isRoutedLitElement(component) ? routedLitElementRenderer(component) : component;
48
50
  this.requestUpdate();
49
51
  }
50
52
  connectedCallback() {
@@ -159,13 +161,12 @@ export class UiView extends LitElement {
159
161
  if (!this.component || !this.viewAddress) return this.inner.cloneNode(true);
160
162
  const { uiRouter: router } = this;
161
163
  const injector = this.resolveContext.injector();
162
- const resolves = this.resolveContext.getTokens().filter((token) => isString(token)).map((token) => this.resolveContext.getResolvable(token)).filter((r) => r.resolved).map(({ token }) => [token, injector.get(token)]).reduce(applyPairs, {});
163
- const transition = injector.get(Transition);
164
- return this.component({
164
+ const props = {
165
165
  router,
166
- resolves,
167
- transition
168
- });
166
+ resolves: this.resolveContext.getTokens().filter((token) => isString(token)).map((token) => this.resolveContext.getResolvable(token)).filter((r) => r.resolved).map(({ token }) => [token, injector.get(token)]).reduce(applyPairs, {}),
167
+ transition: injector.get(Transition)
168
+ };
169
+ return this.component(props);
169
170
  }
170
171
  }
171
172
  _decorate([property()], UiView.prototype, "name", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ui-view.js","mappings":"AAAA,SAAS,kBAAkB;AAE3B,SAAS,UAAU,aAAa;AAChC,SAEE,gBACA,YAEA,YAGA,OAEA,YACA,UACA,SAEA,cAGK;AAQP,SAAS,qBAAkC;AAC3C,SAAS,yBAAyB;AAClC,SAAS,0BAAgD;;AAGzD,IAAI,gBAAgB;AAsCpB,OAAO,MAAM,eAAe,WAAW;;;cAE9B;mBAauC;eAErB,SAAS,uBAAuB;gBAO/B;+BA8Ce,UAA8B;GAErE,IAAI,MAAM,WAAW,MACnB;GAGF,MAAM,gBAAgB;GACtB,MAAM,OAAO,aAAa;EAC5B;iCAoC2C,UAAgC;GACzE,mBAAmB,uBAAuB,KAAK,QAAQ,CAAC,CAAC,KAAK;EAChE;8BAcwD,CAAC;;CA9GzD,mBAAyB;EACvB,OAAO;CACT;CAQA,mBAA2B,QAAoB;EAC7C,IAAI,CAAC,QAAQ;GACX,KAAK,YAAY;GACjB,KAAK,cAAc;GACnB;EACF;EAEA,IAAI,EAAE,kBAAkB,gBACtB;EAIF,IAAI,KAAK,YAAY,WAAW,QAC9B;EAGF,MAAM,yBAAyB,KAAK,aAAa,OAAO,SAAS,QAAS;EAC1E,KAAK,oBAAoB,MAAM;CACjC;CAEA,oBAA4B,QAAuB;EACjD,KAAK,YAAY,SAAS;EAE1B,IAAI,CAAC,KAAK,eAAe,QAAQ,UAAU,UACzC,KAAK,cAAc;GACjB,KAAK,KAAK,YAAY;GACtB,SAAS,OAAO,SAAS;EAC3B;EAGF,KAAK,iBAAiB,IAAI,eAAe,OAAO,IAAI;EACpD,KAAK,YACH,OAAO,SACP;EACF,KAAK,cAAc;CACrB;CAgBA,oBAA0B;EACxB,MAAM,kBAAkB;EACxB,KAAK,iBACH,KAAK,YAAY,wBACjB,KAAK,oBACP;EACA,KAAK,YAAY;EACjB,KAAK,eAAe;CACtB;;gCAEiD;;CAEjD,OAAe,qBAAyC;EACtD,OAAO,IAAI,YAAY,KAAK,wBAAwB;GAClD,SAAS;GACT,UAAU;GACV,QAAQ,EACN,YAAY,KACd;EACF,CAAC;CACH;CAGA,OAAO,eAAe,WAAmC;EACvD,MAAM,qBAAqB,KAAK,mBAAmB;EACnD,UAAU,cAAc,kBAAkB;EAC1C,OAAO,mBAAmB,OAAO;CACnC;CAEA,iBAAyB;EACvB,KAAK,aAAa,KAAK,YAAY,eAAe,IAAI;CACxD;CAMA,aAAqB;EACnB,KAAK,WAAW,KAAK,YAAY,mBAAmB,WAAW,IAAI;EACnE,KAAK,iBACH,mBAAmB,0BACnB,KAAK,sBACP;CACF;CAEA,iBAAyB;EACvB,KAAK,MAAM,OAAO,GAAG,KAAK,WAAW,OAAO,CAAC;CAC/C;CAIA,cAAsB;EACpB,KAAK,WAAW;EAChB,KAAK,eAAe;EACpB,MAAM,EAAE,QAAQ,UAAU,QAAQ,eAAe;EACjD,MAAM,OAAO,KAAK,QAAQ;EAE1B,MAAM,YAAY,YAAY,aAAa;EAC3C,MAAM,kBACJ,YAAY,eAAe,QAAQ,cAAc,KAAK;EACxD,MAAM,MAAM,YAAY,YAAY,MAAM,OAAO;EAEjD,KAAK,cAAc;GACjB,OAAO;GACP,IAAI;GACJ;GACA;GACA;GACA,eAAe,KAAK,mBAAmB,KAAK,IAAI;GAChD,QAAQ;EACV;EAEA,IAAI,CAAC,QACH;EAGF,KAAK,qBAAqB,KACxB,OAAO,kBAAkB,SAAS,CAAC,IAAI,UAAU;GAC/C,OAAO,KAAK,qBAAqB,KAAK;EACxC,CAAC,CACH;EAEA,KAAK,qBAAqB,KACxB,OAAO,kBAAkB,UAAU,CAAC,IAAI,UACtC,KAAK,6BAA6B,KAAK,CACzC,CACF;EAEA,KAAK,qBAAqB,KACxB,OAAO,YAAY,eAAe,KAAK,WAAW,CACpD;CACF;CAGA,uBAA6B;EAC3B,MAAM,qBAAqB;EAC3B,KAAK,oBACH,KAAK,YAAY,wBACjB,KAAK,oBACP;EAEA,OAAO,KAAK,qBAAqB,QAE/B,KADqB,qBAAqB,MACpC,CAAC,GAAG;CAEd;CAUA,qBAA6B,OAAmB;EAC9C,MAAM,WAAW,KAAK;EACtB,MAAM,cAAgC,UAAU;EAChD,IAAI,WAAW,WAAW,GAAG;GAC3B,MAAM,QAA0B,KAAK;GAErC,IAAI,MAAM,QAAQ,CAAC,CAAC,SAAS,KAAK,GAChC,MAAM,QAAQ,CAAC,GAAG,WAAY;IAC5B,OAAO,YAAY,KAAK,UAAU,KAAK;GACzC,CAAC;EAEL;CACF;CAGA,cAAc,GAAG,MAAqD;EACpE,MAAM,cAAc,GAAG,IAAI;EAC3B,MAAM,WAAW,KAAK;EACtB,IAAI,WAAW,UAAU,aAAa,GACpC,SAAS,cAAc;CAE3B;CAKA,6BAAqC,cAA0B;EAC7D,KAAK,cAAc;EAEnB,MAAM,WAAW,KAAK;EACtB,MAAM,oBAAsC,UAAU;EAEtD,IAAI,WAAW,iBAAiB,GAAG;GACjC,MAAM,YAAY,KAAK;GASvB,IACE,iBALA,IAJyC,eACzC,KAAK,YAAY,OAAO,IAGX,CAAC,CAAC,cAAc,cAAc,CAAC,CAAC,QAM7C,aAAa,QAAQ,CAAC,CAAC,SAAS,SAAS,GAEzC;GAEF,MAAM,WACJ,aAAa,OAAO,IAAI;GAC1B,MAAM,aACJ,aAAa,OAAO,MAAM;GAC5B,MAAM,iBAAiB,SAAmB,KAAK;GAC/C,MAAM,WAAoB,aACvB,YAAY,IAAI,CAAC,CACjB,IAAI,aAAa,CAAC,CAClB,OAAgB,SAAS,CAAC,CAAC;GAC9B,MAAM,aAAsB,aACzB,YAAY,MAAM,CAAC,CACnB,IAAI,aAAa,CAAC,CAClB,OAAgB,SAAS,CAAC,CAAC;GAG9B,MAAM,kBAAkB,SAAS,QAAQ,UAAiB;IACxD,MAAM,MAAM,WAAW,QAAQ,KAAK;IACpC,OACE,QAAQ,MACR,CAAC,WAAW,IAAI,CAAC,KAAK,OAAO,SAAS,MAAM,KAAK,WAAW,MAAM,GAAG;GAEzE,CAAC;GAGD,IAAI,gBAAgB,QAAQ;IAC1B,MAAM,cAAwB,gBAAgB,KAAK,MAAM,EAAE,EAAE;IAE7D,MAAM,YAAY,OAAO,WAAW,GAAG,QACrC,YAAY,SAAS,GAAI,CAC3B;IACA,SAAS,kBAAkB,WAAW,YAAY;GACpD;EACF;CACF;CAGA,IAAW,cAAuC;EAChD,OAAO,MAAM,aAAa,QAAQ,SAAS;CAC7C;CAGA,IAAW,QAA0B;EACnC,OAAQ,KAAK,YAA4B;CAC3C;CAYA,aAAuB,SAA+B;EACpD,MAAM,aAAa,OAAO;EAC1B,IAAI,CAAC,KAAK,UACR,kBAAkB,MAAM,aAAa,iCAAiC;CAE1E;CAGA,SAAgC;EAC9B,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,aAC3B,OAAO,KAAK,MAAM,UAAU,IAAI;EAGlC,MAAM,EAAE,UAAU,WAAW;EAC7B,MAAM,WAAW,KAAK,eAAe,SAAS;EAO9C,MAAM,WANc,KAAK,eACtB,UAAU,CAAC,CACX,QAAQ,UAAU,SAAS,KAAK,CAAC,CAAC,CAClC,KAAK,UAAU,KAAK,eAAe,cAAc,KAAK,CAAC,CAAC,CACxD,QAAQ,MAAM,EAAE,QAEQ,CAAC,CACzB,KAAK,EAAE,YAAY,CAAC,OAAiB,SAAS,IAAI,KAAK,CAAY,CAAC,CAAC,CACrE,OAAO,YAAY,CAAC,CAAC;EACxB,MAAM,aAAa,SAAS,IAAI,UAAU;EAE1C,OAAO,KAAK,UAAU;GACpB;GACA;GACA;EACF,CAAC;CACH;AACF;WA1UG,SAAS;WAOT,SAAS,EAAE,WAAW,MAAM,CAAC;WAG7B,MAAM;WAGN,MAAM;WAqDN,MAAM","names":[],"ignoreList":[],"sources":["../../src/ui-view.ts"]}
1
+ {"version":3,"file":"ui-view.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/ui-view.ts"]}
@@ -364,6 +364,11 @@ export interface LitStateDeclaration<T extends DefaultResolvesType = DefaultReso
364
364
  * @category types
365
365
  */
366
366
  export interface NormalizedLitViewDeclaration<T extends DefaultResolvesType = DefaultResolvesType> extends _ViewDeclaration {
367
- component: RoutedLitTemplate<T>;
367
+ /**
368
+ * A template function, or a {@link RoutedLitElement} class that the rendering
369
+ * `<ui-view>` instantiates and owns. `sticky` classes are normalized to a
370
+ * template function so their single instance outlives any one `<ui-view>`.
371
+ */
372
+ component: RoutedLitComponent<T>;
368
373
  }
369
374
  //# sourceMappingURL=interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","mappings":"AAAA,SACE,YACA,YACA,kBACA,kBACA,UACA,iBACK;AACP,SAAS,gBAAgB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;AA0B3C,iBAAiB,kBAAkB;;;;;;;;;;;;;;;;;;;CAmBjC,kBAAkB,WAAW,WAAW,QAAQ;AAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,iBAAiB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAyBxB,UAAU,gBAAgB,aAAa;AACzC;;;;;;AAQA,YAAY,sBAAsB;;;;;;;;;;;;AAalC,YAAY,eACV,UAAU,sBAAsB,uBAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCJ,iBAAiB,oBACf,UAAU,sBAAsB,qBAChC;;CAEA,aAAa;;CAEb,UAAU,eAAe;;CAEzB,QAAQ;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,YAAY,kBACV,UAAU,sBAAsB,wBAC7B,OAAO,oBAAoB,OAAO;;;;;;;AAQvC,YAAY,2BACV,UAAU,sBAAsB,uBAC9B,kBAAkB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiD3B,iBAAiB,iBACf,UAAU,sBAAsB,qBAChC;;;;;MAKK,OAAO,oBAAoB,KAAK,aAAa;EAChD,eAAe,oBAAoB;CACrC;;CAGA;AACF;;;;;;;;;;AAWA,YAAY,mBACV,UAAU,sBAAsB,uBAC9B,kBAAkB,KAAK,iBAAiB;;;;AAK5C,iBAAiB,0BACf,UAAU,sBAAsB,6BAExB,iBAAiB,IAAI,iBAAiB,CAAC;;;;AAKjD,iBAAiB,yBACf,UAAU,sBAAsB,6BACxB,iBAAiB;CACzB,WAAW,mBAAmB;AAChC;;;;;;;;;AAUA,YAAY,mBACV,UAAU,sBAAsB,uBAE9B,yBAAyB,KACzB,0BAA0B,KAC1B,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsD/B,iBAAiB,oBACf,UAAU,sBAAsB,6BACxB,iBAAiB;;CAEzB,YAAY,mBAAmB;;;;;;;;;;CAW/B,QAAQ;iBAAiB,mBAAmB;CAAG;AACjD;;;;;;AAOA,iBAAiB,6BACf,UAAU,sBAAsB,6BACxB,iBAAiB;CACzB,WAAW,kBAAkB;AAC/B","names":[],"ignoreList":[],"sources":["../src/interface.ts"]}
1
+ {"version":3,"file":"interface.d.ts","mappings":"AAAA,SACE,YACA,YACA,kBACA,kBACA,UACA,iBACK;AACP,SAAS,gBAAgB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;AA0B3C,iBAAiB,kBAAkB;;;;;;;;;;;;;;;;;;;CAmBjC,kBAAkB,WAAW,WAAW,QAAQ;AAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,iBAAiB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAyBxB,UAAU,gBAAgB,aAAa;AACzC;;;;;;AAQA,YAAY,sBAAsB;;;;;;;;;;;;AAalC,YAAY,eACV,UAAU,sBAAsB,uBAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCJ,iBAAiB,oBACf,UAAU,sBAAsB,qBAChC;;CAEA,aAAa;;CAEb,UAAU,eAAe;;CAEzB,QAAQ;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,YAAY,kBACV,UAAU,sBAAsB,wBAC7B,OAAO,oBAAoB,OAAO;;;;;;;AAQvC,YAAY,2BACV,UAAU,sBAAsB,uBAC9B,kBAAkB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiD3B,iBAAiB,iBACf,UAAU,sBAAsB,qBAChC;;;;;MAKK,OAAO,oBAAoB,KAAK,aAAa;EAChD,eAAe,oBAAoB;CACrC;;CAGA;AACF;;;;;;;;;;AAWA,YAAY,mBACV,UAAU,sBAAsB,uBAC9B,kBAAkB,KAAK,iBAAiB;;;;AAK5C,iBAAiB,0BACf,UAAU,sBAAsB,6BAExB,iBAAiB,IAAI,iBAAiB,CAAC;;;;AAKjD,iBAAiB,yBACf,UAAU,sBAAsB,6BACxB,iBAAiB;CACzB,WAAW,mBAAmB;AAChC;;;;;;;;;AAUA,YAAY,mBACV,UAAU,sBAAsB,uBAE9B,yBAAyB,KACzB,0BAA0B,KAC1B,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsD/B,iBAAiB,oBACf,UAAU,sBAAsB,6BACxB,iBAAiB;;CAEzB,YAAY,mBAAmB;;;;;;;;;;CAW/B,QAAQ;iBAAiB,mBAAmB;CAAG;AACjD;;;;;;AAOA,iBAAiB,6BACf,UAAU,sBAAsB,6BACxB,iBAAiB;;;;;;CAMzB,WAAW,mBAAmB;AAChC","names":[],"ignoreList":[],"sources":["../src/interface.ts"]}
@@ -0,0 +1,11 @@
1
+ import type { DefaultResolvesType, RoutedLitElement, RoutedLitTemplate } from "./interface.js";
2
+ /**
3
+ * Binds a routed class to a single instance for as long as the returned renderer
4
+ * lives, so whoever holds the renderer decides how long the element survives.
5
+ *
6
+ * Not re-exported by `pure.ts`: this is plumbing shared by `core` and `ui-view`.
7
+ *
8
+ * @internal
9
+ */
10
+ export declare function routedLitElementRenderer<T extends DefaultResolvesType = DefaultResolvesType>(Component: RoutedLitElement<T>): RoutedLitTemplate<T>;
11
+ //# sourceMappingURL=routed-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routed-element.d.ts","mappings":"AAEA,cACE,qBACA,kBACA,yBAEK;;;;;;;;;AAUP,OAAO,iBAAS,yBACd,UAAU,sBAAsB,qBAChC,WAAW,iBAAiB,KAAK,kBAAkB","names":[],"ignoreList":[],"sources":["../src/routed-element.ts"]}
@@ -0,0 +1,10 @@
1
+ import { html } from "lit";
2
+ export function routedLitElementRenderer(Component) {
3
+ let element;
4
+ return (props) => {
5
+ element ??= new Component(props);
6
+ element._uiViewProps = props;
7
+ return html`${element}`;
8
+ };
9
+ }
10
+ //# sourceMappingURL=routed-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routed-element.js","mappings":"AAAA,SAAS,YAAY;AAiBrB,OAAO,SAAS,yBAEd,WAAsD;CACtD,IAAI;CACJ,QAAQ,UAAkC;EACxC,YAAY,IAAI,UAAU,KAAK;EAC/B,QAAQ,eAAe;EACvB,OAAO,IAAI,GAAG;CAChB;AACF","names":[],"ignoreList":[],"sources":["../src/routed-element.ts"]}
package/dist/ui-view.d.ts CHANGED
@@ -37,6 +37,7 @@ export declare class UiView extends LitElement {
37
37
  */
38
38
  uiRouter: UIRouterLit;
39
39
  private viewAddress;
40
+ /** Replaced only by a real view config change, so a retained view keeps its subtree. */
40
41
  private component;
41
42
  private readonly inner;
42
43
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"ui-view.d.ts","mappings":"AAAA,SAAS,kBAAkB;AAC3B,cAAc,gBAAgB,sBAAsB;AAEpD,SAME,kBASA,aACA,mBACK;AAQP,SAAwB,mBAAmB;;AAQ3C,iBAAiB,cAAc;CAC7B,SAAS,cAAc;CACvB;AACF;;;;;;;;;;;;;;;;;;;;;;;AAgCA,OAAO,cAAM,eAAe,WAAW;CACrC,AACA;;;;;CAMA,AACA,UAAW;CAEX,QACQ;CAER,QACQ;CAER,iBAAiB;;CAGjB;CAIA,iBAAiB;CAEjB,QAAQ;CAER,QAAQ;CAER,QAAQ;CAoBR,QAAQ;CAiBR,QACQ;CAER,iBAAiB;;CAWjB;CAUA,wBAAwB;CAExB,eAAe;;CAWf,OAAO,eAAe,WAAW,UAAU;CAM3C,QAAQ;CAIR,iBAAiB;CAIjB,QAAQ;CAQR,QAAQ;CAIR,iBAAiB;CAEjB,QAAQ;;CA2CR;;;;;;;;;CAqBA,QAAQ;;CAeR,cAAc,GAAG,MAAM,WAAW,WAAW;;;;CAW7C,QAAQ;;CA0DR,IAAW,eAAe;;CAK1B,IAAW,SAAS;;;;;;;;;;;CAcpB,UAAU,aAAa,SAAS;;CAQhC,UAAU,OAAO;AAwBnB;AAEA,iBAAiB,OAAO;;CAEtB,oBAAoB;AACtB","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
1
+ {"version":3,"file":"ui-view.d.ts","mappings":"AAAA,SAAS,kBAAkB;AAC3B,cAAc,gBAAgB,sBAAsB;AAEpD,SAME,kBASA,aACA,mBACK;AASP,SAAwB,mBAAuC;;AAS/D,iBAAiB,cAAc;CAC7B,SAAS,cAAc;CACvB;AACF;;;;;;;;;;;;;;;;;;;;;;;AAgCA,OAAO,cAAM,eAAe,WAAW;CACrC,AACA;;;;;CAMA,AACA,UAAW;CAEX,QACQ;;CAGR,QACQ;CAER,iBAAiB;;CAGjB;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;CAIjB,QAAQ;CAQR,QAAQ;CAIR,iBAAiB;CAEjB,QAAQ;;CA2CR;;;;;;;;;CAqBA,QAAQ;;CAeR,cAAc,GAAG,MAAM,WAAW,WAAW;;;;CAW7C,QAAQ;;CA2DR,IAAW,eAAe;;CAK1B,IAAW,SAAS;;;;;;;;;;;CAcpB,UAAU,aAAa,SAAS;;CAQhC,UAAU,OAAO;AAsBnB;AAEA,iBAAiB,OAAO;;CAEtB,oBAAoB;AACtB","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
package/dist/ui-view.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { LitElement } 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
- import { LitViewConfig } from "./core.js";
4
+ import { LitViewConfig, isRoutedLitElement } from "./core.js";
5
+ import { routedLitElementRenderer } from "./routed-element.js";
5
6
  import { warnMissingRouter } from "./dev-warn.js";
6
7
  import { UIRouterLitElement } from "./ui-router.js";
7
8
  import _decorate from "@oxc-project/runtime/helpers/decorate";
@@ -44,7 +45,8 @@ export class UiView extends LitElement {
44
45
  context: config.viewDecl.$context
45
46
  };
46
47
  this.resolveContext = new ResolveContext(config.path);
47
- this.component = config.viewDecl.component;
48
+ const { component } = config.viewDecl;
49
+ this.component = isRoutedLitElement(component) ? routedLitElementRenderer(component) : component;
48
50
  this.requestUpdate();
49
51
  }
50
52
  connectedCallback() {
@@ -159,13 +161,12 @@ export class UiView extends LitElement {
159
161
  if (!this.component || !this.viewAddress) return this.inner.cloneNode(true);
160
162
  const { uiRouter: router } = this;
161
163
  const injector = this.resolveContext.injector();
162
- const resolves = this.resolveContext.getTokens().filter((token) => isString(token)).map((token) => this.resolveContext.getResolvable(token)).filter((r) => r.resolved).map(({ token }) => [token, injector.get(token)]).reduce(applyPairs, {});
163
- const transition = injector.get(Transition);
164
- return this.component({
164
+ const props = {
165
165
  router,
166
- resolves,
167
- transition
168
- });
166
+ resolves: this.resolveContext.getTokens().filter((token) => isString(token)).map((token) => this.resolveContext.getResolvable(token)).filter((r) => r.resolved).map(({ token }) => [token, injector.get(token)]).reduce(applyPairs, {}),
167
+ transition: injector.get(Transition)
168
+ };
169
+ return this.component(props);
169
170
  }
170
171
  }
171
172
  _decorate([property()], UiView.prototype, "name", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ui-view.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
1
+ {"version":3,"file":"ui-view.js","mappings":"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","names":[],"ignoreList":[],"sources":["../src/ui-view.ts"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lit-ui-router",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
4
4
  "description": "State-based routing for Lit",
5
5
  "homepage": "https://lit-ui-router.dev",
6
6
  "license": "MIT",
package/src/core.ts CHANGED
@@ -11,17 +11,17 @@ import {
11
11
  ViewService,
12
12
  _ViewDeclaration,
13
13
  } from '@uirouter/core';
14
- import { html, LitElement } from 'lit';
14
+ import { LitElement } from 'lit';
15
15
 
16
16
  import {
17
17
  RoutedLitElement,
18
18
  LitViewDeclaration,
19
19
  LitViewDeclarationTemplate,
20
20
  NormalizedLitViewDeclaration,
21
- UIViewInjectedProps,
22
21
  LitViewDeclarationElement,
23
22
  DefaultResolvesType,
24
23
  } from './interface.js';
24
+ import { routedLitElementRenderer } from './routed-element.js';
25
25
 
26
26
  /**
27
27
  * `@uirouter/core` types `forEach` as `any` because it resolves to
@@ -133,9 +133,9 @@ export function litViewsBuilder<
133
133
  let normalizedConfig: NormalizedLitViewDeclaration<T>;
134
134
  name = name || '$default'; // Account for views: { "": { template... } }
135
135
  if (isLitViewDeclarationTemplate<T>(config)) {
136
- normalizedConfig = { component: config as LitViewDeclarationTemplate };
136
+ normalizedConfig = { component: config };
137
137
  } else {
138
- normalizedConfig = config as NormalizedLitViewDeclaration<T>;
138
+ normalizedConfig = config;
139
139
  }
140
140
  if (Object.keys(normalizedConfig || {}).length === 0) return;
141
141
 
@@ -151,14 +151,16 @@ export function litViewsBuilder<
151
151
  normalizedConfig.$uiViewContextAnchor =
152
152
  normalizedTarget.uiViewContextAnchor;
153
153
 
154
- if (isRoutedLitElement<T>(normalizedConfig.component)) {
155
- const Component = normalizedConfig.component;
156
- let component: InstanceType<RoutedLitElement<T>>;
157
- normalizedConfig.component = (props: UIViewInjectedProps<T>) => {
158
- component = (Component.sticky && component) || new Component(props);
159
- component._uiViewProps = props;
160
- return html`${component}`;
161
- };
154
+ // The declaration outlives every `<ui-view>` that renders it, so a renderer
155
+ // held here makes a `sticky` class survive exits. Other classes are left for
156
+ // `<ui-view>` to bind, which resets them when the view config changes.
157
+ if (
158
+ isRoutedLitElement<T>(normalizedConfig.component) &&
159
+ normalizedConfig.component.sticky
160
+ ) {
161
+ normalizedConfig.component = routedLitElementRenderer<T>(
162
+ normalizedConfig.component,
163
+ );
162
164
  }
163
165
 
164
166
  views[name] = viewsObject[name] = normalizedConfig;
package/src/interface.ts CHANGED
@@ -412,5 +412,10 @@ export interface LitStateDeclaration<
412
412
  export interface NormalizedLitViewDeclaration<
413
413
  T extends DefaultResolvesType = DefaultResolvesType,
414
414
  > extends _ViewDeclaration {
415
- component: RoutedLitTemplate<T>;
415
+ /**
416
+ * A template function, or a {@link RoutedLitElement} class that the rendering
417
+ * `<ui-view>` instantiates and owns. `sticky` classes are normalized to a
418
+ * template function so their single instance outlives any one `<ui-view>`.
419
+ */
420
+ component: RoutedLitComponent<T>;
416
421
  }
@@ -0,0 +1,27 @@
1
+ import { html } from 'lit';
2
+
3
+ import type {
4
+ DefaultResolvesType,
5
+ RoutedLitElement,
6
+ RoutedLitTemplate,
7
+ UIViewInjectedProps,
8
+ } from './interface.js';
9
+
10
+ /**
11
+ * Binds a routed class to a single instance for as long as the returned renderer
12
+ * lives, so whoever holds the renderer decides how long the element survives.
13
+ *
14
+ * Not re-exported by `pure.ts`: this is plumbing shared by `core` and `ui-view`.
15
+ *
16
+ * @internal
17
+ */
18
+ export function routedLitElementRenderer<
19
+ T extends DefaultResolvesType = DefaultResolvesType,
20
+ >(Component: RoutedLitElement<T>): RoutedLitTemplate<T> {
21
+ let element: InstanceType<RoutedLitElement<T>>;
22
+ return (props: UIViewInjectedProps<T>) => {
23
+ element ??= new Component(props);
24
+ element._uiViewProps = props;
25
+ return html`${element}`;
26
+ };
27
+ }
package/src/ui-view.ts CHANGED
@@ -22,11 +22,13 @@ import {
22
22
 
23
23
  import {
24
24
  RoutedLitTemplate,
25
+ UIViewInjectedProps,
25
26
  UiOnExit,
26
27
  UiOnParamsChanged,
27
28
  NormalizedLitViewDeclaration,
28
29
  } from './interface.js';
29
- import { LitViewConfig, UIRouterLit } from './core.js';
30
+ import { LitViewConfig, UIRouterLit, isRoutedLitElement } from './core.js';
31
+ import { routedLitElementRenderer } from './routed-element.js';
30
32
  import { warnMissingRouter } from './dev-warn.js';
31
33
  import { UIRouterLitElement, UiRouterContextEvent } from './ui-router.js';
32
34
 
@@ -83,6 +85,7 @@ export class UiView extends LitElement {
83
85
  @state()
84
86
  private viewAddress!: UiViewAddress;
85
87
 
88
+ /** Replaced only by a real view config change, so a retained view keeps its subtree. */
86
89
  @state()
87
90
  private component: RoutedLitTemplate | null = null;
88
91
 
@@ -130,9 +133,12 @@ export class UiView extends LitElement {
130
133
  }
131
134
 
132
135
  this.resolveContext = new ResolveContext(config.path);
133
- this.component = (
134
- config.viewDecl as NormalizedLitViewDeclaration
135
- ).component;
136
+ // Past the identity gate, so the config genuinely changed: a fresh renderer
137
+ // here is what drops the old element.
138
+ const { component } = config.viewDecl as NormalizedLitViewDeclaration;
139
+ this.component = isRoutedLitElement(component)
140
+ ? routedLitElementRenderer(component)
141
+ : component;
136
142
  this.requestUpdate();
137
143
  }
138
144
 
@@ -292,6 +298,7 @@ export class UiView extends LitElement {
292
298
  * For each transition, checks if any param values changed and notify component
293
299
  */
294
300
  private _invokeUiOnParamsChangedHook($transition$: Transition) {
301
+ // Fresh resolves need a re-render; `render` reuses the element rather than rebuilding it.
295
302
  this.requestUpdate();
296
303
 
297
304
  const instance = this.firstElementChild as UiOnParamsChanged & Element;
@@ -394,11 +401,9 @@ export class UiView extends LitElement {
394
401
  .reduce(applyPairs, {});
395
402
  const transition = injector.get(Transition) as Transition;
396
403
 
397
- return this.component({
398
- router,
399
- resolves,
400
- transition,
401
- });
404
+ const props: UIViewInjectedProps = { router, resolves, transition };
405
+
406
+ return this.component(props);
402
407
  }
403
408
  }
404
409