Match-id-512f37017e5b961d1e1fda10ea7176284f4acaf7
This commit is contained in:
parent
3c1a4bc02a
commit
fcd3a54a1a
|
@ -14,13 +14,9 @@ import {
|
||||||
TreeRoot,
|
TreeRoot,
|
||||||
} from '../renderer/vnode/VNodeTags';
|
} from '../renderer/vnode/VNodeTags';
|
||||||
|
|
||||||
const prefix = '_horizon';
|
const INTERNAL_VNODE = '_horizon_VNode';
|
||||||
|
const INTERNAL_PROPS = '_horizon_Props';
|
||||||
const internalKeys = {
|
const INTERNAL_NONDELEGATEEVENTS = '_horizon_NonDelegatedEvents';
|
||||||
VNode: `${prefix}VNode`,
|
|
||||||
props: `${prefix}Props`,
|
|
||||||
nonDelegatedEvents: `${prefix}NonDelegatedEvents`,
|
|
||||||
};
|
|
||||||
|
|
||||||
// 通过 VNode 实例获取 DOM 节点
|
// 通过 VNode 实例获取 DOM 节点
|
||||||
export function getDom(vNode: VNode): Element | Text | null {
|
export function getDom(vNode: VNode): Element | Text | null {
|
||||||
|
@ -36,12 +32,12 @@ export function saveVNode(
|
||||||
vNode: VNode,
|
vNode: VNode,
|
||||||
dom: Element | Text | Container,
|
dom: Element | Text | Container,
|
||||||
): void {
|
): void {
|
||||||
dom[internalKeys.VNode] = vNode;
|
dom[INTERNAL_VNODE] = vNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用 DOM 节点,来找其对应的 VNode 实例
|
// 用 DOM 节点,来找其对应的 VNode 实例
|
||||||
export function getVNode(dom: Node|Container): VNode | null {
|
export function getVNode(dom: Node|Container): VNode | null {
|
||||||
const vNode = dom[internalKeys.VNode] || (dom as Container)._treeRoot;
|
const vNode = dom[INTERNAL_VNODE] || (dom as Container)._treeRoot;
|
||||||
if (vNode) {
|
if (vNode) {
|
||||||
const {tag} = vNode;
|
const {tag} = vNode;
|
||||||
if (tag === DomComponent || tag === DomText || tag === TreeRoot) {
|
if (tag === DomComponent || tag === DomText || tag === TreeRoot) {
|
||||||
|
@ -53,7 +49,7 @@ export function getVNode(dom: Node|Container): VNode | null {
|
||||||
|
|
||||||
// 用 DOM 对象,来寻找其对应或者说是最近父级的 vNode
|
// 用 DOM 对象,来寻找其对应或者说是最近父级的 vNode
|
||||||
export function getNearestVNode(dom: Node): null | VNode {
|
export function getNearestVNode(dom: Node): null | VNode {
|
||||||
let vNode = dom[internalKeys.VNode];
|
let vNode = dom[INTERNAL_VNODE];
|
||||||
if (vNode) { // 如果是已经被框架标记过的 DOM 节点,那么直接返回其 VNode 实例
|
if (vNode) { // 如果是已经被框架标记过的 DOM 节点,那么直接返回其 VNode 实例
|
||||||
return vNode;
|
return vNode;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +58,7 @@ export function getNearestVNode(dom: Node): null | VNode {
|
||||||
let parentDom = dom.parentNode;
|
let parentDom = dom.parentNode;
|
||||||
let nearVNode = null;
|
let nearVNode = null;
|
||||||
while (parentDom) {
|
while (parentDom) {
|
||||||
vNode = parentDom[internalKeys.VNode];
|
vNode = parentDom[INTERNAL_VNODE];
|
||||||
if (vNode) {
|
if (vNode) {
|
||||||
nearVNode = vNode;
|
nearVNode = vNode;
|
||||||
break;
|
break;
|
||||||
|
@ -74,19 +70,19 @@ export function getNearestVNode(dom: Node): null | VNode {
|
||||||
|
|
||||||
// 获取 vNode 上的属性相关信息
|
// 获取 vNode 上的属性相关信息
|
||||||
export function getVNodeProps(dom: Element | Text): Props | null{
|
export function getVNodeProps(dom: Element | Text): Props | null{
|
||||||
return dom[internalKeys.props] || null;
|
return dom[INTERNAL_PROPS] || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将 DOM 属性相关信息挂到 DOM 对象的特定属性上
|
// 将 DOM 属性相关信息挂到 DOM 对象的特定属性上
|
||||||
export function updateVNodeProps(dom: Element | Text, props: Props): void {
|
export function updateVNodeProps(dom: Element | Text, props: Props): void {
|
||||||
dom[internalKeys.props] = props;
|
dom[INTERNAL_PROPS] = props;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getNonDelegatedListenerMap(dom: Element | Text): Map<string, EventListener> {
|
export function getNonDelegatedListenerMap(dom: Element | Text): Map<string, EventListener> {
|
||||||
let eventsMap = dom[internalKeys.nonDelegatedEvents];
|
let eventsMap = dom[INTERNAL_NONDELEGATEEVENTS];
|
||||||
if (!eventsMap) {
|
if (!eventsMap) {
|
||||||
eventsMap = new Map();
|
eventsMap = new Map();
|
||||||
dom[internalKeys.nonDelegatedEvents] = eventsMap;
|
dom[INTERNAL_NONDELEGATEEVENTS] = eventsMap;
|
||||||
}
|
}
|
||||||
return eventsMap;
|
return eventsMap;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue