special-forms 4.0.4 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
153
153
  providedIn: 'root',
154
154
  }]
155
155
  }], ctorParameters: function () { return []; } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC1mb3JtLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWNpYWwtZm9ybXMvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3NwZWNpYWwtZm9ybS1idWlsZGVyL3NwZWNpYWwtZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSwyQkFBMkIsQ0FBQzs7QUFrQm5DLE1BQU0sT0FBTyx5QkFBeUI7SUE0Q3BDO1FBM0NpQixnQkFBVyxHQUFlO1lBQ3pDLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVlLHFCQUFnQixHQUFrQjtZQUNqRCxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1osSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3pCLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztRQUVlLG9CQUFlLEdBQWlCO1lBQy9DLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsUUFBUSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7WUFDeEIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO1FBRWUscUJBQWdCLEdBQWtCO1lBQ2pELEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsUUFBUSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUs7WUFDekIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO0lBRWEsQ0FBQztJQUVULE9BQU8sQ0FBQyxLQUE4QjtRQUMzQyxNQUFNLFNBQVMsR0FBbUI7WUFDaEMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3hCLEdBQUcsS0FBSztTQUNTLENBQUM7UUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FDVixNQUFzQixFQUN0QixjQUFxQyxFQUFFO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssS0FBSSxDQUFDO0lBRVYsZ0JBQWdCLENBQUMsTUFBc0I7UUFDNUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsSUFBWSxFQUNaLEtBQTBCO1FBRTFCLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFDeEIsR0FBRyxLQUFLO1lBQ1IsSUFBSTtTQUNhLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWEsQ0FDbkIsTUFBd0IsRUFDeEIsY0FBcUMsRUFBRTtRQUV2QyxNQUFNLFNBQVMsR0FBaUI7WUFDOUIsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUN2QixHQUFHLFdBQVc7U0FDZixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTTthQUNyQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNuRCxNQUFNLENBQ0wsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLEdBQUcsSUFBSTtZQUNQLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztTQUNoQixDQUFDLEVBQ0YsRUFBRSxDQUNILENBQUM7UUFDSixPQUFPLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFxQjtRQUNuRCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxhQUFhLENBQUMsS0FBSztnQkFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQztnQkFDRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQW1CO1FBSXRDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQW9CO1FBSXZDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxFQUFFLENBQ0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUI7YUFDekIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQXFCO1FBSTFDLE1BQU0sVUFBVSxHQUFrQixFQUFFLENBQUM7UUFFckMsSUFBSSxLQUFLLENBQUMsUUFBUTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxLQUFLLENBQUMsTUFBTTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV0RSxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLE9BQU87WUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBcUI7UUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzVCO1FBRUQsT0FBTyxDQUFDLE9BQWtELEVBQUUsRUFBRSxDQUM1RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxZQUFZLE1BQU07WUFDaEQsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNPLGtCQUFrQixDQUN4QixVQUE4QyxFQUM5QyxhQUE0QjtRQUU1QixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxhQUFhLENBQUM7U0FDdEI7UUFDRCxPQUFPLFVBQVUsWUFBWSxLQUFLO1lBQ2hDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF3QjtRQUNsRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQzs7c0hBaE1VLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJQXV0b2NvbXBsZXRlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3NwZWNpYWwtYXV0b2NvbXBsZXRlL3NwZWNpYWwtYXV0b2NvbXBsZXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFQ29udHJvbFR5cGVzIH0gZnJvbSAnLi4vLi4vYXV4LWRhdGEvY29udHJvbC10eXBlcy5lbnVtJztcbmltcG9ydCB7XG4gIFNwZWNpYWxGb3JtQXJyYXksXG4gIFNwZWNpYWxGb3JtQ29udHJvbCxcbiAgU3BlY2lhbEZvcm1Hcm91cCxcbn0gZnJvbSAnLi4vLi4vZm9ybXMvc3BlY2lhbC1mb3Jtcyc7XG5pbXBvcnQgeyBJRmllbGREYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWVsZC1iYXNpY3MuaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBJRm9ybVN0cnVjdHVyZSxcbiAgVFJhd0ZpZWxkcyxcbiAgVFNwZWNpYWxBcnJheSxcbiAgVFNwZWNpYWxGaWVsZHMsXG4gIFRTcGVjaWFsRm9ybSxcbiAgVFNwZWNpYWxJbnB1dCxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLmludGVyZmFjZXMnO1xuXG5pbnRlcmZhY2UgSUNvbnRyb2xQYXJhbXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbnRyb2w6IFNwZWNpYWxGb3JtQXJyYXkgfCBTcGVjaWFsRm9ybUdyb3VwIHwgU3BlY2lhbEZvcm1Db250cm9sPGFueT47XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3BlY2lhbEZvcm1CdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmZWN0RmllbGQ6IElGaWVsZERhdGEgPSB7XG4gICAgYXN5bmNWYWxpZGF0b3JzOiBudWxsLFxuICAgIHZhbGlkYXRvcnM6IG51bGwsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGVsZW1lbnRJZDogJycsXG4gICAgaGlkZGVuOiBmYWxzZSxcbiAgICBpY29uOiAnJyxcbiAgICBsYWJlbDogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGxlbmd0aDogMCxcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdHlsZUNsYXNzZXM6ICcnLFxuICAgIGVycm9yTWVzc2FnZXM6IHt9LFxuICAgIHRvb2x0aXA6ICcnLFxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREZWZlY3RGaWVsZDogVFNwZWNpYWxJbnB1dCA9IHtcbiAgICAuLi50aGlzLmRlZmVjdEZpZWxkLFxuICAgIHNldHRpbmdzOiB7fSxcbiAgICB0eXBlOiBFQ29udHJvbFR5cGVzLmlucHV0LFxuICAgIG5hbWU6ICcnLFxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybURlZmVjdEZpZWxkOiBUU3BlY2lhbEZvcm0gPSB7XG4gICAgLi4udGhpcy5kZWZlY3RGaWVsZCxcbiAgICBzZXR0aW5nczoge1xuICAgICAgZm9ybUZpZWxkczoge30sXG4gICAgfSxcbiAgICB0eXBlOiBFQ29udHJvbFR5cGVzLmZvcm0sXG4gICAgbmFtZTogJycsXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcnJheURlZmVjdEZpZWxkOiBUU3BlY2lhbEFycmF5ID0ge1xuICAgIC4uLnRoaXMuZGVmZWN0RmllbGQsXG4gICAgc2V0dGluZ3M6IHtcbiAgICAgIGZvcm1GaWVsZHM6IHt9LFxuICAgIH0sXG4gICAgdHlwZTogRUNvbnRyb2xUeXBlcy5hcnJheSxcbiAgICBuYW1lOiAnJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGNvbnRyb2woZmllbGQ6IFBhcnRpYWw8VFNwZWNpYWxGaWVsZHM+KTogU3BlY2lhbEZvcm1Db250cm9sPGFueT4ge1xuICAgIGNvbnN0IGZvcm1GaWVsZDogVFNwZWNpYWxGaWVsZHMgPSB7XG4gICAgICAuLi50aGlzLmlucHV0RGVmZWN0RmllbGQsXG4gICAgICAuLi5maWVsZCxcbiAgICB9IGFzIFRTcGVjaWFsRmllbGRzO1xuICAgIGNvbnN0IHsgY29udHJvbCB9ID0gdGhpcy5zZXRGb3JtQ29udHJvbChmb3JtRmllbGQpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG5cbiAgcHVibGljIGdyb3VwKFxuICAgIGZpZWxkczogSUZvcm1TdHJ1Y3R1cmUsXG4gICAgcGFyZW50RmllbGQ6IFBhcnRpYWw8VFNwZWNpYWxGb3JtPiA9IHt9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmZvcm1HZW5lcmF0b3IodGhpcy5maWVsZERhdGFUb0FycmF5KGZpZWxkcyksIHBhcmVudEZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBhcnJheSgpIHt9XG5cbiAgcHVibGljIGZpZWxkRGF0YVRvQXJyYXkoZmllbGRzOiBJRm9ybVN0cnVjdHVyZSk6IFRTcGVjaWFsRmllbGRzW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhmaWVsZHMpLm1hcCgoW25hbWUsIGZpZWxkXSkgPT5cbiAgICAgIHRoaXMuc2V0RGVmZWN0RmllbGRPcHRpb25zKG5hbWUsIGZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmVjdEZpZWxkT3B0aW9ucyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZmllbGQ6IFBhcnRpYWw8VFJhd0ZpZWxkcz5cbiAgKTogVFNwZWNpYWxGaWVsZHMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmlucHV0RGVmZWN0RmllbGQsXG4gICAgICAuLi5maWVsZCxcbiAgICAgIG5hbWUsXG4gICAgfSBhcyBUU3BlY2lhbEZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybUdlbmVyYXRvcihcbiAgICBmaWVsZHM6IFRTcGVjaWFsRmllbGRzW10sXG4gICAgcGFyZW50RmllbGQ6IFBhcnRpYWw8VFNwZWNpYWxGb3JtPiA9IHt9XG4gICk6IFNwZWNpYWxGb3JtR3JvdXAge1xuICAgIGNvbnN0IGZvcm1GaWVsZDogVFNwZWNpYWxGb3JtID0ge1xuICAgICAgLi4udGhpcy5mb3JtRGVmZWN0RmllbGQsXG4gICAgICAuLi5wYXJlbnRGaWVsZCxcbiAgICB9O1xuICAgIGNvbnN0IHN0cnVjdHVyZSA9IGZpZWxkc1xuICAgICAgLm1hcCgoZmllbGQpID0+IHRoaXMuZ2V0Q29udHJvbEFuZE5hbWVCeVR5cGUoZmllbGQpKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHByZXYsIHsgbmFtZSwgY29udHJvbCB9OiBJQ29udHJvbFBhcmFtcykgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIFtuYW1lXTogY29udHJvbCxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApO1xuICAgIHJldHVybiBuZXcgU3BlY2lhbEZvcm1Hcm91cChmb3JtRmllbGQsIHN0cnVjdHVyZSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRyb2xBbmROYW1lQnlUeXBlKGZpZWxkOiBUU3BlY2lhbEZpZWxkcykge1xuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSBFQ29udHJvbFR5cGVzLmFycmF5OlxuICAgICAgICByZXR1cm4gdGhpcy5zZXRGb3JtQXJyYXkoZmllbGQpO1xuICAgICAgY2FzZSBFQ29udHJvbFR5cGVzLmZvcm06XG4gICAgICAgIHJldHVybiB0aGlzLnNldEZvcm1Hcm91cChmaWVsZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5zZXRGb3JtQ29udHJvbChmaWVsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtR3JvdXAoZmllbGQ6IFRTcGVjaWFsRm9ybSk6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29udHJvbDogU3BlY2lhbEZvcm1Hcm91cDtcbiAgfSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdlbmVyYXRvcihcbiAgICAgIHRoaXMuZmllbGREYXRhVG9BcnJheShmaWVsZC5zZXR0aW5ncy5mb3JtRmllbGRzKSxcbiAgICAgIGZpZWxkXG4gICAgKTtcbiAgICByZXR1cm4geyBjb250cm9sLCBuYW1lOiBmaWVsZC5uYW1lIH07XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1BcnJheShmaWVsZDogVFNwZWNpYWxBcnJheSk6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29udHJvbDogU3BlY2lhbEZvcm1BcnJheTtcbiAgfSB7XG4gICAgY29uc3QgYXV4Rm9ybSA9ICh2YWx1ZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCBhdXhGb3JtID0gdGhpcy5mb3JtR2VuZXJhdG9yKFxuICAgICAgICB0aGlzLmZpZWxkRGF0YVRvQXJyYXkoZmllbGQuc2V0dGluZ3MuZm9ybUZpZWxkcyksXG4gICAgICAgIHt9XG4gICAgICApO1xuICAgICAgYXV4Rm9ybS5yZXNldCh2YWx1ZSk7XG4gICAgICByZXR1cm4gYXV4Rm9ybTtcbiAgICB9O1xuXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB7XG4gICAgICBmaWVsZC52YWxpZGF0b3JzID0gdGhpcy5zZXRWYWxpZGF0b3JzQXJyYXkoZmllbGQudmFsaWRhdG9ycywgW1xuICAgICAgICB0aGlzLmFycmF5TGVuZ3RoUmVxdWlyZWQsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgIGNvbnRyb2w6IG5ldyBTcGVjaWFsRm9ybUFycmF5KGZpZWxkLCBhdXhGb3JtLCBbXSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2woZmllbGQ6IFRTcGVjaWFsRmllbGRzKToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb250cm9sOiBTcGVjaWFsRm9ybUNvbnRyb2w8YW55PjtcbiAgfSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2godGhpcy5zZXRSZXF1aXJlZFZhbGlkYXRvcihmaWVsZCkpO1xuICAgIGlmIChmaWVsZC5sZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChmaWVsZC5sZW5ndGgpKTtcblxuICAgIGZpZWxkLnZhbGlkYXRvcnMgPSB0aGlzLnNldFZhbGlkYXRvcnNBcnJheShmaWVsZC52YWxpZGF0b3JzLCB2YWxpZGF0b3JzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgY29udHJvbDogbmV3IFNwZWNpYWxGb3JtQ29udHJvbChmaWVsZCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVxdWlyZWRWYWxpZGF0b3IoZmllbGQ6IFRTcGVjaWFsRmllbGRzKTogVmFsaWRhdG9yRm4ge1xuICAgIGlmIChmaWVsZC50eXBlICE9PSBFQ29udHJvbFR5cGVzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjb250cm9sOiBTcGVjaWFsRm9ybUNvbnRyb2w8SUF1dG9jb21wbGV0ZVNldHRpbmdzPikgPT5cbiAgICAgICEhY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgfVxuICBwcml2YXRlIHNldFZhbGlkYXRvcnNBcnJheShcbiAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCBudWxsLFxuICAgIG5ld1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW11cbiAgKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgaWYgKCF2YWxpZGF0b3JzKSB7XG4gICAgICByZXR1cm4gbmV3VmFsaWRhdG9ycztcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnMgaW5zdGFuY2VvZiBBcnJheVxuICAgICAgPyBbLi4udmFsaWRhdG9ycywgLi4ubmV3VmFsaWRhdG9yc11cbiAgICAgIDogW3ZhbGlkYXRvcnMsIC4uLm5ld1ZhbGlkYXRvcnNdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcnJheUxlbmd0aFJlcXVpcmVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICByZXR1cm4geyBub0l0ZW1zOiAnTk9fU0VMRUNURURfSVRFTScgfTtcbiAgfVxufVxuIl19
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC1mb3JtLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWNpYWwtZm9ybXMvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3NwZWNpYWwtZm9ybS1idWlsZGVyL3NwZWNpYWwtZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSwyQkFBMkIsQ0FBQzs7QUFrQm5DLE1BQU0sT0FBTyx5QkFBeUI7SUE0Q3BDO1FBM0NpQixnQkFBVyxHQUFlO1lBQ3pDLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVlLHFCQUFnQixHQUFrQjtZQUNqRCxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1osSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3pCLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztRQUVlLG9CQUFlLEdBQWlCO1lBQy9DLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsUUFBUSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7WUFDeEIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO1FBRWUscUJBQWdCLEdBQWtCO1lBQ2pELEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsUUFBUSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUs7WUFDekIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO0lBRWEsQ0FBQztJQUVULE9BQU8sQ0FBQyxLQUE4QjtRQUMzQyxNQUFNLFNBQVMsR0FBbUI7WUFDaEMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3hCLEdBQUcsS0FBSztTQUNTLENBQUM7UUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FDVixNQUFzQixFQUN0QixjQUFxQyxFQUFFO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssS0FBSSxDQUFDO0lBRVYsZ0JBQWdCLENBQUMsTUFBc0I7UUFDNUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsSUFBWSxFQUNaLEtBQTBCO1FBRTFCLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFDeEIsR0FBRyxLQUFLO1lBQ1IsSUFBSTtTQUNhLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWEsQ0FDbkIsTUFBd0IsRUFDeEIsY0FBcUMsRUFBRTtRQUV2QyxNQUFNLFNBQVMsR0FBaUI7WUFDOUIsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUN2QixHQUFHLFdBQVc7U0FDZixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTTthQUNyQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNuRCxNQUFNLENBQ0wsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLEdBQUcsSUFBSTtZQUNQLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztTQUNoQixDQUFDLEVBQ0YsRUFBRSxDQUNILENBQUM7UUFDSixPQUFPLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFxQjtRQUNuRCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxhQUFhLENBQUMsS0FBSztnQkFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQztnQkFDRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQW1CO1FBSXRDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQW9CO1FBSXZDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxFQUFFLENBQ0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUI7YUFDekIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQXFCO1FBSTFDLE1BQU0sVUFBVSxHQUFrQixFQUFFLENBQUM7UUFFckMsSUFBSSxLQUFLLENBQUMsUUFBUTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxLQUFLLENBQUMsTUFBTTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV0RSxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLE9BQU87WUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBcUI7UUFDaEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzVCO1FBRUQsT0FBTyxDQUFDLE9BQWtELEVBQUUsRUFBRSxDQUM1RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxZQUFZLE1BQU07WUFDaEQsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNPLGtCQUFrQixDQUN4QixVQUE4QyxFQUM5QyxhQUE0QjtRQUU1QixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxhQUFhLENBQUM7U0FDdEI7UUFDRCxPQUFPLFVBQVUsWUFBWSxLQUFLO1lBQ2hDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF3QjtRQUNsRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQzs7c0hBaE1VLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSUF1dG9jb21wbGV0ZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zcGVjaWFsLWF1dG9jb21wbGV0ZS9zcGVjaWFsLWF1dG9jb21wbGV0ZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFQ29udHJvbFR5cGVzIH0gZnJvbSAnLi4vLi4vYXV4LWRhdGEvY29udHJvbC10eXBlcy5lbnVtJztcclxuaW1wb3J0IHtcclxuICBTcGVjaWFsRm9ybUFycmF5LFxyXG4gIFNwZWNpYWxGb3JtQ29udHJvbCxcclxuICBTcGVjaWFsRm9ybUdyb3VwLFxyXG59IGZyb20gJy4uLy4uL2Zvcm1zL3NwZWNpYWwtZm9ybXMnO1xyXG5pbXBvcnQgeyBJRmllbGREYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWVsZC1iYXNpY3MuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgSUZvcm1TdHJ1Y3R1cmUsXHJcbiAgVFJhd0ZpZWxkcyxcclxuICBUU3BlY2lhbEFycmF5LFxyXG4gIFRTcGVjaWFsRmllbGRzLFxyXG4gIFRTcGVjaWFsRm9ybSxcclxuICBUU3BlY2lhbElucHV0LFxyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZm9ybS5pbnRlcmZhY2VzJztcclxuXHJcbmludGVyZmFjZSBJQ29udHJvbFBhcmFtcyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNvbnRyb2w6IFNwZWNpYWxGb3JtQXJyYXkgfCBTcGVjaWFsRm9ybUdyb3VwIHwgU3BlY2lhbEZvcm1Db250cm9sPGFueT47XHJcbn1cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwZWNpYWxGb3JtQnVpbGRlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmZWN0RmllbGQ6IElGaWVsZERhdGEgPSB7XHJcbiAgICBhc3luY1ZhbGlkYXRvcnM6IG51bGwsXHJcbiAgICB2YWxpZGF0b3JzOiBudWxsLFxyXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxyXG4gICAgZWxlbWVudElkOiAnJyxcclxuICAgIGhpZGRlbjogZmFsc2UsXHJcbiAgICBpY29uOiAnJyxcclxuICAgIGxhYmVsOiAnJyxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIGxlbmd0aDogMCxcclxuICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgIHJlYWRPbmx5OiBmYWxzZSxcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIHN0eWxlQ2xhc3NlczogJycsXHJcbiAgICBlcnJvck1lc3NhZ2VzOiB7fSxcclxuICAgIHRvb2x0aXA6ICcnLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREZWZlY3RGaWVsZDogVFNwZWNpYWxJbnB1dCA9IHtcclxuICAgIC4uLnRoaXMuZGVmZWN0RmllbGQsXHJcbiAgICBzZXR0aW5nczoge30sXHJcbiAgICB0eXBlOiBFQ29udHJvbFR5cGVzLmlucHV0LFxyXG4gICAgbmFtZTogJycsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtRGVmZWN0RmllbGQ6IFRTcGVjaWFsRm9ybSA9IHtcclxuICAgIC4uLnRoaXMuZGVmZWN0RmllbGQsXHJcbiAgICBzZXR0aW5nczoge1xyXG4gICAgICBmb3JtRmllbGRzOiB7fSxcclxuICAgIH0sXHJcbiAgICB0eXBlOiBFQ29udHJvbFR5cGVzLmZvcm0sXHJcbiAgICBuYW1lOiAnJyxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGFycmF5RGVmZWN0RmllbGQ6IFRTcGVjaWFsQXJyYXkgPSB7XHJcbiAgICAuLi50aGlzLmRlZmVjdEZpZWxkLFxyXG4gICAgc2V0dGluZ3M6IHtcclxuICAgICAgZm9ybUZpZWxkczoge30sXHJcbiAgICB9LFxyXG4gICAgdHlwZTogRUNvbnRyb2xUeXBlcy5hcnJheSxcclxuICAgIG5hbWU6ICcnLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHVibGljIGNvbnRyb2woZmllbGQ6IFBhcnRpYWw8VFNwZWNpYWxGaWVsZHM+KTogU3BlY2lhbEZvcm1Db250cm9sPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybUZpZWxkOiBUU3BlY2lhbEZpZWxkcyA9IHtcclxuICAgICAgLi4udGhpcy5pbnB1dERlZmVjdEZpZWxkLFxyXG4gICAgICAuLi5maWVsZCxcclxuICAgIH0gYXMgVFNwZWNpYWxGaWVsZHM7XHJcbiAgICBjb25zdCB7IGNvbnRyb2wgfSA9IHRoaXMuc2V0Rm9ybUNvbnRyb2woZm9ybUZpZWxkKTtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdyb3VwKFxyXG4gICAgZmllbGRzOiBJRm9ybVN0cnVjdHVyZSxcclxuICAgIHBhcmVudEZpZWxkOiBQYXJ0aWFsPFRTcGVjaWFsRm9ybT4gPSB7fVxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdlbmVyYXRvcih0aGlzLmZpZWxkRGF0YVRvQXJyYXkoZmllbGRzKSwgcGFyZW50RmllbGQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFycmF5KCkge31cclxuXHJcbiAgcHVibGljIGZpZWxkRGF0YVRvQXJyYXkoZmllbGRzOiBJRm9ybVN0cnVjdHVyZSk6IFRTcGVjaWFsRmllbGRzW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGZpZWxkcykubWFwKChbbmFtZSwgZmllbGRdKSA9PlxyXG4gICAgICB0aGlzLnNldERlZmVjdEZpZWxkT3B0aW9ucyhuYW1lLCBmaWVsZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmVjdEZpZWxkT3B0aW9ucyhcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGZpZWxkOiBQYXJ0aWFsPFRSYXdGaWVsZHM+XHJcbiAgKTogVFNwZWNpYWxGaWVsZHMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4udGhpcy5pbnB1dERlZmVjdEZpZWxkLFxyXG4gICAgICAuLi5maWVsZCxcclxuICAgICAgbmFtZSxcclxuICAgIH0gYXMgVFNwZWNpYWxGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1HZW5lcmF0b3IoXHJcbiAgICBmaWVsZHM6IFRTcGVjaWFsRmllbGRzW10sXHJcbiAgICBwYXJlbnRGaWVsZDogUGFydGlhbDxUU3BlY2lhbEZvcm0+ID0ge31cclxuICApOiBTcGVjaWFsRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGZvcm1GaWVsZDogVFNwZWNpYWxGb3JtID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1EZWZlY3RGaWVsZCxcclxuICAgICAgLi4ucGFyZW50RmllbGQsXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc3RydWN0dXJlID0gZmllbGRzXHJcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB0aGlzLmdldENvbnRyb2xBbmROYW1lQnlUeXBlKGZpZWxkKSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAocHJldiwgeyBuYW1lLCBjb250cm9sIH06IElDb250cm9sUGFyYW1zKSA9PiAoe1xyXG4gICAgICAgICAgLi4ucHJldixcclxuICAgICAgICAgIFtuYW1lXTogY29udHJvbCxcclxuICAgICAgICB9KSxcclxuICAgICAgICB7fVxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIG5ldyBTcGVjaWFsRm9ybUdyb3VwKGZvcm1GaWVsZCwgc3RydWN0dXJlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udHJvbEFuZE5hbWVCeVR5cGUoZmllbGQ6IFRTcGVjaWFsRmllbGRzKSB7XHJcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgY2FzZSBFQ29udHJvbFR5cGVzLmFycmF5OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldEZvcm1BcnJheShmaWVsZCk7XHJcbiAgICAgIGNhc2UgRUNvbnRyb2xUeXBlcy5mb3JtOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldEZvcm1Hcm91cChmaWVsZCk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Rm9ybUNvbnRyb2woZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGb3JtR3JvdXAoZmllbGQ6IFRTcGVjaWFsRm9ybSk6IHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGNvbnRyb2w6IFNwZWNpYWxGb3JtR3JvdXA7XHJcbiAgfSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR2VuZXJhdG9yKFxyXG4gICAgICB0aGlzLmZpZWxkRGF0YVRvQXJyYXkoZmllbGQuc2V0dGluZ3MuZm9ybUZpZWxkcyksXHJcbiAgICAgIGZpZWxkXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHsgY29udHJvbCwgbmFtZTogZmllbGQubmFtZSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGb3JtQXJyYXkoZmllbGQ6IFRTcGVjaWFsQXJyYXkpOiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBjb250cm9sOiBTcGVjaWFsRm9ybUFycmF5O1xyXG4gIH0ge1xyXG4gICAgY29uc3QgYXV4Rm9ybSA9ICh2YWx1ZSA9IHt9KSA9PiB7XHJcbiAgICAgIGNvbnN0IGF1eEZvcm0gPSB0aGlzLmZvcm1HZW5lcmF0b3IoXHJcbiAgICAgICAgdGhpcy5maWVsZERhdGFUb0FycmF5KGZpZWxkLnNldHRpbmdzLmZvcm1GaWVsZHMpLFxyXG4gICAgICAgIHt9XHJcbiAgICAgICk7XHJcbiAgICAgIGF1eEZvcm0ucmVzZXQodmFsdWUpO1xyXG4gICAgICByZXR1cm4gYXV4Rm9ybTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB7XHJcbiAgICAgIGZpZWxkLnZhbGlkYXRvcnMgPSB0aGlzLnNldFZhbGlkYXRvcnNBcnJheShmaWVsZC52YWxpZGF0b3JzLCBbXHJcbiAgICAgICAgdGhpcy5hcnJheUxlbmd0aFJlcXVpcmVkLFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lOiBmaWVsZC5uYW1lLFxyXG4gICAgICBjb250cm9sOiBuZXcgU3BlY2lhbEZvcm1BcnJheShmaWVsZCwgYXV4Rm9ybSwgW10pLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2woZmllbGQ6IFRTcGVjaWFsRmllbGRzKToge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgY29udHJvbDogU3BlY2lhbEZvcm1Db250cm9sPGFueT47XHJcbiAgfSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2godGhpcy5zZXRSZXF1aXJlZFZhbGlkYXRvcihmaWVsZCkpO1xyXG4gICAgaWYgKGZpZWxkLmxlbmd0aCkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGZpZWxkLmxlbmd0aCkpO1xyXG5cclxuICAgIGZpZWxkLnZhbGlkYXRvcnMgPSB0aGlzLnNldFZhbGlkYXRvcnNBcnJheShmaWVsZC52YWxpZGF0b3JzLCB2YWxpZGF0b3JzKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lOiBmaWVsZC5uYW1lLFxyXG4gICAgICBjb250cm9sOiBuZXcgU3BlY2lhbEZvcm1Db250cm9sKGZpZWxkKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlcXVpcmVkVmFsaWRhdG9yKGZpZWxkOiBUU3BlY2lhbEZpZWxkcyk6IFZhbGlkYXRvckZuIHtcclxuICAgIGlmIChmaWVsZC50eXBlICE9PSBFQ29udHJvbFR5cGVzLmF1dG9jb21wbGV0ZSkge1xyXG4gICAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IFNwZWNpYWxGb3JtQ29udHJvbDxJQXV0b2NvbXBsZXRlU2V0dGluZ3M+KSA9PlxyXG4gICAgICAhIWNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdFxyXG4gICAgICAgID8gbnVsbFxyXG4gICAgICAgIDogeyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gIH1cclxuICBwcml2YXRlIHNldFZhbGlkYXRvcnNBcnJheShcclxuICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwsXHJcbiAgICBuZXdWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdXHJcbiAgKTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgICBpZiAoIXZhbGlkYXRvcnMpIHtcclxuICAgICAgcmV0dXJuIG5ld1ZhbGlkYXRvcnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycyBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgID8gWy4uLnZhbGlkYXRvcnMsIC4uLm5ld1ZhbGlkYXRvcnNdXHJcbiAgICAgIDogW3ZhbGlkYXRvcnMsIC4uLm5ld1ZhbGlkYXRvcnNdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcnJheUxlbmd0aFJlcXVpcmVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG5vSXRlbXM6ICdOT19TRUxFQ1RFRF9JVEVNJyB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -10,4 +10,4 @@ export * from './lib/core/interfaces/form.interfaces';
10
10
  export * from './lib/core/interfaces/special-control.interface';
11
11
  export * from './lib/core/masks/index';
12
12
  export * from './lib/core/pipes/index';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NwZWNpYWwtZm9ybXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzcGVjaWFsLWZvcm1zXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2luZGV4JztcbmV4cG9ydCB7IEVDb250cm9sVHlwZXMgfSBmcm9tICcuL2xpYi9jb3JlL2F1eC1kYXRhL2NvbnRyb2wtdHlwZXMuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2Zvcm1zL3NwZWNpYWwtZm9ybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9pbnRlcmZhY2VzL2ZpZWxkLWJhc2ljcy5pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvaW50ZXJmYWNlcy9mb3JtLmludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9pbnRlcmZhY2VzL3NwZWNpYWwtY29udHJvbC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9tYXNrcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3BpcGVzL2luZGV4JztcblxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NwZWNpYWwtZm9ybXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNwZWNpYWwtZm9ybXNcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9pbmRleCc7XHJcbmV4cG9ydCB7IEVDb250cm9sVHlwZXMgfSBmcm9tICcuL2xpYi9jb3JlL2F1eC1kYXRhL2NvbnRyb2wtdHlwZXMuZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZm9ybXMvc3BlY2lhbC1mb3Jtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvaW50ZXJmYWNlcy9maWVsZC1iYXNpY3MuaW50ZXJmYWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvaW50ZXJmYWNlcy9mb3JtLmludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2ludGVyZmFjZXMvc3BlY2lhbC1jb250cm9sLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbWFza3MvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3BpcGVzL2luZGV4JztcclxuXHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Pipe, Component, ChangeDetectionStrategy, Input, EventEmitter, Output, Directive, NgModule, Injectable } from '@angular/core';
2
+ import { Pipe, Component, ChangeDetectionStrategy, Input, EventEmitter, Output, Directive, Injectable, NgModule } from '@angular/core';
3
3
  import { debounceTime } from 'rxjs/operators';
4
4
  import * as i4 from '@angular/material/autocomplete';
5
5
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
@@ -16,7 +16,7 @@ import * as i7$1 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
17
17
  import * as i2 from '@angular/material/form-field';
18
18
  import * as i5 from '@angular/material/core';
19
- import { MatNativeDateModule } from '@angular/material/core';
19
+ import { MatNativeDateModule, ErrorStateMatcher } from '@angular/material/core';
20
20
  import * as i1$2 from '@ngneat/input-mask';
21
21
  import { InputMaskModule, createMask } from '@ngneat/input-mask';
22
22
  import * as i3 from '@angular/material/select';
@@ -171,7 +171,7 @@ class SpecialInputComponent {
171
171
  }
172
172
  }
173
173
  SpecialInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
174
- SpecialInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialInputComponent, isStandalone: true, selector: "sp-input", inputs: { control: "control" }, ngImport: i0, template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n (blur)=\"onBlurAction()\"\n (keydown.enter)=\"onEnterClick()\"\n [inputMask]=\"settings?.mask\"\n autocomplete=\"off\"\n [type]=\"settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <button\n *ngIf=\"settings?.icon\"\n mat-icon-button\n matSuffix\n (click)=\"iconClick($event)\"\n >\n <mat-icon>\n {{ settings.icon }}\n </mat-icon>\n </button>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: InputMaskModule }, { kind: "directive", type: i1$2.InputMaskDirective, selector: "[inputMask]", inputs: ["inputMask"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
174
+ SpecialInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialInputComponent, isStandalone: true, selector: "sp-input", inputs: { control: "control" }, ngImport: i0, template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n (blur)=\"onBlurAction()\"\r\n (keydown.enter)=\"onEnterClick()\"\r\n [inputMask]=\"settings?.mask\"\r\n autocomplete=\"off\"\r\n [type]=\"settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <button\r\n *ngIf=\"settings?.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: InputMaskModule }, { kind: "directive", type: i1$2.InputMaskDirective, selector: "[inputMask]", inputs: ["inputMask"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
175
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialInputComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ standalone: true, selector: 'sp-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
@@ -182,7 +182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
182
182
  ReactiveFormsModule,
183
183
  MatButtonModule,
184
184
  ErrorMessagePipe,
185
- ], template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n (blur)=\"onBlurAction()\"\n (keydown.enter)=\"onEnterClick()\"\n [inputMask]=\"settings?.mask\"\n autocomplete=\"off\"\n [type]=\"settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <button\n *ngIf=\"settings?.icon\"\n mat-icon-button\n matSuffix\n (click)=\"iconClick($event)\"\n >\n <mat-icon>\n {{ settings.icon }}\n </mat-icon>\n </button>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"] }]
185
+ ], template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n (blur)=\"onBlurAction()\"\r\n (keydown.enter)=\"onEnterClick()\"\r\n [inputMask]=\"settings?.mask\"\r\n autocomplete=\"off\"\r\n [type]=\"settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <button\r\n *ngIf=\"settings?.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"] }]
186
186
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
187
187
  type: Input
188
188
  }] } });
@@ -228,7 +228,7 @@ class SpecialDatepickerComponent {
228
228
  ngOnInit() { }
229
229
  }
230
230
  SpecialDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
231
- SpecialDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialDatepickerComponent, isStandalone: true, selector: "sp-datepicker", inputs: { control: "control" }, ngImport: i0, template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n [readonly]=\"control.readOnly\"\n [matDatepicker]=\"picker\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\n </mat-datepicker>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }, { kind: "ngmodule", type: MatNativeDateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
231
+ SpecialDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialDatepickerComponent, isStandalone: true, selector: "sp-datepicker", inputs: { control: "control" }, ngImport: i0, template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [readonly]=\"control.readOnly\"\r\n [matDatepicker]=\"picker\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\r\n </mat-datepicker>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }, { kind: "ngmodule", type: MatNativeDateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
232
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialDatepickerComponent, decorators: [{
233
233
  type: Component,
234
234
  args: [{ standalone: true, selector: 'sp-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
@@ -240,7 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
240
240
  MatButtonModule,
241
241
  ErrorMessagePipe,
242
242
  MatNativeDateModule,
243
- ], template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n [readonly]=\"control.readOnly\"\n [matDatepicker]=\"picker\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\n </mat-datepicker>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"] }]
243
+ ], template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [readonly]=\"control.readOnly\"\r\n [matDatepicker]=\"picker\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\r\n </mat-datepicker>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"] }]
244
244
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
245
245
  type: Input
246
246
  }] } });
@@ -326,7 +326,7 @@ class SpecialCheckboxComponent {
326
326
  ngOnInit() { }
327
327
  }
328
328
  SpecialCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
329
- SpecialCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialCheckboxComponent, isStandalone: true, selector: "sp-checkbox", inputs: { control: "control" }, ngImport: i0, template: "<div\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-checkbox w-full mb-3 flex flex-col {{ control.styleClasses }}\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <mat-checkbox\n [required]=\"control.required\"\n [ngModel]=\"control.value\"\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\n [indeterminate]=\"control.settings.indeterminate\"\n [labelPosition]=\"control.settings.labelPosition\"\n [color]=\"control.settings.color\"\n [disabled]=\"control.disabled\"\n >\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\n {{ control.placeholder }}\n </mat-checkbox>\n</div>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i2$1.MatCheckboxRequiredValidator, selector: "mat-checkbox[required][formControlName], mat-checkbox[required][formControl], mat-checkbox[required][ngModel]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
329
+ SpecialCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialCheckboxComponent, isStandalone: true, selector: "sp-checkbox", inputs: { control: "control" }, ngImport: i0, template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-checkbox w-full mb-3 flex flex-col {{ control.styleClasses }}\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <mat-checkbox\r\n [required]=\"control.required\"\r\n [ngModel]=\"control.value\"\r\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\r\n [indeterminate]=\"control.settings.indeterminate\"\r\n [labelPosition]=\"control.settings.labelPosition\"\r\n [color]=\"control.settings.color\"\r\n [disabled]=\"control.disabled\"\r\n >\r\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\r\n {{ control.placeholder }}\r\n </mat-checkbox>\r\n</div>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i2$1.MatCheckboxRequiredValidator, selector: "mat-checkbox[required][formControlName], mat-checkbox[required][formControl], mat-checkbox[required][ngModel]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
330
330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialCheckboxComponent, decorators: [{
331
331
  type: Component,
332
332
  args: [{ standalone: true, selector: 'sp-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
@@ -338,7 +338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
338
338
  ReactiveFormsModule,
339
339
  MatButtonModule,
340
340
  ErrorMessagePipe,
341
- ], template: "<div\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-checkbox w-full mb-3 flex flex-col {{ control.styleClasses }}\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <mat-checkbox\n [required]=\"control.required\"\n [ngModel]=\"control.value\"\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\n [indeterminate]=\"control.settings.indeterminate\"\n [labelPosition]=\"control.settings.labelPosition\"\n [color]=\"control.settings.color\"\n [disabled]=\"control.disabled\"\n >\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\n {{ control.placeholder }}\n </mat-checkbox>\n</div>\n", styles: [":host{display:contents}\n"] }]
341
+ ], template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-checkbox w-full mb-3 flex flex-col {{ control.styleClasses }}\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <mat-checkbox\r\n [required]=\"control.required\"\r\n [ngModel]=\"control.value\"\r\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\r\n [indeterminate]=\"control.settings.indeterminate\"\r\n [labelPosition]=\"control.settings.labelPosition\"\r\n [color]=\"control.settings.color\"\r\n [disabled]=\"control.disabled\"\r\n >\r\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\r\n {{ control.placeholder }}\r\n </mat-checkbox>\r\n</div>\r\n", styles: [":host{display:contents}\n"] }]
342
342
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
343
343
  type: Input
344
344
  }] } });
@@ -351,7 +351,7 @@ class SpecialTextAreaComponent {
351
351
  ngOnInit() { }
352
352
  }
353
353
  SpecialTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialTextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
354
- SpecialTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialTextAreaComponent, isStandalone: true, selector: "sp-text-area", inputs: { control: "control" }, outputs: { onBlur: "onBlur", onEnter: "onEnter" }, ngImport: i0, template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n matInput\n (blur)=\"onBlur.emit(control.value)\"\n (keydown.enter)=\"onEnter.emit(control.value)\"\n [type]=\"control.settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n ></textarea>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: InputMaskModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
354
+ SpecialTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialTextAreaComponent, isStandalone: true, selector: "sp-text-area", inputs: { control: "control" }, outputs: { onBlur: "onBlur", onEnter: "onEnter" }, ngImport: i0, template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <textarea\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"1\"\r\n cdkAutosizeMaxRows=\"5\"\r\n matInput\r\n (blur)=\"onBlur.emit(control.value)\"\r\n (keydown.enter)=\"onEnter.emit(control.value)\"\r\n [type]=\"control.settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n ></textarea>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: InputMaskModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
355
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialTextAreaComponent, decorators: [{
356
356
  type: Component,
357
357
  args: [{ standalone: true, selector: 'sp-text-area', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
@@ -362,7 +362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
362
362
  ReactiveFormsModule,
363
363
  MatButtonModule,
364
364
  ErrorMessagePipe,
365
- ], template: "<mat-form-field\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'fill'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n matInput\n (blur)=\"onBlur.emit(control.value)\"\n (keydown.enter)=\"onEnter.emit(control.value)\"\n [type]=\"control.settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n ></textarea>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n", styles: [":host{display:contents}\n"] }]
365
+ ], template: "<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <textarea\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"1\"\r\n cdkAutosizeMaxRows=\"5\"\r\n matInput\r\n (blur)=\"onBlur.emit(control.value)\"\r\n (keydown.enter)=\"onEnter.emit(control.value)\"\r\n [type]=\"control.settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n ></textarea>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n", styles: [":host{display:contents}\n"] }]
366
366
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
367
367
  type: Input
368
368
  }], onBlur: [{
@@ -426,7 +426,7 @@ class SpecialUploadComponent {
426
426
  }
427
427
  }
428
428
  SpecialUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialUploadComponent, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
429
- SpecialUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialUploadComponent, isStandalone: true, selector: "sp-upload", inputs: { controlSetter: ["control", "controlSetter"] }, ngImport: i0, template: "<div\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-upload w-full mb-3 {{ control.styleClasses }}\"\n>\n <ngx-dropzone\n class=\"special-upload__dropzone\"\n [ngClass]=\"{\n 'special-upload--error-dashed':\n !!control.errors && (control.dirty || control.touched)\n }\"\n [multiple]=\"control.settings?.multiple\"\n [accept]=\"\n control.settings?.accept\n ? control.settings?.accept\n : 'image/png, .jpeg, .jpg, image/gif'\n \"\n (change)=\"\n control.settings?.multiple\n ? onSelectMultiple($event)\n : onSelectOne($event)\n \"\n >\n <ngx-dropzone-label\n [ngClass]=\"{\n 'special-upload--error':\n !!control.errors && (control.dirty || control.touched)\n }\"\n >\n <mat-icon class=\"special-upload__icon\" *ngIf=\"control.icon\"\n >{{ control.icon }}\n </mat-icon>\n <h2 class=\"text-base font-bold\">\n {{ control.label }}\n </h2>\n <h3 class=\"text-base\">\n {{ control.placeholder }}\n </h3>\n </ngx-dropzone-label>\n <ngx-dropzone-preview\n *ngFor=\"let file of previewImages\"\n [removable]=\"true\"\n (removed)=\"onRemove(file)\"\n >\n <ngx-dropzone-label class=\"special-upload__card\">\n <img class=\"special-upload__card--image\" [src]=\"file?.url\" alt=\"\" />\n </ngx-dropzone-label>\n </ngx-dropzone-preview>\n </ngx-dropzone>\n <div\n class=\"special-upload--error mt-2\"\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\n >\n {{ control.errors | errorMessage: control.errorMessages }}\n </div>\n</div>\n", styles: [":host{display:contents}:host .special-upload{margin-bottom:1rem}:host .special-upload__dropzone{min-height:180px;height:unset!important}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: NgxDropzoneModule }, { kind: "component", type: i2$2.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }, { kind: "directive", type: i2$2.NgxDropzoneLabelDirective, selector: "ngx-dropzone-label" }, { kind: "component", type: i2$2.NgxDropzonePreviewComponent, selector: "ngx-dropzone-preview", inputs: ["file", "removable"], outputs: ["removed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
429
+ SpecialUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialUploadComponent, isStandalone: true, selector: "sp-upload", inputs: { controlSetter: ["control", "controlSetter"] }, ngImport: i0, template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-upload w-full mb-3 {{ control.styleClasses }}\"\r\n>\r\n <ngx-dropzone\r\n class=\"special-upload__dropzone\"\r\n [ngClass]=\"{\r\n 'special-upload--error-dashed':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n [multiple]=\"control.settings?.multiple\"\r\n [accept]=\"\r\n control.settings?.accept\r\n ? control.settings?.accept\r\n : 'image/png, .jpeg, .jpg, image/gif'\r\n \"\r\n (change)=\"\r\n control.settings?.multiple\r\n ? onSelectMultiple($event)\r\n : onSelectOne($event)\r\n \"\r\n >\r\n <ngx-dropzone-label\r\n [ngClass]=\"{\r\n 'special-upload--error':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n >\r\n <mat-icon class=\"special-upload__icon\" *ngIf=\"control.icon\"\r\n >{{ control.icon }}\r\n </mat-icon>\r\n <h2 class=\"text-base font-bold\">\r\n {{ control.label }}\r\n </h2>\r\n <h3 class=\"text-base\">\r\n {{ control.placeholder }}\r\n </h3>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-preview\r\n *ngFor=\"let file of previewImages\"\r\n [removable]=\"true\"\r\n (removed)=\"onRemove(file)\"\r\n >\r\n <ngx-dropzone-label class=\"special-upload__card\">\r\n <img class=\"special-upload__card--image\" [src]=\"file?.url\" alt=\"\" />\r\n </ngx-dropzone-label>\r\n </ngx-dropzone-preview>\r\n </ngx-dropzone>\r\n <div\r\n class=\"special-upload--error mt-2\"\r\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\r\n >\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}:host .special-upload{margin-bottom:1rem}:host .special-upload__dropzone{min-height:180px;height:unset!important}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: NgxDropzoneModule }, { kind: "component", type: i2$2.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }, { kind: "directive", type: i2$2.NgxDropzoneLabelDirective, selector: "ngx-dropzone-label" }, { kind: "component", type: i2$2.NgxDropzonePreviewComponent, selector: "ngx-dropzone-preview", inputs: ["file", "removable"], outputs: ["removed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
430
430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialUploadComponent, decorators: [{
431
431
  type: Component,
432
432
  args: [{ standalone: true, selector: 'sp-upload', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
@@ -437,7 +437,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
437
437
  ReactiveFormsModule,
438
438
  MatButtonModule,
439
439
  ErrorMessagePipe,
440
- ], template: "<div\n *ngIf=\"control && !control.hidden\"\n [id]=\"control.elementId\"\n class=\"special-upload w-full mb-3 {{ control.styleClasses }}\"\n>\n <ngx-dropzone\n class=\"special-upload__dropzone\"\n [ngClass]=\"{\n 'special-upload--error-dashed':\n !!control.errors && (control.dirty || control.touched)\n }\"\n [multiple]=\"control.settings?.multiple\"\n [accept]=\"\n control.settings?.accept\n ? control.settings?.accept\n : 'image/png, .jpeg, .jpg, image/gif'\n \"\n (change)=\"\n control.settings?.multiple\n ? onSelectMultiple($event)\n : onSelectOne($event)\n \"\n >\n <ngx-dropzone-label\n [ngClass]=\"{\n 'special-upload--error':\n !!control.errors && (control.dirty || control.touched)\n }\"\n >\n <mat-icon class=\"special-upload__icon\" *ngIf=\"control.icon\"\n >{{ control.icon }}\n </mat-icon>\n <h2 class=\"text-base font-bold\">\n {{ control.label }}\n </h2>\n <h3 class=\"text-base\">\n {{ control.placeholder }}\n </h3>\n </ngx-dropzone-label>\n <ngx-dropzone-preview\n *ngFor=\"let file of previewImages\"\n [removable]=\"true\"\n (removed)=\"onRemove(file)\"\n >\n <ngx-dropzone-label class=\"special-upload__card\">\n <img class=\"special-upload__card--image\" [src]=\"file?.url\" alt=\"\" />\n </ngx-dropzone-label>\n </ngx-dropzone-preview>\n </ngx-dropzone>\n <div\n class=\"special-upload--error mt-2\"\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\n >\n {{ control.errors | errorMessage: control.errorMessages }}\n </div>\n</div>\n", styles: [":host{display:contents}:host .special-upload{margin-bottom:1rem}:host .special-upload__dropzone{min-height:180px;height:unset!important}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\n"] }]
440
+ ], template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-upload w-full mb-3 {{ control.styleClasses }}\"\r\n>\r\n <ngx-dropzone\r\n class=\"special-upload__dropzone\"\r\n [ngClass]=\"{\r\n 'special-upload--error-dashed':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n [multiple]=\"control.settings?.multiple\"\r\n [accept]=\"\r\n control.settings?.accept\r\n ? control.settings?.accept\r\n : 'image/png, .jpeg, .jpg, image/gif'\r\n \"\r\n (change)=\"\r\n control.settings?.multiple\r\n ? onSelectMultiple($event)\r\n : onSelectOne($event)\r\n \"\r\n >\r\n <ngx-dropzone-label\r\n [ngClass]=\"{\r\n 'special-upload--error':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n >\r\n <mat-icon class=\"special-upload__icon\" *ngIf=\"control.icon\"\r\n >{{ control.icon }}\r\n </mat-icon>\r\n <h2 class=\"text-base font-bold\">\r\n {{ control.label }}\r\n </h2>\r\n <h3 class=\"text-base\">\r\n {{ control.placeholder }}\r\n </h3>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-preview\r\n *ngFor=\"let file of previewImages\"\r\n [removable]=\"true\"\r\n (removed)=\"onRemove(file)\"\r\n >\r\n <ngx-dropzone-label class=\"special-upload__card\">\r\n <img class=\"special-upload__card--image\" [src]=\"file?.url\" alt=\"\" />\r\n </ngx-dropzone-label>\r\n </ngx-dropzone-preview>\r\n </ngx-dropzone>\r\n <div\r\n class=\"special-upload--error mt-2\"\r\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\r\n >\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}:host .special-upload{margin-bottom:1rem}:host .special-upload__dropzone{min-height:180px;height:unset!important}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\n"] }]
441
441
  }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }]; }, propDecorators: { controlSetter: [{
442
442
  type: Input,
443
443
  args: ['control']
@@ -456,10 +456,10 @@ class SpecialLabelComponent {
456
456
  }
457
457
  }
458
458
  SpecialLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
459
- SpecialLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialLabelComponent, isStandalone: true, selector: "sp-label", inputs: { control: "control" }, ngImport: i0, template: "<div\n *ngIf=\"control && !control.hidden\"\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\n control.value | textByFunction: settings.stylesPipe\n }}\"\n [id]=\"control.elementId\"\n>\n <div *ngIf=\"!!control.label\" class=\"special-label__title font-bold\">\n {{ control.label }}\n </div>\n <div\n class=\"special-label__text\"\n [ngClass]=\"{\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink\n }\"\n (click)=\"onLink()\"\n >\n {{ control.value | textByFunction: control.settings.pipe }}\n </div>\n</div>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "pipe", type: TextByFunctionPipe, name: "textByFunction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
459
+ SpecialLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialLabelComponent, isStandalone: true, selector: "sp-label", inputs: { control: "control" }, ngImport: i0, template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\r\n control.value | textByFunction: settings.stylesPipe\r\n }}\"\r\n [id]=\"control.elementId\"\r\n>\r\n <div *ngIf=\"!!control.label\" class=\"special-label__title font-bold\">\r\n {{ control.label }}\r\n </div>\r\n <div\r\n class=\"special-label__text\"\r\n [ngClass]=\"{\r\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink\r\n }\"\r\n (click)=\"onLink()\"\r\n >\r\n {{ control.value | textByFunction: control.settings.pipe }}\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "pipe", type: TextByFunctionPipe, name: "textByFunction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
460
460
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialLabelComponent, decorators: [{
461
461
  type: Component,
462
- args: [{ standalone: true, selector: 'sp-label', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, TextByFunctionPipe], template: "<div\n *ngIf=\"control && !control.hidden\"\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\n control.value | textByFunction: settings.stylesPipe\n }}\"\n [id]=\"control.elementId\"\n>\n <div *ngIf=\"!!control.label\" class=\"special-label__title font-bold\">\n {{ control.label }}\n </div>\n <div\n class=\"special-label__text\"\n [ngClass]=\"{\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink\n }\"\n (click)=\"onLink()\"\n >\n {{ control.value | textByFunction: control.settings.pipe }}\n </div>\n</div>\n", styles: [":host{display:contents}\n"] }]
462
+ args: [{ standalone: true, selector: 'sp-label', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, TextByFunctionPipe], template: "<div\r\n *ngIf=\"control && !control.hidden\"\r\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\r\n control.value | textByFunction: settings.stylesPipe\r\n }}\"\r\n [id]=\"control.elementId\"\r\n>\r\n <div *ngIf=\"!!control.label\" class=\"special-label__title font-bold\">\r\n {{ control.label }}\r\n </div>\r\n <div\r\n class=\"special-label__text\"\r\n [ngClass]=\"{\r\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink\r\n }\"\r\n (click)=\"onLink()\"\r\n >\r\n {{ control.value | textByFunction: control.settings.pipe }}\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}\n"] }]
463
463
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
464
464
  type: Input
465
465
  }] } });
@@ -510,10 +510,10 @@ class SpecialRichtextComponent {
510
510
  }
511
511
  }
512
512
  SpecialRichtextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialRichtextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
513
- SpecialRichtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialRichtextComponent, isStandalone: true, selector: "sp-input", inputs: { control: "control" }, ngImport: i0, template: "<div\n class=\"special-richtext w-full mb-3 {{ formControl.styleClasses }}\"\n [id]=\"formControl.elementId\"\n *ngIf=\"formControl && !formControl.hidden\"\n>\n <ngx-editor-menu\n [colorPresets]=\"colorPresets\"\n [toolbar]=\"toolbar\"\n [editor]=\"editor\"\n >\n </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"formControl\"\n [disabled]=\"false\"\n [placeholder]=\"formControl.placeholder\"\n ></ngx-editor>\n</div>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i3$2.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i3$2.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
513
+ SpecialRichtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialRichtextComponent, isStandalone: true, selector: "sp-input", inputs: { control: "control" }, ngImport: i0, template: "<div\r\n class=\"special-richtext w-full mb-3 {{ formControl.styleClasses }}\"\r\n [id]=\"formControl.elementId\"\r\n *ngIf=\"formControl && !formControl.hidden\"\r\n>\r\n <ngx-editor-menu\r\n [colorPresets]=\"colorPresets\"\r\n [toolbar]=\"toolbar\"\r\n [editor]=\"editor\"\r\n >\r\n </ngx-editor-menu>\r\n <ngx-editor\r\n [editor]=\"editor\"\r\n [formControl]=\"formControl\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"formControl.placeholder\"\r\n ></ngx-editor>\r\n</div>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i3$2.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i3$2.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
514
514
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialRichtextComponent, decorators: [{
515
515
  type: Component,
516
- args: [{ standalone: true, selector: 'sp-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, ReactiveFormsModule, NgxEditorModule], template: "<div\n class=\"special-richtext w-full mb-3 {{ formControl.styleClasses }}\"\n [id]=\"formControl.elementId\"\n *ngIf=\"formControl && !formControl.hidden\"\n>\n <ngx-editor-menu\n [colorPresets]=\"colorPresets\"\n [toolbar]=\"toolbar\"\n [editor]=\"editor\"\n >\n </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"formControl\"\n [disabled]=\"false\"\n [placeholder]=\"formControl.placeholder\"\n ></ngx-editor>\n</div>\n", styles: [":host{display:contents}\n"] }]
516
+ args: [{ standalone: true, selector: 'sp-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, ReactiveFormsModule, NgxEditorModule], template: "<div\r\n class=\"special-richtext w-full mb-3 {{ formControl.styleClasses }}\"\r\n [id]=\"formControl.elementId\"\r\n *ngIf=\"formControl && !formControl.hidden\"\r\n>\r\n <ngx-editor-menu\r\n [colorPresets]=\"colorPresets\"\r\n [toolbar]=\"toolbar\"\r\n [editor]=\"editor\"\r\n >\r\n </ngx-editor-menu>\r\n <ngx-editor\r\n [editor]=\"editor\"\r\n [formControl]=\"formControl\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"formControl.placeholder\"\r\n ></ngx-editor>\r\n</div>\r\n", styles: [":host{display:contents}\n"] }]
517
517
  }], ctorParameters: function () { return []; }, propDecorators: { control: [{
518
518
  type: Input
519
519
  }] } });
@@ -525,10 +525,10 @@ class SpecialFormComponent {
525
525
  ngOnInit() { }
526
526
  }
527
527
  SpecialFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
528
- SpecialFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialFormComponent, selector: "sp-form", inputs: { form: ["control", "form"] }, ngImport: i0, template: "<div\n *ngIf=\"form && !form.hidden\"\n [id]=\"form.elementId\"\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\n>\n <div\n *ngIf=\"form\"\n [class]=\"\n form.label\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\n : 'container'\n \"\n >\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\n <div class=\"w-full flex flex-wrap\">\n <ng-template\n *ngFor=\"let control of form.controls | controlsList\"\n controlRender\n [control]=\"control\"\n ></ng-template>\n </div>\n </div>\n</div>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1$1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1$1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: "[controlRender]", inputs: ["control"] }, { kind: "pipe", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: "controlsList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
528
+ SpecialFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SpecialFormComponent, selector: "sp-form", inputs: { form: ["control", "form"] }, ngImport: i0, template: "<div\r\n *ngIf=\"form && !form.hidden\"\r\n [id]=\"form.elementId\"\r\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\r\n>\r\n <div\r\n *ngIf=\"form\"\r\n [class]=\"\r\n form.label\r\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\r\n : 'container'\r\n \"\r\n >\r\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\r\n <div class=\"w-full flex flex-wrap\">\r\n <ng-template\r\n *ngFor=\"let control of form.controls | controlsList\"\r\n controlRender\r\n [control]=\"control\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i1$1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1$1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: "[controlRender]", inputs: ["control"] }, { kind: "pipe", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: "controlsList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
529
529
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialFormComponent, decorators: [{
530
530
  type: Component,
531
- args: [{ selector: 'sp-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"form && !form.hidden\"\n [id]=\"form.elementId\"\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\n>\n <div\n *ngIf=\"form\"\n [class]=\"\n form.label\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\n : 'container'\n \"\n >\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\n <div class=\"w-full flex flex-wrap\">\n <ng-template\n *ngFor=\"let control of form.controls | controlsList\"\n controlRender\n [control]=\"control\"\n ></ng-template>\n </div>\n </div>\n</div>\n", styles: [":host{display:contents}\n"] }]
531
+ args: [{ selector: 'sp-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n *ngIf=\"form && !form.hidden\"\r\n [id]=\"form.elementId\"\r\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\r\n>\r\n <div\r\n *ngIf=\"form\"\r\n [class]=\"\r\n form.label\r\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\r\n : 'container'\r\n \"\r\n >\r\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\r\n <div class=\"w-full flex flex-wrap\">\r\n <ng-template\r\n *ngFor=\"let control of form.controls | controlsList\"\r\n controlRender\r\n [control]=\"control\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}\n"] }]
532
532
  }], propDecorators: { form: [{
533
533
  type: Input,
534
534
  args: ['control']
@@ -600,6 +600,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
600
600
  args: ['control']
601
601
  }] } });
602
602
 
603
+ class ErrorStateMatcherService {
604
+ isErrorState(control) {
605
+ return control && control.invalid && control.dirty;
606
+ }
607
+ }
608
+ ErrorStateMatcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ErrorStateMatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
609
+ ErrorStateMatcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ErrorStateMatcherService });
610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ErrorStateMatcherService, decorators: [{
611
+ type: Injectable
612
+ }] });
613
+
603
614
  class SpecialFormModule {
604
615
  }
605
616
  SpecialFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -620,7 +631,12 @@ SpecialFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
620
631
  SpecialUploadComponent], exports: [SpecialArrayComponent,
621
632
  FormControlsRenderDirective,
622
633
  SpecialFormComponent] });
623
- SpecialFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialFormModule, imports: [CommonModule,
634
+ SpecialFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SpecialFormModule, providers: [
635
+ {
636
+ provide: ErrorStateMatcher,
637
+ useClass: ErrorStateMatcherService,
638
+ },
639
+ ], imports: [CommonModule,
624
640
  MatButtonModule,
625
641
  SpecialRichtextComponent,
626
642
  SpecialDropdownComponent,
@@ -660,6 +676,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
660
676
  FormControlsRenderDirective,
661
677
  SpecialFormComponent,
662
678
  ],
679
+ providers: [
680
+ {
681
+ provide: ErrorStateMatcher,
682
+ useClass: ErrorStateMatcherService,
683
+ },
684
+ ],
663
685
  }]
664
686
  }] });
665
687
 
@@ -682,6 +704,26 @@ class SpecialFormControl extends FormControl {
682
704
  this.errorMessages = errorMessages;
683
705
  disabled ? this.disable() : this.enable();
684
706
  }
707
+ markAsDirty(opts) {
708
+ super.markAsDirty(opts);
709
+ this.updateValueAndValidity();
710
+ }
711
+ markAsPristine(opts) {
712
+ super.markAsPristine(opts);
713
+ this.updateValueAndValidity();
714
+ }
715
+ markAsTouched(opts) {
716
+ super.markAsTouched(opts);
717
+ this.updateValueAndValidity();
718
+ }
719
+ markAsUntouched(opts) {
720
+ super.markAsUntouched(opts);
721
+ this.updateValueAndValidity();
722
+ }
723
+ markAllAsTouched() {
724
+ super.markAllAsTouched();
725
+ this.updateValueAndValidity();
726
+ }
685
727
  setReadOnly(status = true) {
686
728
  this.readOnly = status;
687
729
  }
@@ -711,16 +753,17 @@ class SpecialFormGroup extends FormGroup {
711
753
  this.defaultValue = defaultValue;
712
754
  disabled ? this.disable() : this.enable();
713
755
  }
714
- unpristineRequired() {
756
+ getDirty() {
757
+ this.markAsDirty();
715
758
  Object.values(this.controls).forEach((control) => {
716
759
  if (control instanceof SpecialFormControl) {
717
760
  control.markAsDirty();
718
761
  }
719
762
  else if (control instanceof SpecialFormGroup) {
720
- control.unpristineRequired();
763
+ control.getDirty();
721
764
  }
722
765
  else if (control instanceof SpecialFormArray) {
723
- control.unpristineRequired();
766
+ control.getDirty();
724
767
  }
725
768
  });
726
769
  }
@@ -878,10 +921,11 @@ class SpecialFormArray extends FormArray {
878
921
  editControl(index) {
879
922
  this.form.reset(this.controls[index].value);
880
923
  }
881
- unpristineRequired() {
924
+ getDirty() {
882
925
  this.markAsDirty();
926
+ this.form.getDirty();
883
927
  this.controls.forEach((item) => {
884
- item.unpristineRequired();
928
+ item.getDirty();
885
929
  });
886
930
  }
887
931
  recursiveFillForm(form, data) {