@skyux/layout 7.0.0-beta.0 → 7.0.0-beta.2
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/documentation.json +1679 -990
- package/esm2020/index.mjs +1 -2
- package/esm2020/lib/modules/action-button/action-button-adapter-service.mjs +22 -18
- package/esm2020/lib/modules/action-button/action-button-container.component.mjs +62 -54
- package/esm2020/lib/modules/action-button/action-button-icon.component.mjs +9 -6
- package/esm2020/lib/modules/action-button/action-button.component.mjs +10 -6
- package/esm2020/lib/modules/back-to-top/back-to-top-adapter.service.mjs +19 -15
- package/esm2020/lib/modules/back-to-top/back-to-top.component.mjs +8 -5
- package/esm2020/lib/modules/back-to-top/back-to-top.directive.mjs +68 -63
- package/esm2020/lib/modules/box/box.component.mjs +1 -1
- package/esm2020/lib/modules/card/card.component.mjs +38 -11
- package/esm2020/lib/modules/definition-list/definition-list-label.component.mjs +1 -1
- package/esm2020/lib/modules/definition-list/definition-list-value.component.mjs +3 -3
- package/esm2020/lib/modules/definition-list/definition-list.component.mjs +1 -1
- package/esm2020/lib/modules/definition-list/definition-list.service.mjs +1 -1
- package/esm2020/lib/modules/description-list/description-list-adapter-service.mjs +26 -22
- package/esm2020/lib/modules/description-list/description-list-content.component.mjs +2 -2
- package/esm2020/lib/modules/description-list/description-list-description.component.mjs +16 -11
- package/esm2020/lib/modules/description-list/description-list-term.component.mjs +1 -1
- package/esm2020/lib/modules/description-list/description-list.component.mjs +25 -16
- package/esm2020/lib/modules/fluid-grid/column.component.mjs +19 -1
- package/esm2020/lib/modules/fluid-grid/fluid-grid.component.mjs +15 -35
- package/esm2020/lib/modules/fluid-grid/row.component.mjs +1 -1
- package/esm2020/lib/modules/fluid-grid/types/fluid-grid-gutter-size-type.mjs +1 -1
- package/esm2020/lib/modules/format/format.component.mjs +34 -26
- package/esm2020/lib/modules/inline-delete/inline-delete-adapter.service.mjs +91 -83
- package/esm2020/lib/modules/inline-delete/inline-delete.component.mjs +15 -9
- package/esm2020/lib/modules/page/page-theme-adapter.service.mjs +14 -8
- package/esm2020/lib/modules/page/page.component.mjs +8 -4
- package/esm2020/lib/modules/page-summary/page-summary-adapter.service.mjs +1 -1
- package/esm2020/lib/modules/page-summary/page-summary.component.mjs +40 -16
- package/esm2020/lib/modules/text-expand/text-expand-adapter.service.mjs +8 -10
- package/esm2020/lib/modules/text-expand/text-expand-modal-context-token.mjs +6 -0
- package/esm2020/lib/modules/text-expand/text-expand-modal-context.mjs +2 -6
- package/esm2020/lib/modules/text-expand/text-expand-modal.component.mjs +12 -10
- package/esm2020/lib/modules/text-expand/text-expand.component.mjs +188 -127
- package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.mjs +10 -12
- package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater.component.mjs +139 -95
- package/esm2020/lib/modules/toolbar/toolbar.component.mjs +4 -4
- package/esm2020/testing/action-button-fixture.mjs +12 -6
- package/esm2020/testing/card-fixture.mjs +19 -16
- package/esm2020/testing/page-summary-fixture.mjs +9 -5
- package/fesm2015/skyux-layout-testing.mjs +35 -24
- package/fesm2015/skyux-layout-testing.mjs.map +1 -1
- package/fesm2015/skyux-layout.mjs +866 -673
- package/fesm2015/skyux-layout.mjs.map +1 -1
- package/fesm2020/skyux-layout-testing.mjs +35 -24
- package/fesm2020/skyux-layout-testing.mjs.map +1 -1
- package/fesm2020/skyux-layout.mjs +861 -673
- package/fesm2020/skyux-layout.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/modules/action-button/action-button-adapter-service.d.ts +1 -2
- package/lib/modules/action-button/action-button-container.component.d.ts +6 -17
- package/lib/modules/action-button/action-button-icon.component.d.ts +2 -3
- package/lib/modules/action-button/action-button.component.d.ts +3 -3
- package/lib/modules/back-to-top/back-to-top-adapter.service.d.ts +1 -4
- package/lib/modules/back-to-top/back-to-top.component.d.ts +1 -1
- package/lib/modules/back-to-top/back-to-top.directive.d.ts +4 -16
- package/lib/modules/box/box.component.d.ts +3 -3
- package/lib/modules/card/card.component.d.ts +7 -6
- package/lib/modules/definition-list/definition-list-label.component.d.ts +1 -1
- package/lib/modules/definition-list/definition-list-value.component.d.ts +1 -1
- package/lib/modules/definition-list/definition-list.component.d.ts +2 -2
- package/lib/modules/definition-list/definition-list.service.d.ts +2 -2
- package/lib/modules/description-list/description-list-adapter-service.d.ts +1 -2
- package/lib/modules/description-list/description-list-content.component.d.ts +2 -2
- package/lib/modules/description-list/description-list-description.component.d.ts +5 -7
- package/lib/modules/description-list/description-list-term.component.d.ts +1 -1
- package/lib/modules/description-list/description-list.component.d.ts +6 -7
- package/lib/modules/fluid-grid/column.component.d.ts +7 -5
- package/lib/modules/fluid-grid/fluid-grid.component.d.ts +3 -9
- package/lib/modules/fluid-grid/row.component.d.ts +1 -1
- package/lib/modules/fluid-grid/types/fluid-grid-gutter-size-type.d.ts +1 -1
- package/lib/modules/format/format.component.d.ts +5 -7
- package/lib/modules/inline-delete/inline-delete-adapter.service.d.ts +1 -11
- package/lib/modules/inline-delete/inline-delete.component.d.ts +3 -5
- package/lib/modules/page/page-theme-adapter.service.d.ts +1 -1
- package/lib/modules/page/page.component.d.ts +1 -1
- package/lib/modules/page-summary/page-summary.component.d.ts +8 -9
- package/lib/modules/text-expand/text-expand-adapter.service.d.ts +3 -4
- package/lib/modules/text-expand/text-expand-modal-context-token.d.ts +6 -0
- package/lib/modules/text-expand/text-expand-modal-context.d.ts +1 -1
- package/lib/modules/text-expand/text-expand.component.d.ts +18 -25
- package/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.d.ts +4 -5
- package/lib/modules/text-expand-repeater/text-expand-repeater.component.d.ts +13 -21
- package/lib/modules/toolbar/toolbar.component.d.ts +4 -4
- package/package.json +9 -9
- package/testing/action-button-fixture.d.ts +4 -4
- package/testing/card-fixture.d.ts +3 -5
- package/testing/page-summary-fixture.d.ts +4 -4
- package/esm2020/lib/modules/fluid-grid/fluid-grid-gutter-size.mjs +0 -20
- package/lib/modules/fluid-grid/fluid-grid-gutter-size.d.ts +0 -18
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
var _SkyTextExpandComponent_instances, _SkyTextExpandComponent_collapsedText, _SkyTextExpandComponent_newlineCount, _SkyTextExpandComponent_seeMoreText, _SkyTextExpandComponent_seeLessText, _SkyTextExpandComponent_textToShow, _SkyTextExpandComponent__maxExpandedLength, _SkyTextExpandComponent__maxExpandedNewlines, _SkyTextExpandComponent__maxLength, _SkyTextExpandComponent__text, _SkyTextExpandComponent__textEl, _SkyTextExpandComponent_resources, _SkyTextExpandComponent_modalSvc, _SkyTextExpandComponent_textExpandAdapter, _SkyTextExpandComponent_setup, _SkyTextExpandComponent_getNewlineCount, _SkyTextExpandComponent_getTruncatedText, _SkyTextExpandComponent_animateText;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { animate, state, style, transition, trigger, } from '@angular/animations';
|
|
1
4
|
import { Component, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
2
5
|
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
3
6
|
import { SkyModalService } from '@skyux/modals';
|
|
4
7
|
import { forkJoin as observableForkJoin } from 'rxjs';
|
|
5
8
|
import { take } from 'rxjs/operators';
|
|
6
9
|
import { SkyTextExpandAdapterService } from './text-expand-adapter.service';
|
|
7
|
-
import {
|
|
10
|
+
import { SKY_TEXT_EXPAND_MODAL_CONTEXT } from './text-expand-modal-context-token';
|
|
8
11
|
import { SkyTextExpandModalComponent } from './text-expand-modal.component';
|
|
9
12
|
import * as i0 from "@angular/core";
|
|
10
13
|
import * as i1 from "@skyux/i18n";
|
|
@@ -16,29 +19,69 @@ import * as i4 from "@angular/common";
|
|
|
16
19
|
*/
|
|
17
20
|
let nextId = 0;
|
|
18
21
|
export class SkyTextExpandComponent {
|
|
19
|
-
constructor(resources,
|
|
20
|
-
this
|
|
21
|
-
this.modalService = modalService;
|
|
22
|
-
this.textExpandAdapter = textExpandAdapter;
|
|
23
|
-
/**
|
|
24
|
-
* Specifies the maximum number of text characters to display inline when users select the link
|
|
25
|
-
* to expand the full text. If the text exceeds this limit, then the component expands
|
|
26
|
-
* the full text in a modal instead.
|
|
27
|
-
*/
|
|
28
|
-
this.maxExpandedLength = 600;
|
|
29
|
-
/**
|
|
30
|
-
* Specifies the maximum number of newline characters to display inline when users select
|
|
31
|
-
* the link to expand the full text. If the text exceeds this limit, then
|
|
32
|
-
* the component expands the full text in a modal view instead.
|
|
33
|
-
*/
|
|
34
|
-
this.maxExpandedNewlines = 2;
|
|
22
|
+
constructor(resources, modalSvc, textExpandAdapter) {
|
|
23
|
+
_SkyTextExpandComponent_instances.add(this);
|
|
35
24
|
/**
|
|
36
25
|
* Indicates whether to replace newline characters in truncated text with spaces.
|
|
37
26
|
*/
|
|
38
27
|
this.truncateNewlines = true;
|
|
28
|
+
this.buttonText = '';
|
|
39
29
|
this.contentSectionId = `sky-text-expand-content-${++nextId}`;
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
30
|
+
this.expandable = false;
|
|
31
|
+
this.isModal = false;
|
|
32
|
+
this.transitionHeight = 1;
|
|
33
|
+
_SkyTextExpandComponent_collapsedText.set(this, '');
|
|
34
|
+
_SkyTextExpandComponent_newlineCount.set(this, 0);
|
|
35
|
+
_SkyTextExpandComponent_seeMoreText.set(this, '');
|
|
36
|
+
_SkyTextExpandComponent_seeLessText.set(this, '');
|
|
37
|
+
_SkyTextExpandComponent_textToShow.set(this, '');
|
|
38
|
+
_SkyTextExpandComponent__maxExpandedLength.set(this, 600);
|
|
39
|
+
_SkyTextExpandComponent__maxExpandedNewlines.set(this, 2);
|
|
40
|
+
_SkyTextExpandComponent__maxLength.set(this, 200);
|
|
41
|
+
_SkyTextExpandComponent__text.set(this, '');
|
|
42
|
+
_SkyTextExpandComponent__textEl.set(this, void 0);
|
|
43
|
+
_SkyTextExpandComponent_resources.set(this, void 0);
|
|
44
|
+
_SkyTextExpandComponent_modalSvc.set(this, void 0);
|
|
45
|
+
_SkyTextExpandComponent_textExpandAdapter.set(this, void 0);
|
|
46
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_resources, resources, "f");
|
|
47
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_modalSvc, modalSvc, "f");
|
|
48
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_textExpandAdapter, textExpandAdapter, "f");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Specifies the maximum number of text characters to display inline when users select the link
|
|
52
|
+
* to expand the full text. If the text exceeds this limit, then the component expands
|
|
53
|
+
* the full text in a modal instead.
|
|
54
|
+
* @default 600
|
|
55
|
+
*/
|
|
56
|
+
set maxExpandedLength(value) {
|
|
57
|
+
if (value) {
|
|
58
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, value, "f");
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, 600, "f");
|
|
62
|
+
}
|
|
63
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
|
|
64
|
+
}
|
|
65
|
+
get maxExpandedLength() {
|
|
66
|
+
return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedLength, "f");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Specifies the maximum number of newline characters to display inline when users select
|
|
70
|
+
* the link to expand the full text. If the text exceeds this limit, then
|
|
71
|
+
* the component expands the full text in a modal view instead.
|
|
72
|
+
* @default 2
|
|
73
|
+
*/
|
|
74
|
+
set maxExpandedNewlines(value) {
|
|
75
|
+
if (value) {
|
|
76
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, value, "f");
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, 2, "f");
|
|
80
|
+
}
|
|
81
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
|
|
82
|
+
}
|
|
83
|
+
get maxExpandedNewlines() {
|
|
84
|
+
return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedNewlines, "f");
|
|
42
85
|
}
|
|
43
86
|
/**
|
|
44
87
|
* Specifies the number of text characters to display before truncating the text.
|
|
@@ -47,23 +90,33 @@ export class SkyTextExpandComponent {
|
|
|
47
90
|
* @default 200
|
|
48
91
|
*/
|
|
49
92
|
set maxLength(value) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (this.textEl) {
|
|
53
|
-
this.setup(this.expandedText);
|
|
93
|
+
if (value) {
|
|
94
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, value, "f");
|
|
54
95
|
}
|
|
96
|
+
else {
|
|
97
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, 200, "f");
|
|
98
|
+
}
|
|
99
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
|
|
55
100
|
}
|
|
56
101
|
get maxLength() {
|
|
57
|
-
return this
|
|
102
|
+
return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxLength, "f");
|
|
58
103
|
}
|
|
59
104
|
/**
|
|
60
105
|
* Specifies the text to truncate.
|
|
61
106
|
*/
|
|
62
107
|
set text(value) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
108
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__text, value ?? '', "f");
|
|
109
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f"));
|
|
110
|
+
}
|
|
111
|
+
get text() {
|
|
112
|
+
return __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f");
|
|
113
|
+
}
|
|
114
|
+
set textEl(value) {
|
|
115
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent__textEl, value, "f");
|
|
116
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
|
|
117
|
+
}
|
|
118
|
+
get textEl() {
|
|
119
|
+
return __classPrivateFieldGet(this, _SkyTextExpandComponent__textEl, "f");
|
|
67
120
|
}
|
|
68
121
|
textExpand() {
|
|
69
122
|
if (this.isModal) {
|
|
@@ -71,12 +124,12 @@ export class SkyTextExpandComponent {
|
|
|
71
124
|
/* istanbul ignore else */
|
|
72
125
|
/* sanity check */
|
|
73
126
|
if (!this.isExpanded) {
|
|
74
|
-
this.
|
|
127
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_modalSvc, "f").open(SkyTextExpandModalComponent, [
|
|
75
128
|
{
|
|
76
|
-
provide:
|
|
129
|
+
provide: SKY_TEXT_EXPAND_MODAL_CONTEXT,
|
|
77
130
|
useValue: {
|
|
78
131
|
header: this.expandModalTitle,
|
|
79
|
-
text: this.
|
|
132
|
+
text: this.text,
|
|
80
133
|
},
|
|
81
134
|
},
|
|
82
135
|
]);
|
|
@@ -85,40 +138,38 @@ export class SkyTextExpandComponent {
|
|
|
85
138
|
else {
|
|
86
139
|
// Normal View
|
|
87
140
|
if (!this.isExpanded) {
|
|
88
|
-
this.
|
|
89
|
-
setTimeout(() => {
|
|
90
|
-
this.isExpanded = true;
|
|
91
|
-
this.animateText(this.collapsedText, this.expandedText, true);
|
|
92
|
-
}, 10);
|
|
141
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, true);
|
|
93
142
|
}
|
|
94
143
|
else {
|
|
95
|
-
this.
|
|
96
|
-
setTimeout(() => {
|
|
97
|
-
this.isExpanded = false;
|
|
98
|
-
this.animateText(this.expandedText, this.collapsedText, false);
|
|
99
|
-
}, 10);
|
|
144
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, false);
|
|
100
145
|
}
|
|
101
146
|
}
|
|
102
147
|
}
|
|
103
148
|
animationEnd() {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
149
|
+
if (this.textEl && this.containerEl) {
|
|
150
|
+
// Ensure the correct text is displayed
|
|
151
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
if (this.containerEl) {
|
|
154
|
+
// Set height back to auto so the browser can change the height as needed with window changes
|
|
155
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").removeContainerMaxHeight(this.containerEl);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
108
159
|
}
|
|
109
160
|
ngAfterContentInit() {
|
|
110
161
|
observableForkJoin([
|
|
111
|
-
this.
|
|
112
|
-
this.
|
|
162
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_more'),
|
|
163
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_less'),
|
|
113
164
|
])
|
|
114
165
|
.pipe(take(1))
|
|
115
166
|
.subscribe((resources) => {
|
|
116
|
-
this
|
|
117
|
-
this
|
|
118
|
-
this.
|
|
167
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_seeMoreText, resources[0], "f");
|
|
168
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_seeLessText, resources[1], "f");
|
|
169
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
|
|
119
170
|
/* istanbul ignore else */
|
|
120
171
|
if (!this.expandModalTitle) {
|
|
121
|
-
this
|
|
172
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f")
|
|
122
173
|
.getString('skyux_text_expand_modal_title')
|
|
123
174
|
.pipe(take(1))
|
|
124
175
|
.subscribe((resource) => {
|
|
@@ -127,98 +178,108 @@ export class SkyTextExpandComponent {
|
|
|
127
178
|
}
|
|
128
179
|
});
|
|
129
180
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.expandedText = value;
|
|
143
|
-
if (this.collapsedText !== value) {
|
|
144
|
-
this.buttonText = this.seeMoreText;
|
|
145
|
-
this.isExpanded = false;
|
|
146
|
-
this.expandable = true;
|
|
147
|
-
this.isModal =
|
|
148
|
-
this.newlineCount > this.maxExpandedNewlines ||
|
|
149
|
-
this.expandedText.length > this.maxExpandedLength;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.expandable = false;
|
|
153
|
-
}
|
|
154
|
-
this.textToShow = this.collapsedText;
|
|
181
|
+
}
|
|
182
|
+
_SkyTextExpandComponent_collapsedText = new WeakMap(), _SkyTextExpandComponent_newlineCount = new WeakMap(), _SkyTextExpandComponent_seeMoreText = new WeakMap(), _SkyTextExpandComponent_seeLessText = new WeakMap(), _SkyTextExpandComponent_textToShow = new WeakMap(), _SkyTextExpandComponent__maxExpandedLength = new WeakMap(), _SkyTextExpandComponent__maxExpandedNewlines = new WeakMap(), _SkyTextExpandComponent__maxLength = new WeakMap(), _SkyTextExpandComponent__text = new WeakMap(), _SkyTextExpandComponent__textEl = new WeakMap(), _SkyTextExpandComponent_resources = new WeakMap(), _SkyTextExpandComponent_modalSvc = new WeakMap(), _SkyTextExpandComponent_textExpandAdapter = new WeakMap(), _SkyTextExpandComponent_instances = new WeakSet(), _SkyTextExpandComponent_setup = function _SkyTextExpandComponent_setup(value) {
|
|
183
|
+
if (value) {
|
|
184
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_newlineCount, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getNewlineCount).call(this, value), "f");
|
|
185
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_collapsedText, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getTruncatedText).call(this, value, this.maxLength), "f");
|
|
186
|
+
if (__classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f") !== value) {
|
|
187
|
+
this.buttonText = __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
|
|
188
|
+
this.isExpanded = false;
|
|
189
|
+
this.expandable = true;
|
|
190
|
+
this.isModal =
|
|
191
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_newlineCount, "f") > this.maxExpandedNewlines ||
|
|
192
|
+
this.text.length > this.maxExpandedLength;
|
|
155
193
|
}
|
|
156
194
|
else {
|
|
157
|
-
this.textToShow = '';
|
|
158
195
|
this.expandable = false;
|
|
159
196
|
}
|
|
160
|
-
this
|
|
197
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
|
|
161
198
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
return matches.length;
|
|
166
|
-
}
|
|
167
|
-
return 0;
|
|
199
|
+
else {
|
|
200
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, '', "f");
|
|
201
|
+
this.expandable = false;
|
|
168
202
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
203
|
+
if (this.textEl) {
|
|
204
|
+
__classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
|
|
205
|
+
}
|
|
206
|
+
}, _SkyTextExpandComponent_getNewlineCount = function _SkyTextExpandComponent_getNewlineCount(value) {
|
|
207
|
+
const matches = value.match(/\n/gi);
|
|
208
|
+
if (matches) {
|
|
209
|
+
return matches.length;
|
|
210
|
+
}
|
|
211
|
+
return 0;
|
|
212
|
+
}, _SkyTextExpandComponent_getTruncatedText = function _SkyTextExpandComponent_getTruncatedText(value, length) {
|
|
213
|
+
let i;
|
|
214
|
+
if (this.truncateNewlines) {
|
|
215
|
+
value = value.replace(/\n+/gi, ' ');
|
|
216
|
+
}
|
|
217
|
+
// Jump ahead one character and see if it's a space, and if it isn't,
|
|
218
|
+
// back up to the first space and break there so a word doesn't get cut
|
|
219
|
+
// in half.
|
|
220
|
+
if (length < value.length) {
|
|
221
|
+
for (i = length; i > length - 10; i--) {
|
|
222
|
+
if (/\s/.test(value.charAt(i))) {
|
|
223
|
+
length = i;
|
|
224
|
+
break;
|
|
183
225
|
}
|
|
184
226
|
}
|
|
185
|
-
return value.substr(0, length);
|
|
186
227
|
}
|
|
187
|
-
|
|
188
|
-
|
|
228
|
+
return value.substring(0, length);
|
|
229
|
+
}, _SkyTextExpandComponent_animateText = function _SkyTextExpandComponent_animateText(expanding) {
|
|
230
|
+
if (this.containerEl && this.textEl) {
|
|
231
|
+
const adapter = __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f");
|
|
189
232
|
const container = this.containerEl;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
233
|
+
if (expanding) {
|
|
234
|
+
adapter.setText(this.textEl, this.text);
|
|
235
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, this.text, "f");
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
adapter.setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"));
|
|
239
|
+
__classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
|
|
240
|
+
}
|
|
241
|
+
this.buttonText = expanding ? __classPrivateFieldGet(this, _SkyTextExpandComponent_seeLessText, "f") : __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
|
|
197
242
|
// Measure the new height so we can animate to it.
|
|
198
243
|
const newHeight = adapter.getContainerHeight(container);
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
adapter.setText(this.textEl, previousText);
|
|
244
|
+
this.transitionHeight = newHeight;
|
|
245
|
+
// Always show all text while animating so that the animation is smooth. The animation callback will set this back if needed.
|
|
246
|
+
if (!expanding) {
|
|
247
|
+
adapter.setText(this.textEl, this.text);
|
|
204
248
|
}
|
|
205
|
-
|
|
206
|
-
// This timeout is necessary due to the browser needing to pick up the non-auto height being set
|
|
207
|
-
// in order to do the transtion in height correctly. Without it the transition does not fire.
|
|
208
|
-
setTimeout(() => {
|
|
209
|
-
adapter.setContainerHeight(container, `${newHeight}px`);
|
|
210
|
-
/* This resets values if the transition does not get kicked off */
|
|
211
|
-
setTimeout(() => {
|
|
212
|
-
this.animationEnd();
|
|
213
|
-
}, 500);
|
|
214
|
-
}, 10);
|
|
249
|
+
this.isExpanded = expanding;
|
|
215
250
|
}
|
|
216
|
-
}
|
|
251
|
+
};
|
|
217
252
|
SkyTextExpandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandComponent, deps: [{ token: i1.SkyLibResourcesService }, { token: i2.SkyModalService }, { token: i3.SkyTextExpandAdapterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
-
SkyTextExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTextExpandComponent, selector: "sky-text-expand", inputs: { expandModalTitle: "expandModalTitle", maxExpandedLength: "maxExpandedLength", maxExpandedNewlines: "maxExpandedNewlines", maxLength: "maxLength", text: "text", truncateNewlines: "truncateNewlines" }, providers: [SkyTextExpandAdapterService], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "textEl", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n
|
|
253
|
+
SkyTextExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTextExpandComponent, selector: "sky-text-expand", inputs: { expandModalTitle: "expandModalTitle", maxExpandedLength: "maxExpandedLength", maxExpandedNewlines: "maxExpandedNewlines", maxLength: "maxLength", text: "text", truncateNewlines: "truncateNewlines" }, providers: [SkyTextExpandAdapterService], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "textEl", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
254
|
+
trigger('expansionAnimation', [
|
|
255
|
+
transition(':enter', []),
|
|
256
|
+
state('true', style({
|
|
257
|
+
maxHeight: '{{transitionHeight}}px',
|
|
258
|
+
}), { params: { transitionHeight: 0 } }),
|
|
259
|
+
state('false', style({
|
|
260
|
+
maxHeight: '{{transitionHeight}}px',
|
|
261
|
+
}), { params: { transitionHeight: 0 } }),
|
|
262
|
+
transition('true => false', animate('250ms ease')),
|
|
263
|
+
transition('false => true', animate('250ms ease')),
|
|
264
|
+
transition('void => *', []),
|
|
265
|
+
]),
|
|
266
|
+
] });
|
|
219
267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandComponent, decorators: [{
|
|
220
268
|
type: Component,
|
|
221
|
-
args: [{
|
|
269
|
+
args: [{ animations: [
|
|
270
|
+
trigger('expansionAnimation', [
|
|
271
|
+
transition(':enter', []),
|
|
272
|
+
state('true', style({
|
|
273
|
+
maxHeight: '{{transitionHeight}}px',
|
|
274
|
+
}), { params: { transitionHeight: 0 } }),
|
|
275
|
+
state('false', style({
|
|
276
|
+
maxHeight: '{{transitionHeight}}px',
|
|
277
|
+
}), { params: { transitionHeight: 0 } }),
|
|
278
|
+
transition('true => false', animate('250ms ease')),
|
|
279
|
+
transition('false => true', animate('250ms ease')),
|
|
280
|
+
transition('void => *', []),
|
|
281
|
+
]),
|
|
282
|
+
], selector: 'sky-text-expand', providers: [SkyTextExpandAdapterService], template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"] }]
|
|
222
283
|
}], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }, { type: i2.SkyModalService }, { type: i3.SkyTextExpandAdapterService }]; }, propDecorators: { expandModalTitle: [{
|
|
223
284
|
type: Input
|
|
224
285
|
}], maxExpandedLength: [{
|
|
@@ -244,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
244
305
|
static: true,
|
|
245
306
|
}]
|
|
246
307
|
}] } });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBRTVFOztHQUVHO0FBQ0gsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBUWYsTUFBTSxPQUFPLHNCQUFzQjtJQWlHakMsWUFDVSxTQUFpQyxFQUNqQyxZQUE2QixFQUM3QixpQkFBOEM7UUFGOUMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUE1RnhEOzs7O1dB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QUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lNb2RhbFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3RleHQtZXhwYW5kLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kTW9kYWxDb250ZXh0IH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1leHBhbmQtbW9kYWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBBdXRvLWluY3JlbWVudGluZyBpbnRlZ2VyIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGlkcyBmb3IgdGV4dCBleHBhbmQgY29tcG9uZW50cy5cbiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10ZXh0LWV4cGFuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWV4cGFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZXhwYW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFeHBhbmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgd2hlbiB0aGUgY29tcG9uZW50IGV4cGFuZHMgdGhlIGZ1bGwgdGV4dCBpbiBhIG1vZGFsLlxuICAgKiBAZGVmYXVsdCBcIkV4cGFuZGVkIHZpZXdcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGV4cGFuZE1vZGFsVGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZXh0IGNoYXJhY3RlcnMgdG8gZGlzcGxheSBpbmxpbmUgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGxpbmtcbiAgICogdG8gZXhwYW5kIHRoZSBmdWxsIHRleHQuIElmIHRoZSB0ZXh0IGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlbiB0aGUgY29tcG9uZW50IGV4cGFuZHNcbiAgICogdGhlIGZ1bGwgdGV4dCBpbiBhIG1vZGFsIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RXhwYW5kZWRMZW5ndGggPSA2MDA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmV3bGluZSBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgaW5saW5lIHdoZW4gdXNlcnMgc2VsZWN0XG4gICAqIHRoZSBsaW5rIHRvIGV4cGFuZCB0aGUgZnVsbCB0ZXh0LiBJZiB0aGUgdGV4dCBleGNlZWRzIHRoaXMgbGltaXQsIHRoZW5cbiAgICogdGhlIGNvbXBvbmVudCBleHBhbmRzIHRoZSBmdWxsIHRleHQgaW4gYSBtb2RhbCB2aWV3IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RXhwYW5kZWROZXdsaW5lcyA9IDI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGJlZm9yZSB0cnVuY2F0aW5nIHRoZSB0ZXh0LlxuICAgKiBUbyBhdm9pZCB0cnVuY2F0aW5nIHRleHQgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIHRoZSBjb21wb25lbnQgbG9va3MgZm9yIGEgc3BhY2VcbiAgICogaW4gdGhlIDEwIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBsYXN0IGNoYXJhY3Rlci5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heExlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4TGVuZ3RoID0gdmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnRleHRFbCkge1xuICAgICAgdGhpcy5zZXR1cCh0aGlzLmV4cGFuZGVkVGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGV4dCB0byB0cnVuY2F0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50ZXh0RWwpIHtcbiAgICAgIHRoaXMuc2V0dXAodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXBsYWNlIG5ld2xpbmUgY2hhcmFjdGVycyBpbiB0cnVuY2F0ZWQgdGV4dCB3aXRoIHNwYWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cnVuY2F0ZU5ld2xpbmVzID0gdHJ1ZTtcblxuICBwdWJsaWMgYnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb250ZW50U2VjdGlvbklkID0gYHNreS10ZXh0LWV4cGFuZC1jb250ZW50LSR7KytuZXh0SWR9YDtcblxuICBwdWJsaWMgZXhwYW5kYWJsZTogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNFeHBhbmRlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc01vZGFsOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBjb250YWluZXJFbDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0ZXh0Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRleHRFbDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGNvbGxhcHNlZFRleHQ6IHN0cmluZztcblxuICBwcml2YXRlIGV4cGFuZGVkVGV4dDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbmV3bGluZUNvdW50OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBzZWVNb3JlVGV4dDogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VlTGVzc1RleHQ6IHN0cmluZztcblxuICBwcml2YXRlIHRleHRUb1Nob3c6IHN0cmluZztcblxuICBwcml2YXRlIF9tYXhMZW5ndGggPSAyMDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IFNreU1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRleHRFeHBhbmRBZGFwdGVyOiBTa3lUZXh0RXhwYW5kQWRhcHRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyB0ZXh0RXhwYW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgIC8vIE1vZGFsIFZpZXdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIGlmICghdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2t5VGV4dEV4cGFuZE1vZGFsQ29tcG9uZW50LCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU2t5VGV4dEV4cGFuZE1vZGFsQ29udGV4dCxcbiAgICAgICAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5leHBhbmRNb2RhbFRpdGxlLFxuICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmV4cGFuZGVkVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbCBWaWV3XG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lck1heEhlaWdodCgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYW5pbWF0ZVRleHQodGhpcy5jb2xsYXBzZWRUZXh0LCB0aGlzLmV4cGFuZGVkVGV4dCwgdHJ1ZSk7XG4gICAgICAgIH0sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0Q29udGFpbmVyTWF4SGVpZ2h0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYW5pbWF0ZVRleHQodGhpcy5leHBhbmRlZFRleHQsIHRoaXMuY29sbGFwc2VkVGV4dCwgZmFsc2UpO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFuaW1hdGlvbkVuZCgpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgdGhlIGNvcnJlY3QgdGV4dCBpcyBkaXNwbGF5ZWRcbiAgICB0aGlzLnRleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dFRvU2hvdyk7XG4gICAgLy8gU2V0IGhlaWdodCBiYWNrIHRvIGF1dG8gc28gdGhlIGJyb3dzZXIgY2FuIGNoYW5nZSB0aGUgaGVpZ2h0IGFzIG5lZWRlZCB3aXRoIHdpbmRvdyBjaGFuZ2VzXG4gICAgdGhpcy50ZXh0RXhwYW5kQWRhcHRlci5zZXRDb250YWluZXJIZWlnaHQodGhpcy5jb250YWluZXJFbCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfc2VlX21vcmUnKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfc2VlX2xlc3MnKSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLnNlZU1vcmVUZXh0ID0gcmVzb3VyY2VzWzBdO1xuICAgICAgICB0aGlzLnNlZUxlc3NUZXh0ID0gcmVzb3VyY2VzWzFdO1xuICAgICAgICB0aGlzLnNldHVwKHRoaXMuZXhwYW5kZWRUZXh0KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kTW9kYWxUaXRsZSkge1xuICAgICAgICAgIHRoaXMucmVzb3VyY2VzXG4gICAgICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2V4cGFuZF9tb2RhbF90aXRsZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5leHBhbmRNb2RhbFRpdGxlID0gcmVzb3VyY2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRhaW5lck1heEhlaWdodCgpOiB2b2lkIHtcbiAgICAvLyBlbnN1cmUgZXZlcnl0aGluZyBpcyByZXNldFxuICAgIHRoaXMuYW5pbWF0aW9uRW5kKCk7XG4gICAgLyogQmVmb3JlIGFuaW1hdGlvbiBpcyBraWNrZWQgb2ZmLCBlbnN1cmUgdGhhdCBhIG1heEhlaWdodCBleGlzdHMgKi9cbiAgICAvKiBPbmNlIHdlIGhhdmUgc3VwcG9ydCBmb3IgYW5ndWxhciB2NCBhbmltYXRpb25zIHdpdGggcGFyYW1ldGVycyB3ZSBjYW4gdXNlIHRoYXQgaW5zdGVhZCAqL1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLnRleHRFeHBhbmRBZGFwdGVyLmdldENvbnRhaW5lckhlaWdodChcbiAgICAgIHRoaXMuY29udGFpbmVyRWxcbiAgICApO1xuICAgIHRoaXMudGV4dEV4cGFuZEFkYXB0ZXIuc2V0Q29udGFpbmVySGVpZ2h0KFxuICAgICAgdGhpcy5jb250YWluZXJFbCxcbiAgICAgIGAke2N1cnJlbnRIZWlnaHR9cHhgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXAodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5uZXdsaW5lQ291bnQgPSB0aGlzLmdldE5ld2xpbmVDb3VudCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbGxhcHNlZFRleHQgPSB0aGlzLmdldFRydW5jYXRlZFRleHQodmFsdWUsIHRoaXMubWF4TGVuZ3RoKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRUZXh0ID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5jb2xsYXBzZWRUZXh0ICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvblRleHQgPSB0aGlzLnNlZU1vcmVUZXh0O1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc01vZGFsID1cbiAgICAgICAgICB0aGlzLm5ld2xpbmVDb3VudCA+IHRoaXMubWF4RXhwYW5kZWROZXdsaW5lcyB8fFxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRUZXh0Lmxlbmd0aCA+IHRoaXMubWF4RXhwYW5kZWRMZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4cGFuZGFibGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGV4dFRvU2hvdyA9IHRoaXMuY29sbGFwc2VkVGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0VG9TaG93ID0gJyc7XG4gICAgICB0aGlzLmV4cGFuZGFibGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy50ZXh0RXhwYW5kQWRhcHRlci5zZXRUZXh0KHRoaXMudGV4dEVsLCB0aGlzLnRleHRUb1Nob3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXdsaW5lQ291bnQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9cXG4vZ2kpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJ1bmNhdGVkVGV4dCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IGk6IG51bWJlcjtcbiAgICBpZiAodGhpcy50cnVuY2F0ZU5ld2xpbmVzKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZ2ksICcgJyk7XG4gICAgfVxuICAgIC8vIEp1bXAgYWhlYWQgb25lIGNoYXJhY3RlciBhbmQgc2VlIGlmIGl0J3MgYSBzcGFjZSwgYW5kIGlmIGl0IGlzbid0LFxuICAgIC8vIGJhY2sgdXAgdG8gdGhlIGZpcnN0IHNwYWNlIGFuZCBicmVhayB0aGVyZSBzbyBhIHdvcmQgZG9lc24ndCBnZXQgY3V0XG4gICAgLy8gaW4gaGFsZi5cbiAgICBpZiAobGVuZ3RoIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGkgPiBsZW5ndGggLSAxMDsgaS0tKSB7XG4gICAgICAgIGlmICgvXFxzLy50ZXN0KHZhbHVlLmNoYXJBdChpKSkpIHtcbiAgICAgICAgICBsZW5ndGggPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5zdWJzdHIoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZVRleHQoXG4gICAgcHJldmlvdXNUZXh0OiBzdHJpbmcsXG4gICAgbmV3VGV4dDogc3RyaW5nLFxuICAgIGV4cGFuZGluZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy50ZXh0RXhwYW5kQWRhcHRlcjtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgIC8vIFJlc2V0IG1heCBoZWlnaHRcbiAgICBhZGFwdGVyLnNldENvbnRhaW5lckhlaWdodChjb250YWluZXIsIHVuZGVmaW5lZCk7XG4gICAgLy8gTWVhc3VyZSB0aGUgY3VycmVudCBoZWlnaHQgc28gd2UgY2FuIGFuaW1hdGUgZnJvbSBpdC5cbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gYWRhcHRlci5nZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyKTtcbiAgICB0aGlzLnRleHRUb1Nob3cgPSBuZXdUZXh0O1xuICAgIGFkYXB0ZXIuc2V0VGV4dCh0aGlzLnRleHRFbCwgdGhpcy50ZXh0VG9TaG93KTtcbiAgICB0aGlzLmJ1dHRvblRleHQgPSBleHBhbmRpbmcgPyB0aGlzLnNlZUxlc3NUZXh0IDogdGhpcy5zZWVNb3JlVGV4dDtcbiAgICAvLyBNZWFzdXJlIHRoZSBuZXcgaGVpZ2h0IHNvIHdlIGNhbiBhbmltYXRlIHRvIGl0LlxuICAgIGNvbnN0IG5ld0hlaWdodCA9IGFkYXB0ZXIuZ2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lcik7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKG5ld0hlaWdodCA8IGN1cnJlbnRIZWlnaHQpIHtcbiAgICAgIC8vIFRoZSBuZXcgdGV4dCBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCB0ZXh0LCBzbyBwdXQgdGhlIG9sZCB0ZXh0IGJhY2sgYmVmb3JlIGRvaW5nXG4gICAgICAvLyB0aGUgY29sbGFwc2UgYW5pbWF0aW9uIHRvIGF2b2lkIHNob3dpbmcgYSBiaWcgY2h1bmsgb2Ygd2hpdGVzcGFjZS5cbiAgICAgIGFkYXB0ZXIuc2V0VGV4dCh0aGlzLnRleHRFbCwgcHJldmlvdXNUZXh0KTtcbiAgICB9XG5cbiAgICBhZGFwdGVyLnNldENvbnRhaW5lckhlaWdodChjb250YWluZXIsIGAke2N1cnJlbnRIZWlnaHR9cHhgKTtcbiAgICAvLyBUaGlzIHRpbWVvdXQgaXMgbmVjZXNzYXJ5IGR1ZSB0byB0aGUgYnJvd3NlciBuZWVkaW5nIHRvIHBpY2sgdXAgdGhlIG5vbi1hdXRvIGhlaWdodCBiZWluZyBzZXRcbiAgICAvLyBpbiBvcmRlciB0byBkbyB0aGUgdHJhbnN0aW9uIGluIGhlaWdodCBjb3JyZWN0bHkuIFdpdGhvdXQgaXQgdGhlIHRyYW5zaXRpb24gZG9lcyBub3QgZmlyZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGFkYXB0ZXIuc2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lciwgYCR7bmV3SGVpZ2h0fXB4YCk7XG4gICAgICAvKiBUaGlzIHJlc2V0cyB2YWx1ZXMgaWYgdGhlIHRyYW5zaXRpb24gZG9lcyBub3QgZ2V0IGtpY2tlZCBvZmYgKi9cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZCgpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9LCAxMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtY29udGFpbmVyXCJcbiAgKHRyYW5zaXRpb25lbmQpPVwiYW5pbWF0aW9uRW5kKClcIlxuICAjY29udGFpbmVyXG4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRleHQtZXhwYW5kLXRleHRcIiBbaWRdPVwiY29udGVudFNlY3Rpb25JZFwiICN0ZXh0Pjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtZWxsaXBzaXNcIiAqbmdJZj1cIiFpc0V4cGFuZGVkICYmIGV4cGFuZGFibGVcIlxuICAgID4uLi5cbiAgPC9zcGFuPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJleHBhbmRhYmxlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rLWlubGluZSBza3ktdGV4dC1leHBhbmQtc2VlLW1vcmVcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGlzRXhwYW5kZWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGNvbnRlbnRTZWN0aW9uSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNNb2RhbCA/ICdkaWFsb2cnIDogdW5kZWZpbmVkXCJcbiAgICAoY2xpY2spPVwidGV4dEV4cGFuZCgpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUU1RTs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQThCZixNQUFNLE9BQU8sc0JBQXNCO0lBOElqQyxZQUNFLFNBQWlDLEVBQ2pDLFFBQXlCLEVBQ3pCLGlCQUE4Qzs7UUFoRWhEOztXQUVH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TUFBTSxFQUNOLEtBQUssQ0FBQztnQ0FDSixTQUFTLEVBQUUsd0JBQXdCOzZCQUNwQyxDQUFDLEVBQ0YsRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwQzs0QkFDRCxLQUFLLENBQ0gsT0FBTyxFQUNQLEtBQUssQ0FBQztnQ0FDSixTQUFTLEVBQUUsd0JBQXdCOzZCQUNwQyxDQUFDLEVBQ0YsRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwQzs0QkFDRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzs0QkFDbEQsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ2xELFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO3lCQUM1QixDQUFDO3FCQUNILFlBQ1MsaUJBQWlCLGFBR2hCLENBQUMsMkJBQTJCLENBQUM7cUxBUWpDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFVSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcUJLLG1CQUFtQjtzQkFEN0IsS0FBSztnQkFxQkssU0FBUztzQkFEbkIsS0FBSztnQkFrQkssSUFBSTtzQkFEZCxLQUFLO2dCQWNDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFtQkMsV0FBVztzQkFKakIsU0FBUzt1QkFBQyxXQUFXLEVBQUU7d0JBQ3RCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPVSxNQUFNO3NCQUpoQixTQUFTO3VCQUFDLE1BQU0sRUFBRTt3QkFDakIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7IGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0tZX1RFWFRfRVhQQU5EX01PREFMX0NPTlRFWFQgfSBmcm9tICcuL3RleHQtZXhwYW5kLW1vZGFsLWNvbnRleHQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5VGV4dEV4cGFuZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEF1dG8taW5jcmVtZW50aW5nIGludGVnZXIgdXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgaWRzIGZvciB0ZXh0IGV4cGFuZCBjb21wb25lbnRzLlxuICovXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbnNpb25BbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXSksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ3RydWUnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgbWF4SGVpZ2h0OiAne3t0cmFuc2l0aW9uSGVpZ2h0fX1weCcsXG4gICAgICAgIH0pLFxuICAgICAgICB7IHBhcmFtczogeyB0cmFuc2l0aW9uSGVpZ2h0OiAwIH0gfVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnZmFsc2UnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgbWF4SGVpZ2h0OiAne3t0cmFuc2l0aW9uSGVpZ2h0fX1weCcsXG4gICAgICAgIH0pLFxuICAgICAgICB7IHBhcmFtczogeyB0cmFuc2l0aW9uSGVpZ2h0OiAwIH0gfVxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ3RydWUgPT4gZmFsc2UnLCBhbmltYXRlKCcyNTBtcyBlYXNlJykpLFxuICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdHJ1ZScsIGFuaW1hdGUoJzI1MG1zIGVhc2UnKSksXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXSksXG4gICAgXSksXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZXhwYW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZXhwYW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1leHBhbmQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEV4cGFuZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGl0bGUgdG8gZGlzcGxheSB3aGVuIHRoZSBjb21wb25lbnQgZXhwYW5kcyB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwuXG4gICAqIEBkZWZhdWx0IFwiRXhwYW5kZWQgdmlld1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwYW5kTW9kYWxUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGlubGluZSB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgbGlua1xuICAgKiB0byBleHBhbmQgdGhlIGZ1bGwgdGV4dC4gSWYgdGhlIHRleHQgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGVuIHRoZSBjb21wb25lbnQgZXhwYW5kc1xuICAgKiB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgNjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEV4cGFuZGVkTGVuZ3RoKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19tYXhFeHBhbmRlZExlbmd0aCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfbWF4RXhwYW5kZWRMZW5ndGggPSA2MDA7XG4gICAgfVxuICAgIHRoaXMuI3NldHVwKHRoaXMudGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heEV4cGFuZGVkTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhFeHBhbmRlZExlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5ld2xpbmUgY2hhcmFjdGVycyB0byBkaXNwbGF5IGlubGluZSB3aGVuIHVzZXJzIHNlbGVjdFxuICAgKiB0aGUgbGluayB0byBleHBhbmQgdGhlIGZ1bGwgdGV4dC4gSWYgdGhlIHRleHQgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGVuXG4gICAqIHRoZSBjb21wb25lbnQgZXhwYW5kcyB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwgdmlldyBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEV4cGFuZGVkTmV3bGluZXModmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuICAgIH1cbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhFeHBhbmRlZE5ld2xpbmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhFeHBhbmRlZE5ld2xpbmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGJlZm9yZSB0cnVuY2F0aW5nIHRoZSB0ZXh0LlxuICAgKiBUbyBhdm9pZCB0cnVuY2F0aW5nIHRleHQgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIHRoZSBjb21wb25lbnQgbG9va3MgZm9yIGEgc3BhY2VcbiAgICogaW4gdGhlIDEwIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBsYXN0IGNoYXJhY3Rlci5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heExlbmd0aCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfbWF4TGVuZ3RoID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19tYXhMZW5ndGggPSAyMDA7XG4gICAgfVxuICAgIHRoaXMuI3NldHVwKHRoaXMudGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfbWF4TGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGV4dCB0byB0cnVuY2F0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RleHQgPSB2YWx1ZSA/PyAnJztcbiAgICB0aGlzLiNzZXR1cCh0aGlzLiNfdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3RleHQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVwbGFjZSBuZXdsaW5lIGNoYXJhY3RlcnMgaW4gdHJ1bmNhdGVkIHRleHQgd2l0aCBzcGFjZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHJ1bmNhdGVOZXdsaW5lcyA9IHRydWU7XG5cbiAgcHVibGljIGJ1dHRvblRleHQgPSAnJztcblxuICBwdWJsaWMgY29udGVudFNlY3Rpb25JZCA9IGBza3ktdGV4dC1leHBhbmQtY29udGVudC0keysrbmV4dElkfWA7XG5cbiAgcHVibGljIGV4cGFuZGFibGUgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNFeHBhbmRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaXNNb2RhbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0cmFuc2l0aW9uSGVpZ2h0ID0gMTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBjb250YWluZXJFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0ZXh0Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2V0IHRleHRFbCh2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190ZXh0RWwgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0RWwoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190ZXh0RWw7XG4gIH1cblxuICAjY29sbGFwc2VkVGV4dCA9ICcnO1xuXG4gICNuZXdsaW5lQ291bnQgPSAwO1xuXG4gICNzZWVNb3JlVGV4dCA9ICcnO1xuXG4gICNzZWVMZXNzVGV4dCA9ICcnO1xuXG4gICN0ZXh0VG9TaG93ID0gJyc7XG5cbiAgI19tYXhFeHBhbmRlZExlbmd0aCA9IDYwMDtcblxuICAjX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuXG4gICNfbWF4TGVuZ3RoID0gMjAwO1xuXG4gICNfdGV4dCA9ICcnO1xuXG4gICNfdGV4dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNyZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNtb2RhbFN2YzogU2t5TW9kYWxTZXJ2aWNlO1xuICAjdGV4dEV4cGFuZEFkYXB0ZXI6IFNreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgbW9kYWxTdmM6IFNreU1vZGFsU2VydmljZSxcbiAgICB0ZXh0RXhwYW5kQWRhcHRlcjogU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgICB0aGlzLiNtb2RhbFN2YyA9IG1vZGFsU3ZjO1xuICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyID0gdGV4dEV4cGFuZEFkYXB0ZXI7XG4gIH1cblxuICBwdWJsaWMgdGV4dEV4cGFuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vZGFsKSB7XG4gICAgICAvLyBNb2RhbCBWaWV3XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNtb2RhbFN2Yy5vcGVuKFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNLWV9URVhUX0VYUEFORF9NT0RBTF9DT05URVhULFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLmV4cGFuZE1vZGFsVGl0bGUsXG4gICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbCBWaWV3XG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNhbmltYXRlVGV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2FuaW1hdGVUZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uRW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRleHRFbCAmJiB0aGlzLmNvbnRhaW5lckVsKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIGNvcnJlY3QgdGV4dCBpcyBkaXNwbGF5ZWRcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyRWwpIHtcbiAgICAgICAgICAvLyBTZXQgaGVpZ2h0IGJhY2sgdG8gYXV0byBzbyB0aGUgYnJvd3NlciBjYW4gY2hhbmdlIHRoZSBoZWlnaHQgYXMgbmVlZGVkIHdpdGggd2luZG93IGNoYW5nZXNcbiAgICAgICAgICB0aGlzLiN0ZXh0RXhwYW5kQWRhcHRlci5yZW1vdmVDb250YWluZXJNYXhIZWlnaHQodGhpcy5jb250YWluZXJFbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMuI3Jlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZXhwYW5kX3NlZV9tb3JlJyksXG4gICAgICB0aGlzLiNyZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2V4cGFuZF9zZWVfbGVzcycpLFxuICAgIF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuI3NlZU1vcmVUZXh0ID0gcmVzb3VyY2VzWzBdO1xuICAgICAgICB0aGlzLiNzZWVMZXNzVGV4dCA9IHJlc291cmNlc1sxXTtcbiAgICAgICAgdGhpcy4jc2V0dXAodGhpcy50ZXh0KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kTW9kYWxUaXRsZSkge1xuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1xuICAgICAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfbW9kYWxfdGl0bGUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwYW5kTW9kYWxUaXRsZSA9IHJlc291cmNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3NldHVwKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI25ld2xpbmVDb3VudCA9IHRoaXMuI2dldE5ld2xpbmVDb3VudCh2YWx1ZSk7XG4gICAgICB0aGlzLiNjb2xsYXBzZWRUZXh0ID0gdGhpcy4jZ2V0VHJ1bmNhdGVkVGV4dCh2YWx1ZSwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgaWYgKHRoaXMuI2NvbGxhcHNlZFRleHQgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IHRoaXMuI3NlZU1vcmVUZXh0O1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc01vZGFsID1cbiAgICAgICAgICB0aGlzLiNuZXdsaW5lQ291bnQgPiB0aGlzLm1heEV4cGFuZGVkTmV3bGluZXMgfHxcbiAgICAgICAgICB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhFeHBhbmRlZExlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy4jdGV4dFRvU2hvdyA9IHRoaXMuI2NvbGxhcHNlZFRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSAnJztcbiAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50ZXh0RWwpIHtcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuICAgIH1cbiAgfVxuXG4gICNnZXROZXdsaW5lQ291bnQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9cXG4vZ2kpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gICNnZXRUcnVuY2F0ZWRUZXh0KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGlmICh0aGlzLnRydW5jYXRlTmV3bGluZXMpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxuKy9naSwgJyAnKTtcbiAgICB9XG4gICAgLy8gSnVtcCBhaGVhZCBvbmUgY2hhcmFjdGVyIGFuZCBzZWUgaWYgaXQncyBhIHNwYWNlLCBhbmQgaWYgaXQgaXNuJ3QsXG4gICAgLy8gYmFjayB1cCB0byB0aGUgZmlyc3Qgc3BhY2UgYW5kIGJyZWFrIHRoZXJlIHNvIGEgd29yZCBkb2Vzbid0IGdldCBjdXRcbiAgICAvLyBpbiBoYWxmLlxuICAgIGlmIChsZW5ndGggPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaSA+IGxlbmd0aCAtIDEwOyBpLS0pIHtcbiAgICAgICAgaWYgKC9cXHMvLnRlc3QodmFsdWUuY2hhckF0KGkpKSkge1xuICAgICAgICAgIGxlbmd0aCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgI2FuaW1hdGVUZXh0KGV4cGFuZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckVsICYmIHRoaXMudGV4dEVsKSB7XG4gICAgICBjb25zdCBhZGFwdGVyID0gdGhpcy4jdGV4dEV4cGFuZEFkYXB0ZXI7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgICAgaWYgKGV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSB0aGlzLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI2NvbGxhcHNlZFRleHQpO1xuICAgICAgICB0aGlzLiN0ZXh0VG9TaG93ID0gdGhpcy4jY29sbGFwc2VkVGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IGV4cGFuZGluZyA/IHRoaXMuI3NlZUxlc3NUZXh0IDogdGhpcy4jc2VlTW9yZVRleHQ7XG4gICAgICAvLyBNZWFzdXJlIHRoZSBuZXcgaGVpZ2h0IHNvIHdlIGNhbiBhbmltYXRlIHRvIGl0LlxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gYWRhcHRlci5nZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbkhlaWdodCA9IG5ld0hlaWdodDtcbiAgICAgIC8vIEFsd2F5cyBzaG93IGFsbCB0ZXh0IHdoaWxlIGFuaW1hdGluZyBzbyB0aGF0IHRoZSBhbmltYXRpb24gaXMgc21vb3RoLiBUaGUgYW5pbWF0aW9uIGNhbGxiYWNrIHdpbGwgc2V0IHRoaXMgYmFjayBpZiBuZWVkZWQuXG4gICAgICBpZiAoIWV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBleHBhbmRpbmc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtAZXhwYW5zaW9uQW5pbWF0aW9uXT1cIntcbiAgICB2YWx1ZTogaXNFeHBhbmRlZCxcbiAgICBwYXJhbXM6IHsgdHJhbnNpdGlvbkhlaWdodDogdHJhbnNpdGlvbkhlaWdodCB9XG4gIH1cIlxuICAoQGV4cGFuc2lvbkFuaW1hdGlvbi5kb25lKT1cImFuaW1hdGlvbkVuZCgpXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtY29udGFpbmVyXCJcbiAgI2NvbnRhaW5lclxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10ZXh0LWV4cGFuZC10ZXh0XCIgW2lkXT1cImNvbnRlbnRTZWN0aW9uSWRcIiAjdGV4dD48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRleHQtZXhwYW5kLWVsbGlwc2lzXCIgKm5nSWY9XCIhaXNFeHBhbmRlZCAmJiBleHBhbmRhYmxlXCJcbiAgICA+Li4uXG4gIDwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiZXhwYW5kYWJsZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluay1pbmxpbmUgc2t5LXRleHQtZXhwYW5kLXNlZS1tb3JlXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTW9kYWwgPyB1bmRlZmluZWQgOiAhIWlzRXhwYW5kZWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGNvbnRlbnRTZWN0aW9uSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNNb2RhbCA/ICdkaWFsb2cnIDogdW5kZWZpbmVkXCJcbiAgICAoY2xpY2spPVwidGV4dEV4cGFuZCgpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
var _SkyTextExpandRepeaterAdapterService_renderer;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
1
3
|
import { Injectable, RendererFactory2, } from '@angular/core';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
/**
|
|
@@ -5,33 +7,29 @@ import * as i0 from "@angular/core";
|
|
|
5
7
|
*/
|
|
6
8
|
export class SkyTextExpandRepeaterAdapterService {
|
|
7
9
|
constructor(rendererFactory) {
|
|
8
|
-
this
|
|
9
|
-
this
|
|
10
|
+
_SkyTextExpandRepeaterAdapterService_renderer.set(this, void 0);
|
|
11
|
+
__classPrivateFieldSet(this, _SkyTextExpandRepeaterAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
|
|
10
12
|
}
|
|
11
13
|
getItems(elRef) {
|
|
12
14
|
return elRef.nativeElement.querySelectorAll('.sky-text-expand-repeater-item');
|
|
13
15
|
}
|
|
14
16
|
hideItem(item) {
|
|
15
|
-
this.
|
|
17
|
+
__classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").setStyle(item, 'display', 'none');
|
|
16
18
|
}
|
|
17
19
|
showItem(item) {
|
|
18
|
-
this.
|
|
20
|
+
__classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(item, 'display');
|
|
19
21
|
}
|
|
20
22
|
getContainerHeight(containerEl) {
|
|
21
23
|
return containerEl.nativeElement.offsetHeight;
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.renderer.removeStyle(containerEl.nativeElement, 'max-height');
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.renderer.setStyle(containerEl.nativeElement, 'max-height', height);
|
|
29
|
-
}
|
|
25
|
+
removeContainerMaxHeight(containerEl) {
|
|
26
|
+
__classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(containerEl.nativeElement, 'max-height');
|
|
30
27
|
}
|
|
31
28
|
}
|
|
29
|
+
_SkyTextExpandRepeaterAdapterService_renderer = new WeakMap();
|
|
32
30
|
SkyTextExpandRepeaterAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
31
|
SkyTextExpandRepeaterAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService });
|
|
34
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, decorators: [{
|
|
35
33
|
type: Injectable
|
|
36
34
|
}], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQtcmVwZWF0ZXIvdGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFVBQVUsRUFFVixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7O0FBRXZCOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1DQUFtQztJQUc5QyxZQUFZLGVBQWlDO1FBRjdDLGdFQUFxQjtRQUduQix1QkFBQSxJQUFJLGlEQUFhLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFBLENBQUM7SUFDbkUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFpQjtRQUMvQixPQUFRLEtBQUssQ0FBQyxhQUE2QixDQUFDLGdCQUFnQixDQUMxRCxnQ0FBZ0MsQ0FDTixDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUI7UUFDL0IsdUJBQUEsSUFBSSxxREFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUI7UUFDL0IsdUJBQUEsSUFBSSxxREFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQXVCO1FBQy9DLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFdBQXVCO1FBQ3JELHVCQUFBLElBQUkscURBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7Z0lBM0JVLG1DQUFtQztvSUFBbkMsbUNBQW1DOzJGQUFuQyxtQ0FBbUM7a0JBRC9DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VGV4dEV4cGFuZFJlcGVhdGVyQWRhcHRlclNlcnZpY2Uge1xuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1zKGVsUmVmOiBFbGVtZW50UmVmKTogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4ge1xuICAgIHJldHVybiAoZWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICcuc2t5LXRleHQtZXhwYW5kLXJlcGVhdGVyLWl0ZW0nXG4gICAgKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlSXRlbShpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGl0ZW0sICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SXRlbShpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZVN0eWxlKGl0ZW0sICdkaXNwbGF5Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lckVsOiBFbGVtZW50UmVmKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY29udGFpbmVyRWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ29udGFpbmVyTWF4SGVpZ2h0KGNvbnRhaW5lckVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGFpbmVyRWwubmF0aXZlRWxlbWVudCwgJ21heC1oZWlnaHQnKTtcbiAgfVxufVxuIl19
|