mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-04 14:57:10 +00:00
Added storybook__preact (#34341)
* Added storybook__preact * Use @jsx h
This commit is contained in:
Vendored
+46
@@ -0,0 +1,46 @@
|
||||
// Type definitions for @storybook/preact 5.0
|
||||
// Project: https://github.com/storybooks/storybook, https://github.com/storybooks/storybook/tree/master/app/preact
|
||||
// Definitions by: Keisuke Kan <https://github.com/9renpoto>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 3.3
|
||||
// Created with the help of storybook__react types
|
||||
|
||||
/// <reference types="webpack-env" />
|
||||
|
||||
import * as Preact from 'preact';
|
||||
|
||||
export type Renderable = Preact.AnyComponent | JSX.Element;
|
||||
export type RenderFunction = () => Renderable | Renderable[];
|
||||
|
||||
export interface DecoratorParameters {
|
||||
[key: string]: any;
|
||||
}
|
||||
export type StoryDecorator = (story: RenderFunction, context: { kind: string, story: string }) => Renderable | null;
|
||||
|
||||
export interface Story {
|
||||
readonly kind: string;
|
||||
add(storyName: string, callback: RenderFunction, parameters?: DecoratorParameters): this;
|
||||
addDecorator(decorator: StoryDecorator): this;
|
||||
addParameters(parameters: DecoratorParameters): this;
|
||||
}
|
||||
|
||||
export function addDecorator(decorator: StoryDecorator): void;
|
||||
export function addParameters(parameters: DecoratorParameters): void;
|
||||
export function clearDecorators(): void;
|
||||
export function configure(fn: () => void, module: NodeModule): void;
|
||||
export function setAddon(addon: object): void;
|
||||
export function storiesOf(name: string, module: NodeModule): Story;
|
||||
export function storiesOf<T>(name: string, module: NodeModule): Story & T;
|
||||
export function forceReRender(): void;
|
||||
|
||||
export interface StoryObject {
|
||||
name: string;
|
||||
render: RenderFunction;
|
||||
}
|
||||
|
||||
export interface StoryBucket {
|
||||
kind: string;
|
||||
stories: StoryObject[];
|
||||
}
|
||||
|
||||
export function getStorybook(): StoryBucket[];
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"preact": "^8.4.2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/** @jsx h */
|
||||
import { h } from 'preact';
|
||||
import { storiesOf, setAddon, addDecorator, addParameters, configure, getStorybook, RenderFunction, Story, forceReRender, DecoratorParameters, clearDecorators } from '@storybook/preact';
|
||||
|
||||
const Decorator = (story: RenderFunction) => <div>{story()}</div>;
|
||||
const parameters: DecoratorParameters = { parameter: 'foo' };
|
||||
|
||||
forceReRender();
|
||||
|
||||
storiesOf('Welcome', module)
|
||||
// local addDecorator
|
||||
.addDecorator(Decorator)
|
||||
.add('to Storybook', () => <div/>)
|
||||
.add('to Storybook as Array', () => [<div />, <div />])
|
||||
.add('and a story with additional parameters', () => <div/>, parameters);
|
||||
|
||||
// global addDecorator
|
||||
addDecorator(Decorator);
|
||||
addParameters(parameters);
|
||||
clearDecorators();
|
||||
|
||||
// setAddon
|
||||
interface AnyAddon {
|
||||
addWithSideEffect<T>(this: Story & T, storyName: string, storyFn: RenderFunction): Story & T;
|
||||
}
|
||||
const AnyAddon: AnyAddon = {
|
||||
addWithSideEffect<T>(this: Story & T, storyName: string, storyFn: RenderFunction): Story & T {
|
||||
console.log(this.kind === 'withAnyAddon');
|
||||
return this.add(storyName, storyFn);
|
||||
}
|
||||
};
|
||||
setAddon(AnyAddon);
|
||||
storiesOf<AnyAddon>('withAnyAddon', module)
|
||||
.addWithSideEffect('custom story', () => <div/>)
|
||||
.addWithSideEffect('more', () => <div/>)
|
||||
.add('another story', () => <div/>)
|
||||
.add('to Storybook as Array', () => [<div />, <div />])
|
||||
.add('and a story with additional parameters', () => <div/>, parameters)
|
||||
.addWithSideEffect('even more', () => <div/>);
|
||||
|
||||
// configure
|
||||
configure(() => undefined, module);
|
||||
|
||||
// getStorybook
|
||||
getStorybook().forEach(({ kind, stories }) => stories.forEach(({ name, render }) => render()));
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"dom",
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../",
|
||||
"jsx": "preserve",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"paths": {
|
||||
"@storybook/preact": [
|
||||
"storybook__preact"
|
||||
]
|
||||
},
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"storybook__preact-tests.tsx"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"extends": "dtslint/dt.json",
|
||||
"rules": {
|
||||
"no-unnecessary-generics": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user