@wavemaker/app-ng-runtime 11.5.3-rc.5503 → 11.5.4-8.5629
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.
- app-ng-runtime/components/base/bundles/index.umd.js +0 -1
- app-ng-runtime/components/base/esm2020/widgets/common/partial/partial.directive.mjs +1 -2
- app-ng-runtime/components/base/fesm2015/index.mjs +0 -1
- app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/base/fesm2020/index.mjs +0 -1
- app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +1 -3
- app-ng-runtime/components/chart/esm2020/chart.component.mjs +2 -4
- app-ng-runtime/components/chart/fesm2015/index.mjs +1 -3
- app-ng-runtime/components/chart/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/chart/fesm2020/index.mjs +1 -3
- app-ng-runtime/components/chart/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +2 -4
- app-ng-runtime/components/data/table/esm2020/table-column/table-column.props.mjs +1 -2
- app-ng-runtime/components/data/table/esm2020/table.component.mjs +3 -4
- app-ng-runtime/components/data/table/fesm2015/index.mjs +2 -4
- app-ng-runtime/components/data/table/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/fesm2020/index.mjs +2 -4
- app-ng-runtime/components/data/table/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +1 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +1 -2
- app-ng-runtime/components/navigation/popover/esm2020/popover.component.mjs +2 -3
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs +1 -2
- app-ng-runtime/components/navigation/popover/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs +1 -2
- app-ng-runtime/components/navigation/popover/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +0 -1
- app-ng-runtime/components/prefab/esm2020/prefab-container/prefab-container.directive.mjs +1 -2
- app-ng-runtime/components/prefab/fesm2015/index.mjs +0 -1
- app-ng-runtime/components/prefab/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/fesm2020/index.mjs +0 -1
- app-ng-runtime/components/prefab/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +24 -26
- app-ng-runtime/core/esm2020/utils/build-utils.mjs +25 -27
- app-ng-runtime/core/fesm2015/index.mjs +24 -26
- app-ng-runtime/core/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/core/fesm2020/index.mjs +24 -26
- app-ng-runtime/core/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +3 -3
- app-ng-runtime/variables/bundles/index.umd.js +7 -13
- app-ng-runtime/variables/esm2020/util/variable/variables.utils.mjs +8 -14
- app-ng-runtime/variables/fesm2015/index.mjs +7 -13
- app-ng-runtime/variables/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/variables/fesm2020/index.mjs +7 -13
- app-ng-runtime/variables/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/variables.utils.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/prefab/src/prefab.props.ts","../../../../projects/components/widgets/prefab/src/prefab.directive.ts","../../../../projects/components/widgets/prefab/src/prefab-container/prefab-container.props.ts","../../../../projects/components/widgets/prefab/src/prefab-container/prefab-container.directive.ts","../../../../projects/components/widgets/prefab/src/prefab.module.ts","../../../../projects/components/widgets/prefab/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING } from '@wm/components/base'; \n\nexport const prefabProps = new Map(\n [\n ['animation', PROP_STRING],\n ['class', {value: '', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n);\n","import {Attribute, ChangeDetectorRef, Directive, ElementRef, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {setCSS, noop} from '@wm/core';\n\nimport { PROP_TYPE, register, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport { prefabProps } from './prefab.props';\n\nconst DEFAULT_CLS = 'app-prefab';\n\nconst registeredPropsSet = new Set<string>();\n\ndeclare const _;\n\n@Directive({\n selector: 'section[wmPrefab]',\n providers: [\n provideAsWidgetRef(PrefabDirective)\n ]\n})\nexport class PrefabDirective extends StylableComponent implements OnDestroy {\n\n widgetType: string;\n prefabName: string;\n name: string;\n propsReady: Function;\n\n constructor(inj: Injector, elRef: ElementRef, cdr: ChangeDetectorRef, @Attribute('prefabname') prefabName) {\n const widgetType = `wm-prefab-${prefabName}`;\n const WIDGET_CONFIG = {widgetType, hostClass: DEFAULT_CLS};\n let resolveFn: Function = noop;\n\n super(inj, WIDGET_CONFIG, new Promise(res => resolveFn = res));\n this.propsReady = resolveFn;\n this.prefabName = prefabName;\n this.widgetType = widgetType;\n this.name = elRef.nativeElement.getAttribute('name');\n\n styler(this.nativeElement, this);\n\n // Call on property change on name to set name attribute on element.\n this.registerReadyStateListener(() => {\n super.onPropertyChange('name', this.name);\n });\n }\n\n onStyleChange(key: string, nv: any, ov: any) {\n if (key === 'height') {\n setCSS(this.nativeElement, 'overflow', 'auto');\n }\n }\n\n public setProps(config) {\n if (!config || !config.properties) {\n return;\n }\n\n if (!registeredPropsSet.has(this.widgetType)) {\n register(this.widgetType, this.prepareProps(config.properties));\n }\n\n this.propsReady();\n }\n\n protected handleEvent() {\n // do not call the super;\n // prevent events from getting registered\n }\n\n private prepareProps(props = {}) {\n const propsMap = new Map(prefabProps);\n Object.entries(props).forEach(([k, v]: [string, any]) => {\n let type = PROP_TYPE.STRING;\n\n if (v.type === 'boolean') {\n type = PROP_TYPE.BOOLEAN;\n } else if (v.type === 'number') {\n type = PROP_TYPE.NUMBER;\n } else if (v.type !== 'string') {\n type = v.type;\n }\n\n // Do not set the 'bind:*' values\n propsMap.set(k, {type, value: _.startsWith(v.value, 'bind:') ? undefined : v.value});\n });\n\n registeredPropsSet.add(this.widgetType);\n\n return propsMap;\n }\n\n ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-prefab-container',\n new Map(\n [\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ]\n )\n );\n};\n","import {Directive, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport {Viewport, ViewportEvent} from '@wm/core';\nimport { registerProps } from './prefab-container.props';\n\nconst DEFAULT_CLS = 'app-prefab-container full-height';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-prefab-container',\n hostClass: DEFAULT_CLS\n};\ndeclare const _;\n\n@Directive({\n selector: '[wmPrefabContainer]',\n providers: [\n provideAsWidgetRef(PrefabContainerDirective)\n ]\n})\nexport class PrefabContainerDirective extends StylableComponent implements OnDestroy {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, private viewport: Viewport) {\n super(inj, WIDGET_CONFIG);\n styler(this.nativeElement, this);\n\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, data => this.callback('resize', data)));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, data => this.callback('orientationchange', data)));\n }\n\n private callback(eventName, locals?: object) {\n locals = _.assign({ widget: this }, locals);\n this.invokeEventCallback(eventName, locals);\n }\n\n public ngOnAttach() {\n this.callback('attach');\n }\n\n public ngOnDetach() {\n this.callback('detach');\n }\n\n public ngOnDestroy() {\n this.callback('destroy');\n super.ngOnDestroy();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { PrefabDirective } from './prefab.directive';\nimport { PrefabContainerDirective } from './prefab-container/prefab-container.directive';\n\nconst components = [\n PrefabDirective,\n PrefabContainerDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PrefabModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DEFAULT_CLS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/prefab/src/prefab.props.ts","../../../../projects/components/widgets/prefab/src/prefab.directive.ts","../../../../projects/components/widgets/prefab/src/prefab-container/prefab-container.props.ts","../../../../projects/components/widgets/prefab/src/prefab-container/prefab-container.directive.ts","../../../../projects/components/widgets/prefab/src/prefab.module.ts","../../../../projects/components/widgets/prefab/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING } from '@wm/components/base'; \n\nexport const prefabProps = new Map(\n [\n ['animation', PROP_STRING],\n ['class', {value: '', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n);\n","import {Attribute, ChangeDetectorRef, Directive, ElementRef, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {setCSS, noop} from '@wm/core';\n\nimport { PROP_TYPE, register, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport { prefabProps } from './prefab.props';\n\nconst DEFAULT_CLS = 'app-prefab';\n\nconst registeredPropsSet = new Set<string>();\n\ndeclare const _;\n\n@Directive({\n selector: 'section[wmPrefab]',\n providers: [\n provideAsWidgetRef(PrefabDirective)\n ]\n})\nexport class PrefabDirective extends StylableComponent implements OnDestroy {\n\n widgetType: string;\n prefabName: string;\n name: string;\n propsReady: Function;\n\n constructor(inj: Injector, elRef: ElementRef, cdr: ChangeDetectorRef, @Attribute('prefabname') prefabName) {\n const widgetType = `wm-prefab-${prefabName}`;\n const WIDGET_CONFIG = {widgetType, hostClass: DEFAULT_CLS};\n let resolveFn: Function = noop;\n\n super(inj, WIDGET_CONFIG, new Promise(res => resolveFn = res));\n this.propsReady = resolveFn;\n this.prefabName = prefabName;\n this.widgetType = widgetType;\n this.name = elRef.nativeElement.getAttribute('name');\n\n styler(this.nativeElement, this);\n\n // Call on property change on name to set name attribute on element.\n this.registerReadyStateListener(() => {\n super.onPropertyChange('name', this.name);\n });\n }\n\n onStyleChange(key: string, nv: any, ov: any) {\n if (key === 'height') {\n setCSS(this.nativeElement, 'overflow', 'auto');\n }\n }\n\n public setProps(config) {\n if (!config || !config.properties) {\n return;\n }\n\n if (!registeredPropsSet.has(this.widgetType)) {\n register(this.widgetType, this.prepareProps(config.properties));\n }\n\n this.propsReady();\n }\n\n protected handleEvent() {\n // do not call the super;\n // prevent events from getting registered\n }\n\n private prepareProps(props = {}) {\n const propsMap = new Map(prefabProps);\n Object.entries(props).forEach(([k, v]: [string, any]) => {\n let type = PROP_TYPE.STRING;\n\n if (v.type === 'boolean') {\n type = PROP_TYPE.BOOLEAN;\n } else if (v.type === 'number') {\n type = PROP_TYPE.NUMBER;\n } else if (v.type !== 'string') {\n type = v.type;\n }\n\n // Do not set the 'bind:*' values\n propsMap.set(k, {type, value: _.startsWith(v.value, 'bind:') ? undefined : v.value});\n });\n\n registeredPropsSet.add(this.widgetType);\n\n return propsMap;\n }\n\n ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-prefab-container',\n new Map(\n [\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ]\n )\n );\n};\n","import {Directive, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport {Viewport, ViewportEvent} from '@wm/core';\nimport { registerProps } from './prefab-container.props';\n\nconst DEFAULT_CLS = 'app-prefab-container full-height';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-prefab-container',\n hostClass: DEFAULT_CLS\n};\ndeclare const _;\n\n@Directive({\n selector: '[wmPrefabContainer]',\n providers: [\n provideAsWidgetRef(PrefabContainerDirective)\n ]\n})\nexport class PrefabContainerDirective extends StylableComponent implements OnDestroy {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, private viewport: Viewport) {\n super(inj, WIDGET_CONFIG);\n styler(this.nativeElement, this);\n\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, data => this.callback('resize', data)));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, data => this.callback('orientationchange', data)));\n }\n\n private callback(eventName, locals?: object) {\n locals = _.assign({ widget: this }, locals);\n this.invokeEventCallback(eventName, locals);\n }\n\n public ngOnAttach() {\n this.callback('attach');\n }\n\n public ngOnDetach() {\n this.callback('detach');\n }\n\n public ngOnDestroy() {\n this.callback('destroy');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { PrefabDirective } from './prefab.directive';\nimport { PrefabContainerDirective } from './prefab-container/prefab-container.directive';\n\nconst components = [\n PrefabDirective,\n PrefabContainerDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PrefabModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DEFAULT_CLS"],"mappings":"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"}
|
|
@@ -111,73 +111,71 @@
|
|
|
111
111
|
let tmpl;
|
|
112
112
|
const updateOn = attrs.get('updateon');
|
|
113
113
|
const updateOnTmpl = updateOn ? `updateon="${updateOn}"` : '';
|
|
114
|
-
const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;
|
|
115
|
-
const showTmpl = showineditmode == 'false' ? `show="${showineditmode}"` : `show.bind="${showineditmode}"`;
|
|
116
114
|
switch (widgetType) {
|
|
117
115
|
case exports.FormWidgetType.AUTOCOMPLETE:
|
|
118
116
|
case exports.FormWidgetType.TYPEAHEAD:
|
|
119
|
-
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
117
|
+
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></div>`;
|
|
120
118
|
break;
|
|
121
119
|
case exports.FormWidgetType.CHECKBOX:
|
|
122
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
120
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
|
|
123
121
|
break;
|
|
124
122
|
case exports.FormWidgetType.CHECKBOXSET:
|
|
125
|
-
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
123
|
+
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
|
|
126
124
|
break;
|
|
127
125
|
case exports.FormWidgetType.CHIPS:
|
|
128
|
-
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
126
|
+
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
|
|
129
127
|
break;
|
|
130
128
|
case exports.FormWidgetType.COLORPICKER:
|
|
131
|
-
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
129
|
+
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></div>`;
|
|
132
130
|
break;
|
|
133
131
|
case exports.FormWidgetType.CURRENCY:
|
|
134
|
-
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}
|
|
132
|
+
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}></div>`;
|
|
135
133
|
break;
|
|
136
134
|
case exports.FormWidgetType.DATE:
|
|
137
|
-
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
135
|
+
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
138
136
|
break;
|
|
139
137
|
case exports.FormWidgetType.DATETIME:
|
|
140
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
138
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
141
139
|
break;
|
|
142
140
|
case exports.FormWidgetType.NUMBER:
|
|
143
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}
|
|
141
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}></div>`;
|
|
144
142
|
break;
|
|
145
143
|
case exports.FormWidgetType.PASSWORD:
|
|
146
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}
|
|
144
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
|
|
147
145
|
break;
|
|
148
146
|
case exports.FormWidgetType.RADIOSET:
|
|
149
|
-
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}
|
|
147
|
+
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
|
|
150
148
|
break;
|
|
151
149
|
case exports.FormWidgetType.RATING:
|
|
152
|
-
tmpl = `<div wmRating ${innerTmpl}
|
|
150
|
+
tmpl = `<div wmRating ${innerTmpl}></div>`;
|
|
153
151
|
break;
|
|
154
152
|
case exports.FormWidgetType.RICHTEXT:
|
|
155
|
-
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}
|
|
153
|
+
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}></div>`;
|
|
156
154
|
break;
|
|
157
155
|
case exports.FormWidgetType.SELECT:
|
|
158
|
-
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
156
|
+
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></wm-select>`;
|
|
159
157
|
break;
|
|
160
158
|
case exports.FormWidgetType.TOGGLE:
|
|
161
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"
|
|
159
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"></div>`;
|
|
162
160
|
break;
|
|
163
161
|
case exports.FormWidgetType.SLIDER:
|
|
164
|
-
tmpl = `<div wmSlider ${innerTmpl}
|
|
162
|
+
tmpl = `<div wmSlider ${innerTmpl}></div>`;
|
|
165
163
|
break;
|
|
166
164
|
case exports.FormWidgetType.SWITCH:
|
|
167
|
-
tmpl = `<div wmSwitch ${innerTmpl}
|
|
165
|
+
tmpl = `<div wmSwitch ${innerTmpl}></div>`;
|
|
168
166
|
break;
|
|
169
167
|
case exports.FormWidgetType.TEXT:
|
|
170
168
|
const inputType = options.inputType || 'inputtype';
|
|
171
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}
|
|
169
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
|
|
172
170
|
break;
|
|
173
171
|
case exports.FormWidgetType.TEXTAREA:
|
|
174
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}
|
|
172
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
|
|
175
173
|
break;
|
|
176
174
|
case exports.FormWidgetType.TIME:
|
|
177
|
-
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
175
|
+
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
178
176
|
break;
|
|
179
177
|
case exports.FormWidgetType.TIMESTAMP:
|
|
180
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"
|
|
178
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"></div>`;
|
|
181
179
|
break;
|
|
182
180
|
case exports.FormWidgetType.UPLOAD:
|
|
183
181
|
const counter = options.counter;
|
|
@@ -186,7 +184,7 @@
|
|
|
186
184
|
const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);
|
|
187
185
|
if (uploadProps) {
|
|
188
186
|
tmpl = `<form name="${uploadProps.formName}" ${innerTmpl}>
|
|
189
|
-
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}
|
|
187
|
+
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}/>
|
|
190
188
|
</form>`;
|
|
191
189
|
}
|
|
192
190
|
else {
|
|
@@ -196,11 +194,11 @@
|
|
|
196
194
|
<i class="wi wi-file"></i></a>
|
|
197
195
|
<input ${innerTmpl} class="app-blob-upload" [ngClass]="{'file-readonly': ${counter}.readonly}" ${eventTmpl}
|
|
198
196
|
[required]="${counter}.required" type="file" name="${attrs.get('key') || attrs.get('name')}_formWidget" [readonly]="${counter}.readonly"
|
|
199
|
-
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted"
|
|
197
|
+
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted">`;
|
|
200
198
|
}
|
|
201
199
|
break;
|
|
202
200
|
default:
|
|
203
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}
|
|
201
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
|
|
204
202
|
break;
|
|
205
203
|
}
|
|
206
204
|
return tmpl;
|
|
@@ -17,73 +17,71 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
17
17
|
let tmpl;
|
|
18
18
|
const updateOn = attrs.get('updateon');
|
|
19
19
|
const updateOnTmpl = updateOn ? `updateon="${updateOn}"` : '';
|
|
20
|
-
const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;
|
|
21
|
-
const showTmpl = showineditmode == 'false' ? `show="${showineditmode}"` : `show.bind="${showineditmode}"`;
|
|
22
20
|
switch (widgetType) {
|
|
23
21
|
case FormWidgetType.AUTOCOMPLETE:
|
|
24
22
|
case FormWidgetType.TYPEAHEAD:
|
|
25
|
-
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
23
|
+
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></div>`;
|
|
26
24
|
break;
|
|
27
25
|
case FormWidgetType.CHECKBOX:
|
|
28
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
26
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
|
|
29
27
|
break;
|
|
30
28
|
case FormWidgetType.CHECKBOXSET:
|
|
31
|
-
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
29
|
+
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
|
|
32
30
|
break;
|
|
33
31
|
case FormWidgetType.CHIPS:
|
|
34
|
-
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
32
|
+
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
|
|
35
33
|
break;
|
|
36
34
|
case FormWidgetType.COLORPICKER:
|
|
37
|
-
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
35
|
+
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></div>`;
|
|
38
36
|
break;
|
|
39
37
|
case FormWidgetType.CURRENCY:
|
|
40
|
-
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}
|
|
38
|
+
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}></div>`;
|
|
41
39
|
break;
|
|
42
40
|
case FormWidgetType.DATE:
|
|
43
|
-
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
41
|
+
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
44
42
|
break;
|
|
45
43
|
case FormWidgetType.DATETIME:
|
|
46
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
44
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
47
45
|
break;
|
|
48
46
|
case FormWidgetType.NUMBER:
|
|
49
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}
|
|
47
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}></div>`;
|
|
50
48
|
break;
|
|
51
49
|
case FormWidgetType.PASSWORD:
|
|
52
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}
|
|
50
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
|
|
53
51
|
break;
|
|
54
52
|
case FormWidgetType.RADIOSET:
|
|
55
|
-
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}
|
|
53
|
+
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
|
|
56
54
|
break;
|
|
57
55
|
case FormWidgetType.RATING:
|
|
58
|
-
tmpl = `<div wmRating ${innerTmpl}
|
|
56
|
+
tmpl = `<div wmRating ${innerTmpl}></div>`;
|
|
59
57
|
break;
|
|
60
58
|
case FormWidgetType.RICHTEXT:
|
|
61
|
-
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}
|
|
59
|
+
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}></div>`;
|
|
62
60
|
break;
|
|
63
61
|
case FormWidgetType.SELECT:
|
|
64
|
-
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
62
|
+
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></wm-select>`;
|
|
65
63
|
break;
|
|
66
64
|
case FormWidgetType.TOGGLE:
|
|
67
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"
|
|
65
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"></div>`;
|
|
68
66
|
break;
|
|
69
67
|
case FormWidgetType.SLIDER:
|
|
70
|
-
tmpl = `<div wmSlider ${innerTmpl}
|
|
68
|
+
tmpl = `<div wmSlider ${innerTmpl}></div>`;
|
|
71
69
|
break;
|
|
72
70
|
case FormWidgetType.SWITCH:
|
|
73
|
-
tmpl = `<div wmSwitch ${innerTmpl}
|
|
71
|
+
tmpl = `<div wmSwitch ${innerTmpl}></div>`;
|
|
74
72
|
break;
|
|
75
73
|
case FormWidgetType.TEXT:
|
|
76
74
|
const inputType = options.inputType || 'inputtype';
|
|
77
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}
|
|
75
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
|
|
78
76
|
break;
|
|
79
77
|
case FormWidgetType.TEXTAREA:
|
|
80
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}
|
|
78
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
|
|
81
79
|
break;
|
|
82
80
|
case FormWidgetType.TIME:
|
|
83
|
-
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
81
|
+
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
84
82
|
break;
|
|
85
83
|
case FormWidgetType.TIMESTAMP:
|
|
86
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"
|
|
84
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"></div>`;
|
|
87
85
|
break;
|
|
88
86
|
case FormWidgetType.UPLOAD:
|
|
89
87
|
const counter = options.counter;
|
|
@@ -92,7 +90,7 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
92
90
|
const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);
|
|
93
91
|
if (uploadProps) {
|
|
94
92
|
tmpl = `<form name="${uploadProps.formName}" ${innerTmpl}>
|
|
95
|
-
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}
|
|
93
|
+
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}/>
|
|
96
94
|
</form>`;
|
|
97
95
|
}
|
|
98
96
|
else {
|
|
@@ -102,11 +100,11 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
102
100
|
<i class="wi wi-file"></i></a>
|
|
103
101
|
<input ${innerTmpl} class="app-blob-upload" [ngClass]="{'file-readonly': ${counter}.readonly}" ${eventTmpl}
|
|
104
102
|
[required]="${counter}.required" type="file" name="${attrs.get('key') || attrs.get('name')}_formWidget" [readonly]="${counter}.readonly"
|
|
105
|
-
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted"
|
|
103
|
+
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted">`;
|
|
106
104
|
}
|
|
107
105
|
break;
|
|
108
106
|
default:
|
|
109
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}
|
|
107
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
|
|
110
108
|
break;
|
|
111
109
|
}
|
|
112
110
|
return tmpl;
|
|
@@ -258,4 +256,4 @@ export const getRowActionAttrs = attrs => {
|
|
|
258
256
|
});
|
|
259
257
|
return tmpl;
|
|
260
258
|
};
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELGtEQUFrRDtBQUNsRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLE9BQVEsRUFBRSxTQUFVLEVBQUUsRUFBRTtJQUN2RCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7U0FDN0g7SUFDSixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLHlDQUF5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsU0FBaUIsRUFBRSxLQUEyQixFQUFFLFVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDM0gsSUFBSSxJQUFJLENBQUM7SUFDVCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFD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QUMzQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDaEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN4QixDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUM7SUFDbEMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDcEMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLENBQUM7SUFDbEQsQ0FBQyx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQztDQUNyRCxDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsRUFBRTtJQUNyQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuaW1wb3J0IHsgRm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi9lbnVtcy9lbnVtcyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuLy8gRm9yIGh0bWwgdXBsb2FkIHdpZGdldCwgYWRkIGV2ZW50cyBvbiBpbnB1dCB0YWdcbmNvbnN0IGdldFVwbG9hZEV2ZW50VG1wbCA9IChhdHRycywgY291bnRlcj8sIGZpZWxkTmFtZT8pID0+IHtcbiAgICBsZXQgZXZlbnRUbXBsID0gJyc7XG4gICAgYXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICBpZiAoa2V5ICYmIGtleS5lbmRzV2l0aCgnLmV2ZW50JykpIHtcbiAgICAgICAgICAgY29uc3QgZXZlbnROYW1lID0ga2V5LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgIGNvbnN0IGNvdW50ZXJUbCA9IGNvdW50ZXIgPyBgJHtjb3VudGVyfS5gIDogJyc7XG4gICAgICAgICAgIGV2ZW50VG1wbCA9IGAgJHtldmVudFRtcGx9ICgke2V2ZW50TmFtZX0pPVwiJHtjb3VudGVyVGx9dHJpZ2dlclVwbG9hZEV2ZW50KCRldmVudCwgJyR7ZXZlbnROYW1lfScsICcke2ZpZWxkTmFtZX0nLCByb3cpXCIgYDtcbiAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGV2ZW50VG1wbDtcbn07XG5cbi8vIE1ldGhvZCB0byBnZXQgdGhlIGZvcm0gd2lkZ2V0IHRlbXBsYXRlXG5leHBvcnQgY29uc3QgZ2V0Rm9ybVdpZGdldFRlbXBsYXRlID0gKHdpZGdldFR5cGU6IHN0cmluZywgaW5uZXJUbXBsOiBzdHJpbmcsIGF0dHJzPzogTWFwPHN0cmluZywgc3RyaW5nPiwgb3B0aW9uczogYW55ID0ge30pID0+IHtcbiAgICBsZXQgdG1wbDtcbiAgICBjb25zdCB1cGRhdGVPbiA9IGF0dHJzLmdldCgndXBkYXRlb24nKTtcbiAgICBjb25zdCB1cGRhdGVPblRtcGwgPSB1cGRhdGVPbiA/IGB1cGRhdGVvbj1cIiR7dXBkYXRlT259XCJgIDogJyc7XG4gICAgY29uc3Qgc2hvd2luZWRpdG1vZGUgPSBhdHRycy5nZXQoJ3Nob3dpbmVkaXRtb2RlJykgfHwgYXR0cnMuZ2V0KCdzaG93aW5lZGl0bW9kZS5iaW5kJykgfHwgdHJ1ZTtcbiAgICBjb25zdCBzaG93VG1wbDogc3RyaW5nICA9IHNob3dpbmVkaXRtb2RlID09ICdmYWxzZSc/IGBzaG93PVwiJHtzaG93aW5lZGl0bW9kZX1cImA6IGBzaG93LmJpbmQ9XCIke3Nob3dpbmVkaXRtb2RlfVwiYDtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFEOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtU2VhcmNoIHR5cGU9XCJhdXRvY29tcGxldGVcIiBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUNoZWNrYm94ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1hTRVQ6XG4gICAgICAgICAgICB0bXBsID0gYDx1bCByb2xlPVwiZ3JvdXBcIiB3bUNoZWNrYm94c2V0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSElQUzpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHdtQ2hpcHMgcm9sZT1cImlucHV0XCIgZGVib3VuY2V0aW1lPVwiJHthdHRycy5nZXQoJ2RlYm91bmNldGltZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUNvbG9yUGlja2VyICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DdXJyZW5jeSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3VwZGF0ZU9uVG1wbH0gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtRGF0ZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEVUSU1FOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtRGF0ZVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5OVU1CRVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21OdW1iZXIgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJudW1iZXJcIiBhcmlhLWxhYmVsPVwiT25seSBudW1iZXJzXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5QQVNTV09SRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwicGFzc3dvcmRcIiBhcmlhLWxhYmVsPVwiRW50ZXIgcGFzc3dvcmRcIiAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFESU9TRVQ6XG4gICAgICAgICAgICB0bXBsID0gYDx1bCByb2xlPVwicmFkaW9ncm91cFwiIHdtUmFkaW9zZXQgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBVElORzpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVJhdGluZyAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJJQ0hURVhUOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtUmljaFRleHRFZGl0b3Igcm9sZT1cInRleHRib3hcIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNFTEVDVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLXNlbGVjdCAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC93bS1zZWxlY3Q+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRPR0dMRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUNoZWNrYm94ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidG9nZ2xlXCIgcm9sZT1cImNoZWNrYm94XCIgYXJpYS1sYWJlbD1cIlRvZ2dsZSBidXR0b25cIiAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0xJREVSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtU2xpZGVyICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU1dJVENIOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtU3dpdGNoICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVEVYVDpcbiAgICAgICAgICAgIGNvbnN0IGlucHV0VHlwZSA9IG9wdGlvbnMuaW5wdXRUeXBlIHx8ICdpbnB1dHR5cGUnO1xuICAgICAgICAgICAgdG1wbCA9IGA8d20taW5wdXQgJHtpbm5lclRtcGx9ICAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwiJHthdHRycy5nZXQoaW5wdXRUeXBlKSB8fCAndGV4dCd9XCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRFWFRBUkVBOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20tdGV4dGFyZWEgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHJvbGU9XCJ0ZXh0Ym94XCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20tdGV4dGFyZWE+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21UaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRVNUQU1QOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtRGF0ZVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9IHJvbGU9XCJpbnB1dFwiICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQ6XG4gICAgICAgICAgICBjb25zdCBjb3VudGVyID0gb3B0aW9ucy5jb3VudGVyO1xuICAgICAgICAgICAgY29uc3QgcENvdW50ZXIgPSBvcHRpb25zLnBDb3VudGVyO1xuICAgICAgICAgICAgY29uc3QgdXBsb2FkUHJvcHMgPSBvcHRpb25zLnVwbG9hZFByb3BzO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRUbXBsID0gZ2V0VXBsb2FkRXZlbnRUbXBsKGF0dHJzLCBjb3VudGVyLCB1cGxvYWRQcm9wcyAmJiB1cGxvYWRQcm9wcy5uYW1lKTtcbiAgICAgICAgICAgIGlmICh1cGxvYWRQcm9wcykge1xuICAgICAgICAgICAgICAgIHRtcGwgPSBgPGZvcm0gbmFtZT1cIiR7dXBsb2FkUHJvcHMuZm9ybU5hbWV9XCIgJHtpbm5lclRtcGx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb2N1cy10YXJnZXQgY2xhc3M9XCJmaWxlLXVwbG9hZFwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIiR7dXBsb2FkUHJvcHMubmFtZX1cIiAke2V2ZW50VG1wbH0gJHtzaG93VG1wbH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPmA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRtcGwgPSBgPGEgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCIgaHJlZj1cInt7JHtjb3VudGVyfS5ocmVmfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdJZj1cIiR7Y291bnRlcn0uZmlsZXR5cGUgPT09ICdpbWFnZScgJiYgJHtjb3VudGVyfS5ocmVmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHN0eWxlPVwiaGVpZ2h0OjJlbVwiIGNsYXNzPVwid2kgd2ktZmlsZVwiIFtzcmNdPVwiJHtjb3VudGVyfS5ocmVmXCIvPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlICE9PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ3aSB3aS1maWxlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAke2lubmVyVG1wbH0gY2xhc3M9XCJhcHAtYmxvYi11cGxvYWRcIiBbbmdDbGFzc109XCJ7J2ZpbGUtcmVhZG9ubHknOiAke2NvdW50ZXJ9LnJlYWRvbmx5fVwiICR7ZXZlbnRUbXBsfVxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiR7Y291bnRlcn0ucmVxdWlyZWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke2F0dHJzLmdldCgna2V5JykgfHwgYXR0cnMuZ2V0KCduYW1lJyl9X2Zvcm1XaWRnZXRcIiBbcmVhZG9ubHldPVwiJHtjb3VudGVyfS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cIiEke3BDb3VudGVyfS5pc1VwZGF0ZU1vZGVcIiBbYWNjZXB0XT1cIiR7Y291bnRlcn0ucGVybWl0dGVkXCIgJHtzaG93VG1wbH0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdG1wbCA9IGA8d20taW5wdXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJ0ZXh0XCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdG1wbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZXF1aXJlZEZvcm1XaWRnZXQgPSAod2lkZ2V0VHlwZSk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRZUEVBSEVBRDpcbiAgICAgICAgICAgIHJldHVybiAnd20tc2VhcmNoJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSElQUzpcbiAgICAgICAgICAgIHJldHVybiAnd20tY2hpcHMnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jb2xvcnBpY2tlcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWN1cnJlbmN5JztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1kYXRlJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZXRpbWUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUU6XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRVNUQU1QOlxuICAgICAgICAgICAgcmV0dXJuICd3bS10aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkc6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXJhdGluZyc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXJpY2h0ZXh0ZWRpdG9yJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNsaWRlcic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXRleHQnO1xuICAgIH1cbn07XG5cbi8vIFRoaXMgbWVodG9kIGlzIHVzZWQgdG8gYWRkIGRhdGFzZXRib3VuZGV4cHIgYXR0cmlidXRlIGZvciBub2RlXG5jb25zdCBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlID0gKGNoaWxkTm9kZTogRWxlbWVudCwgYXR0cjogQXR0cmlidXRlLCBhdHRyVmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGF0dHJWYWx1ZSA9IGF0dHJWYWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICBjb25zdCBkYXRhc2V0Qm91bmRBdHRyaWJ1dGUgPSBjaGlsZE5vZGUuYXR0cnMuZmluZCggYSA9PiBhLm5hbWUgPT09ICdkYXRhc2V0Ym91bmRleHByJyk7XG4gICAgaWYgKGF0dHIubmFtZSA9PT0gJ2RhdGFzZXQnICYmICFkYXRhc2V0Qm91bmRBdHRyaWJ1dGUpIHtcbiAgICAgICAgY2hpbGROb2RlLmF0dHJzLnB1c2gobmV3IEF0dHJpYnV0ZSgnZGF0YXNldGJvdW5kZXhwcicsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCBhdHRyLmtleVNwYW4sIGF0dHIudmFsdWVTcGFuLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpO1xuICAgIH1cbn07XG5cblxuLyoqXG4gKiBleHA6IFVzZXIgYnVpbHQgYmluZCBleHByZXNzaW9uXG4gKiAgVG8gY2hlY2sgdGhlIGN1c3RvbSBwaXBlIGV4cHJlc3Npb25zLlxuICogIElmIHVzZXIgdXNlIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9uIGl0IHdpbGwgY2hlY2sgaW4gdGhlIGV4cC4gdGhhdCBcImN1c3RvbVwiIHN0cmluZyBleGlzdCBvciBub3Qgd2l0aCAoOikgc3ludGF4LlxuICogIEVnOiBjdXN0b206XG4gKiAgICAgIGN1c3RvbSAgICA6XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24gPSBmdW5jdGlvbihleHApe1xuICAgIGxldCBjdXN0b21SZWdFeCA9IC8oY3VzdG9tKFxccyo6KSkvZztcbiAgICBsZXQgbWF0Y2hlcyA9IGV4cC5tYXRjaChjdXN0b21SZWdFeCk7XG4gICAgcmV0dXJuIG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGg7XG59XG5cblxuLy8gVGhlIGJvdW5kIHZhbHVlIGlzIHJlcGxhY2VkIHdpdGgge3tpdGVtLmZpZWxkbmFtZX19IGhlcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBsaXZlTGlzdCB3aGVuIGNvbXBpbGluZyBpbm5lciBlbGVtZW50c1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRlbXBsYXRlQXR0cnMgPSAocm9vdE5vZGU6IEVsZW1lbnQgfCBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldDogc3RyaW5nLCB3aWRnZXROYW1lOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcgPSAnJywgcmVmZXJlbmNlTmFtZTogc3RyaW5nID0gJ2l0ZW0nKSA9PiB7XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRQYXJlbnREYXRhc2V0ID0gcGFyZW50RGF0YVNldC5yZXBsYWNlKC8oW15hLXpBLVowLTkuXSkvZywgJ1xcXFwkMScpO1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnKCcgKyBzYW5pdGl6ZWRQYXJlbnREYXRhc2V0ICsgJykoXFxcXFswXFxcXF0pPyguZGF0YVxcXFxbXFxcXCRpXFxcXF0pPyguY29udGVudFxcXFxbXFxcXCRpXFxcXF0pPyhcXFxcW1xcXFwkaVxcXFxdKT8nLCAnZycpO1xuICAgIGxldCBjdXJyZW50SXRlbVJlZ0V4O1xuICAgIGxldCBjdXJyZW50SXRlbVdpZGdldHNSZWdFeDtcbiAgICBsZXQgZm9ybVdpZGdldHNSZWdleDtcbiAgICBsZXQgbm9kZXM6IEFycmF5PEVsZW1lbnQ+O1xuICAgIGNvbnN0IHdpZGdldExpc3QgPSB7XG4gICAgICAgICd3bS1saXN0JzogWydpdGVtY2xhc3MnLCAnZGlzYWJsZWl0ZW0nLCAnZGF0YXNldCddXG4gICAgfTtcblxuICAgIGlmICh3aWRnZXROYW1lKSB7XG4gICAgICAgIGN1cnJlbnRJdGVtUmVnRXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4ke3dpZGdldE5hbWV9LmN1cnJlbnRJdGVtKVxcXFxiYCwgJ2cnKTtcbiAgICAgICAgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4ke3dpZGdldE5hbWV9LmN1cnJlbnRJdGVtV2lkZ2V0cylcXFxcYmAsICdnJyk7XG4gICAgICAgIGZvcm1XaWRnZXRzUmVnZXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4oLiopLihmb3JtV2lkZ2V0c3xmaWx0ZXJXaWRnZXRzKSlcXFxcYmAsICdnJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzQXJyYXkocm9vdE5vZGUpKSB7XG4gICAgICAgIC8vIFtXTVMtMTY3MTJdLFtXTVMtMTY3NjldLFtXTVMtMTY4MDVdIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgbmVlZCB0byBiZSB1cGRhdGVkIG9ubHkgZm9yIHRoZSB3aWRnZXRzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgbm9kZXMgPSB3aWRnZXRMaXN0Wyhyb290Tm9kZSBhcyBhbnkpLm5hbWVdID8gW3Jvb3ROb2RlIGFzIEVsZW1lbnRdIDogKChyb290Tm9kZSBhcyBhbnkpLmNoaWxkcmVuIHx8IFtdKSBhcyBBcnJheTxFbGVtZW50PjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBub2RlcyA9IHJvb3ROb2RlIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH1cblxuICAgIG5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGROb2RlLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVOYW1lID0gY2hpbGROb2RlLm5hbWU7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnREYXRhU2V0TGVuZ3RoUmVnZXggPSAgbmV3IFJlZ0V4cCgnYmluZDpcXFxccypcXFxcKConICsgcGFyZW50RGF0YVNldCArICdcXFxcKSpcXFxcLmxlbmd0aFxcXFwpKicpO1xuICAgICAgICAgICAgY2hpbGROb2RlLmF0dHJzLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB0cmltIHRoZSBleHRyYSBzcGFjZXMgaW4gYmluZGluZ3NcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBhdHRyLnZhbHVlICYmIGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmIChfLnN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgYXR0cmlidXRlcyBjb25hdGFpbnMgc2FtZSBkYXRhc2V0IHZhcmlhYmxlIGJpbmRpbmcgdGhlbiB0aG9zZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciBzcGVjaWZpYyBwcm9wZXJ0aWVzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRMaXN0W25vZGVOYW1lXSB8fCAod2lkZ2V0TGlzdFtub2RlTmFtZV0gJiYgd2lkZ2V0TGlzdFtub2RlTmFtZV0uaW5kZXhPZihhdHRyLm5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmluZDp4eHh4eC54eHh4XCIsIGVpdGhlciB0aGUgZGF0YVNldC9zY29wZURhdGFTZXQgaGFzIHRvIGNvbnRhaW4gXCJ4eHh4Lnh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW1dNUy0xNzkwOF06IGlmIGNoaWxkIHdpZGdldCBjb250YWlucyBiaW5kIGV4cHJlc3Npb24gYXMgcGFyZW5kYXRhc2V0Lmxlbmd0aCA+IDAgdGhlbiBkb250IHJlcGxhY2UgaXQgd2l0aCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyh2YWx1ZSwgcGFyZW50RGF0YVNldCkgJiYgdmFsdWUgIT09ICdiaW5kOicgKyBwYXJlbnREYXRhU2V0ICYmICFwYXJlbnREYXRhU2V0TGVuZ3RoUmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUoY2hpbGROb2RlLCBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlZ2V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICdiaW5kOicgKyB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpcyB0aGlzIGN1c3RvbSBiaW5kIGV4cHJlc3Npb24gYW5kIGN1cnJlbnRXaWRnZXRJdGVtIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uKHZhbHVlKSAmJiBjdXJyZW50SXRlbVJlZ0V4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHRoZSBjdXJyZW50SXRlbSBhcyBsYXN0IGFyZ3VtZW50IGZvciB0aGUgZXhwcmVzc2lvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBjdXN0b20gcGlwZXMoZXhwcmVzaW9uKSwgaXQgd2lsbCBzZW5kIHRoZSBjdXJyZW50SXRlbSBhcyBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSAgJzonKyBjdXJyZW50SXRlbVJlZ0V4LmV4ZWMoY3VycmVudEl0ZW1SZWdFeC5zb3VyY2UpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIGl0ZW0gaWYgd2lkZ2V0IHByb3BlcnR5IGlzIGJvdW5kIHRvIGxpdmVsaXN0IGN1cnJlbnRJdGVtXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbVJlZ0V4ICYmIGN1cnJlbnRJdGVtUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZSB2YWx1ZSBmcm9tICdiaW5kOldpZGdldHMuZm9ybU5hbWUuZm9ybVdpZGdldHMubGlzdE5hbWUuY3VycmVudEl0ZW0nIHRvICdiaW5kOldpZGdldHMubGlzdE5hbWUuY3VycmVudEl0ZW0nXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJy5mb3JtV2lkZ2V0cycpIHx8IHZhbHVlLmluY2x1ZGVzKCcuZmlsdGVyV2lkZ2V0cycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGZvcm1XaWRnZXRzUmVnZXgsICdXaWRnZXRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGN1cnJlbnRJdGVtUmVnRXgsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbVdpZGdldHNSZWdFeCAmJiBjdXJyZW50SXRlbVdpZGdldHNSZWdFeC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4LCBgJHtpbnN0YW5jZX1jdXJyZW50SXRlbVdpZGdldHNgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlQXR0cnMoY2hpbGROb2RlLmNoaWxkcmVuIGFzIEFycmF5PEVsZW1lbnQ+LCBwYXJlbnREYXRhU2V0LCB3aWRnZXROYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vIElmIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgZG9udCBhZGQgdGhlIG5nTW9kZWxcbmV4cG9ydCBjb25zdCBnZXROZ01vZGVsQXR0ciA9IGF0dHJzID0+IHtcbiAgICBpZiAoYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUnKSB8fCBhdHRycy5oYXMoJ2Zvcm1Db250cm9sTmFtZS5iaW5kJykpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gJ25nTW9kZWwnO1xufTtcblxuY29uc3Qgcm93QWN0aW9uQXR0cnMgPSBuZXcgTWFwKFxuICAgIFtcbiAgICAgICAgWydkaXNwbGF5LW5hbWUnLCAnY2FwdGlvbiddLFxuICAgICAgICBbJ2Rpc3BsYXktbmFtZS5iaW5kJywgJ2NhcHRpb24uYmluZCddLFxuICAgICAgICBbJ3RpdGxlJywgJ2hpbnQnXSxcbiAgICAgICAgWyd0aXRsZS5iaW5kJywgJ2hpbnQuYmluZCddLFxuICAgICAgICBbJ3Nob3cnLCAnc2hvdyddLFxuICAgICAgICBbJ3Nob3cuYmluZCcsICdzaG93LmJpbmQnXSxcbiAgICAgICAgWydkaXNhYmxlZCcsICdkaXNhYmxlZCddLFxuICAgICAgICBbJ2Rpc2FibGVkLmJpbmQnLCAnZGlzYWJsZWQuYmluZCddLFxuICAgICAgICBbJ2h5cGVybGluaycsICdoeXBlcmxpbmsnXSxcbiAgICAgICAgWydoeXBlcmxpbmsuYmluZCcsICdoeXBlcmxpbmsuYmluZCddLFxuICAgICAgICBbJ3RhcmdldCcsICd0YXJnZXQnXSxcbiAgICAgICAgWydjb25kaXRpb25hbGNsYXNzLmJpbmQnLCAnY29uZGl0aW9uYWxjbGFzcy5iaW5kJ10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxzdHlsZS5iaW5kJywgJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCddXG4gICAgXVxuKTtcblxuZXhwb3J0IGNvbnN0IGdldFJvd0FjdGlvbkF0dHJzID0gYXR0cnMgPT4ge1xuICAgIGxldCB0bXBsID0gJyc7XG4gICAgYXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbmV3QXR0ciA9IHJvd0FjdGlvbkF0dHJzLmdldChrZXkpO1xuICAgICAgICBpZiAobmV3QXR0cikge1xuICAgICAgICAgICAgdG1wbCArPSBgJHtuZXdBdHRyfT1cIiR7dmFsfVwiIGA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdG1wbDtcbn07XG4iXX0=
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELGtEQUFrRDtBQUNsRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLE9BQVEsRUFBRSxTQUFVLEVBQUUsRUFBRTtJQUN2RCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7U0FDN0g7SUFDSixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLHlDQUF5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsU0FBaUIsRUFBRSxLQUEyQixFQUFFLFVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDM0gsSUFBSSxJQUFJLENBQUM7SUFDVCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFD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QUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxJQUFJLEdBQUcsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIEVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5cbmltcG9ydCB7IEZvcm1XaWRnZXRUeXBlIH0gZnJvbSAnLi4vZW51bXMvZW51bXMnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbi8vIEZvciBodG1sIHVwbG9hZCB3aWRnZXQsIGFkZCBldmVudHMgb24gaW5wdXQgdGFnXG5jb25zdCBnZXRVcGxvYWRFdmVudFRtcGwgPSAoYXR0cnMsIGNvdW50ZXI/LCBmaWVsZE5hbWU/KSA9PiB7XG4gICAgbGV0IGV2ZW50VG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgaWYgKGtleSAmJiBrZXkuZW5kc1dpdGgoJy5ldmVudCcpKSB7XG4gICAgICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGtleS5zcGxpdCgnLicpWzBdO1xuICAgICAgICAgICBjb25zdCBjb3VudGVyVGwgPSBjb3VudGVyID8gYCR7Y291bnRlcn0uYCA6ICcnO1xuICAgICAgICAgICBldmVudFRtcGwgPSBgICR7ZXZlbnRUbXBsfSAoJHtldmVudE5hbWV9KT1cIiR7Y291bnRlclRsfXRyaWdnZXJVcGxvYWRFdmVudCgkZXZlbnQsICcke2V2ZW50TmFtZX0nLCAnJHtmaWVsZE5hbWV9Jywgcm93KVwiIGA7XG4gICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBldmVudFRtcGw7XG59O1xuXG4vLyBNZXRob2QgdG8gZ2V0IHRoZSBmb3JtIHdpZGdldCB0ZW1wbGF0ZVxuZXhwb3J0IGNvbnN0IGdldEZvcm1XaWRnZXRUZW1wbGF0ZSA9ICh3aWRnZXRUeXBlOiBzdHJpbmcsIGlubmVyVG1wbDogc3RyaW5nLCBhdHRycz86IE1hcDxzdHJpbmcsIHN0cmluZz4sIG9wdGlvbnM6IGFueSA9IHt9KSA9PiB7XG4gICAgbGV0IHRtcGw7XG4gICAgY29uc3QgdXBkYXRlT24gPSBhdHRycy5nZXQoJ3VwZGF0ZW9uJyk7XG4gICAgY29uc3QgdXBkYXRlT25UbXBsID0gdXBkYXRlT24gPyBgdXBkYXRlb249XCIke3VwZGF0ZU9ufVwiYCA6ICcnO1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TZWFyY2ggdHlwZT1cImF1dG9jb21wbGV0ZVwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJncm91cFwiIHdtQ2hlY2tib3hzZXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNISVBTOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgd21DaGlwcyByb2xlPVwiaW5wdXRcIiBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ29sb3JQaWNrZXIgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUN1cnJlbmN5ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke2lubmVyVG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bU51bWJlciAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cIm51bWJlclwiIGFyaWEtbGFiZWw9XCJPbmx5IG51bWJlcnNcIiAke3VwZGF0ZU9uVG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlBBU1NXT1JEOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20taW5wdXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJwYXNzd29yZFwiIGFyaWEtbGFiZWw9XCJFbnRlciBwYXNzd29yZFwiICR7dXBkYXRlT25UbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQURJT1NFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJyYWRpb2dyb3VwXCIgd21SYWRpb3NldCAke2lubmVyVG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtUmF0aW5nICR7aW5uZXJUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SaWNoVGV4dEVkaXRvciByb2xlPVwidGV4dGJveFwiICR7aW5uZXJUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0VMRUNUOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20tc2VsZWN0ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfT48L3dtLXNlbGVjdD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVE9HR0xFOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJ0b2dnbGVcIiByb2xlPVwiY2hlY2tib3hcIiBhcmlhLWxhYmVsPVwiVG9nZ2xlIGJ1dHRvblwiPjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TbGlkZXIgJHtpbm5lclRtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Td2l0Y2ggJHtpbm5lclRtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUOlxuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gb3B0aW9ucy5pbnB1dFR5cGUgfHwgJ2lucHV0dHlwZSc7XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCIke2F0dHJzLmdldChpbnB1dFR5cGUpIHx8ICd0ZXh0J31cIiAke3VwZGF0ZU9uVG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVEVYVEFSRUE6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS10ZXh0YXJlYSAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gcm9sZT1cInRleHRib3hcIiAke3VwZGF0ZU9uVG1wbH0+PC93bS10ZXh0YXJlYT5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gcm9sZT1cImlucHV0XCI+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlVQTE9BRDpcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ZXIgPSBvcHRpb25zLmNvdW50ZXI7XG4gICAgICAgICAgICBjb25zdCBwQ291bnRlciA9IG9wdGlvbnMucENvdW50ZXI7XG4gICAgICAgICAgICBjb25zdCB1cGxvYWRQcm9wcyA9IG9wdGlvbnMudXBsb2FkUHJvcHM7XG4gICAgICAgICAgICBjb25zdCBldmVudFRtcGwgPSBnZXRVcGxvYWRFdmVudFRtcGwoYXR0cnMsIGNvdW50ZXIsIHVwbG9hZFByb3BzICYmIHVwbG9hZFByb3BzLm5hbWUpO1xuICAgICAgICAgICAgaWYgKHVwbG9hZFByb3BzKSB7XG4gICAgICAgICAgICAgICAgdG1wbCA9IGA8Zm9ybSBuYW1lPVwiJHt1cGxvYWRQcm9wcy5mb3JtTmFtZX1cIiAke2lubmVyVG1wbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvY3VzLXRhcmdldCBjbGFzcz1cImZpbGUtdXBsb2FkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHt1cGxvYWRQcm9wcy5uYW1lfVwiICR7ZXZlbnRUbXBsfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG1wbCA9IGA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiIHRhcmdldD1cIl9ibGFua1wiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSA9PT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJoZWlnaHQ6MmVtXCIgY2xhc3M9XCJ3aSB3aS1maWxlXCIgW3NyY109XCIke2NvdW50ZXJ9LmhyZWZcIi8+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cInt7JHtjb3VudGVyfS5ocmVmfX1cIiAqbmdJZj1cIiR7Y291bnRlcn0uZmlsZXR5cGUgIT09ICdpbWFnZScgJiYgJHtjb3VudGVyfS5ocmVmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIndpIHdpLWZpbGVcIj48L2k+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICR7aW5uZXJUbXBsfSBjbGFzcz1cImFwcC1ibG9iLXVwbG9hZFwiIFtuZ0NsYXNzXT1cInsnZmlsZS1yZWFkb25seSc6ICR7Y291bnRlcn0ucmVhZG9ubHl9XCIgJHtldmVudFRtcGx9XG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiJHtjb3VudGVyfS5yZXF1aXJlZFwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIiR7YXR0cnMuZ2V0KCdrZXknKSB8fCBhdHRycy5nZXQoJ25hbWUnKX1fZm9ybVdpZGdldFwiIFtyZWFkb25seV09XCIke2NvdW50ZXJ9LnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiISR7cENvdW50ZXJ9LmlzVXBkYXRlTW9kZVwiIFthY2NlcHRdPVwiJHtjb3VudGVyfS5wZXJtaXR0ZWRcIj5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRleHRcIiAke3VwZGF0ZU9uVG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0bXBsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRm9ybVdpZGdldCA9ICh3aWRnZXRUeXBlKTogc3RyaW5nID0+IHtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFEOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1zZWFyY2gnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNISVBTOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jaGlwcyc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ09MT1JQSUNLRVI6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNvbG9ycGlja2VyJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgIHJldHVybiAnd20tY3VycmVuY3knO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEVUSU1FOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1kYXRldGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXRpbWUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBVElORzpcbiAgICAgICAgICAgIHJldHVybiAnd20tcmF0aW5nJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SSUNIVEVYVDpcbiAgICAgICAgICAgIHJldHVybiAnd20tcmljaHRleHRlZGl0b3InO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNMSURFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tc2xpZGVyJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGV4dCc7XG4gICAgfVxufTtcblxuLy8gVGhpcyBtZWh0b2QgaXMgdXNlZCB0byBhZGQgZGF0YXNldGJvdW5kZXhwciBhdHRyaWJ1dGUgZm9yIG5vZGVcbmNvbnN0IGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUgPSAoY2hpbGROb2RlOiBFbGVtZW50LCBhdHRyOiBBdHRyaWJ1dGUsIGF0dHJWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgYXR0clZhbHVlID0gYXR0clZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgIGNvbnN0IGRhdGFzZXRCb3VuZEF0dHJpYnV0ZSA9IGNoaWxkTm9kZS5hdHRycy5maW5kKCBhID0+IGEubmFtZSA9PT0gJ2RhdGFzZXRib3VuZGV4cHInKTtcbiAgICBpZiAoYXR0ci5uYW1lID09PSAnZGF0YXNldCcgJiYgIWRhdGFzZXRCb3VuZEF0dHJpYnV0ZSkge1xuICAgICAgICBjaGlsZE5vZGUuYXR0cnMucHVzaChuZXcgQXR0cmlidXRlKCdkYXRhc2V0Ym91bmRleHByJywgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIGF0dHIua2V5U3BhbiwgYXR0ci52YWx1ZVNwYW4sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgfVxufTtcblxuXG4vKipcbiAqIGV4cDogVXNlciBidWlsdCBiaW5kIGV4cHJlc3Npb25cbiAqICBUbyBjaGVjayB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbnMuXG4gKiAgSWYgdXNlciB1c2UgdGhlIGN1c3RvbSBwaXBlIGV4cHJlc3Npb24gaXQgd2lsbCBjaGVjayBpbiB0aGUgZXhwLiB0aGF0IFwiY3VzdG9tXCIgc3RyaW5nIGV4aXN0IG9yIG5vdCB3aXRoICg6KSBzeW50YXguXG4gKiAgRWc6IGN1c3RvbTpcbiAqICAgICAgY3VzdG9tICAgIDpcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKGV4cCl7XG4gICAgbGV0IGN1c3RvbVJlZ0V4ID0gLyhjdXN0b20oXFxzKjopKS9nO1xuICAgIGxldCBtYXRjaGVzID0gZXhwLm1hdGNoKGN1c3RvbVJlZ0V4KTtcbiAgICByZXR1cm4gbWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aDtcbn1cblxuXG4vLyBUaGUgYm91bmQgdmFsdWUgaXMgcmVwbGFjZWQgd2l0aCB7e2l0ZW0uZmllbGRuYW1lfX0gaGVyZS4gVGhpcyBpcyBuZWVkZWQgYnkgdGhlIGxpdmVMaXN0IHdoZW4gY29tcGlsaW5nIGlubmVyIGVsZW1lbnRzXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVBdHRycyA9IChyb290Tm9kZTogRWxlbWVudCB8IEFycmF5PEVsZW1lbnQ+LCBwYXJlbnREYXRhU2V0OiBzdHJpbmcsIHdpZGdldE5hbWU6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyA9ICcnLCByZWZlcmVuY2VOYW1lOiBzdHJpbmcgPSAnaXRlbScpID0+IHtcblxuICAgIGNvbnN0IHNhbml0aXplZFBhcmVudERhdGFzZXQgPSBwYXJlbnREYXRhU2V0LnJlcGxhY2UoLyhbXmEtekEtWjAtOS5dKS9nLCAnXFxcXCQxJyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCcoJyArIHNhbml0aXplZFBhcmVudERhdGFzZXQgKyAnKShcXFxcWzBcXFxcXSk/KC5kYXRhXFxcXFtcXFxcJGlcXFxcXSk/KC5jb250ZW50XFxcXFtcXFxcJGlcXFxcXSk/KFxcXFxbXFxcXCRpXFxcXF0pPycsICdnJyk7XG4gICAgbGV0IGN1cnJlbnRJdGVtUmVnRXg7XG4gICAgbGV0IGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4O1xuICAgIGxldCBmb3JtV2lkZ2V0c1JlZ2V4O1xuICAgIGxldCBub2RlczogQXJyYXk8RWxlbWVudD47XG4gICAgY29uc3Qgd2lkZ2V0TGlzdCA9IHtcbiAgICAgICAgJ3dtLWxpc3QnOiBbJ2l0ZW1jbGFzcycsICdkaXNhYmxlaXRlbScsICdkYXRhc2V0J11cbiAgICB9O1xuXG4gICAgaWYgKHdpZGdldE5hbWUpIHtcbiAgICAgICAgY3VycmVudEl0ZW1SZWdFeCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiR7d2lkZ2V0TmFtZX0uY3VycmVudEl0ZW0pXFxcXGJgLCAnZycpO1xuICAgICAgICBjdXJyZW50SXRlbVdpZGdldHNSZWdFeCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiR7d2lkZ2V0TmFtZX0uY3VycmVudEl0ZW1XaWRnZXRzKVxcXFxiYCwgJ2cnKTtcbiAgICAgICAgZm9ybVdpZGdldHNSZWdleCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiguKikuKGZvcm1XaWRnZXRzfGZpbHRlcldpZGdldHMpKVxcXFxiYCwgJ2cnKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNBcnJheShyb290Tm9kZSkpIHtcbiAgICAgICAgLy8gW1dNUy0xNjcxMl0sW1dNUy0xNjc2OV0sW1dNUy0xNjgwNV0gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3IgdGhlIHdpZGdldHMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICBub2RlcyA9IHdpZGdldExpc3RbKHJvb3ROb2RlIGFzIGFueSkubmFtZV0gPyBbcm9vdE5vZGUgYXMgRWxlbWVudF0gOiAoKHJvb3ROb2RlIGFzIGFueSkuY2hpbGRyZW4gfHwgW10pIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzID0gcm9vdE5vZGUgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChjaGlsZE5vZGUubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBjaGlsZE5vZGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGFTZXRMZW5ndGhSZWdleCA9ICBuZXcgUmVnRXhwKCdiaW5kOlxcXFxzKlxcXFwoKicgKyBwYXJlbnREYXRhU2V0ICsgJ1xcXFwpKlxcXFwubGVuZ3RoXFxcXCkqJyk7XG4gICAgICAgICAgICBjaGlsZE5vZGUuYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdGhlIGV4dHJhIHNwYWNlcyBpbiBiaW5kaW5nc1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF0dHIudmFsdWUgJiYgYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKF8uc3RhcnRzV2l0aCh2YWx1ZSwgJ2JpbmQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBhdHRyaWJ1dGVzIGNvbmF0YWlucyBzYW1lIGRhdGFzZXQgdmFyaWFibGUgYmluZGluZyB0aGVuIHRob3NlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSB1cGRhdGVkIG9ubHkgZm9yIHNwZWNpZmljIHByb3BlcnRpZXMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZGdldExpc3Rbbm9kZU5hbWVdIHx8ICh3aWRnZXRMaXN0W25vZGVOYW1lXSAmJiB3aWRnZXRMaXN0W25vZGVOYW1lXS5pbmRleE9mKGF0dHIubmFtZSkgPiAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaXMgXCJiaW5kOnh4eHh4Lnh4eHhcIiwgZWl0aGVyIHRoZSBkYXRhU2V0L3Njb3BlRGF0YVNldCBoYXMgdG8gY29udGFpbiBcInh4eHgueHh4eFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBbV01TLTE3OTA4XTogaWYgY2hpbGQgd2lkZ2V0IGNvbnRhaW5zIGJpbmQgZXhwcmVzc2lvbiBhcyBwYXJlbmRhdGFzZXQubGVuZ3RoID4gMCB0aGVuIGRvbnQgcmVwbGFjZSBpdCB3aXRoIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKHZhbHVlLCBwYXJlbnREYXRhU2V0KSAmJiB2YWx1ZSAhPT0gJ2JpbmQ6JyArIHBhcmVudERhdGFTZXQgJiYgIXBhcmVudERhdGFTZXRMZW5ndGhSZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ2JpbmQ6JyArIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlzIHRoaXMgY3VzdG9tIGJpbmQgZXhwcmVzc2lvbiBhbmQgY3VycmVudFdpZGdldEl0ZW0gcmVnZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24odmFsdWUpICYmIGN1cnJlbnRJdGVtUmVnRXgpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGN1cnJlbnRJdGVtIGFzIGxhc3QgYXJndW1lbnQgZm9yIHRoZSBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhlIGN1c3RvbSBwaXBlcyhleHByZXNpb24pLCBpdCB3aWxsIHNlbmQgdGhlIGN1cnJlbnRJdGVtIGFzIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICAnOicrIGN1cnJlbnRJdGVtUmVnRXguZXhlYyhjdXJyZW50SXRlbVJlZ0V4LnNvdXJjZSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgaXRlbSBpZiB3aWRnZXQgcHJvcGVydHkgaXMgYm91bmQgdG8gbGl2ZWxpc3QgY3VycmVudEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtUmVnRXggJiYgY3VycmVudEl0ZW1SZWdFeC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHZhbHVlIGZyb20gJ2JpbmQ6V2lkZ2V0cy5mb3JtTmFtZS5mb3JtV2lkZ2V0cy5saXN0TmFtZS5jdXJyZW50SXRlbScgdG8gJ2JpbmQ6V2lkZ2V0cy5saXN0TmFtZS5jdXJyZW50SXRlbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygnLmZvcm1XaWRnZXRzJykgfHwgdmFsdWUuaW5jbHVkZXMoJy5maWx0ZXJXaWRnZXRzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoZm9ybVdpZGdldHNSZWdleCwgJ1dpZGdldHMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUoY2hpbGROb2RlLCBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoY3VycmVudEl0ZW1SZWdFeCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ICYmIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgsIGAke2luc3RhbmNlfWN1cnJlbnRJdGVtV2lkZ2V0c2ApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXBkYXRlVGVtcGxhdGVBdHRycyhjaGlsZE5vZGUuY2hpbGRyZW4gYXMgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQsIHdpZGdldE5hbWUsIGluc3RhbmNlLCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuLy8gSWYgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBkb250IGFkZCB0aGUgbmdNb2RlbFxuZXhwb3J0IGNvbnN0IGdldE5nTW9kZWxBdHRyID0gYXR0cnMgPT4ge1xuICAgIGlmIChhdHRycy5oYXMoJ2Zvcm1Db250cm9sTmFtZScpIHx8IGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lLmJpbmQnKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiAnbmdNb2RlbCc7XG59O1xuXG5jb25zdCByb3dBY3Rpb25BdHRycyA9IG5ldyBNYXAoXG4gICAgW1xuICAgICAgICBbJ2Rpc3BsYXktbmFtZScsICdjYXB0aW9uJ10sXG4gICAgICAgIFsnZGlzcGxheS1uYW1lLmJpbmQnLCAnY2FwdGlvbi5iaW5kJ10sXG4gICAgICAgIFsndGl0bGUnLCAnaGludCddLFxuICAgICAgICBbJ3RpdGxlLmJpbmQnLCAnaGludC5iaW5kJ10sXG4gICAgICAgIFsnc2hvdycsICdzaG93J10sXG4gICAgICAgIFsnc2hvdy5iaW5kJywgJ3Nob3cuYmluZCddLFxuICAgICAgICBbJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJ10sXG4gICAgICAgIFsnZGlzYWJsZWQuYmluZCcsICdkaXNhYmxlZC5iaW5kJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rJywgJ2h5cGVybGluayddLFxuICAgICAgICBbJ2h5cGVybGluay5iaW5kJywgJ2h5cGVybGluay5iaW5kJ10sXG4gICAgICAgIFsndGFyZ2V0JywgJ3RhcmdldCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCcsICdjb25kaXRpb25hbGNsYXNzLmJpbmQnXSxcbiAgICAgICAgWydjb25kaXRpb25hbHN0eWxlLmJpbmQnLCAnY29uZGl0aW9uYWxzdHlsZS5iaW5kJ11cbiAgICBdXG4pO1xuXG5leHBvcnQgY29uc3QgZ2V0Um93QWN0aW9uQXR0cnMgPSBhdHRycyA9PiB7XG4gICAgbGV0IHRtcGwgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdBdHRyID0gcm93QWN0aW9uQXR0cnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChuZXdBdHRyKSB7XG4gICAgICAgICAgICB0bXBsICs9IGAke25ld0F0dHJ9PVwiJHt2YWx9XCIgYDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0bXBsO1xufTtcbiJdfQ==
|
|
@@ -93,73 +93,71 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
|
|
|
93
93
|
let tmpl;
|
|
94
94
|
const updateOn = attrs.get('updateon');
|
|
95
95
|
const updateOnTmpl = updateOn ? `updateon="${updateOn}"` : '';
|
|
96
|
-
const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;
|
|
97
|
-
const showTmpl = showineditmode == 'false' ? `show="${showineditmode}"` : `show.bind="${showineditmode}"`;
|
|
98
96
|
switch (widgetType) {
|
|
99
97
|
case FormWidgetType.AUTOCOMPLETE:
|
|
100
98
|
case FormWidgetType.TYPEAHEAD:
|
|
101
|
-
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
99
|
+
tmpl = `<div wmSearch type="autocomplete" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></div>`;
|
|
102
100
|
break;
|
|
103
101
|
case FormWidgetType.CHECKBOX:
|
|
104
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
102
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></div>`;
|
|
105
103
|
break;
|
|
106
104
|
case FormWidgetType.CHECKBOXSET:
|
|
107
|
-
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
105
|
+
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}></ul>`;
|
|
108
106
|
break;
|
|
109
107
|
case FormWidgetType.CHIPS:
|
|
110
|
-
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}
|
|
108
|
+
tmpl = `<ul wmChips role="input" debouncetime="${attrs.get('debouncetime')}" ${innerTmpl}></ul>`;
|
|
111
109
|
break;
|
|
112
110
|
case FormWidgetType.COLORPICKER:
|
|
113
|
-
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
111
|
+
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></div>`;
|
|
114
112
|
break;
|
|
115
113
|
case FormWidgetType.CURRENCY:
|
|
116
|
-
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}
|
|
114
|
+
tmpl = `<div wmCurrency ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl}></div>`;
|
|
117
115
|
break;
|
|
118
116
|
case FormWidgetType.DATE:
|
|
119
|
-
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
117
|
+
tmpl = `<div wmDate ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
120
118
|
break;
|
|
121
119
|
case FormWidgetType.DATETIME:
|
|
122
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
120
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
123
121
|
break;
|
|
124
122
|
case FormWidgetType.NUMBER:
|
|
125
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}
|
|
123
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" aria-label="Only numbers" ${updateOnTmpl}></div>`;
|
|
126
124
|
break;
|
|
127
125
|
case FormWidgetType.PASSWORD:
|
|
128
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}
|
|
126
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" aria-label="Enter password" ${updateOnTmpl}></wm-input>`;
|
|
129
127
|
break;
|
|
130
128
|
case FormWidgetType.RADIOSET:
|
|
131
|
-
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}
|
|
129
|
+
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl}></ul>`;
|
|
132
130
|
break;
|
|
133
131
|
case FormWidgetType.RATING:
|
|
134
|
-
tmpl = `<div wmRating ${innerTmpl}
|
|
132
|
+
tmpl = `<div wmRating ${innerTmpl}></div>`;
|
|
135
133
|
break;
|
|
136
134
|
case FormWidgetType.RICHTEXT:
|
|
137
|
-
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}
|
|
135
|
+
tmpl = `<div wmRichTextEditor role="textbox" ${innerTmpl}></div>`;
|
|
138
136
|
break;
|
|
139
137
|
case FormWidgetType.SELECT:
|
|
140
|
-
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}
|
|
138
|
+
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl}></wm-select>`;
|
|
141
139
|
break;
|
|
142
140
|
case FormWidgetType.TOGGLE:
|
|
143
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"
|
|
141
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" role="checkbox" aria-label="Toggle button"></div>`;
|
|
144
142
|
break;
|
|
145
143
|
case FormWidgetType.SLIDER:
|
|
146
|
-
tmpl = `<div wmSlider ${innerTmpl}
|
|
144
|
+
tmpl = `<div wmSlider ${innerTmpl}></div>`;
|
|
147
145
|
break;
|
|
148
146
|
case FormWidgetType.SWITCH:
|
|
149
|
-
tmpl = `<div wmSwitch ${innerTmpl}
|
|
147
|
+
tmpl = `<div wmSwitch ${innerTmpl}></div>`;
|
|
150
148
|
break;
|
|
151
149
|
case FormWidgetType.TEXT:
|
|
152
150
|
const inputType = options.inputType || 'inputtype';
|
|
153
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}
|
|
151
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl}></wm-input>`;
|
|
154
152
|
break;
|
|
155
153
|
case FormWidgetType.TEXTAREA:
|
|
156
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}
|
|
154
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} role="textbox" ${updateOnTmpl}></wm-textarea>`;
|
|
157
155
|
break;
|
|
158
156
|
case FormWidgetType.TIME:
|
|
159
|
-
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
157
|
+
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}></div>`;
|
|
160
158
|
break;
|
|
161
159
|
case FormWidgetType.TIMESTAMP:
|
|
162
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"
|
|
160
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} role="input"></div>`;
|
|
163
161
|
break;
|
|
164
162
|
case FormWidgetType.UPLOAD:
|
|
165
163
|
const counter = options.counter;
|
|
@@ -168,7 +166,7 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
|
|
|
168
166
|
const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);
|
|
169
167
|
if (uploadProps) {
|
|
170
168
|
tmpl = `<form name="${uploadProps.formName}" ${innerTmpl}>
|
|
171
|
-
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}
|
|
169
|
+
<input focus-target class="file-upload" type="file" name="${uploadProps.name}" ${eventTmpl}/>
|
|
172
170
|
</form>`;
|
|
173
171
|
}
|
|
174
172
|
else {
|
|
@@ -178,11 +176,11 @@ const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}) => {
|
|
|
178
176
|
<i class="wi wi-file"></i></a>
|
|
179
177
|
<input ${innerTmpl} class="app-blob-upload" [ngClass]="{'file-readonly': ${counter}.readonly}" ${eventTmpl}
|
|
180
178
|
[required]="${counter}.required" type="file" name="${attrs.get('key') || attrs.get('name')}_formWidget" [readonly]="${counter}.readonly"
|
|
181
|
-
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted"
|
|
179
|
+
[class.hidden]="!${pCounter}.isUpdateMode" [accept]="${counter}.permitted">`;
|
|
182
180
|
}
|
|
183
181
|
break;
|
|
184
182
|
default:
|
|
185
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}
|
|
183
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="text" ${updateOnTmpl}></wm-input>`;
|
|
186
184
|
break;
|
|
187
185
|
}
|
|
188
186
|
return tmpl;
|