@tarojs/runtime 3.7.0-canary.6 → 3.8.0-canary.1

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 (177) hide show
  1. package/LICENSE +14 -0
  2. package/dist/bom/URL.d.ts +54 -0
  3. package/dist/bom/URL.js +221 -0
  4. package/dist/bom/URL.js.map +1 -0
  5. package/dist/bom/URLSearchParams.d.ts +2 -0
  6. package/dist/bom/URLSearchParams.js +131 -0
  7. package/dist/bom/URLSearchParams.js.map +1 -0
  8. package/dist/bom/document.d.ts +3 -0
  9. package/dist/bom/document.js +39 -0
  10. package/dist/bom/document.js.map +1 -0
  11. package/dist/bom/getComputedStyle.d.ts +5 -0
  12. package/dist/bom/getComputedStyle.js +8 -0
  13. package/dist/bom/getComputedStyle.js.map +1 -0
  14. package/dist/bom/history.d.ts +32 -0
  15. package/dist/bom/history.js +121 -0
  16. package/dist/bom/history.js.map +1 -0
  17. package/dist/bom/location.d.ts +39 -0
  18. package/dist/bom/location.js +240 -0
  19. package/dist/bom/location.js.map +1 -0
  20. package/dist/bom/navigator.d.ts +2 -0
  21. package/dist/bom/navigator.js +24 -0
  22. package/dist/bom/navigator.js.map +1 -0
  23. package/dist/bom/raf.d.ts +4 -0
  24. package/dist/bom/raf.js +33 -0
  25. package/dist/bom/raf.js.map +1 -0
  26. package/dist/bom/window.d.ts +25 -0
  27. package/dist/bom/window.js +92 -0
  28. package/dist/bom/window.js.map +1 -0
  29. package/dist/constants/index.d.ts +60 -0
  30. package/dist/constants/index.js +63 -0
  31. package/dist/constants/index.js.map +1 -0
  32. package/dist/current.d.ts +19 -0
  33. package/dist/current.js +9 -0
  34. package/dist/current.js.map +1 -0
  35. package/dist/dom/anchor-element.d.ts +14 -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 +17 -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 +25 -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 +40 -0
  45. package/dist/dom/element.js +318 -0
  46. package/dist/dom/element.js.map +1 -0
  47. package/dist/dom/event-source.d.ts +7 -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 +8 -0
  51. package/dist/dom/event-target.js +78 -0
  52. package/dist/dom/event-target.js.map +1 -0
  53. package/dist/dom/event.d.ts +24 -0
  54. package/dist/dom/event.js +152 -0
  55. package/dist/dom/event.js.map +1 -0
  56. package/dist/dom/form.d.ts +10 -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 +107 -0
  60. package/dist/dom/node.js +292 -0
  61. package/dist/dom/node.js.map +1 -0
  62. package/dist/dom/root.d.ts +16 -0
  63. package/dist/dom/root.js +169 -0
  64. package/dist/dom/root.js.map +1 -0
  65. package/dist/dom/style.d.ts +15 -0
  66. package/dist/dom/style.js +168 -0
  67. package/dist/dom/style.js.map +1 -0
  68. package/dist/dom/style_properties.d.ts +3 -0
  69. package/dist/dom/style_properties.js +186 -0
  70. package/dist/dom/style_properties.js.map +1 -0
  71. package/dist/dom/svg.d.ts +4 -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 +15 -0
  75. package/dist/dom/text.js +41 -0
  76. package/dist/dom/text.js.map +1 -0
  77. package/dist/dom/transfer.d.ts +8 -0
  78. package/dist/dom/transfer.js +15 -0
  79. package/dist/dom/transfer.js.map +1 -0
  80. package/dist/dom/tree.d.ts +4 -0
  81. package/dist/dom/tree.js +38 -0
  82. package/dist/dom/tree.js.map +1 -0
  83. package/dist/dom-external/element.d.ts +4 -0
  84. package/dist/dom-external/element.js +29 -0
  85. package/dist/dom-external/element.js.map +1 -0
  86. package/dist/dom-external/index.d.ts +1 -0
  87. package/dist/dom-external/index.js +38 -0
  88. package/dist/dom-external/index.js.map +1 -0
  89. package/dist/dom-external/inner-html/html.d.ts +3 -0
  90. package/dist/dom-external/inner-html/html.js +28 -0
  91. package/dist/dom-external/inner-html/html.js.map +1 -0
  92. package/dist/dom-external/inner-html/parser.d.ts +25 -0
  93. package/dist/dom-external/inner-html/parser.js +257 -0
  94. package/dist/dom-external/inner-html/parser.js.map +1 -0
  95. package/dist/dom-external/inner-html/scaner.d.ts +30 -0
  96. package/dist/dom-external/inner-html/scaner.js +304 -0
  97. package/dist/dom-external/inner-html/scaner.js.map +1 -0
  98. package/dist/dom-external/inner-html/style.d.ts +27 -0
  99. package/dist/dom-external/inner-html/style.js +235 -0
  100. package/dist/dom-external/inner-html/style.js.map +1 -0
  101. package/dist/dom-external/inner-html/tags.d.ts +14 -0
  102. package/dist/dom-external/inner-html/tags.js +41 -0
  103. package/dist/dom-external/inner-html/tags.js.map +1 -0
  104. package/dist/dom-external/inner-html/utils.d.ts +2 -0
  105. package/dist/dom-external/inner-html/utils.js +12 -0
  106. package/dist/dom-external/inner-html/utils.js.map +1 -0
  107. package/dist/dom-external/mutation-observer/implements.d.ts +71 -0
  108. package/dist/dom-external/mutation-observer/implements.js +108 -0
  109. package/dist/dom-external/mutation-observer/implements.js.map +1 -0
  110. package/dist/dom-external/mutation-observer/index.d.ts +12 -0
  111. package/dist/dom-external/mutation-observer/index.js +35 -0
  112. package/dist/dom-external/mutation-observer/index.js.map +1 -0
  113. package/dist/dom-external/node.d.ts +12 -0
  114. package/dist/dom-external/node.js +75 -0
  115. package/dist/dom-external/node.js.map +1 -0
  116. package/dist/dsl/common.d.ts +15 -0
  117. package/dist/dsl/common.js +337 -0
  118. package/dist/dsl/common.js.map +1 -0
  119. package/dist/emitter/emitter.d.ts +4 -0
  120. package/dist/emitter/emitter.js +7 -0
  121. package/dist/emitter/emitter.js.map +1 -0
  122. package/dist/env.d.ts +7 -0
  123. package/dist/env.js +9 -0
  124. package/dist/env.js.map +1 -0
  125. package/dist/hydrate.d.ts +11 -0
  126. package/dist/hydrate.js +91 -0
  127. package/dist/hydrate.js.map +1 -0
  128. package/dist/index-26658829.d.ts +23 -0
  129. package/dist/{runtime.cjs.d.ts → index.cjs.d.ts} +95 -88
  130. package/dist/{runtime.h5.js → index.cjs.js} +2276 -438
  131. package/dist/index.cjs.js.map +1 -0
  132. package/dist/index.d.ts +34 -0
  133. package/dist/index.js +33 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/instance-0f017c6e.d.ts +95 -0
  136. package/dist/next-tick.d.ts +3 -0
  137. package/dist/next-tick.js +47 -0
  138. package/dist/next-tick.js.map +1 -0
  139. package/dist/node_types-9ac5b4dd.d.ts +11 -0
  140. package/dist/options-0f017c6e.d.ts +17 -0
  141. package/dist/options.d.ts +3 -0
  142. package/dist/options.js +7 -0
  143. package/dist/options.js.map +1 -0
  144. package/dist/perf.d.ts +7 -0
  145. package/dist/perf.js +28 -0
  146. package/dist/perf.js.map +1 -0
  147. package/dist/polyfill/array.d.ts +3 -0
  148. package/dist/polyfill/array.js +56 -0
  149. package/dist/polyfill/array.js.map +1 -0
  150. package/dist/polyfill/index.d.ts +2 -0
  151. package/dist/polyfill/index.js +34 -0
  152. package/dist/polyfill/index.js.map +1 -0
  153. package/dist/polyfill/intersection-observer.d.ts +2 -0
  154. package/dist/polyfill/intersection-observer.js +599 -0
  155. package/dist/polyfill/intersection-observer.js.map +1 -0
  156. package/dist/polyfill/object.d.ts +4 -0
  157. package/dist/polyfill/object.js +102 -0
  158. package/dist/polyfill/object.js.map +1 -0
  159. package/dist/record-32b054d8.d.ts +25 -0
  160. package/dist/runtime.esm.d.ts +95 -88
  161. package/dist/runtime.esm.js +1267 -427
  162. package/dist/runtime.esm.js.map +1 -1
  163. package/dist/utils/cache.d.ts +13 -0
  164. package/dist/utils/cache.js +27 -0
  165. package/dist/utils/cache.js.map +1 -0
  166. package/dist/utils/index.d.ts +24 -0
  167. package/dist/utils/index.js +95 -0
  168. package/dist/utils/index.js.map +1 -0
  169. package/dist/utils/lodash.d.ts +2 -0
  170. package/dist/utils/lodash.js +22 -0
  171. package/dist/utils/lodash.js.map +1 -0
  172. package/dist/utils/router.d.ts +8 -0
  173. package/dist/utils/router.js +24 -0
  174. package/dist/utils/router.js.map +1 -0
  175. package/package.json +16 -11
  176. package/dist/runtime.cjs.js +0 -4614
  177. package/dist/runtime.h5.d.ts +0 -781
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style_properties.js","sources":["../../src/dom/style_properties.ts"],"sourcesContent":["/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\n\nconst WEBKIT = 'webkit'\n\nconst styleProperties = [\n 'all',\n 'appearance',\n 'blockOverflow',\n 'blockSize',\n 'bottom',\n 'clear',\n 'contain',\n 'content',\n 'continue',\n 'cursor',\n 'direction',\n 'display',\n 'filter',\n 'float',\n 'gap',\n 'height',\n 'inset',\n 'isolation',\n 'left',\n 'letterSpacing',\n 'lightingColor',\n 'markerSide',\n 'mixBlendMode',\n 'opacity',\n 'order',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'rowGap',\n 'tabSize',\n 'tableLayout',\n 'top',\n 'userSelect',\n 'verticalAlign',\n 'visibility',\n 'voiceFamily',\n 'volume',\n 'whiteSpace',\n 'widows',\n 'width',\n 'zIndex',\n 'pointerEvents',\n 'aspectRatio'\n\n /** 非常用 style */\n // 'azimuth',\n // 'backfaceVisibility',\n // 'baselineShift',\n // 'captionSide',\n // 'chains',\n // 'dominantBaseline',\n // 'elevation',\n // 'emptyCells',\n // 'forcedColorAdjust',\n // 'glyphOrientationVertical',\n // 'hangingPunctuation',\n // 'hyphenateCharacter',\n // 'hyphens',\n // 'imageOrientation',\n // 'imageResolution',\n // 'orphans',\n // 'playDuring',\n // 'pointerEvents',\n // 'regionFragment',\n // 'richness',\n // 'running',\n // 'scrollBehavior',\n // 'speechRate',\n // 'stress',\n // 'stringSet',\n // 'unicodeBidi',\n // 'willChange',\n // 'writingMode',\n]\n\n// 减少文件体积\nfunction combine (prefix: string, list: string[], excludeSelf?: boolean) {\n !excludeSelf && styleProperties.push(prefix)\n list.forEach(item => {\n styleProperties.push(prefix + item)\n if (prefix === WEBKIT) {\n styleProperties.push('Webkit' + item)\n }\n })\n}\n\nconst color = 'Color'\nconst style = 'Style'\nconst width = 'Width'\nconst image = 'Image'\nconst size = 'Size'\nconst color_style_width = [color, style, width]\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image]\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius']\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image]\nconst endRadius_startRadius = ['EndRadius', 'StartRadius']\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top']\nconst end_start = ['End', 'Start']\nconst content_items_self = ['Content', 'Items', 'Self']\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width]\nconst after_before = ['After', 'Before']\n\ncombine('borderBlock', color_style_width)\ncombine('borderBlockEnd', color_style_width)\ncombine('borderBlockStart', color_style_width)\ncombine('outline', [...color_style_width, 'Offset'])\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing'])\ncombine('borderFit', ['Length', width])\ncombine('borderInline', color_style_width)\ncombine('borderInlineEnd', color_style_width)\ncombine('borderInlineStart', color_style_width)\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image)\ncombine('borderRight', color_style_width_fitlength_fitwidth_image)\ncombine('borderTop', color_style_width_fitlength_fitwidth_image)\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image)\ncombine('textDecoration', [color, style, 'Line'])\ncombine('textEmphasis', [color, style, 'Position'])\ncombine('scrollMargin', bottom_left_right_top)\ncombine('scrollPadding', bottom_left_right_top)\ncombine('padding', bottom_left_right_top)\ncombine('margin', [...bottom_left_right_top, 'Trim'])\ncombine('scrollMarginBlock', end_start)\ncombine('scrollMarginInline', end_start)\ncombine('scrollPaddingBlock', end_start)\ncombine('scrollPaddingInline', end_start)\ncombine('gridColumn', end_start)\ncombine('gridRow', end_start)\ncombine('insetBlock', end_start)\ncombine('insetInline', end_start)\ncombine('marginBlock', end_start)\ncombine('marginInline', end_start)\ncombine('paddingBlock', end_start)\ncombine('paddingInline', end_start)\ncombine('pause', after_before)\ncombine('cue', after_before)\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type'])\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width])\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width])\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings'])\ncombine('transform', ['Box', 'Origin', style])\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size])\ncombine('listStyle', [image, 'Position', 'Type'])\ncombine('scrollSnap', ['Align', 'Stop', 'Type'])\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows'])\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows'])\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y'])\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction'])\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme'])\ncombine('textAlign', ['All', 'Last'])\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside'])\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction'])\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap'])\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate'])\ncombine('perspective', ['Origin'])\ncombine('clip', ['Path', 'Rule'])\ncombine('flow', ['From', 'Into'])\n\ncombine('align', ['Content', 'Items', 'Self'], true)\ncombine('alignment', ['Adjust', 'Baseline'], true)\ncombine('borderStart', endRadius_startRadius, true)\ncombine('borderEnd', endRadius_startRadius, true)\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true)\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true)\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true)\ncombine('break', [...after_before, 'Inside'], true)\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true)\ncombine('justify', content_items_self, true)\ncombine('place', content_items_self, true)\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true)\ncombine('min', blockSize_height_inlineSize_width, true)\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true)\ncombine('inline', ['BoxAlign', size, 'Sizing'], true)\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true)\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true)\ncombine('word', ['Break', 'Spacing', 'Wrap'], true)\ncombine('object', ['Fit', 'Position'], true)\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true)\n\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true)\n\n/** 非常用 style */\n// combine('caret', [color, 'Shape'])\n// combine('counter', ['Increment', 'Reset', 'Set'], true)\n// combine('dropInitial', ['AfterAdjust', 'AfterAlign', 'BeforeAdjust', 'BeforeAlign', size, 'Value'], true)\n// combine('flood', [color, 'Opacity'], true)\n// combine('footnote', ['Display', 'Policy'], true)\n// combine('hyphenateLimit', ['Chars', 'Last', 'Lines', 'Zone'], true)\n// combine('initialLetters', ['Align', 'Wrap'])\n// combine('ruby', ['Align', 'Merge', 'Position'], true)\n// combine('lineStacking', ['Ruby', 'Shift', 'Strategy'])\n// combine('bookmark', ['Label', 'Level', 'State'], true)\n// combine('speak', ['Header', 'Numeral', 'Punctuation'])\n// combine('pitch', ['Range'])\n// combine('nav', ['Down', 'Left', 'Right', 'Up'], true)\n// combine('fontSynthesis', ['SmallCaps', style, 'Weight'])\n// combine('fontVariant', ['Alternates', 'Caps', 'EastAsian', 'Emoji', 'Ligatures', 'Numeric', 'Position'])\n\nexport { styleProperties }\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { TaroElement } from "./element.js";
2
+ declare class SVGElement extends TaroElement {
3
+ }
4
+ export { SVGElement };
@@ -0,0 +1,8 @@
1
+ import { TaroElement } from './element.js';
2
+
3
+ // for Vue3
4
+ class SVGElement extends TaroElement {
5
+ }
6
+
7
+ export { SVGElement };
8
+ //# sourceMappingURL=svg.js.map
@@ -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;;;;"}
@@ -0,0 +1,15 @@
1
+ import { TaroNode } from "./node.js";
2
+ import { NodeType } from "../node_types-9ac5b4dd.js";
3
+ declare class TaroText extends TaroNode {
4
+ _value: string;
5
+ nodeType: NodeType;
6
+ nodeName: string;
7
+ constructor(value: any);
8
+ set textContent(text: string);
9
+ get textContent(): string;
10
+ set nodeValue(text: string);
11
+ get nodeValue(): string;
12
+ set data(text: string);
13
+ get data(): string;
14
+ }
15
+ export { TaroText };
@@ -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;;;;"}
@@ -0,0 +1,8 @@
1
+ import { TaroElement } from "./element.js";
2
+ declare class TransferElement extends TaroElement {
3
+ dataName: string;
4
+ isTransferElement: boolean;
5
+ constructor(dataName: string);
6
+ get _path(): string;
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;;;;"}
@@ -0,0 +1,4 @@
1
+ import { TaroElement } from "./element.js";
2
+ type Filter = (element: TaroElement) => boolean;
3
+ declare function treeToArray(root: TaroElement, predict?: Filter): TaroElement[];
4
+ export { treeToArray };
@@ -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;;;;"}
@@ -0,0 +1,4 @@
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 @@
1
+ export {};
@@ -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"}
@@ -0,0 +1,3 @@
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;;;;"}
@@ -0,0 +1,25 @@
1
+ import { TaroDocument } from "../../dom/document.js";
2
+ import { TaroElement } from "../../dom/element.js";
3
+ interface Node {
4
+ type: string;
5
+ }
6
+ interface Comment extends Node {
7
+ type: 'comment';
8
+ content: string;
9
+ }
10
+ interface Text extends Node {
11
+ type: 'text';
12
+ content: string;
13
+ }
14
+ interface Element extends Node {
15
+ type: 'element';
16
+ tagName: string;
17
+ children: ChildNode[];
18
+ attributes: string[];
19
+ }
20
+ interface ParsedTaroElement extends TaroElement {
21
+ h5tagName?: string;
22
+ }
23
+ type ChildNode = Comment | Text | Element;
24
+ declare function parser(html: string, document: TaroDocument): (import("../../index.js").TaroText | TaroElement)[];
25
+ export { Text, Element, ParsedTaroElement, parser };
@@ -0,0 +1,257 @@
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, isSpecialElements, getSpecialElementMapping } 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
+ /**
36
+ * 将属性数组转换为属性对象
37
+ * @param attributes 字符串数组,包含属性信息
38
+ * @returns 属性对象,键为属性名,值为属性值或true
39
+ */
40
+ function attributesArray2Props(attributes) {
41
+ const props = {};
42
+ for (let i = 0; i < attributes.length; i++) {
43
+ const attr = attributes[i];
44
+ const [key, value] = splitEqual(attr);
45
+ props[key] = value == null ? true : unquote(value);
46
+ }
47
+ return props;
48
+ }
49
+ function getTagName(tag, attributes) {
50
+ if (options.html.renderHTMLTag) {
51
+ return tag;
52
+ }
53
+ if (specialMiniElements[tag]) {
54
+ return specialMiniElements[tag];
55
+ }
56
+ else if (isMiniElements(tag)) {
57
+ return tag;
58
+ }
59
+ else if (isBlockElements(tag)) {
60
+ return 'view';
61
+ }
62
+ else if (isInlineElements(tag)) {
63
+ return 'text';
64
+ }
65
+ else if (isSpecialElements(tag)) {
66
+ // if it's special tag, the real tag is determined by the config mapping
67
+ const mapping = getSpecialElementMapping(tag);
68
+ const props = attributesArray2Props(attributes);
69
+ if (mapping) {
70
+ return mapping.mapName(props);
71
+ }
72
+ }
73
+ return 'view';
74
+ }
75
+ function splitEqual(str) {
76
+ const sep = '=';
77
+ const idx = str.indexOf(sep);
78
+ if (idx === -1)
79
+ return [str];
80
+ const key = str.slice(0, idx).trim();
81
+ const value = str.slice(idx + sep.length).trim();
82
+ return [key, value];
83
+ }
84
+ function format(children, document, styleOptions, parent) {
85
+ return children
86
+ .filter(child => {
87
+ // 过滤注释和空文本节点
88
+ if (child.type === 'comment') {
89
+ return false;
90
+ }
91
+ else if (child.type === 'text') {
92
+ return child.content !== '';
93
+ }
94
+ return true;
95
+ })
96
+ .map((child) => {
97
+ // 文本节点
98
+ if (child.type === 'text') {
99
+ let text = document.createTextNode(child.content);
100
+ if (isFunction(options.html.transformText)) {
101
+ text = options.html.transformText(text, child);
102
+ }
103
+ parent === null || parent === void 0 ? void 0 : parent.appendChild(text);
104
+ return text;
105
+ }
106
+ // img标签,把width和height写入style,删除原有的width、height和style属性
107
+ if (child.tagName === 'img') {
108
+ let styleText = '';
109
+ const toBeRemovedIndexs = [];
110
+ for (let i = 0; i < child.attributes.length; i++) {
111
+ const attr = child.attributes[i];
112
+ const [key, value] = splitEqual(attr);
113
+ if (key === 'width' || key === 'height') {
114
+ styleText += `${key}:${value};`;
115
+ toBeRemovedIndexs.push(i);
116
+ }
117
+ else if (key === 'style') {
118
+ styleText = `${styleText}${value};`;
119
+ toBeRemovedIndexs.push(i);
120
+ }
121
+ }
122
+ child.attributes = child.attributes.filter((_, index) => !toBeRemovedIndexs.includes(index));
123
+ child.attributes.push(`style=${styleText.replace(/['"]/g, '')}`);
124
+ }
125
+ const el = document.createElement(getTagName(child.tagName, child.attributes));
126
+ el.h5tagName = child.tagName;
127
+ parent === null || parent === void 0 ? void 0 : parent.appendChild(el);
128
+ if (!options.html.renderHTMLTag) {
129
+ el.className = `h5-${child.tagName}`;
130
+ }
131
+ for (let i = 0; i < child.attributes.length; i++) {
132
+ const attr = child.attributes[i];
133
+ const [key, value] = splitEqual(attr);
134
+ if (key === 'class') {
135
+ el.className += ' ' + unquote(value);
136
+ }
137
+ else if (key[0] === 'o' && key[1] === 'n') {
138
+ continue;
139
+ }
140
+ else {
141
+ el.setAttribute(key, value == null ? true : unquote(value));
142
+ }
143
+ }
144
+ const { styleTagParser, descendantList } = styleOptions;
145
+ const list = descendantList.slice();
146
+ const style = styleTagParser.matchStyle(child.tagName, el, list);
147
+ el.setAttribute('style', style + el.style.cssText);
148
+ // console.log('style, ', style)
149
+ format(child.children, document, {
150
+ styleTagParser,
151
+ descendantList: list
152
+ }, el);
153
+ if (isFunction(options.html.transformElement)) {
154
+ return options.html.transformElement(el, child);
155
+ }
156
+ return el;
157
+ });
158
+ }
159
+ function parser(html, document) {
160
+ const styleTagParser = new StyleTagParser();
161
+ html = styleTagParser.extractStyle(html);
162
+ const tokens = new Scaner(html).scan();
163
+ const root = { tagName: '', children: [], type: 'element', attributes: [] };
164
+ const state = { tokens, options, cursor: 0, stack: [root] };
165
+ parse(state);
166
+ return format(root.children, document, {
167
+ styleTagParser,
168
+ descendantList: Array(styleTagParser.styles.length).fill(0)
169
+ });
170
+ }
171
+ function parse(state) {
172
+ const { tokens, stack } = state;
173
+ let { cursor } = state;
174
+ const len = tokens.length;
175
+ let nodes = stack[stack.length - 1].children;
176
+ while (cursor < len) {
177
+ const token = tokens[cursor];
178
+ if (token.type !== 'tag-start') {
179
+ // comment or text
180
+ nodes.push(token);
181
+ cursor++;
182
+ continue;
183
+ }
184
+ const tagToken = tokens[++cursor];
185
+ cursor++;
186
+ const tagName = tagToken.content.toLowerCase();
187
+ if (token.close) {
188
+ let index = stack.length;
189
+ let shouldRewind = false;
190
+ while (--index > -1) {
191
+ if (stack[index].tagName === tagName) {
192
+ shouldRewind = true;
193
+ break;
194
+ }
195
+ }
196
+ while (cursor < len) {
197
+ const endToken = tokens[cursor];
198
+ if (endToken.type !== 'tag-end')
199
+ break;
200
+ cursor++;
201
+ }
202
+ if (shouldRewind) {
203
+ stack.splice(index);
204
+ break;
205
+ }
206
+ else {
207
+ continue;
208
+ }
209
+ }
210
+ const isClosingTag = options.html.closingElements.has(tagName);
211
+ let shouldRewindToAutoClose = isClosingTag;
212
+ if (shouldRewindToAutoClose) {
213
+ shouldRewindToAutoClose = !hasTerminalParent(tagName, stack);
214
+ }
215
+ if (shouldRewindToAutoClose) {
216
+ let currentIndex = stack.length - 1;
217
+ while (currentIndex > 0) {
218
+ if (tagName === stack[currentIndex].tagName) {
219
+ stack.splice(currentIndex);
220
+ const previousIndex = currentIndex - 1;
221
+ nodes = stack[previousIndex].children;
222
+ break;
223
+ }
224
+ currentIndex = currentIndex - 1;
225
+ }
226
+ }
227
+ const attributes = [];
228
+ let attrToken;
229
+ while (cursor < len) {
230
+ attrToken = tokens[cursor];
231
+ if (attrToken.type === 'tag-end')
232
+ break;
233
+ attributes.push(attrToken.content);
234
+ cursor++;
235
+ }
236
+ cursor++;
237
+ const children = [];
238
+ const element = {
239
+ type: 'element',
240
+ tagName: tagToken.content,
241
+ attributes,
242
+ children
243
+ };
244
+ nodes.push(element);
245
+ const hasChildren = !(attrToken.close || options.html.voidElements.has(tagName));
246
+ if (hasChildren) {
247
+ stack.push({ tagName, children });
248
+ const innerState = { tokens, cursor, stack };
249
+ parse(innerState);
250
+ cursor = innerState.cursor;
251
+ }
252
+ }
253
+ state.cursor = cursor;
254
+ }
255
+
256
+ export { parser };
257
+ //# sourceMappingURL=parser.js.map