raise-common-lib 0.0.205 → 0.0.206

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.
@@ -4,20 +4,24 @@
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  // 组件类
7
- import { Component, EventEmitter, Input, Output, } from "@angular/core";
7
+ import { Component, EventEmitter, Input, Output, ViewChild, ElementRef, HostListener, ChangeDetectorRef, } from "@angular/core";
8
8
  import { CommonFunctionService } from "../../service/common-function.service";
9
9
  export class RSStepperComponent {
10
10
  /**
11
11
  * @param {?} cf
12
+ * @param {?} ref
12
13
  */
13
- constructor(cf) {
14
+ constructor(cf, ref) {
14
15
  this.cf = cf;
16
+ this.ref = ref;
15
17
  this.steps = [];
16
18
  this.currentStep = 0;
17
19
  this.stepClick = new EventEmitter();
18
20
  this.unlockedStep = 0; //已解锁的最大步骤
21
+ this.showBtn = false;
22
+ this.isAtStart = true;
23
+ this.isAtEnd = false;
19
24
  }
20
- //已解锁的最大步骤
21
25
  /**
22
26
  * @return {?}
23
27
  */
@@ -31,6 +35,15 @@ export class RSStepperComponent {
31
35
  }));
32
36
  this.syncUnlockedStep();
33
37
  }
38
+ /**
39
+ * @return {?}
40
+ */
41
+ ngAfterViewInit() {
42
+ setTimeout((/**
43
+ * @return {?}
44
+ */
45
+ () => this.checkBtnShow(true)));
46
+ }
34
47
  /**
35
48
  * @param {?} changes
36
49
  * @return {?}
@@ -38,6 +51,18 @@ export class RSStepperComponent {
38
51
  ngOnChanges(changes) {
39
52
  if (changes["currentStep"] && !changes["currentStep"].firstChange) {
40
53
  this.syncUnlockedStep();
54
+ // 当外部传入的 currentStep 变化时,滚动到对应步骤
55
+ setTimeout((/**
56
+ * @return {?}
57
+ */
58
+ () => this.scrollToStep()));
59
+ }
60
+ if ((changes["steps"] && changes["steps"].currentValue) ||
61
+ changes["currentStep"]) {
62
+ setTimeout((/**
63
+ * @return {?}
64
+ */
65
+ () => this.checkBtnShow()));
41
66
  }
42
67
  }
43
68
  // 同步unlockedStep的最大值
@@ -52,33 +77,161 @@ export class RSStepperComponent {
52
77
  }
53
78
  /**
54
79
  * @param {?} step
80
+ * @param {?=} index
55
81
  * @return {?}
56
82
  */
57
- onStepClick(step) {
83
+ onStepClick(step, index) {
58
84
  if (step.step <= this.unlockedStep) {
59
85
  this.currentStep = step.step;
60
86
  this.stepClick.emit(step);
87
+ setTimeout((/**
88
+ * @return {?}
89
+ */
90
+ () => this.scrollToStep(index)));
91
+ }
92
+ }
93
+ /**
94
+ * @private
95
+ * @param {?=} index
96
+ * @return {?}
97
+ */
98
+ scrollToStep(index) {
99
+ if (!this.menu || !this.menu.nativeElement)
100
+ return;
101
+ /** @type {?} */
102
+ const menuEl = this.menu.nativeElement;
103
+ /** @type {?} */
104
+ const items = menuEl.querySelectorAll(".step");
105
+ /** @type {?} */
106
+ const targetIndex = typeof index === "number"
107
+ ? index
108
+ : this.steps.findIndex((/**
109
+ * @param {?} s
110
+ * @return {?}
111
+ */
112
+ (s) => s.step === this.currentStep));
113
+ if (targetIndex < 0 || targetIndex >= items.length)
114
+ return;
115
+ /** @type {?} */
116
+ const targetEl = (/** @type {?} */ (items[targetIndex]));
117
+ //获取相对位置
118
+ /** @type {?} */
119
+ const containerRect = menuEl.getBoundingClientRect();
120
+ /** @type {?} */
121
+ const elementRect = targetEl.getBoundingClientRect();
122
+ // 计算元素相对于容器的位置
123
+ /** @type {?} */
124
+ const elementRelativeLeft = elementRect.left - containerRect.left + menuEl.scrollLeft;
125
+ /** @type {?} */
126
+ const elementWidth = elementRect.width;
127
+ /** @type {?} */
128
+ const containerWidth = menuEl.clientWidth;
129
+ // 计算元素中心点相对于容器的位置
130
+ /** @type {?} */
131
+ const elementCenter = elementRelativeLeft + elementWidth / 2;
132
+ // 目标滚动位置:让元素中心出现在可视区域中心
133
+ /** @type {?} */
134
+ const scrollTarget = elementCenter - containerWidth / 2;
135
+ // 限制在有效滚动范围内
136
+ /** @type {?} */
137
+ const maxScroll = Math.max(0, menuEl.scrollWidth - containerWidth);
138
+ /** @type {?} */
139
+ const finalTarget = Math.max(0, Math.min(scrollTarget, maxScroll));
140
+ menuEl.scrollTo({ left: finalTarget, behavior: "smooth" });
141
+ this.onScroll();
142
+ }
143
+ /**
144
+ * @param {?} event
145
+ * @return {?}
146
+ */
147
+ onResize(event) {
148
+ this.checkBtnShow();
149
+ }
150
+ /**
151
+ * @param {?=} init
152
+ * @return {?}
153
+ */
154
+ checkBtnShow(init) {
155
+ if (!this.menu || !this.menu.nativeElement)
156
+ return;
157
+ /** @type {?} */
158
+ const menuEl = this.menu.nativeElement;
159
+ const { scrollWidth, clientWidth } = menuEl;
160
+ // 判断是否需要显示滚动按钮
161
+ /** @type {?} */
162
+ let threshold = clientWidth;
163
+ if (this.containerRefId) {
164
+ /** @type {?} */
165
+ const containerRef = document.getElementById(this.containerRefId);
166
+ if (containerRef) {
167
+ threshold = Math.max(containerRef.offsetWidth * 0.8, 400);
168
+ }
61
169
  }
170
+ this.showBtn = scrollWidth > threshold;
171
+ // 初始化时滚动到当前步骤
172
+ if (init) {
173
+ setTimeout((/**
174
+ * @return {?}
175
+ */
176
+ () => this.scrollToStep()), 0);
177
+ }
178
+ this.onScroll();
179
+ this.ref.markForCheck();
180
+ }
181
+ /**
182
+ * @return {?}
183
+ */
184
+ scrollLeft() {
185
+ const { scrollLeft } = this.menu.nativeElement;
186
+ /** @type {?} */
187
+ const dis = scrollLeft / 100 < 2 ? scrollLeft + 10 : 100;
188
+ this.menu.nativeElement.scrollBy({ left: -dis, behavior: "smooth" });
189
+ }
190
+ /**
191
+ * @return {?}
192
+ */
193
+ scrollRight() {
194
+ const { scrollLeft, scrollWidth, clientWidth } = this.menu.nativeElement;
195
+ /** @type {?} */
196
+ const rest = scrollWidth - clientWidth - scrollLeft;
197
+ /** @type {?} */
198
+ const dis = rest / 100 < 2 ? rest + 10 : 100;
199
+ this.menu.nativeElement.scrollBy({ left: dis, behavior: "smooth" });
200
+ }
201
+ /**
202
+ * @return {?}
203
+ */
204
+ onScroll() {
205
+ const { scrollLeft, scrollWidth, clientWidth } = this.menu.nativeElement;
206
+ this.isAtStart = scrollLeft <= 1;
207
+ this.isAtEnd = scrollLeft + clientWidth >= scrollWidth - 1;
208
+ this.ref.markForCheck();
62
209
  }
63
210
  }
64
211
  RSStepperComponent.decorators = [
65
212
  { type: Component, args: [{
66
213
  selector: "rs-stepper",
67
- template: "<div class=\"rs-stepper\">\r\n <div class=\"steps-wrap\">\r\n <ng-container *ngFor=\"let item of steps; let i = index\">\r\n <div\r\n class=\"step\"\r\n [ngClass]=\"{\r\n done: item.step <= unlockedStep,\r\n active: item.step === currentStep\r\n }\"\r\n (click)=\"onStepClick(item)\"\r\n >\r\n <div\r\n class=\"step-label\"\r\n [matTooltip]=\"item.label !== item.displayTitle ? item.label : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{ item.displayTitle }}\r\n </div>\r\n </div>\r\n <div class=\"step-arrow\" *ngIf=\"i < steps.length - 1\">\r\n <img src=\"/assets/img/step-arrow.svg\" />\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
68
- styles: [".rs-stepper{font-family:Arial;width:100%;border-bottom:1px solid var(--rs-border-color)}.rs-stepper .steps-wrap{display:flex;align-items:center;justify-content:space-between;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;gap:8px}.rs-stepper .steps-wrap .step{flex:1}.rs-stepper .steps-wrap .step .step-label{color:var(--rs-labels-color);font-size:12px;font-weight:400;line-height:22px;text-align:center;white-space:nowrap;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .steps-wrap .step.done{cursor:pointer}.rs-stepper .steps-wrap .step.done .step-label{color:var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step.active .step-label{color:var(--rs-active-labels-color);font-weight:700;border-bottom:1px solid var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step-arrow{padding:0 12px 12px;display:flex;align-items:center}"]
214
+ template: "<div class=\"rs-stepper\">\r\n <div class=\"steps-wrap\">\r\n <div\r\n class=\"row-btn\"\r\n [class.hidden]=\"isAtStart || !showBtn\"\r\n (click)=\"scrollLeft()\"\r\n >\r\n <div class=\"hover\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M10.4995 3.99955L7.24219 8.24219L10.4995 12.4848\"\r\n stroke=\"#1F7BFF\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"normal\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M10.4995 3.99955L7.24219 8.24219L10.4995 12.4848\"\r\n stroke=\"#6B6B6B\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div\r\n class=\"steps-content\"\r\n [ngClass]=\"{\r\n leftMask: showBtn && !isAtStart,\r\n rightMask: showBtn && !isAtEnd,\r\n bothMask: showBtn && !isAtStart && showBtn && !isAtEnd\r\n }\"\r\n #menu\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-container *ngFor=\"let item of steps; let i = index\">\r\n <div\r\n class=\"step\"\r\n [ngClass]=\"{\r\n done: item.step <= unlockedStep,\r\n active: item.step === currentStep\r\n }\"\r\n (click)=\"onStepClick(item, i)\"\r\n >\r\n <div\r\n class=\"step-label\"\r\n [matTooltip]=\"item.label !== item.displayTitle ? item.label : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{ item.displayTitle }}\r\n </div>\r\n </div>\r\n <div class=\"step-arrow\" *ngIf=\"i < steps.length - 1\">\r\n <img src=\"/assets/img/step-arrow.svg\" />\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n class=\"row-btn\"\r\n [class.hidden]=\"isAtEnd || !showBtn\"\r\n (click)=\"scrollRight()\"\r\n >\r\n <div class=\"hover\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M7.50045 3.99955L10.7578 8.24219L7.50045 12.4848\"\r\n stroke=\"#1F7BFF\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"normal\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M7.50045 3.99955L10.7578 8.24219L7.50045 12.4848\"\r\n stroke=\"#6B6B6B\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
215
+ styles: [".rs-stepper{font-family:Arial;width:100%;border-bottom:1px solid var(--rs-border-color)}.rs-stepper .steps-wrap{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 auto}.rs-stepper .steps-wrap .steps-content{display:flex;align-items:center;flex-wrap:nowrap;min-width:0;overflow-x:auto;overflow-y:hidden;gap:8px}.rs-stepper .steps-wrap .steps-content.leftMask{-webkit-mask-image:linear-gradient(90deg,transparent,#fff 10%,#d8d3d3 100%);mask-image:linear-gradient(90deg,transparent,#fff 10%,#d8d3d3 100%)}.rs-stepper .steps-wrap .steps-content.rightMask{-webkit-mask-image:linear-gradient(90deg,#fff 0,#fff 90%,transparent);mask-image:linear-gradient(90deg,#fff 0,#fff 90%,transparent)}.rs-stepper .steps-wrap .steps-content.bothMask{-webkit-mask-image:linear-gradient(90deg,transparent,#fff 10%,#fff 90%,transparent)!important;mask-image:linear-gradient(90deg,transparent,#fff 10%,#fff 90%,transparent)!important}.rs-stepper .steps-wrap .steps-content::-webkit-scrollbar{width:0;height:0}.rs-stepper .steps-wrap .step{flex:0 0 auto}.rs-stepper .steps-wrap .step .step-label{color:var(--rs-labels-color);font-size:12px;font-weight:400;line-height:22px;text-align:center;white-space:nowrap;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .steps-wrap .step.done{cursor:pointer}.rs-stepper .steps-wrap .step.done .step-label{color:var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step.active .step-label{color:var(--rs-active-labels-color);font-weight:700;border-bottom:1px solid var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step-arrow{flex:0 0 auto;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .row-btn{margin-bottom:12px;display:flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:4px;border:1px solid #bdc4ca;flex-shrink:0;cursor:pointer;visibility:visible}.rs-stepper .row-btn .hover{display:none}.rs-stepper .row-btn .normal{display:flex}.rs-stepper .row-btn:hover{background-color:rgba(31,123,255,.04)}.rs-stepper .row-btn:hover .normal{display:none}.rs-stepper .row-btn:hover .hover{display:flex}.rs-stepper .row-btn.hidden{visibility:hidden}"]
69
216
  }] }
70
217
  ];
71
218
  /** @nocollapse */
72
219
  RSStepperComponent.ctorParameters = () => [
73
- { type: CommonFunctionService }
220
+ { type: CommonFunctionService },
221
+ { type: ChangeDetectorRef }
74
222
  ];
75
223
  RSStepperComponent.propDecorators = {
224
+ menu: [{ type: ViewChild, args: ["menu", { static: false },] }],
76
225
  steps: [{ type: Input }],
77
226
  currentStep: [{ type: Input }],
78
227
  stepClick: [{ type: Output }],
79
- unlockedStep: [{ type: Input }]
228
+ unlockedStep: [{ type: Input }],
229
+ containerRefId: [{ type: Input }],
230
+ onResize: [{ type: HostListener, args: ["window:resize", ["$event"],] }]
80
231
  };
81
232
  if (false) {
233
+ /** @type {?} */
234
+ RSStepperComponent.prototype.menu;
82
235
  /** @type {?} */
83
236
  RSStepperComponent.prototype.steps;
84
237
  /** @type {?} */
@@ -88,6 +241,19 @@ if (false) {
88
241
  /** @type {?} */
89
242
  RSStepperComponent.prototype.unlockedStep;
90
243
  /** @type {?} */
244
+ RSStepperComponent.prototype.containerRefId;
245
+ /** @type {?} */
246
+ RSStepperComponent.prototype.showBtn;
247
+ /** @type {?} */
248
+ RSStepperComponent.prototype.isAtStart;
249
+ /** @type {?} */
250
+ RSStepperComponent.prototype.isAtEnd;
251
+ /** @type {?} */
91
252
  RSStepperComponent.prototype.cf;
253
+ /**
254
+ * @type {?}
255
+ * @private
256
+ */
257
+ RSStepperComponent.prototype.ref;
92
258
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvcnMtc3RlcHBlci9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU85RSxNQUFNLE9BQU8sa0JBQWtCOzs7O0lBRzdCLFlBQW1CLEVBQXlCO1FBQXpCLE9BQUUsR0FBRixFQUFFLENBQXVCO1FBRm5DLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdkIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDMUMsaUJBQVksR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVO0lBRkUsQ0FBQzs7Ozs7SUFJaEQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTzs7OztRQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7Ozs7O0lBR08sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN0QztJQUNILENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7O1lBckNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsb3lCQUFxQzs7YUFFdEM7Ozs7WUFOUSxxQkFBcUI7OztvQkFRM0IsS0FBSzswQkFDTCxLQUFLO3dCQUVMLE1BQU07MkJBQ04sS0FBSzs7OztJQUpOLG1DQUFnQzs7SUFDaEMseUNBQWlDOztJQUVqQyx1Q0FBbUQ7O0lBQ25ELDBDQUFrQzs7SUFGdEIsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3RlcEl0ZW0gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ29tbW9uRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLXN0ZXBwZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUlNTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBzdGVwczogU3RlcEl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRTdGVwOiBudW1iZXIgPSAwO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZjogQ29tbW9uRnVuY3Rpb25TZXJ2aWNlKSB7fVxyXG4gIEBPdXRwdXQoKSBzdGVwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBJdGVtPigpO1xyXG4gIEBJbnB1dCgpIHVubG9ja2VkU3RlcDogbnVtYmVyID0gMDsgLy/lt7Lop6PplIHnmoTmnIDlpKfmraXpqqRcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcclxuICAgICAgc3RlcC5kaXNwbGF5VGl0bGUgPSB0aGlzLmNmLnNldE1pZGRsZUVsbGlwc2lzKHN0ZXAubGFiZWwsIDEzMiwgMTIpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN5bmNVbmxvY2tlZFN0ZXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFN0ZXBcIl0gJiYgIWNoYW5nZXNbXCJjdXJyZW50U3RlcFwiXS5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLnN5bmNVbmxvY2tlZFN0ZXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOWQjOatpXVubG9ja2VkU3RlcOeahOacgOWkp+WAvFxyXG4gIHByaXZhdGUgc3luY1VubG9ja2VkU3RlcCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwID4gdGhpcy51bmxvY2tlZFN0ZXApIHtcclxuICAgICAgdGhpcy51bmxvY2tlZFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGVwQ2xpY2soc3RlcDogU3RlcEl0ZW0pIHtcclxuICAgIGlmIChzdGVwLnN0ZXAgPD0gdGhpcy51bmxvY2tlZFN0ZXApIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHN0ZXAuc3RlcDtcclxuICAgICAgdGhpcy5zdGVwQ2xpY2suZW1pdChzdGVwKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvcnMtc3RlcHBlci9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFPOUUsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7SUFJN0IsWUFDUyxFQUF5QixFQUN4QixHQUFzQjtRQUR2QixPQUFFLEdBQUYsRUFBRSxDQUF1QjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUp2QixVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBS3ZCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzFDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQTJIN0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUEvSGIsQ0FBQzs7OztJQUtKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7Ozs7SUFFRCxlQUFlO1FB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QixpQkFBaUI7OzttQkFZaEIsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0JBQ25DLEtBQUs7MEJBQ0wsS0FBSzt3QkFLTCxNQUFNOzJCQUNOLEtBQUs7NkJBQ0wsS0FBSzt1QkFnRkwsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQXpGekMsa0NBQXdEOztJQUN4RCxtQ0FBZ0M7O0lBQ2hDLHlDQUFpQzs7SUFLakMsdUNBQW1EOztJQUNuRCwwQ0FBa0M7O0lBQ2xDLDRDQUF3Qjs7SUEwSHhCLHFDQUFnQjs7SUFDaEIsdUNBQWlCOztJQUNqQixxQ0FBZ0I7O0lBaklkLGdDQUFnQzs7Ozs7SUFDaEMsaUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3RlcEl0ZW0gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ29tbW9uRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLXN0ZXBwZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUlNTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKFwibWVudVwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudSE6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgc3RlcHM6IFN0ZXBJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjZjogQ29tbW9uRnVuY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG4gIEBPdXRwdXQoKSBzdGVwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBJdGVtPigpO1xyXG4gIEBJbnB1dCgpIHVubG9ja2VkU3RlcDogbnVtYmVyID0gMDsgLy/lt7Lop6PplIHnmoTmnIDlpKfmraXpqqRcclxuICBASW5wdXQoKSBjb250YWluZXJSZWZJZDtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcclxuICAgICAgc3RlcC5kaXNwbGF5VGl0bGUgPSB0aGlzLmNmLnNldE1pZGRsZUVsbGlwc2lzKHN0ZXAubGFiZWwsIDEzMiwgMTIpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN5bmNVbmxvY2tlZFN0ZXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0J0blNob3codHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJjdXJyZW50U3RlcFwiXSAmJiAhY2hhbmdlc1tcImN1cnJlbnRTdGVwXCJdLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc3luY1VubG9ja2VkU3RlcCgpO1xyXG4gICAgICAvLyDlvZPlpJbpg6jkvKDlhaXnmoQgY3VycmVudFN0ZXAg5Y+Y5YyW5pe277yM5rua5Yqo5Yiw5a+55bqU5q2l6aqkXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzW1wic3RlcHNcIl0gJiYgY2hhbmdlc1tcInN0ZXBzXCJdLmN1cnJlbnRWYWx1ZSkgfHxcclxuICAgICAgY2hhbmdlc1tcImN1cnJlbnRTdGVwXCJdXHJcbiAgICApIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrQnRuU2hvdygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOWQjOatpXVubG9ja2VkU3RlcOeahOacgOWkp+WAvFxyXG4gIHByaXZhdGUgc3luY1VubG9ja2VkU3RlcCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwID4gdGhpcy51bmxvY2tlZFN0ZXApIHtcclxuICAgICAgdGhpcy51bmxvY2tlZFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGVwQ2xpY2soc3RlcDogU3RlcEl0ZW0sIGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoc3RlcC5zdGVwIDw9IHRoaXMudW5sb2NrZWRTdGVwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwLnN0ZXA7XHJcbiAgICAgIHRoaXMuc3RlcENsaWNrLmVtaXQoc3RlcCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoaW5kZXgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsVG9TdGVwKGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMubWVudSB8fCAhdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtZW51RWwgPSB0aGlzLm1lbnUubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGl0ZW1zID0gbWVudUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc3RlcFwiKTtcclxuICAgIGNvbnN0IHRhcmdldEluZGV4ID1cclxuICAgICAgdHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiXHJcbiAgICAgICAgPyBpbmRleFxyXG4gICAgICAgIDogdGhpcy5zdGVwcy5maW5kSW5kZXgoKHMpID0+IHMuc3RlcCA9PT0gdGhpcy5jdXJyZW50U3RlcCk7XHJcblxyXG4gICAgaWYgKHRhcmdldEluZGV4IDwgMCB8fCB0YXJnZXRJbmRleCA+PSBpdGVtcy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGl0ZW1zW3RhcmdldEluZGV4XSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvL+iOt+WPluebuOWvueS9jee9rlxyXG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgLy8g6K6h566X5YWD57Sg55u45a+55LqO5a655Zmo55qE5L2N572uXHJcbiAgICBjb25zdCBlbGVtZW50UmVsYXRpdmVMZWZ0ID1cclxuICAgICAgZWxlbWVudFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIG1lbnVFbC5zY3JvbGxMZWZ0O1xyXG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gZWxlbWVudFJlY3Qud2lkdGg7XHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IG1lbnVFbC5jbGllbnRXaWR0aDtcclxuXHJcbiAgICAvLyDorqHnrpflhYPntKDkuK3lv4Pngrnnm7jlr7nkuo7lrrnlmajnmoTkvY3nva5cclxuICAgIGNvbnN0IGVsZW1lbnRDZW50ZXIgPSBlbGVtZW50UmVsYXRpdmVMZWZ0ICsgZWxlbWVudFdpZHRoIC8gMjtcclxuXHJcbiAgICAvLyDnm67moIfmu5rliqjkvY3nva7vvJrorqnlhYPntKDkuK3lv4Plh7rnjrDlnKjlj6/op4bljLrln5/kuK3lv4NcclxuICAgIGNvbnN0IHNjcm9sbFRhcmdldCA9IGVsZW1lbnRDZW50ZXIgLSBjb250YWluZXJXaWR0aCAvIDI7XHJcblxyXG4gICAgLy8g6ZmQ5Yi25Zyo5pyJ5pWI5rua5Yqo6IyD5Zu05YaFXHJcbiAgICBjb25zdCBtYXhTY3JvbGwgPSBNYXRoLm1heCgwLCBtZW51RWwuc2Nyb2xsV2lkdGggLSBjb250YWluZXJXaWR0aCk7XHJcbiAgICBjb25zdCBmaW5hbFRhcmdldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNjcm9sbFRhcmdldCwgbWF4U2Nyb2xsKSk7XHJcblxyXG4gICAgbWVudUVsLnNjcm9sbFRvKHsgbGVmdDogZmluYWxUYXJnZXQsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgdGhpcy5vblNjcm9sbCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jaGVja0J0blNob3coKTtcclxuICB9XHJcblxyXG4gIGNoZWNrQnRuU2hvdyhpbml0PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLm1lbnUgfHwgIXRoaXMubWVudS5uYXRpdmVFbGVtZW50KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbWVudUVsID0gdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCB7IHNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCB9ID0gbWVudUVsO1xyXG5cclxuICAgIC8vIOWIpOaWreaYr+WQpumcgOimgeaYvuekuua7muWKqOaMiemSrlxyXG4gICAgbGV0IHRocmVzaG9sZCA9IGNsaWVudFdpZHRoO1xyXG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmSWQpIHtcclxuICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb250YWluZXJSZWZJZCk7XHJcbiAgICAgIGlmIChjb250YWluZXJSZWYpIHtcclxuICAgICAgICB0aHJlc2hvbGQgPSBNYXRoLm1heChjb250YWluZXJSZWYub2Zmc2V0V2lkdGggKiAwLjgsIDQwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dCdG4gPSBzY3JvbGxXaWR0aCA+IHRocmVzaG9sZDtcclxuXHJcbiAgICAvLyDliJ3lp4vljJbml7bmu5rliqjliLDlvZPliY3mraXpqqRcclxuICAgIGlmIChpbml0KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoKSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vblNjcm9sbCgpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIHNjcm9sbExlZnQoKSB7XHJcbiAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IHRoaXMubWVudS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgZGlzID0gc2Nyb2xsTGVmdCAvIDEwMCA8IDIgPyBzY3JvbGxMZWZ0ICsgMTAgOiAxMDA7XHJcbiAgICB0aGlzLm1lbnUubmF0aXZlRWxlbWVudC5zY3JvbGxCeSh7IGxlZnQ6IC1kaXMsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gIH1cclxuICBzY3JvbGxSaWdodCgpIHtcclxuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoIH0gPSB0aGlzLm1lbnUubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IHJlc3QgPSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gc2Nyb2xsTGVmdDtcclxuICAgIGNvbnN0IGRpcyA9IHJlc3QgLyAxMDAgPCAyID8gcmVzdCArIDEwIDogMTAwO1xyXG4gICAgdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoeyBsZWZ0OiBkaXMsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0J0biA9IGZhbHNlO1xyXG4gIGlzQXRTdGFydCA9IHRydWU7XHJcbiAgaXNBdEVuZCA9IGZhbHNlO1xyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggfSA9IHRoaXMubWVudS5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5pc0F0U3RhcnQgPSBzY3JvbGxMZWZ0IDw9IDE7XHJcbiAgICB0aGlzLmlzQXRFbmQgPSBzY3JvbGxMZWZ0ICsgY2xpZW50V2lkdGggPj0gc2Nyb2xsV2lkdGggLSAxO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -4,23 +4,24 @@
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  // 组件类
7
- import { Component, EventEmitter, Input, Output, } from "@angular/core";
7
+ import { Component, EventEmitter, Input, Output, ViewChild, ElementRef, HostListener, ChangeDetectorRef, } from "@angular/core";
8
8
  import { CommonFunctionService } from "../../service/common-function.service";
9
9
  var RSStepperComponent = /** @class */ (function () {
10
- function RSStepperComponent(cf) {
10
+ function RSStepperComponent(cf, ref) {
11
11
  this.cf = cf;
12
+ this.ref = ref;
12
13
  this.steps = [];
13
14
  this.currentStep = 0;
14
15
  this.stepClick = new EventEmitter();
15
16
  this.unlockedStep = 0; //已解锁的最大步骤
17
+ this.showBtn = false;
18
+ this.isAtStart = true;
19
+ this.isAtEnd = false;
16
20
  }
17
- //已解锁的最大步骤
18
21
  /**
19
22
  * @return {?}
20
23
  */
21
- RSStepperComponent.prototype.ngOnInit =
22
- //已解锁的最大步骤
23
- /**
24
+ RSStepperComponent.prototype.ngOnInit = /**
24
25
  * @return {?}
25
26
  */
26
27
  function () {
@@ -34,6 +35,19 @@ var RSStepperComponent = /** @class */ (function () {
34
35
  }));
35
36
  this.syncUnlockedStep();
36
37
  };
38
+ /**
39
+ * @return {?}
40
+ */
41
+ RSStepperComponent.prototype.ngAfterViewInit = /**
42
+ * @return {?}
43
+ */
44
+ function () {
45
+ var _this = this;
46
+ setTimeout((/**
47
+ * @return {?}
48
+ */
49
+ function () { return _this.checkBtnShow(true); }));
50
+ };
37
51
  /**
38
52
  * @param {?} changes
39
53
  * @return {?}
@@ -43,8 +57,21 @@ var RSStepperComponent = /** @class */ (function () {
43
57
  * @return {?}
44
58
  */
45
59
  function (changes) {
60
+ var _this = this;
46
61
  if (changes["currentStep"] && !changes["currentStep"].firstChange) {
47
62
  this.syncUnlockedStep();
63
+ // 当外部传入的 currentStep 变化时,滚动到对应步骤
64
+ setTimeout((/**
65
+ * @return {?}
66
+ */
67
+ function () { return _this.scrollToStep(); }));
68
+ }
69
+ if ((changes["steps"] && changes["steps"].currentValue) ||
70
+ changes["currentStep"]) {
71
+ setTimeout((/**
72
+ * @return {?}
73
+ */
74
+ function () { return _this.checkBtnShow(); }));
48
75
  }
49
76
  };
50
77
  // 同步unlockedStep的最大值
@@ -66,39 +93,193 @@ var RSStepperComponent = /** @class */ (function () {
66
93
  };
67
94
  /**
68
95
  * @param {?} step
96
+ * @param {?=} index
69
97
  * @return {?}
70
98
  */
71
99
  RSStepperComponent.prototype.onStepClick = /**
72
100
  * @param {?} step
101
+ * @param {?=} index
73
102
  * @return {?}
74
103
  */
75
- function (step) {
104
+ function (step, index) {
105
+ var _this = this;
76
106
  if (step.step <= this.unlockedStep) {
77
107
  this.currentStep = step.step;
78
108
  this.stepClick.emit(step);
109
+ setTimeout((/**
110
+ * @return {?}
111
+ */
112
+ function () { return _this.scrollToStep(index); }));
79
113
  }
80
114
  };
115
+ /**
116
+ * @private
117
+ * @param {?=} index
118
+ * @return {?}
119
+ */
120
+ RSStepperComponent.prototype.scrollToStep = /**
121
+ * @private
122
+ * @param {?=} index
123
+ * @return {?}
124
+ */
125
+ function (index) {
126
+ var _this = this;
127
+ if (!this.menu || !this.menu.nativeElement)
128
+ return;
129
+ /** @type {?} */
130
+ var menuEl = this.menu.nativeElement;
131
+ /** @type {?} */
132
+ var items = menuEl.querySelectorAll(".step");
133
+ /** @type {?} */
134
+ var targetIndex = typeof index === "number"
135
+ ? index
136
+ : this.steps.findIndex((/**
137
+ * @param {?} s
138
+ * @return {?}
139
+ */
140
+ function (s) { return s.step === _this.currentStep; }));
141
+ if (targetIndex < 0 || targetIndex >= items.length)
142
+ return;
143
+ /** @type {?} */
144
+ var targetEl = (/** @type {?} */ (items[targetIndex]));
145
+ //获取相对位置
146
+ /** @type {?} */
147
+ var containerRect = menuEl.getBoundingClientRect();
148
+ /** @type {?} */
149
+ var elementRect = targetEl.getBoundingClientRect();
150
+ // 计算元素相对于容器的位置
151
+ /** @type {?} */
152
+ var elementRelativeLeft = elementRect.left - containerRect.left + menuEl.scrollLeft;
153
+ /** @type {?} */
154
+ var elementWidth = elementRect.width;
155
+ /** @type {?} */
156
+ var containerWidth = menuEl.clientWidth;
157
+ // 计算元素中心点相对于容器的位置
158
+ /** @type {?} */
159
+ var elementCenter = elementRelativeLeft + elementWidth / 2;
160
+ // 目标滚动位置:让元素中心出现在可视区域中心
161
+ /** @type {?} */
162
+ var scrollTarget = elementCenter - containerWidth / 2;
163
+ // 限制在有效滚动范围内
164
+ /** @type {?} */
165
+ var maxScroll = Math.max(0, menuEl.scrollWidth - containerWidth);
166
+ /** @type {?} */
167
+ var finalTarget = Math.max(0, Math.min(scrollTarget, maxScroll));
168
+ menuEl.scrollTo({ left: finalTarget, behavior: "smooth" });
169
+ this.onScroll();
170
+ };
171
+ /**
172
+ * @param {?} event
173
+ * @return {?}
174
+ */
175
+ RSStepperComponent.prototype.onResize = /**
176
+ * @param {?} event
177
+ * @return {?}
178
+ */
179
+ function (event) {
180
+ this.checkBtnShow();
181
+ };
182
+ /**
183
+ * @param {?=} init
184
+ * @return {?}
185
+ */
186
+ RSStepperComponent.prototype.checkBtnShow = /**
187
+ * @param {?=} init
188
+ * @return {?}
189
+ */
190
+ function (init) {
191
+ var _this = this;
192
+ if (!this.menu || !this.menu.nativeElement)
193
+ return;
194
+ /** @type {?} */
195
+ var menuEl = this.menu.nativeElement;
196
+ var scrollWidth = menuEl.scrollWidth, clientWidth = menuEl.clientWidth;
197
+ // 判断是否需要显示滚动按钮
198
+ /** @type {?} */
199
+ var threshold = clientWidth;
200
+ if (this.containerRefId) {
201
+ /** @type {?} */
202
+ var containerRef = document.getElementById(this.containerRefId);
203
+ if (containerRef) {
204
+ threshold = Math.max(containerRef.offsetWidth * 0.8, 400);
205
+ }
206
+ }
207
+ this.showBtn = scrollWidth > threshold;
208
+ // 初始化时滚动到当前步骤
209
+ if (init) {
210
+ setTimeout((/**
211
+ * @return {?}
212
+ */
213
+ function () { return _this.scrollToStep(); }), 0);
214
+ }
215
+ this.onScroll();
216
+ this.ref.markForCheck();
217
+ };
218
+ /**
219
+ * @return {?}
220
+ */
221
+ RSStepperComponent.prototype.scrollLeft = /**
222
+ * @return {?}
223
+ */
224
+ function () {
225
+ var scrollLeft = this.menu.nativeElement.scrollLeft;
226
+ /** @type {?} */
227
+ var dis = scrollLeft / 100 < 2 ? scrollLeft + 10 : 100;
228
+ this.menu.nativeElement.scrollBy({ left: -dis, behavior: "smooth" });
229
+ };
230
+ /**
231
+ * @return {?}
232
+ */
233
+ RSStepperComponent.prototype.scrollRight = /**
234
+ * @return {?}
235
+ */
236
+ function () {
237
+ var _a = this.menu.nativeElement, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
238
+ /** @type {?} */
239
+ var rest = scrollWidth - clientWidth - scrollLeft;
240
+ /** @type {?} */
241
+ var dis = rest / 100 < 2 ? rest + 10 : 100;
242
+ this.menu.nativeElement.scrollBy({ left: dis, behavior: "smooth" });
243
+ };
244
+ /**
245
+ * @return {?}
246
+ */
247
+ RSStepperComponent.prototype.onScroll = /**
248
+ * @return {?}
249
+ */
250
+ function () {
251
+ var _a = this.menu.nativeElement, scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
252
+ this.isAtStart = scrollLeft <= 1;
253
+ this.isAtEnd = scrollLeft + clientWidth >= scrollWidth - 1;
254
+ this.ref.markForCheck();
255
+ };
81
256
  RSStepperComponent.decorators = [
82
257
  { type: Component, args: [{
83
258
  selector: "rs-stepper",
84
- template: "<div class=\"rs-stepper\">\r\n <div class=\"steps-wrap\">\r\n <ng-container *ngFor=\"let item of steps; let i = index\">\r\n <div\r\n class=\"step\"\r\n [ngClass]=\"{\r\n done: item.step <= unlockedStep,\r\n active: item.step === currentStep\r\n }\"\r\n (click)=\"onStepClick(item)\"\r\n >\r\n <div\r\n class=\"step-label\"\r\n [matTooltip]=\"item.label !== item.displayTitle ? item.label : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{ item.displayTitle }}\r\n </div>\r\n </div>\r\n <div class=\"step-arrow\" *ngIf=\"i < steps.length - 1\">\r\n <img src=\"/assets/img/step-arrow.svg\" />\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
85
- styles: [".rs-stepper{font-family:Arial;width:100%;border-bottom:1px solid var(--rs-border-color)}.rs-stepper .steps-wrap{display:flex;align-items:center;justify-content:space-between;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;gap:8px}.rs-stepper .steps-wrap .step{flex:1}.rs-stepper .steps-wrap .step .step-label{color:var(--rs-labels-color);font-size:12px;font-weight:400;line-height:22px;text-align:center;white-space:nowrap;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .steps-wrap .step.done{cursor:pointer}.rs-stepper .steps-wrap .step.done .step-label{color:var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step.active .step-label{color:var(--rs-active-labels-color);font-weight:700;border-bottom:1px solid var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step-arrow{padding:0 12px 12px;display:flex;align-items:center}"]
259
+ template: "<div class=\"rs-stepper\">\r\n <div class=\"steps-wrap\">\r\n <div\r\n class=\"row-btn\"\r\n [class.hidden]=\"isAtStart || !showBtn\"\r\n (click)=\"scrollLeft()\"\r\n >\r\n <div class=\"hover\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M10.4995 3.99955L7.24219 8.24219L10.4995 12.4848\"\r\n stroke=\"#1F7BFF\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"normal\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M10.4995 3.99955L7.24219 8.24219L10.4995 12.4848\"\r\n stroke=\"#6B6B6B\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div\r\n class=\"steps-content\"\r\n [ngClass]=\"{\r\n leftMask: showBtn && !isAtStart,\r\n rightMask: showBtn && !isAtEnd,\r\n bothMask: showBtn && !isAtStart && showBtn && !isAtEnd\r\n }\"\r\n #menu\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-container *ngFor=\"let item of steps; let i = index\">\r\n <div\r\n class=\"step\"\r\n [ngClass]=\"{\r\n done: item.step <= unlockedStep,\r\n active: item.step === currentStep\r\n }\"\r\n (click)=\"onStepClick(item, i)\"\r\n >\r\n <div\r\n class=\"step-label\"\r\n [matTooltip]=\"item.label !== item.displayTitle ? item.label : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{ item.displayTitle }}\r\n </div>\r\n </div>\r\n <div class=\"step-arrow\" *ngIf=\"i < steps.length - 1\">\r\n <img src=\"/assets/img/step-arrow.svg\" />\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n class=\"row-btn\"\r\n [class.hidden]=\"isAtEnd || !showBtn\"\r\n (click)=\"scrollRight()\"\r\n >\r\n <div class=\"hover\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M7.50045 3.99955L10.7578 8.24219L7.50045 12.4848\"\r\n stroke=\"#1F7BFF\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"normal\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"16\"\r\n viewBox=\"0 0 17 16\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M7.50045 3.99955L10.7578 8.24219L7.50045 12.4848\"\r\n stroke=\"#6B6B6B\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
260
+ styles: [".rs-stepper{font-family:Arial;width:100%;border-bottom:1px solid var(--rs-border-color)}.rs-stepper .steps-wrap{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 auto}.rs-stepper .steps-wrap .steps-content{display:flex;align-items:center;flex-wrap:nowrap;min-width:0;overflow-x:auto;overflow-y:hidden;gap:8px}.rs-stepper .steps-wrap .steps-content.leftMask{-webkit-mask-image:linear-gradient(90deg,transparent,#fff 10%,#d8d3d3 100%);mask-image:linear-gradient(90deg,transparent,#fff 10%,#d8d3d3 100%)}.rs-stepper .steps-wrap .steps-content.rightMask{-webkit-mask-image:linear-gradient(90deg,#fff 0,#fff 90%,transparent);mask-image:linear-gradient(90deg,#fff 0,#fff 90%,transparent)}.rs-stepper .steps-wrap .steps-content.bothMask{-webkit-mask-image:linear-gradient(90deg,transparent,#fff 10%,#fff 90%,transparent)!important;mask-image:linear-gradient(90deg,transparent,#fff 10%,#fff 90%,transparent)!important}.rs-stepper .steps-wrap .steps-content::-webkit-scrollbar{width:0;height:0}.rs-stepper .steps-wrap .step{flex:0 0 auto}.rs-stepper .steps-wrap .step .step-label{color:var(--rs-labels-color);font-size:12px;font-weight:400;line-height:22px;text-align:center;white-space:nowrap;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .steps-wrap .step.done{cursor:pointer}.rs-stepper .steps-wrap .step.done .step-label{color:var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step.active .step-label{color:var(--rs-active-labels-color);font-weight:700;border-bottom:1px solid var(--rs-active-labels-color)}.rs-stepper .steps-wrap .step-arrow{flex:0 0 auto;padding:0 12px 12px;display:flex;align-items:center}.rs-stepper .row-btn{margin-bottom:12px;display:flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:4px;border:1px solid #bdc4ca;flex-shrink:0;cursor:pointer;visibility:visible}.rs-stepper .row-btn .hover{display:none}.rs-stepper .row-btn .normal{display:flex}.rs-stepper .row-btn:hover{background-color:rgba(31,123,255,.04)}.rs-stepper .row-btn:hover .normal{display:none}.rs-stepper .row-btn:hover .hover{display:flex}.rs-stepper .row-btn.hidden{visibility:hidden}"]
86
261
  }] }
87
262
  ];
88
263
  /** @nocollapse */
89
264
  RSStepperComponent.ctorParameters = function () { return [
90
- { type: CommonFunctionService }
265
+ { type: CommonFunctionService },
266
+ { type: ChangeDetectorRef }
91
267
  ]; };
92
268
  RSStepperComponent.propDecorators = {
269
+ menu: [{ type: ViewChild, args: ["menu", { static: false },] }],
93
270
  steps: [{ type: Input }],
94
271
  currentStep: [{ type: Input }],
95
272
  stepClick: [{ type: Output }],
96
- unlockedStep: [{ type: Input }]
273
+ unlockedStep: [{ type: Input }],
274
+ containerRefId: [{ type: Input }],
275
+ onResize: [{ type: HostListener, args: ["window:resize", ["$event"],] }]
97
276
  };
98
277
  return RSStepperComponent;
99
278
  }());
100
279
  export { RSStepperComponent };
101
280
  if (false) {
281
+ /** @type {?} */
282
+ RSStepperComponent.prototype.menu;
102
283
  /** @type {?} */
103
284
  RSStepperComponent.prototype.steps;
104
285
  /** @type {?} */
@@ -108,6 +289,19 @@ if (false) {
108
289
  /** @type {?} */
109
290
  RSStepperComponent.prototype.unlockedStep;
110
291
  /** @type {?} */
292
+ RSStepperComponent.prototype.containerRefId;
293
+ /** @type {?} */
294
+ RSStepperComponent.prototype.showBtn;
295
+ /** @type {?} */
296
+ RSStepperComponent.prototype.isAtStart;
297
+ /** @type {?} */
298
+ RSStepperComponent.prototype.isAtEnd;
299
+ /** @type {?} */
111
300
  RSStepperComponent.prototype.cf;
301
+ /**
302
+ * @type {?}
303
+ * @private
304
+ */
305
+ RSStepperComponent.prototype.ref;
112
306
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvcnMtc3RlcHBlci9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RTtJQVFFLDRCQUFtQixFQUF5QjtRQUF6QixPQUFFLEdBQUYsRUFBRSxDQUF1QjtRQUZuQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzFDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUZFLENBQUM7Ozs7O0lBSWhELHFDQUFROzs7OztJQUFSO1FBQUEsaUJBS0M7UUFKQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLElBQUk7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFFRCx3Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjs7Ozs7O0lBQ2IsNkNBQWdCOzs7Ozs7SUFBeEI7UUFDRSxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7OztJQUVELHdDQUFXOzs7O0lBQVgsVUFBWSxJQUFjO1FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7O2dCQXJDRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLG95QkFBcUM7O2lCQUV0Qzs7OztnQkFOUSxxQkFBcUI7Ozt3QkFRM0IsS0FBSzs4QkFDTCxLQUFLOzRCQUVMLE1BQU07K0JBQ04sS0FBSzs7SUE0QlIseUJBQUM7Q0FBQSxBQXRDRCxJQXNDQztTQWpDWSxrQkFBa0I7OztJQUM3QixtQ0FBZ0M7O0lBQ2hDLHlDQUFpQzs7SUFFakMsdUNBQW1EOztJQUNuRCwwQ0FBa0M7O0lBRnRCLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOe7hOS7tuexu1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN0ZXBJdGVtIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkZ1bmN0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2NvbW1vbi1mdW5jdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1zdGVwcGVyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJTU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgc3RlcHM6IFN0ZXBJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2Y6IENvbW1vbkZ1bmN0aW9uU2VydmljZSkge31cclxuICBAT3V0cHV0KCkgc3RlcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwSXRlbT4oKTtcclxuICBASW5wdXQoKSB1bmxvY2tlZFN0ZXA6IG51bWJlciA9IDA7IC8v5bey6Kej6ZSB55qE5pyA5aSn5q2l6aqkXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XHJcbiAgICAgIHN0ZXAuZGlzcGxheVRpdGxlID0gdGhpcy5jZi5zZXRNaWRkbGVFbGxpcHNpcyhzdGVwLmxhYmVsLCAxMzIsIDEyKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zeW5jVW5sb2NrZWRTdGVwKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1cnJlbnRTdGVwXCJdICYmICFjaGFuZ2VzW1wiY3VycmVudFN0ZXBcIl0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5zeW5jVW5sb2NrZWRTdGVwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDlkIzmraV1bmxvY2tlZFN0ZXDnmoTmnIDlpKflgLxcclxuICBwcml2YXRlIHN5bmNVbmxvY2tlZFN0ZXAoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcCA+IHRoaXMudW5sb2NrZWRTdGVwKSB7XHJcbiAgICAgIHRoaXMudW5sb2NrZWRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3RlcENsaWNrKHN0ZXA6IFN0ZXBJdGVtKSB7XHJcbiAgICBpZiAoc3RlcC5zdGVwIDw9IHRoaXMudW5sb2NrZWRTdGVwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwLnN0ZXA7XHJcbiAgICAgIHRoaXMuc3RlcENsaWNrLmVtaXQoc3RlcCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvcnMtc3RlcHBlci9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFOUU7SUFTRSw0QkFDUyxFQUF5QixFQUN4QixHQUFzQjtRQUR2QixPQUFFLEdBQUYsRUFBRSxDQUF1QjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUp2QixVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBS3ZCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzFDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQTJIN0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUEvSGIsQ0FBQzs7OztJQUtKLHFDQUFROzs7SUFBUjtRQUFBLGlCQUtDO1FBSkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxJQUFJO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7Ozs7SUFFRCw0Q0FBZTs7O0lBQWY7UUFBQSxp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QyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDOztnQkFqSkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QiwrOUZBQXFDOztpQkFFdEM7Ozs7Z0JBTlEscUJBQXFCO2dCQUo1QixpQkFBaUI7Ozt1QkFZaEIsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7d0JBQ25DLEtBQUs7OEJBQ0wsS0FBSzs0QkFLTCxNQUFNOytCQUNOLEtBQUs7aUNBQ0wsS0FBSzsyQkFnRkwsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUFtRDNDLHlCQUFDO0NBQUEsQUFsSkQsSUFrSkM7U0E3SVksa0JBQWtCOzs7SUFDN0Isa0NBQXdEOztJQUN4RCxtQ0FBZ0M7O0lBQ2hDLHlDQUFpQzs7SUFLakMsdUNBQW1EOztJQUNuRCwwQ0FBa0M7O0lBQ2xDLDRDQUF3Qjs7SUEwSHhCLHFDQUFnQjs7SUFDaEIsdUNBQWlCOztJQUNqQixxQ0FBZ0I7O0lBaklkLGdDQUFnQzs7Ozs7SUFDaEMsaUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3RlcEl0ZW0gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ29tbW9uRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLXN0ZXBwZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUlNTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKFwibWVudVwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudSE6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgc3RlcHM6IFN0ZXBJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjZjogQ29tbW9uRnVuY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG4gIEBPdXRwdXQoKSBzdGVwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBJdGVtPigpO1xyXG4gIEBJbnB1dCgpIHVubG9ja2VkU3RlcDogbnVtYmVyID0gMDsgLy/lt7Lop6PplIHnmoTmnIDlpKfmraXpqqRcclxuICBASW5wdXQoKSBjb250YWluZXJSZWZJZDtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcclxuICAgICAgc3RlcC5kaXNwbGF5VGl0bGUgPSB0aGlzLmNmLnNldE1pZGRsZUVsbGlwc2lzKHN0ZXAubGFiZWwsIDEzMiwgMTIpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN5bmNVbmxvY2tlZFN0ZXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja0J0blNob3codHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJjdXJyZW50U3RlcFwiXSAmJiAhY2hhbmdlc1tcImN1cnJlbnRTdGVwXCJdLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc3luY1VubG9ja2VkU3RlcCgpO1xyXG4gICAgICAvLyDlvZPlpJbpg6jkvKDlhaXnmoQgY3VycmVudFN0ZXAg5Y+Y5YyW5pe277yM5rua5Yqo5Yiw5a+55bqU5q2l6aqkXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGFuZ2VzW1wic3RlcHNcIl0gJiYgY2hhbmdlc1tcInN0ZXBzXCJdLmN1cnJlbnRWYWx1ZSkgfHxcclxuICAgICAgY2hhbmdlc1tcImN1cnJlbnRTdGVwXCJdXHJcbiAgICApIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrQnRuU2hvdygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOWQjOatpXVubG9ja2VkU3RlcOeahOacgOWkp+WAvFxyXG4gIHByaXZhdGUgc3luY1VubG9ja2VkU3RlcCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwID4gdGhpcy51bmxvY2tlZFN0ZXApIHtcclxuICAgICAgdGhpcy51bmxvY2tlZFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGVwQ2xpY2soc3RlcDogU3RlcEl0ZW0sIGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoc3RlcC5zdGVwIDw9IHRoaXMudW5sb2NrZWRTdGVwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwLnN0ZXA7XHJcbiAgICAgIHRoaXMuc3RlcENsaWNrLmVtaXQoc3RlcCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoaW5kZXgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsVG9TdGVwKGluZGV4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMubWVudSB8fCAhdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtZW51RWwgPSB0aGlzLm1lbnUubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGl0ZW1zID0gbWVudUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc3RlcFwiKTtcclxuICAgIGNvbnN0IHRhcmdldEluZGV4ID1cclxuICAgICAgdHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiXHJcbiAgICAgICAgPyBpbmRleFxyXG4gICAgICAgIDogdGhpcy5zdGVwcy5maW5kSW5kZXgoKHMpID0+IHMuc3RlcCA9PT0gdGhpcy5jdXJyZW50U3RlcCk7XHJcblxyXG4gICAgaWYgKHRhcmdldEluZGV4IDwgMCB8fCB0YXJnZXRJbmRleCA+PSBpdGVtcy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGl0ZW1zW3RhcmdldEluZGV4XSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvL+iOt+WPluebuOWvueS9jee9rlxyXG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgLy8g6K6h566X5YWD57Sg55u45a+55LqO5a655Zmo55qE5L2N572uXHJcbiAgICBjb25zdCBlbGVtZW50UmVsYXRpdmVMZWZ0ID1cclxuICAgICAgZWxlbWVudFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIG1lbnVFbC5zY3JvbGxMZWZ0O1xyXG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gZWxlbWVudFJlY3Qud2lkdGg7XHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IG1lbnVFbC5jbGllbnRXaWR0aDtcclxuXHJcbiAgICAvLyDorqHnrpflhYPntKDkuK3lv4Pngrnnm7jlr7nkuo7lrrnlmajnmoTkvY3nva5cclxuICAgIGNvbnN0IGVsZW1lbnRDZW50ZXIgPSBlbGVtZW50UmVsYXRpdmVMZWZ0ICsgZWxlbWVudFdpZHRoIC8gMjtcclxuXHJcbiAgICAvLyDnm67moIfmu5rliqjkvY3nva7vvJrorqnlhYPntKDkuK3lv4Plh7rnjrDlnKjlj6/op4bljLrln5/kuK3lv4NcclxuICAgIGNvbnN0IHNjcm9sbFRhcmdldCA9IGVsZW1lbnRDZW50ZXIgLSBjb250YWluZXJXaWR0aCAvIDI7XHJcblxyXG4gICAgLy8g6ZmQ5Yi25Zyo5pyJ5pWI5rua5Yqo6IyD5Zu05YaFXHJcbiAgICBjb25zdCBtYXhTY3JvbGwgPSBNYXRoLm1heCgwLCBtZW51RWwuc2Nyb2xsV2lkdGggLSBjb250YWluZXJXaWR0aCk7XHJcbiAgICBjb25zdCBmaW5hbFRhcmdldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNjcm9sbFRhcmdldCwgbWF4U2Nyb2xsKSk7XHJcblxyXG4gICAgbWVudUVsLnNjcm9sbFRvKHsgbGVmdDogZmluYWxUYXJnZXQsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgdGhpcy5vblNjcm9sbCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jaGVja0J0blNob3coKTtcclxuICB9XHJcblxyXG4gIGNoZWNrQnRuU2hvdyhpbml0PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLm1lbnUgfHwgIXRoaXMubWVudS5uYXRpdmVFbGVtZW50KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbWVudUVsID0gdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCB7IHNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCB9ID0gbWVudUVsO1xyXG5cclxuICAgIC8vIOWIpOaWreaYr+WQpumcgOimgeaYvuekuua7muWKqOaMiemSrlxyXG4gICAgbGV0IHRocmVzaG9sZCA9IGNsaWVudFdpZHRoO1xyXG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmSWQpIHtcclxuICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb250YWluZXJSZWZJZCk7XHJcbiAgICAgIGlmIChjb250YWluZXJSZWYpIHtcclxuICAgICAgICB0aHJlc2hvbGQgPSBNYXRoLm1heChjb250YWluZXJSZWYub2Zmc2V0V2lkdGggKiAwLjgsIDQwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dCdG4gPSBzY3JvbGxXaWR0aCA+IHRocmVzaG9sZDtcclxuXHJcbiAgICAvLyDliJ3lp4vljJbml7bmu5rliqjliLDlvZPliY3mraXpqqRcclxuICAgIGlmIChpbml0KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb1N0ZXAoKSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vblNjcm9sbCgpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIHNjcm9sbExlZnQoKSB7XHJcbiAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IHRoaXMubWVudS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgZGlzID0gc2Nyb2xsTGVmdCAvIDEwMCA8IDIgPyBzY3JvbGxMZWZ0ICsgMTAgOiAxMDA7XHJcbiAgICB0aGlzLm1lbnUubmF0aXZlRWxlbWVudC5zY3JvbGxCeSh7IGxlZnQ6IC1kaXMsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gIH1cclxuICBzY3JvbGxSaWdodCgpIHtcclxuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoIH0gPSB0aGlzLm1lbnUubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IHJlc3QgPSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gc2Nyb2xsTGVmdDtcclxuICAgIGNvbnN0IGRpcyA9IHJlc3QgLyAxMDAgPCAyID8gcmVzdCArIDEwIDogMTAwO1xyXG4gICAgdGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoeyBsZWZ0OiBkaXMsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0J0biA9IGZhbHNlO1xyXG4gIGlzQXRTdGFydCA9IHRydWU7XHJcbiAgaXNBdEVuZCA9IGZhbHNlO1xyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggfSA9IHRoaXMubWVudS5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5pc0F0U3RhcnQgPSBzY3JvbGxMZWZ0IDw9IDE7XHJcbiAgICB0aGlzLmlzQXRFbmQgPSBzY3JvbGxMZWZ0ICsgY2xpZW50V2lkdGggPj0gc2Nyb2xsV2lkdGggLSAxO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==