@glowhop/angular-tour 1.0.0 → 1.1.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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @glowhop/angular-tour
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [165797b]
|
|
8
|
+
- @glowhop/core-tour@1.1.0
|
|
9
|
+
|
|
10
|
+
## 1.0.2
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 5aa8cdf: Fix two mobile overlay defects.
|
|
15
|
+
|
|
16
|
+
The backdrop no longer stops short of the bottom of the screen. Its `viewBox` is
|
|
17
|
+
now measured from the element's own box instead of `documentElement.clientHeight`,
|
|
18
|
+
which a retracting mobile URL bar moves out of step with the box a fixed element
|
|
19
|
+
is sized against; `preserveAspectRatio="xMinYMin slice"` makes any residual mismatch
|
|
20
|
+
overdraw rather than letterbox, and the element is sized to `100lvh` where that
|
|
21
|
+
unit exists so it always spans the visible area.
|
|
22
|
+
|
|
23
|
+
The cutout now animates on WebKit. Safari — and therefore every browser on iOS —
|
|
24
|
+
cannot animate `d` through the Web Animations API, so the rectangle is
|
|
25
|
+
interpolated frame by frame and the path regenerated from it, clocked by the
|
|
26
|
+
eased progress of the animation already running on the same element, instead of
|
|
27
|
+
snapping to each target.
|
|
28
|
+
- Updated dependencies [5aa8cdf]
|
|
29
|
+
- @glowhop/core-tour@1.0.2
|
|
30
|
+
|
|
31
|
+
## 1.0.1
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- Updated dependencies [358c4b1]
|
|
36
|
+
- @glowhop/core-tour@1.0.1
|
|
37
|
+
|
|
3
38
|
## 1.0.0
|
|
4
39
|
|
|
5
40
|
### Major Changes
|
|
@@ -359,6 +359,7 @@ export class GlowTourOverlay extends GlowTourBoundElement {
|
|
|
359
359
|
idleAriaHidden = OVERLAY_IDLE_ATTRIBUTES["aria-hidden"];
|
|
360
360
|
idleAllowInteraction = OVERLAY_IDLE_ATTRIBUTES["data-glow-tour-allow-interaction"];
|
|
361
361
|
idleInert = OVERLAY_IDLE_ATTRIBUTES.inert;
|
|
362
|
+
idlePreserveAspectRatio = OVERLAY_IDLE_ATTRIBUTES.preserveAspectRatio;
|
|
362
363
|
idleStyle = OVERLAY_IDLE_STYLE_TEXT;
|
|
363
364
|
idlePathCursor = OVERLAY_PATH_IDLE_ATTRIBUTES.cursor;
|
|
364
365
|
idlePathOpacity = OVERLAY_PATH_IDLE_ATTRIBUTES.opacity;
|
|
@@ -374,6 +375,7 @@ export class GlowTourOverlay extends GlowTourBoundElement {
|
|
|
374
375
|
data-glow-tour-overlay
|
|
375
376
|
focusable="false"
|
|
376
377
|
[attr.inert]="idleInert"
|
|
378
|
+
[attr.preserveAspectRatio]="idlePreserveAspectRatio"
|
|
377
379
|
role="presentation"
|
|
378
380
|
[style]="idleStyle"
|
|
379
381
|
viewBox="0 0 0 0"
|
|
@@ -400,6 +402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
400
402
|
data-glow-tour-overlay
|
|
401
403
|
focusable="false"
|
|
402
404
|
[attr.inert]="idleInert"
|
|
405
|
+
[attr.preserveAspectRatio]="idlePreserveAspectRatio"
|
|
403
406
|
role="presentation"
|
|
404
407
|
[style]="idleStyle"
|
|
405
408
|
viewBox="0 0 0 0"
|
|
@@ -621,4 +624,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
621
624
|
type: Input,
|
|
622
625
|
args: [{ transform: booleanAttribute }]
|
|
623
626
|
}] } });
|
|
624
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RvdXItY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBS04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsb0JBQW9CLEdBQ3JCLE1BQU0sNEJBQTRCLENBQUM7O0FBR3BDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6RSxNQUFNLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBZXpFLE1BQU0saUNBQWlDLEdBQXNDO0lBQzNFLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVUsQ0FBQztBQVN2RSxNQUNNLGFBQWE7SUFDUixPQUFPLEdBQUcsTUFB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QixLQUFLO2dCQUlzQyxRQUFRO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZWZmZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25DaGFuZ2VzLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgdHlwZSBPbkluaXQsXG4gIHR5cGUgU2lnbmFsLFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEdsb3dUb3VyIGFzIENvcmVHbG93VG91ciwgVG91clN0YXRlIH0gZnJvbSBcIkBnbG93aG9wL2NvcmUtdG91clwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBZGFwdGVyUm9vdEJpbmRpbmcsXG4gIGNvbm5lY3RHbG93VG91clJvb3QsXG4gIE9WRVJMQVlfSURMRV9BVFRSSUJVVEVTLFxuICBPVkVSTEFZX0lETEVfU1RZTEUsXG4gIE9WRVJMQVlfUEFUSF9JRExFX0FUVFJJQlVURVMsXG4gIFBPSU5URVJfSURMRV9BVFRSSUJVVEVTLFxuICBQT0lOVEVSX0lETEVfU1RZTEUsXG4gIFBPUE9WRVJfSURMRV9BVFRSSUJVVEVTLFxuICBQT1BPVkVSX0lETEVfU1RZTEUsXG4gIHN0eWxlUmVjb3JkVG9Dc3NUZXh0LFxufSBmcm9tIFwiQGdsb3dob3AvY29yZS10b3VyL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ndWxhclRvdXJDb250ZW50IH0gZnJvbSBcIi4uL2dsb3ctdG91clwiO1xuXG5jb25zdCBPVkVSTEFZX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KE9WRVJMQVlfSURMRV9TVFlMRSk7XG5jb25zdCBQT0lOVEVSX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KFBPSU5URVJfSURMRV9TVFlMRSk7XG5jb25zdCBQT1BPVkVSX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KFBPUE9WRVJfSURMRV9TVFlMRSk7XG5cbnR5cGUgVG91ciA9IENvcmVHbG93VG91cjxBbmd1bGFyVG91ckNvbnRlbnQ+O1xuXG4vKiogUG9pbnRlciBkaXJlY3Rpb24gY29udGVudCB2YWx1ZSB0eXBlOiBzdHJpbmcgb3IgVGVtcGxhdGVSZWYuICovXG5leHBvcnQgdHlwZSBQb2ludGVyRGlyZWN0aW9uVmFsdWUgPSBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuLyoqIFBvaW50ZXIgZGlyZWN0aW9uIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBvaW50ZXIgY29udGVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRlckRpcmVjdGlvbkNvbnRlbnQge1xuICByZWFkb25seSB0b3A/OiBQb2ludGVyRGlyZWN0aW9uVmFsdWU7XG4gIHJlYWRvbmx5IGJvdHRvbT86IFBvaW50ZXJEaXJlY3Rpb25WYWx1ZTtcbiAgcmVhZG9ubHkgbGVmdD86IFBvaW50ZXJEaXJlY3Rpb25WYWx1ZTtcbiAgcmVhZG9ubHkgcmlnaHQ/OiBQb2ludGVyRGlyZWN0aW9uVmFsdWU7XG59XG5cbmNvbnN0IERFRkFVTFRfUE9JTlRFUl9ESVJFQ1RJT05fQ09OVEVOVDogUmVxdWlyZWQ8UG9pbnRlckRpcmVjdGlvbkNvbnRlbnQ+ID0ge1xuICBib3R0b206IFwi8J+Rh1wiLFxuICBsZWZ0OiBcIvCfkYhcIixcbiAgcmlnaHQ6IFwi8J+RiVwiLFxuICB0b3A6IFwi8J+RhlwiLFxufTtcblxuY29uc3QgUE9JTlRFUl9ESVJFQ1RJT05TID0gW1widG9wXCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLCBcInJpZ2h0XCJdIGFzIGNvbnN0O1xuXG5pbnRlcmZhY2UgQWN0aXZlUm9vdEJpbmRpbmcge1xuICByZWFkb25seSBiaW5kaW5nOiBBZGFwdGVyUm9vdEJpbmRpbmc7XG4gIHJlYWRvbmx5IGlkUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHJvb3Q6IEhUTUxFbGVtZW50O1xuICByZWFkb25seSB0b3VyOiBUb3VyO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBHbG93VG91clNjb3BlIHtcbiAgcmVhZG9ubHkgYmluZGluZyA9IHNpZ25hbDxBZGFwdGVyUm9vdEJpbmRpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdG91ciA9IHNpZ25hbDxUb3VyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc25hcHNob3QgPSBzaWduYWw8VG91clN0YXRlPEFuZ3VsYXJUb3VyQ29udGVudD4gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSB0aGlzLnNuYXBzaG90LmFzUmVhZG9ubHkoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAob25DbGVhbnVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdXIgPSB0aGlzLnRvdXIoKTtcbiAgICAgICAgaWYgKCF0b3VyKSB7XG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5zZXQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc25hcHNob3Quc2V0KHRvdXIuc3RhdGUuZ2V0KCkpO1xuICAgICAgICBvbkNsZWFudXAodG91ci5zdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB0aGlzLnNuYXBzaG90LnNldChzdGF0ZSkpKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBHTE9XX1RPVVJfU0NPUEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2xvd1RvdXJTY29wZT4oXCJHbG93VG91clNjb3BlXCIpO1xuXG5mdW5jdGlvbiB1c2VUb3VyU2NvcGUoKSB7XG4gIGNvbnN0IHNjb3BlID0gaW5qZWN0KEdMT1dfVE9VUl9TQ09QRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgaWYgKCFzY29wZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2xvd1RvdXIgY29tcG9uZW50cyBtdXN0IGJlIHJlbmRlcmVkIGluc2lkZSA8Z2xvdy10b3VyLXJvb3QgW3RvdXJdPVwiLi4uXCI+LicpO1xuICB9XG4gIHJldHVybiBzY29wZTtcbn1cblxuLyoqXG4gKiBJbmplY3RzIHRoZSB0b3VyIHN0YXRlIHNpZ25hbCBpbnRvIGEgY29tcG9uZW50LlxuICogTXVzdCBiZSBjYWxsZWQgd2l0aGluIGEgR2xvd1RvdXJSb290IGNvbXBvbmVudCBjb250ZXh0LlxuICogQHJldHVybnMgQSBzaWduYWwgY29udGFpbmluZyB0aGUgY3VycmVudCB0b3VyIHN0YXRlIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RHbG93VG91cigpOiBTaWduYWw8VG91clN0YXRlPEFuZ3VsYXJUb3VyQ29udGVudD4gfCBudWxsPiB7XG4gIHJldHVybiB1c2VUb3VyU2NvcGUoKS5zdGF0ZTtcbn1cblxuQERpcmVjdGl2ZSgpXG5hYnN0cmFjdCBjbGFzcyBHbG93VG91clJlYWN0aXZlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjb3BlID0gdXNlVG91clNjb3BlKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzbmFwc2hvdCA9IHRoaXMuc2NvcGUuc3RhdGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGVwID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zbmFwc2hvdCgpPy5jdXJyZW50U3RlcD8uY3VycmVudFByb3BzID8/IG51bGwpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLXJvb3RcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDogeyBcImRhdGEtZ2xvdy10b3VyLXJvb3RcIjogXCJcIiB9LFxuICBwcm92aWRlcnM6IFtHbG93VG91clNjb3BlLCB7IHByb3ZpZGU6IEdMT1dfVE9VUl9TQ09QRSwgdXNlRXhpc3Rpbmc6IEdsb3dUb3VyU2NvcGUgfV0sXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50IC8+XCIsXG59KVxuLyoqIFJvb3QgY29udGFpbmVyIGNvbXBvbmVudCBmb3IgR2xvd1RvdXIuanMuIFByb3ZpZGVzIHRvdXIgY29udGV4dCBhbmQgbWFuYWdlcyB0aGUgcm9vdCBiaW5kaW5nLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyUm9vdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICAvKiogVGhlIHRvdXIgY29udHJvbGxlciBpbnN0YW5jZSB0byBkaXNwbGF5LiAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0b3VyITogVG91cjtcbiAgLyoqIE9wdGlvbmFsIHByZWZpeCBmb3IgZ2VuZXJhdGVkIEhUTUwgSURzLiAqL1xuICBASW5wdXQoKSBpZFByZWZpeD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlID0gaW5qZWN0KEdsb3dUb3VyU2NvcGUpO1xuICBwcml2YXRlIGFjdGl2ZTogQWN0aXZlUm9vdEJpbmRpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB0aGlzLnJlY29uY2lsZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdsb3dUb3VyUm9vdCByZXF1aXJlcyBhIHRvdXIgaW5wdXQuXCIpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMucmVjb25jaWxlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbGVhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25jaWxlKCkge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB0b3VyID0gdGhpcy50b3VyO1xuICAgIGNvbnN0IGlkUHJlZml4ID0gdGhpcy5pZFByZWZpeDtcbiAgICB0aGlzLnNjb3BlLnRvdXIuc2V0KHRvdXIpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmFjdGl2ZTtcbiAgICBpZiAoXG4gICAgICBjdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBjdXJyZW50LnJvb3QgPT09IHJvb3QgJiZcbiAgICAgIGN1cnJlbnQudG91ciA9PT0gdG91ciAmJlxuICAgICAgY3VycmVudC5pZFByZWZpeCA9PT0gaWRQcmVmaXhcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgY29uc3QgYmluZGluZyA9IGNvbm5lY3RHbG93VG91clJvb3QodG91ciwge1xuICAgICAgaWRQcmVmaXgsXG4gICAgICByb290LFxuICAgIH0pO1xuICAgIGNvbnN0IGFjdGl2ZSA9IHsgYmluZGluZywgaWRQcmVmaXgsIHJvb3QsIHRvdXIgfTtcbiAgICB0aGlzLmFjdGl2ZSA9IGFjdGl2ZTtcbiAgICB0aGlzLnNjb3BlLmJpbmRpbmcuc2V0KGJpbmRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxlYXNlKCkge1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICAgIGlmICghYWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmUgPSBudWxsO1xuICAgIGFjdGl2ZS5iaW5kaW5nLnJlbGVhc2UoKTtcbiAgICBpZiAodGhpcy5zY29wZS5iaW5kaW5nKCkgPT09IGFjdGl2ZS5iaW5kaW5nKSB0aGlzLnNjb3BlLmJpbmRpbmcuc2V0KG51bGwpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItaGVhZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aGVhZGVyIGRhdGEtZ2xvdy10b3VyLWhlYWRlciBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LnRpdGxlXCI+XG4gICAgICBAaWYgKHRpdGxlVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlVGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgdGl0bGVUZXh0KCkgfX1cbiAgICAgIH1cbiAgICA8L2hlYWRlcj5cbiAgYCxcbn0pXG4vKiogSGVhZGVyIGNvbXBvbmVudCBkaXNwbGF5aW5nIHRoZSBjdXJyZW50IHN0ZXAncyB0aXRsZS4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91ckhlYWRlciBleHRlbmRzIEdsb3dUb3VyUmVhY3RpdmVDb21wb25lbnQge1xuICByZWFkb25seSB0aXRsZVRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5zdGVwKCk/LnRpdGxlO1xuICAgIHJldHVybiB0aXRsZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdGl0bGUgOiBudWxsO1xuICB9KTtcbiAgcmVhZG9ubHkgdGl0bGVUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5zdGVwKCk/LnRpdGxlO1xuICAgIHJldHVybiB0eXBlb2YgdGl0bGUgPT09IFwic3RyaW5nXCIgPyB0aXRsZSA6IFwiXCI7XG4gIH0pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLWNvbnRlbnRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgYXJpYS1saXZlPVwicG9saXRlXCIgZGF0YS1nbG93LXRvdXItY29udGVudCBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LmRlc2NyaXB0aW9uXCI+XG4gICAgICBAaWYgKGNvbnRlbnRUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRlbXBsYXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IGNvbnRlbnRUZXh0KCkgfX1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG4vKiogQ29udGVudCBjb21wb25lbnQgZGlzcGxheWluZyB0aGUgY3VycmVudCBzdGVwJ3MgY29udGVudCB3aXRoIGxpdmUgcmVnaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyQ29udGVudCBleHRlbmRzIEdsb3dUb3VyUmVhY3RpdmVDb21wb25lbnQge1xuICByZWFkb25seSBjb250ZW50VGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc3RlcCgpPy5jb250ZW50O1xuICAgIHJldHVybiBjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyBjb250ZW50IDogbnVsbDtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbnRlbnRUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnN0ZXAoKT8uY29udGVudDtcbiAgICByZXR1cm4gdHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIgPyBjb250ZW50IDogXCJcIjtcbiAgfSk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItZm9vdGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgQGlmICghc3RlcCgpPy5wb3BvdmVyPy5oaWRlRm9vdGVyKSB7IDxmb290ZXIgZGF0YS1nbG93LXRvdXItZm9vdGVyPjxuZy1jb250ZW50IC8+PC9mb290ZXI+IH1gLFxufSlcbi8qKiBGb290ZXIgY29tcG9uZW50IGNvbnRhaW5pbmcgYWN0aW9uIGJ1dHRvbnMuIENvbmRpdGlvbmFsbHkgcmVuZGVyZWQgYmFzZWQgb24gdG91ciBzdGVwIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJGb290ZXIgZXh0ZW5kcyBHbG93VG91clJlYWN0aXZlQ29tcG9uZW50IHt9XG5cbkBEaXJlY3RpdmUoKVxuYWJzdHJhY3QgY2xhc3MgR2xvd1RvdXJCb3VuZEVsZW1lbnQ8VCBleHRlbmRzIEVsZW1lbnQ+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjb3BlID0gdXNlVG91clNjb3BlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJvdGVjdGVkIGJpbmQoZWxlbWVudDogVCwgYmluZEVsZW1lbnQ6IChiaW5kaW5nOiBBZGFwdGVyUm9vdEJpbmRpbmcsIGVsZW1lbnQ6IFQpID0+ICgpID0+IHZvaWQpIHtcbiAgICBjb25zdCBjbGVhbnVwID0gZWZmZWN0KFxuICAgICAgKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBiaW5kaW5nID0gdGhpcy5zY29wZS5iaW5kaW5nKCk7XG4gICAgICAgIGlmIChiaW5kaW5nKSBvbkNsZWFudXAoYmluZEVsZW1lbnQoYmluZGluZywgZWxlbWVudCkpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcbiAgICApO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gY2xlYW51cC5kZXN0cm95KCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItcG9wb3ZlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyBUaGUgaWRsZSBhdHRyaWJ1dGVzL3N0eWxlIGNvbWUgZnJvbSBpbXBvcnRlZCBgQGdsb3dob3AvY29yZS10b3VyL2FkYXB0ZXJgXG4gIC8vIGNvbnN0YW50cywgc28gbmdjJ3MgQU9UIHRlbXBsYXRlIGFuYWx5emVyIChORzEwMTApIGNhbm5vdCBpbmxpbmUgdGhlbSBhc1xuICAvLyBzdHJpbmctaW50ZXJwb2xhdGVkIGxpdGVyYWxzIGluIHRoZSB0ZW1wbGF0ZS4gQm91bmQgdmlhIGNvbXBvbmVudCBmaWVsZHNcbiAgLy8gaW5zdGVhZDsgdGhlIHZhbHVlcyBhcmUgc3RpbGwgc3RhdGljLCBzbyBzZXJ2ZXIgYW5kIGNsaWVudCByZW5kZXJcbiAgLy8gYnl0ZS1pZGVudGljYWwgb3V0cHV0LlxuICB0ZW1wbGF0ZTogYFxuICAgIDxzZWN0aW9uICN0b3VyRWxlbWVudFxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaWRsZUFyaWFIaWRkZW5cIlxuICAgICAgZGF0YS1nbG93LXRvdXItcG9wb3ZlclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzY29wZS5iaW5kaW5nKCk/Lmlkcz8uZGVzY3JpcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNjb3BlLmJpbmRpbmcoKT8uaWRzPy50aXRsZVwiXG4gICAgICBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LnBvcG92ZXJcIlxuICAgICAgW2F0dHIuaW5lcnRdPVwiaWRsZUluZXJ0XCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgW3N0eWxlXT1cImlkbGVTdHlsZVwiXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICA+PG5nLWNvbnRlbnQgLz48L3NlY3Rpb24+XG4gIGAsXG59KVxuLyoqIFBvcG92ZXIgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIHRvdXIgY29udGVudCB3aXRoIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91clBvcG92ZXIgZXh0ZW5kcyBHbG93VG91ckJvdW5kRWxlbWVudDxIVE1MRWxlbWVudD4gaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKFwidG91ckVsZW1lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlQXJpYUhpZGRlbiA9IFBPUE9WRVJfSURMRV9BVFRSSUJVVEVTW1wiYXJpYS1oaWRkZW5cIl07XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlSW5lcnQgPSBQT1BPVkVSX0lETEVfQVRUUklCVVRFUy5pbmVydDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVTdHlsZSA9IFBPUE9WRVJfSURMRV9TVFlMRV9URVhUO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgKGJpbmRpbmcsIGVsZW1lbnQpID0+IGJpbmRpbmcuYmluZFBvcG92ZXIoZWxlbWVudCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItcG9pbnRlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjdG91ckVsZW1lbnQgZGF0YS1nbG93LXRvdXItcG9pbnRlciBbYXR0ci5hcmlhLWhpZGRlbl09XCJpZGxlQXJpYUhpZGRlblwiIFtzdHlsZV09XCJpZGxlU3R5bGVcIj5cbiAgICAgIEBmb3IgKGRpcmVjdGlvbiBvZiBkaXJlY3Rpb25zOyB0cmFjayBkaXJlY3Rpb24pIHtcbiAgICAgICAgPGRpdiBbYXR0ci5kYXRhLWdsb3ctdG91ci1wb2ludGVyLWRpcmVjdGlvbl09XCJkaXJlY3Rpb25cIj5cbiAgICAgICAgICBAaWYgKGFzVGVtcGxhdGUoY29udGVudCgpW2RpcmVjdGlvbl0pOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyBjb250ZW50KClbZGlyZWN0aW9uXSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuLyoqIFBvaW50ZXIgY29tcG9uZW50IGRpc3BsYXlpbmcgZGlyZWN0aW9uYWwgaW5kaWNhdG9ycyBwb2ludGluZyB0byB0aGUgdGFyZ2V0IGVsZW1lbnQuICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJQb2ludGVyIGV4dGVuZHMgR2xvd1RvdXJCb3VuZEVsZW1lbnQ8SFRNTEVsZW1lbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChcInRvdXJFbGVtZW50XCIsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGlvbkNvbnRlbnRWYWx1ZSA9IHNpZ25hbDxQb2ludGVyRGlyZWN0aW9uQ29udGVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVBcmlhSGlkZGVuID0gUE9JTlRFUl9JRExFX0FUVFJJQlVURVNbXCJhcmlhLWhpZGRlblwiXTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVTdHlsZSA9IFBPSU5URVJfSURMRV9TVFlMRV9URVhUO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rpb25zID0gUE9JTlRFUl9ESVJFQ1RJT05TO1xuICByZWFkb25seSBjb250ZW50ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi5ERUZBVUxUX1BPSU5URVJfRElSRUNUSU9OX0NPTlRFTlQsXG4gICAgLi4udGhpcy5kaXJlY3Rpb25Db250ZW50VmFsdWUoKSxcbiAgfSkpO1xuXG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY29udGVudCBmb3IgZWFjaCBwb2ludGVyIGRpcmVjdGlvbi4gKi9cbiAgQElucHV0KCkgc2V0IGRpcmVjdGlvbkNvbnRlbnQodmFsdWU6IFBvaW50ZXJEaXJlY3Rpb25Db250ZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kaXJlY3Rpb25Db250ZW50VmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc1RlbXBsYXRlKHZhbHVlOiBQb2ludGVyRGlyZWN0aW9uVmFsdWUpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iaW5kKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAoYmluZGluZywgZWxlbWVudCkgPT4gYmluZGluZy5iaW5kUG9pbnRlcihlbGVtZW50KSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdsb3ctdG91ci1vdmVybGF5XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHN2ZyAjdG91ckVsZW1lbnRcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImlkbGVBcmlhSGlkZGVuXCJcbiAgICAgIFthdHRyLmRhdGEtZ2xvdy10b3VyLWFsbG93LWludGVyYWN0aW9uXT1cImlkbGVBbGxvd0ludGVyYWN0aW9uXCJcbiAgICAgIGRhdGEtZ2xvdy10b3VyLW92ZXJsYXlcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIFthdHRyLmluZXJ0XT1cImlkbGVJbmVydFwiXG4gICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgIFtzdHlsZV09XCJpZGxlU3R5bGVcIlxuICAgICAgdmlld0JveD1cIjAgMCAwIDBcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIFthdHRyLmN1cnNvcl09XCJpZGxlUGF0aEN1cnNvclwiXG4gICAgICAgIGRhdGEtZ2xvdy10b3VyLW92ZXJsYXktcGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgW2F0dHIub3BhY2l0eV09XCJpZGxlUGF0aE9wYWNpdHlcIlxuICAgICAgICBbYXR0ci5wb2ludGVyLWV2ZW50c109XCJpZGxlUGF0aFBvaW50ZXJFdmVudHNcIlxuICAgICAgLz48bmctY29udGVudCAvPlxuICAgIDwvc3ZnPlxuICBgLFxufSlcbi8qKiBPdmVybGF5IGNvbXBvbmVudCByZW5kZXJpbmcgYSBjbGlwcGVkIFNWRyBtYXNrIGhpZ2hsaWdodGluZyB0aGUgdGFyZ2V0IGVsZW1lbnQuICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJPdmVybGF5IGV4dGVuZHMgR2xvd1RvdXJCb3VuZEVsZW1lbnQ8U1ZHU1ZHRWxlbWVudD4gaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKFwidG91ckVsZW1lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ITogRWxlbWVudFJlZjxTVkdTVkdFbGVtZW50PjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVBcmlhSGlkZGVuID0gT1ZFUkxBWV9JRExFX0FUVFJJQlVURVNbXCJhcmlhLWhpZGRlblwiXTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVBbGxvd0ludGVyYWN0aW9uID1cbiAgICBPVkVSTEFZX0lETEVfQVRUUklCVVRFU1tcImRhdGEtZ2xvdy10b3VyLWFsbG93LWludGVyYWN0aW9uXCJdO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWRsZUluZXJ0ID0gT1ZFUkxBWV9JRExFX0FUVFJJQlVURVMuaW5lcnQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlU3R5bGUgPSBPVkVSTEFZX0lETEVfU1RZTEVfVEVYVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVQYXRoQ3Vyc29yID0gT1ZFUkxBWV9QQVRIX0lETEVfQVRUUklCVVRFUy5jdXJzb3I7XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlUGF0aE9wYWNpdHkgPSBPVkVSTEFZX1BBVEhfSURMRV9BVFRSSUJVVEVTLm9wYWNpdHk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlUGF0aFBvaW50ZXJFdmVudHMgPSBPVkVSTEFZX1BBVEhfSURMRV9BVFRSSUJVVEVTW1wicG9pbnRlci1ldmVudHNcIl07XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iaW5kKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAoYmluZGluZywgZWxlbWVudCkgPT4gYmluZGluZy5iaW5kT3ZlcmxheShlbGVtZW50KSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5hYnN0cmFjdCBjbGFzcyBHbG93VG91clRyaWdnZXIgZXh0ZW5kcyBHbG93VG91clJlYWN0aXZlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcmlhTGFiZWxWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZWRWYWx1ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbFRleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFyaWFMYWJlbFZhbHVlKCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uc3VtZXJEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGlzYWJsZWRWYWx1ZSgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFDb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NvcGUuYmluZGluZygpPy5pZHMucG9wb3Zlcik7XG5cbiAgcHJvdGVjdGVkIHNldEFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5hcmlhTGFiZWxWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZFZhbHVlLnNldCh2YWx1ZSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdsb3ctdG91ci1iYWNrLXRyaWdnZXJcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKCFzdGVwKCk/LnBvcG92ZXI/LmhpZGVQcmV2aW91c0J1dHRvbikge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBkYXRhLWdsb3ctdG91ci1wcmV2aW91cy10cmlnZ2VyXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFRleHQoKSA/PyBsYWJlbCgpXCJcbiAgICAgICAgW2F0dHIuZGF0YS1nbG93LXRvdXItY29uc3VtZXItZGlzYWJsZWRdPVwiY29uc3VtZXJEaXNhYmxlZCgpID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID48bmctY29udGVudD57eyBsYWJlbCgpIH19PC9uZy1jb250ZW50PjwvYnV0dG9uPlxuICAgIH1cbiAgYCxcbn0pXG4vKiogQnV0dG9uIGNvbXBvbmVudCBmb3IgbmF2aWdhdGluZyB0byB0aGUgcHJldmlvdXMgc3RlcCBpbiB0aGUgdG91ci4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91ckJhY2tUcmlnZ2VyIGV4dGVuZHMgR2xvd1RvdXJUcmlnZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrTGFiZWxWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIE9wdGlvbmFsIGFyaWEtbGFiZWwgZm9yIHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZXRBcmlhTGFiZWwodmFsdWUpO1xuICB9XG4gIC8qKiBPcHRpb25hbCBsYWJlbCB0ZXh0IGZvciB0aGUgYmFjayBidXR0b24uICovXG4gIEBJbnB1dCgpIHNldCBiYWNrTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYmFja0xhYmVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuICAvKiogV2hldGhlciB0aGUgYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXREaXNhYmxlZCh2YWx1ZSk7XG4gIH1cblxuICByZWFkb25seSBpc0Rpc2FibGVkID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuY29uc3VtZXJEaXNhYmxlZCgpIHx8XG4gICAgICAhdGhpcy5zbmFwc2hvdCgpPy5jYW5QcmV2aW91cyB8fFxuICAgICAgdGhpcy5zdGVwKCk/LnBvcG92ZXI/LmRpc2FibGVQcmV2aW91c0J1dHRvbiA9PT0gdHJ1ZSxcbiAgKTtcbiAgcmVhZG9ubHkgbGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJhY2tMYWJlbFZhbHVlKCkgPz8gXCJCYWNrIHN0ZXBcIik7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItYWR2YW5jZS10cmlnZ2VyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmICghc3RlcCgpPy5wb3BvdmVyPy5oaWRlQWR2YW5jZUJ1dHRvbikge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBkYXRhLWdsb3ctdG91ci1hZHZhbmNlLXRyaWdnZXJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsVGV4dCgpID8/IGxhYmVsKClcIlxuICAgICAgICBbYXR0ci5kYXRhLWdsb3ctdG91ci1jb25zdW1lci1kaXNhYmxlZF09XCJjb25zdW1lckRpc2FibGVkKCkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPjxuZy1jb250ZW50Pnt7IGxhYmVsKCkgfX08L25nLWNvbnRlbnQ+PC9idXR0b24+XG4gICAgfVxuICBgLFxufSlcbi8qKiBCdXR0b24gY29tcG9uZW50IGZvciBhZHZhbmNpbmcgdG8gdGhlIG5leHQgc3RlcCBvciBmaW5pc2hpbmcgdGhlIHRvdXIuICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJBZHZhbmNlVHJpZ2dlciBleHRlbmRzIEdsb3dUb3VyVHJpZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmluaXNoTGFiZWxWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWR2YW5jZUxhYmVsVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qKiBPcHRpb25hbCBhcmlhLWxhYmVsIGZvciB0aGUgYWR2YW5jZSBidXR0b24uICovXG4gIEBJbnB1dCgpIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2V0QXJpYUxhYmVsKHZhbHVlKTtcbiAgfVxuICAvKiogV2hldGhlciB0aGUgYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXREaXNhYmxlZCh2YWx1ZSk7XG4gIH1cbiAgLyoqIE9wdGlvbmFsIGxhYmVsIHRleHQgZm9yIHRoZSBmaW5pc2ggc3RlcC4gKi9cbiAgQElucHV0KCkgc2V0IGZpbmlzaExhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmZpbmlzaExhYmVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuICAvKiogT3B0aW9uYWwgbGFiZWwgdGV4dCBmb3IgYWR2YW5jaW5nIHRvIHRoZSBuZXh0IHN0ZXAuICovXG4gIEBJbnB1dCgpIHNldCBhZHZhbmNlTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYWR2YW5jZUxhYmVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5jb25zdW1lckRpc2FibGVkKCkgfHxcbiAgICAgICF0aGlzLnNuYXBzaG90KCk/LmNhbkFkdmFuY2UgfHxcbiAgICAgIHRoaXMuc3RlcCgpPy5wb3BvdmVyPy5kaXNhYmxlQWR2YW5jZUJ1dHRvbiA9PT0gdHJ1ZSxcbiAgKTtcbiAgcmVhZG9ubHkgbGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc25hcHNob3QoKT8uaXNMYXN0U3RlcFxuICAgICAgPyAodGhpcy5maW5pc2hMYWJlbFZhbHVlKCkgPz8gXCJGaW5pc2ggdG91clwiKVxuICAgICAgOiAodGhpcy5hZHZhbmNlTGFiZWxWYWx1ZSgpID8/IFwiQWR2YW5jZSBzdGVwXCIpO1xuICB9KTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdsb3ctdG91ci1jYW5jZWwtdHJpZ2dlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoc25hcHNob3QoKT8uY2FuQ2FuY2VsKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGRhdGEtZ2xvdy10b3VyLWNhbmNlbC10cmlnZ2VyXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFRleHQoKSA/PyBsYWJlbCgpXCJcbiAgICAgICAgW2F0dHIuZGF0YS1nbG93LXRvdXItY29uc3VtZXItZGlzYWJsZWRdPVwiY29uc3VtZXJEaXNhYmxlZCgpID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID48bmctY29udGVudD57eyBsYWJlbCgpIH19PC9uZy1jb250ZW50PjwvYnV0dG9uPlxuICAgIH1cbiAgYCxcbn0pXG4vKiogQnV0dG9uIGNvbXBvbmVudCBmb3IgY2FuY2VsaW5nL3NraXBwaW5nIHRoZSB0b3VyLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyQ2FuY2VsVHJpZ2dlciBleHRlbmRzIEdsb3dUb3VyVHJpZ2dlciB7XG4gIC8qKiBPcHRpb25hbCBhcmlhLWxhYmVsIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZXRBcmlhTGFiZWwodmFsdWUpO1xuICB9XG4gIC8qKiBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldERpc2FibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnN1bWVyRGlzYWJsZWQoKSB8fCAhdGhpcy5zbmFwc2hvdCgpPy5jYW5DYW5jZWwpO1xuICByZWFkb25seSBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IFwiU2tpcFwiKTtcbn1cbiJdfQ==
|
|
627
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RvdXItY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBS04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsb0JBQW9CLEdBQ3JCLE1BQU0sNEJBQTRCLENBQUM7O0FBR3BDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6RSxNQUFNLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBZXpFLE1BQU0saUNBQWlDLEdBQXNDO0lBQzNFLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVUsQ0FBQztBQVN2RSxNQUNNLGFBQWE7SUFDUixPQUFPLEdBQUcsTUFB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USxFQUFFOzs7Ozs7Ozs7Ozs7R0FZVDtpQkFDRjs4QkFJYyxTQUFTO3NCQUFyQixLQUFLO2dCQUlzQyxRQUFRO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZWZmZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25DaGFuZ2VzLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgdHlwZSBPbkluaXQsXG4gIHR5cGUgU2lnbmFsLFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEdsb3dUb3VyIGFzIENvcmVHbG93VG91ciwgVG91clN0YXRlIH0gZnJvbSBcIkBnbG93aG9wL2NvcmUtdG91clwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBZGFwdGVyUm9vdEJpbmRpbmcsXG4gIGNvbm5lY3RHbG93VG91clJvb3QsXG4gIE9WRVJMQVlfSURMRV9BVFRSSUJVVEVTLFxuICBPVkVSTEFZX0lETEVfU1RZTEUsXG4gIE9WRVJMQVlfUEFUSF9JRExFX0FUVFJJQlVURVMsXG4gIFBPSU5URVJfSURMRV9BVFRSSUJVVEVTLFxuICBQT0lOVEVSX0lETEVfU1RZTEUsXG4gIFBPUE9WRVJfSURMRV9BVFRSSUJVVEVTLFxuICBQT1BPVkVSX0lETEVfU1RZTEUsXG4gIHN0eWxlUmVjb3JkVG9Dc3NUZXh0LFxufSBmcm9tIFwiQGdsb3dob3AvY29yZS10b3VyL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ndWxhclRvdXJDb250ZW50IH0gZnJvbSBcIi4uL2dsb3ctdG91clwiO1xuXG5jb25zdCBPVkVSTEFZX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KE9WRVJMQVlfSURMRV9TVFlMRSk7XG5jb25zdCBQT0lOVEVSX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KFBPSU5URVJfSURMRV9TVFlMRSk7XG5jb25zdCBQT1BPVkVSX0lETEVfU1RZTEVfVEVYVCA9IHN0eWxlUmVjb3JkVG9Dc3NUZXh0KFBPUE9WRVJfSURMRV9TVFlMRSk7XG5cbnR5cGUgVG91ciA9IENvcmVHbG93VG91cjxBbmd1bGFyVG91ckNvbnRlbnQ+O1xuXG4vKiogUG9pbnRlciBkaXJlY3Rpb24gY29udGVudCB2YWx1ZSB0eXBlOiBzdHJpbmcgb3IgVGVtcGxhdGVSZWYuICovXG5leHBvcnQgdHlwZSBQb2ludGVyRGlyZWN0aW9uVmFsdWUgPSBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuLyoqIFBvaW50ZXIgZGlyZWN0aW9uIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBvaW50ZXIgY29udGVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRlckRpcmVjdGlvbkNvbnRlbnQge1xuICByZWFkb25seSB0b3A/OiBQb2ludGVyRGlyZWN0aW9uVmFsdWU7XG4gIHJlYWRvbmx5IGJvdHRvbT86IFBvaW50ZXJEaXJlY3Rpb25WYWx1ZTtcbiAgcmVhZG9ubHkgbGVmdD86IFBvaW50ZXJEaXJlY3Rpb25WYWx1ZTtcbiAgcmVhZG9ubHkgcmlnaHQ/OiBQb2ludGVyRGlyZWN0aW9uVmFsdWU7XG59XG5cbmNvbnN0IERFRkFVTFRfUE9JTlRFUl9ESVJFQ1RJT05fQ09OVEVOVDogUmVxdWlyZWQ8UG9pbnRlckRpcmVjdGlvbkNvbnRlbnQ+ID0ge1xuICBib3R0b206IFwi8J+Rh1wiLFxuICBsZWZ0OiBcIvCfkYhcIixcbiAgcmlnaHQ6IFwi8J+RiVwiLFxuICB0b3A6IFwi8J+RhlwiLFxufTtcblxuY29uc3QgUE9JTlRFUl9ESVJFQ1RJT05TID0gW1widG9wXCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLCBcInJpZ2h0XCJdIGFzIGNvbnN0O1xuXG5pbnRlcmZhY2UgQWN0aXZlUm9vdEJpbmRpbmcge1xuICByZWFkb25seSBiaW5kaW5nOiBBZGFwdGVyUm9vdEJpbmRpbmc7XG4gIHJlYWRvbmx5IGlkUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHJvb3Q6IEhUTUxFbGVtZW50O1xuICByZWFkb25seSB0b3VyOiBUb3VyO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBHbG93VG91clNjb3BlIHtcbiAgcmVhZG9ubHkgYmluZGluZyA9IHNpZ25hbDxBZGFwdGVyUm9vdEJpbmRpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdG91ciA9IHNpZ25hbDxUb3VyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc25hcHNob3QgPSBzaWduYWw8VG91clN0YXRlPEFuZ3VsYXJUb3VyQ29udGVudD4gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSB0aGlzLnNuYXBzaG90LmFzUmVhZG9ubHkoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAob25DbGVhbnVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdXIgPSB0aGlzLnRvdXIoKTtcbiAgICAgICAgaWYgKCF0b3VyKSB7XG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5zZXQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc25hcHNob3Quc2V0KHRvdXIuc3RhdGUuZ2V0KCkpO1xuICAgICAgICBvbkNsZWFudXAodG91ci5zdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB0aGlzLnNuYXBzaG90LnNldChzdGF0ZSkpKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBHTE9XX1RPVVJfU0NPUEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2xvd1RvdXJTY29wZT4oXCJHbG93VG91clNjb3BlXCIpO1xuXG5mdW5jdGlvbiB1c2VUb3VyU2NvcGUoKSB7XG4gIGNvbnN0IHNjb3BlID0gaW5qZWN0KEdMT1dfVE9VUl9TQ09QRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgaWYgKCFzY29wZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2xvd1RvdXIgY29tcG9uZW50cyBtdXN0IGJlIHJlbmRlcmVkIGluc2lkZSA8Z2xvdy10b3VyLXJvb3QgW3RvdXJdPVwiLi4uXCI+LicpO1xuICB9XG4gIHJldHVybiBzY29wZTtcbn1cblxuLyoqXG4gKiBJbmplY3RzIHRoZSB0b3VyIHN0YXRlIHNpZ25hbCBpbnRvIGEgY29tcG9uZW50LlxuICogTXVzdCBiZSBjYWxsZWQgd2l0aGluIGEgR2xvd1RvdXJSb290IGNvbXBvbmVudCBjb250ZXh0LlxuICogQHJldHVybnMgQSBzaWduYWwgY29udGFpbmluZyB0aGUgY3VycmVudCB0b3VyIHN0YXRlIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RHbG93VG91cigpOiBTaWduYWw8VG91clN0YXRlPEFuZ3VsYXJUb3VyQ29udGVudD4gfCBudWxsPiB7XG4gIHJldHVybiB1c2VUb3VyU2NvcGUoKS5zdGF0ZTtcbn1cblxuQERpcmVjdGl2ZSgpXG5hYnN0cmFjdCBjbGFzcyBHbG93VG91clJlYWN0aXZlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjb3BlID0gdXNlVG91clNjb3BlKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzbmFwc2hvdCA9IHRoaXMuc2NvcGUuc3RhdGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGVwID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zbmFwc2hvdCgpPy5jdXJyZW50U3RlcD8uY3VycmVudFByb3BzID8/IG51bGwpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLXJvb3RcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDogeyBcImRhdGEtZ2xvdy10b3VyLXJvb3RcIjogXCJcIiB9LFxuICBwcm92aWRlcnM6IFtHbG93VG91clNjb3BlLCB7IHByb3ZpZGU6IEdMT1dfVE9VUl9TQ09QRSwgdXNlRXhpc3Rpbmc6IEdsb3dUb3VyU2NvcGUgfV0sXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50IC8+XCIsXG59KVxuLyoqIFJvb3QgY29udGFpbmVyIGNvbXBvbmVudCBmb3IgR2xvd1RvdXIuanMuIFByb3ZpZGVzIHRvdXIgY29udGV4dCBhbmQgbWFuYWdlcyB0aGUgcm9vdCBiaW5kaW5nLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyUm9vdCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICAvKiogVGhlIHRvdXIgY29udHJvbGxlciBpbnN0YW5jZSB0byBkaXNwbGF5LiAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0b3VyITogVG91cjtcbiAgLyoqIE9wdGlvbmFsIHByZWZpeCBmb3IgZ2VuZXJhdGVkIEhUTUwgSURzLiAqL1xuICBASW5wdXQoKSBpZFByZWZpeD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlID0gaW5qZWN0KEdsb3dUb3VyU2NvcGUpO1xuICBwcml2YXRlIGFjdGl2ZTogQWN0aXZlUm9vdEJpbmRpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB0aGlzLnJlY29uY2lsZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdsb3dUb3VyUm9vdCByZXF1aXJlcyBhIHRvdXIgaW5wdXQuXCIpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMucmVjb25jaWxlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbGVhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25jaWxlKCkge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB0b3VyID0gdGhpcy50b3VyO1xuICAgIGNvbnN0IGlkUHJlZml4ID0gdGhpcy5pZFByZWZpeDtcbiAgICB0aGlzLnNjb3BlLnRvdXIuc2V0KHRvdXIpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmFjdGl2ZTtcbiAgICBpZiAoXG4gICAgICBjdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBjdXJyZW50LnJvb3QgPT09IHJvb3QgJiZcbiAgICAgIGN1cnJlbnQudG91ciA9PT0gdG91ciAmJlxuICAgICAgY3VycmVudC5pZFByZWZpeCA9PT0gaWRQcmVmaXhcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgY29uc3QgYmluZGluZyA9IGNvbm5lY3RHbG93VG91clJvb3QodG91ciwge1xuICAgICAgaWRQcmVmaXgsXG4gICAgICByb290LFxuICAgIH0pO1xuICAgIGNvbnN0IGFjdGl2ZSA9IHsgYmluZGluZywgaWRQcmVmaXgsIHJvb3QsIHRvdXIgfTtcbiAgICB0aGlzLmFjdGl2ZSA9IGFjdGl2ZTtcbiAgICB0aGlzLnNjb3BlLmJpbmRpbmcuc2V0KGJpbmRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxlYXNlKCkge1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICAgIGlmICghYWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmUgPSBudWxsO1xuICAgIGFjdGl2ZS5iaW5kaW5nLnJlbGVhc2UoKTtcbiAgICBpZiAodGhpcy5zY29wZS5iaW5kaW5nKCkgPT09IGFjdGl2ZS5iaW5kaW5nKSB0aGlzLnNjb3BlLmJpbmRpbmcuc2V0KG51bGwpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItaGVhZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aGVhZGVyIGRhdGEtZ2xvdy10b3VyLWhlYWRlciBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LnRpdGxlXCI+XG4gICAgICBAaWYgKHRpdGxlVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlVGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgdGl0bGVUZXh0KCkgfX1cbiAgICAgIH1cbiAgICA8L2hlYWRlcj5cbiAgYCxcbn0pXG4vKiogSGVhZGVyIGNvbXBvbmVudCBkaXNwbGF5aW5nIHRoZSBjdXJyZW50IHN0ZXAncyB0aXRsZS4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91ckhlYWRlciBleHRlbmRzIEdsb3dUb3VyUmVhY3RpdmVDb21wb25lbnQge1xuICByZWFkb25seSB0aXRsZVRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5zdGVwKCk/LnRpdGxlO1xuICAgIHJldHVybiB0aXRsZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdGl0bGUgOiBudWxsO1xuICB9KTtcbiAgcmVhZG9ubHkgdGl0bGVUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5zdGVwKCk/LnRpdGxlO1xuICAgIHJldHVybiB0eXBlb2YgdGl0bGUgPT09IFwic3RyaW5nXCIgPyB0aXRsZSA6IFwiXCI7XG4gIH0pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLWNvbnRlbnRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgYXJpYS1saXZlPVwicG9saXRlXCIgZGF0YS1nbG93LXRvdXItY29udGVudCBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LmRlc2NyaXB0aW9uXCI+XG4gICAgICBAaWYgKGNvbnRlbnRUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRlbXBsYXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IGNvbnRlbnRUZXh0KCkgfX1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG4vKiogQ29udGVudCBjb21wb25lbnQgZGlzcGxheWluZyB0aGUgY3VycmVudCBzdGVwJ3MgY29udGVudCB3aXRoIGxpdmUgcmVnaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyQ29udGVudCBleHRlbmRzIEdsb3dUb3VyUmVhY3RpdmVDb21wb25lbnQge1xuICByZWFkb25seSBjb250ZW50VGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc3RlcCgpPy5jb250ZW50O1xuICAgIHJldHVybiBjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyBjb250ZW50IDogbnVsbDtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbnRlbnRUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnN0ZXAoKT8uY29udGVudDtcbiAgICByZXR1cm4gdHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIgPyBjb250ZW50IDogXCJcIjtcbiAgfSk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItZm9vdGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgQGlmICghc3RlcCgpPy5wb3BvdmVyPy5oaWRlRm9vdGVyKSB7IDxmb290ZXIgZGF0YS1nbG93LXRvdXItZm9vdGVyPjxuZy1jb250ZW50IC8+PC9mb290ZXI+IH1gLFxufSlcbi8qKiBGb290ZXIgY29tcG9uZW50IGNvbnRhaW5pbmcgYWN0aW9uIGJ1dHRvbnMuIENvbmRpdGlvbmFsbHkgcmVuZGVyZWQgYmFzZWQgb24gdG91ciBzdGVwIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJGb290ZXIgZXh0ZW5kcyBHbG93VG91clJlYWN0aXZlQ29tcG9uZW50IHt9XG5cbkBEaXJlY3RpdmUoKVxuYWJzdHJhY3QgY2xhc3MgR2xvd1RvdXJCb3VuZEVsZW1lbnQ8VCBleHRlbmRzIEVsZW1lbnQ+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjb3BlID0gdXNlVG91clNjb3BlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJvdGVjdGVkIGJpbmQoZWxlbWVudDogVCwgYmluZEVsZW1lbnQ6IChiaW5kaW5nOiBBZGFwdGVyUm9vdEJpbmRpbmcsIGVsZW1lbnQ6IFQpID0+ICgpID0+IHZvaWQpIHtcbiAgICBjb25zdCBjbGVhbnVwID0gZWZmZWN0KFxuICAgICAgKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBiaW5kaW5nID0gdGhpcy5zY29wZS5iaW5kaW5nKCk7XG4gICAgICAgIGlmIChiaW5kaW5nKSBvbkNsZWFudXAoYmluZEVsZW1lbnQoYmluZGluZywgZWxlbWVudCkpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcbiAgICApO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gY2xlYW51cC5kZXN0cm95KCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItcG9wb3ZlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyBUaGUgaWRsZSBhdHRyaWJ1dGVzL3N0eWxlIGNvbWUgZnJvbSBpbXBvcnRlZCBgQGdsb3dob3AvY29yZS10b3VyL2FkYXB0ZXJgXG4gIC8vIGNvbnN0YW50cywgc28gbmdjJ3MgQU9UIHRlbXBsYXRlIGFuYWx5emVyIChORzEwMTApIGNhbm5vdCBpbmxpbmUgdGhlbSBhc1xuICAvLyBzdHJpbmctaW50ZXJwb2xhdGVkIGxpdGVyYWxzIGluIHRoZSB0ZW1wbGF0ZS4gQm91bmQgdmlhIGNvbXBvbmVudCBmaWVsZHNcbiAgLy8gaW5zdGVhZDsgdGhlIHZhbHVlcyBhcmUgc3RpbGwgc3RhdGljLCBzbyBzZXJ2ZXIgYW5kIGNsaWVudCByZW5kZXJcbiAgLy8gYnl0ZS1pZGVudGljYWwgb3V0cHV0LlxuICB0ZW1wbGF0ZTogYFxuICAgIDxzZWN0aW9uICN0b3VyRWxlbWVudFxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaWRsZUFyaWFIaWRkZW5cIlxuICAgICAgZGF0YS1nbG93LXRvdXItcG9wb3ZlclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzY29wZS5iaW5kaW5nKCk/Lmlkcz8uZGVzY3JpcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNjb3BlLmJpbmRpbmcoKT8uaWRzPy50aXRsZVwiXG4gICAgICBbaWRdPVwic2NvcGUuYmluZGluZygpPy5pZHM/LnBvcG92ZXJcIlxuICAgICAgW2F0dHIuaW5lcnRdPVwiaWRsZUluZXJ0XCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgW3N0eWxlXT1cImlkbGVTdHlsZVwiXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICA+PG5nLWNvbnRlbnQgLz48L3NlY3Rpb24+XG4gIGAsXG59KVxuLyoqIFBvcG92ZXIgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIHRvdXIgY29udGVudCB3aXRoIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91clBvcG92ZXIgZXh0ZW5kcyBHbG93VG91ckJvdW5kRWxlbWVudDxIVE1MRWxlbWVudD4gaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKFwidG91ckVsZW1lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlQXJpYUhpZGRlbiA9IFBPUE9WRVJfSURMRV9BVFRSSUJVVEVTW1wiYXJpYS1oaWRkZW5cIl07XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlSW5lcnQgPSBQT1BPVkVSX0lETEVfQVRUUklCVVRFUy5pbmVydDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVTdHlsZSA9IFBPUE9WRVJfSURMRV9TVFlMRV9URVhUO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgKGJpbmRpbmcsIGVsZW1lbnQpID0+IGJpbmRpbmcuYmluZFBvcG92ZXIoZWxlbWVudCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJnbG93LXRvdXItcG9pbnRlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjdG91ckVsZW1lbnQgZGF0YS1nbG93LXRvdXItcG9pbnRlciBbYXR0ci5hcmlhLWhpZGRlbl09XCJpZGxlQXJpYUhpZGRlblwiIFtzdHlsZV09XCJpZGxlU3R5bGVcIj5cbiAgICAgIEBmb3IgKGRpcmVjdGlvbiBvZiBkaXJlY3Rpb25zOyB0cmFjayBkaXJlY3Rpb24pIHtcbiAgICAgICAgPGRpdiBbYXR0ci5kYXRhLWdsb3ctdG91ci1wb2ludGVyLWRpcmVjdGlvbl09XCJkaXJlY3Rpb25cIj5cbiAgICAgICAgICBAaWYgKGFzVGVtcGxhdGUoY29udGVudCgpW2RpcmVjdGlvbl0pOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyBjb250ZW50KClbZGlyZWN0aW9uXSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuLyoqIFBvaW50ZXIgY29tcG9uZW50IGRpc3BsYXlpbmcgZGlyZWN0aW9uYWwgaW5kaWNhdG9ycyBwb2ludGluZyB0byB0aGUgdGFyZ2V0IGVsZW1lbnQuICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJQb2ludGVyIGV4dGVuZHMgR2xvd1RvdXJCb3VuZEVsZW1lbnQ8SFRNTEVsZW1lbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChcInRvdXJFbGVtZW50XCIsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGlvbkNvbnRlbnRWYWx1ZSA9IHNpZ25hbDxQb2ludGVyRGlyZWN0aW9uQ29udGVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVBcmlhSGlkZGVuID0gUE9JTlRFUl9JRExFX0FUVFJJQlVURVNbXCJhcmlhLWhpZGRlblwiXTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVTdHlsZSA9IFBPSU5URVJfSURMRV9TVFlMRV9URVhUO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rpb25zID0gUE9JTlRFUl9ESVJFQ1RJT05TO1xuICByZWFkb25seSBjb250ZW50ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi5ERUZBVUxUX1BPSU5URVJfRElSRUNUSU9OX0NPTlRFTlQsXG4gICAgLi4udGhpcy5kaXJlY3Rpb25Db250ZW50VmFsdWUoKSxcbiAgfSkpO1xuXG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY29udGVudCBmb3IgZWFjaCBwb2ludGVyIGRpcmVjdGlvbi4gKi9cbiAgQElucHV0KCkgc2V0IGRpcmVjdGlvbkNvbnRlbnQodmFsdWU6IFBvaW50ZXJEaXJlY3Rpb25Db250ZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kaXJlY3Rpb25Db250ZW50VmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc1RlbXBsYXRlKHZhbHVlOiBQb2ludGVyRGlyZWN0aW9uVmFsdWUpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmID8gdmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iaW5kKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAoYmluZGluZywgZWxlbWVudCkgPT4gYmluZGluZy5iaW5kUG9pbnRlcihlbGVtZW50KSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdsb3ctdG91ci1vdmVybGF5XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHN2ZyAjdG91ckVsZW1lbnRcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImlkbGVBcmlhSGlkZGVuXCJcbiAgICAgIFthdHRyLmRhdGEtZ2xvdy10b3VyLWFsbG93LWludGVyYWN0aW9uXT1cImlkbGVBbGxvd0ludGVyYWN0aW9uXCJcbiAgICAgIGRhdGEtZ2xvdy10b3VyLW92ZXJsYXlcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIFthdHRyLmluZXJ0XT1cImlkbGVJbmVydFwiXG4gICAgICBbYXR0ci5wcmVzZXJ2ZUFzcGVjdFJhdGlvXT1cImlkbGVQcmVzZXJ2ZUFzcGVjdFJhdGlvXCJcbiAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgW3N0eWxlXT1cImlkbGVTdHlsZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDAgMFwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgW2F0dHIuY3Vyc29yXT1cImlkbGVQYXRoQ3Vyc29yXCJcbiAgICAgICAgZGF0YS1nbG93LXRvdXItb3ZlcmxheS1wYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBbYXR0ci5vcGFjaXR5XT1cImlkbGVQYXRoT3BhY2l0eVwiXG4gICAgICAgIFthdHRyLnBvaW50ZXItZXZlbnRzXT1cImlkbGVQYXRoUG9pbnRlckV2ZW50c1wiXG4gICAgICAvPjxuZy1jb250ZW50IC8+XG4gICAgPC9zdmc+XG4gIGAsXG59KVxuLyoqIE92ZXJsYXkgY29tcG9uZW50IHJlbmRlcmluZyBhIGNsaXBwZWQgU1ZHIG1hc2sgaGlnaGxpZ2h0aW5nIHRoZSB0YXJnZXQgZWxlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91ck92ZXJsYXkgZXh0ZW5kcyBHbG93VG91ckJvdW5kRWxlbWVudDxTVkdTVkdFbGVtZW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoXCJ0b3VyRWxlbWVudFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQhOiBFbGVtZW50UmVmPFNWR1NWR0VsZW1lbnQ+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWRsZUFyaWFIaWRkZW4gPSBPVkVSTEFZX0lETEVfQVRUUklCVVRFU1tcImFyaWEtaGlkZGVuXCJdO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWRsZUFsbG93SW50ZXJhY3Rpb24gPVxuICAgIE9WRVJMQVlfSURMRV9BVFRSSUJVVEVTW1wiZGF0YS1nbG93LXRvdXItYWxsb3ctaW50ZXJhY3Rpb25cIl07XG4gIHByb3RlY3RlZCByZWFkb25seSBpZGxlSW5lcnQgPSBPVkVSTEFZX0lETEVfQVRUUklCVVRFUy5pbmVydDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gT1ZFUkxBWV9JRExFX0FUVFJJQlVURVMucHJlc2VydmVBc3BlY3RSYXRpbztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVTdHlsZSA9IE9WRVJMQVlfSURMRV9TVFlMRV9URVhUO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWRsZVBhdGhDdXJzb3IgPSBPVkVSTEFZX1BBVEhfSURMRV9BVFRSSUJVVEVTLmN1cnNvcjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVQYXRoT3BhY2l0eSA9IE9WRVJMQVlfUEFUSF9JRExFX0FUVFJJQlVURVMub3BhY2l0eTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkbGVQYXRoUG9pbnRlckV2ZW50cyA9IE9WRVJMQVlfUEFUSF9JRExFX0FUVFJJQlVURVNbXCJwb2ludGVyLWV2ZW50c1wiXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJpbmQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIChiaW5kaW5nLCBlbGVtZW50KSA9PiBiaW5kaW5nLmJpbmRPdmVybGF5KGVsZW1lbnQpKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmFic3RyYWN0IGNsYXNzIEdsb3dUb3VyVHJpZ2dlciBleHRlbmRzIEdsb3dUb3VyUmVhY3RpdmVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFyaWFMYWJlbFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlZFZhbHVlID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXJpYUxhYmVsVGV4dCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXJpYUxhYmVsVmFsdWUoKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb25zdW1lckRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kaXNhYmxlZFZhbHVlKCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXJpYUNvbnRyb2xzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zY29wZS5iaW5kaW5nKCk/Lmlkcy5wb3BvdmVyKTtcblxuICBwcm90ZWN0ZWQgc2V0QXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmFyaWFMYWJlbFZhbHVlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkVmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLWJhY2stdHJpZ2dlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoIXN0ZXAoKT8ucG9wb3Zlcj8uaGlkZVByZXZpb3VzQnV0dG9uKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGRhdGEtZ2xvdy10b3VyLXByZXZpb3VzLXRyaWdnZXJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsVGV4dCgpID8/IGxhYmVsKClcIlxuICAgICAgICBbYXR0ci5kYXRhLWdsb3ctdG91ci1jb25zdW1lci1kaXNhYmxlZF09XCJjb25zdW1lckRpc2FibGVkKCkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPjxuZy1jb250ZW50Pnt7IGxhYmVsKCkgfX08L25nLWNvbnRlbnQ+PC9idXR0b24+XG4gICAgfVxuICBgLFxufSlcbi8qKiBCdXR0b24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW5nIHRvIHRoZSBwcmV2aW91cyBzdGVwIGluIHRoZSB0b3VyLiAqL1xuZXhwb3J0IGNsYXNzIEdsb3dUb3VyQmFja1RyaWdnZXIgZXh0ZW5kcyBHbG93VG91clRyaWdnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tMYWJlbFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiogT3B0aW9uYWwgYXJpYS1sYWJlbCBmb3IgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNldEFyaWFMYWJlbCh2YWx1ZSk7XG4gIH1cbiAgLyoqIE9wdGlvbmFsIGxhYmVsIHRleHQgZm9yIHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgc2V0IGJhY2tMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5iYWNrTGFiZWxWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG4gIC8qKiBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldERpc2FibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5jb25zdW1lckRpc2FibGVkKCkgfHxcbiAgICAgICF0aGlzLnNuYXBzaG90KCk/LmNhblByZXZpb3VzIHx8XG4gICAgICB0aGlzLnN0ZXAoKT8ucG9wb3Zlcj8uZGlzYWJsZVByZXZpb3VzQnV0dG9uID09PSB0cnVlLFxuICApO1xuICByZWFkb25seSBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmFja0xhYmVsVmFsdWUoKSA/PyBcIkJhY2sgc3RlcFwiKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdsb3ctdG91ci1hZHZhbmNlLXRyaWdnZXJcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKCFzdGVwKCk/LnBvcG92ZXI/LmhpZGVBZHZhbmNlQnV0dG9uKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGRhdGEtZ2xvdy10b3VyLWFkdmFuY2UtdHJpZ2dlclxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scygpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKCkgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxUZXh0KCkgPz8gbGFiZWwoKVwiXG4gICAgICAgIFthdHRyLmRhdGEtZ2xvdy10b3VyLWNvbnN1bWVyLWRpc2FibGVkXT1cImNvbnN1bWVyRGlzYWJsZWQoKSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+PG5nLWNvbnRlbnQ+e3sgbGFiZWwoKSB9fTwvbmctY29udGVudD48L2J1dHRvbj5cbiAgICB9XG4gIGAsXG59KVxuLyoqIEJ1dHRvbiBjb21wb25lbnQgZm9yIGFkdmFuY2luZyB0byB0aGUgbmV4dCBzdGVwIG9yIGZpbmlzaGluZyB0aGUgdG91ci4gKi9cbmV4cG9ydCBjbGFzcyBHbG93VG91ckFkdmFuY2VUcmlnZ2VyIGV4dGVuZHMgR2xvd1RvdXJUcmlnZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaW5pc2hMYWJlbFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhZHZhbmNlTGFiZWxWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIE9wdGlvbmFsIGFyaWEtbGFiZWwgZm9yIHRoZSBhZHZhbmNlIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZXRBcmlhTGFiZWwodmFsdWUpO1xuICB9XG4gIC8qKiBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldERpc2FibGVkKHZhbHVlKTtcbiAgfVxuICAvKiogT3B0aW9uYWwgbGFiZWwgdGV4dCBmb3IgdGhlIGZpbmlzaCBzdGVwLiAqL1xuICBASW5wdXQoKSBzZXQgZmluaXNoTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZmluaXNoTGFiZWxWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG4gIC8qKiBPcHRpb25hbCBsYWJlbCB0ZXh0IGZvciBhZHZhbmNpbmcgdG8gdGhlIG5leHQgc3RlcC4gKi9cbiAgQElucHV0KCkgc2V0IGFkdmFuY2VMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5hZHZhbmNlTGFiZWxWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICB0aGlzLmNvbnN1bWVyRGlzYWJsZWQoKSB8fFxuICAgICAgIXRoaXMuc25hcHNob3QoKT8uY2FuQWR2YW5jZSB8fFxuICAgICAgdGhpcy5zdGVwKCk/LnBvcG92ZXI/LmRpc2FibGVBZHZhbmNlQnV0dG9uID09PSB0cnVlLFxuICApO1xuICByZWFkb25seSBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zbmFwc2hvdCgpPy5pc0xhc3RTdGVwXG4gICAgICA/ICh0aGlzLmZpbmlzaExhYmVsVmFsdWUoKSA/PyBcIkZpbmlzaCB0b3VyXCIpXG4gICAgICA6ICh0aGlzLmFkdmFuY2VMYWJlbFZhbHVlKCkgPz8gXCJBZHZhbmNlIHN0ZXBcIik7XG4gIH0pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZ2xvdy10b3VyLWNhbmNlbC10cmlnZ2VyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChzbmFwc2hvdCgpPy5jYW5DYW5jZWwpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgZGF0YS1nbG93LXRvdXItY2FuY2VsLXRyaWdnZXJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsVGV4dCgpID8/IGxhYmVsKClcIlxuICAgICAgICBbYXR0ci5kYXRhLWdsb3ctdG91ci1jb25zdW1lci1kaXNhYmxlZF09XCJjb25zdW1lckRpc2FibGVkKCkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPjxuZy1jb250ZW50Pnt7IGxhYmVsKCkgfX08L25nLWNvbnRlbnQ+PC9idXR0b24+XG4gICAgfVxuICBgLFxufSlcbi8qKiBCdXR0b24gY29tcG9uZW50IGZvciBjYW5jZWxpbmcvc2tpcHBpbmcgdGhlIHRvdXIuICovXG5leHBvcnQgY2xhc3MgR2xvd1RvdXJDYW5jZWxUcmlnZ2VyIGV4dGVuZHMgR2xvd1RvdXJUcmlnZ2VyIHtcbiAgLyoqIE9wdGlvbmFsIGFyaWEtbGFiZWwgZm9yIHRoZSBjYW5jZWwgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNldEFyaWFMYWJlbCh2YWx1ZSk7XG4gIH1cbiAgLyoqIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0RGlzYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uc3VtZXJEaXNhYmxlZCgpIHx8ICF0aGlzLnNuYXBzaG90KCk/LmNhbkNhbmNlbCk7XG4gIHJlYWRvbmx5IGxhYmVsID0gY29tcHV0ZWQoKCkgPT4gXCJTa2lwXCIpO1xufVxuIl19
|
|
@@ -361,6 +361,7 @@ class GlowTourOverlay extends GlowTourBoundElement {
|
|
|
361
361
|
idleAriaHidden = OVERLAY_IDLE_ATTRIBUTES["aria-hidden"];
|
|
362
362
|
idleAllowInteraction = OVERLAY_IDLE_ATTRIBUTES["data-glow-tour-allow-interaction"];
|
|
363
363
|
idleInert = OVERLAY_IDLE_ATTRIBUTES.inert;
|
|
364
|
+
idlePreserveAspectRatio = OVERLAY_IDLE_ATTRIBUTES.preserveAspectRatio;
|
|
364
365
|
idleStyle = OVERLAY_IDLE_STYLE_TEXT;
|
|
365
366
|
idlePathCursor = OVERLAY_PATH_IDLE_ATTRIBUTES.cursor;
|
|
366
367
|
idlePathOpacity = OVERLAY_PATH_IDLE_ATTRIBUTES.opacity;
|
|
@@ -376,6 +377,7 @@ class GlowTourOverlay extends GlowTourBoundElement {
|
|
|
376
377
|
data-glow-tour-overlay
|
|
377
378
|
focusable="false"
|
|
378
379
|
[attr.inert]="idleInert"
|
|
380
|
+
[attr.preserveAspectRatio]="idlePreserveAspectRatio"
|
|
379
381
|
role="presentation"
|
|
380
382
|
[style]="idleStyle"
|
|
381
383
|
viewBox="0 0 0 0"
|
|
@@ -402,6 +404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
402
404
|
data-glow-tour-overlay
|
|
403
405
|
focusable="false"
|
|
404
406
|
[attr.inert]="idleInert"
|
|
407
|
+
[attr.preserveAspectRatio]="idlePreserveAspectRatio"
|
|
405
408
|
role="presentation"
|
|
406
409
|
[style]="idleStyle"
|
|
407
410
|
viewBox="0 0 0 0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glowhop-angular-tour.mjs","sources":["../../src/lib/components/tour-components.ts","../../src/lib/components/default-tour.ts","../../src/lib/glow-tour.ts","../../src/glowhop-angular-tour.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n effect,\n Injectable,\n InjectionToken,\n Injector,\n Input,\n inject,\n type OnChanges,\n type OnDestroy,\n type OnInit,\n type Signal,\n signal,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport type { GlowTour as CoreGlowTour, TourState } from \"@glowhop/core-tour\";\nimport {\n type AdapterRootBinding,\n connectGlowTourRoot,\n OVERLAY_IDLE_ATTRIBUTES,\n OVERLAY_IDLE_STYLE,\n OVERLAY_PATH_IDLE_ATTRIBUTES,\n POINTER_IDLE_ATTRIBUTES,\n POINTER_IDLE_STYLE,\n POPOVER_IDLE_ATTRIBUTES,\n POPOVER_IDLE_STYLE,\n styleRecordToCssText,\n} from \"@glowhop/core-tour/adapter\";\nimport type { AngularTourContent } from \"../glow-tour\";\n\nconst OVERLAY_IDLE_STYLE_TEXT = styleRecordToCssText(OVERLAY_IDLE_STYLE);\nconst POINTER_IDLE_STYLE_TEXT = styleRecordToCssText(POINTER_IDLE_STYLE);\nconst POPOVER_IDLE_STYLE_TEXT = styleRecordToCssText(POPOVER_IDLE_STYLE);\n\ntype Tour = CoreGlowTour<AngularTourContent>;\n\n/** Pointer direction content value type: string or TemplateRef. */\nexport type PointerDirectionValue = string | TemplateRef<unknown>;\n\n/** Pointer direction content configuration for custom pointer content. */\nexport interface PointerDirectionContent {\n readonly top?: PointerDirectionValue;\n readonly bottom?: PointerDirectionValue;\n readonly left?: PointerDirectionValue;\n readonly right?: PointerDirectionValue;\n}\n\nconst DEFAULT_POINTER_DIRECTION_CONTENT: Required<PointerDirectionContent> = {\n bottom: \"👇\",\n left: \"👈\",\n right: \"👉\",\n top: \"👆\",\n};\n\nconst POINTER_DIRECTIONS = [\"top\", \"bottom\", \"left\", \"right\"] as const;\n\ninterface ActiveRootBinding {\n readonly binding: AdapterRootBinding;\n readonly idPrefix: string | undefined;\n readonly root: HTMLElement;\n readonly tour: Tour;\n}\n\n@Injectable()\nclass GlowTourScope {\n readonly binding = signal<AdapterRootBinding | null>(null);\n readonly tour = signal<Tour | null>(null);\n private readonly snapshot = signal<TourState<AngularTourContent> | null>(null);\n readonly state = this.snapshot.asReadonly();\n\n constructor() {\n effect(\n (onCleanup) => {\n const tour = this.tour();\n if (!tour) {\n this.snapshot.set(null);\n return;\n }\n this.snapshot.set(tour.state.get());\n onCleanup(tour.state.subscribe((state) => this.snapshot.set(state)));\n },\n { allowSignalWrites: true },\n );\n }\n}\n\nconst GLOW_TOUR_SCOPE = new InjectionToken<GlowTourScope>(\"GlowTourScope\");\n\nfunction useTourScope() {\n const scope = inject(GLOW_TOUR_SCOPE, { optional: true });\n if (!scope) {\n throw new Error('GlowTour components must be rendered inside <glow-tour-root [tour]=\"...\">.');\n }\n return scope;\n}\n\n/**\n * Injects the tour state signal into a component.\n * Must be called within a GlowTourRoot component context.\n * @returns A signal containing the current tour state or null.\n */\nexport function injectGlowTour(): Signal<TourState<AngularTourContent> | null> {\n return useTourScope().state;\n}\n\n@Directive()\nabstract class GlowTourReactiveComponent {\n protected readonly scope = useTourScope();\n protected readonly snapshot = this.scope.state;\n protected readonly step = computed(() => this.snapshot()?.currentStep?.currentProps ?? null);\n}\n\n@Component({\n selector: \"glow-tour-root\",\n standalone: true,\n host: { \"data-glow-tour-root\": \"\" },\n providers: [GlowTourScope, { provide: GLOW_TOUR_SCOPE, useExisting: GlowTourScope }],\n template: \"<ng-content />\",\n})\n/** Root container component for GlowTour.js. Provides tour context and manages the root binding. */\nexport class GlowTourRoot implements OnChanges, OnDestroy, OnInit {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: Tour;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly scope = inject(GlowTourScope);\n private active: ActiveRootBinding | null = null;\n private initialized = false;\n\n ngOnChanges() {\n if (this.initialized) this.reconcile();\n }\n\n ngOnInit() {\n if (!this.tour) {\n throw new Error(\"GlowTourRoot requires a tour input.\");\n }\n\n this.initialized = true;\n this.reconcile();\n }\n\n ngOnDestroy() {\n this.release();\n }\n\n private reconcile() {\n const root = this.element.nativeElement;\n const tour = this.tour;\n const idPrefix = this.idPrefix;\n this.scope.tour.set(tour);\n const current = this.active;\n if (\n current !== null &&\n current.root === root &&\n current.tour === tour &&\n current.idPrefix === idPrefix\n ) {\n return;\n }\n this.release();\n const binding = connectGlowTourRoot(tour, {\n idPrefix,\n root,\n });\n const active = { binding, idPrefix, root, tour };\n this.active = active;\n this.scope.binding.set(binding);\n }\n\n private release() {\n const active = this.active;\n if (!active) return;\n this.active = null;\n active.binding.release();\n if (this.scope.binding() === active.binding) this.scope.binding.set(null);\n }\n}\n\n@Component({\n selector: \"glow-tour-header\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <header data-glow-tour-header [id]=\"scope.binding()?.ids?.title\">\n @if (titleTemplate()) {\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\" />\n } @else {\n {{ titleText() }}\n }\n </header>\n `,\n})\n/** Header component displaying the current step's title. */\nexport class GlowTourHeader extends GlowTourReactiveComponent {\n readonly titleTemplate = computed(() => {\n const title = this.step()?.title;\n return title instanceof TemplateRef ? title : null;\n });\n readonly titleText = computed(() => {\n const title = this.step()?.title;\n return typeof title === \"string\" ? title : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-content\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div aria-live=\"polite\" data-glow-tour-content [id]=\"scope.binding()?.ids?.description\">\n @if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n } @else {\n {{ contentText() }}\n }\n </div>\n `,\n})\n/** Content component displaying the current step's content with live region. */\nexport class GlowTourContent extends GlowTourReactiveComponent {\n readonly contentTemplate = computed(() => {\n const content = this.step()?.content;\n return content instanceof TemplateRef ? content : null;\n });\n readonly contentText = computed(() => {\n const content = this.step()?.content;\n return typeof content === \"string\" ? content : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-footer\",\n standalone: true,\n template: `@if (!step()?.popover?.hideFooter) { <footer data-glow-tour-footer><ng-content /></footer> }`,\n})\n/** Footer component containing action buttons. Conditionally rendered based on tour step configuration. */\nexport class GlowTourFooter extends GlowTourReactiveComponent {}\n\n@Directive()\nabstract class GlowTourBoundElement<T extends Element> {\n protected readonly scope = useTourScope();\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n protected bind(element: T, bindElement: (binding: AdapterRootBinding, element: T) => () => void) {\n const cleanup = effect(\n (onCleanup) => {\n const binding = this.scope.binding();\n if (binding) onCleanup(bindElement(binding, element));\n },\n { injector: this.injector },\n );\n this.destroyRef.onDestroy(() => cleanup.destroy());\n }\n}\n\n@Component({\n selector: \"glow-tour-popover\",\n standalone: true,\n // The idle attributes/style come from imported `@glowhop/core-tour/adapter`\n // constants, so ngc's AOT template analyzer (NG1010) cannot inline them as\n // string-interpolated literals in the template. Bound via component fields\n // instead; the values are still static, so server and client render\n // byte-identical output.\n template: `\n <section #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n data-glow-tour-popover\n [attr.aria-describedby]=\"scope.binding()?.ids?.description\"\n [attr.aria-labelledby]=\"scope.binding()?.ids?.title\"\n [id]=\"scope.binding()?.ids?.popover\"\n [attr.inert]=\"idleInert\"\n role=\"dialog\"\n [style]=\"idleStyle\"\n tabindex=\"-1\"\n ><ng-content /></section>\n `,\n})\n/** Popover component containing the tour content with accessibility attributes. */\nexport class GlowTourPopover extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n protected readonly idleAriaHidden = POPOVER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleInert = POPOVER_IDLE_ATTRIBUTES.inert;\n protected readonly idleStyle = POPOVER_IDLE_STYLE_TEXT;\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPopover(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-pointer\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div #tourElement data-glow-tour-pointer [attr.aria-hidden]=\"idleAriaHidden\" [style]=\"idleStyle\">\n @for (direction of directions; track direction) {\n <div [attr.data-glow-tour-pointer-direction]=\"direction\">\n @if (asTemplate(content()[direction]); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" />\n } @else {\n {{ content()[direction] }}\n }\n </div>\n }\n </div>\n `,\n})\n/** Pointer component displaying directional indicators pointing to the target element. */\nexport class GlowTourPointer extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n private readonly directionContentValue = signal<PointerDirectionContent | undefined>(undefined);\n protected readonly idleAriaHidden = POINTER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleStyle = POINTER_IDLE_STYLE_TEXT;\n\n protected readonly directions = POINTER_DIRECTIONS;\n readonly content = computed(() => ({\n ...DEFAULT_POINTER_DIRECTION_CONTENT,\n ...this.directionContentValue(),\n }));\n\n /** Optional custom content for each pointer direction. */\n @Input() set directionContent(value: PointerDirectionContent | undefined) {\n this.directionContentValue.set(value);\n }\n\n protected asTemplate(value: PointerDirectionValue): TemplateRef<unknown> | null {\n return value instanceof TemplateRef ? value : null;\n }\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPointer(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-overlay\",\n standalone: true,\n template: `\n <svg #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n [attr.data-glow-tour-allow-interaction]=\"idleAllowInteraction\"\n data-glow-tour-overlay\n focusable=\"false\"\n [attr.inert]=\"idleInert\"\n role=\"presentation\"\n [style]=\"idleStyle\"\n viewBox=\"0 0 0 0\"\n >\n <path\n [attr.cursor]=\"idlePathCursor\"\n data-glow-tour-overlay-path\n fill-rule=\"evenodd\"\n [attr.opacity]=\"idlePathOpacity\"\n [attr.pointer-events]=\"idlePathPointerEvents\"\n /><ng-content />\n </svg>\n `,\n})\n/** Overlay component rendering a clipped SVG mask highlighting the target element. */\nexport class GlowTourOverlay extends GlowTourBoundElement<SVGSVGElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<SVGSVGElement>;\n protected readonly idleAriaHidden = OVERLAY_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleAllowInteraction =\n OVERLAY_IDLE_ATTRIBUTES[\"data-glow-tour-allow-interaction\"];\n protected readonly idleInert = OVERLAY_IDLE_ATTRIBUTES.inert;\n protected readonly idleStyle = OVERLAY_IDLE_STYLE_TEXT;\n protected readonly idlePathCursor = OVERLAY_PATH_IDLE_ATTRIBUTES.cursor;\n protected readonly idlePathOpacity = OVERLAY_PATH_IDLE_ATTRIBUTES.opacity;\n protected readonly idlePathPointerEvents = OVERLAY_PATH_IDLE_ATTRIBUTES[\"pointer-events\"];\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindOverlay(element));\n }\n}\n\n@Directive()\nabstract class GlowTourTrigger extends GlowTourReactiveComponent {\n private readonly ariaLabelValue = signal<string | undefined>(undefined);\n private readonly disabledValue = signal(false);\n\n protected readonly ariaLabelText = computed(() => this.ariaLabelValue());\n protected readonly consumerDisabled = computed(() => this.disabledValue());\n protected readonly ariaControls = computed(() => this.scope.binding()?.ids.popover);\n\n protected setAriaLabel(value: string | undefined) {\n this.ariaLabelValue.set(value);\n }\n\n protected setDisabled(value: boolean) {\n this.disabledValue.set(value);\n }\n}\n\n@Component({\n selector: \"glow-tour-back-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hidePreviousButton) {\n <button\n data-glow-tour-previous-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for navigating to the previous step in the tour. */\nexport class GlowTourBackTrigger extends GlowTourTrigger {\n private readonly backLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the back button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Optional label text for the back button. */\n @Input() set backLabel(value: string | undefined) {\n this.backLabelValue.set(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canPrevious ||\n this.step()?.popover?.disablePreviousButton === true,\n );\n readonly label = computed(() => this.backLabelValue() ?? \"Back step\");\n}\n\n@Component({\n selector: \"glow-tour-advance-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hideAdvanceButton) {\n <button\n data-glow-tour-advance-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for advancing to the next step or finishing the tour. */\nexport class GlowTourAdvanceTrigger extends GlowTourTrigger {\n private readonly finishLabelValue = signal<string | undefined>(undefined);\n private readonly advanceLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the advance button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n /** Optional label text for the finish step. */\n @Input() set finishLabel(value: string | undefined) {\n this.finishLabelValue.set(value);\n }\n /** Optional label text for advancing to the next step. */\n @Input() set advanceLabel(value: string | undefined) {\n this.advanceLabelValue.set(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canAdvance ||\n this.step()?.popover?.disableAdvanceButton === true,\n );\n readonly label = computed(() => {\n return this.snapshot()?.isLastStep\n ? (this.finishLabelValue() ?? \"Finish tour\")\n : (this.advanceLabelValue() ?? \"Advance step\");\n });\n}\n\n@Component({\n selector: \"glow-tour-cancel-trigger\",\n standalone: true,\n template: `\n @if (snapshot()?.canCancel) {\n <button\n data-glow-tour-cancel-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for canceling/skipping the tour. */\nexport class GlowTourCancelTrigger extends GlowTourTrigger {\n /** Optional aria-label for the cancel button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(() => this.consumerDisabled() || !this.snapshot()?.canCancel);\n readonly label = computed(() => \"Skip\");\n}\n","import { Component, Input } from \"@angular/core\";\nimport type { GlowTour } from \"@glowhop/core-tour\";\nimport type { AngularTourContent } from \"../glow-tour\";\nimport {\n GlowTourAdvanceTrigger,\n GlowTourBackTrigger,\n GlowTourCancelTrigger,\n GlowTourContent,\n GlowTourFooter,\n GlowTourHeader,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourRoot,\n} from \"./tour-components\";\n\n@Component({\n selector: \"glow-tour-default\",\n standalone: true,\n imports: [\n GlowTourRoot,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourHeader,\n GlowTourContent,\n GlowTourFooter,\n GlowTourCancelTrigger,\n GlowTourBackTrigger,\n GlowTourAdvanceTrigger,\n ],\n template: `\n <glow-tour-root [tour]=\"tour\" [idPrefix]=\"idPrefix\">\n <glow-tour-overlay />\n <glow-tour-pointer />\n <glow-tour-popover>\n <glow-tour-header />\n <glow-tour-content />\n <glow-tour-footer>\n <glow-tour-cancel-trigger />\n <glow-tour-back-trigger />\n <glow-tour-advance-trigger />\n </glow-tour-footer>\n </glow-tour-popover>\n </glow-tour-root>\n `,\n})\n/** Default GlowTour.js component that renders all tour UI elements in a standard layout. */\nexport class GlowTourDefault {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: GlowTour<AngularTourContent>;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n}\n","import type { TemplateRef } from \"@angular/core\";\nimport type {\n GlowTour as CoreGlowTour,\n StartOptions as CoreStartOptions,\n StepPropsStore as CoreStepPropsStore,\n TourState as CoreTourState,\n WorkflowDefinition as CoreWorkflowDefinition,\n GlowTourOptions,\n} from \"@glowhop/core-tour\";\nimport { createGlowTour as createCoreGlowTour } from \"@glowhop/core-tour\";\n\n/** Angular content type: string or TemplateRef. */\nexport type AngularTourContent = string | TemplateRef<unknown>;\n/** Angular tour controller instance. */\nexport type Tour = CoreGlowTour<AngularTourContent>;\n/** Angular tour state snapshot. */\nexport type TourState = CoreTourState<AngularTourContent>;\n/** Angular step properties store. */\nexport type StepPropsStore = CoreStepPropsStore<AngularTourContent>;\n/** Angular workflow definition. */\nexport type WorkflowDefinition = CoreWorkflowDefinition<AngularTourContent>;\n/** Angular tour start options. */\nexport type StartOptions = CoreStartOptions<AngularTourContent>;\n\n/**\n * Creates a new GlowTour.js instance for Angular.\n * @param options Tour options for error handling.\n * @returns A tour controller ready to run Angular workflows.\n */\nexport function createGlowTour(options: GlowTourOptions = {}): Tour {\n return createCoreGlowTour<AngularTourContent>(options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createCoreGlowTour"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"glowhop-angular-tour.mjs","sources":["../../src/lib/components/tour-components.ts","../../src/lib/components/default-tour.ts","../../src/lib/glow-tour.ts","../../src/glowhop-angular-tour.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n effect,\n Injectable,\n InjectionToken,\n Injector,\n Input,\n inject,\n type OnChanges,\n type OnDestroy,\n type OnInit,\n type Signal,\n signal,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport type { GlowTour as CoreGlowTour, TourState } from \"@glowhop/core-tour\";\nimport {\n type AdapterRootBinding,\n connectGlowTourRoot,\n OVERLAY_IDLE_ATTRIBUTES,\n OVERLAY_IDLE_STYLE,\n OVERLAY_PATH_IDLE_ATTRIBUTES,\n POINTER_IDLE_ATTRIBUTES,\n POINTER_IDLE_STYLE,\n POPOVER_IDLE_ATTRIBUTES,\n POPOVER_IDLE_STYLE,\n styleRecordToCssText,\n} from \"@glowhop/core-tour/adapter\";\nimport type { AngularTourContent } from \"../glow-tour\";\n\nconst OVERLAY_IDLE_STYLE_TEXT = styleRecordToCssText(OVERLAY_IDLE_STYLE);\nconst POINTER_IDLE_STYLE_TEXT = styleRecordToCssText(POINTER_IDLE_STYLE);\nconst POPOVER_IDLE_STYLE_TEXT = styleRecordToCssText(POPOVER_IDLE_STYLE);\n\ntype Tour = CoreGlowTour<AngularTourContent>;\n\n/** Pointer direction content value type: string or TemplateRef. */\nexport type PointerDirectionValue = string | TemplateRef<unknown>;\n\n/** Pointer direction content configuration for custom pointer content. */\nexport interface PointerDirectionContent {\n readonly top?: PointerDirectionValue;\n readonly bottom?: PointerDirectionValue;\n readonly left?: PointerDirectionValue;\n readonly right?: PointerDirectionValue;\n}\n\nconst DEFAULT_POINTER_DIRECTION_CONTENT: Required<PointerDirectionContent> = {\n bottom: \"👇\",\n left: \"👈\",\n right: \"👉\",\n top: \"👆\",\n};\n\nconst POINTER_DIRECTIONS = [\"top\", \"bottom\", \"left\", \"right\"] as const;\n\ninterface ActiveRootBinding {\n readonly binding: AdapterRootBinding;\n readonly idPrefix: string | undefined;\n readonly root: HTMLElement;\n readonly tour: Tour;\n}\n\n@Injectable()\nclass GlowTourScope {\n readonly binding = signal<AdapterRootBinding | null>(null);\n readonly tour = signal<Tour | null>(null);\n private readonly snapshot = signal<TourState<AngularTourContent> | null>(null);\n readonly state = this.snapshot.asReadonly();\n\n constructor() {\n effect(\n (onCleanup) => {\n const tour = this.tour();\n if (!tour) {\n this.snapshot.set(null);\n return;\n }\n this.snapshot.set(tour.state.get());\n onCleanup(tour.state.subscribe((state) => this.snapshot.set(state)));\n },\n { allowSignalWrites: true },\n );\n }\n}\n\nconst GLOW_TOUR_SCOPE = new InjectionToken<GlowTourScope>(\"GlowTourScope\");\n\nfunction useTourScope() {\n const scope = inject(GLOW_TOUR_SCOPE, { optional: true });\n if (!scope) {\n throw new Error('GlowTour components must be rendered inside <glow-tour-root [tour]=\"...\">.');\n }\n return scope;\n}\n\n/**\n * Injects the tour state signal into a component.\n * Must be called within a GlowTourRoot component context.\n * @returns A signal containing the current tour state or null.\n */\nexport function injectGlowTour(): Signal<TourState<AngularTourContent> | null> {\n return useTourScope().state;\n}\n\n@Directive()\nabstract class GlowTourReactiveComponent {\n protected readonly scope = useTourScope();\n protected readonly snapshot = this.scope.state;\n protected readonly step = computed(() => this.snapshot()?.currentStep?.currentProps ?? null);\n}\n\n@Component({\n selector: \"glow-tour-root\",\n standalone: true,\n host: { \"data-glow-tour-root\": \"\" },\n providers: [GlowTourScope, { provide: GLOW_TOUR_SCOPE, useExisting: GlowTourScope }],\n template: \"<ng-content />\",\n})\n/** Root container component for GlowTour.js. Provides tour context and manages the root binding. */\nexport class GlowTourRoot implements OnChanges, OnDestroy, OnInit {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: Tour;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly scope = inject(GlowTourScope);\n private active: ActiveRootBinding | null = null;\n private initialized = false;\n\n ngOnChanges() {\n if (this.initialized) this.reconcile();\n }\n\n ngOnInit() {\n if (!this.tour) {\n throw new Error(\"GlowTourRoot requires a tour input.\");\n }\n\n this.initialized = true;\n this.reconcile();\n }\n\n ngOnDestroy() {\n this.release();\n }\n\n private reconcile() {\n const root = this.element.nativeElement;\n const tour = this.tour;\n const idPrefix = this.idPrefix;\n this.scope.tour.set(tour);\n const current = this.active;\n if (\n current !== null &&\n current.root === root &&\n current.tour === tour &&\n current.idPrefix === idPrefix\n ) {\n return;\n }\n this.release();\n const binding = connectGlowTourRoot(tour, {\n idPrefix,\n root,\n });\n const active = { binding, idPrefix, root, tour };\n this.active = active;\n this.scope.binding.set(binding);\n }\n\n private release() {\n const active = this.active;\n if (!active) return;\n this.active = null;\n active.binding.release();\n if (this.scope.binding() === active.binding) this.scope.binding.set(null);\n }\n}\n\n@Component({\n selector: \"glow-tour-header\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <header data-glow-tour-header [id]=\"scope.binding()?.ids?.title\">\n @if (titleTemplate()) {\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\" />\n } @else {\n {{ titleText() }}\n }\n </header>\n `,\n})\n/** Header component displaying the current step's title. */\nexport class GlowTourHeader extends GlowTourReactiveComponent {\n readonly titleTemplate = computed(() => {\n const title = this.step()?.title;\n return title instanceof TemplateRef ? title : null;\n });\n readonly titleText = computed(() => {\n const title = this.step()?.title;\n return typeof title === \"string\" ? title : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-content\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div aria-live=\"polite\" data-glow-tour-content [id]=\"scope.binding()?.ids?.description\">\n @if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n } @else {\n {{ contentText() }}\n }\n </div>\n `,\n})\n/** Content component displaying the current step's content with live region. */\nexport class GlowTourContent extends GlowTourReactiveComponent {\n readonly contentTemplate = computed(() => {\n const content = this.step()?.content;\n return content instanceof TemplateRef ? content : null;\n });\n readonly contentText = computed(() => {\n const content = this.step()?.content;\n return typeof content === \"string\" ? content : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-footer\",\n standalone: true,\n template: `@if (!step()?.popover?.hideFooter) { <footer data-glow-tour-footer><ng-content /></footer> }`,\n})\n/** Footer component containing action buttons. Conditionally rendered based on tour step configuration. */\nexport class GlowTourFooter extends GlowTourReactiveComponent {}\n\n@Directive()\nabstract class GlowTourBoundElement<T extends Element> {\n protected readonly scope = useTourScope();\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n protected bind(element: T, bindElement: (binding: AdapterRootBinding, element: T) => () => void) {\n const cleanup = effect(\n (onCleanup) => {\n const binding = this.scope.binding();\n if (binding) onCleanup(bindElement(binding, element));\n },\n { injector: this.injector },\n );\n this.destroyRef.onDestroy(() => cleanup.destroy());\n }\n}\n\n@Component({\n selector: \"glow-tour-popover\",\n standalone: true,\n // The idle attributes/style come from imported `@glowhop/core-tour/adapter`\n // constants, so ngc's AOT template analyzer (NG1010) cannot inline them as\n // string-interpolated literals in the template. Bound via component fields\n // instead; the values are still static, so server and client render\n // byte-identical output.\n template: `\n <section #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n data-glow-tour-popover\n [attr.aria-describedby]=\"scope.binding()?.ids?.description\"\n [attr.aria-labelledby]=\"scope.binding()?.ids?.title\"\n [id]=\"scope.binding()?.ids?.popover\"\n [attr.inert]=\"idleInert\"\n role=\"dialog\"\n [style]=\"idleStyle\"\n tabindex=\"-1\"\n ><ng-content /></section>\n `,\n})\n/** Popover component containing the tour content with accessibility attributes. */\nexport class GlowTourPopover extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n protected readonly idleAriaHidden = POPOVER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleInert = POPOVER_IDLE_ATTRIBUTES.inert;\n protected readonly idleStyle = POPOVER_IDLE_STYLE_TEXT;\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPopover(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-pointer\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div #tourElement data-glow-tour-pointer [attr.aria-hidden]=\"idleAriaHidden\" [style]=\"idleStyle\">\n @for (direction of directions; track direction) {\n <div [attr.data-glow-tour-pointer-direction]=\"direction\">\n @if (asTemplate(content()[direction]); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" />\n } @else {\n {{ content()[direction] }}\n }\n </div>\n }\n </div>\n `,\n})\n/** Pointer component displaying directional indicators pointing to the target element. */\nexport class GlowTourPointer extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n private readonly directionContentValue = signal<PointerDirectionContent | undefined>(undefined);\n protected readonly idleAriaHidden = POINTER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleStyle = POINTER_IDLE_STYLE_TEXT;\n\n protected readonly directions = POINTER_DIRECTIONS;\n readonly content = computed(() => ({\n ...DEFAULT_POINTER_DIRECTION_CONTENT,\n ...this.directionContentValue(),\n }));\n\n /** Optional custom content for each pointer direction. */\n @Input() set directionContent(value: PointerDirectionContent | undefined) {\n this.directionContentValue.set(value);\n }\n\n protected asTemplate(value: PointerDirectionValue): TemplateRef<unknown> | null {\n return value instanceof TemplateRef ? value : null;\n }\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPointer(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-overlay\",\n standalone: true,\n template: `\n <svg #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n [attr.data-glow-tour-allow-interaction]=\"idleAllowInteraction\"\n data-glow-tour-overlay\n focusable=\"false\"\n [attr.inert]=\"idleInert\"\n [attr.preserveAspectRatio]=\"idlePreserveAspectRatio\"\n role=\"presentation\"\n [style]=\"idleStyle\"\n viewBox=\"0 0 0 0\"\n >\n <path\n [attr.cursor]=\"idlePathCursor\"\n data-glow-tour-overlay-path\n fill-rule=\"evenodd\"\n [attr.opacity]=\"idlePathOpacity\"\n [attr.pointer-events]=\"idlePathPointerEvents\"\n /><ng-content />\n </svg>\n `,\n})\n/** Overlay component rendering a clipped SVG mask highlighting the target element. */\nexport class GlowTourOverlay extends GlowTourBoundElement<SVGSVGElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<SVGSVGElement>;\n protected readonly idleAriaHidden = OVERLAY_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleAllowInteraction =\n OVERLAY_IDLE_ATTRIBUTES[\"data-glow-tour-allow-interaction\"];\n protected readonly idleInert = OVERLAY_IDLE_ATTRIBUTES.inert;\n protected readonly idlePreserveAspectRatio = OVERLAY_IDLE_ATTRIBUTES.preserveAspectRatio;\n protected readonly idleStyle = OVERLAY_IDLE_STYLE_TEXT;\n protected readonly idlePathCursor = OVERLAY_PATH_IDLE_ATTRIBUTES.cursor;\n protected readonly idlePathOpacity = OVERLAY_PATH_IDLE_ATTRIBUTES.opacity;\n protected readonly idlePathPointerEvents = OVERLAY_PATH_IDLE_ATTRIBUTES[\"pointer-events\"];\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindOverlay(element));\n }\n}\n\n@Directive()\nabstract class GlowTourTrigger extends GlowTourReactiveComponent {\n private readonly ariaLabelValue = signal<string | undefined>(undefined);\n private readonly disabledValue = signal(false);\n\n protected readonly ariaLabelText = computed(() => this.ariaLabelValue());\n protected readonly consumerDisabled = computed(() => this.disabledValue());\n protected readonly ariaControls = computed(() => this.scope.binding()?.ids.popover);\n\n protected setAriaLabel(value: string | undefined) {\n this.ariaLabelValue.set(value);\n }\n\n protected setDisabled(value: boolean) {\n this.disabledValue.set(value);\n }\n}\n\n@Component({\n selector: \"glow-tour-back-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hidePreviousButton) {\n <button\n data-glow-tour-previous-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for navigating to the previous step in the tour. */\nexport class GlowTourBackTrigger extends GlowTourTrigger {\n private readonly backLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the back button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Optional label text for the back button. */\n @Input() set backLabel(value: string | undefined) {\n this.backLabelValue.set(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canPrevious ||\n this.step()?.popover?.disablePreviousButton === true,\n );\n readonly label = computed(() => this.backLabelValue() ?? \"Back step\");\n}\n\n@Component({\n selector: \"glow-tour-advance-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hideAdvanceButton) {\n <button\n data-glow-tour-advance-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for advancing to the next step or finishing the tour. */\nexport class GlowTourAdvanceTrigger extends GlowTourTrigger {\n private readonly finishLabelValue = signal<string | undefined>(undefined);\n private readonly advanceLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the advance button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n /** Optional label text for the finish step. */\n @Input() set finishLabel(value: string | undefined) {\n this.finishLabelValue.set(value);\n }\n /** Optional label text for advancing to the next step. */\n @Input() set advanceLabel(value: string | undefined) {\n this.advanceLabelValue.set(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canAdvance ||\n this.step()?.popover?.disableAdvanceButton === true,\n );\n readonly label = computed(() => {\n return this.snapshot()?.isLastStep\n ? (this.finishLabelValue() ?? \"Finish tour\")\n : (this.advanceLabelValue() ?? \"Advance step\");\n });\n}\n\n@Component({\n selector: \"glow-tour-cancel-trigger\",\n standalone: true,\n template: `\n @if (snapshot()?.canCancel) {\n <button\n data-glow-tour-cancel-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for canceling/skipping the tour. */\nexport class GlowTourCancelTrigger extends GlowTourTrigger {\n /** Optional aria-label for the cancel button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(() => this.consumerDisabled() || !this.snapshot()?.canCancel);\n readonly label = computed(() => \"Skip\");\n}\n","import { Component, Input } from \"@angular/core\";\nimport type { GlowTour } from \"@glowhop/core-tour\";\nimport type { AngularTourContent } from \"../glow-tour\";\nimport {\n GlowTourAdvanceTrigger,\n GlowTourBackTrigger,\n GlowTourCancelTrigger,\n GlowTourContent,\n GlowTourFooter,\n GlowTourHeader,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourRoot,\n} from \"./tour-components\";\n\n@Component({\n selector: \"glow-tour-default\",\n standalone: true,\n imports: [\n GlowTourRoot,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourHeader,\n GlowTourContent,\n GlowTourFooter,\n GlowTourCancelTrigger,\n GlowTourBackTrigger,\n GlowTourAdvanceTrigger,\n ],\n template: `\n <glow-tour-root [tour]=\"tour\" [idPrefix]=\"idPrefix\">\n <glow-tour-overlay />\n <glow-tour-pointer />\n <glow-tour-popover>\n <glow-tour-header />\n <glow-tour-content />\n <glow-tour-footer>\n <glow-tour-cancel-trigger />\n <glow-tour-back-trigger />\n <glow-tour-advance-trigger />\n </glow-tour-footer>\n </glow-tour-popover>\n </glow-tour-root>\n `,\n})\n/** Default GlowTour.js component that renders all tour UI elements in a standard layout. */\nexport class GlowTourDefault {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: GlowTour<AngularTourContent>;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n}\n","import type { TemplateRef } from \"@angular/core\";\nimport type {\n GlowTour as CoreGlowTour,\n StartOptions as CoreStartOptions,\n StepPropsStore as CoreStepPropsStore,\n TourState as CoreTourState,\n WorkflowDefinition as CoreWorkflowDefinition,\n GlowTourOptions,\n} from \"@glowhop/core-tour\";\nimport { createGlowTour as createCoreGlowTour } from \"@glowhop/core-tour\";\n\n/** Angular content type: string or TemplateRef. */\nexport type AngularTourContent = string | TemplateRef<unknown>;\n/** Angular tour controller instance. */\nexport type Tour = CoreGlowTour<AngularTourContent>;\n/** Angular tour state snapshot. */\nexport type TourState = CoreTourState<AngularTourContent>;\n/** Angular step properties store. */\nexport type StepPropsStore = CoreStepPropsStore<AngularTourContent>;\n/** Angular workflow definition. */\nexport type WorkflowDefinition = CoreWorkflowDefinition<AngularTourContent>;\n/** Angular tour start options. */\nexport type StartOptions = CoreStartOptions<AngularTourContent>;\n\n/**\n * Creates a new GlowTour.js instance for Angular.\n * @param options Tour options for error handling.\n * @returns A tour controller ready to run Angular workflows.\n */\nexport function createGlowTour(options: GlowTourOptions = {}): Tour {\n return createCoreGlowTour<AngularTourContent>(options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createCoreGlowTour"],"mappings":"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"}
|
|
@@ -109,6 +109,7 @@ export declare class GlowTourOverlay extends GlowTourBoundElement<SVGSVGElement>
|
|
|
109
109
|
protected readonly idleAriaHidden: "true";
|
|
110
110
|
protected readonly idleAllowInteraction: "false";
|
|
111
111
|
protected readonly idleInert: "true";
|
|
112
|
+
protected readonly idlePreserveAspectRatio: "xMinYMin slice";
|
|
112
113
|
protected readonly idleStyle: string;
|
|
113
114
|
protected readonly idlePathCursor: "auto";
|
|
114
115
|
protected readonly idlePathOpacity: "0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glowhop/angular-tour",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Angular 18 adapter for GlowTour.js.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/Glowhop/GlowTour.js#readme",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@glowhop/core-tour": "1.
|
|
43
|
+
"@glowhop/core-tour": "1.1.0",
|
|
44
44
|
"tslib": "^2.3.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|