coercion.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * @license
  3. * Copyright Google LLC All Rights Reserved.
  4. *
  5. * Use of this source code is governed by an MIT-style license that can be
  6. * found in the LICENSE file at https://angular.io/license
  7. */
  8. import { ElementRef } from '@angular/core';
  9. /**
  10. * @fileoverview added by tsickle
  11. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  12. */
  13. /**
  14. * Coerces a data-bound value (typically a string) to a boolean.
  15. * @param {?} value
  16. * @return {?}
  17. */
  18. function coerceBooleanProperty(value) {
  19. return value != null && `${value}` !== 'false';
  20. }
  21. /**
  22. * @fileoverview added by tsickle
  23. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  24. */
  25. /**
  26. * @param {?} value
  27. * @param {?=} fallbackValue
  28. * @return {?}
  29. */
  30. function coerceNumberProperty(value, fallbackValue = 0) {
  31. return _isNumberValue(value) ? Number(value) : fallbackValue;
  32. }
  33. /**
  34. * Whether the provided value is considered a number.
  35. * \@docs-private
  36. * @param {?} value
  37. * @return {?}
  38. */
  39. function _isNumberValue(value) {
  40. // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,
  41. // and other non-number values as NaN, where Number just uses 0) but it considers the string
  42. // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.
  43. return !isNaN(parseFloat((/** @type {?} */ (value)))) && !isNaN(Number(value));
  44. }
  45. /**
  46. * @fileoverview added by tsickle
  47. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  48. */
  49. /**
  50. * Wraps the provided value in an array, unless the provided value is an array.
  51. * @template T
  52. * @param {?} value
  53. * @return {?}
  54. */
  55. function coerceArray(value) {
  56. return Array.isArray(value) ? value : [value];
  57. }
  58. /**
  59. * @fileoverview added by tsickle
  60. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  61. */
  62. /**
  63. * Coerces a value to a CSS pixel value.
  64. * @param {?} value
  65. * @return {?}
  66. */
  67. function coerceCssPixelValue(value) {
  68. if (value == null) {
  69. return '';
  70. }
  71. return typeof value === 'string' ? value : `${value}px`;
  72. }
  73. /**
  74. * @fileoverview added by tsickle
  75. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  76. */
  77. /**
  78. * Coerces an ElementRef or an Element into an element.
  79. * Useful for APIs that can accept either a ref or the native element itself.
  80. * @template T
  81. * @param {?} elementOrRef
  82. * @return {?}
  83. */
  84. function coerceElement(elementOrRef) {
  85. return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;
  86. }
  87. /**
  88. * @fileoverview added by tsickle
  89. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  90. */
  91. /**
  92. * @fileoverview added by tsickle
  93. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  94. */
  95. export { coerceBooleanProperty, coerceNumberProperty, _isNumberValue, coerceArray, coerceCssPixelValue, coerceElement };
  96. //# sourceMappingURL=coercion.js.map