Add bin-pack typings

This commit is contained in:
Oren Trutner
2018-05-24 17:03:35 -07:00
parent 0e7c267406
commit a5c7386e2e
4 changed files with 92 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
import * as pack from "bin-pack";
// $ExpectType PackResult<{ width: number; height: number; }>
const packResult = pack([
{ width: 50, height: 50 },
{ width: 25, height: 25 },
{ width: 25, height: 20 }
]);

60
types/bin-pack/index.d.ts vendored Normal file
View File

@@ -0,0 +1,60 @@
// Type definitions for bin-pack 1.0
// Project: https://github.com/bryanburgers/bin-pack
// Definitions by: Oren Trutner <https://github.com/orentrutner>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/**
* Packs objects that have a width and a height into as small of a square as
* possible, using a binary tree bin packing algorithm. After packing, each
* object is given an (x, y) coordinate of where it would be optimally packed.
* @param bins List of rectangular bins to pack
* @param options Packing options. Use inPlace: true to modify the bins
* argument in-place.
*/
declare function pack<T extends pack.Bin>(bins: T[], options?: pack.Options): pack.PackResult<T>;
declare namespace pack {
/** Packing options. */
interface Options {
/** Use inPlace=true to add x,y fields to the bins argument. */
inPlace?: boolean;
}
/** Specifies the dimensions of a bin to pack. */
interface Bin {
width: number;
height: number;
}
/** Describes the location of a packed bin. */
interface PackedItem<T> {
/** X coordinate of the packed bin. */
x: number;
/** Y coordinate of the packed bin. */
y: number;
/** Width of the bin. */
width: number;
/** Height of the bin. */
height: number;
/** The original bin object. */
item: T;
}
/** The return value from the pack function. */
interface PackResult<T> {
/** Width of the bounding box around all bins. */
width: number;
/** Height of the bounding box around all bins. */
height: number;
/** List of packed bins. */
items: Array<PackedItem<T>>;
}
}
export = pack;

View File

@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"bin-pack-tests.ts"
]
}

View File

@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }