@dcloudio/uni-shared 0.0.1-nvue3.3030820220125001
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/LICENSE +202 -0
- package/dist/uni-shared.cjs.js +1458 -0
- package/dist/uni-shared.d.ts +815 -0
- package/dist/uni-shared.es.js +1303 -0
- package/package.json +28 -0
|
@@ -0,0 +1,1458 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var shared = require('@vue/shared');
|
|
6
|
+
|
|
7
|
+
const BUILT_IN_TAG_NAMES = [
|
|
8
|
+
'ad',
|
|
9
|
+
'ad-content-page',
|
|
10
|
+
'ad-draw',
|
|
11
|
+
'audio',
|
|
12
|
+
'button',
|
|
13
|
+
'camera',
|
|
14
|
+
'canvas',
|
|
15
|
+
'checkbox',
|
|
16
|
+
'checkbox-group',
|
|
17
|
+
'cover-image',
|
|
18
|
+
'cover-view',
|
|
19
|
+
'editor',
|
|
20
|
+
'form',
|
|
21
|
+
'functional-page-navigator',
|
|
22
|
+
'icon',
|
|
23
|
+
'image',
|
|
24
|
+
'input',
|
|
25
|
+
'label',
|
|
26
|
+
'live-player',
|
|
27
|
+
'live-pusher',
|
|
28
|
+
'map',
|
|
29
|
+
'movable-area',
|
|
30
|
+
'movable-view',
|
|
31
|
+
'navigator',
|
|
32
|
+
'official-account',
|
|
33
|
+
'open-data',
|
|
34
|
+
'picker',
|
|
35
|
+
'picker-view',
|
|
36
|
+
'picker-view-column',
|
|
37
|
+
'progress',
|
|
38
|
+
'radio',
|
|
39
|
+
'radio-group',
|
|
40
|
+
'rich-text',
|
|
41
|
+
'scroll-view',
|
|
42
|
+
'slider',
|
|
43
|
+
'swiper',
|
|
44
|
+
'swiper-item',
|
|
45
|
+
'switch',
|
|
46
|
+
'text',
|
|
47
|
+
'textarea',
|
|
48
|
+
'video',
|
|
49
|
+
'view',
|
|
50
|
+
'web-view',
|
|
51
|
+
];
|
|
52
|
+
const BUILT_IN_TAGS = BUILT_IN_TAG_NAMES.map((tag) => 'uni-' + tag);
|
|
53
|
+
const TAGS = [
|
|
54
|
+
'app',
|
|
55
|
+
'layout',
|
|
56
|
+
'content',
|
|
57
|
+
'main',
|
|
58
|
+
'top-window',
|
|
59
|
+
'left-window',
|
|
60
|
+
'right-window',
|
|
61
|
+
'tabbar',
|
|
62
|
+
'page',
|
|
63
|
+
'page-head',
|
|
64
|
+
'page-wrapper',
|
|
65
|
+
'page-body',
|
|
66
|
+
'page-refresh',
|
|
67
|
+
'actionsheet',
|
|
68
|
+
'modal',
|
|
69
|
+
'toast',
|
|
70
|
+
'resize-sensor',
|
|
71
|
+
'shadow-root',
|
|
72
|
+
].map((tag) => 'uni-' + tag);
|
|
73
|
+
const NVUE_BUILT_IN_TAGS = [
|
|
74
|
+
'svg',
|
|
75
|
+
'view',
|
|
76
|
+
'a',
|
|
77
|
+
'div',
|
|
78
|
+
'img',
|
|
79
|
+
'image',
|
|
80
|
+
'text',
|
|
81
|
+
'span',
|
|
82
|
+
'input',
|
|
83
|
+
'textarea',
|
|
84
|
+
'spinner',
|
|
85
|
+
'select',
|
|
86
|
+
'slider',
|
|
87
|
+
'slider-neighbor',
|
|
88
|
+
'indicator',
|
|
89
|
+
'canvas',
|
|
90
|
+
'list',
|
|
91
|
+
'cell',
|
|
92
|
+
'header',
|
|
93
|
+
'loading',
|
|
94
|
+
'loading-indicator',
|
|
95
|
+
'refresh',
|
|
96
|
+
'scrollable',
|
|
97
|
+
'scroller',
|
|
98
|
+
'video',
|
|
99
|
+
'web',
|
|
100
|
+
'embed',
|
|
101
|
+
'tabbar',
|
|
102
|
+
'tabheader',
|
|
103
|
+
'datepicker',
|
|
104
|
+
'timepicker',
|
|
105
|
+
'marquee',
|
|
106
|
+
'countdown',
|
|
107
|
+
];
|
|
108
|
+
const NVUE_U_BUILT_IN_TAGS = [
|
|
109
|
+
'text',
|
|
110
|
+
'image',
|
|
111
|
+
'input',
|
|
112
|
+
'textarea',
|
|
113
|
+
'video',
|
|
114
|
+
'web-view',
|
|
115
|
+
'slider',
|
|
116
|
+
];
|
|
117
|
+
function isBuiltInComponent(tag) {
|
|
118
|
+
// h5 平台会被转换为 v-uni-
|
|
119
|
+
return BUILT_IN_TAGS.indexOf('uni-' + tag.replace('v-uni-', '')) !== -1;
|
|
120
|
+
}
|
|
121
|
+
function isH5CustomElement(tag) {
|
|
122
|
+
return TAGS.indexOf(tag) !== -1 || BUILT_IN_TAGS.indexOf(tag) !== -1;
|
|
123
|
+
}
|
|
124
|
+
function isH5NativeTag(tag) {
|
|
125
|
+
return (tag !== 'head' &&
|
|
126
|
+
(shared.isHTMLTag(tag) || shared.isSVGTag(tag)) &&
|
|
127
|
+
!isBuiltInComponent(tag));
|
|
128
|
+
}
|
|
129
|
+
function isAppNativeTag(tag) {
|
|
130
|
+
return shared.isHTMLTag(tag) || shared.isSVGTag(tag) || isBuiltInComponent(tag);
|
|
131
|
+
}
|
|
132
|
+
const NVUE_CUSTOM_COMPONENTS = [
|
|
133
|
+
'ad',
|
|
134
|
+
'ad-draw',
|
|
135
|
+
'button',
|
|
136
|
+
'checkbox-group',
|
|
137
|
+
'checkbox',
|
|
138
|
+
'form',
|
|
139
|
+
'icon',
|
|
140
|
+
'label',
|
|
141
|
+
'movable-area',
|
|
142
|
+
'movable-view',
|
|
143
|
+
'navigator',
|
|
144
|
+
'picker',
|
|
145
|
+
'progress',
|
|
146
|
+
'radio-group',
|
|
147
|
+
'radio',
|
|
148
|
+
'rich-text',
|
|
149
|
+
'swiper-item',
|
|
150
|
+
'swiper',
|
|
151
|
+
'switch',
|
|
152
|
+
'slider',
|
|
153
|
+
'picker-view',
|
|
154
|
+
'picker-view-column',
|
|
155
|
+
];
|
|
156
|
+
function isAppNVueNativeTag(tag) {
|
|
157
|
+
if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
if (isBuiltInComponent(tag)) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
if (NVUE_BUILT_IN_TAGS.includes(tag)) {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
// u-text,u-video...
|
|
167
|
+
if (NVUE_U_BUILT_IN_TAGS.includes(tag.replace('u-', ''))) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
function isMiniProgramNativeTag(tag) {
|
|
173
|
+
return isBuiltInComponent(tag);
|
|
174
|
+
}
|
|
175
|
+
function createIsCustomElement(tags = []) {
|
|
176
|
+
return function isCustomElement(tag) {
|
|
177
|
+
return tags.includes(tag);
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function isComponentTag(tag) {
|
|
181
|
+
return tag[0].toLowerCase() + tag.slice(1) === 'component';
|
|
182
|
+
}
|
|
183
|
+
const COMPONENT_SELECTOR_PREFIX = 'uni-';
|
|
184
|
+
const COMPONENT_PREFIX = 'v-' + COMPONENT_SELECTOR_PREFIX;
|
|
185
|
+
|
|
186
|
+
const LINEFEED = '\n';
|
|
187
|
+
const NAVBAR_HEIGHT = 44;
|
|
188
|
+
const TABBAR_HEIGHT = 50;
|
|
189
|
+
const ON_REACH_BOTTOM_DISTANCE = 50;
|
|
190
|
+
const RESPONSIVE_MIN_WIDTH = 768;
|
|
191
|
+
const UNI_STORAGE_LOCALE = 'UNI_LOCALE';
|
|
192
|
+
// quickapp-webview 不能使用 default 作为插槽名称
|
|
193
|
+
const SLOT_DEFAULT_NAME = 'd';
|
|
194
|
+
const COMPONENT_NAME_PREFIX = 'VUni';
|
|
195
|
+
const I18N_JSON_DELIMITERS = ['%', '%'];
|
|
196
|
+
const PRIMARY_COLOR = '#007aff';
|
|
197
|
+
const SELECTED_COLOR = '#0062cc'; // 选中的颜色,如选项卡默认的选中颜色
|
|
198
|
+
const BACKGROUND_COLOR = '#f7f7f7'; // 背景色,如标题栏默认背景色
|
|
199
|
+
const UNI_SSR = '__uniSSR';
|
|
200
|
+
const UNI_SSR_TITLE = 'title';
|
|
201
|
+
const UNI_SSR_STORE = 'store';
|
|
202
|
+
const UNI_SSR_DATA = 'data';
|
|
203
|
+
const UNI_SSR_GLOBAL_DATA = 'globalData';
|
|
204
|
+
const SCHEME_RE = /^([a-z-]+:)?\/\//i;
|
|
205
|
+
const DATA_RE = /^data:.*,.*/;
|
|
206
|
+
const WEB_INVOKE_APPSERVICE = 'WEB_INVOKE_APPSERVICE';
|
|
207
|
+
const WXS_PROTOCOL = 'wxs://';
|
|
208
|
+
const JSON_PROTOCOL = 'json://';
|
|
209
|
+
const WXS_MODULES = 'wxsModules';
|
|
210
|
+
const RENDERJS_MODULES = 'renderjsModules';
|
|
211
|
+
// lifecycle
|
|
212
|
+
// App and Page
|
|
213
|
+
const ON_SHOW = 'onShow';
|
|
214
|
+
const ON_HIDE = 'onHide';
|
|
215
|
+
//App
|
|
216
|
+
const ON_LAUNCH = 'onLaunch';
|
|
217
|
+
const ON_ERROR = 'onError';
|
|
218
|
+
const ON_THEME_CHANGE = 'onThemeChange';
|
|
219
|
+
const ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';
|
|
220
|
+
const ON_PAGE_NOT_FOUND = 'onPageNotFound';
|
|
221
|
+
const ON_UNHANDLE_REJECTION = 'onUnhandledRejection';
|
|
222
|
+
//Page
|
|
223
|
+
const ON_LOAD = 'onLoad';
|
|
224
|
+
const ON_READY = 'onReady';
|
|
225
|
+
const ON_UNLOAD = 'onUnload';
|
|
226
|
+
const ON_RESIZE = 'onResize';
|
|
227
|
+
const ON_BACK_PRESS = 'onBackPress';
|
|
228
|
+
const ON_PAGE_SCROLL = 'onPageScroll';
|
|
229
|
+
const ON_TAB_ITEM_TAP = 'onTabItemTap';
|
|
230
|
+
const ON_REACH_BOTTOM = 'onReachBottom';
|
|
231
|
+
const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh';
|
|
232
|
+
const ON_SHARE_TIMELINE = 'onShareTimeline';
|
|
233
|
+
const ON_ADD_TO_FAVORITES = 'onAddToFavorites';
|
|
234
|
+
const ON_SHARE_APP_MESSAGE = 'onShareAppMessage';
|
|
235
|
+
// navigationBar
|
|
236
|
+
const ON_NAVIGATION_BAR_BUTTON_TAP = 'onNavigationBarButtonTap';
|
|
237
|
+
const ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = 'onNavigationBarSearchInputClicked';
|
|
238
|
+
const ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = 'onNavigationBarSearchInputChanged';
|
|
239
|
+
const ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = 'onNavigationBarSearchInputConfirmed';
|
|
240
|
+
const ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = 'onNavigationBarSearchInputFocusChanged';
|
|
241
|
+
// framework
|
|
242
|
+
const ON_APP_ENTER_FOREGROUND = 'onAppEnterForeground';
|
|
243
|
+
const ON_APP_ENTER_BACKGROUND = 'onAppEnterBackground';
|
|
244
|
+
const ON_WEB_INVOKE_APP_SERVICE = 'onWebInvokeAppService';
|
|
245
|
+
const ON_WXS_INVOKE_CALL_METHOD = 'onWxsInvokeCallMethod';
|
|
246
|
+
|
|
247
|
+
function isComponentInternalInstance(vm) {
|
|
248
|
+
return !!vm.appContext;
|
|
249
|
+
}
|
|
250
|
+
function resolveComponentInstance(instance) {
|
|
251
|
+
return (instance &&
|
|
252
|
+
(isComponentInternalInstance(instance) ? instance.proxy : instance));
|
|
253
|
+
}
|
|
254
|
+
function resolveOwnerVm(vm) {
|
|
255
|
+
if (!vm) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
let componentName = vm.type.name;
|
|
259
|
+
while (componentName && isBuiltInComponent(shared.hyphenate(componentName))) {
|
|
260
|
+
// ownerInstance 内置组件需要使用父 vm
|
|
261
|
+
vm = vm.parent;
|
|
262
|
+
componentName = vm.type.name;
|
|
263
|
+
}
|
|
264
|
+
return vm.proxy;
|
|
265
|
+
}
|
|
266
|
+
function isElement(el) {
|
|
267
|
+
// Element
|
|
268
|
+
return el.nodeType === 1;
|
|
269
|
+
}
|
|
270
|
+
function resolveOwnerEl(instance) {
|
|
271
|
+
const { vnode } = instance;
|
|
272
|
+
if (isElement(vnode.el)) {
|
|
273
|
+
return vnode.el;
|
|
274
|
+
}
|
|
275
|
+
const { subTree } = instance;
|
|
276
|
+
// ShapeFlags.ARRAY_CHILDREN = 1<<4
|
|
277
|
+
if (subTree.shapeFlag & 16) {
|
|
278
|
+
const elemVNode = subTree.children.find((vnode) => vnode.el && isElement(vnode.el));
|
|
279
|
+
if (elemVNode) {
|
|
280
|
+
return elemVNode.el;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return vnode.el;
|
|
284
|
+
}
|
|
285
|
+
function dynamicSlotName(name) {
|
|
286
|
+
return name === 'default' ? SLOT_DEFAULT_NAME : name;
|
|
287
|
+
}
|
|
288
|
+
const customizeRE = /:/g;
|
|
289
|
+
function customizeEvent(str) {
|
|
290
|
+
return shared.camelize(str.replace(customizeRE, '-'));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
let lastLogTime = 0;
|
|
294
|
+
function formatLog(module, ...args) {
|
|
295
|
+
const now = Date.now();
|
|
296
|
+
const diff = lastLogTime ? now - lastLogTime : 0;
|
|
297
|
+
lastLogTime = now;
|
|
298
|
+
return `[${now}][${diff}ms][${module}]:${args
|
|
299
|
+
.map((arg) => JSON.stringify(arg))
|
|
300
|
+
.join(' ')}`;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function formatKey(key) {
|
|
304
|
+
return shared.camelize(key.substring(5));
|
|
305
|
+
}
|
|
306
|
+
function initCustomDataset() {
|
|
307
|
+
const prototype = HTMLElement.prototype;
|
|
308
|
+
const setAttribute = prototype.setAttribute;
|
|
309
|
+
prototype.setAttribute = function (key, value) {
|
|
310
|
+
if (key.startsWith('data-') && this.tagName.startsWith('UNI-')) {
|
|
311
|
+
const dataset = this.__uniDataset ||
|
|
312
|
+
(this.__uniDataset = {});
|
|
313
|
+
dataset[formatKey(key)] = value;
|
|
314
|
+
}
|
|
315
|
+
setAttribute.call(this, key, value);
|
|
316
|
+
};
|
|
317
|
+
const removeAttribute = prototype.removeAttribute;
|
|
318
|
+
prototype.removeAttribute = function (key) {
|
|
319
|
+
if (this.__uniDataset &&
|
|
320
|
+
key.startsWith('data-') &&
|
|
321
|
+
this.tagName.startsWith('UNI-')) {
|
|
322
|
+
delete this.__uniDataset[formatKey(key)];
|
|
323
|
+
}
|
|
324
|
+
removeAttribute.call(this, key);
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
function getCustomDataset(el) {
|
|
328
|
+
return shared.extend({}, el.dataset, el.__uniDataset);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const unitRE = new RegExp(`"[^"]+"|'[^']+'|url\\([^)]+\\)|(\\d*\\.?\\d+)[r|u]px`, 'g');
|
|
332
|
+
function toFixed(number, precision) {
|
|
333
|
+
const multiplier = Math.pow(10, precision + 1);
|
|
334
|
+
const wholeNumber = Math.floor(number * multiplier);
|
|
335
|
+
return (Math.round(wholeNumber / 10) * 10) / multiplier;
|
|
336
|
+
}
|
|
337
|
+
const defaultRpx2Unit = {
|
|
338
|
+
unit: 'rem',
|
|
339
|
+
unitRatio: 10 / 320,
|
|
340
|
+
unitPrecision: 5,
|
|
341
|
+
};
|
|
342
|
+
const defaultMiniProgramRpx2Unit = {
|
|
343
|
+
unit: 'rpx',
|
|
344
|
+
unitRatio: 1,
|
|
345
|
+
unitPrecision: 1,
|
|
346
|
+
};
|
|
347
|
+
const defaultNVueRpx2Unit = defaultMiniProgramRpx2Unit;
|
|
348
|
+
function createRpx2Unit(unit, unitRatio, unitPrecision) {
|
|
349
|
+
// ignore: rpxCalcIncludeWidth
|
|
350
|
+
return (val) => val.replace(unitRE, (m, $1) => {
|
|
351
|
+
if (!$1) {
|
|
352
|
+
return m;
|
|
353
|
+
}
|
|
354
|
+
if (unitRatio === 1) {
|
|
355
|
+
return `${$1}${unit}`;
|
|
356
|
+
}
|
|
357
|
+
const value = toFixed(parseFloat($1) * unitRatio, unitPrecision);
|
|
358
|
+
return value === 0 ? '0' : `${value}${unit}`;
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
function passive(passive) {
|
|
363
|
+
return { passive };
|
|
364
|
+
}
|
|
365
|
+
function normalizeDataset(el) {
|
|
366
|
+
// TODO
|
|
367
|
+
return JSON.parse(JSON.stringify(el.dataset || {}));
|
|
368
|
+
}
|
|
369
|
+
function normalizeTarget(el) {
|
|
370
|
+
const { id, offsetTop, offsetLeft } = el;
|
|
371
|
+
return {
|
|
372
|
+
id,
|
|
373
|
+
dataset: getCustomDataset(el),
|
|
374
|
+
offsetTop,
|
|
375
|
+
offsetLeft,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
function addFont(family, source, desc) {
|
|
379
|
+
const fonts = document.fonts;
|
|
380
|
+
if (fonts) {
|
|
381
|
+
const fontFace = new FontFace(family, source, desc);
|
|
382
|
+
return fontFace.load().then(() => {
|
|
383
|
+
fonts.add && fonts.add(fontFace);
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
return new Promise((resolve) => {
|
|
387
|
+
const style = document.createElement('style');
|
|
388
|
+
const values = [];
|
|
389
|
+
if (desc) {
|
|
390
|
+
const { style, weight, stretch, unicodeRange, variant, featureSettings } = desc;
|
|
391
|
+
style && values.push(`font-style:${style}`);
|
|
392
|
+
weight && values.push(`font-weight:${weight}`);
|
|
393
|
+
stretch && values.push(`font-stretch:${stretch}`);
|
|
394
|
+
unicodeRange && values.push(`unicode-range:${unicodeRange}`);
|
|
395
|
+
variant && values.push(`font-variant:${variant}`);
|
|
396
|
+
featureSettings && values.push(`font-feature-settings:${featureSettings}`);
|
|
397
|
+
}
|
|
398
|
+
style.innerText = `@font-face{font-family:"${family}";src:${source};${values.join(';')}}`;
|
|
399
|
+
document.head.appendChild(style);
|
|
400
|
+
resolve();
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
function scrollTo(scrollTop, duration) {
|
|
404
|
+
if (shared.isString(scrollTop)) {
|
|
405
|
+
const el = document.querySelector(scrollTop);
|
|
406
|
+
if (el) {
|
|
407
|
+
scrollTop = el.getBoundingClientRect().top + window.pageYOffset;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (scrollTop < 0) {
|
|
411
|
+
scrollTop = 0;
|
|
412
|
+
}
|
|
413
|
+
const documentElement = document.documentElement;
|
|
414
|
+
const { clientHeight, scrollHeight } = documentElement;
|
|
415
|
+
scrollTop = Math.min(scrollTop, scrollHeight - clientHeight);
|
|
416
|
+
if (duration === 0) {
|
|
417
|
+
// 部分浏览器(比如微信)中 scrollTop 的值需要通过 document.body 来控制
|
|
418
|
+
documentElement.scrollTop = document.body.scrollTop = scrollTop;
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
if (window.scrollY === scrollTop) {
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
const scrollTo = (duration) => {
|
|
425
|
+
if (duration <= 0) {
|
|
426
|
+
window.scrollTo(0, scrollTop);
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
const distaince = scrollTop - window.scrollY;
|
|
430
|
+
requestAnimationFrame(function () {
|
|
431
|
+
window.scrollTo(0, window.scrollY + (distaince / duration) * 10);
|
|
432
|
+
scrollTo(duration - 10);
|
|
433
|
+
});
|
|
434
|
+
};
|
|
435
|
+
scrollTo(duration);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
const encode = encodeURIComponent;
|
|
439
|
+
function stringifyQuery(obj, encodeStr = encode) {
|
|
440
|
+
const res = obj
|
|
441
|
+
? Object.keys(obj)
|
|
442
|
+
.map((key) => {
|
|
443
|
+
let val = obj[key];
|
|
444
|
+
if (typeof val === undefined || val === null) {
|
|
445
|
+
val = '';
|
|
446
|
+
}
|
|
447
|
+
else if (shared.isPlainObject(val)) {
|
|
448
|
+
val = JSON.stringify(val);
|
|
449
|
+
}
|
|
450
|
+
return encodeStr(key) + '=' + encodeStr(val);
|
|
451
|
+
})
|
|
452
|
+
.filter((x) => x.length > 0)
|
|
453
|
+
.join('&')
|
|
454
|
+
: null;
|
|
455
|
+
return res ? `?${res}` : '';
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Decode text using `decodeURIComponent`. Returns the original text if it
|
|
459
|
+
* fails.
|
|
460
|
+
*
|
|
461
|
+
* @param text - string to decode
|
|
462
|
+
* @returns decoded string
|
|
463
|
+
*/
|
|
464
|
+
function decode(text) {
|
|
465
|
+
try {
|
|
466
|
+
return decodeURIComponent('' + text);
|
|
467
|
+
}
|
|
468
|
+
catch (err) { }
|
|
469
|
+
return '' + text;
|
|
470
|
+
}
|
|
471
|
+
function decodedQuery(query = {}) {
|
|
472
|
+
const decodedQuery = {};
|
|
473
|
+
Object.keys(query).forEach((name) => {
|
|
474
|
+
try {
|
|
475
|
+
decodedQuery[name] = decode(query[name]);
|
|
476
|
+
}
|
|
477
|
+
catch (e) {
|
|
478
|
+
decodedQuery[name] = query[name];
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
return decodedQuery;
|
|
482
|
+
}
|
|
483
|
+
const PLUS_RE = /\+/g; // %2B
|
|
484
|
+
/**
|
|
485
|
+
* https://github.com/vuejs/vue-router-next/blob/master/src/query.ts
|
|
486
|
+
* @internal
|
|
487
|
+
*
|
|
488
|
+
* @param search - search string to parse
|
|
489
|
+
* @returns a query object
|
|
490
|
+
*/
|
|
491
|
+
function parseQuery(search) {
|
|
492
|
+
const query = {};
|
|
493
|
+
// avoid creating an object with an empty key and empty value
|
|
494
|
+
// because of split('&')
|
|
495
|
+
if (search === '' || search === '?')
|
|
496
|
+
return query;
|
|
497
|
+
const hasLeadingIM = search[0] === '?';
|
|
498
|
+
const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');
|
|
499
|
+
for (let i = 0; i < searchParams.length; ++i) {
|
|
500
|
+
// pre decode the + into space
|
|
501
|
+
const searchParam = searchParams[i].replace(PLUS_RE, ' ');
|
|
502
|
+
// allow the = character
|
|
503
|
+
let eqPos = searchParam.indexOf('=');
|
|
504
|
+
let key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));
|
|
505
|
+
let value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));
|
|
506
|
+
if (key in query) {
|
|
507
|
+
// an extra variable for ts types
|
|
508
|
+
let currentValue = query[key];
|
|
509
|
+
if (!shared.isArray(currentValue)) {
|
|
510
|
+
currentValue = query[key] = [currentValue];
|
|
511
|
+
}
|
|
512
|
+
currentValue.push(value);
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
query[key] = value;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return query;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
function parseUrl(url) {
|
|
522
|
+
const [path, querystring] = url.split('?', 2);
|
|
523
|
+
return {
|
|
524
|
+
path,
|
|
525
|
+
query: parseQuery(querystring || ''),
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
function isDebugMode() {
|
|
530
|
+
// @ts-expect-error
|
|
531
|
+
return typeof __channelId__ === 'string' && __channelId__;
|
|
532
|
+
}
|
|
533
|
+
function jsonStringifyReplacer(k, p) {
|
|
534
|
+
switch (shared.toRawType(p)) {
|
|
535
|
+
case 'Function':
|
|
536
|
+
return 'function() { [native code] }';
|
|
537
|
+
default:
|
|
538
|
+
return p;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
function normalizeLog(type, filename, args) {
|
|
542
|
+
if (isDebugMode()) {
|
|
543
|
+
args.push(filename.replace('at ', 'uni-app:///'));
|
|
544
|
+
return console[type].apply(console, args);
|
|
545
|
+
}
|
|
546
|
+
const msgs = args.map(function (v) {
|
|
547
|
+
const type = shared.toTypeString(v).toLowerCase();
|
|
548
|
+
if (type === '[object object]' || type === '[object array]') {
|
|
549
|
+
try {
|
|
550
|
+
v =
|
|
551
|
+
'---BEGIN:JSON---' +
|
|
552
|
+
JSON.stringify(v, jsonStringifyReplacer) +
|
|
553
|
+
'---END:JSON---';
|
|
554
|
+
}
|
|
555
|
+
catch (e) {
|
|
556
|
+
v = type;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
if (v === null) {
|
|
561
|
+
v = '---NULL---';
|
|
562
|
+
}
|
|
563
|
+
else if (v === undefined) {
|
|
564
|
+
v = '---UNDEFINED---';
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
const vType = shared.toRawType(v).toUpperCase();
|
|
568
|
+
if (vType === 'NUMBER' || vType === 'BOOLEAN') {
|
|
569
|
+
v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---';
|
|
570
|
+
}
|
|
571
|
+
else {
|
|
572
|
+
v = String(v);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return v;
|
|
577
|
+
});
|
|
578
|
+
return msgs.join('---COMMA---') + ' ' + filename;
|
|
579
|
+
}
|
|
580
|
+
function formatAppLog(type, filename, ...args) {
|
|
581
|
+
const res = normalizeLog(type, filename, args);
|
|
582
|
+
res && console[type](res);
|
|
583
|
+
}
|
|
584
|
+
function formatH5Log(type, filename, ...args) {
|
|
585
|
+
console[type].apply(console, [...args, filename]);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
let latestNodeId = 1;
|
|
589
|
+
class NVueTextNode {
|
|
590
|
+
constructor(text) {
|
|
591
|
+
this.instanceId = '';
|
|
592
|
+
this.nodeId = latestNodeId++;
|
|
593
|
+
this.parentNode = null;
|
|
594
|
+
this.nodeType = 3;
|
|
595
|
+
this.text = text;
|
|
596
|
+
this.children = [];
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
function plusReady(callback) {
|
|
601
|
+
if (typeof callback !== 'function') {
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
if (window.plus) {
|
|
605
|
+
return callback();
|
|
606
|
+
}
|
|
607
|
+
document.addEventListener('plusready', callback);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
class DOMException extends Error {
|
|
611
|
+
constructor(message) {
|
|
612
|
+
super(message);
|
|
613
|
+
this.name = 'DOMException';
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
function normalizeEventType(type, options) {
|
|
618
|
+
if (options) {
|
|
619
|
+
if (options.capture) {
|
|
620
|
+
type += 'Capture';
|
|
621
|
+
}
|
|
622
|
+
if (options.once) {
|
|
623
|
+
type += 'Once';
|
|
624
|
+
}
|
|
625
|
+
if (options.passive) {
|
|
626
|
+
type += 'Passive';
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
return `on${shared.capitalize(shared.camelize(type))}`;
|
|
630
|
+
}
|
|
631
|
+
class UniEvent {
|
|
632
|
+
constructor(type, opts) {
|
|
633
|
+
this.defaultPrevented = false;
|
|
634
|
+
this.timeStamp = Date.now();
|
|
635
|
+
this._stop = false;
|
|
636
|
+
this._end = false;
|
|
637
|
+
this.type = type;
|
|
638
|
+
this.bubbles = !!opts.bubbles;
|
|
639
|
+
this.cancelable = !!opts.cancelable;
|
|
640
|
+
}
|
|
641
|
+
preventDefault() {
|
|
642
|
+
this.defaultPrevented = true;
|
|
643
|
+
}
|
|
644
|
+
stopImmediatePropagation() {
|
|
645
|
+
this._end = this._stop = true;
|
|
646
|
+
}
|
|
647
|
+
stopPropagation() {
|
|
648
|
+
this._stop = true;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
function createUniEvent(evt) {
|
|
652
|
+
if (evt instanceof UniEvent) {
|
|
653
|
+
return evt;
|
|
654
|
+
}
|
|
655
|
+
const [type] = parseEventName(evt.type);
|
|
656
|
+
const uniEvent = new UniEvent(type, {
|
|
657
|
+
bubbles: false,
|
|
658
|
+
cancelable: false,
|
|
659
|
+
});
|
|
660
|
+
shared.extend(uniEvent, evt);
|
|
661
|
+
return uniEvent;
|
|
662
|
+
}
|
|
663
|
+
class UniEventTarget {
|
|
664
|
+
constructor() {
|
|
665
|
+
this.listeners = Object.create(null);
|
|
666
|
+
}
|
|
667
|
+
dispatchEvent(evt) {
|
|
668
|
+
const listeners = this.listeners[evt.type];
|
|
669
|
+
if (!listeners) {
|
|
670
|
+
if ((process.env.NODE_ENV !== 'production')) {
|
|
671
|
+
console.error(formatLog('dispatchEvent', this.nodeId), evt.type, 'not found');
|
|
672
|
+
}
|
|
673
|
+
return false;
|
|
674
|
+
}
|
|
675
|
+
// 格式化事件类型
|
|
676
|
+
const event = createUniEvent(evt);
|
|
677
|
+
const len = listeners.length;
|
|
678
|
+
for (let i = 0; i < len; i++) {
|
|
679
|
+
listeners[i].call(this, event);
|
|
680
|
+
if (event._end) {
|
|
681
|
+
break;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
return event.cancelable && event.defaultPrevented;
|
|
685
|
+
}
|
|
686
|
+
addEventListener(type, listener, options) {
|
|
687
|
+
type = normalizeEventType(type, options);
|
|
688
|
+
(this.listeners[type] || (this.listeners[type] = [])).push(listener);
|
|
689
|
+
}
|
|
690
|
+
removeEventListener(type, callback, options) {
|
|
691
|
+
type = normalizeEventType(type, options);
|
|
692
|
+
const listeners = this.listeners[type];
|
|
693
|
+
if (!listeners) {
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
696
|
+
const index = listeners.indexOf(callback);
|
|
697
|
+
if (index > -1) {
|
|
698
|
+
listeners.splice(index, 1);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
const optionsModifierRE = /(?:Once|Passive|Capture)$/;
|
|
703
|
+
function parseEventName(name) {
|
|
704
|
+
let options;
|
|
705
|
+
if (optionsModifierRE.test(name)) {
|
|
706
|
+
options = {};
|
|
707
|
+
let m;
|
|
708
|
+
while ((m = name.match(optionsModifierRE))) {
|
|
709
|
+
name = name.slice(0, name.length - m[0].length);
|
|
710
|
+
options[m[0].toLowerCase()] = true;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
return [shared.hyphenate(name.slice(2)), options];
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
const EventModifierFlags = {
|
|
717
|
+
stop: 1,
|
|
718
|
+
prevent: 1 << 1,
|
|
719
|
+
self: 1 << 2,
|
|
720
|
+
};
|
|
721
|
+
function encodeModifier(modifiers) {
|
|
722
|
+
let flag = 0;
|
|
723
|
+
if (modifiers.includes('stop')) {
|
|
724
|
+
flag |= EventModifierFlags.stop;
|
|
725
|
+
}
|
|
726
|
+
if (modifiers.includes('prevent')) {
|
|
727
|
+
flag |= EventModifierFlags.prevent;
|
|
728
|
+
}
|
|
729
|
+
if (modifiers.includes('self')) {
|
|
730
|
+
flag |= EventModifierFlags.self;
|
|
731
|
+
}
|
|
732
|
+
return flag;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
const NODE_TYPE_PAGE = 0;
|
|
736
|
+
const NODE_TYPE_ELEMENT = 1;
|
|
737
|
+
const NODE_TYPE_TEXT = 3;
|
|
738
|
+
const NODE_TYPE_COMMENT = 8;
|
|
739
|
+
function sibling(node, type) {
|
|
740
|
+
const { parentNode } = node;
|
|
741
|
+
if (!parentNode) {
|
|
742
|
+
return null;
|
|
743
|
+
}
|
|
744
|
+
const { childNodes } = parentNode;
|
|
745
|
+
return childNodes[childNodes.indexOf(node) + (type === 'n' ? 1 : -1)] || null;
|
|
746
|
+
}
|
|
747
|
+
function removeNode(node) {
|
|
748
|
+
const { parentNode } = node;
|
|
749
|
+
if (parentNode) {
|
|
750
|
+
parentNode.removeChild(node);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
function checkNodeId(node) {
|
|
754
|
+
if (!node.nodeId && node.pageNode) {
|
|
755
|
+
node.nodeId = node.pageNode.genId();
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
// 为优化性能,各平台不使用proxy来实现node的操作拦截,而是直接通过pageNode定制
|
|
759
|
+
class UniNode extends UniEventTarget {
|
|
760
|
+
constructor(nodeType, nodeName, container) {
|
|
761
|
+
super();
|
|
762
|
+
this.pageNode = null;
|
|
763
|
+
this.parentNode = null;
|
|
764
|
+
this._text = null;
|
|
765
|
+
if (container) {
|
|
766
|
+
const { pageNode } = container;
|
|
767
|
+
if (pageNode) {
|
|
768
|
+
this.pageNode = pageNode;
|
|
769
|
+
this.nodeId = pageNode.genId();
|
|
770
|
+
!pageNode.isUnmounted && pageNode.onCreate(this, nodeName);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
this.nodeType = nodeType;
|
|
774
|
+
this.nodeName = nodeName;
|
|
775
|
+
this.childNodes = [];
|
|
776
|
+
}
|
|
777
|
+
get firstChild() {
|
|
778
|
+
return this.childNodes[0] || null;
|
|
779
|
+
}
|
|
780
|
+
get lastChild() {
|
|
781
|
+
const { childNodes } = this;
|
|
782
|
+
const length = childNodes.length;
|
|
783
|
+
return length ? childNodes[length - 1] : null;
|
|
784
|
+
}
|
|
785
|
+
get nextSibling() {
|
|
786
|
+
return sibling(this, 'n');
|
|
787
|
+
}
|
|
788
|
+
get nodeValue() {
|
|
789
|
+
return null;
|
|
790
|
+
}
|
|
791
|
+
set nodeValue(_val) { }
|
|
792
|
+
get textContent() {
|
|
793
|
+
return this._text || '';
|
|
794
|
+
}
|
|
795
|
+
set textContent(text) {
|
|
796
|
+
this._text = text;
|
|
797
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
798
|
+
this.pageNode.onTextContent(this, text);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
get parentElement() {
|
|
802
|
+
const { parentNode } = this;
|
|
803
|
+
if (parentNode && parentNode.nodeType === NODE_TYPE_ELEMENT) {
|
|
804
|
+
return parentNode;
|
|
805
|
+
}
|
|
806
|
+
return null;
|
|
807
|
+
}
|
|
808
|
+
get previousSibling() {
|
|
809
|
+
return sibling(this, 'p');
|
|
810
|
+
}
|
|
811
|
+
appendChild(newChild) {
|
|
812
|
+
return this.insertBefore(newChild, null);
|
|
813
|
+
}
|
|
814
|
+
cloneNode(deep) {
|
|
815
|
+
const cloned = shared.extend(Object.create(Object.getPrototypeOf(this)), this);
|
|
816
|
+
const { attributes } = cloned;
|
|
817
|
+
if (attributes) {
|
|
818
|
+
cloned.attributes = shared.extend({}, attributes);
|
|
819
|
+
}
|
|
820
|
+
if (deep) {
|
|
821
|
+
cloned.childNodes = cloned.childNodes.map((childNode) => childNode.cloneNode(true));
|
|
822
|
+
}
|
|
823
|
+
return cloned;
|
|
824
|
+
}
|
|
825
|
+
insertBefore(newChild, refChild) {
|
|
826
|
+
removeNode(newChild);
|
|
827
|
+
newChild.pageNode = this.pageNode;
|
|
828
|
+
newChild.parentNode = this;
|
|
829
|
+
checkNodeId(newChild);
|
|
830
|
+
const { childNodes } = this;
|
|
831
|
+
if (refChild) {
|
|
832
|
+
const index = childNodes.indexOf(refChild);
|
|
833
|
+
if (index === -1) {
|
|
834
|
+
throw new DOMException(`Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.`);
|
|
835
|
+
}
|
|
836
|
+
childNodes.splice(index, 0, newChild);
|
|
837
|
+
}
|
|
838
|
+
else {
|
|
839
|
+
childNodes.push(newChild);
|
|
840
|
+
}
|
|
841
|
+
return this.pageNode && !this.pageNode.isUnmounted
|
|
842
|
+
? this.pageNode.onInsertBefore(this, newChild, refChild)
|
|
843
|
+
: newChild;
|
|
844
|
+
}
|
|
845
|
+
removeChild(oldChild) {
|
|
846
|
+
const { childNodes } = this;
|
|
847
|
+
const index = childNodes.indexOf(oldChild);
|
|
848
|
+
if (index === -1) {
|
|
849
|
+
throw new DOMException(`Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`);
|
|
850
|
+
}
|
|
851
|
+
oldChild.parentNode = null;
|
|
852
|
+
childNodes.splice(index, 1);
|
|
853
|
+
return this.pageNode && !this.pageNode.isUnmounted
|
|
854
|
+
? this.pageNode.onRemoveChild(oldChild)
|
|
855
|
+
: oldChild;
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
const ATTR_CLASS = 'class';
|
|
859
|
+
const ATTR_STYLE = 'style';
|
|
860
|
+
const ATTR_INNER_HTML = 'innerHTML';
|
|
861
|
+
const ATTR_TEXT_CONTENT = 'textContent';
|
|
862
|
+
const ATTR_V_SHOW = '.vShow';
|
|
863
|
+
const ATTR_V_OWNER_ID = '.vOwnerId';
|
|
864
|
+
const ATTR_V_RENDERJS = '.vRenderjs';
|
|
865
|
+
const ATTR_CHANGE_PREFIX = 'change:';
|
|
866
|
+
class UniBaseNode extends UniNode {
|
|
867
|
+
constructor(nodeType, nodeName, container) {
|
|
868
|
+
super(nodeType, nodeName, container);
|
|
869
|
+
this.attributes = Object.create(null);
|
|
870
|
+
this.style = null;
|
|
871
|
+
this.vShow = null;
|
|
872
|
+
this._html = null;
|
|
873
|
+
}
|
|
874
|
+
get className() {
|
|
875
|
+
return (this.attributes[ATTR_CLASS] || '');
|
|
876
|
+
}
|
|
877
|
+
set className(val) {
|
|
878
|
+
this.setAttribute(ATTR_CLASS, val);
|
|
879
|
+
}
|
|
880
|
+
get innerHTML() {
|
|
881
|
+
return '';
|
|
882
|
+
}
|
|
883
|
+
set innerHTML(html) {
|
|
884
|
+
this._html = html;
|
|
885
|
+
}
|
|
886
|
+
addEventListener(type, listener, options) {
|
|
887
|
+
super.addEventListener(type, listener, options);
|
|
888
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
889
|
+
if (listener.wxsEvent) {
|
|
890
|
+
this.pageNode.onAddWxsEvent(this, normalizeEventType(type, options), listener.wxsEvent, encodeModifier(listener.modifiers || []));
|
|
891
|
+
}
|
|
892
|
+
else {
|
|
893
|
+
this.pageNode.onAddEvent(this, normalizeEventType(type, options), encodeModifier(listener.modifiers || []));
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
removeEventListener(type, callback, options) {
|
|
898
|
+
super.removeEventListener(type, callback, options);
|
|
899
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
900
|
+
this.pageNode.onRemoveEvent(this, normalizeEventType(type, options));
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
getAttribute(qualifiedName) {
|
|
904
|
+
if (qualifiedName === ATTR_STYLE) {
|
|
905
|
+
return this.style;
|
|
906
|
+
}
|
|
907
|
+
return this.attributes[qualifiedName];
|
|
908
|
+
}
|
|
909
|
+
removeAttribute(qualifiedName) {
|
|
910
|
+
if (qualifiedName == ATTR_STYLE) {
|
|
911
|
+
this.style = null;
|
|
912
|
+
}
|
|
913
|
+
else {
|
|
914
|
+
delete this.attributes[qualifiedName];
|
|
915
|
+
}
|
|
916
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
917
|
+
this.pageNode.onRemoveAttribute(this, qualifiedName);
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
setAttribute(qualifiedName, value) {
|
|
921
|
+
if (qualifiedName === ATTR_STYLE) {
|
|
922
|
+
this.style = value;
|
|
923
|
+
}
|
|
924
|
+
else {
|
|
925
|
+
this.attributes[qualifiedName] = value;
|
|
926
|
+
}
|
|
927
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
928
|
+
this.pageNode.onSetAttribute(this, qualifiedName, value);
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
toJSON({ attr, normalize, } = {}) {
|
|
932
|
+
const { attributes, style, listeners, _text } = this;
|
|
933
|
+
const res = {};
|
|
934
|
+
if (Object.keys(attributes).length) {
|
|
935
|
+
res.a = normalize ? normalize(attributes) : attributes;
|
|
936
|
+
}
|
|
937
|
+
const events = Object.keys(listeners);
|
|
938
|
+
if (events.length) {
|
|
939
|
+
let w = undefined;
|
|
940
|
+
const e = {};
|
|
941
|
+
events.forEach((name) => {
|
|
942
|
+
const handlers = listeners[name];
|
|
943
|
+
if (handlers.length) {
|
|
944
|
+
// 可能存在多个 handler 且不同 modifiers 吗?
|
|
945
|
+
const { wxsEvent, modifiers } = handlers[0];
|
|
946
|
+
const modifier = encodeModifier(modifiers || []);
|
|
947
|
+
if (!wxsEvent) {
|
|
948
|
+
e[name] = modifier;
|
|
949
|
+
}
|
|
950
|
+
else {
|
|
951
|
+
if (!w) {
|
|
952
|
+
w = {};
|
|
953
|
+
}
|
|
954
|
+
w[name] = [normalize ? normalize(wxsEvent) : wxsEvent, modifier];
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
});
|
|
958
|
+
res.e = normalize ? normalize(e, false) : e;
|
|
959
|
+
if (w) {
|
|
960
|
+
res.w = normalize ? normalize(w, false) : w;
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
if (style !== null) {
|
|
964
|
+
res.s = normalize ? normalize(style) : style;
|
|
965
|
+
}
|
|
966
|
+
if (!attr) {
|
|
967
|
+
res.i = this.nodeId;
|
|
968
|
+
res.n = this.nodeName;
|
|
969
|
+
}
|
|
970
|
+
if (_text !== null) {
|
|
971
|
+
res.t = normalize ? normalize(_text) : _text;
|
|
972
|
+
}
|
|
973
|
+
return res;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
class UniCommentNode extends UniNode {
|
|
978
|
+
constructor(text, container) {
|
|
979
|
+
super(NODE_TYPE_COMMENT, '#comment', container);
|
|
980
|
+
this._text = (process.env.NODE_ENV !== 'production') ? text : '';
|
|
981
|
+
}
|
|
982
|
+
toJSON(opts = {}) {
|
|
983
|
+
// 暂时不传递 text 到 view 层,没啥意义,节省点数据量
|
|
984
|
+
return opts.attr
|
|
985
|
+
? {}
|
|
986
|
+
: {
|
|
987
|
+
i: this.nodeId,
|
|
988
|
+
};
|
|
989
|
+
// return opts.attr
|
|
990
|
+
// ? { t: this._text as string }
|
|
991
|
+
// : {
|
|
992
|
+
// i: this.nodeId!,
|
|
993
|
+
// t: this._text as string,
|
|
994
|
+
// }
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
class UniElement extends UniBaseNode {
|
|
999
|
+
constructor(nodeName, container) {
|
|
1000
|
+
super(NODE_TYPE_ELEMENT, nodeName.toUpperCase(), container);
|
|
1001
|
+
this.tagName = this.nodeName;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
class UniInputElement extends UniElement {
|
|
1005
|
+
get value() {
|
|
1006
|
+
return this.getAttribute('value');
|
|
1007
|
+
}
|
|
1008
|
+
set value(val) {
|
|
1009
|
+
this.setAttribute('value', val);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
class UniTextAreaElement extends UniInputElement {
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
class UniTextNode extends UniBaseNode {
|
|
1016
|
+
constructor(text, container) {
|
|
1017
|
+
super(NODE_TYPE_TEXT, '#text', container);
|
|
1018
|
+
this._text = text;
|
|
1019
|
+
}
|
|
1020
|
+
get nodeValue() {
|
|
1021
|
+
return this._text || '';
|
|
1022
|
+
}
|
|
1023
|
+
set nodeValue(text) {
|
|
1024
|
+
this._text = text;
|
|
1025
|
+
if (this.pageNode && !this.pageNode.isUnmounted) {
|
|
1026
|
+
this.pageNode.onNodeValue(this, text);
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
const forcePatchProps = {
|
|
1032
|
+
AD: ['data'],
|
|
1033
|
+
'AD-DRAW': ['data'],
|
|
1034
|
+
'LIVE-PLAYER': ['picture-in-picture-mode'],
|
|
1035
|
+
MAP: [
|
|
1036
|
+
'markers',
|
|
1037
|
+
'polyline',
|
|
1038
|
+
'circles',
|
|
1039
|
+
'controls',
|
|
1040
|
+
'include-points',
|
|
1041
|
+
'polygons',
|
|
1042
|
+
],
|
|
1043
|
+
PICKER: ['range', 'value'],
|
|
1044
|
+
'PICKER-VIEW': ['value'],
|
|
1045
|
+
'RICH-TEXT': ['nodes'],
|
|
1046
|
+
VIDEO: ['danmu-list', 'header'],
|
|
1047
|
+
'WEB-VIEW': ['webview-styles'],
|
|
1048
|
+
};
|
|
1049
|
+
const forcePatchPropKeys = ['animation'];
|
|
1050
|
+
|
|
1051
|
+
const forcePatchProp = (el, key) => {
|
|
1052
|
+
if (forcePatchPropKeys.indexOf(key) > -1) {
|
|
1053
|
+
return true;
|
|
1054
|
+
}
|
|
1055
|
+
const keys = forcePatchProps[el.nodeName];
|
|
1056
|
+
if (keys && keys.indexOf(key) > -1) {
|
|
1057
|
+
return true;
|
|
1058
|
+
}
|
|
1059
|
+
return false;
|
|
1060
|
+
};
|
|
1061
|
+
|
|
1062
|
+
const ACTION_TYPE_PAGE_CREATE = 1;
|
|
1063
|
+
const ACTION_TYPE_PAGE_CREATED = 2;
|
|
1064
|
+
const ACTION_TYPE_CREATE = 3;
|
|
1065
|
+
const ACTION_TYPE_INSERT = 4;
|
|
1066
|
+
const ACTION_TYPE_REMOVE = 5;
|
|
1067
|
+
const ACTION_TYPE_SET_ATTRIBUTE = 6;
|
|
1068
|
+
const ACTION_TYPE_REMOVE_ATTRIBUTE = 7;
|
|
1069
|
+
const ACTION_TYPE_ADD_EVENT = 8;
|
|
1070
|
+
const ACTION_TYPE_REMOVE_EVENT = 9;
|
|
1071
|
+
const ACTION_TYPE_SET_TEXT = 10;
|
|
1072
|
+
const ACTION_TYPE_ADD_WXS_EVENT = 12;
|
|
1073
|
+
const ACTION_TYPE_PAGE_SCROLL = 15;
|
|
1074
|
+
const ACTION_TYPE_EVENT = 20;
|
|
1075
|
+
|
|
1076
|
+
function cache(fn) {
|
|
1077
|
+
const cache = Object.create(null);
|
|
1078
|
+
return (str) => {
|
|
1079
|
+
const hit = cache[str];
|
|
1080
|
+
return hit || (cache[str] = fn(str));
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1083
|
+
function cacheStringFunction(fn) {
|
|
1084
|
+
return cache(fn);
|
|
1085
|
+
}
|
|
1086
|
+
function getLen(str = '') {
|
|
1087
|
+
return ('' + str).replace(/[^\x00-\xff]/g, '**').length;
|
|
1088
|
+
}
|
|
1089
|
+
function hasLeadingSlash(str) {
|
|
1090
|
+
return str.indexOf('/') === 0;
|
|
1091
|
+
}
|
|
1092
|
+
function addLeadingSlash(str) {
|
|
1093
|
+
return hasLeadingSlash(str) ? str : '/' + str;
|
|
1094
|
+
}
|
|
1095
|
+
function removeLeadingSlash(str) {
|
|
1096
|
+
return hasLeadingSlash(str) ? str.substr(1) : str;
|
|
1097
|
+
}
|
|
1098
|
+
const invokeArrayFns = (fns, arg) => {
|
|
1099
|
+
let ret;
|
|
1100
|
+
for (let i = 0; i < fns.length; i++) {
|
|
1101
|
+
ret = fns[i](arg);
|
|
1102
|
+
}
|
|
1103
|
+
return ret;
|
|
1104
|
+
};
|
|
1105
|
+
function updateElementStyle(element, styles) {
|
|
1106
|
+
for (const attrName in styles) {
|
|
1107
|
+
element.style[attrName] = styles[attrName];
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
function once(fn, ctx = null) {
|
|
1111
|
+
let res;
|
|
1112
|
+
return ((...args) => {
|
|
1113
|
+
if (fn) {
|
|
1114
|
+
res = fn.apply(ctx, args);
|
|
1115
|
+
fn = null;
|
|
1116
|
+
}
|
|
1117
|
+
return res;
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1120
|
+
const sanitise = (val) => (val && JSON.parse(JSON.stringify(val))) || val;
|
|
1121
|
+
const _completeValue = (value) => (value > 9 ? value : '0' + value);
|
|
1122
|
+
function formatDateTime({ date = new Date(), mode = 'date' }) {
|
|
1123
|
+
if (mode === 'time') {
|
|
1124
|
+
return (_completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes()));
|
|
1125
|
+
}
|
|
1126
|
+
else {
|
|
1127
|
+
return (date.getFullYear() +
|
|
1128
|
+
'-' +
|
|
1129
|
+
_completeValue(date.getMonth() + 1) +
|
|
1130
|
+
'-' +
|
|
1131
|
+
_completeValue(date.getDate()));
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
function callOptions(options, data) {
|
|
1135
|
+
options = options || {};
|
|
1136
|
+
if (typeof data === 'string') {
|
|
1137
|
+
data = {
|
|
1138
|
+
errMsg: data,
|
|
1139
|
+
};
|
|
1140
|
+
}
|
|
1141
|
+
if (/:ok$/.test(data.errMsg)) {
|
|
1142
|
+
if (typeof options.success === 'function') {
|
|
1143
|
+
options.success(data);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
else {
|
|
1147
|
+
if (typeof options.fail === 'function') {
|
|
1148
|
+
options.fail(data);
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
if (typeof options.complete === 'function') {
|
|
1152
|
+
options.complete(data);
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
function getValueByDataPath(obj, path) {
|
|
1156
|
+
if (!shared.isString(path)) {
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1159
|
+
path = path.replace(/\[(\d+)\]/g, '.$1');
|
|
1160
|
+
const parts = path.split('.');
|
|
1161
|
+
let key = parts[0];
|
|
1162
|
+
if (!obj) {
|
|
1163
|
+
obj = {};
|
|
1164
|
+
}
|
|
1165
|
+
if (parts.length === 1) {
|
|
1166
|
+
return obj[key];
|
|
1167
|
+
}
|
|
1168
|
+
return getValueByDataPath(obj[key], parts.slice(1).join('.'));
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
function debounce(fn, delay) {
|
|
1172
|
+
let timeout;
|
|
1173
|
+
const newFn = function () {
|
|
1174
|
+
clearTimeout(timeout);
|
|
1175
|
+
const timerFn = () => fn.apply(this, arguments);
|
|
1176
|
+
timeout = setTimeout(timerFn, delay);
|
|
1177
|
+
};
|
|
1178
|
+
newFn.cancel = function () {
|
|
1179
|
+
clearTimeout(timeout);
|
|
1180
|
+
};
|
|
1181
|
+
return newFn;
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
class EventChannel {
|
|
1185
|
+
constructor(id, events) {
|
|
1186
|
+
this.id = id;
|
|
1187
|
+
this.listener = {};
|
|
1188
|
+
this.emitCache = {};
|
|
1189
|
+
if (events) {
|
|
1190
|
+
Object.keys(events).forEach((name) => {
|
|
1191
|
+
this.on(name, events[name]);
|
|
1192
|
+
});
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
emit(eventName, ...args) {
|
|
1196
|
+
const fns = this.listener[eventName];
|
|
1197
|
+
if (!fns) {
|
|
1198
|
+
return (this.emitCache[eventName] || (this.emitCache[eventName] = [])).push(args);
|
|
1199
|
+
}
|
|
1200
|
+
fns.forEach((opt) => {
|
|
1201
|
+
opt.fn.apply(opt.fn, args);
|
|
1202
|
+
});
|
|
1203
|
+
this.listener[eventName] = fns.filter((opt) => opt.type !== 'once');
|
|
1204
|
+
}
|
|
1205
|
+
on(eventName, fn) {
|
|
1206
|
+
this._addListener(eventName, 'on', fn);
|
|
1207
|
+
this._clearCache(eventName);
|
|
1208
|
+
}
|
|
1209
|
+
once(eventName, fn) {
|
|
1210
|
+
this._addListener(eventName, 'once', fn);
|
|
1211
|
+
this._clearCache(eventName);
|
|
1212
|
+
}
|
|
1213
|
+
off(eventName, fn) {
|
|
1214
|
+
const fns = this.listener[eventName];
|
|
1215
|
+
if (!fns) {
|
|
1216
|
+
return;
|
|
1217
|
+
}
|
|
1218
|
+
if (fn) {
|
|
1219
|
+
for (let i = 0; i < fns.length;) {
|
|
1220
|
+
if (fns[i].fn === fn) {
|
|
1221
|
+
fns.splice(i, 1);
|
|
1222
|
+
i--;
|
|
1223
|
+
}
|
|
1224
|
+
i++;
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
else {
|
|
1228
|
+
delete this.listener[eventName];
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
_clearCache(eventName) {
|
|
1232
|
+
const cacheArgs = this.emitCache[eventName];
|
|
1233
|
+
if (cacheArgs) {
|
|
1234
|
+
for (; cacheArgs.length > 0;) {
|
|
1235
|
+
this.emit.apply(this, [eventName, ...cacheArgs.shift()]);
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
_addListener(eventName, type, fn) {
|
|
1240
|
+
(this.listener[eventName] || (this.listener[eventName] = [])).push({
|
|
1241
|
+
fn,
|
|
1242
|
+
type,
|
|
1243
|
+
});
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
const PAGE_HOOKS = [
|
|
1248
|
+
ON_LOAD,
|
|
1249
|
+
ON_SHOW,
|
|
1250
|
+
ON_HIDE,
|
|
1251
|
+
ON_UNLOAD,
|
|
1252
|
+
ON_BACK_PRESS,
|
|
1253
|
+
ON_PAGE_SCROLL,
|
|
1254
|
+
ON_TAB_ITEM_TAP,
|
|
1255
|
+
ON_REACH_BOTTOM,
|
|
1256
|
+
ON_PULL_DOWN_REFRESH,
|
|
1257
|
+
ON_SHARE_TIMELINE,
|
|
1258
|
+
ON_SHARE_APP_MESSAGE,
|
|
1259
|
+
ON_ADD_TO_FAVORITES,
|
|
1260
|
+
ON_NAVIGATION_BAR_BUTTON_TAP,
|
|
1261
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,
|
|
1262
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,
|
|
1263
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,
|
|
1264
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,
|
|
1265
|
+
];
|
|
1266
|
+
function isRootHook(name) {
|
|
1267
|
+
return PAGE_HOOKS.indexOf(name) > -1;
|
|
1268
|
+
}
|
|
1269
|
+
const UniLifecycleHooks = [
|
|
1270
|
+
ON_SHOW,
|
|
1271
|
+
ON_HIDE,
|
|
1272
|
+
ON_LAUNCH,
|
|
1273
|
+
ON_ERROR,
|
|
1274
|
+
ON_THEME_CHANGE,
|
|
1275
|
+
ON_PAGE_NOT_FOUND,
|
|
1276
|
+
ON_UNHANDLE_REJECTION,
|
|
1277
|
+
ON_LOAD,
|
|
1278
|
+
ON_READY,
|
|
1279
|
+
ON_UNLOAD,
|
|
1280
|
+
ON_RESIZE,
|
|
1281
|
+
ON_BACK_PRESS,
|
|
1282
|
+
ON_PAGE_SCROLL,
|
|
1283
|
+
ON_TAB_ITEM_TAP,
|
|
1284
|
+
ON_REACH_BOTTOM,
|
|
1285
|
+
ON_PULL_DOWN_REFRESH,
|
|
1286
|
+
ON_SHARE_TIMELINE,
|
|
1287
|
+
ON_ADD_TO_FAVORITES,
|
|
1288
|
+
ON_SHARE_APP_MESSAGE,
|
|
1289
|
+
ON_NAVIGATION_BAR_BUTTON_TAP,
|
|
1290
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,
|
|
1291
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,
|
|
1292
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,
|
|
1293
|
+
ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,
|
|
1294
|
+
];
|
|
1295
|
+
const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = {
|
|
1296
|
+
onPageScroll: 1,
|
|
1297
|
+
onShareAppMessage: 1 << 1,
|
|
1298
|
+
onShareTimeline: 1 << 2,
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
function getEnvLocale() {
|
|
1302
|
+
const { env } = process;
|
|
1303
|
+
const lang = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
|
|
1304
|
+
return (lang && lang.replace(/[.:].*/, '')) || 'en';
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
exports.ACTION_TYPE_ADD_EVENT = ACTION_TYPE_ADD_EVENT;
|
|
1308
|
+
exports.ACTION_TYPE_ADD_WXS_EVENT = ACTION_TYPE_ADD_WXS_EVENT;
|
|
1309
|
+
exports.ACTION_TYPE_CREATE = ACTION_TYPE_CREATE;
|
|
1310
|
+
exports.ACTION_TYPE_EVENT = ACTION_TYPE_EVENT;
|
|
1311
|
+
exports.ACTION_TYPE_INSERT = ACTION_TYPE_INSERT;
|
|
1312
|
+
exports.ACTION_TYPE_PAGE_CREATE = ACTION_TYPE_PAGE_CREATE;
|
|
1313
|
+
exports.ACTION_TYPE_PAGE_CREATED = ACTION_TYPE_PAGE_CREATED;
|
|
1314
|
+
exports.ACTION_TYPE_PAGE_SCROLL = ACTION_TYPE_PAGE_SCROLL;
|
|
1315
|
+
exports.ACTION_TYPE_REMOVE = ACTION_TYPE_REMOVE;
|
|
1316
|
+
exports.ACTION_TYPE_REMOVE_ATTRIBUTE = ACTION_TYPE_REMOVE_ATTRIBUTE;
|
|
1317
|
+
exports.ACTION_TYPE_REMOVE_EVENT = ACTION_TYPE_REMOVE_EVENT;
|
|
1318
|
+
exports.ACTION_TYPE_SET_ATTRIBUTE = ACTION_TYPE_SET_ATTRIBUTE;
|
|
1319
|
+
exports.ACTION_TYPE_SET_TEXT = ACTION_TYPE_SET_TEXT;
|
|
1320
|
+
exports.ATTR_CHANGE_PREFIX = ATTR_CHANGE_PREFIX;
|
|
1321
|
+
exports.ATTR_CLASS = ATTR_CLASS;
|
|
1322
|
+
exports.ATTR_INNER_HTML = ATTR_INNER_HTML;
|
|
1323
|
+
exports.ATTR_STYLE = ATTR_STYLE;
|
|
1324
|
+
exports.ATTR_TEXT_CONTENT = ATTR_TEXT_CONTENT;
|
|
1325
|
+
exports.ATTR_V_OWNER_ID = ATTR_V_OWNER_ID;
|
|
1326
|
+
exports.ATTR_V_RENDERJS = ATTR_V_RENDERJS;
|
|
1327
|
+
exports.ATTR_V_SHOW = ATTR_V_SHOW;
|
|
1328
|
+
exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
|
|
1329
|
+
exports.BUILT_IN_TAGS = BUILT_IN_TAGS;
|
|
1330
|
+
exports.BUILT_IN_TAG_NAMES = BUILT_IN_TAG_NAMES;
|
|
1331
|
+
exports.COMPONENT_NAME_PREFIX = COMPONENT_NAME_PREFIX;
|
|
1332
|
+
exports.COMPONENT_PREFIX = COMPONENT_PREFIX;
|
|
1333
|
+
exports.COMPONENT_SELECTOR_PREFIX = COMPONENT_SELECTOR_PREFIX;
|
|
1334
|
+
exports.DATA_RE = DATA_RE;
|
|
1335
|
+
exports.EventChannel = EventChannel;
|
|
1336
|
+
exports.EventModifierFlags = EventModifierFlags;
|
|
1337
|
+
exports.I18N_JSON_DELIMITERS = I18N_JSON_DELIMITERS;
|
|
1338
|
+
exports.JSON_PROTOCOL = JSON_PROTOCOL;
|
|
1339
|
+
exports.LINEFEED = LINEFEED;
|
|
1340
|
+
exports.MINI_PROGRAM_PAGE_RUNTIME_HOOKS = MINI_PROGRAM_PAGE_RUNTIME_HOOKS;
|
|
1341
|
+
exports.NAVBAR_HEIGHT = NAVBAR_HEIGHT;
|
|
1342
|
+
exports.NODE_TYPE_COMMENT = NODE_TYPE_COMMENT;
|
|
1343
|
+
exports.NODE_TYPE_ELEMENT = NODE_TYPE_ELEMENT;
|
|
1344
|
+
exports.NODE_TYPE_PAGE = NODE_TYPE_PAGE;
|
|
1345
|
+
exports.NODE_TYPE_TEXT = NODE_TYPE_TEXT;
|
|
1346
|
+
exports.NVUE_BUILT_IN_TAGS = NVUE_BUILT_IN_TAGS;
|
|
1347
|
+
exports.NVUE_U_BUILT_IN_TAGS = NVUE_U_BUILT_IN_TAGS;
|
|
1348
|
+
exports.NVueTextNode = NVueTextNode;
|
|
1349
|
+
exports.ON_ADD_TO_FAVORITES = ON_ADD_TO_FAVORITES;
|
|
1350
|
+
exports.ON_APP_ENTER_BACKGROUND = ON_APP_ENTER_BACKGROUND;
|
|
1351
|
+
exports.ON_APP_ENTER_FOREGROUND = ON_APP_ENTER_FOREGROUND;
|
|
1352
|
+
exports.ON_BACK_PRESS = ON_BACK_PRESS;
|
|
1353
|
+
exports.ON_ERROR = ON_ERROR;
|
|
1354
|
+
exports.ON_HIDE = ON_HIDE;
|
|
1355
|
+
exports.ON_KEYBOARD_HEIGHT_CHANGE = ON_KEYBOARD_HEIGHT_CHANGE;
|
|
1356
|
+
exports.ON_LAUNCH = ON_LAUNCH;
|
|
1357
|
+
exports.ON_LOAD = ON_LOAD;
|
|
1358
|
+
exports.ON_NAVIGATION_BAR_BUTTON_TAP = ON_NAVIGATION_BAR_BUTTON_TAP;
|
|
1359
|
+
exports.ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED;
|
|
1360
|
+
exports.ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED;
|
|
1361
|
+
exports.ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED;
|
|
1362
|
+
exports.ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED;
|
|
1363
|
+
exports.ON_PAGE_NOT_FOUND = ON_PAGE_NOT_FOUND;
|
|
1364
|
+
exports.ON_PAGE_SCROLL = ON_PAGE_SCROLL;
|
|
1365
|
+
exports.ON_PULL_DOWN_REFRESH = ON_PULL_DOWN_REFRESH;
|
|
1366
|
+
exports.ON_REACH_BOTTOM = ON_REACH_BOTTOM;
|
|
1367
|
+
exports.ON_REACH_BOTTOM_DISTANCE = ON_REACH_BOTTOM_DISTANCE;
|
|
1368
|
+
exports.ON_READY = ON_READY;
|
|
1369
|
+
exports.ON_RESIZE = ON_RESIZE;
|
|
1370
|
+
exports.ON_SHARE_APP_MESSAGE = ON_SHARE_APP_MESSAGE;
|
|
1371
|
+
exports.ON_SHARE_TIMELINE = ON_SHARE_TIMELINE;
|
|
1372
|
+
exports.ON_SHOW = ON_SHOW;
|
|
1373
|
+
exports.ON_TAB_ITEM_TAP = ON_TAB_ITEM_TAP;
|
|
1374
|
+
exports.ON_THEME_CHANGE = ON_THEME_CHANGE;
|
|
1375
|
+
exports.ON_UNHANDLE_REJECTION = ON_UNHANDLE_REJECTION;
|
|
1376
|
+
exports.ON_UNLOAD = ON_UNLOAD;
|
|
1377
|
+
exports.ON_WEB_INVOKE_APP_SERVICE = ON_WEB_INVOKE_APP_SERVICE;
|
|
1378
|
+
exports.ON_WXS_INVOKE_CALL_METHOD = ON_WXS_INVOKE_CALL_METHOD;
|
|
1379
|
+
exports.PLUS_RE = PLUS_RE;
|
|
1380
|
+
exports.PRIMARY_COLOR = PRIMARY_COLOR;
|
|
1381
|
+
exports.RENDERJS_MODULES = RENDERJS_MODULES;
|
|
1382
|
+
exports.RESPONSIVE_MIN_WIDTH = RESPONSIVE_MIN_WIDTH;
|
|
1383
|
+
exports.SCHEME_RE = SCHEME_RE;
|
|
1384
|
+
exports.SELECTED_COLOR = SELECTED_COLOR;
|
|
1385
|
+
exports.SLOT_DEFAULT_NAME = SLOT_DEFAULT_NAME;
|
|
1386
|
+
exports.TABBAR_HEIGHT = TABBAR_HEIGHT;
|
|
1387
|
+
exports.TAGS = TAGS;
|
|
1388
|
+
exports.UNI_SSR = UNI_SSR;
|
|
1389
|
+
exports.UNI_SSR_DATA = UNI_SSR_DATA;
|
|
1390
|
+
exports.UNI_SSR_GLOBAL_DATA = UNI_SSR_GLOBAL_DATA;
|
|
1391
|
+
exports.UNI_SSR_STORE = UNI_SSR_STORE;
|
|
1392
|
+
exports.UNI_SSR_TITLE = UNI_SSR_TITLE;
|
|
1393
|
+
exports.UNI_STORAGE_LOCALE = UNI_STORAGE_LOCALE;
|
|
1394
|
+
exports.UniBaseNode = UniBaseNode;
|
|
1395
|
+
exports.UniCommentNode = UniCommentNode;
|
|
1396
|
+
exports.UniElement = UniElement;
|
|
1397
|
+
exports.UniEvent = UniEvent;
|
|
1398
|
+
exports.UniInputElement = UniInputElement;
|
|
1399
|
+
exports.UniLifecycleHooks = UniLifecycleHooks;
|
|
1400
|
+
exports.UniNode = UniNode;
|
|
1401
|
+
exports.UniTextAreaElement = UniTextAreaElement;
|
|
1402
|
+
exports.UniTextNode = UniTextNode;
|
|
1403
|
+
exports.WEB_INVOKE_APPSERVICE = WEB_INVOKE_APPSERVICE;
|
|
1404
|
+
exports.WXS_MODULES = WXS_MODULES;
|
|
1405
|
+
exports.WXS_PROTOCOL = WXS_PROTOCOL;
|
|
1406
|
+
exports.addFont = addFont;
|
|
1407
|
+
exports.addLeadingSlash = addLeadingSlash;
|
|
1408
|
+
exports.cache = cache;
|
|
1409
|
+
exports.cacheStringFunction = cacheStringFunction;
|
|
1410
|
+
exports.callOptions = callOptions;
|
|
1411
|
+
exports.createIsCustomElement = createIsCustomElement;
|
|
1412
|
+
exports.createRpx2Unit = createRpx2Unit;
|
|
1413
|
+
exports.createUniEvent = createUniEvent;
|
|
1414
|
+
exports.customizeEvent = customizeEvent;
|
|
1415
|
+
exports.debounce = debounce;
|
|
1416
|
+
exports.decode = decode;
|
|
1417
|
+
exports.decodedQuery = decodedQuery;
|
|
1418
|
+
exports.defaultMiniProgramRpx2Unit = defaultMiniProgramRpx2Unit;
|
|
1419
|
+
exports.defaultNVueRpx2Unit = defaultNVueRpx2Unit;
|
|
1420
|
+
exports.defaultRpx2Unit = defaultRpx2Unit;
|
|
1421
|
+
exports.dynamicSlotName = dynamicSlotName;
|
|
1422
|
+
exports.forcePatchProp = forcePatchProp;
|
|
1423
|
+
exports.formatAppLog = formatAppLog;
|
|
1424
|
+
exports.formatDateTime = formatDateTime;
|
|
1425
|
+
exports.formatH5Log = formatH5Log;
|
|
1426
|
+
exports.formatLog = formatLog;
|
|
1427
|
+
exports.getCustomDataset = getCustomDataset;
|
|
1428
|
+
exports.getEnvLocale = getEnvLocale;
|
|
1429
|
+
exports.getLen = getLen;
|
|
1430
|
+
exports.getValueByDataPath = getValueByDataPath;
|
|
1431
|
+
exports.initCustomDataset = initCustomDataset;
|
|
1432
|
+
exports.invokeArrayFns = invokeArrayFns;
|
|
1433
|
+
exports.isAppNVueNativeTag = isAppNVueNativeTag;
|
|
1434
|
+
exports.isAppNativeTag = isAppNativeTag;
|
|
1435
|
+
exports.isBuiltInComponent = isBuiltInComponent;
|
|
1436
|
+
exports.isComponentInternalInstance = isComponentInternalInstance;
|
|
1437
|
+
exports.isComponentTag = isComponentTag;
|
|
1438
|
+
exports.isH5CustomElement = isH5CustomElement;
|
|
1439
|
+
exports.isH5NativeTag = isH5NativeTag;
|
|
1440
|
+
exports.isMiniProgramNativeTag = isMiniProgramNativeTag;
|
|
1441
|
+
exports.isRootHook = isRootHook;
|
|
1442
|
+
exports.normalizeDataset = normalizeDataset;
|
|
1443
|
+
exports.normalizeEventType = normalizeEventType;
|
|
1444
|
+
exports.normalizeTarget = normalizeTarget;
|
|
1445
|
+
exports.once = once;
|
|
1446
|
+
exports.parseEventName = parseEventName;
|
|
1447
|
+
exports.parseQuery = parseQuery;
|
|
1448
|
+
exports.parseUrl = parseUrl;
|
|
1449
|
+
exports.passive = passive;
|
|
1450
|
+
exports.plusReady = plusReady;
|
|
1451
|
+
exports.removeLeadingSlash = removeLeadingSlash;
|
|
1452
|
+
exports.resolveComponentInstance = resolveComponentInstance;
|
|
1453
|
+
exports.resolveOwnerEl = resolveOwnerEl;
|
|
1454
|
+
exports.resolveOwnerVm = resolveOwnerVm;
|
|
1455
|
+
exports.sanitise = sanitise;
|
|
1456
|
+
exports.scrollTo = scrollTo;
|
|
1457
|
+
exports.stringifyQuery = stringifyQuery;
|
|
1458
|
+
exports.updateElementStyle = updateElementStyle;
|