@sbb-esta/lyne-elements 3.8.0 → 3.9.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/core/base-elements/open-close-base-element.d.ts +2 -0
- package/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/core/base-elements/open-close-base-element.js +4 -0
- package/core/controllers/escapable-overlay-controller.js +3 -3
- package/core/controllers/inert-controller.d.ts +8 -1
- package/core/controllers/inert-controller.d.ts.map +1 -1
- package/core/controllers/inert-controller.js +25 -13
- package/core/overlay/position.d.ts +20 -0
- package/core/overlay/position.d.ts.map +1 -1
- package/core/overlay/position.js +34 -23
- package/core/overlay.js +11 -10
- package/core/styles/core.scss +7 -0
- package/core.css +6 -0
- package/custom-elements.json +612 -138
- package/development/core/base-elements/open-close-base-element.d.ts +2 -0
- package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/development/core/base-elements/open-close-base-element.js +5 -1
- package/development/core/controllers/escapable-overlay-controller.js +2 -2
- package/development/core/controllers/inert-controller.d.ts +8 -1
- package/development/core/controllers/inert-controller.d.ts.map +1 -1
- package/development/core/controllers/inert-controller.js +49 -30
- package/development/core/overlay/position.d.ts +20 -0
- package/development/core/overlay/position.d.ts.map +1 -1
- package/development/core/overlay/position.js +41 -1
- package/development/core/overlay.js +2 -1
- package/development/menu/common/menu-action-common.d.ts.map +1 -1
- package/development/menu/common/menu-action-common.js +20 -3
- package/development/menu/menu/menu.component.d.ts +21 -10
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +203 -61
- package/development/option/option/option.component.js +4 -2
- package/development/tabs/tab/tab.component.d.ts +10 -4
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +15 -16
- package/development/tabs/tab-group/tab-group.component.d.ts +15 -14
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +46 -175
- package/development/tabs/tab-label/tab-label.component.d.ts +21 -2
- package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/development/tabs/tab-label/tab-label.component.js +91 -6
- package/development/tooltip/tooltip.component.d.ts +6 -6
- package/development/tooltip/tooltip.component.d.ts.map +1 -1
- package/development/tooltip/tooltip.component.js +14 -7
- package/menu/common/menu-action-common.d.ts.map +1 -1
- package/menu/common/menu-action-common.js +15 -12
- package/menu/menu/menu.component.d.ts +21 -10
- package/menu/menu/menu.component.d.ts.map +1 -1
- package/menu/menu/menu.component.js +144 -80
- package/off-brand-theme.css +6 -0
- package/option/option/option.component.js +1 -1
- package/package.json +1 -1
- package/safety-theme.css +6 -0
- package/standard-theme.css +6 -0
- package/tabs/tab/tab.component.d.ts +10 -4
- package/tabs/tab/tab.component.d.ts.map +1 -1
- package/tabs/tab/tab.component.js +22 -24
- package/tabs/tab-group/tab-group.component.d.ts +15 -14
- package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/tabs/tab-group/tab-group.component.js +68 -122
- package/tabs/tab-label/tab-label.component.d.ts +21 -2
- package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/tabs/tab-label/tab-label.component.js +88 -46
- package/tooltip/tooltip.component.d.ts +6 -6
- package/tooltip/tooltip.component.d.ts.map +1 -1
- package/tooltip/tooltip.component.js +59 -54
|
@@ -21,6 +21,8 @@ export declare abstract class SbbOpenCloseBaseElement extends SbbOpenCloseBaseEl
|
|
|
21
21
|
/** Closes the component. */
|
|
22
22
|
abstract close(): void;
|
|
23
23
|
connectedCallback(): void;
|
|
24
|
+
/** The method which is called on escape key press. Defaults to calling close() */
|
|
25
|
+
escapeStrategy(): void;
|
|
24
26
|
protected dispatchBeforeOpenEvent(): boolean;
|
|
25
27
|
protected dispatchOpenEvent(): boolean;
|
|
26
28
|
protected dispatchBeforeCloseEvent(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-close-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/open-close-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;;AAG7D;;GAEG;AACH,8BAAsB,uBAAwB,SAAQ,4BAAoC;IACxF,gBAAuB,MAAM;;;;;MAKlB;IAEX,kCAAkC;IAClC,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,oBAAoB,EAE9C;IACD,SAAS,KAAK,KAAK,IAAI,oBAAoB,CAE1C;IAED,mCAAmC;IACnC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,2BAA2B;aACX,IAAI,IAAI,IAAI;IAC5B,4BAA4B;aACZ,KAAK,IAAI,IAAI;IAEb,iBAAiB,IAAI,IAAI;IAKzC,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAK5C,SAAS,CAAC,iBAAiB,IAAI,OAAO;IAKtC,SAAS,CAAC,wBAAwB,IAAI,OAAO;IAK7C,SAAS,CAAC,kBAAkB,IAAI,OAAO;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,2BAA2B;QACnC,UAAU,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,KAAK,CAAC;KACd;CACF"}
|
|
1
|
+
{"version":3,"file":"open-close-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/open-close-base-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;;AAG7D;;GAEG;AACH,8BAAsB,uBAAwB,SAAQ,4BAAoC;IACxF,gBAAuB,MAAM;;;;;MAKlB;IAEX,kCAAkC;IAClC,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,oBAAoB,EAE9C;IACD,SAAS,KAAK,KAAK,IAAI,oBAAoB,CAE1C;IAED,mCAAmC;IACnC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,2BAA2B;aACX,IAAI,IAAI,IAAI;IAC5B,4BAA4B;aACZ,KAAK,IAAI,IAAI;IAEb,iBAAiB,IAAI,IAAI;IAKzC,kFAAkF;IAC3E,cAAc,IAAI,IAAI;IAI7B,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAK5C,SAAS,CAAC,iBAAiB,IAAI,OAAO;IAKtC,SAAS,CAAC,wBAAwB,IAAI,OAAO;IAK7C,SAAS,CAAC,kBAAkB,IAAI,OAAO;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,2BAA2B;QACnC,UAAU,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,KAAK,CAAC;KACd;CACF"}
|
|
@@ -16,6 +16,10 @@ const _SbbOpenCloseBaseElement = class _SbbOpenCloseBaseElement extends SbbEleme
|
|
|
16
16
|
super.connectedCallback();
|
|
17
17
|
this.state ||= "closed";
|
|
18
18
|
}
|
|
19
|
+
/** The method which is called on escape key press. Defaults to calling close() */
|
|
20
|
+
escapeStrategy() {
|
|
21
|
+
this.close();
|
|
22
|
+
}
|
|
19
23
|
dispatchBeforeOpenEvent() {
|
|
20
24
|
return this.dispatchEvent(new Event("beforeopen", { cancelable: true }));
|
|
21
25
|
}
|
|
@@ -39,4 +43,4 @@ let SbbOpenCloseBaseElement = _SbbOpenCloseBaseElement;
|
|
|
39
43
|
export {
|
|
40
44
|
SbbOpenCloseBaseElement
|
|
41
45
|
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2Jhc2UtZWxlbWVudHMvb3Blbi1jbG9zZS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbmVkQ2xvc2VkU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4uL21peGlucy5qcyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3Igb3ZlcmxheSBjb21wb25lbnRzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBiZWZvcmVvcGVuOiAnYmVmb3Jlb3BlbicsXG4gICAgb3BlbjogJ29wZW4nLFxuICAgIGJlZm9yZWNsb3NlOiAnYmVmb3JlY2xvc2UnLFxuICAgIGNsb3NlOiAnY2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHJvdGVjdGVkIHNldCBzdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsIHN0YXRlKTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IHN0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyBTYmJPcGVuZWRDbG9zZWRTdGF0ZTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIG9wZW4uICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSAnb3BlbmVkJztcbiAgfVxuXG4gIC8qKiBPcGVucyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgb3BlbigpOiB2b2lkO1xuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc3RhdGUgfHw9ICdjbG9zZWQnO1xuICB9XG5cbiAgLyoqIFRoZSBtZXRob2Qgd2hpY2ggaXMgY2FsbGVkIG9uIGVzY2FwZSBrZXkgcHJlc3MuIERlZmF1bHRzIHRvIGNhbGxpbmcgY2xvc2UoKSAqL1xuICBwdWJsaWMgZXNjYXBlU3RyYXRlZ3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KCk6IGJvb2xlYW4ge1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZW9wZW4nLCB7IGNhbmNlbGFibGU6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BhdGNoT3BlbkV2ZW50KCk6IGJvb2xlYW4ge1xuICAgIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIG9wZW5lZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnb3BlbicpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKTogYm9vbGVhbiB7XG4gICAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmVmb3JlY2xvc2UnLCB7IGNhbmNlbGFibGU6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOiBib29sZWFuIHtcbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Nsb3NlJykpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgYmVmb3Jlb3BlbjogRXZlbnQ7XG4gICAgYmVmb3JlY2xvc2U6IEV2ZW50O1xuICAgIG9wZW46IEV2ZW50O1xuICAgIGNsb3NlOiBFdmVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O01BUXNCLGlDQUFBLGlDQUFnQyx5QkFBeUIsVUFBVSxFQUFDO0FBQUE7QUFBQSxFQVN4RixJQUFjLE1BQU0sT0FBMkI7QUFDN0MsU0FBSyxhQUFhLGNBQWMsS0FBSztBQUFBLEVBQ3ZDO0FBQUEsRUFDQSxJQUFjLFFBQUs7QUFDakIsV0FBTyxLQUFLLGFBQWEsWUFBWTtBQUFBLEVBQ3ZDO0FBQUE7QUFBQSxFQUdBLElBQVcsU0FBTTtBQUNmLFdBQU8sS0FBSyxVQUFVO0FBQUEsRUFDeEI7QUFBQSxFQU9nQixvQkFBaUI7QUFDL0IsVUFBTSxrQkFBQTtBQUNOLFNBQUssVUFBVTtBQUFBLEVBQ2pCO0FBQUE7QUFBQSxFQUdPLGlCQUFjO0FBQ25CLFNBQUssTUFBQTtBQUFBLEVBQ1A7QUFBQSxFQUVVLDBCQUF1QjtBQUUvQixXQUFPLEtBQUssY0FBYyxJQUFJLE1BQU0sY0FBYyxFQUFFLFlBQVksS0FBQSxDQUFNLENBQUM7QUFBQSxFQUN6RTtBQUFBLEVBRVUsb0JBQWlCO0FBRXpCLFdBQU8sS0FBSyxjQUFjLElBQUksTUFBTSxNQUFNLENBQUM7QUFBQSxFQUM3QztBQUFBLEVBRVUsMkJBQXdCO0FBRWhDLFdBQU8sS0FBSyxjQUFjLElBQUksTUFBTSxlQUFlLEVBQUUsWUFBWSxLQUFBLENBQU0sQ0FBQztBQUFBLEVBQzFFO0FBQUEsRUFFVSxxQkFBa0I7QUFFMUIsV0FBTyxLQUFLLGNBQWMsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUFBLEVBQzlDOztBQXJEdUIseUJBQUEsU0FBUztBQUFBLEVBQzlCLFlBQVk7QUFBQSxFQUNaLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQTtJQUxXOyJ9
|
|
@@ -4,7 +4,7 @@ if (!isServer) {
|
|
|
4
4
|
window.addEventListener("keydown", (event) => {
|
|
5
5
|
if (event.key === "Escape" && !event.defaultPrevented) {
|
|
6
6
|
event.preventDefault();
|
|
7
|
-
overlayStack.at(-1)?.
|
|
7
|
+
overlayStack.at(-1)?.escapeStrategy();
|
|
8
8
|
}
|
|
9
9
|
});
|
|
10
10
|
}
|
|
@@ -35,4 +35,4 @@ class SbbEscapableOverlayController {
|
|
|
35
35
|
export {
|
|
36
36
|
SbbEscapableOverlayController
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9iYXNlLWVsZW1lbnRzL29wZW4tY2xvc2UtYmFzZS1lbGVtZW50LmpzJztcblxuY29uc3Qgb3ZlcmxheVN0YWNrID0gbmV3IEFycmF5PFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50PigpO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvdmVybGF5U3RhY2suYXQoLTEpPy5lc2NhcGVTdHJhdGVneSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVN0YWNrOiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudFtdID0gb3ZlcmxheVN0YWNrLFxuICApIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXI/Lih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvdmVybGF5IGlzIG9wZW5lZFxuICBwdWJsaWMgY29ubmVjdCgpOiB2b2lkIHtcbiAgICAvLyBEdWUgdG8gY29ubmVjdCgpIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIGhvc3QsXG4gICAgLy8gd2UgaGF2ZSB0byByZW1vdmUgYSBwb3RlbnRpYWwgZW50cnkgb2YgdGhlIGhvc3QgZnJvbSB0aGUgc3RhY2suXG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fb3ZlcmxheVN0YWNrLnB1c2godGhpcy5faG9zdCk7XG4gIH1cblxuICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xvc2VkXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5U3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaW5kRWxJbmRleCA9IHRoaXMuX292ZXJsYXlTdGFjay5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRoaXMuX2hvc3QpO1xuICAgICAgaWYgKGZpbmRFbEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLl9vdmVybGF5U3RhY2suc3BsaWNlKGZpbmRFbEluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBSUEsTUFBTSxlQUFlLElBQUksTUFBQTtBQUV6QixJQUFJLENBQUMsVUFBVTtBQUNiLFNBQU8saUJBQWlCLFdBQVcsQ0FBQyxVQUF3QjtBQUMxRCxRQUFJLE1BQU0sUUFBUSxZQUFZLENBQUMsTUFBTSxrQkFBa0I7QUFDckQsWUFBTSxlQUFBO0FBQ04sbUJBQWEsR0FBRyxFQUFFLEdBQUcsZUFBQTtBQUFBLElBQ3ZCO0FBQUEsRUFDRixDQUFDO0FBQ0g7TUFFYSw4QkFBNkI7QUFBQSxFQUN4QyxZQUNVLE9BQ0EsZ0JBQTJDLGNBQVk7QUFEdkQsU0FBQSxRQUFBO0FBQ0EsU0FBQSxnQkFBQTtBQUVSLFNBQUssTUFBTSxnQkFBZ0IsSUFBSTtBQUFBLEVBQ2pDO0FBQUEsRUFFTyxtQkFBZ0I7QUFDckIsU0FBSyxXQUFBO0FBQUEsRUFDUDtBQUFBO0FBQUEsRUFHTyxVQUFPO0FBR1osU0FBSyxXQUFBO0FBQ0wsU0FBSyxjQUFjLEtBQUssS0FBSyxLQUFLO0FBQUEsRUFDcEM7QUFBQTtBQUFBLEVBR08sYUFBVTtBQUNmLFFBQUksS0FBSyxjQUFjLFFBQVE7QUFDN0IsWUFBTSxjQUFjLEtBQUssY0FBYyxVQUFVLENBQUMsTUFBTSxNQUFNLEtBQUssS0FBSztBQUN4RSxVQUFJLGdCQUFnQixJQUFJO0FBQ3RCLGFBQUssY0FBYyxPQUFPLGFBQWEsQ0FBQztBQUFBLE1BQzFDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRDsifQ==
|
|
@@ -4,7 +4,8 @@ export declare class SbbInertController implements ReactiveController {
|
|
|
4
4
|
private _host;
|
|
5
5
|
private _inertElements;
|
|
6
6
|
private _inertOverlays;
|
|
7
|
-
|
|
7
|
+
private _exemptedElements;
|
|
8
|
+
constructor(_host: ReactiveControllerHost & SbbOpenCloseBaseElement, _inertElements?: Set<HTMLElement>, _inertOverlays?: Set<HTMLElement>, _exemptedElements?: Set<HTMLElement>);
|
|
8
9
|
hostConnected(): void;
|
|
9
10
|
hostDisconnected(): void;
|
|
10
11
|
/** Applies inert state to every other element on the page except the overlay. */
|
|
@@ -13,8 +14,14 @@ export declare class SbbInertController implements ReactiveController {
|
|
|
13
14
|
deactivate(): void;
|
|
14
15
|
/** Whether the assigned host is currently inert */
|
|
15
16
|
isInert(): boolean;
|
|
17
|
+
/** Temporarily removes all inert attributes from a given element. */
|
|
18
|
+
exempt(element: HTMLElement): void;
|
|
19
|
+
/** Inerts an element currently exempted from inert. */
|
|
20
|
+
restoreAllExempted(): void;
|
|
16
21
|
private _currentOverlay;
|
|
22
|
+
private _removeAllInertAttributes;
|
|
17
23
|
private _removeInertAttributes;
|
|
24
|
+
private _addAllInertAttributes;
|
|
18
25
|
private _addInertAttributes;
|
|
19
26
|
}
|
|
20
27
|
//# sourceMappingURL=inert-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inert-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/inert-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"inert-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/inert-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAEtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAOnE,qBAAa,kBAAmB,YAAW,kBAAkB;IAEzD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;gBAHjB,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,EACvD,cAAc,mBAAgB,EAC9B,cAAc,mBAAgB,EAC9B,iBAAiB,mBAAmB;IAKvC,aAAa,IAAI,IAAI;IAMrB,gBAAgB,IAAI,IAAI;IAM/B,iFAAiF;IAC1E,QAAQ,IAAI,IAAI;IAUvB,2BAA2B;IACpB,UAAU,IAAI,IAAI;IAyBzB,mDAAmD;IAC5C,OAAO,IAAI,OAAO;IAIzB,qEAAqE;IAC9D,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQzC,uDAAuD;IAChD,kBAAkB,IAAI,IAAI;IAKjC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,mBAAmB;CAa5B"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
const IGNORED_ELEMENTS = ["script", "head", "template", "style"];
|
|
2
2
|
const inertElements = /* @__PURE__ */ new Set();
|
|
3
|
+
const exemptedElements = /* @__PURE__ */ new Set();
|
|
3
4
|
const inertOverlays = /* @__PURE__ */ new Set();
|
|
4
5
|
class SbbInertController {
|
|
5
|
-
constructor(_host, _inertElements = inertElements, _inertOverlays = inertOverlays) {
|
|
6
|
+
constructor(_host, _inertElements = inertElements, _inertOverlays = inertOverlays, _exemptedElements = exemptedElements) {
|
|
6
7
|
this._host = _host;
|
|
7
8
|
this._inertElements = _inertElements;
|
|
8
9
|
this._inertOverlays = _inertOverlays;
|
|
10
|
+
this._exemptedElements = _exemptedElements;
|
|
9
11
|
this._host.addController?.(this);
|
|
10
12
|
}
|
|
11
13
|
hostConnected() {
|
|
@@ -21,10 +23,10 @@ class SbbInertController {
|
|
|
21
23
|
/** Applies inert state to every other element on the page except the overlay. */
|
|
22
24
|
activate() {
|
|
23
25
|
if (this._inertOverlays.size) {
|
|
24
|
-
this.
|
|
26
|
+
this._removeAllInertAttributes();
|
|
25
27
|
}
|
|
26
28
|
this._inertOverlays.add(this._host);
|
|
27
|
-
this.
|
|
29
|
+
this._addAllInertAttributes();
|
|
28
30
|
}
|
|
29
31
|
/** Removes inert state. */
|
|
30
32
|
deactivate() {
|
|
@@ -36,54 +38,71 @@ class SbbInertController {
|
|
|
36
38
|
}
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
39
|
-
this.
|
|
41
|
+
this._removeAllInertAttributes();
|
|
40
42
|
this._inertOverlays.delete(this._host);
|
|
41
43
|
if (this._inertOverlays.size) {
|
|
42
|
-
this.
|
|
44
|
+
this._addAllInertAttributes();
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
/** Whether the assigned host is currently inert */
|
|
46
48
|
isInert() {
|
|
47
49
|
return this._inertOverlays.has(this._host);
|
|
48
50
|
}
|
|
51
|
+
/** Temporarily removes all inert attributes from a given element. */
|
|
52
|
+
exempt(element) {
|
|
53
|
+
if (this._inertElements.has(element) && !this._exemptedElements.has(element)) {
|
|
54
|
+
this._removeInertAttributes(element);
|
|
55
|
+
this._inertElements.delete(element);
|
|
56
|
+
this._exemptedElements.add(element);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Inerts an element currently exempted from inert. */
|
|
60
|
+
restoreAllExempted() {
|
|
61
|
+
this._exemptedElements.forEach((e) => this._addInertAttributes(e));
|
|
62
|
+
this._exemptedElements.clear();
|
|
63
|
+
}
|
|
49
64
|
_currentOverlay() {
|
|
50
65
|
return [...this._inertOverlays].pop() ?? null;
|
|
51
66
|
}
|
|
52
|
-
|
|
53
|
-
this._inertElements.forEach((element) =>
|
|
54
|
-
if (!element) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (element.hasAttribute("data-sbb-inert")) {
|
|
58
|
-
element.inert = false;
|
|
59
|
-
element.removeAttribute("data-sbb-inert");
|
|
60
|
-
}
|
|
61
|
-
if (element.hasAttribute("data-sbb-aria-hidden")) {
|
|
62
|
-
element.removeAttribute("aria-hidden");
|
|
63
|
-
element.removeAttribute("data-sbb-aria-hidden");
|
|
64
|
-
}
|
|
65
|
-
});
|
|
67
|
+
_removeAllInertAttributes() {
|
|
68
|
+
this._inertElements.forEach((element) => this._removeInertAttributes(element));
|
|
66
69
|
this._inertElements.clear();
|
|
67
70
|
}
|
|
68
|
-
|
|
71
|
+
_removeInertAttributes(element) {
|
|
72
|
+
if (!element) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (element.hasAttribute("data-sbb-inert")) {
|
|
76
|
+
element.inert = false;
|
|
77
|
+
element.removeAttribute("data-sbb-inert");
|
|
78
|
+
}
|
|
79
|
+
if (element.hasAttribute("data-sbb-aria-hidden")) {
|
|
80
|
+
element.removeAttribute("aria-hidden");
|
|
81
|
+
element.removeAttribute("data-sbb-aria-hidden");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
_addAllInertAttributes() {
|
|
69
85
|
let element = this._currentOverlay();
|
|
70
86
|
while (element !== document.documentElement && element !== null) {
|
|
71
87
|
Array.from((element?.parentElement ?? element?.getRootNode())?.childNodes ?? []).filter((child) => child !== element && child instanceof window.HTMLElement && !IGNORED_ELEMENTS.includes(child.localName) && !child.classList.contains("sbb-live-announcer-element")).forEach((element2) => {
|
|
72
|
-
this.
|
|
73
|
-
if (!element2.inert) {
|
|
74
|
-
element2.inert = true;
|
|
75
|
-
element2.toggleAttribute("data-sbb-inert", true);
|
|
76
|
-
}
|
|
77
|
-
if (!element2.hasAttribute("aria-hidden")) {
|
|
78
|
-
element2.setAttribute("aria-hidden", "true");
|
|
79
|
-
element2.toggleAttribute("data-sbb-aria-hidden", true);
|
|
80
|
-
}
|
|
88
|
+
this._addInertAttributes(element2);
|
|
81
89
|
});
|
|
82
90
|
element = element?.parentElement ?? element?.getRootNode()?.host ?? null;
|
|
83
91
|
}
|
|
84
92
|
}
|
|
93
|
+
_addInertAttributes(element) {
|
|
94
|
+
this._inertElements.add(element);
|
|
95
|
+
if (!element.inert) {
|
|
96
|
+
element.inert = true;
|
|
97
|
+
element.toggleAttribute("data-sbb-inert", true);
|
|
98
|
+
}
|
|
99
|
+
if (!element.hasAttribute("aria-hidden")) {
|
|
100
|
+
element.setAttribute("aria-hidden", "true");
|
|
101
|
+
element.toggleAttribute("data-sbb-aria-hidden", true);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
85
104
|
}
|
|
86
105
|
export {
|
|
87
106
|
SbbInertController
|
|
88
107
|
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5lcnQtY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9iYXNlLWVsZW1lbnRzLmpzJztcblxuY29uc3QgSUdOT1JFRF9FTEVNRU5UUyA9IFsnc2NyaXB0JywgJ2hlYWQnLCAndGVtcGxhdGUnLCAnc3R5bGUnXTtcbmNvbnN0IGluZXJ0RWxlbWVudHMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuY29uc3QgZXhlbXB0ZWRFbGVtZW50cyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG5jb25zdCBpbmVydE92ZXJsYXlzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcblxuZXhwb3J0IGNsYXNzIFNiYkluZXJ0Q29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfaW5lcnRFbGVtZW50cyA9IGluZXJ0RWxlbWVudHMsXG4gICAgcHJpdmF0ZSBfaW5lcnRPdmVybGF5cyA9IGluZXJ0T3ZlcmxheXMsXG4gICAgcHJpdmF0ZSBfZXhlbXB0ZWRFbGVtZW50cyA9IGV4ZW1wdGVkRWxlbWVudHMsXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcj8uKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2hvc3QuaXNPcGVuKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbmVydCgpKSB7XG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQXBwbGllcyBpbmVydCBzdGF0ZSB0byBldmVyeSBvdGhlciBlbGVtZW50IG9uIHRoZSBwYWdlIGV4Y2VwdCB0aGUgb3ZlcmxheS4gKi9cbiAgcHVibGljIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSBpbmVydCBzdGF0ZSBmcm9tIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5XG4gICAgaWYgKHRoaXMuX2luZXJ0T3ZlcmxheXMuc2l6ZSkge1xuICAgICAgdGhpcy5fcmVtb3ZlQWxsSW5lcnRBdHRyaWJ1dGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5lcnRPdmVybGF5cy5hZGQodGhpcy5faG9zdCk7XG4gICAgdGhpcy5fYWRkQWxsSW5lcnRBdHRyaWJ1dGVzKCk7XG4gIH1cblxuICAvKiogUmVtb3ZlcyBpbmVydCBzdGF0ZS4gKi9cbiAgcHVibGljIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRPdmVybGF5KCkgIT09IHRoaXMuX2hvc3QpIHtcbiAgICAgIC8vIElmIGUuZy4gYSBjb21wb25lbnQgZ2V0cyBkaXNjb25uZWN0ZWQsIGl0IGNvdWxkIGJlIHRoYXQgaXQgaXMgbm90IHRoZSB0b3AgbW9zdC5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgY2FuIGRpcmVjdGx5IHJlbW92ZSBpdCwgYXMgdGhlcmUgaXMgY3VycmVudGx5IG5vIGluZXJ0IHN0YXRlIGFwcGxpZWQuXG4gICAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgICAgdGhpcy5faW5lcnRPdmVybGF5cy5kZWxldGUodGhpcy5faG9zdCk7XG4gICAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdUcnlpbmcgdG8gcmVtb3ZlIGluZXJ0IHN0YXRlIG9mIGFuIG92ZXJsYXkgd2hpY2ggbmV2ZXIgaGFkIGFuIGFwcGxpZWQgaW5lcnQgc3RhdGUuJyxcbiAgICAgICAgICB0aGlzLl9ob3N0LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVtb3ZlQWxsSW5lcnRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5faW5lcnRPdmVybGF5cy5kZWxldGUodGhpcy5faG9zdCk7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhcyBwcmV2aW91cyBvcGVuZWQgb3ZlcmxheSwgc2V0IGl0cyBpbmVydCBzdGF0ZSBhZ2Fpbi5cbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9hZGRBbGxJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYXNzaWduZWQgaG9zdCBpcyBjdXJyZW50bHkgaW5lcnQgKi9cbiAgcHVibGljIGlzSW5lcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luZXJ0T3ZlcmxheXMuaGFzKHRoaXMuX2hvc3QpO1xuICB9XG5cbiAgLyoqIFRlbXBvcmFyaWx5IHJlbW92ZXMgYWxsIGluZXJ0IGF0dHJpYnV0ZXMgZnJvbSBhIGdpdmVuIGVsZW1lbnQuICovXG4gIHB1YmxpYyBleGVtcHQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRFbGVtZW50cy5oYXMoZWxlbWVudCkgJiYgIXRoaXMuX2V4ZW1wdGVkRWxlbWVudHMuaGFzKGVsZW1lbnQpKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoZWxlbWVudCk7XG4gICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIHRoaXMuX2V4ZW1wdGVkRWxlbWVudHMuYWRkKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJbmVydHMgYW4gZWxlbWVudCBjdXJyZW50bHkgZXhlbXB0ZWQgZnJvbSBpbmVydC4gKi9cbiAgcHVibGljIHJlc3RvcmVBbGxFeGVtcHRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9leGVtcHRlZEVsZW1lbnRzLmZvckVhY2goKGUpID0+IHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcyhlKSk7XG4gICAgdGhpcy5fZXhlbXB0ZWRFbGVtZW50cy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudE92ZXJsYXkoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2luZXJ0T3ZlcmxheXNdLnBvcCgpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVBbGxJbmVydEF0dHJpYnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5lcnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQgPT5cbiAgICAgIHRoaXMuX3JlbW92ZUluZXJ0QXR0cmlidXRlcyhlbGVtZW50KSxcbiAgICApO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUluZXJ0QXR0cmlidXRlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgZWxlbWVudC5pbmVydCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZEFsbEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSkgJiZcbiAgICAgICAgICAgICFjaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoJ3NiYi1saXZlLWFubm91bmNlci1lbGVtZW50JyksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoZWxlbWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBpZXJjZSB0aHJvdWdoIFNoYWRvdyBET00gYm91bmRhcnlcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IChlbGVtZW50Py5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpPy5ob3N0ID8/IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkSW5lcnRBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5faW5lcnRFbGVtZW50cy5hZGQoZWxlbWVudCk7XG5cbiAgICBpZiAoIWVsZW1lbnQuaW5lcnQpIHtcbiAgICAgIGVsZW1lbnQuaW5lcnQgPSB0cnVlO1xuICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0JywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicsIHRydWUpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnQiXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sbUJBQW1CLENBQUMsVUFBVSxRQUFRLFlBQVksT0FBTztBQUMvRCxNQUFNLG9DQUFvQixJQUFBO0FBQzFCLE1BQU0sdUNBQXVCLElBQUE7QUFDN0IsTUFBTSxvQ0FBb0IsSUFBQTtNQUViLG1CQUFrQjtBQUFBLEVBQzdCLFlBQ1UsT0FDQSxpQkFBaUIsZUFDakIsaUJBQWlCLGVBQ2pCLG9CQUFvQixrQkFBZ0I7QUFIcEMsU0FBQSxRQUFBO0FBQ0EsU0FBQSxpQkFBQTtBQUNBLFNBQUEsaUJBQUE7QUFDQSxTQUFBLG9CQUFBO0FBRVIsU0FBSyxNQUFNLGdCQUFnQixJQUFJO0FBQUEsRUFDakM7QUFBQSxFQUVPLGdCQUFhO0FBQ2xCLFFBQUksS0FBSyxNQUFNLFFBQVE7QUFDckIsV0FBSyxTQUFBO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUVPLG1CQUFnQjtBQUNyQixRQUFJLEtBQUssV0FBVztBQUNsQixXQUFLLFdBQUE7QUFBQSxJ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
|
|
@@ -38,4 +38,24 @@ export declare function getElementPosition(element: HTMLElement, trigger: HTMLEl
|
|
|
38
38
|
centered?: boolean;
|
|
39
39
|
responsiveHeight?: boolean;
|
|
40
40
|
}): SbbElementPositionInfos;
|
|
41
|
+
/**
|
|
42
|
+
* Determines the position of an element relative to a trigger element by evaluating
|
|
43
|
+
* the optimal position based on the available space.
|
|
44
|
+
*
|
|
45
|
+
* @param element The element of which to calculate the position.
|
|
46
|
+
* @param trigger The element relative to which to calculate the position.
|
|
47
|
+
* @param container The element which has the position:fixed applied.
|
|
48
|
+
* @param properties Properties to take into account in calculations (optional).
|
|
49
|
+
* @param properties.verticalOffset The distance to be added between the element and the trigger (optional).
|
|
50
|
+
* @param properties.horizontalOffset The horizontal offset to be applied to the element (optional).
|
|
51
|
+
* @param properties.responsiveHeight Whether the element calculates its height based on its content (optional).
|
|
52
|
+
* @returns Returns an object containing the left position, the top position, the maximum height
|
|
53
|
+
* of the element and the current alignment object.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getElementPositionHorizontal(element: HTMLElement, trigger: HTMLElement, container: HTMLElement, properties?: {
|
|
56
|
+
verticalOffset?: number;
|
|
57
|
+
horizontalOffset?: number;
|
|
58
|
+
responsiveHeight?: boolean;
|
|
59
|
+
contentSelector?: string;
|
|
60
|
+
}): SbbElementPositionInfos;
|
|
41
61
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/overlay/position.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,WAAW,EACX,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,CACjG,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAoCrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,KAAK,EAAE,UAAU,GAAG,YAAY,GAC/B,OAAO,CAYT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,WAAW,EACtB,UAAU,CAAC,EAAE;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,uBAAuB,CAqGzB"}
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/overlay/position.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,WAAW,EACX,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,CACjG,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAoCrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,KAAK,EAAE,UAAU,GAAG,YAAY,GAC/B,OAAO,CAYT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,WAAW,EACtB,UAAU,CAAC,EAAE;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,uBAAuB,CAqGzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,WAAW,EACtB,UAAU,CAAC,EAAE;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,uBAAuB,CAgEzB"}
|
|
@@ -76,9 +76,49 @@ function getElementPosition(element, trigger, container, properties) {
|
|
|
76
76
|
alignment
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
|
+
function getElementPositionHorizontal(element, trigger, container, properties) {
|
|
80
|
+
const maxHeightOffset = 16;
|
|
81
|
+
const verticalOffset = properties?.verticalOffset || 0;
|
|
82
|
+
const horizontalOffset = properties?.horizontalOffset || 0;
|
|
83
|
+
const triggerRec = trigger.getBoundingClientRect();
|
|
84
|
+
const elementRec = getElementRectangle(element);
|
|
85
|
+
const triggerParentRec = trigger.parentElement.shadowRoot.querySelector(properties?.contentSelector ?? `.${element.className}`).getBoundingClientRect();
|
|
86
|
+
const containerRect = container.getBoundingClientRect();
|
|
87
|
+
const availableSpaceRight = document.documentElement.clientWidth - triggerParentRec.right;
|
|
88
|
+
const availableSpaceBelow = document.documentElement.clientHeight - (triggerRec.top - verticalOffset);
|
|
89
|
+
const availableVerticalSpace = document.documentElement.clientHeight;
|
|
90
|
+
const elementMaxHeight = `${availableVerticalSpace - maxHeightOffset * 2}px`;
|
|
91
|
+
const alignment = { horizontal: "end", vertical: "above" };
|
|
92
|
+
const elementXOverflow = elementRec.offsetWidth + horizontalOffset;
|
|
93
|
+
let elementXPosition = triggerParentRec.right;
|
|
94
|
+
let elementYPosition = triggerRec.top + verticalOffset;
|
|
95
|
+
if (availableSpaceRight < elementXOverflow && triggerRec.left > elementXOverflow) {
|
|
96
|
+
elementXPosition = elementXPosition - triggerParentRec.width - elementRec.offsetWidth;
|
|
97
|
+
alignment.horizontal = "start";
|
|
98
|
+
}
|
|
99
|
+
if (horizontalOffset && alignment.horizontal !== "center") {
|
|
100
|
+
elementXPosition += horizontalOffset * (alignment.horizontal === "start" ? -1 : 1);
|
|
101
|
+
}
|
|
102
|
+
if (availableSpaceBelow < elementRec.scrollHeight) {
|
|
103
|
+
elementYPosition = availableVerticalSpace - elementRec.clientHeight - maxHeightOffset;
|
|
104
|
+
}
|
|
105
|
+
if (containerRect.left < 0) {
|
|
106
|
+
elementXPosition -= containerRect.left;
|
|
107
|
+
}
|
|
108
|
+
if (containerRect.top < 0) {
|
|
109
|
+
elementYPosition -= containerRect.top;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
top: elementYPosition,
|
|
113
|
+
left: elementXPosition,
|
|
114
|
+
maxHeight: elementMaxHeight,
|
|
115
|
+
alignment
|
|
116
|
+
};
|
|
117
|
+
}
|
|
79
118
|
export {
|
|
80
119
|
getElementPosition,
|
|
120
|
+
getElementPositionHorizontal,
|
|
81
121
|
getElementRectangle,
|
|
82
122
|
isEventOnElement
|
|
83
123
|
};
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvcG9zaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgZXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQsXG4pOiBib29sZWFuIHtcbiAgaWYgKCFlbGVtZW50IHx8ICFldmVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4gKFxuICAgIHJlY3QudG9wIDw9IGV2ZW50LmNsaWVudFkgJiZcbiAgICBldmVudC5jbGllbnRZIDw9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgJiZcbiAgICByZWN0LmxlZnQgPD0gZXZlbnQuY2xpZW50WCAmJlxuICAgIGV2ZW50LmNsaWVudFggPD0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aFxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gYSB0cmlnZ2VyIGVsZW1lbnQgYnkgZXZhbHVhdGluZ1xuICogdGhlIG9wdGltYWwgcG9zaXRpb24gYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBvZiB3aGljaCB0byBjYWxjdWxhdGUgdGhlIHBvc2l0aW9uLlxuICogQHBhcmFtIHRyaWdnZXIgVGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIHByb3BlcnRpZXMgUHJvcGVydGllcyB0byB0YWtlIGludG8gYWNjb3VudCBpbiBjYWxjdWxhdGlvbnMgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnZlcnRpY2FsT2Zmc2V0IFRoZSBkaXN0YW5jZSB0byBiZSBhZGRlZCBiZXR3ZWVuIHRoZSBlbGVtZW50IGFuZCB0aGUgdHJpZ2dlciAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMuaG9yaXpvbnRhbE9mZnNldCBUaGUgaG9yaXpvbnRhbCBvZmZzZXQgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudCAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMuY2VudGVyZWQgV2hldGhlciB0aGUgZWxlbWVudCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBjZW50ZXIgYnkgZGVmYXVsdCAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMucmVzcG9uc2l2ZUhlaWdodCBXaGV0aGVyIHRoZSBlbGVtZW50IGNhbGN1bGF0ZXMgaXRzIGhlaWdodCBiYXNlZCBvbiBpdHMgY29udGVudCAob3B0aW9uYWwpLlxuICogQHJldHVybnMgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGVmdCBwb3NpdGlvbiwgdGhlIHRvcCBwb3NpdGlvbiwgdGhlIG1heGltdW0gaGVpZ2h0XG4gKiBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGN1cnJlbnQgYWxpZ25tZW50IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRQb3NpdGlvbihcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI6IEhUTUxFbGVtZW50LFxuICBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICBwcm9wZXJ0aWVzPzoge1xuICAgIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGhvcml6b250YWxPZmZzZXQ/OiBudW1iZXI7XG4gICAgY2VudGVyZWQ/OiBib29sZWFuO1xuICAgIHJlc3BvbnNpdmVIZWlnaHQ/OiBib29sZWFuO1xuICB9LFxuKTogU2JiRWxlbWVudFBvc2l0aW9uSW5mb3Mge1xuICBjb25zdCBtYXhXaWR0aE9mZnNldCA9IDE2O1xuICBjb25zdCB2ZXJ0aWNhbE9mZnNldCA9IHByb3BlcnRpZXM/LnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gIGNvbnN0IGhvcml6b250YWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy5ob3Jpem9udGFsT2Zmc2V0IHx8IDA7XG4gIGNvbnN0IHJlc3BvbnNpdmVIZWlnaHQgPSBwcm9wZXJ0aWVzPy5yZXNwb25zaXZlSGVpZ2h0IHx8IGZhbHNlO1xuXG4gIGNvbnN0IHRyaWdnZXJSZWMgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBlbGVtZW50UmVjID0gZ2V0RWxlbWVudFJlY3RhbmdsZShlbGVtZW50KTtcblxuICBjb25zdCB0cmlnZ2VyTGVmdCA9IHRyaWdnZXJSZWMubGVmdDtcbiAgY29uc3QgdHJpZ2dlclRvcCA9IHRyaWdnZXJSZWMudG9wO1xuXG4gIGNvbnN0IGF2YWlsYWJsZVNwYWNlUmlnaHQgPVxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtICh0cmlnZ2VyTGVmdCArIHRyaWdnZXJSZWMud2lkdGgpO1xuICBjb25zdCBhdmFpbGFibGVTcGFjZUFib3ZlID0gdHJpZ2dlclRvcCAtIHZlcnRpY2FsT2Zmc2V0O1xuICBjb25zdCBhdmFpbGFibGVTcGFjZUJlbG93ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gKHRyaWdnZXJUb3AgKyB0cmlnZ2VyUmVjLmhlaWdodCArIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAvLyBEZWZhdWx0IGVsZW1lbnQgYWxpZ25tZW50IGlzIFwic3RhcnQvYmVsb3dcIlxuICBsZXQgZWxlbWVudFhQb3NpdGlvbiA9IHRyaWdnZXJMZWZ0O1xuICBsZXQgZWxlbWVudFlQb3NpdGlvbiA9IHRyaWdnZXJUb3AgKyB0cmlnZ2VyUmVjLmhlaWdodCArIHZlcnRpY2FsT2Zmc2V0O1xuICBsZXQgZWxlbWVudFhPdmVyZmxvdyA9IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLSB0cmlnZ2VyUmVjLndpZHRoO1xuICBjb25zdCBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudCA9IHsgaG9yaXpvbnRhbDogJ3N0YXJ0JywgdmVydGljYWw6ICdiZWxvdycgfTtcblxuICAvLyBDYWxjdWxhdGUgZWxlbWVudCBtYXgtaGVpZ2h0XG4gIGxldCBlbGVtZW50TWF4SGVpZ2h0ID0gYCR7YXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0fXB4YDtcblxuICAvLyBDaGVjayBpZiBob3Jpem9udGFsIGFsaWdubWVudCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIFwiY2VudGVyXCJcbiAgaWYgKFxuICAgIHByb3BlcnRpZXM/LmNlbnRlcmVkICYmXG4gICAgdHJpZ2dlckxlZnQgLSBtYXhXaWR0aE9mZnNldCArIHRyaWdnZXJSZWMud2lkdGggLyAyID4gZWxlbWVudFJlYy5vZmZzZXRXaWR0aCAvIDIgJiZcbiAgICBhdmFpbGFibGVTcGFjZVJpZ2h0IC0gbWF4V2lkdGhPZmZzZXQgPiBlbGVtZW50WE92ZXJmbG93IC8gMlxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGVsZW1lbnRYT3ZlcmZsb3cgLz0gMjtcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCA9ICdjZW50ZXInO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImVuZFwiXG4gIGlmIChhdmFpbGFibGVTcGFjZVJpZ2h0IDwgZWxlbWVudFhPdmVyZmxvdyAmJiB0cmlnZ2VyTGVmdCA+IGVsZW1lbnRYT3ZlcmZsb3cpIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZWxlbWVudFhQb3NpdGlvbiAtIGVsZW1lbnRYT3ZlcmZsb3c7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnZW5kJztcbiAgfVxuXG4gIC8vIEFkZCBob3Jpem9udGFsIG9mZnNldFxuICBpZiAoXG4gICAgaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGFsaWdubWVudC5ob3Jpem9udGFsICE9PSAnY2VudGVyJyAmJlxuICAgIHRyaWdnZXJSZWMud2lkdGggLyAyIDwgaG9yaXpvbnRhbE9mZnNldFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uICs9IGhvcml6b250YWxPZmZzZXQgKiAoYWxpZ25tZW50Lmhvcml6b250YWwgPT09ICdzdGFydCcgPyAtMSA6IDEpO1xuICB9XG5cbiAgLy8gQ2hlY2sgd2hldGhlciB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2Ugb24gYm90aCBzaWRlc1xuICBpZiAoXG4gICAgKHRyaWdnZXJMZWZ0IDwgZWxlbWVudFhPdmVyZmxvdyAmJiBhdmFpbGFibGVTcGFjZVJpZ2h0IDwgZWxlbWVudFhPdmVyZmxvdykgfHxcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPCBlbGVtZW50UmVjLm9mZnNldFdpZHRoXG4gICkge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gZWxlbWVudFJlYy5vZmZzZXRXaWR0aCAvIDI7XG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJ0aWNhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImFib3ZlXCI6XG4gIGlmIChcbiAgICAoYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQgJiZcbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldCA+XG4gICAgICAgIChyZXNwb25zaXZlSGVpZ2h0ID8gZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgOiBlbGVtZW50UmVjLnNjcm9sbEhlaWdodCkpIHx8XG4gICAgKGF2YWlsYWJsZVNwYWNlQWJvdmUgPiBhdmFpbGFibGVTcGFjZUJlbG93ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUJlbG93IC0gdmVydGljYWxPZmZzZXQgPCBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAmJlxuICAgICAgIXJlc3BvbnNpdmVIZWlnaHQpXG4gICkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gPVxuICAgICAgYXZhaWxhYmxlU3BhY2VBYm92ZSA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0XG4gICAgICAgID8gZWxlbWVudFlQb3NpdGlvbiAtIHRyaWdnZXJSZWMuaGVpZ2h0IC0gYXZhaWxhYmxlU3BhY2VBYm92ZSAtIHZlcnRpY2FsT2Zmc2V0XG4gICAgICAgIDogdHJpZ2dlclRvcCAtIGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IC0gdmVydGljYWxPZmZzZXQ7XG5cbiAgICBlbGVtZW50TWF4SGVpZ2h0ID0gYCR7YXZhaWxhYmxlU3BhY2VBYm92ZSAtIHZlcnRpY2FsT2Zmc2V0fXB4YDtcbiAgICBhbGlnbm1lbnQudmVydGljYWwgPSAnYWJvdmUnO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBXaGVuIHpvb21pbmcgaW4gU2FmYXJpIHRoZSBjb250YWluZXIgcmVjdGFuZ2xlIGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcyBmb3IgdGhlIHBvc2l0aW9uXG4gIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWFkZCB0aGVtIHRvIHRoZSBjYWxjdWxhdGVkIGNvb3JkaW5hdGVzLlxuICBpZiAoY29udGFpbmVyUmVjdC5sZWZ0IDwgMCkge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9XG5cbiAgLy8gTm9ybWFsbHkgdGhlIGNvbnRhaW5lclJlY3QncyB0b3AgdmFsdWUgd291bGQgYmUgemVybywgaG93ZXZlciB3aGVuIHRoZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvIGFuIGlucHV0XG4gIC8vIChlLmcuIGluIGFuIGF1dG9jb21wbGV0ZSksIG1vYmlsZSBicm93c2VycyB3aWxsIHNoaWZ0IGV2ZXJ5dGhpbmcgaW4gb3JkZXIgdG8gcHV0IHRoZSBpbnB1dCBpbiB0aGUgbWlkZGxlXG4gIC8vIG9mIHRoZSBzY3JlZW4gYW5kIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSB2aXJ0dWFsIGtleWJvYXJkLiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgb2Zmc2V0LFxuICAvLyBvdGhlcndpc2Ugb3VyIHBvc2l0aW9uaW5nIHdpbGwgYmUgdGhyb3duIG9mZi5cbiAgLy8gQWRkaXRpb25hbGx5LCB3aGVuIHpvb21pbmcgaW4gU2FmYXJpIHRoaXMgZml4ZXMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uLlxuICBpZiAoY29udGFpbmVyUmVjdC50b3AgPCAwKSB7XG4gICAgZWxlbWVudFlQb3NpdGlvbiAtPSBjb250YWluZXJSZWN0LnRvcDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBlbGVtZW50WVBvc2l0aW9uLFxuICAgIGxlZnQ6IGVsZW1lbnRYUG9zaXRpb24sXG4gICAgbWF4SGVpZ2h0OiBlbGVtZW50TWF4SGVpZ2h0LFxuICAgIGFsaWdubWVudDogYWxpZ25tZW50LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CTSxTQUFVLG9CQUFvQixJQUFlO0FBQ2pELFFBQU0sZUFBZSxPQUFPLGlCQUFpQixFQUFFLEdBQzdDLGlCQUFpQixhQUFhLFNBQzlCLG1CQUFtQixTQUFTLGFBQWEsV0FBVyxFQUFFLEVBQUUsU0FBQTtBQUcxRCxNQUFJLG1CQUFtQixVQUFVLHFCQUFxQixLQUFLO0FBQ3pELFdBQU87QUFBQSxNQUNMLGNBQWMsR0FBRztBQUFBLE1BQ2pCLGNBQWMsR0FBRztBQUFBLE1BQ2pCLGNBQWMsR0FBRztBQUFBLE1BQ2pCLGFBQWEsR0FBRztBQUFBLE1BQ2hCLGFBQWEsR0FBRztBQUFBLE1BQ2hCLGFBQWEsR0FBRztBQUFBLElBQUE7QUFBQSxFQUVw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
|
|
124
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvcG9zaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgZXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQsXG4pOiBib29sZWFuIHtcbiAgaWYgKCFlbGVtZW50IHx8ICFldmVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4gKFxuICAgIHJlY3QudG9wIDw9IGV2ZW50LmNsaWVudFkgJiZcbiAgICBldmVudC5jbGllbnRZIDw9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgJiZcbiAgICByZWN0LmxlZnQgPD0gZXZlbnQuY2xpZW50WCAmJlxuICAgIGV2ZW50LmNsaWVudFggPD0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aFxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gYSB0cmlnZ2VyIGVsZW1lbnQgYnkgZXZhbHVhdGluZ1xuICogdGhlIG9wdGltYWwgcG9zaXRpb24gYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBvZiB3aGljaCB0byBjYWxjdWxhdGUgdGhlIHBvc2l0aW9uLlxuICogQHBhcmFtIHRyaWdnZXIgVGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIHByb3BlcnRpZXMgUHJvcGVydGllcyB0byB0YWtlIGludG8gYWNjb3VudCBpbiBjYWxjdWxhdGlvbnMgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnZlcnRpY2FsT2Zmc2V0IFRoZSBkaXN0YW5jZSB0byBiZSBhZGRlZCBiZXR3ZWVuIHRoZSBlbGVtZW50IGFuZCB0aGUgdHJpZ2dlciAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMuaG9yaXpvbnRhbE9mZnNldCBUaGUgaG9yaXpvbnRhbCBvZmZzZXQgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudCAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMuY2VudGVyZWQgV2hldGhlciB0aGUgZWxlbWVudCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBjZW50ZXIgYnkgZGVmYXVsdCAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMucmVzcG9uc2l2ZUhlaWdodCBXaGV0aGVyIHRoZSBlbGVtZW50IGNhbGN1bGF0ZXMgaXRzIGhlaWdodCBiYXNlZCBvbiBpdHMgY29udGVudCAob3B0aW9uYWwpLlxuICogQHJldHVybnMgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGVmdCBwb3NpdGlvbiwgdGhlIHRvcCBwb3NpdGlvbiwgdGhlIG1heGltdW0gaGVpZ2h0XG4gKiBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGN1cnJlbnQgYWxpZ25tZW50IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRQb3NpdGlvbihcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIHRyaWdnZXI6IEhUTUxFbGVtZW50LFxuICBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICBwcm9wZXJ0aWVzPzoge1xuICAgIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGhvcml6b250YWxPZmZzZXQ/OiBudW1iZXI7XG4gICAgY2VudGVyZWQ/OiBib29sZWFuO1xuICAgIHJlc3BvbnNpdmVIZWlnaHQ/OiBib29sZWFuO1xuICB9LFxuKTogU2JiRWxlbWVudFBvc2l0aW9uSW5mb3Mge1xuICBjb25zdCBtYXhXaWR0aE9mZnNldCA9IDE2O1xuICBjb25zdCB2ZXJ0aWNhbE9mZnNldCA9IHByb3BlcnRpZXM/LnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gIGNvbnN0IGhvcml6b250YWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy5ob3Jpem9udGFsT2Zmc2V0IHx8IDA7XG4gIGNvbnN0IHJlc3BvbnNpdmVIZWlnaHQgPSBwcm9wZXJ0aWVzPy5yZXNwb25zaXZlSGVpZ2h0IHx8IGZhbHNlO1xuXG4gIGNvbnN0IHRyaWdnZXJSZWMgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBlbGVtZW50UmVjID0gZ2V0RWxlbWVudFJlY3RhbmdsZShlbGVtZW50KTtcblxuICBjb25zdCB0cmlnZ2VyTGVmdCA9IHRyaWdnZXJSZWMubGVmdDtcbiAgY29uc3QgdHJpZ2dlclRvcCA9IHRyaWdnZXJSZWMudG9wO1xuXG4gIGNvbnN0IGF2YWlsYWJsZVNwYWNlUmlnaHQgPVxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtICh0cmlnZ2VyTGVmdCArIHRyaWdnZXJSZWMud2lkdGgpO1xuICBjb25zdCBhdmFpbGFibGVTcGFjZUFib3ZlID0gdHJpZ2dlclRvcCAtIHZlcnRpY2FsT2Zmc2V0O1xuICBjb25zdCBhdmFpbGFibGVTcGFjZUJlbG93ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gKHRyaWdnZXJUb3AgKyB0cmlnZ2VyUmVjLmhlaWdodCArIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAvLyBEZWZhdWx0IGVsZW1lbnQgYWxpZ25tZW50IGlzIFwic3RhcnQvYmVsb3dcIlxuICBsZXQgZWxlbWVudFhQb3NpdGlvbiA9IHRyaWdnZXJMZWZ0O1xuICBsZXQgZWxlbWVudFlQb3NpdGlvbiA9IHRyaWdnZXJUb3AgKyB0cmlnZ2VyUmVjLmhlaWdodCArIHZlcnRpY2FsT2Zmc2V0O1xuICBsZXQgZWxlbWVudFhPdmVyZmxvdyA9IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLSB0cmlnZ2VyUmVjLndpZHRoO1xuICBjb25zdCBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudCA9IHsgaG9yaXpvbnRhbDogJ3N0YXJ0JywgdmVydGljYWw6ICdiZWxvdycgfTtcblxuICAvLyBDYWxjdWxhdGUgZWxlbWVudCBtYXgtaGVpZ2h0XG4gIGxldCBlbGVtZW50TWF4SGVpZ2h0ID0gYCR7YXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0fXB4YDtcblxuICAvLyBDaGVjayBpZiBob3Jpem9udGFsIGFsaWdubWVudCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIFwiY2VudGVyXCJcbiAgaWYgKFxuICAgIHByb3BlcnRpZXM/LmNlbnRlcmVkICYmXG4gICAgdHJpZ2dlckxlZnQgLSBtYXhXaWR0aE9mZnNldCArIHRyaWdnZXJSZWMud2lkdGggLyAyID4gZWxlbWVudFJlYy5vZmZzZXRXaWR0aCAvIDIgJiZcbiAgICBhdmFpbGFibGVTcGFjZVJpZ2h0IC0gbWF4V2lkdGhPZmZzZXQgPiBlbGVtZW50WE92ZXJmbG93IC8gMlxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGVsZW1lbnRYT3ZlcmZsb3cgLz0gMjtcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCA9ICdjZW50ZXInO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImVuZFwiXG4gIGlmIChhdmFpbGFibGVTcGFjZVJpZ2h0IDwgZWxlbWVudFhPdmVyZmxvdyAmJiB0cmlnZ2VyTGVmdCA+IGVsZW1lbnRYT3ZlcmZsb3cpIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZWxlbWVudFhQb3NpdGlvbiAtIGVsZW1lbnRYT3ZlcmZsb3c7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnZW5kJztcbiAgfVxuXG4gIC8vIEFkZCBob3Jpem9udGFsIG9mZnNldFxuICBpZiAoXG4gICAgaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGFsaWdubWVudC5ob3Jpem9udGFsICE9PSAnY2VudGVyJyAmJlxuICAgIHRyaWdnZXJSZWMud2lkdGggLyAyIDwgaG9yaXpvbnRhbE9mZnNldFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uICs9IGhvcml6b250YWxPZmZzZXQgKiAoYWxpZ25tZW50Lmhvcml6b250YWwgPT09ICdzdGFydCcgPyAtMSA6IDEpO1xuICB9XG5cbiAgLy8gQ2hlY2sgd2hldGhlciB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2Ugb24gYm90aCBzaWRlc1xuICBpZiAoXG4gICAgKHRyaWdnZXJMZWZ0IDwgZWxlbWVudFhPdmVyZmxvdyAmJiBhdmFpbGFibGVTcGFjZVJpZ2h0IDwgZWxlbWVudFhPdmVyZmxvdykgfHxcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPCBlbGVtZW50UmVjLm9mZnNldFdpZHRoXG4gICkge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyAyIC0gZWxlbWVudFJlYy5vZmZzZXRXaWR0aCAvIDI7XG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJ0aWNhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImFib3ZlXCI6XG4gIGlmIChcbiAgICAoYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQgJiZcbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldCA+XG4gICAgICAgIChyZXNwb25zaXZlSGVpZ2h0ID8gZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgOiBlbGVtZW50UmVjLnNjcm9sbEhlaWdodCkpIHx8XG4gICAgKGF2YWlsYWJsZVNwYWNlQWJvdmUgPiBhdmFpbGFibGVTcGFjZUJlbG93ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUJlbG93IC0gdmVydGljYWxPZmZzZXQgPCBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAmJlxuICAgICAgIXJlc3BvbnNpdmVIZWlnaHQpXG4gICkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gPVxuICAgICAgYXZhaWxhYmxlU3BhY2VBYm92ZSA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0XG4gICAgICAgID8gZWxlbWVudFlQb3NpdGlvbiAtIHRyaWdnZXJSZWMuaGVpZ2h0IC0gYXZhaWxhYmxlU3BhY2VBYm92ZSAtIHZlcnRpY2FsT2Zmc2V0XG4gICAgICAgIDogdHJpZ2dlclRvcCAtIGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IC0gdmVydGljYWxPZmZzZXQ7XG5cbiAgICBlbGVtZW50TWF4SGVpZ2h0ID0gYCR7YXZhaWxhYmxlU3BhY2VBYm92ZSAtIHZlcnRpY2FsT2Zmc2V0fXB4YDtcbiAgICBhbGlnbm1lbnQudmVydGljYWwgPSAnYWJvdmUnO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBXaGVuIHpvb21pbmcgaW4gU2FmYXJpIHRoZSBjb250YWluZXIgcmVjdGFuZ2xlIGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcyBmb3IgdGhlIHBvc2l0aW9uXG4gIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWFkZCB0aGVtIHRvIHRoZSBjYWxjdWxhdGVkIGNvb3JkaW5hdGVzLlxuICBpZiAoY29udGFpbmVyUmVjdC5sZWZ0IDwgMCkge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9XG5cbiAgLy8gTm9ybWFsbHkgdGhlIGNvbnRhaW5lclJlY3QncyB0b3AgdmFsdWUgd291bGQgYmUgemVybywgaG93ZXZlciB3aGVuIHRoZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvIGFuIGlucHV0XG4gIC8vIChlLmcuIGluIGFuIGF1dG9jb21wbGV0ZSksIG1vYmlsZSBicm93c2VycyB3aWxsIHNoaWZ0IGV2ZXJ5dGhpbmcgaW4gb3JkZXIgdG8gcHV0IHRoZSBpbnB1dCBpbiB0aGUgbWlkZGxlXG4gIC8vIG9mIHRoZSBzY3JlZW4gYW5kIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSB2aXJ0dWFsIGtleWJvYXJkLiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgb2Zmc2V0LFxuICAvLyBvdGhlcndpc2Ugb3VyIHBvc2l0aW9uaW5nIHdpbGwgYmUgdGhyb3duIG9mZi5cbiAgLy8gQWRkaXRpb25hbGx5LCB3aGVuIHpvb21pbmcgaW4gU2FmYXJpIHRoaXMgZml4ZXMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uLlxuICBpZiAoY29udGFpbmVyUmVjdC50b3AgPCAwKSB7XG4gICAgZWxlbWVudFlQb3NpdGlvbiAtPSBjb250YWluZXJSZWN0LnRvcDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBlbGVtZW50WVBvc2l0aW9uLFxuICAgIGxlZnQ6IGVsZW1lbnRYUG9zaXRpb24sXG4gICAgbWF4SGVpZ2h0OiBlbGVtZW50TWF4SGVpZ2h0LFxuICAgIGFsaWdubWVudDogYWxpZ25tZW50LFxuICB9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gYSB0cmlnZ2VyIGVsZW1lbnQgYnkgZXZhbHVhdGluZ1xuICogdGhlIG9wdGltYWwgcG9zaXRpb24gYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBvZiB3aGljaCB0byBjYWxjdWxhdGUgdGhlIHBvc2l0aW9uLlxuICogQHBhcmFtIHRyaWdnZXIgVGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIHByb3BlcnRpZXMgUHJvcGVydGllcyB0byB0YWtlIGludG8gYWNjb3VudCBpbiBjYWxjdWxhdGlvbnMgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnZlcnRpY2FsT2Zmc2V0IFRoZSBkaXN0YW5jZSB0byBiZSBhZGRlZCBiZXR3ZWVuIHRoZSBlbGVtZW50IGFuZCB0aGUgdHJpZ2dlciAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMuaG9yaXpvbnRhbE9mZnNldCBUaGUgaG9yaXpvbnRhbCBvZmZzZXQgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudCAob3B0aW9uYWwpLlxuICogQHBhcmFtIHByb3BlcnRpZXMucmVzcG9uc2l2ZUhlaWdodCBXaGV0aGVyIHRoZSBlbGVtZW50IGNhbGN1bGF0ZXMgaXRzIGhlaWdodCBiYXNlZCBvbiBpdHMgY29udGVudCAob3B0aW9uYWwpLlxuICogQHJldHVybnMgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgbGVmdCBwb3NpdGlvbiwgdGhlIHRvcCBwb3NpdGlvbiwgdGhlIG1heGltdW0gaGVpZ2h0XG4gKiBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGN1cnJlbnQgYWxpZ25tZW50IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRQb3NpdGlvbkhvcml6b250YWwoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcHJvcGVydGllcz86IHtcbiAgICB2ZXJ0aWNhbE9mZnNldD86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIHJlc3BvbnNpdmVIZWlnaHQ/OiBib29sZWFuO1xuICAgIGNvbnRlbnRTZWxlY3Rvcj86IHN0cmluZztcbiAgfSxcbik6IFNiYkVsZW1lbnRQb3NpdGlvbkluZm9zIHtcbiAgY29uc3QgbWF4SGVpZ2h0T2Zmc2V0ID0gMTY7XG5cbiAgY29uc3QgdmVydGljYWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gcHJvcGVydGllcz8uaG9yaXpvbnRhbE9mZnNldCB8fCAwO1xuXG4gIGNvbnN0IHRyaWdnZXJSZWMgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBlbGVtZW50UmVjID0gZ2V0RWxlbWVudFJlY3RhbmdsZShlbGVtZW50KTtcbiAgY29uc3QgdHJpZ2dlclBhcmVudFJlYyA9IHRyaWdnZXJcbiAgICAucGFyZW50RWxlbWVudCEuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcihcbiAgICAgIHByb3BlcnRpZXM/LmNvbnRlbnRTZWxlY3RvciA/PyBgLiR7ZWxlbWVudC5jbGFzc05hbWV9YCxcbiAgICApIVxuICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC0gdHJpZ2dlclBhcmVudFJlYy5yaWdodDtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtICh0cmlnZ2VyUmVjLnRvcCAtIHZlcnRpY2FsT2Zmc2V0KTtcbiAgY29uc3QgYXZhaWxhYmxlVmVydGljYWxTcGFjZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRNYXhIZWlnaHQgPSBgJHthdmFpbGFibGVWZXJ0aWNhbFNwYWNlIC0gbWF4SGVpZ2h0T2Zmc2V0ICogMn1weGA7XG4gIGNvbnN0IGFsaWdubWVudDogU2JiQWxpZ25tZW50ID0geyBob3Jpem9udGFsOiAnZW5kJywgdmVydGljYWw6ICdhYm92ZScgfTtcbiAgY29uc3QgZWxlbWVudFhPdmVyZmxvdyA9IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggKyBob3Jpem9udGFsT2Zmc2V0O1xuXG4gIC8vIERlZmF1bHQgZWxlbWVudCBhbGlnbm1lbnQgaXMgXCJlbmQvYWJvdmVcIlxuICBsZXQgZWxlbWVudFhQb3NpdGlvbiA9IHRyaWdnZXJQYXJlbnRSZWMucmlnaHQ7XG4gIGxldCBlbGVtZW50WVBvc2l0aW9uID0gdHJpZ2dlclJlYy50b3AgKyB2ZXJ0aWNhbE9mZnNldDtcblxuICAvLyBDaGVjayBpZiBob3Jpem9udGFsIGFsaWdubWVudCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIFwic3RhcnRcIlxuICBpZiAoYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgdHJpZ2dlclJlYy5sZWZ0ID4gZWxlbWVudFhPdmVyZmxvdykge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gPSBlbGVtZW50WFBvc2l0aW9uIC0gdHJpZ2dlclBhcmVudFJlYy53aWR0aCAtIGVsZW1lbnRSZWMub2Zmc2V0V2lkdGg7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnc3RhcnQnO1xuICB9XG5cbiAgLy8gQWRkIGhvcml6b250YWwgb2Zmc2V0XG4gIGlmIChob3Jpem9udGFsT2Zmc2V0ICYmIGFsaWdubWVudC5ob3Jpem9udGFsICE9PSAnY2VudGVyJykge1xuICAgIGVsZW1lbnRYUG9zaXRpb24gKz0gaG9yaXpvbnRhbE9mZnNldCAqIChhbGlnbm1lbnQuaG9yaXpvbnRhbCA9PT0gJ3N0YXJ0JyA/IC0xIDogMSk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJ0aWNhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImFib3ZlXCI6XG4gIGlmIChhdmFpbGFibGVTcGFjZUJlbG93IDwgZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQpIHtcbiAgICBlbGVtZW50WVBvc2l0aW9uID0gYXZhaWxhYmxlVmVydGljYWxTcGFjZSAtIGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IC0gbWF4SGVpZ2h0T2Zmc2V0O1xuICB9XG5cbiAgLy8gV2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGUgY29udGFpbmVyIHJlY3RhbmdsZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSBwb3NpdGlvblxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1hZGQgdGhlbSB0byB0aGUgY2FsY3VsYXRlZCBjb29yZGluYXRlcy5cbiAgaWYgKGNvbnRhaW5lclJlY3QubGVmdCA8IDApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHRoZSBjb250YWluZXJSZWN0J3MgdG9wIHZhbHVlIHdvdWxkIGJlIHplcm8sIGhvd2V2ZXIgd2hlbiB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZCB0byBhbiBpbnB1dFxuICAvLyAoZS5nLiBpbiBhbiBhdXRvY29tcGxldGUpLCBtb2JpbGUgYnJvd3NlcnMgd2lsbCBzaGlmdCBldmVyeXRoaW5nIGluIG9yZGVyIHRvIHB1dCB0aGUgaW5wdXQgaW4gdGhlIG1pZGRsZVxuICAvLyBvZiB0aGUgc2NyZWVuIGFuZCB0byBtYWtlIHNwYWNlIGZvciB0aGUgdmlydHVhbCBrZXlib2FyZC4gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIG9mZnNldCxcbiAgLy8gb3RoZXJ3aXNlIG91ciBwb3NpdGlvbmluZyB3aWxsIGJlIHRocm93biBvZmYuXG4gIC8vIEFkZGl0aW9uYWxseSwgd2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGlzIGZpeGVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgaWYgKGNvbnRhaW5lclJlY3QudG9wIDwgMCkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC50b3A7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogZWxlbWVudFlQb3NpdGlvbixcbiAgICBsZWZ0OiBlbGVtZW50WFBvc2l0aW9uLFxuICAgIG1heEhlaWdodDogZWxlbWVudE1heEhlaWdodCxcbiAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQk0sU0FBVSxvQkFBb0IsSUFBZTtBQUNqRCxRQUFNLGVBQWUsT0FBTyxpQkFBaUIsRUFBRSxHQUM3QyxpQkFBaUIsYUFBYSxTQUM5QixtQkFBbUIsU0FBUyxhQUFhLFdBQVcsRUFBRSxFQUFFLFNBQUE7QUFHMUQsTUFBSSxtQkFBbUIsVUFBVSxxQkFBcUIsS0FBSztBQUN6RCxXQUFPO0FBQUEsTUFDTCxjQUFjLEdBQUc7QUFBQSxNQUNqQixjQUFjLEdBQUc7QUFBQSxNQUNqQixjQUFjLEdBQUc7QUFBQSxNQUNqQixhQUFhLEdBQUc7QUFBQSxNQUNoQixhQUFhLEdBQUc7QUFBQSxNQUNoQixhQUFhLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFFcEI7QUFJQSxLQUFHLE1BQU0sV0FBVztBQUNwQixLQUFHLE1BQU0sYUFBYTtBQUN0QixLQUFHLE1BQU0sVUFBVTtBQUVuQixRQUFNLGVBQWUsR0FBRyxjQUN0QixlQUFlLEdBQUcsY0FDbEIsZUFBZSxHQUFHLGNBQ2xCLGNBQWMsR0FBRyxhQUNqQixjQUFjLEdBQUcsYUFDakIsY0FBYyxHQUFHO0FBR25CLEtBQUcsTUFBTSxVQUFVO0FBQ25CLEtBQUcsTUFBTSxXQUFXO0FBQ3BCLEtBQUcsTUFBTSxhQUFhO0FBRXRCLFNBQU8sRUFBRSxjQUFjLGNBQWMsY0FBYyxhQUFhLGFBQWEsWUFBQTtBQUMvRTtBQUtNLFNBQVUsaUJBQ2QsU0FDQSxPQUFnQztBQUVoQyxNQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQU8sUUFBUSxzQkFBQTtBQUNyQixTQUNFLEtBQUssT0FBTyxNQUFNLFdBQ2xCLE1BQU0sV0FBVyxLQUFLLE1BQU0sS0FBSyxVQUNqQyxLQUFLLFFBQVEsTUFBTSxXQUNuQixNQUFNLFdBQVcsS0FBSyxPQUFPLEtBQUs7QUFFdEM7QUFpQk0sU0FBVSxtQkFDZCxTQUNBLFNBQ0EsV0FDQSxZQUtDO0FBRUQsUUFBTSxpQkFBaUI7QUFDdkIsUUFBTSxpQkFBaUIsWUFBWSxrQkFBa0I7QUFDckQsUUFBTSxtQkFBbUIsWUFBWSxvQkFBb0I7QUFDekQsUUFBTSxtQkFBbUIsWUFBWSxvQkFBb0I7QUFFekQsUUFBTSxhQUFhLFFBQVEsc0JBQUE7QUFDM0IsUUFBTSxhQUFhLG9CQUFvQixPQUFPO0FBRTlDLFFBQU0sY0FBYyxXQUFXO0FBQy9CLFFBQU0sYUFBYSxXQUFXO0FBRTlCLFFBQU0sc0JBQ0osU0FBUyxnQkFBZ0IsZUFBZSxjQUFjLFdBQVc7QUFDbkUsUUFBTSxzQkFBc0IsYUFBYTtBQUN6QyxRQUFNLHNCQUNKLFNBQVMsZ0JBQWdCLGdCQUFnQixhQUFhLFdBQVcsU0FBUztBQUc1RSxNQUFJLG1CQUFtQjtBQUN2QixNQUFJLG1CQUFtQixhQUFhLFdBQVcsU0FBUztBQUN4RCxNQUFJLG1CQUFtQixXQUFXLGNBQWMsV0FBVztBQUMzRCxRQUFNLFlBQTBCLEVBQUUsWUFBWSxTQUFTLFVBQVUsUUFBQTtBQUdqRSxNQUFJLG1CQUFtQixHQUFHLHNCQUFzQixjQUFjO0FBRzlELE1BQ0UsWUFBWSxZQUNaLGNBQWMsaUJBQWlCLFdBQVcsUUFBUSxJQUFJLFdBQVcsY0FBYyxLQUMvRSxzQkFBc0IsaUJBQWlCLG1CQUFtQixHQUMxRDtBQUNBLHdCQUFvQixvQkFBb0I7QUFDeEMsY0FBVSxhQUFhO0FBQUEsRUFDekI7QUFHQSxNQUFJLHNCQUFzQixvQkFBb0IsY0FBYyxrQkFBa0I7QUFDNUUsdUJBQW1CLG1CQUFtQjtBQUN0QyxjQUFVLGFBQWE7QUFBQSxFQUN6QjtBQUdBLE1BQ0Usb0JBQ0EsVUFBVSxlQUFlLFlBQ3pCLFdBQVcsUUFBUSxJQUFJLGtCQUN2QjtBQUNBLHdCQUFvQixvQkFBb0IsVUFBVSxlQUFlLFVBQVUsS0FBSztBQUFBLEVBQ2xGO0FBR0EsTUFDRyxjQUFjLG9CQUFvQixzQkFBc0Isb0JBQ3pELFNBQVMsZ0JBQWdCLGNBQWMsV0FBVyxhQUNsRDtBQUNBLHVCQUFtQixTQUFTLGdCQUFnQixjQUFjLElBQUksV0FBVyxjQUFjO0FBQUEsRUFDekY7QUFHQSxNQUNHLHNCQUFzQixpQkFBaUIsV0FBVyxnQkFDakQsc0JBQXNCLGtCQUNuQixtQkFBbUIsV0FBVyxlQUFlLFdBQVcsaUJBQzVELHNCQUFzQix1QkFDckIsc0JBQXNCLGlCQUFpQixXQUFXLGdCQUNsRCxDQUFDLGtCQUNIO0FBQ0EsdUJBQ0Usc0JBQXNCLFdBQVcsZUFDN0IsbUJBQW1CLFdBQVcsU0FBUyxzQkFBc0IsaUJBQzdELGFBQWEsV0FBVyxlQUFlO0FBRTdDLHVCQUFtQixHQUFHLHNCQUFzQixjQUFjO0FBQzFELGNBQVUsV0FBVztBQUFBLEVBQ3ZCO0FBRUEsUUFBTSxnQkFBZ0IsVUFBVSxzQkFBQTtBQUloQyxNQUFJLGNBQWMsT0FBTyxHQUFHO0FBQzFCLHdCQUFvQixjQUFjO0FBQUEsRUFDcEM7QUFPQSxNQUFJLGNBQWMsTUFBTSxHQUFHO0FBQ3pCLHdCQUFvQixjQUFjO0FBQUEsRUFDcEM7QUFFQSxTQUFPO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixXQUFXO0FBQUEsSUFDWDtBQUFBLEVBQUE7QUFFSjtBQWdCTSxTQUFVLDZCQUNkLFNBQ0EsU0FDQSxXQUNBLFlBS0M7QUFFRCxRQUFNLGtCQUFrQjtBQUV4QixRQUFNLGlCQUFpQixZQUFZLGtCQUFrQjtBQUNyRCxRQUFNLG1CQUFtQixZQUFZLG9CQUFvQjtBQUV6RCxRQUFNLGFBQWEsUUFBUSxzQkFBQTtBQUMzQixRQUFNLGFBQWEsb0JBQW9CLE9BQU87QUFDOUMsUUFBTSxtQkFBbUIsUUFDdEIsY0FBZSxXQUFZLGNBQzFCLFlBQVksbUJBQW1CLElBQUksUUFBUSxTQUFTLEVBQUUsRUFFdkQsc0JBQUE7QUFDSCxRQUFNLGdCQUFnQixVQUFVLHNCQUFBO0FBRWhDLFFBQU0sc0JBQXNCLFNBQVMsZ0JBQWdCLGNBQWMsaUJBQWlCO0FBQ3BGLFFBQU0sc0JBQ0osU0FBUyxnQkFBZ0IsZ0JBQWdCLFdBQVcsTUFBTTtBQUM1RCxRQUFNLHlCQUF5QixTQUFTLGdCQUFnQjtBQUN4RCxRQUFNLG1CQUFtQixHQUFHLHlCQUF5QixrQkFBa0IsQ0FBQztBQUN4RSxRQUFNLFlBQTBCLEVBQUUsWUFBWSxPQUFPLFVBQVUsUUFBQTtBQUMvRCxRQUFNLG1CQUFtQixXQUFXLGNBQWM7QUFHbEQsTUFBSSxtQkFBbUIsaUJBQWlCO0FBQ3hDLE1BQUksbUJBQW1CLFdBQVcsTUFBTTtBQUd4QyxNQUFJLHNCQUFzQixvQkFBb0IsV0FBVyxPQUFPLGtCQUFrQjtBQUNoRix1QkFBbUIsbUJBQW1CLGlCQUFpQixRQUFRLFdBQVc7QUFDMUUsY0FBVSxhQUFhO0FBQUEsRUFDekI7QUFHQSxNQUFJLG9CQUFvQixVQUFVLGVBQWUsVUFBVTtBQUN6RCx3QkFBb0Isb0JBQW9CLFVBQVUsZUFBZSxVQUFVLEtBQUs7QUFBQSxFQUNsRjtBQUdBLE1BQUksc0JBQXNCLFdBQVcsY0FBYztBQUNqRCx1QkFBbUIseUJBQXlCLFdBQVcsZUFBZTtBQUFBLEVBQ3hFO0FBSUEsTUFBSSxjQUFjLE9BQU8sR0FBRztBQUMxQix3QkFBb0IsY0FBYztBQUFBLEVBQ3BDO0FBT0EsTUFBSSxjQUFjLE1BQU0sR0FBRztBQUN6Qix3QkFBb0IsY0FBYztBQUFBLEVBQ3BDO0FBRUEsU0FBTztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sV0FBVztBQUFBLElBQ1g7QUFBQSxFQUFBO0FBRUo7In0=
|
|
@@ -2,10 +2,11 @@ import { overlayGapFixCorners } from "./overlay/overlay.js";
|
|
|
2
2
|
import { setOverlayPosition } from "./overlay/overlay-option-panel.js";
|
|
3
3
|
import { SbbOverlayOutsidePointerEventListener, sbbOverlayOutsidePointerEventListener } from "./overlay/overlay-outside-pointer-event-listener.js";
|
|
4
4
|
import { removeAriaComboBoxAttributes, removeAriaOverlayTriggerAttributes, setAriaComboBoxAttributes, setAriaOverlayTriggerAttributes } from "./overlay/overlay-trigger-attributes.js";
|
|
5
|
-
import { getElementPosition, getElementRectangle, isEventOnElement } from "./overlay/position.js";
|
|
5
|
+
import { getElementPosition, getElementPositionHorizontal, getElementRectangle, isEventOnElement } from "./overlay/position.js";
|
|
6
6
|
export {
|
|
7
7
|
SbbOverlayOutsidePointerEventListener,
|
|
8
8
|
getElementPosition,
|
|
9
|
+
getElementPositionHorizontal,
|
|
9
10
|
getElementRectangle,
|
|
10
11
|
isEventOnElement,
|
|
11
12
|
overlayGapFixCorners,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/common/menu-action-common.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,sBAAsB,CAAC;;AAKlF,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,wCAEhE;CAAG;AAGJ,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,EAEnD,YAAY,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"menu-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/common/menu-action-common.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,sBAAsB,CAAC;;AAKlF,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,wCAEhE;CAAG;AAGJ,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,EAEnD,YAAY,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,CAwB7D,CAAC"}
|
|
@@ -25,7 +25,7 @@ const style = css`*,
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@media (any-hover: hover) {
|
|
28
|
-
:host(:hover:not([disabled], :disabled, [disabled-interactive])) {
|
|
28
|
+
:host(:is(:hover:not([disabled], :disabled, [disabled-interactive]), [aria-expanded=true])) {
|
|
29
29
|
--sbb-menu-background-color: var(--sbb-color-iron);
|
|
30
30
|
--sbb-menu-background-color: light-dark(var(--sbb-color-iron), var(--sbb-color-milk));
|
|
31
31
|
--sbb-menu-action-forced-color-border-color: Highlight;
|
|
@@ -46,6 +46,10 @@ const style = css`*,
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
:host([data-sbb-menu-trigger]) {
|
|
50
|
+
--sbb-menu-action-cursor: default;
|
|
51
|
+
}
|
|
52
|
+
|
|
49
53
|
@media (forced-colors: active) {
|
|
50
54
|
:host([data-button]) {
|
|
51
55
|
--sbb-menu-action-color: ButtonText;
|
|
@@ -61,6 +65,10 @@ const style = css`*,
|
|
|
61
65
|
inset: calc(var(--sbb-menu-action-outer-vertical-padding) + var(--sbb-menu-action-content-padding-block) + var(--sbb-badge-position-offset)) calc(100% - var(--sbb-menu-action-outer-horizontal-padding) - var(--sbb-menu-action-content-padding-inline) - var(--sbb-size-icon-ui-small) + var(--sbb-badge-position-offset)) auto auto !important;
|
|
62
66
|
}
|
|
63
67
|
|
|
68
|
+
:host([aria-controls*=sbb-menu]) {
|
|
69
|
+
--sbb-menu-action-submenu-icon-display: flex;
|
|
70
|
+
}
|
|
71
|
+
|
|
64
72
|
:is(.sbb-menu-button, .sbb-menu-link) {
|
|
65
73
|
text-decoration: none;
|
|
66
74
|
display: block;
|
|
@@ -97,12 +105,18 @@ const style = css`*,
|
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
107
|
|
|
100
|
-
.sbb-menu-action__icon
|
|
108
|
+
.sbb-menu-action__icon,
|
|
109
|
+
.sbb-menu-submenu__icon {
|
|
101
110
|
display: flex;
|
|
102
111
|
min-width: var(--sbb-size-icon-ui-small);
|
|
103
112
|
min-height: var(--sbb-size-icon-ui-small);
|
|
104
113
|
}
|
|
105
114
|
|
|
115
|
+
.sbb-menu-submenu__icon {
|
|
116
|
+
display: var(--sbb-menu-action-submenu-icon-display, none);
|
|
117
|
+
margin-inline-start: auto;
|
|
118
|
+
}
|
|
119
|
+
|
|
106
120
|
.sbb-menu-action__label {
|
|
107
121
|
overflow: hidden;
|
|
108
122
|
white-space: nowrap;
|
|
@@ -127,6 +141,9 @@ const SbbMenuActionCommonElementMixin = (superClass) => {
|
|
|
127
141
|
<span class="sbb-menu-action__label">
|
|
128
142
|
<slot></slot>
|
|
129
143
|
</span>
|
|
144
|
+
<span class="sbb-menu-submenu__icon">
|
|
145
|
+
<sbb-icon name="chevron-small-right-small"></sbb-icon>
|
|
146
|
+
</span>
|
|
130
147
|
</span>
|
|
131
148
|
`;
|
|
132
149
|
}
|
|
@@ -143,4 +160,4 @@ const SbbMenuActionCommonElementMixin = (superClass) => {
|
|
|
143
160
|
export {
|
|
144
161
|
SbbMenuActionCommonElementMixin
|
|
145
162
|
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24tY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbWVudS9jb21tb24vbWVudS1hY3Rpb24tY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQWJzdHJhY3RDb25zdHJ1Y3RvciwgU2JiRGlzYWJsZWRNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbWVudS1hY3Rpb24uc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGUgZXh0ZW5kcyBTYmJJY29uTmFtZU1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYkFjdGlvbkJhc2VFbGVtZW50KSxcbikge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkFjdGlvbkJhc2VFbGVtZW50Pixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBAc2xvdFN0YXRlKClcbiAgYWJzdHJhY3QgY2xhc3MgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihzdXBlckNsYXNzKSlcbiAgICBpbXBsZW1lbnRzIFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlXG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItbWVudS1hY3Rpb25fX2NvbnRlbnRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LWFjdGlvbl9faWNvblwiPiAke3N1cGVyLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LWFjdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+
|
|
163
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24tY29tbW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvbWVudS9jb21tb24vbWVudS1hY3Rpb24tY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQWJzdHJhY3RDb25zdHJ1Y3RvciwgU2JiRGlzYWJsZWRNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IFNiYkljb25OYW1lTWl4aW4gfSBmcm9tICcuLi8uLi9pY29uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vbWVudS1hY3Rpb24uc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGUgZXh0ZW5kcyBTYmJJY29uTmFtZU1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYkFjdGlvbkJhc2VFbGVtZW50KSxcbikge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkFjdGlvbkJhc2VFbGVtZW50Pixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBAc2xvdFN0YXRlKClcbiAgYWJzdHJhY3QgY2xhc3MgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihzdXBlckNsYXNzKSlcbiAgICBpbXBsZW1lbnRzIFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlXG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItbWVudS1hY3Rpb25fX2NvbnRlbnRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LWFjdGlvbl9faWNvblwiPiAke3N1cGVyLnJlbmRlckljb25TbG90KCl9IDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LWFjdGlvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItbWVudS1zdWJtZW51X19pY29uXCI+XG4gICAgICAgICAgICA8c2JiLWljb24gbmFtZT1cImNoZXZyb24tc21hbGwtcmlnaHQtc21hbGxcIj48L3NiYi1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJNZW51QWN0aW9uQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlTyxNQUFNLGtDQUFrQyxDQUc3QyxlQUNnRTtNQUVqRCw4QkFBMEIsTUFBQTs7QUFEeEMsUUFBQSxtQkFBQSxDQUFBLFdBQVc7Ozs7QUFFRixRQUFBLGNBQUEsaUJBQWlCLGlCQUFpQixVQUFVLENBQUM7QUFBckQsSUFBQSxtQkFBUSxZQUE4QztBQUFBLE1BS25DLGlCQUFjO0FBQy9CLGVBQU87QUFBQTtBQUFBLGlEQUVvQyxNQUFNLGdCQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVNuRTtBQUFBOztBQWxCRixtQkFBQSxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1VBSWdCLEdBQUEsU0FBeUIsT0FKMUIsa0JBQUEsWUFBQSx1QkFBQSxHQUNiOzs7QUFtQkYsU0FBTztBQUVUOyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CSSResultGroup, PropertyDeclaration, PropertyValues, TemplateResult } from 'lit';
|
|
2
2
|
import { SbbOpenCloseBaseElement } from '../../core/base-elements.js';
|
|
3
3
|
import { SbbMenuButtonElement } from '../menu-button.js';
|
|
4
|
-
import { SbbMenuLinkElement } from '../menu-link.js';
|
|
4
|
+
import { SbbMenuLinkElement } from '../menu-link/menu-link.component.js';
|
|
5
5
|
declare const SbbMenuElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNamedSlotListMixinType<SbbMenuButtonElement | SbbMenuLinkElement>> & typeof SbbOpenCloseBaseElement;
|
|
6
6
|
/**
|
|
7
7
|
* It displays a contextual menu with one or more action element.
|
|
@@ -35,39 +35,50 @@ export declare class SbbMenuElement extends SbbMenuElement_base {
|
|
|
35
35
|
private _focusTrapController;
|
|
36
36
|
private _scrollHandler;
|
|
37
37
|
private _inertController;
|
|
38
|
+
private _mobileBreakpoint;
|
|
38
39
|
private _mediaMatcher;
|
|
39
40
|
private _darkModeController;
|
|
41
|
+
private _language;
|
|
42
|
+
private _nestedMenu;
|
|
40
43
|
constructor();
|
|
44
|
+
protected firstUpdated(changedProperties: PropertyValues<this>): void;
|
|
45
|
+
escapeStrategy(): void;
|
|
41
46
|
/**
|
|
42
47
|
* Opens the menu on trigger click.
|
|
43
48
|
*/
|
|
44
49
|
open(): void;
|
|
45
|
-
/**
|
|
46
|
-
* Closes the menu.
|
|
47
|
-
*/
|
|
50
|
+
/** Closes the menu and all its nested menus. */
|
|
48
51
|
close(): void;
|
|
52
|
+
/** Closes the menu and all related menus nested and parent menus). */
|
|
53
|
+
closeAll(): void;
|
|
54
|
+
/** @param [closeAll='false'] - If true, it ensures animations are correct by toggling some states when closing all related menus at once. */
|
|
55
|
+
private _close;
|
|
49
56
|
private _isZeroAnimationDuration;
|
|
50
57
|
private _handleOpening;
|
|
51
58
|
private _handleClosing;
|
|
52
|
-
/**
|
|
53
|
-
* Handles click and checks if its target is a sbb-menu-button/sbb-menu-link.
|
|
54
|
-
*/
|
|
55
|
-
private _onClick;
|
|
56
59
|
private _handleKeyDown;
|
|
57
60
|
protected createRenderRoot(): HTMLElement | DocumentFragment;
|
|
58
61
|
connectedCallback(): void;
|
|
59
62
|
disconnectedCallback(): void;
|
|
60
63
|
requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration): void;
|
|
61
|
-
protected firstUpdated(changedProperties: PropertyValues<this>): void;
|
|
62
64
|
private _checkListCase;
|
|
63
65
|
private _configureTrigger;
|
|
64
66
|
private _attachWindowEvents;
|
|
65
|
-
private
|
|
67
|
+
private _interactiveElementClick;
|
|
66
68
|
private _pointerDownListener;
|
|
67
69
|
private _closeOnBackdropClick;
|
|
70
|
+
/** Converts the linked list into an array of SbbMenuElement. */
|
|
71
|
+
private _nestedMenus;
|
|
72
|
+
private _parentMenu;
|
|
73
|
+
/** The outermost menu. */
|
|
74
|
+
private _mainMenu;
|
|
75
|
+
private _isNested;
|
|
76
|
+
private _updateNestedInert;
|
|
77
|
+
private _handleMouseOver;
|
|
68
78
|
private _onMenuAnimationEnd;
|
|
69
79
|
private _setMenuPosition;
|
|
70
80
|
private _syncNegative;
|
|
81
|
+
private _isMobile;
|
|
71
82
|
protected render(): TemplateResult;
|
|
72
83
|
}
|
|
73
84
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAUb,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAUb,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAqBtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAI9E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;;AAmB3B;;;;;;;GAOG;AACH,qBAEM,cAAe,SAAQ,mBAGH;IACxB,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAgC,IAAI,UAAU;IAC9C,mBAA4B,mBAAmB,WAAwC;IAEvF;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD;;;OAGG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,aAAa,CAQlB;IACH,OAAO,CAAC,mBAAmB,CAA+D;IAC1F,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,WAAW,CAA+B;;cAO/B,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM9D,cAAc,IAAI,IAAI;IAItC;;OAEG;IACI,IAAI,IAAI,IAAI;IAuCnB,gDAAgD;IACzC,KAAK,IAAI,IAAI;IAIpB,uEAAuE;IAChE,QAAQ,IAAI,IAAI;IAIvB,6IAA6I;IAC7I,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,cAAc;cAqDH,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAkBrD,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAQ5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAQP,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,oBAAoB,CAM1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAInB,0BAA0B;IAC1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,SAAS;cAIE,MAAM,IAAI,cAAc;CA+B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
|