Skip to content

Commit e645afc

Browse files
committed
Merge branch 'master' of https://github.com/lsegurado/js-framework-benchmark into lsegurado-master
2 parents f3c388b + eb27d9b commit e645afc

File tree

3 files changed

+31
-27
lines changed

3 files changed

+31
-27
lines changed

frameworks/keyed/michijs/package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frameworks/keyed/michijs/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
{
22
"name": "js-framework-benchmark-michijs",
3-
"version": "2.0.3",
3+
"version": "2.0.8",
44
"description": "michijs",
55
"main": "index.js",
66
"js-framework-benchmark": {
77
"frameworkVersionFromPackage": "@michijs/michijs",
88
"frameworkHomeURL": "https://dev.michijs.com/",
99
"useShadowRoot": false,
10-
"customURL": "/dist",
11-
"issues": [1139]
10+
"customURL": "/dist"
1211
},
1312
"scripts": {
1413
"start": "michi-server --start",
@@ -34,6 +33,6 @@
3433
"typescript": "5.6.3"
3534
},
3635
"dependencies": {
37-
"@michijs/michijs": "2.0.3"
36+
"@michijs/michijs": "2.0.8"
3837
}
3938
}

frameworks/keyed/michijs/src/index.tsx

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {
22
type ObservableType,
33
createCustomElement,
4-
useObserve,
4+
observeCommonObject,
5+
ProxiedArray,
56
} from "@michijs/michijs";
67

78
function _random(max: number) {
@@ -67,41 +68,45 @@ const adjectivesLength = adjectives.length;
6768
const coloursLength = colours.length;
6869
const nounsLength = nouns.length;
6970

70-
type Row = { label: string; id: number; selected?: string };
71+
interface Row {
72+
label: ObservableType<string>;
73+
id: number;
74+
selected: ObservableType<string | undefined>;
75+
}
7176
let nextId = 1;
72-
let selectedItem: ObservableType<Row> | null = null;
77+
let selectedItem: Row | null = null;
7378
function buildData(count = 1000) {
7479
const data = new Array<Row>(count);
7580
for (let i = 0; i < count; i++)
7681
data[i] = {
82+
selected: observeCommonObject<string | undefined>(undefined),
7783
id: nextId++,
78-
label: `${adjectives[_random(adjectivesLength)]} ${
79-
colours[_random(coloursLength)]
80-
} ${nouns[_random(nounsLength)]}`,
84+
label: observeCommonObject(
85+
`${adjectives[_random(adjectivesLength)]} ${colours[_random(coloursLength)]} ${nouns[_random(nounsLength)]}`,
86+
),
8187
};
8288
return data;
8389
}
84-
const rows = useObserve<Row[]>([]);
90+
const rows = new ProxiedArray<Row>([], undefined, true);
8591
const run = () => rows.$replace(...buildData());
8692
const runLots = () => rows.$replace(...buildData(10000));
8793
const add = () => rows.push(...buildData());
8894
const update = () => {
89-
for (let i = 0; i < rows.length; i += 10) {
90-
// Will be solved on https://github.com/microsoft/TypeScript/issues/43826
91-
// @ts-ignore
92-
rows[i].label += " !!!";
95+
const array = rows.$value;
96+
const length = array.length;
97+
for (let i = 0; i < length; i += 10) {
98+
const label = array[i].label;
99+
label(`${label()} !!!`);
93100
}
94101
};
95102
const clear = () => rows.$clear();
96-
const select = (row: ObservableType<Row>) => {
97-
// Will be solved on https://github.com/microsoft/TypeScript/issues/43826
98-
// @ts-ignore
99-
row.selected = "danger";
103+
const select = (row: Row) => {
104+
row.selected("danger");
100105
if (selectedItem) selectedItem.selected(undefined);
101106
selectedItem = row;
102107
};
103-
const deleteItem = (id: ObservableType<number>) =>
104-
rows.$remove(rows.findIndex((x) => x.id === id));
108+
const deleteItem = (id: number) =>
109+
rows.$remove(rows.$value.findIndex((x) => x.id === id));
105110
const swapRows = () => rows.$swap(1, 998);
106111

107112
export const Table = createCustomElement("michi-table", {

0 commit comments

Comments
 (0)