@tarojs/runtime 4.0.0-beta.81 → 4.0.0-beta.83

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 (116) hide show
  1. package/LICENSE +1 -8
  2. package/dist/bom/URL.d.ts +3 -6
  3. package/dist/bom/URL.js.map +1 -1
  4. package/dist/bom/URLSearchParams.d.ts +1 -2
  5. package/dist/bom/URLSearchParams.js.map +1 -1
  6. package/dist/bom/document.d.ts +2 -3
  7. package/dist/bom/getComputedStyle.d.ts +4 -5
  8. package/dist/bom/history.d.ts +5 -7
  9. package/dist/bom/history.js.map +1 -1
  10. package/dist/bom/location.d.ts +3 -5
  11. package/dist/bom/location.js.map +1 -1
  12. package/dist/bom/navigator.d.ts +1 -2
  13. package/dist/bom/raf.d.ts +3 -2
  14. package/dist/bom/raf.js.map +1 -1
  15. package/dist/bom/window.d.ts +9 -9
  16. package/dist/bom/window.js.map +1 -1
  17. package/dist/constants/index.d.ts +51 -52
  18. package/dist/current.d.ts +5 -5
  19. package/dist/dom/anchor-element.d.ts +2 -3
  20. package/dist/dom/anchor-element.js.map +1 -1
  21. package/dist/dom/class-list.d.ts +2 -3
  22. package/dist/dom/class-list.js.map +1 -1
  23. package/dist/dom/document.d.ts +6 -10
  24. package/dist/dom/document.js.map +1 -1
  25. package/dist/dom/element.d.ts +6 -7
  26. package/dist/dom/element.js.map +1 -1
  27. package/dist/dom/event-source.d.ts +3 -3
  28. package/dist/dom/event-target.d.ts +2 -3
  29. package/dist/dom/event-target.js.map +1 -1
  30. package/dist/dom/event.d.ts +5 -6
  31. package/dist/dom/event.js.map +1 -1
  32. package/dist/dom/form.d.ts +3 -4
  33. package/dist/dom/form.js +1 -1
  34. package/dist/dom/form.js.map +1 -1
  35. package/dist/dom/node.d.ts +8 -39
  36. package/dist/dom/node.js +2 -2
  37. package/dist/dom/node.js.map +1 -1
  38. package/dist/{node_types-9ac5b4dd.d.ts → dom/node_types.d.ts} +1 -2
  39. package/dist/dom/root.d.ts +3 -4
  40. package/dist/dom/root.js.map +1 -1
  41. package/dist/dom/style.d.ts +2 -3
  42. package/dist/dom/style.js.map +1 -1
  43. package/dist/dom/style_properties.js.map +1 -1
  44. package/dist/dom/svg.d.ts +2 -3
  45. package/dist/dom/text.d.ts +3 -4
  46. package/dist/dom/transfer.d.ts +2 -3
  47. package/dist/dom/tree.d.ts +3 -3
  48. package/dist/dom/tree.js.map +1 -1
  49. package/dist/dom-external/element.d.ts +3 -4
  50. package/dist/dom-external/element.js.map +1 -1
  51. package/dist/dom-external/index.js.map +1 -1
  52. package/dist/dom-external/inner-html/html.d.ts +2 -3
  53. package/dist/dom-external/inner-html/html.js.map +1 -1
  54. package/dist/dom-external/inner-html/parser.d.ts +7 -7
  55. package/dist/dom-external/inner-html/parser.js.map +1 -1
  56. package/dist/dom-external/inner-html/scaner.d.ts +3 -3
  57. package/dist/dom-external/inner-html/scaner.js.map +1 -1
  58. package/dist/dom-external/inner-html/style.d.ts +3 -3
  59. package/dist/dom-external/inner-html/style.js.map +1 -1
  60. package/dist/dom-external/inner-html/tags.d.ts +5 -6
  61. package/dist/dom-external/inner-html/tags.js +4 -4
  62. package/dist/dom-external/inner-html/tags.js.map +1 -1
  63. package/dist/dom-external/inner-html/utils.d.ts +1 -2
  64. package/dist/dom-external/inner-html/utils.js.map +1 -1
  65. package/dist/dom-external/mutation-observer/implements.d.ts +6 -25
  66. package/dist/dom-external/mutation-observer/implements.js.map +1 -1
  67. package/dist/dom-external/mutation-observer/index.d.ts +6 -5
  68. package/dist/dom-external/mutation-observer/index.js.map +1 -1
  69. package/dist/{record-32b054d8.d.ts → dom-external/mutation-observer/record.d.ts} +3 -4
  70. package/dist/dom-external/node.d.ts +5 -6
  71. package/dist/dom-external/node.js.map +1 -1
  72. package/dist/dsl/common.d.ts +15 -15
  73. package/dist/dsl/common.js.map +1 -1
  74. package/dist/{instance-4c64b022.d.ts → dsl/instance.d.ts} +15 -26
  75. package/dist/emitter/emitter.d.ts +2 -2
  76. package/dist/env.d.ts +2 -2
  77. package/dist/hydrate.d.ts +4 -5
  78. package/dist/hydrate.js.map +1 -1
  79. package/dist/index.cjs.js +14 -14
  80. package/dist/index.cjs.js.map +1 -1
  81. package/dist/index.d.ts +33 -32
  82. package/dist/interface/element.d.ts +4 -0
  83. package/dist/interface/event-target.d.ts +11 -0
  84. package/dist/interface/event.d.ts +15 -0
  85. package/dist/interface/hydrate.d.ts +29 -0
  86. package/dist/interface/index.d.ts +7 -0
  87. package/dist/interface/node.d.ts +7 -0
  88. package/dist/{options-4c64b022.d.ts → interface/options.d.ts} +4 -5
  89. package/dist/interface/utils.d.ts +2 -0
  90. package/dist/next-tick.d.ts +2 -3
  91. package/dist/next-tick.js.map +1 -1
  92. package/dist/options.d.ts +2 -3
  93. package/dist/perf.d.ts +2 -2
  94. package/dist/perf.js +3 -1
  95. package/dist/perf.js.map +1 -1
  96. package/dist/polyfill/array.d.ts +2 -3
  97. package/dist/polyfill/array.js.map +1 -1
  98. package/dist/polyfill/index.js.map +1 -1
  99. package/dist/polyfill/intersection-observer.d.ts +1 -2
  100. package/dist/polyfill/intersection-observer.js +4 -3
  101. package/dist/polyfill/intersection-observer.js.map +1 -1
  102. package/dist/polyfill/object.d.ts +3 -4
  103. package/dist/polyfill/object.js.map +1 -1
  104. package/dist/runtime.esm.js +8 -8
  105. package/dist/runtime.esm.js.map +1 -1
  106. package/dist/utils/cache.d.ts +1 -2
  107. package/dist/utils/cache.js.map +1 -1
  108. package/dist/utils/index.d.ts +17 -18
  109. package/dist/utils/index.js.map +1 -1
  110. package/dist/utils/lodash.d.ts +2 -3
  111. package/dist/utils/lodash.js.map +1 -1
  112. package/dist/utils/router.d.ts +7 -8
  113. package/package.json +14 -23
  114. package/dist/index-26658829.d.ts +0 -23
  115. package/dist/index.cjs.d.ts +0 -815
  116. package/dist/runtime.esm.d.ts +0 -815
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sources":["../../src/dom/node.ts"],"sourcesContent":["import { ensure, hooks, Shortcuts } from '@tarojs/shared'\n\nimport { DOCUMENT_FRAGMENT } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport env from '../env'\nimport { hydrate } from '../hydrate'\nimport { extend, incrementId, isComment } from '../utils'\nimport { eventSource } from './event-source'\nimport { TaroEventTarget } from './event-target'\nimport { NodeType } from './node_types'\n\nimport type { TFunc, UpdatePayload } from '../interface'\nimport type { TaroDocument } from './document'\nimport type { TaroElement } from './element'\nimport type { TaroRootElement } from './root'\n\ninterface RemoveChildOptions {\n cleanRef?: boolean\n doUpdate?: boolean\n}\n\nconst CHILDNODES = Shortcuts.Childnodes\nconst nodeId = incrementId()\n\nexport class TaroNode extends TaroEventTarget {\n public uid: string\n public sid: string\n public nodeType: NodeType\n public nodeName: string\n public parentNode: TaroNode | null = null\n public childNodes: TaroNode[] = []\n\n public constructor () {\n super()\n this.uid = '_' + nodeId() // dom 节点 id,开发者可修改\n this.sid = this.uid // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this)\n }\n\n private hydrate = (node: TaroNode) => () => hydrate(node as TaroElement)\n\n private updateChildNodes (isClean?: boolean) {\n const cleanChildNodes = () => []\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node))\n return childNodes.map(hydrate)\n }\n\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n })\n }\n\n private updateSingleChild (index: number) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child)) return\n\n if (index && childIndex < index) return\n\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n })\n })\n }\n\n public get _root (): TaroRootElement | null {\n return this.parentNode?._root || null\n }\n\n protected findIndex (refChild: TaroNode): number {\n const index = this.childNodes.indexOf(refChild)\n\n ensure(index !== -1, 'The node to be replaced is not a child of this node.')\n\n return index\n }\n\n public get _path (): string {\n const parentNode = this.parentNode\n\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node))\n const indexOfNode = list.indexOf(this)\n const index = hooks.call('getPathIndex', indexOfNode)\n\n return `${parentNode._path}.${CHILDNODES}.${index}`\n }\n\n return ''\n }\n\n public get nextSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) + 1] || null\n }\n\n public get previousSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) - 1] || null\n }\n\n public get parentElement (): TaroElement | null {\n const parentNode = this.parentNode\n if (parentNode?.nodeType === NodeType.ELEMENT_NODE) {\n return parentNode as TaroElement\n }\n return null\n }\n\n public get firstChild (): TaroNode | null {\n return this.childNodes[0] || null\n }\n\n public get lastChild (): TaroNode | null {\n const childNodes = this.childNodes\n return childNodes[childNodes.length - 1] || null\n }\n\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n public set textContent (text: string) {\n const removedNodes = this.childNodes.slice()\n const addedNodes: TaroNode[] = []\n\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false })\n }\n\n if (text === '') {\n this.updateChildNodes(true)\n } else {\n const newText = env.document.createTextNode(text)\n addedNodes.push(newText)\n this.appendChild(newText)\n this.updateChildNodes()\n }\n\n // @Todo: appendChild 会多触发一次\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes,\n addedNodes\n })\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n public insertBefore<T extends TaroNode> (newChild: T, refChild?: TaroNode | null, isReplace?: boolean): T {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue)\n return currentValue\n }, refChild)\n return newChild\n }\n\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false })\n\n let index = 0\n // Data structure\n newChild.parentNode = this\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild)\n this.childNodes.splice(index, 0, newChild)\n } else {\n // appendChild\n this.childNodes.push(newChild)\n }\n\n const childNodesLength = this.childNodes.length\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1\n if (isOnlyChild) {\n this.updateChildNodes()\n } else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n }\n } else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n } else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes()\n } else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index)\n }\n }\n }\n\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild as TaroNode] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? (refChild as TaroNode).nextSibling /** replaceChild */\n : (refChild || null), /** insertBefore & appendChild */\n previousSibling: newChild.previousSibling\n })\n\n return newChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n public appendChild (newChild: TaroNode) {\n return this.insertBefore(newChild)\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n public replaceChild (newChild: TaroNode, oldChild: TaroNode) {\n if (oldChild.parentNode !== this) return\n\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true)\n\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false })\n\n return oldChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n public removeChild<T extends TaroNode> (child: T, options: RemoveChildOptions = {}): T {\n const { cleanRef, doUpdate } = options\n\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n })\n }\n\n // Data Structure\n const index = this.findIndex(child)\n this.childNodes.splice(index, 1)\n child.parentNode = null\n\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child)\n }\n\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes()\n }\n\n return child\n }\n\n public remove (options?: RemoveChildOptions) {\n this.parentNode?.removeChild(this, options)\n }\n\n public hasChildNodes () {\n return this.childNodes.length > 0\n }\n\n public enqueueUpdate (payload: UpdatePayload) {\n this._root?.enqueueUpdate(payload)\n }\n\n public get ownerDocument (): TaroDocument {\n return env.document\n }\n\n static extend (methodName: string, options: TFunc | Record<string, any>) {\n extend(TaroNode, methodName, options)\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sources":["../../src/dom/node.ts"],"sourcesContent":["import { ensure, hooks, Shortcuts } from '@tarojs/shared'\n\nimport { DOCUMENT_FRAGMENT } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport env from '../env'\nimport { hydrate } from '../hydrate'\nimport { extend, incrementId, isComment } from '../utils'\nimport { eventSource } from './event-source'\nimport { TaroEventTarget } from './event-target'\nimport { NodeType } from './node_types'\n\nimport type { TFunc, UpdatePayload } from '../interface'\nimport type { TaroDocument } from './document'\nimport type { TaroElement } from './element'\nimport type { TaroRootElement } from './root'\n\ninterface RemoveChildOptions {\n cleanRef?: boolean\n doUpdate?: boolean\n}\n\nconst CHILDNODES = Shortcuts.Childnodes\nconst nodeId = incrementId()\n\nexport class TaroNode extends TaroEventTarget {\n public uid: string\n public sid: string\n public nodeType: NodeType\n public nodeName: string\n public parentNode: TaroNode | null = null\n public childNodes: TaroNode[] = []\n\n public constructor () {\n super()\n this.uid = '_' + nodeId() // dom 节点 id,开发者可修改\n this.sid = this.uid // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this)\n }\n\n private hydrate = (node: TaroNode) => () => hydrate(node as TaroElement)\n\n private updateChildNodes (isClean?: boolean) {\n const cleanChildNodes = () => []\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node))\n return childNodes.map(hydrate)\n }\n\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n })\n }\n\n private updateSingleChild (index: number) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child)) return\n\n if (index && childIndex < index) return\n\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n })\n })\n }\n\n public get _root (): TaroRootElement | null {\n return this.parentNode?._root || null\n }\n\n protected findIndex (refChild: TaroNode): number {\n const index = this.childNodes.indexOf(refChild)\n\n ensure(index !== -1, 'The node to be replaced is not a child of this node.')\n\n return index\n }\n\n public get _path (): string {\n const parentNode = this.parentNode\n\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node))\n const indexOfNode = list.indexOf(this)\n const index = hooks.call('getPathIndex', indexOfNode)\n\n return `${parentNode._path}.${CHILDNODES}.${index}`\n }\n\n return ''\n }\n\n public get nextSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) + 1] || null\n }\n\n public get previousSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) - 1] || null\n }\n\n public get parentElement (): TaroElement | null {\n const parentNode = this.parentNode\n if (parentNode?.nodeType === NodeType.ELEMENT_NODE) {\n return parentNode as TaroElement\n }\n return null\n }\n\n public get firstChild (): TaroNode | null {\n return this.childNodes[0] || null\n }\n\n public get lastChild (): TaroNode | null {\n const childNodes = this.childNodes\n return childNodes[childNodes.length - 1] || null\n }\n\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n public set textContent (text: string) {\n const removedNodes = this.childNodes.slice()\n const addedNodes: TaroNode[] = []\n\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false })\n }\n\n if (text === '') {\n this.updateChildNodes(true)\n } else {\n const newText = env.document.createTextNode(text)\n addedNodes.push(newText)\n this.appendChild(newText)\n this.updateChildNodes()\n }\n\n // @Todo: appendChild 会多触发一次\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes,\n addedNodes\n })\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n public insertBefore<T extends TaroNode> (newChild: T, refChild?: TaroNode | null, isReplace?: boolean): T {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue)\n return currentValue\n }, refChild)\n return newChild\n }\n\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false })\n\n let index = 0\n // Data structure\n newChild.parentNode = this\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild)\n this.childNodes.splice(index, 0, newChild)\n } else {\n // appendChild\n this.childNodes.push(newChild)\n }\n\n const childNodesLength = this.childNodes.length\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1\n if (isOnlyChild) {\n this.updateChildNodes()\n } else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n }\n } else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n } else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes()\n } else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index)\n }\n }\n }\n\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild as TaroNode] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? (refChild as TaroNode).nextSibling /** replaceChild */\n : (refChild || null), /** insertBefore & appendChild */\n previousSibling: newChild.previousSibling\n })\n\n return newChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n public appendChild (newChild: TaroNode) {\n return this.insertBefore(newChild)\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n public replaceChild (newChild: TaroNode, oldChild: TaroNode) {\n if (oldChild.parentNode !== this) return\n\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true)\n\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false })\n\n return oldChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n public removeChild<T extends TaroNode> (child: T, options: RemoveChildOptions = {}): T {\n const { cleanRef, doUpdate } = options\n\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n })\n }\n\n // Data Structure\n const index = this.findIndex(child)\n this.childNodes.splice(index, 1)\n child.parentNode = null\n\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child)\n }\n\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes()\n }\n\n return child\n }\n\n public remove (options?: RemoveChildOptions) {\n this.parentNode?.removeChild(this, options)\n }\n\n public hasChildNodes () {\n return this.childNodes.length > 0\n }\n\n public enqueueUpdate (payload: UpdatePayload) {\n this._root?.enqueueUpdate(payload)\n }\n\n public get ownerDocument (): TaroDocument {\n return env.document\n }\n\n static extend (methodName: string, options: TFunc | Record<string, any>) {\n extend(TaroNode, methodName, options)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- declare const enum NodeType {
1
+ export declare const enum NodeType {
2
2
  ELEMENT_NODE = 1,
3
3
  ATTRIBUTE_NODE = 2,
4
4
  TEXT_NODE = 3,
@@ -8,4 +8,3 @@ declare const enum NodeType {
8
8
  PROCESSING_INSTRUCTION_NODE = 7,
9
9
  DOCUMENT_NODE = 9
10
10
  }
11
- export { NodeType };
@@ -1,6 +1,6 @@
1
- import { TaroElement } from "./element.js";
2
- import { MpInstance, TFunc, UpdatePayload } from "../index-26658829.js";
3
- declare class TaroRootElement extends TaroElement {
1
+ import { TaroElement } from './element';
2
+ import type { MpInstance, TFunc, UpdatePayload } from '../interface';
3
+ export declare class TaroRootElement extends TaroElement {
4
4
  private updatePayloads;
5
5
  private updateCallbacks;
6
6
  pendingUpdate: boolean;
@@ -13,4 +13,3 @@ declare class TaroRootElement extends TaroElement {
13
13
  enqueueUpdateCallback(cb: TFunc, ctx?: Record<string, any>): void;
14
14
  flushUpdateCallback(): void;
15
15
  }
16
- export { TaroRootElement };
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sources":["../../src/dom/root.ts"],"sourcesContent":["import { hooks, isArray, isFunction, isUndefined, Shortcuts } from '@tarojs/shared'\n\nimport {\n CUSTOM_WRAPPER,\n PAGE_INIT,\n ROOT_STR,\n SET_DATA\n} from '../constants'\nimport { options } from '../options'\nimport { perf } from '../perf'\nimport { customWrapperCache, isComment } from '../utils'\nimport { TaroElement } from './element'\n\nimport type { HydratedData, MpInstance, TFunc, UpdatePayload, UpdatePayloadValue } from '../interface'\n\nfunction findCustomWrapper (root: TaroRootElement, dataPathArr: string[]) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1)\n let currentData: any = root\n let customWrapper: Record<string, any> | undefined\n let splitedPath = ''\n\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes')\n\n currentData = currentData[key]\n\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el))\n }\n\n if (isUndefined(currentData)) return true\n\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid)\n if (res) {\n customWrapper = res\n splitedPath = dataPathArr.slice(i + 2).join('.')\n }\n }\n })\n\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n }\n }\n}\n\nexport class TaroRootElement extends TaroElement {\n private updatePayloads: UpdatePayload[] = []\n\n private updateCallbacks: TFunc[] = []\n\n public pendingUpdate = false\n\n public ctx: null | MpInstance = null\n\n public constructor () {\n super()\n this.nodeName = ROOT_STR\n this.tagName = ROOT_STR.toUpperCase()\n }\n\n public get _path (): string {\n return ROOT_STR\n }\n\n public get _root (): TaroRootElement {\n return this\n }\n\n public enqueueUpdate (payload: UpdatePayload): void {\n this.updatePayloads.push(payload)\n\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate()\n }\n }\n\n public performUpdate (initRender = false, prerender?: TFunc) {\n this.pendingUpdate = true\n\n const ctx = hooks.call('proxyToRaw', this.ctx)!\n\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`\n perf.start(setDataMark)\n const data: Record<string, UpdatePayloadValue | ReturnType<HydratedData>> = Object.create(null)\n const resetPaths = new Set<string>(\n initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []\n )\n\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift()!\n if (path.endsWith(Shortcuts.Childnodes)) {\n resetPaths.add(path)\n }\n data[path] = value\n }\n\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path]\n }\n })\n\n const value = data[path]\n if (isFunction(value)) {\n data[path] = value()\n }\n }\n\n // 预渲染\n if (isFunction(prerender)) return prerender(data)\n\n // 正常渲染\n this.pendingUpdate = false\n let normalUpdate = {}\n const customWrapperMap: Map<Record<any, any>, Record<string, any>> = new Map()\n\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data\n } else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.')\n const found = findCustomWrapper(this, dataPathArr)\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, {\n ...(customWrapperMap.get(customWrapper) || {}),\n [`i.${splitedPath}`]: data[p]\n })\n } else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p]\n }\n }\n }\n\n const customWrapperCount = customWrapperMap.size\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0)\n let executeTime = 0\n\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark)\n this.flushUpdateCallback()\n initRender && perf.stop(PAGE_INIT)\n }\n }\n\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data)\n }\n ctx.setData(data, cb)\n })\n }\n\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate)\n }\n ctx.setData(normalUpdate, cb)\n }\n }, 0)\n }\n\n public enqueueUpdateCallback (cb: TFunc, ctx?: Record<string, any>) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb()\n })\n }\n\n public flushUpdateCallback () {\n const updateCallbacks = this.updateCallbacks\n if (!updateCallbacks.length) return\n\n const copies = updateCallbacks.slice(0)\n this.updateCallbacks.length = 0\n for (let i = 0; i < copies.length; i++) {\n copies[i]()\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"root.js","sources":["../../src/dom/root.ts"],"sourcesContent":["import { hooks, isArray, isFunction, isUndefined, Shortcuts } from '@tarojs/shared'\n\nimport {\n CUSTOM_WRAPPER,\n PAGE_INIT,\n ROOT_STR,\n SET_DATA\n} from '../constants'\nimport { options } from '../options'\nimport { perf } from '../perf'\nimport { customWrapperCache, isComment } from '../utils'\nimport { TaroElement } from './element'\n\nimport type { HydratedData, MpInstance, TFunc, UpdatePayload, UpdatePayloadValue } from '../interface'\n\nfunction findCustomWrapper (root: TaroRootElement, dataPathArr: string[]) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1)\n let currentData: any = root\n let customWrapper: Record<string, any> | undefined\n let splitedPath = ''\n\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes')\n\n currentData = currentData[key]\n\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el))\n }\n\n if (isUndefined(currentData)) return true\n\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid)\n if (res) {\n customWrapper = res\n splitedPath = dataPathArr.slice(i + 2).join('.')\n }\n }\n })\n\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n }\n }\n}\n\nexport class TaroRootElement extends TaroElement {\n private updatePayloads: UpdatePayload[] = []\n\n private updateCallbacks: TFunc[] = []\n\n public pendingUpdate = false\n\n public ctx: null | MpInstance = null\n\n public constructor () {\n super()\n this.nodeName = ROOT_STR\n this.tagName = ROOT_STR.toUpperCase()\n }\n\n public get _path (): string {\n return ROOT_STR\n }\n\n public get _root (): TaroRootElement {\n return this\n }\n\n public enqueueUpdate (payload: UpdatePayload): void {\n this.updatePayloads.push(payload)\n\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate()\n }\n }\n\n public performUpdate (initRender = false, prerender?: TFunc) {\n this.pendingUpdate = true\n\n const ctx = hooks.call('proxyToRaw', this.ctx)!\n\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`\n perf.start(setDataMark)\n const data: Record<string, UpdatePayloadValue | ReturnType<HydratedData>> = Object.create(null)\n const resetPaths = new Set<string>(\n initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []\n )\n\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift()!\n if (path.endsWith(Shortcuts.Childnodes)) {\n resetPaths.add(path)\n }\n data[path] = value\n }\n\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path]\n }\n })\n\n const value = data[path]\n if (isFunction(value)) {\n data[path] = value()\n }\n }\n\n // 预渲染\n if (isFunction(prerender)) return prerender(data)\n\n // 正常渲染\n this.pendingUpdate = false\n let normalUpdate = {}\n const customWrapperMap: Map<Record<any, any>, Record<string, any>> = new Map()\n\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data\n } else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.')\n const found = findCustomWrapper(this, dataPathArr)\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, {\n ...(customWrapperMap.get(customWrapper) || {}),\n [`i.${splitedPath}`]: data[p]\n })\n } else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p]\n }\n }\n }\n\n const customWrapperCount = customWrapperMap.size\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0)\n let executeTime = 0\n\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark)\n this.flushUpdateCallback()\n initRender && perf.stop(PAGE_INIT)\n }\n }\n\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data)\n }\n ctx.setData(data, cb)\n })\n }\n\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate)\n }\n ctx.setData(normalUpdate, cb)\n }\n }, 0)\n }\n\n public enqueueUpdateCallback (cb: TFunc, ctx?: Record<string, any>) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb()\n })\n }\n\n public flushUpdateCallback () {\n const updateCallbacks = this.updateCallbacks\n if (!updateCallbacks.length) return\n\n const copies = updateCallbacks.slice(0)\n this.updateCallbacks.length = 0\n for (let i = 0; i < copies.length; i++) {\n copies[i]()\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;AAeA,SAAS,iBAAiB,CAAE,IAAqB,EAAE,WAAqB,EAAA;;IAEtE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,WAAW,GAAQ,IAAI,CAAA;AAC3B,IAAA,IAAI,aAA8C,CAAA;IAClD,IAAI,WAAW,GAAG,EAAE,CAAA;IAEpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;QACpB,MAAM,GAAG,GAAG,IAAI;;AAEb,aAAA,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;;AAE3B,aAAA,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAEnC,QAAA,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;AAE9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;SACvD;QAED,IAAI,WAAW,CAAC,WAAW,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AAEzC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,cAAc,EAAE;YAC3C,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACnD,IAAI,GAAG,EAAE;gBACP,aAAa,GAAG,GAAG,CAAA;AACnB,gBAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACjD;SACF;AACH,KAAC,CAAC,CAAA;IAEF,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,aAAa;YACb,WAAW;SACZ,CAAA;KACF;AACH,CAAC;AAEK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAS9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QATD,IAAc,CAAA,cAAA,GAAoB,EAAE,CAAA;QAEpC,IAAe,CAAA,eAAA,GAAY,EAAE,CAAA;QAE9B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA;QAErB,IAAG,CAAA,GAAA,GAAsB,IAAI,CAAA;AAIlC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAA;KACZ;AAEM,IAAA,aAAa,CAAE,OAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEjC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,aAAa,EAAE,CAAA;SACrB;KACF;AAEM,IAAA,aAAa,CAAE,UAAU,GAAG,KAAK,EAAE,SAAiB,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AAEzB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAE,CAAA;QAE/C,UAAU,CAAC,MAAK;YACd,MAAM,WAAW,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAA;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACvB,MAAM,IAAI,GAAkE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/F,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,UAAU;AACR,kBAAE,CAAC,aAAa,EAAE,YAAY,CAAC;kBAC7B,EAAE,CACP,CAAA;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAA;AACpD,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAA,IAAA,4BAAsB,EAAE;AACvC,oBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;iBACrB;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aACnB;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;;oBAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AAClC,wBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;qBAClB;AACH,iBAAC,CAAC,CAAA;AAEF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,gBAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAA;iBACrB;aACF;;YAGD,IAAI,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;;AAGjD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAC1B,IAAI,YAAY,GAAG,EAAE,CAAA;AACrB,YAAA,MAAM,gBAAgB,GAA+C,IAAI,GAAG,EAAE,CAAA;YAE9E,IAAI,UAAU,EAAE;;gBAEd,YAAY,GAAG,IAAI,CAAA;aACpB;iBAAM;;AAEL,gBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;oBAClD,IAAI,KAAK,EAAE;;AAET,wBAAA,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;;wBAE5C,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAC5B,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAC7C,EAAA,EAAA,CAAC,CAAK,EAAA,EAAA,WAAW,CAAE,CAAA,GAAG,IAAI,CAAC,CAAC,CAAC,EAAA,CAAA,CAC7B,CAAA;qBACH;yBAAM;;wBAEL,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;qBAC1B;iBACF;aACF;AAED,YAAA,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAA;AAChD,YAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/D,YAAA,MAAM,YAAY,GAAG,kBAAkB,IAAI,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACtE,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,MAAM,EAAE,GAAG,MAAK;AACd,gBAAA,IAAI,EAAE,WAAW,KAAK,YAAY,EAAE;AAClC,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBACtB,IAAI,CAAC,mBAAmB,EAAE,CAAA;AAC1B,oBAAA,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;iBACnC;AACH,aAAC,CAAA;;YAGD,IAAI,kBAAkB,EAAE;gBACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AACrC,oBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,wBAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA;qBAC9C;AACD,oBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACvB,iBAAC,CAAC,CAAA;aACH;;YAGD,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,oBAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;iBAC3C;AACD,gBAAA,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;aAC9B;SACF,EAAE,CAAC,CAAC,CAAA;KACN;IAEM,qBAAqB,CAAE,EAAS,EAAE,GAAyB,EAAA;AAChE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAK;AAC7B,YAAA,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAA;AAC3B,SAAC,CAAC,CAAA;KACH;IAEM,mBAAmB,GAAA;AACxB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM;YAAE,OAAM;QAEnC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;SACZ;KACF;AACF;;;;"}
@@ -1,5 +1,5 @@
1
- import { TaroElement } from "./element.js";
2
- declare class Style {
1
+ import { TaroElement } from './element';
2
+ export declare class Style {
3
3
  _pending: boolean;
4
4
  _usedStyleProp: Set<string>;
5
5
  _value: Partial<CSSStyleDeclaration>;
@@ -12,4 +12,3 @@ declare class Style {
12
12
  removeProperty(propertyName: string): string;
13
13
  getPropertyValue(propertyName: string): any;
14
14
  }
15
- export { Style };
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sources":["../../src/dom/style.ts"],"sourcesContent":["import { hooks, isArray, isNull, isString, isUndefined, Shortcuts, toCamelCase, toDashed, warn } from '@tarojs/shared'\n\nimport { PROPERTY_THRESHOLD } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroElement } from './element'\nimport { styleProperties } from './style_properties'\n\nfunction recordCss (obj: Style) {\n MutationObserver.record({\n type: MutationRecordType.ATTRIBUTES,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n })\n}\n\nfunction enqueueUpdate (obj: Style) {\n const element = obj._element\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.Style}`,\n value: obj.cssText\n })\n }\n}\n\nfunction setStyle (this: Style, newVal: string, styleKey: string) {\n process.env.NODE_ENV !== 'production' && warn(\n isString(newVal) && newVal.length > PROPERTY_THRESHOLD,\n `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`\n )\n\n const old = this[styleKey]\n\n if (old === newVal) return\n\n !this._pending && recordCss(this)\n\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey)\n delete this._value[styleKey]\n } else {\n this._usedStyleProp.add(styleKey)\n this._value[styleKey] = newVal\n }\n\n !this._pending && enqueueUpdate(this)\n}\n\nfunction initStyle (ctor: typeof Style, styleProperties: string[]) {\n const properties = {}\n\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i]\n\n if (ctor[styleKey]) return\n\n properties[styleKey] = {\n get (this: Style) {\n const val = this._value[styleKey]\n return isNull(val) || isUndefined(val) ? '' : val\n },\n set (this: Style, newVal: string) {\n setStyle.call(this, newVal, styleKey)\n }\n }\n }\n\n Object.defineProperties(ctor.prototype, properties)\n}\n\nfunction isCssVariable (propertyName) {\n return /^--/.test(propertyName)\n}\n\nexport class Style {\n public _pending: boolean\n\n public _usedStyleProp: Set<string>\n\n public _value: Partial<CSSStyleDeclaration>\n\n public _element: TaroElement\n\n public constructor (element: TaroElement) {\n this._element = element\n this._usedStyleProp = new Set()\n this._value = {}\n }\n\n private setCssVariables (styleKey: string) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || ''\n },\n set: (newVal: string) => {\n setStyle.call(this, newVal, styleKey)\n }\n })\n }\n\n public get cssText () {\n if (!this._usedStyleProp.size) return ''\n\n const texts: string[] = []\n this._usedStyleProp.forEach(key => {\n const val = this[key]\n if (isNull(val) || isUndefined(val)) return\n let styleName = isCssVariable(key) ? key : toDashed(key)\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`\n }\n texts.push(`${styleName}: ${val};`)\n })\n return texts.join(' ')\n }\n\n public set cssText (str: string) {\n this._pending = true\n recordCss(this)\n\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop)\n })\n\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false\n enqueueUpdate(this)\n return\n }\n\n const rules = str.split(';')\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim()\n if (rule === '') {\n continue\n }\n\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':')\n const val = valList.join(':')\n\n if (isUndefined(val)) {\n continue\n }\n this.setProperty(propName.trim(), val.trim())\n }\n\n this._pending = false\n enqueueUpdate(this)\n }\n\n public setProperty (propertyName: string, value?: string | null) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName)\n } else {\n propertyName = toCamelCase(propertyName)\n }\n\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName)\n } else {\n this[propertyName] = value\n }\n }\n\n public removeProperty (propertyName: string): string {\n propertyName = toCamelCase(propertyName)\n if (!this._usedStyleProp.has(propertyName)) {\n return ''\n }\n\n const value = this[propertyName]\n this[propertyName] = undefined\n return value\n }\n\n public getPropertyValue (propertyName: string) {\n propertyName = toCamelCase(propertyName)\n const value = this[propertyName]\n if (!value) {\n return ''\n }\n\n return value\n }\n}\n\ninitStyle(Style, styleProperties)\n\nhooks.tap('injectNewStyleProperties', (newStyleProperties: string[]) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties)\n } else {\n if (typeof newStyleProperties !== 'string') return\n\n initStyle(Style, [newStyleProperties])\n }\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.js","sources":["../../src/dom/style.ts"],"sourcesContent":["import { hooks, isArray, isNull, isString, isUndefined, Shortcuts, toCamelCase, toDashed, warn } from '@tarojs/shared'\n\nimport { PROPERTY_THRESHOLD } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroElement } from './element'\nimport { styleProperties } from './style_properties'\n\nfunction recordCss (obj: Style) {\n MutationObserver.record({\n type: MutationRecordType.ATTRIBUTES,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n })\n}\n\nfunction enqueueUpdate (obj: Style) {\n const element = obj._element\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.Style}`,\n value: obj.cssText\n })\n }\n}\n\nfunction setStyle (this: Style, newVal: string, styleKey: string) {\n process.env.NODE_ENV !== 'production' && warn(\n isString(newVal) && newVal.length > PROPERTY_THRESHOLD,\n `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`\n )\n\n const old = this[styleKey]\n\n if (old === newVal) return\n\n !this._pending && recordCss(this)\n\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey)\n delete this._value[styleKey]\n } else {\n this._usedStyleProp.add(styleKey)\n this._value[styleKey] = newVal\n }\n\n !this._pending && enqueueUpdate(this)\n}\n\nfunction initStyle (ctor: typeof Style, styleProperties: string[]) {\n const properties = {}\n\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i]\n\n if (ctor[styleKey]) return\n\n properties[styleKey] = {\n get (this: Style) {\n const val = this._value[styleKey]\n return isNull(val) || isUndefined(val) ? '' : val\n },\n set (this: Style, newVal: string) {\n setStyle.call(this, newVal, styleKey)\n }\n }\n }\n\n Object.defineProperties(ctor.prototype, properties)\n}\n\nfunction isCssVariable (propertyName) {\n return /^--/.test(propertyName)\n}\n\nexport class Style {\n public _pending: boolean\n\n public _usedStyleProp: Set<string>\n\n public _value: Partial<CSSStyleDeclaration>\n\n public _element: TaroElement\n\n public constructor (element: TaroElement) {\n this._element = element\n this._usedStyleProp = new Set()\n this._value = {}\n }\n\n private setCssVariables (styleKey: string) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || ''\n },\n set: (newVal: string) => {\n setStyle.call(this, newVal, styleKey)\n }\n })\n }\n\n public get cssText () {\n if (!this._usedStyleProp.size) return ''\n\n const texts: string[] = []\n this._usedStyleProp.forEach(key => {\n const val = this[key]\n if (isNull(val) || isUndefined(val)) return\n let styleName = isCssVariable(key) ? key : toDashed(key)\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`\n }\n texts.push(`${styleName}: ${val};`)\n })\n return texts.join(' ')\n }\n\n public set cssText (str: string) {\n this._pending = true\n recordCss(this)\n\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop)\n })\n\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false\n enqueueUpdate(this)\n return\n }\n\n const rules = str.split(';')\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim()\n if (rule === '') {\n continue\n }\n\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':')\n const val = valList.join(':')\n\n if (isUndefined(val)) {\n continue\n }\n this.setProperty(propName.trim(), val.trim())\n }\n\n this._pending = false\n enqueueUpdate(this)\n }\n\n public setProperty (propertyName: string, value?: string | null) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName)\n } else {\n propertyName = toCamelCase(propertyName)\n }\n\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName)\n } else {\n this[propertyName] = value\n }\n }\n\n public removeProperty (propertyName: string): string {\n propertyName = toCamelCase(propertyName)\n if (!this._usedStyleProp.has(propertyName)) {\n return ''\n }\n\n const value = this[propertyName]\n this[propertyName] = undefined\n return value\n }\n\n public getPropertyValue (propertyName: string) {\n propertyName = toCamelCase(propertyName)\n const value = this[propertyName]\n if (!value) {\n return ''\n }\n\n return value\n }\n}\n\ninitStyle(Style, styleProperties)\n\nhooks.tap('injectNewStyleProperties', (newStyleProperties: string[]) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties)\n } else {\n if (typeof newStyleProperties !== 'string') return\n\n initStyle(Style, [newStyleProperties])\n }\n})\n"],"names":[],"mappings":";;;;;AAOA,SAAS,SAAS,CAAE,GAAU,EAAA;IAC5B,gBAAgB,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,EAA+B,YAAA;QACnC,MAAM,EAAE,GAAG,CAAC,QAAQ;AACpB,QAAA,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,GAAG,CAAC,OAAO;AACtB,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAE,GAAU,EAAA;AAChC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAA;AAC5B,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,OAAO,CAAC,aAAa,CAAC;AACpB,YAAA,IAAI,EAAE,CAAG,EAAA,OAAO,CAAC,KAAK,CAAA,CAAA,EAAI,2BAAiB,CAAA;YAC3C,KAAK,EAAE,GAAG,CAAC,OAAO;AACnB,SAAA,CAAC,CAAA;KACH;AACH,CAAC;AAED,SAAS,QAAQ,CAAe,MAAc,EAAE,QAAgB,EAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAC3C,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EACtD,CAAY,SAAA,EAAA,QAAQ,CAAuC,qCAAA,CAAA,CAC5D,CAAA;AAED,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE1B,IAAI,GAAG,KAAK,MAAM;QAAE,OAAM;IAE1B,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;AAEjC,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;KAC7B;SAAM;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;KAC/B;IAED,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,SAAS,CAAE,IAAkB,EAAE,eAAyB,EAAA;IAC/D,MAAM,UAAU,GAAG,EAAE,CAAA;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAM;QAE1B,UAAU,CAAC,QAAQ,CAAC,GAAG;YACrB,GAAG,GAAA;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACjC,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA;aAClD;AACD,YAAA,GAAG,CAAe,MAAc,EAAA;gBAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;SACF,CAAA;KACF;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,aAAa,CAAE,YAAY,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC;MAEY,KAAK,CAAA;AAShB,IAAA,WAAA,CAAoB,OAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;KACjB;AAEO,IAAA,eAAe,CAAE,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,MAAK;gBACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;aACnC;AACD,YAAA,GAAG,EAAE,CAAC,MAAc,KAAI;gBACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;AACF,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAA;QAExC,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACrB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAM;AAC3C,YAAA,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AACxD,YAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1E,gBAAA,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA;aAC5B;YACD,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,SAAS,CAAK,EAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAA;AACrC,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;IAED,IAAW,OAAO,CAAE,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,SAAS,CAAC,IAAI,CAAC,CAAA;AAEf,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AAC3B,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,GAAG,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,OAAM;SACP;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAE5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAC5B,YAAA,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,SAAQ;aACT;;AAGD,YAAA,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE7B,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAQ;aACT;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;SAC9C;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,aAAa,CAAC,IAAI,CAAC,CAAA;KACpB;IAEM,WAAW,CAAE,YAAoB,EAAE,KAAqB,EAAA;AAC7D,QAAA,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;AAE3B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;SACnC;aAAM;AACL,YAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;SACzC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;SAClC;aAAM;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;SAC3B;KACF;AAEM,IAAA,cAAc,CAAE,YAAoB,EAAA;AACzC,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE,CAAA;SACV;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;AAC9B,QAAA,OAAO,KAAK,CAAA;KACb;AAEM,IAAA,gBAAgB,CAAE,YAAoB,EAAA;AAC3C,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,CAAA;SACV;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;AAED,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AAEjC,KAAK,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,kBAA4B,KAAI;AACrE,IAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,QAAA,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;KACrC;SAAM;QACL,IAAI,OAAO,kBAAkB,KAAK,QAAQ;YAAE,OAAM;AAElD,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;KACvC;AACH,CAAC,CAAC;;;;"}
@@ -1 +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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"}
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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"}
package/dist/dom/svg.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { TaroElement } from "./element.js";
2
- declare class SVGElement extends TaroElement {
1
+ import { TaroElement } from './element';
2
+ export declare class SVGElement extends TaroElement {
3
3
  }
4
- export { SVGElement };
@@ -1,6 +1,6 @@
1
- import { TaroNode } from "./node.js";
2
- import { NodeType } from "../node_types-9ac5b4dd.js";
3
- declare class TaroText extends TaroNode {
1
+ import { TaroNode } from './node';
2
+ import { NodeType } from './node_types';
3
+ export declare class TaroText extends TaroNode {
4
4
  _value: string;
5
5
  nodeType: NodeType;
6
6
  nodeName: string;
@@ -12,4 +12,3 @@ declare class TaroText extends TaroNode {
12
12
  set data(text: string);
13
13
  get data(): string;
14
14
  }
15
- export { TaroText };
@@ -1,8 +1,7 @@
1
- import { TaroElement } from "./element.js";
2
- declare class TransferElement extends TaroElement {
1
+ import { TaroElement } from './element';
2
+ export 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 };
@@ -1,4 +1,4 @@
1
- import { TaroElement } from "./element.js";
1
+ import type { TaroElement } from './element';
2
2
  type Filter = (element: TaroElement) => boolean;
3
- declare function treeToArray(root: TaroElement, predict?: Filter): TaroElement[];
4
- export { treeToArray };
3
+ export declare function treeToArray(root: TaroElement, predict?: Filter): TaroElement[];
4
+ export {};
@@ -1 +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
+ {"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;IAErC,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAA0B,CAAA,gCAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACnB;AAED,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;KACjC;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;;AAGzG,IAAA,IAAI,UAAU,IAAI,iBAAiB,EAAE;AACnC,QAAA,OAAO,UAAyB,CAAA;KACjC;IAED,IAAI,OAAO,GAAuB,EAAE,CAAA;AAEpC,IAAA,GAAG;AACD,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI,CAAA;SACZ;AAED,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QAEvC,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,WAA0B,CAAA;SAClC;AACD,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;KAChC,QAAQ,OAAO,EAAC;AAEjB,IAAA,OAAO,IAAI,CAAA;AACb;;;;"}
@@ -1,4 +1,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 };
1
+ import type { TaroElement } from '../dom/element';
2
+ export declare function getBoundingClientRectImpl(this: TaroElement): Promise<null>;
3
+ export declare function getTemplateContent(ctx: TaroElement): TaroElement | undefined;
@@ -1 +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;;;;"}
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;KACf;AACH;;;;"}
@@ -1 +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\nconst isWeb = process.env.TARO_PLATFORM === 'web'\nconst isHarmony = process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony'\nif (!isWeb && !isHarmony) {\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,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC/F,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;AACxB,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
+ {"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\nconst isWeb = process.env.TARO_PLATFORM === 'web'\nconst isHarmony = process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony'\nif (!isWeb && !isHarmony) {\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,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC/F,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;IACxB,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;QAEF,IAAI,oBAAoB,EAAE;AACxB,YAAA,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;SAC1D;KACF;IAED,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;KACxC;IAED,IAAI,eAAe,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;KACtC;IAED,IAAI,gBAAgB,EAAE;AACpB,QAAA,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAA;KACvE;IAED,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;KACH;AACH"}
@@ -1,3 +1,2 @@
1
- import { TaroNode } from "../../dom/node.js";
2
- declare function setInnerHTML(element: TaroNode, html: string): void;
3
- export { setInnerHTML };
1
+ import type { TaroNode } from '../../dom/node';
2
+ export declare function setInnerHTML(element: TaroNode, html: string): void;
@@ -1 +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
+ {"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;AAC3D,IAAA,OAAO,OAAO,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;KACxC;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;KACjC;AACH;;;;"}
@@ -1,5 +1,5 @@
1
- import { TaroDocument } from "../../dom/document.js";
2
- import { TaroElement } from "../../dom/element.js";
1
+ import type { TaroDocument } from '../../dom/document';
2
+ import type { TaroElement } from '../../dom/element';
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
- interface Text extends Node {
10
+ export interface Text extends Node {
11
11
  type: 'text';
12
12
  content: string;
13
13
  }
14
- interface Element extends Node {
14
+ export interface Element extends Node {
15
15
  type: 'element';
16
16
  tagName: string;
17
17
  children: ChildNode[];
18
18
  attributes: string[];
19
19
  }
20
- interface ParsedTaroElement extends TaroElement {
20
+ export interface ParsedTaroElement extends TaroElement {
21
21
  h5tagName?: string;
22
22
  }
23
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 };
24
+ export declare function parser(html: string, document: TaroDocument): (import("../..").TaroText | TaroElement)[];
25
+ export {};
@@ -1 +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":";;;;;;;AAiBA,MAAM,0BAA0B,GAAG;AACjC,IAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,EAAE,EAAE,CAAC,OAAO,CAAC;IACb,EAAE,EAAE,CAAC,OAAO,CAAC;CACd,CAAA;AA6BD,SAAS,iBAAiB,CAAE,OAAe,EAAE,KAAgB,EAAA;AAC3D,IAAA,MAAM,UAAU,GAAyB,0BAA0B,CAAC,OAAO,CAAC,CAAA;AAC5E,IAAA,IAAI,UAAU,EAAE;AACd,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACnC,OAAO,YAAY,IAAI,CAAC,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAA;YACjD,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC7B,MAAK;AACN,aAAA;YACD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAc,CAAC,EAAE;AACrD,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,YAAY,EAAE,CAAA;AACf,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;AAC9B,IAAA,IAAI,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;AAC/B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAED,IAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;AAChC,KAAA;AAAM,SAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAAM,SAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAAM,SAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAChC,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAED,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAA;AAC5B,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACpC,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;AAChD,IAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,MAAM,CACb,QAAqB,EACrB,QAAsB,EACtB,YAGC,EACD,MAAoB,EAAA;AAEpB,IAAA,OAAO,QAAQ;SACZ,MAAM,CAAC,KAAK,IAAG;;AAEd,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,EAAE,CAAA;AAC5B,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC;AACD,SAAA,GAAG,CAAC,CAAC,KAAqB,KAAI;;AAE7B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAChD,aAAA;YACD,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,EAAE,GAAsB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AAC/E,QAAA,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAA;QAE5B,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,EAAE,CAAC,CAAA;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;YAChC,EAAE,CAAC,SAAS,GAAG,CAAA,GAAA,EAAM,KAAK,CAAC,OAAO,EAAE,CAAA;AACrC,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,EAAE,CAAC,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AACrC,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC3C,SAAQ;AACT,aAAA;AAAM,iBAAA;gBACL,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,aAAA;AACF,SAAA;AAED,QAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,YAAY,CAAA;AACvD,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;AACnC,QAAA,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AAEhE,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAGlD,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC/B,cAAc;AACd,YAAA,cAAc,EAAE,IAAI;SACrB,EAAE,EAAE,CAAC,CAAA;QAEN,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE;YAC9C,OAAO,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACjD,SAAA;AAED,QAAA,OAAO,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACN,CAAC;AAEe,SAAA,MAAM,CAAE,IAAY,EAAE,QAAsB,EAAA;AAC1D,IAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;AAC3C,IAAA,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAEtC,IAAA,MAAM,IAAI,GAAY,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;AAEpF,IAAA,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3D,KAAK,CAAC,KAAK,CAAC,CAAA;AAEZ,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACrC,cAAc;AACd,QAAA,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,KAAK,CAAE,KAAY,EAAA;AAC1B,IAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;AAC/B,IAAA,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;AAEtB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;AAEzB,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE5C,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;;AAE9B,YAAA,KAAK,CAAC,IAAI,CAAC,KAAkB,CAAC,CAAA;AAC9B,YAAA,MAAM,EAAE,CAAA;YACR,SAAQ;AACT,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACjC,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAQ,CAAC,WAAW,EAAE,CAAA;QAC/C,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;YACxB,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,YAAA,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;gBACnB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE;oBACpC,YAAY,GAAG,IAAI,CAAA;oBACnB,MAAK;AACN,iBAAA;AACF,aAAA;YACD,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC/B,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAK;AACtC,gBAAA,MAAM,EAAE,CAAA;AACT,aAAA;AACD,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAK;AACN,aAAA;AAAM,iBAAA;gBACL,SAAQ;AACT,aAAA;AACF,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/D,IAAI,uBAAuB,GAAG,YAAY,CAAA;AAC1C,QAAA,IAAI,uBAAuB,EAAE;YAC3B,uBAAuB,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,uBAAuB,EAAE;AAC3B,YAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;YACnC,OAAO,YAAY,GAAG,CAAC,EAAE;gBACvB,IAAI,OAAO,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AAC3C,oBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC1B,oBAAA,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAA;AACtC,oBAAA,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAA;oBACrC,MAAK;AACN,iBAAA;AACD,gBAAA,YAAY,GAAG,YAAY,GAAG,CAAC,CAAA;AAChC,aAAA;AACF,SAAA;QAED,MAAM,UAAU,GAAa,EAAE,CAAA;AAC/B,QAAA,IAAI,SAAgB,CAAA;QACpB,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,YAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1B,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAK;AACvC,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAA;AACnC,YAAA,MAAM,EAAE,CAAA;AACT,SAAA;AAED,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,QAAQ,GAAc,EAAE,CAAA;AAC9B,QAAA,MAAM,OAAO,GAAY;AACvB,YAAA,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ,CAAC,OAAQ;YAC1B,UAAU;YACV,QAAQ;SACT,CAAA;AACD,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEnB,QAAA,MAAM,WAAW,GAAG,EAAE,SAAU,CAAC,KAAK,IAAI,OAAO,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAClF,QAAA,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAS,CAAC,CAAA;YACxC,MAAM,UAAU,GAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YACnD,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,YAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;AAC3B,SAAA;AACF,KAAA;AAED,IAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACvB;;;;"}
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
- interface Token {
6
+ export interface Token {
7
7
  type: string;
8
8
  content?: string;
9
9
  position?: {
@@ -12,7 +12,7 @@ interface Token {
12
12
  };
13
13
  close?: boolean;
14
14
  }
15
- declare class Scaner {
15
+ export declare class Scaner {
16
16
  private tokens;
17
17
  private position;
18
18
  private html;
@@ -27,4 +27,4 @@ declare class Scaner {
27
27
  private scanAttrs;
28
28
  private scanSkipTag;
29
29
  }
30
- export { Token, Scaner };
30
+ export {};