UNPKG

tweak-tools

Version:

Tweak your React projects until awesomeness

133 lines (132 loc) 5.58 kB
"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);