@storybook/angular 9.1.0-alpha.6 → 9.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-schema.json +199 -0
- package/builders.json +14 -0
- package/dist/builders/build-storybook/index.js +31 -83
- package/dist/builders/start-storybook/index.js +31 -104
- package/dist/chunk-CUDJAP6K.mjs +3 -0
- package/dist/chunk-KMSSK3DZ.mjs +6 -0
- package/dist/chunk-LXSTVAFF.mjs +40 -0
- package/dist/client/config.d.ts +20 -6
- package/dist/client/config.js +49 -20
- package/dist/client/config.mjs +10 -13
- package/dist/client/docs/config.d.ts +6 -3
- package/dist/client/docs/config.js +18 -14
- package/dist/client/docs/config.mjs +6 -10
- package/dist/client/index.d.ts +144 -6
- package/dist/client/index.js +47 -30
- package/dist/client/index.mjs +3 -9
- package/dist/client/preview-prod.d.ts +2 -1
- package/dist/client/preview-prod.js +5 -4
- package/dist/client/preview-prod.mjs +1 -0
- package/dist/index.d.ts +59 -2
- package/dist/index.js +47 -29
- package/dist/index.mjs +3 -13
- package/dist/preset.js +8 -38
- package/dist/server/framework-preset-angular-cli.js +20 -84
- package/dist/server/framework-preset-angular-ivy.js +6 -59
- package/dist/{client/types.d.ts → types-3b0b7107.d.ts} +9 -9
- package/package.json +59 -12
- package/start-schema.json +234 -0
- package/dist/builders/build-storybook/index.d.ts +0 -25
- package/dist/builders/build-storybook/index.mjs +0 -81
- package/dist/builders/build-storybook/index.spec.d.ts +0 -1
- package/dist/builders/build-storybook/index.spec.js +0 -222
- package/dist/builders/build-storybook/index.spec.mjs +0 -187
- package/dist/builders/build-storybook/schema.json +0 -199
- package/dist/builders/builders.json +0 -14
- package/dist/builders/start-storybook/index.d.ts +0 -21
- package/dist/builders/start-storybook/index.mjs +0 -102
- package/dist/builders/start-storybook/index.spec.d.ts +0 -1
- package/dist/builders/start-storybook/index.spec.js +0 -188
- package/dist/builders/start-storybook/index.spec.mjs +0 -186
- package/dist/builders/start-storybook/schema.json +0 -234
- package/dist/builders/utils/error-handler.d.ts +0 -2
- package/dist/builders/utils/error-handler.js +0 -38
- package/dist/builders/utils/error-handler.mjs +0 -33
- package/dist/builders/utils/run-compodoc.d.ts +0 -6
- package/dist/builders/utils/run-compodoc.js +0 -35
- package/dist/builders/utils/run-compodoc.mjs +0 -31
- package/dist/builders/utils/run-compodoc.spec.d.ts +0 -1
- package/dist/builders/utils/run-compodoc.spec.js +0 -76
- package/dist/builders/utils/run-compodoc.spec.mjs +0 -74
- package/dist/builders/utils/standalone-options.d.ts +0 -18
- package/dist/builders/utils/standalone-options.js +0 -2
- package/dist/builders/utils/standalone-options.mjs +0 -1
- package/dist/client/angular-beta/AbstractRenderer.d.ts +0 -75
- package/dist/client/angular-beta/AbstractRenderer.js +0 -201
- package/dist/client/angular-beta/AbstractRenderer.mjs +0 -164
- package/dist/client/angular-beta/CanvasRenderer.d.ts +0 -12
- package/dist/client/angular-beta/CanvasRenderer.js +0 -13
- package/dist/client/angular-beta/CanvasRenderer.mjs +0 -9
- package/dist/client/angular-beta/ComputesTemplateFromComponent.d.ts +0 -24
- package/dist/client/angular-beta/ComputesTemplateFromComponent.js +0 -160
- package/dist/client/angular-beta/ComputesTemplateFromComponent.mjs +0 -154
- package/dist/client/angular-beta/ComputesTemplateFromComponent.test.d.ts +0 -1
- package/dist/client/angular-beta/ComputesTemplateFromComponent.test.js +0 -730
- package/dist/client/angular-beta/ComputesTemplateFromComponent.test.mjs +0 -728
- package/dist/client/angular-beta/DocsRenderer.d.ts +0 -13
- package/dist/client/angular-beta/DocsRenderer.js +0 -39
- package/dist/client/angular-beta/DocsRenderer.mjs +0 -35
- package/dist/client/angular-beta/RendererFactory.d.ts +0 -11
- package/dist/client/angular-beta/RendererFactory.js +0 -56
- package/dist/client/angular-beta/RendererFactory.mjs +0 -50
- package/dist/client/angular-beta/RendererFactory.test.d.ts +0 -1
- package/dist/client/angular-beta/RendererFactory.test.js +0 -235
- package/dist/client/angular-beta/RendererFactory.test.mjs +0 -233
- package/dist/client/angular-beta/StorybookModule.d.ts +0 -8
- package/dist/client/angular-beta/StorybookModule.js +0 -27
- package/dist/client/angular-beta/StorybookModule.mjs +0 -23
- package/dist/client/angular-beta/StorybookModule.test.d.ts +0 -1
- package/dist/client/angular-beta/StorybookModule.test.js +0 -321
- package/dist/client/angular-beta/StorybookModule.test.mjs +0 -319
- package/dist/client/angular-beta/StorybookProvider.d.ts +0 -5
- package/dist/client/angular-beta/StorybookProvider.js +0 -26
- package/dist/client/angular-beta/StorybookProvider.mjs +0 -22
- package/dist/client/angular-beta/StorybookWrapperComponent.d.ts +0 -13
- package/dist/client/angular-beta/StorybookWrapperComponent.js +0 -127
- package/dist/client/angular-beta/StorybookWrapperComponent.mjs +0 -123
- package/dist/client/angular-beta/__testfixtures__/input.component.d.ts +0 -29
- package/dist/client/angular-beta/__testfixtures__/input.component.js +0 -76
- package/dist/client/angular-beta/__testfixtures__/input.component.mjs +0 -73
- package/dist/client/angular-beta/__testfixtures__/test.module.d.ts +0 -2
- package/dist/client/angular-beta/__testfixtures__/test.module.js +0 -20
- package/dist/client/angular-beta/__testfixtures__/test.module.mjs +0 -17
- package/dist/client/angular-beta/utils/BootstrapQueue.d.ts +0 -12
- package/dist/client/angular-beta/utils/BootstrapQueue.js +0 -86
- package/dist/client/angular-beta/utils/BootstrapQueue.mjs +0 -49
- package/dist/client/angular-beta/utils/BootstrapQueue.test.d.ts +0 -1
- package/dist/client/angular-beta/utils/BootstrapQueue.test.js +0 -164
- package/dist/client/angular-beta/utils/BootstrapQueue.test.mjs +0 -162
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.d.ts +0 -22
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.js +0 -93
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.mjs +0 -84
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.test.d.ts +0 -1
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.test.js +0 -388
- package/dist/client/angular-beta/utils/NgComponentAnalyzer.test.mjs +0 -386
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.d.ts +0 -6
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.js +0 -41
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.mjs +0 -37
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.test.d.ts +0 -1
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.test.js +0 -24
- package/dist/client/angular-beta/utils/NgModulesAnalyzer.test.mjs +0 -22
- package/dist/client/angular-beta/utils/PropertyExtractor.d.ts +0 -30
- package/dist/client/angular-beta/utils/PropertyExtractor.js +0 -196
- package/dist/client/angular-beta/utils/PropertyExtractor.mjs +0 -158
- package/dist/client/angular-beta/utils/PropertyExtractor.test.d.ts +0 -1
- package/dist/client/angular-beta/utils/PropertyExtractor.test.js +0 -177
- package/dist/client/angular-beta/utils/PropertyExtractor.test.mjs +0 -175
- package/dist/client/angular-beta/utils/StoryUID.d.ts +0 -22
- package/dist/client/angular-beta/utils/StoryUID.js +0 -43
- package/dist/client/angular-beta/utils/StoryUID.mjs +0 -38
- package/dist/client/argsToTemplate.d.ts +0 -56
- package/dist/client/argsToTemplate.js +0 -58
- package/dist/client/argsToTemplate.mjs +0 -55
- package/dist/client/argsToTemplate.test.d.ts +0 -1
- package/dist/client/argsToTemplate.test.js +0 -102
- package/dist/client/argsToTemplate.test.mjs +0 -100
- package/dist/client/compodoc-types.d.ts +0 -102
- package/dist/client/compodoc-types.js +0 -2
- package/dist/client/compodoc-types.mjs +0 -1
- package/dist/client/compodoc.d.ts +0 -12
- package/dist/client/compodoc.js +0 -261
- package/dist/client/compodoc.mjs +0 -248
- package/dist/client/compodoc.test.d.ts +0 -1
- package/dist/client/compodoc.test.js +0 -132
- package/dist/client/compodoc.test.mjs +0 -130
- package/dist/client/decorateStory.d.ts +0 -4
- package/dist/client/decorateStory.js +0 -48
- package/dist/client/decorateStory.mjs +0 -45
- package/dist/client/decorateStory.test.d.ts +0 -1
- package/dist/client/decorateStory.test.js +0 -306
- package/dist/client/decorateStory.test.mjs +0 -301
- package/dist/client/decorators.d.ts +0 -13
- package/dist/client/decorators.js +0 -69
- package/dist/client/decorators.mjs +0 -63
- package/dist/client/decorators.test.d.ts +0 -1
- package/dist/client/decorators.test.js +0 -159
- package/dist/client/decorators.test.mjs +0 -157
- package/dist/client/docs/__testfixtures__/doc-button/input.d.ts +0 -110
- package/dist/client/docs/__testfixtures__/doc-button/input.js +0 -204
- package/dist/client/docs/__testfixtures__/doc-button/input.mjs +0 -201
- package/dist/client/docs/__testfixtures__/doc-button/tsconfig.json +0 -7
- package/dist/client/docs/angular-properties.test.d.ts +0 -1
- package/dist/client/docs/angular-properties.test.js +0 -36
- package/dist/client/docs/angular-properties.test.mjs +0 -34
- package/dist/client/docs/sourceDecorator.d.ts +0 -10
- package/dist/client/docs/sourceDecorator.js +0 -53
- package/dist/client/docs/sourceDecorator.mjs +0 -48
- package/dist/client/globals.d.ts +0 -1
- package/dist/client/globals.js +0 -33
- package/dist/client/globals.mjs +0 -31
- package/dist/client/portable-stories.d.ts +0 -23
- package/dist/client/portable-stories.js +0 -62
- package/dist/client/portable-stories.mjs +0 -26
- package/dist/client/public-types.d.ts +0 -54
- package/dist/client/public-types.js +0 -2
- package/dist/client/public-types.mjs +0 -1
- package/dist/client/render.d.ts +0 -7
- package/dist/client/render.js +0 -19
- package/dist/client/render.mjs +0 -14
- package/dist/client/types.js +0 -2
- package/dist/client/types.mjs +0 -1
- package/dist/node/index.d.ts +0 -2
- package/dist/node/index.js +0 -6
- package/dist/node/index.mjs +0 -3
- package/dist/preset.d.ts +0 -5
- package/dist/preset.mjs +0 -34
- package/dist/renderer.d.ts +0 -6
- package/dist/renderer.js +0 -15
- package/dist/renderer.mjs +0 -6
- package/dist/server/__mocks-ng-workspace__/empty-projects-entry/angular.json +0 -4
- package/dist/server/__mocks-ng-workspace__/minimal-config/angular.json +0 -18
- package/dist/server/__mocks-ng-workspace__/minimal-config/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/minimal-config/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/minimal-config/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/minimal-config/src/tsconfig.app.json +0 -9
- package/dist/server/__mocks-ng-workspace__/minimal-config/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/some-config/angular.json +0 -19
- package/dist/server/__mocks-ng-workspace__/some-config/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/some-config/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/some-config/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/some-config/src/tsconfig.app.json +0 -9
- package/dist/server/__mocks-ng-workspace__/some-config/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/angular.json +0 -64
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/tsconfig.app.json +0 -9
- package/dist/server/__mocks-ng-workspace__/with-angularBrowserTarget/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/with-lib/angular.json +0 -28
- package/dist/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/tsconfig.lib.json +0 -20
- package/dist/server/__mocks-ng-workspace__/with-lib/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/with-nx/angular.json +0 -18
- package/dist/server/__mocks-ng-workspace__/with-nx/nx.json +0 -3
- package/dist/server/__mocks-ng-workspace__/with-nx/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/with-nx/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/with-nx/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/with-nx/src/tsconfig.app.json +0 -8
- package/dist/server/__mocks-ng-workspace__/with-nx/tsconfig.json +0 -14
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/nx.json +0 -3
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/src/tsconfig.app.json +0 -8
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/tsconfig.json +0 -14
- package/dist/server/__mocks-ng-workspace__/with-nx-workspace/workspace.json +0 -18
- package/dist/server/__mocks-ng-workspace__/with-options-styles/angular.json +0 -18
- package/dist/server/__mocks-ng-workspace__/with-options-styles/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/with-options-styles/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/with-options-styles/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/with-options-styles/src/tsconfig.app.json +0 -9
- package/dist/server/__mocks-ng-workspace__/with-options-styles/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/without-architect-build/angular.json +0 -5
- package/dist/server/__mocks-ng-workspace__/without-architect-build-options/angular.json +0 -11
- package/dist/server/__mocks-ng-workspace__/without-compatible-projects/angular.json +0 -7
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/angular.json +0 -3
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/tsconfig.lib.json +0 -20
- package/dist/server/__mocks-ng-workspace__/without-projects-entry/tsconfig.json +0 -13
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/angular.json +0 -16
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/src/main.d.ts +0 -1
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/src/main.js +0 -5
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/src/main.mjs +0 -2
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/src/tsconfig.app.json +0 -9
- package/dist/server/__mocks-ng-workspace__/without-tsConfig/tsconfig.json +0 -13
- package/dist/server/__tests__/angular.json +0 -96
- package/dist/server/angular-cli-webpack.d.ts +0 -1
- package/dist/server/angular-cli-webpack.js +0 -80
- package/dist/server/angular-cli-webpack.mjs +0 -80
- package/dist/server/framework-preset-angular-cli.d.ts +0 -3
- package/dist/server/framework-preset-angular-cli.mjs +0 -82
- package/dist/server/framework-preset-angular-ivy.d.ts +0 -10
- package/dist/server/framework-preset-angular-ivy.mjs +0 -56
- package/dist/server/plugins/storybook-normalize-angular-entry-plugin.d.ts +0 -12
- package/dist/server/plugins/storybook-normalize-angular-entry-plugin.js +0 -55
- package/dist/server/plugins/storybook-normalize-angular-entry-plugin.mjs +0 -52
- package/dist/server/preset-options.d.ts +0 -9
- package/dist/server/preset-options.js +0 -2
- package/dist/server/preset-options.mjs +0 -1
- package/dist/server/utils/filter-out-styling-rules.d.ts +0 -2
- package/dist/server/utils/filter-out-styling-rules.js +0 -17
- package/dist/server/utils/filter-out-styling-rules.mjs +0 -13
- package/dist/server/utils/module-is-available.d.ts +0 -1
- package/dist/server/utils/module-is-available.js +0 -13
- package/dist/server/utils/module-is-available.mjs +0 -9
- package/dist/test-setup.d.ts +0 -1
- package/dist/test-setup.js +0 -6
- package/dist/test-setup.mjs +0 -4
- package/dist/types.d.ts +0 -27
- package/dist/types.js +0 -2
- package/dist/types.mjs +0 -1
- package/scripts/postbuild.js +0 -17
- package/template/cli/.eslintrc.json +0 -5
package/dist/client/config.js
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
require(
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var global$1 = require('@storybook/global');
|
|
4
|
+
require('@angular/compiler');
|
|
5
|
+
var platformBrowser = require('@angular/platform-browser');
|
|
6
|
+
var rxjs = require('rxjs');
|
|
7
|
+
var telejson = require('telejson');
|
|
8
|
+
var core = require('@angular/core');
|
|
9
|
+
var operators = require('rxjs/operators');
|
|
10
|
+
var common = require('@angular/common');
|
|
11
|
+
var tsDedent = require('ts-dedent');
|
|
12
|
+
var coreEvents = require('storybook/internal/core-events');
|
|
13
|
+
var previewApi = require('storybook/preview-api');
|
|
14
|
+
var docsTools = require('storybook/internal/docs-tools');
|
|
15
|
+
var clientLogger = require('storybook/internal/client-logger');
|
|
16
|
+
|
|
17
|
+
var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __decorateClass=(decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp(target,key,result),result},__decorateParam=(index,decorator)=>(target,key)=>decorator(target,key,index);global$1.global.STORYBOOK_ENV="angular";var reflectionCapabilities=new core["ɵReflectionCapabilities"],getComponentInputsOutputs=component=>{let componentMetadata=getComponentDecoratorMetadata(component),componentPropsMetadata=getComponentPropsDecoratorMetadata(component),initialValue={inputs:[],outputs:[]};return componentMetadata&&componentMetadata.inputs&&initialValue.inputs.push(...componentMetadata.inputs.map(i=>({propName:typeof i=="string"?i:i.name,templateName:typeof i=="string"?i:i.alias}))),componentMetadata&&componentMetadata.outputs&&initialValue.outputs.push(...componentMetadata.outputs.map(i=>({propName:i,templateName:i}))),componentPropsMetadata?Object.entries(componentPropsMetadata).reduce((previousValue,[propertyName,values])=>{let value=values.find(v=>v instanceof core.Input||v instanceof core.Output);if(value instanceof core.Input){let inputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousInputsFiltered=previousValue.inputs.filter(i=>i.templateName!==propertyName);return {...previousValue,inputs:[...previousInputsFiltered,inputToAdd]}}if(value instanceof core.Output){let outputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousOutputsFiltered=previousValue.outputs.filter(i=>i.templateName!==propertyName);return {...previousValue,outputs:[...previousOutputsFiltered,outputToAdd]}}return previousValue},initialValue):initialValue};var getComponentPropsDecoratorMetadata=component=>reflectionCapabilities.propMetadata(component),getComponentDecoratorMetadata=component=>reflectionCapabilities.annotations(component).reverse().find(d=>d instanceof core.Component);var isValidIdentifier=name=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name),formatPropInTemplate=propertyName=>isValidIdentifier(propertyName)?propertyName:`this['${propertyName}']`,separateInputsOutputsAttributes=(ngComponentInputsOutputs,props={})=>{let inputs=ngComponentInputsOutputs.inputs.filter(i=>i.templateName in props).map(i=>i.templateName),outputs=ngComponentInputsOutputs.outputs.filter(o=>o.templateName in props).map(o=>o.templateName);return {inputs,outputs,otherProps:Object.keys(props).filter(k=>![...inputs,...outputs].includes(k))}},computesTemplateFromComponent=(component,initialProps,innerTemplate="")=>{let ngComponentMetadata=getComponentDecoratorMetadata(component),ngComponentInputsOutputs=getComponentInputsOutputs(component);if(!ngComponentMetadata.selector)return '<ng-container *ngComponentOutlet="storyComponent"></ng-container>';let{inputs:initialInputs,outputs:initialOutputs}=separateInputsOutputsAttributes(ngComponentInputsOutputs,initialProps),templateInputs=initialInputs.length>0?` ${initialInputs.map(i=>`[${i}]="${formatPropInTemplate(i)}"`).join(" ")}`:"",templateOutputs=initialOutputs.length>0?` ${initialOutputs.map(i=>`(${i})="${formatPropInTemplate(i)}($event)"`).join(" ")}`:"";return buildTemplate(ngComponentMetadata.selector,innerTemplate,templateInputs,templateOutputs)};var buildTemplate=(selector,innerTemplate,inputs,outputs)=>{let voidElements=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],firstSelector=selector.split(",")[0];return [[/(^.*?)(?=[,])/,"$1"],[/(^\..+)/,"div$1"],[/(^\[.+?])/,"div$1"],[/([\w[\]]+)(\s*,[\w\s-[\],]+)+/,"$1"],[/#([\w-]+)/,' id="$1"'],[/((\.[\w-]+)+)/,(_,c)=>` class="${c.split`.`.join` `.trim()}"`],[/(\[.+?])/g,(_,a)=>` ${a.slice(1,-1)}`],[/([\S]+)(.*)/,(template,elementSelector)=>voidElements.some(element=>elementSelector===element)?template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs} />`):template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs}>${innerTemplate}</$1>`)]].reduce((prevSelector,[searchValue,replacer])=>prevSelector.replace(searchValue,replacer),firstSelector)};var STORY_PROPS=new core.InjectionToken("STORY_PROPS"),storyPropsProvider=storyProps$=>({provide:STORY_PROPS,useFactory:storyDataFactory(storyProps$.asObservable()),deps:[core.NgZone]});function storyDataFactory(data){return ngZone=>new rxjs.Observable(subscriber=>{let sub=data.subscribe(v=>{ngZone.run(()=>subscriber.next(v));},err=>{ngZone.run(()=>subscriber.error(err));},()=>{ngZone.run(()=>subscriber.complete());});return ()=>{sub.unsubscribe();}})}var reflectionCapabilities2=new core["ɵReflectionCapabilities"],isComponentAlreadyDeclared=(componentToFind,moduleDeclarations,moduleImports)=>moduleDeclarations&&moduleDeclarations.flat().some(declaration=>declaration===componentToFind)?!0:moduleImports?moduleImports.flat().some(importItem=>{let extractedNgModuleMetadata=extractNgModuleMetadata(importItem);return extractedNgModuleMetadata?isComponentAlreadyDeclared(componentToFind,extractedNgModuleMetadata.declarations,extractedNgModuleMetadata.imports):!1}):!1,extractNgModuleMetadata=importItem=>{let target=importItem&&importItem.ngModule?importItem.ngModule:importItem,decorators=reflectionCapabilities2.annotations(target);if(!decorators||decorators.length===0)return null;let ngModuleDecorator=decorators.find(decorator=>decorator instanceof core.NgModule);return ngModuleDecorator||null};var reflectionCapabilities3=new core["ɵReflectionCapabilities"];new core.InjectionToken("REMOVED_MODULES");var uniqueArray=arr=>arr.flat(Number.MAX_VALUE).filter(Boolean).filter((value,index,self)=>self.indexOf(value)===index),_PropertyExtractor=class _PropertyExtractor{constructor(metadata,component){this.metadata=metadata;this.component=component;this.declarations=[];this.analyzeMetadata=async metadata=>{let declarations=[...metadata?.declarations||[]],providers=[...metadata?.providers||[]],applicationProviders=[],imports=await Promise.all([...metadata?.imports||[]].map(async imported=>{let[isRestricted,restrictedProviders]=await _PropertyExtractor.analyzeRestricted(imported);return isRestricted?(applicationProviders.unshift(restrictedProviders||[]),null):imported})).then(results=>results.filter(Boolean));return {...metadata,imports,providers,applicationProviders,declarations}};}static warnImportsModuleWithProviders(propertyExtractor){propertyExtractor.imports.some(importedModule=>"ngModule"in importedModule)&&console.warn(tsDedent.dedent(`
|
|
18
|
+
Storybook Warning:
|
|
19
|
+
moduleMetadata property 'imports' contains one or more ModuleWithProviders, likely the result of a 'Module.forRoot()'-style call.
|
|
20
|
+
In Storybook 7.0 we use Angular's new 'bootstrapApplication' API to mount the component to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
21
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' to pass your ModuleWithProviders to the 'providers' property in combination with the importProvidersFrom helper function from '@angular/core' to extract all the necessary providers.
|
|
22
|
+
Visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information
|
|
23
|
+
`));}async init(){let analyzed=await this.analyzeMetadata(this.metadata);if(this.imports=uniqueArray([common.CommonModule,analyzed.imports]),this.providers=uniqueArray(analyzed.providers),this.applicationProviders=uniqueArray(analyzed.applicationProviders),this.declarations=uniqueArray(analyzed.declarations),this.component){let{isDeclarable,isStandalone}=_PropertyExtractor.analyzeDecorators(this.component),isDeclared=isComponentAlreadyDeclared(this.component,analyzed.declarations,this.imports);isStandalone?this.imports.push(this.component):isDeclarable&&!isDeclared&&this.declarations.push(this.component);}}};_PropertyExtractor.analyzeRestricted=async ngModule=>{if(ngModule===platformBrowser.BrowserModule)return console.warn(tsDedent.dedent`
|
|
24
|
+
Storybook Warning:
|
|
25
|
+
You have imported the "BrowserModule", which is not necessary anymore.
|
|
26
|
+
In Storybook v7.0 we are using Angular's new bootstrapApplication API to mount an Angular application to the DOM.
|
|
27
|
+
Note that the BrowserModule providers are automatically included when starting an application with bootstrapApplication()
|
|
28
|
+
Please remove the "BrowserModule" from the list of imports in your moduleMetadata definition to remove this warning.
|
|
29
|
+
`),[!0];try{let animations=await import('@angular/platform-browser/animations');if(ngModule===animations.BrowserAnimationsModule)return console.warn(tsDedent.dedent`
|
|
30
|
+
Storybook Warning:
|
|
31
|
+
You have added the "BrowserAnimationsModule" to the list of "imports" in your moduleMetadata definition of your Story.
|
|
32
|
+
In Storybook 7.0 we use Angular's new 'bootstrapApplication' API to mount the component to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
33
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' and add the "provideAnimations" function to the list of "providers".
|
|
34
|
+
If your Angular version does not support "provide-like" functions, use the helper function importProvidersFrom instead to set up animations. For this case, please add "importProvidersFrom(BrowserAnimationsModule)" to the list of providers of your applicationConfig definition.
|
|
35
|
+
Please visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information.
|
|
36
|
+
`),[!0,animations.provideAnimations()];if(ngModule===animations.NoopAnimationsModule)return console.warn(tsDedent.dedent`
|
|
37
|
+
Storybook Warning:
|
|
38
|
+
You have added the "NoopAnimationsModule" to the list of "imports" in your moduleMetadata definition of your Story.
|
|
39
|
+
In Storybook v7.0 we are using Angular's new bootstrapApplication API to mount an Angular application to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
40
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' and add the "provideNoopAnimations" function to the list of "providers".
|
|
41
|
+
If your Angular version does not support "provide-like" functions, use the helper function importProvidersFrom instead to set up noop animations and to extract all necessary providers from NoopAnimationsModule. For this case, please add "importProvidersFrom(NoopAnimationsModule)" to the list of providers of your applicationConfig definition.
|
|
42
|
+
Please visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information.
|
|
43
|
+
`),[!0,animations.provideNoopAnimations()]}catch{return [!1]}return [!1]},_PropertyExtractor.analyzeDecorators=component=>{let decorators=reflectionCapabilities3.annotations(component),isComponent=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Component")),isDirective=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Directive")),isPipe=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Pipe")),isDeclarable=isComponent||isDirective||isPipe,isStandalone=(isComponent||isDirective)&&[...decorators].reverse().find(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Component")||_PropertyExtractor.isDecoratorInstanceOf(d,"Directive"))?.standalone;return isStandalone===void 0&&(isStandalone=!!(core.VERSION.major&&Number(core.VERSION.major)>=19)),{isDeclarable,isStandalone}},_PropertyExtractor.isDecoratorInstanceOf=(decorator,name)=>{let factory;switch(name){case"Component":factory=core.Component;break;case"Directive":factory=core.Directive;break;case"Pipe":factory=core.Pipe;break;case"Injectable":factory=core.Injectable;break;case"Input":factory=core.Input;break;case"Output":factory=core.Output;break;default:throw new Error(`Unknown decorator type: ${name}`)}return decorator instanceof factory||decorator.ngMetadataName===name};var PropertyExtractor=_PropertyExtractor;var getNonInputsOutputsProps=(ngComponentInputsOutputs,props={})=>{let inputs=ngComponentInputsOutputs.inputs.filter(i=>i.templateName in props).map(i=>i.templateName),outputs=ngComponentInputsOutputs.outputs.filter(o=>o.templateName in props).map(o=>o.templateName);return Object.keys(props).filter(k=>![...inputs,...outputs].includes(k))},createStorybookWrapperComponent=({selector,template,storyComponent,styles,moduleMetadata,initialProps,analyzedMetadata})=>{let viewChildSelector=storyComponent??"__storybook-noop",{imports,declarations,providers}=analyzedMetadata,StorybookComponentModule=class{};StorybookComponentModule=__decorateClass([core.NgModule({declarations,imports,exports:[...declarations,...imports]})],StorybookComponentModule),PropertyExtractor.warnImportsModuleWithProviders(analyzedMetadata);let StorybookWrapperComponent=class{constructor(storyProps$,changeDetectorRef){this.storyProps$=storyProps$;this.changeDetectorRef=changeDetectorRef;this.storyComponent=storyComponent??"";}ngOnInit(){this.storyWrapperPropsSubscription=this.storyProps$.subscribe((storyProps={})=>{Object.assign(this,storyProps),this.changeDetectorRef.detectChanges(),this.changeDetectorRef.markForCheck();});}ngAfterViewInit(){if(this.storyComponentElementRef){let ngComponentInputsOutputs=getComponentInputsOutputs(storyComponent);getNonInputsOutputsProps(ngComponentInputsOutputs,initialProps).forEach(p=>{this.storyComponentElementRef[p]=initialProps[p];}),this.storyComponentViewContainerRef.injector.get(core.ChangeDetectorRef).markForCheck(),this.changeDetectorRef.detectChanges(),this.storyComponentPropsSubscription=this.storyProps$.pipe(operators.skip(1),operators.map(props=>getNonInputsOutputsProps(ngComponentInputsOutputs,props).reduce((acc,p)=>({...acc,[p]:props[p]}),{}))).subscribe(props=>{Object.assign(this.storyComponentElementRef,props),this.storyComponentViewContainerRef.injector.get(core.ChangeDetectorRef).markForCheck(),this.changeDetectorRef.detectChanges();});}}ngOnDestroy(){this.storyComponentPropsSubscription!=null&&this.storyComponentPropsSubscription.unsubscribe(),this.storyWrapperPropsSubscription!=null&&this.storyWrapperPropsSubscription.unsubscribe();}};return __decorateClass([core.ViewChild(viewChildSelector,{static:!0})],StorybookWrapperComponent.prototype,"storyComponentElementRef",2),__decorateClass([core.ViewChild(viewChildSelector,{read:core.ViewContainerRef,static:!0})],StorybookWrapperComponent.prototype,"storyComponentViewContainerRef",2),StorybookWrapperComponent=__decorateClass([core.Component({selector,template,standalone:!0,imports:[StorybookComponentModule],providers,styles,schemas:moduleMetadata.schemas}),__decorateParam(0,core.Inject(STORY_PROPS)),__decorateParam(1,core.Inject(core.ChangeDetectorRef))],StorybookWrapperComponent),StorybookWrapperComponent};var getApplication=({storyFnAngular,component,targetSelector,analyzedMetadata})=>{let{props,styles,moduleMetadata={}}=storyFnAngular,{template}=storyFnAngular;return !!hasNoTemplate(template)&&component&&(template=computesTemplateFromComponent(component,props,"")),createStorybookWrapperComponent({moduleMetadata,selector:targetSelector,template,storyComponent:component,styles,initialProps:props,analyzedMetadata})};function hasNoTemplate(template){return template==null}var queue=[],isProcessing=!1,resetCompiledComponents=async()=>{try{let{\u0275resetCompiledComponents}=await import('@angular/core');\u0275resetCompiledComponents();}catch{}},queueBootstrapping=fn=>new Promise((resolve,reject)=>{queue.push(()=>fn().then(resolve).catch(reject)),isProcessing||processQueue();}),processQueue=async()=>{for(isProcessing=!0;queue.length>0;){let bootstrappingFn=queue.shift();bootstrappingFn&&(await bootstrappingFn(),await resetCompiledComponents());}isProcessing=!1;};var getProvideZonelessChangeDetectionFn=async()=>{let angularCore=await import('@angular/core');return "provideExperimentalZonelessChangeDetection"in angularCore?angularCore.provideExperimentalZonelessChangeDetection:"provideZonelessChangeDetection"in angularCore?angularCore.provideZonelessChangeDetection:null};var applicationRefs=new Map,STORY_UID_ATTRIBUTE="data-sb-story-uid",AbstractRenderer=class{constructor(){this.previousStoryRenderInfo=new Map;}static resetApplications(domNode){applicationRefs.forEach((appRef,appDOMNode)=>{!appRef.destroyed&&(!domNode||appDOMNode===domNode)&&appRef.destroy();});}async render({storyFnAngular,forced,component,targetDOMNode}){let targetSelector=this.generateTargetSelectorFromStoryId(targetDOMNode.id),newStoryProps$=new rxjs.BehaviorSubject(storyFnAngular.props);if(!this.fullRendererRequired({targetDOMNode,storyFnAngular,moduleMetadata:{...storyFnAngular.moduleMetadata},forced})){this.storyProps$.next(storyFnAngular.props);return}await this.beforeFullRender(targetDOMNode),this.storyProps$&&this.storyProps$.complete(),this.storyProps$=newStoryProps$,this.initAngularRootElement(targetDOMNode,targetSelector);let analyzedMetadata=new PropertyExtractor(storyFnAngular.moduleMetadata,component);await analyzedMetadata.init();let storyUid=this.generateStoryUIdFromRawStoryUid(targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE)),componentSelector=storyUid!==null?`${targetSelector}[${storyUid}]`:targetSelector;storyUid!==null&&targetDOMNode.querySelector(targetSelector).toggleAttribute(storyUid,!0);let application=getApplication({storyFnAngular,component,targetSelector:componentSelector,analyzedMetadata}),providers=[storyPropsProvider(newStoryProps$),...analyzedMetadata.applicationProviders,...storyFnAngular.applicationConfig?.providers??[]];if(STORYBOOK_ANGULAR_OPTIONS?.experimentalZoneless){let provideZonelessChangeDetectionFn=await getProvideZonelessChangeDetectionFn();if(provideZonelessChangeDetectionFn)providers.unshift(provideZonelessChangeDetectionFn());else throw new Error("Zoneless change detection requires Angular 18 or higher")}let applicationRef=await queueBootstrapping(()=>platformBrowser.bootstrapApplication(application,{...storyFnAngular.applicationConfig,providers}));applicationRefs.set(targetDOMNode,applicationRef);}generateTargetSelectorFromStoryId(id){let invalidHtmlTag=/[^A-Za-z0-9-]/g;return invalidHtmlTag.test(id)?`sb-${id.replace(invalidHtmlTag,"")}-component`:id}generateStoryUIdFromRawStoryUid(rawStoryUid){if(rawStoryUid===null)return rawStoryUid;let accentCharacters=/[\u0300-\u036f]/g;return rawStoryUid.normalize("NFD").replace(accentCharacters,"")}initAngularRootElement(targetDOMNode,targetSelector){targetDOMNode.innerHTML="",targetDOMNode.appendChild(document.createElement(targetSelector));}fullRendererRequired({targetDOMNode,storyFnAngular,moduleMetadata,forced}){let previousStoryRenderInfo=this.previousStoryRenderInfo.get(targetDOMNode),currentStoryRender={storyFnAngular,moduleMetadataSnapshot:telejson.stringify(moduleMetadata,{maxDepth:50})};return this.previousStoryRenderInfo.set(targetDOMNode,currentStoryRender),!forced||!this.storyProps$||!!storyFnAngular?.template&&previousStoryRenderInfo?.storyFnAngular?.template!==storyFnAngular.template?!0:currentStoryRender.moduleMetadataSnapshot!==previousStoryRenderInfo?.moduleMetadataSnapshot}};var CanvasRenderer=class _CanvasRenderer extends AbstractRenderer{async render(options){await super.render(options);}async beforeFullRender(){_CanvasRenderer.resetApplications();}};var storyCounts=new Map,getNextStoryUID=storyId=>{storyCounts.has(storyId)||storyCounts.set(storyId,-1);let count=storyCounts.get(storyId)+1;return storyCounts.set(storyId,count),`${storyId}-${count}`};var DocsRenderer=class _DocsRenderer extends AbstractRenderer{async render(options){let channel=previewApi.addons.getChannel();channel.once(coreEvents.STORY_CHANGED,async()=>{await _DocsRenderer.resetApplications();}),channel.once(coreEvents.DOCS_RENDERED,async()=>{await _DocsRenderer.resetApplications();}),await super.render({...options,forced:!1});}async beforeFullRender(domNode){_DocsRenderer.resetApplications(domNode);}initAngularRootElement(targetDOMNode,targetSelector){super.initAngularRootElement(targetDOMNode,targetSelector),targetDOMNode.setAttribute(STORY_UID_ATTRIBUTE,getNextStoryUID(targetDOMNode.id));}};var RendererFactory=class{constructor(){this.rendererMap=new Map;}async getRendererInstance(targetDOMNode){let targetId=targetDOMNode.id;if(targetDOMNode===null)return null;let renderType=getRenderType(targetDOMNode);return this.lastRenderType&&this.lastRenderType!==renderType&&(await AbstractRenderer.resetApplications(),clearRootHTMLElement(renderType),this.rendererMap.clear()),this.rendererMap.has(targetId)||this.rendererMap.set(targetId,this.buildRenderer(renderType)),this.lastRenderType=renderType,this.rendererMap.get(targetId)}buildRenderer(renderType){return renderType==="docs"?new DocsRenderer:new CanvasRenderer}},getRenderType=targetDOMNode=>targetDOMNode.id==="storybook-root"?"canvas":"docs";function clearRootHTMLElement(renderType){switch(renderType){case"canvas":global.document.getElementById("storybook-docs").innerHTML="";break;case"docs":global.document.getElementById("storybook-root").innerHTML="";break;}}var rendererFactory=new RendererFactory,render=props=>({props});async function renderToCanvas({storyFn,showMain,forceRemount,storyContext:{component}},element){showMain(),await(await rendererFactory.getRendererInstance(element)).render({storyFnAngular:storyFn(),component,forced:!forceRemount,targetDOMNode:element});}function decorateStory(mainStoryFn,decorators){return [cleanArgsDecorator,...decorators].reduce((previousStoryFn,decorator)=>context=>decorator(update=>previousStoryFn({...context,...previewApi.sanitizeStoryContextUpdate(update)}),context),context=>prepareMain(mainStoryFn(context),context))}var prepareMain=(story,context)=>{let{template}=story,{component}=context,userDefinedTemplate=!hasNoTemplate2(template);return !userDefinedTemplate&&component&&(template=computesTemplateFromComponent(component,story.props,"")),{...story,...template?{template,userDefinedTemplate}:{}}};function hasNoTemplate2(template){return template==null}var cleanArgsDecorator=(storyFn,context)=>{if(!context.argTypes||!context.args)return storyFn();let argsToClean=context.args;return context.args=Object.entries(argsToClean).reduce((obj,[key,arg])=>{let argType=context.argTypes[key];return argType?.action||argType?.control?{...obj,[key]:arg}:obj},{}),storyFn()};var{FEATURES}=global$1.global,isMethod=methodOrProp=>methodOrProp.args!==void 0;var getCompodocJson=()=>global$1.global.__STORYBOOK_COMPODOC_JSON__,checkValidComponentOrDirective=component=>{if(!component.name)throw new Error(`Invalid component ${JSON.stringify(component)}`)},checkValidCompodocJson=compodocJson=>{if(!compodocJson||!compodocJson.components)throw new Error("Invalid compodoc JSON")},hasDecorator=(item,decoratorName)=>item.decorators&&item.decorators.find(x=>x.name===decoratorName),mapPropertyToSection=item=>hasDecorator(item,"ViewChild")?"view child":hasDecorator(item,"ViewChildren")?"view children":hasDecorator(item,"ContentChild")?"content child":hasDecorator(item,"ContentChildren")?"content children":"properties",mapItemToSection=(key,item)=>{switch(key){case"methods":case"methodsClass":return "methods";case"inputsClass":return "inputs";case"outputsClass":return "outputs";case"properties":case"propertiesClass":if(isMethod(item))throw new Error("Cannot be of type Method if key === 'propertiesClass'");return mapPropertyToSection(item);default:throw new Error(`Unknown key: ${key}`)}},findComponentByName=(name,compodocJson)=>compodocJson.components.find(c=>c.name===name)||compodocJson.directives.find(c=>c.name===name)||compodocJson.pipes.find(c=>c.name===name)||compodocJson.injectables.find(c=>c.name===name)||compodocJson.classes.find(c=>c.name===name),getComponentData=component=>{if(!component)return null;checkValidComponentOrDirective(component);let compodocJson=getCompodocJson();if(!compodocJson)return null;checkValidCompodocJson(compodocJson);let{name}=component,metadata=findComponentByName(name,compodocJson);return metadata||clientLogger.logger.warn(`Component not found in compodoc JSON: '${name}'`),metadata},displaySignature=item=>`(${item.args.map(arg=>`${arg.name}${arg.optional?"?":""}: ${arg.type}`).join(", ")}) => ${item.returnType}`,extractTypeFromValue=defaultValue=>{let valueType=typeof defaultValue;return defaultValue||valueType==="number"||valueType==="boolean"||valueType==="string"?valueType:null},extractEnumValues=compodocType=>{let enumType=getCompodocJson()?.miscellaneous?.enumerations?.find(x=>x.name===compodocType);if(enumType?.childs.every(x=>x.value))return enumType.childs.map(x=>x.value);if(typeof compodocType!="string"||compodocType.indexOf("|")===-1)return null;try{return compodocType.split("|").map(value=>JSON.parse(value))}catch{return null}},extractType=(property,defaultValue)=>{let compodocType=property.type||extractTypeFromValue(defaultValue);switch(compodocType){case"string":case"boolean":case"number":return {name:compodocType};case void 0:case null:return {name:"other",value:"void"};default:{let resolvedType=resolveTypealias(compodocType),enumValues=extractEnumValues(resolvedType);return enumValues?{name:"enum",value:enumValues}:{name:"other",value:"empty-enum"}}}},castDefaultValue=(property,defaultValue)=>{let compodocType=property.type;if(["boolean","number","string","EventEmitter"].includes(compodocType))switch(compodocType){case"boolean":return defaultValue==="true";case"number":return Number(defaultValue);case"EventEmitter":return;default:return defaultValue}else switch(defaultValue){case"true":return !0;case"false":return !1;case"null":return null;case"undefined":return;default:return defaultValue}},extractDefaultValueFromComments=(property,value)=>{let commentValue=value;return property.jsdoctags.forEach(tag=>{["default","defaultvalue"].includes(tag.tagName.escapedText)&&(commentValue=new global$1.global.DOMParser().parseFromString(tag.comment,"text/html").body.textContent);}),commentValue},extractDefaultValue=property=>{try{let value=property.defaultValue?.replace(/^'(.*)'$/,"$1");return value=castDefaultValue(property,value),value==null&&property.jsdoctags?.length>0&&(value=extractDefaultValueFromComments(property,value)),value}catch{clientLogger.logger.debug(`Error extracting ${property.name}: ${property.defaultValue}`);return}},resolveTypealias=compodocType=>{let typeAlias=getCompodocJson()?.miscellaneous?.typealiases?.find(x=>x.name===compodocType);return typeAlias?resolveTypealias(typeAlias.rawtype):compodocType},extractArgTypesFromData=componentData=>{let sectionToItems={},componentClasses=FEATURES.angularFilterNonInputControls?["inputsClass"]:["propertiesClass","methodsClass","inputsClass","outputsClass"];(["component","directive"].includes(componentData.type)?componentClasses:["properties","methods"]).forEach(key=>{(componentData[key]||[]).forEach(item=>{let section=mapItemToSection(key,item),defaultValue=isMethod(item)?void 0:extractDefaultValue(item),type=isMethod(item)||section!=="inputs"&§ion!=="properties"?{name:"other",value:"void"}:extractType(item,defaultValue),action=section==="outputs"?{action:item.name}:{},argType={name:item.name,description:item.rawdescription||item.description,type,...action,table:{category:section,type:{summary:isMethod(item)?displaySignature(item):item.type,required:isMethod(item)?!1:!item.optional},defaultValue:{summary:defaultValue}}};sectionToItems[section]||(sectionToItems[section]=[]),sectionToItems[section].push(argType);});});let SECTIONS=["properties","inputs","outputs","methods","view child","view children","content child","content children"],argTypes={};return SECTIONS.forEach(section=>{let items=sectionToItems[section];items&&items.forEach(argType=>{argTypes[argType.name]=argType;});}),argTypes},extractArgTypes=component=>{let componentData=getComponentData(component);return componentData&&extractArgTypesFromData(componentData)},extractComponentDescription=component=>{let componentData=getComponentData(component);return componentData&&(componentData.rawdescription||componentData.description)};var parameters={renderer:"angular",docs:{story:{inline:!0},extractArgTypes,extractComponentDescription}},argTypesEnhancers=[docsTools.enhanceArgTypes];
|
|
44
|
+
|
|
45
|
+
exports.applyDecorators = decorateStory;
|
|
46
|
+
exports.argTypesEnhancers = argTypesEnhancers;
|
|
47
|
+
exports.parameters = parameters;
|
|
48
|
+
exports.render = render;
|
|
49
|
+
exports.renderToCanvas = renderToCanvas;
|
package/dist/client/config.mjs
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import '
|
|
2
|
-
|
|
3
|
-
export {
|
|
1
|
+
import '../chunk-CUDJAP6K.mjs';
|
|
2
|
+
import { computesTemplateFromComponent } from '../chunk-LXSTVAFF.mjs';
|
|
3
|
+
export { render, renderToCanvas } from '../chunk-LXSTVAFF.mjs';
|
|
4
|
+
import { sanitizeStoryContextUpdate } from 'storybook/preview-api';
|
|
4
5
|
import { enhanceArgTypes } from 'storybook/internal/docs-tools';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
extractComponentDescription,
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
export const argTypesEnhancers = [enhanceArgTypes];
|
|
6
|
+
import { logger } from 'storybook/internal/client-logger';
|
|
7
|
+
import { global } from '@storybook/global';
|
|
8
|
+
|
|
9
|
+
function decorateStory(mainStoryFn,decorators){return [cleanArgsDecorator,...decorators].reduce((previousStoryFn,decorator)=>context=>decorator(update=>previousStoryFn({...context,...sanitizeStoryContextUpdate(update)}),context),context=>prepareMain(mainStoryFn(context),context))}var prepareMain=(story,context)=>{let{template}=story,{component}=context,userDefinedTemplate=!hasNoTemplate(template);return !userDefinedTemplate&&component&&(template=computesTemplateFromComponent(component,story.props,"")),{...story,...template?{template,userDefinedTemplate}:{}}};function hasNoTemplate(template){return template==null}var cleanArgsDecorator=(storyFn,context)=>{if(!context.argTypes||!context.args)return storyFn();let argsToClean=context.args;return context.args=Object.entries(argsToClean).reduce((obj,[key,arg])=>{let argType=context.argTypes[key];return argType?.action||argType?.control?{...obj,[key]:arg}:obj},{}),storyFn()};var{FEATURES}=global,isMethod=methodOrProp=>methodOrProp.args!==void 0;var getCompodocJson=()=>global.__STORYBOOK_COMPODOC_JSON__,checkValidComponentOrDirective=component=>{if(!component.name)throw new Error(`Invalid component ${JSON.stringify(component)}`)},checkValidCompodocJson=compodocJson=>{if(!compodocJson||!compodocJson.components)throw new Error("Invalid compodoc JSON")},hasDecorator=(item,decoratorName)=>item.decorators&&item.decorators.find(x=>x.name===decoratorName),mapPropertyToSection=item=>hasDecorator(item,"ViewChild")?"view child":hasDecorator(item,"ViewChildren")?"view children":hasDecorator(item,"ContentChild")?"content child":hasDecorator(item,"ContentChildren")?"content children":"properties",mapItemToSection=(key,item)=>{switch(key){case"methods":case"methodsClass":return "methods";case"inputsClass":return "inputs";case"outputsClass":return "outputs";case"properties":case"propertiesClass":if(isMethod(item))throw new Error("Cannot be of type Method if key === 'propertiesClass'");return mapPropertyToSection(item);default:throw new Error(`Unknown key: ${key}`)}},findComponentByName=(name,compodocJson)=>compodocJson.components.find(c=>c.name===name)||compodocJson.directives.find(c=>c.name===name)||compodocJson.pipes.find(c=>c.name===name)||compodocJson.injectables.find(c=>c.name===name)||compodocJson.classes.find(c=>c.name===name),getComponentData=component=>{if(!component)return null;checkValidComponentOrDirective(component);let compodocJson=getCompodocJson();if(!compodocJson)return null;checkValidCompodocJson(compodocJson);let{name}=component,metadata=findComponentByName(name,compodocJson);return metadata||logger.warn(`Component not found in compodoc JSON: '${name}'`),metadata},displaySignature=item=>`(${item.args.map(arg=>`${arg.name}${arg.optional?"?":""}: ${arg.type}`).join(", ")}) => ${item.returnType}`,extractTypeFromValue=defaultValue=>{let valueType=typeof defaultValue;return defaultValue||valueType==="number"||valueType==="boolean"||valueType==="string"?valueType:null},extractEnumValues=compodocType=>{let enumType=getCompodocJson()?.miscellaneous?.enumerations?.find(x=>x.name===compodocType);if(enumType?.childs.every(x=>x.value))return enumType.childs.map(x=>x.value);if(typeof compodocType!="string"||compodocType.indexOf("|")===-1)return null;try{return compodocType.split("|").map(value=>JSON.parse(value))}catch{return null}},extractType=(property,defaultValue)=>{let compodocType=property.type||extractTypeFromValue(defaultValue);switch(compodocType){case"string":case"boolean":case"number":return {name:compodocType};case void 0:case null:return {name:"other",value:"void"};default:{let resolvedType=resolveTypealias(compodocType),enumValues=extractEnumValues(resolvedType);return enumValues?{name:"enum",value:enumValues}:{name:"other",value:"empty-enum"}}}},castDefaultValue=(property,defaultValue)=>{let compodocType=property.type;if(["boolean","number","string","EventEmitter"].includes(compodocType))switch(compodocType){case"boolean":return defaultValue==="true";case"number":return Number(defaultValue);case"EventEmitter":return;default:return defaultValue}else switch(defaultValue){case"true":return !0;case"false":return !1;case"null":return null;case"undefined":return;default:return defaultValue}},extractDefaultValueFromComments=(property,value)=>{let commentValue=value;return property.jsdoctags.forEach(tag=>{["default","defaultvalue"].includes(tag.tagName.escapedText)&&(commentValue=new global.DOMParser().parseFromString(tag.comment,"text/html").body.textContent);}),commentValue},extractDefaultValue=property=>{try{let value=property.defaultValue?.replace(/^'(.*)'$/,"$1");return value=castDefaultValue(property,value),value==null&&property.jsdoctags?.length>0&&(value=extractDefaultValueFromComments(property,value)),value}catch{logger.debug(`Error extracting ${property.name}: ${property.defaultValue}`);return}},resolveTypealias=compodocType=>{let typeAlias=getCompodocJson()?.miscellaneous?.typealiases?.find(x=>x.name===compodocType);return typeAlias?resolveTypealias(typeAlias.rawtype):compodocType},extractArgTypesFromData=componentData=>{let sectionToItems={},componentClasses=FEATURES.angularFilterNonInputControls?["inputsClass"]:["propertiesClass","methodsClass","inputsClass","outputsClass"];(["component","directive"].includes(componentData.type)?componentClasses:["properties","methods"]).forEach(key=>{(componentData[key]||[]).forEach(item=>{let section=mapItemToSection(key,item),defaultValue=isMethod(item)?void 0:extractDefaultValue(item),type=isMethod(item)||section!=="inputs"&§ion!=="properties"?{name:"other",value:"void"}:extractType(item,defaultValue),action=section==="outputs"?{action:item.name}:{},argType={name:item.name,description:item.rawdescription||item.description,type,...action,table:{category:section,type:{summary:isMethod(item)?displaySignature(item):item.type,required:isMethod(item)?!1:!item.optional},defaultValue:{summary:defaultValue}}};sectionToItems[section]||(sectionToItems[section]=[]),sectionToItems[section].push(argType);});});let SECTIONS=["properties","inputs","outputs","methods","view child","view children","content child","content children"],argTypes={};return SECTIONS.forEach(section=>{let items=sectionToItems[section];items&&items.forEach(argType=>{argTypes[argType.name]=argType;});}),argTypes},extractArgTypes=component=>{let componentData=getComponentData(component);return componentData&&extractArgTypesFromData(componentData)},extractComponentDescription=component=>{let componentData=getComponentData(component);return componentData&&(componentData.rawdescription||componentData.description)};var parameters={renderer:"angular",docs:{story:{inline:!0},extractArgTypes,extractComponentDescription}},argTypesEnhancers=[enhanceArgTypes];
|
|
10
|
+
|
|
11
|
+
export { decorateStory as applyDecorators, argTypesEnhancers, parameters };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Parameters, DecoratorFunction } from 'storybook/internal/types';
|
|
2
|
+
|
|
3
|
+
declare const parameters: Parameters;
|
|
4
|
+
declare const decorators: DecoratorFunction[];
|
|
5
|
+
|
|
6
|
+
export { decorators, parameters };
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var docsTools = require('storybook/internal/docs-tools');
|
|
4
|
+
var previewApi = require('storybook/preview-api');
|
|
5
|
+
var core = require('@angular/core');
|
|
6
|
+
require('rxjs');
|
|
7
|
+
require('@angular/compiler');
|
|
8
|
+
require('@angular/platform-browser');
|
|
9
|
+
require('telejson');
|
|
10
|
+
require('rxjs/operators');
|
|
11
|
+
require('@angular/common');
|
|
12
|
+
require('ts-dedent');
|
|
13
|
+
require('storybook/internal/core-events');
|
|
14
|
+
|
|
15
|
+
new core.InjectionToken("STORY_PROPS");var reflectionCapabilities=new core["ɵReflectionCapabilities"],getComponentInputsOutputs=component=>{let componentMetadata=getComponentDecoratorMetadata(component),componentPropsMetadata=getComponentPropsDecoratorMetadata(component),initialValue={inputs:[],outputs:[]};return componentMetadata&&componentMetadata.inputs&&initialValue.inputs.push(...componentMetadata.inputs.map(i=>({propName:typeof i=="string"?i:i.name,templateName:typeof i=="string"?i:i.alias}))),componentMetadata&&componentMetadata.outputs&&initialValue.outputs.push(...componentMetadata.outputs.map(i=>({propName:i,templateName:i}))),componentPropsMetadata?Object.entries(componentPropsMetadata).reduce((previousValue,[propertyName,values])=>{let value=values.find(v=>v instanceof core.Input||v instanceof core.Output);if(value instanceof core.Input){let inputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousInputsFiltered=previousValue.inputs.filter(i=>i.templateName!==propertyName);return {...previousValue,inputs:[...previousInputsFiltered,inputToAdd]}}if(value instanceof core.Output){let outputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousOutputsFiltered=previousValue.outputs.filter(i=>i.templateName!==propertyName);return {...previousValue,outputs:[...previousOutputsFiltered,outputToAdd]}}return previousValue},initialValue):initialValue};var getComponentPropsDecoratorMetadata=component=>reflectionCapabilities.propMetadata(component),getComponentDecoratorMetadata=component=>reflectionCapabilities.annotations(component).reverse().find(d=>d instanceof core.Component);var isValidIdentifier=name=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name),formatPropInTemplate=propertyName=>isValidIdentifier(propertyName)?propertyName:`this['${propertyName}']`,separateInputsOutputsAttributes=(ngComponentInputsOutputs,props={})=>{let inputs=ngComponentInputsOutputs.inputs.filter(i=>i.templateName in props).map(i=>i.templateName),outputs=ngComponentInputsOutputs.outputs.filter(o=>o.templateName in props).map(o=>o.templateName);return {inputs,outputs,otherProps:Object.keys(props).filter(k=>![...inputs,...outputs].includes(k))}};function stringifyCircular(obj){let seen=new Set;return JSON.stringify(obj,(key,value)=>{if(typeof value=="object"&&value!==null){if(seen.has(value))return "[Circular]";seen.add(value);}return value})}var createAngularInputProperty=({propertyName,value,argType})=>{let templateValue;switch(typeof value){case"string":templateValue=`'${value}'`;break;case"object":templateValue=stringifyCircular(value).replace(/'/g,"\u2019").replace(/\\"/g,"\u201D").replace(/"([^-"]+)":/g,"$1: ").replace(/"/g,"'").replace(/\u2019/g,"\\'").replace(/\u201D/g,"\\'").split(",").join(", ");break;default:templateValue=value;}return `[${propertyName}]="${templateValue}"`},computesTemplateSourceFromComponent=(component,initialProps,argTypes)=>{let ngComponentMetadata=getComponentDecoratorMetadata(component);if(!ngComponentMetadata)return null;if(!ngComponentMetadata.selector)return `<ng-container *ngComponentOutlet="${component.name}"></ng-container>`;let ngComponentInputsOutputs=getComponentInputsOutputs(component),{inputs:initialInputs,outputs:initialOutputs}=separateInputsOutputsAttributes(ngComponentInputsOutputs,initialProps),templateInputs=initialInputs.length>0?` ${initialInputs.map(propertyName=>createAngularInputProperty({propertyName,value:initialProps[propertyName],argType:argTypes?.[propertyName]})).join(" ")}`:"",templateOutputs=initialOutputs.length>0?` ${initialOutputs.map(i=>`(${i})="${formatPropInTemplate(i)}($event)"`).join(" ")}`:"";return buildTemplate(ngComponentMetadata.selector,"",templateInputs,templateOutputs)},buildTemplate=(selector,innerTemplate,inputs,outputs)=>{let voidElements=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],firstSelector=selector.split(",")[0];return [[/(^.*?)(?=[,])/,"$1"],[/(^\..+)/,"div$1"],[/(^\[.+?])/,"div$1"],[/([\w[\]]+)(\s*,[\w\s-[\],]+)+/,"$1"],[/#([\w-]+)/,' id="$1"'],[/((\.[\w-]+)+)/,(_,c)=>` class="${c.split`.`.join` `.trim()}"`],[/(\[.+?])/g,(_,a)=>` ${a.slice(1,-1)}`],[/([\S]+)(.*)/,(template,elementSelector)=>voidElements.some(element=>elementSelector===element)?template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs} />`):template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs}>${innerTemplate}</$1>`)]].reduce((prevSelector,[searchValue,replacer])=>prevSelector.replace(searchValue,replacer),firstSelector)};new core["ɵReflectionCapabilities"];new core["ɵReflectionCapabilities"];new core.InjectionToken("REMOVED_MODULES");var skipSourceRender=context=>{let sourceParams=context?.parameters.docs?.source;return sourceParams?.type===docsTools.SourceType.DYNAMIC?!1:sourceParams?.code||sourceParams?.type===docsTools.SourceType.CODE},sourceDecorator=(storyFn,context)=>{let story=storyFn(),source=previewApi.useRef(void 0);return previewApi.useEffect(()=>{if(skipSourceRender(context))return;let{props,userDefinedTemplate}=story,{component,argTypes,parameters:parameters2}=context,template=parameters2.docs?.source?.excludeDecorators?context.originalStoryFn(context.args,context).template:story.template;if(component&&!userDefinedTemplate){let newSource=computesTemplateSourceFromComponent(component,props,argTypes)||template;newSource&&newSource!==source.current&&(previewApi.emitTransformCode(newSource,context),source.current=newSource);}else template&&template!==source.current&&(previewApi.emitTransformCode(template,context),source.current=template);}),story};var parameters={docs:{source:{type:docsTools.SourceType.DYNAMIC,language:"html"}}},decorators=[sourceDecorator];
|
|
16
|
+
|
|
17
|
+
exports.decorators = decorators;
|
|
18
|
+
exports.parameters = parameters;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
+
import { computesTemplateSourceFromComponent } from '../../chunk-LXSTVAFF.mjs';
|
|
1
2
|
import { SourceType } from 'storybook/internal/docs-tools';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
language: 'html',
|
|
8
|
-
},
|
|
9
|
-
},
|
|
10
|
-
};
|
|
11
|
-
export const decorators = [sourceDecorator];
|
|
3
|
+
import { useRef, useEffect, emitTransformCode } from 'storybook/preview-api';
|
|
4
|
+
|
|
5
|
+
var skipSourceRender=context=>{let sourceParams=context?.parameters.docs?.source;return sourceParams?.type===SourceType.DYNAMIC?!1:sourceParams?.code||sourceParams?.type===SourceType.CODE},sourceDecorator=(storyFn,context)=>{let story=storyFn(),source=useRef(void 0);return useEffect(()=>{if(skipSourceRender(context))return;let{props,userDefinedTemplate}=story,{component,argTypes,parameters:parameters2}=context,template=parameters2.docs?.source?.excludeDecorators?context.originalStoryFn(context.args,context).template:story.template;if(component&&!userDefinedTemplate){let newSource=computesTemplateSourceFromComponent(component,props,argTypes)||template;newSource&&newSource!==source.current&&(emitTransformCode(newSource,context),source.current=newSource);}else template&&template!==source.current&&(emitTransformCode(template,context),source.current=template);}),story};var parameters={docs:{source:{type:SourceType.DYNAMIC,language:"html"}}},decorators=[sourceDecorator];
|
|
6
|
+
|
|
7
|
+
export { decorators, parameters };
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,6 +1,144 @@
|
|
|
1
|
-
import '
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export {
|
|
1
|
+
import { Args, ComponentAnnotations, AnnotatedStoryFn, StoryAnnotations, StrictArgs, DecoratorFunction, LoaderFunction, StoryContext as StoryContext$1, ProjectAnnotations, NamedOrDefaultProjectAnnotations, NormalizedProjectAnnotations } from 'storybook/internal/types';
|
|
2
|
+
export { ArgTypes, Args, Parameters, StrictArgs } from 'storybook/internal/types';
|
|
3
|
+
import * as AngularCore from '@angular/core';
|
|
4
|
+
import { Type } from '@angular/core';
|
|
5
|
+
import { A as AngularRenderer, N as NgModuleMetadata, I as ICollection } from '../types-3b0b7107.js';
|
|
6
|
+
export { P as AngularParameters, S as IStory } from '../types-3b0b7107.js';
|
|
7
|
+
import { ApplicationConfig } from '@angular/platform-browser';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Metadata to configure the stories for a component.
|
|
11
|
+
*
|
|
12
|
+
* @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
|
|
13
|
+
*/
|
|
14
|
+
type Meta<TArgs = Args> = ComponentAnnotations<AngularRenderer, TransformComponentType<TArgs>>;
|
|
15
|
+
/**
|
|
16
|
+
* Story function that represents a CSFv2 component example.
|
|
17
|
+
*
|
|
18
|
+
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
|
19
|
+
*/
|
|
20
|
+
type StoryFn<TArgs = Args> = AnnotatedStoryFn<AngularRenderer, TransformComponentType<TArgs>>;
|
|
21
|
+
/**
|
|
22
|
+
* Story object that represents a CSFv3 component example.
|
|
23
|
+
*
|
|
24
|
+
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
|
25
|
+
*/
|
|
26
|
+
type StoryObj<TArgs = Args> = StoryAnnotations<AngularRenderer, TransformComponentType<TArgs>>;
|
|
27
|
+
type Decorator<TArgs = StrictArgs> = DecoratorFunction<AngularRenderer, TArgs>;
|
|
28
|
+
type Loader<TArgs = StrictArgs> = LoaderFunction<AngularRenderer, TArgs>;
|
|
29
|
+
type StoryContext<TArgs = StrictArgs> = StoryContext$1<AngularRenderer, TArgs>;
|
|
30
|
+
type Preview = ProjectAnnotations<AngularRenderer>;
|
|
31
|
+
/** Utility type that transforms InputSignal and EventEmitter types */
|
|
32
|
+
type TransformComponentType<T> = TransformInputSignalType<TransformOutputSignalType<TransformEventType<T>>>;
|
|
33
|
+
type AngularInputSignal<T> = AngularCore.InputSignal<T>;
|
|
34
|
+
type AngularInputSignalWithTransform<T, U> = AngularCore.InputSignalWithTransform<T, U>;
|
|
35
|
+
type AngularOutputEmitterRef<T> = AngularCore.OutputEmitterRef<T>;
|
|
36
|
+
type AngularHasInputSignal = typeof AngularCore extends {
|
|
37
|
+
input: infer U;
|
|
38
|
+
} ? true : false;
|
|
39
|
+
type AngularHasOutputSignal = typeof AngularCore extends {
|
|
40
|
+
output: infer U;
|
|
41
|
+
} ? true : false;
|
|
42
|
+
type InputSignal<T> = AngularHasInputSignal extends true ? AngularInputSignal<T> : never;
|
|
43
|
+
type InputSignalWithTransform<T, U> = AngularHasInputSignal extends true ? AngularInputSignalWithTransform<T, U> : never;
|
|
44
|
+
type OutputEmitterRef<T> = AngularHasOutputSignal extends true ? AngularOutputEmitterRef<T> : never;
|
|
45
|
+
type TransformInputSignalType<T> = {
|
|
46
|
+
[K in keyof T]: T[K] extends InputSignal<infer E> ? E : T[K] extends InputSignalWithTransform<any, infer U> ? U : T[K];
|
|
47
|
+
};
|
|
48
|
+
type TransformOutputSignalType<T> = {
|
|
49
|
+
[K in keyof T]: T[K] extends OutputEmitterRef<infer E> ? (e: E) => void : T[K];
|
|
50
|
+
};
|
|
51
|
+
type TransformEventType<T> = {
|
|
52
|
+
[K in keyof T]: T[K] extends AngularCore.EventEmitter<infer E> ? (e: E) => void : T[K];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Function that sets the globalConfig of your storybook. The global config is the preview module of
|
|
57
|
+
* your .storybook folder.
|
|
58
|
+
*
|
|
59
|
+
* It should be run a single time, so that your global config (e.g. decorators) is applied to your
|
|
60
|
+
* stories when using `composeStories` or `composeStory`.
|
|
61
|
+
*
|
|
62
|
+
* Example:
|
|
63
|
+
*
|
|
64
|
+
* ```jsx
|
|
65
|
+
* // setup-file.js
|
|
66
|
+
* import { setProjectAnnotations } from '@storybook/angular';
|
|
67
|
+
*
|
|
68
|
+
* import projectAnnotations from './.storybook/preview';
|
|
69
|
+
*
|
|
70
|
+
* setProjectAnnotations(projectAnnotations);
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @param projectAnnotations - E.g. (import projectAnnotations from '../.storybook/preview')
|
|
74
|
+
*/
|
|
75
|
+
declare function setProjectAnnotations(projectAnnotations: NamedOrDefaultProjectAnnotations<any> | NamedOrDefaultProjectAnnotations<any>[]): NormalizedProjectAnnotations<AngularRenderer>;
|
|
76
|
+
|
|
77
|
+
declare const moduleMetadata: <TArgs = any>(metadata: Partial<NgModuleMetadata>) => DecoratorFunction<AngularRenderer, TArgs>;
|
|
78
|
+
/**
|
|
79
|
+
* Decorator to set the config options which are available during the application bootstrap
|
|
80
|
+
* operation
|
|
81
|
+
*/
|
|
82
|
+
declare function applicationConfig<TArgs = any>(
|
|
83
|
+
/** Set of config options available during the application bootstrap operation. */
|
|
84
|
+
config: ApplicationConfig): DecoratorFunction<AngularRenderer, TArgs>;
|
|
85
|
+
declare const componentWrapperDecorator: <TArgs = any>(element: Type<unknown> | ((story: string) => string), props?: ICollection | ((storyContext: StoryContext$1<AngularRenderer, TArgs>) => ICollection)) => DecoratorFunction<AngularRenderer, TArgs>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Options for controlling the behavior of the argsToTemplate function.
|
|
89
|
+
*
|
|
90
|
+
* @template T The type of the keys in the target object.
|
|
91
|
+
*/
|
|
92
|
+
interface ArgsToTemplateOptions<T> {
|
|
93
|
+
/**
|
|
94
|
+
* An array of keys to specifically include in the output. If provided, only the keys from this
|
|
95
|
+
* array will be included in the output, irrespective of the `exclude` option. Undefined values
|
|
96
|
+
* will still be excluded from the output.
|
|
97
|
+
*/
|
|
98
|
+
include?: Array<T>;
|
|
99
|
+
/**
|
|
100
|
+
* An array of keys to specifically exclude from the output. If provided, these keys will be
|
|
101
|
+
* omitted from the output. This option is ignored if the `include` option is also provided
|
|
102
|
+
*/
|
|
103
|
+
exclude?: Array<T>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Converts an object of arguments to a string of property and event bindings and excludes undefined
|
|
107
|
+
* values. Why? Because Angular treats undefined values in property bindings as an actual value and
|
|
108
|
+
* does not apply the default value of the property as soon as the binding is set. This feels
|
|
109
|
+
* counter-intuitive and is a common source of bugs in stories.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
*
|
|
113
|
+
* ```ts
|
|
114
|
+
* // component.ts
|
|
115
|
+
* ㅤ@Component({ selector: 'example' })
|
|
116
|
+
* export class ExampleComponent {
|
|
117
|
+
* ㅤ@Input() input1: string = 'Default Input1';
|
|
118
|
+
* ㅤ@Input() input2: string = 'Default Input2';
|
|
119
|
+
* ㅤ@Output() click = new EventEmitter();
|
|
120
|
+
* }
|
|
121
|
+
*
|
|
122
|
+
* // component.stories.ts
|
|
123
|
+
* import { argsToTemplate } from '@storybook/angular';
|
|
124
|
+
* export const Input1: Story = {
|
|
125
|
+
* render: (args) => ({
|
|
126
|
+
* props: args,
|
|
127
|
+
* // Problem1: <example [input1]="input1" [input2]="input2" (click)="click($event)"></example>
|
|
128
|
+
* // This will set input2 to undefined and the internal default value will not be used.
|
|
129
|
+
* // Problem2: <example [input1]="input1" (click)="click($event)"></example>
|
|
130
|
+
* // The default value of input2 will be used, but it is not overridable by the user via controls.
|
|
131
|
+
* // Solution: Now the controls will be applicable to both input1 and input2, and the default values will be used if the user does not override them.
|
|
132
|
+
* template: `<example ${argsToTemplate(args)}"></example>`,
|
|
133
|
+
* }),
|
|
134
|
+
* args: {
|
|
135
|
+
* // In this Story, we want to set the input1 property, and the internal default property of input2 should be used.
|
|
136
|
+
* input1: 'Input 1',
|
|
137
|
+
* click: { action: 'clicked' },
|
|
138
|
+
* },
|
|
139
|
+
* };
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
declare function argsToTemplate<A extends Record<string, any>>(args: A, options?: ArgsToTemplateOptions<keyof A>): string;
|
|
143
|
+
|
|
144
|
+
export { AngularRenderer, Decorator, Loader, Meta, Preview, StoryContext, StoryFn, StoryObj, applicationConfig, argsToTemplate, componentWrapperDecorator, moduleMetadata, setProjectAnnotations };
|
package/dist/client/index.js
CHANGED
|
@@ -1,30 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var global$1 = require('@storybook/global');
|
|
4
|
+
var previewApi = require('storybook/preview-api');
|
|
5
|
+
require('@angular/compiler');
|
|
6
|
+
var platformBrowser = require('@angular/platform-browser');
|
|
7
|
+
var rxjs = require('rxjs');
|
|
8
|
+
var telejson = require('telejson');
|
|
9
|
+
var core = require('@angular/core');
|
|
10
|
+
var operators = require('rxjs/operators');
|
|
11
|
+
var common = require('@angular/common');
|
|
12
|
+
var tsDedent = require('ts-dedent');
|
|
13
|
+
var coreEvents = require('storybook/internal/core-events');
|
|
14
|
+
|
|
15
|
+
var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0});};var __decorateClass=(decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp(target,key,result),result},__decorateParam=(index,decorator)=>(target,key)=>decorator(target,key,index);global$1.global.STORYBOOK_ENV="angular";var render_exports={};__export(render_exports,{render:()=>render,renderToCanvas:()=>renderToCanvas,rendererFactory:()=>rendererFactory});var reflectionCapabilities=new core["ɵReflectionCapabilities"],getComponentInputsOutputs=component=>{let componentMetadata=getComponentDecoratorMetadata(component),componentPropsMetadata=getComponentPropsDecoratorMetadata(component),initialValue={inputs:[],outputs:[]};return componentMetadata&&componentMetadata.inputs&&initialValue.inputs.push(...componentMetadata.inputs.map(i=>({propName:typeof i=="string"?i:i.name,templateName:typeof i=="string"?i:i.alias}))),componentMetadata&&componentMetadata.outputs&&initialValue.outputs.push(...componentMetadata.outputs.map(i=>({propName:i,templateName:i}))),componentPropsMetadata?Object.entries(componentPropsMetadata).reduce((previousValue,[propertyName,values])=>{let value=values.find(v=>v instanceof core.Input||v instanceof core.Output);if(value instanceof core.Input){let inputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousInputsFiltered=previousValue.inputs.filter(i=>i.templateName!==propertyName);return {...previousValue,inputs:[...previousInputsFiltered,inputToAdd]}}if(value instanceof core.Output){let outputToAdd={propName:propertyName,templateName:value.bindingPropertyName??value.alias??propertyName},previousOutputsFiltered=previousValue.outputs.filter(i=>i.templateName!==propertyName);return {...previousValue,outputs:[...previousOutputsFiltered,outputToAdd]}}return previousValue},initialValue):initialValue};var isComponent=component=>component?(reflectionCapabilities.annotations(component)||[]).some(d=>d instanceof core.Component):!1;var getComponentPropsDecoratorMetadata=component=>reflectionCapabilities.propMetadata(component),getComponentDecoratorMetadata=component=>reflectionCapabilities.annotations(component).reverse().find(d=>d instanceof core.Component);var isValidIdentifier=name=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name),formatPropInTemplate=propertyName=>isValidIdentifier(propertyName)?propertyName:`this['${propertyName}']`,separateInputsOutputsAttributes=(ngComponentInputsOutputs,props={})=>{let inputs=ngComponentInputsOutputs.inputs.filter(i=>i.templateName in props).map(i=>i.templateName),outputs=ngComponentInputsOutputs.outputs.filter(o=>o.templateName in props).map(o=>o.templateName);return {inputs,outputs,otherProps:Object.keys(props).filter(k=>![...inputs,...outputs].includes(k))}},computesTemplateFromComponent=(component,initialProps,innerTemplate="")=>{let ngComponentMetadata=getComponentDecoratorMetadata(component),ngComponentInputsOutputs=getComponentInputsOutputs(component);if(!ngComponentMetadata.selector)return '<ng-container *ngComponentOutlet="storyComponent"></ng-container>';let{inputs:initialInputs,outputs:initialOutputs}=separateInputsOutputsAttributes(ngComponentInputsOutputs,initialProps),templateInputs=initialInputs.length>0?` ${initialInputs.map(i=>`[${i}]="${formatPropInTemplate(i)}"`).join(" ")}`:"",templateOutputs=initialOutputs.length>0?` ${initialOutputs.map(i=>`(${i})="${formatPropInTemplate(i)}($event)"`).join(" ")}`:"";return buildTemplate(ngComponentMetadata.selector,innerTemplate,templateInputs,templateOutputs)};var buildTemplate=(selector,innerTemplate,inputs,outputs)=>{let voidElements=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],firstSelector=selector.split(",")[0];return [[/(^.*?)(?=[,])/,"$1"],[/(^\..+)/,"div$1"],[/(^\[.+?])/,"div$1"],[/([\w[\]]+)(\s*,[\w\s-[\],]+)+/,"$1"],[/#([\w-]+)/,' id="$1"'],[/((\.[\w-]+)+)/,(_,c)=>` class="${c.split`.`.join` `.trim()}"`],[/(\[.+?])/g,(_,a)=>` ${a.slice(1,-1)}`],[/([\S]+)(.*)/,(template,elementSelector)=>voidElements.some(element=>elementSelector===element)?template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs} />`):template.replace(/([\S]+)(.*)/,`<$1$2${inputs}${outputs}>${innerTemplate}</$1>`)]].reduce((prevSelector,[searchValue,replacer])=>prevSelector.replace(searchValue,replacer),firstSelector)};var STORY_PROPS=new core.InjectionToken("STORY_PROPS"),storyPropsProvider=storyProps$=>({provide:STORY_PROPS,useFactory:storyDataFactory(storyProps$.asObservable()),deps:[core.NgZone]});function storyDataFactory(data){return ngZone=>new rxjs.Observable(subscriber=>{let sub=data.subscribe(v=>{ngZone.run(()=>subscriber.next(v));},err=>{ngZone.run(()=>subscriber.error(err));},()=>{ngZone.run(()=>subscriber.complete());});return ()=>{sub.unsubscribe();}})}var reflectionCapabilities2=new core["ɵReflectionCapabilities"],isComponentAlreadyDeclared=(componentToFind,moduleDeclarations,moduleImports)=>moduleDeclarations&&moduleDeclarations.flat().some(declaration=>declaration===componentToFind)?!0:moduleImports?moduleImports.flat().some(importItem=>{let extractedNgModuleMetadata=extractNgModuleMetadata(importItem);return extractedNgModuleMetadata?isComponentAlreadyDeclared(componentToFind,extractedNgModuleMetadata.declarations,extractedNgModuleMetadata.imports):!1}):!1,extractNgModuleMetadata=importItem=>{let target=importItem&&importItem.ngModule?importItem.ngModule:importItem,decorators=reflectionCapabilities2.annotations(target);if(!decorators||decorators.length===0)return null;let ngModuleDecorator=decorators.find(decorator=>decorator instanceof core.NgModule);return ngModuleDecorator||null};var reflectionCapabilities3=new core["ɵReflectionCapabilities"];new core.InjectionToken("REMOVED_MODULES");var uniqueArray=arr=>arr.flat(Number.MAX_VALUE).filter(Boolean).filter((value,index,self)=>self.indexOf(value)===index),_PropertyExtractor=class _PropertyExtractor{constructor(metadata,component){this.metadata=metadata;this.component=component;this.declarations=[];this.analyzeMetadata=async metadata=>{let declarations=[...metadata?.declarations||[]],providers=[...metadata?.providers||[]],applicationProviders=[],imports=await Promise.all([...metadata?.imports||[]].map(async imported=>{let[isRestricted,restrictedProviders]=await _PropertyExtractor.analyzeRestricted(imported);return isRestricted?(applicationProviders.unshift(restrictedProviders||[]),null):imported})).then(results=>results.filter(Boolean));return {...metadata,imports,providers,applicationProviders,declarations}};}static warnImportsModuleWithProviders(propertyExtractor){propertyExtractor.imports.some(importedModule=>"ngModule"in importedModule)&&console.warn(tsDedent.dedent(`
|
|
16
|
+
Storybook Warning:
|
|
17
|
+
moduleMetadata property 'imports' contains one or more ModuleWithProviders, likely the result of a 'Module.forRoot()'-style call.
|
|
18
|
+
In Storybook 7.0 we use Angular's new 'bootstrapApplication' API to mount the component to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
19
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' to pass your ModuleWithProviders to the 'providers' property in combination with the importProvidersFrom helper function from '@angular/core' to extract all the necessary providers.
|
|
20
|
+
Visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information
|
|
21
|
+
`));}async init(){let analyzed=await this.analyzeMetadata(this.metadata);if(this.imports=uniqueArray([common.CommonModule,analyzed.imports]),this.providers=uniqueArray(analyzed.providers),this.applicationProviders=uniqueArray(analyzed.applicationProviders),this.declarations=uniqueArray(analyzed.declarations),this.component){let{isDeclarable,isStandalone}=_PropertyExtractor.analyzeDecorators(this.component),isDeclared=isComponentAlreadyDeclared(this.component,analyzed.declarations,this.imports);isStandalone?this.imports.push(this.component):isDeclarable&&!isDeclared&&this.declarations.push(this.component);}}};_PropertyExtractor.analyzeRestricted=async ngModule=>{if(ngModule===platformBrowser.BrowserModule)return console.warn(tsDedent.dedent`
|
|
22
|
+
Storybook Warning:
|
|
23
|
+
You have imported the "BrowserModule", which is not necessary anymore.
|
|
24
|
+
In Storybook v7.0 we are using Angular's new bootstrapApplication API to mount an Angular application to the DOM.
|
|
25
|
+
Note that the BrowserModule providers are automatically included when starting an application with bootstrapApplication()
|
|
26
|
+
Please remove the "BrowserModule" from the list of imports in your moduleMetadata definition to remove this warning.
|
|
27
|
+
`),[!0];try{let animations=await import('@angular/platform-browser/animations');if(ngModule===animations.BrowserAnimationsModule)return console.warn(tsDedent.dedent`
|
|
28
|
+
Storybook Warning:
|
|
29
|
+
You have added the "BrowserAnimationsModule" to the list of "imports" in your moduleMetadata definition of your Story.
|
|
30
|
+
In Storybook 7.0 we use Angular's new 'bootstrapApplication' API to mount the component to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
31
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' and add the "provideAnimations" function to the list of "providers".
|
|
32
|
+
If your Angular version does not support "provide-like" functions, use the helper function importProvidersFrom instead to set up animations. For this case, please add "importProvidersFrom(BrowserAnimationsModule)" to the list of providers of your applicationConfig definition.
|
|
33
|
+
Please visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information.
|
|
34
|
+
`),[!0,animations.provideAnimations()];if(ngModule===animations.NoopAnimationsModule)return console.warn(tsDedent.dedent`
|
|
35
|
+
Storybook Warning:
|
|
36
|
+
You have added the "NoopAnimationsModule" to the list of "imports" in your moduleMetadata definition of your Story.
|
|
37
|
+
In Storybook v7.0 we are using Angular's new bootstrapApplication API to mount an Angular application to the DOM, which accepts a list of providers to set up application-wide providers.
|
|
38
|
+
Use the 'applicationConfig' decorator from '@storybook/angular' and add the "provideNoopAnimations" function to the list of "providers".
|
|
39
|
+
If your Angular version does not support "provide-like" functions, use the helper function importProvidersFrom instead to set up noop animations and to extract all necessary providers from NoopAnimationsModule. For this case, please add "importProvidersFrom(NoopAnimationsModule)" to the list of providers of your applicationConfig definition.
|
|
40
|
+
Please visit https://angular.io/guide/standalone-components#configuring-dependency-injection for more information.
|
|
41
|
+
`),[!0,animations.provideNoopAnimations()]}catch{return [!1]}return [!1]},_PropertyExtractor.analyzeDecorators=component=>{let decorators=reflectionCapabilities3.annotations(component),isComponent2=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Component")),isDirective=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Directive")),isPipe=decorators.some(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Pipe")),isDeclarable=isComponent2||isDirective||isPipe,isStandalone=(isComponent2||isDirective)&&[...decorators].reverse().find(d=>_PropertyExtractor.isDecoratorInstanceOf(d,"Component")||_PropertyExtractor.isDecoratorInstanceOf(d,"Directive"))?.standalone;return isStandalone===void 0&&(isStandalone=!!(core.VERSION.major&&Number(core.VERSION.major)>=19)),{isDeclarable,isStandalone}},_PropertyExtractor.isDecoratorInstanceOf=(decorator,name)=>{let factory;switch(name){case"Component":factory=core.Component;break;case"Directive":factory=core.Directive;break;case"Pipe":factory=core.Pipe;break;case"Injectable":factory=core.Injectable;break;case"Input":factory=core.Input;break;case"Output":factory=core.Output;break;default:throw new Error(`Unknown decorator type: ${name}`)}return decorator instanceof factory||decorator.ngMetadataName===name};var PropertyExtractor=_PropertyExtractor;var getNonInputsOutputsProps=(ngComponentInputsOutputs,props={})=>{let inputs=ngComponentInputsOutputs.inputs.filter(i=>i.templateName in props).map(i=>i.templateName),outputs=ngComponentInputsOutputs.outputs.filter(o=>o.templateName in props).map(o=>o.templateName);return Object.keys(props).filter(k=>![...inputs,...outputs].includes(k))},createStorybookWrapperComponent=({selector,template,storyComponent,styles,moduleMetadata:moduleMetadata2,initialProps,analyzedMetadata})=>{let viewChildSelector=storyComponent??"__storybook-noop",{imports,declarations,providers}=analyzedMetadata,StorybookComponentModule=class{};StorybookComponentModule=__decorateClass([core.NgModule({declarations,imports,exports:[...declarations,...imports]})],StorybookComponentModule),PropertyExtractor.warnImportsModuleWithProviders(analyzedMetadata);let StorybookWrapperComponent=class{constructor(storyProps$,changeDetectorRef){this.storyProps$=storyProps$;this.changeDetectorRef=changeDetectorRef;this.storyComponent=storyComponent??"";}ngOnInit(){this.storyWrapperPropsSubscription=this.storyProps$.subscribe((storyProps={})=>{Object.assign(this,storyProps),this.changeDetectorRef.detectChanges(),this.changeDetectorRef.markForCheck();});}ngAfterViewInit(){if(this.storyComponentElementRef){let ngComponentInputsOutputs=getComponentInputsOutputs(storyComponent);getNonInputsOutputsProps(ngComponentInputsOutputs,initialProps).forEach(p=>{this.storyComponentElementRef[p]=initialProps[p];}),this.storyComponentViewContainerRef.injector.get(core.ChangeDetectorRef).markForCheck(),this.changeDetectorRef.detectChanges(),this.storyComponentPropsSubscription=this.storyProps$.pipe(operators.skip(1),operators.map(props=>getNonInputsOutputsProps(ngComponentInputsOutputs,props).reduce((acc,p)=>({...acc,[p]:props[p]}),{}))).subscribe(props=>{Object.assign(this.storyComponentElementRef,props),this.storyComponentViewContainerRef.injector.get(core.ChangeDetectorRef).markForCheck(),this.changeDetectorRef.detectChanges();});}}ngOnDestroy(){this.storyComponentPropsSubscription!=null&&this.storyComponentPropsSubscription.unsubscribe(),this.storyWrapperPropsSubscription!=null&&this.storyWrapperPropsSubscription.unsubscribe();}};return __decorateClass([core.ViewChild(viewChildSelector,{static:!0})],StorybookWrapperComponent.prototype,"storyComponentElementRef",2),__decorateClass([core.ViewChild(viewChildSelector,{read:core.ViewContainerRef,static:!0})],StorybookWrapperComponent.prototype,"storyComponentViewContainerRef",2),StorybookWrapperComponent=__decorateClass([core.Component({selector,template,standalone:!0,imports:[StorybookComponentModule],providers,styles,schemas:moduleMetadata2.schemas}),__decorateParam(0,core.Inject(STORY_PROPS)),__decorateParam(1,core.Inject(core.ChangeDetectorRef))],StorybookWrapperComponent),StorybookWrapperComponent};var getApplication=({storyFnAngular,component,targetSelector,analyzedMetadata})=>{let{props,styles,moduleMetadata:moduleMetadata2={}}=storyFnAngular,{template}=storyFnAngular;return !!hasNoTemplate(template)&&component&&(template=computesTemplateFromComponent(component,props,"")),createStorybookWrapperComponent({moduleMetadata:moduleMetadata2,selector:targetSelector,template,storyComponent:component,styles,initialProps:props,analyzedMetadata})};function hasNoTemplate(template){return template==null}var queue=[],isProcessing=!1,resetCompiledComponents=async()=>{try{let{\u0275resetCompiledComponents}=await import('@angular/core');\u0275resetCompiledComponents();}catch{}},queueBootstrapping=fn=>new Promise((resolve,reject)=>{queue.push(()=>fn().then(resolve).catch(reject)),isProcessing||processQueue();}),processQueue=async()=>{for(isProcessing=!0;queue.length>0;){let bootstrappingFn=queue.shift();bootstrappingFn&&(await bootstrappingFn(),await resetCompiledComponents());}isProcessing=!1;};var getProvideZonelessChangeDetectionFn=async()=>{let angularCore=await import('@angular/core');return "provideExperimentalZonelessChangeDetection"in angularCore?angularCore.provideExperimentalZonelessChangeDetection:"provideZonelessChangeDetection"in angularCore?angularCore.provideZonelessChangeDetection:null};var applicationRefs=new Map,STORY_UID_ATTRIBUTE="data-sb-story-uid",AbstractRenderer=class{constructor(){this.previousStoryRenderInfo=new Map;}static resetApplications(domNode){applicationRefs.forEach((appRef,appDOMNode)=>{!appRef.destroyed&&(!domNode||appDOMNode===domNode)&&appRef.destroy();});}async render({storyFnAngular,forced,component,targetDOMNode}){let targetSelector=this.generateTargetSelectorFromStoryId(targetDOMNode.id),newStoryProps$=new rxjs.BehaviorSubject(storyFnAngular.props);if(!this.fullRendererRequired({targetDOMNode,storyFnAngular,moduleMetadata:{...storyFnAngular.moduleMetadata},forced})){this.storyProps$.next(storyFnAngular.props);return}await this.beforeFullRender(targetDOMNode),this.storyProps$&&this.storyProps$.complete(),this.storyProps$=newStoryProps$,this.initAngularRootElement(targetDOMNode,targetSelector);let analyzedMetadata=new PropertyExtractor(storyFnAngular.moduleMetadata,component);await analyzedMetadata.init();let storyUid=this.generateStoryUIdFromRawStoryUid(targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE)),componentSelector=storyUid!==null?`${targetSelector}[${storyUid}]`:targetSelector;storyUid!==null&&targetDOMNode.querySelector(targetSelector).toggleAttribute(storyUid,!0);let application=getApplication({storyFnAngular,component,targetSelector:componentSelector,analyzedMetadata}),providers=[storyPropsProvider(newStoryProps$),...analyzedMetadata.applicationProviders,...storyFnAngular.applicationConfig?.providers??[]];if(STORYBOOK_ANGULAR_OPTIONS?.experimentalZoneless){let provideZonelessChangeDetectionFn=await getProvideZonelessChangeDetectionFn();if(provideZonelessChangeDetectionFn)providers.unshift(provideZonelessChangeDetectionFn());else throw new Error("Zoneless change detection requires Angular 18 or higher")}let applicationRef=await queueBootstrapping(()=>platformBrowser.bootstrapApplication(application,{...storyFnAngular.applicationConfig,providers}));applicationRefs.set(targetDOMNode,applicationRef);}generateTargetSelectorFromStoryId(id){let invalidHtmlTag=/[^A-Za-z0-9-]/g;return invalidHtmlTag.test(id)?`sb-${id.replace(invalidHtmlTag,"")}-component`:id}generateStoryUIdFromRawStoryUid(rawStoryUid){if(rawStoryUid===null)return rawStoryUid;let accentCharacters=/[\u0300-\u036f]/g;return rawStoryUid.normalize("NFD").replace(accentCharacters,"")}initAngularRootElement(targetDOMNode,targetSelector){targetDOMNode.innerHTML="",targetDOMNode.appendChild(document.createElement(targetSelector));}fullRendererRequired({targetDOMNode,storyFnAngular,moduleMetadata:moduleMetadata2,forced}){let previousStoryRenderInfo=this.previousStoryRenderInfo.get(targetDOMNode),currentStoryRender={storyFnAngular,moduleMetadataSnapshot:telejson.stringify(moduleMetadata2,{maxDepth:50})};return this.previousStoryRenderInfo.set(targetDOMNode,currentStoryRender),!forced||!this.storyProps$||!!storyFnAngular?.template&&previousStoryRenderInfo?.storyFnAngular?.template!==storyFnAngular.template?!0:currentStoryRender.moduleMetadataSnapshot!==previousStoryRenderInfo?.moduleMetadataSnapshot}};var CanvasRenderer=class _CanvasRenderer extends AbstractRenderer{async render(options){await super.render(options);}async beforeFullRender(){_CanvasRenderer.resetApplications();}};var storyCounts=new Map,getNextStoryUID=storyId=>{storyCounts.has(storyId)||storyCounts.set(storyId,-1);let count=storyCounts.get(storyId)+1;return storyCounts.set(storyId,count),`${storyId}-${count}`};var DocsRenderer=class _DocsRenderer extends AbstractRenderer{async render(options){let channel=previewApi.addons.getChannel();channel.once(coreEvents.STORY_CHANGED,async()=>{await _DocsRenderer.resetApplications();}),channel.once(coreEvents.DOCS_RENDERED,async()=>{await _DocsRenderer.resetApplications();}),await super.render({...options,forced:!1});}async beforeFullRender(domNode){_DocsRenderer.resetApplications(domNode);}initAngularRootElement(targetDOMNode,targetSelector){super.initAngularRootElement(targetDOMNode,targetSelector),targetDOMNode.setAttribute(STORY_UID_ATTRIBUTE,getNextStoryUID(targetDOMNode.id));}};var RendererFactory=class{constructor(){this.rendererMap=new Map;}async getRendererInstance(targetDOMNode){let targetId=targetDOMNode.id;if(targetDOMNode===null)return null;let renderType=getRenderType(targetDOMNode);return this.lastRenderType&&this.lastRenderType!==renderType&&(await AbstractRenderer.resetApplications(),clearRootHTMLElement(renderType),this.rendererMap.clear()),this.rendererMap.has(targetId)||this.rendererMap.set(targetId,this.buildRenderer(renderType)),this.lastRenderType=renderType,this.rendererMap.get(targetId)}buildRenderer(renderType){return renderType==="docs"?new DocsRenderer:new CanvasRenderer}},getRenderType=targetDOMNode=>targetDOMNode.id==="storybook-root"?"canvas":"docs";function clearRootHTMLElement(renderType){switch(renderType){case"canvas":global.document.getElementById("storybook-docs").innerHTML="";break;case"docs":global.document.getElementById("storybook-root").innerHTML="";break;}}var rendererFactory=new RendererFactory,render=props=>({props});async function renderToCanvas({storyFn,showMain,forceRemount,storyContext:{component}},element){showMain(),await(await rendererFactory.getRendererInstance(element)).render({storyFnAngular:storyFn(),component,forced:!forceRemount,targetDOMNode:element});}function setProjectAnnotations(projectAnnotations){return previewApi.setDefaultProjectAnnotations(render_exports),previewApi.setProjectAnnotations(projectAnnotations)}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}}:{}}};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(" ")}
|
|
42
|
+
|
|
43
|
+
exports.applicationConfig = applicationConfig;
|
|
44
|
+
exports.argsToTemplate = argsToTemplate;
|
|
45
|
+
exports.componentWrapperDecorator = componentWrapperDecorator;
|
|
46
|
+
exports.moduleMetadata = moduleMetadata;
|
|
47
|
+
exports.setProjectAnnotations = setProjectAnnotations;
|
package/dist/client/index.mjs
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
3
|
-
|
|
4
|
-
export * from './portable-stories';
|
|
5
|
-
export { moduleMetadata, componentWrapperDecorator, applicationConfig } from './decorators';
|
|
6
|
-
export { argsToTemplate } from './argsToTemplate';
|
|
7
|
-
// optimization: stop HMR propagation in webpack
|
|
8
|
-
if (typeof module !== 'undefined')
|
|
9
|
-
module?.hot?.decline();
|
|
1
|
+
export { applicationConfig, argsToTemplate, componentWrapperDecorator, moduleMetadata, setProjectAnnotations } from '../chunk-KMSSK3DZ.mjs';
|
|
2
|
+
import '../chunk-CUDJAP6K.mjs';
|
|
3
|
+
import '../chunk-LXSTVAFF.mjs';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
export { }
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@angular/core');
|
|
4
|
+
|
|
5
|
+
core.enableProdMode();
|