react-autosuggest-10.1.0/0000775000175000017500000000000015261220147014257 5ustar emfoxemfoxreact-autosuggest-10.1.0/webpack.standalone.config.js0000664000175000017500000000252313776124642021642 0ustar emfoxemfoxconst path = require('path'); const webpack = require('webpack'); const TerserPlugin = require('terser-webpack-plugin'); module.exports = [ { entry: './src/index.js', mode: 'production', output: { filename: './dist/standalone/autosuggest.js', libraryTarget: 'umd', library: 'Autosuggest' }, optimization: { minimizer: [ new TerserPlugin({ cache: true, parallel: true }) ] }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ path.join(__dirname, 'src') // Must be an absolute path ] } ] }, externals: { react: 'React' } }, { entry: './src/index.js', mode: 'production', output: { filename: './dist/standalone/autosuggest.min.js', libraryTarget: 'umd', library: 'Autosuggest' }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ path.join(__dirname, 'src') // Must be an absolute path ] } ] }, externals: { react: 'React' }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production') } }) ] } ]; react-autosuggest-10.1.0/webpack.standalone-demo.config.js0000664000175000017500000000061213776124642022561 0ustar emfoxemfoxvar path = require('path'); module.exports = { entry: ['./demo/standalone/app'], mode: 'production', output: { filename: './demo/standalone/compiled.app.js' }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ path.join(__dirname, 'demo', 'standalone') // Must be an absolute path ] } ] } }; react-autosuggest-10.1.0/webpack.gh-pages.config.js0000664000175000017500000000361413776124642021207 0ustar emfoxemfoxconst path = require('path'); const webpack = require('webpack'); const autoprefixer = require('autoprefixer'); const TerserPlugin = require('terser-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { entry: './demo/src/index', mode: 'production', output: { path: path.join(__dirname, 'demo', 'dist'), filename: 'index.js' }, optimization: { minimizer: [ new TerserPlugin({ cache: true, parallel: true }) ] }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ path.join(__dirname, 'src'), // Must be an absolute path path.join(__dirname, 'demo', 'src') // Must be an absolute path ] }, { test: /\.less$/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { modules: { localIdentName: '[name]__[local]___[hash:base64:5]' } } }, { loader: 'postcss-loader', options: { plugins: [autoprefixer()] } }, { loader: 'less-loader', options: { paths: [path.resolve(__dirname, 'demo', 'src')] } } ], exclude: /node_modules/ }, { test: /\.jpg$/, loader: 'url-loader?limit=8192' // 8kb }, { test: /\.svg$/, use: [ 'url-loader?limit=8192!', // 8kb 'svgo-loader' ] } ] }, resolve: { modules: ['node_modules', 'components', 'src'] }, plugins: [ new MiniCssExtractPlugin({ filename: 'app.css' }), new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production') } }) ] }; react-autosuggest-10.1.0/webpack.dev.config.js0000664000175000017500000000374013776124642020272 0ustar emfoxemfoxconst path = require('path'); const webpack = require('webpack'); const autoprefixer = require('autoprefixer'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const host = process.env.NODE_HOST || 'localhost'; const port = process.env.NODE_PORT || 3000; module.exports = { mode: 'development', entry: [ `webpack-dev-server/client?http://${host}:${port}`, './demo/src/index' ], output: { path: path.join(__dirname, 'dist'), // Must be an absolute path filename: 'index.js', publicPath: '/demo/dist/' }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', include: [ path.join(__dirname, 'src'), // Must be an absolute path path.join(__dirname, 'demo', 'src') // Must be an absolute path ] }, { test: /\.less$/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { modules: { localIdentName: '[name]__[local]___[hash:base64:5]' } } }, { loader: 'postcss-loader', options: { plugins: [autoprefixer()] } }, { loader: 'less-loader', options: { paths: [path.resolve(__dirname, 'demo', 'src')] } } ], exclude: /node_modules/ }, { test: /\.jpg$/, loader: 'url-loader?limit=8192' // 8kb }, { test: /\.svg$/, use: [ 'url-loader?limit=8192!', // 8kb 'svgo-loader' ] } ] }, resolve: { modules: [ 'node_modules', 'components', 'src', path.join(__dirname, 'demo', 'src') // Must be an absolute path ] }, devtool: 'source-map', plugins: [ new webpack.HotModuleReplacementPlugin(), new MiniCssExtractPlugin({ filename: 'app.css' }) ] }; react-autosuggest-10.1.0/test/0000775000175000017500000000000013776124642015252 5ustar emfoxemfoxreact-autosuggest-10.1.0/test/textarea/0000775000175000017500000000000013776124642017067 5ustar emfoxemfoxreact-autosuggest-10.1.0/test/textarea/languages.js0000664000175000017500000000114413776124642021373 0ustar emfoxemfoxexport default [ { name: 'C', year: 1972 }, { name: 'C#', year: 2000 }, { name: 'C++', year: 1983 }, { name: 'Clojure', year: 2007 }, { name: 'Elm', year: 2012 }, { name: 'Go', year: 2009 }, { name: 'Haskell', year: 1990 }, { name: 'Java', year: 1995 }, { name: 'JavaScript', year: 1995 }, { name: 'Perl', year: 1987 }, { name: 'PHP', year: 1995 }, { name: 'Python', year: 1991 }, { name: 'Ruby', year: 1995 }, { name: 'Scala', year: 2003 } ]; react-autosuggest-10.1.0/test/textarea/AutosuggestApp.test.js0000664000175000017500000000204713776124642023361 0ustar emfoxemfoximport React from 'react'; import TestUtils from 'react-dom/test-utils'; import { expect } from 'chai'; import { init, focusAndSetInputValue, clickDown, clickEnter, expectInputValue, clearEvents, expectLetBrowserHandleKeyDown, expectDontLetBrowserHandleKeyDown } from '../helpers'; import AutosuggestApp, { onSuggestionSelected } from './AutosuggestApp'; describe('Autosuggest with textarea', () => { beforeEach(() => { init(TestUtils.renderIntoDocument()); focusAndSetInputValue('p'); clearEvents(); }); it("inserts a newline if you press enter without selecting a suggestion", () => { clickEnter(); expectInputValue('p'); expect(onSuggestionSelected).not.to.have.been.called; expectLetBrowserHandleKeyDown(); }); it("doesn't insert a newline if you select a suggestion with enter", () => { clickDown(); clearEvents(); clickEnter(); expectInputValue('Perl'); expect(onSuggestionSelected).to.have.been.calledOnce; expectDontLetBrowserHandleKeyDown(); }); }); react-autosuggest-10.1.0/test/textarea/AutosuggestApp.js0000664000175000017500000000375713776124642022414 0ustar emfoxemfoximport React, { Component } from 'react'; import sinon from 'sinon'; import Autosuggest from '../../src/Autosuggest'; import languages from '../plain-list/languages'; import { escapeRegexCharacters } from '../../demo/src/components/utils/utils.js'; import { saveKeyDown } from '../helpers'; const getMatchingLanguages = value => { const escapedValue = escapeRegexCharacters(value.trim()); const regex = new RegExp('^' + escapedValue, 'i'); return languages.filter(language => regex.test(language.name)); }; let app = null; const onChange = (event, { newValue }) => { app.setState({ value: newValue }); }; const onSuggestionsFetchRequested = ({ value }) => { app.setState({ suggestions: getMatchingLanguages(value) }); }; const onSuggestionsClearRequested = () => { app.setState({ suggestions: [] }); }; export const onSuggestionSelected = sinon.spy(() => {}); const getSuggestionValue = suggestion => suggestion.name; const renderSuggestion = suggestion => suggestion.name; const renderTextarea = inputProps => (