Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzb_79
uni-app
提交
df70b7cd
U
uni-app
项目概览
lzb_79
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
df70b7cd
编写于
5月 19, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(h5): add loader
上级
72ea5fa3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
201 addition
and
197 deletion
+201
-197
packages/uni-components/src/components/editor/index.tsx
packages/uni-components/src/components/editor/index.tsx
+155
-151
packages/uni-components/src/helpers/useContextInfo.ts
packages/uni-components/src/helpers/useContextInfo.ts
+4
-7
packages/uni-h5/dist/uni-h5.es.js
packages/uni-h5/dist/uni-h5.es.js
+17
-17
packages/uni-h5/src/view/components/video/index.tsx
packages/uni-h5/src/view/components/video/index.tsx
+21
-17
packages/vite-plugin-uni/src/configResolved/plugins/pagesJson.ts
...s/vite-plugin-uni/src/configResolved/plugins/pagesJson.ts
+4
-5
未找到文件。
packages/uni-components/src/components/editor/index.tsx
浏览文件 @
df70b7cd
...
...
@@ -257,163 +257,167 @@ function useQuill(
})
})
const
id
=
useContextInfo
()
useSubscribe
((
type
:
string
,
data
:
any
)
=>
{
const
{
options
,
callbackId
}
=
data
let
res
let
range
:
RangeStatic
|
undefined
let
errMsg
if
(
quillReady
)
{
const
Quill
=
(
window
as
WindowExt
).
Quill
as
typeof
QuillClass
switch
(
type
)
{
case
'
format
'
:
{
let
{
name
=
''
,
value
=
false
}
=
options
range
=
quill
.
getSelection
(
true
)
let
format
=
quill
.
getFormat
(
range
)[
name
]
||
false
if
(
[
'
bold
'
,
'
italic
'
,
'
underline
'
,
'
strike
'
,
'
ins
'
].
includes
(
name
)
)
{
value
=
!
format
}
else
if
(
name
===
'
direction
'
)
{
value
=
value
===
'
rtl
'
&&
format
?
false
:
value
const
align
=
quill
.
getFormat
(
range
).
align
if
(
value
===
'
rtl
'
&&
!
align
)
{
quill
.
format
(
'
align
'
,
'
right
'
,
'
user
'
)
}
else
if
(
!
value
&&
align
===
'
right
'
)
{
quill
.
format
(
'
align
'
,
false
,
'
user
'
)
}
}
else
if
(
name
===
'
indent
'
)
{
const
rtl
=
quill
.
getFormat
(
range
).
direction
===
'
rtl
'
value
=
value
===
'
+1
'
if
(
rtl
)
{
value
=
!
value
}
value
=
value
?
'
+1
'
:
'
-1
'
}
else
{
if
(
name
===
'
list
'
)
{
value
=
value
===
'
check
'
?
'
unchecked
'
:
value
format
=
format
===
'
checked
'
?
'
unchecked
'
:
format
useSubscribe
(
(
type
:
string
,
data
:
any
)
=>
{
const
{
options
,
callbackId
}
=
data
let
res
let
range
:
RangeStatic
|
undefined
let
errMsg
if
(
quillReady
)
{
const
Quill
=
(
window
as
WindowExt
).
Quill
as
typeof
QuillClass
switch
(
type
)
{
case
'
format
'
:
{
let
{
name
=
''
,
value
=
false
}
=
options
range
=
quill
.
getSelection
(
true
)
let
format
=
quill
.
getFormat
(
range
)[
name
]
||
false
if
(
[
'
bold
'
,
'
italic
'
,
'
underline
'
,
'
strike
'
,
'
ins
'
].
includes
(
name
)
)
{
value
=
!
format
}
else
if
(
name
===
'
direction
'
)
{
value
=
value
===
'
rtl
'
&&
format
?
false
:
value
const
align
=
quill
.
getFormat
(
range
).
align
if
(
value
===
'
rtl
'
&&
!
align
)
{
quill
.
format
(
'
align
'
,
'
right
'
,
'
user
'
)
}
else
if
(
!
value
&&
align
===
'
right
'
)
{
quill
.
format
(
'
align
'
,
false
,
'
user
'
)
}
}
else
if
(
name
===
'
indent
'
)
{
const
rtl
=
quill
.
getFormat
(
range
).
direction
===
'
rtl
'
value
=
value
===
'
+1
'
if
(
rtl
)
{
value
=
!
value
}
value
=
value
?
'
+1
'
:
'
-1
'
}
else
{
if
(
name
===
'
list
'
)
{
value
=
value
===
'
check
'
?
'
unchecked
'
:
value
format
=
format
===
'
checked
'
?
'
unchecked
'
:
format
}
value
=
(
format
&&
format
!==
(
value
||
false
))
||
(
!
format
&&
value
)
?
value
:
!
format
}
value
=
(
format
&&
format
!==
(
value
||
false
))
||
(
!
format
&&
value
)
?
value
:
!
format
quill
.
format
(
name
,
value
,
'
user
'
)
}
quill
.
format
(
name
,
value
,
'
user
'
)
}
break
case
'
insertDivider
'
:
range
=
quill
.
getSelection
(
true
)
quill
.
insertText
(
range
.
index
,
'
\n
'
,
'
user
'
)
quill
.
insertEmbed
(
range
.
index
+
1
,
'
divider
'
,
true
,
'
user
'
)
quill
.
setSelection
(
range
.
index
+
2
,
0
,
'
silent
'
)
break
case
'
insertImage
'
:
{
break
case
'
insertDivider
'
:
range
=
quill
.
getSelection
(
true
)
const
{
src
=
''
,
alt
=
''
,
width
=
''
,
height
=
''
,
extClass
=
''
,
data
=
{},
}
=
options
const
path
=
getRealPath
(
src
)
quill
.
insertEmbed
(
range
.
index
,
'
image
'
,
path
,
'
user
'
)
const
local
=
/^
(
file|blob
)
:/
.
test
(
path
)
?
path
:
false
quill
.
formatText
(
range
.
index
,
1
,
'
data-local
'
,
local
)
quill
.
formatText
(
range
.
index
,
1
,
'
alt
'
,
alt
)
quill
.
formatText
(
range
.
index
,
1
,
'
width
'
,
width
)
quill
.
formatText
(
range
.
index
,
1
,
'
height
'
,
height
)
quill
.
formatText
(
range
.
index
,
1
,
'
class
'
,
extClass
)
quill
.
formatText
(
range
.
index
,
1
,
'
data-custom
'
,
Object
.
keys
(
data
)
.
map
((
key
)
=>
`
${
key
}
=
${
data
[
key
]}
`
)
.
join
(
'
&
'
)
)
quill
.
setSelection
(
range
.
index
+
1
,
0
,
'
silent
'
)
}
break
case
'
insertText
'
:
{
range
=
quill
.
getSelection
(
true
)
const
{
text
=
''
}
=
options
quill
.
insertText
(
range
.
index
,
text
,
'
user
'
)
quill
.
setSelection
(
range
.
index
+
text
.
length
,
0
,
'
silent
'
)
}
break
case
'
setContents
'
:
{
const
{
delta
,
html
}
=
options
if
(
typeof
delta
===
'
object
'
)
{
quill
.
setContents
(
delta
,
'
silent
'
)
}
else
if
(
typeof
html
===
'
string
'
)
{
quill
.
setContents
(
html2delta
(
html
),
'
silent
'
)
}
else
{
errMsg
=
'
contents is missing
'
quill
.
insertText
(
range
.
index
,
'
\n
'
,
'
user
'
)
quill
.
insertEmbed
(
range
.
index
+
1
,
'
divider
'
,
true
,
'
user
'
)
quill
.
setSelection
(
range
.
index
+
2
,
0
,
'
silent
'
)
break
case
'
insertImage
'
:
{
range
=
quill
.
getSelection
(
true
)
const
{
src
=
''
,
alt
=
''
,
width
=
''
,
height
=
''
,
extClass
=
''
,
data
=
{},
}
=
options
const
path
=
getRealPath
(
src
)
quill
.
insertEmbed
(
range
.
index
,
'
image
'
,
path
,
'
user
'
)
const
local
=
/^
(
file|blob
)
:/
.
test
(
path
)
?
path
:
false
quill
.
formatText
(
range
.
index
,
1
,
'
data-local
'
,
local
)
quill
.
formatText
(
range
.
index
,
1
,
'
alt
'
,
alt
)
quill
.
formatText
(
range
.
index
,
1
,
'
width
'
,
width
)
quill
.
formatText
(
range
.
index
,
1
,
'
height
'
,
height
)
quill
.
formatText
(
range
.
index
,
1
,
'
class
'
,
extClass
)
quill
.
formatText
(
range
.
index
,
1
,
'
data-custom
'
,
Object
.
keys
(
data
)
.
map
((
key
)
=>
`
${
key
}
=
${
data
[
key
]}
`
)
.
join
(
'
&
'
)
)
quill
.
setSelection
(
range
.
index
+
1
,
0
,
'
silent
'
)
}
}
break
case
'
getContents
'
:
res
=
getContents
()
break
case
'
clear
'
:
quill
.
setText
(
''
)
break
case
'
removeFormat
'
:
{
range
=
quill
.
getSelection
(
true
)
const
parchment
=
Quill
.
import
(
'
parchment
'
)
if
(
range
.
length
)
{
quill
.
removeFormat
(
range
.
index
,
range
.
length
,
'
user
'
)
}
else
{
Object
.
keys
(
quill
.
getFormat
(
range
)).
forEach
((
key
)
=>
{
if
(
parchment
.
query
(
key
,
parchment
.
Scope
.
INLINE
))
{
quill
.
format
(
key
,
false
)
}
})
break
case
'
insertText
'
:
{
range
=
quill
.
getSelection
(
true
)
const
{
text
=
''
}
=
options
quill
.
insertText
(
range
.
index
,
text
,
'
user
'
)
quill
.
setSelection
(
range
.
index
+
text
.
length
,
0
,
'
silent
'
)
}
}
break
case
'
undo
'
:
quill
.
history
.
undo
()
break
case
'
redo
'
:
quill
.
history
.
redo
()
break
case
'
blur
'
:
quill
.
blur
()
break
case
'
getSelectionText
'
:
range
=
quill
.
selection
.
savedRange
res
=
{
text
:
''
}
if
(
range
&&
range
.
length
!==
0
)
{
res
.
text
=
quill
.
getText
(
range
.
index
,
range
.
length
)
}
break
case
'
scrollIntoView
'
:
quill
.
scrollIntoView
()
break
default
:
break
break
case
'
setContents
'
:
{
const
{
delta
,
html
}
=
options
if
(
typeof
delta
===
'
object
'
)
{
quill
.
setContents
(
delta
,
'
silent
'
)
}
else
if
(
typeof
html
===
'
string
'
)
{
quill
.
setContents
(
html2delta
(
html
),
'
silent
'
)
}
else
{
errMsg
=
'
contents is missing
'
}
}
break
case
'
getContents
'
:
res
=
getContents
()
break
case
'
clear
'
:
quill
.
setText
(
''
)
break
case
'
removeFormat
'
:
{
range
=
quill
.
getSelection
(
true
)
const
parchment
=
Quill
.
import
(
'
parchment
'
)
if
(
range
.
length
)
{
quill
.
removeFormat
(
range
.
index
,
range
.
length
,
'
user
'
)
}
else
{
Object
.
keys
(
quill
.
getFormat
(
range
)).
forEach
((
key
)
=>
{
if
(
parchment
.
query
(
key
,
parchment
.
Scope
.
INLINE
))
{
quill
.
format
(
key
,
false
)
}
})
}
}
break
case
'
undo
'
:
quill
.
history
.
undo
()
break
case
'
redo
'
:
quill
.
history
.
redo
()
break
case
'
blur
'
:
quill
.
blur
()
break
case
'
getSelectionText
'
:
range
=
quill
.
selection
.
savedRange
res
=
{
text
:
''
}
if
(
range
&&
range
.
length
!==
0
)
{
res
.
text
=
quill
.
getText
(
range
.
index
,
range
.
length
)
}
break
case
'
scrollIntoView
'
:
quill
.
scrollIntoView
()
break
default
:
break
}
updateStatus
(
range
)
}
else
{
errMsg
=
'
not ready
'
}
updateStatus
(
range
)
}
else
{
errMsg
=
'
not ready
'
}
if
(
callbackId
)
{
UniViewJSBridge
.
publishHandler
(
'
onEditorMethodCallback
'
,
{
callbackId
,
data
:
Object
.
assign
({},
res
,
{
errMsg
:
`
${
type
}
:
${
errMsg
?
'
fail
'
+
errMsg
:
'
ok
'
}
`
,
}),
})
}
},
id
,
true
)
if
(
callbackId
)
{
UniViewJSBridge
.
publishHandler
(
'
onEditorMethodCallback
'
,
{
callbackId
,
data
:
Object
.
assign
({},
res
,
{
errMsg
:
`
${
type
}
:
${
errMsg
?
'
fail
'
+
errMsg
:
'
ok
'
}
`
,
}),
})
}
},
id
,
true
)
}
const
props
=
/*#__PURE__*/
Object
.
assign
({},
keyboardProps
,
{
...
...
packages/uni-components/src/helpers/useContextInfo.ts
浏览文件 @
df70b7cd
import
{
onMounted
,
getCurrentInstance
,
}
from
'
vue
'
import
{
onMounted
,
getCurrentInstance
}
from
'
vue
'
import
{
useCurrentPageId
}
from
'
@dcloudio/uni-core
'
type
ContextType
=
'
canvas
'
|
'
map
'
|
'
video
'
|
'
editor
'
export
interface
ContextInfo
{
id
:
string
,
id
:
string
type
:
ContextType
page
:
number
}
...
...
@@ -27,11 +24,11 @@ export function useContextInfo() {
el
.
__uniContextInfo
=
{
id
,
type
,
page
page
,
}
})
return
`
${
page
}
.
${
type
}
.
${
id
}
`
}
export
function
getContextInfo
(
el
:
HTMLElement
|
HTMLElementWithContextInfo
)
{
return
(
el
as
HTMLElementWithContextInfo
).
__uniContextInfo
}
\ No newline at end of file
}
packages/uni-h5/dist/uni-h5.es.js
浏览文件 @
df70b7cd
...
...
@@ -594,7 +594,7 @@ var safeAreaInsets = {
onChange,
offChange
};
var
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out = safeAreaInsets;
var out = safeAreaInsets;
const onEventPrevent = /* @__PURE__ */ withModifiers(() => {
}, ["prevent"]);
const onEventStop = /* @__PURE__ */ withModifiers(() => {
...
...
@@ -606,10 +606,10 @@ function getWindowOffset() {
const left = parseInt(style.getPropertyValue("--window-left"));
const right = parseInt(style.getPropertyValue("--window-right"));
return {
top: top ? top +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top : 0,
bottom: bottom ? bottom +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom : 0,
left: left ? left +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left : 0,
right: right ? right +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right : 0
top: top ? top + out.top : 0,
bottom: bottom ? bottom + out.bottom : 0,
left: left ? left + out.left : 0,
right: right ? right + out.right : 0
};
}
function updateCssVar(cssVars) {
...
...
@@ -1292,7 +1292,7 @@ function normalizePageMeta(pageMeta) {
let offset = rpx2px(refreshOptions.offset);
const {type} = navigationBar;
if (type !== "transparent" && type !== "none") {
offset += NAVBAR_HEIGHT +
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top;
offset += NAVBAR_HEIGHT + out.top;
}
refreshOptions.offset = offset;
refreshOptions.height = rpx2px(refreshOptions.height);
...
...
@@ -14870,7 +14870,7 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
const windowWidth = getWindowWidth(screenWidth);
let windowHeight = window.innerHeight;
const language = navigator.language;
const statusBarHeight =
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top;
const statusBarHeight = out.top;
let osname;
let osversion;
let model;
...
...
@@ -14983,12 +14983,12 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
const system = `${osname} ${osversion}`;
const platform = osname.toLocaleLowerCase();
const safeArea = {
left:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left,
right: windowWidth -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
top:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top,
bottom: windowHeight -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom,
width: windowWidth -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
height: windowHeight -
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom
left: out.left,
right: windowWidth - out.right,
top: out.top,
bottom: windowHeight - out.bottom,
width: windowWidth -
out.left -
out.right,
height: windowHeight -
out.top -
out.bottom
};
const {top: windowTop, bottom: windowBottom} = getWindowOffset();
windowHeight -= windowTop;
...
...
@@ -15008,10 +15008,10 @@ const getSystemInfoSync = /* @__PURE__ */ defineSyncApi("getSystemInfoSync", ()
model,
safeArea,
safeAreaInsets: {
top:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.top,
right:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.right,
bottom:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.bottom,
left:
D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_
out.left
top: out.top,
right: out.right,
bottom: out.bottom,
left: out.left
}
};
});
...
...
packages/uni-h5/src/view/components/video/index.tsx
浏览文件 @
df70b7cd
...
...
@@ -685,23 +685,27 @@ function useContext(
exitFullScreen
,
}
const
id
=
useContextInfo
()
useSubscribe
((
type
:
string
,
data
:
any
)
=>
{
let
options
switch
(
type
)
{
case
'
seek
'
:
options
=
data
.
position
break
case
'
sendDanmu
'
:
options
=
data
break
case
'
playbackRate
'
:
options
=
data
.
rate
break
}
if
(
type
in
methods
)
{
methods
[
type
as
keyof
typeof
methods
](
options
)
}
},
id
,
true
)
useSubscribe
(
(
type
:
string
,
data
:
any
)
=>
{
let
options
switch
(
type
)
{
case
'
seek
'
:
options
=
data
.
position
break
case
'
sendDanmu
'
:
options
=
data
break
case
'
playbackRate
'
:
options
=
data
.
rate
break
}
if
(
type
in
methods
)
{
methods
[
type
as
keyof
typeof
methods
](
options
)
}
},
id
,
true
)
}
const
props
=
{
...
...
packages/vite-plugin-uni/src/configResolved/plugins/pagesJson.ts
浏览文件 @
df70b7cd
...
...
@@ -160,11 +160,9 @@ function generateCssCode(
}
function
generatePageDefineCode
(
pageOptions
:
UniApp
.
PagesJsonPageOptions
)
{
return
`const
${
normalizePageIdentifier
(
pageOptions
.
path
)}
= defineAsyncComponent(extend({loader:()=>import('./
${
pageOptions
.
path
}
?mpType=page')},AsyncComponentOptions))`
const
pageIdent
=
normalizePageIdentifier
(
pageOptions
.
path
)
return
`const
${
pageIdent
}
Loader = ()=>import('./
${
pageOptions
.
path
}
?mpType=page')
const
${
pageIdent
}
= defineAsyncComponent(extend({loader:
${
pageIdent
}
Loader},AsyncComponentOptions))`
}
function
generatePagesDefineCode
(
...
...
@@ -230,6 +228,7 @@ function generatePageRoute({ name, path, meta }: PageRouteOptions) {
return
`{
path:'/
${
isEntry
?
''
:
path
}
',
${
alias
}
component:{render(){return renderPage(
${
name
}
)}},
loader:
${
normalizePageIdentifier
(
path
)}
Loader,
meta:
${
JSON
.
stringify
(
meta
)}
}`
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录