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.
- package/LICENSE +174 -0
- package/README.md +45 -0
- package/dist/bom/URL.d.ts +53 -0
- package/dist/bom/URL.js +222 -0
- package/dist/bom/URL.js.map +1 -0
- package/dist/bom/URLSearchParams.d.ts +3 -0
- package/dist/bom/URLSearchParams.js +131 -0
- package/dist/bom/URLSearchParams.js.map +1 -0
- package/dist/bom/document.d.ts +5 -0
- package/dist/bom/document.js +185 -0
- package/dist/bom/document.js.map +1 -0
- package/dist/bom/getComputedStyle.d.ts +8 -0
- package/dist/bom/getComputedStyle.js +9 -0
- package/dist/bom/getComputedStyle.js.map +1 -0
- package/dist/bom/history.d.ts +34 -0
- package/dist/bom/history.js +121 -0
- package/dist/bom/history.js.map +1 -0
- package/dist/bom/location.d.ts +40 -0
- package/dist/bom/location.js +240 -0
- package/dist/bom/location.js.map +1 -0
- package/dist/bom/navigator.d.ts +3 -0
- package/dist/bom/navigator.js +24 -0
- package/dist/bom/navigator.js.map +1 -0
- package/dist/bom/raf.d.ts +5 -0
- package/dist/bom/raf.js +33 -0
- package/dist/bom/raf.js.map +1 -0
- package/dist/bom/window.d.ts +28 -0
- package/dist/bom/window.js +93 -0
- package/dist/bom/window.js.map +1 -0
- package/dist/constants/index.d.ts +59 -0
- package/dist/constants/index.js +62 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/current.d.ts +22 -0
- package/dist/current.js +9 -0
- package/dist/current.js.map +1 -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 +19 -0
- package/dist/dom/class-list.js +92 -0
- package/dist/dom/class-list.js.map +1 -0
- package/dist/dom/document.d.ts +24 -0
- package/dist/dom/document.js +80 -0
- package/dist/dom/document.js.map +1 -0
- package/dist/dom/element.d.ts +43 -0
- package/dist/dom/element.js +317 -0
- package/dist/dom/element.js.map +1 -0
- package/dist/dom/event-source.d.ts +9 -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 +11 -0
- package/dist/dom/event-target.js +83 -0
- package/dist/dom/event-target.js.map +1 -0
- package/dist/dom/event.d.ts +27 -0
- package/dist/dom/event.js +160 -0
- package/dist/dom/event.js.map +1 -0
- package/dist/dom/form.d.ts +12 -0
- package/dist/dom/form.js +38 -0
- package/dist/dom/form.js.map +1 -0
- package/dist/dom/node.d.ts +79 -0
- package/dist/dom/node.js +301 -0
- package/dist/dom/node.js.map +1 -0
- package/dist/dom/node_types.d.ts +12 -0
- package/dist/dom/root.d.ts +21 -0
- package/dist/dom/root.js +186 -0
- package/dist/dom/root.js.map +1 -0
- package/dist/dom/style.d.ts +17 -0
- package/dist/dom/style.js +168 -0
- package/dist/dom/style.js.map +1 -0
- package/dist/dom/style_properties.js +187 -0
- package/dist/dom/style_properties.js.map +1 -0
- package/dist/dom/svg.d.ts +6 -0
- package/dist/dom/svg.js +8 -0
- package/dist/dom/svg.js.map +1 -0
- package/dist/dom/text.d.ts +17 -0
- package/dist/dom/text.js +41 -0
- package/dist/dom/text.js.map +1 -0
- package/dist/dom/transfer.js +15 -0
- package/dist/dom/transfer.js.map +1 -0
- package/dist/dom/tree.js +38 -0
- package/dist/dom/tree.js.map +1 -0
- package/dist/dom-external/element.js +36 -0
- package/dist/dom-external/element.js.map +1 -0
- package/dist/dom-external/index.js +39 -0
- package/dist/dom-external/index.js.map +1 -0
- package/dist/dom-external/inner-html/html.d.ts +5 -0
- package/dist/dom-external/inner-html/html.js +35 -0
- package/dist/dom-external/inner-html/html.js.map +1 -0
- package/dist/dom-external/inner-html/parser.d.ts +20 -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/scanner.js +304 -0
- package/dist/dom-external/inner-html/scanner.js.map +1 -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.js +26 -0
- package/dist/dom-external/inner-html/tags.js.map +1 -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 +55 -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 +15 -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/mutation-observer/record.d.ts +28 -0
- package/dist/dom-external/node.js +75 -0
- package/dist/dom-external/node.js.map +1 -0
- package/dist/dsl/common.d.ts +17 -0
- package/dist/dsl/common.js +376 -0
- package/dist/dsl/common.js.map +1 -0
- package/dist/dsl/instance.d.ts +97 -0
- package/dist/emitter/emitter.d.ts +8 -0
- package/dist/emitter/emitter.js +7 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/env.d.ts +9 -0
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/hydrate.d.ts +13 -0
- package/dist/hydrate.js +104 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/index.cjs.d.ts +921 -0
- package/dist/index.cjs.js +5401 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/interface/animate.d.ts +83 -0
- package/dist/interface/element.d.ts +6 -0
- package/dist/interface/event-target.d.ts +13 -0
- package/dist/interface/event.d.ts +16 -0
- package/dist/interface/hydrate.d.ts +33 -0
- package/dist/interface/node.d.ts +10 -0
- package/dist/interface/options.d.ts +19 -0
- package/dist/interface/utils.d.ts +4 -0
- package/dist/next-tick.d.ts +5 -0
- package/dist/next-tick.js +47 -0
- package/dist/next-tick.js.map +1 -0
- package/dist/options.d.ts +5 -0
- package/dist/options.js +7 -0
- package/dist/options.js.map +1 -0
- package/dist/perf.d.ts +10 -0
- package/dist/perf.js +49 -0
- package/dist/perf.js.map +1 -0
- package/dist/polyfill/array.js +56 -0
- package/dist/polyfill/array.js.map +1 -0
- package/dist/polyfill/index.d.ts +3 -0
- package/dist/polyfill/index.js +34 -0
- package/dist/polyfill/index.js.map +1 -0
- package/dist/polyfill/intersection-observer.js +597 -0
- package/dist/polyfill/intersection-observer.js.map +1 -0
- package/dist/polyfill/object.js +102 -0
- package/dist/polyfill/object.js.map +1 -0
- package/dist/runtime.esm.d.ts +921 -0
- package/dist/runtime.esm.js +5274 -0
- package/dist/runtime.esm.js.map +1 -0
- package/dist/utils/cache.d.ts +14 -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 +4 -0
- package/dist/utils/lodash.js +32 -0
- package/dist/utils/lodash.js.map +1 -0
- package/dist/utils/router.d.ts +9 -0
- package/dist/utils/router.js +24 -0
- package/dist/utils/router.js.map +1 -0
- package/package.json +39 -0
package/dist/hydrate.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { hooks, toCamelCase } from '@tarojs/shared';
|
|
2
|
+
import { VIEW, PURE_VIEW, CLICK_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
|
+
let compileModeName = null;
|
|
21
|
+
if (isText(node)) {
|
|
22
|
+
return {
|
|
23
|
+
sid: node.sid,
|
|
24
|
+
["v" /* Shortcuts.Text */]: node.nodeValue,
|
|
25
|
+
["nn" /* Shortcuts.NodeName */]: ((_a = componentsAlias[nodeName]) === null || _a === void 0 ? void 0 : _a._num) || '8'
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const data = {
|
|
29
|
+
["nn" /* Shortcuts.NodeName */]: nodeName,
|
|
30
|
+
sid: node.sid
|
|
31
|
+
};
|
|
32
|
+
if (node.uid !== node.sid) {
|
|
33
|
+
data.uid = node.uid;
|
|
34
|
+
}
|
|
35
|
+
if (SPECIAL_NODES.indexOf(nodeName) > -1) {
|
|
36
|
+
if (!node.isAnyEventBinded()) {
|
|
37
|
+
data["nn" /* Shortcuts.NodeName */] = `static-${nodeName}`;
|
|
38
|
+
if (nodeName === VIEW && !isHasExtractProp(node)) {
|
|
39
|
+
data["nn" /* Shortcuts.NodeName */] = PURE_VIEW;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (nodeName === VIEW && node.isOnlyClickBinded() && !isHasExtractProp(node)) {
|
|
43
|
+
data["nn" /* Shortcuts.NodeName */] = CLICK_VIEW;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const { props } = node;
|
|
47
|
+
for (const prop in props) {
|
|
48
|
+
const propInCamelCase = toCamelCase(prop);
|
|
49
|
+
if (!prop.startsWith('data-') && // 在 node.dataset 的数据
|
|
50
|
+
prop !== CLASS &&
|
|
51
|
+
prop !== STYLE &&
|
|
52
|
+
prop !== ID &&
|
|
53
|
+
propInCamelCase !== CATCHMOVE &&
|
|
54
|
+
propInCamelCase !== COMPILE_MODE) {
|
|
55
|
+
data[propInCamelCase] = props[prop];
|
|
56
|
+
}
|
|
57
|
+
if (process.env.TARO_ENV !== 'swan' &&
|
|
58
|
+
nodeName === VIEW &&
|
|
59
|
+
propInCamelCase === CATCHMOVE &&
|
|
60
|
+
props[prop] !== false) {
|
|
61
|
+
data["nn" /* Shortcuts.NodeName */] = CATCH_VIEW;
|
|
62
|
+
}
|
|
63
|
+
if (propInCamelCase === COMPILE_MODE) {
|
|
64
|
+
compileModeName = props[prop];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/*
|
|
68
|
+
* The App scheduler hydrates this host tree into Page.data.app, but outlet.childNodes are the live Taro Page roots kept
|
|
69
|
+
* there to preserve one React/App ancestry. Traversing them would copy every mounted Page into every native Page's App
|
|
70
|
+
* mirror, cross the app/page scheduler boundary, and make Page changes invalidate App data. Serialize the outlet as an
|
|
71
|
+
* empty marker instead. Generated Page WXML fills that exact position from Page.data.page through its slot, while the
|
|
72
|
+
* in-memory Page roots remain untouched for lifecycle, event, and removal ownership.
|
|
73
|
+
*/
|
|
74
|
+
data["cn" /* Shortcuts.Childnodes */] = nodeName === 'vpt_page_outlet'
|
|
75
|
+
? []
|
|
76
|
+
: node.childNodes.filter(node => !isComment(node)).map(hydrate);
|
|
77
|
+
if (node.className !== '') {
|
|
78
|
+
data["cl" /* Shortcuts.Class */] = node.className;
|
|
79
|
+
}
|
|
80
|
+
const cssText = node.cssText;
|
|
81
|
+
if (cssText !== '' && nodeName !== 'swiper-item') {
|
|
82
|
+
data["st" /* Shortcuts.Style */] = cssText;
|
|
83
|
+
}
|
|
84
|
+
hooks.call('modifyHydrateData', data, node);
|
|
85
|
+
const nn = data["nn" /* Shortcuts.NodeName */];
|
|
86
|
+
const componentAlias = componentsAlias[nn];
|
|
87
|
+
if (componentAlias) {
|
|
88
|
+
data["nn" /* Shortcuts.NodeName */] = componentAlias._num;
|
|
89
|
+
for (const prop in data) {
|
|
90
|
+
if (prop in componentAlias) {
|
|
91
|
+
data[componentAlias[prop]] = data[prop];
|
|
92
|
+
delete data[prop];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (compileModeName !== null) {
|
|
97
|
+
data["nn" /* Shortcuts.NodeName */] = compileModeName;
|
|
98
|
+
}
|
|
99
|
+
const resData = hooks.call('transferHydrateData', data, node, componentAlias);
|
|
100
|
+
return resData || data;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { hydrate };
|
|
104
|
+
//# 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 CLICK_VIEW,\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 let compileModeName = null\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 (SPECIAL_NODES.indexOf(nodeName) > -1) {\n if (!node.isAnyEventBinded()) {\n data[Shortcuts.NodeName] = `static-${nodeName}`\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW\n }\n }\n\n if (nodeName === VIEW && node.isOnlyClickBinded() && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = CLICK_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 (\n process.env.TARO_ENV !== 'swan' &&\n nodeName === VIEW &&\n propInCamelCase === CATCHMOVE &&\n props[prop] !== false\n ) {\n data[Shortcuts.NodeName] = CATCH_VIEW\n }\n if (propInCamelCase === COMPILE_MODE) {\n compileModeName = 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 if (compileModeName !== null) {\n data[Shortcuts.NodeName] = compileModeName\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias)\n\n return resData || data\n}\n"],"names":[],"mappings":"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"}
|