import js from '@eslint/js'; import react from 'eslint-plugin-react'; import reactHooks from 'eslint-plugin-react-hooks'; import reactRefresh from 'eslint-plugin-react-refresh'; export default [ { ignores: ['dist', 'dist-demos', 'dist-full', 'src/libs', 'vite.config.js'], }, { files: ['**/*.{js,jsx}'], languageOptions: { ecmaVersion: 'latest', sourceType: 'module', parserOptions: { ecmaFeatures: { jsx: true, }, }, globals: { window: 'readonly', document: 'readonly', console: 'readonly', setTimeout: 'readonly', clearTimeout: 'readonly', requestAnimationFrame: 'readonly', ResizeObserver: 'readonly', getComputedStyle: 'readonly', FileReader: 'readonly', localStorage: 'readonly', fetch: 'readonly', FormData: 'readonly', performance: 'readonly', cancelAnimationFrame: 'readonly', CustomEvent: 'readonly', }, }, plugins: { react, 'react-hooks': reactHooks, 'react-refresh': reactRefresh, }, settings: { react: { version: '18.2', }, }, rules: { ...js.configs.recommended.rules, ...react.configs.recommended.rules, ...react.configs['jsx-runtime'].rules, ...reactHooks.configs.recommended.rules, 'no-use-before-define': [ 'error', { functions: false, classes: true, variables: true, }, ], 'react/no-unescaped-entities': 'off', // as it can't be disabled for useWritableProp 'react-hooks/exhaustive-deps': 'off', // TODO: later 'react/prop-types': 'off', }, }, ];