@universis/ngx-tables 0.8.5 → 15.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/actions/table.actions.mjs +27 -0
- package/esm2020/lib/advanced-aggregator.mjs +2 -0
- package/esm2020/lib/components/add-items/add-items.component.mjs +138 -0
- package/esm2020/lib/components/advanced-aggregator/advanced-aggregator.component.mjs +126 -0
- package/esm2020/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.mjs +53 -0
- package/esm2020/lib/components/advanced-list/advanced-list.component.mjs +184 -0
- package/esm2020/lib/components/advanced-row-action/advanced-row-action.component.mjs +178 -0
- package/esm2020/lib/components/advanced-search-form/advanced-search-form.component.mjs +154 -0
- package/esm2020/lib/components/advanced-select/advanced-select.component.mjs +42 -0
- package/esm2020/lib/components/advanced-select/advanced-select.service.mjs +38 -0
- package/esm2020/lib/components/advanced-table/advanced-filter-value-provider.service.mjs +31 -0
- package/esm2020/lib/components/advanced-table/advanced-table-resolvers.mjs +40 -0
- package/esm2020/lib/components/advanced-table/advanced-table-search-base.mjs +31 -0
- package/esm2020/lib/components/advanced-table/advanced-table-search.component.mjs +525 -0
- package/esm2020/lib/components/advanced-table/advanced-table-settings.component.mjs +108 -0
- package/esm2020/lib/components/advanced-table/advanced-table.component.mjs +1599 -0
- package/esm2020/lib/components/advanced-table/advanced-table.formatters.interface.mjs +17 -0
- package/esm2020/lib/components/advanced-table/advanced-table.formatters.mjs +429 -0
- package/esm2020/lib/components/advanced-table/advanced-table.interfaces.mjs +2 -0
- package/esm2020/lib/components/advanced-table-modal/advanced-table-modal-base.component.mjs +420 -0
- package/esm2020/lib/components/column-selector/column-selector.component.mjs +205 -0
- package/esm2020/lib/components/column-selector/column-selector.service.mjs +45 -0
- package/esm2020/lib/components/table-simple-header/table-simple-header.component.mjs +52 -0
- package/esm2020/lib/directives/advance-search-state.directive.mjs +111 -0
- package/esm2020/lib/directives/advance-table-state.directive.mjs +63 -0
- package/esm2020/lib/directives/advanced-search-router-state.directive.mjs +64 -0
- package/esm2020/lib/directives/advanced-table-editor.directive.mjs +154 -0
- package/esm2020/lib/directives/btnexp.directive.mjs +222 -0
- package/esm2020/lib/i18n/tables.el.mjs +129 -0
- package/esm2020/lib/i18n/tables.en.mjs +128 -0
- package/esm2020/lib/pipes/advanced-aggregator.pipe.mjs +38 -0
- package/esm2020/lib/pipes/advansed-aggregator-list-title-parse.pipe.mjs +45 -0
- package/esm2020/lib/reducers/index.mjs +37 -0
- package/esm2020/lib/services/advanced-aggregator/advanced-aggregator.service.mjs +119 -0
- package/esm2020/lib/tables.activated-table.service.mjs +46 -0
- package/esm2020/lib/tables.module.mjs +218 -0
- package/esm2020/public_api.mjs +37 -0
- package/esm2020/universis-ngx-tables.mjs +5 -0
- package/fesm2015/{universis-ngx-tables.js → universis-ngx-tables.mjs} +2927 -2729
- package/fesm2015/universis-ngx-tables.mjs.map +1 -0
- package/fesm2020/universis-ngx-tables.mjs +5609 -0
- package/fesm2020/universis-ngx-tables.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actions/table.actions.d.ts +4 -4
- package/lib/components/add-items/add-items.component.d.ts +14 -21
- package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +15 -9
- package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +4 -1
- package/lib/components/advanced-list/advanced-list.component.d.ts +17 -14
- package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +20 -23
- package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +7 -4
- package/lib/components/advanced-select/advanced-select.component.d.ts +3 -1
- package/lib/components/advanced-select/advanced-select.service.d.ts +3 -0
- package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +3 -0
- package/lib/components/advanced-table/advanced-table-resolvers.d.ts +5 -0
- package/lib/components/advanced-table/advanced-table-search-base.d.ts +6 -2
- package/lib/components/advanced-table/advanced-table-search.component.d.ts +11 -7
- package/lib/components/advanced-table/advanced-table-settings.component.d.ts +8 -6
- package/lib/components/advanced-table/advanced-table.component.d.ts +33 -25
- package/lib/components/advanced-table/advanced-table.formatters.d.ts +11 -11
- package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +15 -12
- package/lib/components/column-selector/column-selector.component.d.ts +9 -6
- package/lib/components/column-selector/column-selector.service.d.ts +3 -0
- package/lib/components/table-simple-header/table-simple-header.component.d.ts +8 -3
- package/lib/directives/advance-search-state.directive.d.ts +6 -3
- package/lib/directives/advance-table-state.directive.d.ts +4 -1
- package/lib/directives/advanced-search-router-state.directive.d.ts +9 -6
- package/lib/directives/advanced-table-editor.directive.d.ts +4 -1
- package/lib/directives/btnexp.directive.d.ts +12 -9
- package/lib/i18n/tables.el.d.ts +107 -107
- package/lib/i18n/tables.en.d.ts +106 -106
- package/lib/pipes/advanced-aggregator.pipe.d.ts +7 -4
- package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +9 -6
- package/lib/reducers/index.d.ts +5 -3
- package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +11 -8
- package/lib/tables.activated-table.service.d.ts +10 -6
- package/lib/tables.module.d.ts +36 -0
- package/package.json +44 -36
- package/public_api.d.ts +3 -0
- package/bundles/universis-ngx-tables.umd.js +0 -6101
- package/bundles/universis-ngx-tables.umd.js.map +0 -1
- package/bundles/universis-ngx-tables.umd.min.js +0 -2
- package/bundles/universis-ngx-tables.umd.min.js.map +0 -1
- package/esm2015/lib/actions/table.actions.js +0 -28
- package/esm2015/lib/advanced-aggregator.js +0 -2
- package/esm2015/lib/components/add-items/add-items.component.js +0 -142
- package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -120
- package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -53
- package/esm2015/lib/components/advanced-list/advanced-list.component.js +0 -173
- package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +0 -184
- package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +0 -142
- package/esm2015/lib/components/advanced-select/advanced-select.component.js +0 -65
- package/esm2015/lib/components/advanced-select/advanced-select.service.js +0 -40
- package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -37
- package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +0 -44
- package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +0 -28
- package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +0 -526
- package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +0 -109
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +0 -1523
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -18
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +0 -429
- package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +0 -2
- package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -397
- package/esm2015/lib/components/column-selector/column-selector.component.js +0 -202
- package/esm2015/lib/components/column-selector/column-selector.service.js +0 -47
- package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +0 -52
- package/esm2015/lib/directives/advance-search-state.directive.js +0 -108
- package/esm2015/lib/directives/advance-table-state.directive.js +0 -63
- package/esm2015/lib/directives/advanced-search-router-state.directive.js +0 -63
- package/esm2015/lib/directives/advanced-table-editor.directive.js +0 -156
- package/esm2015/lib/directives/btnexp.directive.js +0 -229
- package/esm2015/lib/i18n/tables.el.js +0 -130
- package/esm2015/lib/i18n/tables.en.js +0 -129
- package/esm2015/lib/pipes/advanced-aggregator.pipe.js +0 -35
- package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -46
- package/esm2015/lib/reducers/index.js +0 -32
- package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -120
- package/esm2015/lib/tables.activated-table.service.js +0 -50
- package/esm2015/lib/tables.module.js +0 -149
- package/esm2015/public_api.js +0 -33
- package/esm2015/universis-ngx-tables.js +0 -9
- package/esm5/lib/actions/table.actions.js +0 -34
- package/esm5/lib/advanced-aggregator.js +0 -2
- package/esm5/lib/components/add-items/add-items.component.js +0 -153
- package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -169
- package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -56
- package/esm5/lib/components/advanced-list/advanced-list.component.js +0 -185
- package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +0 -188
- package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +0 -145
- package/esm5/lib/components/advanced-select/advanced-select.component.js +0 -71
- package/esm5/lib/components/advanced-select/advanced-select.service.js +0 -43
- package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -50
- package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +0 -48
- package/esm5/lib/components/advanced-table/advanced-table-search-base.js +0 -34
- package/esm5/lib/components/advanced-table/advanced-table-search.component.js +0 -563
- package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +0 -115
- package/esm5/lib/components/advanced-table/advanced-table.component.js +0 -1548
- package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -18
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +0 -480
- package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +0 -2
- package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -314
- package/esm5/lib/components/column-selector/column-selector.component.js +0 -270
- package/esm5/lib/components/column-selector/column-selector.service.js +0 -50
- package/esm5/lib/components/table-simple-header/table-simple-header.component.js +0 -58
- package/esm5/lib/directives/advance-search-state.directive.js +0 -116
- package/esm5/lib/directives/advance-table-state.directive.js +0 -65
- package/esm5/lib/directives/advanced-search-router-state.directive.js +0 -71
- package/esm5/lib/directives/advanced-table-editor.directive.js +0 -196
- package/esm5/lib/directives/btnexp.directive.js +0 -257
- package/esm5/lib/i18n/tables.el.js +0 -130
- package/esm5/lib/i18n/tables.en.js +0 -129
- package/esm5/lib/pipes/advanced-aggregator.pipe.js +0 -39
- package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -49
- package/esm5/lib/reducers/index.js +0 -34
- package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -134
- package/esm5/lib/tables.activated-table.service.js +0 -57
- package/esm5/lib/tables.module.js +0 -154
- package/esm5/public_api.js +0 -33
- package/esm5/universis-ngx-tables.js +0 -9
- package/fesm2015/universis-ngx-tables.js.map +0 -1
- package/fesm5/universis-ngx-tables.js +0 -5737
- package/fesm5/universis-ngx-tables.js.map +0 -1
- package/universis-ngx-tables.d.ts +0 -8
- package/universis-ngx-tables.metadata.json +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ActionLinkFormatter, ButtonFormatter, DateTimeFormatter, LanguageFormatter, LinkFormatter, NestedPropertyFormatter, NgClassFormatter, SelectRowFormatter, TemplateFormatter, TranslationFormatter, TrueFalseFormatter, ActionButtonFormatter, ActionSplitButtonFormatter, } from './advanced-table.formatters';
|
|
2
|
-
export var FORMATTERS = {
|
|
3
|
-
ActionLinkFormatter: new ActionLinkFormatter(),
|
|
4
|
-
ButtonFormatter: new ButtonFormatter(),
|
|
5
|
-
DateTimeFormatter: new DateTimeFormatter(),
|
|
6
|
-
LanguageFormatter: new LanguageFormatter(),
|
|
7
|
-
LinkFormatter: new LinkFormatter(),
|
|
8
|
-
NestedPropertyFormatter: new NestedPropertyFormatter(),
|
|
9
|
-
NgClassFormatter: new NgClassFormatter(),
|
|
10
|
-
SelectRowFormatter: new SelectRowFormatter(),
|
|
11
|
-
TemplateFormatter: new TemplateFormatter(),
|
|
12
|
-
TranslationFormatter: new TranslationFormatter(),
|
|
13
|
-
TrueFalseFormatter: new TrueFalseFormatter(),
|
|
14
|
-
ActionButtonFormatter: new ActionButtonFormatter(),
|
|
15
|
-
ActionSplitButtonFormatter: new ActionSplitButtonFormatter(),
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUuZm9ybWF0dGVycy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5mb3JtYXR0ZXJzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUMxRSxhQUFhLEVBQ2IsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQzdELGlCQUFpQixFQUFFLG9CQUFvQixFQUN2QyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsR0FDdEUsTUFBTSw2QkFBNkIsQ0FBQztBQWlCckMsTUFBTSxDQUFDLElBQU0sVUFBVSxHQUE2QjtJQUM5QyxtQkFBbUIsRUFBRSxJQUFJLG1CQUFtQixFQUFFO0lBQzlDLGVBQWUsRUFBRSxJQUFJLGVBQWUsRUFBRTtJQUN0QyxpQkFBaUIsRUFBRSxJQUFJLGlCQUFpQixFQUFFO0lBQzFDLGlCQUFpQixFQUFFLElBQUksaUJBQWlCLEVBQUU7SUFDMUMsYUFBYSxFQUFFLElBQUksYUFBYSxFQUFFO0lBQ2xDLHVCQUF1QixFQUFFLElBQUksdUJBQXVCLEVBQUU7SUFDdEQsZ0JBQWdCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTtJQUN4QyxrQkFBa0IsRUFBRSxJQUFJLGtCQUFrQixFQUFFO0lBQzVDLGlCQUFpQixFQUFFLElBQUksaUJBQWlCLEVBQUU7SUFDMUMsb0JBQW9CLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtJQUNoRCxrQkFBa0IsRUFBRSxJQUFJLGtCQUFrQixFQUFFO0lBQzVDLHFCQUFxQixFQUFFLElBQUkscUJBQXFCLEVBQUU7SUFDbEQsMEJBQTBCLEVBQUUsSUFBSSwwQkFBMEIsRUFBRTtDQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aW9uTGlua0Zvcm1hdHRlciwgQnV0dG9uRm9ybWF0dGVyLCBEYXRlVGltZUZvcm1hdHRlciwgTGFuZ3VhZ2VGb3JtYXR0ZXIsXG4gIExpbmtGb3JtYXR0ZXIsXG4gIE5lc3RlZFByb3BlcnR5Rm9ybWF0dGVyLCBOZ0NsYXNzRm9ybWF0dGVyLCBTZWxlY3RSb3dGb3JtYXR0ZXIsXG4gIFRlbXBsYXRlRm9ybWF0dGVyLCBUcmFuc2xhdGlvbkZvcm1hdHRlcixcbiAgVHJ1ZUZhbHNlRm9ybWF0dGVyLCBBY3Rpb25CdXR0b25Gb3JtYXR0ZXIsIEFjdGlvblNwbGl0QnV0dG9uRm9ybWF0dGVyLFxufSBmcm9tICcuL2FkdmFuY2VkLXRhYmxlLmZvcm1hdHRlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBZHZhbmNlZFRhYmxlRm9ybWF0dGVycyB7XG4gIEFjdGlvbkxpbmtGb3JtYXR0ZXI/OiBBY3Rpb25MaW5rRm9ybWF0dGVyO1xuICBCdXR0b25Gb3JtYXR0ZXI/OiBCdXR0b25Gb3JtYXR0ZXI7XG4gIERhdGVUaW1lRm9ybWF0dGVyPzogRGF0ZVRpbWVGb3JtYXR0ZXI7XG4gIExhbmd1YWdlRm9ybWF0dGVyPzogTGFuZ3VhZ2VGb3JtYXR0ZXI7XG4gIExpbmtGb3JtYXR0ZXI/OiBMaW5rRm9ybWF0dGVyO1xuICBOZXN0ZWRQcm9wZXJ0eUZvcm1hdHRlcj86IE5lc3RlZFByb3BlcnR5Rm9ybWF0dGVyO1xuICBOZ0NsYXNzRm9ybWF0dGVyPzogTmdDbGFzc0Zvcm1hdHRlcjtcbiAgU2VsZWN0Um93Rm9ybWF0dGVyPzogU2VsZWN0Um93Rm9ybWF0dGVyO1xuICBUZW1wbGF0ZUZvcm1hdHRlcj86IFRlbXBsYXRlRm9ybWF0dGVyO1xuICBUcmFuc2xhdGlvbkZvcm1hdHRlcj86IFRyYW5zbGF0aW9uRm9ybWF0dGVyO1xuICBUcnVlRmFsc2VGb3JtYXR0ZXI/OiBUcnVlRmFsc2VGb3JtYXR0ZXI7XG4gIEFjdGlvbkJ1dHRvbkZvcm1hdHRlcj86IEFjdGlvbkJ1dHRvbkZvcm1hdHRlcjtcbiAgQWN0aW9uU3BsaXRCdXR0b25Gb3JtYXR0ZXI/OiBBY3Rpb25TcGxpdEJ1dHRvbkZvcm1hdHRlcjtcbn1cbmV4cG9ydCBjb25zdCBGT1JNQVRURVJTOiBJQWR2YW5jZWRUYWJsZUZvcm1hdHRlcnMgPSB7XG4gICAgICBBY3Rpb25MaW5rRm9ybWF0dGVyOiBuZXcgQWN0aW9uTGlua0Zvcm1hdHRlcigpLFxuICAgICAgQnV0dG9uRm9ybWF0dGVyOiBuZXcgQnV0dG9uRm9ybWF0dGVyKCksXG4gICAgICBEYXRlVGltZUZvcm1hdHRlcjogbmV3IERhdGVUaW1lRm9ybWF0dGVyKCksXG4gICAgICBMYW5ndWFnZUZvcm1hdHRlcjogbmV3IExhbmd1YWdlRm9ybWF0dGVyKCksXG4gICAgICBMaW5rRm9ybWF0dGVyOiBuZXcgTGlua0Zvcm1hdHRlcigpLFxuICAgICAgTmVzdGVkUHJvcGVydHlGb3JtYXR0ZXI6IG5ldyBOZXN0ZWRQcm9wZXJ0eUZvcm1hdHRlcigpLFxuICAgICAgTmdDbGFzc0Zvcm1hdHRlcjogbmV3IE5nQ2xhc3NGb3JtYXR0ZXIoKSxcbiAgICAgIFNlbGVjdFJvd0Zvcm1hdHRlcjogbmV3IFNlbGVjdFJvd0Zvcm1hdHRlcigpLFxuICAgICAgVGVtcGxhdGVGb3JtYXR0ZXI6IG5ldyBUZW1wbGF0ZUZvcm1hdHRlcigpLFxuICAgICAgVHJhbnNsYXRpb25Gb3JtYXR0ZXI6IG5ldyBUcmFuc2xhdGlvbkZvcm1hdHRlcigpLFxuICAgICAgVHJ1ZUZhbHNlRm9ybWF0dGVyOiBuZXcgVHJ1ZUZhbHNlRm9ybWF0dGVyKCksXG4gICAgICBBY3Rpb25CdXR0b25Gb3JtYXR0ZXI6IG5ldyBBY3Rpb25CdXR0b25Gb3JtYXR0ZXIoKSxcbiAgICAgIEFjdGlvblNwbGl0QnV0dG9uRm9ybWF0dGVyOiBuZXcgQWN0aW9uU3BsaXRCdXR0b25Gb3JtYXR0ZXIoKSxcbn07XG4iXX0=
|
|
@@ -1,480 +0,0 @@
|
|
|
1
|
-
import * as tslib_1 from "tslib";
|
|
2
|
-
import { template, at } from 'lodash';
|
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { DatePipe } from '@angular/common';
|
|
5
|
-
import * as ISO6391 from 'iso-639-1/build';
|
|
6
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
7
|
-
var AdvancedColumnFormatter = /** @class */ (function () {
|
|
8
|
-
function AdvancedColumnFormatter() {
|
|
9
|
-
}
|
|
10
|
-
AdvancedColumnFormatter.template = function (expr) {
|
|
11
|
-
var result = AdvancedColumnFormatter.templateCache.get(expr);
|
|
12
|
-
if (typeof result === 'function') {
|
|
13
|
-
return result;
|
|
14
|
-
}
|
|
15
|
-
result = template(expr);
|
|
16
|
-
AdvancedColumnFormatter.templateCache.set(expr, result);
|
|
17
|
-
return result;
|
|
18
|
-
};
|
|
19
|
-
AdvancedColumnFormatter.prototype.createUrlTree = function (data, options) {
|
|
20
|
-
if (Array.isArray(options.commands)) {
|
|
21
|
-
var activatedRoute = this.injector.get(ActivatedRoute);
|
|
22
|
-
var router = this.injector.get(Router);
|
|
23
|
-
var commands = options.commands.map(function (command) {
|
|
24
|
-
if (typeof command === 'string') {
|
|
25
|
-
return AdvancedColumnFormatter.template(command)(data);
|
|
26
|
-
}
|
|
27
|
-
if (command.outlets) {
|
|
28
|
-
var commandOutlets_1 = {};
|
|
29
|
-
Object.keys(command.outlets).forEach(function (key) {
|
|
30
|
-
if (Object.prototype.hasOwnProperty.call(command.outlets, key)) {
|
|
31
|
-
var outlet = command.outlets[key];
|
|
32
|
-
if (Array.isArray(outlet)) {
|
|
33
|
-
Object.defineProperty(commandOutlets_1, key, {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
configurable: true,
|
|
36
|
-
writable: true,
|
|
37
|
-
value: outlet.map(function (x) {
|
|
38
|
-
return AdvancedColumnFormatter.template(x)(data);
|
|
39
|
-
}),
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
Object.defineProperty(commandOutlets_1, key, {
|
|
44
|
-
enumerable: true,
|
|
45
|
-
configurable: true,
|
|
46
|
-
writable: true,
|
|
47
|
-
value: outlet,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
return {
|
|
53
|
-
outlets: commandOutlets_1,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
return command;
|
|
57
|
-
});
|
|
58
|
-
var queryParams_1 = {};
|
|
59
|
-
var replaceUrl = true;
|
|
60
|
-
if (options.navigationExtras && options.navigationExtras.queryParams) {
|
|
61
|
-
Object.keys(options.navigationExtras.queryParams).map(function (key) {
|
|
62
|
-
var text = options.navigationExtras.queryParams[key];
|
|
63
|
-
queryParams_1[key] = AdvancedColumnFormatter.template(text)(data);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
if (options.navigationExtras && typeof options.navigationExtras.replaceUrl !== 'undefined') {
|
|
67
|
-
replaceUrl = options.navigationExtras.replaceUrl;
|
|
68
|
-
}
|
|
69
|
-
var skipLocationChange = false;
|
|
70
|
-
if (options.navigationExtras && typeof options.navigationExtras.skipLocationChange !== 'undefined') {
|
|
71
|
-
skipLocationChange = options.navigationExtras.skipLocationChange;
|
|
72
|
-
}
|
|
73
|
-
var fragment = void 0;
|
|
74
|
-
if (options.navigationExtras && typeof options.navigationExtras.fragment !== 'undefined') {
|
|
75
|
-
fragment = options.navigationExtras.fragment;
|
|
76
|
-
}
|
|
77
|
-
return router.createUrlTree(commands, {
|
|
78
|
-
fragment: fragment,
|
|
79
|
-
relativeTo: activatedRoute,
|
|
80
|
-
queryParams: queryParams_1,
|
|
81
|
-
replaceUrl: replaceUrl,
|
|
82
|
-
skipLocationChange: skipLocationChange,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
AdvancedColumnFormatter.templateCache = new Map();
|
|
87
|
-
return AdvancedColumnFormatter;
|
|
88
|
-
}());
|
|
89
|
-
export { AdvancedColumnFormatter };
|
|
90
|
-
var NestedPropertyFormatter = /** @class */ (function (_super) {
|
|
91
|
-
tslib_1.__extends(NestedPropertyFormatter, _super);
|
|
92
|
-
function NestedPropertyFormatter() {
|
|
93
|
-
return _super.call(this) || this;
|
|
94
|
-
}
|
|
95
|
-
NestedPropertyFormatter.prototype.render = function (data, type, row, meta) {
|
|
96
|
-
// get column
|
|
97
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
98
|
-
if (column && column.data) {
|
|
99
|
-
return at(row, column.data.replace(/\//g, '.'));
|
|
100
|
-
}
|
|
101
|
-
return data;
|
|
102
|
-
};
|
|
103
|
-
return NestedPropertyFormatter;
|
|
104
|
-
}(AdvancedColumnFormatter));
|
|
105
|
-
export { NestedPropertyFormatter };
|
|
106
|
-
var ButtonFormatter = /** @class */ (function (_super) {
|
|
107
|
-
tslib_1.__extends(ButtonFormatter, _super);
|
|
108
|
-
function ButtonFormatter() {
|
|
109
|
-
return _super.call(this) || this;
|
|
110
|
-
}
|
|
111
|
-
ButtonFormatter.prototype.render = function (data, type, row, meta) {
|
|
112
|
-
if (data == null) {
|
|
113
|
-
return '';
|
|
114
|
-
}
|
|
115
|
-
// get column
|
|
116
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
117
|
-
// get format options
|
|
118
|
-
var formatOptions = Object.assign({
|
|
119
|
-
buttonClass: 'btn btn-default',
|
|
120
|
-
}, this.formatOptions);
|
|
121
|
-
// get text content
|
|
122
|
-
var buttonText;
|
|
123
|
-
var buttonTitle = '';
|
|
124
|
-
if (formatOptions.buttonText) {
|
|
125
|
-
buttonText = this.injector.get(TranslateService).instant(formatOptions.buttonText);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
buttonText = formatOptions.buttonContent;
|
|
129
|
-
}
|
|
130
|
-
if (formatOptions.buttonTitle) {
|
|
131
|
-
buttonTitle = this.injector.get(TranslateService).instant(formatOptions.buttonTitle);
|
|
132
|
-
}
|
|
133
|
-
if (Array.isArray(this.formatOptions.commands)) {
|
|
134
|
-
var routerLink = this.createUrlTree(row, this.formatOptions);
|
|
135
|
-
return "<a class=\"" + formatOptions.buttonClass + "\" title=\"" + buttonTitle + "\" href=\"#" + routerLink + "\">" + buttonText + "</a>";
|
|
136
|
-
}
|
|
137
|
-
// and return button
|
|
138
|
-
var href = AdvancedColumnFormatter.template(this.formatString)(row);
|
|
139
|
-
return "<a class=\"" + formatOptions.buttonClass + "\" title=\"" + buttonTitle + "\" href=\"" + href + "\">" + buttonText + "</a>";
|
|
140
|
-
};
|
|
141
|
-
return ButtonFormatter;
|
|
142
|
-
}(AdvancedColumnFormatter));
|
|
143
|
-
export { ButtonFormatter };
|
|
144
|
-
var LinkFormatter = /** @class */ (function (_super) {
|
|
145
|
-
tslib_1.__extends(LinkFormatter, _super);
|
|
146
|
-
function LinkFormatter() {
|
|
147
|
-
return _super.call(this) || this;
|
|
148
|
-
}
|
|
149
|
-
LinkFormatter.prototype.render = function (data, type, row, meta) {
|
|
150
|
-
// get column
|
|
151
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
152
|
-
if (column && column.data) {
|
|
153
|
-
return "<a href=\"" + (AdvancedColumnFormatter.template(this.formatString)(row)) + "\">" + data + "</a>";
|
|
154
|
-
}
|
|
155
|
-
return data;
|
|
156
|
-
};
|
|
157
|
-
return LinkFormatter;
|
|
158
|
-
}(AdvancedColumnFormatter));
|
|
159
|
-
export { LinkFormatter };
|
|
160
|
-
var ActionLinkFormatter = /** @class */ (function (_super) {
|
|
161
|
-
tslib_1.__extends(ActionLinkFormatter, _super);
|
|
162
|
-
function ActionLinkFormatter() {
|
|
163
|
-
return _super.call(this) || this;
|
|
164
|
-
}
|
|
165
|
-
ActionLinkFormatter.prototype.render = function (data, type, row, meta) {
|
|
166
|
-
var _this = this;
|
|
167
|
-
var e_1, _a;
|
|
168
|
-
// get column
|
|
169
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
170
|
-
if (column && column.data) {
|
|
171
|
-
var actions = this.actions || [];
|
|
172
|
-
var index = 1;
|
|
173
|
-
try {
|
|
174
|
-
for (var actions_1 = tslib_1.__values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {
|
|
175
|
-
var action = actions_1_1.value;
|
|
176
|
-
Object.assign(action, {
|
|
177
|
-
name: action.name || "action" + index,
|
|
178
|
-
});
|
|
179
|
-
index += 1;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
183
|
-
finally {
|
|
184
|
-
try {
|
|
185
|
-
if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);
|
|
186
|
-
}
|
|
187
|
-
finally { if (e_1) throw e_1.error; }
|
|
188
|
-
}
|
|
189
|
-
// return the dropdown menu with 3 dots
|
|
190
|
-
return "<div class='dropdown details-control' data-id='" + data + "' data-type='student' >\n <a id=\"dropdownMenuButton-" + data + "\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"fa-2x text-dots\"></span>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-" + data + "\">\n " + actions.map(function (x) {
|
|
191
|
-
if (x.type === 'divider') {
|
|
192
|
-
return "<div class=\"dropdown-divider\"></div>";
|
|
193
|
-
}
|
|
194
|
-
if (x.formatOptions && x.formatOptions.commands) {
|
|
195
|
-
var urlTree = _this.createUrlTree(row, x.formatOptions);
|
|
196
|
-
return "<a data-name='" + x.name + "' class=\"dropdown-item" + (typeof x.className === 'string' && x.className.length
|
|
197
|
-
? " " + x.className.trim() : '') + "\" href=\"#" + urlTree.toString() + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
198
|
-
}
|
|
199
|
-
return "<a data-name='" + x.name + "' class=\"dropdown-item" + (typeof x.className === 'string' && x.className.length
|
|
200
|
-
? " " + x.className.trim() : '') + "\" href=\"" + AdvancedColumnFormatter.template(x.href)(row) + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
201
|
-
})
|
|
202
|
-
.join('') + "\n </div>\n </div>";
|
|
203
|
-
}
|
|
204
|
-
return data;
|
|
205
|
-
};
|
|
206
|
-
ActionLinkFormatter.prototype.afterRender = function (cell, cellData, rowData, rowIndex, colIndex) {
|
|
207
|
-
// assign bootstrap dropdown (?)
|
|
208
|
-
};
|
|
209
|
-
return ActionLinkFormatter;
|
|
210
|
-
}(AdvancedColumnFormatter));
|
|
211
|
-
export { ActionLinkFormatter };
|
|
212
|
-
var ActionButtonFormatter = /** @class */ (function (_super) {
|
|
213
|
-
tslib_1.__extends(ActionButtonFormatter, _super);
|
|
214
|
-
function ActionButtonFormatter() {
|
|
215
|
-
return _super.call(this) || this;
|
|
216
|
-
}
|
|
217
|
-
ActionButtonFormatter.prototype.render = function (data, type, row, meta) {
|
|
218
|
-
var _this = this;
|
|
219
|
-
var e_2, _a;
|
|
220
|
-
// get column
|
|
221
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
222
|
-
if (column && column.data) {
|
|
223
|
-
var actions = this.actions || [];
|
|
224
|
-
var index = 1;
|
|
225
|
-
try {
|
|
226
|
-
for (var actions_2 = tslib_1.__values(actions), actions_2_1 = actions_2.next(); !actions_2_1.done; actions_2_1 = actions_2.next()) {
|
|
227
|
-
var action = actions_2_1.value;
|
|
228
|
-
Object.assign(action, {
|
|
229
|
-
name: action.name || "action" + index,
|
|
230
|
-
});
|
|
231
|
-
index += 1;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
235
|
-
finally {
|
|
236
|
-
try {
|
|
237
|
-
if (actions_2_1 && !actions_2_1.done && (_a = actions_2.return)) _a.call(actions_2);
|
|
238
|
-
}
|
|
239
|
-
finally { if (e_2) throw e_2.error; }
|
|
240
|
-
}
|
|
241
|
-
var buttonText = void 0;
|
|
242
|
-
if (this.formatOptions && this.formatOptions.buttonText) {
|
|
243
|
-
// if button text is a literal expression
|
|
244
|
-
if (this.formatOptions.buttonText.includes('${')) {
|
|
245
|
-
// use template
|
|
246
|
-
buttonText = AdvancedColumnFormatter.template(this.formatOptions.buttonText)(row);
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
// otherwise translate it
|
|
250
|
-
buttonText = this.injector.get(TranslateService).instant(this.formatOptions.buttonText);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
var buttonTitle = void 0;
|
|
254
|
-
if (this.formatOptions && this.formatOptions.buttonTitle) {
|
|
255
|
-
buttonTitle = this.injector.get(TranslateService).instant(this.formatOptions.buttonTbuttonTitleext);
|
|
256
|
-
}
|
|
257
|
-
var buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';
|
|
258
|
-
// return the dropdown menu with 3 dots
|
|
259
|
-
return "<div class='dropdown details-control' data-id='" + data + "'>\n <a class=\"" + buttonClass + " dropdown-toggle\" href=\"#\" role=\"button\" title=\"" + buttonTitle + "\"\n id=\"dropdownMenuButton-" + data + "\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n " + buttonText + "\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-" + data + "\">\n " + actions.map(function (x) {
|
|
260
|
-
if (x.type === 'divider') {
|
|
261
|
-
return "<div class=\"dropdown-divider\"></div>";
|
|
262
|
-
}
|
|
263
|
-
if (x.commands) {
|
|
264
|
-
var urlTree = _this.createUrlTree(row, x);
|
|
265
|
-
return "<a class=\"dropdown-item\" href=\"#" + urlTree.toString() + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
266
|
-
}
|
|
267
|
-
return "<a class=\"dropdown-item\" href=\"" + AdvancedColumnFormatter.template(x.href)(row) + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
268
|
-
})
|
|
269
|
-
.join('') + "\n </div>\n </div>";
|
|
270
|
-
}
|
|
271
|
-
return data;
|
|
272
|
-
};
|
|
273
|
-
ActionButtonFormatter.prototype.afterRender = function (cell, cellData, rowData, rowIndex, colIndex) {
|
|
274
|
-
// assign bootstrap dropdown (?)
|
|
275
|
-
};
|
|
276
|
-
return ActionButtonFormatter;
|
|
277
|
-
}(AdvancedColumnFormatter));
|
|
278
|
-
export { ActionButtonFormatter };
|
|
279
|
-
var ActionSplitButtonFormatter = /** @class */ (function (_super) {
|
|
280
|
-
tslib_1.__extends(ActionSplitButtonFormatter, _super);
|
|
281
|
-
function ActionSplitButtonFormatter() {
|
|
282
|
-
return _super.call(this) || this;
|
|
283
|
-
}
|
|
284
|
-
ActionSplitButtonFormatter.prototype.render = function (data, type, row, meta) {
|
|
285
|
-
var _this = this;
|
|
286
|
-
var e_3, _a;
|
|
287
|
-
// get column
|
|
288
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
289
|
-
if (column && column.data) {
|
|
290
|
-
var actions = this.actions || [];
|
|
291
|
-
var index = 1;
|
|
292
|
-
try {
|
|
293
|
-
for (var actions_3 = tslib_1.__values(actions), actions_3_1 = actions_3.next(); !actions_3_1.done; actions_3_1 = actions_3.next()) {
|
|
294
|
-
var action = actions_3_1.value;
|
|
295
|
-
Object.assign(action, {
|
|
296
|
-
name: action.name || "action" + index,
|
|
297
|
-
});
|
|
298
|
-
index += 1;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
302
|
-
finally {
|
|
303
|
-
try {
|
|
304
|
-
if (actions_3_1 && !actions_3_1.done && (_a = actions_3.return)) _a.call(actions_3);
|
|
305
|
-
}
|
|
306
|
-
finally { if (e_3) throw e_3.error; }
|
|
307
|
-
}
|
|
308
|
-
if (actions.length === 0) {
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
var buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';
|
|
312
|
-
// return the dropdown menu with 3 dots
|
|
313
|
-
var defaultAction = actions[0];
|
|
314
|
-
var defaultActionHref = void 0;
|
|
315
|
-
if (defaultAction && defaultAction.commands) {
|
|
316
|
-
defaultActionHref = '#' + this.createUrlTree(row, defaultAction).toString();
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
defaultActionHref = AdvancedColumnFormatter.template(defaultAction.href)(row);
|
|
320
|
-
}
|
|
321
|
-
return "<div class=\"btn-group\">\n <a type=\"button\" class=\"" + buttonClass + "\" href=\"" + defaultActionHref + "\">\n " + this.injector.get(TranslateService).instant(defaultAction.title) + "\n </a>\n <button type=\"button\" class=\"" + buttonClass + " dropdown-toggle dropdown-toggle-split\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"sr-only\">" + this.injector.get(TranslateService).instant('Toggle Dropdown') + "</span>\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-" + data + "\">\n " + actions.map(function (x) {
|
|
322
|
-
if (x.title === '-') {
|
|
323
|
-
return "<div class=\"dropdown-divider\"></div>";
|
|
324
|
-
}
|
|
325
|
-
if (x.commands) {
|
|
326
|
-
var urlTree = _this.createUrlTree(row, x);
|
|
327
|
-
return "<a class=\"dropdown-item\" href=\"#" + urlTree.toString() + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
328
|
-
}
|
|
329
|
-
return "<a class=\"dropdown-item\" href=\"" + AdvancedColumnFormatter.template(x.href)(row) + "\">\n " + _this.injector.get(TranslateService).instant(x.title) + "\n </a>";
|
|
330
|
-
})
|
|
331
|
-
.join('') + "\n </div>\n </div>";
|
|
332
|
-
}
|
|
333
|
-
return data;
|
|
334
|
-
};
|
|
335
|
-
ActionSplitButtonFormatter.prototype.afterRender = function (cell, cellData, rowData, rowIndex, colIndex) {
|
|
336
|
-
// assign bootstrap dropdown (?)
|
|
337
|
-
};
|
|
338
|
-
return ActionSplitButtonFormatter;
|
|
339
|
-
}(AdvancedColumnFormatter));
|
|
340
|
-
export { ActionSplitButtonFormatter };
|
|
341
|
-
var SelectRowFormatter = /** @class */ (function (_super) {
|
|
342
|
-
tslib_1.__extends(SelectRowFormatter, _super);
|
|
343
|
-
function SelectRowFormatter() {
|
|
344
|
-
return _super.call(this) || this;
|
|
345
|
-
}
|
|
346
|
-
SelectRowFormatter.prototype.render = function (data, type, row, meta) {
|
|
347
|
-
// get column
|
|
348
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
349
|
-
if (column && column.data) {
|
|
350
|
-
var _tpl = "<input class=\"checkbox checkbox-theme\" type=\"checkbox\"\n id=\"s-" + meta.row + "\" /><label for=\"s-" + meta.row + "\"> </label>";
|
|
351
|
-
return AdvancedColumnFormatter.template(_tpl)(row);
|
|
352
|
-
}
|
|
353
|
-
return data;
|
|
354
|
-
};
|
|
355
|
-
return SelectRowFormatter;
|
|
356
|
-
}(AdvancedColumnFormatter));
|
|
357
|
-
export { SelectRowFormatter };
|
|
358
|
-
var TemplateFormatter = /** @class */ (function (_super) {
|
|
359
|
-
tslib_1.__extends(TemplateFormatter, _super);
|
|
360
|
-
function TemplateFormatter() {
|
|
361
|
-
return _super.call(this) || this;
|
|
362
|
-
}
|
|
363
|
-
TemplateFormatter.prototype.render = function (data, type, row, meta) {
|
|
364
|
-
// get column
|
|
365
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
366
|
-
if (column && column.data) {
|
|
367
|
-
return AdvancedColumnFormatter.template(this.formatString)(row);
|
|
368
|
-
}
|
|
369
|
-
return data;
|
|
370
|
-
};
|
|
371
|
-
return TemplateFormatter;
|
|
372
|
-
}(AdvancedColumnFormatter));
|
|
373
|
-
export { TemplateFormatter };
|
|
374
|
-
var TrueFalseFormatter = /** @class */ (function (_super) {
|
|
375
|
-
tslib_1.__extends(TrueFalseFormatter, _super);
|
|
376
|
-
function TrueFalseFormatter() {
|
|
377
|
-
return _super.call(this) || this;
|
|
378
|
-
}
|
|
379
|
-
TrueFalseFormatter.prototype.render = function (data, type, row, meta) {
|
|
380
|
-
return data ? this.injector.get(TranslateService).instant('TrueFalse.long.Yes') :
|
|
381
|
-
this.injector.get(TranslateService).instant('TrueFalse.long.No');
|
|
382
|
-
};
|
|
383
|
-
return TrueFalseFormatter;
|
|
384
|
-
}(AdvancedColumnFormatter));
|
|
385
|
-
export { TrueFalseFormatter };
|
|
386
|
-
var TranslationFormatter = /** @class */ (function (_super) {
|
|
387
|
-
tslib_1.__extends(TranslationFormatter, _super);
|
|
388
|
-
function TranslationFormatter() {
|
|
389
|
-
return _super.call(this) || this;
|
|
390
|
-
}
|
|
391
|
-
TranslationFormatter.prototype.render = function (data, type, row, meta) {
|
|
392
|
-
// get column
|
|
393
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
394
|
-
if (column && data != null) {
|
|
395
|
-
return this.injector.get(TranslateService).instant(AdvancedColumnFormatter.template(this.formatString)({
|
|
396
|
-
value: data,
|
|
397
|
-
}));
|
|
398
|
-
}
|
|
399
|
-
return this.injector.get(TranslateService).instant('Unknown');
|
|
400
|
-
};
|
|
401
|
-
return TranslationFormatter;
|
|
402
|
-
}(AdvancedColumnFormatter));
|
|
403
|
-
export { TranslationFormatter };
|
|
404
|
-
var DateTimeFormatter = /** @class */ (function (_super) {
|
|
405
|
-
tslib_1.__extends(DateTimeFormatter, _super);
|
|
406
|
-
function DateTimeFormatter() {
|
|
407
|
-
return _super.call(this) || this;
|
|
408
|
-
}
|
|
409
|
-
DateTimeFormatter.prototype.render = function (data, type, row, meta) {
|
|
410
|
-
// get column
|
|
411
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
412
|
-
if (column && column.data) {
|
|
413
|
-
var datePipe = new DatePipe(this.injector.get(TranslateService).currentLang);
|
|
414
|
-
if (typeof data === 'string' && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{2}$/.test(data)) {
|
|
415
|
-
return datePipe.transform(new Date(data + ':00'), this.formatString);
|
|
416
|
-
}
|
|
417
|
-
return datePipe.transform(data, this.formatString);
|
|
418
|
-
}
|
|
419
|
-
return data;
|
|
420
|
-
};
|
|
421
|
-
return DateTimeFormatter;
|
|
422
|
-
}(AdvancedColumnFormatter));
|
|
423
|
-
export { DateTimeFormatter };
|
|
424
|
-
var NgClassFormatter = /** @class */ (function (_super) {
|
|
425
|
-
tslib_1.__extends(NgClassFormatter, _super);
|
|
426
|
-
function NgClassFormatter() {
|
|
427
|
-
return _super.call(this) || this;
|
|
428
|
-
}
|
|
429
|
-
NgClassFormatter.prototype.render = function (data, type, row, meta) {
|
|
430
|
-
var e_4, _a;
|
|
431
|
-
// get column
|
|
432
|
-
var column = meta.settings.aoColumns[meta.col];
|
|
433
|
-
if (column && column.data) {
|
|
434
|
-
// get formatOptions
|
|
435
|
-
if (this.formatOptions) {
|
|
436
|
-
var ngClass = this.formatOptions.ngClass;
|
|
437
|
-
// check condition for each key
|
|
438
|
-
column.ngClassTemplates = column.ngClassTemplates || {};
|
|
439
|
-
try {
|
|
440
|
-
for (var _b = tslib_1.__values(Object.keys(ngClass)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
441
|
-
var key = _c.value;
|
|
442
|
-
var result = AdvancedColumnFormatter.template(ngClass[key])(row);
|
|
443
|
-
var fn = new Function("return " + result + ";");
|
|
444
|
-
// if condition returns true add class
|
|
445
|
-
if (fn() === true) {
|
|
446
|
-
return "<span class=\"" + key + "\">" + data + "</span>";
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
451
|
-
finally {
|
|
452
|
-
try {
|
|
453
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
454
|
-
}
|
|
455
|
-
finally { if (e_4) throw e_4.error; }
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
return data;
|
|
459
|
-
}
|
|
460
|
-
return data;
|
|
461
|
-
};
|
|
462
|
-
return NgClassFormatter;
|
|
463
|
-
}(AdvancedColumnFormatter));
|
|
464
|
-
export { NgClassFormatter };
|
|
465
|
-
var LanguageFormatter = /** @class */ (function (_super) {
|
|
466
|
-
tslib_1.__extends(LanguageFormatter, _super);
|
|
467
|
-
function LanguageFormatter() {
|
|
468
|
-
return _super.call(this) || this;
|
|
469
|
-
}
|
|
470
|
-
LanguageFormatter.prototype.render = function (data, type, row, meta) {
|
|
471
|
-
if (data) {
|
|
472
|
-
return ISO6391.getNativeName(data);
|
|
473
|
-
}
|
|
474
|
-
return data;
|
|
475
|
-
};
|
|
476
|
-
return LanguageFormatter;
|
|
477
|
-
}(AdvancedColumnFormatter));
|
|
478
|
-
export { LanguageFormatter };
|
|
479
|
-
|
|
480
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUuZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmZvcm1hdHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQW9CLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBRXBGO0lBQUE7SUFvR0EsQ0FBQztJQWxGZSxnQ0FBUSxHQUF0QixVQUF1QixJQUFZO1FBQ2pDLElBQUksTUFBTSxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDaEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUlTLCtDQUFhLEdBQXZCLFVBQXdCLElBQVMsRUFBRSxPQUFpRTtRQUNsRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQU0sY0FBYyxHQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZ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IHRlbXBsYXRlLCBhdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2FkdmFuY2VkLXRhYmxlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCAqIGFzIElTTzYzOTEgZnJvbSAnaXNvLTYzOS0xL2J1aWxkJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuZGVjbGFyZSB2YXIgalF1ZXJ5OiBhbnk7XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIgaW1wbGVtZW50cyBUYWJsZUNvbHVtbkNvbmZpZ3VyYXRpb24ge1xuXG4gIHB1YmxpYyBzdGF0aWMgdGVtcGxhdGVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCAoZGF0YTogYW55KSA9PiBzdHJpbmc+KCk7XG5cbiAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcjtcbiAgcHVibGljIGNsYXNzTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZGVmYXVsdENvbnRlbnQ6IHN0cmluZztcbiAgcHVibGljIGZvcm1hdFN0cmluZzogc3RyaW5nO1xuICBwdWJsaWMgZm9ybWF0dGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBvcmRlcjogc3RyaW5nO1xuICBwdWJsaWMgcHJvcGVydHk6IHN0cmluZztcbiAgcHVibGljIHNvcnRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIGZvcm1hdE9wdGlvbnM/OiBhbnk7XG4gIHB1YmxpYyBhY3Rpb25zPzogQXJyYXk8YW55PjtcblxuICBwdWJsaWMgc3RhdGljIHRlbXBsYXRlKGV4cHI6IHN0cmluZyk6IChkYXRhOiBhbnkpID0+IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlQ2FjaGUuZ2V0KGV4cHIpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXN1bHQgPSB0ZW1wbGF0ZShleHByKTtcbiAgICBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZUNhY2hlLnNldChleHByLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55O1xuXG4gIHByb3RlY3RlZCBjcmVhdGVVcmxUcmVlKGRhdGE6IGFueSwgb3B0aW9uczogeyBjb21tYW5kczogYW55W10sIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzIH0pOiBVcmxUcmVlIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmNvbW1hbmRzKSkge1xuICAgICAgY29uc3QgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlID0gdGhpcy5pbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgY29uc3Qgcm91dGVyOiBSb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBvcHRpb25zLmNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKGNvbW1hbmQpKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tYW5kLm91dGxldHMpIHtcbiAgICAgICAgICBjb25zdCBjb21tYW5kT3V0bGV0cyA9IHt9O1xuICAgICAgICAgIE9iamVjdC5rZXlzKGNvbW1hbmQub3V0bGV0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbW1hbmQub3V0bGV0cywga2V5KSkge1xuICAgICAgICAgICAgICBjb25zdCBvdXRsZXQgPSBjb21tYW5kLm91dGxldHNba2V5XTtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3V0bGV0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb21tYW5kT3V0bGV0cywga2V5LCB7XG4gICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogb3V0bGV0Lm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoeCkoZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29tbWFuZE91dGxldHMsIGtleSwge1xuICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG91dGxldCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvdXRsZXRzOiBjb21tYW5kT3V0bGV0cyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21tYW5kO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgbGV0IHJlcGxhY2VVcmwgPSB0cnVlO1xuICAgICAgaWYgKG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcyAmJiBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMucXVlcnlQYXJhbXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnF1ZXJ5UGFyYW1zKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMucXVlcnlQYXJhbXNba2V5XTtcbiAgICAgICAgICBxdWVyeVBhcmFtc1trZXldID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGV4dCkoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcyAmJiB0eXBlb2Ygb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLnJlcGxhY2VVcmwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJlcGxhY2VVcmwgPSBvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMucmVwbGFjZVVybDtcbiAgICAgIH1cbiAgICAgIGxldCBza2lwTG9jYXRpb25DaGFuZ2UgPSBmYWxzZTtcbiAgICAgIGlmIChvcHRpb25zLm5hdmlnYXRpb25FeHRyYXMgJiYgdHlwZW9mIG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNraXBMb2NhdGlvbkNoYW5nZSA9IG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2U7XG4gICAgICB9XG5cbiAgICAgIGxldCBmcmFnbWVudDogc3RyaW5nO1xuICAgICAgaWYgKG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcyAmJiB0eXBlb2Ygb3B0aW9ucy5uYXZpZ2F0aW9uRXh0cmFzLmZyYWdtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmcmFnbWVudCA9IG9wdGlvbnMubmF2aWdhdGlvbkV4dHJhcy5mcmFnbWVudDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLFxuICAgICAgICB7XG4gICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgcmVwbGFjZVVybCxcbiAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2UsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25BZHZhbmNlZENvbHVtbkFmdGVyUmVuZGVyIHtcbiAgYWZ0ZXJSZW5kZXIoY2VsbDogYW55LCBjZWxsRGF0YTogYW55LCByb3dEYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgTmVzdGVkUHJvcGVydHlGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YSwgdHlwZSwgcm93LCBtZXRhKSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICByZXR1cm4gYXQocm93LCBjb2x1bW4uZGF0YS5yZXBsYWNlKC9cXC8vZywgJy4nKSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgLy8gZ2V0IGZvcm1hdCBvcHRpb25zXG4gICAgY29uc3QgZm9ybWF0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgYnV0dG9uQ2xhc3M6ICdidG4gYnRuLWRlZmF1bHQnLFxuICAgIH0sIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gICAgLy8gZ2V0IHRleHQgY29udGVudFxuICAgIGxldCBidXR0b25UZXh0OiBzdHJpbmc7XG4gICAgbGV0IGJ1dHRvblRpdGxlID0gJyc7XG4gICAgaWYgKGZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCkge1xuICAgICAgYnV0dG9uVGV4dCA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnV0dG9uVGV4dCA9IGZvcm1hdE9wdGlvbnMuYnV0dG9uQ29udGVudDtcbiAgICB9XG4gICAgaWYgKGZvcm1hdE9wdGlvbnMuYnV0dG9uVGl0bGUpIHtcbiAgICAgIGJ1dHRvblRpdGxlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChmb3JtYXRPcHRpb25zLmJ1dHRvblRpdGxlKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5mb3JtYXRPcHRpb25zLmNvbW1hbmRzKSkge1xuICAgICAgbGV0IHJvdXRlckxpbmsgPSB0aGlzLmNyZWF0ZVVybFRyZWUocm93LCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cIiR7Zm9ybWF0T3B0aW9ucy5idXR0b25DbGFzc31cIiB0aXRsZT1cIiR7YnV0dG9uVGl0bGV9XCIgaHJlZj1cIiMke3JvdXRlckxpbmt9XCI+JHtidXR0b25UZXh0fTwvYT5gO1xuICAgIH1cbiAgICAvLyBhbmQgcmV0dXJuIGJ1dHRvblxuICAgIGNvbnN0IGhyZWYgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0aGlzLmZvcm1hdFN0cmluZykocm93KTtcbiAgICByZXR1cm4gYDxhIGNsYXNzPVwiJHtmb3JtYXRPcHRpb25zLmJ1dHRvbkNsYXNzfVwiIHRpdGxlPVwiJHtidXR0b25UaXRsZX1cIiBocmVmPVwiJHtocmVmfVwiPiR7YnV0dG9uVGV4dH08L2E+YDtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIHJldHVybiBgPGEgaHJlZj1cIiR7KEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKHRoaXMuZm9ybWF0U3RyaW5nKShyb3cpKX1cIj4ke2RhdGF9PC9hPmA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkxpbmtGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlclxuICBpbXBsZW1lbnRzIE9uQWR2YW5jZWRDb2x1bW5BZnRlclJlbmRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG5cbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICBjb25zdCBhY3Rpb25zID0gdGhpcy5hY3Rpb25zIHx8IFtdO1xuICAgICAgbGV0IGluZGV4ID0gMTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpb24sIHtcbiAgICAgICAgICBuYW1lOiBhY3Rpb24ubmFtZSB8fCBgYWN0aW9uJHtpbmRleH1gLFxuICAgICAgICB9KTtcbiAgICAgICAgaW5kZXggKz0gMTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiB0aGUgZHJvcGRvd24gbWVudSB3aXRoIDMgZG90c1xuICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSdkcm9wZG93biBkZXRhaWxzLWNvbnRyb2wnIGRhdGEtaWQ9JyR7ZGF0YX0nIGRhdGEtdHlwZT0nc3R1ZGVudCcgPlxuICAgICAgICAgICAgICAgICAgICA8YSBpZD1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLTJ4IHRleHQtZG90c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCI+XG4gICAgICAgICAgICAgICAgICAgICAke2FjdGlvbnMubWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICh4LnR5cGUgPT09ICdkaXZpZGVyJykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4LmZvcm1hdE9wdGlvbnMgJiYgeC5mb3JtYXRPcHRpb25zLmNvbW1hbmRzKSB7XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIHguZm9ybWF0T3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuIGA8YSBkYXRhLW5hbWU9JyR7eC5uYW1lfScgY2xhc3M9XCJkcm9wZG93bi1pdGVtJHt0eXBlb2YgeC5jbGFzc05hbWUgPT09ICdzdHJpbmcnICYmIHguY2xhc3NOYW1lLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIGAgJHt4LmNsYXNzTmFtZS50cmltKCl9YCA6ICcnfVwiIGhyZWY9XCIjJHt1cmxUcmVlLnRvU3RyaW5nKCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHgudGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYDxhIGRhdGEtbmFtZT0nJHt4Lm5hbWV9JyBjbGFzcz1cImRyb3Bkb3duLWl0ZW0ke3R5cGVvZiB4LmNsYXNzTmFtZSA9PT0gJ3N0cmluZycgJiYgeC5jbGFzc05hbWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYCAke3guY2xhc3NOYW1lLnRyaW0oKX1gIDogJyd9XCIgaHJlZj1cIiR7QWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoeC5ocmVmKShyb3cpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoeC50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oJycpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgcHVibGljIGFmdGVyUmVuZGVyKGNlbGw6IGFueSwgY2VsbERhdGE6IGFueSwgcm93RGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gYXNzaWduIGJvb3RzdHJhcCBkcm9wZG93biAoPylcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uQnV0dG9uRm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXJcbiAgaW1wbGVtZW50cyBPbkFkdmFuY2VkQ29sdW1uQWZ0ZXJSZW5kZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCByb3c6IGFueSwgbWV0YTogYW55KTogYW55IHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuXG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9ucyB8fCBbXTtcbiAgICAgIGxldCBpbmRleCA9IDE7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aW9uLCB7XG4gICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWUgfHwgYGFjdGlvbiR7aW5kZXh9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICB9XG4gICAgICBsZXQgYnV0dG9uVGV4dDogc3RyaW5nO1xuICAgICAgaWYgKHRoaXMuZm9ybWF0T3B0aW9ucyAmJiB0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uVGV4dCkge1xuICAgICAgICAvLyBpZiBidXR0b24gdGV4dCBpcyBhIGxpdGVyYWwgZXhwcmVzc2lvblxuICAgICAgICBpZiAodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRleHQuaW5jbHVkZXMoJyR7JykpIHtcbiAgICAgICAgICAvLyB1c2UgdGVtcGxhdGVcbiAgICAgICAgICBidXR0b25UZXh0ID0gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRleHQpKHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHRyYW5zbGF0ZSBpdFxuICAgICAgICAgIGJ1dHRvblRleHQgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5mb3JtYXRPcHRpb25zICYmIHRoaXMuZm9ybWF0T3B0aW9ucy5idXR0b25UaXRsZSkge1xuICAgICAgICBidXR0b25UaXRsZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQodGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvblRidXR0b25UaXRsZWV4dCk7XG4gICAgICB9XG4gICAgICBjb25zdCBidXR0b25DbGFzcyA9ICh0aGlzLmZvcm1hdE9wdGlvbnMgJiYgdGhpcy5mb3JtYXRPcHRpb25zLmJ1dHRvbkNsYXNzKSB8fCAnYnRuIGJ0bi1saWdodCc7XG4gICAgICAvLyByZXR1cm4gdGhlIGRyb3Bkb3duIG1lbnUgd2l0aCAzIGRvdHNcbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0nZHJvcGRvd24gZGV0YWlscy1jb250cm9sJyBkYXRhLWlkPScke2RhdGF9Jz5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCIke2J1dHRvbkNsYXNzfSBkcm9wZG93bi10b2dnbGVcIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiB0aXRsZT1cIiR7YnV0dG9uVGl0bGV9XCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duTWVudUJ1dHRvbi0ke2RhdGF9XCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51QnV0dG9uLSR7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICR7YWN0aW9ucy5tYXAoKHgpID0+IHtcbiAgICAgICAgaWYgKHgudHlwZSA9PT0gJ2RpdmlkZXInKSB7XG4gICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHguY29tbWFuZHMpIHtcbiAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5jcmVhdGVVcmxUcmVlKHJvdywgeCk7XG4gICAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiIyR7dXJsVHJlZS50b1N0cmluZygpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiJHtBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh4LmhyZWYpKHJvdyl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCh4LnRpdGxlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5gO1xuICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBwdWJsaWMgYWZ0ZXJSZW5kZXIoY2VsbDogYW55LCBjZWxsRGF0YTogYW55LCByb3dEYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBhc3NpZ24gYm9vdHN0cmFwIGRyb3Bkb3duICg/KVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25TcGxpdEJ1dHRvbkZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyXG4gIGltcGxlbWVudHMgT25BZHZhbmNlZENvbHVtbkFmdGVyUmVuZGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcblxuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmFjdGlvbnMgfHwgW107XG4gICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFjdGlvbiwge1xuICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lIHx8IGBhY3Rpb24ke2luZGV4fWAsXG4gICAgICAgIH0pO1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gKHRoaXMuZm9ybWF0T3B0aW9ucyAmJiB0aGlzLmZvcm1hdE9wdGlvbnMuYnV0dG9uQ2xhc3MpIHx8ICdidG4gYnRuLWxpZ2h0JztcbiAgICAgIC8vIHJldHVybiB0aGUgZHJvcGRvd24gbWVudSB3aXRoIDMgZG90c1xuICAgICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFjdGlvbnNbMF07XG4gICAgICBsZXQgZGVmYXVsdEFjdGlvbkhyZWY6IHN0cmluZztcbiAgICAgIGlmIChkZWZhdWx0QWN0aW9uICYmIGRlZmF1bHRBY3Rpb24uY29tbWFuZHMpIHtcbiAgICAgICAgZGVmYXVsdEFjdGlvbkhyZWYgPSAnIycgKyB0aGlzLmNyZWF0ZVVybFRyZWUocm93LCBkZWZhdWx0QWN0aW9uKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdEFjdGlvbkhyZWYgPSBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZShkZWZhdWx0QWN0aW9uLmhyZWYpKHJvdyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiJHtidXR0b25DbGFzc31cIiBocmVmPVwiJHtkZWZhdWx0QWN0aW9uSHJlZn1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoZGVmYXVsdEFjdGlvbi50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCIke2J1dHRvbkNsYXNzfSBkcm9wZG93bi10b2dnbGUgZHJvcGRvd24tdG9nZ2xlLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj4ke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoJ1RvZ2dsZSBEcm9wZG93bicpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51QnV0dG9uLSR7ZGF0YX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICR7YWN0aW9ucy5tYXAoKHgpID0+IHtcbiAgICAgICAgaWYgKHgudGl0bGUgPT09ICctJykge1xuICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4LmNvbW1hbmRzKSB7XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuY3JlYXRlVXJsVHJlZShyb3csIHgpO1xuICAgICAgICAgIHJldHVybiBgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiMke3VybFRyZWUudG9TdHJpbmcoKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoeC50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiR7QWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUoeC5ocmVmKShyb3cpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmluc3RhbnQoeC50aXRsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oJycpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgcHVibGljIGFmdGVyUmVuZGVyKGNlbGw6IGFueSwgY2VsbERhdGE6IGFueSwgcm93RGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gYXNzaWduIGJvb3RzdHJhcCBkcm9wZG93biAoPylcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0Um93Rm9ybWF0dGVyIGV4dGVuZHMgQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIge1xuICBwdWJsaWMgcmVuZGVyKGRhdGEsIHR5cGUsIHJvdywgbWV0YSkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgX3RwbCA9IGA8aW5wdXQgY2xhc3M9XCJjaGVja2JveCBjaGVja2JveC10aGVtZVwiIHR5cGU9XCJjaGVja2JveFwiXG4gaWQ9XCJzLSR7bWV0YS5yb3d9XCIgLz48bGFiZWwgZm9yPVwicy0ke21ldGEucm93fVwiPiZuYnNwOzwvbGFiZWw+YDtcbiAgICAgIHJldHVybiBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZShfdHBsKShyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhOiBhbnksIHR5cGU6IHN0cmluZywgcm93OiBhbnksIG1ldGE6IGFueSk6IGFueSB7XG4gICAgLy8gZ2V0IGNvbHVtblxuICAgIGNvbnN0IGNvbHVtbiA9IG1ldGEuc2V0dGluZ3MuYW9Db2x1bW5zW21ldGEuY29sXTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5kYXRhKSB7XG4gICAgICByZXR1cm4gQWR2YW5jZWRDb2x1bW5Gb3JtYXR0ZXIudGVtcGxhdGUodGhpcy5mb3JtYXRTdHJpbmcpKHJvdyk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRydWVGYWxzZUZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcblxuICBwdWJsaWMgcmVuZGVyKGRhdGEsIHR5cGUsIHJvdywgbWV0YSkge1xuICAgIHJldHVybiBkYXRhID8gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCgnVHJ1ZUZhbHNlLmxvbmcuWWVzJykgOlxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudCgnVHJ1ZUZhbHNlLmxvbmcuTm8nKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cblxuZGVjbGFyZSBpbnRlcmZhY2UgVHJhbnNsYXRpb25Gb3JtYXR0ZXJUZW1wbGF0ZSB7XG4gIHRyYW5zbGF0ZVRlbXBsYXRlPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25Gb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW46IFRyYW5zbGF0aW9uRm9ybWF0dGVyVGVtcGxhdGUgPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBkYXRhICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KFxuICAgICAgICBBZHZhbmNlZENvbHVtbkZvcm1hdHRlci50ZW1wbGF0ZSh0aGlzLmZvcm1hdFN0cmluZykoe1xuICAgICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKS5pbnN0YW50KCdVbmtub3duJyk7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGb3JtYXR0ZXIgZXh0ZW5kcyBBZHZhbmNlZENvbHVtbkZvcm1hdHRlciB7XG4gIHB1YmxpYyByZW5kZXIoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcsIHJvdzogYW55LCBtZXRhOiBhbnkpOiBhbnkge1xuICAgIC8vIGdldCBjb2x1bW5cbiAgICBjb25zdCBjb2x1bW4gPSBtZXRhLnNldHRpbmdzLmFvQ29sdW1uc1ttZXRhLmNvbF07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uZGF0YSkge1xuICAgICAgY29uc3QgZGF0ZVBpcGU6IERhdGVQaXBlID0gbmV3IERhdGVQaXBlKHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLmN1cnJlbnRMYW5nKTtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgJiYgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcK1xcZHsyfSQvLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZShkYXRhICsgJzowMCcpLCB0aGlzLmZvcm1hdFN0cmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGEsIHRoaXMuZm9ybWF0U3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmdDbGFzc0Zvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICAvLyBnZXQgY29sdW1uXG4gICAgY29uc3QgY29sdW1uID0gbWV0YS5zZXR0aW5ncy5hb0NvbHVtbnNbbWV0YS5jb2xdO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLmRhdGEpIHtcbiAgICAgIC8vIGdldCBmb3JtYXRPcHRpb25zXG4gICAgICBpZiAodGhpcy5mb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG5nQ2xhc3MgPSB0aGlzLmZvcm1hdE9wdGlvbnMubmdDbGFzcztcbiAgICAgICAgLy8gY2hlY2sgY29uZGl0aW9uIGZvciBlYWNoIGtleVxuICAgICAgICBjb2x1bW4ubmdDbGFzc1RlbXBsYXRlcyA9IGNvbHVtbi5uZ0NsYXNzVGVtcGxhdGVzIHx8IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZ0NsYXNzKSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyLnRlbXBsYXRlKG5nQ2xhc3Nba2V5XSkocm93KTtcbiAgICAgICAgICBjb25zdCBmbiA9IG5ldyBGdW5jdGlvbihgcmV0dXJuICR7cmVzdWx0fTtgKTtcbiAgICAgICAgICAvLyBpZiBjb25kaXRpb24gcmV0dXJucyB0cnVlIGFkZCBjbGFzc1xuICAgICAgICAgIGlmIChmbigpID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtrZXl9XCI+JHtkYXRhfTwvc3Bhbj5gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUZvcm1hdHRlciBleHRlbmRzIEFkdmFuY2VkQ29sdW1uRm9ybWF0dGVyIHtcbiAgcHVibGljIHJlbmRlcihkYXRhLCB0eXBlLCByb3csIG1ldGEpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmV0dXJuIElTTzYzOTEuZ2V0TmF0aXZlTmFtZShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlQ29sdW1uQ29uZmlndXJhdGlvbiB7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBzb3J0YWJsZT86IGJvb2xlYW47XG4gICAgY2xhc3M/OiBzdHJpbmc7XG4gICAgZGVmYXVsdENvbnRlbnQ/OiBzdHJpbmc7XG4gICAgZm9ybWF0dGVyPzogc3RyaW5nO1xuICAgIGZvcm1hdFN0cmluZz86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIHByb3BlcnR5Pzogc3RyaW5nO1xuICAgIG9yZGVyPzogc3RyaW5nO1xuICAgIGZvcm1hdE9wdGlvbnM/OiBhbnk7XG4gICAgZm9ybWF0dGVycz86IEFycmF5PGFueT47XG4gICAgdmlydHVhbD86IGJvb2xlYW47XG4gICAgZXhwb3J0PzogYm9vbGVhbjtcbiAgICBvcHRpb25hbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZUNvbmZpZ3VyYXRpb24ge1xuICAgIGNyaXRlcmlhOiBhbnk7XG4gICAgZGVmYXVsdHM6IGFueTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBtb2RlbDogc3RyaW5nO1xuICAgIHNlYXJjaEV4cHJlc3Npb24/OiBzdHJpbmc7XG4gICAgY29sdW1uczogQXJyYXk8VGFibGVDb2x1bW5Db25maWd1cmF0aW9uPjtcbiAgICBzZWFyY2hlczogQXJyYXk8YW55PjtcbiAgICBzZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgICBtdWx0aXBsZVNlbGVjdD86IGJvb2xlYW47XG59XG4iXX0=
|