import { Behaviour } from "./Component.js";

/**
 * UsageMarker indicates an object is currently being interacted with.  
 * Components like {@link DragControls} add this to prevent accidental deletion  
 * by {@link DeleteBox} while the user is dragging. 
 *
 * @example Check if object is in use
 * ```ts
 * const marker = object.getComponent(UsageMarker);
 * if (marker?.isUsed) {
 *   console.log("Object is being used by:", marker.usedBy);
 * }
 * ```
 *
 * @summary Marks object as currently being interacted with
 * @category Interactivity
 * @group Components
 * @see {@link DeleteBox} respects this marker
 * @see {@link DragControls} adds this during drag
 */
export class UsageMarker extends Behaviour
{
    public isUsed: boolean = true;
    public usedBy: any = null;
}

/**
 * An empty component that can be used to mark an object as interactable.
 * @group Components
 */
/** @deprecated */
export class Interactable extends Behaviour {}