# load

Dynamic file and script loading utilities for managing modules, components, and resources.

## Functions

| Function | Description | Example |
|----------|-------------|---------|
| `all` | Load all files from glob object | `dphelper.load.all(import.meta.glob('./**/*.ts'))` |
| `file` | Load a specific file | `dphelper.load.file(path)` |
| `fileToElement` | Load file content into element | `dphelper.load.fileToElement('#target', '/content.html')` |
| `script` | Dynamically load scripts | `dphelper.load.script(['/app.js'])` |
| `toJson` | Create JSON from folder glob | `dphelper.load.toJson(glob, 'routes')` |

## Description

Dynamic loading utilities:
- **Module Loading** - Load ES modules via Vite/esbuild
- **File Loading** - Fetch and inject content
- **Script Loading** - Dynamic script injection
- **Caching** - Optional result caching

## Usage Examples

### Load All Modules (Vite)

```javascript
// Load all TypeScript modules from folder
dphelper.load.all(
  import.meta.glob('./components/*.ts', { eager: true }),
  'components'
);

// Components are now loaded and cached
console.log(window.components); // ['./components/Button.ts', ...]
```

### Load File to Element

```javascript
// Load HTML content into element
await dphelper.load.fileToElement('#content', '/partials/home.html');

// Loads home.html and inserts into #content
// Content is sanitized for XSS protection
```

### Dynamic Script Loading

```javascript
// Load multiple scripts
dphelper.load.script([
  'https://cdn.example.com/lib1.js',
  'https://cdn.example.com/lib2.js'
], 'body');

// Scripts load asynchronously
// Appended to specified element (default: html)
```

### Create JSON from Glob

```javascript
// Create route registry from folder
dphelper.load.toJson(
  import.meta.glob('./routes/*.ts'),
  'routes'
);

// Creates window.routes as JSON object
// Keys are file paths, values are modules
```

## Advanced Usage

### Component Lazy Loading

```javascript
// Load components on demand
async function loadComponent(name) {
  const modules = import.meta.glob('./components/*.vue');
  const loader = modules[`./components/${name}.vue`];

  if (loader) {
    return await loader();
  }

  throw new Error(`Component ${name} not found`);
}

// Usage
const Button = await loadComponent('Button');
```

### Dynamic Module Loading

```javascript
class ModuleLoader {
  constructor(basePath) {
    this.basePath = basePath;
  }

  async load(moduleName) {
    const modules = import.meta.glob('./modules/*.js');
    const key = `./modules/${moduleName}.js`;

    if (modules[key]) {
      return await modules[key]();
    }

    return null;
  }

  loadAll() {
    dphelper.load.all(
      import.meta.glob('./modules/*.js', { eager: true }),
      'allModules'
    );
  }
}
```

## Details

- **Author:** Dario Passariello
- **Version:** 0.0.3
- **Creation Date:** 20210101
- **Last Modified:** 20260228
- **Environment:** Client-side only (browser)

---

*Automatically generated document*
