lit-ui-router 1.12.0 → 1.14.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.
Files changed (71) hide show
  1. package/README.md +4 -0
  2. package/dist/core.d.ts +2 -2
  3. package/dist/custom-elements.json +75 -1
  4. package/dist/development/pure.js +3 -0
  5. package/dist/development/pure.js.map +1 -1
  6. package/dist/development/sref-active.js +170 -0
  7. package/dist/development/sref-active.js.map +1 -0
  8. package/dist/development/sref-href.js +97 -0
  9. package/dist/development/sref-href.js.map +1 -0
  10. package/dist/development/sref-status-controller.js +115 -0
  11. package/dist/development/sref-status-controller.js.map +1 -0
  12. package/dist/development/sref-status.js +44 -0
  13. package/dist/development/sref-status.js.map +1 -0
  14. package/dist/development/ui-router.js.map +1 -1
  15. package/dist/development/ui-sref-active.js +51 -21
  16. package/dist/development/ui-sref-active.js.map +1 -1
  17. package/dist/development/ui-sref.js +36 -11
  18. package/dist/development/ui-sref.js.map +1 -1
  19. package/dist/development/ui-view.js +31 -5
  20. package/dist/development/ui-view.js.map +1 -1
  21. package/dist/interface.d.ts +31 -23
  22. package/dist/interface.d.ts.map +1 -1
  23. package/dist/pure.d.ts +3 -0
  24. package/dist/pure.d.ts.map +1 -1
  25. package/dist/pure.js +3 -0
  26. package/dist/pure.js.map +1 -1
  27. package/dist/sref-active.d.ts +269 -0
  28. package/dist/sref-active.d.ts.map +1 -0
  29. package/dist/sref-active.js +170 -0
  30. package/dist/sref-active.js.map +1 -0
  31. package/dist/sref-href.d.ts +99 -0
  32. package/dist/sref-href.d.ts.map +1 -0
  33. package/dist/sref-href.js +97 -0
  34. package/dist/sref-href.js.map +1 -0
  35. package/dist/sref-status-controller.d.ts +169 -0
  36. package/dist/sref-status-controller.d.ts.map +1 -0
  37. package/dist/sref-status-controller.js +115 -0
  38. package/dist/sref-status-controller.js.map +1 -0
  39. package/dist/sref-status.d.ts +53 -0
  40. package/dist/sref-status.d.ts.map +1 -0
  41. package/dist/sref-status.js +44 -0
  42. package/dist/sref-status.js.map +1 -0
  43. package/dist/transition-controller.d.ts +19 -19
  44. package/dist/ui-router.d.ts +1 -0
  45. package/dist/ui-router.d.ts.map +1 -1
  46. package/dist/ui-router.js.map +1 -1
  47. package/dist/ui-sref-active.d.ts +41 -7
  48. package/dist/ui-sref-active.d.ts.map +1 -1
  49. package/dist/ui-sref-active.js +51 -21
  50. package/dist/ui-sref-active.js.map +1 -1
  51. package/dist/ui-sref.d.ts +56 -8
  52. package/dist/ui-sref.d.ts.map +1 -1
  53. package/dist/ui-sref.js +36 -11
  54. package/dist/ui-sref.js.map +1 -1
  55. package/dist/ui-view.d.ts +37 -1
  56. package/dist/ui-view.d.ts.map +1 -1
  57. package/dist/ui-view.js +31 -5
  58. package/dist/ui-view.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/core.ts +2 -2
  61. package/src/interface.ts +31 -23
  62. package/src/pure.ts +3 -0
  63. package/src/sref-active.ts +555 -0
  64. package/src/sref-href.ts +250 -0
  65. package/src/sref-status-controller.ts +358 -0
  66. package/src/sref-status.ts +127 -0
  67. package/src/transition-controller.ts +19 -19
  68. package/src/ui-router.ts +1 -0
  69. package/src/ui-sref-active.ts +134 -71
  70. package/src/ui-sref.ts +106 -32
  71. package/src/ui-view.ts +82 -8
package/README.md CHANGED
@@ -91,6 +91,10 @@ class UserDetail extends LitElement {
91
91
  }
92
92
  ```
93
93
 
94
+ ## Navigation Links
95
+
96
+ `uiSref` and `uiSrefActive` bind a link from the element; `srefHref`, `srefActiveClass` and `srefAriaCurrent` bind the same link from inside the attribute it writes, so the `href` is real markup a static analyser or server renderer can read — see [Attribute-part forms](https://lit-ui-router.dev/api/#attribute-part-forms).
97
+
94
98
  ## Documentation
95
99
 
96
100
  Visit [lit-ui-router.dev](https://lit-ui-router.dev) for full documentation, tutorials, and API reference.
package/dist/core.d.ts CHANGED
@@ -65,7 +65,7 @@ export declare function litViewsBuilder<T extends DefaultResolvesType = DefaultR
65
65
  /**
66
66
  * The main router class for Lit applications.
67
67
  *
68
- * UIRouterLit extends the core {@link https://ui-router.github.io/core/docs/latest/classes/_router_.uirouter.html | UIRouter}
68
+ * UIRouterLit extends the core {@link UIRouter}
69
69
  * class from @uirouter/core, adding Lit-specific view handling and component integration.
70
70
  *
71
71
  * @example Basic usage
@@ -105,7 +105,7 @@ export declare function litViewsBuilder<T extends DefaultResolvesType = DefaultR
105
105
  * ```
106
106
  *
107
107
  * @see {@link https://ui-router.github.io/core/docs/latest/ | UI-Router Core Documentation}
108
- * @see {@link https://ui-router.github.io/core/docs/latest/classes/_router_.uirouter.html | UIRouter API Reference}
108
+ * @see {@link UIRouter | UIRouter API Reference}
109
109
  *
110
110
  * @category core
111
111
  */
@@ -10,6 +10,12 @@
10
10
  "kind": "class",
11
11
  "description": "",
12
12
  "name": "UiView",
13
+ "slots": [
14
+ {
15
+ "description": "<code>&lt;ui-view&gt;</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
- "readonly": true
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"
@@ -4,4 +4,7 @@ export * from "./ui-router.js";
4
4
  export * from "./ui-view.js";
5
5
  export * from "./ui-sref.js";
6
6
  export * from "./ui-sref-active.js";
7
+ export * from "./sref-href.js";
8
+ export * from "./sref-active.js";
9
+ export * from "./sref-status-controller.js";
7
10
  //# sourceMappingURL=pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","mappings":"AAEA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"ignoreList":[],"sources":["../../src/pure.ts"]}
1
+ {"version":3,"file":"pure.js","mappings":"AAEA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","names":[],"ignoreList":[],"sources":["../../src/pure.ts"]}
@@ -0,0 +1,170 @@
1
+ import { noChange, nothing } from "lit";
2
+ import { directive, PartType } from "lit/directive.js";
3
+ import { AsyncDirective } from "lit/async-directive.js";
4
+ import { warnMissingRouter } from "./dev-warn.js";
5
+ import { resolveAriaCurrent, SrefTargets } from "./sref-status.js";
6
+ import { UIRouterLitElement } from "./ui-router.js";
7
+ import { UI_SREF_TARGET_EVENT, UI_SREF_TARGET_REMOVED_EVENT } from "./ui-sref.js";
8
+ import { UiView } from "./ui-view.js";
9
+ export class SrefStatusDirective extends AsyncDirective {
10
+ constructor(partInfo, directiveName) {
11
+ super(partInfo);
12
+ this.directiveName = directiveName;
13
+ this.element = null;
14
+ this.parentView = null;
15
+ this.targets = new SrefTargets();
16
+ this._firstUpdated = false;
17
+ this._deregister = [];
18
+ this._connection = 0;
19
+ this.onUiSrefTargetEvent = (event) => {
20
+ this.targets.onLink(event);
21
+ this.refresh();
22
+ };
23
+ this.onUiSrefTargetRemovedEvent = (event) => {
24
+ if (this.targets.onLinkRemoved(event)) this.refresh();
25
+ };
26
+ this.onStatesChanged = () => {
27
+ this.targets.rebuild();
28
+ this.refresh();
29
+ };
30
+ this.onTransitionStart = (trans) => {
31
+ const connection = this._connection;
32
+ const settled = (evt) => {
33
+ if (connection === this._connection) this.refresh({
34
+ evt,
35
+ trans
36
+ });
37
+ };
38
+ this.refresh({
39
+ evt: "start",
40
+ trans
41
+ });
42
+ trans.promise.then(() => settled("success"), () => settled("error"));
43
+ };
44
+ if (partInfo.type !== PartType.ATTRIBUTE) throw new Error(`The \`${directiveName}\` directive must be used in an attribute`);
45
+ this.attributeName = partInfo.name;
46
+ }
47
+ update(part, [params]) {
48
+ this.params = params;
49
+ this.targets.params = params;
50
+ if (this.element !== part.element) {
51
+ this.element = part.element;
52
+ this._firstUpdated = false;
53
+ setTimeout(() => {
54
+ this.firstUpdated();
55
+ }, 0);
56
+ } else if (this.uiRouter) {
57
+ this.targets.setExplicit();
58
+ this.refresh();
59
+ return noChange;
60
+ }
61
+ return this.commit();
62
+ }
63
+ firstUpdated() {
64
+ if (this._firstUpdated || !this.isConnected) return;
65
+ const element = this.element;
66
+ this.uiRouter = UIRouterLitElement.seekRouter(element);
67
+ this.parentView = UiView.seekParentView(element);
68
+ this.targets.router = this.uiRouter;
69
+ this.targets.relative = this.parentView?.viewContext?.name;
70
+ this.targets.setExplicit();
71
+ element.addEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
72
+ element.addEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
73
+ this._deregister.push(() => {
74
+ element.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
75
+ element.removeEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
76
+ });
77
+ const router = this.uiRouter;
78
+ if (router) this._deregister.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
79
+ else warnMissingRouter(element, `<${element.localName} ${this.attributeName}=\${${this.directiveName}(...)}>`, "will never be marked active");
80
+ this._firstUpdated = true;
81
+ this.refresh();
82
+ }
83
+ refresh(event) {
84
+ this.status = this.targets.status(event);
85
+ const value = this.commit();
86
+ if (value !== noChange && this.isConnected) this.setValue(value);
87
+ }
88
+ disconnected() {
89
+ this._connection++;
90
+ this._deregister.forEach((deregister) => deregister());
91
+ this._deregister = [];
92
+ this._firstUpdated = false;
93
+ }
94
+ reconnected() {
95
+ setTimeout(() => {
96
+ this.firstUpdated();
97
+ }, 0);
98
+ }
99
+ }
100
+ export class SrefActiveClassDirective extends SrefStatusDirective {
101
+ constructor(partInfo) {
102
+ super(partInfo, "srefActiveClass");
103
+ const { name, strings } = partInfo;
104
+ if (name !== "class" || (strings?.length ?? 0) > 2) throw new Error("`srefActiveClass()` can only be used in the `class` attribute and must be the only expression in it");
105
+ }
106
+ classInfo({ activeClasses = [], exactClasses = [], classes = {} }) {
107
+ const info = {};
108
+ const { active = false, exact = false } = this.status ?? {};
109
+ for (const name in classes) info[name] = !!classes[name];
110
+ for (const name of activeClasses) info[name] = info[name] || active;
111
+ for (const name of exactClasses) info[name] = info[name] || exact;
112
+ return info;
113
+ }
114
+ render(params) {
115
+ if (!this.status) return noChange;
116
+ const info = this.classInfo(params);
117
+ return " " + Object.keys(info).filter((name) => info[name]).join(" ") + " ";
118
+ }
119
+ update(part, args) {
120
+ if (this._staticClasses === void 0 && part.strings !== void 0) this._staticClasses = new Set(part.strings.join(" ").split(/\s/).filter((s) => s !== ""));
121
+ return super.update(part, args);
122
+ }
123
+ commit() {
124
+ const info = this.classInfo(this.params);
125
+ if (this._previousClasses === void 0) {
126
+ const value = this.render(this.params);
127
+ if (value === noChange) return value;
128
+ this._previousClasses = new Set();
129
+ for (const name in info) if (info[name] && !this._staticClasses?.has(name)) this._previousClasses.add(name);
130
+ return value;
131
+ }
132
+ const { classList } = this.element;
133
+ for (const name of this._previousClasses) if (!(name in info)) {
134
+ classList.remove(name);
135
+ this._previousClasses.delete(name);
136
+ }
137
+ for (const name in info) {
138
+ const value = info[name];
139
+ if (value !== this._previousClasses.has(name) && !this._staticClasses?.has(name)) {
140
+ if (value) {
141
+ classList.add(name);
142
+ this._previousClasses.add(name);
143
+ } else {
144
+ classList.remove(name);
145
+ this._previousClasses.delete(name);
146
+ }
147
+ }
148
+ }
149
+ return noChange;
150
+ }
151
+ }
152
+ export class SrefAriaCurrentDirective extends SrefStatusDirective {
153
+ constructor(partInfo) {
154
+ super(partInfo, "srefAriaCurrent");
155
+ this._wrote = false;
156
+ if (partInfo.strings !== void 0) throw new Error("`srefAriaCurrent()` must be the only expression in its attribute");
157
+ }
158
+ commit() {
159
+ if (!this.status) return this._wrote ? nothing : noChange;
160
+ this._wrote = true;
161
+ return this.render(this.params);
162
+ }
163
+ render({ value = "page" }) {
164
+ if (!this.status) return noChange;
165
+ return resolveAriaCurrent(this.status, value);
166
+ }
167
+ }
168
+ export const srefActiveClass = directive(SrefActiveClassDirective);
169
+ export const srefAriaCurrent = directive(SrefAriaCurrentDirective);
170
+ //# sourceMappingURL=sref-active.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sref-active.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-active.ts"]}
@@ -0,0 +1,97 @@
1
+ import { noChange, nothing } from "lit";
2
+ import { directive, PartType } from "lit/directive.js";
3
+ import { AsyncDirective } from "lit/async-directive.js";
4
+ import { warnMissingRouter } from "./dev-warn.js";
5
+ import { UIRouterLitElement } from "./ui-router.js";
6
+ import { clickBelongsToBrowser, sameTarget, srefTransitionOptions, uiSrefTargetEvent, uiSrefTargetRemovedEvent } from "./ui-sref.js";
7
+ import { UiView } from "./ui-view.js";
8
+ export class SrefHrefDirective extends AsyncDirective {
9
+ constructor(partInfo) {
10
+ super(partInfo);
11
+ this.state = null;
12
+ this.params = {};
13
+ this.options = {};
14
+ this.element = null;
15
+ this.parentView = null;
16
+ this.href = null;
17
+ this.targetState = null;
18
+ this._seekedRouter = false;
19
+ this._firstUpdated = false;
20
+ this.doRender = () => {
21
+ const value = this.render(this.state, this.params, this.options);
22
+ if (value !== noChange && this.isConnected) this.setValue(value);
23
+ };
24
+ this.onClick = (event) => {
25
+ const { uiRouter: router, state, params } = this;
26
+ const $state = router?.stateService;
27
+ if (!$state || !this.element?.isConnected || !state) {
28
+ if (!$state && state && this.element?.isConnected) this.warnMissingRouter(state);
29
+ return;
30
+ }
31
+ if (clickBelongsToBrowser(event, event.currentTarget)) return;
32
+ $state.go(state, params, this.getOptions());
33
+ event.preventDefault();
34
+ };
35
+ if (partInfo.type !== PartType.ATTRIBUTE || partInfo.strings !== void 0) throw new Error("The `srefHref` directive must be the only expression in an attribute: href=${srefHref(...)}");
36
+ }
37
+ getOptions(opts = this.options) {
38
+ return srefTransitionOptions(this.parentView, opts);
39
+ }
40
+ render(state, params, options) {
41
+ const $state = this.uiRouter?.stateService;
42
+ if (!$state) {
43
+ if (this._seekedRouter) this.warnMissingRouter(state);
44
+ return noChange;
45
+ }
46
+ const targetState = $state.target(state, params, this.getOptions(options));
47
+ const targetChanged = !sameTarget(this.targetState, targetState);
48
+ this.targetState = targetState;
49
+ this.href = $state.href(state, params, this.getOptions(options));
50
+ if (targetChanged && this.element) this.element.dispatchEvent(uiSrefTargetEvent(targetState));
51
+ return this.href ?? nothing;
52
+ }
53
+ update(part, [state, params = {}, options = {}]) {
54
+ this.state = state;
55
+ this.params = params;
56
+ this.options = options;
57
+ if (this.element !== part.element) {
58
+ this.element = part.element;
59
+ this._firstUpdated = false;
60
+ setTimeout(() => {
61
+ this.firstUpdated();
62
+ }, 0);
63
+ }
64
+ return this.render(state, params, options);
65
+ }
66
+ firstUpdated() {
67
+ if (this._firstUpdated || !this.isConnected) return;
68
+ const element = this.element;
69
+ this.uiRouter = UIRouterLitElement.seekRouter(element);
70
+ this._seekedRouter = true;
71
+ this.parentView = UiView.seekParentView(element);
72
+ element.addEventListener("click", this.onClick);
73
+ if (this.uiRouter) this.unsubscribe = this.uiRouter.stateRegistry.onStatesChanged(this.doRender);
74
+ this.doRender();
75
+ this._firstUpdated = true;
76
+ }
77
+ warnMissingRouter(state) {
78
+ const element = this.element;
79
+ if (!element) return;
80
+ warnMissingRouter(element, `<${element.localName} href=\${srefHref('${state}')}>`, "will not navigate");
81
+ }
82
+ disconnected() {
83
+ this.element?.removeEventListener("click", this.onClick);
84
+ this.element?.dispatchEvent(uiSrefTargetRemovedEvent());
85
+ this.targetState = null;
86
+ this.unsubscribe?.();
87
+ this.unsubscribe = void 0;
88
+ this._firstUpdated = false;
89
+ }
90
+ reconnected() {
91
+ setTimeout(() => {
92
+ this.firstUpdated();
93
+ }, 0);
94
+ }
95
+ }
96
+ export const srefHref = directive(SrefHrefDirective);
97
+ //# sourceMappingURL=sref-href.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sref-href.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-href.ts"]}
@@ -0,0 +1,115 @@
1
+ import { nothing } from "lit";
2
+ import { warnMissingRouter } from "./dev-warn.js";
3
+ import { resolveAriaCurrent, SrefTargets } from "./sref-status.js";
4
+ import { UIRouterLitElement } from "./ui-router.js";
5
+ import { UI_SREF_TARGET_EVENT, UI_SREF_TARGET_REMOVED_EVENT } from "./ui-sref.js";
6
+ import { UiView } from "./ui-view.js";
7
+ const sameShape = (a, b) => a === b || !!a && !!b && a.active === b.active && a.exact === b.exact && a.entering === b.entering && a.exiting === b.exiting && a.targetStates.length === b.targetStates.length && a.targetStates.every((target, i) => target === b.targetStates[i]);
8
+ export class SrefStatusController {
9
+ constructor(host, options = {}) {
10
+ this.targets = new SrefTargets();
11
+ this.deregisterFns = [];
12
+ this.computed = false;
13
+ this._connection = 0;
14
+ this.onUiSrefTargetEvent = (event) => {
15
+ this.targets.onLink(event);
16
+ this.refresh();
17
+ };
18
+ this.onUiSrefTargetRemovedEvent = (event) => {
19
+ if (this.targets.onLinkRemoved(event)) this.refresh();
20
+ };
21
+ this.onStatesChanged = () => {
22
+ this.targets.rebuild();
23
+ this.refresh();
24
+ };
25
+ this.onTransitionStart = (trans) => {
26
+ const connection = this._connection;
27
+ const settled = (evt) => {
28
+ if (connection === this._connection) this.refresh({
29
+ evt,
30
+ trans
31
+ });
32
+ };
33
+ this.refresh({
34
+ evt: "start",
35
+ trans
36
+ });
37
+ trans.promise.then(() => settled("success"), () => settled("error"));
38
+ };
39
+ this.host = host;
40
+ this.options = options;
41
+ this.targets.params = options;
42
+ host.addController(this);
43
+ if (options.router) {
44
+ this.targets.router = options.router;
45
+ this.targets.setExplicit();
46
+ this.compute();
47
+ }
48
+ }
49
+ get router() {
50
+ return this.targets.router;
51
+ }
52
+ get status() {
53
+ return this._status;
54
+ }
55
+ get active() {
56
+ return this._status?.active ?? false;
57
+ }
58
+ get exact() {
59
+ return this._status?.exact ?? false;
60
+ }
61
+ get entering() {
62
+ return this._status?.entering ?? false;
63
+ }
64
+ get exiting() {
65
+ return this._status?.exiting ?? false;
66
+ }
67
+ get targetStates() {
68
+ return this._status?.targetStates ?? [];
69
+ }
70
+ retarget(params) {
71
+ this.options = {
72
+ router: this.options.router,
73
+ ...params
74
+ };
75
+ this.targets.params = this.options;
76
+ this.targets.setExplicit();
77
+ this.refresh();
78
+ }
79
+ ariaCurrent(value) {
80
+ return this._status ? resolveAriaCurrent(this._status, value) : nothing;
81
+ }
82
+ hostConnected() {
83
+ const { host } = this;
84
+ this.targets.router ??= this.options.router ?? UIRouterLitElement.seekRouter(host);
85
+ this.targets.relative = UiView.seekParentView(host)?.viewContext?.name;
86
+ this.targets.setExplicit();
87
+ const scope = host.renderRoot ?? host;
88
+ scope.addEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
89
+ scope.addEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
90
+ this.deregisterFns.push(() => {
91
+ scope.removeEventListener(UI_SREF_TARGET_EVENT, this.onUiSrefTargetEvent);
92
+ scope.removeEventListener(UI_SREF_TARGET_REMOVED_EVENT, this.onUiSrefTargetRemovedEvent);
93
+ });
94
+ const router = this.targets.router;
95
+ if (router) this.deregisterFns.push(router.transitionService.onStart({}, this.onTransitionStart, { priority: -Infinity }), router.stateRegistry.onStatesChanged(this.onStatesChanged));
96
+ else warnMissingRouter(host, `new SrefStatusController() on <${host.localName}>`, "will never be marked active");
97
+ this.refresh();
98
+ }
99
+ hostDisconnected() {
100
+ this._connection++;
101
+ while (this.deregisterFns.length) this.deregisterFns.shift()?.();
102
+ if (!this.options.router) this.targets.router = void 0;
103
+ }
104
+ refresh(event) {
105
+ if (this.compute(event)) this.host.requestUpdate();
106
+ }
107
+ compute(event) {
108
+ const before = this._status;
109
+ this._status = this.targets.status(event);
110
+ const first = !this.computed;
111
+ this.computed = true;
112
+ return first || !sameShape(before, this._status);
113
+ }
114
+ }
115
+ //# sourceMappingURL=sref-status-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sref-status-controller.js","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/sref-status-controller.ts"]}
@@ -0,0 +1,44 @@
1
+ import { extend } from "@uirouter/core";
2
+ import { nothing } from "lit";
3
+ import { srefEventLink } from "./ui-sref.js";
4
+ import { mergeSrefStatus, srefStatus } from "./ui-sref-active.js";
5
+ export class SrefTargets {
6
+ constructor() {
7
+ this.params = {};
8
+ this.explicit = null;
9
+ this.links = new Map();
10
+ }
11
+ options() {
12
+ const defaultOpts = { relative: this.relative };
13
+ return extend(defaultOpts, this.params.options || {});
14
+ }
15
+ setExplicit() {
16
+ const { state, params = {} } = this.params;
17
+ this.explicit = state && this.router ? this.router.stateService.target(state, params, this.options()) : null;
18
+ }
19
+ onLink(event) {
20
+ this.links.set(srefEventLink(event), event.detail.targetState);
21
+ }
22
+ onLinkRemoved(event) {
23
+ return this.links.delete(srefEventLink(event));
24
+ }
25
+ rebuild() {
26
+ this.setExplicit();
27
+ const $state = this.router.stateService;
28
+ for (const [element, target] of this.links) this.links.set(element, $state.target(target.identifier(), target.params(), target.options()));
29
+ }
30
+ list() {
31
+ for (const element of this.links.keys()) if (!element.isConnected) this.links.delete(element);
32
+ return this.explicit ? [this.explicit] : [...this.links.values()];
33
+ }
34
+ status(event) {
35
+ const router = this.router;
36
+ const targets = this.list();
37
+ return router && targets.length ? targets.map((target) => srefStatus(router, event, target)).reduce(mergeSrefStatus) : void 0;
38
+ }
39
+ }
40
+ export function resolveAriaCurrent(status, value = "page") {
41
+ const values = typeof value === "object" ? value : { exact: value };
42
+ return (status.exact ? values.exact ?? "page" : status.active ? values.active ?? false : false) || nothing;
43
+ }
44
+ //# sourceMappingURL=sref-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sref-status.js","mappings":"AAAA,SACE,cAIK;AACP,SAAS,eAAe;AAGxB,SAAS,qBAAwC;AACjD,SAGE,iBAEA,kBAEK;AAYP,OAAO,MAAM,YAAY;;gBAKI,CAAC;kBAMW;eAGd,IAAI,IAA0B;;CAGvD,UAA6B;EAC3B,MAAM,cAAiC,EAAE,UAAU,KAAK,SAAS;EACjE,OAAO,OAAO,aAAa,KAAK,OAAO,WAAW,CAAC,CAAC;CACtD;CAGA,cAAoB;EAClB,MAAM,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK;EACpC,KAAK,WACH,SAAS,KAAK,SACV,KAAK,OAAO,aAAa,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,IAC7D;CACR;CAGA,OAAO,OAAgC;EACrC,KAAK,MAAM,IAAI,cAAc,KAAK,GAAG,MAAM,OAAO,WAAW;CAC/D;CAGA,cAAc,OAAuB;EACnC,OAAO,KAAK,MAAM,OAAO,cAAc,KAAK,CAAC;CAC/C;CAMA,UAAgB;EACd,KAAK,YAAY;EACjB,MAAM,SAAS,KAAK,OAAQ;EAC5B,KAAK,MAAM,CAAC,SAAS,WAAW,KAAK,OACnC,KAAK,MAAM,IACT,SACA,OAAO,OAAO,OAAO,WAAW,GAAG,OAAO,OAAO,GAAG,OAAO,QAAQ,CAAC,CACtE;CAEJ;CAGA,OAAsB;EACpB,KAAK,MAAM,WAAW,KAAK,MAAM,KAAK,GACpC,IAAI,CAAC,QAAQ,aACX,KAAK,MAAM,OAAO,OAAO;EAG7B,OAAO,KAAK,WAAW,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,KAAK,MAAM,OAAO,CAAC;CAClE;CAGA,OAAO,OAA0C;EAC/C,MAAM,SAAS,KAAK;EACpB,MAAM,UAAU,KAAK,KAAK;EAC1B,OAAO,UAAU,QAAQ,SACrB,QACG,KAAK,WAAW,WAAW,QAAQ,OAAO,MAAM,CAAC,CAAC,CAClD,OAAO,eAAe,IACzB;CACN;AACF;AASA,OAAO,SAAS,mBACd,QACA,QAA8C,QACX;CACnC,MAAM,SACJ,OAAO,UAAU,WAAW,QAAQ,EAAE,OAAO,MAAM;CAMrD,QALiB,OAAO,QACnB,OAAO,SAAS,SACjB,OAAO,SACJ,OAAO,UAAU,QAClB,UACa;AACrB","names":[],"ignoreList":[],"sources":["../../src/sref-status.ts"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ui-router.js","mappings":"AAAA,SAAS,MAAM,kBAAkB;AAEjC,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;;AA2B5B,OAAO,MAAM,2BAA2B,WAAW;;;iCAqDN,UAAgC;GACzE,KAAK,YAAY,uBAAuB,KAAK,QAAQ,CAAC,CAAC,KAAK;EAC9D;;;kCA9CkC;;CAGlC,OAAO,qBAAqB,UAA8C;EACxE,OAAO,IAAI,YAAY,KAAK,0BAA0B;GACpD,SAAS;GACT,UAAU;GACV,QAAQ,EACN,SACF;EACF,CAAC;CACH;CAiBA,OAAO,WAAW,WAA6C;EAC7D,MAAM,uBAAuB,KAAK,qBAAqB;EACvD,UAAU,cAAc,oBAAoB;EAC5C,OAAO,qBAAqB,OAAO;CACrC;CAGA,OAAO,uBACL,UACuC;EACvC,QAAQ,UAAgC;GACtC,MAAM,gBAAgB;GACtB,MAAM,OAAO,WAAW;EAC1B;CACF;CAOA,oBAA0B;EACxB,MAAM,kBAAkB;EACxB,KAAK,WAAW,KAAK,YAAY,IAAI,YAAY;EAEjD,KAAK,iBACH,KAAK,YAAY,0BACjB,KAAK,sBACP;EAEA,KAAK,cAAc,KAAK,YAAY,qBAAqB,KAAK,QAAQ,CAAC;CACzE;CAGA,SAAyB;EACvB,OAAO,IAAI;CACb;AACF;WArEG,SAAS,EAAE,WAAW,MAAM,CAAC","names":[],"ignoreList":[],"sources":["../../src/ui-router.ts"]}
1
+ {"version":3,"file":"ui-router.js","mappings":"AAAA,SAAS,MAAM,kBAAkB;AAEjC,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;;AA4B5B,OAAO,MAAM,2BAA2B,WAAW;;;iCAqDN,UAAgC;GACzE,KAAK,YAAY,uBAAuB,KAAK,QAAQ,CAAC,CAAC,KAAK;EAC9D;;;kCA9CkC;;CAGlC,OAAO,qBAAqB,UAA8C;EACxE,OAAO,IAAI,YAAY,KAAK,0BAA0B;GACpD,SAAS;GACT,UAAU;GACV,QAAQ,EACN,SACF;EACF,CAAC;CACH;CAiBA,OAAO,WAAW,WAA6C;EAC7D,MAAM,uBAAuB,KAAK,qBAAqB;EACvD,UAAU,cAAc,oBAAoB;EAC5C,OAAO,qBAAqB,OAAO;CACrC;CAGA,OAAO,uBACL,UACuC;EACvC,QAAQ,UAAgC;GACtC,MAAM,gBAAgB;GACtB,MAAM,OAAO,WAAW;EAC1B;CACF;CAOA,oBAA0B;EACxB,MAAM,kBAAkB;EACxB,KAAK,WAAW,KAAK,YAAY,IAAI,YAAY;EAEjD,KAAK,iBACH,KAAK,YAAY,0BACjB,KAAK,sBACP;EAEA,KAAK,cAAc,KAAK,YAAY,qBAAqB,KAAK,QAAQ,CAAC;CACzE;CAGA,SAAyB;EACvB,OAAO,IAAI;CACb;AACF;WArEG,SAAS,EAAE,WAAW,MAAM,CAAC","names":[],"ignoreList":[],"sources":["../../src/ui-router.ts"]}