本文整理匯總了TypeScript中@interactjs/utils.is類的典型用法代碼示例。如果您正苦於以下問題:TypeScript is類的具體用法?TypeScript is怎麽用?TypeScript is使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了is類的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: off
function off (type, listener, options) {
if (utils.is.string(type) && type.search(' ') !== -1) {
type = type.trim().split(/ +/)
}
if (utils.is.array(type)) {
for (const eventType of type) {
interact.off(eventType, listener, options)
}
return interact
}
if (utils.is.object(type)) {
for (const prop in type) {
interact.off(prop, type[prop], listener)
}
return interact
}
if (!utils.arr.contains(scope.actions.eventTypes, type)) {
events.remove(scope.document, type, listener, options)
}
else {
let index
if (type in globalEvents &&
(index = globalEvents[type].indexOf(listener)) !== -1) {
globalEvents[type].splice(index, 1)
}
}
return interact
}
示例2: collectDrops
function collectDrops ({ interactables }, draggableElement) {
const drops = []
// collect all dropzones and their elements which qualify for a drop
for (const dropzone of interactables.list) {
if (!dropzone.options.drop.enabled) { continue }
const accept = dropzone.options.drop.accept
// test the draggable draggableElement against the dropzone's accept setting
if ((utils.is.element(accept) && accept !== draggableElement) ||
(utils.is.string(accept) &&
!utils.dom.matchesSelector(draggableElement, accept)) ||
(utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {
continue
}
// query for new elements if necessary
const dropElements = utils.is.string(dropzone.target)
? dropzone._context.querySelectorAll(dropzone.target)
: utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]
for (const dropzoneElement of dropElements) {
if (dropzoneElement !== draggableElement) {
drops.push({
dropzone,
element: dropzoneElement,
})
}
}
}
return drops
}
示例3: resizable
function resizable (interactable: Interact.Interactable, options: Interact.OrBoolean<Interact.ResizableOptions> | boolean, scope: Scope) {
if (utils.is.object(options)) {
interactable.options.resize.enabled = options.enabled !== false
interactable.setPerAction('resize', options)
interactable.setOnEvents('resize', options)
if (utils.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {
interactable.options.resize.axis = options.axis
}
else if (options.axis === null) {
interactable.options.resize.axis = scope.defaults.actions.resize.axis
}
if (utils.is.bool(options.preserveAspectRatio)) {
interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio
}
else if (utils.is.bool(options.square)) {
interactable.options.resize.square = options.square
}
return interactable
}
if (utils.is.bool(options)) {
interactable.options.resize.enabled = options
return interactable
}
return interactable.options.resize
}
示例4: dropzoneMethod
function dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {
if (utils.is.object(options)) {
interactable.options.drop.enabled = options.enabled !== false
if (options.listeners) {
const normalized = utils.normalizeListeners(options.listeners)
// rename 'drop' to '' as it will be prefixed with 'drop'
const corrected = Object.keys(normalized).reduce((acc, type) => {
const correctedType = /^(enter|leave)/.test(type)
? `drag${type}`
: /^(activate|deactivate|move)/.test(type)
? `drop${type}`
: type
acc[correctedType] = normalized[type]
return acc
}, {})
interactable.off(interactable.options.drop.listeners)
interactable.on(corrected)
interactable.options.drop.listeners = corrected
}
if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }
if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }
if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }
if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }
if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }
if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }
if (/^(pointer|center)$/.test(options.overlap as string)) {
interactable.options.drop.overlap = options.overlap
}
else if (utils.is.number(options.overlap)) {
interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)
}
if ('accept' in options) {
interactable.options.drop.accept = options.accept
}
if ('checker' in options) {
interactable.options.drop.checker = options.checker
}
return interactable
}
if (utils.is.bool(options)) {
interactable.options.drop.enabled = options
return interactable
}
return interactable.options.drop
}
示例5: getActionInfo
function getActionInfo (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {
let matches = []
let matchElements = []
let element = eventTarget
function pushMatches (interactable) {
matches.push(interactable)
matchElements.push(element)
}
while (utils.is.element(element)) {
matches = []
matchElements = []
scope.interactables.forEachMatch(element, pushMatches)
const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)
if (actionInfo.action &&
!actionInfo.interactable.options[actionInfo.action.name].manualStart) {
return actionInfo
}
element = utils.dom.parentNode(element)
}
return { action: null, interactable: null, element: null }
}
示例6: function
Interactable.prototype.gesturable = function (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {
if (utils.is.object(options)) {
this.options.gesture.enabled = options.enabled !== false
this.setPerAction('gesture', options)
this.setOnEvents('gesture', options)
return this
}
if (utils.is.bool(options)) {
this.options.gesture.enabled = options
return this
}
return this.options.gesture as Interact.Options
} as GesturableMethod
示例7: dropCheckMethod
function dropCheckMethod (
interactable: Interact.Interactable,
dragEvent: InteractEvent,
event: Interact.PointerEventType,
draggable: Interact.Interactable,
draggableElement: Element,
dropElement: Element,
rect: any
) {
let dropped = false
// if the dropzone has no rect (eg. display: none)
// call the custom dropChecker or just return false
if (!(rect = rect || interactable.getRect(dropElement))) {
return (interactable.options.drop.checker
? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)
: false)
}
const dropOverlap = interactable.options.drop.overlap
if (dropOverlap === 'pointer') {
const origin = utils.getOriginXY(draggable, draggableElement, 'drag')
const page = utils.pointer.getPageXY(dragEvent)
page.x += origin.x
page.y += origin.y
const horizontal = (page.x > rect.left) && (page.x < rect.right)
const vertical = (page.y > rect.top) && (page.y < rect.bottom)
dropped = horizontal && vertical
}
const dragRect = draggable.getRect(draggableElement)
if (dragRect && dropOverlap === 'center') {
const cx = dragRect.left + dragRect.width / 2
const cy = dragRect.top + dragRect.height / 2
dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom
}
if (dragRect && utils.is.number(dropOverlap)) {
const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *
Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))
const overlapRatio = overlapArea / (dragRect.width * dragRect.height)
dropped = overlapRatio >= dropOverlap
}
if (interactable.options.drop.checker) {
dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)
}
return dropped
}
示例8: maxInteractions
function maxInteractions (newValue, scope: Interact.Scope) {
if (utils.is.number(newValue)) {
scope.autoStart.maxInteractions = newValue
return this
}
return scope.autoStart.maxInteractions
}
示例9: pointerMoveTolerance
function pointerMoveTolerance (newValue) {
if (utils.is.number(newValue)) {
scope.interactions.pointerMoveTolerance = newValue
return interact
}
return scope.interactions.pointerMoveTolerance
}
示例10: uniqueProps
export function uniqueProps (obj) {
for (const prop in obj) {
if (!obj.hasOwnProperty(prop)) { continue }
if (utils.is.object(obj)) {
uniqueProps(obj[prop])
}
else {
obj[prop] = (counter++)
}
}
}