diff --git a/pages/index.js b/pages/index.js index 919c3c3..b9808b4 100644 --- a/pages/index.js +++ b/pages/index.js @@ -9,26 +9,43 @@ class Index extends PureComponent { super(props) this.state = { + replacingWithPaste: false, value: '' } this.handleChange = this.handleChange.bind(this) + this.handlePaste = this.handlePaste.bind(this) } handleChange(event) { const { value } = event.target const input = this.handler.input const idx = input.selectionStart + const { replacingWithPaste } = this.state const caretPosition = () => { - input.selectionStart = input.selectionEnd = idx + if (replacingWithPaste) { + input.selectionStart = 0 + input.selectionEnd = input.value.length + } else { + input.selectionStart = input.selectionEnd = idx + } } this.setState({ + replacingWithPaste: false, value: toTitle(value) }, caretPosition) event.preventDefault() } + + handlePaste(event) { + const { value, selectionStart, selectionEnd } = this.handler.input + if (selectionStart !== 0 || selectionEnd !== value.length) { + return + } + this.setState({ replacingWithPaste: true }) + } componentDidMount() { if (!this.handler) { @@ -45,6 +62,7 @@ class Index extends PureComponent { type: 'text', value, onChange: this.handleChange, + onPaste: this.handlePaste, placeholder: 'Paste or Enter Your Title', autoComplete: 'off', autoCorrect: 'off',