Skip to content

Commit a80497b

Browse files
committed
Merge branch 'voby-0.13' of https://github.com/fabiospampinato/js-framework-benchmark into fabiospampinato-voby-0.13
2 parents d84ddd3 + a914bc2 commit a80497b

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

frameworks/keyed/voby/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "js-framework-benchmark-voby",
3-
"version": "0.12.1",
3+
"version": "0.14.0",
44
"main": "dist/main.js",
55
"js-framework-benchmark": {
66
"frameworkVersionFromPackage": "voby"
77
},
88
"scripts": {
9-
"build-prod": "rm -rf dist && mkdir dist && esbuild --bundle --minify --target=es2015 ./src/main.tsx > ./dist/main.js"
9+
"build-prod": "rm -rf dist && mkdir dist && esbuild --bundle --minify --target=es2018 ./src/main.tsx > ./dist/main.js"
1010
},
1111
"author": "Fabio Spampinato",
1212
"license": "MIT",
@@ -16,9 +16,9 @@
1616
"url": "https://github.com/krausest/js-framework-benchmark.git"
1717
},
1818
"dependencies": {
19-
"voby": "0.12.1"
19+
"voby": "0.14.0"
2020
},
2121
"devDependencies": {
22-
"esbuild": "0.14.23"
22+
"esbuild": "0.14.28"
2323
}
2424
}

frameworks/keyed/voby/src/main.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,25 @@ const Model = (() => {
8686
$data.emit ();
8787
};
8888

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 ();
95+
};
96+
8997
const clear = (): void => {
98+
dispose ();
9099
$data ( [] );
91100
};
92101

93102
const remove = ( id: number ): void => {
94103
const data = $data ();
95104
const index = data.findIndex ( datum => datum.id === id );
96105
if ( index === -1 ) return;
106+
const datum = data[index];
107+
datum.label.dispose ();
97108
data.splice ( index, 1 );
98109
$data.emit ();
99110
};
@@ -102,7 +113,9 @@ const Model = (() => {
102113
$selected ( id );
103114
};
104115

105-
return { $data, $selected, run, runLots, runWith, add, update, swapRows, clear, remove, select };
116+
const isSelected = useSelector ( $selected );
117+
118+
return { $data, $selected, run, runLots, runWith, add, update, swapRows, dispose, clear, remove, select, isSelected };
106119

107120
})();
108121

@@ -114,7 +127,7 @@ const Button = ({ id, text, onClick }: { id: string | number, text: string, onCl
114127
</div>
115128
);
116129

117-
const RowDynamic = ({ id, label, className, onSelect, onRemove }: { id: FunctionMaybe<string | number>, label: FunctionMaybe<string>, className: FunctionMaybe<string>, onSelect: ObservableMaybe<(( event: MouseEvent ) => any)>, onRemove: ObservableMaybe<(( event: MouseEvent ) => any)> }): JSX.Element => (
130+
const Row = template (({ id, label, className, onSelect, onRemove }: { id: FunctionMaybe<string | number>, label: FunctionMaybe<string>, className: FunctionMaybe<string>, onSelect: ObservableMaybe<(( event: MouseEvent ) => any)>, onRemove: ObservableMaybe<(( event: MouseEvent ) => any)> }): JSX.Element => (
118131
<tr className={className}>
119132
<td class="col-md-1">{id}</td>
120133
<td class="col-md-4">
@@ -127,14 +140,11 @@ const RowDynamic = ({ id, label, className, onSelect, onRemove }: { id: Function
127140
</td>
128141
<td class="col-md-6"></td>
129142
</tr>
130-
);
131-
132-
const RowTemplate = template ( RowDynamic, { recycle: false } );
143+
));
133144

134145
const App = (): JSX.Element => {
135146

136-
const {$data, $selected, run, runLots, add, update, clear, swapRows, select, remove} = Model;
137-
const isSelected = useSelector ( $selected );
147+
const {$data, run, runLots, add, update, swapRows, clear, remove, select, isSelected} = Model;
138148

139149
return (
140150
<div class="container">
@@ -164,8 +174,7 @@ const App = (): JSX.Element => {
164174
const onSelect = select.bind ( undefined, id );
165175
const onRemove = remove.bind ( undefined, id );
166176
const props = {id, label, className, onSelect, onRemove};
167-
return RowTemplate ( props );
168-
// return RowDynamic ( props );
177+
return Row ( props );
169178
}}
170179
</For>
171180
</tbody>

0 commit comments

Comments
 (0)