no-distracting-elements.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports["default"] = void 0;
  7. var _schemas = require("../util/schemas");
  8. var _getElementType = _interopRequireDefault(require("../util/getElementType"));
  9. /**
  10. * @fileoverview Enforce distracting elements are not used.
  11. * @author Ethan Cohen
  12. */
  13. // ----------------------------------------------------------------------------
  14. // Rule Definition
  15. // ----------------------------------------------------------------------------
  16. var errorMessage = function errorMessage(element) {
  17. return "Do not use <".concat(element, "> elements as they can create visual accessibility issues and are deprecated.");
  18. };
  19. var DEFAULT_ELEMENTS = ['marquee', 'blink'];
  20. var schema = (0, _schemas.generateObjSchema)({
  21. elements: (0, _schemas.enumArraySchema)(DEFAULT_ELEMENTS)
  22. });
  23. var _default = exports["default"] = {
  24. meta: {
  25. docs: {
  26. url: 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md',
  27. description: 'Enforce distracting elements are not used.'
  28. },
  29. schema: [schema]
  30. },
  31. create: function create(context) {
  32. var elementType = (0, _getElementType["default"])(context);
  33. return {
  34. JSXOpeningElement: function JSXOpeningElement(node) {
  35. var options = context.options[0] || {};
  36. var elementOptions = options.elements || DEFAULT_ELEMENTS;
  37. var type = elementType(node);
  38. var distractingElement = elementOptions.find(function (element) {
  39. return type === element;
  40. });
  41. if (distractingElement) {
  42. context.report({
  43. node,
  44. message: errorMessage(distractingElement)
  45. });
  46. }
  47. }
  48. };
  49. }
  50. };
  51. module.exports = exports.default;