@valtimo/components 12.40.0 → 12.41.0
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/esm2022/lib/modules/custom-formio-component/create-custom-component.mjs +28 -6
- package/fesm2022/valtimo-components.mjs +27 -5
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/modules/custom-formio-component/create-custom-component.d.ts +2 -1
- package/lib/modules/custom-formio-component/create-custom-component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -105,11 +105,7 @@ export function createCustomFormioComponent(customComponentOptions) {
|
|
|
105
105
|
superAttach = super.attach(element);
|
|
106
106
|
}
|
|
107
107
|
// Bind customOptions
|
|
108
|
-
|
|
109
|
-
if (this.component.customOptions.hasOwnProperty(key)) {
|
|
110
|
-
this._customAngularElement[key] = this.component.customOptions[key];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
108
|
+
this.bindCustomOptions();
|
|
113
109
|
// Bind validate options
|
|
114
110
|
for (const key in this.component.validate) {
|
|
115
111
|
if (this.component.validate.hasOwnProperty(key)) {
|
|
@@ -139,6 +135,32 @@ export function createCustomFormioComponent(customComponentOptions) {
|
|
|
139
135
|
}
|
|
140
136
|
return superAttach;
|
|
141
137
|
}
|
|
138
|
+
// Push the (possibly mutated) customOptions onto the Angular element. Extracted from attach() so
|
|
139
|
+
// it can also be re-run from setValue(): a calculateValue expression can mutate
|
|
140
|
+
// this.component.customOptions as a side effect, but attach() (and therefore the original inline
|
|
141
|
+
// binding) only re-runs on a redraw, which is not guaranteed to fire after the calculation.
|
|
142
|
+
// Binding is idempotent, so re-running it is harmless.
|
|
143
|
+
bindCustomOptions() {
|
|
144
|
+
if (!this._customAngularElement) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
for (const key in this.component.customOptions) {
|
|
148
|
+
if (Object.prototype.hasOwnProperty.call(this.component.customOptions, key) &&
|
|
149
|
+
key !== '__proto__' &&
|
|
150
|
+
key !== 'constructor' &&
|
|
151
|
+
key !== 'prototype') {
|
|
152
|
+
this._customAngularElement[key] = this.component.customOptions[key];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// @ts-ignore
|
|
157
|
+
setValue(value, flags = {}) {
|
|
158
|
+
const changed = super.setValue(value, flags);
|
|
159
|
+
// FormIO calls setValue() immediately after evaluating calculateValue, so re-applying the
|
|
160
|
+
// customOptions here reaches the Angular element right away, independent of redraw timing.
|
|
161
|
+
this.bindCustomOptions();
|
|
162
|
+
return changed;
|
|
163
|
+
}
|
|
142
164
|
// Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
|
|
143
165
|
useWrapper() {
|
|
144
166
|
return (this.component.hasOwnProperty('multiple') &&
|
|
@@ -159,4 +181,4 @@ export function createCustomFormioComponent(customComponentOptions) {
|
|
|
159
181
|
}
|
|
160
182
|
};
|
|
161
183
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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Q0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7Z0JBQ3ZCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FDekMsQ0FBQztRQUNKLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxZQUFZO1lBQ2QsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUVuQyw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUM3QyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0QsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RixDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtCdWlsZGVySW5mbywgQ29tcG9uZW50cywgRXh0ZW5kZWRDb21wb25lbnRTY2hlbWEsIFV0aWxzIGFzIEZvcm1pb1V0aWxzfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0Zvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8sIEZvcm1pb0N1c3RvbUVsZW1lbnQsIEZvcm1pb0V2ZW50fSBmcm9tICcuL2VsZW1lbnRzLmNvbW1vbic7XG5pbXBvcnQge2Nsb25lLCBpc0FycmF5LCBpc05pbH0gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgQmFzZUlucHV0Q29tcG9uZW50ID0gQ29tcG9uZW50cy5jb21wb25lbnRzLmlucHV0O1xuY29uc3QgVGV4dGZpZWxkQ29tcG9uZW50ID0gQ29tcG9uZW50cy5jb21wb25lbnRzLnRleHRmaWVsZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUZvcm1pb0NvbXBvbmVudChjdXN0b21Db21wb25lbnRPcHRpb25zOiBGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvKSB7XG4gIHJldHVybiBjbGFzcyBDdXN0b21Db21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQge1xuICAgIHN0YXRpYyBlZGl0Rm9ybSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZWRpdEZvcm0gfHwgVGV4dGZpZWxkQ29tcG9uZW50LmVkaXRGb3JtO1xuICAgIGlkID0gRm9ybWlvVXRpbHMuZ2V0UmFuZG9tQ29tcG9uZW50SWQoKTtcbiAgICB0eXBlID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50eXBlO1xuICAgIF9jdXN0b21Bbmd1bGFyRWxlbWVudDogRm9ybWlvQ3VzdG9tRWxlbWVudDtcblxuICAgIHN0YXRpYyBzY2hlbWEoKSB7XG4gICAgICByZXR1cm4gQmFzZUlucHV0Q29tcG9uZW50LnNjaGVtYSh7XG4gICAgICAgIC4uLmN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2NoZW1hLFxuICAgICAgICB0eXBlOiBjdXN0b21Db21wb25lbnRPcHRpb25zLnR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGRlZmF1bHRTY2hlbWEoKSB7XG4gICAgICByZXR1cm4gQ3VzdG9tQ29tcG9uZW50LnNjaGVtYSgpO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZW1wdHlWYWx1ZSgpIHtcbiAgICAgIHJldHVybiBjdXN0b21Db21wb25lbnRPcHRpb25zLmVtcHR5VmFsdWUgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGJ1aWxkZXJJbmZvKCk6IEJ1aWxkZXJJbmZvIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBjdXN0b21Db21wb25lbnRPcHRpb25zLnRpdGxlLFxuICAgICAgICBncm91cDogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5ncm91cCxcbiAgICAgICAgaWNvbjogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5pY29uLFxuICAgICAgICB3ZWlnaHQ6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMud2VpZ2h0LFxuICAgICAgICBkb2N1bWVudGF0aW9uOiBjdXN0b21Db21wb25lbnRPcHRpb25zLmRvY3VtZW50YXRpb24sXG4gICAgICAgIHNjaGVtYTogQ3VzdG9tQ29tcG9uZW50LnNjaGVtYSgpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBjb21wb25lbnQ6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hLFxuICAgICAgb3B0aW9uczogYW55LFxuICAgICAgZGF0YTogYW55XG4gICAgKSB7XG4gICAgICBzdXBlcihcbiAgICAgICAgY29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICAgICAgYWRkVGFnczogW2N1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3JdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG5cbiAgICAgIGlmIChjdXN0b21Db21wb25lbnRPcHRpb25zLmV4dHJhVmFsaWRhdG9ycykge1xuICAgICAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnZhbGlkYXRvcnMuY29uY2F0KGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZXh0cmFWYWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbGVtZW50SW5mbygpIHtcbiAgICAgIGNvbnN0IGluZm8gPSBzdXBlci5lbGVtZW50SW5mbygpO1xuICAgICAgaW5mby50eXBlID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3RvcjtcbiAgICAgIGluZm8uY2hhbmdlRXZlbnQgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmNoYW5nZUV2ZW50IHx8ICd2YWx1ZUNoYW5nZSc7XG4gICAgICBpbmZvLmF0dHIgPSB7XG4gICAgICAgIC4uLmluZm8uYXR0cixcbiAgICAgICAgY2xhc3M6IGluZm8uYXR0ci5jbGFzcy5yZXBsYWNlKCdmb3JtLWNvbnRyb2wnLCAnZm9ybS1jb250cm9sLWN1c3RvbS1maWVsZCcpLCAvLyByZW1vdmUgdGhlIGZvcm0tY29udHJvbCBjbGFzcyBhcyB0aGUgY3VzdG9tIGFuZ3VsYXIgY29tcG9uZW50IG1heSBsb29rIGRpZmZlcmVudFxuICAgICAgfTtcbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgaW5wdXRJbmZvKCkge1xuICAgICAgY29uc3QgaW5mbyA9IHtcbiAgICAgICAgaWQ6IHRoaXMua2V5LFxuICAgICAgICAuLi50aGlzLmVsZW1lbnRJbmZvKCksXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgcmVuZGVyRWxlbWVudCh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBpbmZvID0gdGhpcy5pbnB1dEluZm87XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJUZW1wbGF0ZShjdXN0b21Db21wb25lbnRPcHRpb25zLnRlbXBsYXRlIHx8ICdpbnB1dCcsIHtcbiAgICAgICAgaW5wdXQ6IGluZm8sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpbmRleCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGF0dGFjaChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgbGV0IHN1cGVyQXR0YWNoID0gc3VwZXIuYXR0YWNoKGVsZW1lbnQpO1xuXG4gICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yKTtcblxuICAgICAgLy8gQmluZCB0aGUgY3VzdG9tIG9wdGlvbnMgYW5kIHRoZSB2YWxpZGF0aW9ucyB0byB0aGUgQW5ndWxhciBjb21wb25lbnQncyBpbnB1dHMgKGZsYXR0ZW5lZClcbiAgICAgIGlmICh0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCkge1xuICAgICAgICAvLyBUbyBtYWtlIHN1cmUgd2UgaGF2ZSB3b3JraW5nIGlucHV0IGluIElFLi4uXG4gICAgICAgIC8vIElFIGRvZXNuJ3QgcmVuZGVyIGl0IHByb3Blcmx5IGlmIGl0J3Mgbm90IHZpc2libGUgb24gdGhlIHNjcmVlblxuICAgICAgICAvLyBkdWUgdG8gdGhlIHdob2xlIHN0cnVjdHVyZSBhcHBsaWVkIHZpYSBpbm5lckhUTUwgdG8gdGhlIHBhcmVudFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHVzZSBhcHBlbmRDaGlsZFxuICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmctdmVyc2lvbicpKSB7XG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdyZWYnKTtcblxuICAgICAgICAgIGNvbnN0IG5ld0N1c3RvbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3RvclxuICAgICAgICAgICkgYXMgRm9ybWlvQ3VzdG9tRWxlbWVudDtcblxuICAgICAgICAgIG5ld0N1c3RvbUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWYnLCAnaW5wdXQnKTtcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0SW5mby5hdHRyKS5mb3JFYWNoKChhdHRyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIG5ld0N1c3RvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHIsIHRoaXMuaW5wdXRJbmZvLmF0dHJbYXR0cl0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3Q3VzdG9tRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQgPSBuZXdDdXN0b21FbGVtZW50O1xuXG4gICAgICAgICAgc3VwZXJBdHRhY2ggPSBzdXBlci5hdHRhY2goZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCaW5kIGN1c3RvbU9wdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb21wb25lbnQuY3VzdG9tT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEJpbmQgdmFsaWRhdGUgb3B0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudC52YWxpZGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtrZXldID0gdGhpcy5jb21wb25lbnQudmFsaWRhdGVba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQmluZCBvcHRpb25zIGV4cGxpY2l0bHkgc2V0XG4gICAgICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZmllbGRPcHRpb25zO1xuICAgICAgICBpZiAoaXNBcnJheShmaWVsZE9wdGlvbnMpICYmIGZpZWxkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRPcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRbZmllbGRPcHRpb25zW2tleV1dID0gdGhpcy5jb21wb25lbnRbZmllbGRPcHRpb25zW2tleV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF0dGFjaCBldmVudCBsaXN0ZW5lciBmb3IgZW1pdCBldmVudFxuICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdmb3JtaW9FdmVudCcsXG4gICAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxGb3JtaW9FdmVudD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudC5kZXRhaWwuZXZlbnROYW1lLCB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmRldGFpbC5kYXRhLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBiaW5kIHRoZSB2YWx1ZSAoaWYgaXQgaXNuJ3QgYSBtdWx0aXBsZS12YWx1ZSBjb21wb25lbnQgd2l0aCBubyB3cmFwcGVyKVxuICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnZhbHVlICYmICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpIHtcbiAgICAgICAgICB0aGlzLnJlc3RvcmVWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VwZXJBdHRhY2g7XG4gICAgfVxuXG4gICAgLy8gQWRkIGV4dHJhIG9wdGlvbiB0byBzdXBwb3J0IG11bHRpcGxlIHZhbHVlIChlLmcuIGRhdGFncmlkKSB3aXRoIHNpbmdsZSBhbmd1bGFyIGNvbXBvbmVudCAoZGlzYWJsZU11bHRpVmFsdWVXcmFwcGVyKVxuICAgIHVzZVdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLmNvbXBvbmVudC5oYXNPd25Qcm9wZXJ0eSgnbXVsdGlwbGUnKSAmJlxuICAgICAgICB0aGlzLmNvbXBvbmVudC5tdWx0aXBsZSAmJlxuICAgICAgICAhdGhpcy5jb21wb25lbnQuZGlzYWJsZU11bHRpVmFsdWVXcmFwcGVyXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZW1wdHlWYWx1ZTtcblxuICAgICAgLy8gaGFuZGxlIGZhbHN5IGRlZmF1bHQgdmFsdWVcbiAgICAgIGlmICghaXNOaWwodGhpcy5jb21wb25lbnQuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUgJiYgIXRoaXMub3B0aW9ucy5wcmV2aWV3KSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZXZhbHVhdGUodGhpcy5jb21wb25lbnQuY3VzdG9tRGVmYXVsdFZhbHVlLCB7dmFsdWU6ICcnfSwgJ3ZhbHVlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9uZShkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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Z0JBQy9ELFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QnVpbGRlckluZm8sIENvbXBvbmVudHMsIEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hLCBVdGlscyBhcyBGb3JtaW9VdGlsc30gZnJvbSAnZm9ybWlvanMnO1xuaW1wb3J0IHtGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvLCBGb3JtaW9DdXN0b21FbGVtZW50LCBGb3JtaW9FdmVudH0gZnJvbSAnLi9lbGVtZW50cy5jb21tb24nO1xuaW1wb3J0IHtjbG9uZSwgaXNBcnJheSwgaXNOaWx9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IEJhc2VJbnB1dENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy5pbnB1dDtcbmNvbnN0IFRleHRmaWVsZENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy50ZXh0ZmllbGQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21Gb3JtaW9Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50T3B0aW9uczogRm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbykge1xuICByZXR1cm4gY2xhc3MgQ3VzdG9tQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IHtcbiAgICBzdGF0aWMgZWRpdEZvcm0gPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmVkaXRGb3JtIHx8IFRleHRmaWVsZENvbXBvbmVudC5lZGl0Rm9ybTtcbiAgICBpZCA9IEZvcm1pb1V0aWxzLmdldFJhbmRvbUNvbXBvbmVudElkKCk7XG4gICAgdHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudHlwZTtcbiAgICBfY3VzdG9tQW5ndWxhckVsZW1lbnQ6IEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICBzdGF0aWMgc2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEJhc2VJbnB1dENvbXBvbmVudC5zY2hlbWEoe1xuICAgICAgICAuLi5jdXN0b21Db21wb25lbnRPcHRpb25zLnNjaGVtYSxcbiAgICAgICAgdHlwZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50eXBlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0U2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGVtcHR5VmFsdWUoKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5lbXB0eVZhbHVlIHx8IG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBidWlsZGVySW5mbygpOiBCdWlsZGVySW5mbyB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50aXRsZSxcbiAgICAgICAgZ3JvdXA6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZ3JvdXAsXG4gICAgICAgIGljb246IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuaWNvbixcbiAgICAgICAgd2VpZ2h0OiBjdXN0b21Db21wb25lbnRPcHRpb25zLndlaWdodCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5kb2N1bWVudGF0aW9uLFxuICAgICAgICBzY2hlbWE6IEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgY29tcG9uZW50OiBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSxcbiAgICAgIG9wdGlvbnM6IGFueSxcbiAgICAgIGRhdGE6IGFueVxuICAgICkge1xuICAgICAgc3VwZXIoXG4gICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgICAgIGFkZFRhZ3M6IFtjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5leHRyYVZhbGlkYXRvcnMpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0b3JzID0gdGhpcy52YWxpZGF0b3JzLmNvbmNhdChjdXN0b21Db21wb25lbnRPcHRpb25zLmV4dHJhVmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudEluZm8oKSB7XG4gICAgICBjb25zdCBpbmZvID0gc3VwZXIuZWxlbWVudEluZm8oKTtcbiAgICAgIGluZm8udHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3I7XG4gICAgICBpbmZvLmNoYW5nZUV2ZW50ID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5jaGFuZ2VFdmVudCB8fCAndmFsdWVDaGFuZ2UnO1xuICAgICAgaW5mby5hdHRyID0ge1xuICAgICAgICAuLi5pbmZvLmF0dHIsXG4gICAgICAgIGNsYXNzOiBpbmZvLmF0dHIuY2xhc3MucmVwbGFjZSgnZm9ybS1jb250cm9sJywgJ2Zvcm0tY29udHJvbC1jdXN0b20tZmllbGQnKSwgLy8gcmVtb3ZlIHRoZSBmb3JtLWNvbnRyb2wgY2xhc3MgYXMgdGhlIGN1c3RvbSBhbmd1bGFyIGNvbXBvbmVudCBtYXkgbG9vayBkaWZmZXJlbnRcbiAgICAgIH07XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGlucHV0SW5mbygpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB7XG4gICAgICAgIGlkOiB0aGlzLmtleSxcbiAgICAgICAgLi4udGhpcy5lbGVtZW50SW5mbygpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgY29uc3QgaW5mbyA9IHRoaXMuaW5wdXRJbmZvO1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyVGVtcGxhdGUoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50ZW1wbGF0ZSB8fCAnaW5wdXQnLCB7XG4gICAgICAgIGlucHV0OiBpbmZvLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhdHRhY2goZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgIGxldCBzdXBlckF0dGFjaCA9IHN1cGVyLmF0dGFjaChlbGVtZW50KTtcblxuICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3Rvcik7XG5cbiAgICAgIC8vIEJpbmQgdGhlIGN1c3RvbSBvcHRpb25zIGFuZCB0aGUgdmFsaWRhdGlvbnMgdG8gdGhlIEFuZ3VsYXIgY29tcG9uZW50J3MgaW5wdXRzIChmbGF0dGVuZWQpXG4gICAgICBpZiAodGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQpIHtcbiAgICAgICAgLy8gVG8gbWFrZSBzdXJlIHdlIGhhdmUgd29ya2luZyBpbnB1dCBpbiBJRS4uLlxuICAgICAgICAvLyBJRSBkb2Vzbid0IHJlbmRlciBpdCBwcm9wZXJseSBpZiBpdCdzIG5vdCB2aXNpYmxlIG9uIHRoZSBzY3JlZW5cbiAgICAgICAgLy8gZHVlIHRvIHRoZSB3aG9sZSBzdHJ1Y3R1cmUgYXBwbGllZCB2aWEgaW5uZXJIVE1MIHRvIHRoZSBwYXJlbnRcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byB1c2UgYXBwZW5kQ2hpbGRcbiAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKSkge1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgncmVmJyk7XG5cbiAgICAgICAgICBjb25zdCBuZXdDdXN0b21FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3JcbiAgICAgICAgICApIGFzIEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZSgncmVmJywgJ2lucHV0Jyk7XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnB1dEluZm8uYXR0cikuZm9yRWFjaCgoYXR0cjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmlucHV0SW5mby5hdHRyW2F0dHJdKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFwcGVuZENoaWxkKG5ld0N1c3RvbUVsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50ID0gbmV3Q3VzdG9tRWxlbWVudDtcblxuICAgICAgICAgIHN1cGVyQXR0YWNoID0gc3VwZXIuYXR0YWNoKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmluZCBjdXN0b21PcHRpb25zXG4gICAgICAgIHRoaXMuYmluZEN1c3RvbU9wdGlvbnMoKTtcbiAgICAgICAgLy8gQmluZCB2YWxpZGF0ZSBvcHRpb25zXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LnZhbGlkYXRlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50LnZhbGlkYXRlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBCaW5kIG9wdGlvbnMgZXhwbGljaXRseSBzZXRcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5maWVsZE9wdGlvbnM7XG4gICAgICAgIGlmIChpc0FycmF5KGZpZWxkT3B0aW9ucykgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZE9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtmaWVsZE9wdGlvbnNba2V5XV0gPSB0aGlzLmNvbXBvbmVudFtmaWVsZE9wdGlvbnNba2V5XV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXR0YWNoIGV2ZW50IGxpc3RlbmVyIGZvciBlbWl0IGV2ZW50XG4gICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2Zvcm1pb0V2ZW50JyxcbiAgICAgICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PEZvcm1pb0V2ZW50PikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KGV2ZW50LmRldGFpbC5ldmVudE5hbWUsIHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZGV0YWlsLmRhdGEsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHdlIGJpbmQgdGhlIHZhbHVlIChpZiBpdCBpc24ndCBhIG11bHRpcGxlLXZhbHVlIGNvbXBvbmVudCB3aXRoIG5vIHdyYXBwZXIpXG4gICAgICAgIGlmICghdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQudmFsdWUgJiYgIXRoaXMuY29tcG9uZW50LmRpc2FibGVNdWx0aVZhbHVlV3JhcHBlcikge1xuICAgICAgICAgIHRoaXMucmVzdG9yZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdXBlckF0dGFjaDtcbiAgICB9XG5cbiAgICAvLyBQdXNoIHRoZSAocG9zc2libHkgbXV0YXRlZCkgY3VzdG9tT3B0aW9ucyBvbnRvIHRoZSBBbmd1bGFyIGVsZW1lbnQuIEV4dHJhY3RlZCBmcm9tIGF0dGFjaCgpIHNvXG4gICAgLy8gaXQgY2FuIGFsc28gYmUgcmUtcnVuIGZyb20gc2V0VmFsdWUoKTogYSBjYWxjdWxhdGVWYWx1ZSBleHByZXNzaW9uIGNhbiBtdXRhdGVcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zIGFzIGEgc2lkZSBlZmZlY3QsIGJ1dCBhdHRhY2goKSAoYW5kIHRoZXJlZm9yZSB0aGUgb3JpZ2luYWwgaW5saW5lXG4gICAgLy8gYmluZGluZykgb25seSByZS1ydW5zIG9uIGEgcmVkcmF3LCB3aGljaCBpcyBub3QgZ3VhcmFudGVlZCB0byBmaXJlIGFmdGVyIHRoZSBjYWxjdWxhdGlvbi5cbiAgICAvLyBCaW5kaW5nIGlzIGlkZW1wb3RlbnQsIHNvIHJlLXJ1bm5pbmcgaXQgaXMgaGFybWxlc3MuXG4gICAgYmluZEN1c3RvbU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zLCBrZXkpICYmXG4gICAgICAgICAga2V5ICE9PSAnX19wcm90b19fJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRba2V5XSA9IHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXRWYWx1ZSh2YWx1ZTogYW55LCBmbGFnczogYW55ID0ge30pIHtcbiAgICAgIGNvbnN0IGNoYW5nZWQgPSBzdXBlci5zZXRWYWx1ZSh2YWx1ZSwgZmxhZ3MpO1xuICAgICAgLy8gRm9ybUlPIGNhbGxzIHNldFZhbHVlKCkgaW1tZWRpYXRlbHkgYWZ0ZXIgZXZhbHVhdGluZyBjYWxjdWxhdGVWYWx1ZSwgc28gcmUtYXBwbHlpbmcgdGhlXG4gICAgICAvLyBjdXN0b21PcHRpb25zIGhlcmUgcmVhY2hlcyB0aGUgQW5ndWxhciBlbGVtZW50IHJpZ2h0IGF3YXksIGluZGVwZW5kZW50IG9mIHJlZHJhdyB0aW1pbmcuXG4gICAgICB0aGlzLmJpbmRDdXN0b21PcHRpb25zKCk7XG4gICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXh0cmEgb3B0aW9uIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWUgKGUuZy4gZGF0YWdyaWQpIHdpdGggc2luZ2xlIGFuZ3VsYXIgY29tcG9uZW50IChkaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpXG4gICAgdXNlV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lmhhc093blByb3BlcnR5KCdtdWx0aXBsZScpICYmXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lm11bHRpcGxlICYmXG4gICAgICAgICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5lbXB0eVZhbHVlO1xuXG4gICAgICAvLyBoYW5kbGUgZmFsc3kgZGVmYXVsdCB2YWx1ZVxuICAgICAgaWYgKCFpc05pbCh0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmN1c3RvbURlZmF1bHRWYWx1ZSAmJiAhdGhpcy5vcHRpb25zLnByZXZpZXcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5ldmFsdWF0ZSh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUsIHt2YWx1ZTogJyd9LCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -2370,11 +2370,7 @@ function createCustomFormioComponent(customComponentOptions) {
|
|
|
2370
2370
|
superAttach = super.attach(element);
|
|
2371
2371
|
}
|
|
2372
2372
|
// Bind customOptions
|
|
2373
|
-
|
|
2374
|
-
if (this.component.customOptions.hasOwnProperty(key)) {
|
|
2375
|
-
this._customAngularElement[key] = this.component.customOptions[key];
|
|
2376
|
-
}
|
|
2377
|
-
}
|
|
2373
|
+
this.bindCustomOptions();
|
|
2378
2374
|
// Bind validate options
|
|
2379
2375
|
for (const key in this.component.validate) {
|
|
2380
2376
|
if (this.component.validate.hasOwnProperty(key)) {
|
|
@@ -2404,6 +2400,32 @@ function createCustomFormioComponent(customComponentOptions) {
|
|
|
2404
2400
|
}
|
|
2405
2401
|
return superAttach;
|
|
2406
2402
|
}
|
|
2403
|
+
// Push the (possibly mutated) customOptions onto the Angular element. Extracted from attach() so
|
|
2404
|
+
// it can also be re-run from setValue(): a calculateValue expression can mutate
|
|
2405
|
+
// this.component.customOptions as a side effect, but attach() (and therefore the original inline
|
|
2406
|
+
// binding) only re-runs on a redraw, which is not guaranteed to fire after the calculation.
|
|
2407
|
+
// Binding is idempotent, so re-running it is harmless.
|
|
2408
|
+
bindCustomOptions() {
|
|
2409
|
+
if (!this._customAngularElement) {
|
|
2410
|
+
return;
|
|
2411
|
+
}
|
|
2412
|
+
for (const key in this.component.customOptions) {
|
|
2413
|
+
if (Object.prototype.hasOwnProperty.call(this.component.customOptions, key) &&
|
|
2414
|
+
key !== '__proto__' &&
|
|
2415
|
+
key !== 'constructor' &&
|
|
2416
|
+
key !== 'prototype') {
|
|
2417
|
+
this._customAngularElement[key] = this.component.customOptions[key];
|
|
2418
|
+
}
|
|
2419
|
+
}
|
|
2420
|
+
}
|
|
2421
|
+
// @ts-ignore
|
|
2422
|
+
setValue(value, flags = {}) {
|
|
2423
|
+
const changed = super.setValue(value, flags);
|
|
2424
|
+
// FormIO calls setValue() immediately after evaluating calculateValue, so re-applying the
|
|
2425
|
+
// customOptions here reaches the Angular element right away, independent of redraw timing.
|
|
2426
|
+
this.bindCustomOptions();
|
|
2427
|
+
return changed;
|
|
2428
|
+
}
|
|
2407
2429
|
// Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
|
|
2408
2430
|
useWrapper() {
|
|
2409
2431
|
return (this.component.hasOwnProperty('multiple') &&
|