vue 2.6.13 → 2.7.0-alpha.2
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.
- package/README.md +17 -295
- package/compiler-sfc/index.d.ts +1 -0
- package/compiler-sfc/index.js +1 -0
- package/compiler-sfc/index.mjs +1 -0
- package/compiler-sfc/package.json +5 -0
- package/dist/vue.common.dev.js +11481 -11946
- package/dist/vue.common.prod.js +8 -3
- package/dist/vue.esm.browser.js +11321 -12011
- package/dist/vue.esm.browser.min.js +8 -3
- package/dist/vue.esm.js +11476 -11984
- package/dist/vue.js +11484 -11949
- package/dist/vue.min.js +8 -3
- package/dist/vue.runtime.common.dev.js +8427 -8421
- package/dist/vue.runtime.common.prod.js +8 -3
- package/dist/vue.runtime.esm.js +8436 -8454
- package/dist/vue.runtime.js +8430 -8424
- package/dist/vue.runtime.min.js +8 -3
- package/package.json +88 -111
- package/packages/compiler-sfc/dist/compiler-sfc.js +7 -0
- package/packages/compiler-sfc/node_modules/.bin/parser +17 -0
- package/packages/compiler-sfc/node_modules/.bin/sass +17 -0
- package/packages/compiler-sfc/package.json +30 -0
- package/src/compiler/{codeframe.js → codeframe.ts} +9 -7
- package/src/compiler/codegen/{events.js → events.ts} +21 -41
- package/src/compiler/codegen/{index.js → index.ts} +146 -136
- package/src/compiler/{create-compiler.js → create-compiler.ts} +26 -18
- package/src/compiler/directives/bind.ts +9 -0
- package/src/compiler/directives/{index.js → index.ts} +0 -2
- package/src/compiler/directives/{model.js → model.ts} +15 -18
- package/src/compiler/directives/{on.js → on.ts} +3 -4
- package/src/compiler/{error-detector.js → error-detector.ts} +61 -31
- package/src/compiler/{helpers.js → helpers.ts} +73 -61
- package/src/compiler/{index.js → index.ts} +2 -3
- package/src/compiler/{optimizer.js → optimizer.ts} +30 -23
- package/src/compiler/parser/{entity-decoder.js → entity-decoder.ts} +1 -3
- package/src/compiler/parser/{filter-parser.js → filter-parser.ts} +43 -24
- package/src/compiler/parser/{html-parser.js → html-parser.ts} +50 -29
- package/src/compiler/parser/{index.js → index.ts} +190 -172
- package/src/compiler/parser/{text-parser.js → text-parser.ts} +8 -9
- package/src/compiler/{to-function.js → to-function.ts} +27 -22
- package/src/core/components/{index.js → index.ts} +0 -0
- package/src/core/components/{keep-alive.js → keep-alive.ts} +42 -30
- package/src/core/{config.js → config.ts} +28 -30
- package/src/core/global-api/{assets.js → assets.ts} +8 -7
- package/src/core/global-api/{extend.js → extend.ts} +10 -13
- package/src/core/global-api/{index.js → index.ts} +4 -5
- package/src/core/global-api/{mixin.js → mixin.ts} +2 -3
- package/src/core/global-api/use.ts +23 -0
- package/src/core/{index.js → index.ts} +1 -1
- package/src/core/instance/{events.js → events.ts} +41 -24
- package/src/core/instance/{index.js → index.ts} +9 -5
- package/src/core/instance/{init.js → init.ts} +26 -15
- package/src/core/instance/inject.ts +72 -0
- package/src/core/instance/{lifecycle.js → lifecycle.ts} +86 -44
- package/src/core/instance/{proxy.js → proxy.ts} +29 -24
- package/src/core/instance/render-helpers/{bind-dynamic-keys.js → bind-dynamic-keys.ts} +6 -5
- package/src/core/instance/render-helpers/{bind-object-listeners.js → bind-object-listeners.ts} +4 -8
- package/src/core/instance/render-helpers/{bind-object-props.js → bind-object-props.ts} +12 -17
- package/src/core/instance/render-helpers/{check-keycodes.js → check-keycodes.ts} +5 -7
- package/src/core/instance/render-helpers/{index.js → index.ts} +1 -3
- package/src/core/instance/render-helpers/{render-list.js → render-list.ts} +12 -13
- package/src/core/instance/render-helpers/{render-slot.js → render-slot.ts} +10 -11
- package/src/core/instance/render-helpers/{render-static.js → render-static.ts} +7 -10
- package/src/core/instance/render-helpers/{resolve-filter.js → resolve-filter.ts} +1 -3
- package/src/core/instance/render-helpers/{resolve-scoped-slots.js → resolve-scoped-slots.ts} +11 -8
- package/src/core/instance/render-helpers/{resolve-slots.js → resolve-slots.ts} +12 -11
- package/src/core/instance/{render.js → render.ts} +66 -29
- package/src/core/instance/{state.js → state.ts} +100 -83
- package/src/core/observer/{array.js → array.ts} +11 -2
- package/src/core/observer/{dep.js → dep.ts} +37 -15
- package/src/core/observer/{index.js → index.ts} +137 -71
- package/src/core/observer/{scheduler.js → scheduler.ts} +42 -43
- package/src/core/observer/{traverse.js → traverse.ts} +10 -7
- package/src/core/observer/{watcher.js → watcher.ts} +88 -60
- package/src/core/util/{debug.js → debug.ts} +38 -34
- package/src/core/util/{env.js → env.ts} +27 -30
- package/src/core/util/{error.js → error.ts} +12 -14
- package/src/core/util/{index.js → index.ts} +0 -2
- package/src/core/util/{lang.js → lang.ts} +6 -7
- package/src/core/util/{next-tick.js → next-tick.ts} +16 -10
- package/src/core/util/{options.js → options.ts} +119 -114
- package/src/core/util/{perf.js → perf.ts} +5 -1
- package/src/core/util/{props.js → props.ts} +54 -50
- package/src/core/vdom/{create-component.js → create-component.ts} +51 -50
- package/src/core/vdom/{create-element.js → create-element.ts} +49 -43
- package/src/core/vdom/{create-functional-component.js → create-functional-component.ts} +52 -27
- package/src/core/vdom/helpers/{extract-props.js → extract-props.ts} +18 -18
- package/src/core/vdom/helpers/{get-first-component-child.js → get-first-component-child.ts} +6 -5
- package/src/core/vdom/helpers/{index.js → index.ts} +0 -2
- package/src/core/vdom/helpers/is-async-placeholder.ts +6 -0
- package/src/core/vdom/helpers/{merge-hook.js → merge-hook.ts} +7 -5
- package/src/core/vdom/helpers/{normalize-children.js → normalize-children.ts} +26 -16
- package/src/core/vdom/helpers/{normalize-scoped-slots.js → normalize-scoped-slots.ts} +23 -17
- package/src/core/vdom/helpers/{resolve-async-component.js → resolve-async-component.ts} +29 -37
- package/src/core/vdom/helpers/update-listeners.ts +101 -0
- package/src/core/vdom/modules/{directives.js → directives.ts} +20 -14
- package/src/core/vdom/modules/index.ts +4 -0
- package/src/core/vdom/modules/template-ref.ts +96 -0
- package/src/core/vdom/{patch.js → patch.ts} +239 -138
- package/src/core/vdom/{vnode.js → vnode.ts} +36 -31
- package/src/global.d.ts +15 -0
- package/src/platforms/web/compiler/directives/html.ts +8 -0
- package/src/platforms/web/compiler/directives/{index.js → index.ts} +0 -0
- package/src/platforms/web/compiler/directives/{model.js → model.ts} +47 -41
- package/src/platforms/web/compiler/directives/{text.js → text.ts} +2 -3
- package/src/platforms/web/compiler/{index.js → index.ts} +0 -2
- package/src/platforms/web/compiler/modules/{class.js → class.ts} +10 -15
- package/src/platforms/web/compiler/modules/{index.js → index.ts} +1 -5
- package/src/platforms/web/compiler/modules/{model.js → model.ts} +6 -11
- package/src/platforms/web/compiler/modules/{style.js → style.ts} +9 -14
- package/src/platforms/web/compiler/{options.js → options.ts} +1 -2
- package/src/platforms/web/compiler/{util.js → util.ts} +5 -7
- package/src/platforms/web/entry-compiler-sfc.ts +1 -0
- package/src/platforms/web/{entry-compiler.js → entry-compiler.ts} +1 -3
- package/src/platforms/web/{entry-runtime.js → entry-runtime-esm.ts} +2 -2
- package/src/platforms/web/entry-runtime-with-compiler-esm.ts +5 -0
- package/src/platforms/web/entry-runtime-with-compiler.ts +10 -0
- package/src/platforms/web/entry-runtime.ts +7 -0
- package/src/platforms/web/runtime/{class-util.js → class-util.ts} +2 -4
- package/src/platforms/web/runtime/components/{index.js → index.ts} +0 -0
- package/src/platforms/web/runtime/components/{transition-group.js → transition-group.ts} +59 -46
- package/src/platforms/web/runtime/components/{transition.js → transition.ts} +43 -36
- package/src/platforms/web/runtime/directives/{index.js → index.ts} +0 -0
- package/src/platforms/web/runtime/directives/{model.js → model.ts} +22 -21
- package/src/platforms/web/runtime/directives/{show.js → show.ts} +11 -10
- package/src/platforms/web/runtime/{index.js → index.ts} +9 -10
- package/src/platforms/web/runtime/modules/{attrs.js → attrs.ts} +12 -16
- package/src/platforms/web/runtime/modules/{class.js → class.ts} +7 -18
- package/src/platforms/web/runtime/modules/{dom-props.js → dom-props.ts} +24 -17
- package/src/platforms/web/runtime/modules/{events.js → events.ts} +22 -15
- package/src/platforms/web/runtime/modules/{index.js → index.ts} +1 -8
- package/src/platforms/web/runtime/modules/{style.js → style.ts} +24 -13
- package/src/platforms/web/runtime/modules/{transition.js → transition.ts} +61 -63
- package/src/platforms/web/runtime/node-ops.ts +66 -0
- package/src/platforms/web/runtime/{patch.js → patch.ts} +0 -2
- package/src/platforms/web/runtime/{transition-util.js → transition-util.ts} +63 -38
- package/src/platforms/web/{entry-runtime-with-compiler.js → runtime-with-compiler.ts} +28 -19
- package/src/platforms/web/util/{attrs.js → attrs.ts} +18 -14
- package/src/platforms/web/util/{class.js → class.ts} +23 -21
- package/src/platforms/web/util/{compat.js → compat.ts} +4 -4
- package/src/platforms/web/util/{element.js → element.ts} +21 -22
- package/src/platforms/web/util/{index.js → index.ts} +2 -6
- package/src/platforms/web/util/{style.js → style.ts} +12 -12
- package/src/sfc/{parser.js → parser.ts} +18 -15
- package/src/shared/{constants.js → constants.ts} +2 -6
- package/src/shared/{util.js → util.ts} +78 -55
- package/src/types/compiler.ts +224 -0
- package/src/types/component.ts +209 -0
- package/src/types/global-api.ts +37 -0
- package/src/types/modules.d.ts +15 -0
- package/src/types/options.ts +120 -0
- package/src/types/ssr.ts +27 -0
- package/src/types/utils.ts +3 -0
- package/src/types/vnode.ts +127 -0
- package/src/v3/apiInject.ts +66 -0
- package/src/v3/apiLifecycle.ts +53 -0
- package/src/v3/apiSetup.ts +161 -0
- package/src/v3/apiWatch.ts +355 -0
- package/src/v3/currentInstance.ts +23 -0
- package/src/v3/debug.ts +21 -0
- package/src/v3/h.ts +18 -0
- package/src/v3/index.ts +77 -0
- package/src/v3/reactivity/computed.ts +100 -0
- package/src/v3/reactivity/effect.ts +20 -0
- package/src/v3/reactivity/effectScope.ts +134 -0
- package/src/v3/reactivity/operations.ts +14 -0
- package/src/v3/reactivity/reactive.ts +123 -0
- package/src/v3/reactivity/readonly.ts +121 -0
- package/src/v3/reactivity/ref.ts +249 -0
- package/types/index.d.ts +10 -13
- package/types/options.d.ts +265 -132
- package/types/plugin.d.ts +4 -4
- package/types/umd.d.ts +47 -27
- package/types/v3-generated.d.ts +389 -0
- package/types/v3.d.ts +16 -0
- package/types/vnode.d.ts +70 -57
- package/types/vue.d.ts +292 -88
- package/dist/README.md +0 -122
- package/src/compiler/directives/bind.js +0 -11
- package/src/core/global-api/use.js +0 -23
- package/src/core/instance/inject.js +0 -73
- package/src/core/vdom/helpers/is-async-placeholder.js +0 -5
- package/src/core/vdom/helpers/update-listeners.js +0 -95
- package/src/core/vdom/modules/index.js +0 -7
- package/src/core/vdom/modules/ref.js +0 -45
- package/src/platforms/web/compiler/directives/html.js +0 -9
- package/src/platforms/web/entry-server-basic-renderer.js +0 -13
- package/src/platforms/web/entry-server-renderer.js +0 -27
- package/src/platforms/web/runtime/node-ops.js +0 -59
- package/src/platforms/web/server/compiler.js +0 -11
- package/src/platforms/web/server/directives/index.js +0 -7
- package/src/platforms/web/server/directives/model.js +0 -44
- package/src/platforms/web/server/directives/show.js +0 -12
- package/src/platforms/web/server/modules/attrs.js +0 -67
- package/src/platforms/web/server/modules/class.js +0 -11
- package/src/platforms/web/server/modules/dom-props.js +0 -50
- package/src/platforms/web/server/modules/index.js +0 -11
- package/src/platforms/web/server/modules/style.js +0 -41
- package/src/platforms/web/server/util.js +0 -101
- package/src/platforms/weex/compiler/directives/index.js +0 -5
- package/src/platforms/weex/compiler/directives/model.js +0 -33
- package/src/platforms/weex/compiler/index.js +0 -52
- package/src/platforms/weex/compiler/modules/append.js +0 -27
- package/src/platforms/weex/compiler/modules/class.js +0 -74
- package/src/platforms/weex/compiler/modules/index.js +0 -13
- package/src/platforms/weex/compiler/modules/props.js +0 -37
- package/src/platforms/weex/compiler/modules/recycle-list/component-root.js +0 -13
- package/src/platforms/weex/compiler/modules/recycle-list/component.js +0 -16
- package/src/platforms/weex/compiler/modules/recycle-list/index.js +0 -60
- package/src/platforms/weex/compiler/modules/recycle-list/recycle-list.js +0 -50
- package/src/platforms/weex/compiler/modules/recycle-list/text.js +0 -23
- package/src/platforms/weex/compiler/modules/recycle-list/v-bind.js +0 -21
- package/src/platforms/weex/compiler/modules/recycle-list/v-for.js +0 -33
- package/src/platforms/weex/compiler/modules/recycle-list/v-if.js +0 -63
- package/src/platforms/weex/compiler/modules/recycle-list/v-on.js +0 -25
- package/src/platforms/weex/compiler/modules/recycle-list/v-once.js +0 -19
- package/src/platforms/weex/compiler/modules/style.js +0 -87
- package/src/platforms/weex/entry-compiler.js +0 -2
- package/src/platforms/weex/entry-framework.js +0 -187
- package/src/platforms/weex/entry-runtime-factory.js +0 -6
- package/src/platforms/weex/runtime/components/index.js +0 -9
- package/src/platforms/weex/runtime/components/richtext.js +0 -82
- package/src/platforms/weex/runtime/components/transition-group.js +0 -148
- package/src/platforms/weex/runtime/components/transition.js +0 -9
- package/src/platforms/weex/runtime/directives/index.js +0 -2
- package/src/platforms/weex/runtime/index.js +0 -42
- package/src/platforms/weex/runtime/modules/attrs.js +0 -44
- package/src/platforms/weex/runtime/modules/class.js +0 -76
- package/src/platforms/weex/runtime/modules/events.js +0 -54
- package/src/platforms/weex/runtime/modules/index.js +0 -13
- package/src/platforms/weex/runtime/modules/style.js +0 -84
- package/src/platforms/weex/runtime/modules/transition.js +0 -270
- package/src/platforms/weex/runtime/node-ops.js +0 -91
- package/src/platforms/weex/runtime/patch.js +0 -16
- package/src/platforms/weex/runtime/recycle-list/render-component-template.js +0 -34
- package/src/platforms/weex/runtime/recycle-list/virtual-component.js +0 -136
- package/src/platforms/weex/runtime/text-node.js +0 -9
- package/src/platforms/weex/util/element.js +0 -52
- package/src/platforms/weex/util/index.js +0 -40
- package/src/platforms/weex/util/parser.js +0 -60
- package/src/server/bundle-renderer/create-bundle-renderer.js +0 -151
- package/src/server/bundle-renderer/create-bundle-runner.js +0 -150
- package/src/server/bundle-renderer/source-map-support.js +0 -45
- package/src/server/create-basic-renderer.js +0 -37
- package/src/server/create-renderer.js +0 -152
- package/src/server/optimizing-compiler/codegen.js +0 -264
- package/src/server/optimizing-compiler/index.js +0 -20
- package/src/server/optimizing-compiler/modules.js +0 -124
- package/src/server/optimizing-compiler/optimizer.js +0 -141
- package/src/server/optimizing-compiler/runtime-helpers.js +0 -150
- package/src/server/render-context.js +0 -130
- package/src/server/render-stream.js +0 -95
- package/src/server/render.js +0 -437
- package/src/server/template-renderer/create-async-file-mapper.js +0 -57
- package/src/server/template-renderer/index.js +0 -277
- package/src/server/template-renderer/parse-template.js +0 -42
- package/src/server/template-renderer/template-stream.js +0 -82
- package/src/server/util.js +0 -18
- package/src/server/webpack-plugin/client.js +0 -65
- package/src/server/webpack-plugin/server.js +0 -66
- package/src/server/webpack-plugin/util.js +0 -34
- package/src/server/write.js +0 -50
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
|
6
|
+
esac
|
|
7
|
+
|
|
8
|
+
if [ -z "$NODE_PATH" ]; then
|
|
9
|
+
export NODE_PATH="/Users/evan/Vue/vue/node_modules/.pnpm/node_modules"
|
|
10
|
+
else
|
|
11
|
+
export NODE_PATH="$NODE_PATH:/Users/evan/Vue/vue/node_modules/.pnpm/node_modules"
|
|
12
|
+
fi
|
|
13
|
+
if [ -x "$basedir/node" ]; then
|
|
14
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/@babel+parser@7.18.4/node_modules/@babel/parser/bin/babel-parser.js" "$@"
|
|
15
|
+
else
|
|
16
|
+
exec node "$basedir/../../../../node_modules/.pnpm/@babel+parser@7.18.4/node_modules/@babel/parser/bin/babel-parser.js" "$@"
|
|
17
|
+
fi
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
|
|
6
|
+
esac
|
|
7
|
+
|
|
8
|
+
if [ -z "$NODE_PATH" ]; then
|
|
9
|
+
export NODE_PATH="/Users/evan/Vue/vue/node_modules/.pnpm/node_modules"
|
|
10
|
+
else
|
|
11
|
+
export NODE_PATH="$NODE_PATH:/Users/evan/Vue/vue/node_modules/.pnpm/node_modules"
|
|
12
|
+
fi
|
|
13
|
+
if [ -x "$basedir/node" ]; then
|
|
14
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/sass@1.52.1/node_modules/sass/sass.js" "$@"
|
|
15
|
+
else
|
|
16
|
+
exec node "$basedir/../../../../node_modules/.pnpm/sass@1.52.1/node_modules/sass/sass.js" "$@"
|
|
17
|
+
fi
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vue/compiler-sfc",
|
|
3
|
+
"version": "2.7.0-alpha.2",
|
|
4
|
+
"description": "compiler-sfc for Vue 2",
|
|
5
|
+
"main": "dist/compiler-sfc.js",
|
|
6
|
+
"types": "dist/compiler-sfc.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@babel/parser": "^7.16.4",
|
|
12
|
+
"source-map": "^0.6.1",
|
|
13
|
+
"postcss": "^8.1.10"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/estree": "^0.0.48",
|
|
17
|
+
"@babel/types": "^7.16.0",
|
|
18
|
+
"@types/lru-cache": "^5.1.0",
|
|
19
|
+
"estree-walker": "^2.0.2",
|
|
20
|
+
"magic-string": "^0.25.7",
|
|
21
|
+
"pug": "^3.0.1",
|
|
22
|
+
"sass": "^1.26.9",
|
|
23
|
+
"@vue/consolidate": "^0.17.3",
|
|
24
|
+
"hash-sum": "^2.0.0",
|
|
25
|
+
"lru-cache": "^5.1.1",
|
|
26
|
+
"merge-source-map": "^1.1.0",
|
|
27
|
+
"postcss-modules": "^4.0.0",
|
|
28
|
+
"postcss-selector-parser": "^6.0.4"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/* @flow */
|
|
2
|
-
|
|
3
1
|
const range = 2
|
|
4
2
|
|
|
5
|
-
export function generateCodeFrame
|
|
3
|
+
export function generateCodeFrame(
|
|
6
4
|
source: string,
|
|
7
5
|
start: number = 0,
|
|
8
6
|
end: number = source.length
|
|
9
7
|
): string {
|
|
10
8
|
const lines = source.split(/\r?\n/)
|
|
11
9
|
let count = 0
|
|
12
|
-
const res = []
|
|
10
|
+
const res: string[] = []
|
|
13
11
|
for (let i = 0; i < lines.length; i++) {
|
|
14
12
|
count += lines[i].length + 1
|
|
15
13
|
if (count >= start) {
|
|
16
14
|
for (let j = i - range; j <= i + range || end > count; j++) {
|
|
17
15
|
if (j < 0 || j >= lines.length) continue
|
|
18
|
-
res.push(
|
|
16
|
+
res.push(
|
|
17
|
+
`${j + 1}${repeat(` `, 3 - String(j + 1).length)}| ${lines[j]}`
|
|
18
|
+
)
|
|
19
19
|
const lineLength = lines[j].length
|
|
20
20
|
if (j === i) {
|
|
21
21
|
// push underline
|
|
@@ -36,10 +36,12 @@ export function generateCodeFrame (
|
|
|
36
36
|
return res.join('\n')
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
function repeat
|
|
39
|
+
function repeat(str: string, n: number) {
|
|
40
40
|
let result = ''
|
|
41
41
|
if (n > 0) {
|
|
42
|
-
|
|
42
|
+
// eslint-disable-next-line no-constant-condition
|
|
43
|
+
while (true) {
|
|
44
|
+
// eslint-disable-line
|
|
43
45
|
if (n & 1) result += str
|
|
44
46
|
n >>>= 1
|
|
45
47
|
if (n <= 0) break
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { ASTElementHandler, ASTElementHandlers } from 'types/compiler'
|
|
2
2
|
|
|
3
3
|
const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/
|
|
4
4
|
const fnInvokeRE = /\([^)]*?\);*$/
|
|
5
|
-
const simplePathRE =
|
|
5
|
+
const simplePathRE =
|
|
6
|
+
/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/
|
|
6
7
|
|
|
7
8
|
// KeyboardEvent.keyCode aliases
|
|
8
9
|
const keyCodes: { [key: string]: number | Array<number> } = {
|
|
@@ -14,7 +15,7 @@ const keyCodes: { [key: string]: number | Array<number> } = {
|
|
|
14
15
|
left: 37,
|
|
15
16
|
right: 39,
|
|
16
17
|
down: 40,
|
|
17
|
-
|
|
18
|
+
delete: [8, 46]
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
// KeyboardEvent.key aliases
|
|
@@ -31,7 +32,7 @@ const keyNames: { [key: string]: string | Array<string> } = {
|
|
|
31
32
|
right: ['Right', 'ArrowRight'],
|
|
32
33
|
down: ['Down', 'ArrowDown'],
|
|
33
34
|
// #9112: IE11 uses `Del` for Delete key name.
|
|
34
|
-
|
|
35
|
+
delete: ['Backspace', 'Delete', 'Del']
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
// #4868: modifiers that prevent the execution of the listener
|
|
@@ -52,7 +53,7 @@ const modifierCode: { [key: string]: string } = {
|
|
|
52
53
|
right: genGuard(`'button' in $event && $event.button !== 2`)
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
export function genHandlers
|
|
56
|
+
export function genHandlers(
|
|
56
57
|
events: ASTElementHandlers,
|
|
57
58
|
isNative: boolean
|
|
58
59
|
): string {
|
|
@@ -61,6 +62,7 @@ export function genHandlers (
|
|
|
61
62
|
let dynamicHandlers = ``
|
|
62
63
|
for (const name in events) {
|
|
63
64
|
const handlerCode = genHandler(events[name])
|
|
65
|
+
//@ts-expect-error
|
|
64
66
|
if (events[name] && events[name].dynamic) {
|
|
65
67
|
dynamicHandlers += `${name},${handlerCode},`
|
|
66
68
|
} else {
|
|
@@ -75,25 +77,9 @@ export function genHandlers (
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let innerHandlerCode = handlerCode
|
|
82
|
-
const exps = params.filter(exp => simplePathRE.test(exp) && exp !== '$event')
|
|
83
|
-
const bindings = exps.map(exp => ({ '@binding': exp }))
|
|
84
|
-
const args = exps.map((exp, i) => {
|
|
85
|
-
const key = `$_${i + 1}`
|
|
86
|
-
innerHandlerCode = innerHandlerCode.replace(exp, key)
|
|
87
|
-
return key
|
|
88
|
-
})
|
|
89
|
-
args.push('$event')
|
|
90
|
-
return '{\n' +
|
|
91
|
-
`handler:function(${args.join(',')}){${innerHandlerCode}},\n` +
|
|
92
|
-
`params:${JSON.stringify(bindings)}\n` +
|
|
93
|
-
'}'
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function genHandler (handler: ASTElementHandler | Array<ASTElementHandler>): string {
|
|
80
|
+
function genHandler(
|
|
81
|
+
handler: ASTElementHandler | Array<ASTElementHandler>
|
|
82
|
+
): string {
|
|
97
83
|
if (!handler) {
|
|
98
84
|
return 'function(){}'
|
|
99
85
|
}
|
|
@@ -104,23 +90,21 @@ function genHandler (handler: ASTElementHandler | Array<ASTElementHandler>): str
|
|
|
104
90
|
|
|
105
91
|
const isMethodPath = simplePathRE.test(handler.value)
|
|
106
92
|
const isFunctionExpression = fnExpRE.test(handler.value)
|
|
107
|
-
const isFunctionInvocation = simplePathRE.test(
|
|
93
|
+
const isFunctionInvocation = simplePathRE.test(
|
|
94
|
+
handler.value.replace(fnInvokeRE, '')
|
|
95
|
+
)
|
|
108
96
|
|
|
109
97
|
if (!handler.modifiers) {
|
|
110
98
|
if (isMethodPath || isFunctionExpression) {
|
|
111
99
|
return handler.value
|
|
112
100
|
}
|
|
113
|
-
/* istanbul ignore if */
|
|
114
|
-
if (__WEEX__ && handler.params) {
|
|
115
|
-
return genWeexHandler(handler.params, handler.value)
|
|
116
|
-
}
|
|
117
101
|
return `function($event){${
|
|
118
102
|
isFunctionInvocation ? `return ${handler.value}` : handler.value
|
|
119
103
|
}}` // inline statement
|
|
120
104
|
} else {
|
|
121
105
|
let code = ''
|
|
122
106
|
let genModifierCode = ''
|
|
123
|
-
const keys = []
|
|
107
|
+
const keys: string[] = []
|
|
124
108
|
for (const key in handler.modifiers) {
|
|
125
109
|
if (modifierCode[key]) {
|
|
126
110
|
genModifierCode += modifierCode[key]
|
|
@@ -129,7 +113,7 @@ function genHandler (handler: ASTElementHandler | Array<ASTElementHandler>): str
|
|
|
129
113
|
keys.push(key)
|
|
130
114
|
}
|
|
131
115
|
} else if (key === 'exact') {
|
|
132
|
-
const modifiers
|
|
116
|
+
const modifiers = handler.modifiers
|
|
133
117
|
genModifierCode += genGuard(
|
|
134
118
|
['ctrl', 'shift', 'alt', 'meta']
|
|
135
119
|
.filter(keyModifier => !modifiers[keyModifier])
|
|
@@ -150,19 +134,15 @@ function genHandler (handler: ASTElementHandler | Array<ASTElementHandler>): str
|
|
|
150
134
|
const handlerCode = isMethodPath
|
|
151
135
|
? `return ${handler.value}.apply(null, arguments)`
|
|
152
136
|
: isFunctionExpression
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
/* istanbul ignore if */
|
|
158
|
-
if (__WEEX__ && handler.params) {
|
|
159
|
-
return genWeexHandler(handler.params, code + handlerCode)
|
|
160
|
-
}
|
|
137
|
+
? `return (${handler.value}).apply(null, arguments)`
|
|
138
|
+
: isFunctionInvocation
|
|
139
|
+
? `return ${handler.value}`
|
|
140
|
+
: handler.value
|
|
161
141
|
return `function($event){${code}${handlerCode}}`
|
|
162
142
|
}
|
|
163
143
|
}
|
|
164
144
|
|
|
165
|
-
function genKeyFilter
|
|
145
|
+
function genKeyFilter(keys: Array<string>): string {
|
|
166
146
|
return (
|
|
167
147
|
// make sure the key filters only apply to KeyboardEvents
|
|
168
148
|
// #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
|
|
@@ -172,7 +152,7 @@ function genKeyFilter (keys: Array<string>): string {
|
|
|
172
152
|
)
|
|
173
153
|
}
|
|
174
154
|
|
|
175
|
-
function genFilterCode
|
|
155
|
+
function genFilterCode(key: string): string {
|
|
176
156
|
const keyVal = parseInt(key, 10)
|
|
177
157
|
if (keyVal) {
|
|
178
158
|
return `$event.keyCode!==${keyVal}`
|