lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
39 lines • 2.2 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import { container } from "../../engine/renderLoop/containers";
import { draggingItemPtr } from "../../pointers/draggingItemPtr";
import { setEditorDragEvent } from "../../states/useEditorDragEvent";
import { getEditorBehavior } from "../../states/useEditorBehavior";
import prevent from "./prevent";
import { editorBehaviorPtr } from "../../pointers/editorBehaviorPtr";
createEffect(() => {
if (!editorBehaviorPtr[0])
return;
container.addEventListener("dragenter", prevent);
container.addEventListener("dragover", prevent);
container.addEventListener("dragleave", prevent);
container.addEventListener("drop", prevent);
document.addEventListener("drop", prevent);
return () => {
container.removeEventListener("dragenter", prevent);
container.removeEventListener("dragover", prevent);
container.removeEventListener("dragleave", prevent);
container.removeEventListener("drop", prevent);
document.removeEventListener("drop", prevent);
};
}, [getEditorBehavior]);
export default (onDrop) => {
let draggingItem;
container.addEventListener("dragover", (e) => draggingItem && !draggingItemPtr[0] && setEditorDragEvent(e));
container.addEventListener("dragleave", () => setEditorDragEvent(undefined));
container.addEventListener("drop", () => draggingItem &&
!draggingItemPtr[0] &&
setEditorDragEvent((hitManager) => onDrop(draggingItem, hitManager)));
return (val) => (draggingItem = val);
};
const dragImage = document.createElement("img");
dragImage.src =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANpJREFUWEftV0EOwjAMs98FV25sz4BnAM+Ab2w3rvCuoKAWTUVrqm2oTEqPdeVZietmROXFyt+HC1hPBURkA2AXPHMn+Rz6x8LHvFZUARHZA+gSkpbke8/Cc0YvFXAFcEiIbiSPQUAWX0LAGcApIbqQ1H2tQBZfQoD2/5EQbaMPQv9H8dkCBn1uAlkf+x/JRUQx9YqujmRfEnJFHighmnpmPQKse27hv8iBJvbZc8BzIOSE58CkLCoOIuueW3iNHPjkxOzHSER8Hvi7eeDrvfd5YFIIAP5rVr8CLzMRtCGSCwBVAAAAAElFTkSuQmCC";
dragImage.width = 0;
dragImage.height = 0;
export const setDragImage = (e) => e.dataTransfer.setDragImage(dragImage, 0, 0);
//# sourceMappingURL=dragToCreate.js.map