open-index/open-npm huggingface dataset:
npm package: @jahlgren/react-drawer
Description: Simple and easy to use drawer (sidebar) component for React.js.
Latest version: 1.0.6

<h1 align="center">React Drawer</h1>

**React Drawer** is an easy to use drawer component for React.js.

## Install

```bash
npm install @jahlgren/react-drawer
```

## Usage

```jsx
import React, { useState } from 'react';
import Drawer from '@jahlgren/react-drawer';

const App = () => {
  const [isOpen, setIsOpen] = useState(false);
  return (
    <>
      <Drawer open={isOpen} onClose={() => setIsOpen(false)} >
        Content...
      </Drawer>
      <button onClick={() => setIsOpen(true)}>Open</button>
    </>
  );
}

export default App;
```

And import style manually:

```jsx
import '@jahlgren/react-drawer/dist/index.css';
```

## API

| props      | type           | default   | description    |
|------------|----------------|-----------|----------------|
| open | boolean | - | **(required)**, open or close drawer |
| children | any | undefined | drawer content |
| width | string\|number | 300 | width of the drawer |
| transitionDuration | number | 180 | transition duration in milliseconds |
| maskClassName | string | undefined | mask css classes |
| className | string  | undefined | drawer css classes |
| onClose | () => void | undefined | close click function |
npm package: @jahlgren/simple-canvas-input
Description: Simple input system for HTML-canvas animations and games.
Author: Jimi Ahlgren
Latest version: 0.1.4

<h1 align="center">Simple Canvas Input</h1>

**Simple Canvas Input** is a simple input system for HTML-canvas animations and games.

## Install

```bash
npm install @jahlgren/simple-canvas-input
```

## Usage

```js
// First, make sure to import the input system:
import Input, { Keys, MouseButtons } from '@jahlgren/simple-canvas-input';

// Create example canvas and context:
const canvas = document.createElement('canvas');
canvas.width = 800;
canvas.height = 600;
const context = canvas.getContext('2d');
document.body.append(canvas);

// Initialize the input system, outside the game loop:
const input = new Input(canvas);

// Game loop
requestAnimationFrame(gameLoop);
function gameLoop(elapsed) {
  requestAnimationFrame(gameLoop);

  // Always make sure to update the input before using it, inside the game loop:
  input.update();

  // Now we can use the public methods in the input system to check for keyboard and mouse events:
  if(input.getMouseButton(MouseButtons.Left)) {
    context.fillRect(input.mousePosition.x - 4, input.mousePosition.y - 4, 8, 8);
  }
}
```

## API

For `key` and `mouseButton` arguments you can use the enums `Keys` and `MouseButtons`, just remember to import them aswell.

| props      | type           | description    |
|------------|----------------|----------------|
| mousePosition | {x: number, y: number} | Mouse coordinates relative to the canvas |
| getKey | (key: string) => boolean | Returns true if the given key is held down |
| getKeyDown | (key: string) => boolean | Returns true if the given key was pressed this frame |
| getKeyUp | (key: string) => boolean | Returns true if the given key was released this frame |
| getMouseButton | (mouseButton: string) => boolean | Returns true if the given mouse button is held down |
| getMouseButtonDown | (mouseButton: string) => boolean | Returns true if the given mouse button was pressed this frame |
| getMouseButtonUp | (mouseButton: string) => boolean  | Returns true if the given mouse button was released this frame |
| setCanvasScale | (scale: number) => boolean | Sets the scale of the canvas to be used for mouse coordinates |
| getCanvasScale | (key: string) => boolean | Gets the value of the given canvas scale |
npm package: @jahmezz/number-formatter
Description: test
Author: James Kahng
Latest version: 0.1.1

Number Formatter
=========

A small library that adds commas to numbers

## Installation

  `npm install @jahmezz/number-formatter`

## Usage

    var numFormatter = require('@jdaudier/number-formatter');

    var formattedNum = numFormatter(35666);
  
  
  Output should be `35,666`


## Tests

  `npm test`

## Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.


[![Build Status](https://travis-ci.org/jahmezz/number-formatter.svg?branch=master)](https://travis-ci.org/jahmezz/number-formatter) [![Coverage Status](https://coveralls.io/repos/github/jahmezz/number-formatter/badge.svg?branch=master)](https://coveralls.io/github/jahmezz/number-formatter?branch=master)
npm package: @jahmezz/patient-ranker
Description: Entry for Luma Health full-stack interview.
Author: James Kahng
Latest version: 0.1.3

# Patient Ranker

Healthcare facilities spend a large amount of time attempting to get a hold of patients. Patients are liable to cancel appointments, fail to respond in a timely fashion, and take other actions that can generally lower a facility's efficiency in filling schedules.

Patient Ranker is a customizable library that provides a framework for ranking the patients' likelihood of accepting appointments based on historical data.

It accepts patient historical data and outputs a ranked list of the patients most likely to respond.

### Prerequisites

This library was built on Node v8.6.0.

It is written in ES6, meaning you must run it with esm for it to run properly.

```
$ node -r esm {your project}
```

## Getting Started

First, install the library.

```
$ npm install @jahmezz/patient-ranker
```

Import the RankGenerator module into your project. Then, Load your patient data as JSON.

```
import RankGenerator from '@jahmezz/patient-ranker/RankGenerator'
let patientRanker = new RankGenerator();
patientRanker.loadPatientData({your patient data});
```

Then, request a list of patients using patientRanker.fetchBestPatients(facilityLocation).

This function accepts an object containing latitude and longitude.
The output is a sorted array of the patients most likely to accept an appointment offer.

### Input
```
let facilityLocation = {
    "latitude": "68.8129",
    "longitude": "71.3018"
}
let bestPatients = patientRanker.fetchBestPatients(facilityLocation);
console.log("Score: " + bestPatients[0].score);
console.log("ID: " + bestPatients[0].entry.id);
console.log("Name: " + bestPatients[0].entry.name);
```

### Output
```
Score: 9.26
ID: 9902ce99-e4aa-434b-a5b5-49f2ae156391
Name: Laurine Kshlerin
```

An index.js is included with the project that you can run and review as an interactive demo.

```
$ node -r esm index.js
```

## Running the tests

Run the following command:
```
$ npm test
```

The test suite consists of unit tests ensuring the functions in this library work properly.

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/jahmezz/full-stack-interview/tags).

## Authors

* **James Kahng** - *Initial work* - [jahmezz](https://github.com/jahmezz)

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

## Acknowledgments

* Much inspiration drawn from Akash's solution to the interview question.
npm package: @jahnchock/math-to-latex
Description: A simple library to convert math expressions to LaTeX and render them using KaTeX.
Author: Pushing Cee
Latest version: 1.0.0

# Math to LaTeX

A simple library to convert math expressions to LaTeX and render them using KaTeX.

## Installation

```bash
npm install @jahnchock/math-to-latex
```

## Usage

```javascript
import { MathRenderer } from '@jahnchock/math-to-latex';
import 'katex/dist/katex.min.css'; // Don't forget to import KaTeX CSS!

const html = MathRenderer.render("3/4 + 1/2");
document.body.innerHTML = html;
```

## Features

- Converts simple fractions (e.g., "1/2") to LaTeX fractions.
- Converts powers (e.g., "x^2") to LaTeX powers.
- Supports parentheses for grouping.
- Renders using KaTeX.