@simpleangularcontrols/sac-common 10.0.0-rc.29 → 10.0.0-rc.30
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/bundles/simpleangularcontrols-sac-common.umd.js +1848 -1249
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
- package/common/basedatetimecontrol.d.ts +47 -21
- package/common/baseinputcontrol.d.ts +10 -8
- package/common/baselistcontrol.d.ts +15 -15
- package/common/basemodelcontrol.d.ts +59 -43
- package/common/baseselectcontrol.d.ts +5 -5
- package/common/baseuploadcontrol.d.ts +77 -57
- package/components/browser/browser.d.ts +86 -89
- package/components/browser/models/browserfile.d.ts +6 -6
- package/components/browser/models/browserfiledeleterequest.d.ts +7 -7
- package/components/browser/models/browserfilerenamerequest.d.ts +10 -10
- package/components/browser/models/browserfileresponse.d.ts +2 -2
- package/components/browser/models/browserfilesaverequest.d.ts +7 -7
- package/components/browser/models/browsernode.d.ts +13 -13
- package/components/browser/models/browsernodedeleterequest.d.ts +6 -6
- package/components/browser/models/browsernodenewrequest.d.ts +7 -7
- package/components/browser/models/browsernoderenamerequest.d.ts +7 -7
- package/components/browser/models/browsernoderequest.d.ts +7 -7
- package/components/browser/models/browsernoderesponse.d.ts +1 -1
- package/controls/buttons/button.d.ts +25 -19
- package/controls/checkbox/checkbox.d.ts +3 -3
- package/controls/checkbox/radiobutton.d.ts +19 -13
- package/controls/checkbox/radiobuttons.d.ts +13 -10
- package/controls/confirm/confirm.button.d.ts +3 -3
- package/controls/confirm/confirm.d.ts +13 -12
- package/controls/confirm/confirm.service.d.ts +14 -14
- package/controls/contextmenu/contextmenu.d.ts +33 -27
- package/controls/contextmenu/contextmenu.interface.d.ts +6 -0
- package/controls/contextmenu/contextmenuanchor.d.ts +4 -4
- package/controls/contextmenu/contextmenucontainer.d.ts +4 -4
- package/controls/contextmenu/contextmenuitembutton.d.ts +12 -12
- package/controls/datetime/date.d.ts +11 -11
- package/controls/datetime/dateselector.d.ts +47 -40
- package/controls/datetime/datetime.d.ts +15 -14
- package/controls/datetime/time.d.ts +22 -12
- package/controls/dialog/dialog.d.ts +28 -22
- package/controls/form/form.d.ts +17 -12
- package/controls/grid/grid.d.ts +1 -0
- package/controls/grid/gridbutton.d.ts +1 -0
- package/controls/grid/gridcolumn.d.ts +5 -1
- package/controls/grid/gridcolumnaction.d.ts +1 -1
- package/controls/grid/gridcolumnbase.d.ts +8 -3
- package/controls/grid/model.d.ts +5 -2
- package/controls/grid/paging.d.ts +2 -3
- package/controls/input/input.d.ts +7 -7
- package/controls/input/inputarea.d.ts +8 -6
- package/controls/input/inputcurrency.d.ts +4 -1
- package/controls/input/inputdecimal.d.ts +14 -14
- package/controls/input/inputemail.d.ts +4 -4
- package/controls/input/inputinteger.d.ts +14 -14
- package/controls/input/inputpassword.d.ts +3 -3
- package/controls/input/inputsearch.d.ts +8 -5
- package/controls/layout/formlayout.d.ts +8 -5
- package/controls/list/buildvaluestring.d.ts +2 -2
- package/controls/list/dropdown.d.ts +23 -22
- package/controls/list/dropdownoptions.d.ts +10 -10
- package/controls/list/listbox.d.ts +25 -23
- package/controls/multilanguage/multilanguageinput.d.ts +25 -25
- package/controls/multilanguage/multilanguageinputarea.d.ts +27 -27
- package/controls/static/formcontainer.d.ts +8 -8
- package/controls/static/staticlabel.d.ts +5 -5
- package/controls/tabs/tab.d.ts +2 -2
- package/controls/tabs/tabitem.d.ts +7 -7
- package/controls/tinymce/tinymce.d.ts +37 -37
- package/controls/tinymce/tinymcedialogsettings.d.ts +6 -6
- package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +2 -2
- package/controls/tinymce/tinymceinstance.d.ts +2 -2
- package/controls/tooltip/tooltip.d.ts +10 -5
- package/controls/treeview/treeview.d.ts +50 -5
- package/controls/upload/dropzonemultiple.d.ts +16 -16
- package/controls/upload/dropzonesingle.d.ts +11 -11
- package/controls/upload/uploadmultiple.d.ts +12 -12
- package/controls/upload/uploadsingle.d.ts +7 -7
- package/controls/validation/validationsummary.d.ts +12 -11
- package/controls/wizard/wizard.d.ts +25 -18
- package/controls/wizard/wizarditem.d.ts +5 -5
- package/enums/ButtonRoleType.d.ts +26 -1
- package/enums/ControlHeight.d.ts +1 -1
- package/enums/IconType.d.ts +1 -1
- package/esm2015/common/basedatetimecontrol.js +47 -22
- package/esm2015/common/baseinputcontrol.js +13 -11
- package/esm2015/common/baselistcontrol.js +21 -17
- package/esm2015/common/basemodelcontrol.js +72 -49
- package/esm2015/common/baseselectcontrol.js +11 -9
- package/esm2015/common/baseuploadcontrol.js +69 -49
- package/esm2015/components/browser/browser.js +93 -105
- package/esm2015/components/browser/models/browserfile.js +1 -1
- package/esm2015/components/browser/models/browserfiledeleterequest.js +6 -4
- package/esm2015/components/browser/models/browserfilerenamerequest.js +6 -4
- package/esm2015/components/browser/models/browserfileresponse.js +1 -1
- package/esm2015/components/browser/models/browserfilesaverequest.js +5 -3
- package/esm2015/components/browser/models/browsernode.js +1 -1
- package/esm2015/components/browser/models/browsernodedeleterequest.js +6 -4
- package/esm2015/components/browser/models/browsernodenewrequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderenamerequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderesponse.js +1 -1
- package/esm2015/controls/buttons/button.js +26 -20
- package/esm2015/controls/checkbox/checkbox.js +3 -3
- package/esm2015/controls/checkbox/radiobutton.js +21 -15
- package/esm2015/controls/checkbox/radiobuttons.js +14 -11
- package/esm2015/controls/confirm/confirm.button.js +4 -4
- package/esm2015/controls/confirm/confirm.js +14 -13
- package/esm2015/controls/confirm/confirm.service.js +21 -21
- package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -1
- package/esm2015/controls/contextmenu/contextmenu.js +29 -23
- package/esm2015/controls/contextmenu/contextmenuanchor.js +4 -4
- package/esm2015/controls/contextmenu/contextmenucontainer.js +4 -4
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +10 -10
- package/esm2015/controls/datetime/date.js +13 -13
- package/esm2015/controls/datetime/dateselector.js +55 -54
- package/esm2015/controls/datetime/datetime.js +17 -16
- package/esm2015/controls/datetime/time.js +24 -14
- package/esm2015/controls/dialog/dialog.js +31 -24
- package/esm2015/controls/form/form.js +18 -13
- package/esm2015/controls/grid/grid.js +2 -1
- package/esm2015/controls/grid/gridbutton.js +2 -1
- package/esm2015/controls/grid/gridcolumn.js +6 -2
- package/esm2015/controls/grid/gridcolumnaction.js +2 -2
- package/esm2015/controls/grid/gridcolumnbase.js +9 -4
- package/esm2015/controls/grid/model.js +5 -2
- package/esm2015/controls/grid/paging.js +6 -7
- package/esm2015/controls/input/input.js +8 -8
- package/esm2015/controls/input/inputarea.js +9 -7
- package/esm2015/controls/input/inputcurrency.js +6 -3
- package/esm2015/controls/input/inputdecimal.js +21 -27
- package/esm2015/controls/input/inputemail.js +5 -5
- package/esm2015/controls/input/inputinteger.js +19 -23
- package/esm2015/controls/input/inputpassword.js +4 -4
- package/esm2015/controls/input/inputsearch.js +9 -6
- package/esm2015/controls/layout/formlayout.js +10 -7
- package/esm2015/controls/list/buildvaluestring.js +6 -6
- package/esm2015/controls/list/dropdown.js +28 -27
- package/esm2015/controls/list/dropdownoptions.js +12 -12
- package/esm2015/controls/list/listbox.js +26 -24
- package/esm2015/controls/multilanguage/multilanguageinput.js +29 -29
- package/esm2015/controls/multilanguage/multilanguageinputarea.js +31 -31
- package/esm2015/controls/static/formcontainer.js +10 -10
- package/esm2015/controls/static/staticlabel.js +7 -7
- package/esm2015/controls/tabs/tab.js +2 -2
- package/esm2015/controls/tabs/tabitem.js +5 -5
- package/esm2015/controls/tinymce/tinymce.js +35 -35
- package/esm2015/controls/tinymce/tinymcedialogsettings.js +4 -4
- package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +1 -1
- package/esm2015/controls/tinymce/tinymceinstance.js +1 -1
- package/esm2015/controls/tooltip/tooltip.js +13 -8
- package/esm2015/controls/treeview/treeview.js +52 -7
- package/esm2015/controls/upload/dropzonemultiple.js +18 -18
- package/esm2015/controls/upload/dropzonesingle.js +12 -12
- package/esm2015/controls/upload/uploadmultiple.js +14 -14
- package/esm2015/controls/upload/uploadsingle.js +8 -8
- package/esm2015/controls/validation/validationsummary.js +14 -13
- package/esm2015/controls/wizard/wizard.js +24 -17
- package/esm2015/controls/wizard/wizarditem.js +4 -4
- package/esm2015/enums/ButtonRoleType.js +1 -1
- package/esm2015/enums/ControlHeight.js +2 -2
- package/esm2015/enums/IconType.js +2 -2
- package/esm2015/interfaces/ISacConfigurationService.js +1 -1
- package/esm2015/interfaces/ISacFileBrowserService.js +1 -1
- package/esm2015/interfaces/ISacLabelSizes.js +1 -1
- package/esm2015/interfaces/ISacLanguageService.js +1 -1
- package/esm2015/interfaces/ISacLocalisationService.js +1 -1
- package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -1
- package/esm2015/interfaces/iabstractcontrollabel.js +1 -1
- package/esm2015/interfaces/iconfirmcomponent.js +1 -1
- package/esm2015/interfaces/idatetimecontrol.js +1 -1
- package/esm2015/interfaces/iuploadcontrol.js +1 -1
- package/esm2015/interfaces/treeviewaction.interface.js +1 -1
- package/esm2015/models/languagemodel.js +5 -3
- package/esm2015/public_api.js +3 -2
- package/esm2015/services/index.js +4 -4
- package/esm2015/services/sac-configuration.service.js +7 -1
- package/esm2015/services/sac-filebrowser.service.js +46 -38
- package/esm2015/services/sac-localisation.service.js +11 -7
- package/esm2015/services/sac-validationkey.service.js +148 -1
- package/esm2015/utilities/convertion.js +7 -5
- package/esm2015/utilities/datatypes.js +6 -4
- package/esm2015/utilities/enums.js +9 -8
- package/esm2015/utilities/guid.js +2 -2
- package/esm2015/utilities/interpolation.js +16 -9
- package/esm2015/utilities/popuphelper.js +62 -25
- package/esm2015/utilities/positioncalculator.js +209 -0
- package/esm2015/utilities/positioncalculator.ngfactory.js +7 -0
- package/esm2015/utilities/positionelements.js +108 -0
- package/esm2015/utilities/positionelements.ngfactory.js +7 -0
- package/esm2015/utilities/testingattribute.pipe.js +17 -2
- package/esm2015/validation/email.validator.js +11 -2
- package/esm2015/validation/equals.validator.js +11 -1
- package/esm2015/validation/index.js +1 -1
- package/esm2015/validation/invaliddate.validator.js +11 -2
- package/esm2015/validation/isDateValid.js +11 -10
- package/esm2015/validation/maxdate.validator.js +14 -4
- package/esm2015/validation/maxtime.validator.js +14 -4
- package/esm2015/validation/maxvalue.validator.js +12 -2
- package/esm2015/validation/mindate.validator.js +14 -4
- package/esm2015/validation/minfiles.validator.js +12 -2
- package/esm2015/validation/mintextlength.validator.js +9 -1
- package/esm2015/validation/mintime.validator.js +14 -4
- package/esm2015/validation/minvalue.validator.js +12 -2
- package/esm2015/validation/multilanguagerequired.validator.js +11 -1
- package/esm2015/validation/multilanguagerequiredany.validator.js +11 -1
- package/esm2015/validation/notequals.validator.js +11 -1
- package/esm2015/validation/pattern.validator.js +12 -2
- package/esm2015/validation/required.validator.js +11 -2
- package/esm2015/validation/validation.class.js +84 -101
- package/esm2015/validation/validationerrorcreator.js +12 -1
- package/esm2015/validation/validationerroritem.js +11 -9
- package/fesm2015/simpleangularcontrols-sac-common.js +1823 -1226
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/interfaces/ISacConfigurationService.d.ts +9 -1
- package/interfaces/ISacFileBrowserService.d.ts +43 -43
- package/interfaces/ISacLabelSizes.d.ts +15 -12
- package/interfaces/ISacLanguageService.d.ts +3 -3
- package/interfaces/ISacLocalisationService.d.ts +2 -2
- package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
- package/interfaces/iabstractcontrollabel.d.ts +4 -1
- package/interfaces/iconfirmcomponent.d.ts +6 -6
- package/interfaces/idatetimecontrol.d.ts +10 -1
- package/interfaces/treeviewaction.interface.d.ts +9 -0
- package/models/languagemodel.d.ts +9 -9
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/services/index.d.ts +3 -3
- package/services/sac-configuration.service.d.ts +8 -0
- package/services/sac-filebrowser.service.d.ts +78 -70
- package/services/sac-localisation.service.d.ts +11 -7
- package/services/sac-validationkey.service.d.ts +147 -0
- package/simpleangularcontrols-sac-common-10.0.0-rc.30.tgz +0 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/utilities/convertion.d.ts +4 -4
- package/utilities/datatypes.d.ts +3 -3
- package/utilities/enums.d.ts +8 -1
- package/utilities/guid.d.ts +1 -1
- package/utilities/interpolation.d.ts +9 -8
- package/utilities/popuphelper.d.ts +47 -10
- package/utilities/positioncalculator.d.ts +82 -0
- package/utilities/positionelements.d.ts +30 -0
- package/utilities/positionelements.ngfactory.d.ts +1 -0
- package/utilities/testingattribute.pipe.d.ts +16 -1
- package/validation/email.validator.d.ts +7 -0
- package/validation/equals.validator.d.ts +8 -0
- package/validation/invaliddate.validator.d.ts +7 -0
- package/validation/isDateValid.d.ts +5 -2
- package/validation/maxdate.validator.d.ts +8 -0
- package/validation/maxtime.validator.d.ts +8 -0
- package/validation/maxvalue.validator.d.ts +8 -0
- package/validation/mindate.validator.d.ts +8 -0
- package/validation/minfiles.validator.d.ts +8 -0
- package/validation/mintextlength.validator.d.ts +8 -0
- package/validation/mintime.validator.d.ts +8 -0
- package/validation/minvalue.validator.d.ts +8 -0
- package/validation/multilanguagerequired.validator.d.ts +9 -1
- package/validation/multilanguagerequiredany.validator.d.ts +9 -1
- package/validation/notequals.validator.d.ts +8 -0
- package/validation/pattern.validator.d.ts +8 -0
- package/validation/required.validator.d.ts +7 -0
- package/validation/validation.class.d.ts +83 -100
- package/validation/validationerrorcreator.d.ts +9 -0
- package/validation/validationerroritem.d.ts +16 -16
- package/esm2015/utilities/positioning.js +0 -301
- package/esm2015/utilities/positioning.ngfactory.js +0 -7
- package/simpleangularcontrols-sac-common-10.0.0-rc.29.tgz +0 -0
- package/utilities/positioning.d.ts +0 -82
- /package/utilities/{positioning.ngfactory.d.ts → positioncalculator.ngfactory.d.ts} +0 -0
|
@@ -3,13 +3,14 @@ import { Validation } from '../../validation';
|
|
|
3
3
|
import { SacFormLayoutCommon } from '../layout/formlayout';
|
|
4
4
|
import { Directive, EventEmitter, Host, Injector, Input, Output, TemplateRef } from '@angular/core';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Base component for SacTreeView
|
|
7
7
|
*/
|
|
8
8
|
export class SacTreeviewCommon extends SacBaseModelControl {
|
|
9
9
|
// #endregion Properties
|
|
10
10
|
// #region Constructors
|
|
11
11
|
/**
|
|
12
12
|
* Constructor
|
|
13
|
+
* @param formlayout Form layout directive for scoped layout settings
|
|
13
14
|
* @param injector Service Injector
|
|
14
15
|
*/
|
|
15
16
|
constructor(formlayout, injector) {
|
|
@@ -60,7 +61,7 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
60
61
|
*/
|
|
61
62
|
this.data = [];
|
|
62
63
|
/**
|
|
63
|
-
* Activates the 'expand' and '
|
|
64
|
+
* Activates the 'expand' and 'collapse' event even if a node has no children. This is helpful if node elements are to be reloaded at runtime.
|
|
64
65
|
*/
|
|
65
66
|
this.enableasynchload = false;
|
|
66
67
|
/**
|
|
@@ -92,11 +93,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
92
93
|
*/
|
|
93
94
|
this.selectednode = new EventEmitter();
|
|
94
95
|
/**
|
|
95
|
-
* Resource
|
|
96
|
+
* Resource key required for validation message at control
|
|
96
97
|
*/
|
|
97
98
|
this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
|
|
98
99
|
/**
|
|
99
|
-
* Resource
|
|
100
|
+
* Resource key required for validation message in the validation summary
|
|
100
101
|
*/
|
|
101
102
|
this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
|
|
102
103
|
}
|
|
@@ -106,7 +107,7 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
106
107
|
return this.iconService.TreeviewNodeActionIcon;
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
109
|
-
* CSS icon for folders in tree
|
|
110
|
+
* CSS icon for folders in tree that are collapsed
|
|
110
111
|
* @returns css class with icon
|
|
111
112
|
*/
|
|
112
113
|
get iconFolderCollabsed() {
|
|
@@ -136,6 +137,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
136
137
|
count(size) {
|
|
137
138
|
return new Array(size);
|
|
138
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Get the child nodes of a node
|
|
142
|
+
* @param node Parent node
|
|
143
|
+
* @returns Array of child nodes
|
|
144
|
+
*/
|
|
139
145
|
getChildren(node) {
|
|
140
146
|
if (!node || !this.attrchildren) {
|
|
141
147
|
return [];
|
|
@@ -146,6 +152,12 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
146
152
|
}
|
|
147
153
|
return children;
|
|
148
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Get string field value from node
|
|
157
|
+
* @param node Node object
|
|
158
|
+
* @param fieldname Field name to retrieve
|
|
159
|
+
* @returns The field value as string or empty string
|
|
160
|
+
*/
|
|
149
161
|
getStringField(node, fieldname) {
|
|
150
162
|
if (!node) {
|
|
151
163
|
return '';
|
|
@@ -159,9 +171,19 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
159
171
|
}
|
|
160
172
|
return value;
|
|
161
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if node has children
|
|
176
|
+
* @param node Node to check
|
|
177
|
+
* @returns Boolean indicating if node has child nodes
|
|
178
|
+
*/
|
|
162
179
|
hasChildren(node) {
|
|
163
180
|
return this.getChildren(node).length > 0;
|
|
164
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Check if node is in disabled state
|
|
184
|
+
* @param node Node to check
|
|
185
|
+
* @returns Boolean indicating if node is disabled
|
|
186
|
+
*/
|
|
165
187
|
isDisabledState(node) {
|
|
166
188
|
if (!node || !this.attrdisableaction) {
|
|
167
189
|
return false;
|
|
@@ -169,6 +191,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
169
191
|
let value = node[this.attrdisableaction];
|
|
170
192
|
return value === true || value === 'true';
|
|
171
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if node is in expanded state
|
|
196
|
+
* @param node Node to check
|
|
197
|
+
* @returns Boolean indicating if node is expanded
|
|
198
|
+
*/
|
|
172
199
|
isExpandedState(node) {
|
|
173
200
|
if (!node || !this.attrexpanded) {
|
|
174
201
|
return false;
|
|
@@ -176,6 +203,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
176
203
|
let value = node[this.attrexpanded];
|
|
177
204
|
return value === true || value === 'true';
|
|
178
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Check if node is in hover state
|
|
208
|
+
* @param node Node to check
|
|
209
|
+
* @returns Boolean indicating if node is hovered
|
|
210
|
+
*/
|
|
179
211
|
isHoverState(node) {
|
|
180
212
|
if (!node || !this.attrhoverstate) {
|
|
181
213
|
return false;
|
|
@@ -183,6 +215,11 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
183
215
|
let value = node[this.attrhoverstate];
|
|
184
216
|
return value === true || value === 'true';
|
|
185
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Check if node is in selected state
|
|
220
|
+
* @param node Node to check
|
|
221
|
+
* @returns Boolean indicating if node is selected
|
|
222
|
+
*/
|
|
186
223
|
isSelectedState(node) {
|
|
187
224
|
if (!node || !this.attrselected) {
|
|
188
225
|
return false;
|
|
@@ -302,11 +339,15 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
302
339
|
}
|
|
303
340
|
return null;
|
|
304
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Inverts the expanded state of a tree node
|
|
344
|
+
* @param node The node whose expanded state should be inverted
|
|
345
|
+
*/
|
|
305
346
|
invertExpandedState(node) {
|
|
306
347
|
if (!node || !this.attrexpanded) {
|
|
307
348
|
return;
|
|
308
349
|
}
|
|
309
|
-
// Items with no children cannot be
|
|
350
|
+
// Items with no children cannot be collapsed
|
|
310
351
|
if (!this.hasChildren(node) && !(this.enableasynchload === true || this.enableasynchload === 'true')) {
|
|
311
352
|
return;
|
|
312
353
|
}
|
|
@@ -320,6 +361,10 @@ export class SacTreeviewCommon extends SacBaseModelControl {
|
|
|
320
361
|
node[this.attrexpanded] = true;
|
|
321
362
|
}
|
|
322
363
|
}
|
|
364
|
+
/**
|
|
365
|
+
* Recursively resets the selected state of a node and its children
|
|
366
|
+
* @param node The node whose selected state should be reset
|
|
367
|
+
*/
|
|
323
368
|
resetSelectedState(node) {
|
|
324
369
|
if (!node || !this.attrselected) {
|
|
325
370
|
return;
|
|
@@ -364,4 +409,4 @@ SacTreeviewCommon.propDecorators = {
|
|
|
364
409
|
validationmessagerequired: [{ type: Input }],
|
|
365
410
|
validationmessagesummaryrequired: [{ type: Input }]
|
|
366
411
|
};
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NpbXBsZWFuZ3VsYXJjb250cm9scy9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy90cmVldmlldy90cmVldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRzs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBd0I7SUF1SjNELHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7OztPQUdHO0lBQ0gsWUFBb0IsVUFBK0IsRUFBRSxRQUFrQjtRQUNuRSxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBL0poQyxxQkFBcUI7UUFFckI7O1dBRUc7UUFFSSxrQkFBYSxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUV4Rjs7V0FFRztRQUVJLGlCQUFZLEdBQUcsVUFBVSxDQUFDO1FBRWpDOztXQUVHO1FBQ2Esc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBRS9DOztXQUVHO1FBRUksaUJBQVksR0FBRyxVQUFVLENBQUM7UUFFakM7O1dBRUc7UUFFSSxtQkFBYyxHQUFHLFlBQVksQ0FBQztRQUVyQzs7V0FFRztRQUVJLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBRUksV0FBTSxHQUFrQixJ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Q0FBQztTQUNuQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBUztRQUNoQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQXBjSixTQUFTOzs7WUFQRCxtQkFBbUIsdUJBdUtYLElBQUk7WUF0S21CLFFBQVE7Ozs0QkFhM0MsTUFBTTsyQkFNTixLQUFLO2dDQU1MLEtBQUs7MkJBS0wsS0FBSzs2QkFNTCxLQUFLO3VCQU1MLEtBQUs7cUJBTUwsS0FBSzt3QkFNTCxLQUFLOzJCQU1MLEtBQUs7d0JBTUwsTUFBTTttQkFNTixLQUFLOytCQU1MLEtBQUs7NkJBTUwsS0FBSzt1QkFNTCxNQUFNOzRCQU1OLEtBQUs7eUJBTUwsS0FBSzttQkFNTCxLQUFLO3VCQU1MLE1BQU07MkJBTU4sTUFBTTsrQkFNTixLQUFLOzZCQU1MLEtBQUs7MkJBTUwsS0FBSzs0QkFNTCxLQUFLO3dDQU1MLEtBQUs7K0NBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBUcmVldmlld0FjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHJlZXZpZXdhY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQmFzaXMgS29tcG9uZW50ZSBmw7xyIFNhY1RyZWVWaWV3XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNhY1RyZWV2aWV3Q29tbW9uIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxhbnk+IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gQWN0aW9uIGlzIGNsaWNrZWQgb24gTm9kZS4gIEFuIG9iamVjdCBvZiB0aGUgdHlwZSAnVHJlZXZpZXdBY3Rpb24nIGlzIHJldHVybmVkLiBJbiB0aGUgZGVmYXVsdCBjYXNlLCAnYWN0aW9uJyBpbiB0aGlzIG9iamVjdCBpcyBhbHdheXMgdGhlIHZhbHVlICdkZWZhdWx0Jy4gVGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUgJ3RlbXBsYXRlYWN0aW9uJy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWN0aW9uY2xpY2tlZDogRXZlbnRFbWl0dGVyPFRyZWV2aWV3QWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZXZpZXdBY3Rpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBvbiB0aGUgZGF0YSBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgY2hpbGRyZW4gb2YgdGhlIHN0cnVjdHVyZSBlbGVtZW50LiBNdXN0IGJlIGFuIGFycmF5IG9mIG9iamVjdHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzICdjaGlsZHJlbidcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyY2hpbGRyZW4gPSAnY2hpbGRyZW4nO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgcHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3Qgd2l0aCB3aGljaCB0aGUgYWN0aW9ucyBmb3IgYSBub2RlIGNhbiBiZSBkZWFjdGl2YXRlZC4gQSAnZGlzYWJsZWQnIHByb3BlcnR5IGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXR0cmRpc2FibGVhY3Rpb24gPSAnZGlzYWJsZWQnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIGV4cGFuZGVkIHN0YXRlLiBQcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4gRGVmYXVsdCBpcyAnZXhwYW5kZWQnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmV4cGFuZGVkID0gJ2V4cGFuZGVkJztcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGZvciBzYXZpbmcgdGhlIEhvdmVyU3RhdGUgb24gdGhlIGZpZWxkLiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHByZXNlbnQgb24gdGhlIG5vZGUsIGl0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhbmQgcmVtb3ZlZCBhZ2Fpbi4gVGhlIHZhbHVlIGNhbiB1c3VhbGx5IGJlIGxlZnQgYXQgdGhlIGRlZmF1bHQgdmFsdWUgdW5sZXNzIHRoZXJlIGlzIGEgY29uZmxpY3Qgd2l0aCBhIHByb3BlcnR5IG9uIHRoZSBub2RlIHRoYXQgaXMgcmVxdWlyZWQgZm9yIG90aGVyIHB1cnBvc2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF0dHJob3ZlcnN0YXRlID0gJ2hvdmVyc3RhdGUnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGljb24gZm9yIHRoZSBub2RlLiBCeSBkZWZhdWx0LCB0aGUgcHJvcGVydHkgaXMgbm90IHNldCwgd2hpY2ggaGlkZXMgdGhlIGljb24gaW4gdGhlIG5vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogcHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgY29udGFpbnMgYW4gSUQgb2YgdGhlIG5vZGUuIFRoZSBkZWZhdWx0IGlzICdpZCcuIElmIHRoZSBwcm9wZXJ0eSBpcyBzZXQgdG8gTlVMTCwgdGhlIHNlbGVjdGVkSWQgZXZlbnQgaXMgbm8gbG9uZ2VyIHRyaWdnZXJlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyaWQ6IHN0cmluZyB8IG51bGwgPSAnaWQnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGxhYmVsIGZvciB0aGUgbm9kZS4gRGVmYXVsdCBpcyAnbGFiZWwnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmxhYmVsID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGRlZmluZXMgd2hldGhlciB0aGUgbm9kZSBpcyBzZWxlY3RlZCBvciBub3QuIEl0IHNob3VsZCBiZSBlbnN1cmVkIHRoYXQgb25seSAxIG5vZGUgaGFzIHRoZSB2YWx1ZSBmb3IgU2VsZWN0ZWQgc2V0IHRvIHRydWUuIERlZmF1bHQgaXMgJ3NlbGVjdGVkJy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyc2VsZWN0ZWQgPSAnc2VsZWN0ZWQnO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sbGFic2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIG5vZGVzLiBUaGUgZGF0YSBtdXN0IGFscmVhZHkgbWFwIHRoZSB0cmVlIHZpYSBjaGlsZCBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGE6IGFueVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBBY3RpdmF0ZXMgdGhlICdleHBhbmQnIGFuZCAnY29sbGFic2UnIGV2ZW50IGV2ZW4gaWYgYSBub2RlIGhhcyBubyBjaGlsZHJlbi4gVGhpcyBpcyBoZWxwZnVsIGlmIG5vZGUgZWxlbWVudHMgYXJlIHRvIGJlIHJlbG9hZGVkIGF0IHJ1bnRpbWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlYXN5bmNobG9hZDogYm9vbGVhbiB8IHN0cmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQWN0aXZhdGVzIEVsbGlwc2lzIG9uIHRoZSBub2RlIGxhYmVsc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuYWJsZWVsbGlwc2lzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgYW4gaWNvbiBmb3IgdGhlIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0dXMgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBhbmRlZHN0YXRlOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEEgbm9kZSBtdXN0IGJlIHNlbGVjdGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgVHJlZVZpZXcgY29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgc2VsZWN0ZWQuIFJldHVybnMgdGhlIGlkIGF0dHJpYnV0ZSBhcyBhIHBhcmFtZXRlci4gVGhlIGV2ZW50IGlzIG5vdCB0cmlnZ2VyZWQgaWYgJ2F0dHJpZCcgaXMgbm90IHNldC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC4gUmV0dXJucyB0aGUgbm9kZSBlbGVtZW50IGFzIGEgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZG5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoYXQgdGhlIGFjdGlvbiB0ZW1wbGF0ZSBpcyBkaXNwbGF5ZWQgaW5kZXBlbmRlbnRseSBvZiB0aGUgc2VsZWN0ZWQgc3RhdGUuIElmIHRoZSB2YWx1ZSBpcyAndHJ1ZScsIHRoZSBhY3Rpb24gdGVtcGxhdGUgaXMgZGlzcGxheWVkIGZvciBldmVyeSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dhY3Rpb25hbHdheXM7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIGFjdGlvbnMgcGVyIG5vZGUuIFRlbXBsYXRlIHBhcmFtZXRlcnMgYXJlOiAnbm9kZSdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZWFjdGlvbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgaWNvbiBwZXIgbm9kZS4gVGVtcGxhdGUgcGFyYW1ldGVycyBhcmU6ICdub2RlJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRlbXBsYXRlaWNvbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGxhYmVsIGFyZWEgcGVyIG5vZGUuIFRlbXBsYXRlIHBhcmFtZXRlcnMgYXJlOiAnbm9kZScgYW5kICdsYWJlbCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZWxhYmVsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgU2VydmljZSBJbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgcHVibGljIGdldCBpY29uQWN0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlRyZWV2aWV3Tm9kZUFjdGlvbkljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgY29sbGFic2VkXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlckNvbGxhYnNlZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVDbG9zZWRJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENTUyBpY29uIGNsYXNzIGZvciBmb2xkZXJzIHdpdGhvdXQgc3ViZm9sZGVyc1xuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJFbXB0eSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVFbXB0eUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ1NTIGljb24gZm9yIGZvbGRlcnMgaW4gdHJlZSB0aGVyZSBhcmUgZXhwYW5kZWRcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXG4gICAgICovXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyT3BlbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UcmVldmlld05vZGVPcGVuSWNvbjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGEgY2VydGFpbiBzaXplLiBJcyByZXF1aXJlZCBmb3IgYSBGb3IgaW4gdGhlIFVJLCBhcyBBbmd1bGFyIGRvZXMgbm90IHN1cHBvcnQgY291bnRpbmcgbG9vcHNcbiAgICAgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBhcnJheVxuICAgICAqIEByZXR1cm5zIEFycmF5XG4gICAgICovXG4gICAgcHVibGljIGNvdW50KHNpemU6IG51bWJlcik6IEFycmF5PHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShzaXplKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogYW55KTogYW55W10ge1xuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2hpbGRyZW4gPSBub2RlW3RoaXMuYXR0cmNoaWxkcmVuXTtcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0cmluZ0ZpZWxkKG5vZGU6IGFueSwgZmllbGRuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZmllbGRuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbZmllbGRuYW1lXTtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0NoaWxkcmVuKG5vZGU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbihub2RlKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Rpc2FibGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyZGlzYWJsZWFjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJkaXNhYmxlYWN0aW9uXTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleHBhbmRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJleHBhbmRlZF07XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hvdmVyU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU2VsZWN0ZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJzZWxlY3RlZF07XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBpcyBjYWxsZWQgYnkgY2xpY2tpbmcgYW4gYWN0aW9uXG4gICAgICogQHBhcmFtIGFjdGlvbiBhY3Rpb24gYW5kIG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BY3Rpb25DbGlja2VkKGFjdGlvbjogVHJlZXZpZXdBY3Rpb24pIHtcbiAgICAgICAgdGhpcy5hY3Rpb25jbGlja2VkLmVtaXQoYWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgaXMgY2FsbGVkIHdoZW4gTm9kZSBpbiBUcmVlIGlzIGNsaWNrZWRcbiAgICAgKiBAcGFyYW0gbm9kZSBTZWxlY3RlZCBOb2RlXG4gICAgICovXG4gICAgcHVibGljIG9uTm9kZUNsaWNrZWQobm9kZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWRTdGF0ZShub2RlKSB8fCB0aGlzLmlzU2VsZWN0ZWRTdGF0ZShub2RlKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZlcnRFeHBhbmRlZFN0YXRlKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKG5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhvdmVyIHN0YXRlIG9uIGEgbm9kZVxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgb24gd2hpY2ggdGhlIHN0YXR1cyBpcyBzZXRcbiAgICAgKiBAcGFyYW0gc3RhdGUgQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSBIb3ZlclN0YXRlXG4gICAgICovXG4gICAgcHVibGljIHNldEhvdmVyU3RhdGUobm9kZTogYW55LCBzdGF0ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cmhvdmVyc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5vZGUuaGFzT3duUHJvcGVydHkodGhpcy5hdHRyaG92ZXJzdGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSBub2RlW3RoaXMuYXR0cmhvdmVyc3RhdGVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNlbGVjdGVkIHN0YXRlIG9uIGEgbm9kZVxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgd2hpY2ggaXMgbWFya2VkIGFzIFNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkU3RhdGUobm9kZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc2V0IHNlbGVjdGVkIHN0YXRlIG9mIGFueSBub2RlXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290Tm9kZSkgPT4gdGhpcy5yZXNldFNlbGVjdGVkU3RhdGUocm9vdE5vZGUpKTtcblxuICAgICAgICAvLyBzZXQgc2VsZWN0ZWQgbm9kZSBhcyBzZWxlY3RlZFxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IHRydWU7XG5cbiAgICAgICAgLy8gRXh0cmFjdCBJRCBmcm9tIE5vZGVcbiAgICAgICAgY29uc3QgaWRWYWx1ZSA9IG5vZGVbdGhpcy5hdHRyaWRdO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBuZ01vZGVsXG4gICAgICAgIHRoaXMuc2V0VmFsdWUoaWRWYWx1ZSk7XG5cbiAgICAgICAgLy8gUmFpc2UgU2VsZWN0ZWQgRXZlbnRzXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRub2RlLmVtaXQobm9kZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlkID0gdGhpcy5nZXRTdHJpbmdGaWVsZChub2RlLCB0aGlzLmF0dHJpZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIHRoZSBtb2RlbCBzdGF0ZSBvZiB0aGUgY29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgdmFsaWRhdGlvbiBlcnJvciwgaWYgcHJlc2VudC4gT3RoZXJ3aXNlLCBhcyBSZXN1bHQgaXMgTlVMTFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgZGF0YSBmcm9tIHRoZSBtb2RlbCBiaW5kaW5nXG4gICAgICogQHBhcmFtIHZhbHVlIElkIG9mIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICAvLyBEbyBub3QgcHJlc2VsY3QgaXRlbSB3aGVuIHRyZWUgaXMgZW1wdHlcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb290KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmROb2RlQnlJZChyb290LCB2YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIFNlYXJjaGVzIGZvciBhIG5vZGUgYmFzZWQgb24gdGhlIHZhbHVlIGluIHRoZSBJRCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gbm9kZSBOb2RlXG4gICAgICogQHBhcmFtIHZhbHVlIFZhbHVlIG9mIHRoZSBJZCBhdHRyaWJ1dGVcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBub2RlIGlmIGl0IGlzIGZvdW5kLiBJZiBub3QsIE5VTEwgaXMgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kTm9kZUJ5SWQobm9kZTogYW55LCB2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLmF0dHJpZCB8fCAhbm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZVt0aGlzLmF0dHJpZF0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZE5vZGVCeUlkKGNoaWxkLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW52ZXJ0RXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleHBhbmRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSXRlbXMgd2l0aCBubyBjaGlsZHJlbiBjYW5ub3QgYmUgY29sbGFic2VkXG4gICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbihub2RlKSAmJiAhKHRoaXMuZW5hYmxlYXN5bmNobG9hZCA9PT0gdHJ1ZSB8fCB0aGlzLmVuYWJsZWFzeW5jaGxvYWQgPT09ICd0cnVlJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhwYW5kZWRdO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhYnNlZC5lbWl0KG5vZGUpO1xuICAgICAgICAgICAgbm9kZVt0aGlzLmF0dHJleHBhbmRlZF0gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuZW1pdChub2RlKTtcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhwYW5kZWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRTZWxlY3RlZFN0YXRlKG5vZGU6IGFueSkge1xuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBub2RlW3RoaXMuYXR0cnNlbGVjdGVkXSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZFN0YXRlKGNoaWxkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdfQ==
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NpbXBsZWFuZ3VsYXJjb250cm9scy9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy90cmVldmlldy90cmVldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRzs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBd0I7SUF1SjNELHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7Ozs7T0FJRztJQUNILFlBQW9CLFVBQStCLEVBQUUsUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQWhLaEMscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFeEY7O1dBRUc7UUFFSSxpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUVqQzs7V0FFRztRQUNhLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUUvQzs7V0FFRztRQUVJLGlCQUFZLEdBQUcsVUFBVSxDQUFDO1FBRWpDOztXQUVHO1FBRUksbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFckM7O1dBRUc7UUFFSSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV0Qzs7V0FFRztRQUVJLFdBQU0sR0FBa0Is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b2RlbENvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBUcmVldmlld0FjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHJlZXZpZXdhY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQmFzZSBjb21wb25lbnQgZm9yIFNhY1RyZWVWaWV3XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNhY1RyZWV2aWV3Q29tbW9uIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxhbnk+IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gQWN0aW9uIGlzIGNsaWNrZWQgb24gTm9kZS4gIEFuIG9iamVjdCBvZiB0aGUgdHlwZSAnVHJlZXZpZXdBY3Rpb24nIGlzIHJldHVybmVkLiBJbiB0aGUgZGVmYXVsdCBjYXNlLCAnYWN0aW9uJyBpbiB0aGlzIG9iamVjdCBpcyBhbHdheXMgdGhlIHZhbHVlICdkZWZhdWx0Jy4gVGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUgJ3RlbXBsYXRlYWN0aW9uJy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWN0aW9uY2xpY2tlZDogRXZlbnRFbWl0dGVyPFRyZWV2aWV3QWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZXZpZXdBY3Rpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBvbiB0aGUgZGF0YSBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgY2hpbGRyZW4gb2YgdGhlIHN0cnVjdHVyZSBlbGVtZW50LiBNdXN0IGJlIGFuIGFycmF5IG9mIG9iamVjdHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzICdjaGlsZHJlbidcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyY2hpbGRyZW4gPSAnY2hpbGRyZW4nO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgcHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3Qgd2l0aCB3aGljaCB0aGUgYWN0aW9ucyBmb3IgYSBub2RlIGNhbiBiZSBkZWFjdGl2YXRlZC4gQSAnZGlzYWJsZWQnIHByb3BlcnR5IGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXR0cmRpc2FibGVhY3Rpb24gPSAnZGlzYWJsZWQnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIGV4cGFuZGVkIHN0YXRlLiBQcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4gRGVmYXVsdCBpcyAnZXhwYW5kZWQnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmV4cGFuZGVkID0gJ2V4cGFuZGVkJztcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGZvciBzYXZpbmcgdGhlIEhvdmVyU3RhdGUgb24gdGhlIGZpZWxkLiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHByZXNlbnQgb24gdGhlIG5vZGUsIGl0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhbmQgcmVtb3ZlZCBhZ2Fpbi4gVGhlIHZhbHVlIGNhbiB1c3VhbGx5IGJlIGxlZnQgYXQgdGhlIGRlZmF1bHQgdmFsdWUgdW5sZXNzIHRoZXJlIGlzIGEgY29uZmxpY3Qgd2l0aCBhIHByb3BlcnR5IG9uIHRoZSBub2RlIHRoYXQgaXMgcmVxdWlyZWQgZm9yIG90aGVyIHB1cnBvc2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF0dHJob3ZlcnN0YXRlID0gJ2hvdmVyc3RhdGUnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGljb24gZm9yIHRoZSBub2RlLiBCeSBkZWZhdWx0LCB0aGUgcHJvcGVydHkgaXMgbm90IHNldCwgd2hpY2ggaGlkZXMgdGhlIGljb24gaW4gdGhlIG5vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogcHJvcGVydHkgb24gdGhlICdkYXRhJyBvYmplY3QgY29udGFpbnMgYW4gSUQgb2YgdGhlIG5vZGUuIFRoZSBkZWZhdWx0IGlzICdpZCcuIElmIHRoZSBwcm9wZXJ0eSBpcyBzZXQgdG8gTlVMTCwgdGhlIHNlbGVjdGVkSWQgZXZlbnQgaXMgbm8gbG9uZ2VyIHRyaWdnZXJlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyaWQ6IHN0cmluZyB8IG51bGwgPSAnaWQnO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgb24gJ2RhdGEnIG9iamVjdCwgd2hpY2ggY29udGFpbnMgdGhlIGxhYmVsIGZvciB0aGUgbm9kZS4gRGVmYXVsdCBpcyAnbGFiZWwnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXR0cmxhYmVsID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IG9uICdkYXRhJyBvYmplY3QsIHdoaWNoIGRlZmluZXMgd2hldGhlciB0aGUgbm9kZSBpcyBzZWxlY3RlZCBvciBub3QuIEl0IHNob3VsZCBiZSBlbnN1cmVkIHRoYXQgb25seSAxIG5vZGUgaGFzIHRoZSB2YWx1ZSBmb3IgU2VsZWN0ZWQgc2V0IHRvIHRydWUuIERlZmF1bHQgaXMgJ3NlbGVjdGVkJy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdHRyc2VsZWN0ZWQgPSAnc2VsZWN0ZWQnO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sbGFic2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByb3BlcnR5IGNvbnRhaW5zIGFuIGFycmF5IG9mIG5vZGVzLiBUaGUgZGF0YSBtdXN0IGFscmVhZHkgbWFwIHRoZSB0cmVlIHZpYSBjaGlsZCBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGE6IGFueVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBBY3RpdmF0ZXMgdGhlICdleHBhbmQnIGFuZCAnY29sbGFwc2UnIGV2ZW50IGV2ZW4gaWYgYSBub2RlIGhhcyBubyBjaGlsZHJlbi4gVGhpcyBpcyBoZWxwZnVsIGlmIG5vZGUgZWxlbWVudHMgYXJlIHRvIGJlIHJlbG9hZGVkIGF0IHJ1bnRpbWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlYXN5bmNobG9hZDogYm9vbGVhbiB8IHN0cmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQWN0aXZhdGVzIEVsbGlwc2lzIG9uIHRoZSBub2RlIGxhYmVsc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVuYWJsZWVsbGlwc2lzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkLiBSZXR1cm5zIHRoZSBub2RlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgYW4gaWNvbiBmb3IgdGhlIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0dXMgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBhbmRlZHN0YXRlOiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEEgbm9kZSBtdXN0IGJlIHNlbGVjdGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNyZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgVHJlZVZpZXcgY29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBub2RlIGlzIHNlbGVjdGVkLiBSZXR1cm5zIHRoZSBpZCBhdHRyaWJ1dGUgYXMgYSBwYXJhbWV0ZXIuIFRoZSBldmVudCBpcyBub3QgdHJpZ2dlcmVkIGlmICdhdHRyaWQnIGlzIG5vdCBzZXQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIG5vZGUgaXMgc2VsZWN0ZWQuIFJldHVybnMgdGhlIG5vZGUgZWxlbWVudCBhcyBhIHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRub2RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGF0IHRoZSBhY3Rpb24gdGVtcGxhdGUgaXMgZGlzcGxheWVkIGluZGVwZW5kZW50bHkgb2YgdGhlIHNlbGVjdGVkIHN0YXRlLiBJZiB0aGUgdmFsdWUgaXMgJ3RydWUnLCB0aGUgYWN0aW9uIHRlbXBsYXRlIGlzIGRpc3BsYXllZCBmb3IgZXZlcnkgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93YWN0aW9uYWx3YXlzO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciBhY3Rpb25zIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGVtcGxhdGVhY3Rpb246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIGljb24gcGVyIG5vZGUuIFRlbXBsYXRlIHBhcmFtZXRlcnMgYXJlOiAnbm9kZSdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZWljb246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGVtcGxhdGUgZm9yIHRoZSBsYWJlbCBhcmVhIHBlciBub2RlLiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGFyZTogJ25vZGUnIGFuZCAnbGFiZWwnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGVtcGxhdGVsYWJlbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIGtleSByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlIGF0IGNvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIGtleSByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlIGluIHRoZSB2YWxpZGF0aW9uIHN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IEZvcm0gbGF5b3V0IGRpcmVjdGl2ZSBmb3Igc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBTZXJ2aWNlIEluamVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICBwdWJsaWMgZ2V0IGljb25BY3Rpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlQWN0aW9uSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDU1MgaWNvbiBmb3IgZm9sZGVycyBpbiB0cmVlIHRoYXQgYXJlIGNvbGxhcHNlZFxuICAgICAqIEByZXR1cm5zIGNzcyBjbGFzcyB3aXRoIGljb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGljb25Gb2xkZXJDb2xsYWJzZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlQ2xvc2VkSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDU1MgaWNvbiBjbGFzcyBmb3IgZm9sZGVycyB3aXRob3V0IHN1YmZvbGRlcnNcbiAgICAgKiBAcmV0dXJucyBjc3MgY2xhc3Mgd2l0aCBpY29uXG4gICAgICovXG4gICAgcHVibGljIGdldCBpY29uRm9sZGVyRW1wdHkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlRW1wdHlJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENTUyBpY29uIGZvciBmb2xkZXJzIGluIHRyZWUgdGhlcmUgYXJlIGV4cGFuZGVkXG4gICAgICogQHJldHVybnMgY3NzIGNsYXNzIHdpdGggaWNvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvbkZvbGRlck9wZW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVHJlZXZpZXdOb2RlT3Blbkljb247XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBhIGNlcnRhaW4gc2l6ZS4gSXMgcmVxdWlyZWQgZm9yIGEgRm9yIGluIHRoZSBVSSwgYXMgQW5ndWxhciBkb2VzIG5vdCBzdXBwb3J0IGNvdW50aW5nIGxvb3BzXG4gICAgICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgYXJyYXlcbiAgICAgKiBAcmV0dXJucyBBcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChzaXplOiBudW1iZXIpOiBBcnJheTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjaGlsZCBub2RlcyBvZiBhIG5vZGVcbiAgICAgKiBAcGFyYW0gbm9kZSBQYXJlbnQgbm9kZVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGNoaWxkIG5vZGVzXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkcmVuKG5vZGU6IGFueSk6IGFueVtdIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJjaGlsZHJlbikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNoaWxkcmVuID0gbm9kZVt0aGlzLmF0dHJjaGlsZHJlbl07XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgZmllbGQgdmFsdWUgZnJvbSBub2RlXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gZmllbGRuYW1lIEZpZWxkIG5hbWUgdG8gcmV0cmlldmVcbiAgICAgKiBAcmV0dXJucyBUaGUgZmllbGQgdmFsdWUgYXMgc3RyaW5nIG9yIGVtcHR5IHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdHJpbmdGaWVsZChub2RlOiBhbnksIGZpZWxkbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWZpZWxkbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW2ZpZWxkbmFtZV07XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIG5vZGUgaGFzIGNoaWxkcmVuXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVja1xuICAgICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBub2RlIGhhcyBjaGlsZCBub2Rlc1xuICAgICAqL1xuICAgIHB1YmxpYyBoYXNDaGlsZHJlbihub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBub2RlIGlzIGluIGRpc2FibGVkIHN0YXRlXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVja1xuICAgICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBub2RlIGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIGlzRGlzYWJsZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJkaXNhYmxlYWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3RoaXMuYXR0cmRpc2FibGVhY3Rpb25dO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBub2RlIGlzIGluIGV4cGFuZGVkIHN0YXRlXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVja1xuICAgICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBub2RlIGlzIGV4cGFuZGVkXG4gICAgICovXG4gICAgcHVibGljIGlzRXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleHBhbmRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJleHBhbmRlZF07XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIG5vZGUgaXMgaW4gaG92ZXIgc3RhdGVcbiAgICAgKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrXG4gICAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIG5vZGUgaXMgaG92ZXJlZFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0hvdmVyU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyaG92ZXJzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgbm9kZSBpcyBpbiBzZWxlY3RlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgbm9kZSBpcyBzZWxlY3RlZFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkU3RhdGUobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghbm9kZSB8fCAhdGhpcy5hdHRyc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyc2VsZWN0ZWRdO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgaXMgY2FsbGVkIGJ5IGNsaWNraW5nIGFuIGFjdGlvblxuICAgICAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uIGFuZCBub2RlXG4gICAgICovXG4gICAgcHVibGljIG9uQWN0aW9uQ2xpY2tlZChhY3Rpb246IFRyZWV2aWV3QWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uY2xpY2tlZC5lbWl0KGFjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGlzIGNhbGxlZCB3aGVuIE5vZGUgaW4gVHJlZSBpcyBjbGlja2VkXG4gICAgICogQHBhcmFtIG5vZGUgU2VsZWN0ZWQgTm9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBvbk5vZGVDbGlja2VkKG5vZGU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkU3RhdGUobm9kZSkgfHwgdGhpcy5pc1NlbGVjdGVkU3RhdGUobm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaW52ZXJ0RXhwYW5kZWRTdGF0ZShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRTdGF0ZShub2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBob3ZlciBzdGF0ZSBvbiBhIG5vZGVcbiAgICAgKiBAcGFyYW0gbm9kZSBOb2RlIG9uIHdoaWNoIHRoZSBzdGF0dXMgaXMgc2V0XG4gICAgICogQHBhcmFtIHN0YXRlIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgSG92ZXJTdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRIb3ZlclN0YXRlKG5vZGU6IGFueSwgc3RhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJob3ZlcnN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyaG92ZXJzdGF0ZV0gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFub2RlLmhhc093blByb3BlcnR5KHRoaXMuYXR0cmhvdmVyc3RhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgbm9kZVt0aGlzLmF0dHJob3ZlcnN0YXRlXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBzdGF0ZSBvbiBhIG5vZGVcbiAgICAgKiBAcGFyYW0gbm9kZSBOb2RlIHdoaWNoIGlzIG1hcmtlZCBhcyBTZWxlY3RlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZFN0YXRlKG5vZGU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIW5vZGUgfHwgIXRoaXMuYXR0cnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXNldCBzZWxlY3RlZCBzdGF0ZSBvZiBhbnkgbm9kZVxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgocm9vdE5vZGUpID0+IHRoaXMucmVzZXRTZWxlY3RlZFN0YXRlKHJvb3ROb2RlKSk7XG5cbiAgICAgICAgLy8gc2V0IHNlbGVjdGVkIG5vZGUgYXMgc2VsZWN0ZWRcbiAgICAgICAgbm9kZVt0aGlzLmF0dHJzZWxlY3RlZF0gPSB0cnVlO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBOb2RlXG4gICAgICAgIGNvbnN0IGlkVmFsdWUgPSBub2RlW3RoaXMuYXR0cmlkXTtcblxuICAgICAgICAvLyBVcGRhdGUgbmdNb2RlbFxuICAgICAgICB0aGlzLnNldFZhbHVlKGlkVmFsdWUpO1xuXG4gICAgICAgIC8vIFJhaXNlIFNlbGVjdGVkIEV2ZW50c1xuICAgICAgICB0aGlzLnNlbGVjdGVkbm9kZS5lbWl0KG5vZGUpO1xuXG4gICAgICAgIGlmICghdGhpcy5hdHRyaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpZCA9IHRoaXMuZ2V0U3RyaW5nRmllbGQobm9kZSwgdGhpcy5hdHRyaWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyB0aGUgbW9kZWwgc3RhdGUgb2YgdGhlIGNvbnRyb2xcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGluc3RhbmNlXG4gICAgICogQHJldHVybnMgUmV0dXJucyBhIHZhbGlkYXRpb24gZXJyb3IsIGlmIHByZXNlbnQuIE90aGVyd2lzZSwgYXMgUmVzdWx0IGlzIE5VTExcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIGRhdGEgZnJvbSB0aGUgbW9kZWwgYmluZGluZ1xuICAgICAqIEBwYXJhbSB2YWx1ZSBJZCBvZiB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gRG8gbm90IHByZXNlbGN0IGl0ZW0gd2hlbiB0cmVlIGlzIGVtcHR5XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgocm9vdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kTm9kZUJ5SWQocm9vdCwgdmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2hlcyBmb3IgYSBub2RlIGJhc2VkIG9uIHRoZSB2YWx1ZSBpbiB0aGUgSUQgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIG5vZGUgTm9kZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBvZiB0aGUgSWQgYXR0cmlidXRlXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbm9kZSBpZiBpdCBpcyBmb3VuZC4gSWYgbm90LCBOVUxMIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgZmluZE5vZGVCeUlkKG5vZGU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5hdHRyaWQgfHwgIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGVbdGhpcy5hdHRyaWRdID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmROb2RlQnlJZChjaGlsZCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZlcnRzIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhIHRyZWUgbm9kZVxuICAgICAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHdob3NlIGV4cGFuZGVkIHN0YXRlIHNob3VsZCBiZSBpbnZlcnRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgaW52ZXJ0RXhwYW5kZWRTdGF0ZShub2RlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJleHBhbmRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSXRlbXMgd2l0aCBubyBjaGlsZHJlbiBjYW5ub3QgYmUgY29sbGFwc2VkXG4gICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbihub2RlKSAmJiAhKHRoaXMuZW5hYmxlYXN5bmNobG9hZCA9PT0gdHJ1ZSB8fCB0aGlzLmVuYWJsZWFzeW5jaGxvYWQgPT09ICd0cnVlJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbdGhpcy5hdHRyZXhwYW5kZWRdO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhYnNlZC5lbWl0KG5vZGUpO1xuICAgICAgICAgICAgbm9kZVt0aGlzLmF0dHJleHBhbmRlZF0gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuZW1pdChub2RlKTtcbiAgICAgICAgICAgIG5vZGVbdGhpcy5hdHRyZXhwYW5kZWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IHJlc2V0cyB0aGUgc2VsZWN0ZWQgc3RhdGUgb2YgYSBub2RlIGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB3aG9zZSBzZWxlY3RlZCBzdGF0ZSBzaG91bGQgYmUgcmVzZXRcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0U2VsZWN0ZWRTdGF0ZShub2RlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmF0dHJzZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZVt0aGlzLmF0dHJzZWxlY3RlZF0gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmdldENoaWxkcmVuKG5vZGUpLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRTdGF0ZShjaGlsZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXX0=
|
|
@@ -2,34 +2,34 @@ import { SacUploadBase } from '../../common/baseuploadcontrol';
|
|
|
2
2
|
import { Validation } from '../../validation';
|
|
3
3
|
import { Directive, Input } from '@angular/core';
|
|
4
4
|
/**
|
|
5
|
-
* Upload
|
|
5
|
+
* Upload component for multiple files
|
|
6
6
|
*/
|
|
7
7
|
export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
8
8
|
constructor() {
|
|
9
9
|
// #region Properties
|
|
10
10
|
super(...arguments);
|
|
11
11
|
/**
|
|
12
|
-
* Property
|
|
12
|
+
* Property when drag event is active (mouse over zone)
|
|
13
13
|
*/
|
|
14
14
|
this.active = false;
|
|
15
15
|
/**
|
|
16
|
-
* Max.
|
|
16
|
+
* Max. number of files that can be uploaded
|
|
17
17
|
*/
|
|
18
18
|
this.maxfiles = 0;
|
|
19
19
|
/**
|
|
20
|
-
* Min.
|
|
20
|
+
* Min. number of files that must be uploaded
|
|
21
21
|
*/
|
|
22
22
|
this.minfiles = 0;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Height of the upload control
|
|
25
25
|
*/
|
|
26
26
|
this.uploadheight = null;
|
|
27
27
|
/**
|
|
28
|
-
* Resource Key
|
|
28
|
+
* Resource Key for Validation Message Required at Control
|
|
29
29
|
*/
|
|
30
30
|
this.validationmessageminfiles = this.validationKeyService.ValidationErrorFilesMin;
|
|
31
31
|
/**
|
|
32
|
-
* Resource Key
|
|
32
|
+
* Resource Key for Validation Message Required in Validation Summary
|
|
33
33
|
*/
|
|
34
34
|
this.validationmessagesummaryminfiles = this.validationKeyService.ValidationErrorSummaryFilesMin;
|
|
35
35
|
// #endregion Protected Methods
|
|
@@ -37,9 +37,9 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
37
37
|
// #endregion Properties
|
|
38
38
|
// #region Public Methods
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* Checks if the max. files in the queue are not exceeded
|
|
41
41
|
*
|
|
42
|
-
* @param file File
|
|
42
|
+
* @param file File that was added
|
|
43
43
|
*/
|
|
44
44
|
CustomAddValidation(file) {
|
|
45
45
|
if (this.maxfiles > 0 && this.uploads.length >= this.maxfiles) {
|
|
@@ -51,9 +51,9 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* Sets the file IDs of the uploaded files into the model
|
|
55
55
|
*
|
|
56
|
-
* @param file ID
|
|
56
|
+
* @param file ID of the file that was uploaded.
|
|
57
57
|
*/
|
|
58
58
|
SetUploadValue(file) {
|
|
59
59
|
let documentid = null;
|
|
@@ -70,7 +70,7 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
70
70
|
else {
|
|
71
71
|
documentid = file.uploadId;
|
|
72
72
|
}
|
|
73
|
-
//
|
|
73
|
+
// Update document ID so that value from server can be set in model.
|
|
74
74
|
this.uploads
|
|
75
75
|
.filter((itm) => itm !== null && itm.uploadId === file.uploadId)
|
|
76
76
|
.forEach((itm) => {
|
|
@@ -95,7 +95,7 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
*
|
|
98
|
+
* Method for drag and drop of files
|
|
99
99
|
* @param event Drag Event
|
|
100
100
|
*/
|
|
101
101
|
dropHandler(event) {
|
|
@@ -107,21 +107,21 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
*
|
|
110
|
+
* Event when the control is initialized
|
|
111
111
|
*/
|
|
112
112
|
ngOnInit() {
|
|
113
113
|
super.ngOnInit();
|
|
114
114
|
this.autoupload = true;
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
|
-
*
|
|
117
|
+
* Method when drag leaves the zone
|
|
118
118
|
* @param event DragLeave Event
|
|
119
119
|
*/
|
|
120
120
|
onDragLeave(event) {
|
|
121
121
|
this.active = false;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
|
-
*
|
|
124
|
+
* Method when drag enters the zone
|
|
125
125
|
* @param event DragEnter Event
|
|
126
126
|
*/
|
|
127
127
|
onDragOver(event) {
|
|
@@ -136,7 +136,7 @@ export class SacDropzoneMultipleCommon extends SacUploadBase {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
|
-
*
|
|
139
|
+
* Validates the control
|
|
140
140
|
*
|
|
141
141
|
* @param c Control
|
|
142
142
|
*/
|
|
@@ -166,4 +166,4 @@ SacDropzoneMultipleCommon.propDecorators = {
|
|
|
166
166
|
validationmessageminfiles: [{ type: Input }],
|
|
167
167
|
validationmessagesummaryminfiles: [{ type: Input }]
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmVtdWx0aXBsZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL3VwbG9hZC9kcm9wem9uZW11bHRpcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJekQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBdUI7SUFEdEU7UUFFSSxxQkFBcUI7O1FBRXJCOztXQUVHO1FBQ0ksV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUVJLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFNUI7O1dBRUc7UUFFSSxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRTVCOztXQUVHO1FBRUksaUJBQVksR0FBVyxJQUFJLENBQUM7UUFFbkM7O1dBRUc7UUFDYSw4QkFBeUIsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7UUFFdEc7O1dBRUc7UUFFSSxxQ0FBZ0MsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsOEJBQThCLENBQUM7UUFrSjNHLCtCQUErQjtJQUNuQyxDQUFDO0lBakpHLHdCQUF3QjtJQUV4Qix5QkFBeUI7SUFFekI7Ozs7T0FJRztJQUNJLG1CQUFtQixDQUFDLElBQWlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMz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QUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3hCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQztZQUN4RCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNyQztZQUNFLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUN2QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsQ0FBa0I7UUFDbEMsSUFBSSxLQUFLLEdBQTRCLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2hCLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUN2QixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsSUFBSSxDQUFDLGdDQUFnQyxDQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsNEJBQTRCO0lBRTVCLDRCQUE0QjtJQUU1Qjs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7OztZQXBMSixTQUFTOzs7dUJBWUwsS0FBSzt1QkFNTCxLQUFLOzJCQU1MLEtBQUs7d0NBTUwsS0FBSzsrQ0FLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjVXBsb2FkQmFzZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNldXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVwbG9hZFN0YXRlIH0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuXG4vKipcbiAqIFVwbG9hZCBLb21wb25lbnRlIGbDvHIgZWluIGVpbnplbG5lcyBGaWxlXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNhY0Ryb3B6b25lTXVsdGlwbGVDb21tb24gZXh0ZW5kcyBTYWNVcGxvYWRCYXNlPHN0cmluZ1tdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB3ZW5uIERyYWcgRXZlbnQgYWt0aXYgaXN0IChNYXVzIMO8YmVyIFpvbmUpXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBBbnphaGwgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4ZmlsZXM6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBNaW4uIEFuemFobCBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIG3DvHNzZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5maWxlczogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEjDtmhlIGRlcyBVcGxvYWQgQ29udHJvbHNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB1cGxvYWRoZWlnaHQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VtaW5maWxlczogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JGaWxlc01pbjtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltaW5maWxlczogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RmlsZXNNaW47XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkaWUgbWF4LiBGaWxlcyBpbiBkZXIgUXVldWUgbmljaHQgw7xiZXJzY2hyaXR0ZW4gd2VyZGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlcyA+IDAgJiYgdGhpcy51cGxvYWRzLmxlbmd0aCA+PSB0aGlzLm1heGZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfTUFYRklMRVMnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGllIEZpbGUgSUQncyBkZXIgaG9jaGdlbGFkZW4gRmlsZXMgaW4gZGFzIE1vZGVsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBJRCBkZXMgRmlsZXMgd2VsY2hlcyBob2NoZ2VsYWRlbiB3dXJkZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgbGV0IGRvY3VtZW50aWQ6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGlmIChmaWxlID09PSBudWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudGlkID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50aWQgPSBmaWxlLnJlc3BvbnNlLmRvY3VtZW50aWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50aWQgPSBmaWxlLnVwbG9hZElkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEb2N1bWVudCBJRCBha3R1YWxpc2llcmVuLCBkYW1pdCBXZXJ0IHZvbiBTZXJ2ZXIgaW4gTW9kZWwgZ2VzZXR6dCB3ZXJkZW4ga2Fubi5cbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0bSkgPT4gaXRtICE9PSBudWxsICYmIGl0bS51cGxvYWRJZCA9PT0gZmlsZS51cGxvYWRJZClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0bS5kb2N1bWVudGlkID0gZG9jdW1lbnRpZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpc3Qgb2YgRmlsZXNcbiAgICAgICAgY29uc3QgZmlsZUlkczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICAvLyBBZGQgYWxsIEl0ZW1zIHdpdGggVXBsb2FkZWQgU3RhdGUgdG8gTW9kZWxcbiAgICAgICAgdGhpcy51cGxvYWRzXG4gICAgICAgICAgICAuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdjb21wbGV0ZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0bS5kb2N1bWVudGlkICE9PSBudWxsICYmIGl0bS5kb2N1bWVudGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlkcy5wdXNoKGl0bS5kb2N1bWVudGlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZmlsZUlkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdXBlci5zZXRWYWx1ZShmaWxlSWRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSBmw7xyIERyYWcgYW5kIERyb3Agdm9uIEZpbGVzXG4gICAgICogQHBhcmFtIGV2ZW50IERyYWcgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJvcEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyAmJiBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMuaXRlbSgwKSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlTGlzdChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXJ2ZW50IHdlbm4gZGFzIENvbnRyb2wgaW5pdGlhbGlzZXJ0IHdpcmRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5hdXRvdXBsb2FkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbm4gRHJhZyBkaWUgWm9uZSB2ZXJsw6Rzc3RcbiAgICAgKiBAcGFyYW0gZXZlbnQgRHJhZ0xlYXZlIEV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbm4gRHJhZyBpbiBkaWUgWm9uZSBlaW50cml0dFxuICAgICAqIEBwYXJhbSBldmVudCBEcmFnRW50ZXIgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2ZlciAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzICYmXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuZXZlcnkoKGl0bSkgPT4gaXRtID09PSAnRmlsZXMnKSAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkaWVydCBkYXMgQ29udHJvbFxuICAgICAqXG4gICAgICogQHBhcmFtIGMgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gc3VwZXIudmFsaWRhdGVEYXRhKGMpO1xuXG4gICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLm1pbkZpbGVzKFxuICAgICAgICAgICAgICAgIHRoaXMubWluZmlsZXMsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZW1pbmZpbGVzLFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5bWluZmlsZXNcbiAgICAgICAgICAgICkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgR2V0TWF4RmlsZXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXM7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xufVxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmVtdWx0aXBsZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL3VwbG9hZC9kcm9wem9uZW11bHRpcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJekQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBdUI7SUFEdEU7UUFFSSxxQkFBcUI7O1FBRXJCOztXQUVHO1FBQ0ksV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUVJLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFcEI7O1dBRUc7UUFFSSxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRXBCOztXQUVHO1FBRUksaUJBQVksR0FBVyxJQUFJLENBQUM7UUFFbkM7O1dBRUc7UUFDYSw4QkFBeUIsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7UUFFdEc7O1dBRUc7UUFFSSxxQ0FBZ0MsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsOEJBQThCLENBQUM7UUFrSjNHLCtCQUErQjtJQUNuQyxDQUFDO0lBakpHLHdCQUF3QjtJQUV4Qix5QkFBeUI7SUFFekI7Ozs7T0FJRztJQUNJLG1CQUFtQixDQUFDLElBQWlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMz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QUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3hCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQztZQUN4RCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNyQztZQUNFLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUN2QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsQ0FBa0I7UUFDbEMsSUFBSSxLQUFLLEdBQTRCLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2hCLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUN2QixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsSUFBSSxDQUFDLGdDQUFnQyxDQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsNEJBQTRCO0lBRTVCLDRCQUE0QjtJQUU1Qjs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7OztZQXBMSixTQUFTOzs7dUJBWUwsS0FBSzt1QkFNTCxLQUFLOzJCQU1MLEtBQUs7d0NBTUwsS0FBSzsrQ0FLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjVXBsb2FkQmFzZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNldXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVwbG9hZFN0YXRlIH0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuXG4vKipcbiAqIFVwbG9hZCBjb21wb25lbnQgZm9yIG11bHRpcGxlIGZpbGVzXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNhY0Ryb3B6b25lTXVsdGlwbGVDb21tb24gZXh0ZW5kcyBTYWNVcGxvYWRCYXNlPHN0cmluZ1tdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB3aGVuIGRyYWcgZXZlbnQgaXMgYWN0aXZlIChtb3VzZSBvdmVyIHpvbmUpXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBudW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhmaWxlcyA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBNaW4uIG51bWJlciBvZiBmaWxlcyB0aGF0IG11c3QgYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5maWxlcyA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHVwbG9hZCBjb250cm9sXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdXBsb2FkaGVpZ2h0OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZW1pbmZpbGVzOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckZpbGVzTWluO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5bWluZmlsZXM6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeUZpbGVzTWluO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIG1heC4gZmlsZXMgaW4gdGhlIHF1ZXVlIGFyZSBub3QgZXhjZWVkZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgdGhhdCB3YXMgYWRkZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlcyA+IDAgJiYgdGhpcy51cGxvYWRzLmxlbmd0aCA+PSB0aGlzLm1heGZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfTUFYRklMRVMnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZmlsZSBJRHMgb2YgdGhlIHVwbG9hZGVkIGZpbGVzIGludG8gdGhlIG1vZGVsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBJRCBvZiB0aGUgZmlsZSB0aGF0IHdhcyB1cGxvYWRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgbGV0IGRvY3VtZW50aWQ6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGlmIChmaWxlID09PSBudWxsKSB7XG4gICAgICAgICAgICBkb2N1bWVudGlkID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50aWQgPSBmaWxlLnJlc3BvbnNlLmRvY3VtZW50aWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50aWQgPSBmaWxlLnVwbG9hZElkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgZG9jdW1lbnQgSUQgc28gdGhhdCB2YWx1ZSBmcm9tIHNlcnZlciBjYW4gYmUgc2V0IGluIG1vZGVsLlxuICAgICAgICAgICAgdGhpcy51cGxvYWRzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRtKSA9PiBpdG0gIT09IG51bGwgJiYgaXRtLnVwbG9hZElkID09PSBmaWxlLnVwbG9hZElkKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRtLmRvY3VtZW50aWQgPSBkb2N1bWVudGlkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTGlzdCBvZiBGaWxlc1xuICAgICAgICBjb25zdCBmaWxlSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIC8vIEFkZCBhbGwgSXRlbXMgd2l0aCBVcGxvYWRlZCBTdGF0ZSB0byBNb2RlbFxuICAgICAgICB0aGlzLnVwbG9hZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRtLmRvY3VtZW50aWQgIT09IG51bGwgJiYgaXRtLmRvY3VtZW50aWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlSWRzLnB1c2goaXRtLmRvY3VtZW50aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChmaWxlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKGZpbGVJZHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGRyYWcgYW5kIGRyb3Agb2YgZmlsZXNcbiAgICAgKiBAcGFyYW0gZXZlbnQgRHJhZyBFdmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBkcm9wSGFuZGxlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5pdGVtKDApKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVMaXN0KGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYXV0b3VwbG9hZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHpvbmVcbiAgICAgKiBAcGFyYW0gZXZlbnQgRHJhZ0xlYXZlIEV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hlbiBkcmFnIGVudGVycyB0aGUgem9uZVxuICAgICAqIEBwYXJhbSBldmVudCBEcmFnRW50ZXIgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2ZlciAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzICYmXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuZXZlcnkoKGl0bSkgPT4gaXRtID09PSAnRmlsZXMnKSAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyB0aGUgY29udHJvbFxuICAgICAqXG4gICAgICogQHBhcmFtIGMgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gc3VwZXIudmFsaWRhdGVEYXRhKGMpO1xuXG4gICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLm1pbkZpbGVzKFxuICAgICAgICAgICAgICAgIHRoaXMubWluZmlsZXMsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZW1pbmZpbGVzLFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5bWluZmlsZXNcbiAgICAgICAgICAgICkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgR2V0TWF4RmlsZXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXM7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xufVxuIl19
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { SacUploadBase } from '../../common/baseuploadcontrol';
|
|
2
2
|
import { Directive, Input } from '@angular/core';
|
|
3
3
|
/**
|
|
4
|
-
* Upload
|
|
4
|
+
* Upload component for a single file
|
|
5
5
|
*/
|
|
6
6
|
export class SacDropzoneSingleCommon extends SacUploadBase {
|
|
7
7
|
constructor() {
|
|
8
8
|
// #region Properties
|
|
9
9
|
super(...arguments);
|
|
10
10
|
/**
|
|
11
|
-
* Property
|
|
11
|
+
* Property when drag event is active (mouse over zone)
|
|
12
12
|
*/
|
|
13
13
|
this.active = false;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Height of the dropzone. Value is given with unit.
|
|
16
16
|
*/
|
|
17
17
|
this.uploadheight = null;
|
|
18
18
|
// #endregion Protected Methods
|
|
@@ -20,17 +20,17 @@ export class SacDropzoneSingleCommon extends SacUploadBase {
|
|
|
20
20
|
// #endregion Properties
|
|
21
21
|
// #region Public Methods
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Does no validation in this control
|
|
24
24
|
*
|
|
25
|
-
* @param file File
|
|
25
|
+
* @param file File that was added
|
|
26
26
|
*/
|
|
27
27
|
CustomAddValidation(file) {
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Sets the file ID of the uploaded file into the model
|
|
32
32
|
*
|
|
33
|
-
* @param file ID
|
|
33
|
+
* @param file ID of the file
|
|
34
34
|
*/
|
|
35
35
|
SetUploadValue(file) {
|
|
36
36
|
if (file === null) {
|
|
@@ -49,7 +49,7 @@ export class SacDropzoneSingleCommon extends SacUploadBase {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
52
|
+
* Method for drag and drop of files
|
|
53
53
|
* @param event Drag Event
|
|
54
54
|
*/
|
|
55
55
|
dropHandler(event) {
|
|
@@ -69,21 +69,21 @@ export class SacDropzoneSingleCommon extends SacUploadBase {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
72
|
+
* Event when the control is initialized
|
|
73
73
|
*/
|
|
74
74
|
ngOnInit() {
|
|
75
75
|
super.ngOnInit();
|
|
76
76
|
this.autoupload = true;
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
*
|
|
79
|
+
* Method when drag leaves the zone
|
|
80
80
|
* @param event DragLeave Event
|
|
81
81
|
*/
|
|
82
82
|
onDragLeave(event) {
|
|
83
83
|
this.active = false;
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
-
*
|
|
86
|
+
* Method when drag enters the zone
|
|
87
87
|
* @param event DragEnter Event
|
|
88
88
|
*/
|
|
89
89
|
onDragOver(event) {
|
|
@@ -113,4 +113,4 @@ SacDropzoneSingleCommon.decorators = [
|
|
|
113
113
|
SacDropzoneSingleCommon.propDecorators = {
|
|
114
114
|
uploadheight: [{ type: Input }]
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmVzaW5nbGUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NpbXBsZWFuZ3VsYXJjb250cm9scy9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy91cGxvYWQvZHJvcHpvbmVzaW5nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQXFCO0lBRGxFO1FBRUkscUJBQXFCOztRQUVyQjs7V0FFRztRQUNJLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFFSSxpQkFBWSxHQUFXLElBQUksQ0FBQztRQTJHbkMsK0JBQStCO0lBQ25DLENBQUM7SUExR0csd0JBQXdCO0lBRXhCLHlCQUF5QjtJQUV6Qjs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsSUFBaUI7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUMsSUFBaUI7UUFDbkMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjthQUFNO1lBQ0gsSUFDSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSTtnQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUN4QztnQkFDRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakM7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsS0FBZ0I7UUFDL0IsSUFDSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsS0FBSyxDQUFDLFlBQVk7WUFDbEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3hCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDbEM7WUFDRSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBRXBCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQ3REO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsS0FBZ0I7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxLQUFnQjtRQUM5QixJQUNJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixLQUFLLENBQUMsWUFBWTtZQUNsQixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDeEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDO1lBQ3hELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ3JDO1lBQ0UsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRUQsNEJBQTRCO0lBRTVCLDRCQUE0QjtJQUU1Qjs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDOzs7WUF0SEosU0FBUzs7OzJCQVlMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNVcGxvYWRCYXNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2V1cGxvYWRjb250cm9sJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBsb2FkU3RhdGUgfSBmcm9tICduZ3gtdXBsb2FkeCc7XG5cbi8qKlxuICogVXBsb2FkIGNvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsZVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBTYWNEcm9wem9uZVNpbmdsZUNvbW1vbiBleHRlbmRzIFNhY1VwbG9hZEJhc2U8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB3aGVuIGRyYWcgZXZlbnQgaXMgYWN0aXZlIChtb3VzZSBvdmVyIHpvbmUpXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSBkcm9wem9uZS4gVmFsdWUgaXMgZ2l2ZW4gd2l0aCB1bml0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHVwbG9hZGhlaWdodDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogRG9lcyBubyB2YWxpZGF0aW9uIGluIHRoaXMgY29udHJvbFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgRmlsZSB0aGF0IHdhcyBhZGRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZpbGUgSUQgb2YgdGhlIHVwbG9hZGVkIGZpbGUgaW50byB0aGUgbW9kZWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIElEIG9mIHRoZSBmaWxlXG4gICAgICovXG4gICAgcHVibGljIFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGlmIChmaWxlID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdXBlci5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZS5kb2N1bWVudGlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKGZpbGUucmVzcG9uc2UuZG9jdW1lbnRpZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKGZpbGUudXBsb2FkSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBkcmFnIGFuZCBkcm9wIG9mIGZpbGVzXG4gICAgICogQHBhcmFtIGV2ZW50IERyYWcgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJvcEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5IYXNRdWV1ZUl0ZW0oKSAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyICYmXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMgJiZcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5pdGVtKDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZUxpc3QoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0RSQUdEUk9QX01BWEZJTEVTJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYXV0b3VwbG9hZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHpvbmVcbiAgICAgKiBAcGFyYW0gZXZlbnQgRHJhZ0xlYXZlIEV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hlbiBkcmFnIGVudGVycyB0aGUgem9uZVxuICAgICAqIEBwYXJhbSBldmVudCBEcmFnRW50ZXIgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLkhhc1F1ZXVlSXRlbSgpICYmXG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIgJiZcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyAmJlxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmV2ZXJ5KChpdG0pID0+IGl0bSA9PT0gJ0ZpbGVzJykgJiZcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBHZXRNYXhGaWxlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG59XG4iXX0=
|