@tarojs/plugin-platform-harmony-ets 4.0.0-beta.12 → 4.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apis/base/system.ts +40 -25
- package/dist/apis/framework/index.ts +1 -5
- package/dist/apis/index.ts +1 -1
- package/dist/components-harmony-ets/pseudo.ets +72 -0
- package/dist/components-harmony-ets/scrollView.ets +4 -4
- package/dist/components-harmony-ets/style.ets +144 -123
- package/dist/components-harmony-ets/utils/flexManager.ets +6 -6
- package/dist/components-harmony-ets/utils/helper.ets +2 -2
- package/dist/components-harmony-ets/utils/styles.ets +31 -14
- package/dist/components-harmony-ets/view.ets +3 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime-ets/bom/window.ts +2 -0
- package/dist/runtime-ets/current.ts +2 -0
- package/dist/runtime-ets/dom/element/element.ts +58 -3
- package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +43 -20
- package/dist/runtime-ets/dom/stylesheet/index.ts +21 -14
- package/dist/runtime-ets/dom/stylesheet/type.ts +1 -0
- package/dist/runtime-framework/react/app.ts +5 -1
- package/dist/runtime-framework/react/native-page.ts +5 -1
- package/dist/runtime-framework/react/page.ts +1 -0
- package/dist/runtime-utils.js +41 -30
- package/dist/runtime-utils.js.map +1 -1
- package/dist/runtime.js +41 -30
- package/dist/runtime.js.map +1 -1
- package/package.json +8 -8
package/dist/apis/base/system.ts
CHANGED
|
@@ -5,38 +5,53 @@ import deviceInfo from '@ohos.deviceInfo'
|
|
|
5
5
|
import _display from '@ohos.display'
|
|
6
6
|
// 从 API Version 7 开始支持
|
|
7
7
|
import i18n from '@ohos.i18n'
|
|
8
|
+
import { Current, window } from '@tarojs/runtime'
|
|
8
9
|
|
|
9
10
|
import { callAsyncFail, callAsyncSuccess } from '../utils'
|
|
10
11
|
|
|
11
12
|
import type Taro from '@tarojs/taro/types'
|
|
12
13
|
|
|
13
14
|
let display
|
|
15
|
+
let navigationIndicatorRect
|
|
14
16
|
let safeArea: TaroGeneral.SafeAreaResult | null = null
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
let statusBarHeight
|
|
18
|
+
let windowRect
|
|
19
|
+
|
|
20
|
+
(Current as any).contextPromise.then((context) => {
|
|
21
|
+
const win = window.__ohos.getLastWindow(context)
|
|
22
|
+
win.then(mainWindow => {
|
|
23
|
+
const topRect = mainWindow.getWindowAvoidArea(window.__ohos.AvoidAreaType.TYPE_SYSTEM).topRect
|
|
24
|
+
navigationIndicatorRect = mainWindow.getWindowAvoidArea(window.__ohos.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect
|
|
25
|
+
statusBarHeight = topRect.top + topRect.height
|
|
26
|
+
windowRect = mainWindow.getWindowProperties().windowRect
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
try {
|
|
29
|
+
display = _display.getDefaultDisplaySync()
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
display.getCutoutInfo((err, { boundingRects = [], waterfallDisplayAreaRects = {} }: _display.CutoutInfo = {}) => {
|
|
32
|
+
if (err?.code) {
|
|
33
|
+
console.error('Failed to get cutout info', JSON.stringify(err))
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const top = Math.max(...boundingRects.map(rect => rect.top + rect.height), waterfallDisplayAreaRects.top?.top + waterfallDisplayAreaRects.top?.height, statusBarHeight)
|
|
38
|
+
const bottom = display.height - Math.min(waterfallDisplayAreaRects.bottom?.top, navigationIndicatorRect?.top)
|
|
39
|
+
const left = waterfallDisplayAreaRects.left?.left + waterfallDisplayAreaRects.left?.width
|
|
40
|
+
const right = display.width - waterfallDisplayAreaRects.right?.left
|
|
41
|
+
safeArea = {
|
|
42
|
+
top,
|
|
43
|
+
bottom,
|
|
44
|
+
left,
|
|
45
|
+
right,
|
|
46
|
+
height: bottom - top,
|
|
47
|
+
width: right - left,
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
} catch (e) {
|
|
51
|
+
console.error('Failed to get display', e)
|
|
35
52
|
}
|
|
36
53
|
})
|
|
37
|
-
}
|
|
38
|
-
console.error('Failed to get display', e)
|
|
39
|
-
}
|
|
54
|
+
})
|
|
40
55
|
|
|
41
56
|
/* 同步版本 */
|
|
42
57
|
export const getSystemInfoSync: typeof Taro.getSystemInfoSync = function () {
|
|
@@ -65,12 +80,12 @@ export const getSystemInfoSync: typeof Taro.getSystemInfoSync = function () {
|
|
|
65
80
|
res.safeArea = safeArea // 在竖屏正方向下的安全区域 General.SafeAreaResult
|
|
66
81
|
res.screenHeight = display?.height // 屏幕高度,单位px number
|
|
67
82
|
res.screenWidth = display?.width // 屏幕宽度,单位px number
|
|
68
|
-
res.statusBarHeight =
|
|
83
|
+
res.statusBarHeight = statusBarHeight // 状态栏的高度,单位px number
|
|
69
84
|
res.system = deviceInfo?.osFullName // 操作系统及版本 string
|
|
70
85
|
// Note: 更新配置时才能记录
|
|
71
86
|
res.theme = AppStorage.get('__TARO_APP_CONFIG')?.colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK ? 'dark' : 'light' // 系统当前主题,取值为light或dark 'light' | 'dark'
|
|
72
|
-
res.windowHeight =
|
|
73
|
-
res.windowWidth =
|
|
87
|
+
res.windowHeight = windowRect?.height // 可使用窗口高度,单位px number
|
|
88
|
+
res.windowWidth = windowRect?.width // 可使用窗口宽度,单位px number
|
|
74
89
|
res.version = deviceInfo?.displayVersion // 版本号 string
|
|
75
90
|
|
|
76
91
|
return res
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Current } from '@tarojs/runtime'
|
|
2
|
-
|
|
3
1
|
import { temporarilyNotSupport } from '../utils'
|
|
4
2
|
|
|
5
3
|
export const ENV_TYPE = {
|
|
@@ -19,12 +17,10 @@ export function getEnv () {
|
|
|
19
17
|
return ENV_TYPE.HARMONY
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
export { Current }
|
|
23
|
-
|
|
24
20
|
// TODO
|
|
25
21
|
export const getCurrentPages = () => []
|
|
26
22
|
|
|
27
|
-
export
|
|
23
|
+
export { Current, getCurrentInstance } from '@tarojs/runtime'
|
|
28
24
|
|
|
29
25
|
export const requirePlugin = temporarilyNotSupport('requirePlugin')
|
|
30
26
|
|
package/dist/apis/index.ts
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { getFontAttributes, getStyle } from './utils/helper'
|
|
2
|
+
import { pseudoModify } from './style'
|
|
3
|
+
import { createLazyChildren } from './render'
|
|
4
|
+
|
|
5
|
+
import type { TaroViewElement, TaroStyleType, TaroTextStyleType } from '@tarojs/runtime'
|
|
6
|
+
|
|
7
|
+
@Extend(Stack)
|
|
8
|
+
function stackAttrs (style: TaroStyleType) {
|
|
9
|
+
.constraintSize({
|
|
10
|
+
minWidth: style.minWidth,
|
|
11
|
+
maxWidth: style.maxWidth,
|
|
12
|
+
minHeight: style.minHeight || style.height,
|
|
13
|
+
maxHeight: style.maxHeight
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@Extend(Text)
|
|
19
|
+
function textNormalFontStyle (style: TaroStyleType) {
|
|
20
|
+
.id(style.id)
|
|
21
|
+
.key(style.id)
|
|
22
|
+
.opacity(style.opacity)
|
|
23
|
+
.fontColor(style.color)
|
|
24
|
+
.fontSize(style.fontSize)
|
|
25
|
+
.fontWeight(style.fontWeight)
|
|
26
|
+
.fontStyle(style.fontStyle)
|
|
27
|
+
.fontFamily(style.fontFamily)
|
|
28
|
+
.lineHeight(style.lineHeight)
|
|
29
|
+
.decoration({
|
|
30
|
+
type: style.textDecoration,
|
|
31
|
+
color: style.color
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Extend(Text)
|
|
36
|
+
function textSpecialFontStyle(attr: TaroTextStyleType) {
|
|
37
|
+
.textAlign(attr.textAlign)
|
|
38
|
+
.textOverflow(attr.textOverflow)
|
|
39
|
+
.maxLines(attr.WebkitLineClamp)
|
|
40
|
+
.letterSpacing(attr.letterSpacing)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Builder
|
|
44
|
+
export default function PseduoChildren (node: TaroViewElement) {
|
|
45
|
+
// 伪类::Before
|
|
46
|
+
if (node.pseudo_before) {
|
|
47
|
+
if (node.pseudo_before.content) {
|
|
48
|
+
Text(node.pseudo_before.content)
|
|
49
|
+
.attributeModifier(pseudoModify.setStyle(node.pseudo_before))
|
|
50
|
+
.textNormalFontStyle(getStyle(node.pseudo_before || {}))
|
|
51
|
+
.textSpecialFontStyle(getFontAttributes(node))
|
|
52
|
+
} else {
|
|
53
|
+
Stack() {}
|
|
54
|
+
.attributeModifier(pseudoModify.setStyle(node.pseudo_before || {}))
|
|
55
|
+
.stackAttrs(getStyle(node.pseudo_before || {}))
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
createLazyChildren(node)
|
|
59
|
+
// 伪类::After
|
|
60
|
+
if (node.pseudo_after) {
|
|
61
|
+
if (node.pseudo_after.content) {
|
|
62
|
+
Text(node.pseudo_after.content)
|
|
63
|
+
.attributeModifier(pseudoModify.setStyle(node.pseudo_after))
|
|
64
|
+
.textNormalFontStyle(getStyle(node.pseudo_after || {}))
|
|
65
|
+
.textSpecialFontStyle(getFontAttributes(node))
|
|
66
|
+
} else {
|
|
67
|
+
Stack() {}
|
|
68
|
+
.attributeModifier(pseudoModify.setStyle(node.pseudo_after || {}))
|
|
69
|
+
.stackAttrs(getStyle(node.pseudo_after || {}))
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { eventHandler, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME, createTaroEvent } from '@tarojs/runtime'
|
|
2
2
|
|
|
3
3
|
import commonStyleModify from './style'
|
|
4
|
-
import
|
|
5
|
-
import { FlexManager } from './utils/
|
|
4
|
+
import PseduoChildren from './pseudo'
|
|
5
|
+
import { FlexManager } from './utils/FlexManager'
|
|
6
6
|
import { TOUCH_EVENT_MAP } from './utils/constant/event'
|
|
7
7
|
import { getNodeThresholds, getNormalAttributes, shouldBindEvent } from './utils/helper'
|
|
8
8
|
|
|
@@ -85,7 +85,7 @@ export default struct TaroScrollView {
|
|
|
85
85
|
Scroll(this.node.scroller) {
|
|
86
86
|
if (this.node._attrs.scrollX) {
|
|
87
87
|
Row() {
|
|
88
|
-
|
|
88
|
+
PseduoChildren(this.node)
|
|
89
89
|
}
|
|
90
90
|
.attributeModifier(commonStyleModify.setNode(this.node))
|
|
91
91
|
.rowAttrs(getNormalAttributes(this.node))
|
|
@@ -98,7 +98,7 @@ export default struct TaroScrollView {
|
|
|
98
98
|
.flexGrow(0).flexShrink(0)
|
|
99
99
|
} else {
|
|
100
100
|
Column() {
|
|
101
|
-
|
|
101
|
+
PseduoChildren(this.node)
|
|
102
102
|
}
|
|
103
103
|
.attributeModifier(commonStyleModify.setNode(this.node))
|
|
104
104
|
.columnAttrs(getNormalAttributes(this.node))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { TaroElement, TaroStyleType } from '@tarojs/runtime'
|
|
1
|
+
import type { HarmonyStyle, TaroElement, TaroStyleType } from '@tarojs/runtime'
|
|
2
2
|
import { isUndefined } from '../shared'
|
|
3
|
-
import { getNormalAttributes } from './utils/helper'
|
|
3
|
+
import { getNormalAttributes, getStyle } from './utils/helper'
|
|
4
4
|
|
|
5
5
|
function getTop (node: TaroElement): Length | number {
|
|
6
6
|
return node?.hmStyle?.top || 0
|
|
@@ -23,132 +23,153 @@ class CommonStyleModify implements AttributeModifier<CommonAttribute> {
|
|
|
23
23
|
|
|
24
24
|
applyNormalAttribute(instance: CommonAttribute): void {
|
|
25
25
|
if (this.node && this.style) {
|
|
26
|
+
setNormalAttributeIntoInstance(instance, this.style)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
class PseudoStyleModify implements AttributeModifier<CommonAttribute> {
|
|
32
|
+
style: TaroStyleType | null = null
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
instance.flexShrink(this.style.flexShrink)
|
|
36
|
-
}
|
|
37
|
-
if (!isUndefined(this.style.flexBasis)) {
|
|
38
|
-
instance.flexBasis(this.style.flexBasis)
|
|
39
|
-
}
|
|
40
|
-
if (!isUndefined(this.style.alignSelf)) {
|
|
41
|
-
instance.alignSelf(this.style.alignSelf)
|
|
42
|
-
}
|
|
43
|
-
if (!isUndefined(this.style.paddingTop) || !isUndefined(this.style.paddingRight) || !isUndefined(this.style.paddingBottom) || !isUndefined(this.style.paddingLeft)) {
|
|
44
|
-
instance.padding({
|
|
45
|
-
top: this.style.paddingTop,
|
|
46
|
-
right: this.style.paddingRight,
|
|
47
|
-
bottom: this.style.paddingBottom,
|
|
48
|
-
left: this.style.paddingLeft
|
|
49
|
-
})
|
|
50
|
-
}
|
|
51
|
-
if (!isUndefined(this.style.marginTop) || !isUndefined(this.style.marginRight) || !isUndefined(this.style.marginBottom) || !isUndefined(this.style.marginLeft)) {
|
|
52
|
-
instance.margin({
|
|
53
|
-
top: this.style.marginTop,
|
|
54
|
-
right: this.style.marginRight,
|
|
55
|
-
bottom: this.style.marginBottom,
|
|
56
|
-
left: this.style.marginLeft
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
if (!isUndefined(this.style.width)) {
|
|
60
|
-
instance.width(this.style.width)
|
|
61
|
-
}
|
|
62
|
-
if (!isUndefined(this.style.height)) {
|
|
63
|
-
instance.height(this.style.height)
|
|
64
|
-
}
|
|
65
|
-
if (!isUndefined(this.style.minWidth) || !isUndefined(this.style.maxWidth) || !isUndefined(this.style.minHeight) || !isUndefined(this.style.maxHeight)) {
|
|
66
|
-
instance.constraintSize({
|
|
67
|
-
minWidth: this.style.minWidth,
|
|
68
|
-
maxWidth: this.style.maxWidth,
|
|
69
|
-
minHeight: this.style.minHeight,
|
|
70
|
-
maxHeight: this.style.maxHeight
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
if (!isUndefined(this.style.backgroundColor)) {
|
|
74
|
-
instance.backgroundColor(this.style.backgroundColor)
|
|
75
|
-
}
|
|
76
|
-
if (!isUndefined(this.style.backgroundImage)) {
|
|
77
|
-
instance.backgroundImage(this.style.backgroundImage?.src, this.style.backgroundRepeat)
|
|
78
|
-
}
|
|
79
|
-
if (!isUndefined(this.style.backgroundSize)) {
|
|
80
|
-
instance.backgroundImageSize(this.style.backgroundSize)
|
|
81
|
-
}
|
|
82
|
-
if (!isUndefined(this.style.backgroundPosition)) {
|
|
83
|
-
instance.backgroundImagePosition(this.style.backgroundPosition)
|
|
84
|
-
}
|
|
85
|
-
if (!isUndefined(this.style.borderTopStyle) || !isUndefined(this.style.borderRightStyle) || !isUndefined(this.style.borderBottomStyle) || !isUndefined(this.style.borderLeftStyle)) {
|
|
86
|
-
instance.borderStyle({
|
|
87
|
-
top: this.style.borderTopStyle,
|
|
88
|
-
right: this.style.borderRightStyle,
|
|
89
|
-
bottom: this.style.borderBottomStyle,
|
|
90
|
-
left: this.style.borderLeftStyle
|
|
91
|
-
})
|
|
92
|
-
}
|
|
93
|
-
if (!isUndefined(this.style.borderTopWidth) || !isUndefined(this.style.borderRightWidth) || !isUndefined(this.style.borderBottomWidth) || !isUndefined(this.style.borderLeftWidth)) {
|
|
94
|
-
instance.borderWidth({
|
|
95
|
-
top: this.style.borderTopWidth,
|
|
96
|
-
right: this.style.borderRightWidth,
|
|
97
|
-
bottom: this.style.borderBottomWidth,
|
|
98
|
-
left: this.style.borderLeftWidth
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
if (!isUndefined(this.style.borderTopColor) || !isUndefined(this.style.borderRightColor) || !isUndefined(this.style.borderBottomColor) || !isUndefined(this.style.borderLeftColor)) {
|
|
102
|
-
instance.borderColor({
|
|
103
|
-
top: this.style.borderTopColor,
|
|
104
|
-
right: this.style.borderRightColor,
|
|
105
|
-
bottom: this.style.borderBottomColor,
|
|
106
|
-
left: this.style.borderLeftColor
|
|
107
|
-
})
|
|
108
|
-
}
|
|
109
|
-
if (!isUndefined(this.style.borderTopLeftRadius) || !isUndefined(this.style.borderTopRightRadius) || !isUndefined(this.style.borderBottomLeftRadius) || !isUndefined(this.style.borderBottomRightRadius)) {
|
|
110
|
-
instance.borderRadius({
|
|
111
|
-
topLeft: this.style.borderTopLeftRadius,
|
|
112
|
-
topRight: this.style.borderTopRightRadius,
|
|
113
|
-
bottomLeft: this.style.borderBottomLeftRadius,
|
|
114
|
-
bottomRight: this.style.borderBottomRightRadius
|
|
115
|
-
})
|
|
116
|
-
}
|
|
117
|
-
if (!isUndefined(this.style.zIndex)) {
|
|
118
|
-
instance.zIndex(this.style.zIndex)
|
|
119
|
-
}
|
|
120
|
-
if (!isUndefined(this.style.opacity)) {
|
|
121
|
-
instance.opacity(this.style.opacity)
|
|
122
|
-
}
|
|
123
|
-
if (!isUndefined(this.style.linearGradient)) {
|
|
124
|
-
instance.linearGradient(this.style.linearGradient)
|
|
125
|
-
}
|
|
126
|
-
if (!isUndefined(this.style.overflow)) {
|
|
127
|
-
instance.clip(this.style.overflow)
|
|
128
|
-
}
|
|
129
|
-
if (!isUndefined(this.style.transformOrigin)) {
|
|
130
|
-
instance.rotate({ centerX: this.style.transformOrigin.x, centerY: this.style.transformOrigin.y, angle: 0 })
|
|
131
|
-
instance.scale({ centerX: this.style.transformOrigin.x, centerY: this.style.transformOrigin.y })
|
|
132
|
-
}
|
|
133
|
-
if (!isUndefined(this.style.transform)) {
|
|
134
|
-
instance.transform(this.style.transform)
|
|
135
|
-
}
|
|
136
|
-
if (this.node.hmStyle?.position === 'absolute' || this.node.hmStyle?.position === 'fixed') {
|
|
137
|
-
instance.position({
|
|
138
|
-
x: getLeft(this.node),
|
|
139
|
-
y: getTop(this.node)
|
|
140
|
-
})
|
|
141
|
-
}
|
|
142
|
-
if (this.node.hmStyle?.position === 'relative') {
|
|
143
|
-
instance.offset({
|
|
144
|
-
x: getLeft(this.node),
|
|
145
|
-
y: getTop(this.node)
|
|
146
|
-
})
|
|
147
|
-
}
|
|
34
|
+
setStyle (style: HarmonyStyle) {
|
|
35
|
+
this.style = getStyle(style)
|
|
36
|
+
return this
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
applyNormalAttribute(instance: CommonAttribute): void {
|
|
40
|
+
if (this.style) {
|
|
41
|
+
setNormalAttributeIntoInstance(instance, this.style)
|
|
148
42
|
}
|
|
149
43
|
}
|
|
150
44
|
}
|
|
151
45
|
|
|
46
|
+
|
|
47
|
+
function setNormalAttributeIntoInstance(instance: CommonAttribute, style: TaroStyleType) {
|
|
48
|
+
if (!isUndefined(style.id)) {
|
|
49
|
+
instance.id(style.id)
|
|
50
|
+
instance.key(style.id)
|
|
51
|
+
}
|
|
52
|
+
if (!isUndefined(style.flexGrow)) {
|
|
53
|
+
instance.flexGrow(style.flexGrow)
|
|
54
|
+
}
|
|
55
|
+
if (!isUndefined(style.flexShrink)) {
|
|
56
|
+
instance.flexShrink(style.flexShrink)
|
|
57
|
+
}
|
|
58
|
+
if (!isUndefined(style.flexBasis)) {
|
|
59
|
+
instance.flexBasis(style.flexBasis)
|
|
60
|
+
}
|
|
61
|
+
if (!isUndefined(style.alignSelf)) {
|
|
62
|
+
instance.alignSelf(style.alignSelf)
|
|
63
|
+
}
|
|
64
|
+
if (!isUndefined(style.paddingTop) || !isUndefined(style.paddingRight) || !isUndefined(style.paddingBottom) || !isUndefined(style.paddingLeft)) {
|
|
65
|
+
instance.padding({
|
|
66
|
+
top: style.paddingTop,
|
|
67
|
+
right: style.paddingRight,
|
|
68
|
+
bottom: style.paddingBottom,
|
|
69
|
+
left: style.paddingLeft
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
if (!isUndefined(style.marginTop) || !isUndefined(style.marginRight) || !isUndefined(style.marginBottom) || !isUndefined(style.marginLeft)) {
|
|
73
|
+
instance.margin({
|
|
74
|
+
top: style.marginTop,
|
|
75
|
+
right: style.marginRight,
|
|
76
|
+
bottom: style.marginBottom,
|
|
77
|
+
left: style.marginLeft
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
if (!isUndefined(style.width)) {
|
|
81
|
+
instance.width(style.width)
|
|
82
|
+
}
|
|
83
|
+
if (!isUndefined(style.height)) {
|
|
84
|
+
instance.height(style.height)
|
|
85
|
+
}
|
|
86
|
+
if (!isUndefined(style.minWidth) || !isUndefined(style.maxWidth) || !isUndefined(style.minHeight) || !isUndefined(style.maxHeight)) {
|
|
87
|
+
instance.constraintSize({
|
|
88
|
+
minWidth: style.minWidth,
|
|
89
|
+
maxWidth: style.maxWidth,
|
|
90
|
+
minHeight: style.minHeight,
|
|
91
|
+
maxHeight: style.maxHeight
|
|
92
|
+
})
|
|
93
|
+
}
|
|
94
|
+
if (!isUndefined(style.backgroundColor)) {
|
|
95
|
+
instance.backgroundColor(style.backgroundColor)
|
|
96
|
+
}
|
|
97
|
+
if (!isUndefined(style.backgroundImage)) {
|
|
98
|
+
instance.backgroundImage(style.backgroundImage?.src, style.backgroundRepeat)
|
|
99
|
+
}
|
|
100
|
+
if (!isUndefined(style.backgroundSize)) {
|
|
101
|
+
instance.backgroundImageSize(style.backgroundSize)
|
|
102
|
+
}
|
|
103
|
+
if (!isUndefined(style.backgroundPosition)) {
|
|
104
|
+
instance.backgroundImagePosition(style.backgroundPosition)
|
|
105
|
+
}
|
|
106
|
+
if (!isUndefined(style.borderTopStyle) || !isUndefined(style.borderRightStyle) || !isUndefined(style.borderBottomStyle) || !isUndefined(style.borderLeftStyle)) {
|
|
107
|
+
instance.borderStyle({
|
|
108
|
+
top: style.borderTopStyle,
|
|
109
|
+
right: style.borderRightStyle,
|
|
110
|
+
bottom: style.borderBottomStyle,
|
|
111
|
+
left: style.borderLeftStyle
|
|
112
|
+
})
|
|
113
|
+
}
|
|
114
|
+
if (!isUndefined(style.borderTopWidth) || !isUndefined(style.borderRightWidth) || !isUndefined(style.borderBottomWidth) || !isUndefined(style.borderLeftWidth)) {
|
|
115
|
+
instance.borderWidth({
|
|
116
|
+
top: style.borderTopWidth,
|
|
117
|
+
right: style.borderRightWidth,
|
|
118
|
+
bottom: style.borderBottomWidth,
|
|
119
|
+
left: style.borderLeftWidth
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
if (!isUndefined(style.borderTopColor) || !isUndefined(style.borderRightColor) || !isUndefined(style.borderBottomColor) || !isUndefined(style.borderLeftColor)) {
|
|
123
|
+
instance.borderColor({
|
|
124
|
+
top: style.borderTopColor,
|
|
125
|
+
right: style.borderRightColor,
|
|
126
|
+
bottom: style.borderBottomColor,
|
|
127
|
+
left: style.borderLeftColor
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
if (!isUndefined(style.borderTopLeftRadius) || !isUndefined(style.borderTopRightRadius) || !isUndefined(style.borderBottomLeftRadius) || !isUndefined(style.borderBottomRightRadius)) {
|
|
131
|
+
instance.borderRadius({
|
|
132
|
+
topLeft: style.borderTopLeftRadius,
|
|
133
|
+
topRight: style.borderTopRightRadius,
|
|
134
|
+
bottomLeft: style.borderBottomLeftRadius,
|
|
135
|
+
bottomRight: style.borderBottomRightRadius
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
if (!isUndefined(style.zIndex)) {
|
|
139
|
+
instance.zIndex(style.zIndex)
|
|
140
|
+
}
|
|
141
|
+
if (!isUndefined(style.opacity)) {
|
|
142
|
+
instance.opacity(style.opacity)
|
|
143
|
+
}
|
|
144
|
+
if (!isUndefined(style.linearGradient)) {
|
|
145
|
+
instance.linearGradient(style.linearGradient)
|
|
146
|
+
}
|
|
147
|
+
if (!isUndefined(style.overflow)) {
|
|
148
|
+
instance.clip(style.overflow)
|
|
149
|
+
}
|
|
150
|
+
if (!isUndefined(style.transformOrigin)) {
|
|
151
|
+
instance.rotate({ centerX: style.transformOrigin.x, centerY: style.transformOrigin.y, angle: 0 })
|
|
152
|
+
instance.scale({ centerX: style.transformOrigin.x, centerY: style.transformOrigin.y })
|
|
153
|
+
}
|
|
154
|
+
if (!isUndefined(style.transform)) {
|
|
155
|
+
instance.transform(style.transform)
|
|
156
|
+
}
|
|
157
|
+
if (style.position === 'absolute' || style.position === 'fixed') {
|
|
158
|
+
instance.position({
|
|
159
|
+
x: style.left || 0,
|
|
160
|
+
y: style.top || 0,
|
|
161
|
+
})
|
|
162
|
+
}
|
|
163
|
+
if (style.position === 'relative') {
|
|
164
|
+
instance.offset({
|
|
165
|
+
x: style.left || 0,
|
|
166
|
+
y: style.top || 0,
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
152
171
|
const modify = new CommonStyleModify()
|
|
153
172
|
|
|
173
|
+
export const pseudoModify = new PseudoStyleModify()
|
|
174
|
+
|
|
154
175
|
export default modify
|
|
@@ -18,21 +18,21 @@ class FlexManager {
|
|
|
18
18
|
static convertFlexAlignItemsToColumnOrRow (direction: FlexDirection, alignItems: ItemAlign | undefined): VerticalAlign | HorizontalAlign {
|
|
19
19
|
if (direction === FlexDirection.Column) {
|
|
20
20
|
switch (alignItems) {
|
|
21
|
-
case ItemAlign.
|
|
22
|
-
return HorizontalAlign.
|
|
21
|
+
case ItemAlign.Center:
|
|
22
|
+
return HorizontalAlign.Center
|
|
23
23
|
case ItemAlign.End:
|
|
24
24
|
return HorizontalAlign.End
|
|
25
25
|
default:
|
|
26
|
-
return HorizontalAlign.
|
|
26
|
+
return HorizontalAlign.Start
|
|
27
27
|
}
|
|
28
28
|
} else {
|
|
29
29
|
switch (alignItems) {
|
|
30
|
-
case ItemAlign.
|
|
31
|
-
return VerticalAlign.
|
|
30
|
+
case ItemAlign.Center:
|
|
31
|
+
return VerticalAlign.Center
|
|
32
32
|
case ItemAlign.End:
|
|
33
33
|
return VerticalAlign.Bottom
|
|
34
34
|
default:
|
|
35
|
-
return VerticalAlign.
|
|
35
|
+
return VerticalAlign.Top
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getNormalAttributes, getFontAttributes } from './styles'
|
|
1
|
+
import { getNormalAttributes, getStyle, getFontAttributes } from './styles'
|
|
2
2
|
|
|
3
3
|
import type { TFunc } from '@tarojs/runtime/dist/runtime.esm'
|
|
4
4
|
import type { TaroElement } from '@tarojs/runtime'
|
|
@@ -36,4 +36,4 @@ export function getNodeThresholds (node: TaroElement): number[] | null {
|
|
|
36
36
|
return node?._nodeInfo.thresholds || null
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export { getNormalAttributes, getFontAttributes }
|
|
39
|
+
export { getNormalAttributes, getStyle, getFontAttributes }
|
|
@@ -42,6 +42,30 @@ export function getNormalAttributes (node: TaroElement): TaroStyleType {
|
|
|
42
42
|
linearGradient = hmStyle.backgroundImage
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
let normalAttributes = getStyle(hmStyle)
|
|
46
|
+
|
|
47
|
+
normalAttributes.width = isMaxWidthView(node) && isUndefined(hmStyle.width) ? '100%' : hmStyle.width
|
|
48
|
+
normalAttributes.id = _attrs.id || _nid
|
|
49
|
+
|
|
50
|
+
// taro_page 等写死在运行时里的节点,没有 _nodeInfo
|
|
51
|
+
if (node._nodeInfo) {
|
|
52
|
+
const overwriteStyle: TaroStyleType = node._nodeInfo?.overwriteStyle
|
|
53
|
+
|
|
54
|
+
// 处理覆盖属性:如动画的覆盖
|
|
55
|
+
if (overwriteStyle) {
|
|
56
|
+
normalAttributes = ObjectAssign(normalAttributes, overwriteStyle)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return normalAttributes
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function getStyle(hmStyle: HarmonyStyle): TaroStyleType {
|
|
63
|
+
let linearGradient: HarmonyType.LinearGradient | undefined = undefined
|
|
64
|
+
// 渐变
|
|
65
|
+
if (hmStyle.backgroundImage?.colors) {
|
|
66
|
+
linearGradient = hmStyle.backgroundImage
|
|
67
|
+
}
|
|
68
|
+
|
|
45
69
|
let normalAttributes: HarmonyStyle = {
|
|
46
70
|
// Flex相关
|
|
47
71
|
flexBasis: hmStyle.flexBasis,
|
|
@@ -49,7 +73,7 @@ export function getNormalAttributes (node: TaroElement): TaroStyleType {
|
|
|
49
73
|
flexShrink: hmStyle.flexShrink,
|
|
50
74
|
alignSelf: hmStyle.alignSelf,
|
|
51
75
|
// 尺寸相关
|
|
52
|
-
width:
|
|
76
|
+
width: hmStyle.width,
|
|
53
77
|
height: hmStyle.height,
|
|
54
78
|
minHeight: hmStyle.minHeight,
|
|
55
79
|
maxHeight: hmStyle.maxHeight,
|
|
@@ -107,20 +131,13 @@ export function getNormalAttributes (node: TaroElement): TaroStyleType {
|
|
|
107
131
|
textDecoration: hmStyle.textDecoration,
|
|
108
132
|
// 其他
|
|
109
133
|
overflow: hmStyle.overflow,
|
|
110
|
-
id: _attrs.id || _nid,
|
|
111
134
|
opacity: hmStyle.opacity,
|
|
112
|
-
zIndex: hmStyle.zIndex
|
|
113
|
-
//
|
|
135
|
+
zIndex: hmStyle.zIndex,
|
|
136
|
+
// 定位
|
|
137
|
+
position: hmStyle.position,
|
|
138
|
+
top: hmStyle.top,
|
|
139
|
+
left: hmStyle.left,
|
|
114
140
|
}
|
|
115
141
|
|
|
116
|
-
// taro_page 等写死在运行时里的节点,没有 _nodeInfo
|
|
117
|
-
if (node._nodeInfo) {
|
|
118
|
-
const overwriteStyle: TaroStyleType = node._nodeInfo?.overwriteStyle
|
|
119
|
-
|
|
120
|
-
// 处理覆盖属性:如动画的覆盖
|
|
121
|
-
if (overwriteStyle) {
|
|
122
|
-
normalAttributes = ObjectAssign(normalAttributes, overwriteStyle)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
142
|
return normalAttributes
|
|
126
|
-
}
|
|
143
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { eventHandler, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME } from '@tarojs/runtime'
|
|
2
2
|
|
|
3
3
|
import commonStyleModify from './style'
|
|
4
|
-
import
|
|
4
|
+
import PseduoChildren from './pseudo'
|
|
5
5
|
import { TOUCH_EVENT_MAP } from './utils/constant/event'
|
|
6
6
|
import { FlexManager } from './utils/flexManager'
|
|
7
7
|
import { getNodeThresholds, getNormalAttributes, shouldBindEvent } from './utils/helper'
|
|
@@ -35,7 +35,7 @@ export default struct TaroView {
|
|
|
35
35
|
build () {
|
|
36
36
|
if (FlexManager.isFlexNode(this.node) && FlexManager.flexOptions(this.node).direction !== FlexDirection.Column) {
|
|
37
37
|
Row() {
|
|
38
|
-
|
|
38
|
+
PseduoChildren(this.node)
|
|
39
39
|
}
|
|
40
40
|
.attributeModifier(commonStyleModify.setNode(this.node))
|
|
41
41
|
.rowAttrs(getNormalAttributes(this.node))
|
|
@@ -49,7 +49,7 @@ export default struct TaroView {
|
|
|
49
49
|
.justifyContent(FlexManager.flexOptions(this.node).justifyContent)
|
|
50
50
|
} else {
|
|
51
51
|
Column() {
|
|
52
|
-
|
|
52
|
+
PseduoChildren(this.node)
|
|
53
53
|
}
|
|
54
54
|
.attributeModifier(commonStyleModify.setNode(this.node))
|
|
55
55
|
.columnAttrs(getNormalAttributes(this.node))
|
package/dist/index.js
CHANGED
|
@@ -158,7 +158,7 @@ export {
|
|
|
158
158
|
const PLATFORM_NAME = 'harmony';
|
|
159
159
|
const PACKAGE_NAME = '@tarojs/plugin-platform-harmony-ets';
|
|
160
160
|
const PLUGIN_NAME = 'TaroHarmony';
|
|
161
|
-
const HARMONY_SCOPES = [/^@system\./, /^@ohos\./, /^@hmscore
|
|
161
|
+
const HARMONY_SCOPES = [/^@system\./, /^@ohos\./, /^@hmscore\//];
|
|
162
162
|
|
|
163
163
|
function parseRelativePath(from, to) {
|
|
164
164
|
const relativePath = path.relative(from, to).replace(/\\/g, '/');
|
|
@@ -1325,6 +1325,7 @@ function assertHarmonyConfig(ctx, config) {
|
|
|
1325
1325
|
}
|
|
1326
1326
|
}
|
|
1327
1327
|
|
|
1328
|
+
exports.HarmonyOS_ArkTS = Harmony$1;
|
|
1328
1329
|
exports.HarmonyOS_JSUI = Harmony;
|
|
1329
1330
|
exports.default = index;
|
|
1330
1331
|
//# sourceMappingURL=index.js.map
|