vue-jsx 0.2.8 → 3.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -92
  3. package/dist/api.d.ts +7 -0
  4. package/dist/api.js +2 -0
  5. package/dist/astro.d.ts +11 -0
  6. package/dist/astro.js +11 -0
  7. package/dist/bun.d.ts +6 -0
  8. package/dist/bun.js +5 -0
  9. package/dist/core-D6A0aY-g.js +11 -0
  10. package/dist/esbuild.d.ts +7 -0
  11. package/dist/esbuild.js +5 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +2 -0
  14. package/dist/nuxt.d.ts +8 -0
  15. package/dist/nuxt.js +17 -0
  16. package/dist/options-DHzozgGn.d.ts +25 -0
  17. package/dist/raw.d.ts +7 -0
  18. package/dist/raw.js +64 -0
  19. package/dist/rolldown.d.ts +7 -0
  20. package/dist/rolldown.js +6 -0
  21. package/dist/rollup.d.ts +7 -0
  22. package/dist/rollup.js +5 -0
  23. package/dist/rsbuild.d.ts +9 -0
  24. package/dist/rsbuild.js +12 -0
  25. package/dist/rspack.d.ts +6 -0
  26. package/dist/rspack.js +5 -0
  27. package/dist/unplugin.d.ts +9 -0
  28. package/dist/unplugin.js +9 -0
  29. package/dist/vapor.d.ts +3 -0
  30. package/dist/vapor.js +3 -0
  31. package/dist/vite.d.ts +7 -0
  32. package/dist/vite.js +5 -0
  33. package/dist/volar.d.ts +7 -0
  34. package/dist/volar.js +770 -0
  35. package/dist/webpack.d.ts +7 -0
  36. package/dist/webpack.js +5 -0
  37. package/jsx-runtime/index.d.ts +10 -0
  38. package/jsx-runtime/index.js +11 -0
  39. package/package.json +107 -25
  40. package/.browserslistrc +0 -3
  41. package/.eslintrc.js +0 -17
  42. package/babel.config.js +0 -5
  43. package/dist/demo.html +0 -8
  44. package/dist/vue-jsx.common.js +0 -1645
  45. package/dist/vue-jsx.common.js.map +0 -1
  46. package/dist/vue-jsx.umd.js +0 -1655
  47. package/dist/vue-jsx.umd.js.map +0 -1
  48. package/dist/vue-jsx.umd.min.js +0 -2
  49. package/dist/vue-jsx.umd.min.js.map +0 -1
  50. package/postcss.config.js +0 -5
  51. package/public/favicon.ico +0 -0
  52. package/public/index.html +0 -17
  53. package/src/App.vue +0 -122
  54. package/src/assets/logo.png +0 -0
  55. package/src/components/HelloWorld.vue +0 -58
  56. package/src/index.js +0 -210
  57. package/src/main.js +0 -8
  58. package/vue.config.js +0 -11
@@ -1,58 +0,0 @@
1
- <template>
2
- <div class="hello">
3
- <h1>{{ msg }}</h1>
4
- <p>
5
- For a guide and recipes on how to configure / customize this project,<br>
6
- check out the
7
- <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
8
- </p>
9
- <h3>Installed CLI Plugins</h3>
10
- <ul>
11
- <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
12
- <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
13
- </ul>
14
- <h3>Essential Links</h3>
15
- <ul>
16
- <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
17
- <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
18
- <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
19
- <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
20
- <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
21
- </ul>
22
- <h3>Ecosystem</h3>
23
- <ul>
24
- <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
25
- <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
26
- <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
27
- <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
28
- <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
29
- </ul>
30
- </div>
31
- </template>
32
-
33
- <script>
34
- export default {
35
- name: 'HelloWorld',
36
- props: {
37
- msg: String
38
- }
39
- }
40
- </script>
41
-
42
- <!-- Add "scoped" attribute to limit CSS to this component only -->
43
- <style scoped>
44
- h3 {
45
- margin: 40px 0 0;
46
- }
47
- ul {
48
- list-style-type: none;
49
- padding: 0;
50
- }
51
- li {
52
- display: inline-block;
53
- margin: 0 10px;
54
- }
55
- a {
56
- color: #42b983;
57
- }
58
- </style>
package/src/index.js DELETED
@@ -1,210 +0,0 @@
1
- var jsx = {
2
- h () {},
3
-
4
- getProp (context, prop) {
5
- var props = prop.split('.'), i
6
- while ( (i = props.shift()) ){
7
- context = context[i]
8
- }
9
- return context
10
- },
11
- setProp (context, prop, value) {
12
- var props = prop.split('.'), i
13
- while ( (i = props.shift()) ){
14
- if (!props.length){
15
- break
16
- }
17
- context = context[i]
18
- }
19
- context[i] = value
20
- },
21
- use (h) {
22
- jsx.h = h
23
- },
24
- create (...params) {
25
- var node = {
26
- tag: 'div',
27
- props: {
28
- 'class': {},
29
- style: {},
30
- attrs: {},
31
- props: {},
32
- domProps: {},
33
- on: {},
34
- nativeOn: {},
35
- },
36
- children: [],
37
- }
38
- var plen = params.length
39
- if (!plen){
40
- return node
41
- }
42
-
43
- if (plen > 1){
44
- var second = params[1]
45
- var i = 1
46
- var secondIsObjeect = Object.prototype.toString.call(second).slice(8, -1) === 'Object'
47
-
48
- // 如果第二个参数是 props
49
- if (secondIsObjeect && !('componentInstance' in second) ){
50
- // 如果有vif===false,直接返回null
51
- if (second['vif'] === false){
52
- return null
53
- }
54
-
55
- var table = {
56
- c: 'class',
57
- s: 'style',
58
- a: 'attrs',
59
- p: 'props',
60
- dp: 'domProps',
61
- o: 'on',
62
- no: 'nativeOn',
63
- }
64
-
65
- for (var k in second){
66
- // 如果值是null,则过滤
67
- if (second[k] === null){
68
- continue
69
- }
70
-
71
- if (k.includes('_')){
72
- var [a, b] = k.split('_')
73
- var aa = table[a] || a
74
-
75
- node['props'][aa][b] = second[k]
76
- }
77
- else {
78
- node['props'][k] = second[k]
79
- }
80
- }
81
-
82
- i = 2
83
- }
84
-
85
- node.children.push(...params.slice(i))
86
- }
87
-
88
- var first = params[0]
89
- if (first.includes('.')){
90
- var [t, s] = first.split('.')
91
- node['tag'] = t
92
-
93
- s.split('+').forEach(i => {
94
- node['props']['class'][i.trim()] = true
95
- })
96
- }
97
- else {
98
- node['tag'] = first
99
- }
100
-
101
- //- 处理 classes
102
- if ('classes' in node.props){
103
- node.props.classes.split(' ').forEach(cls => {
104
- node.props['class'][cls] = true
105
- })
106
-
107
- delete node.props['classes']
108
- }
109
-
110
- //- 处理vmodel
111
- if ('vmodel' in node.props){
112
- var [context, model, modelProp, modelEvent] = node.props['vmodel']
113
- var tag = node.tag
114
- var props = node.props
115
-
116
- var inputType = props['attrs']['type'] || props['domProps']['type'] || 'text'
117
- var isInput = tag === 'input'
118
- var isText = (isInput && (inputType === 'text')) || (tag === 'textarea')
119
- var isRadio = isInput && (inputType === 'radio')
120
- var isCheckbox = isInput && (inputType === 'checkbox')
121
- var isSelect = tag === 'select'
122
-
123
- if (isText){
124
- props['domProps']['value'] = jsx.getProp(context, model)
125
- props['on']['input'] = e => {
126
- jsx.setProp(context, model, e.target.value)
127
- }
128
- }
129
- else if (isRadio){
130
- props['domProps']['checked'] = props['attrs']['value'] === jsx.getProp(context, model) ? true : false
131
- props['on']['change'] = e => {
132
- jsx.setProp(context, model, e.target.value)
133
- }
134
- }
135
- else if (isCheckbox){
136
- //- 如果model是array
137
- if (Array.isArray(jsx.getProp(context, model))){
138
- var value = props['attrs']['value']
139
- var isChecked = props['domProps']['checked'] = jsx.getProp(context, model).includes(value)
140
-
141
- props['on']['change'] = () => {
142
- if (isChecked){
143
- jsx.getProp(context, model).splice(jsx.getProp(context, model).indexOf(value), 1)
144
- }
145
- else {
146
- jsx.getProp(context, model).push(value)
147
- }
148
- }
149
- }
150
- else {
151
- props['domProps']['checked'] = jsx.getProp(context, model) === true ? true : false
152
- props['on']['change'] = () => {
153
- jsx.setProp(context, model, !props['domProps']['checked'])
154
- }
155
- }
156
- }
157
- else if (isSelect){
158
- //- 如果model是array
159
- if (Array.isArray(jsx.getProp(context, model))){
160
- //- 好像有点麻烦,需要反推option children
161
- }
162
- else {
163
- props['domProps']['value'] = jsx.getProp(context, model)
164
- props['on']['change'] = e => {
165
- jsx.setProp(context, model, e.target.value)
166
- }
167
- }
168
- }
169
- //- 假设其他都是自定义组件
170
- else {
171
- modelProp = modelProp || 'value'
172
- modelEvent = modelEvent || 'input'
173
-
174
- props['props'][modelProp] = jsx.getProp(context, model)
175
- props['on'][modelEvent] = val => {
176
- jsx.setProp(context, model, val)
177
- }
178
- }
179
-
180
- delete node.props['vmodel']
181
- }
182
-
183
- // 清楚空的属性
184
- ['class', 'style', 'attrs', 'props', 'domProps', 'on', 'nativeOn'].forEach(key => {
185
- if (!Object.keys(node.props[key]).length){
186
- delete node.props[key]
187
- }
188
- })
189
-
190
- return jsx.h(node.tag, node.props, node.children)
191
- },
192
- bind (tag) {
193
- return (...params) => {
194
- if ( (typeof params[0] === 'string') && (params[0][0] === '.') ){
195
- params[0] = tag + params[0]
196
- }
197
- else {
198
- params.unshift(tag)
199
- }
200
-
201
- return jsx.create(...params)
202
- }
203
- }
204
- }
205
-
206
- 'a,b,button,dd,div,dl,dt,em,form,i,iframe,img,input,textarea,label,li,ol,optgroup,option,p,select,span,table,th,thead,tbody,tr,td,col,colgroup,ul,h1,h2,h3,h4,h5,h6'.split(',').forEach(tag => {
207
- jsx[tag] = jsx.bind(tag)
208
- })
209
-
210
- export default jsx
package/src/main.js DELETED
@@ -1,8 +0,0 @@
1
- import Vue from 'vue'
2
- import App from './App.vue'
3
-
4
- Vue.config.productionTip = false
5
-
6
- new Vue({
7
- render: h => h(App),
8
- }).$mount('#app')
package/vue.config.js DELETED
@@ -1,11 +0,0 @@
1
- module.exports = {
2
- baseUrl: 'vue-jsx/',
3
- pages: {
4
- index: {
5
- entry: './src/main.js',
6
- template: './index.html'
7
- },
8
- },
9
- css: {
10
- }
11
- }