This repository was archived by the owner on Nov 6, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 168
This repository was archived by the owner on Nov 6, 2019. It is now read-only.
TSX Support for Phosphor vdom API #279
Copy link
Copy link
Open
Description
We have been able to get TSX syntax working with phosphor's virtualdom package. The needed steps are the following:
First, add the following lines to you tsconfig.json:
"jsx": "react",
"jsxFactory": "h"Second, import the phosphor virtual DOM library:
import {
h, VirtualDOM, VirtualElement, ElementAttrs
} from '@phosphor/virtualdom';Third, add this to one of your ts files to provide the types needed:
declare global {
namespace JSX {
interface IntrinsicElements {
a: ElementAttrs;
abbr: ElementAttrs;
address: ElementAttrs;
area: ElementAttrs;
article: ElementAttrs;
aside: ElementAttrs;
audio: ElementAttrs;
b: ElementAttrs;
bdi: ElementAttrs;
bdo: ElementAttrs;
blockquote: ElementAttrs;
br: ElementAttrs;
button: ElementAttrs;
canvas: ElementAttrs;
caption: ElementAttrs;
cite: ElementAttrs;
code: ElementAttrs;
col: ElementAttrs;
colgroup: ElementAttrs;
data: ElementAttrs;
datalist: ElementAttrs;
dd: ElementAttrs;
del: ElementAttrs;
dfn: ElementAttrs;
div: ElementAttrs;
dl: ElementAttrs;
dt: ElementAttrs;
em: ElementAttrs;
embed: ElementAttrs;
fieldset: ElementAttrs;
figcaption: ElementAttrs;
figure: ElementAttrs;
footer: ElementAttrs;
form: ElementAttrs;
h1: ElementAttrs;
h2: ElementAttrs;
h3: ElementAttrs;
h4: ElementAttrs;
h5: ElementAttrs;
h6: ElementAttrs;
header: ElementAttrs;
hr: ElementAttrs;
i: ElementAttrs;
iframe: ElementAttrs;
img: ElementAttrs;
input: ElementAttrs;
ins: ElementAttrs;
kbd: ElementAttrs;
label: ElementAttrs;
legend: ElementAttrs;
li: ElementAttrs;
main: ElementAttrs;
map: ElementAttrs;
mark: ElementAttrs;
meter: ElementAttrs;
nav: ElementAttrs;
noscript: ElementAttrs;
object: ElementAttrs;
ol: ElementAttrs;
optgroup: ElementAttrs;
option: ElementAttrs;
output: ElementAttrs;
p: ElementAttrs;
param: ElementAttrs;
pre: ElementAttrs;
progress: ElementAttrs;
q: ElementAttrs;
rp: ElementAttrs;
rt: ElementAttrs;
ruby: ElementAttrs;
s: ElementAttrs;
samp: ElementAttrs;
section: ElementAttrs;
select: ElementAttrs;
small: ElementAttrs;
source: ElementAttrs;
span: ElementAttrs;
strong: ElementAttrs;
sub: ElementAttrs;
summary: ElementAttrs;
sup: ElementAttrs;
table: ElementAttrs;
tbody: ElementAttrs;
td: ElementAttrs;
textarea: ElementAttrs;
tfoot: ElementAttrs;
th: ElementAttrs;
thead: ElementAttrs;
time: ElementAttrs;
title: ElementAttrs;
tr: ElementAttrs;
track: ElementAttrs;
u: ElementAttrs;
ul: ElementAttrs;
var_:ElementAttrs;
video: ElementAttrs;
wbr: ElementAttrs;
}
interface Element extends VirtualElement {}
}
}Then you can name files with the .tsx extension and use TSX syntax.
@blink1073 @sccolbert @grantnestor
Metadata
Metadata
Assignees
Labels
No labels