Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_38335589
uni-app
提交
5b4abb66
U
uni-app
项目概览
weixin_38335589
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5b4abb66
编写于
10月 14, 2019
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(v3): navigator
上级
5c1d23b2
变更
60
隐藏空白更改
内联
并排
Showing
60 changed file
with
26794 addition
and
44318 deletion
+26794
-44318
build/build.js
build/build.js
+2
-2
build/rollup.config.app.js
build/rollup.config.app.js
+7
-3
lib/apis.js
lib/apis.js
+2
-1
lib/app-plus/view.js
lib/app-plus/view.js
+6
-5
package.json
package.json
+1
-1
packages/uni-app-plus/dist/index.v3.js
packages/uni-app-plus/dist/index.v3.js
+5936
-5865
packages/uni-app-plus/dist/service.runtime.esm.js
packages/uni-app-plus/dist/service.runtime.esm.js
+1
-1
packages/uni-app-plus/dist/view.css
packages/uni-app-plus/dist/view.css
+1394
-1
packages/uni-app-plus/dist/view.umd.js
packages/uni-app-plus/dist/view.umd.js
+18456
-17074
packages/uni-cli-shared/lib/pages.js
packages/uni-cli-shared/lib/pages.js
+11
-10
packages/uni-cli-shared/lib/platform.js
packages/uni-cli-shared/lib/platform.js
+7
-0
packages/uni-cli-shared/template/view.css
packages/uni-cli-shared/template/view.css
+0
-1
packages/uni-cli-shared/template/view.umd.js
packages/uni-cli-shared/template/view.umd.js
+0
-20812
packages/uni-template-compiler/__tests__/compiler-app-plus.view.spec.js
...emplate-compiler/__tests__/compiler-app-plus.view.spec.js
+102
-102
packages/uni-template-compiler/__tests__/demo.js
packages/uni-template-compiler/__tests__/demo.js
+1
-1
packages/uni-template-compiler/lib/app/component-parser.js
packages/uni-template-compiler/lib/app/component-parser.js
+19
-0
packages/uni-template-compiler/lib/app/event-parser.js
packages/uni-template-compiler/lib/app/event-parser.js
+21
-0
packages/uni-template-compiler/lib/app/pre-transform-node.js
packages/uni-template-compiler/lib/app/pre-transform-node.js
+1
-9
packages/uni-template-compiler/lib/app/service.js
packages/uni-template-compiler/lib/app/service.js
+3
-0
packages/uni-template-compiler/lib/app/tag-parser.js
packages/uni-template-compiler/lib/app/tag-parser.js
+11
-0
packages/uni-template-compiler/lib/app/util.js
packages/uni-template-compiler/lib/app/util.js
+4
-1
packages/uni-template-compiler/lib/app/view.js
packages/uni-template-compiler/lib/app/view.js
+7
-0
packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
+7
-5
packages/vue-cli-plugin-uni/lib/app-plus/index.js
packages/vue-cli-plugin-uni/lib/app-plus/index.js
+7
-3
packages/vue-cli-plugin-uni/packages/postcss/index.js
packages/vue-cli-plugin-uni/packages/postcss/index.js
+231
-227
packages/vue-cli-plugin-uni/packages/postcss/index.v3.js
packages/vue-cli-plugin-uni/packages/postcss/index.v3.js
+39
-0
packages/vue-cli-plugin-uni/packages/webpack-uni-view-main-loader/index.js
...plugin-uni/packages/webpack-uni-view-main-loader/index.js
+113
-1
packages/webpack-uni-pages-loader/lib/index-new.js
packages/webpack-uni-pages-loader/lib/index-new.js
+1
-1
packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js
...pages-loader/lib/platforms/app-plus/app-config-service.js
+47
-0
packages/webpack-uni-pages-loader/lib/platforms/app-plus/config-parser.js
...-uni-pages-loader/lib/platforms/app-plus/config-parser.js
+0
-22
packages/webpack-uni-pages-loader/lib/platforms/app-plus/define-pages.js
...k-uni-pages-loader/lib/platforms/app-plus/define-pages.js
+18
-0
packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.js
.../webpack-uni-pages-loader/lib/platforms/app-plus/index.js
+44
-13
src/core/service/bridge/index.js
src/core/service/bridge/index.js
+3
-0
src/core/view/bridge/index.js
src/core/view/bridge/index.js
+3
-0
src/core/view/plugins/events.js
src/core/view/plugins/events.js
+18
-8
src/platforms/app-plus-nvue/service/register-page.js
src/platforms/app-plus-nvue/service/register-page.js
+0
-4
src/platforms/app-plus/page-factory.js
src/platforms/app-plus/page-factory.js
+29
-0
src/platforms/app-plus/service/api/index.js
src/platforms/app-plus/service/api/index.js
+2
-1
src/platforms/app-plus/service/api/plugin/register-plus.js
src/platforms/app-plus/service/api/plugin/register-plus.js
+9
-0
src/platforms/app-plus/service/api/route/navigate-back.js
src/platforms/app-plus/service/api/route/navigate-back.js
+2
-2
src/platforms/app-plus/service/api/route/re-launch.js
src/platforms/app-plus/service/api/route/re-launch.js
+22
-8
src/platforms/app-plus/service/api/route/redirect-to.js
src/platforms/app-plus/service/api/route/redirect-to.js
+20
-7
src/platforms/app-plus/service/api/route/switch-tab.js
src/platforms/app-plus/service/api/route/switch-tab.js
+5
-2
src/platforms/app-plus/service/api/route/util.js
src/platforms/app-plus/service/api/route/util.js
+23
-7
src/platforms/app-plus/service/constants.js
src/platforms/app-plus/service/constants.js
+7
-5
src/platforms/app-plus/service/framework/app.js
src/platforms/app-plus/service/framework/app.js
+2
-2
src/platforms/app-plus/service/framework/config.js
src/platforms/app-plus/service/framework/config.js
+1
-6
src/platforms/app-plus/service/framework/navigator.js
src/platforms/app-plus/service/framework/navigator.js
+49
-18
src/platforms/app-plus/service/framework/page.js
src/platforms/app-plus/service/framework/page.js
+22
-34
src/platforms/app-plus/service/framework/perf.js
src/platforms/app-plus/service/framework/perf.js
+3
-2
src/platforms/app-plus/service/framework/plugins/data.js
src/platforms/app-plus/service/framework/plugins/data.js
+5
-1
src/platforms/app-plus/service/framework/plugins/vdom-sync.js
...platforms/app-plus/service/framework/plugins/vdom-sync.js
+1
-3
src/platforms/app-plus/service/framework/subscribe-handlers.js
...latforms/app-plus/service/framework/subscribe-handlers.js
+3
-1
src/platforms/app-plus/service/index.js
src/platforms/app-plus/service/index.js
+17
-17
src/platforms/app-plus/service/register-page.js
src/platforms/app-plus/service/register-page.js
+0
-4
src/platforms/app-plus/view/bridge.js
src/platforms/app-plus/view/bridge.js
+5
-1
src/platforms/app-plus/view/framework/page.js
src/platforms/app-plus/view/framework/page.js
+12
-8
src/platforms/app-plus/view/framework/plugins/data.js
src/platforms/app-plus/view/framework/plugins/data.js
+17
-11
src/platforms/app-plus/view/framework/plugins/event.js
src/platforms/app-plus/view/framework/plugins/event.js
+9
-3
src/platforms/app-plus/view/framework/plugins/index.js
src/platforms/app-plus/view/framework/plugins/index.js
+6
-2
未找到文件。
build/build.js
浏览文件 @
5b4abb66
...
...
@@ -32,7 +32,6 @@ if (process.env.UNI_PLATFORM === 'app-plus' && process.env.UNI_VIEW === 'true')
filename
=
'
view
'
entry
=
'
./lib/
'
+
process
.
env
.
UNI_PLATFORM
+
'
/view.js
'
}
service
.
run
(
'
build
'
,
{
name
,
filename
,
...
...
@@ -40,7 +39,8 @@ service.run('build', {
target
:
'
lib
'
,
formats
:
process
.
env
.
UNI_WATCH
===
'
true
'
?
'
umd
'
:
'
umd-min
'
,
entry
,
clean
:
!
process
.
env
.
UNI_VIEW
clean
:
!
process
.
env
.
UNI_VIEW
,
mode
:
process
.
env
.
NODE_ENV
}).
then
(
function
()
{
if
(
process
.
env
.
UNI_UI
!==
'
true
'
&&
process
.
env
.
UNI_VIEW
!==
'
true
'
)
{
generateApiManifest
(
...
...
build/rollup.config.app.js
浏览文件 @
5b4abb66
...
...
@@ -34,20 +34,24 @@ if (process.env.UNI_SERVICE === 'legacy') {
output
.
format
=
'
iife
'
output
.
name
=
'
serviceContext
'
output
.
banner
=
`export function createServiceContext(Vue, weex, plus,
__uniConfig, __uniRoutes,
UniServiceJSBridge,instanceContext){
`export function createServiceContext(Vue, weex, plus, UniServiceJSBridge,instanceContext){
var localStorage = plus.storage
var setTimeout = instanceContext.setTimeout
var clearTimeout = instanceContext.clearTimeout
var setInterval = instanceContext.setInterval
var clearInterval = instanceContext.clearInterval
var clearInterval = instanceContext.clearInterval
var __uniConfig = instanceContext.__uniConfig
var __uniRoutes = instanceContext.__uniRoutes
`
output
.
footer
=
`
var uni = serviceContext.uni
var getApp = serviceContext.getApp
var getCurrentPages = serviceContext.getCurrentPages
var __definePage = serviceContext.__definePage
var __registerPage = serviceContext.__registerPage
var __registerPage = serviceContext.__registerPage
return serviceContext \n}
`
...
...
lib/apis.js
浏览文件 @
5b4abb66
...
...
@@ -191,7 +191,8 @@ const third = [
'
onPush
'
,
'
offPush
'
,
'
requireNativePlugin
'
,
'
upx2px
'
'
upx2px
'
,
'
registerPlus
'
]
const
apis
=
[
...
...
lib/app-plus/view.js
浏览文件 @
5b4abb66
...
...
@@ -4,11 +4,11 @@ import 'uni-core/view/index.css'
import
{
definePage
}
from
'
uni-platform/
view/framework/page
'
}
from
'
uni-platform/
page-factory
'
import
{
registerConfig
}
from
'
uni-platform/view/framework/
config
'
getCurrentPages
}
from
'
uni-platform/view/framework/
page
'
import
ViewPlugin
from
'
uni-platform/view/framework/plugins/index
'
...
...
@@ -16,9 +16,10 @@ global.UniViewJSBridge = {
publishHandler
:
UniViewJSBridge
.
publishHandler
,
subscribeHandler
:
UniViewJSBridge
.
subscribeHandler
}
global
.
getCurrentPages
=
getCurrentPages
global
.
__registerConfig
=
registerConfig
global
.
__registerPage
=
definePage
global
.
__definePage
=
definePage
global
.
Vue
=
Vue
...
...
package.json
浏览文件 @
5b4abb66
...
...
@@ -13,7 +13,7 @@
"build:app:v3"
:
"npm run lint && npm run build:app:service && npm run dev:app:view"
,
"build:app:service"
:
"cross-env UNI_PLATFORM=app-plus rollup -c build/rollup.config.app.js"
,
"build:app:view"
:
"cross-env NODE_ENV=production UNI_WATCH=false UNI_PLATFORM=app-plus UNI_VIEW=true node build/build.js"
,
"dev:app:view"
:
"cross-env NODE_ENV=
production
UNI_WATCH=true UNI_PLATFORM=app-plus UNI_VIEW=true node build/build.js"
,
"dev:app:view"
:
"cross-env NODE_ENV=
development
UNI_WATCH=true UNI_PLATFORM=app-plus UNI_VIEW=true node build/build.js"
,
"build:app:nvue"
:
"cross-env UNI_PLATFORM=app-plus-nvue rollup -c build/rollup.config.app.js"
,
"build:app:legacy"
:
"cross-env UNI_PLATFORM=app-plus-nvue UNI_SERVICE=legacy rollup -c build/rollup.config.app.js"
,
"build:mp-qq"
:
"cross-env UNI_PLATFORM=mp-qq rollup -c build/rollup.config.mp.js"
,
...
...
packages/uni-app-plus/dist/index.v3.js
浏览文件 @
5b4abb66
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
packages/uni-app-plus/dist/service.runtime.esm.js
浏览文件 @
5b4abb66
...
...
@@ -6719,7 +6719,7 @@ function updateExtras(oldVnode, vnode) {
if
(
attrs
)
{
for
(
var
key$1
in
attrs
)
{
key$1
!==
'
_i
'
&&
$s
(
id
,
key$1
,
attrs
[
key$1
]);
key$1
!==
'
_i
'
&&
$s
(
id
,
'
a-
'
+
key$1
,
attrs
[
key$1
]);
}
}
// 存储事件标记
...
...
packages/uni-app-plus/dist/view.css
浏览文件 @
5b4abb66
*
{
margin
:
0
;
-webkit-tap-highlight-color
:
transparent
}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
uni
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
unibtn
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
body
,
html
{
-webkit-user-select
:
none
;
user-select
:
none
;
width
:
100%
;
height
:
100%
}
body
{
overflow-x
:
hidden
}
[
class
*=
" uni-icon-"
],[
class
^=
uni-icon-
]
{
display
:
inline-block
;
vertical-align
:
middle
;
font
:
normal
normal
normal
14px
/
1
uni
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
}
[
class
*=
" uni-btn-icon"
],[
class
^=
uni-btn-icon
]
{
display
:
inline-block
;
font
:
normal
normal
normal
14px
/
1
unibtn
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
}
[
class
*=
" uni-btn-icon"
]
:before
,[
class
^=
uni-btn-icon
]
:before
{
margin
:
0
;
box-sizing
:
border-box
}
.uni-icon-success-no-circle
:before
{
content
:
"\EA08"
}
.uni-loading
,
uni-button
[
loading
]
:before
{
background
:
rgba
(
0
,
0
,
0
,
0
)
url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=")
no-repeat
}
.uni-loading
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
)
infinite
;
background-size
:
100%
}
@-webkit-keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
to
{
-webkit-transform
:
rotate
(
1turn
);
transform
:
rotate
(
1turn
)}}
@keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
to
{
-webkit-transform
:
rotate
(
1turn
);
transform
:
rotate
(
1turn
)}}
.uni-mask
{
position
:
fixed
;
z-index
:
999
;
top
:
0
;
right
:
0
;
left
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
.6
)}
.uni-fade-enter-active
,
.uni-fade-leave-active
{
-webkit-transition-duration
:
.25s
;
transition-duration
:
.25s
;
-webkit-transition-property
:
opacity
;
transition-property
:
opacity
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
}
.uni-fade-enter
,
.uni-fade-leave-active
{
opacity
:
0
}
[
nvue
]
uni-scroll-view
,[
nvue
]
uni-swiper-item
,[
nvue
]
uni-view
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
-webkit-flex-shrink
:
0
;
flex-shrink
:
0
;
-webkit-box-flex
:
0
;
-webkit-flex-grow
:
0
;
flex-grow
:
0
;
-webkit-flex-basis
:
auto
;
flex-basis
:
auto
;
-webkit-box-align
:
stretch
;
-webkit-align-items
:
stretch
;
align-items
:
stretch
;
-webkit-align-content
:
flex-start
;
align-content
:
flex-start
}
[
nvue-dir-row
]
uni-swiper-item
,[
nvue-dir-row
]
uni-view
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
row
;
flex-direction
:
row
}
[
nvue-dir-column
]
uni-swiper-item
,[
nvue-dir-column
]
uni-view
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
column
;
flex-direction
:
column
}
[
nvue-dir-row-reverse
]
uni-swiper-item
,[
nvue-dir-row-reverse
]
uni-view
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
row-reverse
;
flex-direction
:
row-reverse
}
[
nvue-dir-column-reverse
]
uni-swiper-item
,[
nvue-dir-column-reverse
]
uni-view
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
column-reverse
;
flex-direction
:
column-reverse
}
[
nvue
]
uni-image
,[
nvue
]
uni-input
,[
nvue
]
uni-scroll-view
,[
nvue
]
uni-swiper
,[
nvue
]
uni-swiper-item
,[
nvue
]
uni-text
,[
nvue
]
uni-textarea
,[
nvue
]
uni-video
,[
nvue
]
uni-view
{
position
:
relative
;
border
:
0
solid
#000
;
box-sizing
:
border-box
}
[
nvue
]
uni-swiper-item
{
position
:
absolute
}
uni-button
{
position
:
relative
;
display
:
block
;
margin-left
:
auto
;
margin-right
:
auto
;
padding-left
:
14px
;
padding-right
:
14px
;
box-sizing
:
border-box
;
font-size
:
18px
;
text-align
:
center
;
text-decoration
:
none
;
line-height
:
2.55555556
;
border-radius
:
5px
;
-webkit-tap-highlight-color
:
transparent
;
overflow
:
hidden
;
color
:
#000
;
background-color
:
#f8f8f8
}
uni-button
[
hidden
]
{
display
:
none
!important
}
uni-button
:after
{
content
:
" "
;
width
:
200%
;
height
:
200%
;
position
:
absolute
;
top
:
0
;
left
:
0
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
.2
);
-webkit-transform
:
scale
(
.5
);
transform
:
scale
(
.5
);
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
box-sizing
:
border-box
;
border-radius
:
10px
}
uni-button
[
native
]
{
padding-left
:
0
;
padding-right
:
0
}
uni-button
[
native
]
.uni-button-cover-view-wrapper
{
border
:
inherit
;
border-color
:
inherit
;
border-radius
:
inherit
;
background-color
:
inherit
}
uni-button
[
native
]
.uni-button-cover-view-inner
{
padding-left
:
14px
;
padding-right
:
14px
}
uni-button
uni-cover-view
{
line-height
:
inherit
;
white-space
:
inherit
}
uni-button
[
type
=
default
]
{
color
:
#000
;
background-color
:
#f8f8f8
}
uni-button
[
type
=
primary
]
{
color
:
#fff
;
background-color
:
#007aff
}
uni-button
[
type
=
warn
]
{
color
:
#fff
;
background-color
:
#e64340
}
uni-button
[
disabled
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
)}
uni-button
[
disabled
]
:not
([
type
]),
uni-button
[
disabled
][
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.3
);
background-color
:
#f7f7f7
}
uni-button
[
disabled
][
type
=
primary
]
{
background-color
:
rgba
(
0
,
122
,
255
,
.6
)}
uni-button
[
disabled
][
type
=
warn
]
{
background-color
:
#ec8b89
}
uni-button
[
type
=
primary
][
plain
]
{
color
:
#007aff
;
border
:
1px
solid
#007aff
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
primary
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
primary
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
type
=
default
][
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
default
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
default
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
plain
]
:after
{
border-width
:
0
}
uni-button
[
plain
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
}
uni-button
[
type
=
warn
][
plain
]
{
color
:
#e64340
;
border
:
1px
solid
#e64340
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
warn
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
warn
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
size
=
mini
]
{
display
:
inline-block
;
line-height
:
2.3
;
font-size
:
13px
;
padding
:
0
1.34em
}
uni-button
[
size
=
mini
][
native
]
{
padding
:
0
}
uni-button
[
size
=
mini
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
1.34em
}
uni-button
[
loading
]
:before
{
content
:
" "
;
display
:
inline-block
;
width
:
18px
;
height
:
18px
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
)
infinite
;
background-size
:
100%
}
uni-button
[
loading
][
type
=
primary
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#0062cc
}
uni-button
[
loading
][
type
=
primary
][
plain
]
{
color
:
#007aff
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
uni-button
[
loading
][
type
=
default
][
plain
]
{
color
:
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
type
=
warn
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#ce3c39
}
uni-button
[
loading
][
type
=
warn
][
plain
]
{
color
:
#e64340
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
native
]
:before
{
content
:
none
}
.button-hover
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
.button-hover
[
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
.6
);
border-color
:
rgba
(
53
,
53
,
53
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
primary
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#0062cc
}
.button-hover
[
type
=
primary
][
plain
]
{
color
:
rgba
(
26
,
173
,
25
,
.6
);
border-color
:
rgba
(
26
,
173
,
25
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
.button-hover
[
type
=
default
][
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
.6
);
border-color
:
rgba
(
53
,
53
,
53
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
warn
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#ce3c39
}
.button-hover
[
type
=
warn
][
plain
]
{
color
:
rgba
(
230
,
67
,
64
,
.6
);
border-color
:
rgba
(
230
,
67
,
64
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-canvas
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
}
uni-canvas
>
canvas
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
}
uni-checkbox-group
[
hidden
]
{
display
:
none
}
uni-checkbox
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-checkbox
[
hidden
]
{
display
:
none
}
uni-checkbox
.uni-checkbox-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-checkbox
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
{
color
:
#007aff
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#e1e1e1
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#adadad
}
uni-checkbox-group
{
display
:
block
}
uni-icon
{
display
:
inline-block
;
font-size
:
0
;
box-sizing
:
border-box
}
uni-icon
[
hidden
]
{
display
:
none
}
uni-icon
>
i
{
font
:
normal
normal
normal
14px
/
1
weui
}
uni-icon
>
i
:before
{
margin
:
0
;
box-sizing
:
border-box
}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
weui
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
.uni-icon-success
:before
{
content
:
"\EA06"
}
.uni-icon-success_circle
:before
{
content
:
"\EA07"
}
.uni-icon-success_no_circle
:before
{
content
:
"\EA08"
}
.uni-icon-safe_success
:before
{
content
:
"\EA04"
}
.uni-icon-safe_warn
:before
{
content
:
"\EA05"
}
.uni-icon-info
:before
{
content
:
"\EA03"
}
.uni-icon-info_circle
:before
{
content
:
"\EA0C"
}
.uni-icon-warn
:before
{
content
:
"\EA0B"
}
.uni-icon-waiting
:before
{
content
:
"\EA09"
}
.uni-icon-waiting_circle
:before
{
content
:
"\EA0A"
}
.uni-icon-circle
:before
{
content
:
"\EA01"
}
.uni-icon-cancel
:before
{
content
:
"\EA0D"
}
.uni-icon-download
:before
{
content
:
"\EA02"
}
.uni-icon-search
:before
{
content
:
"\EA0E"
}
.uni-icon-clear
:before
{
content
:
"\EA0F"
}
.uni-icon-safe_success
,
.uni-icon-success
,
.uni-icon-success_circle
,
.uni-icon-success_no_circle
{
color
:
#007aff
}
.uni-icon-safe_warn
{
color
:
#ffbe00
}
.uni-icon-info
{
color
:
#10aeff
}
.uni-icon-info_circle
{
color
:
#007aff
}
.uni-icon-warn
{
color
:
#f76260
}
.uni-icon-waiting
,
.uni-icon-waiting_circle
{
color
:
#10aeff
}
.uni-icon-circle
{
color
:
#c9c9c9
}
.uni-icon-cancel
{
color
:
#f43530
}
.uni-icon-download
{
color
:
#007aff
}
.uni-icon-clear
,
.uni-icon-search
{
color
:
#b2b2b2
}
uni-image
{
width
:
320px
;
height
:
240px
;
display
:
inline-block
;
overflow
:
hidden
;
position
:
relative
}
uni-image
[
hidden
]
{
display
:
none
}
uni-image
>
div
,
uni-image
>
img
{
width
:
100%
;
height
:
100%
}
uni-image
>
img
{
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
display
:
block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
opacity
:
0
}
uni-image
>
.uni-image-will-change
{
will-change
:
transform
}
uni-input
{
display
:
block
;
font-size
:
16px
;
line-height
:
1.4em
;
height
:
1.4em
;
min-height
:
1.4em
;
overflow
:
hidden
}
uni-input
[
hidden
]
{
display
:
none
}
.uni-input-form
,
.uni-input-input
,
.uni-input-placeholder
,
.uni-input-wrapper
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
}
.uni-input-form
,
.uni-input-wrapper
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
}
.uni-input-input
,
.uni-input-placeholder
{
width
:
100%
}
.uni-input-placeholder
{
position
:
absolute
;
top
:
50%
;
left
:
0
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
color
:
grey
;
overflow
:
hidden
;
text-overflow
:
clip
;
white-space
:
pre
;
word-break
:
keep-all
;
pointer-events
:
none
}
.uni-input-input
{
display
:
block
;
height
:
100%
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
}
.uni-input-input
[
type
=
search
]
::-webkit-search-cancel-button
{
display
:
none
}
.uni-input-input
::-webkit-inner-spin-button
,
.uni-input-input
::-webkit-outer-spin-button
{
-webkit-appearance
:
none
;
margin
:
0
}
.uni-input-input
[
type
=
number
]
{
-moz-appearance
:
textfield
}
uni-movable-area
{
display
:
block
;
position
:
relative
;
width
:
10px
;
height
:
10px
}
uni-movable-area
[
hidden
]
{
display
:
none
}
uni-movable-view
{
display
:
inline-block
;
width
:
10px
;
height
:
10px
;
top
:
0
;
left
:
0
;
position
:
absolute
}
uni-movable-view
[
hidden
]
{
display
:
none
}
.navigator-hover
{
background-color
:
rgba
(
0
,
0
,
0
,
.1
);
opacity
:
.7
}
uni-navigator
{
height
:
auto
;
width
:
auto
;
display
:
block
}
uni-navigator
[
hidden
]
{
display
:
none
}
uni-picker-view-column
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
position
:
relative
;
height
:
100%
;
overflow
:
hidden
}
uni-picker-view-column
[
hidden
]
{
display
:
none
}
.uni-picker-view-group
{
height
:
100%
}
.uni-picker-view-mask
{
transform
:
translateZ
(
0
);
-webkit-transform
:
translateZ
(
0
);
top
:
0
;
height
:
100%
;
margin
:
0
auto
;
background
:
-webkit-linear-gradient
(
top
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
)),
-webkit-linear-gradient
(
bottom
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
));
background
:
linear-gradient
(
180deg
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
)),
linear-gradient
(
0deg
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
));
background-position
:
top
,
bottom
;
background-size
:
100%
102px
;
background-repeat
:
no-repeat
}
.uni-picker-view-indicator
{
height
:
34px
;
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
)}
.uni-picker-view-indicator
,
.uni-picker-view-mask
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
z-index
:
3
;
pointer-events
:
none
}
.uni-picker-view-content
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
will-change
:
transform
;
padding
:
102px
0
}
.uni-picker-view-content
>*
{
height
:
34px
;
overflow
:
hidden
}
.uni-picker-view-indicator
:before
{
top
:
0
;
border-top
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
-webkit-transform
:
scaleY
(
.5
);
transform
:
scaleY
(
.5
)}
.uni-picker-view-indicator
:after
{
bottom
:
0
;
border-bottom
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
100%
;
transform-origin
:
0
100%
;
-webkit-transform
:
scaleY
(
.5
);
transform
:
scaleY
(
.5
)}
.uni-picker-view-indicator
:after
,
.uni-picker-view-indicator
:before
{
content
:
" "
;
position
:
absolute
;
left
:
0
;
right
:
0
;
height
:
1px
;
color
:
#e5e5e5
}
uni-picker-view
{
display
:
block
}
uni-picker-view
.uni-picker-view-wrapper
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
position
:
relative
;
overflow
:
hidden
;
height
:
100%
}
uni-picker-view
[
hidden
]
{
display
:
none
}
uni-picker
{
display
:
block
}
uni-progress
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
}
uni-progress
[
hidden
]
{
display
:
none
}
.uni-progress-bar
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
}
.uni-progress-inner-bar
{
width
:
0
;
height
:
100%
}
.uni-progress-info
{
margin-top
:
0
;
margin-bottom
:
0
;
min-width
:
2em
;
margin-left
:
15px
;
font-size
:
16px
}
uni-radio-group
[
hidden
]
{
display
:
none
}
uni-radio
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-radio
[
hidden
]
{
display
:
none
}
uni-radio
.uni-radio-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-radio
.uni-radio-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
margin-right
:
5px
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
50%
;
width
:
22px
;
height
:
22px
;
position
:
relative
}
uni-radio
.uni-radio-input.uni-radio-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
color
:
#fff
;
font-size
:
18px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-radio
.uni-radio-input.uni-radio-input-disabled
{
background-color
:
#e1e1e1
;
border-color
:
#d1d1d1
}
uni-radio
.uni-radio-input.uni-radio-input-disabled
:before
{
color
:
#adadad
}
uni-radio-group
{
display
:
block
}
@-webkit-keyframes
once-show
{
0
%
{
top
:
0
}}
@keyframes
once-show
{
0
%
{
top
:
0
}}
uni-resize-sensor
,
uni-resize-sensor
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
overflow
:
hidden
}
uni-resize-sensor
{
display
:
block
;
z-index
:
-1
;
visibility
:
hidden
;
-webkit-animation
:
once-show
1ms
;
animation
:
once-show
1ms
}
uni-resize-sensor
>
div
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
}
uni-resize-sensor
>
div
:first-child
>
div
{
width
:
100000px
;
height
:
100000px
}
uni-resize-sensor
>
div
:last-child
>
div
{
width
:
200%
;
height
:
200%
}
uni-scroll-view
{
display
:
block
;
width
:
100%
}
uni-scroll-view
[
hidden
]
{
display
:
none
}
.uni-scroll-view
{
position
:
relative
;
-webkit-overflow-scrolling
:
touch
;
width
:
100%
;
height
:
100%
;
max-height
:
inherit
}
uni-slider
{
margin
:
10px
18px
;
padding
:
0
;
display
:
block
}
uni-slider
[
hidden
]
{
display
:
none
}
uni-slider
.uni-slider-wrapper
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
min-height
:
16px
}
uni-slider
.uni-slider-tap-area
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
padding
:
8px
0
}
uni-slider
.uni-slider-handle-wrapper
{
position
:
relative
;
height
:
2px
;
border-radius
:
5px
;
background-color
:
#e9e9e9
;
cursor
:
pointer
;
-webkit-tap-highlight-color
:
transparent
}
uni-slider
.uni-slider-handle-wrapper
,
uni-slider
.uni-slider-track
{
-webkit-transition
:
background-color
.3s
ease
;
transition
:
background-color
.3s
ease
}
uni-slider
.uni-slider-track
{
height
:
100%
;
border-radius
:
6px
;
background-color
:
#007aff
}
uni-slider
.uni-slider-handle
,
uni-slider
.uni-slider-thumb
{
position
:
absolute
;
left
:
50%
;
top
:
50%
;
cursor
:
pointer
;
border-radius
:
50%
;
-webkit-transition
:
border-color
.3s
ease
;
transition
:
border-color
.3s
ease
}
uni-slider
.uni-slider-handle
{
width
:
28px
;
height
:
28px
;
margin-top
:
-14px
;
margin-left
:
-14px
;
background-color
:
rgba
(
0
,
0
,
0
,
0
);
z-index
:
3
}
uni-slider
.uni-slider-thumb
{
z-index
:
2
;
box-shadow
:
0
0
4px
rgba
(
0
,
0
,
0
,
.2
)}
uni-slider
.uni-slider-step
{
position
:
absolute
;
width
:
100%
;
height
:
2px
;
background
:
rgba
(
0
,
0
,
0
,
0
);
z-index
:
1
}
uni-slider
.uni-slider-value
{
color
:
#888
;
font-size
:
14px
;
margin-left
:
1em
}
uni-slider
.uni-slider-disabled
.uni-slider-track
{
background-color
:
#ccc
}
uni-slider
.uni-slider-disabled
.uni-slider-thumb
{
background-color
:
#fff
;
border-color
:
#ccc
}
uni-swiper-item
{
display
:
block
;
overflow
:
hidden
;
will-change
:
transform
;
position
:
absolute
;
width
:
100%
;
height
:
100%
}
uni-swiper-item
[
hidden
]
{
display
:
none
}
uni-swiper
{
display
:
block
;
height
:
150px
}
uni-swiper
[
hidden
]
{
display
:
none
}
uni-swiper
.uni-swiper-wrapper
{
overflow
:
hidden
;
position
:
relative
;
width
:
100%
;
height
:
100%
;
-webkit-transform
:
translateZ
(
0
);
transform
:
translateZ
(
0
)}
uni-swiper
.uni-swiper-slides
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
}
uni-swiper
.uni-swiper-slide-frame
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
will-change
:
transform
}
uni-swiper
.uni-swiper-dots
{
position
:
absolute
;
font-size
:
0
}
uni-swiper
.uni-swiper-dots-horizontal
{
left
:
50%
;
bottom
:
10px
;
text-align
:
center
;
white-space
:
nowrap
;
-webkit-transform
:
translate
(
-50%
);
transform
:
translate
(
-50%
)}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
{
margin-right
:
8px
}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
:last-child
{
margin-right
:
0
}
uni-swiper
.uni-swiper-dots-vertical
{
right
:
10px
;
top
:
50%
;
text-align
:
right
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
)}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
{
display
:
block
;
margin-bottom
:
9px
}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
:last-child
{
margin-bottom
:
0
}
uni-swiper
.uni-swiper-dot
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
cursor
:
pointer
;
-webkit-transition-property
:
background-color
;
transition-property
:
background-color
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
;
background
:
rgba
(
0
,
0
,
0
,
.3
);
border-radius
:
50%
}
uni-swiper
.uni-swiper-dot-active
{
background-color
:
#000
}
uni-switch
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-switch
[
hidden
]
{
display
:
none
}
uni-switch
.uni-switch-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-switch
.uni-switch-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
position
:
relative
;
width
:
52px
;
height
:
32px
;
margin-right
:
5px
;
border
:
1px
solid
#dfdfdf
;
outline
:
0
;
border-radius
:
16px
;
box-sizing
:
border-box
;
background-color
:
#dfdfdf
;
-webkit-transition
:
background-color
.1s
,
border
.1s
;
transition
:
background-color
.1s
,
border
.1s
}
uni-switch
.uni-switch-input
:before
{
width
:
50px
;
background-color
:
#fdfdfd
}
uni-switch
.uni-switch-input
:after
,
uni-switch
.uni-switch-input
:before
{
content
:
" "
;
position
:
absolute
;
top
:
0
;
left
:
0
;
height
:
30px
;
border-radius
:
15px
;
transition
:
-webkit-transform
.3s
;
-webkit-transition
:
-webkit-transform
.3s
;
transition
:
transform
.3s
;
transition
:
transform
.3s
,
-webkit-transform
.3s
}
uni-switch
.uni-switch-input
:after
{
width
:
30px
;
background-color
:
#fff
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
.4
)}
uni-switch
.uni-switch-input.uni-switch-input-checked
{
border-color
:
#007aff
;
background-color
:
#007aff
}
uni-switch
.uni-switch-input.uni-switch-input-checked
:before
{
-webkit-transform
:
scale
(
0
);
transform
:
scale
(
0
)}
uni-switch
.uni-switch-input.uni-switch-input-checked
:after
{
-webkit-transform
:
translateX
(
20px
);
transform
:
translateX
(
20px
)}
uni-switch
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
;
color
:
#007aff
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
color
:
inherit
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#e1e1e1
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#adadad
}
uni-text
[
selectable
]
{
cursor
:
auto
;
user-select
:
text
;
-webkit-user-select
:
text
}
uni-textarea
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
;
font-size
:
16px
;
line-height
:
normal
}
uni-textarea
[
hidden
]
{
display
:
none
}
uni-textarea
[
auto-height
]
.uni-textarea-textarea
{
overflow-y
:
hidden
}
.uni-textarea-compute
,
.uni-textarea-placeholder
,
.uni-textarea-textarea
,
.uni-textarea-wrapper
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
}
.uni-textarea-wrapper
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
}
.uni-textarea-compute
,
.uni-textarea-placeholder
,
.uni-textarea-textarea
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
white-space
:
pre-wrap
;
word-break
:
break-all
}
.uni-textarea-placeholder
{
color
:
grey
;
overflow
:
hidden
}
.uni-textarea-compute
{
visibility
:
hidden
;
height
:
auto
}
.uni-textarea-textarea
{
resize
:
none
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
}
.uni-textarea-textarea-ios
{
width
:
auto
;
right
:
0
;
margin
:
0
-3px
}
uni-view
{
display
:
block
}
uni-view
[
hidden
]
{
display
:
none
}
\ No newline at end of file
*
{
margin
:
0
;
-webkit-tap-highlight-color
:
transparent
;
}
@font-face
{
font-weight
:
normal
;
font-style
:
normal
;
font-family
:
"uni"
;
src
:
url('data:application/octet-stream;base64,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')
format
(
'truetype'
);
}
@font-face
{
font-weight
:
normal
;
font-style
:
normal
;
font-family
:
"unibtn"
;
src
:
url('data:application/octet-stream;base64,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')
format
(
'truetype'
)
}
html
,
body
{
-webkit-user-select
:
none
;
user-select
:
none
;
width
:
100%
;
height
:
100%
;
}
/* html {
height: 100%
} */
body
{
overflow-x
:
hidden
;
}
[
class
^=
"uni-icon-"
],
[
class
*=
" uni-icon-"
]
{
display
:
inline-block
;
vertical-align
:
middle
;
font
:
normal
normal
normal
14px
/
1
"uni"
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
;
}
[
class
^=
"uni-btn-icon"
],
[
class
*=
" uni-btn-icon"
]
{
display
:
inline-block
;
font
:
normal
normal
normal
14px
/
1
"unibtn"
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
;
}
[
class
^=
"uni-btn-icon"
]
:before
,
[
class
*=
" uni-btn-icon"
]
:before
{
margin
:
0
;
box-sizing
:
border-box
;
}
.uni-icon-success-no-circle
:before
{
content
:
"\EA08"
;
}
.uni-loading
,
uni-button
[
loading
]
:before
{
background
:
transparent
url("data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=")
no-repeat
;
}
.uni-loading
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
,
end
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
,
end
)
infinite
;
background-size
:
100%
;
}
@-webkit-keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
}
100
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
360deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
360deg
);
}
}
@keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
}
100
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
360deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
360deg
);
}
}
/*
html,
body,
uni-app,
uni-page {
height: 100%;
} */
.uni-mask
{
position
:
fixed
;
z-index
:
999
;
top
:
0
;
right
:
0
;
left
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
0.6
);
}
.uni-fade-enter-active
,
.uni-fade-leave-active
{
-webkit-transition-duration
:
0.25s
;
transition-duration
:
0.25s
;
-webkit-transition-property
:
opacity
;
transition-property
:
opacity
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
;
}
.uni-fade-enter
,
.uni-fade-leave-active
{
opacity
:
0
}
[
nvue
]
uni-view
,
[
nvue
]
uni-swiper-item
,
[
nvue
]
uni-scroll-view
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
-webkit-flex-shrink
:
0
;
flex-shrink
:
0
;
-webkit-box-flex
:
0
;
-webkit-flex-grow
:
0
;
flex-grow
:
0
;
-webkit-flex-basis
:
auto
;
flex-basis
:
auto
;
-webkit-box-align
:
stretch
;
-webkit-align-items
:
stretch
;
align-items
:
stretch
;
-webkit-align-content
:
flex-start
;
align-content
:
flex-start
;
}
[
nvue-dir-row
]
uni-view
,
[
nvue-dir-row
]
uni-swiper-item
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
row
;
flex-direction
:
row
;
}
[
nvue-dir-column
]
uni-view
,
[
nvue-dir-column
]
uni-swiper-item
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
column
;
flex-direction
:
column
;
}
[
nvue-dir-row-reverse
]
uni-view
,
[
nvue-dir-row-reverse
]
uni-swiper-item
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
row-reverse
;
flex-direction
:
row-reverse
;
}
[
nvue-dir-column-reverse
]
uni-view
,
[
nvue-dir-column-reverse
]
uni-swiper-item
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
column-reverse
;
flex-direction
:
column-reverse
;
}
[
nvue
]
uni-view
,
[
nvue
]
uni-image
,
[
nvue
]
uni-input
,
[
nvue
]
uni-scroll-view
,
[
nvue
]
uni-swiper
,
[
nvue
]
uni-swiper-item
,
[
nvue
]
uni-text
,
[
nvue
]
uni-textarea
,
[
nvue
]
uni-video
{
position
:
relative
;
border
:
0px
solid
#000000
;
box-sizing
:
border-box
;
}
[
nvue
]
uni-swiper-item
{
position
:
absolute
;
}
uni-button
{
position
:
relative
;
display
:
block
;
margin-left
:
auto
;
margin-right
:
auto
;
padding-left
:
14px
;
padding-right
:
14px
;
box-sizing
:
border-box
;
font-size
:
18px
;
text-align
:
center
;
text-decoration
:
none
;
line-height
:
2.55555556
;
border-radius
:
5px
;
-webkit-tap-highlight-color
:
transparent
;
overflow
:
hidden
;
color
:
#000000
;
background-color
:
#F8F8F8
;
}
uni-button
[
hidden
]
{
display
:
none
!important
;
}
uni-button
:after
{
content
:
" "
;
width
:
200%
;
height
:
200%
;
position
:
absolute
;
top
:
0
;
left
:
0
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0.2
);
-webkit-transform
:
scale
(
0.5
);
transform
:
scale
(
0.5
);
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
box-sizing
:
border-box
;
border-radius
:
10px
;
}
uni-button
[
native
]
{
padding-left
:
0
;
padding-right
:
0
;
}
uni-button
[
native
]
.uni-button-cover-view-wrapper
{
border
:
inherit
;
border-color
:
inherit
;
border-radius
:
inherit
;
background-color
:
inherit
;
}
uni-button
[
native
]
.uni-button-cover-view-inner
{
padding-left
:
14px
;
padding-right
:
14px
;
}
uni-button
uni-cover-view
{
line-height
:
inherit
;
white-space
:
inherit
;
}
uni-button
[
type
=
default
]
{
color
:
#000000
;
background-color
:
#F8F8F8
;
}
uni-button
[
type
=
primary
]
{
color
:
#FFFFFF
;
background-color
:
#007aff
;
}
uni-button
[
type
=
warn
]
{
color
:
#FFFFFF
;
background-color
:
#E64340
;
}
uni-button
[
disabled
]
{
color
:
rgba
(
255
,
255
,
255
,
0.6
);
}
uni-button
[
disabled
][
type
=
default
],
uni-button
[
disabled
]
:not
([
type
])
{
color
:
rgba
(
0
,
0
,
0
,
0.3
);
background-color
:
#F7F7F7
;
}
uni-button
[
disabled
][
type
=
primary
]
{
background-color
:
rgba
(
0
,
122
,
255
,
0.6
);
}
uni-button
[
disabled
][
type
=
warn
]
{
background-color
:
#EC8B89
;
}
uni-button
[
type
=
primary
][
plain
]
{
color
:
#007aff
;
border
:
1px
solid
#007aff
;
background-color
:
transparent
;
}
uni-button
[
type
=
primary
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
0.2
);
border-color
:
rgba
(
0
,
0
,
0
,
0.2
);
}
uni-button
[
type
=
primary
][
plain
]
:after
{
border-width
:
0
;
}
uni-button
[
type
=
default
][
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
transparent
;
}
uni-button
[
type
=
default
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
0.2
);
border-color
:
rgba
(
0
,
0
,
0
,
0.2
);
}
uni-button
[
type
=
default
][
plain
]
:after
{
border-width
:
0
;
}
uni-button
[
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
transparent
;
}
uni-button
[
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
0.2
);
border-color
:
rgba
(
0
,
0
,
0
,
0.2
);
}
uni-button
[
plain
]
:after
{
border-width
:
0
;
}
uni-button
[
plain
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
;
}
uni-button
[
type
=
warn
][
plain
]
{
color
:
#e64340
;
border
:
1px
solid
#e64340
;
background-color
:
transparent
;
}
uni-button
[
type
=
warn
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
0.2
);
border-color
:
rgba
(
0
,
0
,
0
,
0.2
);
}
uni-button
[
type
=
warn
][
plain
]
:after
{
border-width
:
0
;
}
uni-button
[
size
=
mini
]
{
display
:
inline-block
;
line-height
:
2.3
;
font-size
:
13px
;
padding
:
0
1.34em
;
}
uni-button
[
size
=
mini
][
native
]
{
padding
:
0
;
}
uni-button
[
size
=
mini
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
1.34em
;
}
uni-button
[
loading
]
:before
{
content
:
" "
;
display
:
inline-block
;
width
:
18px
;
height
:
18px
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
,
end
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
,
end
)
infinite
;
background-size
:
100%
;
}
uni-button
[
loading
][
type
=
primary
]
{
color
:
rgba
(
255
,
255
,
255
,
0.6
);
background-color
:
#0062cc
;
}
uni-button
[
loading
][
type
=
primary
][
plain
]
{
color
:
#007aff
;
background-color
:
transparent
;
}
uni-button
[
loading
][
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
0.6
);
background-color
:
#DEDEDE
;
}
uni-button
[
loading
][
type
=
default
][
plain
]
{
color
:
#353535
;
background-color
:
transparent
;
}
uni-button
[
loading
][
type
=
warn
]
{
color
:
rgba
(
255
,
255
,
255
,
0.6
);
background-color
:
#CE3C39
;
}
uni-button
[
loading
][
type
=
warn
][
plain
]
{
color
:
#e64340
;
background-color
:
transparent
;
}
uni-button
[
loading
][
native
]
:before
{
content
:
none
;
}
.button-hover
{
color
:
rgba
(
0
,
0
,
0
,
0.6
);
background-color
:
#DEDEDE
;
}
.button-hover
[
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
0.6
);
border-color
:
rgba
(
53
,
53
,
53
,
0.6
);
background-color
:
transparent
;
}
.button-hover
[
type
=
primary
]
{
color
:
rgba
(
255
,
255
,
255
,
0.6
);
background-color
:
#0062cc
;
}
.button-hover
[
type
=
primary
][
plain
]
{
color
:
rgba
(
26
,
173
,
25
,
0.6
);
border-color
:
rgba
(
26
,
173
,
25
,
0.6
);
background-color
:
transparent
;
}
.button-hover
[
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
0.6
);
background-color
:
#DEDEDE
;
}
.button-hover
[
type
=
default
][
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
0.6
);
border-color
:
rgba
(
53
,
53
,
53
,
0.6
);
background-color
:
transparent
;
}
.button-hover
[
type
=
warn
]
{
color
:
rgba
(
255
,
255
,
255
,
0.6
);
background-color
:
#CE3C39
;
}
.button-hover
[
type
=
warn
][
plain
]
{
color
:
rgba
(
230
,
67
,
64
,
0.6
);
border-color
:
rgba
(
230
,
67
,
64
,
0.6
);
background-color
:
transparent
;
}
uni-canvas
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
;
}
uni-canvas
>
canvas
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
}
uni-checkbox-group
[
hidden
]
{
display
:
none
;
}
uni-checkbox
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
;
}
uni-checkbox
[
hidden
]
{
display
:
none
;
}
uni-checkbox
.uni-checkbox-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
;
}
uni-checkbox
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#D1D1D1
;
background-color
:
#FFFFFF
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
;
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
{
color
:
#007aff
;
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
"uni"
;
content
:
"\EA08"
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#E1E1E1
;
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#ADADAD
;
}
uni-checkbox-group
{
display
:
block
;
}
uni-icon
{
display
:
inline-block
;
font-size
:
0
;
box-sizing
:
border-box
;
}
uni-icon
[
hidden
]
{
display
:
none
;
}
uni-icon
>
i
{
font
:
normal
normal
normal
14px
/
1
"weui"
;
}
uni-icon
>
i
:before
{
margin
:
0
;
box-sizing
:
border-box
;
}
@font-face
{
font-weight
:
normal
;
font-style
:
normal
;
font-family
:
"weui"
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
);
}
.uni-icon-success
:before
{
content
:
"\EA06"
;
}
.uni-icon-success_circle
:before
{
content
:
"\EA07"
;
}
.uni-icon-success_no_circle
:before
{
content
:
"\EA08"
;
}
.uni-icon-safe_success
:before
{
content
:
"\EA04"
;
}
.uni-icon-safe_warn
:before
{
content
:
"\EA05"
;
}
.uni-icon-info
:before
{
content
:
"\EA03"
;
}
.uni-icon-info_circle
:before
{
content
:
"\EA0C"
;
}
.uni-icon-warn
:before
{
content
:
"\EA0B"
;
}
.uni-icon-waiting
:before
{
content
:
"\EA09"
;
}
.uni-icon-waiting_circle
:before
{
content
:
"\EA0A"
;
}
.uni-icon-circle
:before
{
content
:
"\EA01"
;
}
.uni-icon-cancel
:before
{
content
:
"\EA0D"
;
}
.uni-icon-download
:before
{
content
:
"\EA02"
;
}
.uni-icon-search
:before
{
content
:
"\EA0E"
;
}
.uni-icon-clear
:before
{
content
:
"\EA0F"
;
}
.uni-icon-success
{
color
:
#007aff
;
}
.uni-icon-success_circle
{
color
:
#007aff
;
}
.uni-icon-success_no_circle
{
color
:
#007aff
;
}
.uni-icon-safe_success
{
color
:
#007aff
;
}
.uni-icon-safe_warn
{
color
:
#ffbe00
;
}
.uni-icon-info
{
color
:
#10aeff
;
}
.uni-icon-info_circle
{
color
:
#007aff
;
}
.uni-icon-warn
{
color
:
#f76260
;
}
.uni-icon-waiting
{
color
:
#10aeff
;
}
.uni-icon-waiting_circle
{
color
:
#10aeff
;
}
.uni-icon-circle
{
color
:
#c9c9c9
;
}
.uni-icon-cancel
{
color
:
#f43530
;
}
.uni-icon-download
{
color
:
#007aff
;
}
.uni-icon-search
{
color
:
#b2b2b2
;
}
.uni-icon-clear
{
color
:
#b2b2b2
;
}
uni-image
{
width
:
320px
;
height
:
240px
;
display
:
inline-block
;
overflow
:
hidden
;
position
:
relative
;
}
uni-image
[
hidden
]
{
display
:
none
;
}
uni-image
>
div
{
width
:
100%
;
height
:
100%
;
}
uni-image
>
img
{
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
display
:
block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
opacity
:
0
;
}
uni-image
>
.uni-image-will-change
{
will-change
:
transform
;
}
uni-input
{
display
:
block
;
font-size
:
16px
;
line-height
:
1.4em
;
height
:
1.4em
;
min-height
:
1.4em
;
overflow
:
hidden
;
}
uni-input
[
hidden
]
{
display
:
none
;
}
.uni-input-wrapper
,
.uni-input-placeholder
,
.uni-input-form
,
.uni-input-input
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
;
}
.uni-input-wrapper
,
.uni-input-form
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
;
}
.uni-input-placeholder
,
.uni-input-input
{
width
:
100%
;
}
.uni-input-placeholder
{
position
:
absolute
;
top
:
50%
;
left
:
0
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
color
:
gray
;
overflow
:
hidden
;
text-overflow
:
clip
;
white-space
:
pre
;
word-break
:
keep-all
;
pointer-events
:
none
;
}
.uni-input-input
{
display
:
block
;
height
:
100%
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
;
}
.uni-input-input
[
type
=
"search"
]
::-webkit-search-cancel-button
{
display
:
none
;
}
.uni-input-input
::-webkit-outer-spin-button
,
.uni-input-input
::-webkit-inner-spin-button
{
-webkit-appearance
:
none
;
margin
:
0
;
}
.uni-input-input
[
type
=
"number"
]
{
-moz-appearance
:
textfield
;
}
uni-movable-area
{
display
:
block
;
position
:
relative
;
width
:
10px
;
height
:
10px
;
}
uni-movable-area
[
hidden
]
{
display
:
none
;
}
uni-movable-view
{
display
:
inline-block
;
width
:
10px
;
height
:
10px
;
top
:
0px
;
left
:
0px
;
position
:
absolute
;
}
uni-movable-view
[
hidden
]
{
display
:
none
;
}
.navigator-hover
{
background-color
:
rgba
(
0
,
0
,
0
,
0.1
);
opacity
:
0.7
;
}
uni-navigator
{
height
:
auto
;
width
:
auto
;
display
:
block
;
}
uni-navigator
[
hidden
]
{
display
:
none
;
}
uni-picker-view-column
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
position
:
relative
;
height
:
100%
;
overflow
:
hidden
;
}
uni-picker-view-column
[
hidden
]
{
display
:
none
;
}
.uni-picker-view-group
{
height
:
100%
;
}
.uni-picker-view-mask
{
transform
:
translateZ
(
0
);
-webkit-transform
:
translateZ
(
0
);
}
.uni-picker-view-indicator
,
.uni-picker-view-mask
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
z-index
:
3
;
}
.uni-picker-view-mask
{
top
:
0
;
height
:
100%
;
margin
:
0
auto
;
background
:
-webkit-linear-gradient
(
top
,
hsla
(
0
,
0%
,
100%
,
0.95
),
hsla
(
0
,
0%
,
100%
,
0.6
)
),
-webkit-linear-gradient
(
bottom
,
hsla
(
0
,
0%
,
100%
,
0.95
),
hsla
(
0
,
0%
,
100%
,
0.6
));
background
:
linear-gradient
(
180deg
,
hsla
(
0
,
0%
,
100%
,
0.95
),
hsla
(
0
,
0%
,
100%
,
0.6
)
),
linear-gradient
(
0deg
,
hsla
(
0
,
0%
,
100%
,
0.95
),
hsla
(
0
,
0%
,
100%
,
0.6
));
background-position
:
top
,
bottom
;
background-size
:
100%
102px
;
background-repeat
:
no-repeat
;
}
.uni-picker-view-indicator
{
height
:
34px
;
/* top: 102px; */
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
}
.uni-picker-view-indicator
,
.uni-picker-view-mask
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
z-index
:
3
;
pointer-events
:
none
;
}
.uni-picker-view-content
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
will-change
:
transform
;
padding
:
102px
0
;
}
.uni-picker-view-content
>
*
{
height
:
34px
;
overflow
:
hidden
;
}
.uni-picker-view-indicator
:after
,
.uni-picker-view-indicator
:before
{
content
:
" "
;
position
:
absolute
;
left
:
0
;
right
:
0
;
height
:
1px
;
color
:
#e5e5e5
;
}
.uni-picker-view-indicator
:before
{
top
:
0
;
border-top
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
-webkit-transform
:
scaleY
(
0.5
);
transform
:
scaleY
(
0.5
);
}
.uni-picker-view-indicator
:after
{
bottom
:
0
;
border-bottom
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
100%
;
transform-origin
:
0
100%
;
-webkit-transform
:
scaleY
(
0.5
);
transform
:
scaleY
(
0.5
);
}
.uni-picker-view-indicator
:after
,
.uni-picker-view-indicator
:before
{
content
:
" "
;
position
:
absolute
;
left
:
0
;
right
:
0
;
height
:
1px
;
color
:
#e5e5e5
;
}
uni-picker-view
{
display
:
block
;
}
uni-picker-view
.uni-picker-view-wrapper
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
position
:
relative
;
overflow
:
hidden
;
height
:
100%
;
}
uni-picker-view
[
hidden
]
{
display
:
none
;
}
uni-picker
{
display
:
block
;
}
uni-progress
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
}
uni-progress
[
hidden
]
{
display
:
none
;
}
.uni-progress-bar
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
}
.uni-progress-inner-bar
{
width
:
0
;
height
:
100%
;
}
.uni-progress-info
{
margin-top
:
0
;
margin-bottom
:
0
;
min-width
:
2em
;
margin-left
:
15px
;
font-size
:
16px
;
}
uni-radio-group
[
hidden
]
{
display
:
none
;
}
uni-radio
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
;
}
uni-radio
[
hidden
]
{
display
:
none
;
}
uni-radio
.uni-radio-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
;
}
uni-radio
.uni-radio-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
margin-right
:
5px
;
outline
:
0
;
border
:
1px
solid
#D1D1D1
;
background-color
:
#ffffff
;
border-radius
:
50%
;
width
:
22px
;
height
:
22px
;
position
:
relative
;
}
uni-radio
.uni-radio-input.uni-radio-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
"uni"
;
content
:
"\EA08"
;
color
:
#ffffff
;
font-size
:
18px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
}
uni-radio
.uni-radio-input.uni-radio-input-disabled
{
background-color
:
#E1E1E1
;
border-color
:
#D1D1D1
;
}
uni-radio
.uni-radio-input.uni-radio-input-disabled
:before
{
color
:
#ADADAD
;
}
uni-radio-group
{
display
:
block
;
}
@-webkit-keyframes
once-show
{
from
{
top
:
0
;
}
}
@keyframes
once-show
{
from
{
top
:
0
;
}
}
uni-resize-sensor
,
uni-resize-sensor
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
overflow
:
hidden
;
}
uni-resize-sensor
{
display
:
block
;
z-index
:
-1
;
visibility
:
hidden
;
-webkit-animation
:
once-show
1ms
;
animation
:
once-show
1ms
;
}
uni-resize-sensor
>
div
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
;
}
uni-resize-sensor
>
div
:first-child
>
div
{
width
:
100000px
;
height
:
100000px
;
}
uni-resize-sensor
>
div
:last-child
>
div
{
width
:
200%
;
height
:
200%
;
}
uni-scroll-view
{
display
:
block
;
width
:
100%
;
}
uni-scroll-view
[
hidden
]
{
display
:
none
;
}
.uni-scroll-view
{
position
:
relative
;
-webkit-overflow-scrolling
:
touch
;
width
:
100%
;
/* display: flex; 时在安卓下会导致scrollWidth和offsetWidth一样 */
height
:
100%
;
max-height
:
inherit
;
}
uni-slider
{
margin
:
10px
18px
;
padding
:
0
;
display
:
block
;
}
uni-slider
[
hidden
]
{
display
:
none
;
}
uni-slider
.uni-slider-wrapper
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
min-height
:
16px
;
}
uni-slider
.uni-slider-tap-area
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
padding
:
8px
0
;
}
uni-slider
.uni-slider-handle-wrapper
{
position
:
relative
;
height
:
2px
;
border-radius
:
5px
;
background-color
:
#e9e9e9
;
cursor
:
pointer
;
-webkit-transition
:
background-color
0.3s
ease
;
transition
:
background-color
0.3s
ease
;
-webkit-tap-highlight-color
:
transparent
;
}
uni-slider
.uni-slider-track
{
height
:
100%
;
border-radius
:
6px
;
background-color
:
#007aff
;
-webkit-transition
:
background-color
0.3s
ease
;
transition
:
background-color
0.3s
ease
;
}
uni-slider
.uni-slider-handle
,
uni-slider
.uni-slider-thumb
{
position
:
absolute
;
left
:
50%
;
top
:
50%
;
cursor
:
pointer
;
border-radius
:
50%
;
-webkit-transition
:
border-color
0.3s
ease
;
transition
:
border-color
0.3s
ease
;
}
uni-slider
.uni-slider-handle
{
width
:
28px
;
height
:
28px
;
margin-top
:
-14px
;
margin-left
:
-14px
;
background-color
:
transparent
;
z-index
:
3
;
}
uni-slider
.uni-slider-thumb
{
z-index
:
2
;
box-shadow
:
0
0
4px
rgba
(
0
,
0
,
0
,
0.2
);
}
uni-slider
.uni-slider-step
{
position
:
absolute
;
width
:
100%
;
height
:
2px
;
background
:
transparent
;
z-index
:
1
;
}
uni-slider
.uni-slider-value
{
color
:
#888
;
font-size
:
14px
;
margin-left
:
1em
;
}
uni-slider
.uni-slider-disabled
.uni-slider-track
{
background-color
:
#ccc
;
}
uni-slider
.uni-slider-disabled
.uni-slider-thumb
{
background-color
:
#FFF
;
border-color
:
#ccc
;
}
uni-swiper-item
{
display
:
block
;
overflow
:
hidden
;
will-change
:
transform
;
position
:
absolute
;
width
:
100%
;
height
:
100%
;
}
uni-swiper-item
[
hidden
]
{
display
:
none
;
}
uni-swiper
{
display
:
block
;
height
:
150px
;
}
uni-swiper
[
hidden
]
{
display
:
none
;
}
uni-swiper
.uni-swiper-wrapper
{
overflow
:
hidden
;
position
:
relative
;
width
:
100%
;
height
:
100%
;
-webkit-transform
:
translateZ
(
0
);
transform
:
translateZ
(
0
);
}
uni-swiper
.uni-swiper-slides
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
}
uni-swiper
.uni-swiper-slide-frame
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
will-change
:
transform
;
}
uni-swiper
.uni-swiper-dots
{
position
:
absolute
;
font-size
:
0
;
}
uni-swiper
.uni-swiper-dots-horizontal
{
left
:
50%
;
bottom
:
10px
;
text-align
:
center
;
white-space
:
nowrap
;
-webkit-transform
:
translate
(
-50%
,
0
);
transform
:
translate
(
-50%
,
0
);
}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
{
margin-right
:
8px
;
}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
:last-child
{
margin-right
:
0
;
}
uni-swiper
.uni-swiper-dots-vertical
{
right
:
10px
;
top
:
50%
;
text-align
:
right
;
-webkit-transform
:
translate
(
0
,
-50%
);
transform
:
translate
(
0
,
-50%
);
}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
{
display
:
block
;
margin-bottom
:
9px
;
}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
:last-child
{
margin-bottom
:
0
;
}
uni-swiper
.uni-swiper-dot
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
cursor
:
pointer
;
-webkit-transition-property
:
background-color
;
transition-property
:
background-color
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
;
background
:
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
50%
;
}
uni-swiper
.uni-swiper-dot-active
{
background-color
:
#000000
;
}
uni-switch
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
;
}
uni-switch
[
hidden
]
{
display
:
none
;
}
uni-switch
.uni-switch-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
;
}
uni-switch
.uni-switch-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
position
:
relative
;
width
:
52px
;
height
:
32px
;
margin-right
:
5px
;
border
:
1px
solid
#DFDFDF
;
outline
:
0
;
border-radius
:
16px
;
box-sizing
:
border-box
;
background-color
:
#DFDFDF
;
-webkit-transition
:
background-color
0.1s
,
border
0.1s
;
transition
:
background-color
0.1s
,
border
0.1s
;
}
uni-switch
.uni-switch-input
:before
{
content
:
" "
;
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
50px
;
height
:
30px
;
border-radius
:
15px
;
background-color
:
#FDFDFD
;
transition
:
-webkit-transform
0.3s
;
-webkit-transition
:
-webkit-transform
0.3s
;
transition
:
transform
0.3s
;
transition
:
transform
0.3s
,
-webkit-transform
0.3s
;
}
uni-switch
.uni-switch-input
:after
{
content
:
" "
;
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
30px
;
height
:
30px
;
border-radius
:
15px
;
background-color
:
#FFFFFF
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.4
);
transition
:
-webkit-transform
0.3s
;
-webkit-transition
:
-webkit-transform
0.3s
;
transition
:
transform
0.3s
;
transition
:
transform
0.3s
,
-webkit-transform
0.3s
;
}
uni-switch
.uni-switch-input.uni-switch-input-checked
{
border-color
:
#007aff
;
background-color
:
#007aff
;
}
uni-switch
.uni-switch-input.uni-switch-input-checked
:before
{
-webkit-transform
:
scale
(
0
);
transform
:
scale
(
0
);
}
uni-switch
.uni-switch-input.uni-switch-input-checked
:after
{
-webkit-transform
:
translateX
(
20px
);
transform
:
translateX
(
20px
);
}
uni-switch
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#D1D1D1
;
background-color
:
#FFFFFF
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
;
color
:
#007aff
;
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
"uni"
;
content
:
"\EA08"
;
color
:
inherit
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
0.73
);
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#E1E1E1
;
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#ADADAD
;
}
uni-text
[
selectable
]
{
cursor
:
auto
;
user-select
:
text
;
-webkit-user-select
:
text
;
}
uni-textarea
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
;
font-size
:
16px
;
line-height
:
normal
;
}
uni-textarea
[
hidden
]
{
display
:
none
;
}
uni-textarea
[
auto-height
]
.uni-textarea-textarea
{
overflow-y
:
hidden
;
}
.uni-textarea-wrapper
,
.uni-textarea-placeholder
,
.uni-textarea-compute
,
.uni-textarea-textarea
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
;
}
.uni-textarea-wrapper
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
;
}
.uni-textarea-placeholder
,
.uni-textarea-compute
,
.uni-textarea-textarea
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
white-space
:
pre-wrap
;
word-break
:
break-all
;
}
.uni-textarea-placeholder
{
color
:
grey
;
overflow
:
hidden
;
}
.uni-textarea-compute
{
visibility
:
hidden
;
height
:
auto
;
}
.uni-textarea-textarea
{
resize
:
none
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
;
}
/* 用于解决 iOS textarea 内部默认边距 */
.uni-textarea-textarea-ios
{
width
:
auto
;
right
:
0
;
margin
:
0
-3px
;
}
uni-view
{
display
:
block
;
}
uni-view
[
hidden
]
{
display
:
none
;
}
packages/uni-app-plus/dist/view.umd.js
浏览文件 @
5b4abb66
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
packages/uni-cli-shared/lib/pages.js
浏览文件 @
5b4abb66
...
...
@@ -146,17 +146,18 @@ function isValidPage (page, root = '') {
// 存储 nvue 相关信息
pagePath
=
normalizePath
(
path
.
join
(
root
,
pagePath
))
// if (process.env.UNI_USING_NVUE_COMPILER) {
process
.
UNI_NVUE_ENTRY
[
pagePath
]
=
getNVueMainJsPath
(
pagePath
)
// } else {
// process.UNI_NVUE_ENTRY[pagePath] = path.resolve(process.env.UNI_INPUT_DIR, pagePath + '.nvue') + '?entry'
// }
uniNVuePages
.
push
({
'
path
'
:
pagePath
+
'
.html
'
,
'
style
'
:
page
.
style
||
{}
})
return
false
if
(
process
.
env
.
UNI_USING_V3
)
{
// 不移除
page
.
nvue
=
true
return
true
}
else
{
uniNVuePages
.
push
({
'
path
'
:
pagePath
+
'
.html
'
,
'
style
'
:
page
.
style
||
{}
})
return
false
}
}
return
true
...
...
@@ -202,7 +203,7 @@ function parsePages (pagesJson, pageCallback, subPageCallback) {
}
}
function
parseEntry
(
pagesJson
)
{
function
parseEntry
(
pagesJson
)
{
process
.
UNI_ENTRY
=
{
'
common/main
'
:
path
.
resolve
(
process
.
env
.
UNI_INPUT_DIR
,
getMainEntry
())
}
...
...
packages/uni-cli-shared/lib/platform.js
浏览文件 @
5b4abb66
...
...
@@ -139,10 +139,17 @@ const PLATFORMS = {
})
}
let
template
=
[]
let
view
=
[]
if
(
process
.
env
.
UNI_USING_V3
)
{
view
=
getCopyOptions
([
require
.
resolve
(
'
@dcloudio/uni-app-plus/dist/view.css
'
),
// TODO view.umd.min.js
require
.
resolve
(
'
@dcloudio/uni-app-plus/dist/view.umd.js
'
)
])
template
=
getCopyOptions
([
path
.
resolve
(
__dirname
,
'
../template
'
)])
}
return
[
...
view
,
...
template
,
...
getStaticCopyOptions
(
assetsDir
),
...
wxcomponents
,
...
...
packages/uni-cli-shared/template/view.css
已删除
100644 → 0
浏览文件 @
5c1d23b2
*
{
margin
:
0
;
-webkit-tap-highlight-color
:
transparent
}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
uni
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
unibtn
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
body
,
html
{
-webkit-user-select
:
none
;
user-select
:
none
;
width
:
100%
;
height
:
100%
}
body
{
overflow-x
:
hidden
}
[
class
*=
" uni-icon-"
],[
class
^=
uni-icon-
]
{
display
:
inline-block
;
vertical-align
:
middle
;
font
:
normal
normal
normal
14px
/
1
uni
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
}
[
class
*=
" uni-btn-icon"
],[
class
^=
uni-btn-icon
]
{
display
:
inline-block
;
font
:
normal
normal
normal
14px
/
1
unibtn
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
}
[
class
*=
" uni-btn-icon"
]
:before
,[
class
^=
uni-btn-icon
]
:before
{
margin
:
0
;
box-sizing
:
border-box
}
.uni-icon-success-no-circle
:before
{
content
:
"\EA08"
}
.uni-loading
,
uni-button
[
loading
]
:before
{
background
:
rgba
(
0
,
0
,
0
,
0
)
url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=")
no-repeat
}
.uni-loading
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
)
infinite
;
background-size
:
100%
}
@-webkit-keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
to
{
-webkit-transform
:
rotate
(
1turn
);
transform
:
rotate
(
1turn
)}}
@keyframes
uni-loading
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
to
{
-webkit-transform
:
rotate
(
1turn
);
transform
:
rotate
(
1turn
)}}
.uni-mask
{
position
:
fixed
;
z-index
:
999
;
top
:
0
;
right
:
0
;
left
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
.6
)}
.uni-fade-enter-active
,
.uni-fade-leave-active
{
-webkit-transition-duration
:
.25s
;
transition-duration
:
.25s
;
-webkit-transition-property
:
opacity
;
transition-property
:
opacity
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
}
.uni-fade-enter
,
.uni-fade-leave-active
{
opacity
:
0
}
[
nvue
]
uni-scroll-view
,[
nvue
]
uni-swiper-item
,[
nvue
]
uni-view
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
-webkit-flex-shrink
:
0
;
flex-shrink
:
0
;
-webkit-box-flex
:
0
;
-webkit-flex-grow
:
0
;
flex-grow
:
0
;
-webkit-flex-basis
:
auto
;
flex-basis
:
auto
;
-webkit-box-align
:
stretch
;
-webkit-align-items
:
stretch
;
align-items
:
stretch
;
-webkit-align-content
:
flex-start
;
align-content
:
flex-start
}
[
nvue-dir-row
]
uni-swiper-item
,[
nvue-dir-row
]
uni-view
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
row
;
flex-direction
:
row
}
[
nvue-dir-column
]
uni-swiper-item
,[
nvue-dir-column
]
uni-view
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
;
-webkit-flex-direction
:
column
;
flex-direction
:
column
}
[
nvue-dir-row-reverse
]
uni-swiper-item
,[
nvue-dir-row-reverse
]
uni-view
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
row-reverse
;
flex-direction
:
row-reverse
}
[
nvue-dir-column-reverse
]
uni-swiper-item
,[
nvue-dir-column-reverse
]
uni-view
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
reverse
;
-webkit-flex-direction
:
column-reverse
;
flex-direction
:
column-reverse
}
[
nvue
]
uni-image
,[
nvue
]
uni-input
,[
nvue
]
uni-scroll-view
,[
nvue
]
uni-swiper
,[
nvue
]
uni-swiper-item
,[
nvue
]
uni-text
,[
nvue
]
uni-textarea
,[
nvue
]
uni-video
,[
nvue
]
uni-view
{
position
:
relative
;
border
:
0
solid
#000
;
box-sizing
:
border-box
}
[
nvue
]
uni-swiper-item
{
position
:
absolute
}
uni-button
{
position
:
relative
;
display
:
block
;
margin-left
:
auto
;
margin-right
:
auto
;
padding-left
:
14px
;
padding-right
:
14px
;
box-sizing
:
border-box
;
font-size
:
18px
;
text-align
:
center
;
text-decoration
:
none
;
line-height
:
2.55555556
;
border-radius
:
5px
;
-webkit-tap-highlight-color
:
transparent
;
overflow
:
hidden
;
color
:
#000
;
background-color
:
#f8f8f8
}
uni-button
[
hidden
]
{
display
:
none
!important
}
uni-button
:after
{
content
:
" "
;
width
:
200%
;
height
:
200%
;
position
:
absolute
;
top
:
0
;
left
:
0
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
.2
);
-webkit-transform
:
scale
(
.5
);
transform
:
scale
(
.5
);
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
box-sizing
:
border-box
;
border-radius
:
10px
}
uni-button
[
native
]
{
padding-left
:
0
;
padding-right
:
0
}
uni-button
[
native
]
.uni-button-cover-view-wrapper
{
border
:
inherit
;
border-color
:
inherit
;
border-radius
:
inherit
;
background-color
:
inherit
}
uni-button
[
native
]
.uni-button-cover-view-inner
{
padding-left
:
14px
;
padding-right
:
14px
}
uni-button
uni-cover-view
{
line-height
:
inherit
;
white-space
:
inherit
}
uni-button
[
type
=
default
]
{
color
:
#000
;
background-color
:
#f8f8f8
}
uni-button
[
type
=
primary
]
{
color
:
#fff
;
background-color
:
#007aff
}
uni-button
[
type
=
warn
]
{
color
:
#fff
;
background-color
:
#e64340
}
uni-button
[
disabled
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
)}
uni-button
[
disabled
]
:not
([
type
]),
uni-button
[
disabled
][
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.3
);
background-color
:
#f7f7f7
}
uni-button
[
disabled
][
type
=
primary
]
{
background-color
:
rgba
(
0
,
122
,
255
,
.6
)}
uni-button
[
disabled
][
type
=
warn
]
{
background-color
:
#ec8b89
}
uni-button
[
type
=
primary
][
plain
]
{
color
:
#007aff
;
border
:
1px
solid
#007aff
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
primary
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
primary
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
type
=
default
][
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
default
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
default
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
plain
]
{
color
:
#353535
;
border
:
1px
solid
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
plain
]
:after
{
border-width
:
0
}
uni-button
[
plain
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
}
uni-button
[
type
=
warn
][
plain
]
{
color
:
#e64340
;
border
:
1px
solid
#e64340
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
type
=
warn
][
plain
][
disabled
]
{
color
:
rgba
(
0
,
0
,
0
,
.2
);
border-color
:
rgba
(
0
,
0
,
0
,
.2
)}
uni-button
[
type
=
warn
][
plain
]
:after
{
border-width
:
0
}
uni-button
[
size
=
mini
]
{
display
:
inline-block
;
line-height
:
2.3
;
font-size
:
13px
;
padding
:
0
1.34em
}
uni-button
[
size
=
mini
][
native
]
{
padding
:
0
}
uni-button
[
size
=
mini
][
native
]
.uni-button-cover-view-inner
{
padding
:
0
1.34em
}
uni-button
[
loading
]
:before
{
content
:
" "
;
display
:
inline-block
;
width
:
18px
;
height
:
18px
;
vertical-align
:
middle
;
-webkit-animation
:
uni-loading
1s
steps
(
12
)
infinite
;
animation
:
uni-loading
1s
steps
(
12
)
infinite
;
background-size
:
100%
}
uni-button
[
loading
][
type
=
primary
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#0062cc
}
uni-button
[
loading
][
type
=
primary
][
plain
]
{
color
:
#007aff
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
uni-button
[
loading
][
type
=
default
][
plain
]
{
color
:
#353535
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
type
=
warn
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#ce3c39
}
uni-button
[
loading
][
type
=
warn
][
plain
]
{
color
:
#e64340
;
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-button
[
loading
][
native
]
:before
{
content
:
none
}
.button-hover
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
.button-hover
[
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
.6
);
border-color
:
rgba
(
53
,
53
,
53
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
primary
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#0062cc
}
.button-hover
[
type
=
primary
][
plain
]
{
color
:
rgba
(
26
,
173
,
25
,
.6
);
border-color
:
rgba
(
26
,
173
,
25
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
default
]
{
color
:
rgba
(
0
,
0
,
0
,
.6
);
background-color
:
#dedede
}
.button-hover
[
type
=
default
][
plain
]
{
color
:
rgba
(
53
,
53
,
53
,
.6
);
border-color
:
rgba
(
53
,
53
,
53
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
.button-hover
[
type
=
warn
]
{
color
:
hsla
(
0
,
0%
,
100%
,
.6
);
background-color
:
#ce3c39
}
.button-hover
[
type
=
warn
][
plain
]
{
color
:
rgba
(
230
,
67
,
64
,
.6
);
border-color
:
rgba
(
230
,
67
,
64
,
.6
);
background-color
:
rgba
(
0
,
0
,
0
,
0
)}
uni-canvas
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
}
uni-canvas
>
canvas
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
}
uni-checkbox-group
[
hidden
]
{
display
:
none
}
uni-checkbox
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-checkbox
[
hidden
]
{
display
:
none
}
uni-checkbox
.uni-checkbox-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-checkbox
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
{
color
:
#007aff
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#e1e1e1
}
uni-checkbox
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#adadad
}
uni-checkbox-group
{
display
:
block
}
uni-icon
{
display
:
inline-block
;
font-size
:
0
;
box-sizing
:
border-box
}
uni-icon
[
hidden
]
{
display
:
none
}
uni-icon
>
i
{
font
:
normal
normal
normal
14px
/
1
weui
}
uni-icon
>
i
:before
{
margin
:
0
;
box-sizing
:
border-box
}
@font-face
{
font-weight
:
400
;
font-style
:
normal
;
font-family
:
weui
;
src
:
url("data:application/octet-stream;base64,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")
format
(
"truetype"
)}
.uni-icon-success
:before
{
content
:
"\EA06"
}
.uni-icon-success_circle
:before
{
content
:
"\EA07"
}
.uni-icon-success_no_circle
:before
{
content
:
"\EA08"
}
.uni-icon-safe_success
:before
{
content
:
"\EA04"
}
.uni-icon-safe_warn
:before
{
content
:
"\EA05"
}
.uni-icon-info
:before
{
content
:
"\EA03"
}
.uni-icon-info_circle
:before
{
content
:
"\EA0C"
}
.uni-icon-warn
:before
{
content
:
"\EA0B"
}
.uni-icon-waiting
:before
{
content
:
"\EA09"
}
.uni-icon-waiting_circle
:before
{
content
:
"\EA0A"
}
.uni-icon-circle
:before
{
content
:
"\EA01"
}
.uni-icon-cancel
:before
{
content
:
"\EA0D"
}
.uni-icon-download
:before
{
content
:
"\EA02"
}
.uni-icon-search
:before
{
content
:
"\EA0E"
}
.uni-icon-clear
:before
{
content
:
"\EA0F"
}
.uni-icon-safe_success
,
.uni-icon-success
,
.uni-icon-success_circle
,
.uni-icon-success_no_circle
{
color
:
#007aff
}
.uni-icon-safe_warn
{
color
:
#ffbe00
}
.uni-icon-info
{
color
:
#10aeff
}
.uni-icon-info_circle
{
color
:
#007aff
}
.uni-icon-warn
{
color
:
#f76260
}
.uni-icon-waiting
,
.uni-icon-waiting_circle
{
color
:
#10aeff
}
.uni-icon-circle
{
color
:
#c9c9c9
}
.uni-icon-cancel
{
color
:
#f43530
}
.uni-icon-download
{
color
:
#007aff
}
.uni-icon-clear
,
.uni-icon-search
{
color
:
#b2b2b2
}
uni-image
{
width
:
320px
;
height
:
240px
;
display
:
inline-block
;
overflow
:
hidden
;
position
:
relative
}
uni-image
[
hidden
]
{
display
:
none
}
uni-image
>
div
,
uni-image
>
img
{
width
:
100%
;
height
:
100%
}
uni-image
>
img
{
-webkit-touch-callout
:
none
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
display
:
block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
opacity
:
0
}
uni-image
>
.uni-image-will-change
{
will-change
:
transform
}
uni-input
{
display
:
block
;
font-size
:
16px
;
line-height
:
1.4em
;
height
:
1.4em
;
min-height
:
1.4em
;
overflow
:
hidden
}
uni-input
[
hidden
]
{
display
:
none
}
.uni-input-form
,
.uni-input-input
,
.uni-input-placeholder
,
.uni-input-wrapper
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
}
.uni-input-form
,
.uni-input-wrapper
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
}
.uni-input-input
,
.uni-input-placeholder
{
width
:
100%
}
.uni-input-placeholder
{
position
:
absolute
;
top
:
50%
;
left
:
0
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
color
:
grey
;
overflow
:
hidden
;
text-overflow
:
clip
;
white-space
:
pre
;
word-break
:
keep-all
;
pointer-events
:
none
}
.uni-input-input
{
display
:
block
;
height
:
100%
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
}
.uni-input-input
[
type
=
search
]
::-webkit-search-cancel-button
{
display
:
none
}
.uni-input-input
::-webkit-inner-spin-button
,
.uni-input-input
::-webkit-outer-spin-button
{
-webkit-appearance
:
none
;
margin
:
0
}
.uni-input-input
[
type
=
number
]
{
-moz-appearance
:
textfield
}
uni-movable-area
{
display
:
block
;
position
:
relative
;
width
:
10px
;
height
:
10px
}
uni-movable-area
[
hidden
]
{
display
:
none
}
uni-movable-view
{
display
:
inline-block
;
width
:
10px
;
height
:
10px
;
top
:
0
;
left
:
0
;
position
:
absolute
}
uni-movable-view
[
hidden
]
{
display
:
none
}
.navigator-hover
{
background-color
:
rgba
(
0
,
0
,
0
,
.1
);
opacity
:
.7
}
uni-navigator
{
height
:
auto
;
width
:
auto
;
display
:
block
}
uni-navigator
[
hidden
]
{
display
:
none
}
uni-picker-view-column
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
position
:
relative
;
height
:
100%
;
overflow
:
hidden
}
uni-picker-view-column
[
hidden
]
{
display
:
none
}
.uni-picker-view-group
{
height
:
100%
}
.uni-picker-view-mask
{
transform
:
translateZ
(
0
);
-webkit-transform
:
translateZ
(
0
);
top
:
0
;
height
:
100%
;
margin
:
0
auto
;
background
:
-webkit-linear-gradient
(
top
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
)),
-webkit-linear-gradient
(
bottom
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
));
background
:
linear-gradient
(
180deg
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
)),
linear-gradient
(
0deg
,
hsla
(
0
,
0%
,
100%
,
.95
),
hsla
(
0
,
0%
,
100%
,
.6
));
background-position
:
top
,
bottom
;
background-size
:
100%
102px
;
background-repeat
:
no-repeat
}
.uni-picker-view-indicator
{
height
:
34px
;
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
)}
.uni-picker-view-indicator
,
.uni-picker-view-mask
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
z-index
:
3
;
pointer-events
:
none
}
.uni-picker-view-content
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
will-change
:
transform
;
padding
:
102px
0
}
.uni-picker-view-content
>*
{
height
:
34px
;
overflow
:
hidden
}
.uni-picker-view-indicator
:before
{
top
:
0
;
border-top
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
0
;
transform-origin
:
0
0
;
-webkit-transform
:
scaleY
(
.5
);
transform
:
scaleY
(
.5
)}
.uni-picker-view-indicator
:after
{
bottom
:
0
;
border-bottom
:
1px
solid
#e5e5e5
;
-webkit-transform-origin
:
0
100%
;
transform-origin
:
0
100%
;
-webkit-transform
:
scaleY
(
.5
);
transform
:
scaleY
(
.5
)}
.uni-picker-view-indicator
:after
,
.uni-picker-view-indicator
:before
{
content
:
" "
;
position
:
absolute
;
left
:
0
;
right
:
0
;
height
:
1px
;
color
:
#e5e5e5
}
uni-picker-view
{
display
:
block
}
uni-picker-view
.uni-picker-view-wrapper
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
flex
;
position
:
relative
;
overflow
:
hidden
;
height
:
100%
}
uni-picker-view
[
hidden
]
{
display
:
none
}
uni-picker
{
display
:
block
}
uni-progress
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
}
uni-progress
[
hidden
]
{
display
:
none
}
.uni-progress-bar
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
}
.uni-progress-inner-bar
{
width
:
0
;
height
:
100%
}
.uni-progress-info
{
margin-top
:
0
;
margin-bottom
:
0
;
min-width
:
2em
;
margin-left
:
15px
;
font-size
:
16px
}
uni-radio-group
[
hidden
]
{
display
:
none
}
uni-radio
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-radio
[
hidden
]
{
display
:
none
}
uni-radio
.uni-radio-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-radio
.uni-radio-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
margin-right
:
5px
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
50%
;
width
:
22px
;
height
:
22px
;
position
:
relative
}
uni-radio
.uni-radio-input.uni-radio-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
color
:
#fff
;
font-size
:
18px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-radio
.uni-radio-input.uni-radio-input-disabled
{
background-color
:
#e1e1e1
;
border-color
:
#d1d1d1
}
uni-radio
.uni-radio-input.uni-radio-input-disabled
:before
{
color
:
#adadad
}
uni-radio-group
{
display
:
block
}
@-webkit-keyframes
once-show
{
0
%
{
top
:
0
}}
@keyframes
once-show
{
0
%
{
top
:
0
}}
uni-resize-sensor
,
uni-resize-sensor
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
overflow
:
hidden
}
uni-resize-sensor
{
display
:
block
;
z-index
:
-1
;
visibility
:
hidden
;
-webkit-animation
:
once-show
1ms
;
animation
:
once-show
1ms
}
uni-resize-sensor
>
div
>
div
{
position
:
absolute
;
left
:
0
;
top
:
0
}
uni-resize-sensor
>
div
:first-child
>
div
{
width
:
100000px
;
height
:
100000px
}
uni-resize-sensor
>
div
:last-child
>
div
{
width
:
200%
;
height
:
200%
}
uni-scroll-view
{
display
:
block
;
width
:
100%
}
uni-scroll-view
[
hidden
]
{
display
:
none
}
.uni-scroll-view
{
position
:
relative
;
-webkit-overflow-scrolling
:
touch
;
width
:
100%
;
height
:
100%
;
max-height
:
inherit
}
uni-slider
{
margin
:
10px
18px
;
padding
:
0
;
display
:
block
}
uni-slider
[
hidden
]
{
display
:
none
}
uni-slider
.uni-slider-wrapper
{
display
:
-webkit-flex
;
display
:
-webkit-box
;
display
:
flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
min-height
:
16px
}
uni-slider
.uni-slider-tap-area
{
-webkit-flex
:
1
;
-webkit-box-flex
:
1
;
flex
:
1
;
padding
:
8px
0
}
uni-slider
.uni-slider-handle-wrapper
{
position
:
relative
;
height
:
2px
;
border-radius
:
5px
;
background-color
:
#e9e9e9
;
cursor
:
pointer
;
-webkit-tap-highlight-color
:
transparent
}
uni-slider
.uni-slider-handle-wrapper
,
uni-slider
.uni-slider-track
{
-webkit-transition
:
background-color
.3s
ease
;
transition
:
background-color
.3s
ease
}
uni-slider
.uni-slider-track
{
height
:
100%
;
border-radius
:
6px
;
background-color
:
#007aff
}
uni-slider
.uni-slider-handle
,
uni-slider
.uni-slider-thumb
{
position
:
absolute
;
left
:
50%
;
top
:
50%
;
cursor
:
pointer
;
border-radius
:
50%
;
-webkit-transition
:
border-color
.3s
ease
;
transition
:
border-color
.3s
ease
}
uni-slider
.uni-slider-handle
{
width
:
28px
;
height
:
28px
;
margin-top
:
-14px
;
margin-left
:
-14px
;
background-color
:
rgba
(
0
,
0
,
0
,
0
);
z-index
:
3
}
uni-slider
.uni-slider-thumb
{
z-index
:
2
;
box-shadow
:
0
0
4px
rgba
(
0
,
0
,
0
,
.2
)}
uni-slider
.uni-slider-step
{
position
:
absolute
;
width
:
100%
;
height
:
2px
;
background
:
rgba
(
0
,
0
,
0
,
0
);
z-index
:
1
}
uni-slider
.uni-slider-value
{
color
:
#888
;
font-size
:
14px
;
margin-left
:
1em
}
uni-slider
.uni-slider-disabled
.uni-slider-track
{
background-color
:
#ccc
}
uni-slider
.uni-slider-disabled
.uni-slider-thumb
{
background-color
:
#fff
;
border-color
:
#ccc
}
uni-swiper-item
{
display
:
block
;
overflow
:
hidden
;
will-change
:
transform
;
position
:
absolute
;
width
:
100%
;
height
:
100%
}
uni-swiper-item
[
hidden
]
{
display
:
none
}
uni-swiper
{
display
:
block
;
height
:
150px
}
uni-swiper
[
hidden
]
{
display
:
none
}
uni-swiper
.uni-swiper-wrapper
{
overflow
:
hidden
;
position
:
relative
;
width
:
100%
;
height
:
100%
;
-webkit-transform
:
translateZ
(
0
);
transform
:
translateZ
(
0
)}
uni-swiper
.uni-swiper-slides
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
}
uni-swiper
.uni-swiper-slide-frame
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
will-change
:
transform
}
uni-swiper
.uni-swiper-dots
{
position
:
absolute
;
font-size
:
0
}
uni-swiper
.uni-swiper-dots-horizontal
{
left
:
50%
;
bottom
:
10px
;
text-align
:
center
;
white-space
:
nowrap
;
-webkit-transform
:
translate
(
-50%
);
transform
:
translate
(
-50%
)}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
{
margin-right
:
8px
}
uni-swiper
.uni-swiper-dots-horizontal
.uni-swiper-dot
:last-child
{
margin-right
:
0
}
uni-swiper
.uni-swiper-dots-vertical
{
right
:
10px
;
top
:
50%
;
text-align
:
right
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
)}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
{
display
:
block
;
margin-bottom
:
9px
}
uni-swiper
.uni-swiper-dots-vertical
.uni-swiper-dot
:last-child
{
margin-bottom
:
0
}
uni-swiper
.uni-swiper-dot
{
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
cursor
:
pointer
;
-webkit-transition-property
:
background-color
;
transition-property
:
background-color
;
-webkit-transition-timing-function
:
ease
;
transition-timing-function
:
ease
;
background
:
rgba
(
0
,
0
,
0
,
.3
);
border-radius
:
50%
}
uni-swiper
.uni-swiper-dot-active
{
background-color
:
#000
}
uni-switch
{
-webkit-tap-highlight-color
:
transparent
;
display
:
inline-block
}
uni-switch
[
hidden
]
{
display
:
none
}
uni-switch
.uni-switch-wrapper
{
display
:
-webkit-inline-flex
;
display
:
-webkit-inline-box
;
display
:
inline-flex
;
-webkit-align-items
:
center
;
-webkit-box-align
:
center
;
align-items
:
center
;
vertical-align
:
middle
}
uni-switch
.uni-switch-input
{
-webkit-appearance
:
none
;
appearance
:
none
;
position
:
relative
;
width
:
52px
;
height
:
32px
;
margin-right
:
5px
;
border
:
1px
solid
#dfdfdf
;
outline
:
0
;
border-radius
:
16px
;
box-sizing
:
border-box
;
background-color
:
#dfdfdf
;
-webkit-transition
:
background-color
.1s
,
border
.1s
;
transition
:
background-color
.1s
,
border
.1s
}
uni-switch
.uni-switch-input
:before
{
width
:
50px
;
background-color
:
#fdfdfd
}
uni-switch
.uni-switch-input
:after
,
uni-switch
.uni-switch-input
:before
{
content
:
" "
;
position
:
absolute
;
top
:
0
;
left
:
0
;
height
:
30px
;
border-radius
:
15px
;
transition
:
-webkit-transform
.3s
;
-webkit-transition
:
-webkit-transform
.3s
;
transition
:
transform
.3s
;
transition
:
transform
.3s
,
-webkit-transform
.3s
}
uni-switch
.uni-switch-input
:after
{
width
:
30px
;
background-color
:
#fff
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
.4
)}
uni-switch
.uni-switch-input.uni-switch-input-checked
{
border-color
:
#007aff
;
background-color
:
#007aff
}
uni-switch
.uni-switch-input.uni-switch-input-checked
:before
{
-webkit-transform
:
scale
(
0
);
transform
:
scale
(
0
)}
uni-switch
.uni-switch-input.uni-switch-input-checked
:after
{
-webkit-transform
:
translateX
(
20px
);
transform
:
translateX
(
20px
)}
uni-switch
.uni-checkbox-input
{
margin-right
:
5px
;
-webkit-appearance
:
none
;
appearance
:
none
;
outline
:
0
;
border
:
1px
solid
#d1d1d1
;
background-color
:
#fff
;
border-radius
:
3px
;
width
:
22px
;
height
:
22px
;
position
:
relative
;
color
:
#007aff
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-checked
:before
{
font
:
normal
normal
normal
14px
/
1
uni
;
content
:
"\EA08"
;
color
:
inherit
;
font-size
:
22px
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
);
-webkit-transform
:
translate
(
-50%
,
-48%
)
scale
(
.73
)}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
{
background-color
:
#e1e1e1
}
uni-switch
.uni-checkbox-input.uni-checkbox-input-disabled
:before
{
color
:
#adadad
}
uni-text
[
selectable
]
{
cursor
:
auto
;
user-select
:
text
;
-webkit-user-select
:
text
}
uni-textarea
{
width
:
300px
;
height
:
150px
;
display
:
block
;
position
:
relative
;
font-size
:
16px
;
line-height
:
normal
}
uni-textarea
[
hidden
]
{
display
:
none
}
uni-textarea
[
auto-height
]
.uni-textarea-textarea
{
overflow-y
:
hidden
}
.uni-textarea-compute
,
.uni-textarea-placeholder
,
.uni-textarea-textarea
,
.uni-textarea-wrapper
{
outline
:
none
;
border
:
none
;
padding
:
0
;
margin
:
0
;
text-decoration
:
inherit
}
.uni-textarea-wrapper
{
display
:
block
;
position
:
relative
;
width
:
100%
;
height
:
100%
}
.uni-textarea-compute
,
.uni-textarea-placeholder
,
.uni-textarea-textarea
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
white-space
:
pre-wrap
;
word-break
:
break-all
}
.uni-textarea-placeholder
{
color
:
grey
;
overflow
:
hidden
}
.uni-textarea-compute
{
visibility
:
hidden
;
height
:
auto
}
.uni-textarea-textarea
{
resize
:
none
;
background
:
none
;
color
:
inherit
;
opacity
:
1
;
-webkit-text-fill-color
:
currentcolor
;
font
:
inherit
;
line-height
:
inherit
;
letter-spacing
:
inherit
;
text-align
:
inherit
;
text-indent
:
inherit
;
text-transform
:
inherit
;
text-shadow
:
inherit
}
.uni-textarea-textarea-ios
{
width
:
auto
;
right
:
0
;
margin
:
0
-3px
}
uni-view
{
display
:
block
}
uni-view
[
hidden
]
{
display
:
none
}
\ No newline at end of file
packages/uni-cli-shared/template/view.umd.js
已删除
100644 → 0
浏览文件 @
5c1d23b2
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
packages/uni-template-compiler/__tests__/compiler-app-plus.view.spec.js
浏览文件 @
5b4abb66
...
...
@@ -15,140 +15,140 @@ describe('codegen', () => {
it
(
'
generate directive
'
,
()
=>
{
assertCodegen
(
'
<p v-custom1:arg1.modifier="value1" v-custom2></p>
'
,
`with(this){return _c('
p
',{directives:[{name:"custom1",rawName:"v-custom1:arg1.modifier",value:($r['0']['v-custom1']),expression:"$r['0']['v-custom1']",arg:"arg1",modifiers:{"modifier":true}},{name:"custom2",rawName:"v-custom2"}],attrs:{"_i":0}})}`
`with(this){return _c('
v-uni-view
',{directives:[{name:"custom1",rawName:"v-custom1:arg1.modifier",value:($r['0']['v-custom1']),expression:"$r['0']['v-custom1']",arg:"arg1",modifiers:{"modifier":true}},{name:"custom2",rawName:"v-custom2"}],attrs:{"_i":0}})}`
)
// extra
assertCodegen
(
'
<p v-custom1:[arg1].modifier="value1" v-custom2></p>
'
,
`with(this){return _c('
p
',{directives:[{name:"custom1",rawName:"v-custom1:[arg1].modifier",value:($r['0']['v-custom1']),expression:"$r['0']['v-custom1']",arg:$r['0']['v-custom1-arg'],modifiers:{"modifier":true}},{name:"custom2",rawName:"v-custom2"}],attrs:{"_i":0}})}`
`with(this){return _c('
v-uni-view
',{directives:[{name:"custom1",rawName:"v-custom1:[arg1].modifier",value:($r['0']['v-custom1']),expression:"$r['0']['v-custom1']",arg:$r['0']['v-custom1-arg'],modifiers:{"modifier":true}},{name:"custom2",rawName:"v-custom2"}],attrs:{"_i":0}})}`
)
})
it
(
'
generate filters
'
,
()
=>
{
assertCodegen
(
'
<div :id="a | b | c">{{ d | e | f }}</div>
'
,
`with(this){return _c('
div
',{attrs:{"id":$r['0']['a-id'],"_i":0}},[_v(($r['0']['t0']))])}`
`with(this){return _c('
v-uni-view
',{attrs:{"id":$r['0']['a-id'],"_i":0}},[_v(($r['0']['t0']))])}`
)
})
it
(
'
generate filters with no arguments
'
,
()
=>
{
assertCodegen
(
'
<div>{{ d | e() }}</div>
'
,
`with(this){return _c('
div
',{attrs:{"_i":0}},[_v(($r['0']['t0']))])}`
`with(this){return _c('
v-uni-view
',{attrs:{"_i":0}},[_v(($r['0']['t0']))])}`
)
})
it
(
'
generate v-for directive
'
,
()
=>
{
assertCodegen
(
'
<div><li v-for="item in items" :key="item.uid"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,$i){return _c('li',{key:item,attrs:{"_i":("1-"+$i)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,$i){return _c('v-uni-view',{key:item,attrs:{"_i":("1-"+$i)}})}),1
)}`
)
// iterator syntax
assertCodegen
(
'
<div><li v-for="(item, i) in items"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,i){return _c('li',{key:item,attrs:{"_i":("1-"+i)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,i){return _c('v-uni-view',{key:item,attrs:{"_i":("1-"+i)}})}),1
)}`
)
assertCodegen
(
'
<div><li v-for="(item, key, index) in items"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,index){return _c('li',{key:item,attrs:{"_i":("1-"+index)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,index){return _c('v-uni-view',{key:item,attrs:{"_i":("1-"+index)}})}),1
)}`
)
// destructuring
assertCodegen
(
'
<div><li v-for="{ a, b } in items"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l(($r['1']['v-for']),function($item,$i){return _c('li',{key:$item,attrs:{"_i":("1-"+$i)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function($item,$i){return _c('v-uni-view',{key:$item,attrs:{"_i":("1-"+$i)}})}),1
)}`
)
assertCodegen
(
'
<div><li v-for="({ a, b }, key, index) in items"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l(($r['1']['v-for']),function($item,index){return _c('li',{key:$item,attrs:{"_i":("1-"+index)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function($item,index){return _c('v-uni-view',{key:$item,attrs:{"_i":("1-"+index)}})}),1
)}`
)
// v-for with extra element
assertCodegen
(
'
<div><p></p><li v-for="item in items"></li></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[_c('p',{attrs:{"_i":1}}),_l(($r['2']['v-for']),function(item,$i){return _c('li
',{key:item,attrs:{"_i":("2-"+$i)}})})],2)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[_c('v-uni-view',{attrs:{"_i":1}}),_l(($r['2']['v-for']),function(item,$i){return _c('v-uni-view
',{key:item,attrs:{"_i":("2-"+$i)}})})],2)}`
)
})
it
(
'
generate v-if directive
'
,
()
=>
{
assertCodegen
(
'
<p v-if="show">hello</p>
'
,
`with(this){return ($r['0']['v-if'])?_c('
p
',{attrs:{"_i":0}},[_v("hello")]):_e()}`
`with(this){return ($r['0']['v-if'])?_c('
v-uni-view
',{attrs:{"_i":0}},[_v("hello")]):_e()}`
)
})
it
(
'
generate v-else directive
'
,
()
=>
{
assertCodegen
(
'
<div><p v-if="show">hello</p><p v-else>world</p></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('p',{attrs:{"_i":1}},[_v("hello")]):_c('p',{attrs:{"_i":2}},[_v("world")])]
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('v-uni-view',{attrs:{"_i":1}},[_v("hello")]):_c('v-uni-view',{attrs:{"_i":2}},[_v("world")])],1
)}`
)
})
it
(
'
generate v-else-if directive
'
,
()
=>
{
assertCodegen
(
'
<div><p v-if="show">hello</p><p v-else-if="hide">world</p></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('p',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('p',{attrs:{"_i":2}},[_v("world")]):_e()]
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('v-uni-view',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('v-uni-view',{attrs:{"_i":2}},[_v("world")]):_e()],1
)}`
)
})
it
(
'
generate v-else-if with v-else directive
'
,
()
=>
{
assertCodegen
(
'
<div><p v-if="show">hello</p><p v-else-if="hide">world</p><p v-else>bye</p></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('p',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('p',{attrs:{"_i":2}},[_v("world")]):_c('p',{attrs:{"_i":3}},[_v("bye")])]
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('v-uni-view',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('v-uni-view',{attrs:{"_i":2}},[_v("world")]):_c('v-uni-view',{attrs:{"_i":3}},[_v("bye")])],1
)}`
)
})
it
(
'
generate multi v-else-if with v-else directive
'
,
()
=>
{
assertCodegen
(
'
<div><p v-if="show">hello</p><p v-else-if="hide">world</p><p v-else-if="3">elseif</p><p v-else>bye</p></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('p',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('p',{attrs:{"_i":2}},[_v("world")]):(3)?_c('p',{attrs:{"_i":3}},[_v("elseif")]):_c('p',{attrs:{"_i":4}},[_v("bye")])]
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[($r['1']['v-if'])?_c('v-uni-view',{attrs:{"_i":1}},[_v("hello")]):($r['2']['v-else-if'])?_c('v-uni-view',{attrs:{"_i":2}},[_v("world")]):(3)?_c('v-uni-view',{attrs:{"_i":3}},[_v("elseif")]):_c('v-uni-view',{attrs:{"_i":4}},[_v("bye")])],1
)}`
)
})
it
(
'
generate ref
'
,
()
=>
{
assertCodegen
(
'
<p ref="component1"></p>
'
,
`with(this){return _c('
p
',{ref:"component1",attrs:{"_i":0}})}`
`with(this){return _c('
v-uni-view
',{ref:"component1",attrs:{"_i":0}})}`
)
})
it
(
'
generate ref on v-for
'
,
()
=>
{
assertCodegen
(
'
<ul><li v-for="item in items" ref="component1"></li></ul>
'
,
`with(this){return _c('
ul',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,$i){return _c('li',{key:item,ref:"component1",refInFor:true,attrs:{"_i":("1-"+$i)}})}),0
)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l(($r['1']['v-for']),function(item,$i){return _c('v-uni-view',{key:item,ref:"component1",refInFor:true,attrs:{"_i":("1-"+$i)}})}),1
)}`
)
})
it
(
'
generate v-bind directive
'
,
()
=>
{
assertCodegen
(
'
<p v-bind="test"></p>
'
,
`with(this){return _c('
p',_b({attrs:{"_i":0}},'p
',$r['0']['v-bind'],false))}`
`with(this){return _c('
v-uni-view',_b({attrs:{"_i":0}},'v-uni-view
',$r['0']['v-bind'],false))}`
)
})
it
(
'
generate v-bind with prop directive
'
,
()
=>
{
assertCodegen
(
'
<p v-bind.prop="test"></p>
'
,
`with(this){return _c('
p',_b({attrs:{"_i":0}},'p
',$r['0']['v-bind'],true))}`
`with(this){return _c('
v-uni-view',_b({attrs:{"_i":0}},'v-uni-view
',$r['0']['v-bind'],true))}`
)
})
it
(
'
generate v-bind directive with sync modifier
'
,
()
=>
{
assertCodegen
(
'
<p v-bind.sync="test"></p>
'
,
`with(this){return _c('
p',_b({attrs:{"_i":0}},'p
',$r['0']['v-bind'],false,true))}`
`with(this){return _c('
v-uni-view',_b({attrs:{"_i":0}},'v-uni-view
',$r['0']['v-bind'],false,true))}`
)
})
it
(
'
generate v-model directive
'
,
()
=>
{
assertCodegen
(
'
<input v-model="test">
'
,
`with(this){return _c('
input',{directives:[{name:"model",rawName:"v-model",value:($r['0']['v-model']),expression:"$r['0']['v-model']"}],attrs:{"_i":0},domProps:{"value":($r['0']['v-model'])},on:{"input":function($event){return $handleEvent($event)}
}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},model:{value:($r['0']['v-model']),callback:function ($$v) {},expression:"$r['0']['v-model']"
}})}`
)
})
it
(
'
generate multiline v-model directive
'
,
()
=>
{
assertCodegen
(
'
<input v-model="
\n
test
\n
">
'
,
`with(this){return _c('
input',{directives:[{name:"model",rawName:"v-model",value:($r['0']['v-model']),expression:"$r['0']['v-model']"}],attrs:{"_i":0},domProps:{"value":($r['0']['v-model'])},on:{"input":function($event){return $handleEvent($event)}
}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},model:{value:($r['0']['v-model']),callback:function ($$v) {},expression:"$r['0']['v-model']"
}})}`
)
})
...
...
@@ -162,35 +162,35 @@ describe('codegen', () => {
it
(
'
generate template tag
'
,
()
=>
{
assertCodegen
(
'
<div><template><p>{{hello}}</p></template></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[[_c('p
',{attrs:{"_i":2}},[_v(($r['2']['t0']))])]],2)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[[_c('v-uni-view
',{attrs:{"_i":2}},[_v(($r['2']['t0']))])]],2)}`
)
})
it
(
'
generate single slot
'
,
()
=>
{
assertCodegen
(
'
<div><slot></slot></div>
'
,
`with(this){return _c('
div
',{attrs:{"_i":0}},[_t("default",null,{"_i":1})],2)}`
`with(this){return _c('
v-uni-view
',{attrs:{"_i":0}},[_t("default",null,{"_i":1})],2)}`
)
})
it
(
'
generate named slot
'
,
()
=>
{
assertCodegen
(
'
<div><slot name="one"></slot></div>
'
,
`with(this){return _c('
div
',{attrs:{"_i":0}},[_t("one",null,{"_i":1})],2)}`
`with(this){return _c('
v-uni-view
',{attrs:{"_i":0}},[_t("one",null,{"_i":1})],2)}`
)
})
it
(
'
generate slot fallback content
'
,
()
=>
{
assertCodegen
(
'
<div><slot><div>hi</div></slot></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[_t("default",[_c('div
',{attrs:{"_i":2}},[_v("hi")])],{"_i":1})],2)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[_t("default",[_c('v-uni-view
',{attrs:{"_i":2}},[_v("hi")])],{"_i":1})],2)}`
)
})
it
(
'
generate slot target
'
,
()
=>
{
assertCodegen
(
'
<p slot="one">hello world</p>
'
,
`with(this){return _c('
p
',{attrs:{"slot":"one","_i":0},slot:"one"},[_v("hello world")])}`
`with(this){return _c('
v-uni-view
',{attrs:{"slot":"one","_i":0},slot:"one"},[_v("hello world")])}`
)
})
...
...
@@ -201,7 +201,7 @@ describe('codegen', () => {
)
assertCodegen
(
'
<foo><div slot-scope="bar">{{ bar }}</div></foo>
'
,
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"default",fn:function(bar){return _c('
div
',{attrs:{"_i":1}},[_v(($r['1']['t0']))])}}])})}`
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"default",fn:function(bar){return _c('
v-uni-view
',{attrs:{"_i":1}},[_v(($r['1']['t0']))])}}])})}`
)
})
...
...
@@ -212,7 +212,7 @@ describe('codegen', () => {
)
assertCodegen
(
'
<foo><div slot="foo" slot-scope="bar">{{ bar }}</div></foo>
'
,
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"foo",fn:function(bar){return _c('
div
',{attrs:{"_i":1}},[_v(($r['1']['t0']))])}}])})}`
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"foo",fn:function(bar){return _c('
v-uni-view
',{attrs:{"_i":1}},[_v(($r['1']['t0']))])}}])})}`
)
})
...
...
@@ -230,7 +230,7 @@ describe('codegen', () => {
)
assertCodegen
(
'
<foo><div v-if="
\n
show
\n
" slot="foo" slot-scope="bar">{{ bar }}</div></foo>
'
,
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"foo",fn:function(bar){return ($r['1']['v-if'])?_c('
div
',{attrs:{"_i":1}},[_v(($r['1']['t0']))]):_e()}}],null,true)})}`
`with(this){return _c('foo',{attrs:{"_i":0},scopedSlots:_u([{key:"foo",fn:function(bar){return ($r['1']['v-if'])?_c('
v-uni-view
',{attrs:{"_i":1}},[_v(($r['1']['t0']))]):_e()}}],null,true)})}`
)
})
...
...
@@ -245,26 +245,26 @@ describe('codegen', () => {
// static
assertCodegen
(
'
<p class="class1">hello world</p>
'
,
`with(this){return _c('
p
',{staticClass:"class1",attrs:{"_i":0}},[_v("hello world")])}`
`with(this){return _c('
v-uni-view
',{staticClass:"class1",attrs:{"_i":0}},[_v("hello world")])}`
)
// dynamic
assertCodegen
(
'
<p :class="class1">hello world</p>
'
,
`with(this){return _c('
p
',{class:$r['0']['c'],attrs:{"_i":0}},[_v("hello world")])}`
`with(this){return _c('
v-uni-view
',{class:$r['0']['c'],attrs:{"_i":0}},[_v("hello world")])}`
)
})
it
(
'
generate style binding
'
,
()
=>
{
assertCodegen
(
'
<p :style="error">hello world</p>
'
,
`with(this){return _c('
p
',{style:($r['0']['s']),attrs:{"_i":0}},[_v("hello world")])}`
`with(this){return _c('
v-uni-view
',{style:($r['0']['s']),attrs:{"_i":0}},[_v("hello world")])}`
)
})
it
(
'
generate v-show directive
'
,
()
=>
{
assertCodegen
(
'
<p v-show="shown">hello world</p>
'
,
`with(this){return _c('
p
',{directives:[{name:"show",rawName:"v-show",value:($r['0']['v-show']),expression:"$r['0']['v-show']"}],attrs:{"_i":0}},[_v("hello world")])}`
`with(this){return _c('
v-uni-view
',{directives:[{name:"show",rawName:"v-show",value:($r['0']['v-show']),expression:"$r['0']['v-show']"}],attrs:{"_i":0}},[_v("hello world")])}`
)
})
...
...
@@ -272,71 +272,71 @@ describe('codegen', () => {
// input + value
assertCodegen
(
'
<input :value="msg">
'
,
`with(this){return _c('input',{attrs:{"_i":0},domProps:{"value":$r['0']['a-value']}})}`
`with(this){return _c('
v-uni-
input',{attrs:{"_i":0},domProps:{"value":$r['0']['a-value']}})}`
)
// non input
assertCodegen
(
'
<p :value="msg"/>
'
,
`with(this){return _c('
p
',{attrs:{"value":$r['0']['a-value'],"_i":0}})}`
`with(this){return _c('
v-uni-view
',{attrs:{"value":$r['0']['a-value'],"_i":0}})}`
)
})
it
(
'
generate attrs with v-bind directive
'
,
()
=>
{
assertCodegen
(
'
<input :name="field1">
'
,
`with(this){return _c('input',{attrs:{"name":$r['0']['a-name'],"_i":0}})}`
`with(this){return _c('
v-uni-
input',{attrs:{"name":$r['0']['a-name'],"_i":0}})}`
)
})
it
(
'
generate static attrs
'
,
()
=>
{
assertCodegen
(
'
<input name="field1">
'
,
`with(this){return _c('input',{attrs:{"name":"field1","_i":0}})}`
`with(this){return _c('
v-uni-
input',{attrs:{"name":"field1","_i":0}})}`
)
})
it
(
'
generate events with v-on directive
'
,
()
=>
{
assertCodegen
(
'
<input @input="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
})
it
(
'
generate events with method call
'
,
()
=>
{
assertCodegen
(
'
<input @input="onInput($event);">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// empty arguments
assertCodegen
(
'
<input @input="onInput();">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// without semicolon
assertCodegen
(
'
<input @input="onInput($event)">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// multiple args
assertCodegen
(
'
<input @input="onInput($event,
\'
abc
\'
, 5);">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// expression in args
assertCodegen
(
'
<input @input="onInput($event, 2+2);">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// tricky symbols in args
assertCodegen
(
`<input @input="onInput(');[\\'());');">`
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// function name including a `function` part (#9920)
// 2.6.10 暂未修复此 bug
// assertCodegen(
// '<input @input="functionName()">',
// `with(this){return _c('input',{attrs:{"_i":0},on:{"input":function($event){return functionName()}}})}`
// `with(this){return _c('
v-uni-
input',{attrs:{"_i":0},on:{"input":function($event){return functionName()}}})}`
// )
})
...
...
@@ -344,64 +344,64 @@ describe('codegen', () => {
// normal function
assertCodegen
(
'
<input @input="onInput1();onInput2()">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// function with multiple args
assertCodegen
(
'
<input @input="onInput1($event,
\'
text
\'
);onInput2(
\'
text2
\'
, $event)">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
})
it
(
'
generate events with keycode
'
,
()
=>
{
assertCodegen
(
'
<input @input.enter="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"enter":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"enter":true})}}})}`
)
// multiple keycodes (delete)
assertCodegen
(
'
<input @input.delete="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"delete":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"delete":true})}}})}`
)
// multiple keycodes (esc)
assertCodegen
(
'
<input @input.esc="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"esc":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"esc":true})}}})}`
)
// multiple keycodes (space)
assertCodegen
(
'
<input @input.space="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"space":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"space":true})}}})}`
)
// multiple keycodes (chained)
assertCodegen
(
'
<input @keydown.enter.delete="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"keydown":function($event){return $handle
Event($event,{"enter":true,"delete":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"keydown":function($event){return $handleView
Event($event,{"enter":true,"delete":true})}}})}`
)
// number keycode
assertCodegen
(
'
<input @input.13="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"13":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"13":true})}}})}`
)
// custom keycode
assertCodegen
(
'
<input @input.custom="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"custom":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"custom":true})}}})}`
)
})
it
(
'
generate events with generic modifiers
'
,
()
=>
{
assertCodegen
(
'
<input @input.stop="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"stop":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"stop":true})}}})}`
)
assertCodegen
(
'
<input @input.prevent="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"prevent":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"prevent":true})}}})}`
)
assertCodegen
(
'
<input @input.self="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"self":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"self":true})}}})}`
)
})
...
...
@@ -409,81 +409,81 @@ describe('codegen', () => {
it
(
'
generate events with generic modifiers and keycode correct order
'
,
()
=>
{
assertCodegen
(
'
<input @keydown.enter.prevent="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"keydown":function($event){return $handle
Event($event,{"enter":true,"prevent":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"keydown":function($event){return $handleView
Event($event,{"enter":true,"prevent":true})}}})}`
)
assertCodegen
(
'
<input @keydown.enter.stop="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"keydown":function($event){return $handle
Event($event,{"enter":true,"stop":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"keydown":function($event){return $handleView
Event($event,{"enter":true,"stop":true})}}})}`
)
})
it
(
'
generate events with mouse event modifiers
'
,
()
=>
{
assertCodegen
(
'
<input @click.ctrl="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"ctrl":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"ctrl":true})}}})}`
)
assertCodegen
(
'
<input @click.shift="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"shift":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"shift":true})}}})}`
)
assertCodegen
(
'
<input @click.alt="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"alt":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"alt":true})}}})}`
)
assertCodegen
(
'
<input @click.meta="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"meta":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"meta":true})}}})}`
)
assertCodegen
(
'
<input @click.exact="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"exact":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"exact":true})}}})}`
)
assertCodegen
(
'
<input @click.ctrl.exact="onClick">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"click":function($event){return $handle
Event($event,{"ctrl":true,"exact":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"click":function($event){return $handleView
Event($event,{"ctrl":true,"exact":true})}}})}`
)
})
it
(
'
generate events with multiple modifiers
'
,
()
=>
{
assertCodegen
(
'
<input @input.stop.prevent.self="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"stop":true,"prevent":true,"self":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"stop":true,"prevent":true,"self":true})}}})}`
)
})
it
(
'
generate events with capture modifier
'
,
()
=>
{
assertCodegen
(
'
<input @input.capture="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"!input":function($event){return $handle
Event($event,{"capture":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"!input":function($event){return $handleView
Event($event,{"capture":true})}}})}`
)
})
it
(
'
generate events with once modifier
'
,
()
=>
{
assertCodegen
(
'
<input @input.once="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"~input":function($event){return $handle
Event($event,{"once":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"~input":function($event){return $handleView
Event($event,{"once":true})}}})}`
)
})
it
(
'
generate events with capture and once modifier
'
,
()
=>
{
assertCodegen
(
'
<input @input.capture.once="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"~!input":function($event){return $handle
Event($event,{"once":true,"capture":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"~!input":function($event){return $handleView
Event($event,{"once":true,"capture":true})}}})}`
)
})
it
(
'
generate events with once and capture modifier
'
,
()
=>
{
assertCodegen
(
'
<input @input.once.capture="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"~!input":function($event){return $handle
Event($event,{"once":true,"capture":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"~!input":function($event){return $handleView
Event($event,{"once":true,"capture":true})}}})}`
)
})
it
(
'
generate events with inline statement
'
,
()
=>
{
assertCodegen
(
'
<input @input="current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
})
...
...
@@ -491,42 +491,42 @@ describe('codegen', () => {
// normal function
assertCodegen
(
'
<input @input="function () { current++ }">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// normal named function
assertCodegen
(
'
<input @input="function fn () { current++ }">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// arrow with no args
assertCodegen
(
'
<input @input="()=>current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// arrow with parens, single arg
assertCodegen
(
'
<input @input="(e) => current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// arrow with parens, multi args
assertCodegen
(
'
<input @input="(a, b, c) => current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// arrow with destructuring
assertCodegen
(
'
<input @input="({ a, b }) => current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// arrow single arg no parens
assertCodegen
(
'
<input @input="e=>current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
// with modifiers
assertCodegen
(
`<input @keyup.enter="e=>current++">`
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"keyup":function($event){return $handle
Event($event,{"enter":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"keyup":function($event){return $handleView
Event($event,{"enter":true})}}})}`
)
})
...
...
@@ -534,14 +534,14 @@ describe('codegen', () => {
it
(
'
should not treat handler with unexpected whitespace as inline statement
'
,
()
=>
{
assertCodegen
(
'
<input @input=" onInput ">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
)
})
it
(
'
generate unhandled events
'
,
()
=>
{
assertCodegen
(
'
<input @input="current++">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event)}}})}`
,
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event)}}})}`
,
ast
=>
{
ast
.
events
.
input
=
undefined
}
...
...
@@ -551,37 +551,37 @@ describe('codegen', () => {
it
(
'
generate multiple event handlers
'
,
()
=>
{
assertCodegen
(
'
<input @input="current++" @input.stop="onInput">
'
,
`with(this){return _c('
input',{attrs:{"_i":0},on:{"input":function($event){return $handle
Event($event,{"stop":true})}}})}`
`with(this){return _c('
v-uni-input',{attrs:{"_i":0},on:{"input":function($event){return $handleView
Event($event,{"stop":true})}}})}`
)
})
it
(
'
generate component
'
,
()
=>
{
assertCodegen
(
'
<my-component name="mycomponent1" :msg="msg" @notify="onNotify"><div>hi</div></my-component>
'
,
`with(this){return _c('my-component',{attrs:{"
name":"mycomponent1","msg":$r['0']['a-msg'],"_i":0},on:{"notify":function($event){return $handleEvent($event)}}},[_c('div',{attrs:{"_i":1}},[_v("hi")])]
)}`
`with(this){return _c('my-component',{attrs:{"
_i":0},on:{"notify":function($event){return $handleViewEvent($event)}}},[_c('v-uni-view',{attrs:{"_i":1}},[_v("hi")])],1
)}`
)
})
it
(
'
generate svg component with children
'
,
()
=>
{
assertCodegen
(
'
<svg><my-comp><circle :r="10"></circle></my-comp></svg>
'
,
`with(this){return _c('svg',{attrs:{"_i":0}},[_c('my-comp',{attrs:{"_i":1}},[_c('circle',{attrs:{"
r":10,"
_i":2}})])],1)}`
`with(this){return _c('svg',{attrs:{"_i":0}},[_c('my-comp',{attrs:{"_i":1}},[_c('circle',{attrs:{"_i":2}})])],1)}`
)
})
it
(
'
generate is attribute
'
,
()
=>
{
assertCodegen
(
'
<div is="component1"></div>
'
,
`with(this){return _c("component1",{tag:"
div
",attrs:{"_i":0}})}`
`with(this){return _c("component1",{tag:"
v-uni-view
",attrs:{"_i":0}})}`
)
assertCodegen
(
'
<div :is="component1"></div>
'
,
`with(this){return _c(component1,{tag:"
div
",attrs:{"_i":0}})}`
`with(this){return _c(component1,{tag:"
v-uni-view
",attrs:{"_i":0}})}`
)
// maybe a component and normalize type should be 1
assertCodegen
(
'
<div><div is="component1"></div></div>
'
,
`with(this){return _c('
div',{attrs:{"_i":0}},[_c("component1",{tag:"div
",attrs:{"_i":1}})],1)}`
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},[_c("component1",{tag:"v-uni-view
",attrs:{"_i":1}})],1)}`
)
})
...
...
@@ -589,12 +589,12 @@ describe('codegen', () => {
// have "inline-template'"
assertCodegen
(
'
<my-component inline-template><p><span>hello world</span></p></my-component>
'
,
`with(this){return _c('my-component',{attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('
p',{attrs:{"_i":1}},[_c('span',{attrs:{"_i":2}},[_v("hello world")])]
)}},staticRenderFns:[]}})}`
`with(this){return _c('my-component',{attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('
v-uni-view',{attrs:{"_i":1}},[_c('v-uni-label',{attrs:{"_i":2}},[_v("hello world")])],1
)}},staticRenderFns:[]}})}`
)
// "have inline-template attrs, but not having exactly one child element
assertCodegen
(
'
<my-component inline-template><hr><hr></my-component>
'
,
`with(this){return _c('my-component',{attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('
hr
',{attrs:{"_i":1}})}},staticRenderFns:[]}})}`
`with(this){return _c('my-component',{attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('
v-uni-view
',{attrs:{"_i":1}})}},staticRenderFns:[]}})}`
)
assertCodegen
(
'
<my-component inline-template></my-component>
'
,
...
...
@@ -603,11 +603,11 @@ describe('codegen', () => {
// have "is" attribute
assertCodegen
(
'
<div is="myComponent" inline-template><div></div></div>
'
,
`with(this){return _c("myComponent",{tag:"
div",attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('div
',{attrs:{"_i":1}})}},staticRenderFns:[]}})}`
`with(this){return _c("myComponent",{tag:"
v-uni-view",attrs:{"_i":0},inlineTemplate:{render:function(){with(this){return _c('v-uni-view
',{attrs:{"_i":1}})}},staticRenderFns:[]}})}`
)
assertCodegen
(
'
<div is="myComponent" inline-template></div>
'
,
`with(this){return _c("myComponent",{tag:"
div
",attrs:{"_i":0}})}`
`with(this){return _c("myComponent",{tag:"
v-uni-view
",attrs:{"_i":0}})}`
)
// expect('Inline-template components must have exactly one child element.').toHaveBeenWarned()
// expect(console.error.calls.count()).toBe(3)
...
...
@@ -616,8 +616,8 @@ describe('codegen', () => {
it
(
'
generate static trees inside v-for
'
,
()
=>
{
assertCodegen
(
`<div><div v-for="i in 10"><p><span></span></p></div></div>`
,
`with(this){return _c('
div',{attrs:{"_i":0}},_l((10),function(i,$i){return _c('div',{attrs:{"_i":("1-"+$i)}},[_c('p',{attrs:{"_i":("2-"+$i)}},[_c('span',{attrs:{"_i":("3-"+$i)}})])])}),0
)}`
// [`with(this){return _c('
p',{attrs:{"_i":("2-"+$i)}},[_c('span
',{attrs:{"_i":("3-"+$i)}})])}`]
`with(this){return _c('
v-uni-view',{attrs:{"_i":0}},_l((10),function(i,$i){return _c('v-uni-view',{attrs:{"_i":("1-"+$i)}},[_c('v-uni-view',{attrs:{"_i":("2-"+$i)}},[_c('v-uni-label',{attrs:{"_i":("3-"+$i)}})],1)],1)}),1
)}`
// [`with(this){return _c('
v-uni-view',{attrs:{"_i":("2-"+$i)}},[_c('v-uni-view
',{attrs:{"_i":("3-"+$i)}})])}`]
)
})
...
...
@@ -625,7 +625,7 @@ describe('codegen', () => {
// normalize type: 2
assertCodegen
(
'
<div><child></child><template v-for="item in list">{{ item }}</template></div>
'
,
`with(this){return _c('
div
',{attrs:{"_i":0}},[_c('child',{attrs:{"_i":1}}),_l(($r['2']['v-for']),function(item,$i){return [_v(($r[("2-"+$i)]['t0']))]})],2)}`
`with(this){return _c('
v-uni-view
',{attrs:{"_i":0}},[_c('child',{attrs:{"_i":1}}),_l(($r['2']['v-for']),function(item,$i){return [_v(($r[("2-"+$i)]['t0']))]})],2)}`
)
})
...
...
@@ -634,7 +634,7 @@ describe('codegen', () => {
// comments: true
// }, baseOptions)
// const template = '<div><!--comment--></div>'
// const generatedCode = `with(this){return _c('
div
',{attrs:{"_i":0}})}`
// const generatedCode = `with(this){return _c('
v-uni-view
',{attrs:{"_i":0}})}`
// const ast = parse(template, options)
// optimize(ast, options)
...
...
@@ -648,7 +648,7 @@ describe('codegen', () => {
// comments: true
// }, baseOptions)
// const template = '<div><!--\n\'comment\'\n--></div>'
// const generatedCode = `with(this){return _c('
div
',{attrs:{"_i":0}})}`
// const generatedCode = `with(this){return _c('
v-uni-view
',{attrs:{"_i":0}})}`
// const ast = parse(template, options)
// optimize(ast, options)
...
...
@@ -660,11 +660,11 @@ describe('codegen', () => {
it
(
'
does not squash templates inside v-pre
'
,
()
=>
{
assertCodegen
(
'
<div v-pre><template><p>{{msg}}</p></template></div>
'
,
`with(this){return _c('
div',{pre:true,attrs:{"_i":0}},[[_c('p
',{pre:true,attrs:{"_i":2}},[_v("{{msg}}")])]],2)}`
`with(this){return _c('
v-uni-view',{pre:true,attrs:{"_i":0}},[[_c('v-uni-view
',{pre:true,attrs:{"_i":2}},[_v("{{msg}}")])]],2)}`
)
// const template = '<div v-pre><template><p>{{msg}}</p></template></div>'
// const generatedCode = `with(this){return _m(0)}`
// // const renderFn = `with(this){return _c('
div',{pre:true},[_c('template',[_c('p
',[_v("{{msg}}")])])],2)}`
// // const renderFn = `with(this){return _c('
v-uni-view',{pre:true},[_c('template',[_c('v-uni-view
',[_v("{{msg}}")])])],2)}`
// const ast = parse(template, baseOptions)
// optimize(ast, baseOptions)
// const res = generate(ast, baseOptions)
...
...
@@ -678,14 +678,14 @@ describe('codegen', () => {
`with(this){return _c("div")}`
)
// const res = generate(null, baseOptions)
// expect(res.render).toBe(`with(this){return _c("
div
")}`)
// expect(res.render).toBe(`with(this){return _c("
v-uni-view
")}`)
// expect(res.staticRenderFns).toEqual([])
})
it
(
'
not specified directives option
'
,
()
=>
{
assertCodegen
(
'
<p v-if="show">hello world</p>
'
,
`with(this){return ($r['0']['v-if'])?_c('
p
',{attrs:{"_i":0}},[_v("hello world")]):_e()}`
,
{
`with(this){return ($r['0']['v-if'])?_c('
v-uni-view
',{attrs:{"_i":0}},[_v("hello world")]):_e()}`
,
{
// isReservedTag
}
)
...
...
@@ -695,7 +695,7 @@ describe('codegen', () => {
it
(
'
should compile single v-for component inside template
'
,
()
=>
{
assertCodegen
(
`<div><template v-if="ok"><foo v-for="i in 1" :key="i"></foo></template></div>`
,
`with(this){return _c('
div
',{attrs:{"_i":0}},[($r['1']['v-if'])?_l((1),function(i,$i){return _c('foo',{key:i,attrs:{"_i":("2-"+$i)}})}):_e()],2)}`
`with(this){return _c('
v-uni-view
',{attrs:{"_i":0}},[($r['1']['v-if'])?_l((1),function(i,$i){return _c('foo',{key:i,attrs:{"_i":("2-"+$i)}})}):_e()],2)}`
)
})
})
...
...
packages/uni-template-compiler/__tests__/demo.js
浏览文件 @
5b4abb66
...
...
@@ -2,7 +2,7 @@ const compiler = require('../lib')
const
res
=
compiler
.
compile
(
`
<view>
<
component v-for="component in components" :item="component.item" :is="component.mode"/
>
<
page-head v-if="a" v-for="item in items" :title="title"></page-head
>
</view>
`
,
{
resourcePath
:
'
/User/fxy/Documents/test.wxml
'
,
...
...
packages/uni-template-compiler/lib/app/component-parser.js
0 → 100644
浏览文件 @
5b4abb66
const
{
ID
,
hasOwn
}
=
require
(
'
./util
'
)
const
tags
=
require
(
'
../../../uni-cli-shared/lib/tags
'
)
const
{
getTagName
}
=
require
(
'
../h5
'
)
// 仅限 view 层
module
.
exports
=
function
parseComponent
(
el
)
{
// TODO 需要把自定义组件的 attrs, props 全干掉
el
.
tag
=
getTagName
(
el
.
tag
)
if
(
!
hasOwn
(
tags
,
el
.
tag
))
{
el
.
attrs
=
el
.
attrs
.
filter
(
attr
=>
attr
.
name
===
ID
)
}
}
packages/uni-template-compiler/lib/app/event-parser.js
0 → 100644
浏览文件 @
5b4abb66
const
deprecated
=
{
events
:
{
'
tap
'
:
'
click
'
,
'
longtap
'
:
'
longpress
'
}
}
module
.
exports
=
function
parseEvent
(
el
)
{
if
(
el
.
events
)
{
const
{
events
:
eventsMap
}
=
deprecated
Object
.
keys
(
el
.
events
).
forEach
(
name
=>
{
// 过时事件类型转换
if
(
eventsMap
[
name
])
{
el
.
events
[
eventsMap
[
name
]]
=
el
.
events
[
name
]
delete
el
.
events
[
name
]
// warnLogs.add(`警告:事件${name}已过时,推荐使用${eventsMap[name]}代替`)
}
})
}
}
packages/uni-template-compiler/lib/app/pre-transform-node.js
浏览文件 @
5b4abb66
const
{
tags
,
hasOwn
}
=
require
(
'
@dcloudio/uni-cli-shared
'
)
const
{
ID
,
hasOwn
,
addAttr
}
=
require
(
'
./util
'
)
module
.
exports
=
function
preTransformNode
(
el
,
options
)
{
if
(
el
.
tag
.
indexOf
(
'
v-uni-
'
)
!==
0
&&
hasOwn
(
tags
,
el
.
tag
))
{
el
.
tag
=
'
v-uni-
'
+
el
.
tag
}
if
(
!
hasOwn
(
options
,
'
nid
'
))
{
options
.
nid
=
0
}
...
...
packages/uni-template-compiler/lib/app/service.js
浏览文件 @
5b4abb66
...
...
@@ -8,6 +8,7 @@ const {
}
=
require
(
'
./util
'
)
const
parseText
=
require
(
'
./text-parser
'
)
const
parseEvent
=
require
(
'
./event-parser
'
)
const
preTransformNode
=
require
(
'
./pre-transform-node
'
)
...
...
@@ -265,6 +266,8 @@ function processText (el) {
}
function
postTransformNode
(
el
)
{
parseEvent
(
el
)
removeStatic
(
el
)
renameBinding
(
el
)
...
...
packages/uni-template-compiler/lib/app/tag-parser.js
0 → 100644
浏览文件 @
5b4abb66
const
{
hasOwn
}
=
require
(
'
./util
'
)
const
tags
=
require
(
'
../../../uni-cli-shared/lib/tags
'
)
// 仅限 view 层
module
.
exports
=
function
parseTag
(
el
)
{
if
(
el
.
tag
.
indexOf
(
'
v-uni-
'
)
!==
0
&&
hasOwn
(
tags
,
el
.
tag
))
{
el
.
tag
=
'
v-uni-
'
+
el
.
tag
}
}
packages/uni-template-compiler/lib/app/util.js
浏览文件 @
5b4abb66
...
...
@@ -114,5 +114,8 @@ module.exports = {
processForKey
,
updateForEleId
,
getBindingAttr
,
getAndRemoveAttr
getAndRemoveAttr
,
hasOwn
:
function
(
obj
,
key
)
{
return
hasOwnProperty
.
call
(
obj
,
key
)
}
}
packages/uni-template-compiler/lib/app/view.js
浏览文件 @
5b4abb66
...
...
@@ -7,7 +7,10 @@ const {
processForKey
}
=
require
(
'
./util
'
)
const
parseTag
=
require
(
'
./tag-parser
'
)
const
parseText
=
require
(
'
./text-parser
'
)
const
parseEvent
=
require
(
'
./event-parser
'
)
const
parseComponent
=
require
(
'
./component-parser
'
)
const
preTransformNode
=
require
(
'
./pre-transform-node
'
)
...
...
@@ -134,6 +137,10 @@ function processText (el, genVar) {
}
function
postTransformNode
(
el
)
{
parseComponent
(
el
)
parseTag
(
el
)
parseEvent
(
el
)
updateForEleId
(
el
)
const
id
=
el
.
attrsMap
[
ID
]
...
...
packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js
浏览文件 @
5b4abb66
...
...
@@ -36,12 +36,14 @@ const uniPath = process.env.UNI_USING_V8
const
provide
=
{}
if
(
!
process
.
env
.
UNI_USING_NATIVE
)
{
provide
[
'
uni
'
]
=
[
path
.
resolve
(
__dirname
,
uniPath
),
'
default
'
]
}
if
(
!
process
.
env
.
UNI_USING_V3
)
{
// v3 不需要
if
(
!
process
.
env
.
UNI_USING_NATIVE
)
{
provide
[
'
uni
'
]
=
[
path
.
resolve
(
__dirname
,
uniPath
),
'
default
'
]
}
if
(
process
.
env
.
UNI_USING_V8
)
{
provide
[
'
plus
'
]
=
[
path
.
resolve
(
__dirname
,
uniPath
),
'
weexPlus
'
]
if
(
process
.
env
.
UNI_USING_V8
)
{
provide
[
'
plus
'
]
=
[
path
.
resolve
(
__dirname
,
uniPath
),
'
weexPlus
'
]
}
}
if
(
...
...
packages/vue-cli-plugin-uni/lib/app-plus/index.js
浏览文件 @
5b4abb66
...
...
@@ -34,11 +34,13 @@ const v3 = {
// disable noEmitOnErrors
webpackConfig
.
optimization
.
noEmitOnErrors
=
false
if
(
isAppService
)
{
const
externals
=
{}
if
(
isAppService
)
{
// service 层需要编译时注入 vue 内核
webpackConfig
.
optimization
.
runtimeChunk
=
{
name
:
'
app-config
'
}
}
else
if
(
isAppView
)
{
externals
[
'
vue
'
]
=
'
Vue
'
webpackConfig
.
optimization
.
runtimeChunk
=
false
}
...
...
@@ -63,7 +65,8 @@ const v3 = {
},
output
:
{
filename
:
'
[name].js
'
,
chunkFilename
:
'
[id].js
'
chunkFilename
:
'
[id].js
'
,
globalObject
:
'
this
'
},
performance
:
{
hints
:
false
...
...
@@ -83,6 +86,7 @@ const v3 = {
loader
:
isAppService
?
'
wrap-loader
'
:
path
.
resolve
(
__dirname
,
'
../../packages/webpack-uni-view-main-loader
'
),
options
:
{
compiler
:
getPlatformCompiler
(),
before
:
[
beforeCode
+
statCode
]
...
...
@@ -110,7 +114,7 @@ const v3 = {
webpackConfig
.
module
.
rule
(
'
vue
'
)
.
test
([
/
\.
vue$/
,
/
\.
nvue$/
])
.
use
(
'
vue-loader
'
)
.
use
(
'
vue-loader
'
)
// service 层移除 style 节点,view 层返回固定 script
.
loader
(
path
.
resolve
(
__dirname
,
'
../../packages/vue-loader/lib
'
))
.
tap
(
options
=>
Object
.
assign
(
options
,
{
isAppView
,
...
...
packages/vue-cli-plugin-uni/packages/postcss/index.js
浏览文件 @
5b4abb66
const
postcss
=
require
(
'
postcss
'
)
const
selectorParser
=
require
(
'
postcss-selector-parser
'
)
const
valueParser
=
require
(
'
postcss-value-parser
'
)
const
{
getPlatformCssVars
}
=
require
(
'
@dcloudio/uni-cli-shared
'
)
const
CSS_TAGS
=
require
(
'
./tags
'
)
const
{
unit
,
walk
}
=
valueParser
const
defaultOpts
=
{
px
:
false
}
const
cssVars
=
getPlatformCssVars
()
const
transformSelector
=
(
complexSelector
,
transformer
)
=>
{
return
selectorParser
(
transformer
).
processSync
(
complexSelector
)
}
const
parseWord
=
function
(
node
,
opts
)
{
const
pair
=
unit
(
node
.
value
)
if
(
pair
)
{
const
num
=
Number
(
pair
.
number
)
let
u
=
pair
.
unit
.
toLowerCase
()
if
(
u
===
'
px
'
&&
process
.
UNI_TRANSFORM_PX
)
{
// TODO px 转换为 upx
u
=
'
upx
'
}
if
(
process
.
env
.
UNI_PLATFORM
===
'
h5
'
)
{
if
(
u
===
'
upx
'
||
u
===
'
rpx
'
)
{
node
.
value
=
`%?
${
num
}
?%`
}
}
else
{
if
(
u
===
'
upx
'
)
{
node
.
value
=
num
+
'
rpx
'
if
(
process
.
env
.
UNI_USING_V3
)
{
module
.
exports
=
require
(
'
./index.v3.js
'
)
}
else
{
const
postcss
=
require
(
'
postcss
'
)
const
selectorParser
=
require
(
'
postcss-selector-parser
'
)
const
valueParser
=
require
(
'
postcss-value-parser
'
)
const
{
getPlatformCssVars
}
=
require
(
'
@dcloudio/uni-cli-shared
'
)
const
CSS_TAGS
=
require
(
'
./tags
'
)
const
{
unit
,
walk
}
=
valueParser
const
defaultOpts
=
{
px
:
false
}
const
cssVars
=
getPlatformCssVars
()
const
transformSelector
=
(
complexSelector
,
transformer
)
=>
{
return
selectorParser
(
transformer
).
processSync
(
complexSelector
)
}
const
parseWord
=
function
(
node
,
opts
)
{
const
pair
=
unit
(
node
.
value
)
if
(
pair
)
{
const
num
=
Number
(
pair
.
number
)
let
u
=
pair
.
unit
.
toLowerCase
()
if
(
u
===
'
px
'
&&
process
.
UNI_TRANSFORM_PX
)
{
// TODO px 转换为 upx
u
=
'
upx
'
}
// fixed 百度目前1rpx会转换成小数点 vw,导致边框之类的显示有问题
if
(
process
.
env
.
UNI_PLATFORM
===
'
mp-baidu
'
)
{
if
(
num
===
1
&&
(
u
===
'
upx
'
||
u
===
'
rpx
'
))
{
node
.
value
=
'
1px
'
if
(
process
.
env
.
UNI_PLATFORM
===
'
h5
'
)
{
if
(
u
===
'
upx
'
||
u
===
'
rpx
'
)
{
node
.
value
=
`%?
${
num
}
?%`
}
}
else
{
if
(
u
===
'
upx
'
)
{
node
.
value
=
num
+
'
rpx
'
}
// fixed 百度目前1rpx会转换成小数点 vw,导致边框之类的显示有问题
if
(
process
.
env
.
UNI_PLATFORM
===
'
mp-baidu
'
)
{
if
(
num
===
1
&&
(
u
===
'
upx
'
||
u
===
'
rpx
'
))
{
node
.
value
=
'
1px
'
}
}
}
}
}
}
const
isInsideKeyframes
=
function
(
rule
)
{
return
(
rule
.
parent
&&
rule
.
parent
.
type
===
'
atrule
'
&&
/^
(
-
\w
+-
)?
keyframes$/
.
test
(
rule
.
parent
.
name
)
)
}
const
tranformValue
=
function
(
decl
,
opts
)
{
return
valueParser
(
decl
.
value
)
.
walk
(
node
=>
{
if
(
node
.
type
===
'
word
'
)
{
parseWord
(
node
,
opts
)
}
else
if
(
node
.
type
===
'
function
'
)
{
if
(
node
.
value
===
'
url
'
)
{
return
false
}
if
(
node
.
value
===
'
var
'
)
{
let
cssVarValue
=
false
walk
(
node
.
nodes
,
n
=>
{
if
(
n
.
type
===
'
word
'
)
{
if
(
cssVars
.
hasOwnProperty
(
n
.
value
))
{
// 目前仅考虑 nodes 长度为0
cssVarValue
=
cssVars
[
n
.
value
]
const
isInsideKeyframes
=
function
(
rule
)
{
return
(
rule
.
parent
&&
rule
.
parent
.
type
===
'
atrule
'
&&
/^
(
-
\w
+-
)?
keyframes$/
.
test
(
rule
.
parent
.
name
)
)
}
const
tranformValue
=
function
(
decl
,
opts
)
{
return
valueParser
(
decl
.
value
)
.
walk
(
node
=>
{
if
(
node
.
type
===
'
word
'
)
{
parseWord
(
node
,
opts
)
}
else
if
(
node
.
type
===
'
function
'
)
{
if
(
node
.
value
===
'
url
'
)
{
return
false
}
if
(
node
.
value
===
'
var
'
)
{
let
cssVarValue
=
false
walk
(
node
.
nodes
,
n
=>
{
if
(
n
.
type
===
'
word
'
)
{
if
(
cssVars
.
hasOwnProperty
(
n
.
value
))
{
// 目前仅考虑 nodes 长度为0
cssVarValue
=
cssVars
[
n
.
value
]
}
}
})
if
(
cssVarValue
!==
false
)
{
node
.
type
=
'
word
'
node
.
value
=
cssVarValue
delete
node
.
before
delete
node
.
after
delete
node
.
nodes
}
})
if
(
cssVarValue
!==
false
)
{
node
.
type
=
'
word
'
node
.
value
=
cssVarValue
delete
node
.
before
delete
node
.
after
delete
node
.
nodes
return
false
}
else
{
walk
(
node
.
nodes
,
n
=>
{
if
(
n
.
type
===
'
word
'
)
{
parseWord
(
n
,
opts
)
}
})
}
return
false
}
else
{
walk
(
node
.
nodes
,
n
=>
{
if
(
n
.
type
===
'
word
'
)
{
parseWord
(
n
,
opts
)
}
})
}
}
})
.
toString
()
}
const
TAGS
=
[
'
ad
'
,
'
audio
'
,
'
button
'
,
'
camera
'
,
'
canvas
'
,
'
checkbox
'
,
'
checkbox-group
'
,
'
cover-image
'
,
'
cover-view
'
,
'
form
'
,
'
functional-page-navigator
'
,
'
icon
'
,
'
image
'
,
'
input
'
,
'
label
'
,
'
live-player
'
,
'
live-pusher
'
,
'
map
'
,
'
movable-area
'
,
'
movable-view
'
,
'
navigator
'
,
'
official-account
'
,
'
open-data
'
,
'
picker
'
,
'
picker-view
'
,
'
picker-view-column
'
,
'
progress
'
,
'
radio
'
,
'
radio-group
'
,
'
rich-text
'
,
'
scroll-view
'
,
'
slider
'
,
'
swiper
'
,
'
swiper-item
'
,
'
switch
'
,
'
text
'
,
'
textarea
'
,
'
video
'
,
'
view
'
,
'
web-view
'
]
const
BG_PROPS
=
[
'
background
'
,
'
background-clip
'
,
'
background-color
'
,
'
background-image
'
,
'
background-origin
'
,
'
background-position
'
,
'
background-repeat
'
,
'
background-size
'
,
'
background-attachment
'
]
/**
* 转换 upx
* 转换 px
*/
module
.
exports
=
postcss
.
plugin
(
'
postcss-uniapp-plugin
'
,
function
(
opts
)
{
opts
=
{
...
defaultOpts
,
...
opts
})
.
toString
()
}
return
function
(
root
,
result
)
{
if
(
process
.
env
.
UNI_PLATFORM
===
'
h5
'
)
{
// Transform CSS AST here
const
bgDecls
=
[]
root
.
walkRules
(
rule
=>
{
let
hasPage
=
false
// Transform each rule here
if
(
!
isInsideKeyframes
(
rule
))
{
// rule.selectors == comma seperated selectors
// a, b.c {} => ["a", "b.c"]
rule
.
selectors
=
rule
.
selectors
.
map
(
complexSelector
=>
// complexSelector => simpleSelectors
// "a.b#c" => ["a", ".b", "#c"]
transformSelector
(
complexSelector
,
simpleSelectors
=>
// only process type selector, leave alone class & id selectors
simpleSelectors
.
walkTags
(
tag
=>
{
if
(
tag
.
value
===
'
page
'
)
{
tag
.
value
=
'
uni-page-body
'
hasPage
=
true
}
else
if
(
~
TAGS
.
indexOf
(
tag
.
value
)
&&
tag
.
value
.
substring
(
0
,
4
)
!==
'
uni-
'
)
{
tag
.
value
=
'
uni-
'
+
tag
.
value
}
})
const
TAGS
=
[
'
ad
'
,
'
audio
'
,
'
button
'
,
'
camera
'
,
'
canvas
'
,
'
checkbox
'
,
'
checkbox-group
'
,
'
cover-image
'
,
'
cover-view
'
,
'
form
'
,
'
functional-page-navigator
'
,
'
icon
'
,
'
image
'
,
'
input
'
,
'
label
'
,
'
live-player
'
,
'
live-pusher
'
,
'
map
'
,
'
movable-area
'
,
'
movable-view
'
,
'
navigator
'
,
'
official-account
'
,
'
open-data
'
,
'
picker
'
,
'
picker-view
'
,
'
picker-view-column
'
,
'
progress
'
,
'
radio
'
,
'
radio-group
'
,
'
rich-text
'
,
'
scroll-view
'
,
'
slider
'
,
'
swiper
'
,
'
swiper-item
'
,
'
switch
'
,
'
text
'
,
'
textarea
'
,
'
video
'
,
'
view
'
,
'
web-view
'
]
const
BG_PROPS
=
[
'
background
'
,
'
background-clip
'
,
'
background-color
'
,
'
background-image
'
,
'
background-origin
'
,
'
background-position
'
,
'
background-repeat
'
,
'
background-size
'
,
'
background-attachment
'
]
/**
* 转换 upx
* 转换 px
*/
module
.
exports
=
postcss
.
plugin
(
'
postcss-uniapp-plugin
'
,
function
(
opts
)
{
opts
=
{
...
defaultOpts
,
...
opts
}
return
function
(
root
,
result
)
{
if
(
process
.
env
.
UNI_PLATFORM
===
'
h5
'
)
{
// Transform CSS AST here
const
bgDecls
=
[]
root
.
walkRules
(
rule
=>
{
let
hasPage
=
false
// Transform each rule here
if
(
!
isInsideKeyframes
(
rule
))
{
// rule.selectors == comma seperated selectors
// a, b.c {} => ["a", "b.c"]
rule
.
selectors
=
rule
.
selectors
.
map
(
complexSelector
=>
// complexSelector => simpleSelectors
// "a.b#c" => ["a", ".b", "#c"]
transformSelector
(
complexSelector
,
simpleSelectors
=>
// only process type selector, leave alone class & id selectors
simpleSelectors
.
walkTags
(
tag
=>
{
if
(
tag
.
value
===
'
page
'
)
{
tag
.
value
=
'
uni-page-body
'
hasPage
=
true
}
else
if
(
~
TAGS
.
indexOf
(
tag
.
value
)
&&
tag
.
value
.
substring
(
0
,
4
)
!==
'
uni-
'
)
{
tag
.
value
=
'
uni-
'
+
tag
.
value
}
})
)
)
)
}
// handle upx unit
rule
.
walkDecls
(
decl
=>
{
if
(
hasPage
)
{
if
(
BG_PROPS
.
indexOf
(
decl
.
prop
)
!==
-
1
)
{
bgDecls
.
push
(
decl
.
clone
())
}
}
// Transform each property declaration here
decl
.
value
=
tranformValue
(
decl
,
opts
)
// handle upx unit
rule
.
walkDecls
(
decl
=>
{
if
(
hasPage
)
{
if
(
BG_PROPS
.
indexOf
(
decl
.
prop
)
!==
-
1
)
{
bgDecls
.
push
(
decl
.
clone
())
}
}
// Transform each property declaration here
decl
.
value
=
tranformValue
(
decl
,
opts
)
})
})
})
if
(
bgDecls
.
length
)
{
const
rule
=
postcss
.
rule
({
selector
:
'
body.?%PAGE?%
'
})
bgDecls
.
forEach
(
decl
=>
rule
.
append
(
decl
))
root
.
append
(
rule
)
}
}
else
{
root
.
walkRules
(
rule
=>
{
const
selectors
=
transformSelector
(
rule
.
selectors
.
join
(
'
,
'
),
function
(
selectors
)
{
selectors
.
walkUniversals
(
node
=>
{
node
.
parent
.
remove
()
if
(
bgDecls
.
length
)
{
const
rule
=
postcss
.
rule
({
selector
:
'
body.?%PAGE?%
'
})
})
if
(
!
selectors
)
{
return
rule
.
remove
()
bgDecls
.
forEach
(
decl
=>
rule
.
append
(
decl
))
root
.
append
(
rule
)
}
rule
.
selectors
=
selectors
.
split
(
'
,
'
)
// handle upx unit
rule
.
walkDecls
(
decl
=>
{
const
raws
=
decl
.
raws
if
(
raws
)
{
if
(
raws
.
before
&&
raws
.
before
.
indexOf
(
'
;
'
)
!==
-
1
)
{
raws
.
before
=
raws
.
before
.
replace
(
/;/g
,
''
)
}
if
(
raws
.
after
&&
raws
.
after
.
indexOf
(
'
;
'
)
!==
-
1
)
{
raws
.
after
=
raws
.
after
.
replace
(
/;/g
,
''
)
}
}
else
{
root
.
walkRules
(
rule
=>
{
const
selectors
=
transformSelector
(
rule
.
selectors
.
join
(
'
,
'
),
function
(
selectors
)
{
selectors
.
walkUniversals
(
node
=>
{
node
.
parent
.
remove
()
})
})
if
(
!
selectors
)
{
return
rule
.
remove
()
}
// Transform each property declaration here
decl
.
value
=
tranformValue
(
decl
,
opts
)
})
rule
.
selectors
=
rule
.
selectors
.
map
(
complexSelector
=>
{
return
transformSelector
(
complexSelector
,
simpleSelectors
=>
{
return
simpleSelectors
.
walkTags
(
tag
=>
{
const
k
=
tag
.
value
const
v
=
CSS_TAGS
[
k
]
if
(
v
)
{
tag
.
value
=
v
===
'
r
'
?
`._
${
k
}
`
:
v
rule
.
selectors
=
selectors
.
split
(
'
,
'
)
// handle upx unit
rule
.
walkDecls
(
decl
=>
{
const
raws
=
decl
.
raws
if
(
raws
)
{
if
(
raws
.
before
&&
raws
.
before
.
indexOf
(
'
;
'
)
!==
-
1
)
{
raws
.
before
=
raws
.
before
.
replace
(
/;/g
,
''
)
}
if
(
raws
.
after
&&
raws
.
after
.
indexOf
(
'
;
'
)
!==
-
1
)
{
raws
.
after
=
raws
.
after
.
replace
(
/;/g
,
''
)
}
}
// Transform each property declaration here
decl
.
value
=
tranformValue
(
decl
,
opts
)
})
rule
.
selectors
=
rule
.
selectors
.
map
(
complexSelector
=>
{
return
transformSelector
(
complexSelector
,
simpleSelectors
=>
{
return
simpleSelectors
.
walkTags
(
tag
=>
{
const
k
=
tag
.
value
const
v
=
CSS_TAGS
[
k
]
if
(
v
)
{
tag
.
value
=
v
===
'
r
'
?
`._
${
k
}
`
:
v
}
})
})
})
})
}
)
}
}
}
}
)
}
)
}
packages/vue-cli-plugin-uni/packages/postcss/index.v3.js
0 → 100644
浏览文件 @
5b4abb66
const
postcss
=
require
(
'
postcss
'
)
const
selectorParser
=
require
(
'
postcss-selector-parser
'
)
const
TAGS
=
Object
.
keys
(
require
(
'
@dcloudio/uni-cli-shared
'
).
tags
)
const
transformSelector
=
(
complexSelector
,
transformer
)
=>
{
return
selectorParser
(
transformer
).
processSync
(
complexSelector
)
}
const
isInsideKeyframes
=
function
(
rule
)
{
return
(
rule
.
parent
&&
rule
.
parent
.
type
===
'
atrule
'
&&
/^
(
-
\w
+-
)?
keyframes$/
.
test
(
rule
.
parent
.
name
)
)
}
module
.
exports
=
postcss
.
plugin
(
'
postcss-uniapp-plugin
'
,
function
(
opts
)
{
return
function
(
root
,
result
)
{
root
.
walkRules
(
rule
=>
{
// Transform each rule here
if
(
!
isInsideKeyframes
(
rule
))
{
// rule.selectors == comma seperated selectors
// a, b.c {} => ["a", "b.c"]
rule
.
selectors
=
rule
.
selectors
.
map
(
complexSelector
=>
// complexSelector => simpleSelectors
// "a.b#c" => ["a", ".b", "#c"]
transformSelector
(
complexSelector
,
simpleSelectors
=>
// only process type selector, leave alone class & id selectors
simpleSelectors
.
walkTags
(
tag
=>
{
if
(
tag
.
value
===
'
page
'
)
{
tag
.
value
=
'
body
'
}
else
if
(
~
TAGS
.
indexOf
(
tag
.
value
)
&&
tag
.
value
.
substring
(
0
,
4
)
!==
'
uni-
'
)
{
tag
.
value
=
'
uni-
'
+
tag
.
value
}
})
)
)
}
})
}
})
packages/vue-cli-plugin-uni/packages/webpack-uni-view-main-loader/index.js
浏览文件 @
5b4abb66
const
fs
=
require
(
'
fs
'
)
const
path
=
require
(
'
path
'
)
const
hash
=
require
(
'
hash-sum
'
)
const
loaderUtils
=
require
(
'
loader-utils
'
)
const
parser
=
require
(
'
@babel/parser
'
)
const
{
parse
}
=
require
(
require
.
resolve
(
'
@vue/component-compiler-utils
'
,
{
paths
:
[
require
.
resolve
(
'
vue-loader
'
)]
}))
// 确保使用的与 vue-loader 一致
const
traverse
=
require
(
'
@dcloudio/webpack-uni-mp-loader/lib/babel/global-component-traverse
'
)
const
genStylesCode
=
require
(
'
../vue-loader/lib/codegen/styleInjection
'
)
function
parseComponents
(
content
)
{
const
{
state
:
{
components
}
}
=
traverse
(
parser
.
parse
(
content
,
{
sourceType
:
'
module
'
,
plugins
:
[
'
typescript
'
,
[
'
decorators
'
,
{
decoratorsBeforeExport
:
true
}],
'
classProperties
'
]
}),
{
components
:
[]
})
return
components
}
function
getDefineComponents
(
components
)
{
return
components
.
map
(({
name
,
source
})
=>
`Vue.component('
${
name
}
',require('
${
source
}
').default)`
)
}
const
appVueFilePath
=
path
.
resolve
(
process
.
env
.
UNI_INPUT_DIR
,
'
app.vue
'
)
function
getStylesCode
(
loaderContext
)
{
if
(
!
fs
.
existsSync
(
appVueFilePath
))
{
return
}
const
source
=
fs
.
readFileSync
(
appVueFilePath
,
'
utf8
'
)
const
{
minimize
,
sourceMap
,
rootContext
,
resourcePath
,
resourceQuery
}
=
loaderContext
const
options
=
loaderUtils
.
getOptions
(
loaderContext
)
||
{}
const
filename
=
path
.
basename
(
resourcePath
)
const
context
=
rootContext
||
process
.
cwd
()
const
sourceRoot
=
path
.
dirname
(
path
.
relative
(
context
,
resourcePath
))
const
descriptor
=
parse
({
source
,
compiler
:
options
.
compiler
,
filename
,
sourceRoot
,
needMap
:
sourceMap
})
// styles
let
stylesCode
=
``
if
(
descriptor
.
styles
.
length
)
{
const
isServer
=
false
const
isShadow
=
false
const
isProduction
=
options
.
productionMode
||
minimize
||
process
.
env
.
NODE_ENV
===
'
production
'
const
stringifyRequest
=
r
=>
loaderUtils
.
stringifyRequest
(
loaderContext
,
r
)
// module id for scoped CSS & hot-reload
const
rawShortFilePath
=
path
.
relative
(
context
,
resourcePath
)
.
replace
(
/^
(\.\.[/\\])
+/
,
''
)
const
shortFilePath
=
rawShortFilePath
.
replace
(
/
\\
/g
,
'
/
'
)
+
resourceQuery
const
needsHotReload
=
false
const
id
=
hash
(
isProduction
?
(
shortFilePath
+
'
\n
'
+
source
)
:
shortFilePath
)
stylesCode
=
genStylesCode
(
loaderContext
,
descriptor
.
styles
,
id
,
resourcePath
,
stringifyRequest
,
needsHotReload
,
isServer
||
isShadow
// needs explicit injection?
)
}
return
stylesCode
.
replace
(
/main
\.
js/g
,
'
App.vue
'
)
}
module
.
exports
=
function
(
source
,
map
)
{
return
`import 'uni-pages';
// 解析自定义组件,及 App 样式
return
`import 'uni-pages'
${
getStylesCode
(
this
)}
${
getDefineComponents
(
parseComponents
(
source
)).
join
(
'
\n
'
)}
UniViewJSBridge.publishHandler('webviewReady')
`
}
packages/webpack-uni-pages-loader/lib/index-new.js
浏览文件 @
5b4abb66
...
...
@@ -73,7 +73,7 @@ module.exports = function (content) {
let
appConfigContent
=
''
jsonFiles
.
forEach
(
jsonFile
=>
{
if
(
jsonFile
)
{
if
(
jsonFile
.
name
===
'
app-config
.js
'
)
{
if
(
jsonFile
.
name
===
'
define-pages
.js
'
)
{
appConfigContent
=
jsonFile
.
content
}
else
{
this
.
emitFile
(
jsonFile
.
name
,
jsonFile
.
content
)
...
...
packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js
0 → 100644
浏览文件 @
5b4abb66
function
parseRoutes
(
config
)
{
const
__uniRoutes
=
[]
/* eslint-disable no-mixed-operators */
const
tabBarList
=
(
config
.
tabBar
&&
config
.
tabBar
.
list
||
[]).
map
(
item
=>
item
.
pagePath
)
Object
.
keys
(
config
.
page
).
forEach
(
function
(
pagePath
)
{
const
isTabBar
=
tabBarList
.
indexOf
(
pagePath
)
!==
-
1
const
isQuit
=
isTabBar
||
(
config
.
pages
[
0
]
===
pagePath
)
const
isNVue
=
!!
config
.
page
[
pagePath
].
nvue
const
route
=
{
path
:
'
/
'
+
pagePath
,
meta
:
{},
window
:
config
.
page
[
pagePath
].
window
||
{}
}
if
(
isQuit
)
{
route
.
meta
.
isQuit
=
true
}
if
(
isNVue
)
{
route
.
meta
.
isNVue
=
true
}
if
(
isTabBar
)
{
route
.
meta
.
isTabBar
=
true
}
__uniRoutes
.
push
(
route
)
})
return
__uniRoutes
}
module
.
exports
=
function
definePages
(
appJson
)
{
const
__uniRoutes
=
parseRoutes
(
appJson
)
delete
appJson
.
page
delete
appJson
.
usingComponents
delete
appJson
.
nvueCompiler
delete
appJson
.
renderer
return
{
name
:
'
app-config-service.js
'
,
content
:
`
var isReady=false;var onReadyCallbacks=[];
var __uniConfig =
${
JSON
.
stringify
(
appJson
,
null
)}
;
var __uniRoutes =
${
JSON
.
stringify
(
__uniRoutes
)}
;
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register('uni-app-config', {create(id, env, config) {if(!__uniConfig.viewport){Object.assign(__uniConfig,{"viewport": env.weex.config.env.deviceWidth,"defaultFontSize": env.weex.config.env.deviceWidth / 20})}return {instance: {__uniConfig: __uniConfig,__uniRoutes: __uniRoutes}}}});
`
}
}
packages/webpack-uni-pages-loader/lib/platforms/app-plus/config-parser.js
已删除
100644 → 0
浏览文件 @
5c1d23b2
function
generatePageCode
(
pages
)
{
return
pages
.
map
(
pagePath
=>
{
return
`__registerPage('
${
pagePath
}
',function(){
const cacheKey = '
${
pagePath
}
-VueComponent'
if(!this[cacheKey]){
this[cacheKey] = Vue.extend(require('
${
pagePath
}
.vue').default)
}
return this[cacheKey]
})`
}).
join
(
'
\n
'
)
}
module
.
exports
=
function
parseConfig
(
appJson
)
{
return
{
name
:
'
app-config.js
'
,
content
:
`
import Vue from 'vue'
__registerConfig(
${
JSON
.
stringify
(
appJson
)}
,Vue)
${
generatePageCode
(
appJson
.
pages
)}
`
}
}
packages/webpack-uni-pages-loader/lib/platforms/app-plus/define-pages.js
0 → 100644
浏览文件 @
5b4abb66
function
generatePageCode
(
pages
,
pageOptions
)
{
return
pages
.
map
(
pagePath
=>
{
if
(
pageOptions
[
pagePath
].
nvue
)
{
return
''
}
return
`__definePage('
${
pagePath
}
',function(){return Vue.extend(require('
${
pagePath
}
.vue').default)})`
}).
join
(
'
\n
'
)
}
module
.
exports
=
function
definePages
(
appJson
)
{
return
{
name
:
'
define-pages.js
'
,
content
:
`
uni.registerPlus && uni.registerPlus(typeof plus !== 'undefined' && plus)
${
generatePageCode
(
appJson
.
pages
,
appJson
.
page
)}
`
}
}
packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.js
浏览文件 @
5b4abb66
...
...
@@ -13,7 +13,8 @@ const {
parseStyle
}
=
require
(
'
../../util
'
)
const
parseV3Config
=
require
(
'
./config-parser
'
)
const
definePages
=
require
(
'
./define-pages
'
)
const
appConfigService
=
require
(
'
./app-config-service
'
)
function
parseConfig
(
appJson
)
{
return
{
...
...
@@ -316,11 +317,17 @@ module.exports = function (pagesJson, userManifestJson) {
}
if
(
!
Object
.
keys
(
appJson
.
nvue
.
pages
).
find
(
path
=>
{
const
subNVues
=
appJson
.
nvue
.
pages
[
path
].
window
.
subNVues
||
[]
return
path
.
replace
(
/
\.
html$/
,
'
.nvue
'
)
===
key
||
subNVues
.
find
(({
path
})
=>
path
===
key
.
replace
(
/
\.
nvue$/
,
''
))
})
&&
!
pagesJson
.
pages
.
find
(({
style
=
{}
})
=>
{
return
path
.
replace
(
/
\.
html$/
,
'
.nvue
'
)
===
key
||
subNVues
.
find
(({
path
})
=>
path
===
key
.
replace
(
/
\.
nvue$/
,
''
))
})
&&
!
pagesJson
.
pages
.
find
(({
style
=
{}
})
=>
{
style
=
Object
.
assign
(
style
,
style
[
'
app-plus
'
])
const
subNVues
=
style
.
subNVues
||
[]
return
subNVues
.
find
(({
path
})
=>
path
===
key
.
replace
(
/
\.
nvue$/
,
''
))
return
subNVues
.
find
(({
path
})
=>
path
===
key
.
replace
(
/
\.
nvue$/
,
''
))
}))
{
throw
new
Error
(
`原生混淆页面未在项目内使用,错误的页面路径:
${
key
}
`
)
}
...
...
@@ -404,7 +411,8 @@ module.exports = function (pagesJson, userManifestJson) {
manifestJson
.
plus
.
launchwebview
.
id
=
'
2
'
}
else
{
// 首页是 tabBar 页面
const
item
=
tabBar
.
list
.
find
(
page
=>
page
.
pagePath
===
(
process
.
env
.
UNI_USING_NATIVE
?
appJson
.
entryPagePath
:
entryPagePath
))
const
item
=
tabBar
.
list
.
find
(
page
=>
page
.
pagePath
===
(
process
.
env
.
UNI_USING_NATIVE
?
appJson
.
entryPagePath
:
entryPagePath
))
if
(
item
)
{
tabBar
.
child
=
[
'
lauchwebview
'
]
tabBar
.
selected
=
tabBar
.
list
.
indexOf
(
item
)
...
...
@@ -432,31 +440,54 @@ module.exports = function (pagesJson, userManifestJson) {
delete
appJson
.
subPackages
// TODO 处理纯原生
if
(
process
.
env
.
UNI_USING_NATIVE
)
{
manifest
.
name
=
'
manifest.json
'
manifest
.
content
=
JSON
.
stringify
(
manifest
.
content
)
return
[
manifest
,
parseConfig
(
appJson
)]
}
if
(
process
.
env
.
UNI_USING_V3
)
{
appJson
.
entryPagePath
=
appJson
.
pages
[
0
]
if
(
process
.
env
.
UNI_USING_V3
)
{
// v3
appJson
.
entryPagePath
=
appJson
.
pages
[
0
]
// timeout
normalizeNetworkTimeout
(
appJson
)
appJson
.
page
=
Object
.
create
(
null
)
const
addPage
=
function
(
pagePath
,
windowOptions
)
{
const
addPage
=
function
(
pagePath
,
windowOptions
,
nvue
)
{
delete
windowOptions
.
usingComponents
appJson
.
page
[
pagePath
]
=
{
window
:
windowOptions
window
:
windowOptions
,
nvue
}
}
parsePages
(
pagesJson
,
function
(
page
)
{
addPage
(
page
.
path
,
parseStyle
(
page
.
style
))
addPage
(
page
.
path
,
parseStyle
(
page
.
style
)
,
!!
page
.
nvue
)
},
function
(
root
,
page
)
{
addPage
(
normalizePath
(
path
.
join
(
root
,
page
.
path
)),
parseStyle
(
page
.
style
,
root
))
addPage
(
normalizePath
(
path
.
join
(
root
,
page
.
path
)),
parseStyle
(
page
.
style
,
root
)
,
!!
page
.
nvue
)
})
// nvue 权限
manifestJson
.
permissions
.
UniNView
=
{
'
description
'
:
'
UniNView原生渲染
'
}
// TODO 需要考虑 condition
manifestJson
.
plus
.
launchwebview
.
id
=
'
1
'
// 首页 id 固定 为 1
if
(
appJson
.
page
[
appJson
.
entryPagePath
].
nvue
)
{
// 首页是 nvue
manifestJson
.
launch_path
=
''
// 首页地址为空
manifestJson
.
plus
.
launchwebview
.
uniNView
=
{
path
:
appJson
.
entryPagePath
}
if
(
manifestJson
.
plus
.
tabBar
)
{
manifestJson
.
plus
.
tabBar
.
child
=
[
'
lauchwebview
'
]
}
}
else
{
manifestJson
.
plus
.
launch_path
=
'
__uniappview.html
'
// 首页地址固定
}
manifest
.
name
=
'
manifest.json
'
manifest
.
content
=
JSON
.
stringify
(
manifest
.
content
)
return
[
manifest
,
parseV3Config
(
appJson
)]
delete
appJson
.
nvue
return
[
manifest
,
definePages
(
appJson
),
appConfigService
(
appJson
)]
}
return
[
app
,
manifest
]
}
}
src/core/service/bridge/index.js
浏览文件 @
5b4abb66
...
...
@@ -21,6 +21,9 @@ export function unsubscribe (event, callback) {
}
export
function
subscribeHandler
(
event
,
args
,
pageId
)
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[subscribeHandler][
${
Date
.
now
()}
]:`
,
event
,
args
,
pageId
)
}
return
emit
(
'
view.
'
+
event
,
args
,
pageId
)
}
...
...
src/core/view/bridge/index.js
浏览文件 @
5b4abb66
...
...
@@ -18,6 +18,9 @@ export function unsubscribe (event, callback) {
}
export
function
subscribeHandler
(
event
,
args
,
pageId
)
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[subscribeHandler][
${
Date
.
now
()}
]:`
,
event
,
args
,
pageId
)
}
emit
(
'
service.
'
+
event
,
args
,
pageId
)
}
...
...
src/core/view/plugins/events.js
浏览文件 @
5b4abb66
...
...
@@ -76,7 +76,7 @@ export function processEvent (name, $event = {}, detail = {}, target = {}, curre
}
// fixed mp-vue
return
wrapperMPEvent
({
const
ret
=
wrapperMPEvent
({
type
:
detail
.
type
||
name
,
timeStamp
:
$event
.
timeStamp
||
0
,
detail
:
detail
,
...
...
@@ -84,10 +84,20 @@ export function processEvent (name, $event = {}, detail = {}, target = {}, curre
currentTarget
:
processTarget
(
currentTarget
),
// 只处理系统事件
touches
:
(
$event
instanceof
Event
||
$event
instanceof
CustomEvent
)
?
processTouches
(
$event
.
touches
)
:
$event
.
touches
,
changedTouches
:
(
$event
instanceof
Event
||
$event
instanceof
CustomEvent
)
?
processTouches
(
$event
.
changedTouches
)
:
$event
.
changedTouches
,
preventDefault
()
{
},
stopPropagation
()
{
}
changedTouches
:
(
$event
instanceof
Event
||
$event
instanceof
CustomEvent
)
?
processTouches
(
$event
.
changedTouches
)
:
$event
.
changedTouches
,
preventDefault
()
{},
stopPropagation
()
{}
})
if
(
__PLATFORM__
===
'
app-plus
'
)
{
const
nid
=
currentTarget
.
getAttribute
(
'
_i
'
)
ret
.
options
=
{
nid
}
}
return
ret
}
const
LONGPRESS_TIMEOUT
=
350
...
...
@@ -124,14 +134,14 @@ function touchstart (evt) {
startPageX
=
pageX
startPageY
=
pageY
longPressTimer
=
setTimeout
(
function
()
{
longPressTimer
=
setTimeout
(
function
()
{
let
customEvent
=
new
CustomEvent
(
'
longpress
'
,
{
bubbles
:
true
,
cancelable
:
true
,
target
:
evt
.
target
,
currentTarget
:
evt
.
currentTarget
})
customEvent
.
touches
=
evt
.
touches
})
customEvent
.
touches
=
evt
.
touches
customEvent
.
changedTouches
=
evt
.
changedTouches
evt
.
target
.
dispatchEvent
(
customEvent
)
},
LONGPRESS_TIMEOUT
)
...
...
@@ -163,4 +173,4 @@ export function initEvents () {
window
.
addEventListener
(
'
touchmove
'
,
touchmove
,
passiveOptions
)
window
.
addEventListener
(
'
touchend
'
,
clearLongPressTimer
,
passiveOptions
)
window
.
addEventListener
(
'
touchcancel
'
,
clearLongPressTimer
,
passiveOptions
)
}
}
src/platforms/app-plus-nvue/service/register-page.js
已删除
100644 → 0
浏览文件 @
5c1d23b2
export
{
registerPage
}
from
'
../../app-plus/service/framework/page
'
src/platforms/app-plus/page-factory.js
0 → 100644
浏览文件 @
5b4abb66
import
{
cached
}
from
'
uni-shared
'
const
pageFactory
=
Object
.
create
(
null
)
export
function
definePage
(
name
,
createPageVueComponent
)
{
pageFactory
[
name
]
=
createPageVueComponent
}
export
const
getPageVueComponent
=
cached
(
function
(
pagePath
)
{
return
pageFactory
[
pagePath
]()
})
export
function
createPage
(
pagePath
,
pageId
)
{
if
(
!
pageFactory
[
pagePath
])
{
console
.
error
(
`
${
pagePath
}
not found`
)
}
let
startTime
=
Date
.
now
()
const
pageVm
=
new
(
getPageVueComponent
(
pagePath
))({
mpType
:
'
page
'
,
pageId
,
pagePath
})
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`new
${
pagePath
}
`
,
Date
.
now
()
-
startTime
)
}
return
pageVm
}
src/platforms/app-plus/service/api/index.js
浏览文件 @
5b4abb66
...
...
@@ -41,7 +41,8 @@ export * from './plugin/oauth'
export
*
from
'
./plugin/payment
'
export
*
from
'
./plugin/push
'
export
*
from
'
./plugin/require-native-plugin
'
export
*
from
'
./plugin/share
'
export
*
from
'
./plugin/share
'
export
*
from
'
./plugin/register-plus
'
export
*
from
'
./route/navigate-back
'
export
*
from
'
./route/navigate-to
'
...
...
src/platforms/app-plus/service/api/plugin/register-plus.js
0 → 100644
浏览文件 @
5b4abb66
export
function
registerPlus
(
newPlus
)
{
// 确保 plus 是 app-service 中的
if
(
plus
!==
newPlus
)
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[registerPlus][
${
Date
.
now
()}
]`
)
}
plus
=
newPlus
}
}
src/platforms/app-plus/service/api/route/navigate-back.js
浏览文件 @
5b4abb66
import
{
ANI_CLOSE
,
ANI_DURATION
}
from
'
.
/util
'
}
from
'
.
./../constants
'
import
{
setStatusBarStyle
...
...
@@ -102,4 +102,4 @@ export function navigateBack ({
return
{
errMsg
:
'
navigateBack:ok
'
}
}
}
src/platforms/app-plus/service/api/route/re-launch.js
浏览文件 @
5b4abb66
...
...
@@ -17,20 +17,20 @@ import {
import
tabBar
from
'
../../../../app-plus/service/framework/tab-bar
'
export
function
reLaunch
({
url
},
callbackId
)
{
const
urls
=
url
.
split
(
'
?
'
)
const
path
=
urls
[
0
]
const
query
=
parseQuery
(
urls
[
1
]
||
''
)
import
{
navigate
}
from
'
../../framework/navigator
'
function
_reLaunch
({
path
,
query
},
callbackId
)
{
const
pages
=
getCurrentPages
(
true
).
slice
(
0
)
const
routeOptions
=
__uniRoutes
.
find
(
route
=>
route
.
path
===
path
)
if
(
routeOptions
.
meta
.
isTabBar
)
{
tabBar
.
switchTab
(
url
)
tabBar
.
switchTab
(
path
)
}
showWebview
(
...
...
@@ -55,3 +55,17 @@ export function reLaunch ({
setStatusBarStyle
()
}
export
function
reLaunch
({
url
},
callbackId
)
{
const
urls
=
url
.
split
(
'
?
'
)
const
path
=
urls
[
0
]
const
query
=
parseQuery
(
urls
[
1
]
||
''
)
navigate
(
path
,
function
()
{
_reLaunch
({
path
,
query
},
callbackId
)
})
}
src/platforms/app-plus/service/api/route/redirect-to.js
浏览文件 @
5b4abb66
...
...
@@ -15,14 +15,14 @@ import {
registerPage
}
from
'
../../framework/page
'
export
function
redirectTo
({
url
},
callbackId
)
{
const
urls
=
url
.
split
(
'
?
'
)
const
path
=
urls
[
0
]
const
query
=
parseQuery
(
urls
[
1
]
||
''
)
import
{
navigate
}
from
'
../../framework/navigator
'
function
_redirectTo
({
path
,
query
},
callbackId
)
{
const
pages
=
getCurrentPages
()
const
lastPage
=
pages
[
pages
.
length
-
1
]
...
...
@@ -46,3 +46,16 @@ export function redirectTo ({
setStatusBarStyle
()
}
export
function
redirectTo
({
url
},
callbackId
)
{
const
urls
=
url
.
split
(
'
?
'
)
const
path
=
urls
[
0
]
const
query
=
parseQuery
(
urls
[
1
]
||
''
)
navigate
(
path
,
function
()
{
_redirectTo
({
path
,
query
},
callbackId
)
})
}
src/platforms/app-plus/service/api/route/switch-tab.js
浏览文件 @
5b4abb66
import
{
ANI_CLOSE
,
ANI_DURATION
,
ANI_DURATION
}
from
'
../../constants
'
import
{
showWebview
}
from
'
./util
'
...
...
@@ -17,7 +20,7 @@ import {
navigate
}
from
'
../../framework/navigator
'
import
tabBar
from
'
../../
../../app-plus/service/
framework/tab-bar
'
import
tabBar
from
'
../../framework/tab-bar
'
function
_switchTab
({
path
,
...
...
src/platforms/app-plus/service/api/route/util.js
浏览文件 @
5b4abb66
import
{
navigateStack
ANI_SHOW
,
ANI_DURATION
}
from
'
../../constants
'
import
{
navigateFinish
}
from
'
../../framework/navigator
'
export
const
ANI_DURATION
=
300
const
ANI_SHOW
=
'
pop-in
'
export
const
ANI_CLOSE
=
'
pop-out
'
export
function
showWebview
(
webview
,
animationType
,
animationDuration
,
showCallback
,
delay
)
{
if
(
typeof
delay
===
'
undefined
'
)
{
delay
=
webview
.
nvue
?
0
:
100
}
if
(
typeof
animationDuration
===
'
undefined
'
)
{
animationDuration
=
ANI_DURATION
}
else
{
animationDuration
=
parseInt
(
animationDuration
)
}
export
function
showWebview
(
webview
,
animationType
,
animationDuration
,
showCallback
,
delay
=
50
)
{
animationDuration
=
typeof
animationDuration
===
'
undefined
'
?
ANI_DURATION
:
parseInt
(
animationDuration
)
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[show][
${
Date
.
now
()}
]`
,
delay
)
}
setTimeout
(()
=>
{
webview
.
show
(
animationType
||
ANI_SHOW
,
animationDuration
||
ANI_DURATION
,
()
=>
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[show.callback][
${
Date
.
now
()}
]`
)
}
showCallback
&&
showCallback
()
navigate
Stack
(
webview
)
navigate
Finish
(
webview
)
}
)
},
delay
)
...
...
src/platforms/app-plus/service/constants.js
浏览文件 @
5b4abb66
export
const
ANI_SHOW
=
'
pop-in
'
export
const
ANI_DURATION
=
300
export
const
TITLEBAR_HEIGHT
=
44
export
const
ANI_SHOW
=
plus
.
os
.
name
===
'
Android
'
&&
parseInt
(
plus
.
os
.
version
)
<
6
?
'
slide-in-right
'
:
'
pop-in
'
export
const
ANI_DURATION
=
300
export
const
VIEW_WEBVIEW_PATH
=
'
__uniappview.html
'
export
const
ANI_CLOSE
=
'
pop-out
'
export
const
TITLEBAR_HEIGHT
=
44
export
const
VIEW_WEBVIEW_PATH
=
'
_www/__uniappview.html
'
src/platforms/app-plus/service/framework/app.js
浏览文件 @
5b4abb66
...
...
@@ -102,8 +102,6 @@ function initTabBar () {
__uniConfig
.
tabBar
.
selected
=
selected
}
__uniConfig
.
__ready__
=
true
tabBar
.
init
(
__uniConfig
.
tabBar
,
(
item
,
index
)
=>
{
uni
.
switchTab
({
url
:
'
/
'
+
item
.
pagePath
,
...
...
@@ -142,5 +140,7 @@ export function registerApp (appVm) {
initAppLaunch
(
appVm
)
__uniConfig
.
ready
=
true
process
.
env
.
NODE_ENV
!==
'
production
'
&&
perf
(
'
registerApp
'
)
}
src/platforms/app-plus/service/framework/config.js
浏览文件 @
5b4abb66
import
plugin
from
'
./plugins/index
'
function
parseRoutes
(
config
)
{
__uniRoutes
.
length
=
0
/* eslint-disable no-mixed-operators */
...
...
@@ -21,10 +19,7 @@ function parseRoutes (config) {
})
}
export
function
registerConfig
(
config
,
Vue
)
{
if
(
__PLATFORM__
===
'
app-plus
'
)
{
Vue
.
use
(
plugin
)
}
export
function
registerConfig
(
config
,
Vue
)
{
Object
.
assign
(
__uniConfig
,
config
)
__uniConfig
.
viewport
=
''
...
...
src/platforms/app-plus/service/framework/navigator.js
浏览文件 @
5b4abb66
...
...
@@ -4,31 +4,62 @@ import {
registerWebviewReady
}
from
'
./webview
'
export
const
navigatorStack
=
[]
let
todoNavigator
=
false
export
function
navigate
(
path
,
callback
)
{
let
isReady
=
true
if
(
navigatorStack
.
length
)
{
// 已存在路由跳转
isReady
=
false
}
else
{
callback
.
nvue
=
__uniConfig
.
page
[
path
.
slice
(
1
)].
nvue
// 设置 nvue 标记
// 非 nvue 且 preloadWebview 未准备好
if
(
!
callback
.
nvue
&&
(
!
preloadWebview
||
!
preloadWebview
.
loaded
))
{
isReady
=
false
if
(
__PLATFORM__
===
'
app-plus
'
)
{
if
(
todoNavigator
)
{
return
console
.
error
(
`已存在待跳转页面
${
todoNavigator
.
path
}
,请不要连续多次跳转页面`
)
}
// 未创建 preloadWebview 或 preloadWebview 已被使用
const
waitPreloadWebview
=
!
preloadWebview
||
(
preloadWebview
&&
preloadWebview
.
__uniapp_route
)
// 已创建未 loaded
const
waitPreloadWebviewReady
=
preloadWebview
&&
!
preloadWebview
.
loaded
if
(
waitPreloadWebview
||
waitPreloadWebviewReady
)
{
todoNavigator
=
{
path
:
path
,
nvue
:
__uniRoutes
.
find
(
route
=>
route
.
path
===
path
).
meta
.
isNVue
,
navigate
:
callback
}
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`todoNavigator:
${
todoNavigator
.
path
}
${
waitPreloadWebview
?
'
waitForCreate
'
:
'
waitForReady
'
}
`
)
}
}
else
{
callback
()
}
if
(
waitPreloadWebviewReady
)
{
registerWebviewReady
(
preloadWebview
.
id
,
todoNavigate
)
}
}
isReady
?
callback
()
:
navigatorStack
.
push
(
callback
)
}
export
function
navigateStack
(
webview
)
{
if
(
!
navigatorStack
.
length
)
{
return
(
!
webview
.
nvue
&&
createPreloadWebview
())
function
todoNavigate
()
{
if
(
!
todoNavigator
)
{
return
}
const
{
navigate
}
=
todoNavigator
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`todoNavigate:
${
todoNavigator
.
path
}
`
)
}
const
navigate
=
navigatorStack
.
shift
()
if
(
navigate
.
nvue
)
{
navigate
()
}
else
{
todoNavigator
=
false
return
navigate
()
}
export
function
navigateFinish
()
{
if
(
__PLATFORM__
===
'
app-plus
'
)
{
// 创建预加载
const
preloadWebview
=
createPreloadWebview
()
preloadWebview
.
loaded
?
navigate
()
:
registerWebviewReady
(
preloadWebview
.
id
,
navigate
)
if
(
!
todoNavigator
)
{
return
}
if
(
todoNavigator
.
nvue
)
{
return
todoNavigate
()
}
preloadWebview
.
loaded
?
todoNavigator
.
navigate
()
:
registerWebviewReady
(
preloadWebview
.
id
,
todoNavigate
)
}
}
src/platforms/app-plus/service/framework/page.js
浏览文件 @
5b4abb66
import
{
setPreloadWebview
,
initWebview
,
createWebview
}
from
'
./webview
'
import
{
navigate
Stack
navigate
Finish
}
from
'
./navigator
'
import
{
perf
}
from
'
.
/perf
'
PAGE_CREATE
}
from
'
.
./../constants
'
import
tabBar
from
'
../framework/tab-bar
'
import
{
createPage
}
from
'
../../page-factory
'
const
pages
=
[]
export
function
getCurrentPages
(
returnAll
)
{
...
...
@@ -22,24 +25,6 @@ export function getCurrentPages (returnAll) {
})
}
const
pageFactory
=
Object
.
create
(
null
)
export
function
definePage
(
name
,
createPageVueComponent
)
{
pageFactory
[
name
]
=
createPageVueComponent
}
export
function
createPage
(
name
,
options
)
{
if
(
!
pageFactory
[
name
])
{
console
.
error
(
`
${
name
}
not found`
)
}
let
startTime
=
Date
.
now
()
const
pageVm
=
new
(
pageFactory
[
name
]())(
options
)
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
perf
(
`new
${
name
}
`
,
startTime
)
}
return
pageVm
}
/**
* 首页需要主动registerPage,二级页面路由跳转时registerPage
*/
...
...
@@ -62,11 +47,6 @@ export function registerPage ({
webview
=
createWebview
(
path
,
routeOptions
)
}
else
{
webview
=
plus
.
webview
.
getWebviewById
(
webview
.
id
)
// renderer:native 时,把 launchWebview 标记 preloadWebview,及 loaded,方便路由跳转识别
if
(
__PLATFORM__
===
'
app-plus-nvue
'
)
{
webview
.
loaded
=
true
setPreloadWebview
(
webview
)
}
}
if
(
routeOptions
.
meta
.
isTabBar
)
{
...
...
@@ -116,19 +96,27 @@ export function registerPage ({
// 首页是 nvue 时,在 registerPage 时,执行路由堆栈
if
(
webview
.
id
===
'
1
'
&&
routeOptions
.
meta
.
isNVue
)
{
webview
.
nvue
=
true
setTimeout
(
function
()
{
navigate
Stack
(
webview
)
__uniConfig
.
onReady
(
function
()
{
navigate
Finish
(
webview
)
})
}
if
(
__PLATFORM__
===
'
app-plus
'
)
{
if
(
!
webview
.
nvue
)
{
const
pageId
=
webview
.
id
const
pagePath
=
path
.
slice
(
1
)
pageInstance
.
$vm
=
createPage
(
pagePath
,
{
mpType
:
'
page
'
,
pageId
:
webview
.
id
,
pagePath
})
// 通知页面已开始创建
UniServiceJSBridge
.
publishHandler
(
'
vdSync
'
,
{
data
:
[
[
PAGE_CREATE
,
[
pageId
,
pagePath
]]
],
options
:
{
timestamp
:
Date
.
now
()
}
},
[
pageId
])
pageInstance
.
$vm
=
createPage
(
pagePath
,
pageId
)
pageInstance
.
$vm
.
$scope
=
pageInstance
pageInstance
.
$vm
.
$mount
()
}
...
...
src/platforms/app-plus/service/framework/perf.js
浏览文件 @
5b4abb66
export
function
perf
(
type
,
startTime
)
{
/* eslint-disable no-undef */
startTime
=
startTime
||
__UniServiceStartTime__
console
.
log
(
`[PERF]
${
type
}
耗时[
${
Date
.
now
()
-
startTime
}
]`
)
startTime
=
startTime
||
__UniServiceStartTime__
const
endTime
=
Date
.
now
()
console
.
log
(
`[PERF][
${
endTime
}
]
${
type
}
耗时[
${
Date
.
now
()
-
startTime
}
]`
)
}
src/platforms/app-plus/service/framework/plugins/data.js
浏览文件 @
5b4abb66
...
...
@@ -24,7 +24,7 @@ export function initData (Vue) {
Vue
.
prototype
.
_$setData
=
function
setData
(
type
,
data
)
{
this
.
_$vd
.
push
(
type
,
this
.
_$id
,
data
)
this
.
$nextTick
(
this
.
_$vd
.
flush
.
bind
(
this
.
_$vd
))
this
.
_$vd
.
initialized
&&
this
.
$nextTick
(
this
.
_$vd
.
flush
.
bind
(
this
.
_$vd
))
}
Object
.
defineProperty
(
Vue
.
prototype
,
'
_$vd
'
,
{
...
...
@@ -61,6 +61,10 @@ export function initData (Vue) {
this
.
_$data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
_$newData
))
console
.
log
(
`[
${
this
.
_$id
}
] mounted `
+
Date
.
now
())
this
.
_$setData
(
MOUNTED_DATA
,
diffData
)
if
(
this
.
mpType
===
'
page
'
)
{
// 页面 mounted 之后,第一次同步数据
this
.
_$vd
.
flush
()
}
},
beforeUpdate
()
{
if
(
!
this
.
_$vd
)
{
...
...
src/platforms/app-plus/service/framework/plugins/vdom-sync.js
浏览文件 @
5b4abb66
import
{
PAGE_CREATE
,
PAGE_CREATED
}
from
'
../../../constants
'
...
...
@@ -73,8 +72,7 @@ export class VDomSync {
flush
()
{
if
(
!
this
.
initialized
)
{
this
.
initialized
=
true
this
.
batchData
.
unshift
([
PAGE_CREATE
,
[
this
.
pageId
]])
this
.
batchData
.
push
([
PAGE_CREATED
,
[
this
.
pagePath
]])
this
.
batchData
.
push
([
PAGE_CREATED
,
[
this
.
pageId
,
this
.
pagePath
]])
}
if
(
this
.
batchData
.
length
)
{
UniServiceJSBridge
.
publishHandler
(
'
vdSync
'
,
{
...
...
src/platforms/app-plus/service/framework/subscribe-handlers.js
浏览文件 @
5b4abb66
...
...
@@ -21,6 +21,8 @@ function onWebviewReady (data, pageId) {
const
isLaunchWebview
=
pageId
===
'
1
'
if
(
isLaunchWebview
)
{
// 首页
setPreloadWebview
(
plus
.
webview
.
getLaunchWebview
())
}
else
if
(
!
preloadWebview
)
{
// preloadWebview 不存在,重新加载一下
setPreloadWebview
(
plus
.
webview
.
getWebviewById
(
pageId
))
}
if
(
preloadWebview
.
id
!==
pageId
)
{
return
console
.
error
(
`webview[
${
pageId
}
] not found`
)
...
...
@@ -79,7 +81,7 @@ export function initSubscribeHandlers () {
registerPlusMessage
(
'
subscribeHandler
'
,
(
data
)
=>
{
subscribeHandler
(
data
.
type
,
data
.
data
,
data
.
pageId
)
})
// TODO 检测目标 preloadWebview 是否已准备好,因为 preloadWebview 准备好时,此处代码还没执行
subscribe
(
WEBVIEW_READY
,
onWebviewReady
)
subscribe
(
WEBVIEW_UI_EVENT
,
onWebviewUIEvent
)
}
src/platforms/app-plus/service/index.js
浏览文件 @
5b4abb66
import
{
getApp
,
registerApp
}
from
'
./framework/app
'
uni
}
from
'
uni-core/service/uni
'
import
{
getCurrentPages
}
from
'
./framework/page
'
invokeCallbackHandler
}
from
'
uni-helpers/api
'
import
{
registerConfig
}
from
'
./framework/config
'
publishHandler
}
from
'
uni-platform/service/publish-handler
'
import
{
uni
}
from
'
uni-core/service/uni
'
definePage
}
from
'
../page-factory
'
import
{
invokeCallbackHandler
}
from
'
uni-helpers/api
'
getApp
,
registerApp
}
from
'
./framework/app
'
import
{
registerPage
}
from
'
uni-platform/service/register-page
'
registerPage
,
getCurrentPages
}
from
'
./framework/page
'
import
{
publishHandler
}
from
'
uni-platform/service/publish-handler
'
import
vuePlugin
from
'
./framework/plugins
'
UniServiceJSBridge
.
publishHandler
=
publishHandler
UniServiceJSBridge
.
invokeCallbackHandler
=
invokeCallbackHandler
export
default
{
__registerConfig
:
registerConfig
,
__vuePlugin
:
vuePlugin
,
__definePage
:
definePage
,
__registerApp
:
registerApp
,
__registerPage
:
registerPage
,
uni
,
...
...
src/platforms/app-plus/service/register-page.js
已删除
100644 → 0
浏览文件 @
5c1d23b2
export
{
definePage
as
registerPage
}
from
'
./framework/page
'
src/platforms/app-plus/view/bridge.js
浏览文件 @
5b4abb66
...
...
@@ -14,12 +14,16 @@ function plusReady (callback) {
export
function
publishHandler
(
event
,
args
=
{})
{
plusReady
(
function
()
{
const
pageId
=
plus
.
webview
.
currentWebview
().
id
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`[VIEW][
${
Date
.
now
()}
]:`
,
event
,
args
,
pageId
)
}
plus
.
webview
.
postMessageToUniNView
({
type
:
'
subscribeHandler
'
,
args
:
{
type
:
event
,
data
:
args
,
pageId
:
plus
.
webview
.
currentWebview
().
id
pageId
}
},
APP_SERVICE_ID
)
})
...
...
src/platforms/app-plus/view/framework/page.js
浏览文件 @
5b4abb66
const
pageFactory
=
Object
.
create
(
null
)
export
function
definePage
(
name
,
createPageVueComponent
)
{
pageFactory
[
name
]
=
createPageVueComponent
}
export
function
createPage
(
name
,
options
=
{})
{
return
new
(
pageFactory
[
name
]())(
options
)
const
pages
=
[]
export
function
getCurrentPages
()
{
return
pages
}
export
function
setCurrentPage
(
pageId
,
pagePath
)
{
pages
.
length
=
0
pages
.
push
({
$page
:
{
id
:
pageId
,
route
:
pagePath
}
})
}
src/platforms/app-plus/view/framework/plugins/data.js
浏览文件 @
5b4abb66
...
...
@@ -10,17 +10,25 @@ import {
}
from
'
./vdom-sync
'
import
{
create
Page
setCurrent
Page
}
from
'
../page
'
import
{
getPageVueComponent
}
from
'
../../../page-factory
'
let
vd
let
PageVueComponent
const
handleData
=
{
[
PAGE_CREATE
]:
function
onPageCreate
(
data
)
{
const
[
pageId
]
=
data
__uniConfig
.
id
=
pageId
const
[
pageId
,
pagePath
]
=
data
// 设置当前页面伪对象,方便其他地方使用 getCurrentPages 获取当前页面 id,route
setCurrentPage
(
pageId
,
pagePath
)
// 初始化当前页面 VueComponent(生成页面样式代码)
PageVueComponent
=
getPageVueComponent
(
pagePath
)
// 生成当前页面 vd
vd
=
new
VDomSync
(
pageId
)
},
[
MOUNTED_DATA
]:
function
onMounted
(
data
)
{
...
...
@@ -30,11 +38,11 @@ const handleData = {
vd
.
updateVData
.
apply
(
vd
,
data
)
},
[
PAGE_CREATED
]:
function
onPageCreated
(
data
)
{
const
[
pagePath
]
=
data
createPage
(
pagePath
,
{
const
[
page
Id
,
page
Path
]
=
data
new
PageVueComponent
(
{
mpType
:
'
page
'
,
pageId
:
vd
.
pageId
,
pagePath
:
pagePath
pageId
,
pagePath
}).
$mount
(
'
#app
'
)
}
}
...
...
@@ -66,8 +74,6 @@ export function initData (Vue) {
if
(
this
.
_$vd
)
{
this
.
_$vd
.
initVm
(
this
)
console
.
log
(
`[
${
this
.
_$id
}
] beforeCreate `
+
Date
.
now
())
}
else
{
console
.
log
(
`[null] beforeCreate `
+
Date
.
now
())
}
}
})
...
...
src/platforms/app-plus/view/framework/plugins/event.js
浏览文件 @
5b4abb66
...
...
@@ -4,17 +4,23 @@ import {
export
function
initEvent
(
Vue
)
{
Vue
.
prototype
.
$handleViewEvent
=
function
(
$vueEvent
,
options
)
{
const
$event
=
this
.
$handleEvent
(
$vueEvent
)
const
cid
=
this
.
_$id
const
nid
=
$vueEvent
.
currentTarget
.
getAttribute
(
'
_i
'
)
const
{
nid
}
=
$event
.
options
if
(
!
nid
)
{
return
console
.
error
(
`[
${
cid
}
] nid not found`
)
}
const
$event
=
this
.
$handleEvent
(
$vueEvent
)
// 移除无
效
属性
// 移除无
用
属性
delete
$event
.
_processed
delete
$event
.
mp
delete
$event
.
preventDefault
delete
$event
.
stopPropagation
delete
$event
.
options
UniViewJSBridge
.
publishHandler
(
WEBVIEW_UI_EVENT
,
{
data
:
$event
,
...
...
src/platforms/app-plus/view/framework/plugins/index.js
浏览文件 @
5b4abb66
...
...
@@ -8,10 +8,14 @@ import {
import
{
initEvent
}
from
'
./event
'
}
from
'
./event
'
export
default
{
install
(
Vue
,
options
)
{
install
(
Vue
,
options
)
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
Vue
.
config
.
performance
=
true
}
initVue
(
Vue
)
ViewPlugin
.
install
(
Vue
,
options
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录