@storybook/angular
Version:
Storybook for Angular: Develop, document, and test UI components in isolation
78 lines (73 loc) • 2.66 kB
JavaScript
import {
computesTemplateFromComponent,
formatPropInTemplate,
isComponent,
render_exports
} from "./chunk-6CHBWP5J.js";
// src/client/portable-stories.ts
import {
setProjectAnnotations as originalSetProjectAnnotations,
setDefaultProjectAnnotations
} from "storybook/preview-api";
function setProjectAnnotations(projectAnnotations) {
return setDefaultProjectAnnotations(render_exports), originalSetProjectAnnotations(
projectAnnotations
);
}
// src/client/decorators.ts
var moduleMetadata = (metadata) => (storyFn) => {
let story = storyFn(), storyMetadata = story.moduleMetadata || {};
return metadata = metadata || {}, {
...story,
moduleMetadata: {
declarations: [...metadata.declarations || [], ...storyMetadata.declarations || []],
entryComponents: [
...metadata.entryComponents || [],
...storyMetadata.entryComponents || []
],
imports: [...metadata.imports || [], ...storyMetadata.imports || []],
schemas: [...metadata.schemas || [], ...storyMetadata.schemas || []],
providers: [...metadata.providers || [], ...storyMetadata.providers || []]
}
};
};
function applicationConfig(config) {
return (storyFn) => {
let story = storyFn(), storyConfig = story.applicationConfig;
return {
...story,
applicationConfig: storyConfig || config ? {
...config,
...storyConfig,
providers: [...config?.providers || [], ...storyConfig?.providers || []]
} : void 0
};
};
}
var componentWrapperDecorator = (element, props) => (storyFn, storyContext) => {
let story = storyFn(), currentProps = typeof props == "function" ? props(storyContext) : props, template = isComponent(element) ? computesTemplateFromComponent(element, currentProps ?? {}, story.template) : element(story.template);
return {
...story,
template,
...currentProps || story.props ? {
props: {
...currentProps,
...story.props
}
} : {}
};
};
// src/client/argsToTemplate.ts
function argsToTemplate(args, options = {}) {
let includeSet = options.include ? new Set(options.include) : null, excludeSet = options.exclude ? new Set(options.exclude) : null;
return Object.entries(args).filter(([key]) => args[key] !== void 0).filter(([key]) => includeSet ? includeSet.has(key) : excludeSet ? !excludeSet.has(key) : !0).map(
([key, value]) => typeof value == "function" ? `(${key})="${formatPropInTemplate(key)}($event)"` : `[${key}]="${formatPropInTemplate(key)}"`
).join(" ");
}
export {
setProjectAnnotations,
moduleMetadata,
applicationConfig,
componentWrapperDecorator,
argsToTemplate
};