@tarojs/plugin-platform-harmony-ets 4.0.0-beta.45 → 4.0.0-beta.46

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.
@@ -14,6 +14,7 @@ import type Taro from '@tarojs/taro/types'
14
14
  let context
15
15
  let kvManager: distributedKVStore.KVManager
16
16
  let kvStore: distributedKVStore.SingleKVStore
17
+ let kvStorePromise: Promise<void>
17
18
 
18
19
  (Current as any).contextPromise.then((ctx) => {
19
20
  context = ctx
@@ -38,13 +39,16 @@ let kvStore: distributedKVStore.SingleKVStore
38
39
  }
39
40
 
40
41
  const data = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
41
- kvManager.getKVStore<distributedKVStore.SingleKVStore>(`${data.appInfo.uid}Store`, options, (err, store: distributedKVStore.SingleKVStore) => {
42
- if (err) {
43
- console.error(`Failed to get KVStore: Code:${err.code},message:${err.message}`)
44
- return
45
- }
46
- kvStore = store
47
- // 请确保获取到键值数据库实例后,再进行相关数据操作
42
+ kvStorePromise = new Promise(resolve => {
43
+ kvManager.getKVStore<distributedKVStore.SingleKVStore>(`${data.appInfo.uid}Store`, options, (err, store: distributedKVStore.SingleKVStore) => {
44
+ if (err) {
45
+ console.error(`Failed to get KVStore: Code:${err.code},message:${err.message}`)
46
+ return
47
+ }
48
+ kvStore = store
49
+ // 请确保获取到键值数据库实例后,再进行相关数据操作
50
+ resolve()
51
+ })
48
52
  })
49
53
  } catch (e) {
50
54
  console.error(`Failed to create KVManager. Code:${e.code},message:${e.message}`)
@@ -58,7 +62,7 @@ const storageSchema = {
58
62
  }
59
63
 
60
64
  function checkContextExist (api: string, isAsync = false) {
61
- if (!context || !kvStore) {
65
+ if (!context) {
62
66
  const message = `${api} 调用失败,Taro 不支持过早地调用 ${api},请确保页面已经渲染完成再调用此 API`
63
67
  if (isAsync) {
64
68
  return {
@@ -91,21 +95,23 @@ export function getStorage<T = any> (options: Taro.getStorage.Option<T>) {
91
95
  const handle = new MethodHandler<{data: any}>({ name, success, fail, complete })
92
96
 
93
97
  return new Promise((resolve, reject) => {
94
- try {
95
- validateParams(name, options, storageSchema)
96
- } catch (error) {
97
- const res = { errMsg: error.message }
98
- return handle.fail(res, { resolve, reject })
99
- }
100
-
101
- kvStore = kvStore as distributedKVStore.SingleKVStore
102
- kvStore.get(key, (err, data) => {
103
- if (err) {
104
- handle.fail({ errMsg: `Failed to get data. Code:${err.code},message:${err.message}` }, { resolve, reject })
105
- return
98
+ kvStorePromise.then(() => {
99
+ try {
100
+ validateParams(name, options, storageSchema)
101
+ } catch (error) {
102
+ const res = { errMsg: error.message }
103
+ return handle.fail(res, { resolve, reject })
106
104
  }
107
-
108
- handle.success({ data }, { resolve, reject })
105
+
106
+ kvStore = kvStore as distributedKVStore.SingleKVStore
107
+ kvStore.get(key, (err, data) => {
108
+ if (err) {
109
+ handle.fail({ errMsg: `Failed to get data. Code:${err.code},message:${err.message}` }, { resolve, reject })
110
+ return
111
+ }
112
+
113
+ handle.success({ data }, { resolve, reject })
114
+ })
109
115
  })
110
116
  })
111
117
  }
@@ -122,21 +128,23 @@ export function setStorage (options: Taro.setStorage.Option) {
122
128
  const handle = new MethodHandler({ name, success, fail, complete })
123
129
 
124
130
  return new Promise((resolve, reject) => {
125
- try {
126
- validateParams(name, options, storageSchema)
127
- } catch (error) {
128
- const res = { errMsg: error.message }
129
- return handle.fail(res, { resolve, reject })
130
- }
131
-
132
- kvStore = kvStore as distributedKVStore.SingleKVStore
133
- kvStore.put(key, data, (err) => {
134
- if (err) {
135
- handle.fail({ errMsg: `Failed to put data. Code:${err.code},message:${err.message}` }, { resolve, reject })
136
- return
131
+ kvStorePromise.then(() => {
132
+ try {
133
+ validateParams(name, options, storageSchema)
134
+ } catch (error) {
135
+ const res = { errMsg: error.message }
136
+ return handle.fail(res, { resolve, reject })
137
137
  }
138
-
139
- handle.success({}, { resolve, reject })
138
+
139
+ kvStore = kvStore as distributedKVStore.SingleKVStore
140
+ kvStore.put(key, data, (err) => {
141
+ if (err) {
142
+ handle.fail({ errMsg: `Failed to put data. Code:${err.code},message:${err.message}` }, { resolve, reject })
143
+ return
144
+ }
145
+
146
+ handle.success({}, { resolve, reject })
147
+ })
140
148
  })
141
149
  })
142
150
  }
@@ -153,21 +161,23 @@ export function removeStorage (options: Taro.removeStorage.Option) {
153
161
  const handle = new MethodHandler({ name, success, fail, complete })
154
162
 
155
163
  return new Promise((resolve, reject) => {
156
- try {
157
- validateParams(name, options, storageSchema)
158
- } catch (error) {
159
- const res = { errMsg: error.message }
160
- return handle.fail(res, { resolve, reject })
161
- }
162
-
163
- kvStore = kvStore as distributedKVStore.SingleKVStore
164
- kvStore.delete(key, (err) => {
165
- if (err) {
166
- handle.fail({ errMsg: `Failed to delete data. Code:${err.code},message:${err.message}` }, { resolve, reject })
167
- return
164
+ kvStorePromise.then(() => {
165
+ try {
166
+ validateParams(name, options, storageSchema)
167
+ } catch (error) {
168
+ const res = { errMsg: error.message }
169
+ return handle.fail(res, { resolve, reject })
168
170
  }
169
-
170
- handle.success({}, { resolve, reject })
171
+
172
+ kvStore = kvStore as distributedKVStore.SingleKVStore
173
+ kvStore.delete(key, (err) => {
174
+ if (err) {
175
+ handle.fail({ errMsg: `Failed to delete data. Code:${err.code},message:${err.message}` }, { resolve, reject })
176
+ return
177
+ }
178
+
179
+ handle.success({}, { resolve, reject })
180
+ })
171
181
  })
172
182
  })
173
183
  }
@@ -127,7 +127,7 @@ export struct TaroCheckboxGroup {
127
127
  }
128
128
 
129
129
  build() {
130
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
130
+ if (FlexManager.useFlexLayout(this.node)) {
131
131
  Flex(FlexManager.flexOptions(this.node)) {
132
132
  this.createLazyChildren(this.node)
133
133
  }
@@ -24,7 +24,7 @@ export default struct TaroForm {
24
24
  }
25
25
 
26
26
  build() {
27
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
27
+ if (FlexManager.useFlexLayout(this.node)) {
28
28
  Flex(FlexManager.flexOptions(this.node)) {
29
29
  this.createLazyChildren(this.node)
30
30
  }
@@ -51,7 +51,7 @@ export default struct TaroLabel {
51
51
 
52
52
  build() {
53
53
 
54
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
54
+ if (FlexManager.useFlexLayout(this.node)) {
55
55
  Flex(FlexManager.flexOptions(this.node)) {
56
56
  this.createLazyChildren(this.node)
57
57
  }
@@ -19,7 +19,7 @@ export default struct TaroMovableArea {
19
19
  }
20
20
 
21
21
  build() {
22
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
22
+ if (FlexManager.useFlexLayout(this.node)) {
23
23
  Flex(FlexManager.flexOptions(this.node)) {
24
24
  this.createLazyChildren(this.node)
25
25
  }
@@ -20,7 +20,7 @@ export default struct TaroMovableView {
20
20
 
21
21
  build() {
22
22
  Stack() {
23
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
23
+ if (FlexManager.useFlexLayout(this.node)) {
24
24
  Flex(FlexManager.flexOptions(this.node)) {
25
25
  this.createLazyChildren(this.node)
26
26
  }
@@ -129,7 +129,7 @@ export struct TaroRadioGroup {
129
129
  }
130
130
 
131
131
  build() {
132
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
132
+ if (FlexManager.useFlexLayout(this.node)) {
133
133
  Flex(FlexManager.flexOptions(this.node)) {
134
134
  this.createLazyChildren(this.node)
135
135
  }
@@ -36,6 +36,11 @@ class TextStyleModify implements AttributeModifier<TextAttribute> {
36
36
 
37
37
  setAnimationStyle (overwriteStyle: Record<string, TaroAny>) {
38
38
  this.overwriteStyle = overwriteStyle
39
+ if (this.style && this.overwriteStyle) {
40
+ Object.keys(this.overwriteStyle).forEach(key => {
41
+ this.style![key] = this.overwriteStyle[key]
42
+ })
43
+ }
39
44
  return this
40
45
  }
41
46
 
@@ -43,12 +48,12 @@ class TextStyleModify implements AttributeModifier<TextAttribute> {
43
48
  if (this.node && this.style) {
44
49
  if (this.withNormal) {
45
50
  setNormalAttributeIntoInstance(instance, this.style, this.node)
51
+ setTransformAttributeIntoInstance(instance, this.style || {})
46
52
  }
47
53
  setNormalTextAttributeIntoInstance(instance, this.style, this.node)
48
54
  setSpecialTextAttributeIntoInstance(instance, this.style, this.node)
49
55
  }
50
56
 
51
- setAnimationAttributeIntoInstance(instance, this.overwriteStyle, this.style || {})
52
57
  }
53
58
  }
54
59
 
@@ -87,9 +92,8 @@ class CommonStyleModify implements AttributeModifier<CommonAttribute> {
87
92
  applyNormalAttribute(instance: CommonAttribute): void {
88
93
  if (this.node && this.style) {
89
94
  setNormalAttributeIntoInstance(instance, this.style, this.node)
95
+ setTransformAttributeIntoInstance(instance, this.style || {})
90
96
  }
91
-
92
- setAnimationAttributeIntoInstance(instance, this.overwriteStyle, this.style || {})
93
97
  }
94
98
  }
95
99
 
@@ -123,9 +127,9 @@ class RowStyleModify extends CommonStyleModify {
123
127
  instance.alignItems(FlexManager.alignItems<VerticalAlign>(this.node))
124
128
  instance.justifyContent(FlexManager.justifyContent(this.node))
125
129
  }
130
+ setTransformAttributeIntoInstance(instance, this.style || {})
126
131
  }
127
132
 
128
- setAnimationAttributeIntoInstance(instance, this.overwriteStyle, this.style || {})
129
133
  }
130
134
  }
131
135
 
@@ -143,33 +147,33 @@ class ColumnStyleModify extends CommonStyleModify {
143
147
  instance.alignItems(FlexManager.alignItems<HorizontalAlign>(this.node))
144
148
  instance.justifyContent(FlexManager.justifyContent(this.node))
145
149
  }
150
+ setTransformAttributeIntoInstance(instance, this.style || {})
146
151
  }
147
152
 
148
- setAnimationAttributeIntoInstance(instance, this.overwriteStyle, this.style || {})
149
153
  }
150
154
  }
151
155
 
152
- export function setAnimationAttributeIntoInstance(instance: CommonAttribute, overwriteStyle: Record<string, TaroAny>, style: TaroStyleType) {
156
+ export function setTransformAttributeIntoInstance(instance: CommonAttribute, style: TaroStyleType) {
153
157
  // Animation 需要提前和 @State 变量绑定才能产生动画效果,因此不能做 if else 判断
154
158
  instance.translate({
155
- x: overwriteStyle.transform?.Translate?.x || style.transform?.Translate?.x,
156
- y: overwriteStyle.transform?.Translate?.y || style.transform?.Translate?.y,
157
- z: overwriteStyle.transform?.Translate?.z || style.transform?.Translate?.z,
159
+ x: style.transform?.Translate?.x,
160
+ y: style.transform?.Translate?.y,
161
+ z: style.transform?.Translate?.z,
158
162
  })
159
163
  instance.scale({
160
- x: overwriteStyle.transform?.Scale?.x || style.transform?.Scale?.x,
161
- y: overwriteStyle.transform?.Scale?.y || style.transform?.Scale?.y,
162
- z: overwriteStyle.transform?.Scale?.z || style.transform?.Scale?.z,
163
- centerX: overwriteStyle.transformOrigin?.x || style.transformOrigin?.x || 0,
164
- centerY: overwriteStyle.transformOrigin?.y || style.transformOrigin?.y || 0,
164
+ x: style.transform?.Scale?.x,
165
+ y: style.transform?.Scale?.y,
166
+ z: style.transform?.Scale?.z,
167
+ centerX: style.transformOrigin?.x || 0,
168
+ centerY: style.transformOrigin?.y || 0,
165
169
  })
166
170
  instance.rotate({
167
- x: overwriteStyle.transform?.Rotate?.x || style.transform?.Rotate?.x,
168
- y: overwriteStyle.transform?.Rotate?.y || style.transform?.Rotate?.y,
169
- z: overwriteStyle.transform?.Rotate?.z || style.transform?.Rotate?.z,
170
- centerX: overwriteStyle.transformOrigin?.x || style.transformOrigin?.x || 0,
171
- centerY: overwriteStyle.transformOrigin?.y || style.transformOrigin?.y || 0,
172
- angle: overwriteStyle.transform?.Rotate?.angle || style.transform?.Rotate?.angle || 0,
171
+ x: style.transform?.Rotate?.x,
172
+ y: style.transform?.Rotate?.y,
173
+ z: style.transform?.Rotate?.z,
174
+ centerX: style.transformOrigin?.x || 0,
175
+ centerY: style.transformOrigin?.y || 0,
176
+ angle: style.transform?.Rotate?.angle || 0,
173
177
  })
174
178
  }
175
179
 
@@ -37,6 +37,11 @@ class FlexManager {
37
37
  }
38
38
  }
39
39
 
40
+ static useFlexLayout (node: TaroElement): boolean {
41
+ const hmStyle: HarmonyStyle = getNormalAttributes(node) || {}
42
+ return !isUndefined(hmStyle.flexWrap) || [ItemAlign.Stretch, ItemAlign.Baseline].indexOf(hmStyle.alignItems!) !== -1
43
+ }
44
+
40
45
  static flexOptions (node: TaroElement): IFlexOptions {
41
46
  const hmStyle: HarmonyStyle = getNormalAttributes(node) || {}
42
47
  const isFlex = FlexManager.isFlexNode(node)
@@ -23,7 +23,7 @@ export default struct TaroView {
23
23
  }
24
24
 
25
25
  build () {
26
- if (!isUndefined(this.node._st.hmStyle.flexWrap)) {
26
+ if (FlexManager.useFlexLayout(this.node)) {
27
27
  Flex(FlexManager.flexOptions(this.node)) {
28
28
  if (this.node._pseudo_before || this.node._pseudo_after) {
29
29
  PseduoChildren({ node: this.node, createLazyChildren: this.createLazyChildren })
@@ -260,18 +260,24 @@ export class TaroElement<
260
260
 
261
261
  get currentLayerNode () {
262
262
  if (typeof Current.page.tabBarCurrentIndex !== 'undefined') {
263
+ Current.page.layerNode ||= []
264
+ Current.page.layerNode[Current.page.tabBarCurrentIndex] ||= Current.createHarmonyElement('VIEW')
263
265
  // Tabbar
264
266
  return Current.page.layerNode[Current.page.tabBarCurrentIndex]
265
267
  } else {
268
+ Current.page.layerNode ||= Current.createHarmonyElement('VIEW')
266
269
  return Current.page.layerNode
267
270
  }
268
271
  }
269
272
 
270
273
  get currentLayerParents () {
271
274
  if (typeof Current.page.tabBarCurrentIndex !== 'undefined') {
275
+ Current.page.layerParents ||= []
276
+ Current.page.layerParents[Current.page.tabBarCurrentIndex] ||= []
272
277
  // Tabbar
273
278
  return Current.page.layerParents[Current.page.tabBarCurrentIndex]
274
279
  } else {
280
+ Current.page.layerParents ||= []
275
281
  return Current.page.layerParents
276
282
  }
277
283
  }
@@ -3235,6 +3235,7 @@ const createCacheManager = /* @__PURE__ */ temporarilyNotSupport('createCacheMan
3235
3235
  let context;
3236
3236
  let kvManager;
3237
3237
  let kvStore;
3238
+ let kvStorePromise;
3238
3239
  Current.contextPromise.then((ctx) => {
3239
3240
  context = ctx;
3240
3241
  const kvManagerConfig = {
@@ -3256,13 +3257,16 @@ Current.contextPromise.then((ctx) => {
3256
3257
  securityLevel: distributedKVStore.SecurityLevel.S1
3257
3258
  };
3258
3259
  const data = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);
3259
- kvManager.getKVStore(`${data.appInfo.uid}Store`, options, (err, store) => {
3260
- if (err) {
3261
- console.error(`Failed to get KVStore: Code:${err.code},message:${err.message}`);
3262
- return;
3263
- }
3264
- kvStore = store;
3265
- // 请确保获取到键值数据库实例后,再进行相关数据操作
3260
+ kvStorePromise = new Promise(resolve => {
3261
+ kvManager.getKVStore(`${data.appInfo.uid}Store`, options, (err, store) => {
3262
+ if (err) {
3263
+ console.error(`Failed to get KVStore: Code:${err.code},message:${err.message}`);
3264
+ return;
3265
+ }
3266
+ kvStore = store;
3267
+ // 请确保获取到键值数据库实例后,再进行相关数据操作
3268
+ resolve();
3269
+ });
3266
3270
  });
3267
3271
  }
3268
3272
  catch (e) {
@@ -3274,7 +3278,7 @@ const storageSchema = {
3274
3278
  key: 'String'
3275
3279
  };
3276
3280
  function checkContextExist(api, isAsync = false) {
3277
- if (!context || !kvStore) {
3281
+ if (!context) {
3278
3282
  const message = `${api} 调用失败,Taro 不支持过早地调用 ${api},请确保页面已经渲染完成再调用此 API`;
3279
3283
  if (isAsync) {
3280
3284
  return {
@@ -3302,20 +3306,22 @@ function getStorage(options) {
3302
3306
  const { key, success, fail, complete } = options || {};
3303
3307
  const handle = new MethodHandler({ name, success, fail, complete });
3304
3308
  return new Promise((resolve, reject) => {
3305
- try {
3306
- validateParams(name, options, storageSchema);
3307
- }
3308
- catch (error) {
3309
- const res = { errMsg: error.message };
3310
- return handle.fail(res, { resolve, reject });
3311
- }
3312
- kvStore = kvStore;
3313
- kvStore.get(key, (err, data) => {
3314
- if (err) {
3315
- handle.fail({ errMsg: `Failed to get data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3316
- return;
3309
+ kvStorePromise.then(() => {
3310
+ try {
3311
+ validateParams(name, options, storageSchema);
3312
+ }
3313
+ catch (error) {
3314
+ const res = { errMsg: error.message };
3315
+ return handle.fail(res, { resolve, reject });
3317
3316
  }
3318
- handle.success({ data }, { resolve, reject });
3317
+ kvStore = kvStore;
3318
+ kvStore.get(key, (err, data) => {
3319
+ if (err) {
3320
+ handle.fail({ errMsg: `Failed to get data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3321
+ return;
3322
+ }
3323
+ handle.success({ data }, { resolve, reject });
3324
+ });
3319
3325
  });
3320
3326
  });
3321
3327
  }
@@ -3328,20 +3334,22 @@ function setStorage(options) {
3328
3334
  const { key, data, success, fail, complete } = options || {};
3329
3335
  const handle = new MethodHandler({ name, success, fail, complete });
3330
3336
  return new Promise((resolve, reject) => {
3331
- try {
3332
- validateParams(name, options, storageSchema);
3333
- }
3334
- catch (error) {
3335
- const res = { errMsg: error.message };
3336
- return handle.fail(res, { resolve, reject });
3337
- }
3338
- kvStore = kvStore;
3339
- kvStore.put(key, data, (err) => {
3340
- if (err) {
3341
- handle.fail({ errMsg: `Failed to put data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3342
- return;
3337
+ kvStorePromise.then(() => {
3338
+ try {
3339
+ validateParams(name, options, storageSchema);
3343
3340
  }
3344
- handle.success({}, { resolve, reject });
3341
+ catch (error) {
3342
+ const res = { errMsg: error.message };
3343
+ return handle.fail(res, { resolve, reject });
3344
+ }
3345
+ kvStore = kvStore;
3346
+ kvStore.put(key, data, (err) => {
3347
+ if (err) {
3348
+ handle.fail({ errMsg: `Failed to put data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3349
+ return;
3350
+ }
3351
+ handle.success({}, { resolve, reject });
3352
+ });
3345
3353
  });
3346
3354
  });
3347
3355
  }
@@ -3354,20 +3362,22 @@ function removeStorage(options) {
3354
3362
  const { key, success, fail, complete } = options || {};
3355
3363
  const handle = new MethodHandler({ name, success, fail, complete });
3356
3364
  return new Promise((resolve, reject) => {
3357
- try {
3358
- validateParams(name, options, storageSchema);
3359
- }
3360
- catch (error) {
3361
- const res = { errMsg: error.message };
3362
- return handle.fail(res, { resolve, reject });
3363
- }
3364
- kvStore = kvStore;
3365
- kvStore.delete(key, (err) => {
3366
- if (err) {
3367
- handle.fail({ errMsg: `Failed to delete data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3368
- return;
3365
+ kvStorePromise.then(() => {
3366
+ try {
3367
+ validateParams(name, options, storageSchema);
3368
+ }
3369
+ catch (error) {
3370
+ const res = { errMsg: error.message };
3371
+ return handle.fail(res, { resolve, reject });
3369
3372
  }
3370
- handle.success({}, { resolve, reject });
3373
+ kvStore = kvStore;
3374
+ kvStore.delete(key, (err) => {
3375
+ if (err) {
3376
+ handle.fail({ errMsg: `Failed to delete data. Code:${err.code},message:${err.message}` }, { resolve, reject });
3377
+ return;
3378
+ }
3379
+ handle.success({}, { resolve, reject });
3380
+ });
3371
3381
  });
3372
3382
  });
3373
3383
  }