fix pasted tabs not getting converted to space (#1388)
This PR fixes a bug where pasted tabs didn't get converted to spaces. Fixes #1387 We manually convert tabs to spaces when pressing the tab key. But we were missing cases where you pasted tabs. This may or may not be needed with @SomeHats's incoming text change! <img width="825" alt="Screenshot 2023-05-16 at 12 35 37" src="https://github.com/tldraw/tldraw/assets/15892272/239771d5-ab65-41e1-9215-60af3fab5c8b"> <img width="763" alt="Screenshot 2023-05-16 at 12 25 03" src="https://github.com/tldraw/tldraw/assets/15892272/307a6c3a-9f8f-44a8-9e66-a694b92c5067"> ### Change Type - [x] `patch` — Bug Fix ### Test Plan 1. Copy a tab character: ` ` 2. Make a text shape. 3. Paste the tab character. 4. Make sure that it has been converted into 2 spaces. - [ ] Unit Tests - [ ] Webdriver tests ### Release Notes - Fixed a bug where pasted tabs wouldn't get converted into spaces.
This commit is contained in:
parent
0cc95c271d
commit
d198bb3645
1 changed files with 14 additions and 1 deletions
|
@ -131,7 +131,20 @@ export function useEditableText<T extends Extract<TLShape, { props: { text: stri
|
||||||
// When the text changes, update the text value.
|
// When the text changes, update the text value.
|
||||||
const handleChange = useCallback(
|
const handleChange = useCallback(
|
||||||
(e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
(e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
||||||
const text = TextHelpers.normalizeText(e.currentTarget.value)
|
let text = TextHelpers.normalizeText(e.currentTarget.value)
|
||||||
|
|
||||||
|
// ------- Bug fix ------------
|
||||||
|
// Replace tabs with spaces when pasting
|
||||||
|
const untabbedText = text.replace(/\t/g, ' ')
|
||||||
|
if (untabbedText !== text) {
|
||||||
|
const selectionStart = e.currentTarget.selectionStart
|
||||||
|
e.currentTarget.value = untabbedText
|
||||||
|
e.currentTarget.selectionStart = selectionStart + (untabbedText.length - text.length)
|
||||||
|
e.currentTarget.selectionEnd = selectionStart + (untabbedText.length - text.length)
|
||||||
|
text = untabbedText
|
||||||
|
}
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
app.updateShapes([{ id, type, props: { text } }])
|
app.updateShapes([{ id, type, props: { text } }])
|
||||||
},
|
},
|
||||||
[app, id, type]
|
[app, id, type]
|
||||||
|
|
Loading…
Reference in a new issue