1
+ import { withKey } from '../../../../../million/packages/block/block' ;
1
2
import {
2
3
Block ,
3
4
fragment ,
4
5
stringToDOM ,
6
+ linkEvent ,
5
7
} from '/Users/aidenybai/Projects/aidenybai/million/packages/block/index' ;
6
8
7
9
const adjectives = [
@@ -69,7 +71,6 @@ let main;
69
71
70
72
const clear = ( ) => {
71
73
list = [ ] ;
72
- main . children = [ ] ;
73
74
main . remove ( ) ;
74
75
} ;
75
76
@@ -148,7 +149,7 @@ const Row = (() => {
148
149
path : [ 0 ] ,
149
150
edits : [
150
151
{
151
- type : 2 ,
152
+ type : 'child' ,
152
153
hole : 'id' ,
153
154
index : 0 ,
154
155
} ,
@@ -159,13 +160,13 @@ const Row = (() => {
159
160
path : [ 1 , 0 ] ,
160
161
edits : [
161
162
{
162
- type : 3 ,
163
+ type : 'event' ,
163
164
listener : 'select' ,
164
165
name : 'onClick' ,
165
166
hole : 'select' ,
166
167
} ,
167
168
{
168
- type : 2 ,
169
+ type : 'child' ,
169
170
hole : 'label' ,
170
171
index : 0 ,
171
172
} ,
@@ -176,7 +177,7 @@ const Row = (() => {
176
177
path : [ 2 , 0 ] ,
177
178
edits : [
178
179
{
179
- type : 3 ,
180
+ type : 'event' ,
180
181
listener : 'remove' ,
181
182
name : 'onClick' ,
182
183
hole : 'remove' ,
@@ -188,7 +189,7 @@ const Row = (() => {
188
189
path : [ ] ,
189
190
edits : [
190
191
{
191
- type : 0 ,
192
+ type : 'attribute' ,
192
193
hole : 'className' ,
193
194
name : 'class' ,
194
195
} ,
@@ -197,7 +198,10 @@ const Row = (() => {
197
198
} ,
198
199
] ;
199
200
const shouldUpdate = ( oldProps , newProps ) => {
200
- return oldProps . $key !== newProps . $key ;
201
+ return (
202
+ oldProps . label !== newProps . label ||
203
+ oldProps . className !== newProps . className
204
+ ) ;
201
205
} ;
202
206
return ( props , key ) => {
203
207
return new Block ( root , edits , props , key , shouldUpdate ) ;
@@ -208,30 +212,35 @@ function render(oldCache, newCache) {
208
212
return fragment (
209
213
list . map ( ( item ) => {
210
214
const isSelected = selected === item . id ;
211
- const cachedItem = oldCache [ item . id ] ;
212
- const $key = item . label + String ( isSelected ) ;
213
- if ( cachedItem ?. props . $key === $key ) {
214
- return ( newCache [ item . id ] = cachedItem ) ;
215
- }
215
+ const id = String ( item . id ) ;
216
+ // const cachedItem = oldCache[item.id];
217
+ // if (cachedItem) {
218
+ // if (
219
+ // cachedItem.memo[0] === item.label &&
220
+ // cachedItem.memo[1] === isSelected
221
+ // ) {
222
+ // return (newCache[item.id] = cachedItem);
223
+ // }
224
+ // }
216
225
217
226
const row = Row (
218
227
{
219
228
id : item . id ,
220
229
label : item . label ,
221
230
className : isSelected ? 'danger' : '' ,
222
- remove : ( ) => {
231
+ remove : withKey ( ( ) => {
223
232
remove ( item . id ) ;
224
233
return false ;
225
- } ,
226
- select : ( ) => {
234
+ } , id ) ,
235
+ select : withKey ( ( ) => {
227
236
select ( item . id ) ;
228
237
return false ;
229
- } ,
230
- $key,
238
+ } , id ) ,
231
239
} ,
232
- String ( item . id )
240
+ id
233
241
) ;
234
- newCache [ item . id ] = row ;
242
+ row . memo = [ item . label , isSelected ] ;
243
+ // newCache[item.id] = row;
235
244
return row ;
236
245
} )
237
246
) ;
@@ -246,7 +255,7 @@ new Block(
246
255
path : [ 0 , 0 , 1 , 0 , 0 , 0 ] ,
247
256
edits : [
248
257
{
249
- type : 3 ,
258
+ type : 'event' ,
250
259
name : 'onClick' ,
251
260
listener : create1k ,
252
261
} ,
@@ -257,7 +266,7 @@ new Block(
257
266
path : [ 0 , 0 , 1 , 0 , 1 , 0 ] ,
258
267
edits : [
259
268
{
260
- type : 3 ,
269
+ type : 'event' ,
261
270
name : 'onClick' ,
262
271
listener : create10k ,
263
272
} ,
@@ -268,7 +277,7 @@ new Block(
268
277
path : [ 0 , 0 , 1 , 0 , 2 , 0 ] ,
269
278
edits : [
270
279
{
271
- type : 3 ,
280
+ type : 'event' ,
272
281
name : 'onClick' ,
273
282
listener : append1k ,
274
283
} ,
@@ -279,7 +288,7 @@ new Block(
279
288
path : [ 0 , 0 , 1 , 0 , 3 , 0 ] ,
280
289
edits : [
281
290
{
282
- type : 3 ,
291
+ type : 'event' ,
283
292
name : 'onClick' ,
284
293
listener : updateEvery10 ,
285
294
} ,
@@ -290,7 +299,7 @@ new Block(
290
299
path : [ 0 , 0 , 1 , 0 , 4 , 0 ] ,
291
300
edits : [
292
301
{
293
- type : 3 ,
302
+ type : 'event' ,
294
303
name : 'onClick' ,
295
304
listener : ( ) => {
296
305
clear ( ) ;
@@ -305,7 +314,7 @@ new Block(
305
314
path : [ 0 , 0 , 1 , 0 , 5 , 0 ] ,
306
315
edits : [
307
316
{
308
- type : 3 ,
317
+ type : 'event' ,
309
318
name : 'onClick' ,
310
319
listener : swapRows ,
311
320
} ,
@@ -316,7 +325,7 @@ new Block(
316
325
path : [ 1 , 0 ] ,
317
326
edits : [
318
327
{
319
- type : 2 ,
328
+ type : 'child' ,
320
329
hole : 'rows' ,
321
330
index : 0 ,
322
331
} ,
0 commit comments