vue3-dnd
Version:
Drag and Drop for Vue Composition API
32 lines (31 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useCollector = useCollector;
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
var _vueDemi = require("vue-demi");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function useCollector(monitor, collect, onUpdate) {
var collected = (0, _vueDemi).ref((0, _vueDemi).unref(collect)((0, _vueDemi).unref(monitor)));
var updateCollected = function() {
var nextValue = (0, _vueDemi).unref(collect)((0, _vueDemi).unref(monitor));
// This needs to be a deep-equality check because some monitor-collected values
// include XYCoord objects that may be equivalent, but do not have instance equality.
if (!(0, _fastDeepEqual).default(collected.value, nextValue)) {
collected.value = nextValue;
if (onUpdate) {
onUpdate();
}
}
};
(0, _vueDemi).watchEffect(updateCollected);
return [
collected,
updateCollected
];
}