Skip to content

jhsi/tailight-core

Repository files navigation

Tailight

Tailight.-.Demo.mp4

About

Tailight.js is an experimental library created to help create hoverable desire paths between any two HTML elements. It also can be used to create a light path between two boxed divs.

Want to see the live example? View it by clicking here

Installation

Since this is a local project, you can clone it and build it:

# Clone the repository
git clone https://github.com/jhsi/tailight-core.git
cd tailight-core

# Install dependencies
npm install

# Build the library
npm run build

Usage

Import the library and create a desire path between two HTML elements:

// Import from the built file
import { createDesirePath } from './dist/tailight-core.es.js';

const desirePath = createDesirePath({
    src: sourceElement,      // Source HTML element
    dest: destinationElement, // Destination HTML element
    onPathMouseEnter: () => {
        // Optional: Handle mouse enter on path
    },
    onPathMouseLeave: () => {
        // Optional: Handle mouse leave on path
    },
    tolerance: 0,            // Optional: Path tolerance
    options: {
        include: {
            src: true,       // Optional: Include source element in path
            dest: false      // Optional: Include destination element in path
        },
        overlayCSS: {
            // Optional: Customize debug overlay appearance
            fill: 'rgba(255,255,255,0.2)',
            stroke: 'white',
            'stroke-width': '0px',
            'stroke-opacity': '0',
            'mix-blend-mode': 'multiply'
        }
    },
    showOverlay: true              // Optional: Enable the overlay
});

// Clean up when done
desirePath.destroy();

API Reference

createDesirePath(options)

Creates a new desire path between two elements.

Options

Option Type Description
src HTMLElement Source element
dest HTMLElement Destination element
onPathMouseEnter Function Callback when mouse enters path
onPathMouseLeave Function Callback when mouse leaves path
options Object Additional configuration options
showOverlay boolean Enable debug mode which shows the overlay

Directory structure

src/
├── index.ts              # Main export
├── core.ts               # Core instantiation, handling of events
├── geometry.ts           # Triangle and point-in-polygon math
└── overlay.ts            # Optional SVG overlay renderer