@tarojs/with-weapp 3.8.0-canary.0 → 4.0.0-alpha.2

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/index.js CHANGED
@@ -2,47 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
- var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
9
- var _createClass = require('@babel/runtime/helpers/createClass');
10
- var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
11
- var _get = require('@babel/runtime/helpers/get');
12
- var _inherits = require('@babel/runtime/helpers/inherits');
13
- var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
14
- var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
15
- var _typeof = require('@babel/runtime/helpers/typeof');
16
5
  var runtime = require('@tarojs/runtime');
17
6
  var taro = require('@tarojs/taro');
18
7
 
19
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
-
21
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
22
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
23
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
24
- var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
25
- var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
26
- var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
27
- var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
28
- var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
29
- var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
30
- var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
31
- var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
32
-
33
- var json = JSON;
34
- var clone = function clone(obj) {
35
- return json.parse(stringify(obj));
36
- };
37
- var isArray = Array.isArray || function (x) {
8
+ const json = JSON;
9
+ const clone = obj => json.parse(stringify(obj));
10
+ const isArray = Array.isArray || function (x) {
38
11
  return {}.toString.call(x) === '[object Array]';
39
12
  };
40
- var objectKeys = Object.keys || function (obj) {
41
- var has = Object.prototype.hasOwnProperty || function () {
13
+ const objectKeys = Object.keys || function (obj) {
14
+ const has = Object.prototype.hasOwnProperty || function () {
42
15
  return true;
43
16
  };
44
- var keys = [];
45
- for (var key in obj) {
17
+ const keys = [];
18
+ for (const key in obj) {
46
19
  if (has.call(obj, key)) keys.push(key);
47
20
  }
48
21
  return keys;
@@ -52,20 +25,20 @@ function stringify(obj, opts) {
52
25
  if (typeof opts === 'function') opts = {
53
26
  cmp: opts
54
27
  };
55
- var space = opts.space || '';
28
+ let space = opts.space || '';
56
29
  if (typeof space === 'number') space = Array(space + 1).join(' ');
57
- var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;
58
- var replacer = opts.replacer || function (key, value) {
30
+ const cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;
31
+ const replacer = opts.replacer || function (key, value) {
59
32
  return value;
60
33
  };
61
- var cmp = opts.cmp && function (f) {
34
+ const cmp = opts.cmp && function (f) {
62
35
  return function (node) {
63
36
  return function (a, b) {
64
- var aobj = {
37
+ const aobj = {
65
38
  key: a,
66
39
  value: node[a]
67
40
  };
68
- var bobj = {
41
+ const bobj = {
69
42
  key: b,
70
43
  value: node[b]
71
44
  };
@@ -73,10 +46,10 @@ function stringify(obj, opts) {
73
46
  };
74
47
  };
75
48
  }(opts.cmp);
76
- var seen = [];
49
+ const seen = [];
77
50
  return function stringify(parent, key, node, level) {
78
- var indent = space ? '\n' + new Array(level + 1).join(space) : '';
79
- var colonSeparator = space ? ': ' : ':';
51
+ const indent = space ? '\n' + new Array(level + 1).join(space) : '';
52
+ const colonSeparator = space ? ': ' : ':';
80
53
  if (node && node.toJSON && typeof node.toJSON === 'function') {
81
54
  node = node.toJSON();
82
55
  }
@@ -84,13 +57,13 @@ function stringify(obj, opts) {
84
57
  if (node === undefined) {
85
58
  return;
86
59
  }
87
- if (_typeof__default["default"](node) !== 'object' || node === null) {
60
+ if (typeof node !== 'object' || node === null) {
88
61
  return json.stringify(node);
89
62
  }
90
63
  if (isArray(node)) {
91
- var out = [];
92
- for (var i = 0; i < node.length; i++) {
93
- var item = stringify(node, i, node[i], level + 1) || json.stringify(null);
64
+ const out = [];
65
+ for (let i = 0; i < node.length; i++) {
66
+ const item = stringify(node, i, node[i], level + 1) || json.stringify(null);
94
67
  out.push(indent + space + item);
95
68
  }
96
69
  return '[' + out.join(',') + indent + ']';
@@ -99,17 +72,17 @@ function stringify(obj, opts) {
99
72
  if (cycles) return json.stringify('__cycle__');
100
73
  throw new TypeError('Converting circular structure to JSON');
101
74
  } else seen.push(node);
102
- var keys = objectKeys(node).sort(cmp && cmp(node));
103
- var _out = [];
104
- for (var _i = 0; _i < keys.length; _i++) {
105
- var _key = keys[_i];
106
- var value = stringify(node, _key, node[_key], level + 1);
75
+ const keys = objectKeys(node).sort(cmp && cmp(node));
76
+ const out = [];
77
+ for (let i = 0; i < keys.length; i++) {
78
+ const key = keys[i];
79
+ const value = stringify(node, key, node[key], level + 1);
107
80
  if (!value) continue;
108
- var keyValue = json.stringify(_key) + colonSeparator + value;
109
- _out.push(indent + space + keyValue);
81
+ const keyValue = json.stringify(key) + colonSeparator + value;
82
+ out.push(indent + space + keyValue);
110
83
  }
111
84
  seen.splice(seen.indexOf(node), 1);
112
- return '{' + _out.join(',') + indent + '}';
85
+ return '{' + out.join(',') + indent + '}';
113
86
  }
114
87
  }({
115
88
  '': obj
@@ -117,23 +90,23 @@ function stringify(obj, opts) {
117
90
  }
118
91
 
119
92
  /*eslint-disable*/
120
- var ARRAYTYPE = '[object Array]';
121
- var OBJECTTYPE = '[object Object]';
122
- var FUNCTIONTYPE = '[object Function]';
93
+ const ARRAYTYPE = '[object Array]';
94
+ const OBJECTTYPE = '[object Object]';
95
+ const FUNCTIONTYPE = '[object Function]';
123
96
  function diff(current, pre) {
124
- var result = {};
97
+ const result = {};
125
98
  syncKeys(current, pre);
126
99
  _diff(current, pre, '', result);
127
100
  return result;
128
101
  }
129
102
  function syncKeys(current, pre) {
130
103
  if (current === pre) return;
131
- var rootCurrentType = type(current);
132
- var rootPreType = type(pre);
104
+ const rootCurrentType = type(current);
105
+ const rootPreType = type(pre);
133
106
  if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {
134
107
  // if(Object.keys(current).length >= Object.keys(pre).length){
135
- for (var key in pre) {
136
- var currentValue = current[key];
108
+ for (let key in pre) {
109
+ const currentValue = current[key];
137
110
  if (currentValue === undefined) {
138
111
  current[key] = null;
139
112
  } else {
@@ -143,7 +116,7 @@ function syncKeys(current, pre) {
143
116
  // }
144
117
  } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {
145
118
  if (current.length >= pre.length) {
146
- pre.forEach(function (item, index) {
119
+ pre.forEach((item, index) => {
147
120
  syncKeys(current[index], item);
148
121
  });
149
122
  }
@@ -151,17 +124,17 @@ function syncKeys(current, pre) {
151
124
  }
152
125
  function _diff(current, pre, path, result) {
153
126
  if (current === pre) return;
154
- var rootCurrentType = type(current);
155
- var rootPreType = type(pre);
127
+ const rootCurrentType = type(current);
128
+ const rootPreType = type(pre);
156
129
  if (rootCurrentType == OBJECTTYPE) {
157
130
  if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {
158
131
  setResult(result, path, current);
159
132
  } else {
160
- var _loop = function _loop(key) {
161
- var currentValue = current[key];
162
- var preValue = pre[key];
163
- var currentType = type(currentValue);
164
- var preType = type(preValue);
133
+ for (let key in current) {
134
+ const currentValue = current[key];
135
+ const preValue = pre[key];
136
+ const currentType = type(currentValue);
137
+ const preType = type(preValue);
165
138
  if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {
166
139
  if (currentValue != pre[key]) {
167
140
  setResult(result, (path == '' ? '' : path + '.') + key, currentValue);
@@ -173,7 +146,7 @@ function _diff(current, pre, path, result) {
173
146
  if (currentValue.length < preValue.length) {
174
147
  setResult(result, (path == '' ? '' : path + '.') + key, currentValue);
175
148
  } else {
176
- currentValue.forEach(function (item, index) {
149
+ currentValue.forEach((item, index) => {
177
150
  _diff(item, preValue[index], (path == '' ? '' : path + '.') + key + '[' + index + ']', result);
178
151
  });
179
152
  }
@@ -182,14 +155,11 @@ function _diff(current, pre, path, result) {
182
155
  if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {
183
156
  setResult(result, (path == '' ? '' : path + '.') + key, currentValue);
184
157
  } else {
185
- for (var subKey in currentValue) {
158
+ for (let subKey in currentValue) {
186
159
  _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + '.') + key + '.' + subKey, result);
187
160
  }
188
161
  }
189
162
  }
190
- };
191
- for (var key in current) {
192
- _loop(key);
193
163
  }
194
164
  }
195
165
  } else if (rootCurrentType == ARRAYTYPE) {
@@ -199,7 +169,7 @@ function _diff(current, pre, path, result) {
199
169
  if (current.length < pre.length) {
200
170
  setResult(result, path, current);
201
171
  } else {
202
- current.forEach(function (item, index) {
172
+ current.forEach((item, index) => {
203
173
  _diff(item, pre[index], path + '[' + index + ']', result);
204
174
  });
205
175
  }
@@ -217,7 +187,6 @@ function type(obj) {
217
187
  return Object.prototype.toString.call(obj);
218
188
  }
219
189
 
220
- var _lifecycleMap;
221
190
  var TaroLifeCycles;
222
191
  (function (TaroLifeCycles) {
223
192
  TaroLifeCycles["WillMount"] = "componentWillMount";
@@ -226,16 +195,20 @@ var TaroLifeCycles;
226
195
  TaroLifeCycles["DidHide"] = "componentDidHide";
227
196
  TaroLifeCycles["WillUnmount"] = "componentWillUnmount";
228
197
  })(TaroLifeCycles || (TaroLifeCycles = {}));
229
- var lifecycleMap = (_lifecycleMap = {}, _defineProperty__default["default"](_lifecycleMap, TaroLifeCycles.WillMount, ['created']), _defineProperty__default["default"](_lifecycleMap, TaroLifeCycles.DidMount, ['attached']), _defineProperty__default["default"](_lifecycleMap, TaroLifeCycles.DidShow, ['onShow']), _defineProperty__default["default"](_lifecycleMap, TaroLifeCycles.DidHide, ['onHide']), _defineProperty__default["default"](_lifecycleMap, TaroLifeCycles.WillUnmount, ['detached', 'onUnload']), _lifecycleMap);
230
- var lifecycles = new Set(['ready']);
231
- for (var key in lifecycleMap) {
232
- var lifecycle = lifecycleMap[key];
233
- lifecycle.forEach(function (l) {
234
- return lifecycles.add(l);
235
- });
198
+ const lifecycleMap = {
199
+ [TaroLifeCycles.WillMount]: ['created'],
200
+ [TaroLifeCycles.DidMount]: ['attached'],
201
+ [TaroLifeCycles.DidShow]: ['onShow'],
202
+ [TaroLifeCycles.DidHide]: ['onHide'],
203
+ [TaroLifeCycles.WillUnmount]: ['detached', 'onUnload']
204
+ };
205
+ const lifecycles = new Set(['ready']);
206
+ for (const key in lifecycleMap) {
207
+ const lifecycle = lifecycleMap[key];
208
+ lifecycle.forEach(l => lifecycles.add(l));
236
209
  }
237
- var uniquePageLifecycle = ['onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites', 'onPageScroll', 'onResize', 'onTabItemTap'];
238
- var appOptions = ['onLaunch', 'onShow', 'onHide', 'onError', 'onPageNotFound', 'onUnhandledRejection', 'onThemeChange'];
210
+ const uniquePageLifecycle = ['onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites', 'onPageScroll', 'onResize', 'onTabItemTap'];
211
+ const appOptions = ['onLaunch', 'onShow', 'onHide', 'onError', 'onPageNotFound', 'onUnhandledRejection', 'onThemeChange'];
239
212
 
240
213
  /**
241
214
  * Simple bind, faster than native
@@ -243,7 +216,7 @@ var appOptions = ['onLaunch', 'onShow', 'onHide', 'onError', 'onPageNotFound', '
243
216
  function bind(fn /*: Function */, ctx /*: Object */) {
244
217
  if (!fn) return false;
245
218
  function boundFn(a) {
246
- var l /*: number */ = arguments.length;
219
+ const l /*: number */ = arguments.length;
247
220
  return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);
248
221
  }
249
222
  // record original fn length
@@ -257,7 +230,7 @@ function safeGet(obj, propsArg, defaultValue) {
257
230
  if (!obj) {
258
231
  return defaultValue;
259
232
  }
260
- var props, prop;
233
+ let props, prop;
261
234
  if (Array.isArray(propsArg)) {
262
235
  props = propsArg.slice(0);
263
236
  }
@@ -265,7 +238,7 @@ function safeGet(obj, propsArg, defaultValue) {
265
238
  props = propsArg.replace(/\[(.+?)\]/g, '.$1');
266
239
  props = props.split('.');
267
240
  }
268
- if (_typeof__default["default"](propsArg) === 'symbol') {
241
+ if (typeof propsArg === 'symbol') {
269
242
  props = [propsArg];
270
243
  }
271
244
  if (!Array.isArray(props)) {
@@ -288,14 +261,14 @@ function safeSet(obj, props, value) {
288
261
  props = props.replace(/\[(.+?)\]/g, '.$1');
289
262
  props = props.split('.');
290
263
  }
291
- if (_typeof__default["default"](props) === 'symbol') {
264
+ if (typeof props === 'symbol') {
292
265
  props = [props];
293
266
  }
294
- var lastProp = props.pop();
267
+ const lastProp = props.pop();
295
268
  if (!lastProp) {
296
269
  return false;
297
270
  }
298
- var thisProp;
271
+ let thisProp;
299
272
  while (thisProp = props.shift()) {
300
273
  if (typeof obj[thisProp] === 'undefined') {
301
274
  obj[thisProp] = {};
@@ -303,12 +276,12 @@ function safeSet(obj, props, value) {
303
276
  // 直接按路径修改 this.state 可能会导致 nextProps 也被修改
304
277
  // 因此按路径寻找时,每一层都复制一遍
305
278
  if (Array.isArray(obj[thisProp])) {
306
- obj[thisProp] = _toConsumableArray__default["default"](obj[thisProp]);
307
- } else if (_typeof__default["default"](obj[thisProp]) === 'object') {
279
+ obj[thisProp] = [...obj[thisProp]];
280
+ } else if (typeof obj[thisProp] === 'object') {
308
281
  obj[thisProp] = Object.assign({}, obj[thisProp]);
309
282
  }
310
283
  obj = obj[thisProp];
311
- if (!obj || _typeof__default["default"](obj) !== 'object') {
284
+ if (!obj || typeof obj !== 'object') {
312
285
  return false;
313
286
  }
314
287
  }
@@ -318,77 +291,149 @@ function safeSet(obj, props, value) {
318
291
  function report(msg) {
319
292
  console.warn('[Taro Convert Warning] ' + msg);
320
293
  }
321
- var nonsupport = new Map([['onError', '不支持 App 的 onError 生命周期方法。'], ['onPageNotFound', '不支持 App 的 onPageNotFound 生命周期方法。'], ['onUnhandledRejection', '不支持 App 的 onUnhandledRejection 生命周期方法。'], ['onThemeChange', '不支持 App 的 onThemeChange 生命周期方法。'], ['moved', '不支持自定义组件的 moved 生命周期。'], ['externalClasses', '不支持自定义组件的 externalClasses 功能。'], ['relations', '不支持自定义组件的 relations 功能。'], ['options', '不支持自定义组件的 options 功能。'], ['definitionFilter', '不支持自定义组件的 definitionFilter 功能。'], ['selectComponent', 'selectComponent 方法产生不到目标效果,请使用 React 的 ref 进行重构。'], ['selectAllComponents', 'selectAllComponents 方法产生不到目标效果,请使用 React 的 ref 进行重构。'], ['selectOwnerComponent', 'selectOwnerComponent 方法产生不到目标效果,请使用 React 语法重构。'], ['groupSetData', 'groupSetData 方法产生不到目标效果,请使用 React 语法重构。']]);
294
+ const nonsupport = new Map([['onError', '不支持 App 的 onError 生命周期方法。'], ['onPageNotFound', '不支持 App 的 onPageNotFound 生命周期方法。'], ['onUnhandledRejection', '不支持 App 的 onUnhandledRejection 生命周期方法。'], ['onThemeChange', '不支持 App 的 onThemeChange 生命周期方法。'], ['moved', '不支持自定义组件的 moved 生命周期。'], ['externalClasses', '不支持自定义组件的 externalClasses 功能。'], ['relations', '不支持自定义组件的 relations 功能。'], ['options', '不支持自定义组件的 options 功能。'], ['definitionFilter', '不支持自定义组件的 definitionFilter 功能。'], ['selectComponent', 'selectComponent 方法产生不到目标效果,请使用 React 的 ref 进行重构。'], ['selectAllComponents', 'selectAllComponents 方法产生不到目标效果,请使用 React 的 ref 进行重构。'], ['selectOwnerComponent', 'selectOwnerComponent 方法产生不到目标效果,请使用 React 语法重构。'], ['groupSetData', 'groupSetData 方法产生不到目标效果,请使用 React 语法重构。']]);
322
295
  function flattenBehaviors(behavior, behaviorMap) {
323
296
  if (typeof behavior === 'string') {
324
- return report("\u4E0D\u652F\u6301\u4F7F\u7528\u5185\u7F6E Behavior: [".concat(behavior, "]"));
297
+ return report(`不支持使用内置 Behavior: [${behavior}]`);
325
298
  }
326
- var subBehaviors = behavior.behaviors;
299
+ const subBehaviors = behavior.behaviors;
327
300
  if (subBehaviors === null || subBehaviors === void 0 ? void 0 : subBehaviors.length) {
328
- subBehaviors.forEach(function (subBehavior) {
329
- return flattenBehaviors(subBehavior, behaviorMap);
330
- });
301
+ subBehaviors.forEach(subBehavior => flattenBehaviors(subBehavior, behaviorMap));
331
302
  }
332
- Object.keys(behavior).forEach(function (key) {
303
+ Object.keys(behavior).forEach(key => {
333
304
  // 不支持的属性
334
305
  if (nonsupport.has(key)) {
335
- var advise = nonsupport.get(key);
306
+ const advise = nonsupport.get(key);
336
307
  return report(advise);
337
308
  }
338
309
  if (behaviorMap.has(key)) {
339
- var list = behaviorMap.get(key);
340
- var value = behavior[key];
310
+ const list = behaviorMap.get(key);
311
+ const value = behavior[key];
341
312
  list.push(value);
342
313
  }
343
314
  });
344
315
  }
345
316
 
346
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
347
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
348
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
349
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
350
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
317
+ /**
318
+ * 该模块仅存放 convert 转换时用到的工具函数或变量
319
+ */
320
+ const cacheOptions = {
321
+ cacheOptions: {},
322
+ setOptionsToCache: function (options) {
323
+ if (Object.keys(options).length !== 0) {
324
+ this.cacheOptions = options;
325
+ }
326
+ },
327
+ getOptionsFromCache: function () {
328
+ return this.cacheOptions;
329
+ }
330
+ };
331
+ function toCamelCase(s) {
332
+ let camel = '';
333
+ let nextCap = false;
334
+ for (let i = 0; i < s.length; i++) {
335
+ if (s[i] !== '-') {
336
+ camel += nextCap ? s[i].toUpperCase() : s[i];
337
+ nextCap = false;
338
+ } else {
339
+ nextCap = true;
340
+ }
341
+ }
342
+ return camel;
343
+ }
344
+ const convertToArray = function (value, fn) {
345
+ if (value instanceof Array) {
346
+ return value.map(fn);
347
+ } else if (typeof value === 'number') {
348
+ return Array.from({
349
+ length: value
350
+ }, (_, index) => index).map(fn);
351
+ } else if (typeof value === 'string') {
352
+ return Array.from(value).map(fn);
353
+ } else if (typeof value === 'object' && value !== null && Object.getPrototypeOf(value) === Object.prototype) {
354
+ const result = Object.keys(value).map(item => {
355
+ return fn(value[item], item);
356
+ });
357
+ return result;
358
+ }
359
+ };
360
+ const getTarget = (target, Taro) => {
361
+ if (!target) {
362
+ return {
363
+ dataset: {}
364
+ };
365
+ }
366
+ if (Taro.getEnv() === Taro.ENV_TYPE.HARMONYHYBRID || Taro.getEnv() === Taro.ENV_TYPE.WEB) {
367
+ if (target.fullDataset) {
368
+ return {
369
+ dataset: target.fullDataset
370
+ };
371
+ }
372
+ const fullDataset = {};
373
+ // 获取元素的所有属性
374
+ const targetAttrKeys = Object.keys(target);
375
+ // 遍历所有属性
376
+ for (let i = 0; i < targetAttrKeys.length; i++) {
377
+ if (targetAttrKeys[i].startsWith('data-')) {
378
+ fullDataset[toCamelCase(targetAttrKeys[i].replace(/^data-/, '').toLowerCase())] = target[targetAttrKeys[i]];
379
+ }
380
+ }
381
+ target.fullDataset = fullDataset;
382
+ return {
383
+ dataset: fullDataset
384
+ };
385
+ }
386
+ return target;
387
+ };
388
+
351
389
  function defineGetter(component, key, getter) {
352
390
  Object.defineProperty(component, key, {
353
391
  enumerable: true,
354
392
  configurable: true,
355
- get: function get() {
393
+ get: () => {
356
394
  if (getter === 'props') {
357
395
  return component.props;
358
396
  }
359
- return Object.assign(Object.assign({}, component.state), component.props);
397
+ return component.state;
398
+ // return {
399
+ // ...component.state,
400
+ // ...component.props
401
+ // }
360
402
  }
361
403
  });
362
404
  }
405
+
406
+ function propToState(newValue, _oldValue, key) {
407
+ this.state[key] = newValue;
408
+ }
363
409
  function isFunction(o) {
364
410
  return typeof o === 'function';
365
411
  }
366
- function withWeapp(weappConf) {
367
- var isApp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
368
- if (_typeof__default["default"](weappConf) === 'object' && Object.keys(weappConf).length === 0) {
412
+ function withWeapp(weappConf, isApp = false) {
413
+ if (typeof weappConf === 'object' && Object.keys(weappConf).length === 0) {
369
414
  report('withWeapp 请传入“App/页面/组件“的配置对象。如果原生写法使用了基类,请将基类组合后的配置对象传入,详情请参考文档。');
370
415
  }
371
- return function (ConnectComponent) {
416
+ return ConnectComponent => {
372
417
  var _a;
373
- var behaviorMap = new Map([['properties', []], ['data', []], ['methods', []], ['created', []], ['attached', []], ['ready', []], ['detached', []]]);
374
- var behaviorProperties = {};
418
+ const behaviorMap = new Map([['properties', []], ['data', []], ['methods', []], ['created', []], ['attached', []], ['ready', []], ['detached', []], ['lifetimes', []]]);
419
+ const behaviorProperties = {};
375
420
  if ((_a = weappConf.behaviors) === null || _a === void 0 ? void 0 : _a.length) {
376
- var behaviors = weappConf.behaviors;
377
- behaviors.forEach(function (behavior) {
378
- return flattenBehaviors(behavior, behaviorMap);
379
- });
380
- var propertiesList = behaviorMap.get('properties');
421
+ const {
422
+ behaviors
423
+ } = weappConf;
424
+ behaviors.forEach(behavior => flattenBehaviors(behavior, behaviorMap));
425
+ const propertiesList = behaviorMap.get('properties');
381
426
  if (propertiesList.length) {
382
- propertiesList.forEach(function (property) {
427
+ propertiesList.forEach(property => {
383
428
  Object.assign(behaviorProperties, property);
384
429
  });
385
- Object.keys(behaviorProperties).forEach(function (propName) {
386
- var propValue = behaviorProperties[propName];
430
+ Object.keys(behaviorProperties).forEach(propName => {
431
+ const propValue = behaviorProperties[propName];
387
432
  if (!weappConf.properties) {
388
433
  weappConf.properties = {};
389
434
  }
390
435
  if (!weappConf.properties.hasOwnProperty(propName)) {
391
- if (propValue && _typeof__default["default"](propValue) === 'object' && propValue.value) {
436
+ if (propValue && typeof propValue === 'object' && propValue.value) {
392
437
  propValue.value = clone(propValue.value);
393
438
  }
394
439
  weappConf.properties[propName] = propValue;
@@ -396,45 +441,38 @@ function withWeapp(weappConf) {
396
441
  });
397
442
  }
398
443
  }
399
- var BaseComponent = /*#__PURE__*/function (_ConnectComponent) {
400
- _inherits__default["default"](BaseComponent, _ConnectComponent);
401
- var _super = _createSuper(BaseComponent);
402
- function BaseComponent(props) {
403
- var _this;
404
- _classCallCheck__default["default"](this, BaseComponent);
405
- _this = _super.call(this, props);
406
- _this._observeProps = [];
444
+ class BaseComponent extends ConnectComponent {
445
+ constructor(props) {
446
+ super(props);
447
+ this._observeProps = [];
407
448
  // mixins 可以多次调用生命周期
408
- _this.willMounts = [];
409
- _this.didMounts = [];
410
- _this.didHides = [];
411
- _this.didShows = [];
412
- _this.willUnmounts = [];
413
- _this.eventDestroyList = [];
414
- _this.current = runtime.getCurrentInstance();
415
- _this.taroGlobalData = Object.create(null);
416
- _this.safeExecute = function (func) {
417
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
418
- args[_key - 1] = arguments[_key];
419
- }
420
- if (isFunction(func)) func.apply(_assertThisInitialized__default["default"](_this), args);
449
+ this.willMounts = [];
450
+ this.didMounts = [];
451
+ this.didHides = [];
452
+ this.didShows = [];
453
+ this.willUnmounts = [];
454
+ this.eventDestroyList = [];
455
+ this.current = runtime.getCurrentInstance();
456
+ this.taroGlobalData = Object.create(null);
457
+ this.safeExecute = (func, ...args) => {
458
+ if (isFunction(func)) func.apply(this, args);
421
459
  };
422
- _this.setData = function (obj, callback) {
423
- var oldState;
424
- if (_this.observers && Object.keys(Object.keys(_this.observers))) {
425
- oldState = clone(_this.state);
460
+ this.setData = (obj, callback) => {
461
+ let oldState;
462
+ if (this.observers && Object.keys(Object.keys(this.observers))) {
463
+ oldState = clone(this.state);
426
464
  }
427
- Object.keys(obj).forEach(function (key) {
428
- safeSet(_this.state, key, obj[key]);
465
+ Object.keys(obj).forEach(key => {
466
+ safeSet(this.state, key, obj[key]);
429
467
  });
430
- _this.setState(_this.state, function () {
431
- _this.triggerObservers(_this.state, oldState);
468
+ this.setState(this.state, () => {
469
+ this.triggerObservers(this.state, oldState);
432
470
  if (callback) {
433
- callback.call(_assertThisInitialized__default["default"](_this));
471
+ callback.call(this);
434
472
  }
435
473
  });
436
474
  };
437
- _this.triggerEvent = function (eventName, detail, options) {
475
+ this.triggerEvent = (eventName, detail, options) => {
438
476
  if (options) {
439
477
  report('triggerEvent 不支持事件选项。');
440
478
  }
@@ -444,521 +482,467 @@ function withWeapp(weappConf) {
444
482
  return match[1].toUpperCase();
445
483
  });
446
484
  }
447
- var props = _this.props;
448
- var dataset = {};
449
- for (var key in props) {
485
+ const props = this.props;
486
+ const dataset = {};
487
+ for (const key in props) {
450
488
  if (!key.startsWith('data-')) continue;
451
489
  dataset[key.replace(/^data-/, '')] = props[key];
452
490
  }
453
- var func = props["on".concat(eventName[0].toUpperCase()).concat(eventName.slice(1))];
491
+ const func = props[`on${eventName[0].toUpperCase()}${eventName.slice(1)}`];
454
492
  if (isFunction(func)) {
455
- func.call(_assertThisInitialized__default["default"](_this), {
493
+ func.call(this, {
456
494
  type: eventName,
457
- detail: detail,
495
+ detail,
458
496
  target: {
459
497
  id: props.id || '',
460
- dataset: dataset
498
+ dataset
461
499
  },
462
500
  currentTarget: {
463
501
  id: props.id || '',
464
- dataset: dataset
502
+ dataset
465
503
  }
466
504
  });
467
505
  }
468
506
  };
469
- _this.hasBehavior = _this.componentMethodsProxy('hasBehavior');
470
- _this.createSelectorQuery = _this.componentMethodsProxy('createSelectorQuery');
471
- _this.createIntersectionObserver = _this.componentMethodsProxy('createIntersectionObserver');
472
- _this.createMediaQueryObserver = _this.componentMethodsProxy('createMediaQueryObserver');
473
- _this.getRelationNodes = _this.componentMethodsProxy('getRelationNodes');
474
- _this.getTabBar = _this.componentMethodsProxy('getTabBar');
475
- _this.getPageId = _this.componentMethodsProxy('getPageId');
476
- _this.animate = _this.componentMethodsProxy('animate');
477
- _this.clearAnimation = _this.componentMethodsProxy('clearAnimation');
478
- _this.setUpdatePerformanceListener = _this.componentMethodsProxy('setUpdatePerformanceListener');
479
- _this.state = _this.state || {};
480
- _this.init(weappConf);
481
- defineGetter(_assertThisInitialized__default["default"](_this), 'data', 'state');
482
- defineGetter(_assertThisInitialized__default["default"](_this), 'properties', 'props');
483
- return _this;
484
- }
485
- _createClass__default["default"](BaseComponent, [{
486
- key: "initProps",
487
- value: function initProps(props) {
488
- for (var propKey in props) {
489
- if (props.hasOwnProperty(propKey)) {
490
- var propValue = props[propKey];
491
- // propValue 可能是 null, 构造函数, 对象
492
- if (propValue && !isFunction(propValue)) {
493
- if (propValue.observer) {
494
- this._observeProps.push({
495
- name: propKey,
496
- observer: propValue.observer
497
- });
498
- }
507
+ this.hasBehavior = this.componentMethodsProxy('hasBehavior');
508
+ this.createSelectorQuery = this.componentMethodsProxy('createSelectorQuery');
509
+ this.createIntersectionObserver = this.componentMethodsProxy('createIntersectionObserver');
510
+ this.createMediaQueryObserver = this.componentMethodsProxy('createMediaQueryObserver');
511
+ this.getRelationNodes = this.componentMethodsProxy('getRelationNodes');
512
+ this.getTabBar = this.componentMethodsProxy('getTabBar');
513
+ this.getPageId = this.componentMethodsProxy('getPageId');
514
+ this.animate = this.componentMethodsProxy('animate');
515
+ this.clearAnimation = this.componentMethodsProxy('clearAnimation');
516
+ this.setUpdatePerformanceListener = this.componentMethodsProxy('setUpdatePerformanceListener');
517
+ this.state = this.state || {};
518
+ this.init(weappConf);
519
+ defineGetter(this, 'data', 'state');
520
+ defineGetter(this, 'properties', 'props');
521
+ }
522
+ initProps(props) {
523
+ const properties = {};
524
+ for (const propKey in props) {
525
+ if (props.hasOwnProperty(propKey)) {
526
+ const propValue = props[propKey];
527
+ // propValue 可能是 null, 构造函数, 对象
528
+ const observers = [propToState];
529
+ if (propValue === null || propValue === undefined) {
530
+ // propValue为null、undefined情况
531
+ properties[propKey] = null;
532
+ } else if (isFunction(propValue)) {
533
+ // propValue为Function,即Array、String、Boolean等情况时
534
+ if (propValue.name === 'Array') {
535
+ properties[propKey] = [];
536
+ } else if (propValue.name === 'String') {
537
+ properties[propKey] = '';
538
+ } else if (propValue.name === 'Boolean') {
539
+ properties[propKey] = false;
540
+ } else if (propValue.name === 'Number') {
541
+ properties[propKey] = 0;
542
+ } else {
543
+ properties[propKey] = null;
544
+ }
545
+ } else if (typeof propValue === 'object') {
546
+ // propValue为对象时
547
+ properties[propKey] = propValue.value;
548
+ if (propValue.observer) {
549
+ observers.push(propValue.observer);
499
550
  }
551
+ } else {
552
+ properties[propKey] = null;
500
553
  }
554
+ this._observeProps.push({
555
+ name: propKey,
556
+ observers: observers
557
+ });
501
558
  }
502
559
  }
503
- }, {
504
- key: "init",
505
- value: function init(options) {
506
- var _this2 = this;
507
- var _a, _b, _c;
508
- // 处理 Behaviors
509
- if ((_a = options.behaviors) === null || _a === void 0 ? void 0 : _a.length) {
510
- var _iterator = _createForOfIteratorHelper(behaviorMap.entries()),
511
- _step;
512
- try {
513
- var _loop = function _loop() {
514
- var _step$value = _slicedToArray__default["default"](_step.value, 2),
515
- key = _step$value[0],
516
- list = _step$value[1];
517
- switch (key) {
518
- case 'created':
519
- case 'attached':
520
- case 'detached':
521
- case 'ready':
522
- list.forEach(function (fn) {
523
- return _this2.initLifeCycles(key, fn);
524
- });
525
- break;
526
- }
527
- };
528
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
529
- _loop();
530
- }
531
- } catch (err) {
532
- _iterator.e(err);
533
- } finally {
534
- _iterator.f();
560
+ this.state = Object.assign(Object.assign({}, properties), this.state);
561
+ }
562
+ init(options) {
563
+ var _a, _b, _c;
564
+ // 处理 Behaviors
565
+ if ((_a = options.behaviors) === null || _a === void 0 ? void 0 : _a.length) {
566
+ for (const [key, list] of behaviorMap.entries()) {
567
+ switch (key) {
568
+ case 'created':
569
+ case 'attached':
570
+ case 'detached':
571
+ case 'ready':
572
+ list.forEach(fn => this.initLifeCycles(key, fn));
573
+ break;
535
574
  }
536
575
  }
537
- for (var confKey in options) {
538
- // 不支持的属性
539
- if (nonsupport.has(confKey)) {
540
- var advise = nonsupport.get(confKey);
541
- report(advise);
542
- }
543
- var confValue = options[confKey];
544
- switch (confKey) {
545
- case 'behaviors':
576
+ }
577
+ for (const confKey in options) {
578
+ // 不支持的属性
579
+ if (nonsupport.has(confKey)) {
580
+ const advise = nonsupport.get(confKey);
581
+ report(advise);
582
+ }
583
+ const confValue = options[confKey];
584
+ switch (confKey) {
585
+ case 'behaviors':
586
+ break;
587
+ case 'data':
588
+ {
589
+ if (isApp) {
590
+ this[confKey] = confValue;
591
+ if (!appOptions.includes(confKey)) {
592
+ this.defineProperty(this.taroGlobalData, confKey, this);
593
+ }
594
+ } else {
595
+ this.state = Object.assign(Object.assign({}, confValue), this.state);
596
+ }
546
597
  break;
547
- case 'data':
548
- {
549
- if (isApp) {
550
- this[confKey] = confValue;
551
- if (!appOptions.includes(confKey)) {
552
- this.defineProperty(this.taroGlobalData, confKey, this);
598
+ }
599
+ case 'properties':
600
+ this.initProps(Object.assign(behaviorProperties, confValue));
601
+ break;
602
+ case 'methods':
603
+ for (const key in confValue) {
604
+ const method = confValue[key];
605
+ this[key] = bind(method, this);
606
+ }
607
+ break;
608
+ case 'lifetimes':
609
+ for (const key in confValue) {
610
+ this.initLifeCycles(key, confValue[key]);
611
+ }
612
+ break;
613
+ case 'pageLifetimes':
614
+ for (const key in confValue) {
615
+ const cb = confValue[key];
616
+ switch (key) {
617
+ case 'show':
618
+ {
619
+ this.initLifeCycleListener('show', cb);
620
+ break;
553
621
  }
554
- } else {
555
- this.state = Object.assign(Object.assign({}, confValue), this.state);
556
- }
622
+ case 'hide':
623
+ {
624
+ this.initLifeCycleListener('hide', cb);
625
+ break;
626
+ }
627
+ case 'resize':
628
+ {
629
+ report('不支持组件所在页面的生命周期 pageLifetimes.resize。');
630
+ break;
631
+ }
632
+ }
633
+ }
634
+ break;
635
+ default:
636
+ if (lifecycles.has(confKey)) {
637
+ // 优先使用 lifetimes 中定义的生命周期
638
+ if ((_b = options.lifetimes) === null || _b === void 0 ? void 0 : _b[confKey]) {
557
639
  break;
558
640
  }
559
- case 'properties':
560
- this.initProps(Object.assign(behaviorProperties, confValue));
561
- break;
562
- case 'methods':
563
- for (var key in confValue) {
564
- var method = confValue[key];
565
- this[key] = bind(method, this);
641
+ const lifecycle = options[confKey];
642
+ this.initLifeCycles(confKey, lifecycle);
643
+ } else if (isFunction(confValue)) {
644
+ this[confKey] = bind(confValue, this);
645
+ if (isApp && !appOptions.includes(confKey)) {
646
+ this.defineProperty(this.taroGlobalData, confKey, this);
566
647
  }
567
- break;
568
- case 'lifetimes':
569
- for (var _key2 in confValue) {
570
- this.initLifeCycles(_key2, confValue[_key2]);
648
+ // 原生页面和 Taro 页面中共计只能定义一次的生命周期
649
+ if (uniquePageLifecycle.includes(confKey) && ConnectComponent.prototype[confKey]) {
650
+ report(`生命周期 ${confKey} 已在原生部分进行定义,React 部分的定义将不会被执行。`);
571
651
  }
572
- break;
573
- case 'pageLifetimes':
574
- for (var _key3 in confValue) {
575
- var cb = confValue[_key3];
576
- switch (_key3) {
577
- case 'show':
578
- {
579
- this.initLifeCycleListener('show', cb);
580
- break;
581
- }
582
- case 'hide':
583
- {
584
- this.initLifeCycleListener('hide', cb);
585
- break;
586
- }
587
- case 'resize':
588
- {
589
- report('不支持组件所在页面的生命周期 pageLifetimes.resize。');
590
- break;
591
- }
592
- }
652
+ } else {
653
+ this[confKey] = confValue;
654
+ if (isApp && !appOptions.includes(confKey)) {
655
+ this.defineProperty(this.taroGlobalData, confKey, this);
593
656
  }
657
+ }
658
+ break;
659
+ }
660
+ }
661
+ // 处理 Behaviors
662
+ if ((_c = options.behaviors) === null || _c === void 0 ? void 0 : _c.length) {
663
+ const behaviorData = {};
664
+ const methods = {};
665
+ for (const [key, list] of behaviorMap.entries()) {
666
+ switch (key) {
667
+ case 'data':
668
+ [...list, this.state].forEach((dataObject, index) => {
669
+ Object.keys(dataObject).forEach(dataKey => {
670
+ const value = dataObject[dataKey];
671
+ const preValue = behaviorData[dataKey];
672
+ const valueType = typeof value;
673
+ const preValueType = typeof preValue;
674
+ if (valueType === 'object') {
675
+ if (!value) {
676
+ behaviorData[dataKey] = value;
677
+ } else if (preValueType !== 'object' || !preValueType || Array.isArray(value)) {
678
+ behaviorData[dataKey] = index === list.length ? value : clone(value);
679
+ } else {
680
+ const newVal = Object.assign({}, preValue, value);
681
+ behaviorData[dataKey] = index === list.length ? newVal : clone(newVal);
682
+ }
683
+ } else {
684
+ behaviorData[dataKey] = value;
685
+ }
686
+ });
687
+ });
688
+ this.state = behaviorData;
594
689
  break;
595
- default:
596
- if (lifecycles.has(confKey)) {
597
- // 优先使用 lifetimes 中定义的生命周期
598
- if ((_b = options.lifetimes) === null || _b === void 0 ? void 0 : _b[confKey]) {
599
- break;
600
- }
601
- var lifecycle = options[confKey];
602
- this.initLifeCycles(confKey, lifecycle);
603
- } else if (isFunction(confValue)) {
604
- this[confKey] = bind(confValue, this);
605
- if (isApp && !appOptions.includes(confKey)) {
606
- this.defineProperty(this.taroGlobalData, confKey, this);
607
- }
608
- // 原生页面和 Taro 页面中共计只能定义一次的生命周期
609
- if (uniquePageLifecycle.includes(confKey) && ConnectComponent.prototype[confKey]) {
610
- report("\u751F\u547D\u5468\u671F ".concat(confKey, " \u5DF2\u5728\u539F\u751F\u90E8\u5206\u8FDB\u884C\u5B9A\u4E49\uFF0CReact \u90E8\u5206\u7684\u5B9A\u4E49\u5C06\u4E0D\u4F1A\u88AB\u6267\u884C\u3002"));
690
+ case 'methods':
691
+ list.forEach(methodsObject => {
692
+ Object.assign(methods, methodsObject);
693
+ });
694
+ Object.keys(methods).forEach(methodName => {
695
+ if (!this[methodName]) {
696
+ const method = methods[methodName];
697
+ this[methodName] = bind(method, this);
611
698
  }
612
- } else {
613
- this[confKey] = confValue;
614
- if (isApp && !appOptions.includes(confKey)) {
615
- this.defineProperty(this.taroGlobalData, confKey, this);
699
+ });
700
+ break;
701
+ case 'lifetimes':
702
+ list.forEach(lifetimesObject => {
703
+ for (const key in lifetimesObject) {
704
+ this.initLifeCycles(key, lifetimesObject[key]);
616
705
  }
617
- }
706
+ });
618
707
  break;
619
708
  }
620
709
  }
621
- // 处理 Behaviors
622
- if ((_c = options.behaviors) === null || _c === void 0 ? void 0 : _c.length) {
623
- var behaviorData = {};
624
- var methods = {};
625
- var _iterator2 = _createForOfIteratorHelper(behaviorMap.entries()),
626
- _step2;
627
- try {
628
- var _loop2 = function _loop2() {
629
- var _step2$value = _slicedToArray__default["default"](_step2.value, 2),
630
- key = _step2$value[0],
631
- list = _step2$value[1];
632
- switch (key) {
633
- case 'data':
634
- [].concat(_toConsumableArray__default["default"](list), [_this2.state]).forEach(function (dataObject, index) {
635
- Object.keys(dataObject).forEach(function (dataKey) {
636
- var value = dataObject[dataKey];
637
- var preValue = behaviorData[dataKey];
638
- var valueType = _typeof__default["default"](value);
639
- var preValueType = _typeof__default["default"](preValue);
640
- if (valueType === 'object') {
641
- if (!value) {
642
- behaviorData[dataKey] = value;
643
- } else if (preValueType !== 'object' || !preValueType || Array.isArray(value)) {
644
- behaviorData[dataKey] = index === list.length ? value : clone(value);
645
- } else {
646
- var newVal = Object.assign({}, preValue, value);
647
- behaviorData[dataKey] = index === list.length ? newVal : clone(newVal);
648
- }
649
- } else {
650
- behaviorData[dataKey] = value;
651
- }
652
- });
653
- });
654
- _this2.state = behaviorData;
655
- break;
656
- case 'methods':
657
- list.forEach(function (methodsObject) {
658
- Object.assign(methods, methodsObject);
659
- });
660
- Object.keys(methods).forEach(function (methodName) {
661
- if (!_this2[methodName]) {
662
- var _method = methods[methodName];
663
- _this2[methodName] = bind(_method, _this2);
664
- }
665
- });
666
- break;
667
- default:
668
- break;
669
- }
670
- };
671
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
672
- _loop2();
673
- }
674
- } catch (err) {
675
- _iterator2.e(err);
676
- } finally {
677
- _iterator2.f();
678
- }
679
- }
680
710
  }
681
- }, {
682
- key: "initLifeCycles",
683
- value: function initLifeCycles(lifecycleName, lifecycle) {
684
- // 不支持的生命周期
685
- if (nonsupport.has(lifecycleName)) {
686
- var advise = nonsupport.get(lifecycleName);
687
- return report(advise);
688
- }
689
- if (lifecycleName === 'ready') {
690
- // 如果组件是延时渲染的,页面 onReady 的事件已经 emit 了,因此使用 componentDidMount + nextTick 模拟
691
- if (this.current.page.onReady.called) {
692
- this.didMounts.push(function () {
693
- var _this3 = this;
694
- for (var _len2 = arguments.length, args = new Array(_len2), _key4 = 0; _key4 < _len2; _key4++) {
695
- args[_key4] = arguments[_key4];
711
+ }
712
+ initLifeCycles(lifecycleName, lifecycle) {
713
+ // 不支持的生命周期
714
+ if (nonsupport.has(lifecycleName)) {
715
+ const advise = nonsupport.get(lifecycleName);
716
+ return report(advise);
717
+ }
718
+ if (lifecycleName === 'ready') {
719
+ // 如果组件是延时渲染的,页面 onReady 的事件已经 emit 了,因此使用 componentDidMount + nextTick 模拟
720
+ if (this.current.page.onReady.called) {
721
+ this.didMounts.push(function (...args) {
722
+ taro.nextTick(() => {
723
+ if (isFunction(lifecycle)) {
724
+ lifecycle.apply(this, args);
696
725
  }
697
- taro.nextTick(function () {
698
- if (isFunction(lifecycle)) {
699
- lifecycle.apply(_this3, args);
700
- }
701
- });
702
726
  });
703
- } else {
704
- this.initLifeCycleListener('ready', lifecycle);
705
- }
727
+ });
706
728
  } else {
707
- for (var lifecycleKey in lifecycleMap) {
708
- var cycleNames = lifecycleMap[lifecycleKey];
709
- if (cycleNames.indexOf(lifecycleName) !== -1) {
710
- switch (lifecycleKey) {
711
- case TaroLifeCycles.DidHide:
712
- this.didHides.push(lifecycle);
713
- break;
714
- case TaroLifeCycles.DidMount:
715
- this.didMounts.push(lifecycle);
716
- break;
717
- case TaroLifeCycles.DidShow:
718
- this.didShows.push(lifecycle);
719
- break;
720
- case TaroLifeCycles.WillMount:
721
- this.willMounts.push(lifecycle);
722
- break;
723
- case TaroLifeCycles.WillUnmount:
724
- this.willUnmounts.push(lifecycle);
725
- break;
726
- }
729
+ this.initLifeCycleListener('ready', lifecycle);
730
+ }
731
+ } else {
732
+ for (const lifecycleKey in lifecycleMap) {
733
+ const cycleNames = lifecycleMap[lifecycleKey];
734
+ if (cycleNames.indexOf(lifecycleName) !== -1) {
735
+ switch (lifecycleKey) {
736
+ case TaroLifeCycles.DidHide:
737
+ this.didHides.push(lifecycle);
738
+ break;
739
+ case TaroLifeCycles.DidMount:
740
+ this.didMounts.push(lifecycle);
741
+ break;
742
+ case TaroLifeCycles.DidShow:
743
+ this.didShows.push(lifecycle);
744
+ break;
745
+ case TaroLifeCycles.WillMount:
746
+ this.willMounts.push(lifecycle);
747
+ break;
748
+ case TaroLifeCycles.WillUnmount:
749
+ this.willUnmounts.push(lifecycle);
750
+ break;
727
751
  }
728
752
  }
729
753
  }
730
- // mixins 不会覆盖已经设置的生命周期,加入到 this 是为了形如 this.created() 的调用
731
- if (!isFunction(this[lifecycleName])) {
732
- this[lifecycleName] = lifecycle;
733
- }
734
754
  }
735
- }, {
736
- key: "initLifeCycleListener",
737
- value: function initLifeCycleListener(name, cb) {
738
- // 组件的 ready、show、hide 需要利用页面事件触发
739
- var router = this.current.router;
740
- var lifecycleName = "on".concat(name[0].toUpperCase()).concat(name.slice(1));
741
- cb = cb.bind(this);
742
- (router === null || router === void 0 ? void 0 : router[lifecycleName]) && taro.eventCenter.on(router[lifecycleName], cb);
743
- // unMount 时需要取消事件监听
744
- this.eventDestroyList.push(function () {
745
- return taro.eventCenter.off(router[lifecycleName], cb);
746
- });
755
+ // mixins 不会覆盖已经设置的生命周期,加入到 this 是为了形如 this.created() 的调用
756
+ if (!isFunction(this[lifecycleName])) {
757
+ this[lifecycleName] = lifecycle;
747
758
  }
748
- }, {
749
- key: "executeLifeCycles",
750
- value: function executeLifeCycles(funcs) {
751
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key5 = 1; _key5 < _len3; _key5++) {
752
- args[_key5 - 1] = arguments[_key5];
753
- }
754
- for (var i = 0; i < funcs.length; i++) {
755
- var func = funcs[i];
756
- this.safeExecute.apply(this, [func].concat(args));
757
- }
759
+ }
760
+ initLifeCycleListener(name, cb) {
761
+ // 组件的 ready、show、hide 需要利用页面事件触发
762
+ const {
763
+ router
764
+ } = this.current;
765
+ const lifecycleName = `on${name[0].toUpperCase()}${name.slice(1)}`;
766
+ cb = cb.bind(this);
767
+ (router === null || router === void 0 ? void 0 : router[lifecycleName]) && taro.eventCenter.on(router[lifecycleName], cb);
768
+ // unMount 时需要取消事件监听
769
+ this.eventDestroyList.push(() => taro.eventCenter.off(router[lifecycleName], cb));
770
+ }
771
+ executeLifeCycles(funcs, ...args) {
772
+ for (let i = 0; i < funcs.length; i++) {
773
+ const func = funcs[i];
774
+ this.safeExecute(func, ...args);
758
775
  }
759
- }, {
760
- key: "triggerPropertiesObservers",
761
- value: function triggerPropertiesObservers(prevProps, nextProps) {
762
- var _this4 = this;
763
- this._observeProps.forEach(function (_ref) {
764
- var key = _ref.name,
765
- observer = _ref.observer;
766
- var prop = prevProps === null || prevProps === void 0 ? void 0 : prevProps[key];
767
- var nextProp = nextProps[key];
768
- // 小程序是深比较不同之后才 trigger observer
769
- if (!isEqual(prop, nextProp)) {
776
+ }
777
+ triggerPropertiesObservers(prevProps, nextProps) {
778
+ this._observeProps.forEach(({
779
+ name: key,
780
+ observers
781
+ }) => {
782
+ const prop = prevProps === null || prevProps === void 0 ? void 0 : prevProps[key];
783
+ const nextProp = nextProps[key];
784
+ // 小程序是深比较不同之后才 trigger observer
785
+ if (!isEqual(prop, nextProp)) {
786
+ observers.forEach(observer => {
770
787
  if (typeof observer === 'string') {
771
- var ob = _this4[observer];
788
+ const ob = this[observer];
772
789
  if (isFunction(ob)) {
773
- ob.call(_this4, nextProp, prop, key);
790
+ ob.call(this, nextProp, prop, key);
774
791
  }
775
792
  } else if (isFunction(observer)) {
776
- observer.call(_this4, nextProp, prop, key);
793
+ observer.call(this, nextProp, prop, key);
777
794
  }
778
- }
779
- });
780
- }
781
- }, {
782
- key: "triggerObservers",
783
- value: function triggerObservers(current, prev) {
784
- var observers = this.observers;
785
- if (observers == null) {
786
- return;
787
- }
788
- if (Object.keys(observers).length === 0) {
789
- return;
790
- }
791
- var result = diff(current, prev);
792
- var resultKeys = Object.keys(result);
793
- if (resultKeys.length === 0) {
794
- return;
795
- }
796
- for (var observerKey in observers) {
797
- if (/\*\*/.test(observerKey)) {
798
- report('数据监听器 observers 不支持使用通配符 **。');
799
- continue;
800
- }
801
- var keys = observerKey.split(',').map(function (k) {
802
- return k.trim();
803
795
  });
804
- var isModified = false;
805
- for (var i = 0; i < keys.length; i++) {
806
- var key = keys[i];
807
- for (var j = 0; j < resultKeys.length; j++) {
808
- var resultKey = resultKeys[j];
809
- if (resultKey.startsWith(key) || key.startsWith(resultKey) && key.endsWith(']')) {
810
- isModified = true;
811
- }
812
- }
813
- }
814
- if (isModified) {
815
- observers[observerKey].apply(this, keys.map(function (key) {
816
- return safeGet(current, key);
817
- }));
818
- }
819
- }
820
- }
821
- }, {
822
- key: "defineProperty",
823
- value: function defineProperty(target, key, data) {
824
- Object.defineProperty(target, key, {
825
- configurable: true,
826
- enumerable: true,
827
- set: function set(value) {
828
- data[key] = value;
829
- },
830
- get: function get() {
831
- return data[key];
832
- }
833
- });
834
- }
835
- }, {
836
- key: "privateStopNoop",
837
- value: function privateStopNoop() {
838
- var e;
839
- var fn;
840
- if (arguments.length === 2) {
841
- fn = arguments.length <= 0 ? undefined : arguments[0];
842
- e = arguments.length <= 1 ? undefined : arguments[1];
843
- } else if (arguments.length === 1) {
844
- e = arguments.length <= 0 ? undefined : arguments[0];
845
796
  }
846
- if (e.type === 'touchmove') {
847
- report('catchtouchmove 转换后只能停止回调函数的冒泡,不能阻止滚动穿透。如要阻止滚动穿透,可以手动给编译后的 View 组件加上 catchMove 属性');
848
- }
849
- e.stopPropagation();
850
- isFunction(fn) && fn(e);
851
- }
852
- // ================ React 生命周期 ================
853
- }, {
854
- key: "componentWillMount",
855
- value: function componentWillMount() {
856
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentWillMount", this));
857
- this.executeLifeCycles(this.willMounts, this.current.router || {});
858
- this.triggerObservers(this.data, BaseComponent.defaultProps);
859
- this.triggerPropertiesObservers(BaseComponent.defaultProps, this.props);
860
- }
861
- }, {
862
- key: "componentDidMount",
863
- value: function componentDidMount() {
864
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentDidMount", this));
865
- this.executeLifeCycles(this.didMounts);
866
- }
867
- }, {
868
- key: "componentWillUnmount",
869
- value: function componentWillUnmount() {
870
- this.eventDestroyList.forEach(function (fn) {
871
- return fn();
872
- });
873
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentWillUnmount", this));
874
- this.executeLifeCycles(this.willUnmounts);
875
- }
876
- }, {
877
- key: "componentDidHide",
878
- value: function componentDidHide() {
879
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentDidHide", this));
880
- this.executeLifeCycles(this.didHides);
881
- }
882
- }, {
883
- key: "componentDidShow",
884
- value: function componentDidShow() {
885
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentDidShow", this), this.current.router || {});
886
- this.executeLifeCycles(this.didShows, this.current.router || {});
887
- }
888
- }, {
889
- key: "componentWillReceiveProps",
890
- value: function componentWillReceiveProps(nextProps) {
891
- this.triggerObservers(nextProps, this.props);
892
- this.triggerPropertiesObservers(this.props, nextProps);
893
- this.safeExecute(_get__default["default"](_getPrototypeOf__default["default"](BaseComponent.prototype), "componentWillReceiveProps", this));
894
- }
895
- // ================ 小程序 App, Page, Component 实例属性与方法 ================
896
- }, {
897
- key: "is",
898
- get: function get() {
899
- return this.current.page.is;
797
+ });
798
+ }
799
+ triggerObservers(current, prev) {
800
+ const observers = this.observers;
801
+ if (observers == null) {
802
+ return;
900
803
  }
901
- }, {
902
- key: "id",
903
- get: function get() {
904
- return this.current.page.id;
804
+ if (Object.keys(observers).length === 0) {
805
+ return;
905
806
  }
906
- }, {
907
- key: "dataset",
908
- get: function get() {
909
- return this.current.page.dataset;
807
+ const result = diff(current, prev);
808
+ const resultKeys = Object.keys(result);
809
+ if (resultKeys.length === 0) {
810
+ return;
910
811
  }
911
- }, {
912
- key: "componentMethodsProxy",
913
- value: function componentMethodsProxy(method) {
914
- var _this5 = this;
915
- return function () {
916
- var page = _this5.current.page;
917
- if (page === null || page === void 0 ? void 0 : page[method]) {
918
- return page[method].apply(page, arguments);
919
- } else {
920
- console.error("page \u4E0B\u6CA1\u6709 ".concat(method, " \u65B9\u6CD5"));
812
+ for (const observerKey in observers) {
813
+ if (/\*\*/.test(observerKey)) {
814
+ report('数据监听器 observers 不支持使用通配符 **。');
815
+ continue;
816
+ }
817
+ const keys = observerKey.split(',').map(k => k.trim());
818
+ let isModified = false;
819
+ for (let i = 0; i < keys.length; i++) {
820
+ const key = keys[i];
821
+ for (let j = 0; j < resultKeys.length; j++) {
822
+ const resultKey = resultKeys[j];
823
+ if (resultKey.startsWith(key) || key.startsWith(resultKey) && key.endsWith(']')) {
824
+ isModified = true;
825
+ }
921
826
  }
922
- };
923
- }
924
- }, {
925
- key: "selectComponent",
926
- value: function selectComponent() {
927
- report(nonsupport.get('selectComponent'));
928
- }
929
- }, {
930
- key: "selectAllComponents",
931
- value: function selectAllComponents() {
932
- report(nonsupport.get('selectAllComponents'));
827
+ }
828
+ if (isModified) {
829
+ observers[observerKey].apply(this, keys.map(key => safeGet(current, key)));
830
+ }
933
831
  }
934
- }, {
935
- key: "selectOwnerComponent",
936
- value: function selectOwnerComponent() {
937
- report(nonsupport.get('selectOwnerComponent'));
832
+ }
833
+ defineProperty(target, key, data) {
834
+ Object.defineProperty(target, key, {
835
+ configurable: true,
836
+ enumerable: true,
837
+ set(value) {
838
+ data[key] = value;
839
+ },
840
+ get() {
841
+ return data[key];
842
+ }
843
+ });
844
+ }
845
+ privateStopNoop(...args) {
846
+ let e;
847
+ let fn;
848
+ if (args.length === 2) {
849
+ fn = args[0];
850
+ e = args[1];
851
+ } else if (args.length === 1) {
852
+ e = args[0];
938
853
  }
939
- }, {
940
- key: "groupSetData",
941
- value: function groupSetData() {
942
- report(nonsupport.get('groupSetData'));
854
+ if (e.type === 'touchmove') {
855
+ report('catchtouchmove 转换后只能停止回调函数的冒泡,不能阻止滚动穿透。如要阻止滚动穿透,可以手动给编译后的 View 组件加上 catchMove 属性');
943
856
  }
944
- }]);
945
- return BaseComponent;
946
- }(ConnectComponent);
947
- var props = weappConf.properties;
857
+ e.stopPropagation();
858
+ isFunction(fn) && fn(e);
859
+ }
860
+ // ================ React 生命周期 ================
861
+ componentWillMount() {
862
+ this.safeExecute(super.componentWillMount);
863
+ this.executeLifeCycles(this.willMounts, this.current.router || {});
864
+ this.triggerObservers(this.data, BaseComponent.defaultProps);
865
+ this.triggerPropertiesObservers(BaseComponent.defaultProps, this.props);
866
+ }
867
+ componentDidMount() {
868
+ this.safeExecute(super.componentDidMount);
869
+ this.executeLifeCycles(this.didMounts);
870
+ }
871
+ componentWillUnmount() {
872
+ this.eventDestroyList.forEach(fn => fn());
873
+ this.safeExecute(super.componentWillUnmount);
874
+ this.executeLifeCycles(this.willUnmounts);
875
+ }
876
+ componentDidHide() {
877
+ this.safeExecute(super.componentDidHide);
878
+ this.executeLifeCycles(this.didHides);
879
+ }
880
+ componentDidShow() {
881
+ this.safeExecute(super.componentDidShow, this.current.router || {});
882
+ this.executeLifeCycles(this.didShows, this.current.router || {});
883
+ }
884
+ componentWillReceiveProps(nextProps) {
885
+ this.triggerObservers(nextProps, this.props);
886
+ this.triggerPropertiesObservers(this.props, nextProps);
887
+ this.safeExecute(super.componentWillReceiveProps);
888
+ }
889
+ // ================ 小程序 App, Page, Component 实例属性与方法 ================
890
+ get is() {
891
+ return this.current.page.is;
892
+ }
893
+ get id() {
894
+ return this.current.page.id;
895
+ }
896
+ get dataset() {
897
+ return this.current.page.dataset;
898
+ }
899
+ componentMethodsProxy(method) {
900
+ return (...args) => {
901
+ const page = this.current.page;
902
+ if (page === null || page === void 0 ? void 0 : page[method]) {
903
+ return page[method](...args);
904
+ } else if (method === 'createSelectorQuery') {
905
+ return taro.createSelectorQuery();
906
+ } else if (method === 'createIntersectionObserver') {
907
+ // @ts-ignore
908
+ return taro.createIntersectionObserver(...args);
909
+ } else if (method === 'createMediaQueryObserver') {
910
+ return taro.createMediaQueryObserver();
911
+ } else {
912
+ console.error(`page 下没有 ${method} 方法`);
913
+ }
914
+ };
915
+ }
916
+ selectComponent() {
917
+ report(nonsupport.get('selectComponent'));
918
+ }
919
+ selectAllComponents() {
920
+ report(nonsupport.get('selectAllComponents'));
921
+ }
922
+ selectOwnerComponent() {
923
+ report(nonsupport.get('selectOwnerComponent'));
924
+ }
925
+ groupSetData() {
926
+ report(nonsupport.get('groupSetData'));
927
+ }
928
+ }
929
+ const props = weappConf.properties;
948
930
  if (props) {
949
- for (var propKey in props) {
950
- var propValue = props[propKey];
931
+ for (const propKey in props) {
932
+ const propValue = props[propKey];
951
933
  if (propValue != null && !isFunction(propValue)) {
952
934
  if (propValue.value !== undefined) {
953
935
  // 如果是 null 也赋值到 defaultProps
954
- BaseComponent.defaultProps = Object.assign(_defineProperty__default["default"]({}, propKey, propValue.value), BaseComponent.defaultProps);
936
+ BaseComponent.defaultProps = Object.assign({
937
+ [propKey]: propValue.value
938
+ }, BaseComponent.defaultProps);
955
939
  }
956
940
  }
957
941
  }
958
942
  }
959
- var staticOptions = ['externalClasses', 'relations', 'options'];
960
- staticOptions.forEach(function (option) {
961
- var value = weappConf[option];
943
+ const staticOptions = ['externalClasses', 'relations', 'options'];
944
+ staticOptions.forEach(option => {
945
+ const value = weappConf[option];
962
946
  if (value != null) {
963
947
  BaseComponent[option] = value;
964
948
  }
@@ -967,5 +951,8 @@ function withWeapp(weappConf) {
967
951
  };
968
952
  }
969
953
 
954
+ exports.cacheOptions = cacheOptions;
955
+ exports.convertToArray = convertToArray;
970
956
  exports["default"] = withWeapp;
957
+ exports.getTarget = getTarget;
971
958
  //# sourceMappingURL=index.js.map