@tarojs/runtime 4.0.0-beta.1 → 4.0.0-beta.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/LICENSE +14 -0
- package/dist/bom/URL.d.ts +54 -0
- package/dist/bom/URL.js +221 -0
- package/dist/bom/URL.js.map +1 -0
- package/dist/bom/URLSearchParams.d.ts +2 -0
- package/dist/bom/URLSearchParams.js +123 -0
- package/dist/bom/URLSearchParams.js.map +1 -0
- package/dist/bom/document.d.ts +3 -0
- package/dist/bom/document.js +39 -0
- package/dist/bom/document.js.map +1 -0
- package/dist/bom/getComputedStyle.d.ts +5 -0
- package/dist/bom/getComputedStyle.js +8 -0
- package/dist/bom/getComputedStyle.js.map +1 -0
- package/dist/bom/history.d.ts +32 -0
- package/dist/bom/history.js +121 -0
- package/dist/bom/history.js.map +1 -0
- package/dist/bom/location.d.ts +39 -0
- package/dist/bom/location.js +240 -0
- package/dist/bom/location.js.map +1 -0
- package/dist/bom/navigator.d.ts +2 -0
- package/dist/bom/navigator.js +24 -0
- package/dist/bom/navigator.js.map +1 -0
- package/dist/bom/raf.d.ts +4 -0
- package/dist/bom/raf.js +33 -0
- package/dist/bom/raf.js.map +1 -0
- package/dist/bom/window.d.ts +25 -0
- package/dist/bom/window.js +92 -0
- package/dist/bom/window.js.map +1 -0
- package/dist/constants/index.d.ts +60 -0
- package/dist/constants/index.js +63 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/current.d.ts +19 -0
- package/dist/current.js +9 -0
- package/dist/current.js.map +1 -0
- package/dist/dom/anchor-element.d.ts +14 -0
- package/dist/dom/anchor-element.js +54 -0
- package/dist/dom/anchor-element.js.map +1 -0
- package/dist/dom/class-list.d.ts +17 -0
- package/dist/dom/class-list.js +92 -0
- package/dist/dom/class-list.js.map +1 -0
- package/dist/dom/document.d.ts +25 -0
- package/dist/dom/document.js +80 -0
- package/dist/dom/document.js.map +1 -0
- package/dist/dom/element.d.ts +40 -0
- package/dist/dom/element.js +315 -0
- package/dist/dom/element.js.map +1 -0
- package/dist/dom/event-source.d.ts +7 -0
- package/dist/dom/event-source.js +17 -0
- package/dist/dom/event-source.js.map +1 -0
- package/dist/dom/event-target.d.ts +8 -0
- package/dist/dom/event-target.js +78 -0
- package/dist/dom/event-target.js.map +1 -0
- package/dist/dom/event.d.ts +24 -0
- package/dist/dom/event.js +151 -0
- package/dist/dom/event.js.map +1 -0
- package/dist/dom/form.d.ts +10 -0
- package/dist/dom/form.js +38 -0
- package/dist/dom/form.js.map +1 -0
- package/dist/dom/node.d.ts +107 -0
- package/dist/dom/node.js +292 -0
- package/dist/dom/node.js.map +1 -0
- package/dist/dom/root.d.ts +16 -0
- package/dist/dom/root.js +169 -0
- package/dist/dom/root.js.map +1 -0
- package/dist/dom/style.d.ts +15 -0
- package/dist/dom/style.js +168 -0
- package/dist/dom/style.js.map +1 -0
- package/dist/dom/style_properties.d.ts +3 -0
- package/dist/dom/style_properties.js +186 -0
- package/dist/dom/style_properties.js.map +1 -0
- package/dist/dom/svg.d.ts +4 -0
- package/dist/dom/svg.js +8 -0
- package/dist/dom/svg.js.map +1 -0
- package/dist/dom/text.d.ts +15 -0
- package/dist/dom/text.js +41 -0
- package/dist/dom/text.js.map +1 -0
- package/dist/dom/transfer.d.ts +8 -0
- package/dist/dom/transfer.js +15 -0
- package/dist/dom/transfer.js.map +1 -0
- package/dist/dom/tree.d.ts +4 -0
- package/dist/dom/tree.js +38 -0
- package/dist/dom/tree.js.map +1 -0
- package/dist/dom-external/element.d.ts +4 -0
- package/dist/dom-external/element.js +29 -0
- package/dist/dom-external/element.js.map +1 -0
- package/dist/dom-external/index.d.ts +1 -0
- package/dist/dom-external/index.js +40 -0
- package/dist/dom-external/index.js.map +1 -0
- package/dist/dom-external/inner-html/html.d.ts +3 -0
- package/dist/dom-external/inner-html/html.js +28 -0
- package/dist/dom-external/inner-html/html.js.map +1 -0
- package/dist/dom-external/inner-html/parser.d.ts +25 -0
- package/dist/dom-external/inner-html/parser.js +216 -0
- package/dist/dom-external/inner-html/parser.js.map +1 -0
- package/dist/dom-external/inner-html/scaner.d.ts +30 -0
- package/dist/dom-external/inner-html/scaner.js +304 -0
- package/dist/dom-external/inner-html/scaner.js.map +1 -0
- package/dist/dom-external/inner-html/style.d.ts +27 -0
- package/dist/dom-external/inner-html/style.js +235 -0
- package/dist/dom-external/inner-html/style.js.map +1 -0
- package/dist/dom-external/inner-html/tags.d.ts +9 -0
- package/dist/dom-external/inner-html/tags.js +26 -0
- package/dist/dom-external/inner-html/tags.js.map +1 -0
- package/dist/dom-external/inner-html/utils.d.ts +2 -0
- package/dist/dom-external/inner-html/utils.js +12 -0
- package/dist/dom-external/inner-html/utils.js.map +1 -0
- package/dist/dom-external/mutation-observer/implements.d.ts +71 -0
- package/dist/dom-external/mutation-observer/implements.js +108 -0
- package/dist/dom-external/mutation-observer/implements.js.map +1 -0
- package/dist/dom-external/mutation-observer/index.d.ts +12 -0
- package/dist/dom-external/mutation-observer/index.js +35 -0
- package/dist/dom-external/mutation-observer/index.js.map +1 -0
- package/dist/dom-external/node.d.ts +12 -0
- package/dist/dom-external/node.js +74 -0
- package/dist/dom-external/node.js.map +1 -0
- package/dist/dsl/common.d.ts +15 -0
- package/dist/dsl/common.js +332 -0
- package/dist/dsl/common.js.map +1 -0
- package/dist/emitter/emitter.d.ts +4 -0
- package/dist/emitter/emitter.js +7 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/env.d.ts +7 -0
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/hydrate.d.ts +11 -0
- package/dist/hydrate.js +84 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/index-26658829.d.ts +23 -0
- package/dist/{runtime.cjs.d.ts → index.cjs.d.ts} +92 -89
- package/dist/{runtime.h5.js → index.cjs.js} +4251 -2493
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/instance-4c64b022.d.ts +92 -0
- package/dist/next-tick.d.ts +3 -0
- package/dist/next-tick.js +47 -0
- package/dist/next-tick.js.map +1 -0
- package/dist/node_types-9ac5b4dd.d.ts +11 -0
- package/dist/options-4c64b022.d.ts +17 -0
- package/dist/options.d.ts +3 -0
- package/dist/options.js +7 -0
- package/dist/options.js.map +1 -0
- package/dist/perf.d.ts +7 -0
- package/dist/perf.js +28 -0
- package/dist/perf.js.map +1 -0
- package/dist/polyfill/array.d.ts +3 -0
- package/dist/polyfill/array.js +56 -0
- package/dist/polyfill/array.js.map +1 -0
- package/dist/polyfill/index.d.ts +2 -0
- package/dist/polyfill/index.js +34 -0
- package/dist/polyfill/index.js.map +1 -0
- package/dist/polyfill/intersection-observer.d.ts +2 -0
- package/dist/polyfill/intersection-observer.js +599 -0
- package/dist/polyfill/intersection-observer.js.map +1 -0
- package/dist/polyfill/object.d.ts +4 -0
- package/dist/polyfill/object.js +102 -0
- package/dist/polyfill/object.js.map +1 -0
- package/dist/record-32b054d8.d.ts +25 -0
- package/dist/runtime.esm.d.ts +92 -89
- package/dist/runtime.esm.js +4077 -3317
- package/dist/runtime.esm.js.map +1 -1
- package/dist/utils/cache.d.ts +13 -0
- package/dist/utils/cache.js +27 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +26 -0
- package/dist/utils/index.js +99 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lodash.d.ts +2 -0
- package/dist/utils/lodash.js +22 -0
- package/dist/utils/lodash.js.map +1 -0
- package/dist/utils/router.d.ts +8 -0
- package/dist/utils/router.js +24 -0
- package/dist/utils/router.js.map +1 -0
- package/package.json +16 -11
- package/dist/runtime.cjs.js +0 -4628
- package/dist/runtime.h5.d.ts +0 -800
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { hooks, isArray, isFunction, isUndefined, ensure, EMPTY_OBJ, getComponentsAlias, internalComponents, isString } from '@tarojs/shared';
|
|
2
|
+
import { raf as _raf } from '../bom/raf.js';
|
|
3
|
+
import { window } from '../bom/window.js';
|
|
4
|
+
import { ON_READY, ON_SHOW, ON_HIDE, PAGE_INIT, CONTEXT_ACTIONS, ON_LOAD, OPTIONS, EXTERNAL_CLASSES, BEHAVIORS, VIEW, CUSTOM_WRAPPER } from '../constants/index.js';
|
|
5
|
+
import { Current } from '../current.js';
|
|
6
|
+
import { eventHandler } from '../dom/event.js';
|
|
7
|
+
import { eventCenter } from '../emitter/emitter.js';
|
|
8
|
+
import env from '../env.js';
|
|
9
|
+
import { perf } from '../perf.js';
|
|
10
|
+
import { incrementId, customWrapperCache } from '../utils/index.js';
|
|
11
|
+
import { addLeadingSlash } from '../utils/router.js';
|
|
12
|
+
|
|
13
|
+
/* eslint-disable dot-notation */
|
|
14
|
+
const instances = new Map();
|
|
15
|
+
const pageId = incrementId();
|
|
16
|
+
function injectPageInstance(inst, id) {
|
|
17
|
+
hooks.call('mergePageInstance', instances.get(id), inst);
|
|
18
|
+
instances.set(id, inst);
|
|
19
|
+
}
|
|
20
|
+
function getPageInstance(id) {
|
|
21
|
+
return instances.get(id);
|
|
22
|
+
}
|
|
23
|
+
function removePageInstance(id) {
|
|
24
|
+
instances.delete(id);
|
|
25
|
+
}
|
|
26
|
+
function safeExecute(path, lifecycle, ...args) {
|
|
27
|
+
const instance = instances.get(path);
|
|
28
|
+
if (instance == null) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const func = hooks.call('getLifecycle', instance, lifecycle);
|
|
32
|
+
if (isArray(func)) {
|
|
33
|
+
const res = func.map(fn => fn.apply(instance, args));
|
|
34
|
+
return res[0];
|
|
35
|
+
}
|
|
36
|
+
if (!isFunction(func)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
return func.apply(instance, args);
|
|
40
|
+
}
|
|
41
|
+
function stringify(obj) {
|
|
42
|
+
if (obj == null) {
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
const path = Object.keys(obj).map((key) => {
|
|
46
|
+
return key + '=' + obj[key];
|
|
47
|
+
}).join('&');
|
|
48
|
+
return path === '' ? path : '?' + path;
|
|
49
|
+
}
|
|
50
|
+
function getPath(id, options) {
|
|
51
|
+
const idx = id.indexOf('?');
|
|
52
|
+
if (process.env.TARO_PLATFORM === 'web') {
|
|
53
|
+
return `${idx > -1 ? id.substring(0, idx) : id}${stringify((options === null || options === void 0 ? void 0 : options.stamp) ? { stamp: options.stamp } : {})}`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function getOnReadyEventKey(path) {
|
|
60
|
+
return path + '.' + ON_READY;
|
|
61
|
+
}
|
|
62
|
+
function getOnShowEventKey(path) {
|
|
63
|
+
return path + '.' + ON_SHOW;
|
|
64
|
+
}
|
|
65
|
+
function getOnHideEventKey(path) {
|
|
66
|
+
return path + '.' + ON_HIDE;
|
|
67
|
+
}
|
|
68
|
+
function createPageConfig(component, pageName, data, pageConfig) {
|
|
69
|
+
// 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上
|
|
70
|
+
const id = pageName !== null && pageName !== void 0 ? pageName : `taro_page_${pageId()}`;
|
|
71
|
+
const [ONLOAD, ONUNLOAD, ONREADY, ONSHOW, ONHIDE, LIFECYCLES, SIDE_EFFECT_LIFECYCLES,] = hooks.call('getMiniLifecycleImpl').page;
|
|
72
|
+
let pageElement = null;
|
|
73
|
+
let unmounting = false;
|
|
74
|
+
let prepareMountList = [];
|
|
75
|
+
function setCurrentRouter(page) {
|
|
76
|
+
const router = process.env.TARO_PLATFORM === 'web' ? page.$taroPath : page.route || page.__route__ || page.$taroPath;
|
|
77
|
+
Current.router = {
|
|
78
|
+
params: page.$taroParams,
|
|
79
|
+
path: addLeadingSlash(router),
|
|
80
|
+
$taroPath: page.$taroPath,
|
|
81
|
+
onReady: getOnReadyEventKey(id),
|
|
82
|
+
onShow: getOnShowEventKey(id),
|
|
83
|
+
onHide: getOnHideEventKey(id)
|
|
84
|
+
};
|
|
85
|
+
if (!isUndefined(page.exitState)) {
|
|
86
|
+
Current.router.exitState = page.exitState;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
let loadResolver;
|
|
90
|
+
let hasLoaded;
|
|
91
|
+
const config = {
|
|
92
|
+
[ONLOAD](options = {}, cb) {
|
|
93
|
+
hasLoaded = new Promise(resolve => { loadResolver = resolve; });
|
|
94
|
+
perf.start(PAGE_INIT);
|
|
95
|
+
Current.page = this;
|
|
96
|
+
this.config = pageConfig || {};
|
|
97
|
+
// this.$taroPath 是页面唯一标识
|
|
98
|
+
const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() });
|
|
99
|
+
const $taroPath = this.$taroPath = getPath(id, uniqueOptions);
|
|
100
|
+
if (process.env.TARO_PLATFORM === 'web') {
|
|
101
|
+
config.path = $taroPath;
|
|
102
|
+
}
|
|
103
|
+
// this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改
|
|
104
|
+
if (this.$taroParams == null) {
|
|
105
|
+
this.$taroParams = uniqueOptions;
|
|
106
|
+
}
|
|
107
|
+
setCurrentRouter(this);
|
|
108
|
+
// 初始化当前页面的上下文信息
|
|
109
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
110
|
+
window.trigger(CONTEXT_ACTIONS.INIT, $taroPath);
|
|
111
|
+
}
|
|
112
|
+
const mount = () => {
|
|
113
|
+
Current.app.mount(component, $taroPath, () => {
|
|
114
|
+
pageElement = env.document.getElementById($taroPath);
|
|
115
|
+
ensure(pageElement !== null, '没有找到页面实例。');
|
|
116
|
+
safeExecute($taroPath, ON_LOAD, this.$taroParams);
|
|
117
|
+
loadResolver();
|
|
118
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
119
|
+
pageElement.ctx = this;
|
|
120
|
+
pageElement.performUpdate(true, cb);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
isFunction(cb) && cb();
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
if (unmounting) {
|
|
128
|
+
prepareMountList.push(mount);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
mount();
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
[ONUNLOAD]() {
|
|
135
|
+
const $taroPath = this.$taroPath;
|
|
136
|
+
// 销毁当前页面的上下文信息
|
|
137
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
138
|
+
window.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath);
|
|
139
|
+
}
|
|
140
|
+
// 触发onUnload生命周期
|
|
141
|
+
safeExecute($taroPath, ONUNLOAD);
|
|
142
|
+
unmounting = true;
|
|
143
|
+
Current.app.unmount($taroPath, () => {
|
|
144
|
+
unmounting = false;
|
|
145
|
+
instances.delete($taroPath);
|
|
146
|
+
if (pageElement) {
|
|
147
|
+
pageElement.ctx = null;
|
|
148
|
+
pageElement = null;
|
|
149
|
+
}
|
|
150
|
+
if (prepareMountList.length) {
|
|
151
|
+
prepareMountList.forEach(fn => fn());
|
|
152
|
+
prepareMountList = [];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
[ONREADY]() {
|
|
157
|
+
hasLoaded.then(() => {
|
|
158
|
+
// 触发生命周期
|
|
159
|
+
safeExecute(this.$taroPath, ON_READY);
|
|
160
|
+
// 通过事件触发子组件的生命周期
|
|
161
|
+
_raf(() => eventCenter.trigger(getOnReadyEventKey(id)));
|
|
162
|
+
this.onReady.called = true;
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
[ONSHOW](options = {}) {
|
|
166
|
+
hasLoaded.then(() => {
|
|
167
|
+
// 设置 Current 的 page 和 router
|
|
168
|
+
Current.page = this;
|
|
169
|
+
setCurrentRouter(this);
|
|
170
|
+
// 恢复上下文信息
|
|
171
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
172
|
+
window.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);
|
|
173
|
+
}
|
|
174
|
+
// 触发生命周期
|
|
175
|
+
safeExecute(this.$taroPath, ON_SHOW, options);
|
|
176
|
+
// 通过事件触发子组件的生命周期
|
|
177
|
+
_raf(() => eventCenter.trigger(getOnShowEventKey(id)));
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
[ONHIDE]() {
|
|
181
|
+
// 缓存当前页面上下文信息
|
|
182
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
183
|
+
window.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);
|
|
184
|
+
}
|
|
185
|
+
// 设置 Current 的 page 和 router
|
|
186
|
+
if (Current.page === this) {
|
|
187
|
+
Current.page = null;
|
|
188
|
+
Current.router = null;
|
|
189
|
+
}
|
|
190
|
+
// 触发生命周期
|
|
191
|
+
safeExecute(this.$taroPath, ON_HIDE);
|
|
192
|
+
// 通过事件触发子组件的生命周期
|
|
193
|
+
eventCenter.trigger(getOnHideEventKey(id));
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
LIFECYCLES.forEach((lifecycle) => {
|
|
197
|
+
let isDefer = false;
|
|
198
|
+
lifecycle = lifecycle.replace(/^defer:/, () => {
|
|
199
|
+
isDefer = true;
|
|
200
|
+
return '';
|
|
201
|
+
});
|
|
202
|
+
config[lifecycle] = function () {
|
|
203
|
+
const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);
|
|
204
|
+
if (isDefer) {
|
|
205
|
+
hasLoaded.then(exec);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
return exec();
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
// onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。
|
|
213
|
+
SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {
|
|
214
|
+
var _a;
|
|
215
|
+
if (component[lifecycle] ||
|
|
216
|
+
((_a = component.prototype) === null || _a === void 0 ? void 0 : _a[lifecycle]) ||
|
|
217
|
+
component[lifecycle.replace(/^on/, 'enable')] ||
|
|
218
|
+
(pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig[lifecycle.replace(/^on/, 'enable')])) {
|
|
219
|
+
config[lifecycle] = function (...args) {
|
|
220
|
+
var _a;
|
|
221
|
+
const target = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.target;
|
|
222
|
+
if (target === null || target === void 0 ? void 0 : target.id) {
|
|
223
|
+
const id = target.id;
|
|
224
|
+
const element = env.document.getElementById(id);
|
|
225
|
+
if (element) {
|
|
226
|
+
target.dataset = element.dataset;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return safeExecute(this.$taroPath, lifecycle, ...args);
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
config.eh = eventHandler;
|
|
234
|
+
if (!isUndefined(data)) {
|
|
235
|
+
config.data = data;
|
|
236
|
+
}
|
|
237
|
+
hooks.call('modifyPageObject', config);
|
|
238
|
+
return config;
|
|
239
|
+
}
|
|
240
|
+
function createComponentConfig(component, componentName, data) {
|
|
241
|
+
const id = componentName !== null && componentName !== void 0 ? componentName : `taro_component_${pageId()}`;
|
|
242
|
+
let componentElement = null;
|
|
243
|
+
const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;
|
|
244
|
+
const config = {
|
|
245
|
+
[ATTACHED]() {
|
|
246
|
+
var _a;
|
|
247
|
+
perf.start(PAGE_INIT);
|
|
248
|
+
this.pageIdCache = ((_a = this.getPageId) === null || _a === void 0 ? void 0 : _a.call(this)) || pageId();
|
|
249
|
+
const path = getPath(id, { id: this.pageIdCache });
|
|
250
|
+
Current.app.mount(component, path, () => {
|
|
251
|
+
componentElement = env.document.getElementById(path);
|
|
252
|
+
ensure(componentElement !== null, '没有找到组件实例。');
|
|
253
|
+
this.$taroInstances = instances.get(path);
|
|
254
|
+
safeExecute(path, ON_LOAD);
|
|
255
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
256
|
+
componentElement.ctx = this;
|
|
257
|
+
componentElement.performUpdate(true);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
},
|
|
261
|
+
[DETACHED]() {
|
|
262
|
+
const path = getPath(id, { id: this.pageIdCache });
|
|
263
|
+
Current.app.unmount(path, () => {
|
|
264
|
+
instances.delete(path);
|
|
265
|
+
if (componentElement) {
|
|
266
|
+
componentElement.ctx = null;
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
},
|
|
270
|
+
methods: {
|
|
271
|
+
eh: eventHandler
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
if (!isUndefined(data)) {
|
|
275
|
+
config.data = data;
|
|
276
|
+
}
|
|
277
|
+
[OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {
|
|
278
|
+
var _a;
|
|
279
|
+
config[key] = (_a = component[key]) !== null && _a !== void 0 ? _a : EMPTY_OBJ;
|
|
280
|
+
});
|
|
281
|
+
return config;
|
|
282
|
+
}
|
|
283
|
+
function createRecursiveComponentConfig(componentName) {
|
|
284
|
+
const isCustomWrapper = componentName === CUSTOM_WRAPPER;
|
|
285
|
+
const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;
|
|
286
|
+
const lifeCycles = isCustomWrapper
|
|
287
|
+
? {
|
|
288
|
+
[ATTACHED]() {
|
|
289
|
+
var _a, _b;
|
|
290
|
+
const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);
|
|
291
|
+
if (isString(componentId)) {
|
|
292
|
+
customWrapperCache.set(componentId, this);
|
|
293
|
+
const el = env.document.getElementById(componentId);
|
|
294
|
+
if (el) {
|
|
295
|
+
el.ctx = this;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
[DETACHED]() {
|
|
300
|
+
var _a, _b;
|
|
301
|
+
const componentId = ((_a = this.data.i) === null || _a === void 0 ? void 0 : _a.sid) || ((_b = this.props.i) === null || _b === void 0 ? void 0 : _b.sid);
|
|
302
|
+
if (isString(componentId)) {
|
|
303
|
+
customWrapperCache.delete(componentId);
|
|
304
|
+
const el = env.document.getElementById(componentId);
|
|
305
|
+
if (el) {
|
|
306
|
+
el.ctx = null;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
: EMPTY_OBJ;
|
|
312
|
+
return hooks.call('modifyRecursiveComponentConfig', Object.assign({ properties: {
|
|
313
|
+
i: {
|
|
314
|
+
type: Object,
|
|
315
|
+
value: {
|
|
316
|
+
["nn" /* Shortcuts.NodeName */]: getComponentsAlias(internalComponents)[VIEW]._num
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
l: {
|
|
320
|
+
type: String,
|
|
321
|
+
value: ''
|
|
322
|
+
}
|
|
323
|
+
}, options: {
|
|
324
|
+
addGlobalClass: true,
|
|
325
|
+
virtualHost: !isCustomWrapper
|
|
326
|
+
}, methods: {
|
|
327
|
+
eh: eventHandler
|
|
328
|
+
} }, lifeCycles), { isCustomWrapper });
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify };
|
|
332
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../src/dsl/common.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {\n EMPTY_OBJ, ensure, getComponentsAlias, hooks, internalComponents,\n isArray, isFunction, isString, isUndefined, Shortcuts\n} from '@tarojs/shared'\n\nimport { raf } from '../bom/raf'\nimport { window } from '../bom/window'\nimport { BEHAVIORS, CONTEXT_ACTIONS, CUSTOM_WRAPPER, EXTERNAL_CLASSES, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, VIEW } from '../constants'\nimport { Current } from '../current'\nimport { eventHandler } from '../dom/event'\nimport { eventCenter } from '../emitter/emitter'\nimport env from '../env'\nimport { perf } from '../perf'\nimport { customWrapperCache, incrementId } from '../utils'\nimport { addLeadingSlash } from '../utils/router'\n\nimport type { TaroRootElement } from '../dom/root'\nimport type { MpInstance, PageConfig, TFunc } from '../interface'\nimport type { Instance, PageInstance, PageProps } from './instance'\n\nconst instances = new Map<string, Instance>()\nconst pageId = incrementId()\n\nexport function injectPageInstance (inst: Instance<PageProps>, id: string) {\n hooks.call('mergePageInstance', instances.get(id), inst)\n instances.set(id, inst)\n}\n\nexport function getPageInstance (id: string): Instance | undefined {\n return instances.get(id)\n}\n\nexport function removePageInstance (id: string) {\n instances.delete(id)\n}\n\nexport function safeExecute (path: string, lifecycle: string, ...args: unknown[]) {\n const instance = instances.get(path)\n\n if (instance == null) {\n return\n }\n\n const func = hooks.call('getLifecycle', instance, lifecycle as keyof PageInstance)\n\n if (isArray(func)) {\n const res = func.map(fn => fn.apply(instance, args))\n return res[0]\n }\n\n if (!isFunction(func)) {\n return\n }\n\n return func.apply(instance, args)\n}\n\nexport function stringify (obj?: Record<string, unknown>) {\n if (obj == null) {\n return ''\n }\n const path = Object.keys(obj).map((key) => {\n return key + '=' + obj[key]\n }).join('&')\n return path === '' ? path : '?' + path\n}\n\nexport function getPath (id: string, options?: Record<string, unknown>): string {\n const idx = id.indexOf('?')\n if (process.env.TARO_PLATFORM === 'web') {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options?.stamp ? { stamp: options.stamp } : {})}`\n } else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`\n }\n}\n\nexport function getOnReadyEventKey (path: string) {\n return path + '.' + ON_READY\n}\n\nexport function getOnShowEventKey (path: string) {\n return path + '.' + ON_SHOW\n}\n\nexport function getOnHideEventKey (path: string) {\n return path + '.' + ON_HIDE\n}\n\nexport function createPageConfig (component: any, pageName?: string, data?: Record<string, unknown>, pageConfig?: PageConfig) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName ?? `taro_page_${pageId()}`\n const [\n ONLOAD,\n ONUNLOAD,\n ONREADY,\n ONSHOW,\n ONHIDE,\n LIFECYCLES,\n SIDE_EFFECT_LIFECYCLES,\n ] = hooks.call('getMiniLifecycleImpl')!.page\n let pageElement: TaroRootElement | null = null\n let unmounting = false\n let prepareMountList: (() => void)[] = []\n\n function setCurrentRouter (page: MpInstance) {\n const router = process.env.TARO_PLATFORM === 'web' ? page.$taroPath : page.route || page.__route__ || page.$taroPath\n Current.router = {\n params: page.$taroParams!,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id)\n }\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState\n }\n }\n let loadResolver: (...args: unknown[]) => void\n let hasLoaded: Promise<void>\n const config: PageInstance = {\n [ONLOAD] (this: MpInstance, options: Readonly<Record<string, unknown>> = {}, cb?: TFunc) {\n hasLoaded = new Promise(resolve => { loadResolver = resolve })\n\n perf.start(PAGE_INIT)\n\n Current.page = this as any\n this.config = pageConfig || {}\n\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() })\n const $taroPath = this.$taroPath = getPath(id, uniqueOptions)\n if (process.env.TARO_PLATFORM === 'web') {\n config.path = $taroPath\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions\n }\n\n setCurrentRouter(this)\n\n // 初始化当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window.trigger(CONTEXT_ACTIONS.INIT, $taroPath)\n }\n\n const mount = () => {\n Current.app!.mount!(component, $taroPath, () => {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath)\n\n ensure(pageElement !== null, '没有找到页面实例。')\n safeExecute($taroPath, ON_LOAD, this.$taroParams)\n loadResolver()\n if (process.env.TARO_PLATFORM !== 'web') {\n pageElement.ctx = this\n pageElement.performUpdate(true, cb)\n } else {\n isFunction(cb) && cb()\n }\n })\n }\n if (unmounting) {\n prepareMountList.push(mount)\n } else {\n mount()\n }\n },\n [ONUNLOAD] () {\n const $taroPath = this.$taroPath\n // 销毁当前页面的上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath)\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD)\n unmounting = true\n Current.app!.unmount!($taroPath, () => {\n unmounting = false\n instances.delete($taroPath)\n if (pageElement) {\n pageElement.ctx = null\n pageElement = null\n }\n if (prepareMountList.length) {\n prepareMountList.forEach(fn => fn())\n prepareMountList = []\n }\n })\n },\n [ONREADY] () {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnReadyEventKey(id)))\n this.onReady.called = true\n })\n },\n [ONSHOW] (options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this as any\n setCurrentRouter(this)\n // 恢复上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath)\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnShowEventKey(id)))\n })\n },\n [ONHIDE] () {\n // 缓存当前页面上下文信息\n if (process.env.TARO_PLATFORM !== 'web') {\n window.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath)\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null\n Current.router = null\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE)\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id))\n }\n }\n\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true\n return ''\n })\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments)\n if (isDefer) {\n hasLoaded.then(exec)\n } else {\n return exec()\n }\n }\n })\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n if (component[lifecycle] ||\n component.prototype?.[lifecycle] ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n pageConfig?.[lifecycle.replace(/^on/, 'enable')]\n ) {\n config[lifecycle] = function (...args) {\n const target = args[0]?.target\n if (target?.id) {\n const id = target.id\n const element = env.document.getElementById(id)\n if (element) {\n target.dataset = element.dataset\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args)\n }\n }\n })\n\n config.eh = eventHandler\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n hooks.call('modifyPageObject', config)\n\n return config\n}\n\nexport function createComponentConfig (component: React.ComponentClass, componentName?: string, data?: Record<string, unknown>) {\n const id = componentName ?? `taro_component_${pageId()}`\n let componentElement: TaroRootElement | null = null\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const config: any = {\n [ATTACHED] () {\n perf.start(PAGE_INIT)\n this.pageIdCache = this.getPageId?.() || pageId()\n\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.mount!(component, path, () => {\n componentElement = env.document.getElementById<TaroRootElement>(path)\n ensure(componentElement !== null, '没有找到组件实例。')\n this.$taroInstances = instances.get(path)\n safeExecute(path, ON_LOAD)\n if (process.env.TARO_PLATFORM !== 'web') {\n componentElement.ctx = this\n componentElement.performUpdate(true)\n }\n })\n },\n [DETACHED] () {\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.unmount!(path, () => {\n instances.delete(path)\n if (componentElement) {\n componentElement.ctx = null\n }\n })\n },\n methods: {\n eh: eventHandler\n }\n }\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n config[key] = component[key] ?? EMPTY_OBJ\n })\n\n return config\n}\n\nexport function createRecursiveComponentConfig (componentName?: string) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = this\n }\n }\n },\n [DETACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.delete(componentId)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = null\n }\n }\n }\n }\n : EMPTY_OBJ\n\n return hooks.call('modifyRecursiveComponentConfig',\n {\n properties: {\n i: {\n type: Object,\n value: {\n [Shortcuts.NodeName]: getComponentsAlias(internalComponents)[VIEW]._num\n }\n },\n l: {\n type: String,\n value: ''\n }\n },\n options: {\n addGlobalClass: true,\n virtualHost: !isCustomWrapper\n },\n methods: {\n eh: eventHandler\n },\n ...lifeCycles }, { isCustomWrapper })\n}\n"],"names":["raf"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sources":["../../src/emitter/emitter.ts"],"sourcesContent":["import { Events, hooks } from '@tarojs/shared'\n\nconst eventCenter = hooks.call('getEventCenter', Events)!\n\nexport type EventsType = typeof Events\nexport { eventCenter, Events }\n"],"names":[],"mappings":";;;AAEM,MAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM;;;;"}
|
package/dist/env.d.ts
ADDED
package/dist/env.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EMPTY_OBJ } from '@tarojs/shared';
|
|
2
|
+
|
|
3
|
+
const env = {
|
|
4
|
+
window: process.env.TARO_PLATFORM === 'web' ? window : EMPTY_OBJ,
|
|
5
|
+
document: process.env.TARO_PLATFORM === 'web' ? document : EMPTY_OBJ
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export { env as default };
|
|
9
|
+
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sources":["../src/env.ts"],"sourcesContent":["import { EMPTY_OBJ } from '@tarojs/shared'\n\nimport type { TaroDocument } from './dom/document'\n\ninterface Env {\n window\n document: TaroDocument\n}\n\nconst env: Env = {\n window: process.env.TARO_PLATFORM === 'web' ? window : EMPTY_OBJ,\n document: process.env.TARO_PLATFORM === 'web' ? document : EMPTY_OBJ\n}\n\nexport default env\n"],"names":[],"mappings":";;AASA,MAAM,GAAG,GAAQ;AACf,IAAA,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,MAAM,GAAG,SAAS;AAChE,IAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,QAAQ,GAAG,SAAS;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TaroElement } from "./dom/element.js";
|
|
2
|
+
import { TaroText } from "./dom/text.js";
|
|
3
|
+
import { MiniData } from "./index-26658829.js";
|
|
4
|
+
/**
|
|
5
|
+
* React also has a fancy function's name for this: `hydrate()`.
|
|
6
|
+
* You may have been heard `hydrate` as a SSR-related function,
|
|
7
|
+
* actually, `hydrate` basicly do the `render()` thing, but ignore some properties,
|
|
8
|
+
* it's a vnode traverser and modifier: that's exactly what Taro's doing in here.
|
|
9
|
+
*/
|
|
10
|
+
declare function hydrate(node: TaroElement | TaroText): MiniData;
|
|
11
|
+
export { hydrate };
|
package/dist/hydrate.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { hooks, toCamelCase } from '@tarojs/shared';
|
|
2
|
+
import { VIEW, PURE_VIEW, CLASS, STYLE, ID, CATCHMOVE, COMPILE_MODE, CATCH_VIEW } from './constants/index.js';
|
|
3
|
+
import { getComponentsAlias, isText, isHasExtractProp, isComment } from './utils/index.js';
|
|
4
|
+
|
|
5
|
+
let SPECIAL_NODES;
|
|
6
|
+
let componentsAlias;
|
|
7
|
+
/**
|
|
8
|
+
* React also has a fancy function's name for this: `hydrate()`.
|
|
9
|
+
* You may have been heard `hydrate` as a SSR-related function,
|
|
10
|
+
* actually, `hydrate` basicly do the `render()` thing, but ignore some properties,
|
|
11
|
+
* it's a vnode traverser and modifier: that's exactly what Taro's doing in here.
|
|
12
|
+
*/
|
|
13
|
+
function hydrate(node) {
|
|
14
|
+
var _a;
|
|
15
|
+
// 初始化 componentsAlias
|
|
16
|
+
componentsAlias || (componentsAlias = getComponentsAlias());
|
|
17
|
+
// 初始化 SPECIAL_NODES
|
|
18
|
+
SPECIAL_NODES || (SPECIAL_NODES = hooks.call('getSpecialNodes'));
|
|
19
|
+
const nodeName = node.nodeName;
|
|
20
|
+
if (isText(node)) {
|
|
21
|
+
return {
|
|
22
|
+
sid: node.sid,
|
|
23
|
+
["v" /* Shortcuts.Text */]: node.nodeValue,
|
|
24
|
+
["nn" /* Shortcuts.NodeName */]: ((_a = componentsAlias[nodeName]) === null || _a === void 0 ? void 0 : _a._num) || '8'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const data = {
|
|
28
|
+
["nn" /* Shortcuts.NodeName */]: nodeName,
|
|
29
|
+
sid: node.sid
|
|
30
|
+
};
|
|
31
|
+
if (node.uid !== node.sid) {
|
|
32
|
+
data.uid = node.uid;
|
|
33
|
+
}
|
|
34
|
+
if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {
|
|
35
|
+
data["nn" /* Shortcuts.NodeName */] = `static-${nodeName}`;
|
|
36
|
+
if (nodeName === VIEW && !isHasExtractProp(node)) {
|
|
37
|
+
data["nn" /* Shortcuts.NodeName */] = PURE_VIEW;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const { props } = node;
|
|
41
|
+
for (const prop in props) {
|
|
42
|
+
const propInCamelCase = toCamelCase(prop);
|
|
43
|
+
if (!prop.startsWith('data-') && // 在 node.dataset 的数据
|
|
44
|
+
prop !== CLASS &&
|
|
45
|
+
prop !== STYLE &&
|
|
46
|
+
prop !== ID &&
|
|
47
|
+
propInCamelCase !== CATCHMOVE &&
|
|
48
|
+
propInCamelCase !== COMPILE_MODE) {
|
|
49
|
+
data[propInCamelCase] = props[prop];
|
|
50
|
+
}
|
|
51
|
+
if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {
|
|
52
|
+
data["nn" /* Shortcuts.NodeName */] = CATCH_VIEW;
|
|
53
|
+
}
|
|
54
|
+
if (propInCamelCase === COMPILE_MODE) {
|
|
55
|
+
data["nn" /* Shortcuts.NodeName */] = props[prop];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Children
|
|
59
|
+
data["cn" /* Shortcuts.Childnodes */] = node.childNodes.filter(node => !isComment(node)).map(hydrate);
|
|
60
|
+
if (node.className !== '') {
|
|
61
|
+
data["cl" /* Shortcuts.Class */] = node.className;
|
|
62
|
+
}
|
|
63
|
+
const cssText = node.cssText;
|
|
64
|
+
if (cssText !== '' && nodeName !== 'swiper-item') {
|
|
65
|
+
data["st" /* Shortcuts.Style */] = cssText;
|
|
66
|
+
}
|
|
67
|
+
hooks.call('modifyHydrateData', data, node);
|
|
68
|
+
const nn = data["nn" /* Shortcuts.NodeName */];
|
|
69
|
+
const componentAlias = componentsAlias[nn];
|
|
70
|
+
if (componentAlias) {
|
|
71
|
+
data["nn" /* Shortcuts.NodeName */] = componentAlias._num;
|
|
72
|
+
for (const prop in data) {
|
|
73
|
+
if (prop in componentAlias) {
|
|
74
|
+
data[componentAlias[prop]] = data[prop];
|
|
75
|
+
delete data[prop];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const resData = hooks.call('transferHydrateData', data, node, componentAlias);
|
|
80
|
+
return resData || data;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { hydrate };
|
|
84
|
+
//# sourceMappingURL=hydrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrate.js","sources":["../src/hydrate.ts"],"sourcesContent":["import { hooks, Shortcuts, toCamelCase } from '@tarojs/shared'\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n COMPILE_MODE,\n ID,\n PURE_VIEW,\n STYLE,\n VIEW\n} from './constants'\nimport { getComponentsAlias, isComment, isHasExtractProp, isText } from './utils'\n\nimport type { TaroElement } from './dom/element'\nimport type { TaroText } from './dom/text'\nimport type { MiniData, MiniElementData } from './interface'\n\nlet SPECIAL_NODES\nlet componentsAlias\n\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nexport function hydrate (node: TaroElement | TaroText): MiniData {\n // 初始化 componentsAlias\n componentsAlias ||= getComponentsAlias()\n\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES ||= hooks.call('getSpecialNodes')!\n\n const nodeName = node.nodeName\n\n if (isText(node)) {\n return {\n sid: node.sid,\n [Shortcuts.Text]: node.nodeValue,\n [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || '8'\n }\n }\n\n const data: MiniElementData = {\n [Shortcuts.NodeName]: nodeName,\n sid: node.sid\n }\n\n if (node.uid !== node.sid) {\n data.uid = node.uid\n }\n\n if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n data[Shortcuts.NodeName] = `static-${nodeName}`\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW\n }\n }\n\n const { props } = node\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop)\n if (\n !prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE\n ) {\n data[propInCamelCase] = props[prop]\n }\n if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {\n data[Shortcuts.NodeName] = CATCH_VIEW\n }\n if (propInCamelCase === COMPILE_MODE) {\n data[Shortcuts.NodeName] = props[prop]\n }\n }\n\n // Children\n data[Shortcuts.Childnodes] = node.childNodes.filter(node => !isComment(node)).map(hydrate)\n\n if (node.className !== '') {\n data[Shortcuts.Class] = node.className\n }\n\n const cssText = node.cssText\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[Shortcuts.Style] = cssText\n }\n\n hooks.call('modifyHydrateData', data, node)\n\n const nn = data[Shortcuts.NodeName]\n const componentAlias = componentsAlias[nn]\n if (componentAlias) {\n data[Shortcuts.NodeName] = componentAlias._num\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop]\n delete data[prop]\n }\n }\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias)\n\n return resData || data\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Shortcuts } from "@tarojs/shared";
|
|
2
|
+
interface MiniElementData {
|
|
3
|
+
[Shortcuts.Childnodes]?: MiniData[];
|
|
4
|
+
[Shortcuts.NodeName]: string;
|
|
5
|
+
[Shortcuts.Class]?: string;
|
|
6
|
+
[Shortcuts.Style]?: string;
|
|
7
|
+
uid?: string;
|
|
8
|
+
sid: string;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
interface MiniTextData {
|
|
12
|
+
[Shortcuts.Text]: string;
|
|
13
|
+
[Shortcuts.NodeName]: string;
|
|
14
|
+
}
|
|
15
|
+
type MiniData = MiniElementData | MiniTextData;
|
|
16
|
+
type HydratedData = () => MiniData | MiniData[];
|
|
17
|
+
type UpdatePayloadValue = string | boolean | HydratedData;
|
|
18
|
+
type DataTree = Record<string, UpdatePayloadValue | ReturnType<HydratedData>>;
|
|
19
|
+
interface UpdatePayload {
|
|
20
|
+
path: string;
|
|
21
|
+
value: UpdatePayloadValue;
|
|
22
|
+
}
|
|
23
|
+
export { UpdatePayloadValue, DataTree, UpdatePayload };
|