From e10cff397b1dc20f941a77b29d15ed0cf94416d2 Mon Sep 17 00:00:00 2001 From: Abdul Wahab <32850166+abdulwahabone@users.noreply.github.com> Date: Sat, 30 May 2026 05:03:28 +0900 Subject: [PATCH] Fix live copy edit paragraph resizing (#178) --- .agents/skills/impeccable/scripts/live-browser.js | 5 +++-- .claude/skills/impeccable/scripts/live-browser.js | 5 +++-- .cursor/skills/impeccable/scripts/live-browser.js | 5 +++-- .gemini/skills/impeccable/scripts/live-browser.js | 5 +++-- .github/skills/impeccable/scripts/live-browser.js | 5 +++-- .kiro/skills/impeccable/scripts/live-browser.js | 5 +++-- .opencode/skills/impeccable/scripts/live-browser.js | 5 +++-- .pi/skills/impeccable/scripts/live-browser.js | 5 +++-- .qoder/skills/impeccable/scripts/live-browser.js | 5 +++-- .rovodev/skills/impeccable/scripts/live-browser.js | 5 +++-- .trae-cn/skills/impeccable/scripts/live-browser.js | 5 +++-- .trae/skills/impeccable/scripts/live-browser.js | 5 +++-- plugin/skills/impeccable/scripts/live-browser.js | 5 +++-- skill/scripts/live-browser.js | 5 +++-- 14 files changed, 42 insertions(+), 28 deletions(-) diff --git a/.agents/skills/impeccable/scripts/live-browser.js b/.agents/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.agents/skills/impeccable/scripts/live-browser.js +++ b/.agents/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.claude/skills/impeccable/scripts/live-browser.js b/.claude/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.claude/skills/impeccable/scripts/live-browser.js +++ b/.claude/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.cursor/skills/impeccable/scripts/live-browser.js b/.cursor/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.cursor/skills/impeccable/scripts/live-browser.js +++ b/.cursor/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.gemini/skills/impeccable/scripts/live-browser.js b/.gemini/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.gemini/skills/impeccable/scripts/live-browser.js +++ b/.gemini/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.github/skills/impeccable/scripts/live-browser.js b/.github/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.github/skills/impeccable/scripts/live-browser.js +++ b/.github/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.kiro/skills/impeccable/scripts/live-browser.js b/.kiro/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.kiro/skills/impeccable/scripts/live-browser.js +++ b/.kiro/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.opencode/skills/impeccable/scripts/live-browser.js b/.opencode/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.opencode/skills/impeccable/scripts/live-browser.js +++ b/.opencode/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.pi/skills/impeccable/scripts/live-browser.js b/.pi/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.pi/skills/impeccable/scripts/live-browser.js +++ b/.pi/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.qoder/skills/impeccable/scripts/live-browser.js b/.qoder/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.qoder/skills/impeccable/scripts/live-browser.js +++ b/.qoder/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.rovodev/skills/impeccable/scripts/live-browser.js b/.rovodev/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.rovodev/skills/impeccable/scripts/live-browser.js +++ b/.rovodev/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.trae-cn/skills/impeccable/scripts/live-browser.js b/.trae-cn/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.trae-cn/skills/impeccable/scripts/live-browser.js +++ b/.trae-cn/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/.trae/skills/impeccable/scripts/live-browser.js b/.trae/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/.trae/skills/impeccable/scripts/live-browser.js +++ b/.trae/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/plugin/skills/impeccable/scripts/live-browser.js b/plugin/skills/impeccable/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/plugin/skills/impeccable/scripts/live-browser.js +++ b/plugin/skills/impeccable/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = []; diff --git a/skill/scripts/live-browser.js b/skill/scripts/live-browser.js index ea68406a9..d888ce5e9 100644 --- a/skill/scripts/live-browser.js +++ b/skill/scripts/live-browser.js @@ -2788,13 +2788,14 @@ inlineEditRows = rows; inlineEditDrafts = new Map(); for (const row of rows) { + row.inlineWhiteSpace = row.el.style.whiteSpace; + row.el.style.whiteSpace = getComputedStyle(row.el).whiteSpace; row.el.setAttribute('contenteditable', 'true'); row.el.dataset.impeccableEditable = 'true'; row.el.dataset.impeccableOriginalText = row.text; row.el.style.userSelect = 'text'; row.el.style.cursor = 'text'; row.el.style.outline = 'none'; - row.el.style.webkitUserModify = 'read-write-plaintext-only'; row.el.addEventListener('input', onInlineInput); } } @@ -2805,10 +2806,10 @@ row.el.removeAttribute('contenteditable'); delete row.el.dataset.impeccableEditable; delete row.el.dataset.impeccableOriginalText; + row.el.style.whiteSpace = row.inlineWhiteSpace || ''; row.el.style.userSelect = ''; row.el.style.cursor = ''; row.el.style.outline = ''; - row.el.style.webkitUserModify = ''; row.el.removeEventListener('input', onInlineInput); } inlineEditRows = [];