Skip to content

Commit f706280

Browse files
committed
Merge branch 'plaited-feat/plaited-performance-regression-fix'
2 parents 279cd87 + 3e8089d commit f706280

File tree

4 files changed

+55
-33
lines changed

4 files changed

+55
-33
lines changed

frameworks/keyed/plaited/package-lock.json

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

frameworks/keyed/plaited/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
},
66
"type": "module",
77
"dependencies": {
8-
"plaited": "7.1.1"
8+
"plaited": "7.2.0"
99
},
1010
"devDependencies": {
1111
"esbuild": "0.25.2"

frameworks/keyed/plaited/src/main.tsx

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FT, defineTemplate } from "plaited";
1+
import { type FT, defineElement, useTemplate } from "plaited";
22

33
let did = 1;
44
const adjectives = [
@@ -104,36 +104,40 @@ const shadowDom = (
104104
</table>
105105
</div>
106106
<span className="preloadicon glyphicon glyphicon-remove" aria-hidden="true"></span>
107+
<template p-target="row-template">
108+
<tr p-target="row">
109+
<td className="col-md-1" p-target="id"></td>
110+
<td className="col-md-4">
111+
<a p-target="label"></a>
112+
</td>
113+
<td className="col-md-1">
114+
<a>
115+
<span className="glyphicon glyphicon-remove" aria-hidden="true" p-target="delete"></span>
116+
</a>
117+
</td>
118+
<td className="col-md-6"></td>
119+
</tr>
120+
</template>
107121
</>
108122
);
109-
110-
const Row: FT<DataItem> = (data) => (
111-
<tr p-target={`${data.id}`}>
112-
<td className="col-md-1">{data.id}</td>
113-
<td className="col-md-4">
114-
<a p-target="label">{data.label}</a>
115-
</td>
116-
<td className="col-md-1">
117-
<a>
118-
<span className="glyphicon glyphicon-remove" aria-hidden="true" p-target="delete"></span>
119-
</a>
120-
</td>
121-
<td className="col-md-6"></td>
122-
</tr>
123-
);
124-
125-
defineTemplate({
123+
defineElement({
126124
tag: "js-benchmark",
127125
shadowDom,
128126
bProgram({ $ }) {
129127
let selected = -1;
130128
const [tbody] = $("tbody");
129+
const [template] = $<HTMLTemplateElement>("row-template");
130+
const cb = useTemplate<DataItem>(template, ($, data) => {
131+
$("row")[0].attr("p-target", data.id);
132+
$("id")[0].render(data.id);
133+
$("label")[0].render(data.label);
134+
});
131135
return {
132136
add(evt: MouseEvent & { target: HTMLButtonElement }) {
133-
tbody.insert("beforeend", ...buildData(parseInt(evt.target.value)).map(Row));
137+
tbody.insert("beforeend", ...buildData(parseInt(evt.target.value)).map(cb));
134138
},
135139
run(evt: MouseEvent & { target: HTMLButtonElement }) {
136-
tbody.render(...buildData(parseInt(evt.target.value)).map(Row));
140+
tbody.render(...buildData(parseInt(evt.target.value)).map(cb));
137141
},
138142
clear() {
139143
tbody.replaceChildren();
Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
{
2-
"compilerOptions": {
3-
"target": "ES2022",
4-
"module": "NodeNext",
2+
"compilerOptions": {
3+
// Enable latest features
4+
"lib": ["ESNext", "DOM", "dom.iterable"],
5+
"target": "ESNext",
6+
"module": "ESNext",
7+
"moduleDetection": "force",
58
"jsx": "react-jsx",
6-
"jsxImportSource": "plaited",
7-
"moduleResolution": "nodenext",
8-
"lib": ["dom", "es2022"]
9-
}
10-
}
9+
"allowJs": true,
10+
11+
// Bundler mode
12+
"moduleResolution": "bundler",
13+
"verbatimModuleSyntax": true,
14+
"noEmit": true,
15+
16+
// Best practices
17+
"strict": true,
18+
"skipLibCheck": true,
19+
"noFallthroughCasesInSwitch": true,
20+
21+
// Some stricter flags (disabled by default)
22+
"noUnusedLocals": false,
23+
"noUnusedParameters": false,
24+
"noPropertyAccessFromIndexSignature": false,
25+
26+
"jsxImportSource": "plaited"
27+
}
28+
}

0 commit comments

Comments
 (0)