本文整理匯總了TypeScript中@interactjs/utils.Signals類的典型用法代碼示例。如果您正苦於以下問題:TypeScript Signals類的具體用法?TypeScript Signals怎麽用?TypeScript Signals使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Signals類的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: setTimeout
interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {
const timer = interaction.pointers[pointerIndex].hold
const path = utils.dom.getPath(eventTarget)
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type: 'hold',
targets: [] as EventTargetList,
path,
element: null,
}
for (const element of path) {
signalArg.element = element
signals.fire('collect-targets', signalArg)
}
if (!signalArg.targets.length) { return }
let minDuration = Infinity
for (const target of signalArg.targets) {
const holdDuration = target.eventable.options.holdDuration
if (holdDuration < minDuration) {
minDuration = holdDuration
}
}
timer.duration = minDuration
timer.timeout = setTimeout(() => {
fire({
interaction,
eventTarget,
pointer,
event,
type: 'hold',
}, scope)
}, minDuration)
})
示例2:
function collectEventTargets<T extends string> ({ interaction, pointer, event, eventTarget, type }: {
interaction: Interaction,
pointer: Interact.PointerType,
event: Interact.PointerEventType,
eventTarget: Interact.EventTarget,
type: T
}) {
const pointerIndex = interaction.getPointerIndex(pointer)
const pointerInfo = interaction.pointers[pointerIndex]
// do not fire a tap event if the pointer was moved before being lifted
if (type === 'tap' && (interaction.pointerWasMoved ||
// or if the pointerup target is different to the pointerdown target
!(pointerInfo && pointerInfo.downTarget === eventTarget))) {
return []
}
const path = utils.dom.getPath(eventTarget)
const signalArg = {
interaction,
pointer,
event,
eventTarget,
type,
path,
targets: [] as EventTargetList,
element: null,
}
for (const element of path) {
signalArg.element = element
signals.fire('collect-targets', signalArg)
}
if (type === 'hold') {
signalArg.targets = signalArg.targets.filter((target) =>
target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)
}
return signalArg.targets
}
示例3: collectEventTargets
function fire<T extends string> (arg: {
interaction: Interaction,
pointer: Interact.PointerType,
event: Interact.PointerEventType,
eventTarget: Interact.EventTarget,
targets?: EventTargetList,
pointerEvent?: PointerEvent<T>,
type: T
}, scope: Interact.Scope) {
const {
interaction, pointer, event, eventTarget,
type = (arg as any).pointerEvent.type,
targets = collectEventTargets(arg),
} = arg
const {
pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),
} = arg
const signalArg = {
interaction,
pointer,
event,
eventTarget,
targets,
type,
pointerEvent,
}
for (let i = 0; i < targets.length; i++) {
const target = targets[i]
for (const prop in target.props || {}) {
(pointerEvent as any)[prop] = target.props[prop]
}
const origin = utils.getOriginXY(target.eventable, target.element)
pointerEvent._subtractOrigin(origin)
pointerEvent.eventable = target.eventable
pointerEvent.currentTarget = target.element
target.eventable.fire(pointerEvent)
pointerEvent._addOrigin(origin)
if (pointerEvent.immediatePropagationStopped ||
(pointerEvent.propagationStopped &&
(i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {
break
}
}
signals.fire('fired', signalArg)
if (type === 'tap') {
// if pointerEvent should make a double tap, create and fire a doubletap
// PointerEvent and use that as the prevTap
const prevTap = pointerEvent.double
? fire({
interaction,
pointer,
event,
eventTarget,
type: 'doubletap',
}, scope)
: pointerEvent
interaction.prevTap = prevTap
interaction.tapTime = prevTap.timeStamp
}
return pointerEvent
}