@teambit/api-reference 1.0.1079 → 1.0.1081
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/api-compare.module.scss +2 -244
- package/api-compare.section.tsx +12 -5
- package/api-compare.tsx +67 -185
- package/api-reference.ui.runtime.tsx +3 -2
- package/dist/api-compare.d.ts +12 -3
- package/dist/api-compare.js +63 -186
- package/dist/api-compare.js.map +1 -1
- package/dist/api-compare.module.scss +2 -244
- package/dist/api-compare.section.d.ts +6 -4
- package/dist/api-compare.section.js +10 -5
- package/dist/api-compare.section.js.map +1 -1
- package/dist/api-reference.ui.runtime.js +3 -2
- package/dist/api-reference.ui.runtime.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +14 -13
- package/dist/api-compare.types.d.ts +0 -33
- package/dist/api-compare.types.js +0 -3
- package/dist/api-compare.types.js.map +0 -1
- /package/dist/{preview-1785260578779.js → preview-1785278532531.js} +0 -0
package/dist/api-compare.js
CHANGED
|
@@ -18,6 +18,13 @@ function _componentUiComponentCompare() {
|
|
|
18
18
|
};
|
|
19
19
|
return data;
|
|
20
20
|
}
|
|
21
|
+
function _semanticsUi() {
|
|
22
|
+
const data = require("@teambit/semantics.ui.api-diff-view");
|
|
23
|
+
_semanticsUi = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
21
28
|
function _apiCompareModule() {
|
|
22
29
|
const data = _interopRequireDefault(require("./api-compare.module.scss"));
|
|
23
30
|
_apiCompareModule = function () {
|
|
@@ -26,196 +33,66 @@ function _apiCompareModule() {
|
|
|
26
33
|
return data;
|
|
27
34
|
}
|
|
28
35
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return _apiCompareModule().default.summaryBadge;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function impactLabel(impact) {
|
|
42
|
-
switch (impact) {
|
|
43
|
-
case 'BREAKING':
|
|
44
|
-
return 'Breaking';
|
|
45
|
-
case 'NON_BREAKING':
|
|
46
|
-
return 'Non-breaking';
|
|
47
|
-
case 'PATCH':
|
|
48
|
-
return 'Patch';
|
|
49
|
-
default:
|
|
50
|
-
return impact;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function getStatusClass(status) {
|
|
54
|
-
switch (status) {
|
|
55
|
-
case 'ADDED':
|
|
56
|
-
return _apiCompareModule().default.statusAdded;
|
|
57
|
-
case 'REMOVED':
|
|
58
|
-
return _apiCompareModule().default.statusRemoved;
|
|
59
|
-
case 'MODIFIED':
|
|
60
|
-
return _apiCompareModule().default.statusModified;
|
|
61
|
-
default:
|
|
62
|
-
return _apiCompareModule().default.statusBadge;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function getStatusLabel(status) {
|
|
66
|
-
switch (status) {
|
|
67
|
-
case 'ADDED':
|
|
68
|
-
return '+ Added';
|
|
69
|
-
case 'REMOVED':
|
|
70
|
-
return '- Removed';
|
|
71
|
-
case 'MODIFIED':
|
|
72
|
-
return '~ Modified';
|
|
73
|
-
default:
|
|
74
|
-
return status;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function dotClass(impact) {
|
|
78
|
-
switch (impact) {
|
|
79
|
-
case 'BREAKING':
|
|
80
|
-
return _apiCompareModule().default.dotBreaking;
|
|
81
|
-
case 'NON_BREAKING':
|
|
82
|
-
return _apiCompareModule().default.dotNonBreaking;
|
|
83
|
-
default:
|
|
84
|
-
return _apiCompareModule().default.dotPatch;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function DetailItem({
|
|
88
|
-
detail
|
|
89
|
-
}) {
|
|
90
|
-
return /*#__PURE__*/_react().default.createElement("li", {
|
|
91
|
-
className: _apiCompareModule().default.detailItem
|
|
92
|
-
}, /*#__PURE__*/_react().default.createElement("span", {
|
|
93
|
-
className: dotClass(detail.impact)
|
|
94
|
-
}), /*#__PURE__*/_react().default.createElement("span", {
|
|
95
|
-
className: _apiCompareModule().default.detailDescription
|
|
96
|
-
}, detail.description));
|
|
97
|
-
}
|
|
98
|
-
function APIDiffEntry({
|
|
99
|
-
change
|
|
100
|
-
}) {
|
|
101
|
-
const [expanded, setExpanded] = _react().default.useState(change.status === 'MODIFIED');
|
|
102
|
-
const [showSignatures, setShowSignatures] = _react().default.useState(false);
|
|
103
|
-
const hasBody = change.status === 'MODIFIED' ? change.changes && change.changes.length > 0 || change.baseSignature || change.compareSignature : change.baseSignature || change.compareSignature;
|
|
104
|
-
return /*#__PURE__*/_react().default.createElement("div", {
|
|
105
|
-
className: _apiCompareModule().default.diffEntry
|
|
106
|
-
}, /*#__PURE__*/_react().default.createElement("div", {
|
|
107
|
-
className: _apiCompareModule().default.diffEntryHeader,
|
|
108
|
-
onClick: () => hasBody && setExpanded(!expanded),
|
|
109
|
-
role: "button",
|
|
110
|
-
tabIndex: 0,
|
|
111
|
-
"aria-expanded": hasBody ? expanded : undefined,
|
|
112
|
-
onKeyDown: e => {
|
|
113
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
114
|
-
e.preventDefault();
|
|
115
|
-
hasBody && setExpanded(!expanded);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}, /*#__PURE__*/_react().default.createElement("span", {
|
|
119
|
-
className: getStatusClass(change.status)
|
|
120
|
-
}, getStatusLabel(change.status)), /*#__PURE__*/_react().default.createElement("span", {
|
|
121
|
-
className: _apiCompareModule().default.exportName
|
|
122
|
-
}, change.exportName), /*#__PURE__*/_react().default.createElement("span", {
|
|
123
|
-
className: _apiCompareModule().default.schemaType
|
|
124
|
-
}, change.schemaType), /*#__PURE__*/_react().default.createElement("span", {
|
|
125
|
-
className: `${impactClass(change.impact)} ${_apiCompareModule().default.impactBadge}`
|
|
126
|
-
}, impactLabel(change.impact)), hasBody && /*#__PURE__*/_react().default.createElement("span", {
|
|
127
|
-
className: expanded ? _apiCompareModule().default.expandIconOpen : _apiCompareModule().default.expandIcon
|
|
128
|
-
}, "\u25B6")), expanded && hasBody && /*#__PURE__*/_react().default.createElement("div", {
|
|
129
|
-
className: _apiCompareModule().default.diffEntryBody
|
|
130
|
-
}, change.status === 'MODIFIED' && change.changes && change.changes.length > 0 && /*#__PURE__*/_react().default.createElement("ul", {
|
|
131
|
-
className: _apiCompareModule().default.detailsList
|
|
132
|
-
}, change.changes.map((detail, i) => /*#__PURE__*/_react().default.createElement(DetailItem, {
|
|
133
|
-
key: `${detail.changeKind}-${i}`,
|
|
134
|
-
detail: detail
|
|
135
|
-
}))), change.status === 'MODIFIED' && (change.baseSignature || change.compareSignature) && /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement("button", {
|
|
136
|
-
className: _apiCompareModule().default.toggleSignatures,
|
|
137
|
-
onClick: () => setShowSignatures(!showSignatures)
|
|
138
|
-
}, showSignatures ? '▼ Hide signatures' : '▶ Show signatures'), showSignatures && /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, change.baseSignature && /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement("div", {
|
|
139
|
-
className: _apiCompareModule().default.signatureLabel
|
|
140
|
-
}, "Base"), /*#__PURE__*/_react().default.createElement("div", {
|
|
141
|
-
className: _apiCompareModule().default.signatureRemoved
|
|
142
|
-
}, change.baseSignature)), change.compareSignature && /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement("div", {
|
|
143
|
-
className: _apiCompareModule().default.signatureLabel
|
|
144
|
-
}, "Compare"), /*#__PURE__*/_react().default.createElement("div", {
|
|
145
|
-
className: _apiCompareModule().default.signatureBlock
|
|
146
|
-
}, change.compareSignature)))), change.status === 'ADDED' && change.compareSignature && /*#__PURE__*/_react().default.createElement("div", {
|
|
147
|
-
className: _apiCompareModule().default.signatureBlock
|
|
148
|
-
}, change.compareSignature), change.status === 'REMOVED' && change.baseSignature && /*#__PURE__*/_react().default.createElement("div", {
|
|
149
|
-
className: _apiCompareModule().default.signatureRemoved
|
|
150
|
-
}, change.baseSignature)));
|
|
151
|
-
}
|
|
152
|
-
function ChangeSection({
|
|
153
|
-
title,
|
|
154
|
-
changes
|
|
36
|
+
// single source of truth for the API diff model lives in api-diff-view.
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* the API tab of the single-component compare page. thin host around the same
|
|
40
|
+
* `ComponentApiDiffSection` the lane-compare API view uses — one implementation, two hosts.
|
|
41
|
+
* data comes from the compare context (fetched once by ComponentCompare).
|
|
42
|
+
*/
|
|
43
|
+
function APICompare({
|
|
44
|
+
getInsights
|
|
155
45
|
}) {
|
|
156
|
-
if (changes.length === 0) return null;
|
|
157
|
-
const sorted = [...changes].sort((a, b) => {
|
|
158
|
-
const order = {
|
|
159
|
-
REMOVED: 0,
|
|
160
|
-
MODIFIED: 1,
|
|
161
|
-
ADDED: 2
|
|
162
|
-
};
|
|
163
|
-
return (order[a.status] ?? 3) - (order[b.status] ?? 3);
|
|
164
|
-
});
|
|
165
|
-
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement("h3", {
|
|
166
|
-
className: _apiCompareModule().default.sectionTitle
|
|
167
|
-
}, title), /*#__PURE__*/_react().default.createElement("div", {
|
|
168
|
-
className: _apiCompareModule().default.changeList
|
|
169
|
-
}, sorted.map(change => /*#__PURE__*/_react().default.createElement(APIDiffEntry, {
|
|
170
|
-
key: `${change.visibility}-${change.status}-${change.exportName}`,
|
|
171
|
-
change: change
|
|
172
|
-
}))));
|
|
173
|
-
}
|
|
174
|
-
function APICompare() {
|
|
175
46
|
const compareContext = (0, _componentUiComponentCompare().useComponentCompare)();
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
47
|
+
const baseModel = compareContext?.base?.model;
|
|
48
|
+
const compareModel = compareContext?.compare?.model;
|
|
49
|
+
|
|
50
|
+
// Prefer a diff already on the context — the legacy `ComponentCompare` fetches it once and sets
|
|
51
|
+
// it there. The redesign single-component page does NOT put it on its inline context, so we fetch
|
|
52
|
+
// on our own. This hook is only mounted when the API view is the active tab (the page renders the
|
|
53
|
+
// element on-demand), so lane-compare — which renders one panel per component and never mounts
|
|
54
|
+
// this tab — pays nothing.
|
|
55
|
+
const contextApiDiff = compareContext?.apiDiffResult;
|
|
56
|
+
const shouldSelfFetch = contextApiDiff === undefined;
|
|
187
57
|
const {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
58
|
+
result: fetchedApiDiff
|
|
59
|
+
} = (0, _semanticsUi().useApiDiff)(baseModel?.id.toString(), compareModel?.id.toString(), {
|
|
60
|
+
skip: !shouldSelfFetch
|
|
61
|
+
});
|
|
62
|
+
const apiDiffResult = shouldSelfFetch ? fetchedApiDiff : contextApiDiff;
|
|
63
|
+
|
|
64
|
+
// memoized so the insights context value keeps a stable identity — otherwise a fresh array every
|
|
65
|
+
// render would re-render every `useApiDiffInsights` consumer (incl. the React.memo'd ApiChangeBlock).
|
|
66
|
+
const insights = _react().default.useMemo(() => getInsights?.(), [getInsights]);
|
|
67
|
+
if (!compareContext) return null;
|
|
68
|
+
const id = (compareModel || baseModel)?.id;
|
|
69
|
+
if (!id) return null;
|
|
70
|
+
const componentIdStr = id.toStringWithoutVersion();
|
|
71
|
+
const baseVersion = baseModel?.id.version;
|
|
72
|
+
const compareVersion = compareModel?.id.version;
|
|
73
|
+
|
|
74
|
+
// no base (first version) or identical versions — nothing to diff, not a failure.
|
|
75
|
+
const nothingToCompare = apiDiffResult === null && (!baseVersion || baseVersion === compareVersion);
|
|
76
|
+
return /*#__PURE__*/_react().default.createElement(_semanticsUi().ApiDiffInsightProvider, {
|
|
77
|
+
insights: insights
|
|
198
78
|
}, /*#__PURE__*/_react().default.createElement("div", {
|
|
199
|
-
className: _apiCompareModule().default.
|
|
200
|
-
}, /*#__PURE__*/_react().default.createElement(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
})
|
|
216
|
-
title: "Internal (non-exported)",
|
|
217
|
-
changes: internalChanges
|
|
218
|
-
}));
|
|
79
|
+
className: _apiCompareModule().default.apiCompareContainer
|
|
80
|
+
}, nothingToCompare ? /*#__PURE__*/_react().default.createElement(_semanticsUi().ApiDiffSlimRow, {
|
|
81
|
+
componentIdStr: componentIdStr,
|
|
82
|
+
displayName: id.fullName,
|
|
83
|
+
chip: "nothing to compare",
|
|
84
|
+
detail: baseVersion ? 'both sides are the same version' : 'no base version to compare against',
|
|
85
|
+
tone: "ok"
|
|
86
|
+
}) : /*#__PURE__*/_react().default.createElement(_semanticsUi().ComponentApiDiffSection, {
|
|
87
|
+
componentIdStr: componentIdStr,
|
|
88
|
+
displayName: id.fullName,
|
|
89
|
+
baseId: baseModel?.id.toString(),
|
|
90
|
+
compareId: compareModel?.id.toString(),
|
|
91
|
+
baseVersion: baseVersion,
|
|
92
|
+
compareVersion: compareVersion,
|
|
93
|
+
result: apiDiffResult,
|
|
94
|
+
loading: apiDiffResult === undefined
|
|
95
|
+
})));
|
|
219
96
|
}
|
|
220
97
|
|
|
221
98
|
//# sourceMappingURL=api-compare.js.map
|
package/dist/api-compare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","_componentUiComponentCompare","_apiCompareModule","e","__esModule","default","impactClass","impact","styles","removedBadge","addedBadge","modifiedBadge","summaryBadge","impactLabel","getStatusClass","status","statusAdded","statusRemoved","statusModified","statusBadge","getStatusLabel","dotClass","dotBreaking","dotNonBreaking","dotPatch","DetailItem","detail","createElement","className","detailItem","detailDescription","description","APIDiffEntry","change","expanded","setExpanded","React","useState","showSignatures","setShowSignatures","hasBody","changes","length","baseSignature","compareSignature","diffEntry","diffEntryHeader","onClick","role","tabIndex","undefined","onKeyDown","key","preventDefault","exportName","schemaType","impactBadge","expandIconOpen","expandIcon","diffEntryBody","detailsList","map","i","changeKind","Fragment","toggleSignatures","signatureLabel","signatureRemoved","signatureBlock","ChangeSection","title","sorted","sort","a","b","order","REMOVED","MODIFIED","ADDED","sectionTitle","changeList","visibility","APICompare","compareContext","useComponentCompare","apiDiffResult","emptyState","hasChanges","publicChanges","internalChanges","added","removed","modified","breaking","apiCompareContainer","summary","summaryDivider"],"sources":["api-compare.tsx"],"sourcesContent":["import React from 'react';\nimport { useComponentCompare } from '@teambit/component.ui.component-compare.context';\nimport type { APIDiffResult, APIDiffChange, APIDiffDetail } from './api-compare.types';\nimport styles from './api-compare.module.scss';\n\nexport type { APIDiffResult, APIDiffChange, APIDiffDetail };\n\nfunction impactClass(impact: string): string {\n switch (impact) {\n case 'BREAKING':\n return styles.removedBadge;\n case 'NON_BREAKING':\n return styles.addedBadge;\n case 'PATCH':\n return styles.modifiedBadge;\n default:\n return styles.summaryBadge;\n }\n}\n\nfunction impactLabel(impact: string): string {\n switch (impact) {\n case 'BREAKING':\n return 'Breaking';\n case 'NON_BREAKING':\n return 'Non-breaking';\n case 'PATCH':\n return 'Patch';\n default:\n return impact;\n }\n}\n\nfunction getStatusClass(status: string): string {\n switch (status) {\n case 'ADDED':\n return styles.statusAdded;\n case 'REMOVED':\n return styles.statusRemoved;\n case 'MODIFIED':\n return styles.statusModified;\n default:\n return styles.statusBadge;\n }\n}\n\nfunction getStatusLabel(status: string): string {\n switch (status) {\n case 'ADDED':\n return '+ Added';\n case 'REMOVED':\n return '- Removed';\n case 'MODIFIED':\n return '~ Modified';\n default:\n return status;\n }\n}\n\nfunction dotClass(impact: string): string {\n switch (impact) {\n case 'BREAKING':\n return styles.dotBreaking;\n case 'NON_BREAKING':\n return styles.dotNonBreaking;\n default:\n return styles.dotPatch;\n }\n}\n\nfunction DetailItem({ detail }: { detail: APIDiffDetail }) {\n return (\n <li className={styles.detailItem}>\n <span className={dotClass(detail.impact)} />\n <span className={styles.detailDescription}>{detail.description}</span>\n </li>\n );\n}\n\nfunction APIDiffEntry({ change }: { change: APIDiffChange }) {\n const [expanded, setExpanded] = React.useState(change.status === 'MODIFIED');\n const [showSignatures, setShowSignatures] = React.useState(false);\n\n const hasBody =\n change.status === 'MODIFIED'\n ? (change.changes && change.changes.length > 0) || change.baseSignature || change.compareSignature\n : change.baseSignature || change.compareSignature;\n\n return (\n <div className={styles.diffEntry}>\n <div\n className={styles.diffEntryHeader}\n onClick={() => hasBody && setExpanded(!expanded)}\n role=\"button\"\n tabIndex={0}\n aria-expanded={hasBody ? expanded : undefined}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n hasBody && setExpanded(!expanded);\n }\n }}\n >\n <span className={getStatusClass(change.status)}>{getStatusLabel(change.status)}</span>\n <span className={styles.exportName}>{change.exportName}</span>\n <span className={styles.schemaType}>{change.schemaType}</span>\n <span className={`${impactClass(change.impact)} ${styles.impactBadge}`}>{impactLabel(change.impact)}</span>\n {hasBody && <span className={expanded ? styles.expandIconOpen : styles.expandIcon}>▶</span>}\n </div>\n {expanded && hasBody && (\n <div className={styles.diffEntryBody}>\n {change.status === 'MODIFIED' && change.changes && change.changes.length > 0 && (\n <ul className={styles.detailsList}>\n {change.changes.map((detail, i) => (\n <DetailItem key={`${detail.changeKind}-${i}`} detail={detail} />\n ))}\n </ul>\n )}\n {change.status === 'MODIFIED' && (change.baseSignature || change.compareSignature) && (\n <>\n <button className={styles.toggleSignatures} onClick={() => setShowSignatures(!showSignatures)}>\n {showSignatures ? '▼ Hide signatures' : '▶ Show signatures'}\n </button>\n {showSignatures && (\n <>\n {change.baseSignature && (\n <div>\n <div className={styles.signatureLabel}>Base</div>\n <div className={styles.signatureRemoved}>{change.baseSignature}</div>\n </div>\n )}\n {change.compareSignature && (\n <div>\n <div className={styles.signatureLabel}>Compare</div>\n <div className={styles.signatureBlock}>{change.compareSignature}</div>\n </div>\n )}\n </>\n )}\n </>\n )}\n {change.status === 'ADDED' && change.compareSignature && (\n <div className={styles.signatureBlock}>{change.compareSignature}</div>\n )}\n {change.status === 'REMOVED' && change.baseSignature && (\n <div className={styles.signatureRemoved}>{change.baseSignature}</div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction ChangeSection({ title, changes }: { title: string; changes: APIDiffChange[] }) {\n if (changes.length === 0) return null;\n\n const sorted = [...changes].sort((a, b) => {\n const order: Record<string, number> = { REMOVED: 0, MODIFIED: 1, ADDED: 2 };\n return (order[a.status] ?? 3) - (order[b.status] ?? 3);\n });\n\n return (\n <>\n <h3 className={styles.sectionTitle}>{title}</h3>\n <div className={styles.changeList}>\n {sorted.map((change) => (\n <APIDiffEntry key={`${change.visibility}-${change.status}-${change.exportName}`} change={change} />\n ))}\n </div>\n </>\n );\n}\n\nexport function APICompare() {\n const compareContext = useComponentCompare();\n const apiDiffResult: APIDiffResult | null | undefined = (compareContext as any)?.apiDiffResult;\n\n if (apiDiffResult === undefined) {\n return <div className={styles.emptyState}>Loading API diff...</div>;\n }\n\n if (!apiDiffResult || !apiDiffResult.hasChanges) {\n return <div className={styles.emptyState}>No API changes between these versions</div>;\n }\n\n const { publicChanges, internalChanges, added, removed, modified, breaking, impact } = apiDiffResult;\n\n return (\n <div className={styles.apiCompareContainer}>\n <div className={styles.summary}>\n <span className={impactClass(impact)}>{impactLabel(impact)}</span>\n <span className={styles.summaryDivider}>|</span>\n {added > 0 && <span className={styles.addedBadge}>+{added} added</span>}\n {removed > 0 && <span className={styles.removedBadge}>-{removed} removed</span>}\n {modified > 0 && <span className={styles.modifiedBadge}>~{modified} modified</span>}\n {breaking > 0 && <span className={styles.removedBadge}>{breaking} breaking</span>}\n </div>\n <ChangeSection title=\"Public API\" changes={publicChanges} />\n <ChangeSection title=\"Internal (non-exported)\" changes={internalChanges} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","_componentUiComponentCompare","_semanticsUi","_apiCompareModule","e","__esModule","default","APICompare","getInsights","compareContext","useComponentCompare","baseModel","base","model","compareModel","compare","contextApiDiff","apiDiffResult","shouldSelfFetch","undefined","result","fetchedApiDiff","useApiDiff","id","toString","skip","insights","React","useMemo","componentIdStr","toStringWithoutVersion","baseVersion","version","compareVersion","nothingToCompare","createElement","ApiDiffInsightProvider","className","styles","apiCompareContainer","ApiDiffSlimRow","displayName","fullName","chip","detail","tone","ComponentApiDiffSection","baseId","compareId","loading"],"sources":["api-compare.tsx"],"sourcesContent":["import React from 'react';\nimport { useComponentCompare } from '@teambit/component.ui.component-compare.context';\nimport {\n ComponentApiDiffSection,\n ApiDiffSlimRow,\n ApiDiffInsightProvider,\n useApiDiff,\n} from '@teambit/semantics.ui.api-diff-view';\nimport type { ApiDiffInsight } from '@teambit/semantics.ui.api-diff-view';\nimport styles from './api-compare.module.scss';\n\n// single source of truth for the API diff model lives in api-diff-view.\nexport type { APIDiffResult, APIDiffChange, APIDiffDetail } from '@teambit/semantics.ui.api-diff-view';\n\nexport type APICompareProps = {\n /** resolved lazily at render time — slot registrations can land after the section is constructed */\n getInsights?: () => ApiDiffInsight[];\n};\n\n/**\n * the API tab of the single-component compare page. thin host around the same\n * `ComponentApiDiffSection` the lane-compare API view uses — one implementation, two hosts.\n * data comes from the compare context (fetched once by ComponentCompare).\n */\nexport function APICompare({ getInsights }: APICompareProps) {\n const compareContext = useComponentCompare();\n const baseModel = compareContext?.base?.model;\n const compareModel = compareContext?.compare?.model;\n\n // Prefer a diff already on the context — the legacy `ComponentCompare` fetches it once and sets\n // it there. The redesign single-component page does NOT put it on its inline context, so we fetch\n // on our own. This hook is only mounted when the API view is the active tab (the page renders the\n // element on-demand), so lane-compare — which renders one panel per component and never mounts\n // this tab — pays nothing.\n const contextApiDiff = compareContext?.apiDiffResult;\n const shouldSelfFetch = contextApiDiff === undefined;\n const { result: fetchedApiDiff } = useApiDiff(baseModel?.id.toString(), compareModel?.id.toString(), {\n skip: !shouldSelfFetch,\n });\n const apiDiffResult = shouldSelfFetch ? fetchedApiDiff : contextApiDiff;\n\n // memoized so the insights context value keeps a stable identity — otherwise a fresh array every\n // render would re-render every `useApiDiffInsights` consumer (incl. the React.memo'd ApiChangeBlock).\n const insights = React.useMemo(() => getInsights?.(), [getInsights]);\n\n if (!compareContext) return null;\n\n const id = (compareModel || baseModel)?.id;\n if (!id) return null;\n\n const componentIdStr = id.toStringWithoutVersion();\n const baseVersion = baseModel?.id.version;\n const compareVersion = compareModel?.id.version;\n\n // no base (first version) or identical versions — nothing to diff, not a failure.\n const nothingToCompare = apiDiffResult === null && (!baseVersion || baseVersion === compareVersion);\n\n return (\n <ApiDiffInsightProvider insights={insights}>\n <div className={styles.apiCompareContainer}>\n {nothingToCompare ? (\n <ApiDiffSlimRow\n componentIdStr={componentIdStr}\n displayName={id.fullName}\n chip=\"nothing to compare\"\n detail={baseVersion ? 'both sides are the same version' : 'no base version to compare against'}\n tone=\"ok\"\n />\n ) : (\n <ComponentApiDiffSection\n componentIdStr={componentIdStr}\n displayName={id.fullName}\n baseId={baseModel?.id.toString()}\n compareId={compareModel?.id.toString()}\n baseVersion={baseVersion}\n compareVersion={compareVersion}\n result={apiDiffResult}\n loading={apiDiffResult === undefined}\n />\n )}\n </div>\n </ApiDiffInsightProvider>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,248 +3,6 @@
|
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
height: 100%;
|
|
5
5
|
overflow: auto;
|
|
6
|
-
padding: 24px;
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.summary {
|
|
11
|
-
display: flex;
|
|
12
|
-
gap: 12px;
|
|
13
|
-
align-items: center;
|
|
14
|
-
padding: 12px 16px;
|
|
15
|
-
background: var(--bit-bg-dent, #f6f6f6);
|
|
16
|
-
border-radius: 8px;
|
|
17
|
-
font-size: 13px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.summaryDivider {
|
|
21
|
-
opacity: 0.3;
|
|
22
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.summaryBadge {
|
|
26
|
-
display: inline-flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
gap: 4px;
|
|
29
|
-
padding: 3px 10px;
|
|
30
|
-
border-radius: 12px;
|
|
31
|
-
font-weight: 500;
|
|
32
|
-
font-size: 12px;
|
|
33
|
-
white-space: nowrap;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.addedBadge {
|
|
37
|
-
composes: summaryBadge;
|
|
38
|
-
background: color-mix(in srgb, var(--bit-color-added, #2ea043) 15%, transparent);
|
|
39
|
-
color: var(--bit-color-added, #2ea043);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.removedBadge {
|
|
43
|
-
composes: summaryBadge;
|
|
44
|
-
background: color-mix(in srgb, var(--bit-color-removed, #f85149) 15%, transparent);
|
|
45
|
-
color: var(--bit-color-removed, #f85149);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.modifiedBadge {
|
|
49
|
-
composes: summaryBadge;
|
|
50
|
-
background: color-mix(in srgb, var(--bit-color-modified, #d29922) 15%, transparent);
|
|
51
|
-
color: var(--bit-color-modified, #d29922);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.changeList {
|
|
55
|
-
display: flex;
|
|
56
|
-
flex-direction: column;
|
|
57
|
-
gap: 8px;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.sectionTitle {
|
|
61
|
-
margin: 16px 0 8px;
|
|
62
|
-
font-size: 12px;
|
|
63
|
-
font-weight: 600;
|
|
64
|
-
text-transform: uppercase;
|
|
65
|
-
letter-spacing: 0.5px;
|
|
66
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.diffEntry {
|
|
70
|
-
border: 1px solid var(--bit-border-color-lightest, #ededed);
|
|
71
|
-
border-radius: 8px;
|
|
72
|
-
overflow: hidden;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.diffEntryHeader {
|
|
76
|
-
display: flex;
|
|
77
|
-
align-items: center;
|
|
78
|
-
gap: 10px;
|
|
79
|
-
padding: 10px 16px;
|
|
80
|
-
cursor: pointer;
|
|
81
|
-
user-select: none;
|
|
82
|
-
|
|
83
|
-
&:hover {
|
|
84
|
-
background: var(--bit-bg-dent, #f6f6f6);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.statusBadge {
|
|
89
|
-
display: inline-flex;
|
|
90
|
-
align-items: center;
|
|
91
|
-
padding: 2px 8px;
|
|
92
|
-
border-radius: 4px;
|
|
93
|
-
font-weight: 600;
|
|
94
|
-
font-size: 11px;
|
|
95
|
-
text-transform: uppercase;
|
|
96
|
-
letter-spacing: 0.3px;
|
|
97
|
-
flex-shrink: 0;
|
|
98
|
-
white-space: nowrap;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.statusAdded {
|
|
102
|
-
composes: statusBadge;
|
|
103
|
-
background: color-mix(in srgb, var(--bit-color-added, #2ea043) 15%, transparent);
|
|
104
|
-
color: var(--bit-color-added, #2ea043);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.statusRemoved {
|
|
108
|
-
composes: statusBadge;
|
|
109
|
-
background: color-mix(in srgb, var(--bit-color-removed, #f85149) 15%, transparent);
|
|
110
|
-
color: var(--bit-color-removed, #f85149);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.statusModified {
|
|
114
|
-
composes: statusBadge;
|
|
115
|
-
background: color-mix(in srgb, var(--bit-color-modified, #d29922) 15%, transparent);
|
|
116
|
-
color: var(--bit-color-modified, #d29922);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.exportName {
|
|
120
|
-
font-weight: 600;
|
|
121
|
-
font-size: 14px;
|
|
122
|
-
font-family: var(--bit-font-mono, monospace);
|
|
123
|
-
color: var(--bit-text-color-heavy, #2b2b2b);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.schemaType {
|
|
127
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
128
|
-
font-size: 12px;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.impactBadge {
|
|
132
|
-
composes: summaryBadge;
|
|
133
|
-
margin-left: auto;
|
|
134
|
-
font-size: 11px;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.expandIcon {
|
|
138
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
139
|
-
font-size: 10px;
|
|
140
|
-
transition: transform 0.2s;
|
|
141
|
-
flex-shrink: 0;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.expandIconOpen {
|
|
145
|
-
composes: expandIcon;
|
|
146
|
-
transform: rotate(90deg);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.diffEntryBody {
|
|
150
|
-
padding: 0 16px 16px;
|
|
151
|
-
border-top: 1px solid var(--bit-border-color-lightest, #ededed);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.detailsList {
|
|
155
|
-
list-style: none;
|
|
156
|
-
padding: 12px 0 0;
|
|
157
|
-
margin: 0;
|
|
158
|
-
display: flex;
|
|
159
|
-
flex-direction: column;
|
|
160
|
-
gap: 8px;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.detailItem {
|
|
164
|
-
display: flex;
|
|
165
|
-
align-items: flex-start;
|
|
166
|
-
gap: 8px;
|
|
167
|
-
font-size: 13px;
|
|
168
|
-
line-height: 1.5;
|
|
169
|
-
color: var(--bit-text-color-heavy, #2b2b2b);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.detailDot {
|
|
173
|
-
width: 7px;
|
|
174
|
-
height: 7px;
|
|
175
|
-
min-width: 7px;
|
|
176
|
-
border-radius: 50%;
|
|
177
|
-
margin-top: 6px;
|
|
178
|
-
flex-shrink: 0;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
.dotBreaking {
|
|
182
|
-
composes: detailDot;
|
|
183
|
-
background: var(--bit-color-removed, #f85149);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
.dotNonBreaking {
|
|
187
|
-
composes: detailDot;
|
|
188
|
-
background: var(--bit-color-added, #2ea043);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.dotPatch {
|
|
192
|
-
composes: detailDot;
|
|
193
|
-
background: var(--bit-color-modified, #d29922);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
.detailDescription {
|
|
197
|
-
color: var(--bit-text-color-heavy, #2b2b2b);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
.signatureBlock {
|
|
201
|
-
margin-top: 12px;
|
|
202
|
-
padding: 12px;
|
|
203
|
-
background: var(--bit-bg-dent, #f6f6f6);
|
|
204
|
-
border-radius: 6px;
|
|
205
|
-
font-family: var(--bit-font-mono, monospace);
|
|
206
|
-
font-size: 12px;
|
|
207
|
-
white-space: pre-wrap;
|
|
208
|
-
word-break: break-word;
|
|
209
|
-
line-height: 1.6;
|
|
210
|
-
color: var(--bit-text-color-heavy, #2b2b2b);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.signatureLabel {
|
|
214
|
-
font-weight: 600;
|
|
215
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
216
|
-
margin-top: 12px;
|
|
217
|
-
margin-bottom: 4px;
|
|
218
|
-
font-size: 11px;
|
|
219
|
-
text-transform: uppercase;
|
|
220
|
-
letter-spacing: 0.5px;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.signatureRemoved {
|
|
224
|
-
composes: signatureBlock;
|
|
225
|
-
text-decoration: line-through;
|
|
226
|
-
opacity: 0.6;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.emptyState {
|
|
230
|
-
display: flex;
|
|
231
|
-
align-items: center;
|
|
232
|
-
justify-content: center;
|
|
233
|
-
height: 100%;
|
|
234
|
-
color: var(--bit-text-color-light, #6c707c);
|
|
235
|
-
font-size: 14px;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.toggleSignatures {
|
|
239
|
-
background: none;
|
|
240
|
-
border: none;
|
|
241
|
-
color: var(--bit-accent-color, #0366d6);
|
|
242
|
-
font-size: 12px;
|
|
243
|
-
cursor: pointer;
|
|
244
|
-
padding: 4px 0;
|
|
245
|
-
margin-top: 12px;
|
|
246
|
-
|
|
247
|
-
&:hover {
|
|
248
|
-
text-decoration: underline;
|
|
249
|
-
}
|
|
6
|
+
padding: 16px 24px;
|
|
7
|
+
max-width: 980px;
|
|
250
8
|
}
|
|
@@ -2,7 +2,13 @@ import React from 'react';
|
|
|
2
2
|
import type { Section } from '@teambit/component';
|
|
3
3
|
import type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';
|
|
4
4
|
import type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';
|
|
5
|
+
import type { ApiDiffInsight } from '@teambit/semantics.ui.api-diff-view';
|
|
5
6
|
export declare class APICompareSection implements TabItem, Section {
|
|
7
|
+
route: {
|
|
8
|
+
path: string;
|
|
9
|
+
element: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
constructor(getInsights?: () => ApiDiffInsight[]);
|
|
6
12
|
navigationLink: {
|
|
7
13
|
href: string;
|
|
8
14
|
children: string;
|
|
@@ -11,10 +17,6 @@ export declare class APICompareSection implements TabItem, Section {
|
|
|
11
17
|
href: string;
|
|
12
18
|
children: string;
|
|
13
19
|
};
|
|
14
|
-
route: {
|
|
15
|
-
path: string;
|
|
16
|
-
element: React.JSX.Element;
|
|
17
|
-
};
|
|
18
20
|
order: number;
|
|
19
21
|
changeType: ChangeType;
|
|
20
22
|
id: string;
|
|
@@ -25,19 +25,24 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
25
25
|
// Use string cast since the external ChangeType enum doesn't have API yet
|
|
26
26
|
const ChangeTypeAPI = 'API';
|
|
27
27
|
class APICompareSection {
|
|
28
|
-
constructor() {
|
|
28
|
+
constructor(getInsights) {
|
|
29
|
+
_defineProperty(this, "route", void 0);
|
|
29
30
|
_defineProperty(this, "navigationLink", {
|
|
30
31
|
href: 'api',
|
|
31
32
|
children: 'API'
|
|
32
33
|
});
|
|
33
34
|
_defineProperty(this, "props", this.navigationLink);
|
|
34
|
-
_defineProperty(this, "route", {
|
|
35
|
-
path: 'api/*',
|
|
36
|
-
element: /*#__PURE__*/_react().default.createElement(_apiCompare().APICompare, null)
|
|
37
|
-
});
|
|
38
35
|
_defineProperty(this, "order", 15);
|
|
39
36
|
_defineProperty(this, "changeType", ChangeTypeAPI);
|
|
40
37
|
_defineProperty(this, "id", 'api');
|
|
38
|
+
// built in the constructor (not a field initializer) so the element captures the
|
|
39
|
+
// getter regardless of class-field initialization order.
|
|
40
|
+
this.route = {
|
|
41
|
+
path: 'api/*',
|
|
42
|
+
element: /*#__PURE__*/_react().default.createElement(_apiCompare().APICompare, {
|
|
43
|
+
getInsights: getInsights
|
|
44
|
+
})
|
|
45
|
+
};
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
exports.APICompareSection = APICompareSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","_apiCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ChangeTypeAPI","APICompareSection","constructor","href","children","navigationLink","path","element","createElement","APICompare","exports"],"sources":["api-compare.section.tsx"],"sourcesContent":["import React from 'react';\nimport type { Section } from '@teambit/component';\nimport type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';\nimport type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';\nimport { APICompare } from './api-compare';\n\n// Use string cast since the external ChangeType enum doesn't have API yet\nconst ChangeTypeAPI = 'API' as unknown as ChangeType;\n\nexport class APICompareSection implements TabItem, Section {\n
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","_apiCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ChangeTypeAPI","APICompareSection","constructor","getInsights","href","children","navigationLink","route","path","element","createElement","APICompare","exports"],"sources":["api-compare.section.tsx"],"sourcesContent":["import React from 'react';\nimport type { Section } from '@teambit/component';\nimport type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';\nimport type { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';\nimport type { ApiDiffInsight } from '@teambit/semantics.ui.api-diff-view';\nimport { APICompare } from './api-compare';\n\n// Use string cast since the external ChangeType enum doesn't have API yet\nconst ChangeTypeAPI = 'API' as unknown as ChangeType;\n\nexport class APICompareSection implements TabItem, Section {\n route: { path: string; element: React.ReactNode };\n\n constructor(getInsights?: () => ApiDiffInsight[]) {\n // built in the constructor (not a field initializer) so the element captures the\n // getter regardless of class-field initialization order.\n this.route = {\n path: 'api/*',\n element: <APICompare getInsights={getInsights} />,\n };\n }\n\n navigationLink = {\n href: 'api',\n children: 'API',\n };\n\n props = this.navigationLink;\n\n order = 15;\n changeType = ChangeTypeAPI;\n id = 'api';\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAE3C;AACA,MAAMgB,aAAa,GAAG,KAA8B;AAE7C,MAAMC,iBAAiB,CAA6B;EAGzDC,WAAWA,CAACC,WAAoC,EAAE;IAAArB,eAAA;IAAAA,eAAA,yBASjC;MACfsB,IAAI,EAAE,KAAK;MACXC,QAAQ,EAAE;IACZ,CAAC;IAAAvB,eAAA,gBAEO,IAAI,CAACwB,cAAc;IAAAxB,eAAA,gBAEnB,EAAE;IAAAA,eAAA,qBACGkB,aAAa;IAAAlB,eAAA,aACrB,KAAK;IAjBR;IACA;IACA,IAAI,CAACyB,KAAK,GAAG;MACXC,IAAI,EAAE,OAAO;MACbC,OAAO,eAAEnC,MAAA,GAAAO,OAAA,CAAA6B,aAAA,CAAChC,WAAA,GAAAiC,UAAU;QAACR,WAAW,EAAEA;MAAY,CAAE;IAClD,CAAC;EACH;AAYF;AAACS,OAAA,CAAAX,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -171,8 +171,9 @@ class APIReferenceUI {
|
|
|
171
171
|
// register all default schema classes
|
|
172
172
|
apiReferenceUI.registerSchemaClasses(() => Object.values(_semanticsEntities().Schemas));
|
|
173
173
|
|
|
174
|
-
// register API compare tab in component compare
|
|
175
|
-
|
|
174
|
+
// register API compare tab in component compare. insights are resolved lazily —
|
|
175
|
+
// aspects can register them on componentCompareUI after this provider runs.
|
|
176
|
+
const apiCompareSection = new (_apiCompare().APICompareSection)(() => componentCompareUI.getApiDiffInsights());
|
|
176
177
|
componentCompareUI.registerNavigation(apiCompareSection);
|
|
177
178
|
componentCompareUI.registerRoutes([apiCompareSection.route]);
|
|
178
179
|
return apiReferenceUI;
|