@fundamental-ngx/cdk 0.52.2-rc.9 → 0.53.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,7 +106,7 @@ export class CvaDirective {
106
106
  if (!this._controlInvalid$()) {
107
107
  return 'default';
108
108
  }
109
- return this.formField?.getPriorityState() || 'error';
109
+ return this.formField?.getPriorityState() || 'default';
110
110
  });
111
111
  /**
112
112
  * Element reference.
@@ -318,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
318
318
  }], id: [{
319
319
  type: Input
320
320
  }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL2Zvcm1zL2N2YS9jdmEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFM0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBTWpCLE1BQU0sT0FBTyxZQUFZO0lBZXJCOzs7OztPQUtHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBMkI7UUFDakMsSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFB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LEVBQUUsVUFBVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQWNHLFdBQVc7c0JBRFYsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBY04sWUFBWTtzQkFEWCxLQUFLO2dCQUtGLFFBQVE7c0JBRFgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBaUJOLElBQUk7c0JBREgsS0FBSztnQkFPTixhQUFhO3NCQURaLE1BQU07Z0JBT1AsWUFBWTtzQkFEWCxNQUFNO2dCQU9HLFdBQVc7c0JBRHBCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBa0ZoRSxFQUFFO3NCQURELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBpc0Rldk1vZGUsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1ZhbGlkQ29udHJvbFN0YXRlIH0gZnJvbSAnLi4vaGVscGVycy9zdGF0ZSc7XG5pbXBvcnQgeyBCYXNlQ1ZBIH0gZnJvbSAnLi4vbW9kZWxzL2N2YSc7XG5pbXBvcnQgeyBGb3JtRmllbGQsIEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQtY29udHJvbC50b2tlbic7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQudG9rZW4nO1xuXG5sZXQgcmFuZG9tSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtDdmFdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEN2YURpcmVjdGl2ZTxUID0gYW55PlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgSGFzRWxlbWVudFJlZixcbiAgICAgICAgQmFzZUNWQSxcbiAgICAgICAgRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBEb0NoZWNrLFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiAgQ2FuIGJlICdzdWNjZXNzJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnZGVmYXVsdCcsICdpbmZvcm1hdGlvbicuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz4pIHtcbiAgICAgICAgaWYgKCFzdGF0ZSB8fCBpc1ZhbGlkQ29udHJvbFN0YXRlKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLnNldChzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUHJvdmlkZWQgdmFsdWUgXCIke3N0YXRlfVwiIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgRm9ybVN0YXRlcyB0eXBlYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVkU3RhdGUkKCk7XG4gICAgfVxuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVhZE9ubHkgVmFsdWUgdG8gTWFyayBjb21wb25lbnQgcmVhZCBvbmx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seTogYm9vbGVhbjtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGVsbCB0aGUgY29tcG9uZW50IGlmIHdlIGFyZSBpbiBlZGl0aW5nIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZWRpdGFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fZWRpdGFibGUgIT09IG5ld1ZhbCkge1xuICAgICAgICAgICAgdGhpcy5fZWRpdGFibGUgPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ2VkaXRhYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBpcyBuZWVkZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZGV0ZWN0Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbWFyayBmb3IgY2hhbmdlcyBkZXRlY3Rpb24gaXMgbmVlZGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1hcmtGb3JDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBpbnRlcm5hbCBJbnB1dCBlbGVtZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50UmVmJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlOiBUO1xuXG4gICAgLyoqIHNldCB3aGVuIGlucHV0IGZpZWxkIGlzIG1hbmRhdG9yeSBmb3JtIGZpZWxkICovXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjb250cm9sIGhhcyBlcnJvcnMgKi9cbiAgICBnZXQgY29udHJvbEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250cm9sSW52YWxpZCQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgZm9ybUZpZWxkOiBGb3JtRmllbGQgfCBudWxsID0gaW5qZWN0KEZEX0ZPUk1fRklFTEQsIHtcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBOZ0NvbnRyb2wgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogRm9ybSBjb250YWluZXIgaW5zdGFuY2UuIFVzdWFsbHkgbmdGb3JtIG9yIEZvcm1Hcm91cCBkaXJlY3RpdmVzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNlcGFyYXRlIE5nRm9ybSBpbnN0YW5jZS4gRm9yIGNhc2VzIHdoZW4gZm9ybUdyb3VwIGlzIHVzZWQgd2l0aCB0aGUgZm9ybSBpdHNlbGYuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdGb3JtID0gaW5qZWN0KE5nRm9ybSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgbm9ybWFsaXplZFN0YXRlJCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVkU3RhdGUgPSB0aGlzLl9zdGF0ZSQoKTtcbiAgICAgICAgaWYgKHN0b3JlZFN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmVkU3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NvbnRyb2xJbnZhbGlkJCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkPy5nZXRQcmlvcml0eVN0YXRlKCkgfHwgJ2Vycm9yJztcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdElkID0gYGZkLWlucHV0LWlkLSR7cmFuZG9tSWQrK31gO1xuXG4gICAgLyoqIElEIGZvciB0aGUgRWxlbWVudCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gdGhpcy5fZGVmYXVsdElkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VkaXRhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sSW52YWxpZCQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnRDb250cm9sID0gaW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCwge1xuICAgICAgICBza2lwU2VsZjogdHJ1ZSxcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogQ2FuIGJlIGBzdWNjZXNzYCwgYGVycm9yYCwgYHdhcm5pbmdgLCBgaW5mb3JtYXRpb25gIG9yICdkZWZhdWx0J1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlJCA9IHNpZ25hbDxOdWxsYWJsZTxGb3JtU3RhdGVzPj4obnVsbCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBUaGVyZSBtYXkgYmUgY2FzZXMgd2hlbiBvbmUgZm9ybSBjb250cm9sIGlzIHVzZWQgYXMgYSBiYXNlIHRvIGJ1aWxkIGFub3RoZXIgZm9ybSBjb250cm9sLlxuICAgICAgICBpZiAoIXRoaXMuX3BhcmVudENvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkPy5yZWdpc3RlckZvcm1GaWVsZENvbnRyb2wodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZS12YWxpZGF0ZSBhbmQgZW1pdCBldmVudCB0byBwYXJlbnQgY29udGFpbmVyIG9uIGV2ZXJ5IENEIGN5Y2xlIGFzIHRoZXkgYXJlIHNvbWUgZXJyb3JzXG4gICAgICogdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8uXG4gICAgICovXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbEFuZEhlbHBJZCA9IGBmZHAtZm9ybS1sYWJlbC1jb250ZW50LSR7dGhpcy5pZH1gO1xuICAgICAgICAvLyBpZiBub3Qgc3BlY2lmaWVkLCBhc3NvY2lhdGUgbGFiZWwgYW5kIGlubGluZSBoZWxwIGlkcyB3aXRoIHRoZSBpbnB1dCxcbiAgICAgICAgLy8gZWxzZSBhZGQgdGhlc2UgaWRzIHRvIHRoZSBzcGVjaWZpZWQgb25lc1xuICAgICAgICBpZiAoIXRoaXMuYXJpYUxhYmVsbGVkQnkpIHtcbiAgICAgICAgICAgIHRoaXMuYXJpYUxhYmVsbGVkQnkgPSBsYWJlbEFuZEhlbHBJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXJpYUxhYmVsbGVkQnkgKz0gJyAnICsgbGFiZWxBbmRIZWxwSWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmZvcm1GaWVsZD8udW5yZWdpc3RlckZvcm1GaWVsZENvbnRyb2wodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IEJvb2xlYW5JbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShpc0Rpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmIChuZXdTdGF0ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3U3RhdGU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdzZXREaXNhYmxlZFN0YXRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHNldHRpbmcgdGhlIHZhbHVlXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3dyaXRlVmFsdWUnKTtcbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBLZWVwcyB0cmFjayBvZiBlbGVtZW50IGZvY3VzXG4gICAgICovXG4gICAgX29uRm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNGb2N1c2VkICE9PSB0aGlzLmZvY3VzZWQgJiYgKCF0aGlzLmRpc2FibGVkIHx8ICFpc0ZvY3VzZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBpc0ZvY3VzZWQ7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdfb25Gb2N1c0NoYW5nZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBldmVuIHdoZW4gd2UgY2xpY2sgb24gcGFyZW50IGNvbnRhaW5lciB3aGljaCBpcyB0aGUgRm9ybUZpZWxkIFdyYXBwaW5nIHRoaXNcbiAgICAgKiBjb250cm9sXG4gICAgICovXG4gICAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbiBtb3N0IG9mIHRoZSBjYXNlcyB3aGVuIHdvcmtpbmcgd2l0aCBpbnB1dCBlbGVtZW50IGRpcmVjdGx5IHlvdSBzaG91bGQgYmUganVzdCBmaW5kIHRvIGFzc2lnblxuICAgICAqIHZhcmlhYmxlIHRvIHRoaXMgZWxlbWVudFxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogPGlucHV0ICNpbnB1dEVsZW1lbnRSZWYgZmQtZm9ybS1jb250cm9sIC4uLj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGFuZCB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgdXNlZC4gRm9yIG90aGVyIGNhc2VzIGltcGxlbWVudCBmb2N1cy5cbiAgICAgKlxuICAgICAqL1xuICAgIGZvY3VzKGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZWxlbWVudFJlZiAmJiAhdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIE5lZWQgcmUtdmFsaWRhdGVzIGVycm9ycyBvbiBldmVyeSBDRCBpdGVyYXRpb24gdG8gbWFrZSBzdXJlIHdlIGFyZSBhbHNvXG4gICAgICogIGNvdmVyaW5nIG5vbi1jb250cm9sIGVycm9ycywgZXJyb3JzIHRoYXQgaGFwcGVucyBvdXRzaWRlIG9mIHRoaXMgY29udHJvbFxuICAgICAqL1xuICAgIHVwZGF0ZUVycm9yU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMubmdGb3JtO1xuICAgICAgICBjb25zdCBwYXJlbnRDb250cm9sQ29udGFpbmVyID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wgPyAodGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbCkgOiBudWxsO1xuICAgICAgICBjb25zdCBuZXdTdGF0dXNJc0Vycm9yID0gISEoXG4gICAgICAgICAgICBjb250cm9sPy5pbnZhbGlkICYmXG4gICAgICAgICAgICAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQgfHwgcGFyZW50Py5zdWJtaXR0ZWQgfHwgKHBhcmVudENvbnRyb2xDb250YWluZXIgYXMgYW55KT8uc3VibWl0dGVkKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChuZXdTdGF0dXNJc0Vycm9yICE9PSB0aGlzLl9jb250cm9sSW52YWxpZCQoKSkge1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbEludmFsaWQkLnNldChuZXdTdGF0dXNJc0Vycm9yKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3VwZGF0ZUVycm9yU3RhdGUnKTtcbiAgICAgICAgICAgIHRoaXMuX21hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIGEgY29udHJvbC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0gZW1pdE9uQ2hhbmdlIHdoZXRoZXIgdG8gZW1pdCBcIm9uQ2hhbmdlXCIgZXZlbnQuXG4gICAgICogU2hvdWxkIGJlIFwiZmFsc2VcIiwgaWYgdGhlIGNoYW5nZSBpcyBtYWRlIHByb2dyYW1tYXRpY2FsbHkgKGludGVybmFsbHkpIGJ5IHRoZSBjb250cm9sLCBcInRydWVcIiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzZXRWYWx1ZSh2YWx1ZTogVCwgZW1pdE9uQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjay5lbWl0KCk7XG4gICAgfVxufVxuIl19
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL2Zvcm1zL2N2YS9jdmEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFM0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBTWpCLE1BQU0sT0FBTyxZQUFZO0lBZXJCOzs7OztPQUtHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBMkI7UUFDakMsSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFB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LEVBQUUsVUFBVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQWNHLFdBQVc7c0JBRFYsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBY04sWUFBWTtzQkFEWCxLQUFLO2dCQUtGLFFBQVE7c0JBRFgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBaUJOLElBQUk7c0JBREgsS0FBSztnQkFPTixhQUFhO3NCQURaLE1BQU07Z0JBT1AsWUFBWTtzQkFEWCxNQUFNO2dCQU9HLFdBQVc7c0JBRHBCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBa0ZoRSxFQUFFO3NCQURELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBpc0Rldk1vZGUsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1ZhbGlkQ29udHJvbFN0YXRlIH0gZnJvbSAnLi4vaGVscGVycy9zdGF0ZSc7XG5pbXBvcnQgeyBCYXNlQ1ZBIH0gZnJvbSAnLi4vbW9kZWxzL2N2YSc7XG5pbXBvcnQgeyBGb3JtRmllbGQsIEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQtY29udHJvbC50b2tlbic7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQudG9rZW4nO1xuXG5sZXQgcmFuZG9tSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtDdmFdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEN2YURpcmVjdGl2ZTxUID0gYW55PlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgSGFzRWxlbWVudFJlZixcbiAgICAgICAgQmFzZUNWQSxcbiAgICAgICAgRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBEb0NoZWNrLFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiAgQ2FuIGJlICdzdWNjZXNzJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnZGVmYXVsdCcsICdpbmZvcm1hdGlvbicuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz4pIHtcbiAgICAgICAgaWYgKCFzdGF0ZSB8fCBpc1ZhbGlkQ29udHJvbFN0YXRlKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLnNldChzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUHJvdmlkZWQgdmFsdWUgXCIke3N0YXRlfVwiIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgRm9ybVN0YXRlcyB0eXBlYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVkU3RhdGUkKCk7XG4gICAgfVxuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVhZE9ubHkgVmFsdWUgdG8gTWFyayBjb21wb25lbnQgcmVhZCBvbmx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seTogYm9vbGVhbjtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGVsbCB0aGUgY29tcG9uZW50IGlmIHdlIGFyZSBpbiBlZGl0aW5nIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZWRpdGFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fZWRpdGFibGUgIT09IG5ld1ZhbCkge1xuICAgICAgICAgICAgdGhpcy5fZWRpdGFibGUgPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ2VkaXRhYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBpcyBuZWVkZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZGV0ZWN0Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbWFyayBmb3IgY2hhbmdlcyBkZXRlY3Rpb24gaXMgbmVlZGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1hcmtGb3JDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBpbnRlcm5hbCBJbnB1dCBlbGVtZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50UmVmJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlOiBUO1xuXG4gICAgLyoqIHNldCB3aGVuIGlucHV0IGZpZWxkIGlzIG1hbmRhdG9yeSBmb3JtIGZpZWxkICovXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjb250cm9sIGhhcyBlcnJvcnMgKi9cbiAgICBnZXQgY29udHJvbEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250cm9sSW52YWxpZCQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgZm9ybUZpZWxkOiBGb3JtRmllbGQgfCBudWxsID0gaW5qZWN0KEZEX0ZPUk1fRklFTEQsIHtcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBOZ0NvbnRyb2wgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogRm9ybSBjb250YWluZXIgaW5zdGFuY2UuIFVzdWFsbHkgbmdGb3JtIG9yIEZvcm1Hcm91cCBkaXJlY3RpdmVzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNlcGFyYXRlIE5nRm9ybSBpbnN0YW5jZS4gRm9yIGNhc2VzIHdoZW4gZm9ybUdyb3VwIGlzIHVzZWQgd2l0aCB0aGUgZm9ybSBpdHNlbGYuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdGb3JtID0gaW5qZWN0KE5nRm9ybSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgbm9ybWFsaXplZFN0YXRlJCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVkU3RhdGUgPSB0aGlzLl9zdGF0ZSQoKTtcbiAgICAgICAgaWYgKHN0b3JlZFN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmVkU3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NvbnRyb2xJbnZhbGlkJCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkPy5nZXRQcmlvcml0eVN0YXRlKCkgfHwgJ2RlZmF1bHQnO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogRWxlbWVudCByZWZlcmVuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0SWQgPSBgZmQtaW5wdXQtaWQtJHtyYW5kb21JZCsrfWA7XG5cbiAgICAvKiogSUQgZm9yIHRoZSBFbGVtZW50ICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSB0aGlzLl9kZWZhdWx0SWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWRpdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xJbnZhbGlkJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudENvbnRyb2wgPSBpbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MLCB7XG4gICAgICAgIHNraXBTZWxmOiB0cnVlLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiBDYW4gYmUgYHN1Y2Nlc3NgLCBgZXJyb3JgLCBgd2FybmluZ2AsIGBpbmZvcm1hdGlvbmAgb3IgJ2RlZmF1bHQnXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkID0gc2lnbmFsPE51bGxhYmxlPEZvcm1TdGF0ZXM+PihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRoZXJlIG1heSBiZSBjYXNlcyB3aGVuIG9uZSBmb3JtIGNvbnRyb2wgaXMgdXNlZCBhcyBhIGJhc2UgdG8gYnVpbGQgYW5vdGhlciBmb3JtIGNvbnRyb2wuXG4gICAgICAgIGlmICghdGhpcy5fcGFyZW50Q29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRmllbGQ/LnJlZ2lzdGVyRm9ybUZpZWxkQ29udHJvbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlLXZhbGlkYXRlIGFuZCBlbWl0IGV2ZW50IHRvIHBhcmVudCBjb250YWluZXIgb24gZXZlcnkgQ0QgY3ljbGUgYXMgdGhleSBhcmUgc29tZSBlcnJvcnNcbiAgICAgKiB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0by5cbiAgICAgKi9cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsQW5kSGVscElkID0gYGZkcC1mb3JtLWxhYmVsLWNvbnRlbnQtJHt0aGlzLmlkfWA7XG4gICAgICAgIC8vIGlmIG5vdCBzcGVjaWZpZWQsIGFzc29jaWF0ZSBsYWJlbCBhbmQgaW5saW5lIGhlbHAgaWRzIHdpdGggdGhlIGlucHV0LFxuICAgICAgICAvLyBlbHNlIGFkZCB0aGVzZSBpZHMgdG8gdGhlIHNwZWNpZmllZCBvbmVzXG4gICAgICAgIGlmICghdGhpcy5hcmlhTGFiZWxsZWRCeSkge1xuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWxsZWRCeSA9IGxhYmVsQW5kSGVscElkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWxsZWRCeSArPSAnICcgKyBsYWJlbEFuZEhlbHBJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkPy51bnJlZ2lzdGVyRm9ybUZpZWxkQ29udHJvbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogQm9vbGVhbklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGlzRGlzYWJsZWQpO1xuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKG5ld1N0YXRlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3NldERpc2FibGVkU3RhdGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3Igc2V0dGluZyB0aGUgdmFsdWVcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnd3JpdGVWYWx1ZScpO1xuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEtlZXBzIHRyYWNrIG9mIGVsZW1lbnQgZm9jdXNcbiAgICAgKi9cbiAgICBfb25Gb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCAmJiAoIXRoaXMuZGlzYWJsZWQgfHwgIWlzRm9jdXNlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ19vbkZvY3VzQ2hhbmdlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGV2ZW4gd2hlbiB3ZSBjbGljayBvbiBwYXJlbnQgY29udGFpbmVyIHdoaWNoIGlzIHRoZSBGb3JtRmllbGQgV3JhcHBpbmcgdGhpc1xuICAgICAqIGNvbnRyb2xcbiAgICAgKi9cbiAgICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXMoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIG1vc3Qgb2YgdGhlIGNhc2VzIHdoZW4gd29ya2luZyB3aXRoIGlucHV0IGVsZW1lbnQgZGlyZWN0bHkgeW91IHNob3VsZCBiZSBqdXN0IGZpbmQgdG8gYXNzaWduXG4gICAgICogdmFyaWFibGUgdG8gdGhpcyBlbGVtZW50XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiA8aW5wdXQgI2lucHV0RWxlbWVudFJlZiBmZC1mb3JtLWNvbnRyb2wgLi4uPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYW5kIHRoaXMgZGVmYXVsdCBiZWhhdmlvciB1c2VkLiBGb3Igb3RoZXIgY2FzZXMgaW1wbGVtZW50IGZvY3VzLlxuICAgICAqXG4gICAgICovXG4gICAgZm9jdXMoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50UmVmICYmICF0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyhldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgTmVlZCByZS12YWxpZGF0ZXMgZXJyb3JzIG9uIGV2ZXJ5IENEIGl0ZXJhdGlvbiB0byBtYWtlIHN1cmUgd2UgYXJlIGFsc29cbiAgICAgKiAgY292ZXJpbmcgbm9uLWNvbnRyb2wgZXJyb3JzLCBlcnJvcnMgdGhhdCBoYXBwZW5zIG91dHNpZGUgb2YgdGhpcyBjb250cm9sXG4gICAgICovXG4gICAgdXBkYXRlRXJyb3JTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5uZ0Zvcm07XG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRyb2xDb250YWluZXIgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbCA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1c0lzRXJyb3IgPSAhIShcbiAgICAgICAgICAgIGNvbnRyb2w/LmludmFsaWQgJiZcbiAgICAgICAgICAgIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCB8fCBwYXJlbnQ/LnN1Ym1pdHRlZCB8fCAocGFyZW50Q29udHJvbENvbnRhaW5lciBhcyBhbnkpPy5zdWJtaXR0ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKG5ld1N0YXR1c0lzRXJyb3IgIT09IHRoaXMuX2NvbnRyb2xJbnZhbGlkJCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sSW52YWxpZCQuc2V0KG5ld1N0YXR1c0lzRXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgndXBkYXRlRXJyb3JTdGF0ZScpO1xuICAgICAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNldFZhbHVlKHZhbHVlOiBULCBlbWl0T25DaGFuZ2UgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChlbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX21hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrLmVtaXQoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { A, ALT, BACKSPACE, C, CONTROL, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, F2, HOME, LEFT_ARROW, MAC_ENTER, META, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SHIFT, SPACE, TAB, UP_ARROW, V, X } from '@angular/cdk/keycodes';
1
+ import { A, ALT, BACKSPACE, C, CONTROL, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, F2, F7, HOME, LEFT_ARROW, MAC_ENTER, META, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SHIFT, SPACE, TAB, UP_ARROW, V, X } from '@angular/cdk/keycodes';
2
2
  import { isDevMode } from '@angular/core';
3
3
  /** Map of keyCodes and their corresponding "key" values */
4
4
  const keyMap = new Map([
@@ -37,7 +37,8 @@ const keyMap = new Map([
37
37
  [NUMPAD_SEVEN, ['NumPad7']],
38
38
  [NUMPAD_EIGHT, ['NumPad8']],
39
39
  [NUMPAD_NINE, ['NumPad9']],
40
- [F2, ['F2']]
40
+ [F2, ['F2']],
41
+ [F7, ['F7']]
41
42
  ]);
42
43
  export class KeyUtil {
43
44
  /**
@@ -86,4 +87,4 @@ export class KeyUtil {
86
87
  return false;
87
88
  }
88
89
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9mdW5jdGlvbnMva2V5LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxHQUFHLEVBQ0gsU0FBUyxFQUNULENBQUMsRUFDRCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sRUFBRSxFQUNGLElBQUksRUFDSixVQUFVLEVBQ1YsU0FBUyxFQUNULElBQUksRUFDSixZQUFZLEVBQ1osV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssRUFDTCxLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixDQUFDLEVBQ0QsQ0FBQyxFQUNKLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQywyREFBMkQ7QUFDM0QsTUFBTSxNQUFNLEdBQTBCLElBQUksR0FBRyxDQUFDO0lBQzFDLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUMsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUMsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNkLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNkLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNiLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNiLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QixDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFCLENBQUMsVUFBVSxF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Q25ELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEEsXG4gICAgQUxULFxuICAgIEJBQ0tTUEFDRSxcbiAgICBDLFxuICAgIENPTlRST0wsXG4gICAgREFTSCxcbiAgICBERUxFVEUsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTkQsXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIEYyLFxuICAgIEhPTUUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBNQUNfRU5URVIsXG4gICAgTUVUQSxcbiAgICBOVU1QQURfRUlHSFQsXG4gICAgTlVNUEFEX0ZJVkUsXG4gICAgTlVNUEFEX0ZPVVIsXG4gICAgTlVNUEFEX01JTlVTLFxuICAgIE5VTVBBRF9OSU5FLFxuICAgIE5VTVBBRF9PTkUsXG4gICAgTlVNUEFEX1NFVkVOLFxuICAgIE5VTVBBRF9TSVgsXG4gICAgTlVNUEFEX1RIUkVFLFxuICAgIE5VTVBBRF9UV08sXG4gICAgTlVNUEFEX1pFUk8sXG4gICAgUEFHRV9ET1dOLFxuICAgIFBBR0VfVVAsXG4gICAgUklHSFRfQVJST1csXG4gICAgU0hJRlQsXG4gICAgU1BBQ0UsXG4gICAgVEFCLFxuICAgIFVQX0FSUk9XLFxuICAgIFYsXG4gICAgWFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBNYXAgb2Yga2V5Q29kZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgXCJrZXlcIiB2YWx1ZXMgKi9cbmNvbnN0IGtleU1hcDogTWFwPG51bWJlciwgc3RyaW5nW10+ID0gbmV3IE1hcChbXG4gICAgW1JJR0hUX0FSUk9XLCBbJ0Fycm93UmlnaHQnLCAnUmlnaHQnXV0sXG4gICAgW0RPV05fQVJST1csIFsnQXJyb3dEb3duJywgJ0Rvd24nXV0sXG4gICAgW0xFRlRfQVJST1csIFsnQXJyb3dMZWZ0JywgJ0xlZnQnXV0sXG4gICAgW1VQX0FSUk9XLCBbJ0Fycm93VXAnLCAnVXAnXV0sXG4gICAgW1NQQUNFLCBbJ1NwYWNlJywgJ1NwYWNlYmFyJywgJyAnXV0sXG4gICAgW0VTQ0FQRSwgWydFc2NhcGUnLCAnRXNjJ11dLFxuICAgIFtERUxFVEUsIFsnRGVsZXRlJywgJ0RlbCddXSxcbiAgICBbRU5URVIsIFsnRW50ZXInXV0sXG4gICAgW01BQ19FTlRFUiwgWydFbnRlciddXSxcbiAgICBbVEFCLCBbJ1RhYiddXSxcbiAgICBbSE9NRSwgWydIb21lJ11dLFxuICAgIFtFTkQsIFsnRW5kJ11dLFxuICAgIFtBTFQsIFsnQWx0J11dLFxuICAgIFtDT05UUk9MLCBbJ0N0cmwnLCAnQ29udHJvbCcsICdNZXRhJ11dLFxuICAgIFtNRVRBLCBbJ01ldGEnXV0sXG4gICAgW1NISUZULCBbJ1NoaWZ0J11dLFxuICAgIFtCQUNLU1BBQ0UsIFsnQmFja3NwYWNlJ11dLFxuICAgIFtBLCBbJ0tleUEnXV0sXG4gICAgW0MsIFsnS2V5QyddXSxcbiAgICBbViwgWydLZXlWJ11dLFxuICAgIFtYLCBbJ0tleVgnXV0sXG4gICAgW1BBR0VfVVAsIFsnUGFnZVVwJ11dLFxuICAgIFtQQUdFX0RPV04sIFsnUGFnZURvd24nXV0sXG4gICAgW0RBU0gsIFsnLSddXSxcbiAgICBbTlVNUEFEX01JTlVTLCBbJy0nXV0sXG4gICAgW05VTVBBRF9aRVJPLCBbJ051bVBhZDAnXV0sXG4gICAgW05VTVBBRF9PTkUsIFsnTnVtUGFkMSddXSxcbiAgICBbTlVNUEFEX1RXTywgWydOdW1QYWQyJ11dLFxuICAgIFtOVU1QQURfVEhSRUUsIFsnTnVtUGFkMyddXSxcbiAgICBbTlVNUEFEX0ZPVVIsIFsnTnVtUGFkNCddXSxcbiAgICBbTlVNUEFEX0ZJVkUsIFsnTnVtUGFkNSddXSxcbiAgICBbTlVNUEFEX1NJWCwgWydOdW1QYWQ2J11dLFxuICAgIFtOVU1QQURfU0VWRU4sIFsnTnVtUGFkNyddXSxcbiAgICBbTlVNUEFEX0VJR0hULCBbJ051bVBhZDgnXV0sXG4gICAgW05VTVBBRF9OSU5FLCBbJ051bVBhZDknXV0sXG4gICAgW0YyLCBbJ0YyJ11dXG5dKTtcblxuZXhwb3J0IGNsYXNzIEtleVV0aWwge1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gdW5pZnkga2V5IGlkZW50aWZpY2F0aW9uIGFjcm9zcyBkaWZmZXJlbnQgYnJvd3NlcnMgdXNpbmcgS2V5Q29kZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAgICAgLSBLZXlib2FyZEV2ZW50XG4gICAgICogQHBhcmFtIGtleUNvZGUgICAtIGV2ZW50LmtleSBuYW1lIG1hdGNoaW5nIFczQyBzcGVjaWZpY2F0aW9uIC8gKEFTU0NJIGNoYXIuIGNvZGVzKVxuICAgICAqICovXG4gICAgc3RhdGljIGlzS2V5Q29kZShldmVudDogS2V5Ym9hcmRFdmVudCwga2V5Q29kZTogbnVtYmVyIHwgbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlDb2RlLnNvbWUoKGtleSkgPT4gdGhpcy5pc0tleUNvZGUoZXZlbnQsIGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGtleU1hcC5nZXQoa2V5Q29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlNYXAuZ2V0KGtleUNvZGUpPy5zb21lKChhbGlhcykgPT4gYWxpYXMgPT09IGV2ZW50LmtleSkgfHwga2V5Q29kZSA9PT0gZXZlbnQua2V5Q29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50cy4gQ2hlY2sgaWYgXCJldmVudFwiIGlzIGEgS2V5Ym9hcmRFdmVudCBvciBcImtleVwiIGlzIGRlZmluZWQgaW4ga2V5TWFwYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHVuaWZ5IGtleSBpZGVudGlmaWNhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGJyb3dzZXJzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgICAgIC0gS2V5Ym9hcmRFdmVudFxuICAgICAqIEBwYXJhbSBrZXlUeXBlICAgLSBUeXBlIG9mIGtleVxuICAgICAqICovXG4gICAgc3RhdGljIGlzS2V5VHlwZShldmVudDogS2V5Ym9hcmRFdmVudCwga2V5VHlwZTogJ2FscGhhYmV0aWNhbCcgfCAnbnVtZXJpYycgfCAnY29udHJvbCcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGtleVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWMnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBldmVudC5jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RpZ2l0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGV2ZW50LmtleUNvZGUgPj0gNDggJiYgZXZlbnQua2V5Q29kZSA8PSA1NykgfHwgKGV2ZW50LmtleUNvZGUgPj0gOTYgJiYgZXZlbnQua2V5Q29kZSA8PSAxMDUpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FscGhhYmV0aWNhbCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LmNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygna2V5JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXZlbnQua2V5Q29kZSA+PSA2NSAmJiBldmVudC5rZXlDb2RlIDw9IDkwO1xuICAgICAgICAgICAgICAgIC8vIHNvbWUgc2VydmljZSBjb21tYW5kcyBhcyBhbHQsIGN0ciwgaW5zZXJ0LCBwcmludCwgZjQgZXRjLiBBbGwgZXhjZXB0IGxldHRlcnMsIG51bWJlcnMgYW5kIHN5bWJvbHNcbiAgICAgICAgICAgICAgICBjYXNlICdjb250cm9sJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPCA0OCB8fCAoZXZlbnQua2V5Q29kZSA+PSAxMTIgJiYgZXZlbnQua2V5Q29kZSA8PSAxMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9mdW5jdGlvbnMva2V5LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxHQUFHLEVBQ0gsU0FBUyxFQUNULENBQUMsRUFDRCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sRUFBRSxFQUNGLEVBQUUsRUFDRixJQUFJLEVBQ0osVUFBVSxFQUNWLFNBQVMsRUFDVCxJQUFJLEVBQ0osWUFBWSxFQUNaLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsQ0FBQyxFQUNELENBQUMsRUFDSixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsMkRBQTJEO0FBQzNELE1BQU0sTUFBTSxHQUEwQixJQUFJLEdBQUcsQ0FBQztJQUMxQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7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LENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQSxcbiAgICBBTFQsXG4gICAgQkFDS1NQQUNFLFxuICAgIEMsXG4gICAgQ09OVFJPTCxcbiAgICBEQVNILFxuICAgIERFTEVURSxcbiAgICBET1dOX0FSUk9XLFxuICAgIEVORCxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgRjIsXG4gICAgRjcsXG4gICAgSE9NRSxcbiAgICBMRUZUX0FSUk9XLFxuICAgIE1BQ19FTlRFUixcbiAgICBNRVRBLFxuICAgIE5VTVBBRF9FSUdIVCxcbiAgICBOVU1QQURfRklWRSxcbiAgICBOVU1QQURfRk9VUixcbiAgICBOVU1QQURfTUlOVVMsXG4gICAgTlVNUEFEX05JTkUsXG4gICAgTlVNUEFEX09ORSxcbiAgICBOVU1QQURfU0VWRU4sXG4gICAgTlVNUEFEX1NJWCxcbiAgICBOVU1QQURfVEhSRUUsXG4gICAgTlVNUEFEX1RXTyxcbiAgICBOVU1QQURfWkVSTyxcbiAgICBQQUdFX0RPV04sXG4gICAgUEFHRV9VUCxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBTUEFDRSxcbiAgICBUQUIsXG4gICAgVVBfQVJST1csXG4gICAgVixcbiAgICBYXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIE1hcCBvZiBrZXlDb2RlcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBcImtleVwiIHZhbHVlcyAqL1xuY29uc3Qga2V5TWFwOiBNYXA8bnVtYmVyLCBzdHJpbmdbXT4gPSBuZXcgTWFwKFtcbiAgICBbUklHSFRfQVJST1csIFsnQXJyb3dSaWdodCcsICdSaWdodCddXSxcbiAgICBbRE9XTl9BUlJPVywgWydBcnJvd0Rvd24nLCAnRG93biddXSxcbiAgICBbTEVGVF9BUlJPVywgWydBcnJvd0xlZnQnLCAnTGVmdCddXSxcbiAgICBbVVBfQVJST1csIFsnQXJyb3dVcCcsICdVcCddXSxcbiAgICBbU1BBQ0UsIFsnU3BhY2UnLCAnU3BhY2ViYXInLCAnICddXSxcbiAgICBbRVNDQVBFLCBbJ0VzY2FwZScsICdFc2MnXV0sXG4gICAgW0RFTEVURSwgWydEZWxldGUnLCAnRGVsJ11dLFxuICAgIFtFTlRFUiwgWydFbnRlciddXSxcbiAgICBbTUFDX0VOVEVSLCBbJ0VudGVyJ11dLFxuICAgIFtUQUIsIFsnVGFiJ11dLFxuICAgIFtIT01FLCBbJ0hvbWUnXV0sXG4gICAgW0VORCwgWydFbmQnXV0sXG4gICAgW0FMVCwgWydBbHQnXV0sXG4gICAgW0NPTlRST0wsIFsnQ3RybCcsICdDb250cm9sJywgJ01ldGEnXV0sXG4gICAgW01FVEEsIFsnTWV0YSddXSxcbiAgICBbU0hJRlQsIFsnU2hpZnQnXV0sXG4gICAgW0JBQ0tTUEFDRSwgWydCYWNrc3BhY2UnXV0sXG4gICAgW0EsIFsnS2V5QSddXSxcbiAgICBbQywgWydLZXlDJ11dLFxuICAgIFtWLCBbJ0tleVYnXV0sXG4gICAgW1gsIFsnS2V5WCddXSxcbiAgICBbUEFHRV9VUCwgWydQYWdlVXAnXV0sXG4gICAgW1BBR0VfRE9XTiwgWydQYWdlRG93biddXSxcbiAgICBbREFTSCwgWyctJ11dLFxuICAgIFtOVU1QQURfTUlOVVMsIFsnLSddXSxcbiAgICBbTlVNUEFEX1pFUk8sIFsnTnVtUGFkMCddXSxcbiAgICBbTlVNUEFEX09ORSwgWydOdW1QYWQxJ11dLFxuICAgIFtOVU1QQURfVFdPLCBbJ051bVBhZDInXV0sXG4gICAgW05VTVBBRF9USFJFRSwgWydOdW1QYWQzJ11dLFxuICAgIFtOVU1QQURfRk9VUiwgWydOdW1QYWQ0J11dLFxuICAgIFtOVU1QQURfRklWRSwgWydOdW1QYWQ1J11dLFxuICAgIFtOVU1QQURfU0lYLCBbJ051bVBhZDYnXV0sXG4gICAgW05VTVBBRF9TRVZFTiwgWydOdW1QYWQ3J11dLFxuICAgIFtOVU1QQURfRUlHSFQsIFsnTnVtUGFkOCddXSxcbiAgICBbTlVNUEFEX05JTkUsIFsnTnVtUGFkOSddXSxcbiAgICBbRjIsIFsnRjInXV0sXG4gICAgW0Y3LCBbJ0Y3J11dXG5dKTtcblxuZXhwb3J0IGNsYXNzIEtleVV0aWwge1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gdW5pZnkga2V5IGlkZW50aWZpY2F0aW9uIGFjcm9zcyBkaWZmZXJlbnQgYnJvd3NlcnMgdXNpbmcgS2V5Q29kZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAgICAgLSBLZXlib2FyZEV2ZW50XG4gICAgICogQHBhcmFtIGtleUNvZGUgICAtIGV2ZW50LmtleSBuYW1lIG1hdGNoaW5nIFczQyBzcGVjaWZpY2F0aW9uIC8gKEFTU0NJIGNoYXIuIGNvZGVzKVxuICAgICAqICovXG4gICAgc3RhdGljIGlzS2V5Q29kZShldmVudDogS2V5Ym9hcmRFdmVudCwga2V5Q29kZTogbnVtYmVyIHwgbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Q29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlDb2RlLnNvbWUoKGtleSkgPT4gdGhpcy5pc0tleUNvZGUoZXZlbnQsIGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50ICYmIGtleU1hcC5nZXQoa2V5Q29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlNYXAuZ2V0KGtleUNvZGUpPy5zb21lKChhbGlhcykgPT4gYWxpYXMgPT09IGV2ZW50LmtleSkgfHwga2V5Q29kZSA9PT0gZXZlbnQua2V5Q29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50cy4gQ2hlY2sgaWYgXCJldmVudFwiIGlzIGEgS2V5Ym9hcmRFdmVudCBvciBcImtleVwiIGlzIGRlZmluZWQgaW4ga2V5TWFwYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHVuaWZ5IGtleSBpZGVudGlmaWNhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGJyb3dzZXJzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgICAgIC0gS2V5Ym9hcmRFdmVudFxuICAgICAqIEBwYXJhbSBrZXlUeXBlICAgLSBUeXBlIG9mIGtleVxuICAgICAqICovXG4gICAgc3RhdGljIGlzS2V5VHlwZShldmVudDogS2V5Ym9hcmRFdmVudCwga2V5VHlwZTogJ2FscGhhYmV0aWNhbCcgfCAnbnVtZXJpYycgfCAnY29udHJvbCcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGtleVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWMnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBldmVudC5jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RpZ2l0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGV2ZW50LmtleUNvZGUgPj0gNDggJiYgZXZlbnQua2V5Q29kZSA8PSA1NykgfHwgKGV2ZW50LmtleUNvZGUgPj0gOTYgJiYgZXZlbnQua2V5Q29kZSA8PSAxMDUpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FscGhhYmV0aWNhbCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LmNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygna2V5JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXZlbnQua2V5Q29kZSA+PSA2NSAmJiBldmVudC5rZXlDb2RlIDw9IDkwO1xuICAgICAgICAgICAgICAgIC8vIHNvbWUgc2VydmljZSBjb21tYW5kcyBhcyBhbHQsIGN0ciwgaW5zZXJ0LCBwcmludCwgZjQgZXRjLiBBbGwgZXhjZXB0IGxldHRlcnMsIG51bWJlcnMgYW5kIHN5bWJvbHNcbiAgICAgICAgICAgICAgICBjYXNlICdjb250cm9sJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPCA0OCB8fCAoZXZlbnQua2V5Q29kZSA+PSAxMTIgJiYgZXZlbnQua2V5Q29kZSA8PSAxMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
@@ -117,7 +117,7 @@ class CvaDirective {
117
117
  if (!this._controlInvalid$()) {
118
118
  return 'default';
119
119
  }
120
- return this.formField?.getPriorityState() || 'error';
120
+ return this.formField?.getPriorityState() || 'default';
121
121
  });
122
122
  /**
123
123
  * Element reference.
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-cdk-forms.mjs","sources":["../../../../libs/cdk/forms/models/form-state.ts","../../../../libs/cdk/forms/helpers/state.ts","../../../../libs/cdk/forms/tokens/form-field-control.token.ts","../../../../libs/cdk/forms/tokens/form-field.token.ts","../../../../libs/cdk/forms/cva/cva.directive.ts","../../../../libs/cdk/forms/forms.module.ts","../../../../libs/cdk/forms/cva/cva-control.class.ts","../../../../libs/cdk/forms/models/form-field.ts","../../../../libs/cdk/forms/models/select-item.ts","../../../../libs/cdk/forms/fundamental-ngx-cdk-forms.ts"],"sourcesContent":["export const formStates = ['success', 'error', 'warning', 'default', 'information'] as const;\n\nexport type FormStates = (typeof formStates)[number];\n","import { formStates, FormStates } from '../models/form-state';\n\nconst stateSet = new Set<FormStates>(formStates);\n\n/** Checks if the given state is a valid control state. */\nexport function isValidControlState(value: any): value is FormStates {\n return stateSet.has(value);\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormFieldControl } from '../models/form-field';\n\nexport const FD_FORM_FIELD_CONTROL = new InjectionToken<FormFieldControl>('FdFormFieldControl');\n","import { InjectionToken } from '@angular/core';\nimport { FormField } from '../models/form-field';\n\nexport const FD_FORM_FIELD = new InjectionToken<FormField>('FdFormField');\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n computed,\n inject,\n isDevMode,\n signal\n} from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormControl, NgControl, NgForm } from '@angular/forms';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, Subscription } from 'rxjs';\nimport { isValidControlState } from '../helpers/state';\nimport { BaseCVA } from '../models/cva';\nimport { FormField, FormFieldControl } from '../models/form-field';\nimport { FormStates } from '../models/form-state';\nimport { FD_FORM_FIELD_CONTROL } from '../tokens/form-field-control.token';\nimport { FD_FORM_FIELD } from '../tokens/form-field.token';\n\nlet randomId = 0;\n\n@Directive({\n selector: '[fdkCva]',\n standalone: true\n})\nexport class CvaDirective<T = any>\n implements\n HasElementRef,\n BaseCVA,\n FormFieldControl,\n OnInit,\n DoCheck,\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor\n{\n /** Input placeholder */\n @Input()\n placeholder: string;\n\n /**\n * The state of the form control - applies css classes.\n * Can be 'success', 'error', 'warning', 'default', 'information'.\n *\n * @default 'default'\n */\n @Input()\n set state(state: Nullable<FormStates>) {\n if (!state || isValidControlState(state)) {\n this._state$.set(state);\n } else if (isDevMode()) {\n console.warn(`Provided value \"${state}\" is not a valid option for FormStates type`);\n }\n }\n get state(): FormStates {\n return this.normalizedState$();\n }\n\n /** Holds the message with respect to state */\n @Input()\n stateMessage: Nullable<string>;\n\n /** Whether the input is disabled */\n @Input()\n set disabled(value: boolean) {\n this.setDisabledState(value);\n }\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n\n /**\n * readOnly Value to Mark component read only\n */\n @Input()\n readonly: boolean;\n\n /** Binds to control aria-labelledBy attribute */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** Sets control aria-label attribute value */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * Tell the component if we are in editing mode.\n */\n @Input()\n set editable(value: BooleanInput) {\n const newVal = coerceBooleanProperty(value);\n if (this._editable !== newVal) {\n this._editable = newVal;\n this._markForCheck();\n this.stateChanges.next('editable');\n }\n }\n get editable(): boolean {\n return this._editable;\n }\n\n /**\n * Name of the control.\n */\n @Input()\n name: string;\n\n /**\n * Emits when change detection is needed.\n */\n @Output()\n detectChanges = new EventEmitter<void>();\n\n /**\n * Emits when mark for changes detection is needed.\n */\n @Output()\n markForCheck = new EventEmitter<void>();\n\n /**\n * Reference to internal Input element\n */\n @ViewChild('inputElementRef', { static: true, read: ElementRef })\n protected _elementRef: ElementRef;\n\n /** @hidden */\n value: T;\n\n /** set when input field is mandatory form field */\n required: boolean;\n\n /**\n * See @FormFieldControl\n */\n focused = false;\n\n /** Whether control has errors */\n get controlInvalid(): boolean {\n return this._controlInvalid$();\n }\n\n /**\n * See @FormFieldControl\n */\n readonly stateChanges: Subject<any> = new Subject<any>();\n\n /** @hidden */\n readonly formField: FormField | null = inject(FD_FORM_FIELD, {\n skipSelf: true,\n optional: true\n });\n\n /**\n * NgControl instance.\n */\n readonly ngControl = inject(NgControl, {\n optional: true,\n host: true\n });\n\n /**\n * Form container instance. Usually ngForm or FormGroup directives.\n */\n readonly controlContainer = inject(ControlContainer, {\n optional: true,\n skipSelf: true\n });\n\n /**\n * Separate NgForm instance. For cases when formGroup is used with the form itself.\n */\n readonly ngForm = inject(NgForm, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n readonly normalizedState$ = computed(() => {\n const storedState = this._state$();\n if (storedState) {\n return storedState;\n }\n\n if (!this._controlInvalid$()) {\n return 'default';\n }\n\n return this.formField?.getPriorityState() || 'error';\n });\n\n /**\n * Element reference.\n */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n protected _subscriptions = new Subscription();\n\n /** @hidden */\n private _defaultId = `fd-input-id-${randomId++}`;\n\n /** ID for the Element */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n @Input()\n id: string = this._defaultId;\n\n /** @hidden */\n private _disabled: boolean;\n /** @hidden */\n private _editable = true;\n\n /**\n * @hidden\n */\n private readonly _controlInvalid$ = signal(false);\n\n /** @hidden */\n private readonly _parentControl = inject(FD_FORM_FIELD_CONTROL, {\n skipSelf: true,\n optional: true\n });\n\n /**\n * @hidden\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or 'default'\n */\n private readonly _state$ = signal<Nullable<FormStates>>(null);\n\n /** @hidden */\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnInit(): void {\n // There may be cases when one form control is used as a base to build another form control.\n if (!this._parentControl) {\n this.formField?.registerFormFieldControl(this);\n }\n }\n\n /**\n * Re-validate and emit event to parent container on every CD cycle as they are some errors\n * that we can't subscribe to.\n */\n ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.ngControl) {\n this._subscriptions.add(\n this.ngControl.statusChanges?.subscribe(() => {\n this._markForCheck();\n })\n );\n }\n\n const labelAndHelpId = `fdp-form-label-content-${this.id}`;\n // if not specified, associate label and inline help ids with the input,\n // else add these ids to the specified ones\n if (!this.ariaLabelledBy) {\n this.ariaLabelledBy = labelAndHelpId;\n } else {\n this.ariaLabelledBy += ' ' + labelAndHelpId;\n }\n this._markForCheck();\n }\n\n /** @hidden */\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.stateChanges.complete();\n this.formField?.unregisterFormFieldControl(this);\n }\n\n /** @hidden */\n setDisabledState(isDisabled: BooleanInput): void {\n const newState = coerceBooleanProperty(isDisabled);\n this._markForCheck();\n if (newState !== this._disabled) {\n this._disabled = newState;\n this.stateChanges.next('setDisabledState');\n }\n }\n\n /**\n * Method for setting the value\n * @param value\n */\n writeValue(value: T): void {\n this.value = value;\n this.stateChanges.next('writeValue');\n this._markForCheck();\n }\n\n /**\n *\n * Keeps track of element focus\n */\n _onFocusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused && (!this.disabled || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next('_onFocusChanged');\n }\n\n if (!isFocused) {\n this.onTouched();\n }\n }\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event: MouseEvent): void {\n this.focus(event);\n }\n\n /**\n * In most of the cases when working with input element directly you should be just find to assign\n * variable to this element\n *\n * ```\n * <input #inputElementRef fd-form-control ...>\n * ```\n *\n * and this default behavior used. For other cases implement focus.\n *\n */\n focus(event?: MouseEvent): void {\n if (this._elementRef && !this.focused) {\n this._elementRef.nativeElement.focus(event);\n }\n }\n\n /**\n * Need re-validates errors on every CD iteration to make sure we are also\n * covering non-control errors, errors that happens outside of this control\n */\n updateErrorState(): void {\n const parent = this.ngForm;\n const parentControlContainer = this.controlContainer;\n const control = this.ngControl ? (this.ngControl.control as FormControl) : null;\n const newStatusIsError = !!(\n control?.invalid &&\n (control.dirty || control.touched || parent?.submitted || (parentControlContainer as any)?.submitted)\n );\n\n if (newStatusIsError !== this._controlInvalid$()) {\n this._controlInvalid$.set(newStatusIsError);\n this.stateChanges.next('updateErrorState');\n this._markForCheck();\n }\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n setValue(value: T, emitOnChange = true): void {\n if (value !== this.value) {\n this.writeValue(value);\n if (emitOnChange) {\n this.onChange(value);\n }\n this._markForCheck();\n }\n }\n\n /** @hidden */\n private _markForCheck(): void {\n this.markForCheck.emit();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CvaDirective } from './cva/cva.directive';\n\n@NgModule({\n imports: [CvaDirective],\n exports: [CvaDirective]\n})\nexport class FormsModule {}\n","import { ChangeDetectorRef, DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaDirective } from './cva.directive';\n\n/**\n * Base ControlValueAccessor control class.\n * Used in conjunction with CvaDirective.\n *\n * This class performs generic change detection based on `CvaDirective` outputs.\n */\n@Injectable()\nexport class CvaControl<T> {\n /**\n * Control value accessor directive instance.\n */\n public cvaDirective = inject<CvaDirective<T>>(CvaDirective, {\n self: true,\n optional: true\n });\n\n /**\n * Change detector instance.\n */\n protected _changeDetector = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n listenToChanges(): void {\n this.cvaDirective?.markForCheck.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetector.detectChanges();\n });\n\n this.cvaDirective?.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetector.detectChanges();\n });\n }\n}\n","import { ElementRef, QueryList } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { FormError } from './form-error';\nimport { FormStates } from './form-state';\n\n/**\n * FormField base class.\n *\n * This class is used to create form field components.\n *\n */\nexport abstract class FormField {\n /**\n * Register underlying form control\n */\n registerFormFieldControl: (control: FormFieldControl) => void;\n /**\n * Unregister underlying form control\n */\n unregisterFormFieldControl: (control: FormFieldControl) => void;\n\n /**\n * Set default columns layout\n */\n setDefaultColumnLayout: () => void;\n\n /** Gets field error priority state. */\n getPriorityState: () => FormStates;\n\n /** Groups errors. */\n groupErrors: () => void;\n\n /** Sets error directives from parent container */\n setErrorDirectives: (directives: QueryList<FormError>) => void;\n}\n\nexport interface FormFieldControl<T = any> {\n /**\n * Each input control has always a value. Need to make sure we keep a convention for\n * input fields\n */\n value: T | null;\n\n /**\n * Need to have a way to set placeholder to the input\n */\n placeholder: string;\n\n /**\n * Need to have a way to set Mandatory to the input field\n */\n required: boolean;\n\n /**\n * Sets id from FF to Input\n */\n id: string;\n\n /**\n * This should be coming from Parent.\n */\n editable: boolean;\n\n /**\n * The height of the extra content at the bottom of the form control,\n * which should not affect the alignment of form control and it's label\n */\n extraContentHeightPx?: number;\n\n /**\n *\n * Form Field listen for all the changes happening inside the input\n */\n stateChanges: Observable<void>;\n\n /**\n * Each input should inject its own ngControl and we should retrieve it\n */\n ngControl: NgControl | null;\n\n /** Whether the control is disabled. */\n disabled: boolean;\n\n /**\n * Keeps track if the form element is in focus\n */\n focused: boolean;\n\n /** Whether control has errors */\n controlInvalid: boolean;\n\n /** Corresponding element reference. */\n elementRef: ElementRef;\n\n /** Form field instance. */\n formField: Nullable<FormField>;\n\n /** Method for focusing on the element */\n focus(event?: MouseEvent): void;\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event: MouseEvent): void;\n}\n","/**\n * Interface SelectItem is used to deal with complex object in order to be able to format\n * custom label that is shown in the options.\n *\n * Used in various controls: Select, RadioGroup, CheckboxGroup, Combobox\n */\nexport interface SelectItem<T = any> {\n /**\n * Item text shown in the popup\n */\n label: string;\n\n /**\n * References to the object instance\n */\n value: T;\n disabled?: boolean;\n\n icon?: string;\n /**\n * Trigger values is a text for selected item\n */\n triggerValue?: string;\n\n isGroup?: boolean;\n secondaryText?: string;\n children?: SelectItem[];\n}\n\nexport interface OptionItem<T = any> {\n /** Item text */\n label: string;\n\n /**\n * References to the object instance\n */\n value: T;\n id?: string;\n isGroup?: boolean;\n secondaryText?: string;\n children?: OptionItem[];\n}\n\nexport interface SelectableOptionItem<T = any> extends OptionItem<T> {\n selected?: boolean;\n children?: SelectableOptionItem[];\n}\n\n/** @hidden */\nexport function isSelectableItem(item: SelectItem | any): item is SelectItem {\n return (\n item &&\n item.label !== undefined &&\n item.value !== undefined &&\n Object.prototype.hasOwnProperty.call(item, 'selected')\n );\n}\n\n/** @hidden */\nexport function isSelectItem(item: SelectItem | any): item is SelectItem {\n return item && item.label !== undefined && item.value !== undefined;\n}\n\nexport const isOptionItem = isSelectItem;\nexport const isSelectableOptionItem = isSelectableItem;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAO,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa;;ACElF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAa,UAAU,CAAC,CAAC;AAEjD;AACM,SAAU,mBAAmB,CAAC,KAAU,EAAA;AAC1C,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B;;MCJa,qBAAqB,GAAG,IAAI,cAAc,CAAmB,oBAAoB;;MCAjF,aAAa,GAAG,IAAI,cAAc,CAAY,aAAa;;ACwBxE,IAAI,QAAQ,GAAG,CAAC,CAAC;MAMJ,YAAY,CAAA;AAerB;;;;;AAKG;IACH,IACI,KAAK,CAAC,KAA2B,EAAA;QACjC,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM,IAAI,SAAS,EAAE,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAA,2CAAA,CAA6C,CAAC,CAAC;SACvF;KACJ;AACD,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAClC;;IAOD,IACI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAChC;AACD,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAClC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAgBD;;AAEG;IACH,IACI,QAAQ,CAAC,KAAmB,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtC;KACJ;AACD,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;;AAsCD,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAClC;;AA2FD,IAAA,WAAA,GAAA;AA3HA;;AAEG;AAEH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEzC;;AAEG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AAcxC;;AAEG;QACH,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAOhB;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,OAAO,EAAO,CAAC;;AAGhD,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,aAAa,EAAE;AACzD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AAEH;;AAEG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE;AACnC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACb,SAAA,CAAC,CAAC;AAEH;;AAEG;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACjD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AAEH;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;;AAGM,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,WAAW,EAAE;AACb,gBAAA,OAAO,WAAW,CAAC;aACtB;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC1B,gBAAA,OAAO,SAAS,CAAC;aACpB;YAED,OAAO,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,OAAO,CAAC;AACzD,SAAC,CAAC,CAAC;AAEH;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;AAG/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;AAGtC,QAAA,IAAA,CAAA,UAAU,GAAG,CAAA,YAAA,EAAe,QAAQ,EAAE,EAAE,CAAC;;;AAKjD,QAAA,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,UAAU,CAAC;;QAKrB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAEzB;;AAEG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGjC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC5D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AAEH;;;;AAIG;AACc,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;;AAU9D,QAAA,IAAA,CAAA,QAAQ,GAAyB,MAAK,GAAG,CAAC;;AAG1C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAW,GAAG,CAAC;AATvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;SACvC;KACJ;;IASD,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;SAClD;KACJ;AAED;;;AAGG;IACH,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;;IAGD,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,MAAK;gBACzC,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB,CAAC,CACL,CAAC;SACL;AAED,QAAA,MAAM,cAAc,GAAG,CAAA,uBAAA,EAA0B,IAAI,CAAC,EAAE,EAAE,CAAC;;;AAG3D,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;SACxC;aAAM;AACH,YAAA,IAAI,CAAC,cAAc,IAAI,GAAG,GAAG,cAAc,CAAC;SAC/C;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;;AAGD,IAAA,gBAAgB,CAAC,EAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;;AAGD,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;KACpD;;AAGD,IAAA,gBAAgB,CAAC,UAAwB,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAC9C;KACJ;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAQ,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,SAAkB,EAAA;AAC9B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;KACJ;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACrB;AAED;;;;;;;;;;AAUG;AACH,IAAA,KAAK,CAAC,KAAkB,EAAA;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;KACJ;AAED;;;AAGG;IACH,gBAAgB,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,OAAuB,GAAG,IAAI,CAAC;AAChF,QAAA,MAAM,gBAAgB,GAAG,CAAC,EACtB,OAAO,EAAE,OAAO;AAChB,aAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,SAAS,IAAK,sBAA8B,EAAE,SAAS,CAAC,CACxG,CAAC;AAEF,QAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;AAED;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,KAAQ,EAAE,YAAY,GAAG,IAAI,EAAA;AAClC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,YAAY,EAAE;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;;IAGO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;8GAvXQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,odAoG+B,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FApGrD,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;wDAcG,WAAW,EAAA,CAAA;sBADV,KAAK;gBAUF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAcN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAKF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAeN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAKN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAKN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAOF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAiBN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAOP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAOG,WAAW,EAAA,CAAA;sBADpB,SAAS;uBAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAkFhE,EAAE,EAAA,CAAA;sBADD,KAAK;;;MC/MG,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAX,WAAW,EAAA,OAAA,EAAA,CAHV,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEb,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;ACFD;;;;;AAKG;MAEU,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;AAEI;;AAEG;AACI,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAkB,YAAY,EAAE;AACxD,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AAEH;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAY9C,KAAA;;IATG,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtF,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;AACzC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACvF,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;8GA1BQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAV,UAAU,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACHX;;;;;AAKG;MACmB,SAAS,CAAA;AAuB9B;;ACYD;AACM,SAAU,gBAAgB,CAAC,IAAsB,EAAA;AACnD,IAAA,QACI,IAAI;QACJ,IAAI,CAAC,KAAK,KAAK,SAAS;QACxB,IAAI,CAAC,KAAK,KAAK,SAAS;AACxB,QAAA,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EACxD;AACN,CAAC;AAED;AACM,SAAU,YAAY,CAAC,IAAsB,EAAA;AAC/C,IAAA,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AACxE,CAAC;AAEM,MAAM,YAAY,GAAG,aAAa;AAClC,MAAM,sBAAsB,GAAG;;AChEtC;;AAEG;;;;"}
1
+ {"version":3,"file":"fundamental-ngx-cdk-forms.mjs","sources":["../../../../libs/cdk/forms/models/form-state.ts","../../../../libs/cdk/forms/helpers/state.ts","../../../../libs/cdk/forms/tokens/form-field-control.token.ts","../../../../libs/cdk/forms/tokens/form-field.token.ts","../../../../libs/cdk/forms/cva/cva.directive.ts","../../../../libs/cdk/forms/forms.module.ts","../../../../libs/cdk/forms/cva/cva-control.class.ts","../../../../libs/cdk/forms/models/form-field.ts","../../../../libs/cdk/forms/models/select-item.ts","../../../../libs/cdk/forms/fundamental-ngx-cdk-forms.ts"],"sourcesContent":["export const formStates = ['success', 'error', 'warning', 'default', 'information'] as const;\n\nexport type FormStates = (typeof formStates)[number];\n","import { formStates, FormStates } from '../models/form-state';\n\nconst stateSet = new Set<FormStates>(formStates);\n\n/** Checks if the given state is a valid control state. */\nexport function isValidControlState(value: any): value is FormStates {\n return stateSet.has(value);\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormFieldControl } from '../models/form-field';\n\nexport const FD_FORM_FIELD_CONTROL = new InjectionToken<FormFieldControl>('FdFormFieldControl');\n","import { InjectionToken } from '@angular/core';\nimport { FormField } from '../models/form-field';\n\nexport const FD_FORM_FIELD = new InjectionToken<FormField>('FdFormField');\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n computed,\n inject,\n isDevMode,\n signal\n} from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormControl, NgControl, NgForm } from '@angular/forms';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, Subscription } from 'rxjs';\nimport { isValidControlState } from '../helpers/state';\nimport { BaseCVA } from '../models/cva';\nimport { FormField, FormFieldControl } from '../models/form-field';\nimport { FormStates } from '../models/form-state';\nimport { FD_FORM_FIELD_CONTROL } from '../tokens/form-field-control.token';\nimport { FD_FORM_FIELD } from '../tokens/form-field.token';\n\nlet randomId = 0;\n\n@Directive({\n selector: '[fdkCva]',\n standalone: true\n})\nexport class CvaDirective<T = any>\n implements\n HasElementRef,\n BaseCVA,\n FormFieldControl,\n OnInit,\n DoCheck,\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor\n{\n /** Input placeholder */\n @Input()\n placeholder: string;\n\n /**\n * The state of the form control - applies css classes.\n * Can be 'success', 'error', 'warning', 'default', 'information'.\n *\n * @default 'default'\n */\n @Input()\n set state(state: Nullable<FormStates>) {\n if (!state || isValidControlState(state)) {\n this._state$.set(state);\n } else if (isDevMode()) {\n console.warn(`Provided value \"${state}\" is not a valid option for FormStates type`);\n }\n }\n get state(): FormStates {\n return this.normalizedState$();\n }\n\n /** Holds the message with respect to state */\n @Input()\n stateMessage: Nullable<string>;\n\n /** Whether the input is disabled */\n @Input()\n set disabled(value: boolean) {\n this.setDisabledState(value);\n }\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n\n /**\n * readOnly Value to Mark component read only\n */\n @Input()\n readonly: boolean;\n\n /** Binds to control aria-labelledBy attribute */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** Sets control aria-label attribute value */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * Tell the component if we are in editing mode.\n */\n @Input()\n set editable(value: BooleanInput) {\n const newVal = coerceBooleanProperty(value);\n if (this._editable !== newVal) {\n this._editable = newVal;\n this._markForCheck();\n this.stateChanges.next('editable');\n }\n }\n get editable(): boolean {\n return this._editable;\n }\n\n /**\n * Name of the control.\n */\n @Input()\n name: string;\n\n /**\n * Emits when change detection is needed.\n */\n @Output()\n detectChanges = new EventEmitter<void>();\n\n /**\n * Emits when mark for changes detection is needed.\n */\n @Output()\n markForCheck = new EventEmitter<void>();\n\n /**\n * Reference to internal Input element\n */\n @ViewChild('inputElementRef', { static: true, read: ElementRef })\n protected _elementRef: ElementRef;\n\n /** @hidden */\n value: T;\n\n /** set when input field is mandatory form field */\n required: boolean;\n\n /**\n * See @FormFieldControl\n */\n focused = false;\n\n /** Whether control has errors */\n get controlInvalid(): boolean {\n return this._controlInvalid$();\n }\n\n /**\n * See @FormFieldControl\n */\n readonly stateChanges: Subject<any> = new Subject<any>();\n\n /** @hidden */\n readonly formField: FormField | null = inject(FD_FORM_FIELD, {\n skipSelf: true,\n optional: true\n });\n\n /**\n * NgControl instance.\n */\n readonly ngControl = inject(NgControl, {\n optional: true,\n host: true\n });\n\n /**\n * Form container instance. Usually ngForm or FormGroup directives.\n */\n readonly controlContainer = inject(ControlContainer, {\n optional: true,\n skipSelf: true\n });\n\n /**\n * Separate NgForm instance. For cases when formGroup is used with the form itself.\n */\n readonly ngForm = inject(NgForm, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n readonly normalizedState$ = computed(() => {\n const storedState = this._state$();\n if (storedState) {\n return storedState;\n }\n\n if (!this._controlInvalid$()) {\n return 'default';\n }\n\n return this.formField?.getPriorityState() || 'default';\n });\n\n /**\n * Element reference.\n */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n protected _subscriptions = new Subscription();\n\n /** @hidden */\n private _defaultId = `fd-input-id-${randomId++}`;\n\n /** ID for the Element */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n @Input()\n id: string = this._defaultId;\n\n /** @hidden */\n private _disabled: boolean;\n /** @hidden */\n private _editable = true;\n\n /**\n * @hidden\n */\n private readonly _controlInvalid$ = signal(false);\n\n /** @hidden */\n private readonly _parentControl = inject(FD_FORM_FIELD_CONTROL, {\n skipSelf: true,\n optional: true\n });\n\n /**\n * @hidden\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or 'default'\n */\n private readonly _state$ = signal<Nullable<FormStates>>(null);\n\n /** @hidden */\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @hidden */\n onChange: (value: any) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnInit(): void {\n // There may be cases when one form control is used as a base to build another form control.\n if (!this._parentControl) {\n this.formField?.registerFormFieldControl(this);\n }\n }\n\n /**\n * Re-validate and emit event to parent container on every CD cycle as they are some errors\n * that we can't subscribe to.\n */\n ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.ngControl) {\n this._subscriptions.add(\n this.ngControl.statusChanges?.subscribe(() => {\n this._markForCheck();\n })\n );\n }\n\n const labelAndHelpId = `fdp-form-label-content-${this.id}`;\n // if not specified, associate label and inline help ids with the input,\n // else add these ids to the specified ones\n if (!this.ariaLabelledBy) {\n this.ariaLabelledBy = labelAndHelpId;\n } else {\n this.ariaLabelledBy += ' ' + labelAndHelpId;\n }\n this._markForCheck();\n }\n\n /** @hidden */\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.stateChanges.complete();\n this.formField?.unregisterFormFieldControl(this);\n }\n\n /** @hidden */\n setDisabledState(isDisabled: BooleanInput): void {\n const newState = coerceBooleanProperty(isDisabled);\n this._markForCheck();\n if (newState !== this._disabled) {\n this._disabled = newState;\n this.stateChanges.next('setDisabledState');\n }\n }\n\n /**\n * Method for setting the value\n * @param value\n */\n writeValue(value: T): void {\n this.value = value;\n this.stateChanges.next('writeValue');\n this._markForCheck();\n }\n\n /**\n *\n * Keeps track of element focus\n */\n _onFocusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused && (!this.disabled || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next('_onFocusChanged');\n }\n\n if (!isFocused) {\n this.onTouched();\n }\n }\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event: MouseEvent): void {\n this.focus(event);\n }\n\n /**\n * In most of the cases when working with input element directly you should be just find to assign\n * variable to this element\n *\n * ```\n * <input #inputElementRef fd-form-control ...>\n * ```\n *\n * and this default behavior used. For other cases implement focus.\n *\n */\n focus(event?: MouseEvent): void {\n if (this._elementRef && !this.focused) {\n this._elementRef.nativeElement.focus(event);\n }\n }\n\n /**\n * Need re-validates errors on every CD iteration to make sure we are also\n * covering non-control errors, errors that happens outside of this control\n */\n updateErrorState(): void {\n const parent = this.ngForm;\n const parentControlContainer = this.controlContainer;\n const control = this.ngControl ? (this.ngControl.control as FormControl) : null;\n const newStatusIsError = !!(\n control?.invalid &&\n (control.dirty || control.touched || parent?.submitted || (parentControlContainer as any)?.submitted)\n );\n\n if (newStatusIsError !== this._controlInvalid$()) {\n this._controlInvalid$.set(newStatusIsError);\n this.stateChanges.next('updateErrorState');\n this._markForCheck();\n }\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n setValue(value: T, emitOnChange = true): void {\n if (value !== this.value) {\n this.writeValue(value);\n if (emitOnChange) {\n this.onChange(value);\n }\n this._markForCheck();\n }\n }\n\n /** @hidden */\n private _markForCheck(): void {\n this.markForCheck.emit();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CvaDirective } from './cva/cva.directive';\n\n@NgModule({\n imports: [CvaDirective],\n exports: [CvaDirective]\n})\nexport class FormsModule {}\n","import { ChangeDetectorRef, DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaDirective } from './cva.directive';\n\n/**\n * Base ControlValueAccessor control class.\n * Used in conjunction with CvaDirective.\n *\n * This class performs generic change detection based on `CvaDirective` outputs.\n */\n@Injectable()\nexport class CvaControl<T> {\n /**\n * Control value accessor directive instance.\n */\n public cvaDirective = inject<CvaDirective<T>>(CvaDirective, {\n self: true,\n optional: true\n });\n\n /**\n * Change detector instance.\n */\n protected _changeDetector = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n listenToChanges(): void {\n this.cvaDirective?.markForCheck.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetector.detectChanges();\n });\n\n this.cvaDirective?.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetector.detectChanges();\n });\n }\n}\n","import { ElementRef, QueryList } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { FormError } from './form-error';\nimport { FormStates } from './form-state';\n\n/**\n * FormField base class.\n *\n * This class is used to create form field components.\n *\n */\nexport abstract class FormField {\n /**\n * Register underlying form control\n */\n registerFormFieldControl: (control: FormFieldControl) => void;\n /**\n * Unregister underlying form control\n */\n unregisterFormFieldControl: (control: FormFieldControl) => void;\n\n /**\n * Set default columns layout\n */\n setDefaultColumnLayout: () => void;\n\n /** Gets field error priority state. */\n getPriorityState: () => FormStates;\n\n /** Groups errors. */\n groupErrors: () => void;\n\n /** Sets error directives from parent container */\n setErrorDirectives: (directives: QueryList<FormError>) => void;\n}\n\nexport interface FormFieldControl<T = any> {\n /**\n * Each input control has always a value. Need to make sure we keep a convention for\n * input fields\n */\n value: T | null;\n\n /**\n * Need to have a way to set placeholder to the input\n */\n placeholder: string;\n\n /**\n * Need to have a way to set Mandatory to the input field\n */\n required: boolean;\n\n /**\n * Sets id from FF to Input\n */\n id: string;\n\n /**\n * This should be coming from Parent.\n */\n editable: boolean;\n\n /**\n * The height of the extra content at the bottom of the form control,\n * which should not affect the alignment of form control and it's label\n */\n extraContentHeightPx?: number;\n\n /**\n *\n * Form Field listen for all the changes happening inside the input\n */\n stateChanges: Observable<void>;\n\n /**\n * Each input should inject its own ngControl and we should retrieve it\n */\n ngControl: NgControl | null;\n\n /** Whether the control is disabled. */\n disabled: boolean;\n\n /**\n * Keeps track if the form element is in focus\n */\n focused: boolean;\n\n /** Whether control has errors */\n controlInvalid: boolean;\n\n /** Corresponding element reference. */\n elementRef: ElementRef;\n\n /** Form field instance. */\n formField: Nullable<FormField>;\n\n /** Method for focusing on the element */\n focus(event?: MouseEvent): void;\n\n /**\n * Handles even when we click on parent container which is the FormField Wrapping this\n * control\n */\n onContainerClick(event: MouseEvent): void;\n}\n","/**\n * Interface SelectItem is used to deal with complex object in order to be able to format\n * custom label that is shown in the options.\n *\n * Used in various controls: Select, RadioGroup, CheckboxGroup, Combobox\n */\nexport interface SelectItem<T = any> {\n /**\n * Item text shown in the popup\n */\n label: string;\n\n /**\n * References to the object instance\n */\n value: T;\n disabled?: boolean;\n\n icon?: string;\n /**\n * Trigger values is a text for selected item\n */\n triggerValue?: string;\n\n isGroup?: boolean;\n secondaryText?: string;\n children?: SelectItem[];\n}\n\nexport interface OptionItem<T = any> {\n /** Item text */\n label: string;\n\n /**\n * References to the object instance\n */\n value: T;\n id?: string;\n isGroup?: boolean;\n secondaryText?: string;\n children?: OptionItem[];\n}\n\nexport interface SelectableOptionItem<T = any> extends OptionItem<T> {\n selected?: boolean;\n children?: SelectableOptionItem[];\n}\n\n/** @hidden */\nexport function isSelectableItem(item: SelectItem | any): item is SelectItem {\n return (\n item &&\n item.label !== undefined &&\n item.value !== undefined &&\n Object.prototype.hasOwnProperty.call(item, 'selected')\n );\n}\n\n/** @hidden */\nexport function isSelectItem(item: SelectItem | any): item is SelectItem {\n return item && item.label !== undefined && item.value !== undefined;\n}\n\nexport const isOptionItem = isSelectItem;\nexport const isSelectableOptionItem = isSelectableItem;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { DOCUMENT, CommonModule, AsyncPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { INJECTOR, ElementRef, isDevMode, InjectionToken, EventEmitter, inject, NgZone, Directive, Input, Output, NgModule, DestroyRef, Injectable, Optional, Inject, booleanAttribute, Renderer2, PLATFORM_ID, Self, SkipSelf, ContentChildren, forwardRef, HostBinding, HostListener, Injector, computed, ContentChild, QueryList, ViewContainerRef, TemplateRef, Component, ViewChild, NgModuleFactory, Pipe, signal } from '@angular/core';
4
- import { RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, UP_ARROW, SPACE, ESCAPE, DELETE, ENTER, MAC_ENTER, TAB, HOME, END, ALT, CONTROL, META, SHIFT, BACKSPACE, A, C, V, X, PAGE_UP, PAGE_DOWN, DASH, NUMPAD_MINUS, NUMPAD_ZERO, NUMPAD_ONE, NUMPAD_TWO, NUMPAD_THREE, NUMPAD_FOUR, NUMPAD_FIVE, NUMPAD_SIX, NUMPAD_SEVEN, NUMPAD_EIGHT, NUMPAD_NINE, F2, hasModifierKey } from '@angular/cdk/keycodes';
4
+ import { RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, UP_ARROW, SPACE, ESCAPE, DELETE, ENTER, MAC_ENTER, TAB, HOME, END, ALT, CONTROL, META, SHIFT, BACKSPACE, A, C, V, X, PAGE_UP, PAGE_DOWN, DASH, NUMPAD_MINUS, NUMPAD_ZERO, NUMPAD_ONE, NUMPAD_TWO, NUMPAD_THREE, NUMPAD_FOUR, NUMPAD_FIVE, NUMPAD_SIX, NUMPAD_SEVEN, NUMPAD_EIGHT, NUMPAD_NINE, F2, F7, hasModifierKey } from '@angular/cdk/keycodes';
5
5
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
6
6
  import { Observable, NEVER, fromEvent, switchMap, map as map$1, Subject, BehaviorSubject, ReplaySubject, merge, combineLatest, filter as filter$1, firstValueFrom, debounceTime, distinctUntilChanged as distinctUntilChanged$1, startWith as startWith$1, Subscription, isObservable, of, tap as tap$1, take as take$1 } from 'rxjs';
7
7
  import { map, first, distinctUntilChanged, startWith, takeUntil, filter, tap, switchMap as switchMap$1, finalize, take, debounceTime as debounceTime$1, pairwise, shareReplay, delay } from 'rxjs/operators';
@@ -147,7 +147,8 @@ const keyMap = new Map([
147
147
  [NUMPAD_SEVEN, ['NumPad7']],
148
148
  [NUMPAD_EIGHT, ['NumPad8']],
149
149
  [NUMPAD_NINE, ['NumPad9']],
150
- [F2, ['F2']]
150
+ [F2, ['F2']],
151
+ [F7, ['F7']]
151
152
  ]);
152
153
  class KeyUtil {
153
154
  /**