@tarojs/runtime 3.6.22 → 3.6.23
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 +7 -14
- package/dist/bom/URL.js +221 -0
- package/dist/bom/URL.js.map +1 -0
- package/dist/bom/URLSearchParams.d.ts +2 -14
- package/dist/bom/URLSearchParams.js +123 -0
- package/dist/bom/URLSearchParams.js.map +1 -0
- package/dist/bom/document.d.ts +2 -1
- package/dist/bom/document.js +39 -0
- package/dist/bom/document.js.map +1 -0
- package/dist/bom/getComputedStyle.d.ts +5 -3
- package/dist/bom/getComputedStyle.js +8 -0
- package/dist/bom/getComputedStyle.js.map +1 -0
- package/dist/bom/history.d.ts +11 -8
- package/dist/bom/history.js +121 -0
- package/dist/bom/history.js.map +1 -0
- package/dist/bom/location.d.ts +7 -4
- package/dist/bom/location.js +240 -0
- package/dist/bom/location.js.map +1 -0
- package/dist/bom/navigator.d.ts +2 -1
- package/dist/bom/navigator.js +24 -0
- package/dist/bom/navigator.js.map +1 -0
- package/dist/bom/raf.d.ts +3 -4
- package/dist/bom/raf.js +33 -0
- package/dist/bom/raf.js.map +1 -0
- package/dist/bom/window.d.ts +25 -4
- package/dist/bom/window.js +92 -0
- package/dist/bom/window.js.map +1 -0
- package/dist/constants/index.d.ts +52 -51
- package/dist/constants/index.js +63 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/current.d.ts +5 -5
- package/dist/current.js +9 -0
- package/dist/current.js.map +1 -0
- package/dist/dom/anchor-element.d.ts +3 -2
- package/dist/dom/anchor-element.js +54 -0
- package/dist/dom/anchor-element.js.map +1 -0
- package/dist/dom/class-list.d.ts +3 -2
- package/dist/dom/class-list.js +92 -0
- package/dist/dom/class-list.js.map +1 -0
- package/dist/dom/document.d.ts +11 -6
- package/dist/dom/document.js +80 -0
- package/dist/dom/document.js.map +1 -0
- package/dist/dom/element.d.ts +8 -7
- package/dist/dom/element.js +318 -0
- package/dist/dom/element.js.map +1 -0
- package/dist/dom/event-source.d.ts +3 -3
- package/dist/dom/event-source.js +17 -0
- package/dist/dom/event-source.js.map +1 -0
- package/dist/dom/event-target.d.ts +3 -2
- package/dist/dom/event-target.js +78 -0
- package/dist/dom/event-target.js.map +1 -0
- package/dist/dom/event.d.ts +6 -5
- package/dist/dom/event.js +151 -0
- package/dist/dom/event.js.map +1 -0
- package/dist/dom/form.d.ts +4 -3
- package/dist/dom/form.js +38 -0
- package/dist/dom/form.js.map +1 -0
- package/dist/dom/node.d.ts +40 -9
- package/dist/dom/node.js +292 -0
- package/dist/dom/node.js.map +1 -0
- package/dist/dom/root.d.ts +6 -5
- package/dist/dom/root.js +169 -0
- package/dist/dom/root.js.map +1 -0
- package/dist/dom/style.d.ts +3 -2
- package/dist/dom/style.js +168 -0
- package/dist/dom/style.js.map +1 -0
- package/dist/dom/style_properties.js +186 -0
- package/dist/dom/style_properties.js.map +1 -0
- package/dist/dom/svg.d.ts +3 -2
- package/dist/dom/svg.js +8 -0
- package/dist/dom/svg.js.map +1 -0
- package/dist/dom/text.d.ts +4 -3
- package/dist/dom/text.js +41 -0
- package/dist/dom/text.js.map +1 -0
- package/dist/dom/transfer.d.ts +3 -2
- package/dist/dom/transfer.js +15 -0
- package/dist/dom/transfer.js.map +1 -0
- package/dist/dom/tree.d.ts +3 -3
- package/dist/dom/tree.js +38 -0
- package/dist/dom/tree.js.map +1 -0
- package/dist/dom-external/element.d.ts +4 -3
- package/dist/dom-external/element.js +29 -0
- package/dist/dom-external/element.js.map +1 -0
- package/dist/dom-external/index.js +38 -0
- package/dist/dom-external/index.js.map +1 -0
- package/dist/dom-external/inner-html/html.d.ts +3 -2
- 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 +7 -7
- 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 +3 -3
- 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 +3 -3
- 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 +6 -5
- 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 -1
- 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 +25 -6
- 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 +5 -6
- 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 +6 -5
- package/dist/dom-external/node.js +74 -0
- package/dist/dom-external/node.js.map +1 -0
- package/dist/dsl/common.d.ts +15 -16
- package/dist/dsl/common.js +332 -0
- package/dist/dsl/common.js.map +1 -0
- package/dist/emitter/emitter.d.ts +2 -2
- package/dist/emitter/emitter.js +7 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/env.d.ts +2 -2
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/hydrate.d.ts +5 -4
- package/dist/hydrate.js +84 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/index-26658829.d.ts +23 -0
- package/dist/index.cjs.d.ts +784 -0
- package/dist/index.cjs.js +5129 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +32 -31
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/{dsl/instance.d.ts → instance-0f017c6e.d.ts} +19 -18
- package/dist/next-tick.d.ts +3 -2
- package/dist/next-tick.js +47 -0
- package/dist/next-tick.js.map +1 -0
- package/dist/{dom/node_types.d.ts → node_types-9ac5b4dd.d.ts} +2 -1
- package/dist/{interface/options.d.ts → options-0f017c6e.d.ts} +5 -4
- package/dist/options.d.ts +3 -2
- package/dist/options.js +7 -0
- package/dist/options.js.map +1 -0
- package/dist/perf.d.ts +2 -2
- 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/{dom-external/mutation-observer/record.d.ts → record-32b054d8.d.ts} +4 -3
- package/dist/runtime.esm.d.ts +91 -89
- package/dist/runtime.esm.js +1165 -398
- package/dist/runtime.esm.js.map +1 -1
- package/dist/utils/cache.d.ts +2 -1
- package/dist/utils/cache.js +27 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +16 -15
- package/dist/utils/index.js +95 -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 +20 -10
- package/dist/interface/element.d.ts +0 -4
- package/dist/interface/event-target.d.ts +0 -10
- package/dist/interface/event.d.ts +0 -15
- package/dist/interface/hydrate.d.ts +0 -29
- package/dist/interface/index.d.ts +0 -7
- package/dist/interface/node.d.ts +0 -7
- package/dist/interface/utils.d.ts +0 -2
package/dist/dom/svg.d.ts
CHANGED
package/dist/dom/svg.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg.js","sources":["../../src/dom/svg.ts"],"sourcesContent":["import { TaroElement } from './element'\n\n// for Vue3\nexport class SVGElement extends TaroElement {}\n"],"names":[],"mappings":";;AAEA;AACM,MAAO,UAAW,SAAQ,WAAW,CAAA;AAAG;;;;"}
|
package/dist/dom/text.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TaroNode } from
|
|
2
|
-
import { NodeType } from
|
|
3
|
-
|
|
1
|
+
import { TaroNode } from "./node.js";
|
|
2
|
+
import { NodeType } from "../node_types-9ac5b4dd.js";
|
|
3
|
+
declare class TaroText extends TaroNode {
|
|
4
4
|
_value: string;
|
|
5
5
|
nodeType: NodeType;
|
|
6
6
|
nodeName: string;
|
|
@@ -12,3 +12,4 @@ export declare class TaroText extends TaroNode {
|
|
|
12
12
|
set data(text: string);
|
|
13
13
|
get data(): string;
|
|
14
14
|
}
|
|
15
|
+
export { TaroText };
|
package/dist/dom/text.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MutationObserver } from '../dom-external/mutation-observer/index.js';
|
|
2
|
+
import { TaroNode } from './node.js';
|
|
3
|
+
|
|
4
|
+
class TaroText extends TaroNode {
|
|
5
|
+
constructor(value) {
|
|
6
|
+
super();
|
|
7
|
+
this.nodeType = 3 /* NodeType.TEXT_NODE */;
|
|
8
|
+
this.nodeName = '#text';
|
|
9
|
+
this._value = value;
|
|
10
|
+
}
|
|
11
|
+
set textContent(text) {
|
|
12
|
+
MutationObserver.record({
|
|
13
|
+
target: this,
|
|
14
|
+
type: "characterData" /* MutationRecordType.CHARACTER_DATA */,
|
|
15
|
+
oldValue: this._value
|
|
16
|
+
});
|
|
17
|
+
this._value = text;
|
|
18
|
+
this.enqueueUpdate({
|
|
19
|
+
path: `${this._path}.${"v" /* Shortcuts.Text */}`,
|
|
20
|
+
value: text
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get textContent() {
|
|
24
|
+
return this._value;
|
|
25
|
+
}
|
|
26
|
+
set nodeValue(text) {
|
|
27
|
+
this.textContent = text;
|
|
28
|
+
}
|
|
29
|
+
get nodeValue() {
|
|
30
|
+
return this._value;
|
|
31
|
+
}
|
|
32
|
+
set data(text) {
|
|
33
|
+
this.textContent = text;
|
|
34
|
+
}
|
|
35
|
+
get data() {
|
|
36
|
+
return this._value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { TaroText };
|
|
41
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sources":["../../src/dom/text.ts"],"sourcesContent":["import { Shortcuts } from '@tarojs/shared'\n\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroNode } from './node'\nimport { NodeType } from './node_types'\n\nexport class TaroText extends TaroNode {\n public _value: string\n public nodeType = NodeType.TEXT_NODE\n public nodeName = '#text'\n\n constructor (value) {\n super()\n this._value = value\n }\n\n public set textContent (text: string) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.CHARACTER_DATA,\n oldValue: this._value\n })\n this._value = text\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.Text}`,\n value: text\n })\n }\n\n public get textContent (): string {\n return this._value\n }\n\n public set nodeValue (text: string) {\n this.textContent = text\n }\n\n public get nodeValue (): string {\n return this._value\n }\n\n public set data (text: string) {\n this.textContent = text\n }\n\n public get data (): string {\n return this._value\n }\n}\n"],"names":[],"mappings":";;;AAMM,MAAO,QAAS,SAAQ,QAAQ,CAAA;AAKpC,IAAA,WAAA,CAAa,KAAK,EAAA;AAChB,QAAA,KAAK,EAAE,CAAA;AAJF,QAAA,IAAA,CAAA,QAAQ,GAAqB,CAAA,0BAAA;QAC7B,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAA;AAIvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;KACpB;IAED,IAAW,WAAW,CAAE,IAAY,EAAA;QAClC,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAmC,eAAA;YACvC,QAAQ,EAAE,IAAI,CAAC,MAAM;AACtB,SAAA,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,yBAAgB,CAAA;AACvC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,SAAS,CAAE,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,IAAI,CAAE,IAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;AACF;;;;"}
|
package/dist/dom/transfer.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { TaroElement } from
|
|
2
|
-
|
|
1
|
+
import { TaroElement } from "./element.js";
|
|
2
|
+
declare class TransferElement extends TaroElement {
|
|
3
3
|
dataName: string;
|
|
4
4
|
isTransferElement: boolean;
|
|
5
5
|
constructor(dataName: string);
|
|
6
6
|
get _path(): string;
|
|
7
7
|
}
|
|
8
|
+
export { TransferElement };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TaroElement } from './element.js';
|
|
2
|
+
|
|
3
|
+
class TransferElement extends TaroElement {
|
|
4
|
+
constructor(dataName) {
|
|
5
|
+
super();
|
|
6
|
+
this.dataName = dataName;
|
|
7
|
+
this.isTransferElement = true;
|
|
8
|
+
}
|
|
9
|
+
get _path() {
|
|
10
|
+
return this.dataName;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { TransferElement };
|
|
15
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sources":["../../src/dom/transfer.ts"],"sourcesContent":["import { TaroElement } from './element'\n\nexport class TransferElement extends TaroElement {\n public isTransferElement = true\n\n constructor (public dataName: string) {\n super()\n }\n\n public get _path () {\n return this.dataName\n }\n}\n"],"names":[],"mappings":";;AAEM,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAG9C,IAAA,WAAA,CAAoB,QAAgB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAA;QADW,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAF7B,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAA;KAI9B;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAA;KACrB;AACF;;;;"}
|
package/dist/dom/tree.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TaroElement } from "./element.js";
|
|
2
2
|
type Filter = (element: TaroElement) => boolean;
|
|
3
|
-
|
|
4
|
-
export {};
|
|
3
|
+
declare function treeToArray(root: TaroElement, predict?: Filter): TaroElement[];
|
|
4
|
+
export { treeToArray };
|
package/dist/dom/tree.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function returnTrue() {
|
|
2
|
+
return true;
|
|
3
|
+
}
|
|
4
|
+
function treeToArray(root, predict) {
|
|
5
|
+
const array = [];
|
|
6
|
+
const filter = predict !== null && predict !== void 0 ? predict : returnTrue;
|
|
7
|
+
let object = root;
|
|
8
|
+
while (object) {
|
|
9
|
+
if (object.nodeType === 1 /* NodeType.ELEMENT_NODE */ && filter(object)) {
|
|
10
|
+
array.push(object);
|
|
11
|
+
}
|
|
12
|
+
object = following(object, root);
|
|
13
|
+
}
|
|
14
|
+
return array;
|
|
15
|
+
}
|
|
16
|
+
function following(el, root) {
|
|
17
|
+
const firstChild = el.firstChild;
|
|
18
|
+
const isElmentTypeValid = el.nodeType === 1 /* NodeType.ELEMENT_NODE */ || el.nodeType === 9 /* NodeType.DOCUMENT_NODE */;
|
|
19
|
+
// 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了
|
|
20
|
+
if (firstChild && isElmentTypeValid) {
|
|
21
|
+
return firstChild;
|
|
22
|
+
}
|
|
23
|
+
let current = el;
|
|
24
|
+
do {
|
|
25
|
+
if (current === root) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const nextSibling = current.nextSibling;
|
|
29
|
+
if (nextSibling) {
|
|
30
|
+
return nextSibling;
|
|
31
|
+
}
|
|
32
|
+
current = current.parentElement;
|
|
33
|
+
} while (current);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { treeToArray };
|
|
38
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sources":["../../src/dom/tree.ts"],"sourcesContent":["import { NodeType } from './node_types'\n\nimport type { TaroElement } from './element'\n\ntype Filter = (element: TaroElement) => boolean\n\nfunction returnTrue () {\n return true\n}\n\nexport function treeToArray (root: TaroElement, predict?: Filter): TaroElement[] {\n const array: TaroElement[] = []\n const filter = predict ?? returnTrue\n\n let object: TaroElement | null = root\n\n while (object) {\n if (object.nodeType === NodeType.ELEMENT_NODE && filter(object)) {\n array.push(object)\n }\n\n object = following(object, root)\n }\n\n return array\n}\n\nfunction following (el: TaroElement, root: TaroElement): TaroElement | null {\n const firstChild = el.firstChild\n const isElmentTypeValid = el.nodeType === NodeType.ELEMENT_NODE || el.nodeType === NodeType.DOCUMENT_NODE\n\n // 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了\n if (firstChild && isElmentTypeValid) {\n return firstChild as TaroElement\n }\n\n let current: TaroElement | null = el\n\n do {\n if (current === root) {\n return null\n }\n\n const nextSibling = current.nextSibling\n\n if (nextSibling) {\n return nextSibling as TaroElement\n }\n current = current.parentElement\n } while (current)\n\n return null\n}\n"],"names":[],"mappings":"AAMA,SAAS,UAAU,GAAA;AACjB,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEe,SAAA,WAAW,CAAE,IAAiB,EAAE,OAAgB,EAAA;IAC9D,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,UAAU,CAAA;IAEpC,IAAI,MAAM,GAAuB,IAAI,CAAA;AAErC,IAAA,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAA,CAAA,gCAA8B,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACnB,SAAA;AAED,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACjC,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAE,EAAe,EAAE,IAAiB,EAAA;AACpD,IAAA,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAA;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,KAA0B,CAAA,gCAAI,EAAE,CAAC,QAAQ,KAAA,CAAA,8BAA2B;;IAGzG,IAAI,UAAU,IAAI,iBAAiB,EAAE;AACnC,QAAA,OAAO,UAAyB,CAAA;AACjC,KAAA;IAED,IAAI,OAAO,GAAuB,EAAE,CAAA;IAEpC,GAAG;QACD,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;AAEvC,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,WAA0B,CAAA;AAClC,SAAA;AACD,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;AAChC,KAAA,QAAQ,OAAO,EAAC;AAEjB,IAAA,OAAO,IAAI,CAAA;AACb;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { TaroElement } from "../dom/element.js";
|
|
2
|
+
declare function getBoundingClientRectImpl(this: TaroElement): Promise<null>;
|
|
3
|
+
declare function getTemplateContent(ctx: TaroElement): TaroElement | undefined;
|
|
4
|
+
export { getBoundingClientRectImpl, getTemplateContent };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DOCUMENT_FRAGMENT } from '../constants/index.js';
|
|
2
|
+
import { options } from '../options.js';
|
|
3
|
+
|
|
4
|
+
function getBoundingClientRectImpl() {
|
|
5
|
+
if (!options.miniGlobal)
|
|
6
|
+
return Promise.resolve(null);
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
const query = options.miniGlobal.createSelectorQuery();
|
|
9
|
+
query.select(`#${this.uid}`).boundingClientRect(res => {
|
|
10
|
+
resolve(res);
|
|
11
|
+
}).exec();
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function getTemplateContent(ctx) {
|
|
15
|
+
if (ctx.nodeName === 'template') {
|
|
16
|
+
const document = ctx.ownerDocument;
|
|
17
|
+
const content = document.createElement(DOCUMENT_FRAGMENT);
|
|
18
|
+
content.childNodes = ctx.childNodes;
|
|
19
|
+
ctx.childNodes = [content];
|
|
20
|
+
content.parentNode = ctx;
|
|
21
|
+
content.childNodes.forEach(nodes => {
|
|
22
|
+
nodes.parentNode = content;
|
|
23
|
+
});
|
|
24
|
+
return content;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { getBoundingClientRectImpl, getTemplateContent };
|
|
29
|
+
//# sourceMappingURL=element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.js","sources":["../../src/dom-external/element.ts"],"sourcesContent":["import { DOCUMENT_FRAGMENT } from '../constants'\nimport { options } from '../options'\n\nimport type { TaroElement } from '../dom/element'\n\nexport function getBoundingClientRectImpl (this: TaroElement): Promise<null> {\n if (!options.miniGlobal) return Promise.resolve(null)\n return new Promise(resolve => {\n const query = options.miniGlobal.createSelectorQuery()\n query.select(`#${this.uid}`).boundingClientRect(res => {\n resolve(res)\n }).exec()\n })\n}\n\nexport function getTemplateContent (ctx: TaroElement): TaroElement | undefined {\n if (ctx.nodeName === 'template') {\n const document = ctx.ownerDocument\n const content: TaroElement = document.createElement(DOCUMENT_FRAGMENT)\n content.childNodes = ctx.childNodes\n ctx.childNodes = [content]\n content.parentNode = ctx\n content.childNodes.forEach(nodes => {\n nodes.parentNode = content\n })\n return content\n }\n}\n"],"names":[],"mappings":";;;SAKgB,yBAAyB,GAAA;IACvC,IAAI,CAAC,OAAO,CAAC,UAAU;AAAE,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACrD,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAA;AACtD,QAAA,KAAK,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,kBAAkB,CAAC,GAAG,IAAG;YACpD,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,SAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACJ,CAAC;AAEK,SAAU,kBAAkB,CAAE,GAAgB,EAAA;AAClD,IAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAA;QAClC,MAAM,OAAO,GAAgB,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;AACtE,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;AACnC,QAAA,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAA;AACxB,QAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAG;AACjC,YAAA,KAAK,CAAC,UAAU,GAAG,OAAO,CAAA;AAC5B,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,CAAA;AACf,KAAA;AACH;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TaroElement } from '../dom/element.js';
|
|
2
|
+
import { TaroNode } from '../dom/node.js';
|
|
3
|
+
import { setInnerHTML } from './inner-html/html.js';
|
|
4
|
+
import { getBoundingClientRectImpl, getTemplateContent } from './element.js';
|
|
5
|
+
import { insertAdjacentHTML, cloneNode, contains } from './node.js';
|
|
6
|
+
|
|
7
|
+
if (process.env.TARO_PLATFORM !== 'web') {
|
|
8
|
+
if (ENABLE_INNER_HTML) {
|
|
9
|
+
TaroNode.extend('innerHTML', {
|
|
10
|
+
set(html) {
|
|
11
|
+
setInnerHTML.call(this, this, html);
|
|
12
|
+
},
|
|
13
|
+
get() {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
if (ENABLE_ADJACENT_HTML) {
|
|
18
|
+
TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (ENABLE_CLONE_NODE) {
|
|
22
|
+
TaroNode.extend('cloneNode', cloneNode);
|
|
23
|
+
}
|
|
24
|
+
if (ENABLE_CONTAINS) {
|
|
25
|
+
TaroNode.extend('contains', contains);
|
|
26
|
+
}
|
|
27
|
+
if (ENABLE_SIZE_APIS) {
|
|
28
|
+
TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl);
|
|
29
|
+
}
|
|
30
|
+
if (ENABLE_TEMPLATE_CONTENT) {
|
|
31
|
+
TaroElement.extend('content', {
|
|
32
|
+
get() {
|
|
33
|
+
return getTemplateContent(this);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/dom-external/index.ts"],"sourcesContent":["import { TaroElement } from '../dom/element'\nimport { TaroNode } from '../dom/node'\nimport { setInnerHTML } from '../dom-external/inner-html/html'\nimport { getBoundingClientRectImpl, getTemplateContent } from './element'\nimport { cloneNode, contains, insertAdjacentHTML } from './node'\n\ndeclare const ENABLE_INNER_HTML: boolean\ndeclare const ENABLE_ADJACENT_HTML: boolean\ndeclare const ENABLE_CLONE_NODE: boolean\ndeclare const ENABLE_CONTAINS: boolean\n\ndeclare const ENABLE_SIZE_APIS: boolean\ndeclare const ENABLE_TEMPLATE_CONTENT: boolean\n\nif (process.env.TARO_PLATFORM !== 'web') {\n if (ENABLE_INNER_HTML) {\n TaroNode.extend('innerHTML', {\n set (html: string) {\n setInnerHTML.call(this, this, html)\n },\n get (): string {\n return ''\n }\n })\n\n if (ENABLE_ADJACENT_HTML) {\n TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML)\n }\n }\n\n if (ENABLE_CLONE_NODE) {\n TaroNode.extend('cloneNode', cloneNode)\n }\n\n if (ENABLE_CONTAINS) {\n TaroNode.extend('contains', contains)\n }\n\n if (ENABLE_SIZE_APIS) {\n TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl)\n }\n\n if (ENABLE_TEMPLATE_CONTENT) {\n TaroElement.extend('content', {\n get () {\n return getTemplateContent(this)\n }\n })\n }\n}\n"],"names":[],"mappings":";;;;;;AAcA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE;AACvC,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,YAAA,GAAG,CAAE,IAAY,EAAA;gBACf,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aACpC;YACD,GAAG,GAAA;AACD,gBAAA,OAAO,EAAE,CAAA;aACV;AACF,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;AAC1D,SAAA;AACF,KAAA;AAED,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AACxC,KAAA;AAED,IAAA,IAAI,eAAe,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,IAAI,gBAAgB,EAAE;AACpB,QAAA,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAA;AACvE,KAAA;AAED,IAAA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5B,GAAG,GAAA;AACD,gBAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;aAChC;AACF,SAAA,CAAC,CAAA;AACH,KAAA;AACF"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { TaroNode } from "../../dom/node.js";
|
|
2
|
+
declare function setInnerHTML(element: TaroNode, html: string): void;
|
|
3
|
+
export { setInnerHTML };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { options } from '../../options.js';
|
|
2
|
+
import { parser } from './parser.js';
|
|
3
|
+
|
|
4
|
+
options.html = {
|
|
5
|
+
skipElements: new Set(['style', 'script']),
|
|
6
|
+
voidElements: new Set([
|
|
7
|
+
'!doctype', 'area', 'base', 'br', 'col', 'command',
|
|
8
|
+
'embed', 'hr', 'img', 'input', 'keygen', 'link',
|
|
9
|
+
'meta', 'param', 'source', 'track', 'wbr'
|
|
10
|
+
]),
|
|
11
|
+
closingElements: new Set([
|
|
12
|
+
'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',
|
|
13
|
+
'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'
|
|
14
|
+
]),
|
|
15
|
+
renderHTMLTag: false
|
|
16
|
+
};
|
|
17
|
+
function setInnerHTML(element, html) {
|
|
18
|
+
while (element.firstChild) {
|
|
19
|
+
element.removeChild(element.firstChild);
|
|
20
|
+
}
|
|
21
|
+
const children = parser(html, element.ownerDocument);
|
|
22
|
+
for (let i = 0; i < children.length; i++) {
|
|
23
|
+
element.appendChild(children[i]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { setInnerHTML };
|
|
28
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sources":["../../../src/dom-external/inner-html/html.ts"],"sourcesContent":["import { options } from '../../options'\nimport { parser } from './parser'\n\nimport type { TaroNode } from '../../dom/node'\n\noptions.html = {\n skipElements: new Set(['style', 'script']),\n voidElements: new Set([\n '!doctype', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link',\n 'meta', 'param', 'source', 'track', 'wbr'\n ]),\n closingElements: new Set([\n 'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n ]),\n renderHTMLTag: false\n}\n\nexport function setInnerHTML (element: TaroNode, html: string) {\n while (element.firstChild) {\n element.removeChild(element.firstChild)\n }\n const children = parser(html, element.ownerDocument)\n\n for (let i = 0; i < children.length; i++) {\n element.appendChild(children[i])\n }\n}\n"],"names":[],"mappings":";;;AAKA,OAAO,CAAC,IAAI,GAAG;IACb,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,YAAY,EAAE,IAAI,GAAG,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;QAClD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AAC/C,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;KAC1C,CAAC;IACF,eAAe,EAAE,IAAI,GAAG,CAAC;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;QACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;KACxD,CAAC;AACF,IAAA,aAAa,EAAE,KAAK;CACrB,CAAA;AAEe,SAAA,YAAY,CAAE,OAAiB,EAAE,IAAY,EAAA;IAC3D,OAAO,OAAO,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACxC,KAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC,KAAA;AACH;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { TaroDocument } from "../../dom/document.js";
|
|
2
|
+
import { TaroElement } from "../../dom/element.js";
|
|
3
3
|
interface Node {
|
|
4
4
|
type: string;
|
|
5
5
|
}
|
|
@@ -7,19 +7,19 @@ interface Comment extends Node {
|
|
|
7
7
|
type: 'comment';
|
|
8
8
|
content: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
interface Text extends Node {
|
|
11
11
|
type: 'text';
|
|
12
12
|
content: string;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
interface Element extends Node {
|
|
15
15
|
type: 'element';
|
|
16
16
|
tagName: string;
|
|
17
17
|
children: ChildNode[];
|
|
18
18
|
attributes: string[];
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
interface ParsedTaroElement extends TaroElement {
|
|
21
21
|
h5tagName?: string;
|
|
22
22
|
}
|
|
23
23
|
type ChildNode = Comment | Text | Element;
|
|
24
|
-
|
|
25
|
-
export {};
|
|
24
|
+
declare function parser(html: string, document: TaroDocument): (import("../../index.js").TaroText | TaroElement)[];
|
|
25
|
+
export { Text, Element, ParsedTaroElement, parser };
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { isFunction } from '@tarojs/shared';
|
|
2
|
+
import { options } from '../../options.js';
|
|
3
|
+
import { Scaner } from './scaner.js';
|
|
4
|
+
import StyleTagParser from './style.js';
|
|
5
|
+
import { specialMiniElements, isMiniElements, isBlockElements, isInlineElements } from './tags.js';
|
|
6
|
+
import { unquote } from './utils.js';
|
|
7
|
+
|
|
8
|
+
const closingTagAncestorBreakers = {
|
|
9
|
+
li: ['ul', 'ol', 'menu'],
|
|
10
|
+
dt: ['dl'],
|
|
11
|
+
dd: ['dl'],
|
|
12
|
+
tbody: ['table'],
|
|
13
|
+
thead: ['table'],
|
|
14
|
+
tfoot: ['table'],
|
|
15
|
+
tr: ['table'],
|
|
16
|
+
td: ['table']
|
|
17
|
+
};
|
|
18
|
+
function hasTerminalParent(tagName, stack) {
|
|
19
|
+
const tagParents = closingTagAncestorBreakers[tagName];
|
|
20
|
+
if (tagParents) {
|
|
21
|
+
let currentIndex = stack.length - 1;
|
|
22
|
+
while (currentIndex >= 0) {
|
|
23
|
+
const parentTagName = stack[currentIndex].tagName;
|
|
24
|
+
if (parentTagName === tagName) {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
if (tagParents && tagParents.includes(parentTagName)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
currentIndex--;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
function getTagName(tag) {
|
|
36
|
+
if (options.html.renderHTMLTag) {
|
|
37
|
+
return tag;
|
|
38
|
+
}
|
|
39
|
+
if (specialMiniElements[tag]) {
|
|
40
|
+
return specialMiniElements[tag];
|
|
41
|
+
}
|
|
42
|
+
else if (isMiniElements(tag)) {
|
|
43
|
+
return tag;
|
|
44
|
+
}
|
|
45
|
+
else if (isBlockElements(tag)) {
|
|
46
|
+
return 'view';
|
|
47
|
+
}
|
|
48
|
+
else if (isInlineElements(tag)) {
|
|
49
|
+
return 'text';
|
|
50
|
+
}
|
|
51
|
+
return 'view';
|
|
52
|
+
}
|
|
53
|
+
function splitEqual(str) {
|
|
54
|
+
const sep = '=';
|
|
55
|
+
const idx = str.indexOf(sep);
|
|
56
|
+
if (idx === -1)
|
|
57
|
+
return [str];
|
|
58
|
+
const key = str.slice(0, idx).trim();
|
|
59
|
+
const value = str.slice(idx + sep.length).trim();
|
|
60
|
+
return [key, value];
|
|
61
|
+
}
|
|
62
|
+
function format(children, document, styleOptions, parent) {
|
|
63
|
+
return children
|
|
64
|
+
.filter(child => {
|
|
65
|
+
// 过滤注释和空文本节点
|
|
66
|
+
if (child.type === 'comment') {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
else if (child.type === 'text') {
|
|
70
|
+
return child.content !== '';
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
})
|
|
74
|
+
.map((child) => {
|
|
75
|
+
// 文本节点
|
|
76
|
+
if (child.type === 'text') {
|
|
77
|
+
let text = document.createTextNode(child.content);
|
|
78
|
+
if (isFunction(options.html.transformText)) {
|
|
79
|
+
text = options.html.transformText(text, child);
|
|
80
|
+
}
|
|
81
|
+
parent === null || parent === void 0 ? void 0 : parent.appendChild(text);
|
|
82
|
+
return text;
|
|
83
|
+
}
|
|
84
|
+
const el = document.createElement(getTagName(child.tagName));
|
|
85
|
+
el.h5tagName = child.tagName;
|
|
86
|
+
parent === null || parent === void 0 ? void 0 : parent.appendChild(el);
|
|
87
|
+
if (!options.html.renderHTMLTag) {
|
|
88
|
+
el.className = `h5-${child.tagName}`;
|
|
89
|
+
}
|
|
90
|
+
for (let i = 0; i < child.attributes.length; i++) {
|
|
91
|
+
const attr = child.attributes[i];
|
|
92
|
+
const [key, value] = splitEqual(attr);
|
|
93
|
+
if (key === 'class') {
|
|
94
|
+
el.className += ' ' + unquote(value);
|
|
95
|
+
}
|
|
96
|
+
else if (key[0] === 'o' && key[1] === 'n') {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
el.setAttribute(key, value == null ? true : unquote(value));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const { styleTagParser, descendantList } = styleOptions;
|
|
104
|
+
const list = descendantList.slice();
|
|
105
|
+
const style = styleTagParser.matchStyle(child.tagName, el, list);
|
|
106
|
+
el.setAttribute('style', style + el.style.cssText);
|
|
107
|
+
// console.log('style, ', style)
|
|
108
|
+
format(child.children, document, {
|
|
109
|
+
styleTagParser,
|
|
110
|
+
descendantList: list
|
|
111
|
+
}, el);
|
|
112
|
+
if (isFunction(options.html.transformElement)) {
|
|
113
|
+
return options.html.transformElement(el, child);
|
|
114
|
+
}
|
|
115
|
+
return el;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function parser(html, document) {
|
|
119
|
+
const styleTagParser = new StyleTagParser();
|
|
120
|
+
html = styleTagParser.extractStyle(html);
|
|
121
|
+
const tokens = new Scaner(html).scan();
|
|
122
|
+
const root = { tagName: '', children: [], type: 'element', attributes: [] };
|
|
123
|
+
const state = { tokens, options, cursor: 0, stack: [root] };
|
|
124
|
+
parse(state);
|
|
125
|
+
return format(root.children, document, {
|
|
126
|
+
styleTagParser,
|
|
127
|
+
descendantList: Array(styleTagParser.styles.length).fill(0)
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function parse(state) {
|
|
131
|
+
const { tokens, stack } = state;
|
|
132
|
+
let { cursor } = state;
|
|
133
|
+
const len = tokens.length;
|
|
134
|
+
let nodes = stack[stack.length - 1].children;
|
|
135
|
+
while (cursor < len) {
|
|
136
|
+
const token = tokens[cursor];
|
|
137
|
+
if (token.type !== 'tag-start') {
|
|
138
|
+
// comment or text
|
|
139
|
+
nodes.push(token);
|
|
140
|
+
cursor++;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const tagToken = tokens[++cursor];
|
|
144
|
+
cursor++;
|
|
145
|
+
const tagName = tagToken.content.toLowerCase();
|
|
146
|
+
if (token.close) {
|
|
147
|
+
let index = stack.length;
|
|
148
|
+
let shouldRewind = false;
|
|
149
|
+
while (--index > -1) {
|
|
150
|
+
if (stack[index].tagName === tagName) {
|
|
151
|
+
shouldRewind = true;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
while (cursor < len) {
|
|
156
|
+
const endToken = tokens[cursor];
|
|
157
|
+
if (endToken.type !== 'tag-end')
|
|
158
|
+
break;
|
|
159
|
+
cursor++;
|
|
160
|
+
}
|
|
161
|
+
if (shouldRewind) {
|
|
162
|
+
stack.splice(index);
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const isClosingTag = options.html.closingElements.has(tagName);
|
|
170
|
+
let shouldRewindToAutoClose = isClosingTag;
|
|
171
|
+
if (shouldRewindToAutoClose) {
|
|
172
|
+
shouldRewindToAutoClose = !hasTerminalParent(tagName, stack);
|
|
173
|
+
}
|
|
174
|
+
if (shouldRewindToAutoClose) {
|
|
175
|
+
let currentIndex = stack.length - 1;
|
|
176
|
+
while (currentIndex > 0) {
|
|
177
|
+
if (tagName === stack[currentIndex].tagName) {
|
|
178
|
+
stack.splice(currentIndex);
|
|
179
|
+
const previousIndex = currentIndex - 1;
|
|
180
|
+
nodes = stack[previousIndex].children;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
currentIndex = currentIndex - 1;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const attributes = [];
|
|
187
|
+
let attrToken;
|
|
188
|
+
while (cursor < len) {
|
|
189
|
+
attrToken = tokens[cursor];
|
|
190
|
+
if (attrToken.type === 'tag-end')
|
|
191
|
+
break;
|
|
192
|
+
attributes.push(attrToken.content);
|
|
193
|
+
cursor++;
|
|
194
|
+
}
|
|
195
|
+
cursor++;
|
|
196
|
+
const children = [];
|
|
197
|
+
const element = {
|
|
198
|
+
type: 'element',
|
|
199
|
+
tagName: tagToken.content,
|
|
200
|
+
attributes,
|
|
201
|
+
children
|
|
202
|
+
};
|
|
203
|
+
nodes.push(element);
|
|
204
|
+
const hasChildren = !(attrToken.close || options.html.voidElements.has(tagName));
|
|
205
|
+
if (hasChildren) {
|
|
206
|
+
stack.push({ tagName, children });
|
|
207
|
+
const innerState = { tokens, cursor, stack };
|
|
208
|
+
parse(innerState);
|
|
209
|
+
cursor = innerState.cursor;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
state.cursor = cursor;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export { parser };
|
|
216
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sources":["../../../src/dom-external/inner-html/parser.ts"],"sourcesContent":["import { isFunction } from '@tarojs/shared'\n\nimport { options } from '../../options'\nimport { Scaner, Token } from './scaner'\nimport StyleTagParser from './style'\nimport { isBlockElements, isInlineElements, isMiniElements, specialMiniElements } from './tags'\nimport { unquote } from './utils'\n\nimport type { TaroDocument } from '../../dom/document'\nimport type { TaroElement } from '../../dom/element'\n\ninterface State {\n tokens: Token[]\n cursor: number\n stack: Element[]\n}\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n}\n\ninterface Node {\n type: string\n}\n\ninterface Comment extends Node {\n type: 'comment'\n content: string\n}\n\nexport interface Text extends Node {\n type: 'text'\n content: string\n}\n\nexport interface Element extends Node {\n type: 'element'\n tagName: string\n children: ChildNode[]\n attributes: string[]\n}\n\nexport interface ParsedTaroElement extends TaroElement{\n h5tagName?: string\n}\n\ntype ChildNode = Comment | Text | Element\n\nfunction hasTerminalParent (tagName: string, stack: Element[]) {\n const tagParents: undefined | string[] = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) {\n break\n }\n if (tagParents && tagParents.includes(parentTagName!)) {\n return true\n }\n currentIndex--\n }\n }\n return false\n}\n\nfunction getTagName (tag: string) {\n if (options.html!.renderHTMLTag) {\n return tag\n }\n\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag]\n } else if (isMiniElements(tag)) {\n return tag\n } else if (isBlockElements(tag)) {\n return 'view'\n } else if (isInlineElements(tag)) {\n return 'text'\n }\n\n return 'view'\n}\n\nfunction splitEqual (str: string) {\n const sep = '='\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n const key = str.slice(0, idx).trim()\n const value = str.slice(idx + sep.length).trim()\n return [key, value]\n}\n\nfunction format (\n children: ChildNode[],\n document: TaroDocument,\n styleOptions: {\n styleTagParser: StyleTagParser\n descendantList: number[]\n },\n parent?: TaroElement\n) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false\n } else if (child.type === 'text') {\n return child.content !== ''\n }\n return true\n })\n .map((child: Text | Element) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content)\n if (isFunction(options.html!.transformText)) {\n text = options.html!.transformText(text, child)\n }\n parent?.appendChild(text)\n return text\n }\n\n const el: ParsedTaroElement = document.createElement(getTagName(child.tagName))\n el.h5tagName = child.tagName\n\n parent?.appendChild(el)\n\n if (!options.html!.renderHTMLTag) {\n el.className = `h5-${child.tagName}`\n }\n\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i]\n const [key, value] = splitEqual(attr)\n if (key === 'class') {\n el.className += ' ' + unquote(value)\n } else if (key[0] === 'o' && key[1] === 'n') {\n continue\n } else {\n el.setAttribute(key, value == null ? true : unquote(value))\n }\n }\n\n const { styleTagParser, descendantList } = styleOptions\n const list = descendantList.slice()\n const style = styleTagParser.matchStyle(child.tagName, el, list)\n\n el.setAttribute('style', style + el.style.cssText)\n // console.log('style, ', style)\n\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el)\n\n if (isFunction(options.html!.transformElement)) {\n return options.html!.transformElement(el, child)\n }\n\n return el\n })\n}\n\nexport function parser (html: string, document: TaroDocument) {\n const styleTagParser = new StyleTagParser()\n html = styleTagParser.extractStyle(html)\n\n const tokens = new Scaner(html).scan()\n\n const root: Element = { tagName: '', children: [], type: 'element', attributes: [] }\n\n const state = { tokens, options, cursor: 0, stack: [root] }\n parse(state)\n\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n })\n}\n\nfunction parse (state: State) {\n const { tokens, stack } = state\n let { cursor } = state\n\n const len = tokens.length\n\n let nodes = stack[stack.length - 1].children\n\n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token as ChildNode)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor]\n cursor++\n const tagName = tagToken.content!.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor]\n if (endToken.type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n stack.splice(index)\n break\n } else {\n continue\n }\n }\n\n const isClosingTag = options.html!.closingElements.has(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes: string[] = []\n let attrToken: Token\n while (cursor < len) {\n attrToken = tokens[cursor]\n if (attrToken.type === 'tag-end') break\n attributes.push(attrToken.content!)\n cursor++\n }\n\n cursor++\n const children: Element[] = []\n const element: Element = {\n type: 'element',\n tagName: tagToken.content!,\n attributes,\n children\n }\n nodes.push(element)\n\n const hasChildren = !(attrToken!.close || options.html!.voidElements.has(tagName))\n if (hasChildren) {\n stack.push({ tagName, children } as any)\n const innerState: State = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n\n state.cursor = cursor\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ interface Position {
|
|
|
3
3
|
column: number;
|
|
4
4
|
line: number;
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
interface Token {
|
|
7
7
|
type: string;
|
|
8
8
|
content?: string;
|
|
9
9
|
position?: {
|
|
@@ -12,7 +12,7 @@ export interface Token {
|
|
|
12
12
|
};
|
|
13
13
|
close?: boolean;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
declare class Scaner {
|
|
16
16
|
private tokens;
|
|
17
17
|
private position;
|
|
18
18
|
private html;
|
|
@@ -27,4 +27,4 @@ export declare class Scaner {
|
|
|
27
27
|
private scanAttrs;
|
|
28
28
|
private scanSkipTag;
|
|
29
29
|
}
|
|
30
|
-
export {};
|
|
30
|
+
export { Token, Scaner };
|