UNPKG

3.01 kBTypeScriptView Raw
1import { AnnotatedStoryFn, Args, ComponentAnnotations, DecoratorFunction, LoaderFunction, StoryAnnotations, StoryContext as GenericStoryContext, StrictArgs, ProjectAnnotations } from 'storybook/internal/types';
2import * as AngularCore from '@angular/core';
3import { AngularRenderer } from './types';
4export type { Args, ArgTypes, Parameters, StrictArgs } from 'storybook/internal/types';
5export type { Parameters as AngularParameters } from './types';
6export type { AngularRenderer };
7/**
8 * Metadata to configure the stories for a component.
9 *
10 * @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
11 */
12export type Meta<TArgs = Args> = ComponentAnnotations<AngularRenderer, TransformComponentType<TArgs>>;
13/**
14 * Story function that represents a CSFv2 component example.
15 *
16 * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
17 */
18export type StoryFn<TArgs = Args> = AnnotatedStoryFn<AngularRenderer, TransformComponentType<TArgs>>;
19/**
20 * Story object that represents a CSFv3 component example.
21 *
22 * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
23 */
24export type StoryObj<TArgs = Args> = StoryAnnotations<AngularRenderer, TransformComponentType<TArgs>>;
25export type Decorator<TArgs = StrictArgs> = DecoratorFunction<AngularRenderer, TArgs>;
26export type Loader<TArgs = StrictArgs> = LoaderFunction<AngularRenderer, TArgs>;
27export type StoryContext<TArgs = StrictArgs> = GenericStoryContext<AngularRenderer, TArgs>;
28export type Preview = ProjectAnnotations<AngularRenderer>;
29/**
30 * Utility type that transforms InputSignal and EventEmitter types
31 */
32type TransformComponentType<T> = TransformInputSignalType<TransformOutputSignalType<TransformEventType<T>>>;
33// @ts-ignore
34type AngularInputSignal<T> = AngularCore.InputSignal<T>;
35// @ts-ignore
36type AngularInputSignalWithTransform<T, U> = AngularCore.InputSignalWithTransform<T, U>;
37// @ts-ignore
38type AngularOutputEmitterRef<T> = AngularCore.OutputEmitterRef<T>;
39type AngularHasInputSignal = typeof AngularCore extends {
40 input: infer U;
41} ? true : false;
42type AngularHasOutputSignal = typeof AngularCore extends {
43 output: infer U;
44} ? true : false;
45type InputSignal<T> = AngularHasInputSignal extends true ? AngularInputSignal<T> : never;
46type InputSignalWithTransform<T, U> = AngularHasInputSignal extends true ? AngularInputSignalWithTransform<T, U> : never;
47type OutputEmitterRef<T> = AngularHasOutputSignal extends true ? AngularOutputEmitterRef<T> : never;
48type TransformInputSignalType<T> = {
49 [K in keyof T]: T[K] extends InputSignal<infer E> ? E : T[K] extends InputSignalWithTransform<any, infer U> ? U : T[K];
50};
51type TransformOutputSignalType<T> = {
52 [K in keyof T]: T[K] extends OutputEmitterRef<infer E> ? (e: E) => void : T[K];
53};
54type TransformEventType<T> = {
55 [K in keyof T]: T[K] extends AngularCore.EventEmitter<infer E> ? (e: E) => void : T[K];
56};