Files
igny8/frontend/node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts
2025-11-09 10:27:02 +00:00

37 lines
957 B
TypeScript

import { NativeDragSource } from './NativeDragSource.js'
import { nativeTypesConfig } from './nativeTypesConfig.js'
export function createNativeDragSource(
type: string,
dataTransfer?: DataTransfer,
): NativeDragSource {
const config = nativeTypesConfig[type]
if (!config) {
throw new Error(`native type ${type} has no configuration`)
}
const result = new NativeDragSource(config)
result.loadDataTransfer(dataTransfer)
return result
}
export function matchNativeItemType(
dataTransfer: DataTransfer | null,
): string | null {
if (!dataTransfer) {
return null
}
const dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])
return (
Object.keys(nativeTypesConfig).filter((nativeItemType) => {
const typeConfig = nativeTypesConfig[nativeItemType]
if (!typeConfig?.matchesTypes) {
return false
}
return typeConfig.matchesTypes.some(
(t) => dataTransferTypes.indexOf(t) > -1,
)
})[0] || null
)
}