xatto
Version:
xatto is View Layer Library based on Function and Context using VirtualDOM. This is developed by forking from jorgebucaran/superfine.
39 lines (32 loc) • 1.14 kB
text/typescript
import { LIFECYCLE, NODE } from './consts/glueNodeAttributeNames'
import { DESTROY, REMOVE } from './consts/lifecycleNames'
import { PROPS } from './consts/vNodeAttributeNames'
import { deepGet } from './deepGet'
import { GlueNode } from './GlueNode'
const shouldBeCaptureLifecycles = {}
shouldBeCaptureLifecycles[REMOVE] = 1
shouldBeCaptureLifecycles[DESTROY] = 2
export function resolveLifecycle (
rawLifecycle: string,
captureLifecycle: string,
glueNode: GlueNode,
removedNodes: WeakMap<Node, boolean>
) {
const shouldBeCaptureLifecycle = shouldBeCaptureLifecycles[rawLifecycle]
const shouldBeCaptureLifecycleByCaptured =
shouldBeCaptureLifecycles[captureLifecycle]
const lifecycle =
(shouldBeCaptureLifecycleByCaptured &&
(!shouldBeCaptureLifecycle ||
shouldBeCaptureLifecycle < shouldBeCaptureLifecycleByCaptured) &&
captureLifecycle) ||
rawLifecycle
if (REMOVE == lifecycle) {
const node = glueNode[NODE]!
return removedNodes.get(node) ||
(REMOVE == rawLifecycle && !deepGet(glueNode, `${PROPS}.on${REMOVE}`))
? DESTROY
: REMOVE
}
return lifecycle
}