本文整理汇总了TypeScript中nerv-utils.MapClass类的典型用法代码示例。如果您正苦于以下问题:TypeScript MapClass类的具体用法?TypeScript MapClass怎么用?TypeScript MapClass使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MapClass类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: attachEvent
export function attachEvent (
domNode: Element,
eventName: string,
handler: Function
) {
eventName = fixEvent(domNode, eventName)
/* istanbul ignore next */
if (eventName === ONPROPERTYCHANGE) {
processOnPropertyChangeEvent(domNode, handler)
return
}
let delegatedRoots = delegatedEvents.get(eventName)
if (unbubbleEvents[eventName] === 1) {
if (!delegatedRoots) {
delegatedRoots = new MapClass()
}
const event = attachEventToNode(domNode, eventName, delegatedRoots)
delegatedEvents.set(eventName, delegatedRoots)
if (isFunction(handler)) {
delegatedRoots.set(domNode, {
eventHandler: handler,
event
})
}
} else {
if (!delegatedRoots) {
delegatedRoots = {
items: new MapClass()
}
delegatedRoots.event = attachEventToDocument(
doc,
eventName,
delegatedRoots
)
delegatedEvents.set(eventName, delegatedRoots)
}
if (isFunction(handler)) {
delegatedRoots.items.set(domNode, handler)
}
}
}
示例2: patchKeyedChildren
//.........这里部分代码省略.........
// Mark all nodes as inserted.
for (i = 0; i < bLeft; i++) {
sources[i] = -1
}
let moved = false
let pos = 0
let patched = 0
// When sizes are small, just loop them through
if (bLeft <= 4 || aLeft * bLeft <= 16) {
for (i = aStart; i <= aEnd; i++) {
aNode = a[i]
if (patched < bLeft) {
for (j = bStart; j <= bEnd; j++) {
bNode = b[j]
if (aNode.key === bNode.key) {
sources[j - bStart] = i
if (pos > j) {
moved = true
} else {
pos = j
}
patch(aNode, bNode, dom, context, isSvg)
patched++
a[i] = null as any
break
}
}
}
}
} else {
const keyIndex = new MapClass()
for (i = bStart; i <= bEnd; i++) {
keyIndex.set(b[i].key, i)
}
for (i = aStart; i <= aEnd; i++) {
aNode = a[i]
if (patched < bLeft) {
j = keyIndex.get(aNode.key)
if (j !== undefined) {
bNode = b[j]
sources[j - bStart] = i
if (pos > j) {
moved = true
} else {
pos = j
}
patch(aNode, bNode, dom, context, isSvg)
patched++
a[i] = null as any
}
}
}
}
if (aLeft === aLength && patched === 0) {
unmountChildren(a, dom)
while (bStart < bLeft) {
node = b[bStart]
bStart++
attachNewNode(dom, createElement(node, isSvg, context), null)
示例3: detachEvent
export function detachEvent (
domNode: Element,
eventName: string,
handler: Function
) {
eventName = fixEvent(domNode, eventName)
if (eventName === ONPROPERTYCHANGE) {
return
}
const delegatedRoots = delegatedEvents.get(eventName)
if (unbubbleEvents[eventName] === 1 && delegatedRoots) {
const event = delegatedRoots.get(domNode)
if (event) {
domNode.removeEventListener(parseEventName(eventName), event.event, false)
/* istanbul ignore next */
const delegatedRootsSize = delegatedRoots.size
if (delegatedRoots.delete(domNode) && delegatedRootsSize === 0) {
delegatedEvents.delete(eventName)
}
}
} else if (delegatedRoots && delegatedRoots.items) {
const items = delegatedRoots.items
if (items.delete(domNode) && items.size === 0) {
doc.removeEventListener(
parseEventName(eventName),
delegatedRoots.event,
false
)
delegatedEvents.delete(eventName)
}
}
}