lit-ui-router 1.13.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 (68) hide show
  1. package/README.md +4 -0
  2. package/dist/core.d.ts +2 -2
  3. package/dist/development/pure.js +3 -0
  4. package/dist/development/pure.js.map +1 -1
  5. package/dist/development/sref-active.js +170 -0
  6. package/dist/development/sref-active.js.map +1 -0
  7. package/dist/development/sref-href.js +97 -0
  8. package/dist/development/sref-href.js.map +1 -0
  9. package/dist/development/sref-status-controller.js +115 -0
  10. package/dist/development/sref-status-controller.js.map +1 -0
  11. package/dist/development/sref-status.js +44 -0
  12. package/dist/development/sref-status.js.map +1 -0
  13. package/dist/development/ui-router.js.map +1 -1
  14. package/dist/development/ui-sref-active.js +18 -15
  15. package/dist/development/ui-sref-active.js.map +1 -1
  16. package/dist/development/ui-sref.js +27 -10
  17. package/dist/development/ui-sref.js.map +1 -1
  18. package/dist/development/ui-view.js.map +1 -1
  19. package/dist/interface.d.ts +31 -23
  20. package/dist/interface.d.ts.map +1 -1
  21. package/dist/pure.d.ts +3 -0
  22. package/dist/pure.d.ts.map +1 -1
  23. package/dist/pure.js +3 -0
  24. package/dist/pure.js.map +1 -1
  25. package/dist/sref-active.d.ts +269 -0
  26. package/dist/sref-active.d.ts.map +1 -0
  27. package/dist/sref-active.js +170 -0
  28. package/dist/sref-active.js.map +1 -0
  29. package/dist/sref-href.d.ts +99 -0
  30. package/dist/sref-href.d.ts.map +1 -0
  31. package/dist/sref-href.js +97 -0
  32. package/dist/sref-href.js.map +1 -0
  33. package/dist/sref-status-controller.d.ts +169 -0
  34. package/dist/sref-status-controller.d.ts.map +1 -0
  35. package/dist/sref-status-controller.js +115 -0
  36. package/dist/sref-status-controller.js.map +1 -0
  37. package/dist/sref-status.d.ts +53 -0
  38. package/dist/sref-status.d.ts.map +1 -0
  39. package/dist/sref-status.js +44 -0
  40. package/dist/sref-status.js.map +1 -0
  41. package/dist/transition-controller.d.ts +19 -19
  42. package/dist/ui-router.d.ts +1 -0
  43. package/dist/ui-router.d.ts.map +1 -1
  44. package/dist/ui-router.js.map +1 -1
  45. package/dist/ui-sref-active.d.ts +16 -7
  46. package/dist/ui-sref-active.d.ts.map +1 -1
  47. package/dist/ui-sref-active.js +18 -15
  48. package/dist/ui-sref-active.js.map +1 -1
  49. package/dist/ui-sref.d.ts +46 -8
  50. package/dist/ui-sref.d.ts.map +1 -1
  51. package/dist/ui-sref.js +27 -10
  52. package/dist/ui-sref.js.map +1 -1
  53. package/dist/ui-view.d.ts +1 -0
  54. package/dist/ui-view.d.ts.map +1 -1
  55. package/dist/ui-view.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/core.ts +2 -2
  58. package/src/interface.ts +31 -23
  59. package/src/pure.ts +3 -0
  60. package/src/sref-active.ts +555 -0
  61. package/src/sref-href.ts +250 -0
  62. package/src/sref-status-controller.ts +358 -0
  63. package/src/sref-status.ts +127 -0
  64. package/src/transition-controller.ts +19 -19
  65. package/src/ui-router.ts +1 -0
  66. package/src/ui-sref-active.ts +60 -52
  67. package/src/ui-sref.ts +81 -29
  68. package/src/ui-view.ts +1 -0
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
  */
@@ -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"]}
@@ -37,6 +37,23 @@ export function mergeSrefStatus(left, right) {
37
37
  targetStates: [...left.targetStates, ...right.targetStates]
38
38
  };
39
39
  }
40
+ export function srefStatus(router, event, srefTarget) {
41
+ const pathMatchesTarget = pathMatches(srefTarget);
42
+ const tc = event?.trans.treeChanges();
43
+ const isStartEvent = event?.evt === "start";
44
+ const activePath = event?.evt === "success" ? tc?.to : tc?.from;
45
+ const isActive = () => activePath ? spreadToSubPaths([], activePath).map(pathMatchesTarget).reduce(anyTrueR, false) : router.stateService.includes(srefTarget.name(), srefTarget.params());
46
+ const isExact = () => activePath ? pathMatchesTarget(activePath) : router.stateService.is(srefTarget.name(), srefTarget.params());
47
+ const isEntering = () => spreadToSubPaths(tc.retained, tc.entering).map(pathMatchesTarget).reduce(anyTrueR, false);
48
+ const isExiting = () => spreadToSubPaths(tc.retained, tc.exiting).map(pathMatchesTarget).reduce(anyTrueR, false);
49
+ return {
50
+ active: isActive(),
51
+ exact: isExact(),
52
+ entering: isStartEvent ? isEntering() : false,
53
+ exiting: isStartEvent ? isExiting() : false,
54
+ targetStates: [srefTarget]
55
+ };
56
+ }
40
57
  const isLinkElement = (element) => isNativeLink(element) || element.matches("[role~=\"link\"]");
41
58
  const toAriaCurrentValues = (ariaCurrentValue) => typeof ariaCurrentValue === "object" ? ariaCurrentValue : { exact: ariaCurrentValue };
42
59
  let _first = null;
@@ -152,21 +169,7 @@ export class UiSrefActiveDirective extends AsyncDirective {
152
169
  return extend(defaultOpts, this.options || {});
153
170
  }
154
171
  getSrefStatus(event, srefTarget) {
155
- const pathMatchesTarget = pathMatches(srefTarget);
156
- const tc = event?.trans.treeChanges();
157
- const isStartEvent = event?.evt === "start";
158
- const activePath = event?.evt === "success" ? tc?.to : tc?.from;
159
- const isActive = () => activePath ? spreadToSubPaths([], activePath).map(pathMatchesTarget).reduce(anyTrueR, false) : this.uiRouter.stateService.includes(srefTarget.name(), srefTarget.params());
160
- const isExact = () => activePath ? pathMatchesTarget(activePath) : this.uiRouter.stateService.is(srefTarget.name(), srefTarget.params());
161
- const isEntering = () => spreadToSubPaths(tc.retained, tc.entering).map(pathMatchesTarget).reduce(anyTrueR, false);
162
- const isExiting = () => spreadToSubPaths(tc.retained, tc.exiting).map(pathMatchesTarget).reduce(anyTrueR, false);
163
- return {
164
- active: isActive(),
165
- exact: isExact(),
166
- entering: isStartEvent ? isEntering() : false,
167
- exiting: isStartEvent ? isExiting() : false,
168
- targetStates: [srefTarget]
169
- };
172
+ return srefStatus(this.uiRouter, event, srefTarget);
170
173
  }
171
174
  async update(part, [{ activeClasses, exactClasses, ariaCurrentValue, state, params = {}, options = {}, targetStates }]) {
172
175
  this.activeClasses = activeClasses;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-sref-active.js","mappings":"AAAA,SACE,UACA,QACA,OAEA,WAIA,MAIA,eACK;AACP,SAAS,gBAA6B;AACtC,SAAS,WAAqB,gBAAgB;AAE9C,SAAS,sBAAsB;AAG/B,SAAS,0BAA0B;AACnC,SAAS,cAAc,yBAAyB;AAChD,SACE,cAGA,4BACK;AACP,SAAS,cAAc;AAavB,OAAO,MAAM,gCAAgC;AAM7C,OAAO,IAAK,wBAAL;CAEL;CAEA;CAEA;;AACF;AAkCA,MAAM,eAAe,WAA+C;CAClE,IAAI,CAAC,OAAO,OAAO,GAAG,aAAa;CACnC,MAAM,QAAqB,OAAO,OAAO;CACzC,MAAM,kBAAkB,OAAO,OAAO;CAEtC,MAAM,cADyB,UAAU,UAAU,MACb,CAAC,CACpC,KAAK,SAAS,KAAK,WAAW,CAAC,CAC/B,OAAgB,SAAS,CAAC,CAAC,CAAC,CAC5B,QAAQ,UACP,OAAO,UAAU,eAAe,KAAK,iBAAiB,MAAM,EAAE,CAChE;CACF,QAAQ,OAAmB,CAAC,MAAM;EAChC,MAAM,WAAW,KAAK,IAAI;EAC1B,IAAI,CAAC,YAAY,SAAS,UAAU,OAAO,OAAO;EAClD,MAAM,cAAc,UAAU,YAAY,IAAI;EAC9C,OAAO,MAAM,OAAO,aAAa,aAAa,eAAe;CAC/D;AACF;AASA,SAAS,iBACP,UACA,YACc;CACd,OAAO,WAAW,KAAK,SACrB,SAAS,OACP,UAAU,QAAQ,aAAa,MAAM,EAAG,UAAU,KAAK,KAAK,CAC9D,CACF;AACF;AAGA,OAAO,SAAS,gBACd,MACA,OACY;CACZ,OAAO;EACL,QAAQ,KAAK,UAAU,MAAM;EAC7B,OAAO,KAAK,SAAS,MAAM;EAC3B,UAAU,KAAK,YAAY,MAAM;EACjC,SAAS,KAAK,WAAW,MAAM;EAC/B,cAAc,CAAC,GAAG,KAAK,cAAc,GAAG,MAAM,YAAY;CAC5D;AACF;AAoDA,MAAM,iBAAiB,YACrB,aAAa,OAAO,KAAK,QAAQ,QAAQ,kBAAgB;AAQ3D,MAAM,uBACJ,qBAEA,OAAO,qBAAqB,WACxB,mBACA,EAAE,OAAO,iBAAiB;AA2ChC,IAAI,SAAuC;AAqB3C,OAAO,MAAM,8BAA8B,eAAe;CAKxD,aAAmB;EACjB,KAAK,WAAW,mBAAmB,WAAW,KAAK,OAAQ;CAC7D;CAIA,iBAAuB;EACrB,KAAK,aAAa,OAAO,eAAe,KAAK,OAAQ;CACvD;CAmEA,YAAY,UAAoB;EAC9B,MAAM,QAAQ;iBAhFU;oBAQE;uBAMF,CAAC;sBACF,CAAC;yBASA;mCAQU;gBAGhB,CAAC;iBACQ,CAAC;sBAOG,IAAI,IAAiB;iBACP,IAAI,QAGjD;sBAM8B,IAAI,QAAoC;sBAWjC;2BAMgB;qBAMjC;wBA+OY;GAChC,OAAO,KAAK,OAAO;IACjB,eAAe,KAAK;IACpB,cAAc,KAAK;IACnB,kBAAkB,KAAK;GACzB,CAAC;EACH;uBAGgB;8BAwHO,UAAmC;GACxD,MAAM,EAAE,gBAAgB,MAAM;GAC9B,MAAM,WAAW,KAAK,aAAa,IAAI,MAAM,MAAM;GACnD,IAAI,UAAU;IACZ,KAAK,aAAa,OAAO,QAAQ;IACjC,KAAK,QAAQ,OAAO,QAAQ;GAC9B;GACA,KAAK,aAAa,IAAI,WAAW;GACjC,KAAK,QAAQ,IAAI,aAAa,MAAM,MAAM;GAC1C,KAAK,aAAa,IAAI,MAAM,QAAQ,WAAW;GAC/C,IAAI,KAAK,eACP,KAAK,gBAAgB;EAEzB;kCAG2B,MAAmB;GAC5C,MAAM,QAAQ;GACd,MAAM,SAAS,KAAK,UAAU,MAAM,MAAM;GAC1C,IAAI,CAAC,QACH;GAEF,MAAM,EAAE,QAAQ,OAAO,UAAU,YAAY;GAC7C,KAAK,SAAS;GACd,KAAK,QAAQ;GACb,KAAK,WAAW;GAChB,KAAK,UAAU;GACf,KAAK,SAAS;EAChB;4BAgBqB,UAA4B;GAE/C,MAAM,aAAa,KAAK;GACxB,MAAM,YAAY,QAAqC;IACrD,IAAI,eAAe,KAAK,aACtB;IAEF,KAAK,SAAS,cACZ,KAAK,iCAAiC,KAAK,KAAK,CAClD;GACF;GACA,SAAS,sBAAsB,KAAK;GACpC,MAAM,QAAQ,WACN,SAAS,sBAAsB,OAAO,SACtC,SAAS,sBAAsB,KAAK,CAC5C;EACF;+BAG8B;GAC5B,MAAM,EAAE,QAAQ,UAAU,KAAK,UAAU,KAAK,CAAC;GAC/C,KAAK,SAAS;GACd,KAAK,QAAQ;GACb,KAAK,SAAS;EAChB;EA/aE,IAAI,SAAS,SAAS,SAAS,SAC7B,MAAM,IAAI,MACR,yDACF;EAGF,SAAS,UAAU;CACrB;CAGA,OAAO,EACL,eACA,cACA,oBAC+C;EAC/C,IAAI,CAAC,KAAK,eACR,OAAO;EAET,eAAe,SAAS,cAAc;GACpC,IAAI,KAAK,QACP,KAAK,QAAS,UAAU,IAAI,SAAS;QAErC,KAAK,QAAS,UAAU,OAAO,SAAS;EAE5C,CAAC;EAED,cAAc,SAAS,cAAc;GACnC,IAAI,KAAK,OACP,KAAK,QAAS,UAAU,IAAI,SAAS;QAErC,KAAK,QAAS,UAAU,OAAO,SAAS;EAE5C,CAAC;EAED,KAAK,iBAAiB,gBAAgB;EAEtC,OAAO;CACT;CAYA,mBACE,QAC0B;EAC1B,IAAI,KAAK,OACP,OAAO,OAAO,UAAU,cAAc,KAAK,OAAQ,KAAK;EAE1D,IAAI,KAAK,QACP,OAAO,OAAO,UAAU;EAE1B,OAAO;CACT;CAUA,iBACE,kBACM;EACN,MAAM,WAAW,KAAK,mBACpB,oBAAoB,gBAAgB,CACtC;EAEA,IAAI,UAAU;GACZ,IAAI,CAAC,KAAK,iBACR,KAAK,wBAAwB;GAE/B,KAAK,QAAS,aAAa,gBAAgB,QAAQ;GACnD,KAAK,kBAAkB;EACzB,OAAO,IAAI,KAAK,iBAAiB;GAC/B,KAAK,QAAS,gBAAgB,cAAc;GAC5C,KAAK,kBAAkB;EACzB;CACF;CAaA,0BAAwC;EAGtC,MAAM,WAAW,KAAK,QAAS,aAAa,cAAc;EAC1D,IACE,CAAC,aAAa,KACd,aAAa,QACb,KAAK,2BAEL;EAEF,KAAK,4BAA4B;EACjC,QAAQ,KACN,wEAAwE,SAAS,gKAGjF,KAAK,OACP;CACF;CAGA,aAAgC;EAC9B,MAAM,cAAiC,EACrC,UAAU,KAAK,YAAY,aAAa,KAC1C;EACA,OAAO,OAAO,aAAa,KAAK,WAAW,CAAC,CAAC;CAC/C;CAUA,cACE,OACA,YACY;EACZ,MAAM,oBAAoB,YAAY,UAAU;EAChD,MAAM,KAAK,OAAO,MAAM,YAAY;EAEpC,MAAM,eAAe,OAAO,QAAQ;EAEpC,MAAM,aADiB,OAAO,QAAQ,YAElC,IAAI,KACJ,IAAI;EAER,MAAM,iBACJ,aACI,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAC7B,IAAI,iBAAiB,CAAC,CACtB,OAAO,UAAU,KAAK,IACzB,KAAK,SAAU,aAAa,SAC1B,WAAW,KAAK,GAChB,WAAW,OAAO,CACpB;EAEN,MAAM,gBACJ,aACI,kBAAkB,UAAU,IAC5B,KAAK,SAAU,aAAa,GAC1B,WAAW,KAAK,GAChB,WAAW,OAAO,CACpB;EAEN,MAAM,mBACJ,iBAAiB,GAAI,UAAU,GAAI,QAAQ,CAAC,CACzC,IAAI,iBAAiB,CAAC,CACtB,OAAO,UAAU,KAAK;EAE3B,MAAM,kBACJ,iBAAiB,GAAI,UAAU,GAAI,OAAO,CAAC,CACxC,IAAI,iBAAiB,CAAC,CACtB,OAAO,UAAU,KAAK;EAS3B,OAAO;GANL,QAAQ,SAAS;GACjB,OAAO,QAAQ;GACf,UAAU,eAAe,WAAW,IAAI;GACxC,SAAS,eAAe,UAAU,IAAI;GACtC,cAAc,CAAC,UAAU;EAEf;CACd;CAGA,MAAM,OACJ,MACA,CACE,EACE,eACA,cACA,kBACA,OACA,SAAS,CAAC,GACV,UAAU,CAAC,GACX,iBAGW;EACf,KAAK,gBAAgB;EACrB,KAAK,eAAe;EACpB,KAAK,mBAAmB;EACxB,KAAK,QAAQ;EACb,KAAK,SAAS;EACd,KAAK,UAAU;EAEf,MAAM,EAAE,YAAY;EACpB,KAAK,eAAe;EACpB,KAAK,oBAAoB,gBAAgB,MAAM,KAAK,YAAY;EAEhE,IAAI,KAAK,YAAY,SAAS;GAC5B,KAAK,UAAU;GACf,KAAK,gBAAgB;GAErB,MAAM,QAAQ,QAAQ;GACtB,KAAK,aAAa,EAAE,aAAa,CAAC;EACpC;EAEA,IAAI,KAAK,YAAY,KAAK,eACxB,KAAK,SAAS;OACT,IAAI,CAAC,KAAK,UAGf,kBACE,SACA,IAAI,QAAQ,UAAU,iBACtB,6BACF;CAEJ;CAcA,aAAa,EAAE,gBAAmD;EAChE,IAAI,KAAK,iBAAiB,CAAC,KAAK,aAC9B;EAEF,KAAK,WAAW;EAChB,KAAK,eAAe;EAEpB,KAAK,aAAa,MAAM;EACxB,IAAI,cACF,MAAM,UAAU,QAAQ,KAAK,eAAe,gBAAgB;GAC1D,KAAK,aAAa,IAAI,WAA0B;EAClD,CAAC;OACI,IAAI,KAAK,OAEd;OAAI,KAAK,UACP,KAAK,aAAa,IAChB,KAAK,SAAS,aAAa,OACzB,KAAK,OACL,KAAK,QACL,KAAK,WAAW,CAClB,CACF;EACF,OAEA,KAAK,QAAS,iBACZ,sBACA,KAAK,mBACP;EAEF,KAAK,QAAS,iBACZ,+BACA,KAAK,uBACP;EAGA,IAAI,KAAK,UAAU;GACjB,KAAK,qBAAqB,KAAK,SAAS,kBAAkB,QACxD,CAAC,GACD,KAAK,iBACP;GACA,KAAK,6BACH,KAAK,SAAS,cAAc,gBAAgB,KAAK,eAAe;EACpE;EAEA,iBAAiB;GACf,IAAI,KAAK,aAAa,MAAM;IAC1B,MAAM,EAAE,QAAQ,UAAU,KAAK,UAAU,KAAK,CAAC;IAC/C,KAAK,SAAS;IACd,KAAK,QAAQ;IACb,KAAK,SAAS;GAChB;EACF,GAAG,CAAC;EAEJ,KAAK,gBAAgB;CACvB;CAGA,eAAqB;EAEnB,KAAK,gBAAgB;EACrB,KAAK;EACL,IAAI,CAAC,KAAK,SACR;EAEF,KAAK,QAAQ,oBACX,sBACA,KAAK,mBACP;EACA,KAAK,QAAQ,oBACX,+BACA,KAAK,uBACP;EACA,KAAK,UAAU;EACf,KAAK,qBAAqB;EAC1B,KAAK,qBAAqB;EAC1B,KAAK,6BAA6B;EAClC,KAAK,6BAA6B;CACpC;CAMA,cAAoB;EAClB,KAAK,UAAU,KAAK;EACpB,IAAI,CAAC,KAAK,SACR;EAIF,MAAM,WADY,CAAC,KAAK,qBAAqB,CAAC,KAAK,QACtB,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC;EACvD,KAAK,aAAa,EAAE,cAAc,KAAK,kBAAkB,CAAC;EAC1D,SAAS,SAAS,gBAAgB,KAAK,aAAa,IAAI,WAAW,CAAC;EAEpE,MAAM,WAAW,KAAK,UAAU,QAAQ;EACxC,IAAI,UACF,KAAK,kBAAkB,QAAQ;CAEnC;CAGA,iCACE,KACA,OACuB;EACvB,MAAM,SAAmB;GACvB;GACA;GACA,QAAQ;EACV;EAEA,OAAO,SAAS,KAAK,UAAU,MAAM;EACrC,OAAO,IAAI,YAAsB,+BAA+B,EAC9D,OACF,CAAC;CACH;CAkCA,UAAU,UAA6C;EACrD,MAAM,EAAE,iBAAiB;EACzB,IAAI,CAAC,aAAa,MAChB;EAEF,MAAM,WAAyB,CAAC;EAChC,KAAK,MAAM,UAAU,cACnB,SAAS,KAAK,KAAK,cAAc,UAAU,MAAM,CAAC;EAEpD,OAAO,SAAS,OAAO,eAAe;CACxC;AA4BF;AA0HA,OAAO,MAAM,eAEwC,UACnD,qBACF","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"]}
@@ -14,10 +14,29 @@ export function uiSrefTargetEvent(targetState) {
14
14
  detail: { targetState }
15
15
  });
16
16
  }
17
+ export const UI_SREF_TARGET_REMOVED_EVENT = "uiSrefTargetRemoved";
18
+ export function uiSrefTargetRemovedEvent() {
19
+ return new Event(UI_SREF_TARGET_REMOVED_EVENT, {
20
+ bubbles: true,
21
+ composed: true
22
+ });
23
+ }
24
+ export function srefEventLink(event) {
25
+ const origin = event.composedPath()[0];
26
+ return origin instanceof Element ? origin : event.target;
27
+ }
17
28
  const paramsEqual = equals;
18
- function sameTarget(a, b) {
29
+ export function sameTarget(a, b) {
19
30
  return !!a && a.$state() === b.$state() && paramsEqual(a.params(), b.params());
20
31
  }
32
+ export function srefTransitionOptions(parentView, opts = {}) {
33
+ const defaultOpts = {
34
+ relative: parentView?.viewContext?.name,
35
+ inherit: true,
36
+ source: "sref"
37
+ };
38
+ return extend(defaultOpts, opts || {});
39
+ }
21
40
  const warnedAssignHref = new WeakSet();
22
41
  export function isNativeLink(element) {
23
42
  const tag = element.localName;
@@ -32,6 +51,10 @@ function opensOffApp(element) {
32
51
  if (target && target.toLowerCase() !== "_self") return true;
33
52
  return (element.getAttribute("rel") ?? "").split(/\s+/).includes("external");
34
53
  }
54
+ export function clickBelongsToBrowser(event, element) {
55
+ if (event.defaultPrevented || element.hasAttribute("download")) return true;
56
+ return isNativeLink(element) && element.hasAttribute("href") && (isModifiedClick(event) || opensOffApp(element));
57
+ }
35
58
  export class UiSrefDirective extends AsyncDirective {
36
59
  constructor(partInfo) {
37
60
  super(partInfo);
@@ -54,9 +77,7 @@ export class UiSrefDirective extends AsyncDirective {
54
77
  if (!$state && state && this.element?.isConnected) this.warnMissingRouter(state);
55
78
  return;
56
79
  }
57
- const element = event.currentTarget;
58
- if (event.defaultPrevented || element.hasAttribute("download")) return;
59
- if (isNativeLink(element) && element.hasAttribute("href") && (isModifiedClick(event) || opensOffApp(element))) return;
80
+ if (clickBelongsToBrowser(event, event.currentTarget)) return;
60
81
  $state.go(state, params, options);
61
82
  event.preventDefault();
62
83
  };
@@ -67,12 +88,7 @@ export class UiSrefDirective extends AsyncDirective {
67
88
  if (partInfo.type !== PartType.ELEMENT) throw new Error("The `uiSref` directive must be used as an element");
68
89
  }
69
90
  getOptions(opts = this.options) {
70
- const defaultOpts = {
71
- relative: this.parentView?.viewContext?.name,
72
- inherit: true,
73
- source: "sref"
74
- };
75
- return extend(defaultOpts, opts || {});
91
+ return srefTransitionOptions(this.parentView, opts);
76
92
  }
77
93
  render(state, params, options) {
78
94
  if (!this.element) return noChange;
@@ -127,6 +143,7 @@ export class UiSrefDirective extends AsyncDirective {
127
143
  }
128
144
  disconnected() {
129
145
  this.element?.removeEventListener("click", this.onClick);
146
+ this.element?.dispatchEvent(uiSrefTargetRemovedEvent());
130
147
  this.element = null;
131
148
  this.targetState = null;
132
149
  this.href = null;