`) based on whether it inherits from `HTMLElement`.
14 | 4. Automatically runs `customElements.define` the first time the web component is instantiated.
15 |
16 | ## Example
17 |
18 | Here's [an example](./test/index.jsx) that uses both custom (such as ``) and autonomous (such as `
`) web components.
19 |
20 | ```jsx
21 | class AppHtml extends HTMLHtmlElement {
22 | connectedCallback() {
23 | this.append(
24 |
,
25 |
26 | )
27 | }
28 | }
29 |
30 | class AppHead extends HTMLHeadElement {
31 | connectedCallback() {
32 | this.append(
33 |
Testing ws-jsx-runtime...
34 | )
35 | }
36 | }
37 |
38 | class AppBody extends HTMLBodyElement {
39 | connectedCallback() {
40 | this.append(
)
41 | }
42 | }
43 |
44 | class HelloWorld extends HTMLElement {
45 | connectedCallback() {
46 | this.append(`Hello, ${this.getAttribute('name')}!`)
47 | }
48 | }
49 |
50 | document.documentElement.replaceWith(
)
51 | ```
52 |
53 | Once run, the DOM will look like this:
54 |
55 | ```html
56 |
57 |
58 |
Testing ws-jsx-runtime...
59 |
60 |
61 |
Hello, JSX!
62 |
63 |
64 | ```
65 |
66 | ## Todo
67 |
68 | - Add special cases for elements with names that don't conform to `HTML${tagName}Element` pattern.
69 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 | /test-results/
106 | /playwright-report/
107 | /playwright/.cache/
108 | .DS_Store
109 |
--------------------------------------------------------------------------------