vite-plugin-taro-runtime 0.6.7

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.
Files changed (168) hide show
  1. package/LICENSE +174 -0
  2. package/README.md +45 -0
  3. package/dist/bom/URL.d.ts +53 -0
  4. package/dist/bom/URL.js +222 -0
  5. package/dist/bom/URL.js.map +1 -0
  6. package/dist/bom/URLSearchParams.d.ts +3 -0
  7. package/dist/bom/URLSearchParams.js +131 -0
  8. package/dist/bom/URLSearchParams.js.map +1 -0
  9. package/dist/bom/document.d.ts +5 -0
  10. package/dist/bom/document.js +185 -0
  11. package/dist/bom/document.js.map +1 -0
  12. package/dist/bom/getComputedStyle.d.ts +8 -0
  13. package/dist/bom/getComputedStyle.js +9 -0
  14. package/dist/bom/getComputedStyle.js.map +1 -0
  15. package/dist/bom/history.d.ts +34 -0
  16. package/dist/bom/history.js +121 -0
  17. package/dist/bom/history.js.map +1 -0
  18. package/dist/bom/location.d.ts +40 -0
  19. package/dist/bom/location.js +240 -0
  20. package/dist/bom/location.js.map +1 -0
  21. package/dist/bom/navigator.d.ts +3 -0
  22. package/dist/bom/navigator.js +24 -0
  23. package/dist/bom/navigator.js.map +1 -0
  24. package/dist/bom/raf.d.ts +5 -0
  25. package/dist/bom/raf.js +33 -0
  26. package/dist/bom/raf.js.map +1 -0
  27. package/dist/bom/window.d.ts +28 -0
  28. package/dist/bom/window.js +93 -0
  29. package/dist/bom/window.js.map +1 -0
  30. package/dist/constants/index.d.ts +59 -0
  31. package/dist/constants/index.js +62 -0
  32. package/dist/constants/index.js.map +1 -0
  33. package/dist/current.d.ts +22 -0
  34. package/dist/current.js +9 -0
  35. package/dist/current.js.map +1 -0
  36. package/dist/dom/anchor-element.js +54 -0
  37. package/dist/dom/anchor-element.js.map +1 -0
  38. package/dist/dom/class-list.d.ts +19 -0
  39. package/dist/dom/class-list.js +92 -0
  40. package/dist/dom/class-list.js.map +1 -0
  41. package/dist/dom/document.d.ts +24 -0
  42. package/dist/dom/document.js +80 -0
  43. package/dist/dom/document.js.map +1 -0
  44. package/dist/dom/element.d.ts +43 -0
  45. package/dist/dom/element.js +317 -0
  46. package/dist/dom/element.js.map +1 -0
  47. package/dist/dom/event-source.d.ts +9 -0
  48. package/dist/dom/event-source.js +17 -0
  49. package/dist/dom/event-source.js.map +1 -0
  50. package/dist/dom/event-target.d.ts +11 -0
  51. package/dist/dom/event-target.js +83 -0
  52. package/dist/dom/event-target.js.map +1 -0
  53. package/dist/dom/event.d.ts +27 -0
  54. package/dist/dom/event.js +160 -0
  55. package/dist/dom/event.js.map +1 -0
  56. package/dist/dom/form.d.ts +12 -0
  57. package/dist/dom/form.js +38 -0
  58. package/dist/dom/form.js.map +1 -0
  59. package/dist/dom/node.d.ts +79 -0
  60. package/dist/dom/node.js +301 -0
  61. package/dist/dom/node.js.map +1 -0
  62. package/dist/dom/node_types.d.ts +12 -0
  63. package/dist/dom/root.d.ts +21 -0
  64. package/dist/dom/root.js +186 -0
  65. package/dist/dom/root.js.map +1 -0
  66. package/dist/dom/style.d.ts +17 -0
  67. package/dist/dom/style.js +168 -0
  68. package/dist/dom/style.js.map +1 -0
  69. package/dist/dom/style_properties.js +187 -0
  70. package/dist/dom/style_properties.js.map +1 -0
  71. package/dist/dom/svg.d.ts +6 -0
  72. package/dist/dom/svg.js +8 -0
  73. package/dist/dom/svg.js.map +1 -0
  74. package/dist/dom/text.d.ts +17 -0
  75. package/dist/dom/text.js +41 -0
  76. package/dist/dom/text.js.map +1 -0
  77. package/dist/dom/transfer.js +15 -0
  78. package/dist/dom/transfer.js.map +1 -0
  79. package/dist/dom/tree.js +38 -0
  80. package/dist/dom/tree.js.map +1 -0
  81. package/dist/dom-external/element.js +36 -0
  82. package/dist/dom-external/element.js.map +1 -0
  83. package/dist/dom-external/index.js +39 -0
  84. package/dist/dom-external/index.js.map +1 -0
  85. package/dist/dom-external/inner-html/html.d.ts +5 -0
  86. package/dist/dom-external/inner-html/html.js +35 -0
  87. package/dist/dom-external/inner-html/html.js.map +1 -0
  88. package/dist/dom-external/inner-html/parser.d.ts +20 -0
  89. package/dist/dom-external/inner-html/parser.js +216 -0
  90. package/dist/dom-external/inner-html/parser.js.map +1 -0
  91. package/dist/dom-external/inner-html/scanner.js +304 -0
  92. package/dist/dom-external/inner-html/scanner.js.map +1 -0
  93. package/dist/dom-external/inner-html/style.js +235 -0
  94. package/dist/dom-external/inner-html/style.js.map +1 -0
  95. package/dist/dom-external/inner-html/tags.js +26 -0
  96. package/dist/dom-external/inner-html/tags.js.map +1 -0
  97. package/dist/dom-external/inner-html/utils.js +12 -0
  98. package/dist/dom-external/inner-html/utils.js.map +1 -0
  99. package/dist/dom-external/mutation-observer/implements.d.ts +55 -0
  100. package/dist/dom-external/mutation-observer/implements.js +108 -0
  101. package/dist/dom-external/mutation-observer/implements.js.map +1 -0
  102. package/dist/dom-external/mutation-observer/index.d.ts +15 -0
  103. package/dist/dom-external/mutation-observer/index.js +35 -0
  104. package/dist/dom-external/mutation-observer/index.js.map +1 -0
  105. package/dist/dom-external/mutation-observer/record.d.ts +28 -0
  106. package/dist/dom-external/node.js +75 -0
  107. package/dist/dom-external/node.js.map +1 -0
  108. package/dist/dsl/common.d.ts +17 -0
  109. package/dist/dsl/common.js +376 -0
  110. package/dist/dsl/common.js.map +1 -0
  111. package/dist/dsl/instance.d.ts +97 -0
  112. package/dist/emitter/emitter.d.ts +8 -0
  113. package/dist/emitter/emitter.js +7 -0
  114. package/dist/emitter/emitter.js.map +1 -0
  115. package/dist/env.d.ts +9 -0
  116. package/dist/env.js +9 -0
  117. package/dist/env.js.map +1 -0
  118. package/dist/hydrate.d.ts +13 -0
  119. package/dist/hydrate.js +104 -0
  120. package/dist/hydrate.js.map +1 -0
  121. package/dist/index.cjs.d.ts +921 -0
  122. package/dist/index.cjs.js +5401 -0
  123. package/dist/index.cjs.js.map +1 -0
  124. package/dist/index.d.ts +43 -0
  125. package/dist/index.js +36 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/interface/animate.d.ts +83 -0
  128. package/dist/interface/element.d.ts +6 -0
  129. package/dist/interface/event-target.d.ts +13 -0
  130. package/dist/interface/event.d.ts +16 -0
  131. package/dist/interface/hydrate.d.ts +33 -0
  132. package/dist/interface/node.d.ts +10 -0
  133. package/dist/interface/options.d.ts +19 -0
  134. package/dist/interface/utils.d.ts +4 -0
  135. package/dist/next-tick.d.ts +5 -0
  136. package/dist/next-tick.js +47 -0
  137. package/dist/next-tick.js.map +1 -0
  138. package/dist/options.d.ts +5 -0
  139. package/dist/options.js +7 -0
  140. package/dist/options.js.map +1 -0
  141. package/dist/perf.d.ts +10 -0
  142. package/dist/perf.js +49 -0
  143. package/dist/perf.js.map +1 -0
  144. package/dist/polyfill/array.js +56 -0
  145. package/dist/polyfill/array.js.map +1 -0
  146. package/dist/polyfill/index.d.ts +3 -0
  147. package/dist/polyfill/index.js +34 -0
  148. package/dist/polyfill/index.js.map +1 -0
  149. package/dist/polyfill/intersection-observer.js +597 -0
  150. package/dist/polyfill/intersection-observer.js.map +1 -0
  151. package/dist/polyfill/object.js +102 -0
  152. package/dist/polyfill/object.js.map +1 -0
  153. package/dist/runtime.esm.d.ts +921 -0
  154. package/dist/runtime.esm.js +5274 -0
  155. package/dist/runtime.esm.js.map +1 -0
  156. package/dist/utils/cache.d.ts +14 -0
  157. package/dist/utils/cache.js +27 -0
  158. package/dist/utils/cache.js.map +1 -0
  159. package/dist/utils/index.d.ts +26 -0
  160. package/dist/utils/index.js +99 -0
  161. package/dist/utils/index.js.map +1 -0
  162. package/dist/utils/lodash.d.ts +4 -0
  163. package/dist/utils/lodash.js +32 -0
  164. package/dist/utils/lodash.js.map +1 -0
  165. package/dist/utils/router.d.ts +9 -0
  166. package/dist/utils/router.js +24 -0
  167. package/dist/utils/router.js.map +1 -0
  168. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sources":["../../../src/dom-external/node.ts"],"sourcesContent":["import { DATASET, OBJECT, PROPS, STYLE } from '../constants'\nimport { NodeType } from '../dom/node_types'\nimport { parser } from '../dom-external/inner-html/parser'\n\nimport type { TaroNode } from '../dom/node'\n\nexport type IPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nexport function insertAdjacentHTML (\n this: TaroNode,\n position: IPosition,\n html: string\n) {\n const parsedNodes = parser(html, this.ownerDocument)\n\n for (let i = 0; i < parsedNodes.length; i++) {\n const n = parsedNodes[i]\n\n switch (position) {\n case 'beforebegin':\n this.parentNode?.insertBefore(n, this)\n break\n case 'afterbegin':\n if (this.hasChildNodes()) {\n this.insertBefore(n, this.childNodes[0])\n } else {\n this.appendChild(n)\n }\n break\n case 'beforeend':\n this.appendChild(n)\n break\n case 'afterend':\n this.parentNode?.appendChild(n)\n break\n }\n }\n}\n\nexport function cloneNode (this: TaroNode, isDeep = false) {\n const document = this.ownerDocument\n let newNode\n\n if (this.nodeType === NodeType.ELEMENT_NODE) {\n newNode = document.createElement(this.nodeName)\n } else if (this.nodeType === NodeType.TEXT_NODE) {\n newNode = document.createTextNode('')\n }\n\n for (const key in this) {\n const value: any = this[key]\n // eslint-disable-next-line valid-typeof\n if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n newNode[key] = { ...value }\n } else if (key === '_value') {\n newNode[key] = value\n } else if (key === STYLE) {\n newNode.style._value = { ...value._value }\n newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp))\n }\n }\n\n if (isDeep) {\n newNode.childNodes = this.childNodes.map(node => (node as any).cloneNode(true))\n }\n\n return newNode\n}\n\nexport function contains (this: TaroNode, node: TaroNode & { id?: string }): boolean {\n let isContains = false\n this.childNodes.some(childNode => {\n const { uid } = childNode\n if (uid === node.uid || uid === node.id || (childNode as any).contains(node)) {\n isContains = true\n return true\n }\n })\n return isContains\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { PageConfig } from '../interface/utils.js';
2
+ import { PageInstance, Instance, PageProps } from './instance.js';
3
+
4
+ declare function injectPageInstance(inst: Instance<PageProps>, id: string): void;
5
+ declare function getPageInstance(id: string): Instance | undefined;
6
+ declare function removePageInstance(id: string): void;
7
+ declare function safeExecute(path: string, lifecycle: string, ...args: unknown[]): any;
8
+ declare function stringify(obj?: Record<string, unknown>): string;
9
+ declare function getPath(id: string, options?: Record<string, unknown>): string;
10
+ declare function getOnReadyEventKey(path: string): string;
11
+ declare function getOnShowEventKey(path: string): string;
12
+ declare function getOnHideEventKey(path: string): string;
13
+ declare function createPageConfig(component: any, pageName?: string, data?: Record<string, unknown>, pageConfig?: PageConfig): PageInstance;
14
+ declare function createComponentConfig(component: React.ComponentClass, componentName?: string, data?: Record<string, unknown>): any;
15
+ declare function createRecursiveComponentConfig(componentName?: string): any;
16
+
17
+ export { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify };
@@ -0,0 +1,376 @@
1
+ import { hooks, ensure, isEnableTTDom, isUndefined, EMPTY_OBJ, EventChannel, getComponentsAlias, internalComponents, isArray, isFunction, isString } from '@tarojs/shared';
2
+ import { raf as _raf } from '../bom/raf.js';
3
+ import { taroWindowProvider } from '../bom/window.js';
4
+ import { PAGE_INIT, OPTIONS, EXTERNAL_CLASSES, BEHAVIORS, CONTEXT_ACTIONS, VIEW, ON_HIDE, ON_READY, ON_SHOW, ON_LOAD, 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
+ taroWindowProvider.trigger(CONTEXT_ACTIONS.INIT, $taroPath);
111
+ }
112
+ const mount = () => {
113
+ Current.app.mount(component, $taroPath, () => {
114
+ if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {
115
+ pageElement = env.document.getPageDocumentById(this.__webviewId__);
116
+ }
117
+ else {
118
+ pageElement = env.document.getElementById($taroPath);
119
+ }
120
+ ensure(pageElement !== null, '没有找到页面实例。');
121
+ safeExecute($taroPath, ON_LOAD, this.$taroParams);
122
+ loadResolver();
123
+ if (process.env.TARO_PLATFORM !== 'web') {
124
+ pageElement.ctx = this;
125
+ if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {
126
+ pageElement.sync();
127
+ }
128
+ else {
129
+ pageElement.performUpdate(true, cb);
130
+ }
131
+ }
132
+ else {
133
+ isFunction(cb) && cb();
134
+ }
135
+ });
136
+ };
137
+ if (unmounting) {
138
+ prepareMountList.push(mount);
139
+ }
140
+ else {
141
+ mount();
142
+ }
143
+ },
144
+ [ONUNLOAD]() {
145
+ const $taroPath = this.$taroPath;
146
+ // 销毁当前页面的上下文信息
147
+ if (process.env.TARO_PLATFORM !== 'web') {
148
+ taroWindowProvider.trigger(CONTEXT_ACTIONS.DESTROY, $taroPath);
149
+ }
150
+ // 触发onUnload生命周期
151
+ safeExecute($taroPath, ONUNLOAD);
152
+ unmounting = true;
153
+ Current.app.unmount($taroPath, () => {
154
+ unmounting = false;
155
+ instances.delete($taroPath);
156
+ if (pageElement) {
157
+ pageElement.ctx = null;
158
+ pageElement = null;
159
+ }
160
+ if (prepareMountList.length) {
161
+ prepareMountList.forEach(fn => fn());
162
+ prepareMountList = [];
163
+ }
164
+ });
165
+ },
166
+ [ONREADY]() {
167
+ hasLoaded.then(() => {
168
+ // 触发生命周期
169
+ safeExecute(this.$taroPath, ON_READY);
170
+ // 通过事件触发子组件的生命周期
171
+ _raf(() => eventCenter.trigger(getOnReadyEventKey(id)));
172
+ this.onReady.called = true;
173
+ });
174
+ },
175
+ [ONSHOW](options = {}) {
176
+ hasLoaded.then(() => {
177
+ // 设置 Current 的 page 和 router
178
+ Current.page = this;
179
+ setCurrentRouter(this);
180
+ // 恢复上下文信息
181
+ if (process.env.TARO_PLATFORM !== 'web') {
182
+ taroWindowProvider.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath);
183
+ }
184
+ // 触发生命周期
185
+ safeExecute(this.$taroPath, ON_SHOW, options);
186
+ // 通过事件触发子组件的生命周期
187
+ _raf(() => eventCenter.trigger(getOnShowEventKey(id)));
188
+ });
189
+ },
190
+ [ONHIDE]() {
191
+ // 缓存当前页面上下文信息
192
+ if (process.env.TARO_PLATFORM !== 'web') {
193
+ taroWindowProvider.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath);
194
+ }
195
+ // 设置 Current 的 page 和 router
196
+ if (Current.page === this) {
197
+ Current.page = null;
198
+ Current.router = null;
199
+ }
200
+ // 触发生命周期
201
+ safeExecute(this.$taroPath, ON_HIDE);
202
+ // 通过事件触发子组件的生命周期
203
+ eventCenter.trigger(getOnHideEventKey(id));
204
+ }
205
+ };
206
+ if (process.env.TARO_PLATFORM === 'web') {
207
+ config.getOpenerEventChannel = () => {
208
+ return EventChannel.pageChannel;
209
+ };
210
+ }
211
+ const isSWAN = process.env.TARO_ENV === 'swan'; // 百度小程序
212
+ LIFECYCLES.forEach((lifecycle) => {
213
+ let isDefer = false;
214
+ let isEvent = false;
215
+ lifecycle = lifecycle.replace(/^defer:/, () => {
216
+ isDefer = true;
217
+ return '';
218
+ });
219
+ lifecycle = lifecycle.replace(/^events:/, () => {
220
+ isEvent = true;
221
+ return '';
222
+ });
223
+ if (isEvent && process.env.TARO_ENV === 'alipay') {
224
+ // 初始化 config.events 对象
225
+ if (!config.events)
226
+ config.events = {};
227
+ config.events[lifecycle] = function () {
228
+ return safeExecute(this.$taroPath, lifecycle, ...arguments);
229
+ };
230
+ }
231
+ else {
232
+ config[lifecycle] = function () {
233
+ const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments);
234
+ if (isSWAN) {
235
+ return exec();
236
+ }
237
+ if (isDefer) {
238
+ hasLoaded.then(exec);
239
+ }
240
+ else {
241
+ return exec();
242
+ }
243
+ };
244
+ }
245
+ });
246
+ // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。
247
+ SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {
248
+ var _a;
249
+ if (component[lifecycle] ||
250
+ ((_a = component.prototype) === null || _a === void 0 ? void 0 : _a[lifecycle]) ||
251
+ component[lifecycle.replace(/^on/, 'enable')] ||
252
+ (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig[lifecycle.replace(/^on/, 'enable')])) {
253
+ config[lifecycle] = function (...args) {
254
+ var _a;
255
+ const target = (_a = args[0]) === null || _a === void 0 ? void 0 : _a.target;
256
+ if (target === null || target === void 0 ? void 0 : target.id) {
257
+ const id = target.id;
258
+ const element = env.document.getElementById(id);
259
+ if (element) {
260
+ target.dataset = element.dataset;
261
+ }
262
+ }
263
+ return safeExecute(this.$taroPath, lifecycle, ...args);
264
+ };
265
+ }
266
+ });
267
+ config.eh = eventHandler;
268
+ if (!isUndefined(data)) {
269
+ config.data = data;
270
+ }
271
+ hooks.call('modifyPageObject', config);
272
+ return config;
273
+ }
274
+ function createComponentConfig(component, componentName, data) {
275
+ const id = componentName !== null && componentName !== void 0 ? componentName : `taro_component_${pageId()}`;
276
+ let componentElement = null;
277
+ const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;
278
+ const config = {
279
+ [ATTACHED]() {
280
+ var _a;
281
+ perf.start(PAGE_INIT);
282
+ this.pageIdCache = ((_a = this.getPageId) === null || _a === void 0 ? void 0 : _a.call(this)) || pageId();
283
+ const path = getPath(id, { id: this.pageIdCache });
284
+ Current.app.mount(component, path, () => {
285
+ componentElement = env.document.getElementById(path);
286
+ ensure(componentElement !== null, '没有找到组件实例。');
287
+ this.$taroInstances = instances.get(path);
288
+ safeExecute(path, ON_LOAD);
289
+ if (process.env.TARO_PLATFORM !== 'web') {
290
+ componentElement.ctx = this;
291
+ if (process.env.TARO_ENV !== 'tt' || !isEnableTTDom()) {
292
+ componentElement.performUpdate(true);
293
+ }
294
+ }
295
+ });
296
+ },
297
+ [DETACHED]() {
298
+ const path = getPath(id, { id: this.pageIdCache });
299
+ Current.app.unmount(path, () => {
300
+ instances.delete(path);
301
+ if (componentElement) {
302
+ componentElement.ctx = null;
303
+ }
304
+ });
305
+ },
306
+ methods: {
307
+ eh: eventHandler
308
+ }
309
+ };
310
+ if (!isUndefined(data)) {
311
+ config.data = data;
312
+ }
313
+ [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {
314
+ var _a;
315
+ config[key] = (_a = component[key]) !== null && _a !== void 0 ? _a : EMPTY_OBJ;
316
+ });
317
+ return config;
318
+ }
319
+ function createRecursiveComponentConfig(componentName) {
320
+ const isCustomWrapper = componentName === CUSTOM_WRAPPER;
321
+ const [ATTACHED, DETACHED] = hooks.call('getMiniLifecycleImpl').component;
322
+ const lifeCycles = isCustomWrapper
323
+ ? {
324
+ [ATTACHED]() {
325
+ var _a, _b;
326
+ if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {
327
+ return;
328
+ }
329
+ 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);
330
+ if (isString(componentId)) {
331
+ customWrapperCache.set(componentId, this);
332
+ const el = env.document.getElementById(componentId);
333
+ if (el) {
334
+ el.ctx = this;
335
+ }
336
+ }
337
+ },
338
+ [DETACHED]() {
339
+ var _a, _b;
340
+ if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {
341
+ return;
342
+ }
343
+ 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);
344
+ if (isString(componentId)) {
345
+ customWrapperCache.delete(componentId);
346
+ const el = env.document.getElementById(componentId);
347
+ if (el) {
348
+ el.ctx = null;
349
+ }
350
+ }
351
+ }
352
+ }
353
+ : EMPTY_OBJ;
354
+ // 不同平台的个性化配置
355
+ const extraOptions = {};
356
+ if (process.env.TARO_ENV === 'jd') {
357
+ extraOptions.addGlobalClass = true;
358
+ }
359
+ return hooks.call('modifyRecursiveComponentConfig', Object.assign({ properties: {
360
+ i: {
361
+ type: Object,
362
+ value: {
363
+ ["nn" /* Shortcuts.NodeName */]: getComponentsAlias(internalComponents)[VIEW]._num
364
+ }
365
+ },
366
+ l: {
367
+ type: String,
368
+ value: ''
369
+ }
370
+ }, options: Object.assign(Object.assign({}, extraOptions), { virtualHost: !isCustomWrapper }), methods: {
371
+ eh: eventHandler
372
+ } }, lifeCycles), { isCustomWrapper });
373
+ }
374
+
375
+ export { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify };
376
+ //# 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, EventChannel,\n getComponentsAlias, hooks, internalComponents,\n isArray, isEnableTTDom,\n isFunction, isString, isUndefined, Shortcuts\n} from '@tarojs/shared'\n\nimport { raf } from '../bom/raf'\nimport { taroWindowProvider } 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 taroWindowProvider.trigger(CONTEXT_ACTIONS.INIT, $taroPath)\n }\n\n const mount = () => {\n Current.app!.mount!(component, $taroPath, () => {\n if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n pageElement = (env.document as any).getPageDocumentById(this.__webviewId__)\n } else {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath)\n }\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 if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n (pageElement as any).sync()\n } else {\n pageElement.performUpdate(true, cb)\n }\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 taroWindowProvider.trigger(CONTEXT_ACTIONS.DESTROY, $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 taroWindowProvider.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 taroWindowProvider.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 if (process.env.TARO_PLATFORM === 'web') {\n config.getOpenerEventChannel = () => {\n return EventChannel.pageChannel\n }\n }\n\n const isSWAN = process.env.TARO_ENV === 'swan'// 百度小程序\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false\n let isEvent = false\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true\n return ''\n })\n lifecycle = lifecycle.replace(/^events:/, () => {\n isEvent = true\n return ''\n })\n\n if (isEvent && process.env.TARO_ENV === 'alipay') {\n // 初始化 config.events 对象\n if (!config.events) config.events = {}\n config.events[lifecycle] = function () {\n return safeExecute(this.$taroPath, lifecycle, ...arguments)\n }\n } else {\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments)\n if (isSWAN) {\n return exec()\n }\n\n if (isDefer) {\n hasLoaded.then(exec)\n } else {\n return exec()\n }\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 if (process.env.TARO_ENV !== 'tt' || !isEnableTTDom()) {\n componentElement.performUpdate(true)\n }\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 if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n return\n }\n\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 if (process.env.TARO_ENV === 'tt' && isEnableTTDom()) {\n return\n }\n\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 // 不同平台的个性化配置\n const extraOptions: { [key: string]: any } = {}\n if (process.env.TARO_ENV === 'jd') {\n extraOptions.addGlobalClass = true\n }\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 ...extraOptions,\n virtualHost: !isCustomWrapper\n },\n methods: {\n eh: eventHandler\n },\n ...lifeCycles\n }, { isCustomWrapper })\n}\n"],"names":["raf"],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { Component } from '@vue/runtime-core';
2
+ import { Component as Component$1, ComponentClass } from 'react';
3
+ import { TaroElement } from '../dom/element.js';
4
+ import { KeyFrame, ScrollTimelineOption } from '../interface/animate.js';
5
+ import { MpEvent } from '../interface/event.js';
6
+ import { TFunc } from '../interface/utils.js';
7
+
8
+ interface Instance<T = Record<string, any>> extends Component$1<T>, Show, PageInstance {
9
+ tid?: string;
10
+ node?: TaroElement;
11
+ $forceUpdate?(): void;
12
+ $nextTick?(cb: () => void): void;
13
+ $options: Instance;
14
+ }
15
+ interface PageProps {
16
+ tid?: string;
17
+ }
18
+ interface ReactPageComponent<T = PageProps> extends ComponentClass<T>, PageInstance {
19
+ }
20
+ interface ReactPageInstance<T = PageProps> extends Component$1<T>, PageInstance {
21
+ componentDidShow?(): void;
22
+ componentDidHide?(): void;
23
+ }
24
+ interface ReactAppInstance<T = AppInstance> extends Component$1<T>, AppInstance {
25
+ }
26
+ interface PageLifeCycle extends Show {
27
+ eh?(event: MpEvent): void;
28
+ onAddToFavorites?(): void;
29
+ onLoad?(options: Record<string, unknown>, cb?: TFunc): void;
30
+ onOptionMenuClick?(): void;
31
+ onKeyboardHeight?(obj: {
32
+ height: number;
33
+ }): void;
34
+ onPageScroll?(obj: {
35
+ scrollTop: number;
36
+ }): void;
37
+ onPullDownRefresh?(): void;
38
+ onPullIntercept?(): void;
39
+ onPopMenuClick?(): void;
40
+ onReachBottom?(): void;
41
+ onReady?(): void;
42
+ onResize?(options: unknown): void;
43
+ onSaveExitState?(): void;
44
+ onShareAppMessage?(obj: {
45
+ from: string;
46
+ target?: TaroElement;
47
+ webViewUrl: string;
48
+ }): void;
49
+ onShareTimeline?(): void;
50
+ onTabItemTap?(obj: {
51
+ index: string;
52
+ pagePath: string;
53
+ text: string;
54
+ }): void;
55
+ onTitleClick?(): void;
56
+ onUnload?(): void;
57
+ }
58
+ interface PageInstance extends PageLifeCycle {
59
+ /** 页面的初始数据 */
60
+ data?: Record<string, unknown>;
61
+ /** 页面路径 */
62
+ path?: string;
63
+ /** 页面的组件选项 */
64
+ options?: Record<string, unknown>;
65
+ /** 页面渲染引擎类型 */
66
+ renderer?: 'webview' | 'skyline';
67
+ /** 页面事件对象,支付宝小程序特有,详见[events](https://opendocs.alipay.com/mini/framework/page-detail#events) */
68
+ events?: Record<string, (...args: any[]) => any>;
69
+ /** 获得一个 EventChannel 对象,用于页面间通讯 */
70
+ getOpenerEventChannel?(): Record<string, any>;
71
+ /** 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
72
+ animate?(selector: string, keyFrames: KeyFrame[], duration: number, callback: () => void): void;
73
+ /** 滚动驱动的动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) */
74
+ animate?(selector: string, keyFrames: KeyFrame[], duration: number, scrollTimeline: ScrollTimelineOption): void;
75
+ }
76
+ interface Show {
77
+ componentDidShow?(): void;
78
+ componentDidHide?(): void;
79
+ onShow?(): void;
80
+ onHide?(): void;
81
+ }
82
+ interface AppInstance extends Show {
83
+ componentDidShow?(options?: Record<string, unknown>): void;
84
+ mount?(component: React.ComponentClass | Component, id: string, cb: (...args: any[]) => void): void;
85
+ mount?(component: React.ComponentClass | Component, id: string, getCtx: (...args: any[]) => void, cb: (...args: any[]) => void): void;
86
+ onError?(error: string): void;
87
+ onLaunch?(options?: Record<string, unknown>): void;
88
+ onPageNotFound?(res: any): void;
89
+ onUnhandledRejection?(error: any): void;
90
+ onShow?(options?: Record<string, unknown>): void;
91
+ onHide?(options?: Record<string, unknown>): void;
92
+ unmount?(id: string, cb?: () => void): void;
93
+ taroGlobalData?: Record<any, any>;
94
+ config?: Record<any, any>;
95
+ }
96
+
97
+ export type { AppInstance, Instance, PageInstance, PageLifeCycle, PageProps, ReactAppInstance, ReactPageComponent, ReactPageInstance };
@@ -0,0 +1,8 @@
1
+ import { Events } from '@tarojs/shared';
2
+ export { Events } from '@tarojs/shared';
3
+
4
+ declare const eventCenter: Events;
5
+ type EventsType = typeof Events;
6
+
7
+ export { eventCenter };
8
+ export type { EventsType };
@@ -0,0 +1,7 @@
1
+ import { hooks, Events } from '@tarojs/shared';
2
+ export { Events } from '@tarojs/shared';
3
+
4
+ const eventCenter = hooks.call('getEventCenter', Events);
5
+
6
+ export { eventCenter };
7
+ //# sourceMappingURL=emitter.js.map
@@ -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
@@ -0,0 +1,9 @@
1
+ import { TaroDocument } from './dom/document.js';
2
+
3
+ interface Env {
4
+ window: any;
5
+ document: TaroDocument;
6
+ }
7
+ declare const env: Env;
8
+
9
+ export { env as default };
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
@@ -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;;;;;"}
@@ -0,0 +1,13 @@
1
+ import { TaroElement } from './dom/element.js';
2
+ import { TaroText } from './dom/text.js';
3
+ import { MiniData } from './interface/hydrate.js';
4
+
5
+ /**
6
+ * React also has a fancy function's name for this: `hydrate()`.
7
+ * You may have been heard `hydrate` as a SSR-related function,
8
+ * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,
9
+ * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.
10
+ */
11
+ declare function hydrate(node: TaroElement | TaroText): MiniData;
12
+
13
+ export { hydrate };