All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
export class DragSourceImpl {
|
|
spec;
|
|
monitor;
|
|
connector;
|
|
constructor(spec, monitor, connector) {
|
|
this.spec = spec;
|
|
this.monitor = monitor;
|
|
this.connector = connector;
|
|
}
|
|
beginDrag() {
|
|
const spec = this.spec;
|
|
const monitor = this.monitor;
|
|
let result = null;
|
|
if (typeof spec.item === 'object') {
|
|
result = spec.item;
|
|
}
|
|
else if (typeof spec.item === 'function') {
|
|
result = spec.item(monitor);
|
|
}
|
|
else {
|
|
result = {};
|
|
}
|
|
return result ?? null;
|
|
}
|
|
canDrag() {
|
|
const spec = this.spec;
|
|
const monitor = this.monitor;
|
|
if (typeof spec.canDrag === 'boolean') {
|
|
return spec.canDrag;
|
|
}
|
|
else if (typeof spec.canDrag === 'function') {
|
|
return spec.canDrag(monitor);
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
}
|
|
isDragging(globalMonitor, target) {
|
|
const spec = this.spec;
|
|
const monitor = this.monitor;
|
|
const { isDragging } = spec;
|
|
return isDragging
|
|
? isDragging(monitor)
|
|
: target === globalMonitor.getSourceId();
|
|
}
|
|
endDrag() {
|
|
const spec = this.spec;
|
|
const monitor = this.monitor;
|
|
const connector = this.connector;
|
|
const { end } = spec;
|
|
if (end) {
|
|
end(monitor.getItem(), monitor);
|
|
}
|
|
connector.reconnect();
|
|
}
|
|
}
|