open-index/open-npm huggingface dataset:
npm package: @scarfe/ui
Description: Personal React + TypeScript UI components (Dropdown wrapper).
Latest version: 0.3.2

# @mertcankocak/ui

Kişisel kullanım için **React + TypeScript** UI bileşen paketi. Şimdilik sadece **Dropdown wrapper** içerir.

## Kurulum

```bash
npm i @mertcankocak/ui
```

## Kullanım

```tsx
import * as React from "react";
import {
  Dropdown,
  MultiSelect,
  type DropdownOption,
  type MultiSelectOption,
} from "@scarfe/ui";

const options: DropdownOption[] = [
  { label: "Türkiye", value: "TR" },
  { label: "Almanya", value: "DE" },
];

export function Example() {
  const [country, setCountry] = React.useState("");
  const [countries, setCountries] = React.useState<string[]>([]);

  const multiOptions: MultiSelectOption[] = [
    { label: "İstanbul", value: "istanbul" },
    { label: "Ankara", value: "ankara" },
    { label: "İzmir", value: "izmir" },
  ];

  return (
    <>
      <Dropdown
        options={options}
        value={country}
        onValueChange={setCountry}
        placeholder="Ülke seç"
        aria-label="Country"
      />

      <MultiSelect
        options={multiOptions}
        values={countries}
        onValuesChange={setCountries}
        aria-label="Cities"
        size={3}
      />
    </>
  );
}
```

## Formik + MUI örneği (FormikTextField)

`FormikTextField` kullanmak için consumer projende şunlar kurulu olmalı:
`formik`, `@mui/material`, `@emotion/react`, `@emotion/styled`, `lodash.debounce`.

```tsx
import { Formik, Form } from "formik";
import { FormikTextField } from "@scarfe/ui";

export function ExampleFormik() {
  return (
    <Formik initialValues={{ city: "" }} onSubmit={() => {}}>
      <Form>
        <FormikTextField
          name="city"
          label="City"
          fieldToSearch="city"
          onSuggestionSearch={async (_field, term) => {
            return ["Istanbul", "Ankara", "Izmir"].filter((x) =>
              x.toLowerCase().includes(term.toLowerCase())
            );
          }}
        />
      </Form>
    </Formik>
  );
}
```

## Formik + MUI örneği (FormikDropdown)

```tsx
import { Formik, Form } from "formik";
import { FormikDropdown } from "@scarfe/ui";

export function ExampleDropdown() {
  return (
    <Formik initialValues={{ country: "" }} onSubmit={() => {}}>
      <Form>
        <FormikDropdown
          name="country"
          label="Country"
          placeholder="Seçiniz"
          options={[
            { label: "Türkiye", value: "TR" },
            { label: "Almanya", value: "DE" },
          ]}
        />
      </Form>
    </Formik>
  );
}
```

## Build

```bash
npm run build
```

## Yayınlama (tamamen ücretsiz)

NPM'e **public** paket yayınlamak ücretsizdir.

1. İsim çakışmaması için `package.json` içindeki `"name"` alanını kendine göre değiştir.
2. NPM hesabınla giriş yap:

```bash
npm login
```

3. Public yayınla:

```bash
npm publish --access public
```
npm package: @scarletsky/rollup-plugin-javascript-obfuscator
Description: Plugin for Rollup to obfuscate JS code
Author: Wain-PC
Latest version: 1.0.4

rollup-plugin-javascript-obfuscator
==========================
[![Build Status](https://travis-ci.org/Wain-PC/rollup-plugin-javascript-obfuscator.svg?branch=master)](https://travis-ci.org/Wain-PC/rollup-plugin-javascript-obfuscator)
[![Coverage Status](https://coveralls.io/repos/github/Wain-PC/rollup-plugin-javascript-obfuscator/badge.svg?branch=master)](https://coveralls.io/github/Wain-PC/rollup-plugin-javascript-obfuscator?branch=master)

Rollup plugin for [javascript-obfuscator](https://github.com/javascript-obfuscator/javascript-obfuscator).
## Installation

Install the package:

- npm `npm install --save-dev rollup-plugin-javascript-obfuscator`
- yarn `yarn add --dev rollup-plugin-javascript-obfuscator`

## Usage

[Pass any options available in the obfuscator](https://github.com/javascript-obfuscator/javascript-obfuscator#javascript-obfuscator-options).

```javascript
import { rollup } from 'rollup'
import obfuscatorPlugin from 'rollup-plugin-javascript-obfuscator'

	rollup({
		entry: 'main.js',
		plugins: [
			//Pass options here (optional)
			obfuscatorPlugin({
			  compact: true
			})
		]
	})
```

## Source Maps
Inline source map configuration:
```
{
	sourceMap: true,
	sourceMapMode: 'inline'
}
```
Separate source map configuration:
```
{
	sourceMap: true
}
```
npm package: @scarlett-game-studio/canvas-prebuilt
Description: Prebuilt versions of node-canvas for electron as a drop-in replacement
Author: Caleb Hearon
Latest version: 2.0.0-alpha.13-electron.1

**NOTE:** the `canvas-prebuilt` package is deprecated. As of version 2,
[`canvas`](https://github.com/Automattic/node-canvas) itself bundles prebuilt
versions from this repo. Install by running
```
npm install --save canvas
```
…and use `canvas` as usual.

# Using `canvas-prebuilt` (deprecated)

This is a drop-in replacement for `canvas` that does not require any compiling.
The repo is just a set of scripts that downloads a specific `node-canvas` version, builds it
and bundles it on all platforms. It's meant to run on Travis and AppVeyor but it can
be run locally too.

If you still need to use prebuilt 1.x and 2-alpha versions of `canvas`,
run `npm install --save canvas-prebuilt`
or replace `canvas` with `canvas-prebuilt` in your dependencies.

In your code, use `require('canvas-prebuilt')` wherever you would otherwise use `require('canvas')`.

# Linux technicalities

Linux users will need glibc >= 2.13.1 (Ubuntu 14.04+, Debian 7+, etc)

If you are using fonts, you might see some FontConfig warnings which are harmless:

| Situation | Message | Meaning |
| --------- | ------- | ------- |
| You have an old version of FontConfig on your system | **Fontconfig warning: line 142: blank doesn't take any effect anymore. please remove it from your fonts.conf** | You don't need to do anything, but removing said line or upgrading FontConfig on your system should fix it |
| You don't have FontConfig | **Fontconfig error: Cannot load default config file** | You don't have any fonts on your system, so if you want to use the text APIs you'll either need to install FontConfig or use `Canvas.registerFont` |

# Releases

See the [releases page](https://github.com/node-gfx/node-canvas-prebuilt/releases) on GitHub to check if your OS, architecture, and node are supported. Currently we're focused on x64 for Windows, Mac and Linux for most recent Node versions.

# Bundling

The bundling scripts just take a regularly compiled executable (canvas.node in this case)
and look at which non-system libraries it links against. Those libraries are then copied to the release
directory and binaries are updated if necessary to refer to them.

The strategies for bundling could be applied to other projects too since they're general:

* On macOS, [macpack](https://github.com/chearon/macpack) is used to search dependencies, filter out non-system ones, and update binary references
* On Windows, [Dependency Walker](http://www.dependencywalker.com)'s CLI is used to search dependencies. Anything in the MSYS2 folder is considered non-system. Patching is not necessary because Windows looks for dlls in the same folder as the binary
* On Linux, [pax-utils](https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities) searches dependencies, and everything not in `/lib` is non-system. The custom `binding.gyp` compiles `canvas.node` to look inside its own directory for dependencies
npm package: @scarlett-player/airplay
Description: AirPlay Plugin for Scarlett Player
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/airplay

AirPlay casting plugin for Scarlett Player. Enables wireless streaming to Apple TV and AirPlay-compatible devices.

## Installation

```bash
npm install @scarlett-player/core @scarlett-player/airplay
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createHLSPlugin } from '@scarlett-player/hls';
import { airplayPlugin } from '@scarlett-player/airplay';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [createHLSPlugin(), airplayPlugin()],
});

// Show AirPlay picker (Safari only)
player.requestAirPlay();
```

## Browser Support

AirPlay is only supported in **Safari** on macOS and iOS.

## API

```typescript
// Check if AirPlay is available
const plugin = player.getPlugin('airplay');
plugin.isAvailable();  // true if AirPlay devices detected

// Check if currently casting
plugin.isActive();     // true if casting to AirPlay

// Show device picker
plugin.showPicker();
```

## Events

```typescript
player.on('airplay:available', () => {
  // AirPlay devices detected
});

player.on('airplay:connected', () => {
  // Started casting
});

player.on('airplay:disconnected', () => {
  // Stopped casting
});
```

## License

MIT
npm package: @scarlett-player/chromecast
Description: Chromecast Plugin for Scarlett Player
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/chromecast

Chromecast plugin for Scarlett Player. Enables casting to Chromecast and Google Cast-compatible devices.

## Installation

```bash
npm install @scarlett-player/core @scarlett-player/chromecast
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createHLSPlugin } from '@scarlett-player/hls';
import { chromecastPlugin } from '@scarlett-player/chromecast';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [
    createHLSPlugin(),
    chromecastPlugin({
      receiverApplicationId: 'YOUR_APP_ID', // Optional, uses default media receiver
    }),
  ],
});

// Start casting
await player.requestChromecast();
```

## Configuration

```typescript
chromecastPlugin({
  // Custom receiver app ID (optional)
  receiverApplicationId: 'YOUR_APP_ID',

  // Auto-join existing session
  autoJoinPolicy: 'ORIGIN_SCOPED',
});
```

## API

```typescript
const plugin = player.getPlugin('chromecast');

// Check availability
plugin.isAvailable();  // true if Cast SDK loaded

// Check if casting
plugin.isActive();     // true if casting

// Show device picker
await plugin.requestSession();

// Stop casting
plugin.stopCasting();
```

## Events

```typescript
player.on('chromecast:available', () => {
  // Cast SDK ready
});

player.on('chromecast:connected', ({ deviceName }) => {
  // Connected to device
});

player.on('chromecast:disconnected', () => {
  // Disconnected
});
```

## License

MIT
npm package: @scarlett-player/core
Description: Core player with plugin system for Scarlett Player
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/core

Core player engine for Scarlett Player - a lightweight, plugin-based video player.

## Installation

```bash
npm install @scarlett-player/core
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createHLSPlugin } from '@scarlett-player/hls';
import { uiPlugin } from '@scarlett-player/ui';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [createHLSPlugin(), uiPlugin()],
});

await player.init();
await player.load('https://example.com/video.m3u8');
```

## API

### ScarlettPlayer

```typescript
const player = new ScarlettPlayer({
  container: HTMLElement,      // Required: container element
  src?: string,                // Initial source URL
  poster?: string,             // Poster image URL
  autoplay?: boolean,          // Auto-play on load (default: false)
  muted?: boolean,             // Start muted (default: false)
  loop?: boolean,              // Loop playback (default: false)
  volume?: number,             // Initial volume 0-1 (default: 1)
  plugins?: Plugin[],          // Plugins to register
  logLevel?: 'debug' | 'info' | 'warn' | 'error',
});
```

### Methods

```typescript
player.init()                  // Initialize player
player.load(src)               // Load a source
player.play()                  // Start playback
player.pause()                 // Pause playback
player.seek(time)              // Seek to time in seconds
player.setVolume(0-1)          // Set volume
player.setMuted(boolean)       // Mute/unmute
player.setPlaybackRate(rate)   // Set playback speed
player.requestFullscreen()     // Enter fullscreen
player.exitFullscreen()        // Exit fullscreen
player.destroy()               // Cleanup and destroy
```

### Events

```typescript
player.on('playback:play', () => {});
player.on('playback:pause', () => {});
player.on('playback:ended', () => {});
player.on('playback:timeupdate', ({ currentTime }) => {});
player.on('playback:seeking', ({ time }) => {});
player.on('volume:change', ({ volume, muted }) => {});
player.on('fullscreen:change', ({ fullscreen }) => {});
player.on('quality:change', ({ quality, auto }) => {});
player.on('error', (error) => {});
```

## Plugins

The core package provides the foundation. Add plugins for functionality:

- `@scarlett-player/hls` - HLS streaming
- `@scarlett-player/native` - MP4, WebM, MOV, MKV
- `@scarlett-player/ui` - Player controls
- `@scarlett-player/airplay` - AirPlay casting
- `@scarlett-player/chromecast` - Chromecast casting

## License

MIT
npm package: @scarlett-player/hls
Description: HLS Provider Plugin for Scarlett Player
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/hls

HLS playback plugin for Scarlett Player. Uses hls.js with native Safari fallback.

## Installation

```bash
npm install @scarlett-player/core @scarlett-player/hls
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createHLSPlugin } from '@scarlett-player/hls';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [createHLSPlugin()],
});

await player.init();
await player.load('https://example.com/video.m3u8');
```

## Features

- Adaptive bitrate streaming
- Quality level selection
- Live stream support with DVR
- Native Safari HLS fallback
- Automatic hls.js loading

## Configuration

```typescript
createHLSPlugin({
  // hls.js config options
  hlsConfig: {
    maxBufferLength: 30,
    maxMaxBufferLength: 600,
  },
  // Prefer native HLS when available (Safari)
  preferNativeHLS: false,
});
```

## Quality Selection

```typescript
// Get available qualities
const qualities = player.getQualities();
// [{ index: 0, height: 1080, bitrate: 5000000 }, ...]

// Set quality (use -1 for auto)
player.setQuality(0);  // Highest quality
player.setQuality(-1); // Auto/ABR

// Get current quality
const current = player.getCurrentQuality();
```

## License

MIT
npm package: @scarlett-player/native
Description: Native Video Provider Plugin for Scarlett Player (MP4, WebM, MOV, MKV)
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/native

Native video playback plugin for Scarlett Player. Supports MP4, WebM, MOV, MKV, and OGV formats.

## Installation

```bash
npm install @scarlett-player/core @scarlett-player/native
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createNativePlugin } from '@scarlett-player/native';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [createNativePlugin()],
});

await player.init();
await player.load('https://example.com/video.mp4');
```

## Supported Formats

- **MP4** - H.264/AAC (most common)
- **WebM** - VP8/VP9/Opus
- **MOV** - QuickTime (H.264/AAC)
- **MKV** - Matroska (browser support varies)
- **OGV/OGG** - Theora/Vorbis

## Configuration

```typescript
createNativePlugin({
  preload: 'metadata', // 'none' | 'metadata' | 'auto'
});
```

## License

MIT
npm package: @scarlett-player/ui
Description: UI Controls Plugin for Scarlett Player
Author: The Stream Platform
Latest version: 1.0.2

# @scarlett-player/ui

UI controls plugin for Scarlett Player. Provides a modern, customizable player interface.

## Installation

```bash
npm install @scarlett-player/core @scarlett-player/ui
```

## Usage

```typescript
import { ScarlettPlayer } from '@scarlett-player/core';
import { createHLSPlugin } from '@scarlett-player/hls';
import { uiPlugin } from '@scarlett-player/ui';

const player = new ScarlettPlayer({
  container: document.getElementById('player'),
  plugins: [
    createHLSPlugin(),
    uiPlugin({
      theme: { accentColor: '#e50914' },
    }),
  ],
});
```

## Features

- Play/pause, seek, volume controls
- Fullscreen toggle
- Quality selector
- Progress bar with buffering indicator
- Time display (current / duration)
- Keyboard shortcuts
- Customizable theming
- Auto-hide controls

## Keyboard Shortcuts

| Key | Action |
|-----|--------|
| Space / K | Play/Pause |
| M | Toggle mute |
| F | Toggle fullscreen |
| Left Arrow | Seek -5s |
| Right Arrow | Seek +5s |
| Up Arrow | Volume +10% |
| Down Arrow | Volume -10% |

## Theming

```typescript
uiPlugin({
  theme: {
    accentColor: '#e50914',      // Progress bar, highlights
    primaryColor: '#ffffff',      // Text, icons
    backgroundColor: 'rgba(0, 0, 0, 0.8)',
    controlBarHeight: 48,
    iconSize: 24,
  },
  hideDelay: 3000,  // Auto-hide delay in ms
});
```

## License

MIT