@matechat/ng 0.0.1-alpha.1 → 17.1.0-alpha.1
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/README.md +207 -44
- package/fesm2022/matechat-ng.mjs +244 -153
- package/fesm2022/matechat-ng.mjs.map +1 -1
- package/index.d.ts +621 -3
- package/package.json +18 -5
- package/Base/base.component.d.ts +0 -11
- package/Bubble/avatar/avatar.component.d.ts +0 -23
- package/Bubble/avatar-body-icon/avatar-body-icon.component.d.ts +0 -7
- package/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.d.ts +0 -7
- package/Bubble/bubble-loading/bubble-loading.component.d.ts +0 -5
- package/Bubble/bubble.component.d.ts +0 -26
- package/Bubble/bubble.module.d.ts +0 -10
- package/Bubble/index.d.ts +0 -6
- package/Input/button/button.component.d.ts +0 -31
- package/Input/index.d.ts +0 -2
- package/Input/input.component.d.ts +0 -65
- package/Input/input.module.d.ts +0 -11
- package/Input/send-icon/send-icon.component.d.ts +0 -5
- package/Locale/index.d.ts +0 -5
- package/Locale/locale.module.d.ts +0 -17
- package/Locale/locale.service.d.ts +0 -50
- package/Locale/translate.pipe.d.ts +0 -23
- package/MarkdownCard/code-block.component.d.ts +0 -46
- package/MarkdownCard/index.d.ts +0 -3
- package/MarkdownCard/markdown-card.component.d.ts +0 -198
- package/MarkdownCard/markdown-card.module.d.ts +0 -13
- package/components-common/Base/foundation.d.ts +0 -45
- package/components-common/Bubble/common/bubble-constants.d.ts +0 -4
- package/components-common/Bubble/common/bubble-types.d.ts +0 -12
- package/components-common/Bubble/foundation.d.ts +0 -9
- package/components-common/Input/button-foundation.d.ts +0 -15
- package/components-common/Input/common/types.d.ts +0 -16
- package/components-common/Input/foundation.d.ts +0 -20
- package/components-common/Locale/lang/en-us.d.ts +0 -26
- package/components-common/Locale/lang/zh-cn.d.ts +0 -26
- package/components-common/MarkdownCard/codeblock-foundation.d.ts +0 -20
- package/components-common/MarkdownCard/common/MDCardService.d.ts +0 -14
- package/components-common/MarkdownCard/common/MermaidService.d.ts +0 -23
- package/components-common/MarkdownCard/common/mdCard.types.d.ts +0 -56
- package/components-common/MarkdownCard/common/parser.d.ts +0 -150
- package/components-common/MarkdownCard/foundation.d.ts +0 -38
- package/esm2022/Base/base.component.mjs +0 -47
- package/esm2022/Bubble/avatar/avatar.component.mjs +0 -121
- package/esm2022/Bubble/avatar-body-icon/avatar-body-icon.component.mjs +0 -19
- package/esm2022/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.mjs +0 -19
- package/esm2022/Bubble/bubble-loading/bubble-loading.component.mjs +0 -11
- package/esm2022/Bubble/bubble.component.mjs +0 -89
- package/esm2022/Bubble/bubble.module.mjs +0 -36
- package/esm2022/Bubble/index.mjs +0 -7
- package/esm2022/Input/button/button.component.mjs +0 -83
- package/esm2022/Input/index.mjs +0 -3
- package/esm2022/Input/input.component.mjs +0 -285
- package/esm2022/Input/input.module.mjs +0 -34
- package/esm2022/Input/send-icon/send-icon.component.mjs +0 -11
- package/esm2022/Locale/index.mjs +0 -6
- package/esm2022/Locale/locale.module.mjs +0 -39
- package/esm2022/Locale/locale.service.mjs +0 -140
- package/esm2022/Locale/translate.pipe.mjs +0 -38
- package/esm2022/MarkdownCard/code-block.component.mjs +0 -150
- package/esm2022/MarkdownCard/index.mjs +0 -4
- package/esm2022/MarkdownCard/markdown-card.component.mjs +0 -406
- package/esm2022/MarkdownCard/markdown-card.module.mjs +0 -44
- package/esm2022/components-common/Base/foundation.mjs +0 -66
- package/esm2022/components-common/Bubble/common/bubble-constants.mjs +0 -5
- package/esm2022/components-common/Bubble/common/bubble-types.mjs +0 -2
- package/esm2022/components-common/Bubble/foundation.mjs +0 -30
- package/esm2022/components-common/Input/button-foundation.mjs +0 -33
- package/esm2022/components-common/Input/common/types.mjs +0 -21
- package/esm2022/components-common/Input/foundation.mjs +0 -71
- package/esm2022/components-common/Locale/lang/en-us.mjs +0 -26
- package/esm2022/components-common/Locale/lang/zh-cn.mjs +0 -26
- package/esm2022/components-common/MarkdownCard/codeblock-foundation.mjs +0 -132
- package/esm2022/components-common/MarkdownCard/common/MDCardService.mjs +0 -69
- package/esm2022/components-common/MarkdownCard/common/MermaidService.mjs +0 -222
- package/esm2022/components-common/MarkdownCard/common/mdCard.types.mjs +0 -6
- package/esm2022/components-common/MarkdownCard/common/parser.mjs +0 -194
- package/esm2022/components-common/MarkdownCard/foundation.mjs +0 -84
- package/esm2022/matechat-ng.mjs +0 -5
- package/esm2022/public-api.mjs +0 -8
- package/public-api.d.ts +0 -4
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ViewChild, ContentChild, } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { ButtonComponent } from './button/button.component';
|
|
5
|
-
import { DisplayType, InputVariant, SendBtnVariant, SubmitShortKey, } from '../components-common/Input/common/types';
|
|
6
|
-
import BaseComponent from '../Base/base.component';
|
|
7
|
-
import { InputFoundation, } from '../components-common/Input/foundation';
|
|
8
|
-
import { TranslatePipe } from '../Locale/translate.pipe';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../Locale/locale.service";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
import * as i3 from "@angular/forms";
|
|
13
|
-
// 默认的autosize配置
|
|
14
|
-
const DEFAULT_AUTOSIZE = {
|
|
15
|
-
minRows: 1,
|
|
16
|
-
maxRows: 5
|
|
17
|
-
};
|
|
18
|
-
// 创建一个token用于组件间通信
|
|
19
|
-
export const inputContextToken = 'input-context';
|
|
20
|
-
export class InputComponent extends BaseComponent {
|
|
21
|
-
constructor(localeService) {
|
|
22
|
-
super();
|
|
23
|
-
this.localeService = localeService;
|
|
24
|
-
this.value = '';
|
|
25
|
-
this.placeholder = '';
|
|
26
|
-
this.disabled = false;
|
|
27
|
-
this.displayType = DisplayType.Full;
|
|
28
|
-
this.variant = InputVariant.Bordered;
|
|
29
|
-
this.sendBtnVariant = SendBtnVariant.Full;
|
|
30
|
-
this.loading = false;
|
|
31
|
-
this.showCount = false;
|
|
32
|
-
this.maxLength = null;
|
|
33
|
-
this.submitShortKey = SubmitShortKey.Enter;
|
|
34
|
-
this.autofocus = false;
|
|
35
|
-
this.autosize = false;
|
|
36
|
-
// textarea样式
|
|
37
|
-
this.textareaStyle = {};
|
|
38
|
-
this.change = new EventEmitter();
|
|
39
|
-
this.submit = new EventEmitter();
|
|
40
|
-
this.cancel = new EventEmitter();
|
|
41
|
-
this.focus = new EventEmitter();
|
|
42
|
-
this.blur = new EventEmitter();
|
|
43
|
-
this.headTemplate = null;
|
|
44
|
-
this.prefixTemplate = null;
|
|
45
|
-
this.suffixTemplate = null;
|
|
46
|
-
this.buttonTemplate = null;
|
|
47
|
-
this.extraTemplate = null;
|
|
48
|
-
this.inputValue = '';
|
|
49
|
-
this.lock = false;
|
|
50
|
-
}
|
|
51
|
-
ngOnInit() {
|
|
52
|
-
this.foundation = new InputFoundation(this.adapter);
|
|
53
|
-
this.foundation.init();
|
|
54
|
-
this.inputValue = this.value;
|
|
55
|
-
}
|
|
56
|
-
get adapter() {
|
|
57
|
-
return {
|
|
58
|
-
...super.adapter,
|
|
59
|
-
locale: (key, params) => this.localeService.translate(key, params),
|
|
60
|
-
emitChange: () => {
|
|
61
|
-
this.change.emit(this.inputValue);
|
|
62
|
-
},
|
|
63
|
-
submit: (inputValue) => {
|
|
64
|
-
this.submit.emit(inputValue);
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
onChange(e) {
|
|
69
|
-
e.stopPropagation();
|
|
70
|
-
this.foundation.emitChange();
|
|
71
|
-
}
|
|
72
|
-
ngOnChanges(changes) {
|
|
73
|
-
if (changes['value']) {
|
|
74
|
-
this.inputValue = changes['value']?.currentValue || '';
|
|
75
|
-
// 值变化时更新textarea样式
|
|
76
|
-
this.updateTextareaStyle();
|
|
77
|
-
}
|
|
78
|
-
if (changes['autosize']) {
|
|
79
|
-
// autosize配置变化时更新textarea样式
|
|
80
|
-
this.updateTextareaStyle();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
get inputClasses() {
|
|
84
|
-
return this.foundation.getInputClasses();
|
|
85
|
-
}
|
|
86
|
-
get maxlengthValue() {
|
|
87
|
-
return this.maxLength !== undefined ? this.maxLength : null;
|
|
88
|
-
}
|
|
89
|
-
onInput() {
|
|
90
|
-
if (!this.lock) {
|
|
91
|
-
this.foundation.emitChange();
|
|
92
|
-
// 输入时更新textarea样式
|
|
93
|
-
this.updateTextareaStyle();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
onCompositionStart() {
|
|
97
|
-
this.lock = true;
|
|
98
|
-
}
|
|
99
|
-
onCompositionEnd() {
|
|
100
|
-
this.lock = false;
|
|
101
|
-
this.foundation.emitChange();
|
|
102
|
-
}
|
|
103
|
-
onKeydown(event) {
|
|
104
|
-
this.foundation.onKeydown(event);
|
|
105
|
-
}
|
|
106
|
-
clearInput() {
|
|
107
|
-
this.foundation.clearInput();
|
|
108
|
-
}
|
|
109
|
-
getInput() {
|
|
110
|
-
return this.inputValue;
|
|
111
|
-
}
|
|
112
|
-
// 处理button组件的事件
|
|
113
|
-
onButtonSubmit(value) {
|
|
114
|
-
this.submit.emit(value);
|
|
115
|
-
}
|
|
116
|
-
onButtonCancel() {
|
|
117
|
-
this.cancel.emit();
|
|
118
|
-
}
|
|
119
|
-
onButtonChange(value) {
|
|
120
|
-
this.inputValue = value;
|
|
121
|
-
this.foundation.emitChange();
|
|
122
|
-
}
|
|
123
|
-
ngAfterViewInit() {
|
|
124
|
-
if (this.autofocus && this.textareaElement && !this.disabled) {
|
|
125
|
-
// 在下一个变更检测周期中聚焦,以确保视图已经完全初始化
|
|
126
|
-
setTimeout(() => {
|
|
127
|
-
this.textareaElement.nativeElement.focus();
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
// 初始化时更新textarea样式
|
|
131
|
-
this.updateTextareaStyle();
|
|
132
|
-
}
|
|
133
|
-
// 更新textarea样式
|
|
134
|
-
updateTextareaStyle() {
|
|
135
|
-
if (!this.textareaElement || this.autosize === false) {
|
|
136
|
-
this.textareaStyle = {};
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const config = this.getAutosizeConfig();
|
|
140
|
-
const result = this.computeTextareaHeight(this.textareaElement.nativeElement, config.minRows, config.maxRows);
|
|
141
|
-
this.textareaStyle = {
|
|
142
|
-
...result,
|
|
143
|
-
resize: 'none'
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
// 获取autosize配置
|
|
147
|
-
getAutosizeConfig() {
|
|
148
|
-
return typeof this.autosize === 'boolean'
|
|
149
|
-
? DEFAULT_AUTOSIZE
|
|
150
|
-
: this.autosize;
|
|
151
|
-
}
|
|
152
|
-
// 计算textarea高度
|
|
153
|
-
computeTextareaHeight(targetElement, minRows = 1, maxRows) {
|
|
154
|
-
const style = window.getComputedStyle(targetElement);
|
|
155
|
-
const boxSizing = style.getPropertyValue('box-sizing');
|
|
156
|
-
const paddingSize = Number.parseFloat(style.getPropertyValue('padding-top')) +
|
|
157
|
-
Number.parseFloat(style.getPropertyValue('padding-bottom'));
|
|
158
|
-
const borderSize = Number.parseFloat(style.getPropertyValue('border-top-width')) +
|
|
159
|
-
Number.parseFloat(style.getPropertyValue('border-bottom-width'));
|
|
160
|
-
// 创建临时textarea元素
|
|
161
|
-
const tempTextarea = document.createElement('textarea');
|
|
162
|
-
const sizingStyle = [
|
|
163
|
-
'letter-spacing', 'line-height', 'padding-top', 'padding-bottom',
|
|
164
|
-
'font-family', 'font-weight', 'font-size', 'font-variant',
|
|
165
|
-
'text-rendering', 'text-transform', 'width', 'text-indent',
|
|
166
|
-
'padding-left', 'padding-right', 'border-width', 'box-sizing',
|
|
167
|
-
'word-break', 'white-space'
|
|
168
|
-
];
|
|
169
|
-
const contextStyle = sizingStyle
|
|
170
|
-
.map(name => `${name}:${style.getPropertyValue(name)}`)
|
|
171
|
-
.join(';');
|
|
172
|
-
const hiddenStyle = `
|
|
173
|
-
min-height:0 !important;
|
|
174
|
-
max-height:none !important;
|
|
175
|
-
height:0 !important;
|
|
176
|
-
visibility:hidden !important;
|
|
177
|
-
overflow:hidden !important;
|
|
178
|
-
position:absolute !important;
|
|
179
|
-
z-index:-1000 !important;
|
|
180
|
-
top:0 !important;
|
|
181
|
-
right:0 !important;
|
|
182
|
-
pointer-events:none !important;
|
|
183
|
-
`;
|
|
184
|
-
tempTextarea.setAttribute('style', `${contextStyle};${hiddenStyle}`);
|
|
185
|
-
tempTextarea.value = targetElement.value || targetElement.placeholder || '';
|
|
186
|
-
document.body.appendChild(tempTextarea);
|
|
187
|
-
let height = tempTextarea.scrollHeight;
|
|
188
|
-
const result = {
|
|
189
|
-
height: `${height}px`
|
|
190
|
-
};
|
|
191
|
-
if (minRows !== undefined || maxRows !== undefined) {
|
|
192
|
-
tempTextarea.value = ' ';
|
|
193
|
-
const singleRowHeight = tempTextarea.scrollHeight - paddingSize;
|
|
194
|
-
if (minRows !== undefined) {
|
|
195
|
-
let minHeight = singleRowHeight * minRows;
|
|
196
|
-
if (boxSizing === 'border-box') {
|
|
197
|
-
minHeight = minHeight + paddingSize + borderSize;
|
|
198
|
-
}
|
|
199
|
-
height = Math.max(minHeight, height);
|
|
200
|
-
result['minHeight'] = `${minHeight}px`;
|
|
201
|
-
}
|
|
202
|
-
if (maxRows !== undefined) {
|
|
203
|
-
let maxHeight = singleRowHeight * maxRows;
|
|
204
|
-
if (boxSizing === 'border-box') {
|
|
205
|
-
maxHeight = maxHeight + paddingSize + borderSize;
|
|
206
|
-
}
|
|
207
|
-
if (height > maxHeight) {
|
|
208
|
-
height = maxHeight;
|
|
209
|
-
result['overflowY'] = 'auto';
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
document.body.removeChild(tempTextarea);
|
|
214
|
-
result['height'] = `${height}px`;
|
|
215
|
-
return result;
|
|
216
|
-
}
|
|
217
|
-
get placeholderText() {
|
|
218
|
-
return this.foundation.getPlaceholderText();
|
|
219
|
-
}
|
|
220
|
-
onFocus(event) {
|
|
221
|
-
this.focus.emit(event);
|
|
222
|
-
}
|
|
223
|
-
onBlur(event) {
|
|
224
|
-
this.blur.emit(event);
|
|
225
|
-
}
|
|
226
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: InputComponent, isStandalone: true, selector: "mc-input", inputs: { value: "value", placeholder: "placeholder", disabled: "disabled", displayType: "displayType", variant: "variant", sendBtnVariant: "sendBtnVariant", loading: "loading", showCount: "showCount", maxLength: "maxLength", submitShortKey: "submitShortKey", autofocus: "autofocus", autosize: "autosize" }, outputs: { change: "change", submit: "submit", cancel: "cancel", focus: "focus", blur: "blur" }, providers: [{ provide: inputContextToken, useExisting: InputComponent }], queries: [{ propertyName: "headTemplate", first: true, predicate: ["head"], descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "buttonTemplate", first: true, predicate: ["button"], descendants: true }, { propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [ngStyle]=\"textareaStyle\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "mc-button", inputs: ["disabled", "loading", "inputValue", "sendBtnVariant"], outputs: ["submit", "cancel", "change"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
228
|
-
}
|
|
229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputComponent, decorators: [{
|
|
230
|
-
type: Component,
|
|
231
|
-
args: [{ selector: 'mc-input', standalone: true, imports: [CommonModule, FormsModule, ButtonComponent, TranslatePipe], providers: [{ provide: inputContextToken, useExisting: InputComponent }], template: "<div [ngClass]=\"inputClasses\">\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n <div class=\"mc-input-content\">\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n <textarea\n #textarea\n [(ngModel)]=\"inputValue\"\n [placeholder]=\"placeholderText\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxLength\"\n class=\"mc-textarea\"\n [ngClass]=\"{\n 'mc-textarea-simple': displayType === 'simple',\n 'mc-textarea-disabled': disabled\n }\"\n [ngStyle]=\"textareaStyle\"\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n [attr.aria-disabled]=\"disabled\"\n (input)=\"onInput()\"\n (change)=\"onChange($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n <ng-container *ngIf=\"displayType === 'simple'\">\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n <ng-container\n *ngIf=\"buttonTemplate; then buttonTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n <div class=\"mc-input-foot-left\">\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n </span>\n </div>\n\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n <mc-button\n [disabled]=\"disabled || (!loading && !inputValue)\"\n [loading]=\"loading\"\n [inputValue]=\"inputValue\"\n [sendBtnVariant]=\"sendBtnVariant\"\n (submit)=\"onButtonSubmit($event)\"\n (cancel)=\"onButtonCancel()\"\n (change)=\"onButtonChange($event)\"\n ></mc-button>\n </ng-template>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";body[ui-theme=infinity-theme]{--mc-text: #aeaeae;--mc-box-shadow: rgba(25, 25, 25, .06)}body[ui-theme=galaxy-theme]{--mc-text: #4e5057;--mc-box-shadow: rgba(206, 209, 219, .06)}.mc-input{display:flex;flex-direction:column;width:100%;padding:12px 0;border:1px solid var(--devui-form-control-line, #d7d8da);border-radius:16px;box-sizing:border-box;background-color:var(--devui-base-bg, #ffffff)}.mc-input.mc-input-simple{border-radius:24px}.mc-input.mc-input-simple .mc-input-content{padding:0 20px}.mc-input.mc-input-borderless{border:none;box-shadow:0 1px 8px 0 var(--mc-box-shadow, rgba(25, 25, 25, .06))}.mc-input.mc-input-disabled{background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-input .mc-input-content{display:flex;align-items:flex-end;padding:0 16px}.mc-input .mc-input-foot{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 16px}.mc-input .mc-input-foot .mc-input-foot-left{flex:1;height:100%;display:flex;align-items:center}.mc-input .mc-input-foot .mc-input-foot-left .mc-input-foot-count{color:var(--mc-text, #aeaeae);font-size:var(--devui-font-size-sm, 12px)}.mc-textarea{width:100%;height:64px;padding:4px 0;color:var(--devui-text, #252b3a);font-size:var(--devui-font-size, 14px);background-color:var(--devui-form-control-bg, #ffffff);vertical-align:middle;outline:none;box-sizing:border-box;resize:none;border:none}.mc-textarea.mc-textarea-simple{height:32px}.mc-textarea.mc-textarea-disabled{color:var(--devui-disabled-text, #cfd0d3);background-color:var(--devui-disabled-bg, #f5f5f5);cursor:not-allowed}.mc-textarea::placeholder{color:var(--devui-placeholder, #babbc0)}\n"] }]
|
|
232
|
-
}], ctorParameters: () => [{ type: i1.LocaleService }], propDecorators: { value: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], placeholder: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], disabled: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], displayType: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], variant: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], sendBtnVariant: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], loading: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], showCount: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], maxLength: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], submitShortKey: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], autofocus: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], autosize: [{
|
|
255
|
-
type: Input
|
|
256
|
-
}], change: [{
|
|
257
|
-
type: Output
|
|
258
|
-
}], submit: [{
|
|
259
|
-
type: Output
|
|
260
|
-
}], cancel: [{
|
|
261
|
-
type: Output
|
|
262
|
-
}], focus: [{
|
|
263
|
-
type: Output
|
|
264
|
-
}], blur: [{
|
|
265
|
-
type: Output
|
|
266
|
-
}], textareaElement: [{
|
|
267
|
-
type: ViewChild,
|
|
268
|
-
args: ['textarea']
|
|
269
|
-
}], headTemplate: [{
|
|
270
|
-
type: ContentChild,
|
|
271
|
-
args: ['head']
|
|
272
|
-
}], prefixTemplate: [{
|
|
273
|
-
type: ContentChild,
|
|
274
|
-
args: ['prefix']
|
|
275
|
-
}], suffixTemplate: [{
|
|
276
|
-
type: ContentChild,
|
|
277
|
-
args: ['suffix']
|
|
278
|
-
}], buttonTemplate: [{
|
|
279
|
-
type: ContentChild,
|
|
280
|
-
args: ['button']
|
|
281
|
-
}], extraTemplate: [{
|
|
282
|
-
type: ContentChild,
|
|
283
|
-
args: ['extra']
|
|
284
|
-
}] } });
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSx5Q0FBeUMsQ0FBQztBQVdqRCxPQUFPLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBRUwsZUFBZSxHQUNoQixNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFaekQsZ0JBQWdCO0FBQ2hCLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsQ0FBQztDQUNYLENBQUM7QUFVRixtQkFBbUI7QUFDbkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBVWpELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQW1DL0MsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWxDdkMsVUFBSyxHQUFXLEVB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RyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBRWdCLGVBQWU7c0JBQXJDLFNBQVM7dUJBQUMsVUFBVTtnQkFFQyxZQUFZO3NCQUFqQyxZQUFZO3VCQUFDLE1BQU07Z0JBQ0ksY0FBYztzQkFBckMsWUFBWTt1QkFBQyxRQUFRO2dCQUNFLGNBQWM7c0JBQXJDLFlBQVk7dUJBQUMsUUFBUTtnQkFDRSxjQUFjO3NCQUFyQyxZQUFZO3VCQUFDLFFBQVE7Z0JBQ0MsYUFBYTtzQkFBbkMsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRGlzcGxheVR5cGUsXG4gIElucHV0VmFyaWFudCxcbiAgU2VuZEJ0blZhcmlhbnQsXG4gIFN1Ym1pdFNob3J0S2V5LFxufSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9JbnB1dC9jb21tb24vdHlwZXMnO1xuXG4vLyBUZXh0YXJlYUF1dG9TaXpl57G75Z6L5a6a5LmJXG5leHBvcnQgdHlwZSBUZXh0YXJlYUF1dG9TaXplID0geyBtaW5Sb3dzPzogbnVtYmVyOyBtYXhSb3dzPzogbnVtYmVyIH0gfCBib29sZWFuO1xuXG4vLyDpu5jorqTnmoRhdXRvc2l6ZemFjee9rlxuY29uc3QgREVGQVVMVF9BVVRPU0laRSA9IHtcbiAgbWluUm93czogMSxcbiAgbWF4Um93czogNVxufTtcblxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi4vQmFzZS9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJbnB1dEFkYXB0ZXIsXG4gIElucHV0Rm91bmRhdGlvbixcbn0gZnJvbSAnLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvZm91bmRhdGlvbic7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vTG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9Mb2NhbGUvdHJhbnNsYXRlLnBpcGUnO1xuXG4vLyDliJvlu7rkuIDkuKp0b2tlbueUqOS6jue7hOS7tumXtOmAmuS/oVxuZXhwb3J0IGNvbnN0IGlucHV0Q29udGV4dFRva2VuID0gJ2lucHV0LWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYy1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIFRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IGlucHV0Q29udGV4dFRva2VuLCB1c2VFeGlzdGluZzogSW5wdXRDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5VHlwZTogRGlzcGxheVR5cGUgPSBEaXNwbGF5VHlwZS5GdWxsO1xuICBASW5wdXQoKSB2YXJpYW50OiBJbnB1dFZhcmlhbnQgPSBJbnB1dFZhcmlhbnQuQm9yZGVyZWQ7XG4gIEBJbnB1dCgpIHNlbmRCdG5WYXJpYW50OiBTZW5kQnRuVmFyaWFudCA9IFNlbmRCdG5WYXJpYW50LkZ1bGw7XG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0NvdW50OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHN1Ym1pdFNob3J0S2V5OiBTdWJtaXRTaG9ydEtleSB8IG51bGwgfCBzdHJpbmcgPVxuICAgIFN1Ym1pdFNob3J0S2V5LkVudGVyO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b3NpemU6IFRleHRhcmVhQXV0b1NpemUgPSBmYWxzZTtcbiAgXG4gIC8vIHRleHRhcmVh5qC35byPXG4gIHRleHRhcmVhU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCd0ZXh0YXJlYScpIHRleHRhcmVhRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZCgnaGVhZCcpIGhlYWRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdwcmVmaXgnKSBwcmVmaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdzdWZmaXgnKSBzdWZmaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdidXR0b24nKSBidXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgbG9jazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvdW5kYXRpb24gPSBuZXcgSW5wdXRGb3VuZGF0aW9uKHRoaXMuYWRhcHRlcik7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmluaXQoKTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGFkYXB0ZXIoKTogSW5wdXRBZGFwdGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuYWRhcHRlcixcbiAgICAgIGxvY2FsZTogKGtleSwgcGFyYW1zKSA9PiB0aGlzLmxvY2FsZVNlcnZpY2UudHJhbnNsYXRlKGtleSwgcGFyYW1zKSxcbiAgICAgIGVtaXRDaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHN1Ym1pdDogKGlucHV0VmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXQuZW1pdChpbnB1dFZhbHVlKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGUpOiB2b2lkIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZm91bmRhdGlvbi5lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGNoYW5nZXNbJ3ZhbHVlJ10/LmN1cnJlbnRWYWx1ZSB8fCAnJztcbiAgICAgIC8vIOWAvOWPmOWMluaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgICB0aGlzLnVwZGF0ZVRleHRhcmVhU3R5bGUoKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGNoYW5nZXNbJ2F1dG9zaXplJ10pIHtcbiAgICAgIC8vIGF1dG9zaXpl6YWN572u5Y+Y5YyW5pe25pu05pawdGV4dGFyZWHmoLflvI9cbiAgICAgIHRoaXMudXBkYXRlVGV4dGFyZWFTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnB1dENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3VuZGF0aW9uLmdldElucHV0Q2xhc3NlcygpO1xuICB9XG5cbiAgZ2V0IG1heGxlbmd0aFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkID8gdGhpcy5tYXhMZW5ndGggOiBudWxsO1xuICB9XG5cbiAgb25JbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubG9jaykge1xuICAgICAgdGhpcy5mb3VuZGF0aW9uLmVtaXRDaGFuZ2UoKTtcbiAgICAgIC8vIOi+k+WFpeaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgICB0aGlzLnVwZGF0ZVRleHRhcmVhU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbXBvc2l0aW9uU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NrID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ29tcG9zaXRpb25FbmQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NrID0gZmFsc2U7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm91bmRhdGlvbi5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgY2xlYXJJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvdW5kYXRpb24uY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgZ2V0SW5wdXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlO1xuICB9XG5cbiAgLy8g5aSE55CGYnV0dG9u57uE5Lu255qE5LqL5Lu2XG4gIG9uQnV0dG9uU3VibWl0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZvdW5kYXRpb24uZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLnRleHRhcmVhRWxlbWVudCAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLy8g5Zyo5LiL5LiA5Liq5Y+Y5pu05qOA5rWL5ZGo5pyf5Lit6IGa54Sm77yM5Lul56Gu5L+d6KeG5Zu+5bey57uP5a6M5YWo5Yid5aeL5YyWXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMluaXtuabtOaWsHRleHRhcmVh5qC35byPXG4gICAgdGhpcy51cGRhdGVUZXh0YXJlYVN0eWxlKCk7XG4gIH1cbiAgXG4gIC8vIOabtOaWsHRleHRhcmVh5qC35byPXG4gIHVwZGF0ZVRleHRhcmVhU3R5bGUoKSB7XG4gICAgaWYgKCF0aGlzLnRleHRhcmVhRWxlbWVudCB8fCB0aGlzLmF1dG9zaXplID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50ZXh0YXJlYVN0eWxlID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0QXV0b3NpemVDb25maWcoKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbXB1dGVUZXh0YXJlYUhlaWdodChcbiAgICAgIHRoaXMudGV4dGFyZWFFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBjb25maWcubWluUm93cyxcbiAgICAgIGNvbmZpZy5tYXhSb3dzXG4gICAgKTtcbiAgICBcbiAgICB0aGlzLnRleHRhcmVhU3R5bGUgPSB7XG4gICAgICAuLi5yZXN1bHQsXG4gICAgICByZXNpemU6ICdub25lJ1xuICAgIH07XG4gIH1cbiAgXG4gIC8vIOiOt+WPlmF1dG9zaXpl6YWN572uXG4gIHByaXZhdGUgZ2V0QXV0b3NpemVDb25maWcoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmF1dG9zaXplID09PSAnYm9vbGVhbidcbiAgICAgID8gREVGQVVMVF9BVVRPU0laRVxuICAgICAgOiB0aGlzLmF1dG9zaXplO1xuICB9XG4gIFxuICAvLyDorqHnrpd0ZXh0YXJlYemrmOW6plxuICBwcml2YXRlIGNvbXB1dGVUZXh0YXJlYUhlaWdodChcbiAgICB0YXJnZXRFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICAgIG1pblJvd3MgPSAxLFxuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXRFbGVtZW50KTtcbiAgICBjb25zdCBib3hTaXppbmcgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2l6aW5nJyk7XG4gICAgXG4gICAgY29uc3QgcGFkZGluZ1NpemUgPSBcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJykpICtcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykpO1xuICAgIFxuICAgIGNvbnN0IGJvcmRlclNpemUgPSBcbiAgICAgIE51bWJlci5wYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSkgK1xuICAgICAgTnVtYmVyLnBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpKTtcbiAgICBcbiAgICAvLyDliJvlu7rkuLTml7Z0ZXh0YXJlYeWFg+e0oFxuICAgIGNvbnN0IHRlbXBUZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgY29uc3Qgc2l6aW5nU3R5bGUgPSBbXG4gICAgICAnbGV0dGVyLXNwYWNpbmcnLCAnbGluZS1oZWlnaHQnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1ib3R0b20nLFxuICAgICAgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtd2VpZ2h0JywgJ2ZvbnQtc2l6ZScsICdmb250LXZhcmlhbnQnLFxuICAgICAgJ3RleHQtcmVuZGVyaW5nJywgJ3RleHQtdHJhbnNmb3JtJywgJ3dpZHRoJywgJ3RleHQtaW5kZW50JyxcbiAgICAgICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy1yaWdodCcsICdib3JkZXItd2lkdGgnLCAnYm94LXNpemluZycsXG4gICAgICAnd29yZC1icmVhaycsICd3aGl0ZS1zcGFjZSdcbiAgICBdO1xuICAgIFxuICAgIGNvbnN0IGNvbnRleHRTdHlsZSA9IHNpemluZ1N0eWxlXG4gICAgICAubWFwKG5hbWUgPT4gYCR7bmFtZX06JHtzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpfWApXG4gICAgICAuam9pbignOycpO1xuICAgIFxuICAgIGNvbnN0IGhpZGRlblN0eWxlID0gYFxuICAgICAgbWluLWhlaWdodDowICFpbXBvcnRhbnQ7XG4gICAgICBtYXgtaGVpZ2h0Om5vbmUgIWltcG9ydGFudDtcbiAgICAgIGhlaWdodDowICFpbXBvcnRhbnQ7XG4gICAgICB2aXNpYmlsaXR5OmhpZGRlbiAhaW1wb3J0YW50O1xuICAgICAgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgei1pbmRleDotMTAwMCAhaW1wb3J0YW50O1xuICAgICAgdG9wOjAgIWltcG9ydGFudDtcbiAgICAgIHJpZ2h0OjAgIWltcG9ydGFudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudDtcbiAgICBgO1xuICAgIFxuICAgIHRlbXBUZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYCR7Y29udGV4dFN0eWxlfTske2hpZGRlblN0eWxlfWApO1xuICAgIHRlbXBUZXh0YXJlYS52YWx1ZSA9IHRhcmdldEVsZW1lbnQudmFsdWUgfHwgdGFyZ2V0RWxlbWVudC5wbGFjZWhvbGRlciB8fCAnJztcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBUZXh0YXJlYSk7XG4gICAgXG4gICAgbGV0IGhlaWdodCA9IHRlbXBUZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXG4gICAgfTtcbiAgICBcbiAgICBpZiAobWluUm93cyAhPT0gdW5kZWZpbmVkIHx8IG1heFJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGVtcFRleHRhcmVhLnZhbHVlID0gJyAnO1xuICAgICAgY29uc3Qgc2luZ2xlUm93SGVpZ2h0ID0gdGVtcFRleHRhcmVhLnNjcm9sbEhlaWdodCAtIHBhZGRpbmdTaXplO1xuICAgICAgXG4gICAgICBpZiAobWluUm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBtaW5IZWlnaHQgPSBzaW5nbGVSb3dIZWlnaHQgKiBtaW5Sb3dzO1xuICAgICAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICBtaW5IZWlnaHQgPSBtaW5IZWlnaHQgKyBwYWRkaW5nU2l6ZSArIGJvcmRlclNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBoZWlnaHQpO1xuICAgICAgICByZXN1bHRbJ21pbkhlaWdodCddID0gYCR7bWluSGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKG1heFJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gc2luZ2xlUm93SGVpZ2h0ICogbWF4Um93cztcbiAgICAgICAgaWYgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XG4gICAgICAgICAgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0ICsgcGFkZGluZ1NpemUgKyBib3JkZXJTaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgcmVzdWx0WydvdmVyZmxvd1knXSA9ICdhdXRvJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlbXBUZXh0YXJlYSk7XG4gICAgXG4gICAgcmVzdWx0WydoZWlnaHQnXSA9IGAke2hlaWdodH1weGA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlclRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3VuZGF0aW9uLmdldFBsYWNlaG9sZGVyVGV4dCgpO1xuICB9XG5cbiAgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgIHRoaXMuZm9jdXMuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkVGVtcGxhdGU7IHRoZW4gaGVhZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cIm1jLWlucHV0LWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlZml4VGVtcGxhdGU7IHRoZW4gcHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgI3RleHRhcmVhXG4gICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgY2xhc3M9XCJtYy10ZXh0YXJlYVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtYy10ZXh0YXJlYS1zaW1wbGUnOiBkaXNwbGF5VHlwZSA9PT0gJ3NpbXBsZScsXG4gICAgICAgICdtYy10ZXh0YXJlYS1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICB9XCJcbiAgICAgIFtuZ1N0eWxlXT1cInRleHRhcmVhU3R5bGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSW5wdXQuYXJpYUxhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChjb21wb3NpdGlvbnN0YXJ0KT1cIm9uQ29tcG9zaXRpb25TdGFydCgpXCJcbiAgICAgIChjb21wb3NpdGlvbmVuZCk9XCJvbkNvbXBvc2l0aW9uRW5kKClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgPjwvdGV4dGFyZWE+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1ZmZpeFRlbXBsYXRlOyB0aGVuIHN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGUgPT09ICdzaW1wbGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEJ1dHRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgdGhlbiBidXR0b25UZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uPlxuICAgICAgICA8bWMtYnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAgIFtpbnB1dFZhbHVlXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAgIFtzZW5kQnRuVmFyaWFudF09XCJzZW5kQnRuVmFyaWFudFwiXG4gICAgICAgICAgKHN1Ym1pdCk9XCJvbkJ1dHRvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2FuY2VsKT1cIm9uQnV0dG9uQ2FuY2VsKClcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25CdXR0b25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L21jLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ2Z1bGwnXCIgY2xhc3M9XCJtYy1pbnB1dC1mb290XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1jLWlucHV0LWZvb3QtbGVmdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dHJhVGVtcGxhdGU7IHRoZW4gZXh0cmFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzaG93Q291bnRcIiBpZD1cIm1jLWlucHV0LWNvdW50XCIgY2xhc3M9XCJtYy1pbnB1dC1mb290LWNvdW50XCI+XG4gICAgICAgIHt7IGlucHV0VmFsdWUubGVuZ3RoIH19e3sgIW1heExlbmd0aCA/IFwiXCIgOiBcIi9cIiArIG1heExlbmd0aCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ1dHRvblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRGb290ZXJCdXR0b25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25UZW1wbGF0ZTsgdGhlbiBidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3RlckJ1dHRvbj5cbiAgICAgIDxtYy1idXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2lucHV0VmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgIFtzZW5kQnRuVmFyaWFudF09XCJzZW5kQnRuVmFyaWFudFwiXG4gICAgICAgIChzdWJtaXQpPVwib25CdXR0b25TdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChjYW5jZWwpPVwib25CdXR0b25DYW5jZWwoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25CdXR0b25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9tYy1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { InputComponent } from './input.component';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import { ButtonComponent } from './button/button.component';
|
|
6
|
-
import { SendIconComponent } from './send-icon/send-icon.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class InputModule {
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: InputModule, imports: [CommonModule,
|
|
11
|
-
FormsModule,
|
|
12
|
-
ButtonComponent,
|
|
13
|
-
SendIconComponent,
|
|
14
|
-
InputComponent], exports: [InputComponent] }); }
|
|
15
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, imports: [CommonModule,
|
|
16
|
-
FormsModule,
|
|
17
|
-
ButtonComponent,
|
|
18
|
-
InputComponent] }); }
|
|
19
|
-
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InputModule, decorators: [{
|
|
21
|
-
type: NgModule,
|
|
22
|
-
args: [{
|
|
23
|
-
declarations: [],
|
|
24
|
-
imports: [
|
|
25
|
-
CommonModule,
|
|
26
|
-
FormsModule,
|
|
27
|
-
ButtonComponent,
|
|
28
|
-
SendIconComponent,
|
|
29
|
-
InputComponent
|
|
30
|
-
],
|
|
31
|
-
exports: [InputComponent],
|
|
32
|
-
}]
|
|
33
|
-
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQWFwRSxNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsWUFScEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGNBQWMsYUFFTixjQUFjOytHQUViLFdBQVcsWUFScEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBRWYsY0FBYzs7MkZBSUwsV0FBVztrQkFYdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZW5kSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VuZC1pY29uL3NlbmQtaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZW5kSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW5wdXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE1vZHVsZSB7fVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SendIconComponent {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SendIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SendIconComponent, isStandalone: true, selector: "mc-send-icon", ngImport: i0, template: "<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M13.5105149,2.56164948 C14.1211149,2.35546948 14.7829149,2.68328948 14.9892149,3.29376948 C15.0349149,3.42925948 15.0552149,3.57159948 15.0495149,3.71368948 L15.0495149,3.71368948 L15.0351149,3.85546948 L13.6575149,12.2717195 C13.5237149,13.0892195 12.7524149,13.6435195 11.9348149,13.5097195 C11.8542149,13.4965195 11.7751149,13.4768195 11.6980149,13.4508195 L11.6980149,13.4508195 L11.5840149,13.4071195 L9.3049349,12.4260195 L8.4482449,13.5422195 C8.1958049,13.8708195 7.8205549,14.0786195 7.4128449,14.1207195 L7.4128449,14.1207195 L7.2585449,14.1286195 C6.4787649,14.1286195 5.8381349,13.5337195 5.7653849,12.7731195 L5.7653849,12.7731195 L5.7585449,12.6286195 L5.7602549,10.5258195 L5.7756349,10.4384195 L5.7944349,10.3824195 L5.8266649,10.3168995 L5.8735349,10.2503695 L5.9177249,10.2039195 L12.6909149,3.89392948 L2.3403349,7.38903948 C2.2329149,7.42529948 2.1418449,7.49676948 2.0808149,7.59063948 L2.0808149,7.59063948 L2.0412649,7.66497948 C1.9440949,7.89044948 2.0258749,8.14788948 2.2236349,8.27917948 L2.2236349,8.27917948 L2.3029749,8.32214948 L4.4799849,9.26177948 C4.7333949,9.37121948 4.8503449,9.66546948 4.7409649,9.91894948 C4.6435549,10.1443495 4.4003949,10.2616595 4.1694349,10.2081295 L4.1694349,10.2081295 L4.0837449,10.1798795 L1.9072249,9.24047948 C1.1462449,8.91284948 0.795166898,8.03039948 1.1225549,7.26953948 C1.2700249,6.92755948 1.5380849,6.65435948 1.8730449,6.50018948 L1.8730449,6.50018948 L2.0205049,6.44158948 Z M6.7578149,11.3299195 L6.7585449,12.6286195 L6.7666013,12.7185103 C6.80894095,12.9517898 7.0131049,13.1286195 7.2585449,13.1286195 C7.3828149,13.1286195 7.5014649,13.0824195 7.5925349,13.0008195 L7.5925349,13.0008195 L7.6550349,12.9332195 L8.3569349,12.0179195 L6.7578149,11.3299195 Z M13.9888149,4.05090948 L7.1599149,10.4129195 L11.9795149,12.4886195 C11.9980149,12.4966195 12.0173149,12.5035195 12.0369149,12.5093195 L12.0369149,12.5093195 L12.0964149,12.5228195 C12.3386149,12.5624195 12.5686149,12.4209195 12.6482149,12.1975195 L12.6482149,12.1975195 L12.6706149,12.1101195 L13.9888149,4.05090948 Z\"\n ></path>\n </g>\n</svg>\n", styles: [":host{display:contents}:host svg{margin-right:4px}\n"] }); }
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SendIconComponent, decorators: [{
|
|
8
|
-
type: Component,
|
|
9
|
-
args: [{ selector: 'mc-send-icon', standalone: true, template: "<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M13.5105149,2.56164948 C14.1211149,2.35546948 14.7829149,2.68328948 14.9892149,3.29376948 C15.0349149,3.42925948 15.0552149,3.57159948 15.0495149,3.71368948 L15.0495149,3.71368948 L15.0351149,3.85546948 L13.6575149,12.2717195 C13.5237149,13.0892195 12.7524149,13.6435195 11.9348149,13.5097195 C11.8542149,13.4965195 11.7751149,13.4768195 11.6980149,13.4508195 L11.6980149,13.4508195 L11.5840149,13.4071195 L9.3049349,12.4260195 L8.4482449,13.5422195 C8.1958049,13.8708195 7.8205549,14.0786195 7.4128449,14.1207195 L7.4128449,14.1207195 L7.2585449,14.1286195 C6.4787649,14.1286195 5.8381349,13.5337195 5.7653849,12.7731195 L5.7653849,12.7731195 L5.7585449,12.6286195 L5.7602549,10.5258195 L5.7756349,10.4384195 L5.7944349,10.3824195 L5.8266649,10.3168995 L5.8735349,10.2503695 L5.9177249,10.2039195 L12.6909149,3.89392948 L2.3403349,7.38903948 C2.2329149,7.42529948 2.1418449,7.49676948 2.0808149,7.59063948 L2.0808149,7.59063948 L2.0412649,7.66497948 C1.9440949,7.89044948 2.0258749,8.14788948 2.2236349,8.27917948 L2.2236349,8.27917948 L2.3029749,8.32214948 L4.4799849,9.26177948 C4.7333949,9.37121948 4.8503449,9.66546948 4.7409649,9.91894948 C4.6435549,10.1443495 4.4003949,10.2616595 4.1694349,10.2081295 L4.1694349,10.2081295 L4.0837449,10.1798795 L1.9072249,9.24047948 C1.1462449,8.91284948 0.795166898,8.03039948 1.1225549,7.26953948 C1.2700249,6.92755948 1.5380849,6.65435948 1.8730449,6.50018948 L1.8730449,6.50018948 L2.0205049,6.44158948 Z M6.7578149,11.3299195 L6.7585449,12.6286195 L6.7666013,12.7185103 C6.80894095,12.9517898 7.0131049,13.1286195 7.2585449,13.1286195 C7.3828149,13.1286195 7.5014649,13.0824195 7.5925349,13.0008195 L7.5925349,13.0008195 L7.6550349,12.9332195 L8.3569349,12.0179195 L6.7578149,11.3299195 Z M13.9888149,4.05090948 L7.1599149,10.4129195 L11.9795149,12.4886195 C11.9980149,12.4966195 12.0173149,12.5035195 12.0369149,12.5093195 L12.0369149,12.5093195 L12.0964149,12.5228195 C12.3386149,12.5624195 12.5686149,12.4209195 12.6482149,12.1975195 L12.6482149,12.1975195 L12.6706149,12.1101195 L13.9888149,4.05090948 Z\"\n ></path>\n </g>\n</svg>\n", styles: [":host{display:contents}:host svg{margin-right:4px}\n"] }]
|
|
10
|
-
}] });
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0lucHV0L3NlbmQtaWNvbi9zZW5kLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvc2VuZC1pY29uL3NlbmQtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVExQyxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQix3RUNSOUIsK3dFQWFBOzsyRkRMYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtc2VuZC1pY29uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbmQtaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbmQtaWNvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbmRJY29uQ29tcG9uZW50IHtcblxufSIsIjxzdmdcbiAgd2lkdGg9XCIxNnB4XCJcbiAgaGVpZ2h0PVwiMTZweFwiXG4gIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICB2ZXJzaW9uPVwiMS4xXCJcbiAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4+XG4gIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbD1cIm5vbmVcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTMuNTEwNTE0OSwyLjU2MTY0OTQ4IEMxNC4xMjExMTQ5LDIuMzU1NDY5NDggMTQuNzgyOTE0OSwyLjY4MzI4OTQ4IDE0Ljk4OTIxNDksMy4yOTM3Njk0OCBDMTUuMDM0OTE0OSwzLjQyOTI1OTQ4IDE1LjA1NTIxNDksMy41NzE1OTk0OCAxNS4wNDk1MTQ5LDMuNzEzNjg5NDggTDE1LjA0OTUxNDksMy43MTM2ODk0OCBMMTUuMDM1MTE0OSwzLjg1NTQ2OTQ4IEwxMy42NTc1MTQ5LDEyLjI3MTcxOTUgQzEzLjUyMzcxNDksMTMuMDg5MjE5NSAxMi43NTI0MTQ5LDEzLjY0MzUxOTUgMTEuOTM0ODE0OSwxMy41MDk3MTk1IEMxMS44NTQyMTQ5LDEzLjQ5NjUxOTUgMTEuNzc1MTE0OSwxMy40NzY4MTk1IDExLjY5ODAxNDksMTMuNDUwODE5NSBMMTEuNjk4MDE0OSwxMy40NTA4MTk1IEwxMS41ODQwMTQ5LDEzLjQwNzExOTUgTDkuMzA0OTM0OSwxMi40MjYwMTk1IEw4LjQ0ODI0NDksMTMuNTQyMjE5NSBDOC4xOTU4MDQ5LDEzLjg3MDgxOTUgNy44MjA1NTQ5LDE0LjA3ODYxOTUgNy40MTI4NDQ5LDE0LjEyMDcxOTUgTDcuNDEyODQ0OSwxNC4xMjA3MTk1IEw3LjI1ODU0NDksMTQuMTI4NjE5NSBDNi40Nzg3NjQ5LDE0LjEyODYxOTUgNS44MzgxMzQ5LDEzLjUzMzcxOTUgNS43NjUzODQ5LDEyLjc3MzExOTUgTDUuNzY1Mzg0OSwxMi43NzMxMTk1IEw1Ljc1ODU0NDksMTIuNjI4NjE5NSBMNS43NjAyNTQ5LDEwLjUyNTgxOTUgTDUuNzc1NjM0OSwxMC40Mzg0MTk1IEw1Ljc5NDQzNDksMTAuMzgyNDE5NSBMNS44MjY2NjQ5LDEwLjMxNjg5OTUgTDUuODczNTM0OSwxMC4yNTAzNjk1IEw1LjkxNzcyNDksMTAuMjAzOTE5NSBMMTIuNjkwOTE0OSwzLjg5MzkyOTQ4IEwyLjM0MDMzNDksNy4zODkwMzk0OCBDMi4yMzI5MTQ5LDcuNDI1Mjk5NDggMi4xNDE4NDQ5LDcuNDk2NzY5NDggMi4wODA4MTQ5LDcuNTkwNjM5NDggTDIuMDgwODE0OSw3LjU5MDYzOTQ4IEwyLjA0MTI2NDksNy42NjQ5Nzk0OCBDMS45NDQwOTQ5LDcuODkwNDQ5NDggMi4wMjU4NzQ5LDguMTQ3ODg5NDggMi4yMjM2MzQ5LDguMjc5MTc5NDggTDIuMjIzNjM0OSw4LjI3OTE3OTQ4IEwyLjMwMjk3NDksOC4zMjIxNDk0OCBMNC40Nzk5ODQ5LDkuMjYxNzc5NDggQzQuNzMzMzk0OSw5LjM3MTIxOTQ4IDQuODUwMzQ0OSw5LjY2NTQ2OTQ4IDQuNzQwOTY0OSw5LjkxODk0OTQ4IEM0LjY0MzU1NDksMTAuMTQ0MzQ5NSA0LjQwMDM5NDksMTAuMjYxNjU5NSA0LjE2OTQzNDksMTAuMjA4MTI5NSBMNC4xNjk0MzQ5LDEwLjIwODEyOTUgTDQuMDgzNzQ0OSwxMC4xNzk4Nzk1IEwxLjkwNzIyNDksOS4yNDA0Nzk0OCBDMS4xNDYyNDQ5LDguOTEyODQ5NDggMC43OTUxNjY4OTgsOC4wMzAzOTk0OCAxLjEyMjU1NDksNy4yNjk1Mzk0OCBDMS4yNzAwMjQ5LDYuOTI3NTU5NDggMS41MzgwODQ5LDYuNjU0MzU5NDggMS44NzMwNDQ5LDYuNTAwMTg5NDggTDEuODczMDQ0OSw2LjUwMDE4OTQ4IEwyLjAyMDUwNDksNi40NDE1ODk0OCBaIE02Ljc1NzgxNDksMTEuMzI5OTE5NSBMNi43NTg1NDQ5LDEyLjYyODYxOTUgTDYuNzY2NjAxMywxMi43MTg1MTAzIEM2LjgwODk0MDk1LDEyLjk1MTc4OTggNy4wMTMxMDQ5LDEzLjEyODYxOTUgNy4yNTg1NDQ5LDEzLjEyODYxOTUgQzcuMzgyODE0OSwxMy4xMjg2MTk1IDcuNTAxNDY0OSwxMy4wODI0MTk1IDcuNTkyNTM0OSwxMy4wMDA4MTk1IEw3LjU5MjUzNDksMTMuMDAwODE5NSBMNy42NTUwMzQ5LDEyLjkzMzIxOTUgTDguMzU2OTM0OSwxMi4wMTc5MTk1IEw2Ljc1NzgxNDksMTEuMzI5OTE5NSBaIE0xMy45ODg4MTQ5LDQuMDUwOTA5NDggTDcuMTU5OTE0OSwxMC40MTI5MTk1IEwxMS45Nzk1MTQ5LDEyLjQ4ODYxOTUgQzExLjk5ODAxNDksMTIuNDk2NjE5NSAxMi4wMTczMTQ5LDEyLjUwMzUxOTUgMTIuMDM2OTE0OSwxMi41MDkzMTk1IEwxMi4wMzY5MTQ5LDEyLjUwOTMxOTUgTDEyLjA5NjQxNDksMTIuNTIyODE5NSBDMTIuMzM4NjE0OSwxMi41NjI0MTk1IDEyLjU2ODYxNDksMTIuNDIwOTE5NSAxMi42NDgyMTQ5LDEyLjE5NzUxOTUgTDEyLjY0ODIxNDksMTIuMTk3NTE5NSBMMTIuNjcwNjE0OSwxMi4xMTAxMTk1IEwxMy45ODg4MTQ5LDQuMDUwOTA5NDggWlwiXG4gICAgPjwvcGF0aD5cbiAgPC9nPlxuPC9zdmc+XG4iXX0=
|
package/esm2022/Locale/index.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// 导出Locale服务
|
|
2
|
-
import { LocaleService } from './locale.service';
|
|
3
|
-
import { LocaleModule } from './locale.module';
|
|
4
|
-
import { TranslatePipe } from './translate.pipe';
|
|
5
|
-
export { LocaleService, LocaleModule, TranslatePipe };
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2pELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5a+85Ye6TG9jYWxl5pyN5YqhXG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbGVNb2R1bGUgfSBmcm9tICcuL2xvY2FsZS5tb2R1bGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRlLnBpcGUnO1xuXG4vLyDph43mlrDlr7zlh7rnsbvlnotcbmV4cG9ydCB0eXBlIHsgTGFuZ3VhZ2VDb2RlLCBMb2NhbGVEYXRhIH0gZnJvbSAnLi9sb2NhbGUuc2VydmljZSc7XG5cbmV4cG9ydCB7XG4gIExvY2FsZVNlcnZpY2UsXG4gIExvY2FsZU1vZHVsZSxcbiAgVHJhbnNsYXRlUGlwZVxufTsiXX0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { LocaleService } from './locale.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class LocaleModule {
|
|
5
|
-
/**
|
|
6
|
-
* 静态方法,用于配置模块并提供服务
|
|
7
|
-
* 可以在AppModule中使用LocaleModule.forRoot()来初始化
|
|
8
|
-
*/
|
|
9
|
-
static forRoot() {
|
|
10
|
-
return {
|
|
11
|
-
ngModule: LocaleModule,
|
|
12
|
-
providers: [
|
|
13
|
-
LocaleService
|
|
14
|
-
]
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* 普通导入方法,用于特性模块中导入
|
|
19
|
-
* 避免服务被多次实例化
|
|
20
|
-
*/
|
|
21
|
-
static forChild() {
|
|
22
|
-
return {
|
|
23
|
-
ngModule: LocaleModule,
|
|
24
|
-
providers: [] // 子模块不提供服务实例
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule }); }
|
|
29
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule }); }
|
|
30
|
-
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleModule, decorators: [{
|
|
32
|
-
type: NgModule,
|
|
33
|
-
args: [{
|
|
34
|
-
declarations: [],
|
|
35
|
-
imports: [],
|
|
36
|
-
exports: []
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0xvY2FsZS9sb2NhbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLFlBQVk7SUFDdkI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNULGFBQWE7YUFDZDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxhQUFhO1NBQzVCLENBQUM7SUFDSixDQUFDOzhHQXZCVSxZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJy4vbG9jYWxlLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlTW9kdWxlIHtcbiAgLyoqXG4gICAqIOmdmeaAgeaWueazle+8jOeUqOS6jumFjee9ruaooeWdl+W5tuaPkOS+m+acjeWKoVxuICAgKiDlj6/ku6XlnKhBcHBNb2R1bGXkuK3kvb/nlKhMb2NhbGVNb2R1bGUuZm9yUm9vdCgp5p2l5Yid5aeL5YyWXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTG9jYWxlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIExvY2FsZVNlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOaZrumAmuWvvOWFpeaWueazle+8jOeUqOS6jueJueaAp+aooeWdl+S4reWvvOWFpVxuICAgKiDpgb/lhY3mnI3liqHooqvlpJrmrKHlrp7kvovljJZcbiAgICovXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTG9jYWxlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXSAvLyDlrZDmqKHlnZfkuI3mj5DkvpvmnI3liqHlrp7kvotcbiAgICB9O1xuICB9XG59Il19
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import zhCN from '../components-common/Locale/lang/zh-cn';
|
|
4
|
-
import enUS from '../components-common/Locale/lang/en-us';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class LocaleService {
|
|
7
|
-
constructor() {
|
|
8
|
-
// 当前语言
|
|
9
|
-
this._currentLanguage = 'zh-cn';
|
|
10
|
-
// 语言包存储
|
|
11
|
-
this._localeData = new Map();
|
|
12
|
-
// 语言变更通知
|
|
13
|
-
this._languageChange = new Subject();
|
|
14
|
-
// 公开语言变更Observable
|
|
15
|
-
this.languageChange$ = this._languageChange.asObservable();
|
|
16
|
-
// 首先尝试从localStorage获取语言设置
|
|
17
|
-
const savedLang = localStorage.getItem('lang');
|
|
18
|
-
if (savedLang) {
|
|
19
|
-
this._currentLanguage = savedLang;
|
|
20
|
-
}
|
|
21
|
-
// 初始化默认语言包
|
|
22
|
-
this.loadDefaultLocales();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 加载默认语言包
|
|
26
|
-
*/
|
|
27
|
-
async loadDefaultLocales() {
|
|
28
|
-
try {
|
|
29
|
-
// 动态导入默认语言包
|
|
30
|
-
this._localeData.set('zh-cn', zhCN);
|
|
31
|
-
this._localeData.set('en-us', enUS);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
console.error('Failed to load default locales:', error);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 设置当前语言
|
|
39
|
-
*/
|
|
40
|
-
setLanguage(language) {
|
|
41
|
-
if (this._currentLanguage !== language) {
|
|
42
|
-
this._currentLanguage = language;
|
|
43
|
-
// 保存到localStorage
|
|
44
|
-
localStorage.setItem('lang', language);
|
|
45
|
-
this._languageChange.next(language);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 获取当前语言
|
|
50
|
-
*/
|
|
51
|
-
getLanguage() {
|
|
52
|
-
return this._currentLanguage;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 翻译文本
|
|
56
|
-
* @param key 翻译键,支持嵌套路径如 'Input.send'
|
|
57
|
-
* @param params 替换参数
|
|
58
|
-
*/
|
|
59
|
-
translate(key, params) {
|
|
60
|
-
if (!key)
|
|
61
|
-
return key;
|
|
62
|
-
// 获取当前语言的语言包
|
|
63
|
-
const localeData = this._localeData.get(this._currentLanguage) || {};
|
|
64
|
-
// 解析嵌套键
|
|
65
|
-
const keys = key.split('.');
|
|
66
|
-
let value = localeData;
|
|
67
|
-
for (const k of keys) {
|
|
68
|
-
if (value && typeof value === 'object' && k in value) {
|
|
69
|
-
value = value[k];
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
// 如果键不存在,返回原始键
|
|
73
|
-
return key;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// 处理替换参数
|
|
77
|
-
if (typeof value === 'string' && params) {
|
|
78
|
-
let result = value;
|
|
79
|
-
for (const [paramKey, paramValue] of Object.entries(params)) {
|
|
80
|
-
const regex = new RegExp(`\\{${paramKey}\\}`, 'g');
|
|
81
|
-
result = result.replace(regex, String(paramValue));
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* 添加新的语言
|
|
89
|
-
*/
|
|
90
|
-
addLanguage(language, localeData) {
|
|
91
|
-
this._localeData.set(language, localeData);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 覆盖现有语言的部分翻译
|
|
95
|
-
*/
|
|
96
|
-
overrideLocale(language, localeData) {
|
|
97
|
-
if (this._localeData.has(language)) {
|
|
98
|
-
const existingLocale = this._localeData.get(language) || {};
|
|
99
|
-
// 深度合并语言包
|
|
100
|
-
const mergedLocale = this.deepMerge(existingLocale, localeData);
|
|
101
|
-
this._localeData.set(language, mergedLocale);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
// 如果语言不存在,则添加新语言
|
|
105
|
-
this.addLanguage(language, localeData);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* 获取所有支持的语言
|
|
110
|
-
*/
|
|
111
|
-
getSupportedLanguages() {
|
|
112
|
-
return Array.from(this._localeData.keys());
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 深度合并对象
|
|
116
|
-
*/
|
|
117
|
-
deepMerge(target, source) {
|
|
118
|
-
const result = { ...target };
|
|
119
|
-
for (const key in source) {
|
|
120
|
-
if (source.hasOwnProperty(key)) {
|
|
121
|
-
if (source[key] instanceof Object && key in target) {
|
|
122
|
-
result[key] = this.deepMerge(target[key], source[key]);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
result[key] = source[key];
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return result;
|
|
130
|
-
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
132
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, providedIn: 'root' }); }
|
|
133
|
-
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocaleService, decorators: [{
|
|
135
|
-
type: Injectable,
|
|
136
|
-
args: [{
|
|
137
|
-
providedIn: 'root'
|
|
138
|
-
}]
|
|
139
|
-
}], ctorParameters: () => [] });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9Mb2NhbGUvbG9jYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sSUFBSSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFELE9BQU8sSUFBSSxNQUFNLHdDQUF3QyxDQUFDOztBQWExRCxNQUFNLE9BQU8sYUFBYTtJQVV4QjtRQVRBLE9BQU87UUFDQyxxQkFBZ0IsR0FBaUIsT0FBTyxDQUFDO1FBQ2pELFFBQVE7UUFDQSxnQkFBVyxHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9ELFNBQVM7UUFDRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3RELG1CQUFtQjtRQUNuQixvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEQsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELFdBQVc7UUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQztZQUNILFlBQVk7WUFFWixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FB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QkFBaUI7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVztRQUN4QyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0F6SVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgemhDTiBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy96aC1jbic7XG5pbXBvcnQgZW5VUyBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9Mb2NhbGUvbGFuZy9lbi11cyc7XG5cbi8vIOWumuS5ieivreiogOWMheaOpeWPo1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbGVEYXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyDlrprkuYnmlK/mjIHnmoTor63oqIDnsbvlnotcbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZSA9ICd6aC1jbicgfCAnZW4tdXMnIHwgc3RyaW5nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcbiAgLy8g5b2T5YmN6K+t6KiAXG4gIHByaXZhdGUgX2N1cnJlbnRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlID0gJ3poLWNuJztcbiAgLy8g6K+t6KiA5YyF5a2Y5YKoXG4gIHByaXZhdGUgX2xvY2FsZURhdGE6IE1hcDxMYW5ndWFnZUNvZGUsIExvY2FsZURhdGE+ID0gbmV3IE1hcCgpO1xuICAvLyDor63oqIDlj5jmm7TpgJrnn6VcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgU3ViamVjdDxMYW5ndWFnZUNvZGU+KCk7XG4gIC8vIOWFrOW8gOivreiogOWPmOabtE9ic2VydmFibGVcbiAgbGFuZ3VhZ2VDaGFuZ2UkID0gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g6aaW5YWI5bCd6K+V5LuObG9jYWxTdG9yYWdl6I635Y+W6K+t6KiA6K6+572uXG4gICAgY29uc3Qgc2F2ZWRMYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKTtcbiAgICBpZiAoc2F2ZWRMYW5nKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBzYXZlZExhbmc7XG4gICAgfVxuICAgIFxuICAgIC8vIOWIneWni+WMlum7mOiupOivreiogOWMhVxuICAgIHRoaXMubG9hZERlZmF1bHRMb2NhbGVzKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L296buY6K6k6K+t6KiA5YyFXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWREZWZhdWx0TG9jYWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8g5Yqo5oCB5a+85YWl6buY6K6k6K+t6KiA5YyFXG5cbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KCd6aC1jbicsIHpoQ04pO1xuICAgICAgdGhpcy5fbG9jYWxlRGF0YS5zZXQoJ2VuLXVzJywgZW5VUyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGRlZmF1bHQgbG9jYWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruW9k+WJjeivreiogFxuICAgKi9cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgIT09IGxhbmd1YWdlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgIC8vIOS/neWtmOWIsGxvY2FsU3RvcmFnZVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCBsYW5ndWFnZSk7XG4gICAgICB0aGlzLl9sYW5ndWFnZUNoYW5nZS5uZXh0KGxhbmd1YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN6K+t6KiAXG4gICAqL1xuICBnZXRMYW5ndWFnZSgpOiBMYW5ndWFnZUNvZGUge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICAvKipcbiAgICog57+76K+R5paH5pysXG4gICAqIEBwYXJhbSBrZXkg57+76K+R6ZSu77yM5pSv5oyB5bWM5aWX6Lev5b6E5aaCICdJbnB1dC5zZW5kJ1xuICAgKiBAcGFyYW0gcGFyYW1zIOabv+aNouWPguaVsFxuICAgKi9cbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleTtcblxuICAgIC8vIOiOt+WPluW9k+WJjeivreiogOeahOivreiogOWMhVxuICAgIGNvbnN0IGxvY2FsZURhdGEgPSB0aGlzLl9sb2NhbGVEYXRhLmdldCh0aGlzLl9jdXJyZW50TGFuZ3VhZ2UpIHx8IHt9O1xuICAgIFxuICAgIC8vIOino+aekOW1jOWll+mUrlxuICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBsZXQgdmFsdWU6IGFueSA9IGxvY2FsZURhdGE7XG4gICAgXG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGsgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOWmguaenOmUruS4jeWtmOWcqO+8jOi/lOWbnuWOn+Wni+mUrlxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWkhOeQhuabv+aNouWPguaVsFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtcykge1xuICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgZm9yIChjb25zdCBbcGFyYW1LZXksIHBhcmFtVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxceyR7cGFyYW1LZXl9XFxcXH1gLCAnZycpO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgU3RyaW5nKHBhcmFtVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDmlrDnmoTor63oqIBcbiAgICovXG4gIGFkZExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZUNvZGUsIGxvY2FsZURhdGE6IExvY2FsZURhdGEpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2NhbGVEYXRhLnNldChsYW5ndWFnZSwgbG9jYWxlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICog6KaG55uW546w5pyJ6K+t6KiA55qE6YOo5YiG57+76K+RXG4gICAqL1xuICBvdmVycmlkZUxvY2FsZShsYW5ndWFnZTogTGFuZ3VhZ2VDb2RlLCBsb2NhbGVEYXRhOiBMb2NhbGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvY2FsZURhdGEuaGFzKGxhbmd1YWdlKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdMb2NhbGUgPSB0aGlzLl9sb2NhbGVEYXRhLmdldChsYW5ndWFnZSkgfHwge307XG4gICAgICAvLyDmt7HluqblkIjlubbor63oqIDljIVcbiAgICAgIGNvbnN0IG1lcmdlZExvY2FsZSA9IHRoaXMuZGVlcE1lcmdlKGV4aXN0aW5nTG9jYWxlLCBsb2NhbGVEYXRhKTtcbiAgICAgIHRoaXMuX2xvY2FsZURhdGEuc2V0KGxhbmd1YWdlLCBtZXJnZWRMb2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzor63oqIDkuI3lrZjlnKjvvIzliJnmt7vliqDmlrDor63oqIBcbiAgICAgIHRoaXMuYWRkTGFuZ3VhZ2UobGFuZ3VhZ2UsIGxvY2FsZURhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInmlK/mjIHnmoTor63oqIBcbiAgICovXG4gIGdldFN1cHBvcnRlZExhbmd1YWdlcygpOiBMYW5ndWFnZUNvZGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbG9jYWxlRGF0YS5rZXlzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOa3seW6puWQiOW5tuWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLnRhcmdldCB9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiBrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmRlZXBNZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSJdfQ==
|