版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

60 строки
2.5 KiB

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const NEW_LINES_REGEXP = /[\n\r]/gm;
  4. /**
  5. * HTML input element value sanitizer.
  6. */
  7. class HTMLInputElementValueSanitizer {
  8. /**
  9. * Sanitizes a value.
  10. *
  11. * @param input Input.
  12. * @param value Value.
  13. */
  14. static sanitize(input, value) {
  15. switch (input.type) {
  16. case 'password':
  17. case 'search':
  18. case 'tel':
  19. case 'text':
  20. return value.replace(NEW_LINES_REGEXP, '');
  21. case 'color':
  22. // https://html.spec.whatwg.org/multipage/forms.html#color-state-(type=color):value-sanitization-algorithm
  23. return /^#[a-fA-F\d]{6}$/.test(value) ? value.toLowerCase() : '#000000';
  24. case 'email':
  25. // https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email):value-sanitization-algorithm
  26. // https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email):value-sanitization-algorithm-2
  27. if (input.multiple) {
  28. return value
  29. .split(',')
  30. .map((token) => token.trim())
  31. .join(',');
  32. }
  33. return value.trim().replace(NEW_LINES_REGEXP, '');
  34. case 'number':
  35. // https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number):value-sanitization-algorithm
  36. return !isNaN(Number.parseFloat(value)) ? value : '';
  37. case 'range':
  38. // https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range):value-sanitization-algorithm
  39. const number = Number.parseFloat(value);
  40. const min = parseFloat(input.min) || 0;
  41. const max = parseFloat(input.max) || 100;
  42. if (isNaN(number)) {
  43. return max < min ? String(min) : String((min + max) / 2);
  44. }
  45. else if (number < min) {
  46. return String(min);
  47. }
  48. else if (number > max) {
  49. return String(max);
  50. }
  51. return value;
  52. case 'url':
  53. // https://html.spec.whatwg.org/multipage/forms.html#url-state-(type=url):value-sanitization-algorithm
  54. return value.trim().replace(NEW_LINES_REGEXP, '');
  55. }
  56. return value;
  57. }
  58. }
  59. exports.default = HTMLInputElementValueSanitizer;
  60. //# sourceMappingURL=HTMLInputElementValueSanitizer.js.map