open-index/open-npm huggingface dataset:
npm package: @pluslabs/launchpad
Description: Bootstrap and manage the Magic monorepo workspace
Author: pluslabs
Latest version: 1.1.1

# @pluslabs/launchpad

CLI tool to bootstrap and manage the Magic monorepo workspace.

## Quick Start

```bash
# Bootstrap launchpad in current directory
npx @pluslabs/launchpad
```

This will:
- Set up the launchpad scaffolding (scripts, docs, configs)
- Clone any missing repositories (existing repos are preserved)

## Commands

### Default (setup)

```bash
npx @pluslabs/launchpad
```

Initializes launchpad in the current directory. Works for both:
- Fresh setup (empty folder)
- Converting existing folder with repos already cloned

### Sync

```bash
npx @pluslabs/launchpad sync
```

Sync all repos to their default branch:
1. Stash any uncommitted changes
2. Checkout the default branch (main/master)
3. Pull latest changes
4. Pop the stash (if any)

## Requirements

- Node.js 18+
- GitHub access via SSH keys or GitHub CLI (`gh`)

## Authentication

The CLI checks for GitHub authentication in this order:
1. SSH keys (tries `ssh -T git@github.com`)
2. GitHub CLI (`gh auth status`)

If neither is available, you'll be prompted to set up authentication.

## License

MIT
npm package: @plusnew/dnd
Description: library for doing drag and drop dom-less with plusnew
Author: Carlo Jeske
Latest version: 1.1.2

# plusnew-dnd [![Coverage Status](https://coveralls.io/repos/github/plusnew/dnd/badge.svg?branch=master)](https://coveralls.io/github/plusnew/dnd)

This library is for typesafe drag-and-drop in plusnew
Beware that this is a very abstract drag and drop library, this library does no dom handling whatsoever.

```ts
import plusnew, { component } from '@plusnew/core';
import dndFactory from '@plusnew/dnd';

// Create a drag-and-drop container
const drag = dndFactory<{id: number}>();

document.addEventListener('mouseUp', () => drag.store.dispatch({ type: "DRAG_STOP" });

const Component = component(
  'ComponentName',
  () =>
    <span
      onmouseMove={(evt) => drag.store.dispatch({ type: "DRAG_MOVE", position: { x: evt.clientX, y: evt.clientY }})}
    >
      <drag.Component
        // onDrop gets called when drag stop happened, no matter where it gets dropped
        // if you want to track if it got dropped above an dom element here,
        // than you need to track that yourself with mouseenter and mouseleave
        onDrop={(dragEvent: {x: number, y: number, payload: { id: number }}) => {
          console.log(dragEvent.deltaPosition.x, dragEvent.deltaPosition.y); // In these variables are the delta positions, how much it moved compared to the startPosition
          console.log(dragEvent.payload); // This contains the payload value which was called at drag.startDrag
        }
      }>{(dragState): { active: false } { active: true, deltaPosition: { x: number, y: number }, payload: { id: number }} =>
        <span
          onmouseDown={evt => drag.store.dispatch({
            type: "DRAG_START",
            position: {
              x: evt.clientX, // start position
              y: evt.clientY,
            },
            payload: {
              id: 0
            }
          })}
        />
      }</Drag>
    </span>
)
```
npm package: @plusnew/enzyme-adapter
Description: adapter for enzyme testsuite to the plusnew framework
Author: Carlo Jeske
Latest version: 1.1.6

# Enzyme Adapter Plusnew [![Build Status](https://api.travis-ci.com/plusnew/enzyme-adapter.svg?branch=master)](https://travis-ci.com/plusnew/enzyme-adapter) [![Coverage Status](https://coveralls.io/repos/github/plusnew/enzyme-adapter/badge.svg?branch=master)](https://coveralls.io/github/plusnew/enzyme-adapter)

Enzyme Adapter for the plusnew framework