Skip to content

Commit 865b295

Browse files
committed
Merge branch 'voby-0.16' of https://github.com/fabiospampinato/js-framework-benchmark into fabiospampinato-voby-0.16
2 parents a519cc5 + ee27dd5 commit 865b295

File tree

2 files changed

+16
-32
lines changed

2 files changed

+16
-32
lines changed

frameworks/keyed/voby/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "js-framework-benchmark-voby",
3-
"version": "0.14.0",
3+
"version": "0.16.0",
44
"main": "dist/main.js",
55
"js-framework-benchmark": {
66
"frameworkVersionFromPackage": "voby"
@@ -16,7 +16,7 @@
1616
"url": "https://github.com/krausest/js-framework-benchmark.git"
1717
},
1818
"dependencies": {
19-
"voby": "0.14.0"
19+
"voby": "0.16.0"
2020
},
2121
"devDependencies": {
2222
"esbuild": "0.14.28"

frameworks/keyed/voby/src/main.tsx

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
/* IMPORT */
33

4-
import {FunctionMaybe, Observable, ObservableMaybe} from 'voby';
5-
import {$, createElement, render, template, useSelector, For, Fragment} from 'voby';
4+
import {FunctionMaybe, Observable, ObservableMaybe} from 'voby/src';
5+
import {$, createElement, render, template, useSelector, For, Fragment} from 'voby/src';
66

77
window.React = {createElement, Fragment};
88

@@ -40,7 +40,7 @@ const buildData = (() => {
4040

4141
/* MODEL */
4242

43-
const Model = (() => {
43+
const ModelClean = (() => {
4444

4545
/* STATE */
4646

@@ -58,55 +58,39 @@ const Model = (() => {
5858
};
5959

6060
const runWith = ( length: number ): void => {
61-
clear ();
6261
$data ( buildData ( length ) );
6362
};
6463

6564
const add = (): void => {
66-
const data = $data ();
67-
data.push.apply ( data, buildData ( 1000 ) );
68-
$data.emit ();
65+
$data.update ( data => [...data, ...buildData ( 1000 )] );
6966
};
7067

7168
const update = (): void => {
7269
const data = $data ();
7370
for ( let i = 0, l = data.length; i < l; i += 10 ) {
74-
const {label} = data[i];
75-
label.update ( label => label + ' !!!' );
71+
data[i].label.update ( label => label + ' !!!' );
7672
}
7773
};
7874

7975
const swapRows = (): void => {
80-
const data = $data ();
76+
const data = $data ().slice ();
8177
if ( data.length <= 998 ) return;
8278
const datum1 = data[1];
8379
const datum998 = data[998];
8480
data[1] = datum998;
8581
data[998] = datum1;
86-
$data.emit ();
87-
};
88-
89-
const dispose = (): void => {
90-
const data = $data ();
91-
for ( let i = 0, l = data.length; i < l; i++ ) {
92-
data[i].label.dispose ();
93-
}
94-
isSelected.dispose ();
82+
$data ( data );
9583
};
9684

9785
const clear = (): void => {
98-
dispose ();
9986
$data ( [] );
10087
};
10188

102-
const remove = ( id: number ): void => {
103-
const data = $data ();
104-
const index = data.findIndex ( datum => datum.id === id );
105-
if ( index === -1 ) return;
106-
const datum = data[index];
107-
datum.label.dispose ();
108-
data.splice ( index, 1 );
109-
$data.emit ();
89+
const remove = ( id: number ): void => {
90+
$data.update ( data => {
91+
const idx = data.findIndex ( datum => datum.id === id );
92+
return [...data.slice ( 0, idx ), ...data.slice ( idx + 1 )];
93+
});
11094
};
11195

11296
const select = ( id: number ): void => {
@@ -115,7 +99,7 @@ const Model = (() => {
11599

116100
const isSelected = useSelector ( $selected );
117101

118-
return { $data, $selected, run, runLots, runWith, add, update, swapRows, dispose, clear, remove, select, isSelected };
102+
return { $data, $selected, run, runLots, runWith, add, update, swapRows, clear, remove, select, isSelected };
119103

120104
})();
121105

@@ -144,7 +128,7 @@ const Row = template (({ id, label, className, onSelect, onRemove }: { id: Funct
144128

145129
const App = (): JSX.Element => {
146130

147-
const {$data, run, runLots, add, update, swapRows, clear, remove, select, isSelected} = Model;
131+
const {$data, run, runLots, add, update, swapRows, clear, remove, select, isSelected} = ModelClean;
148132

149133
return (
150134
<div class="container">

0 commit comments

Comments
 (0)