From 28b238cea409221e98f2b5643a995327b111b092 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 28 Oct 2026 22:00:28 +0400 Subject: [PATCH] =?UTF-8?q?docs(openspec):=20aurora-1839=20=E2=80=94=20?= =?UTF-8?q?=D0=B2=D1=8B=D1=80=D0=BE=D0=B2=D0=BD=D1=8F=D1=82=D1=8C=20D1=20?= =?UTF-8?q?=C2=AB=D0=A3=D1=82=D0=BE=D1=87=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=C2=BB=20=D1=81=20=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D0=BC=20table-?= =?UTF-8?q?core=20(I-3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- openspec/changes/aurora-1839-cell-memo/design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openspec/changes/aurora-1839-cell-memo/design.md b/openspec/changes/aurora-1839-cell-memo/design.md index 6e07514..ef4e43d 100644 --- a/openspec/changes/aurora-1839-cell-memo/design.md +++ b/openspec/changes/aurora-1839-cell-memo/design.md @@ -117,7 +117,7 @@ const tableColumns = useMemo(() => [...columns], [columns, cellMemoResetKey]); Почему это работает: TanStack мемоизирует колонки по идентичности массива `options.columns` (Контекст, п. 3). Новый массив с теми же определениями даёт новые `Column`, а за ними и новые `cell`. Это фиксирует тест-допущение. -Уточнение (O-1, решение 18): закрепление или открепление колонки само пересоздаёт только ячейку этой колонки, а `left` у остальных закреплённых и сдвиг центральных мемоизированная ячейка не пересчитает. Поэтому ключ сброса по раскладке закреплённых нужен и на table-core 8.20.5. Поведение зафиксировано тестами `table-core:` в `cellMemoReset.test.js`, при обновлении table-core они покажут смену. +Уточнение (O-1, решение 18): закрепление, открепление и скрытие закреплённой колонки пересоздают ячейки закреплённой стороны (копии `{...cell, position}` в `getLeftVisibleCells`/`getRightVisibleCells`), центральные ячейки остаются теми же, а смена ширины не пересоздаёт ничего. Поэтому ключ сброса по раскладке закреплённых нужен и на table-core 8.20.5: он ловит смену ширины закреплённой колонки (`left` соседей справа) и служит страховкой от поведения MRT. Поведение зафиксировано тестами `table-core:` в `cellMemoReset.test.js`, при обновлении table-core они покажут смену. Отвергнутые альтернативы: - **Добавить ключ в зависимости `getTableColumns`.** Тогда `structuredClone` конфигурации листа (`tableColumns.jsx:126`) и `processColumns` выполнялись бы на каждое изменение поиска и на каждый символ в фильтре колонки. Работа лишняя: определения от этих состояний не зависят.