@storybook/angular 6.5.0-alpha.7 → 6.5.0-beta.1

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.
Files changed (99) hide show
  1. package/README.md +2 -2
  2. package/dist/ts3.4/builders/build-storybook/index.d.ts +1 -1
  3. package/dist/ts3.4/client/docs/compodoc.d.ts +18 -0
  4. package/dist/ts3.4/client/docs/config.d.ts +15 -0
  5. package/dist/ts3.4/client/docs/index.d.ts +1 -0
  6. package/dist/ts3.4/client/docs/prepareForInline.d.ts +7 -0
  7. package/dist/ts3.4/client/docs/sourceDecorator.d.ts +9 -0
  8. package/dist/ts3.4/client/docs/types.d.ts +102 -0
  9. package/dist/ts3.4/client/preview/angular-beta/utils/NgComponentAnalyzer.d.ts +4 -2
  10. package/dist/ts3.4/server/angular-cli-webpack-older.d.ts +2 -1
  11. package/dist/ts3.4/server/framework-preset-angular-docs.d.ts +2 -0
  12. package/dist/ts3.4/server/framework-preset-angular.d.ts +3 -2
  13. package/dist/ts3.4/server/preset.d.ts +1 -1
  14. package/dist/ts3.9/builders/build-storybook/index.d.ts +2 -2
  15. package/dist/ts3.9/builders/build-storybook/index.js +34 -84
  16. package/dist/ts3.9/builders/build-storybook/schema.json +6 -2
  17. package/dist/ts3.9/builders/start-storybook/index.d.ts +1 -1
  18. package/dist/ts3.9/builders/start-storybook/index.js +40 -91
  19. package/dist/ts3.9/builders/start-storybook/schema.json +1 -2
  20. package/dist/ts3.9/builders/utils/build-standalone-errors-handler.js +13 -11
  21. package/dist/ts3.9/builders/utils/run-compodoc.js +41 -21
  22. package/dist/ts3.9/client/docs/compodoc.d.ts +18 -0
  23. package/dist/ts3.9/client/docs/compodoc.js +247 -0
  24. package/dist/ts3.9/client/docs/config.d.ts +15 -0
  25. package/dist/ts3.9/client/docs/config.js +22 -0
  26. package/dist/ts3.9/client/docs/index.d.ts +1 -0
  27. package/dist/ts3.9/client/docs/index.js +13 -0
  28. package/dist/ts3.9/client/docs/prepareForInline.d.ts +7 -0
  29. package/dist/ts3.9/client/docs/prepareForInline.js +45 -0
  30. package/dist/ts3.9/client/docs/sourceDecorator.d.ts +9 -0
  31. package/dist/ts3.9/client/docs/sourceDecorator.js +49 -0
  32. package/dist/ts3.9/client/docs/types.d.ts +102 -0
  33. package/dist/ts3.9/client/docs/types.js +2 -0
  34. package/dist/ts3.9/client/preview/angular/app.token.js +1 -1
  35. package/dist/ts3.9/client/preview/angular/components/app.component.js +55 -59
  36. package/dist/ts3.9/client/preview/angular/helpers.d.ts +2 -2
  37. package/dist/ts3.9/client/preview/angular/helpers.js +66 -80
  38. package/dist/ts3.9/client/preview/angular-beta/AbstractRenderer.js +77 -125
  39. package/dist/ts3.9/client/preview/angular-beta/CanvasRenderer.js +18 -81
  40. package/dist/ts3.9/client/preview/angular-beta/ComputesTemplateFromComponent.d.ts +3 -3
  41. package/dist/ts3.9/client/preview/angular-beta/ComputesTemplateFromComponent.js +75 -69
  42. package/dist/ts3.9/client/preview/angular-beta/DocsRenderer.js +41 -127
  43. package/dist/ts3.9/client/preview/angular-beta/RendererFactory.js +30 -66
  44. package/dist/ts3.9/client/preview/angular-beta/StorybookModule.js +42 -46
  45. package/dist/ts3.9/client/preview/angular-beta/StorybookProvider.js +15 -17
  46. package/dist/ts3.9/client/preview/angular-beta/StorybookWrapperComponent.js +58 -98
  47. package/dist/ts3.9/client/preview/angular-beta/utils/NgComponentAnalyzer.d.ts +4 -2
  48. package/dist/ts3.9/client/preview/angular-beta/utils/NgComponentAnalyzer.js +30 -77
  49. package/dist/ts3.9/client/preview/angular-beta/utils/NgModulesAnalyzer.js +10 -14
  50. package/dist/ts3.9/client/preview/decorateStory.d.ts +2 -2
  51. package/dist/ts3.9/client/preview/decorateStory.js +16 -36
  52. package/dist/ts3.9/client/preview/decorators.d.ts +4 -4
  53. package/dist/ts3.9/client/preview/decorators.js +22 -37
  54. package/dist/ts3.9/client/preview/globals.js +2 -2
  55. package/dist/ts3.9/client/preview/index.d.ts +3 -3
  56. package/dist/ts3.9/client/preview/index.js +8 -21
  57. package/dist/ts3.9/client/preview/render.d.ts +3 -3
  58. package/dist/ts3.9/client/preview/render.js +17 -56
  59. package/dist/ts3.9/client/preview/types-6-0.d.ts +2 -2
  60. package/dist/ts3.9/client/preview/types-7-0.d.ts +1 -1
  61. package/dist/ts3.9/demo/button.component.js +31 -22
  62. package/dist/ts3.9/demo/welcome.component.js +85 -18
  63. package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/tsconfig.json +4 -1
  64. package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/tsconfig.json +4 -1
  65. package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/tsconfig.json +4 -1
  66. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/tsconfig.json +4 -1
  67. package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/tsconfig.json +7 -2
  68. package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/tsconfig.json +7 -2
  69. package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/tsconfig.json +4 -1
  70. package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/tsconfig.json +4 -1
  71. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/tsconfig.json +4 -1
  72. package/dist/ts3.9/server/angular-cli-webpack-12.2.x.js +38 -81
  73. package/dist/ts3.9/server/angular-cli-webpack-13.x.x.js +42 -85
  74. package/dist/ts3.9/server/angular-cli-webpack-older.d.ts +2 -1
  75. package/dist/ts3.9/server/angular-cli-webpack-older.js +77 -123
  76. package/dist/ts3.9/server/angular-devkit-build-webpack.js +72 -133
  77. package/dist/ts3.9/server/angular-read-workspace.js +44 -78
  78. package/dist/ts3.9/server/build.js +10 -47
  79. package/dist/ts3.9/server/create-fork-ts-checker-plugin.js +3 -3
  80. package/dist/ts3.9/server/framework-preset-angular-cli.js +111 -179
  81. package/dist/ts3.9/server/framework-preset-angular-docs.d.ts +2 -0
  82. package/dist/ts3.9/server/framework-preset-angular-docs.js +13 -0
  83. package/dist/ts3.9/server/framework-preset-angular-ivy.js +35 -92
  84. package/dist/ts3.9/server/framework-preset-angular.d.ts +3 -2
  85. package/dist/ts3.9/server/framework-preset-angular.js +88 -62
  86. package/dist/ts3.9/server/index.js +2 -2
  87. package/dist/ts3.9/server/ngx-template-loader/index.js +15 -15
  88. package/dist/ts3.9/server/options.d.ts +1 -1
  89. package/dist/ts3.9/server/options.js +1 -1
  90. package/dist/ts3.9/server/preset.d.ts +1 -1
  91. package/dist/ts3.9/server/preset.js +6 -14
  92. package/dist/ts3.9/server/ts_config.js +5 -5
  93. package/dist/ts3.9/server/utils/filter-out-styling-rules.js +4 -4
  94. package/dist/ts3.9/server/utils/module-is-available.js +1 -1
  95. package/dist/ts3.9/server/utils/normalize-asset-patterns.js +16 -31
  96. package/dist/ts3.9/server/utils/normalize-optimization.js +3 -3
  97. package/dist/ts3.9/types/index.d.ts +1 -1
  98. package/package.json +24 -26
  99. package/standalone.d.ts +5 -7
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
- return cooked;
5
- };
6
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
4
  };
9
5
  Object.defineProperty(exports, "__esModule", { value: true });
10
6
  exports.buildStandaloneErrorHandler = void 0;
11
- var node_logger_1 = require("@storybook/node-logger");
12
- var ts_dedent_1 = __importDefault(require("ts-dedent"));
13
- exports.buildStandaloneErrorHandler = function (error) {
7
+ const node_logger_1 = require("@storybook/node-logger");
8
+ const ts_dedent_1 = __importDefault(require("ts-dedent"));
9
+ exports.buildStandaloneErrorHandler = (error) => {
14
10
  var _a;
15
11
  // Duplicate code for Standalone error handling
16
12
  // Source: https://github.com/storybookjs/storybook/blob/39c7ba09ad84fbd466f9c25d5b92791a5450b9f6/lib/core-server/src/build-dev.ts#L136
@@ -20,17 +16,23 @@ exports.buildStandaloneErrorHandler = function (error) {
20
16
  node_logger_1.logger.error(error.error);
21
17
  }
22
18
  else if (error.stats && error.stats.compilation.errors) {
23
- error.stats.compilation.errors.forEach(function (e) { return node_logger_1.logger.plain(e); });
19
+ error.stats.compilation.errors.forEach((e) => node_logger_1.logger.plain(e));
24
20
  }
25
21
  else {
26
22
  node_logger_1.logger.error(error);
27
23
  }
28
24
  }
29
25
  else if ((_a = error.compilation) === null || _a === void 0 ? void 0 : _a.errors) {
30
- error.compilation.errors.forEach(function (e) { return node_logger_1.logger.plain(e); });
26
+ error.compilation.errors.forEach((e) => node_logger_1.logger.plain(e));
31
27
  }
32
28
  node_logger_1.logger.line();
33
29
  return error.close
34
- ? ts_dedent_1.default(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n FATAL broken build!, will close the process,\n Fix the error below and restart storybook.\n "], ["\n FATAL broken build!, will close the process,\n Fix the error below and restart storybook.\n "]))) : ts_dedent_1.default(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n Broken build, fix the error above.\n You may need to refresh the browser.\n "], ["\n Broken build, fix the error above.\n You may need to refresh the browser.\n "])));
30
+ ? ts_dedent_1.default `
31
+ FATAL broken build!, will close the process,
32
+ Fix the error below and restart storybook.
33
+ `
34
+ : ts_dedent_1.default `
35
+ Broken build, fix the error above.
36
+ You may need to refresh the browser.
37
+ `;
35
38
  };
36
- var templateObject_1, templateObject_2;
@@ -1,39 +1,59 @@
1
1
  "use strict";
2
- var __spreadArrays = (this && this.__spreadArrays) || function () {
3
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
5
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
6
- r[k] = a[j];
7
- return r;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
8
20
  };
9
21
  Object.defineProperty(exports, "__esModule", { value: true });
10
22
  exports.runCompodoc = void 0;
11
- var child_process_1 = require("child_process");
12
- var rxjs_1 = require("rxjs");
13
- var hasTsConfigArg = function (args) { return args.indexOf('-p') !== -1; };
14
- exports.runCompodoc = function (_a, context) {
15
- var compodocArgs = _a.compodocArgs, tsconfig = _a.tsconfig;
16
- return new rxjs_1.Observable(function (observer) {
17
- var finalCompodocArgs = __spreadArrays([
18
- 'compodoc'
19
- ], (hasTsConfigArg(compodocArgs) ? [] : ['-p', tsconfig]), [
23
+ const child_process_1 = require("child_process");
24
+ const rxjs_1 = require("rxjs");
25
+ const path = __importStar(require("path"));
26
+ const hasTsConfigArg = (args) => args.indexOf('-p') !== -1;
27
+ // path.relative is necessary to workaround a compodoc issue with
28
+ // absolute paths on windows machines
29
+ const toRelativePath = (pathToTsConfig) => {
30
+ return path.isAbsolute(pathToTsConfig) ? path.relative('.', pathToTsConfig) : pathToTsConfig;
31
+ };
32
+ exports.runCompodoc = ({ compodocArgs, tsconfig }, context) => {
33
+ return new rxjs_1.Observable((observer) => {
34
+ const tsConfigPath = toRelativePath(tsconfig);
35
+ const finalCompodocArgs = [
36
+ 'compodoc',
37
+ // Default options
38
+ ...(hasTsConfigArg(compodocArgs) ? [] : ['-p', tsConfigPath]),
20
39
  '-d',
21
- "" + context.workspaceRoot
22
- ], compodocArgs);
40
+ `${context.workspaceRoot}`,
41
+ ...compodocArgs,
42
+ ];
23
43
  try {
24
44
  context.logger.info(finalCompodocArgs.join(' '));
25
- var child = child_process_1.spawn('npx', finalCompodocArgs, {
45
+ const child = child_process_1.spawn('npx', finalCompodocArgs, {
26
46
  cwd: context.workspaceRoot,
27
47
  env: process.env,
28
48
  shell: true,
29
49
  });
30
- child.stdout.on('data', function (data) {
50
+ child.stdout.on('data', (data) => {
31
51
  context.logger.info(data.toString());
32
52
  });
33
- child.stderr.on('data', function (data) {
53
+ child.stderr.on('data', (data) => {
34
54
  context.logger.error(data.toString());
35
55
  });
36
- child.on('close', function (code) {
56
+ child.on('close', (code) => {
37
57
  if (code === 0) {
38
58
  observer.next();
39
59
  observer.complete();
@@ -0,0 +1,18 @@
1
+ import type { ArgTypes } from '@storybook/api';
2
+ import type { Class, CompodocJson, Component, Injectable, Method, Pipe, Property, Directive } from './types';
3
+ export declare const isMethod: (methodOrProp: Method | Property) => methodOrProp is Method;
4
+ export declare const setCompodocJson: (compodocJson: CompodocJson) => void;
5
+ export declare const getCompodocJson: () => CompodocJson;
6
+ export declare const checkValidComponentOrDirective: (component: Component | Directive) => void;
7
+ export declare const checkValidCompodocJson: (compodocJson: CompodocJson) => void;
8
+ export declare const findComponentByName: (name: string, compodocJson: CompodocJson) => Class | Injectable | Pipe | Directive;
9
+ export declare const extractType: (property: Property, defaultValue: any) => {
10
+ name: string;
11
+ value?: undefined;
12
+ } | {
13
+ name: string;
14
+ value: any[];
15
+ };
16
+ export declare const extractArgTypesFromData: (componentData: Class | Directive | Injectable | Pipe) => ArgTypes;
17
+ export declare const extractArgTypes: (component: Component | Directive) => ArgTypes;
18
+ export declare const extractComponentDescription: (component: Component | Directive) => string;
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /* eslint-disable no-underscore-dangle */
3
+ /* global window */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.extractComponentDescription = exports.extractArgTypes = exports.extractArgTypesFromData = exports.extractType = exports.findComponentByName = exports.checkValidCompodocJson = exports.checkValidComponentOrDirective = exports.getCompodocJson = exports.setCompodocJson = exports.isMethod = void 0;
6
+ const client_logger_1 = require("@storybook/client-logger");
7
+ exports.isMethod = (methodOrProp) => {
8
+ return methodOrProp.args !== undefined;
9
+ };
10
+ exports.setCompodocJson = (compodocJson) => {
11
+ // @ts-ignore
12
+ window.__STORYBOOK_COMPODOC_JSON__ = compodocJson;
13
+ };
14
+ // @ts-ignore
15
+ exports.getCompodocJson = () => window.__STORYBOOK_COMPODOC_JSON__;
16
+ exports.checkValidComponentOrDirective = (component) => {
17
+ if (!component.name) {
18
+ throw new Error(`Invalid component ${JSON.stringify(component)}`);
19
+ }
20
+ };
21
+ exports.checkValidCompodocJson = (compodocJson) => {
22
+ if (!compodocJson || !compodocJson.components) {
23
+ throw new Error('Invalid compodoc JSON');
24
+ }
25
+ };
26
+ const hasDecorator = (item, decoratorName) => item.decorators && item.decorators.find((x) => x.name === decoratorName);
27
+ const mapPropertyToSection = (item) => {
28
+ if (hasDecorator(item, 'ViewChild')) {
29
+ return 'view child';
30
+ }
31
+ if (hasDecorator(item, 'ViewChildren')) {
32
+ return 'view children';
33
+ }
34
+ if (hasDecorator(item, 'ContentChild')) {
35
+ return 'content child';
36
+ }
37
+ if (hasDecorator(item, 'ContentChildren')) {
38
+ return 'content children';
39
+ }
40
+ return 'properties';
41
+ };
42
+ const mapItemToSection = (key, item) => {
43
+ switch (key) {
44
+ case 'methods':
45
+ case 'methodsClass':
46
+ return 'methods';
47
+ case 'inputsClass':
48
+ return 'inputs';
49
+ case 'outputsClass':
50
+ return 'outputs';
51
+ case 'properties':
52
+ case 'propertiesClass':
53
+ if (exports.isMethod(item)) {
54
+ throw new Error("Cannot be of type Method if key === 'propertiesClass'");
55
+ }
56
+ return mapPropertyToSection(item);
57
+ default:
58
+ throw new Error(`Unknown key: ${key}`);
59
+ }
60
+ };
61
+ exports.findComponentByName = (name, compodocJson) => compodocJson.components.find((c) => c.name === name) ||
62
+ compodocJson.directives.find((c) => c.name === name) ||
63
+ compodocJson.pipes.find((c) => c.name === name) ||
64
+ compodocJson.injectables.find((c) => c.name === name) ||
65
+ compodocJson.classes.find((c) => c.name === name);
66
+ const getComponentData = (component) => {
67
+ if (!component) {
68
+ return null;
69
+ }
70
+ exports.checkValidComponentOrDirective(component);
71
+ const compodocJson = exports.getCompodocJson();
72
+ if (!compodocJson) {
73
+ return null;
74
+ }
75
+ exports.checkValidCompodocJson(compodocJson);
76
+ const { name } = component;
77
+ const metadata = exports.findComponentByName(name, compodocJson);
78
+ if (!metadata) {
79
+ client_logger_1.logger.warn(`Component not found in compodoc JSON: '${name}'`);
80
+ }
81
+ return metadata;
82
+ };
83
+ const displaySignature = (item) => {
84
+ const args = item.args.map((arg) => `${arg.name}${arg.optional ? '?' : ''}: ${arg.type}`);
85
+ return `(${args.join(', ')}) => ${item.returnType}`;
86
+ };
87
+ const extractTypeFromValue = (defaultValue) => {
88
+ const valueType = typeof defaultValue;
89
+ return defaultValue || valueType === 'number' || valueType === 'boolean' || valueType === 'string'
90
+ ? valueType
91
+ : null;
92
+ };
93
+ const extractEnumValues = (compodocType) => {
94
+ var _a, _b;
95
+ const compodocJson = exports.getCompodocJson();
96
+ const enumType = (_b = (_a = compodocJson === null || compodocJson === void 0 ? void 0 : compodocJson.miscellaneous) === null || _a === void 0 ? void 0 : _a.enumerations) === null || _b === void 0 ? void 0 : _b.find((x) => x.name === compodocType);
97
+ if (enumType === null || enumType === void 0 ? void 0 : enumType.childs.every((x) => x.value)) {
98
+ return enumType.childs.map((x) => x.value);
99
+ }
100
+ if (typeof compodocType !== 'string' || compodocType.indexOf('|') === -1) {
101
+ return null;
102
+ }
103
+ try {
104
+ return compodocType.split('|').map((value) => JSON.parse(value));
105
+ }
106
+ catch (e) {
107
+ return null;
108
+ }
109
+ };
110
+ exports.extractType = (property, defaultValue) => {
111
+ const compodocType = property.type || extractTypeFromValue(defaultValue);
112
+ switch (compodocType) {
113
+ case 'string':
114
+ case 'boolean':
115
+ case 'number':
116
+ return { name: compodocType };
117
+ case undefined:
118
+ case null:
119
+ return { name: 'void' };
120
+ default: {
121
+ const resolvedType = resolveTypealias(compodocType);
122
+ const enumValues = extractEnumValues(resolvedType);
123
+ return enumValues ? { name: 'enum', value: enumValues } : { name: 'object' };
124
+ }
125
+ }
126
+ };
127
+ const castDefaultValue = (property, defaultValue) => {
128
+ const compodocType = property.type;
129
+ // All these checks are necessary as compodoc does not always set the type ie. @HostBinding have empty types.
130
+ // null and undefined also have 'any' type
131
+ if (['boolean', 'number', 'string', 'EventEmitter'].includes(compodocType)) {
132
+ switch (compodocType) {
133
+ case 'boolean':
134
+ return defaultValue === 'true';
135
+ case 'number':
136
+ return Number(defaultValue);
137
+ case 'EventEmitter':
138
+ return undefined;
139
+ default:
140
+ return defaultValue;
141
+ }
142
+ }
143
+ else {
144
+ switch (defaultValue) {
145
+ case 'true':
146
+ return true;
147
+ case 'false':
148
+ return false;
149
+ case 'null':
150
+ return null;
151
+ case 'undefined':
152
+ return undefined;
153
+ default:
154
+ return defaultValue;
155
+ }
156
+ }
157
+ };
158
+ const extractDefaultValueFromComments = (property, value) => {
159
+ let commentValue = value;
160
+ property.jsdoctags.forEach((tag) => {
161
+ if (['default', 'defaultvalue'].includes(tag.tagName.escapedText)) {
162
+ // @ts-ignore
163
+ const dom = new window.DOMParser().parseFromString(tag.comment, 'text/html');
164
+ commentValue = dom.body.textContent;
165
+ }
166
+ });
167
+ return commentValue;
168
+ };
169
+ const extractDefaultValue = (property) => {
170
+ var _a, _b;
171
+ try {
172
+ let value = (_a = property.defaultValue) === null || _a === void 0 ? void 0 : _a.replace(/^'(.*)'$/, '$1');
173
+ value = castDefaultValue(property, value);
174
+ if (value == null && ((_b = property.jsdoctags) === null || _b === void 0 ? void 0 : _b.length) > 0) {
175
+ value = extractDefaultValueFromComments(property, value);
176
+ }
177
+ return value;
178
+ }
179
+ catch (err) {
180
+ client_logger_1.logger.debug(`Error extracting ${property.name}: ${property.defaultValue}`);
181
+ return undefined;
182
+ }
183
+ };
184
+ const resolveTypealias = (compodocType) => {
185
+ var _a, _b;
186
+ const compodocJson = exports.getCompodocJson();
187
+ const typeAlias = (_b = (_a = compodocJson === null || compodocJson === void 0 ? void 0 : compodocJson.miscellaneous) === null || _a === void 0 ? void 0 : _a.typealiases) === null || _b === void 0 ? void 0 : _b.find((x) => x.name === compodocType);
188
+ return typeAlias ? resolveTypealias(typeAlias.rawtype) : compodocType;
189
+ };
190
+ exports.extractArgTypesFromData = (componentData) => {
191
+ const sectionToItems = {};
192
+ const compodocClasses = ['component', 'directive'].includes(componentData.type)
193
+ ? ['propertiesClass', 'methodsClass', 'inputsClass', 'outputsClass']
194
+ : ['properties', 'methods'];
195
+ compodocClasses.forEach((key) => {
196
+ const data = componentData[key] || [];
197
+ data.forEach((item) => {
198
+ const section = mapItemToSection(key, item);
199
+ const defaultValue = exports.isMethod(item) ? undefined : extractDefaultValue(item);
200
+ const type = exports.isMethod(item) || (section !== 'inputs' && section !== 'properties')
201
+ ? { name: 'void' }
202
+ : exports.extractType(item, defaultValue);
203
+ const action = section === 'outputs' ? { action: item.name } : {};
204
+ const argType = Object.assign(Object.assign({ name: item.name, description: item.rawdescription || item.description, defaultValue,
205
+ type }, action), { table: {
206
+ category: section,
207
+ type: {
208
+ summary: exports.isMethod(item) ? displaySignature(item) : item.type,
209
+ required: exports.isMethod(item) ? false : !item.optional,
210
+ },
211
+ defaultValue: { summary: defaultValue },
212
+ } });
213
+ if (!sectionToItems[section]) {
214
+ sectionToItems[section] = [];
215
+ }
216
+ sectionToItems[section].push(argType);
217
+ });
218
+ });
219
+ const SECTIONS = [
220
+ 'properties',
221
+ 'inputs',
222
+ 'outputs',
223
+ 'methods',
224
+ 'view child',
225
+ 'view children',
226
+ 'content child',
227
+ 'content children',
228
+ ];
229
+ const argTypes = {};
230
+ SECTIONS.forEach((section) => {
231
+ const items = sectionToItems[section];
232
+ if (items) {
233
+ items.forEach((argType) => {
234
+ argTypes[argType.name] = argType;
235
+ });
236
+ }
237
+ });
238
+ return argTypes;
239
+ };
240
+ exports.extractArgTypes = (component) => {
241
+ const componentData = getComponentData(component);
242
+ return componentData && exports.extractArgTypesFromData(componentData);
243
+ };
244
+ exports.extractComponentDescription = (component) => {
245
+ const componentData = getComponentData(component);
246
+ return componentData && (componentData.rawdescription || componentData.description);
247
+ };
@@ -0,0 +1,15 @@
1
+ import { SourceType } from '@storybook/docs-tools';
2
+ export declare const parameters: {
3
+ docs: {
4
+ inlineStories: boolean;
5
+ prepareForInline: (storyFn: import("@storybook/csf").PartialStoryFn<import("..").AngularFramework, import("@storybook/csf").Args>, { id, parameters, component }: import("..").StoryContext) => import("react").DetailedReactHTMLElement<import("react").HTMLAttributes<undefined>, undefined>;
6
+ extractArgTypes: (component: import("./types").Directive) => import("@storybook/api").ArgTypes;
7
+ extractComponentDescription: (component: import("./types").Directive) => string;
8
+ source: {
9
+ type: SourceType;
10
+ language: string;
11
+ };
12
+ };
13
+ };
14
+ export declare const decorators: ((storyFn: import("@storybook/csf").PartialStoryFn<import("..").AngularFramework, import("@storybook/csf").Args>, context: import("..").StoryContext) => import("..").IStory)[];
15
+ export declare const argTypesEnhancers: (<TFramework extends import("@storybook/csf").AnyFramework>(context: import("@storybook/csf").StoryContextForEnhancers<TFramework, import("@storybook/csf").Args>) => import("@storybook/csf").StrictArgTypes<import("@storybook/csf").Args> | import("@storybook/addons").Parameters)[];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.argTypesEnhancers = exports.decorators = exports.parameters = void 0;
4
+ const docs_tools_1 = require("@storybook/docs-tools");
5
+ const compodoc_1 = require("./compodoc");
6
+ const sourceDecorator_1 = require("./sourceDecorator");
7
+ const prepareForInline_1 = require("./prepareForInline");
8
+ exports.parameters = {
9
+ docs: {
10
+ // probably set this to true by default once it's battle-tested
11
+ inlineStories: false,
12
+ prepareForInline: prepareForInline_1.prepareForInline,
13
+ extractArgTypes: compodoc_1.extractArgTypes,
14
+ extractComponentDescription: compodoc_1.extractComponentDescription,
15
+ source: {
16
+ type: docs_tools_1.SourceType.DYNAMIC,
17
+ language: 'html',
18
+ },
19
+ },
20
+ };
21
+ exports.decorators = [sourceDecorator_1.sourceDecorator];
22
+ exports.argTypesEnhancers = [docs_tools_1.enhanceArgTypes];
@@ -0,0 +1 @@
1
+ export * from './compodoc';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./compodoc"), exports);
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { PartialStoryFn } from '@storybook/csf';
3
+ import { AngularFramework, StoryContext } from '..';
4
+ /**
5
+ * Uses the angular renderer to generate a story. Uses p-limit to run synchronously
6
+ */
7
+ export declare const prepareForInline: (storyFn: PartialStoryFn<AngularFramework>, { id, parameters, component }: StoryContext) => React.DetailedReactHTMLElement<React.HTMLAttributes<undefined>, undefined>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.prepareForInline = void 0;
16
+ const react_1 = __importDefault(require("react"));
17
+ const p_limit_1 = __importDefault(require("p-limit"));
18
+ const nanoid_1 = require("nanoid");
19
+ const renderer_1 = require("../../renderer");
20
+ const limit = p_limit_1.default(1);
21
+ /**
22
+ * Uses the angular renderer to generate a story. Uses p-limit to run synchronously
23
+ */
24
+ exports.prepareForInline = (storyFn, { id, parameters, component }) => {
25
+ const el = react_1.default.useRef();
26
+ react_1.default.useEffect(() => {
27
+ (() => __awaiter(void 0, void 0, void 0, function* () {
28
+ limit(() => __awaiter(void 0, void 0, void 0, function* () {
29
+ const renderer = yield renderer_1.rendererFactory.getRendererInstance(`${id}-${nanoid_1.nanoid(10)}`.toLowerCase(), el.current);
30
+ if (renderer) {
31
+ yield renderer.render({
32
+ forced: false,
33
+ component,
34
+ parameters,
35
+ storyFnAngular: storyFn(),
36
+ targetDOMNode: el.current,
37
+ });
38
+ }
39
+ }));
40
+ }))();
41
+ });
42
+ return react_1.default.createElement('div', {
43
+ ref: el,
44
+ });
45
+ };
@@ -0,0 +1,9 @@
1
+ import type { PartialStoryFn } from '@storybook/csf';
2
+ import { StoryContext, AngularFramework } from '..';
3
+ export declare const skipSourceRender: (context: StoryContext) => any;
4
+ /**
5
+ * Angular source decorator.
6
+ * @param storyFn Fn
7
+ * @param context StoryContext
8
+ */
9
+ export declare const sourceDecorator: (storyFn: PartialStoryFn<AngularFramework>, context: StoryContext) => import("..").IStory;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sourceDecorator = exports.skipSourceRender = void 0;
4
+ const addons_1 = require("@storybook/addons");
5
+ const docs_tools_1 = require("@storybook/docs-tools");
6
+ const renderer_1 = require("../../renderer");
7
+ exports.skipSourceRender = (context) => {
8
+ var _a;
9
+ const sourceParams = (_a = context === null || context === void 0 ? void 0 : context.parameters.docs) === null || _a === void 0 ? void 0 : _a.source;
10
+ // always render if the user forces it
11
+ if ((sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.type) === docs_tools_1.SourceType.DYNAMIC) {
12
+ return false;
13
+ }
14
+ // never render if the user is forcing the block to render code, or
15
+ // if the user provides code
16
+ return (sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.code) || (sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.type) === docs_tools_1.SourceType.CODE;
17
+ };
18
+ /**
19
+ * Angular source decorator.
20
+ * @param storyFn Fn
21
+ * @param context StoryContext
22
+ */
23
+ exports.sourceDecorator = (storyFn, context) => {
24
+ const story = storyFn();
25
+ if (exports.skipSourceRender(context)) {
26
+ return story;
27
+ }
28
+ const channel = addons_1.addons.getChannel();
29
+ const { props, template, userDefinedTemplate } = story;
30
+ const { component, argTypes } = context;
31
+ let toEmit;
32
+ addons_1.useEffect(() => {
33
+ if (toEmit) {
34
+ channel.emit(docs_tools_1.SNIPPET_RENDERED, context.id, toEmit, 'angular');
35
+ }
36
+ });
37
+ if (component && !userDefinedTemplate) {
38
+ const source = renderer_1.computesTemplateSourceFromComponent(component, props, argTypes);
39
+ // We might have a story with a Directive or Service defined as the component
40
+ // In these cases there might exist a template, even if we aren't able to create source from component
41
+ if (source || template) {
42
+ toEmit = source || template;
43
+ }
44
+ }
45
+ else if (template) {
46
+ toEmit = template;
47
+ }
48
+ return story;
49
+ };
@@ -0,0 +1,102 @@
1
+ export interface Method {
2
+ name: string;
3
+ args: Argument[];
4
+ returnType: string;
5
+ decorators?: Decorator[];
6
+ description?: string;
7
+ rawdescription?: string;
8
+ }
9
+ export interface JsDocTag {
10
+ comment?: string;
11
+ tagName?: {
12
+ escapedText?: string;
13
+ };
14
+ }
15
+ export interface Property {
16
+ name: string;
17
+ decorators?: Decorator[];
18
+ type: string;
19
+ optional: boolean;
20
+ defaultValue?: string;
21
+ description?: string;
22
+ rawdescription?: string;
23
+ jsdoctags?: JsDocTag[];
24
+ }
25
+ export interface Class {
26
+ name: string;
27
+ ngname: string;
28
+ type: 'pipe';
29
+ properties: Property[];
30
+ methods: Method[];
31
+ description?: string;
32
+ rawdescription?: string;
33
+ }
34
+ export interface Injectable {
35
+ name: string;
36
+ type: 'injectable';
37
+ properties: Property[];
38
+ methods: Method[];
39
+ description?: string;
40
+ rawdescription?: string;
41
+ }
42
+ export interface Pipe {
43
+ name: string;
44
+ type: 'class';
45
+ properties: Property[];
46
+ methods: Method[];
47
+ description?: string;
48
+ rawdescription?: string;
49
+ }
50
+ export interface Directive {
51
+ name: string;
52
+ type: 'directive' | 'component';
53
+ propertiesClass: Property[];
54
+ inputsClass: Property[];
55
+ outputsClass: Property[];
56
+ methodsClass: Method[];
57
+ description?: string;
58
+ rawdescription?: string;
59
+ }
60
+ export declare type Component = Directive;
61
+ export interface Argument {
62
+ name: string;
63
+ type: string;
64
+ optional?: boolean;
65
+ }
66
+ export interface Decorator {
67
+ name: string;
68
+ }
69
+ export interface TypeAlias {
70
+ name: string;
71
+ ctype: string;
72
+ subtype: string;
73
+ rawtype: string;
74
+ file: string;
75
+ kind: number;
76
+ description?: string;
77
+ rawdescription?: string;
78
+ }
79
+ export interface EnumType {
80
+ name: string;
81
+ childs: EnumTypeChild[];
82
+ ctype: string;
83
+ subtype: string;
84
+ file: string;
85
+ description?: string;
86
+ rawdescription?: string;
87
+ }
88
+ export interface EnumTypeChild {
89
+ name: string;
90
+ value?: string;
91
+ }
92
+ export interface CompodocJson {
93
+ directives: Directive[];
94
+ components: Component[];
95
+ pipes: Pipe[];
96
+ injectables: Injectable[];
97
+ classes: Class[];
98
+ miscellaneous?: {
99
+ typealiases?: TypeAlias[];
100
+ enumerations?: EnumType[];
101
+ };
102
+ }