open-index/open-npm huggingface dataset:
npm package: @rbxts/promptifier
Description: This is a package designed to ease the use of prompt-like UI structures prompting users based on a choice or just a notification that could be acknowledged.
Author: dev-syn
Latest version: 0.3.1

# Promptifier
This is a package designed to ease the use of prompt-like UI structures prompting users based on a choice or just a notification that could be acknowledged.

This allows you to create "prompts" that popup on a players screen prompting with a choice or notice.

## Prompt Options

(destroyOnTimeout: boolean): Whether the prompt should be destroyed once it times out. Defaults(true)


## Promptifier Built-in Prompt Modes

### Compact
This prompt mode has a close button on the top right with a confirm button in the bottom middle.
### Choice
This prompt mode has a title with a message box and a accept or decline button next to each other at the bottom.

---
### Custom
This prompt mode allows you to use the UIResolver class which you assign instances to represent your prompt structure.

#### UIResolver
A more detailed description can be found within the UIResolver source file.

    ('BG': Frame): The background of the whole prompt interface.

        ('title': TextLabel): The title of the prompt.

        ('content': ScrollingFrame | Frame): The content of the prompt which can consist of
            a ScrollingFrame for any size of content or a Frame that contains a content.

        ('acceptBtn': TextButton | ImageButton): This is a button type for accept/proceed/submit,
            this is the button that proceeds the prompt as fulfilled.
            
        ('declineBtn': TextButton | ImageButton): This is a button type for decline/halt/dismiss,
            this is the button that dismisses the prompt as fulfilled.


## Promptifier Events
Prompt has event properties that can be used to listen to events that occur.

#### OnFullfill
    Signal<[accepted: boolean,payload?: PromptPayload]>  
This event is fired when the prompt has been submitted or dismissed.
##### Arguments
    accepted: boolean -> Whether the prompt was accepted or declined.
    payload?: PromptPayload -> If the prompt was accepted, It's response payload.
---
#### OnCancel
    Signal<string | undefined>
This event is fired when the `Promptifier:Cancel()` method is called for external reasons.
##### Arguments
    reason?: string -> The reason why the prompt was cancelled.
npm package: @rbxts/prvdmwrong-lifecycles
Description: Implements a "small" amount of lifecycle events for providers.

We'll admit. We've gotten a bit too lifecycle happy:

- `:onPostSimulation(dt: number)` runs every `RunService.PostSimulation`
- `:onPreSimulation(dt: number)` runs every `RunService.PreSimul
Author: znotfireman
Latest version: 0.2.0-dev.8

# Lifecycles for Prvd 'M Wrong

Implements a "small" amount of lifecycle events for providers.

We'll admit. We've gotten a bit too lifecycle happy:

- `:onPostSimulation(dt: number)` runs every `RunService.PostSimulation`
- `:onPreSimulation(dt: number)` runs every `RunService.PreSimulation`
- `:onPreRender(dt: number)` runs every `RunService.PreRender`
- `:onPlayerAdded(player: Player)` runs every `Player.PlayerAdded`
- `:onPlayerLeaving(player: Player)` runs every `Player.PlayerLeaving`
- `:onShutdown()` binds to `game:BindToClose` for games and `plugin.Unloading` for plugins

This package is part of [Prvd 'M Wrong.](https://team-fireworks.github.io/prvdmwrong/latest)
npm package: @rbxts/quicksave
Description: A port of evaera's quicksave package - a DataStore abstraction library
Author: OverHash
Latest version: 1.0.0

# @rbxts/quicksave

[![NPM](https://nodei.co/npm/@rbxts/quicksave.png)](https://npmjs.org/package/@rbxts/quicksave)

Typings for [evaera's quicksave package](https://github.com/evaera/quicksave)

## Example Usage
```ts
const collection = quicksave.createCollection("data", {
	schema: {
		money: t.number,
		items: t.array(t.number),
	},
	defaultData: {
		money: 500,
		items: [],
	},
});

collection.getDocument("player").andThen((document) => {
	document.set("money", 1000);

	document.set(
		"items",
		document.get("items").map((item) => (item += 10)),
	);

	// NAUGHTY! not allowed!
	document.get("momey");

	document.set("money", [50]);
});
```

## Installation
```
npm i @rbxts/quicksave
```

## Changelog
npm package: @rbxts/radialimage
Description: Types for RadialImage
Author: evaera
Latest version: 0.1.0-ts.5

Typings for evaera's RadialImage module. This expects configurations generated by her spritesheet generator [web app](https://eryn.io/RadialSpriteSheetGenerator/). The API is fairly simple and can be found [here](https://github.com/evaera/RadialSpriteSheetGenerator#api).

For usage with [Roact](https://github.com/Roblox/roact), consider using a binding in tandem with this module's `GetFromAlpha()` method.
npm package: @rbxts/randomstring
Description: Generate random strings from a list of strings/characters.
Author: tacheometry
Latest version: 1.0.1

# [@rbxts/randomstring](https://www.npmjs.com/package/@rbxts/randomstring)
Generate random strings from a list of strings/characters.

### API
```ts
randomstring(length?: number, entries?: string[], separator?: string) → string
```
`length`: How many random entries to use. Defaults to 5.

`entries`: What strings to pick randomly from. By default, this is equal to characters a-Z 0-9.

`separator`: What string to use to concatenate randomly picked `entries`. By default, this is `""`. Example: `"-"` as a separator outputs strings like `"a-Z-9-b-F"`.

### Examples
#### Matchmaking game IDs
Simply using the module with the predefined parameters
```ts
randomstring()
```
outputs sequences similar to `TqKlf`, `M4Zvn`, `u6X8F`, which could be used as identifiers for ongoing matches in your game.

#### RoVer verification code clone
You could recreate the way [RoVer](https://github.com/evaera/RoVer) hands out codes for verifying users by inputting the following parameters:
```ts
randomstring(20, <english dictionary>, " ")
```
→ `magenta maroon yellow red pink very purple pink blue lavender red maroon maroon yellow gray dark really teal`
npm package: @rbxts/rbx-draw
Description: A utility library to debug things in 3D space for Roblox. Each method will always return an object you can use to cleanup the resulting drawing.
Author: Quenty
Latest version: 1.0.1

# rbx-draw

A TypeScript definitions port for Quenty's [Draw](https://github.com/Quenty/NevermoreEngine/tree/main/src/draw) library.
npm package: @rbxts/rbx-generic-screen-gui-provider
Description: Provides screenGuis with a given display order for easy use.
Author: Quenty
Latest version: 1.0.0

# rbx-generic-screen-gui-provider

Type definitions for Quenty's [GenericScreenGuiProvider](https://github.com/Quenty/NevermoreEngine/tree/main/src/genericscreenguiprovider) module.
npm package: @rbxts/rbx-gui-library
Description: TypeScript definitions for Rbx Gui, a library EgoMoose created to help developers with a few common UI components that are not currently present on the Roblox platform.
Author: EgoMoose
Latest version: 0.3.0

# Rbx Gui Library

TypeScript definitions for Rbx Gui, a library EgoMoose created to help developers with a few common UI components that are not currently present on the Roblox platform.

The library is designed around two principles:

1. It should attempt to integrate into standard Roblox Lua UI programming. There are no complex frameworks or big setups, this should feel familiar like using built-in UI objects.

2. The style of the components should be easy to change so that developers can have functionality without having to sacrifice artistic direction. You can edit the default UI objects under the `Defaults` ScreenGui.

Documentation for each class/constructor is in the individual module. You can also see the test place for an example of the components in use.

Currently GuiLib provides support for:

* Checkbox Labels
* RadioButton Groups
* Text Input Masking
* Sliders
* Dropdown Lists
* Scrolling Lists
* Radial Menu

![assorted tests](https://github.com/AdamRaichu/rbxts-rbx-gui-library/blob/master/Test/Images/assorted.gif?raw=true)

![dropdown test](https://github.com/AdamRaichu/rbxts-rbx-gui-library/blob/master/Test/Images/dropdown.gif?raw=true)

![slider test](https://github.com/AdamRaichu/rbxts-rbx-gui-library/blob/master/Test/Images/radialmenu.gif?raw=true)

![radial menu test](https://github.com/AdamRaichu/rbxts-rbx-gui-library/blob/master/Test/Images/slider.gif?raw=true)
npm package: @rbxts/rbxcad
Description: roblox-ts port of JSCAD
Author: shrjrd
Latest version: 1.0.0

# rbxcad

[jscad/modeling@3.0.1-alpha.0](https://github.com/jscad/OpenJSCAD.org/releases/tag/%40jscad%2Fmodeling%403.0.1-alpha.0) ported to [roblox-ts](https://github.com/roblox-ts/roblox-ts)

## Overview

This library contains boolean operations based on Constructive Solid Geometry (CSG). CSG is a modeling technique that uses boolean operations like union and intersection to combine 3D solids. This library implements CSG operations on meshes elegantly and concisely using BSP trees, and is meant to serve as an easily understandable implementation of the algorithm.

## Installation

```bash
npm install @rbxts/rbxcad
```

## Usage

```typescript
import {colors, curves, geometries, maths, measurements, primitives, text} from "@rbxts/rbxcad";
import {booleans, extrusions, hulls, modifiers, offsets, transforms} from "@rbxts/rbxcad";
```

Examples are included in src/examples

## Documentation

- [API Reference](https://openjscad.xyz/docs/)
- [JSCAD User Guide](https://openjscad.xyz/guide.html)

## Running Tests

> [!NOTE]
> [Jest Lua](https://github.com/jsdotlua/jest-lua) depends on `debug.loadmodule` (`FFlagEnableLoadModule`) to run tests.

```bash
npm install
npm run buildrbxl
```
Open the rbxl in Roblox Studio, then start a playtest session in [Run Mode](https://create.roblox.com/docs/studio/testing-modes#playtest-options) (`F8`).

## Copyrights

Some copyrights apply from integration of original libraries.

CSG Library : Copyright (c) 2012 Joost Nieuwenhuijse, under the MIT license. Copyright (c) 2011 Evan Wallace, under MIT license.

Portions of glMatrix Library: Copyright (c) 2015-2020, Brandon Jones, Colin MacKenzie IV, under MIT license.

Quickhull Library: Copyright (c) 2015 Mauricio Poppe, under the MIT license.

## License

[The MIT License (MIT)](../../LICENSE) (unless specified otherwise)
npm package: @rbxts/rbxts-jest
Description: rbxts-jest is a testing library for Roblox-TS
Latest version: 0.0.2

## rbxts-jest ##

rbxts-jest is a testing library made for Roblox-TS

### Examples ###
```ts
import { test, expect, runTests } from "@rbxts/rbxts-jest";

test("add", () => {
    const result = 2 + 2;
    expect(result).toBe(4);
});


runTests();
```

### Additionally ###
If you want to write your tests in another folder (not in src/server, src/client or src/shared), for example in src/tests/server, src/tests/client, src/tests/shared, then you'll have to add this into your default.project.json

ServerScriptService:
```json
"Tests": {
	"$path": "out/tests/server"
}
```

StarterPlayerScripts:
```json
"Tests": {
	"$path": "out/tests/client"
}
```

ReplicatedStorage:
```json
"Tests": {
	"$path": "out/tests/shared"
}
```

### Note ###
You'll have to run the tests in Roblox-Studio / Start the game. Unfortunately you currently can't run the tests in VSCode by running `npm run test` or something like this.
npm package: @rbxts/rbxts-sleitnick-log
Description: Types for Sleitnick's Log library
Author: Sleitnick
Latest version: 1.1.7

# rbxts-sleitnick-log
Types for Sleitnick's Log library

There are a few differences from the original library:

- This version supports a unique print function for the Info log level, using `TestService:Message`. You can enable it with `SetInfoLogEnabled`.
- I've removed the AnalyticsService support, as it's dead.
- I've fixed the get name function for stories.
npm package: @rbxts/react-debug-tools-internal
Description: This is an experimental package for debugging React renderers.
Author: jsdotlua
Latest version: 0.2.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# `react-debug-tools`

This is an experimental package for debugging React renderers.

**Its API is not as stable as that of React, React Native, React DOM, or React Roblox, and does not follow the common versioning scheme.**

**Use it at your own risk.**
npm package: @rbxts/react-internal
Description: React is a library for creating user interfaces.
Author: jsdotlua
Latest version: 0.2.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# `react`

React is a library for creating user interfaces.

The `react` package contains only the functionality necessary to define React components. It is typically used together with a React renderer like `react-roblox`.

## Usage

```lua
local React = require(Path.To.React)
local ReactRoblox = require(Path.To.ReactRoblox)

local e = React.createElement
local useState = React.useState

local function Counter()
    local count, setCount = useState(0)

    return e("Frame", {}, {
        CurrentCount = e("TextLabel", {
            Text = count,
            ...
        }),
        IncrementButton = e("TextButton", {
            Text = "Increment",
            ...,

            [React.Event.Activated] = function()
                setCount(count + 1)
            end
        })
    })
end

local root = ReactRoblox.createRoot(Instance.new("Folder"))
root:render(ReactRoblox.createPortal(e(Counter), playerGui))
```

## Documentation

See https://react.dev/

## API

See https://react.dev/reference/react
npm package: @rbxts/react-redux
Description: roblox-ts typings for react-redux
Author: OverHash
Latest version: 0.1.0-ts.1

# [`@rbxts/react-redux`](https://www.npmjs.com/package/@rbxts/react-redux)

roblox-ts typings of [react-redux](https://github.com/chriscerie/react-redux) for Roblox.

## Installation

To use, [`@rbxts/react`](https://www.npmjs.com/package/@rbxts/react) must be installed first.

You will also need `@rbxts/rodux` installed.

### ⚠️ Caution: `react-ts` to `react` migration

This package has migrated from [`@rbxts/react-ts`](https://www.npmjs.com/package/@rbxts/react-ts) to [`@rbxts/react`](https://www.npmjs.com/package/@rbxts/react) in the change from version `0.1.0` to `0.1.0-ts.1`.

If you need to use `@rbxts/react-ts` for legacy reasons, and cannot migrate your game to `@rbxts/react`, please use `npm install @rbxts/react-ts@0.1.0`.

## Changes from Luau version and compatibility

A few minimal changes from the original source have been made to have better roblox-ts compatibility:

- `shallowEqual` internally uses [@rbxts/luau-polyfill-internal](https://www.npmjs.com/package/@rbxts/luau-polyfill-internal) rather than `Collections`
- References to `Redux` directly under `node_modules/@rbxts` folder in rojo sourcetree removed to avoid having to install a forked `@rbxts/rodux` to satisfy the rojo sourcetree requirement

## Sources

`react-redux` types were partially derived from [DefinitelyTyped/react-redux](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-redux) and [DefinitelyTyped/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react/v17), with some minor modifications being performed to have compatibility with `@rbxts/react`. Some types (i.e., `Connect` and `batch`) are not exported as they are not present in the Luau [react-redux](https://github.com/chriscerie/react-redux) version.
npm package: @rbxts/react-tooltips
Description: React tooltips
Author: Tesmi & SUMER
Latest version: 1.2.3

# 🏷 React-Tooltips
This library is created to display different hints when hovering over elements, created specially for React-Lua

# ☄️ Installation

## NPM(https://www.npmjs.com/package/@rbxts/react-tooltips)
``npm i @rbxts/react-tooltips``

# 📚 Documentation

## Provider
First thing you need is creating Tooltip provider

```tsx
<ReactTooltips.Provider><ReactTooltips.Provider>
```

## Display

Now you need to create display to display hints

```tsx
<ReactTooltips.Provider>
	<ReactTooltips.Display key={"display"} ZIndex={9999} />
</ReactTooltips.Provider>
```

ZIndex is optional, so you don't have to specify it.

## Tooltip

Now you can create tooltips!

But first you need to create hint element, that will display on hover

```tsx
function hint(props: { position: React.Binding<UDim2> }) {
	const [state, setState] = React.useState(1);

	React.useEffect(() => {
		const connnection = UserInputService.InputBegan.Connect((input) => {
			if (input.UserInputType === Enum.UserInputType.MouseButton1) {
				setState(state + 1);
			}
		});
		
		return () => connection.Disconnect()
	}, [state]);

	return <textlabel 
		Position={props.position} 
		Size={UDim2.fromScale(0.1, 0.1)} 
		Text={`Hello, ${state}!`} 
	/>;
}
```

First way to create tooltip, is to create hitbox

```tsx
<ReactTooltips.Provider>
	<ReactTooltips.Display key={"display"} ZIndex={9999} />
	<imagelabel
		AnchorPoint={new Vector2(0.5, 0.5)}
		Size={UDim2.fromScale(0.25, 0.25)}
		Position={UDim2.fromScale(0.5, 0.5)}
		Image={"asset"}
	>
		<ReactTooltips.Tooltip
			key={"tooltip"} 
			follow_cursor={false} // alignment will not work if follow_cursor enabled
			aligment={"Right"} // Left | Right | Bottom | Top, you need to set alignment or follow_cursor
			appear_delay={1} // optional, appear delay in seconds, will display only after hovering for 1 second
			component={hint} // here you need to put hint component
		/>
	</imagelabel>
</ReactTooltips.Provider>;
```

Second way is using ``useTooltip`` hook, that allow more flexability

```tsx
function ImageTooltip() {
	const [updateAbsolutePosition, updateAbsoluteSize, mouseEnter, mouseLeave] = ReactTooltips.useTooltip({
		follow_cursor: false, // alignment will not work if follow_cursor enabled
		aligment: "Right", // Left | Right | Bottom | Top, you need to set alignment or follow_cursor
		appear_delay: 1, // optional, appear delay in seconds, will display only after hovering for 1 second
		component: hint, // here you need to put hint component
	});

	return (
		<imagelabel
			AnchorPoint={new Vector2(0.5, 0.5)}
			Size={UDim2.fromScale(0.25, 0.25)}
			Image={"asset"}
			Change={{
				AbsolutePosition: updateAbsolutePosition,
				AbsoluteSize: updateAbsoluteSize,
			}}
			Event={{
				MouseEnter: mouseEnter,
				MouseLeave: mouseLeave,
			}}
		/>
	);
}

<ReactTooltips.Provider>
	<ReactTooltips.Display key={"display"} ZIndex={9999} />
	<ImageTooltip />
</ReactTooltips.Provider>;
```

# ❤️ Credits
SUMER (Discord: sumer_real) - library

Tesmi (Discord: tesmi) - typescript port
npm package: @rbxts/react-ts
Description: To allow React in Roblox-TS, this package combines `jsdotlua/react` and `jsdotlua/roact-compat` and re-exports them with typings from `@rbxts/roact` some types from [the DefinitelyTyped package](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/mast
Author: littensy
Latest version: 1.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# [`@rbxts/react-ts`](https://www.npmjs.com/package/@rbxts/react-ts)

To allow React in Roblox-TS, this package combines `jsdotlua/react` and `jsdotlua/roact-compat` and re-exports them with typings from `@rbxts/roact` some types from [the DefinitelyTyped package](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/v17/index.d.ts).

The package also needs to be installed with an alias to trick the compiler into using this package instead of the _actual_ Roact package.

## 📦 Installation

### ⚛️ React for Roblox-TS

For this package to work, it needs the `@rbxts/roact` alias so that Roblox-TS can use this package for your TSX files.

You can install with an alias like so:

```bash
# recommended
npm install @rbxts/roact@npm:@rbxts/react-ts@latest
yarn add @rbxts/roact@npm:@rbxts/react-ts@latest

# may cause issues
pnpm add @rbxts/roact@npm:@rbxts/react-ts@latest
```

Make sure the following alias or something similar is in your `package.json`:

```json
"dependencies": {
    "@rbxts/roact": "npm:@rbxts/react-ts",
}
```

### 📎 ReactRoblox

You can install `@rbxts/react-roblox` to render React components with `createRoot` instead of `Roact.mount`.

```bash
npm install @rbxts/react-roblox
yarn add @rbxts/react-roblox
pnpm add @rbxts/react-roblox
```

## ✅ Compatibility

Installing this package will install React, ReactRoblox, etc. directly under the `@rbxts` folder in located ReplicatedStorage.

If your package depends on React packages, they may be imported in Luau via `require(script.Parent...Parent.MODULE)` or `require(...node_modules["@rbxts"].MODULE)` depending on your project structure.

<details>
    <summary>See explorer view</summary>
    <img src="images/compatibility.png" width="200">
</details>

## 📋 Sources

Types are derived from [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/v17/index.d.ts).

Dependencies of this package were published from [littensy/react-lua](https://github.com/littensy/react-lua), which is a fork of [jsdotlua/react-lua](https://github.com/jsdotlua/react-lua).
npm package: @rbxts/readonly
Description: Just a simple function that is really only useful in roblox-ts for forcing the value to be inferred as readonly.
Author: Bytebit
Latest version: 1.0.1

# Readonly
<p align="center">
  <a href="https://github.com/Bytebit-Org/roblox-Readonly/actions">
      <img src="https://github.com/Bytebit-Org/roblox-Readonly/workflows/CI/badge.svg" alt="CI status" />
  </a>
  <a href="http://makeapullrequest.com">
    <img src="https://img.shields.io/badge/PRs-welcome-blue.svg" alt="PRs Welcome" />
  </a>
  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" />
  </a>
  <a href="https://discord.gg/QEz3v8y">
    <img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" alt="Discord server" />
  </a>
</p>

Readonly is just a simple function that is really only useful in roblox-ts for forcing the value to be inferred as readonly. Note that it is not a deep readonly - nested objects will still be just as mutable as they were without this function.

## Installation
### roblox-ts
Simply install to your [roblox-ts](https://roblox-ts.com/) project as follows:
```
npm i @rbxts/readonly
```

## Documentation
Documentation can be found [here](https://github.com/Bytebit-Org/roblox-Readonly/tree/master/docs), is included in the TypeScript files directly, and was generated using [TypeDoc](https://typedoc.org/).

## Example
Here's a simple example of just getting a reference to an object and forcing the reference to be marked as readonly. Note that the nested value is still mutable.

```ts
import { readonly } from "@rbxts/readonly";

type SomeValue = {
  message: string,
  someOtherValue: SomeValue,
};

declare function getSomeValue(): SomeValue;

export class Foo {
  public bar() {
    const value = readonly(getSomeValue());

	value.someOtherValue.message = "can mutate this"; // perfectly fine
	value.message = "can't mutate this"; // TypeScript error

    // more logic
  }
}
```
npm package: @rbxts/red
Description: A wrapper around jackdotink's [Red](https://github.com/jackdotink/Red)
Latest version: 1.0.2

# @rbxts/red

roblox-ts wrapper around [Red](https://github.com/jackdotink/Red).

## Example

### Server

```ts
import { Server, Clock } from "@rbxts/red";

const Net = Server("Net");

Clock(5, () => Net.FireAll("HelloWorld"));
```

### Client

```ts
import { Client } from "@rbxts/red";

const Net = Client("Net");

Net.On("HelloWorld", () => print("Hello, world!"));
```
npm package: @rbxts/regexp
Description: A regular expression library for Luau. Adapted from a regex implementation by github user Blockzez (https://github.com/Blockzez).
Latest version: 0.2.1-ts.4

# RegExp for Luau
A regular expression library for Luau. Adapted from a regex implementation by github user Blockzez (https://github.com/Blockzez).

## API
Create a regex with the `new` function:
`RegExp.new(pattern: string, flags: string) -> RegularExpression`

A resulting RegularExpression has the following methods:
* `RegularExpression:exec(str: string) -> Match`
* `RegularExpression:test(str: string) -> boolean`

The `Match` object resulting from `exec` has the following fields:
* `[1..n]` - The array potion of the `Match` object contains captured groups
* `n` - The length of the array of resulting captured groups
* `index` - The index in the original string where the match begins
* `input` - The original string passed into `exec`

### Flags
The following flags can be provided via the second argument to `RegExp.new`:
* "i" - ignoreCase
* "g" - global
* "m" - multiline
npm package: @rbxts/replace
Description: Helping library implements simpler way working with roblox vectors & cframes
Author: sumer_real
Latest version: 1.0.1

# 💞 Replace

Helping library implements simpler way working with roblox vectors & cframes

pronounced as re-place

# ⚙️ Credits
sumer_real

# 📦 Install

``npm install @rbxts/replace``

# 🍴 Cookbook

smooth cyclic rotation

```ts
const ROTATION_ANGLE_PER_SECOND = 30
const target = Workspace.WaitForChild("ObjectToRotate") as BasePart;

RunService.Heartbeat.Connect((delta) => {
	target.CFrame = replace(target.CFrame)
		.rotateY(ROTATION_ANGLE_PER_SECOND * delta)
		.toCFrame();
});
```

simple pet system

```ts
const pet = Workspace.WaitForChild("Pet") as BasePart;
const player = Players.LocalPlayer;

RunService.Heartbeat.Connect((delta) => {
	if (!player.Character) return;
	if (!player.Character.PrimaryPart) return;

	pet.CFrame = replace(player.Character.GetPivot())
		.backward(4)
		.inverseLerp(pet.CFrame, delta / 0.075)
		.toCFrame();
});
```

# 📚 Documentation

To start using this library, we need to study all types of operations, there are 4 of them

## 📐 absolute

These operations are independent of related cframe

- ``position(x, y, z)`` updates position
- ``angle(xDeg, yDeg, zDeg, xRad?, yRad?, zRad?)`` updates angle
- ``lerp(target: CFrame, alpha)`` lerps replace to target by alpha
- ``inverseLerp(from: CFrame, alpha)`` lerps target to replace by alpha


## 🧷 relative

operations of this type depend entirely on related cframe

- ``move(x, y, z)`` moves position by value considering the angle
- ``rotate(xDeg, yDeg, zDeg, xRad?, yRad?, zRad?)`` rotates angle considering current angle
- ``forward(value)`` moves position forward
- ``backward(value)`` moves position backward
- ``left(value)`` moves position left
- ``right(value)`` moves position right
- ``up(value)`` moves position up
- ``down(value)`` moves position down
- ``rotateX(deg, rad?)`` rotates x by math.rad(deg) + rad
- ``rotateY(deg, rad?)`` rotates y by math.rad(deg) + rad
- ``rotateZ(deg, rad?)`` rotates z by math.rad(deg) + rad

## ⚖️ switch

allows you to change the logic of relativity

- ``world()`` converts current position & angle to world space
- ``relative(to: CFrame)`` Replace will assume that position and angle in ``to`` space
- ``asRelative(to: CFrame)`` will convert position & angle from world to ``to`` space

## ✉️ finaliters

operations of this type allow you to convert replace back to roblox formats

the main purpose of this library is to simplify CFrame, not Vector3, so it is more difficult to work with them.

- ``toCFrame()`` will convert to CFrame, recommended finaliter
- ``toVector3()`` will convert to Vector3 be careful, it doesn't take into account the angle, only relative operations related to move are taken into account
- ``toRotatedVector3()`` will convert to Vector3, but this operation takes into account angle, be careful don't use move related operations before this operation
npm package: @rbxts/replecs
Description: Replication library for Jecs
Author: PepeElToro41
Latest version: 0.3.1

# Replecs ⚡

Replecs is a feature rich, fast, flexible, powerful, and runtime/library agnostic replication library for ECS.

- Per-entity replication
- Heavily optimized granular player filtering for entities and components
- Entity ID remapping
- Optional serdes for values
- Luau runtime agnostic
- Buffer-based replication
- Bandwidth efficient
- Supports tags and relationships
- Unreliable replication, with automatic 1kb buffer size limit

Demo place: https://www.roblox.com/games/132070456195381/
npm package: @rbxts/reverse-array
Description: A simple function that just reverses any array given to it.
Author: Bytebit
Latest version: 1.0.3

# Reverse Array
<p align="center">
  <a href="https://github.com/Bytebit-Org/roblox-ReverseArray/actions">
      <img src="https://github.com/Bytebit-Org/roblox-ReverseArray/workflows/CI/badge.svg" alt="CI status" />
  </a>
  <a href="http://makeapullrequest.com">
    <img src="https://img.shields.io/badge/PRs-welcome-blue.svg" alt="PRs Welcome" />
  </a>
  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" />
  </a>
  <a href="https://discord.gg/QEz3v8y">
    <img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" alt="Discord server" />
  </a>
</p>

Reverse Array is a simple function that just reverses any array given to it.

## Installation
### roblox-ts
Simply install to your [roblox-ts](https://roblox-ts.com/) project as follows:
```
npm i @rbxts/reverse-array
```

### Wally
[Wally](https://github.com/UpliftGames/wally/) users can install this package by adding the following line to their `Wally.toml` under `[dependencies]`:
```
ReverseArray = "bytebit/reverse-array@1.0.3"
```

Then just run `wally install`.

### From model file
Model files are uploaded to every release as `.rbxmx` files. You can download the file from the [Releases page](https://github.com/Bytebit-Org/roblox-ReverseArray/releases) and load it into your project however you see fit.

### From model asset
New versions of the asset are uploaded with every release. The asset can be added to your Roblox Inventory and then inserted into your Place via Toolbox by getting it [here.](https://www.roblox.com/library/1234567890/Reverse-Array-Package)

## Documentation
Documentation can be found [here](https://github.com/Bytebit-Org/roblox-ReverseArray/tree/master/docs), is included in the TypeScript files directly, and was generated using [TypeDoc](https://typedoc.org/).

## Example
In this example, an array is created, each value printed, a reversed array created, and then each of its values are printed

<details>
  <summary>roblox-ts example</summary>

  ```ts
  import { reverseArray } from "@rbxts/reverse-array";

  const forwardArray = [1, 2, 3, 4];
  for (const value of forwardArray) {
    print(value)
  }

  const backwardArray = reverseArray(forwardArray);
  for (const value of backwardArray) {
    print(value)
  }
  ```
</details>

<details>
  <summary>Luau example</summary>

  ```lua
  local reverseArray = require(path.to.modules["reverse-array"]).reverseArray

  local forwardArray = [1, 2, 3, 4]
  for _, value in ipairs(forwardArray)
    print(value)
  end

  local backwardArray = reverseArray(forwardArray)
  for _, value in ipairs(backwardArray)
    print(value)
  end
  ```
</details>
npm package: @rbxts/rewindcss
Description: TailwindCSS classes for Roblox-react & Roblox-ts.
Author: Yahya
Latest version: 1.3.2

# RewindCSS
TailwindCSS classes for Roblox-react & Roblox-ts.

## Getting Started
Install using:
```bash
yarn add @rbxts/rewindcss
```
or
```bash
npm i @rbxts/rewindcss
```

Install Tailwind configs in your project root for autocomplete
```bash
npx tailwindcss init
```

```js
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.tsx",
    "./src/**/**/*.tsx",
    "./src/**/**/**/*.tsx"
],
  theme: {
    extend: {},
  },
  plugins: [],
}
```

Import the available Rewind components and start using them in React with Tailwind classes.
```tsx
    import { Div, Button, Text } from '@rbxts/rewindcss'

    export const Test = () => {
        return (
            <Div className="w-full h-48 p-10 border-4 overflow-y border-red-700 border-opacity-50 flex justify-center items-end gap-3 top-2/4 left-2/4 rounded-xl bg-blue-500">
                <Div className="w-10 h-10 rounded-sm"/>
                <Div className="w-10 h-10 rounded-lg bg-yellow-300"/>
                <Div className="w-10 h-10 bg-green-700"/>
                <Button Event={{
                  MouseButton1Click: () => {
                    print("clicked")
                  }
                }}
                Text="X" className="w-10 h-10 rounded-full bg-red-700"/>
                <Text Text="Y" className="w-10 h-10 rounded-full bg-purple-800"/>
            </Div>
        )
    }
```

Refer to the tailwind documentation for class names.
https://tailwindcss.com/

Currently supported Tailwind classes:
- Flex (align-items, justify-content, gap, flex-direction)
- Background (colour)
- Border (size, colour, transparency, radius)
- Font (weight)
- Positioning (Left, Top, Right, Bottom)
- Origin (anchor point)
- Padding
- Text (size, colour)
- Size (width, height)
- Aspect Ratio
Experimental:
- Overflow (overflow-x, overflow-y)

You can find a more comprehensive list of supported classes and examples in CLASSES.md.

## FAQ
How to attach references?
You can use the 'ref' property of any Rewind component.
```
<Button ref={yourRef}/>
```