generated at
✅scrapbox.Page.linesと同等のデータをshallow copyして返す関数を作る

scrapbox.Page.linesと同等のデータをshallow copyして返す関数を作る
問題背景
scrapbox.Page.linesは常にdeep copyで提供される
数行程度のページならあまり問題ないが、数千行あるとかなりCPUを食う
特に、lines:changedで毎回呼び出されると、editorがほぼ固まった状態になってしまう
目も当てられないtakker
解決策として2つの方針がある
scrapbox.Page.linesを、行が変更された時だけ呼び出す
ただし、lines:changedで毎回呼び出された場合は効果なし
コピーではなく参照を返す
これなら参照のコピーだけで済むので、CPUもメモリも使わずにすむ
ただし、React Componentの内部変数からScrapboxのカーソル位置と選択範囲を取得するようなトリッキーなことをしなくてはならない
今回はこちらの方針で実装した

実装
shallow copyしたlinesを返す
scrapbox-access-nodes@0.1.0相当の関数群ので使っているのを置き換えた

#2023-04-07 07:55:21
#2023-04-04 20:42:13