@cloudbase/lowcode-builder 1.8.18 → 1.8.19

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.
@@ -1,6 +1,13 @@
1
1
  import { observable } from 'mobx';
2
- import { createComputed, createEventHandlers, checkAuth, getMpEventHandlerName, generateDatasetQuery, generateEventFlows } from './util';
3
- import { createWidgets, createInitData, disposeWidget, ID_SEPARATOR, getWidget } from './widget';
2
+ import {
3
+ createComputed,
4
+ createEventHandlers,
5
+ checkAuth,
6
+ getMpEventHandlerName,
7
+ generateDatasetQuery,
8
+ generateEventFlows,
9
+ } from './util';
10
+ import { createWidgets, createInitData, disposeWidget, getWidget } from './widget';
4
11
  import mergeRenderer from './merge-renderer';
5
12
  import {
6
13
  createDataset,
@@ -10,10 +17,62 @@ import {
10
17
  setConfig,
11
18
  } from '../datasources/index';
12
19
  import { runWatchers } from './watch';
13
- import { $w as baseAPI } from '../app/weapps-api'
14
- import { Event } from './event-emitter'
20
+ import { $w as baseAPI } from '../app/weapps-api';
21
+ import { Event } from './event-emitter';
22
+ import { generatePageUrl } from '@cloudbase/weda-client';
23
+
24
+ const wxApp = getApp();
15
25
 
16
- const wxApp = getApp()
26
+ function extractLifecycles(ctx, lifecycle, appShareMessage, resetShare = true) {
27
+ const result = {};
28
+ Object.keys(lifecycle).map((name) => {
29
+ result[name] = function () {
30
+ return lifecycle[name].apply(this._getInstance(), arguments);
31
+ };
32
+ });
33
+
34
+ if (resetShare) {
35
+ result['onShareAppMessage'] = (res) => {
36
+ if (res?.from === 'button' && res?.target?.dataset?.weda_share_info) {
37
+ return res?.target?.dataset?.weda_share_info;
38
+ } else if (res?.from === 'menu' && appShareMessage?.enable) {
39
+ let { pageId, params, imageUrl, title, packageName } = appShareMessage || {};
40
+ return {
41
+ path: generatePageUrl({
42
+ pageId,
43
+ packageName,
44
+ params,
45
+ }),
46
+ imageUrl: ctx.app?.__internal__?.resolveStaticResourceUrl?.(imageUrl) || imageUrl,
47
+ title,
48
+ };
49
+ }
50
+ try {
51
+ return lifecycle?.['onShareAppMessage']?.() || {};
52
+ } catch (error) {
53
+ console.log(error);
54
+ return {};
55
+ }
56
+ };
57
+ }
58
+
59
+ // 更新设备信息 窗口信息
60
+ result['onResize'] = (res) => {
61
+ let device = baseAPI.device;
62
+ if (!device) {
63
+ return;
64
+ }
65
+ const width = res?.size?.windowWidth;
66
+ const height = res?.size?.windowHeight;
67
+ if (width !== device?.viewport?.width || height !== device?.viewport?.height) {
68
+ device.viewport = {
69
+ width,
70
+ height,
71
+ };
72
+ }
73
+ };
74
+ return result;
75
+ }
17
76
 
18
77
  export function createPage({
19
78
  app,
@@ -30,70 +89,20 @@ export function createPage({
30
89
  eventFlows = [],
31
90
  pageContext = {},
32
91
  pageAttributes = {},
92
+ resetShare = true,
33
93
  }) {
34
94
  const evtHandlers = createEventHandlers(evtListeners);
35
95
 
36
- function extractLifecycles() {
37
- const result = {};
38
- Object.keys(lifecycle).map((name) => {
39
- result[name] = function () {
40
- return lifecycle[name].apply(this._getInstance(), arguments);
41
- };
42
- });
43
-
44
- result['onShareAppMessage'] = (res) => {
45
- if (res?.from === 'button' && res?.target?.dataset?.weda_share_info) {
46
- return res?.target?.dataset?.weda_share_info;
47
- } else if (res?.from === 'menu' && pageAttributes?.appShareMessage) {
48
- let { enable, pageId, params, imageUrl, title } = pageAttributes.appShareMessage;
49
- if (enable) {
50
- pageId = pageId ? pageId.replace(/^(\.)?\//, '') : pageId;
51
- let realPath =
52
- `/pages/${pageId}/index` +
53
- (params ? '?' + params.map((pair) => pair.key + '=' + pair.value).join('&') : '');
54
- return {
55
- path: realPath,
56
- imageUrl: app?.__internal__?.resolveStaticResourceUrl?.(imageUrl) || imageUrl,
57
- title,
58
- };
59
- }
60
- }
61
- try {
62
- return lifecycle?.['onShareAppMessage']?.() || {};
63
- } catch (error) {
64
- console.log(error);
65
- return {};
66
- }
67
- };
68
-
69
- // 更新设备信息 窗口信息
70
- result['onResize'] = (res) => {
71
- let device = baseAPI.device;
72
- if (!device) {
73
- return
74
- }
75
- const width = res?.size?.windowWidth;
76
- const height = res?.size?.windowHeight;
77
- if (width !== device?.viewport?.width || height !== device?.viewport?.height) {
78
- device.viewport = {
79
- width,
80
- height
81
- };
82
- }
83
- };
84
- return result;
85
- }
86
-
87
96
  return Component({
88
97
  _componentType: 'page',
89
98
  data: {
90
99
  ...createInitData(widgetProps, dataBinds),
91
100
  _isCheckingAtuh: false,
92
- weDaHasLogin: false
101
+ weDaHasLogin: false,
93
102
  },
94
103
  lifetimes: {
95
104
  attached() {
96
- this._disposers = []
105
+ this._disposers = [];
97
106
  const $page = this._getInstance();
98
107
  this._pageActive = true;
99
108
  /**
@@ -125,8 +134,8 @@ export function createPage({
125
134
  },
126
135
  pageLifetimes: {
127
136
  // 组件所在页面的生命周期函数,定义下给运营平台上报用
128
- show: function () { },
129
- hide: function () { },
137
+ show: function () {},
138
+ hide: function () {},
130
139
  },
131
140
  methods: {
132
141
  _pageActive: true,
@@ -135,28 +144,28 @@ export function createPage({
135
144
  _disposers: [],
136
145
 
137
146
  /** page lifecycles **/
138
- ...extractLifecycles(),
147
+ ...extractLifecycles({ app }, lifecycle, pageAttributes?.appShareMessage, resetShare),
139
148
  ...evtHandlers,
140
149
  ...mergeRenderer,
141
150
  async beforePageCustomLaunch(query) {
142
151
  if (!this._beforePageCustomLaunchPromise) {
143
152
  this._beforePageCustomLaunchPromise = new Promise(async (resolve) => {
144
- await wxApp.globaldata?._beforePageCustomLaunchPromise
153
+ await wxApp.globaldata?._beforePageCustomLaunchPromise;
145
154
  const $page = this._getInstance();
146
155
  if (query) {
147
156
  EXTRA_API.setParams($page.uuid, query);
148
157
  }
149
158
  try {
150
- this.setData({ _isCheckingAtuh: true })
159
+ this.setData({ _isCheckingAtuh: true });
151
160
  const auth = await checkAuth(app, app.id, $page);
152
- if(auth) {
161
+ if (auth) {
153
162
  this.setData({
154
163
  weDaHasLogin: true,
155
164
  });
156
165
  createStateDataSourceVar($page.uuid, generateParamsParser({ app, $page, $w: $page.__internal__?.$w }));
157
166
  }
158
167
  } finally {
159
- this.setData({ _isCheckingAtuh: false })
168
+ this.setData({ _isCheckingAtuh: false });
160
169
  }
161
170
 
162
171
  // eslint-disable-next-line no-restricted-syntax
@@ -164,16 +173,16 @@ export function createPage({
164
173
  if ($page.dataset.query[queryId]?._schema?.trigger === 'auto') {
165
174
  try {
166
175
  $page.dataset.query[queryId].trigger();
167
- this._disposers.push(() => $page.dataset.query[queryId].destroy())
176
+ this._disposers.push(() => $page.dataset.query[queryId].destroy());
168
177
  } catch (e) {
169
178
  console.error(`query ${queryId} 初始化失败:`, e);
170
179
  }
171
180
  }
172
181
  }
173
- resolve()
174
- })
182
+ resolve();
183
+ });
175
184
  }
176
- return this._beforePageCustomLaunchPromise
185
+ return this._beforePageCustomLaunchPromise;
177
186
  },
178
187
  async onLoad(options) {
179
188
  const $page = this._getInstance();
@@ -184,7 +193,7 @@ export function createPage({
184
193
 
185
194
  this._query = decodePageQuery(options || {});
186
195
 
187
- await this.beforePageCustomLaunch?.(this._query)
196
+ await this.beforePageCustomLaunch?.(this._query);
188
197
 
189
198
  const hook = lifecycle.onLoad || lifecycle.onPageLoad;
190
199
  await hook?.call?.($page, this._query);
@@ -215,7 +224,7 @@ export function createPage({
215
224
  $page.__internal__.active = this._pageActive;
216
225
  app.__internal__.activePage = $page;
217
226
 
218
- await this.beforePageCustomLaunch?.(this._query)
227
+ await this.beforePageCustomLaunch?.(this._query);
219
228
 
220
229
  const hook = lifecycle.onShow || lifecycle.onPageShow;
221
230
  await hook?.call?.($page);
@@ -235,9 +244,9 @@ export function createPage({
235
244
  const keyName = getMpEventHandlerName(id, triggerName);
236
245
  const event = new Event({
237
246
  type: triggerName,
238
- detail: params
239
- })
240
- return this[keyName]?.call?.(this, event)
247
+ detail: params,
248
+ });
249
+ return this[keyName]?.call?.(this, event);
241
250
  },
242
251
  _getInstance() {
243
252
  let $page = this.$WEAPPS_PAGE;
@@ -255,8 +264,8 @@ export function createPage({
255
264
  $page.handler = Object.keys(handlers).reduce((result, key) => {
256
265
  try {
257
266
  result[key] = handlers[key].bind($page);
258
- } catch(e) {
259
- console.error('添加页面handler失败', e)
267
+ } catch (e) {
268
+ console.error('添加页面handler失败', e);
260
269
  }
261
270
  return result;
262
271
  }, {});
@@ -266,7 +275,7 @@ export function createPage({
266
275
  $w: $page.__internal__.$w,
267
276
  $app: app,
268
277
  $page,
269
- })
278
+ });
270
279
  $page.dataset = dataset;
271
280
  $page.state.dataset = dataset;
272
281
  $page.setState = (userSetState) => {
@@ -276,7 +285,7 @@ export function createPage({
276
285
  };
277
286
 
278
287
  const { widgets, rootWidget } = createWidgets(widgetProps, dataBinds, this, $page.widgets);
279
- $page.widgets = widgets
288
+ $page.widgets = widgets;
280
289
  $page._rootWidget = rootWidget;
281
290
 
282
291
  $page.invokeComponentMethod = ({ component, method, params }) => {
@@ -6,8 +6,8 @@
6
6
  "@cloudbase/js-sdk": "2.5.6-beta.1",<%
7
7
  } %>
8
8
  "@cloudbase/oauth": "0.1.1-alpha.5",
9
- "@cloudbase/weda-client": "1.0.5",
10
- "@cloudbase/weda-cloud-sdk": "1.0.40",
9
+ "@cloudbase/weda-client": "1.0.6",
10
+ "@cloudbase/weda-cloud-sdk": "1.0.42",
11
11
  "mobx": "^5.15.4",
12
12
  "lodash.get": "^4.4.2",
13
13
  "lodash.set": "^4.3.2",
@@ -86,5 +86,6 @@ createPage({
86
86
  handlers,
87
87
  query,
88
88
  eventFlows,
89
- pageAttributes: <%= pageAttributes? stringifyObj(pageAttributes, {depth: null}):'{}' %>
89
+ pageAttributes: <%= pageAttributes? stringifyObj(pageAttributes, {depth: null}):'{}' %>,
90
+ resetShare: <%= resetShare %>
90
91
  })
@@ -1,21 +0,0 @@
1
- // 处理url链接,加入params参数
2
- export function urlJoinParams(url, params) {
3
- if (!url || !params || typeof params !== 'object') {
4
- return url
5
- }
6
- const separate = url.indexOf('?') === -1 ? '?' : '&'
7
- const tempStr = Object.keys(params)
8
- .map(key => {
9
- let value = params[key]
10
- if (typeof value === 'object') {
11
- value = JSON.stringify(value)
12
- }
13
- if (value != undefined) {
14
- return `${key}=${encodeURIComponent(value)}`
15
- }
16
- return ''
17
- })
18
- .filter(value => value)
19
- .join('&')
20
- return `${url}${separate}${tempStr}`
21
- }