@@ -3,26 +3,13 @@ import ReactDOM from "react-dom";
33import { atom , useAtom , PrimitiveAtom } from "jotai" ;
44import { useUpdateAtom } from "jotai/utils" ;
55
6- import { Data , buildNextItem , buildDataAtoms } from "./utils" ;
6+ import { Data , buildDataAtoms } from "./utils" ;
77
88const dataAtom = atom < PrimitiveAtom < Data > [ ] > ( [ ] ) ;
99const selectedAtom = atom < PrimitiveAtom < Data > | null > ( null ) ;
1010
11- const createRowsAtom = atom ( null , ( get , set , amount : number ) => {
12- const prevData = get ( dataAtom ) ;
13- const data = new Array ( amount ) ;
14- for ( let i = 0 ; i < amount ; i ++ ) {
15- const prev = prevData [ i ]
16- if ( prev ) {
17- data [ i ] = prev ;
18- set ( prev , buildNextItem ( ) ) ;
19- } else {
20- data [ i ] = atom ( buildNextItem ( ) ) ;
21- }
22- }
23- if ( prevData . length !== data . length ) {
24- set ( dataAtom , data ) ;
25- }
11+ const createRowsAtom = atom ( null , ( _ , set , amount : number ) => {
12+ set ( dataAtom , buildDataAtoms ( amount ) ) ;
2613 set ( selectedAtom , null ) ;
2714} ) ;
2815
@@ -57,9 +44,7 @@ const clearStateAtom = atom(null, (_, set) => {
5744const swapRowsAtom = atom ( null , ( get , set ) => {
5845 const data = get ( dataAtom ) ;
5946 if ( data . length > 998 ) {
60- const tmp = get ( data [ 1 ] ) ;
61- set ( data [ 1 ] , get ( data [ 998 ] ) ) ;
62- set ( data [ 998 ] , tmp ) ;
47+ set ( dataAtom , [ data [ 0 ] , data [ 998 ] , ...data . slice ( 2 , 998 ) , data [ 1 ] , data [ 999 ] ] )
6348 }
6449} ) ;
6550
0 commit comments