tweak-tools
Version:
Tweak your React projects until awesomeness
133 lines (132 loc) • 5.58 kB
JavaScript
"use strict";
/* eslint-disable react-hooks/rules-of-hooks */
/**
* Type tests (run them with yarn test:types)
*/
Object.defineProperty(exports, "__esModule", { value: true });
const tsd_1 = require("tsd");
const helpers_1 = require("../helpers");
const plugin_1 = require("../plugin");
const useTweaks_1 = require("../useTweaks");
/**
* api
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 3 }));
// b shouldn't be returned by useTweaks when transient
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 3, b: { value: '#fff', onChange: () => { } } }));
// b shouldn't be returned by useTweaks when transient
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 3, b: { value: '#fff', onChange: () => { }, transient: true } }));
// @ts-expect-error transient shouldn't be usable alone
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 3, b: { value: '#fff', transient: true } }));
// b should be returned when transient is false
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 3, b: { value: '#fff', onChange: () => { }, transient: false } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)(() => ({ a: 3 })));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)(() => ({ a: 3, color: { value: '#fff', onChange: () => { } } })));
/**
* options
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: 10, render: () => true, label: 'number' } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: { x: 10, y: 10 }, label: 'label', render: (get) => get('something') } }));
// TODO fix this as this is valid logic
// @ts-expect-error
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { x: 10, y: 10, label: 'label' } }));
/**
* numbers
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 10 }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 10, b: 3 }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: 10 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: 10, min: 0, max: 10, step: 1 } }));
/**
* strings
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: 'some string' }));
/**
* selects
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { options: ['foo', 'bar'] } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { options: [1, 'bar'] } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { options: ['foo', 1, ['foo', 'bar']] } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { options: { foo: 1, bar: true } } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: 3, options: ['foo', ['foo', 'bar']] } }));
/**
* images
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { image: undefined } }));
/**
* color objects
* @note: colors represented as strings are already covered by string.
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { r: 10, g: 10, b: 10 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { r: 10, g: 10, b: 10, a: 1 } }));
/**
* booleans
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: true }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: false }));
/**
* intervals
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: [0, 10], min: 0, max: 20 } }));
/**
* Vector2d
*/
// object format
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { x: 10, y: 10 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { width: 10, height: 10 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: { width: 10, height: 10 }, min: 0 } }));
// array format
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: [0, 0] }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: [0, 0] } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: [0, 0], joystick: 'invertY' } }));
/**
* Vector3d
*/
// object format
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { x: 10, y: 10, z: 10 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { width: 10, height: 10, depth: 1 } }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: { width: 10, height: 10, depth: 1 } } }));
// array format
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: [0, 0, 0] }));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({ a: { value: [0, 0, 0] } }));
/**
* folders
*/
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({
a: (0, helpers_1.folder)({
a1: 1,
b: (0, helpers_1.folder)({ b1: { value: 10 }, b2: 'hello' }),
}),
}));
(0, tsd_1.expectType)((0, useTweaks_1.useTweaks)({
someFolder: (0, helpers_1.folder)({ pos2dArr: [100, 200], innerFolder: (0, helpers_1.folder)({ pos3dArr: [0, 0, 0] }) }),
}));
/**
* custom plugins
*/
const nullOrString = (0, plugin_1.createPlugin)({
normalize: (input) => ({ value: input }),
component: () => null,
});
const data_nullOrString = (0, useTweaks_1.useTweaks)({
null: nullOrString(null),
string: nullOrString('hello'),
});
(0, tsd_1.expectType)(data_nullOrString);
const nullOrStringObject = (0, plugin_1.createPlugin)({
normalize: (input) => ({ value: input.value }),
component: () => null,
});
const data_nullOrStringObject = (0, useTweaks_1.useTweaks)({
null: nullOrStringObject({ value: null }),
string: nullOrStringObject({ value: 'hello' }),
});
(0, tsd_1.expectType)(data_nullOrStringObject);
const arrayNumber = (0, plugin_1.createPlugin)({
normalize: (input) => ({ value: input }),
component: () => null,
});
const data_nullOrNumberArray = (0, useTweaks_1.useTweaks)({
array: arrayNumber([1, 2, 3]),
});
(0, tsd_1.expectType)(data_nullOrNumberArray);