@scm-manager/ui-extensions 4.0.0-REACT18-20250701-125025 → 4.0.0-REACT19
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/index.d.ts +144 -155
- package/build/index.js +27 -4
- package/build/index.mjs +25 -3
- package/package.json +12 -10
package/build/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { PropsWithChildren, JSXElementConstructor, ComponentProps, ReactNode, ComponentType } from 'react';
|
|
2
|
+
import React__default, { PropsWithChildren, JSX, JSXElementConstructor, ComponentProps, ReactElement, ReactNode, ComponentType } from 'react';
|
|
3
3
|
import { NamespaceStrategies, RepositoryTypeCollection, IndexResources, Repository, Branch, File, Links, Changeset, Group, Me, Plugin, RepositoryRole, HalRepresentation, RepositoryRoleBase, User, Person, Namespace, Tag, Hit, ContentType, RepositoryCreation, BranchDetails } from '@scm-manager/ui-types';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
type Predicate<P extends Record<any, any> = Record<any, any>> = (props: P) => unknown;
|
|
6
|
+
type ExtensionRegistration<P extends Record<any, any>, T> = {
|
|
7
7
|
predicate: Predicate<P>;
|
|
8
8
|
extension: T;
|
|
9
9
|
extensionName: string;
|
|
10
10
|
priority: number;
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
type ExtensionPointDefinition<N extends string, T, P = undefined> = {
|
|
13
13
|
name: N;
|
|
14
14
|
type: T;
|
|
15
15
|
props: P;
|
|
16
16
|
};
|
|
17
|
-
|
|
17
|
+
type BindOptions<Props extends Record<any, any>> = {
|
|
18
18
|
predicate?: Predicate<Props>;
|
|
19
19
|
/**
|
|
20
20
|
* Extensions are ordered by name (ASC).
|
|
@@ -118,14 +118,14 @@ declare const BinderContext: React.Context<Binder>;
|
|
|
118
118
|
*/
|
|
119
119
|
declare const useBinder: () => Binder;
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
type Renderable<P> = React__default.ReactElement | React__default.ComponentType<P>;
|
|
122
|
+
type RenderableExtensionPointDefinition<Name extends string = string, P = undefined> = ExtensionPointDefinition<Name, Renderable<P>, P>;
|
|
123
|
+
type SimpleRenderableDynamicExtensionPointDefinition<Prefix extends string, Suffix extends string | undefined, Properties> = RenderableExtensionPointDefinition<Suffix extends string ? `${Prefix}${Suffix}` : `${Prefix}${string}`, Properties>;
|
|
124
124
|
/**
|
|
125
125
|
* @deprecated Obsolete type
|
|
126
126
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
type PropTransformer = (props: object) => object;
|
|
128
|
+
type BaseProps<E extends RenderableExtensionPointDefinition> = {
|
|
129
129
|
name: E["name"];
|
|
130
130
|
renderAll?: boolean;
|
|
131
131
|
/**
|
|
@@ -134,7 +134,7 @@ declare type BaseProps<E extends RenderableExtensionPointDefinition> = {
|
|
|
134
134
|
propTransformer?: PropTransformer;
|
|
135
135
|
wrapper?: boolean;
|
|
136
136
|
};
|
|
137
|
-
|
|
137
|
+
type Props<E extends RenderableExtensionPointDefinition> = BaseProps<E> & (E["props"] extends undefined ? {
|
|
138
138
|
props?: E["props"];
|
|
139
139
|
} : {
|
|
140
140
|
props: E["props"];
|
|
@@ -147,20 +147,30 @@ declare function ExtensionPoint<E extends RenderableExtensionPointDefinition<str
|
|
|
147
147
|
/**
|
|
148
148
|
* @deprecated Use {@link ComponentProps} directly instead
|
|
149
149
|
*/
|
|
150
|
-
|
|
150
|
+
type ExtractProps<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> = ComponentProps<T>;
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
type RouteExtensionPointDefinition<Name extends string, P> = ExtensionPointDefinition<Name, (props: P) => ReactElement | ReactElement[] | null, P>;
|
|
153
|
+
interface UseRouteExtensionsProps<E extends RouteExtensionPointDefinition<string, any>> {
|
|
154
|
+
name: E["name"];
|
|
155
|
+
props: E["props"];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* TODO: refactor?
|
|
159
|
+
*/
|
|
160
|
+
declare function useRouteExtensions<E extends RouteExtensionPointDefinition<string, any>>({ name, props, }: UseRouteExtensionsProps<E>): React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>>[];
|
|
161
|
+
|
|
162
|
+
type RepositoryCreatorSubFormProps = {
|
|
153
163
|
repository: RepositoryCreation;
|
|
154
164
|
onChange: (repository: RepositoryCreation) => void;
|
|
155
165
|
setValid: (valid: boolean) => void;
|
|
156
166
|
disabled?: boolean;
|
|
157
167
|
};
|
|
158
|
-
|
|
168
|
+
type RepositoryCreatorComponentProps = ComponentProps<RepositoryCreator["type"]["component"]>;
|
|
159
169
|
/**
|
|
160
170
|
* @deprecated use {@link RepositoryCreator}`["type"]` instead
|
|
161
171
|
*/
|
|
162
|
-
|
|
163
|
-
|
|
172
|
+
type RepositoryCreatorExtension = RepositoryCreator["type"];
|
|
173
|
+
type RepositoryCreator = ExtensionPointDefinition<"repos.creator", {
|
|
164
174
|
subtitle: string;
|
|
165
175
|
path: string;
|
|
166
176
|
icon: string;
|
|
@@ -173,19 +183,19 @@ declare type RepositoryCreator = ExtensionPointDefinition<"repos.creator", {
|
|
|
173
183
|
informationForm: React__default.ComponentType<RepositoryCreatorSubFormProps>;
|
|
174
184
|
}>;
|
|
175
185
|
}>;
|
|
176
|
-
|
|
186
|
+
type RepositoryFlags = RenderableExtensionPointDefinition<"repository.flags", {
|
|
177
187
|
repository: Repository;
|
|
178
188
|
tooltipLocation?: "bottom" | "right" | "top" | "left";
|
|
179
189
|
}>;
|
|
180
190
|
/**
|
|
181
191
|
* @deprecated use {@link ReposSourcesActionbar}`["props"]` instead
|
|
182
192
|
*/
|
|
183
|
-
|
|
193
|
+
type ReposSourcesActionbarExtensionProps = ReposSourcesActionbar["props"];
|
|
184
194
|
/**
|
|
185
195
|
* @deprecated use {@link ReposSourcesActionbar} instead
|
|
186
196
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
197
|
+
type ReposSourcesActionbarExtension = ReposSourcesActionbar;
|
|
198
|
+
type ReposSourcesActionbar = RenderableExtensionPointDefinition<"repos.sources.actionbar", {
|
|
189
199
|
baseUrl: string;
|
|
190
200
|
revision: string;
|
|
191
201
|
branch: Branch | undefined;
|
|
@@ -196,52 +206,52 @@ declare type ReposSourcesActionbar = RenderableExtensionPointDefinition<"repos.s
|
|
|
196
206
|
/**
|
|
197
207
|
* @deprecated use {@link ReposSourcesEmptyActionbar}`["props"]` instead
|
|
198
208
|
*/
|
|
199
|
-
|
|
209
|
+
type ReposSourcesEmptyActionbarExtensionProps = ReposSourcesEmptyActionbar["props"];
|
|
200
210
|
/**
|
|
201
211
|
* @deprecated use {@link ReposSourcesEmptyActionbar} instead
|
|
202
212
|
*/
|
|
203
|
-
|
|
204
|
-
|
|
213
|
+
type ReposSourcesEmptyActionbarExtension = ReposSourcesEmptyActionbar;
|
|
214
|
+
type ReposSourcesEmptyActionbar = RenderableExtensionPointDefinition<"repos.sources.empty.actionbar", {
|
|
205
215
|
sources: File;
|
|
206
216
|
repository: Repository;
|
|
207
217
|
}>;
|
|
208
218
|
/**
|
|
209
219
|
* @deprecated use {@link ReposSourcesTreeWrapper}`["props"]` instead
|
|
210
220
|
*/
|
|
211
|
-
|
|
221
|
+
type ReposSourcesTreeWrapperProps = ReposSourcesTreeWrapper["props"];
|
|
212
222
|
/**
|
|
213
223
|
* @deprecated use {@link ReposSourcesTreeWrapper} instead
|
|
214
224
|
*/
|
|
215
|
-
|
|
216
|
-
|
|
225
|
+
type ReposSourcesTreeWrapperExtension = ReposSourcesTreeWrapper;
|
|
226
|
+
type ReposSourcesTreeWrapper = RenderableExtensionPointDefinition<"repos.source.tree.wrapper", {
|
|
217
227
|
repository: Repository;
|
|
218
228
|
directory: File;
|
|
219
229
|
baseUrl: string;
|
|
220
230
|
revision: string;
|
|
221
231
|
}>;
|
|
222
|
-
|
|
232
|
+
type ReposSourcesTreeRowProps = {
|
|
223
233
|
repository: Repository;
|
|
224
234
|
file: File;
|
|
225
235
|
};
|
|
226
236
|
/**
|
|
227
237
|
* @deprecated use {@link ReposSourcesTreeRowRight} instead
|
|
228
238
|
*/
|
|
229
|
-
|
|
230
|
-
|
|
239
|
+
type ReposSourcesTreeRowRightExtension = ReposSourcesTreeRowRight;
|
|
240
|
+
type ReposSourcesTreeRowRight = RenderableExtensionPointDefinition<"repos.sources.tree.row.right", ReposSourcesTreeRowProps>;
|
|
231
241
|
/**
|
|
232
242
|
* @deprecated use {@link ReposSourcesTreeRowAfter} instead
|
|
233
243
|
*/
|
|
234
|
-
|
|
235
|
-
|
|
244
|
+
type ReposSourcesTreeRowAfterExtension = ReposSourcesTreeRowAfter;
|
|
245
|
+
type ReposSourcesTreeRowAfter = RenderableExtensionPointDefinition<"repos.sources.tree.row.after", ReposSourcesTreeRowProps>;
|
|
236
246
|
/**
|
|
237
247
|
* @deprecated use {@link PrimaryNavigationLoginButton}`["props"]` instead
|
|
238
248
|
*/
|
|
239
|
-
|
|
249
|
+
type PrimaryNavigationLoginButtonProps = PrimaryNavigationLoginButton["props"];
|
|
240
250
|
/**
|
|
241
251
|
* use {@link PrimaryNavigationLoginButton} instead
|
|
242
252
|
*/
|
|
243
|
-
|
|
244
|
-
|
|
253
|
+
type PrimaryNavigationLoginButtonExtension = PrimaryNavigationLoginButton;
|
|
254
|
+
type PrimaryNavigationLoginButton = RenderableExtensionPointDefinition<"primary-navigation.login", {
|
|
245
255
|
links: Links;
|
|
246
256
|
label: string;
|
|
247
257
|
loginUrl: string;
|
|
@@ -253,12 +263,12 @@ declare type PrimaryNavigationLoginButton = RenderableExtensionPointDefinition<"
|
|
|
253
263
|
/**
|
|
254
264
|
* @deprecated use {@link PrimaryNavigationLogoutButtonExtension}`["props"]` instead
|
|
255
265
|
*/
|
|
256
|
-
|
|
266
|
+
type PrimaryNavigationLogoutButtonProps = PrimaryNavigationLogoutButton["props"];
|
|
257
267
|
/**
|
|
258
268
|
* @deprecated use {@link PrimaryNavigationLogoutButton} instead
|
|
259
269
|
*/
|
|
260
|
-
|
|
261
|
-
|
|
270
|
+
type PrimaryNavigationLogoutButtonExtension = PrimaryNavigationLogoutButton;
|
|
271
|
+
type PrimaryNavigationLogoutButton = RenderableExtensionPointDefinition<"primary-navigation.logout", {
|
|
262
272
|
links: Links;
|
|
263
273
|
label: string;
|
|
264
274
|
className: string;
|
|
@@ -267,8 +277,8 @@ declare type PrimaryNavigationLogoutButton = RenderableExtensionPointDefinition<
|
|
|
267
277
|
/**
|
|
268
278
|
* @deprecated use {@link SourceExtension}`["props"]` instead
|
|
269
279
|
*/
|
|
270
|
-
|
|
271
|
-
|
|
280
|
+
type SourceExtensionProps = SourceExtension["props"];
|
|
281
|
+
type SourceExtension = RenderableExtensionPointDefinition<"repos.sources.extensions", {
|
|
272
282
|
repository: Repository;
|
|
273
283
|
baseUrl: string;
|
|
274
284
|
revision: string;
|
|
@@ -279,12 +289,12 @@ declare type SourceExtension = RenderableExtensionPointDefinition<"repos.sources
|
|
|
279
289
|
/**
|
|
280
290
|
* @deprecated use {@link RepositoryOverviewTop}`["props"]` instead
|
|
281
291
|
*/
|
|
282
|
-
|
|
292
|
+
type RepositoryOverviewTopExtensionProps = RepositoryOverviewTop["props"];
|
|
283
293
|
/**
|
|
284
294
|
* @deprecated use {@link RepositoryOverviewTop} instead
|
|
285
295
|
*/
|
|
286
|
-
|
|
287
|
-
|
|
296
|
+
type RepositoryOverviewTopExtension = RepositoryOverviewTop;
|
|
297
|
+
type RepositoryOverviewTop = RenderableExtensionPointDefinition<"repository.overview.top", {
|
|
288
298
|
page: number;
|
|
289
299
|
search?: string;
|
|
290
300
|
namespace?: string;
|
|
@@ -292,46 +302,43 @@ declare type RepositoryOverviewTop = RenderableExtensionPointDefinition<"reposit
|
|
|
292
302
|
/**
|
|
293
303
|
* @deprecated use {@link RepositoryOverviewLeft} instead
|
|
294
304
|
*/
|
|
295
|
-
|
|
296
|
-
|
|
305
|
+
type RepositoryOverviewLeftExtension = RepositoryOverviewLeft;
|
|
306
|
+
type RepositoryOverviewLeft = ExtensionPointDefinition<"repository.overview.left", React__default.ComponentType>;
|
|
297
307
|
/**
|
|
298
308
|
* @deprecated use {@link RepositoryOverviewTitle} instead
|
|
299
309
|
*/
|
|
300
|
-
|
|
301
|
-
|
|
310
|
+
type RepositoryOverviewTitleExtension = RepositoryOverviewTitle;
|
|
311
|
+
type RepositoryOverviewTitle = RenderableExtensionPointDefinition<"repository.overview.title">;
|
|
302
312
|
/**
|
|
303
313
|
* @deprecated use {@link RepositoryOverviewSubtitle} instead
|
|
304
314
|
*/
|
|
305
|
-
|
|
306
|
-
|
|
315
|
+
type RepositoryOverviewSubtitleExtension = RepositoryOverviewSubtitle;
|
|
316
|
+
type RepositoryOverviewSubtitle = RenderableExtensionPointDefinition<"repository.overview.subtitle">;
|
|
307
317
|
/**
|
|
308
318
|
* Specify options for the repository overview like the page size
|
|
309
319
|
*/
|
|
310
|
-
|
|
320
|
+
type RepositoryOverviewListOptionsExtensionPoint = ExtensionPointDefinition<"repository.overview.listOptions", () => {
|
|
311
321
|
pageSize?: number;
|
|
312
322
|
showArchived?: boolean;
|
|
313
323
|
}>;
|
|
314
|
-
|
|
324
|
+
type DocumentTitleExtensionPoint = ExtensionPointDefinition<"document.title", {
|
|
315
325
|
documentTitle: string | ((originalTitle: string) => string);
|
|
316
326
|
}>;
|
|
317
|
-
|
|
327
|
+
type AdminNavigation = RenderableExtensionPointDefinition<"admin.navigation", {
|
|
318
328
|
links: Links;
|
|
319
|
-
url: string;
|
|
320
329
|
}>;
|
|
321
|
-
|
|
330
|
+
type AdminRoute = RouteExtensionPointDefinition<"admin.route", {
|
|
322
331
|
links: Links;
|
|
323
|
-
url: string;
|
|
324
332
|
}>;
|
|
325
|
-
|
|
333
|
+
type AdminSetting = RenderableExtensionPointDefinition<"admin.setting", {
|
|
326
334
|
links: Links;
|
|
327
|
-
url: string;
|
|
328
335
|
}>;
|
|
329
336
|
/**
|
|
330
337
|
* - can be used to replace the whole description of a changeset
|
|
331
338
|
*
|
|
332
339
|
* @deprecated Use `changeset.description.tokens` instead
|
|
333
340
|
*/
|
|
334
|
-
|
|
341
|
+
type ChangesetDescription = RenderableExtensionPointDefinition<"changeset.description", {
|
|
335
342
|
changeset: Changeset;
|
|
336
343
|
value: string;
|
|
337
344
|
}>;
|
|
@@ -342,7 +349,7 @@ declare type ChangesetDescription = RenderableExtensionPointDefinition<"changese
|
|
|
342
349
|
* - replacement: The component to take instead of the text to replace
|
|
343
350
|
* - replaceAll: Optional boolean; if set to `true`, all occurances of the text will be replaced (default: `false`)
|
|
344
351
|
*/
|
|
345
|
-
|
|
352
|
+
type ChangesetDescriptionTokens = ExtensionPointDefinition<"changeset.description.tokens", (changeset: Changeset, value: string) => Array<{
|
|
346
353
|
textToReplace: string;
|
|
347
354
|
replacement: ReactNode;
|
|
348
355
|
replaceAll?: boolean;
|
|
@@ -350,40 +357,37 @@ declare type ChangesetDescriptionTokens = ExtensionPointDefinition<"changeset.de
|
|
|
350
357
|
changeset: Changeset;
|
|
351
358
|
value: string;
|
|
352
359
|
}>;
|
|
353
|
-
|
|
360
|
+
type ChangesetRight = RenderableExtensionPointDefinition<"changeset.right", {
|
|
354
361
|
repository: Repository;
|
|
355
362
|
changeset: Changeset;
|
|
356
363
|
}>;
|
|
357
|
-
|
|
364
|
+
type ChangesetsAuthorSuffix = RenderableExtensionPointDefinition<"changesets.author.suffix", {
|
|
358
365
|
changeset: Changeset;
|
|
359
366
|
}>;
|
|
360
|
-
|
|
367
|
+
type ChangesetsContributorTableRow = RenderableExtensionPointDefinition<"changesets.contributor.table.row", {
|
|
361
368
|
changeset: Changeset;
|
|
362
369
|
}>;
|
|
363
|
-
|
|
370
|
+
type GroupNavigation = RenderableExtensionPointDefinition<"group.navigation", {
|
|
364
371
|
group: Group;
|
|
365
|
-
url: string;
|
|
366
372
|
}>;
|
|
367
|
-
|
|
368
|
-
group
|
|
369
|
-
url: string;
|
|
373
|
+
type GroupRoute = RouteExtensionPointDefinition<"group.route", {
|
|
374
|
+
group?: Group;
|
|
370
375
|
}>;
|
|
371
|
-
|
|
372
|
-
group
|
|
373
|
-
url: string;
|
|
376
|
+
type GroupSetting = RenderableExtensionPointDefinition<"group.setting", {
|
|
377
|
+
group?: Group;
|
|
374
378
|
}>;
|
|
375
379
|
/**
|
|
376
380
|
* - Add a new Route to the main Route (scm/)
|
|
377
381
|
* - Props: authenticated?: boolean, links: Links
|
|
378
382
|
*/
|
|
379
|
-
|
|
383
|
+
type MainRoute = RouteExtensionPointDefinition<"main.route", {
|
|
380
384
|
me: Me;
|
|
381
385
|
authenticated?: boolean;
|
|
382
386
|
}>;
|
|
383
|
-
|
|
387
|
+
type PluginAvatar = RenderableExtensionPointDefinition<"plugins.plugin-avatar", {
|
|
384
388
|
plugin: Plugin;
|
|
385
389
|
}>;
|
|
386
|
-
|
|
390
|
+
type PrimaryNavigation = RenderableExtensionPointDefinition<"primary-navigation", {
|
|
387
391
|
links: Links;
|
|
388
392
|
}>;
|
|
389
393
|
/**
|
|
@@ -391,28 +395,24 @@ declare type PrimaryNavigation = RenderableExtensionPointDefinition<"primary-nav
|
|
|
391
395
|
* - A PrimaryNavigationLink Component can be used here
|
|
392
396
|
* - Actually this Extension Point is used from the Activity Plugin to display the activities at the first Main Navigation menu.
|
|
393
397
|
*/
|
|
394
|
-
|
|
398
|
+
type PrimaryNavigationFirstMenu = RenderableExtensionPointDefinition<"primary-navigation.first-menu", {
|
|
395
399
|
links: Links;
|
|
396
400
|
label: string;
|
|
397
401
|
}>;
|
|
398
|
-
|
|
399
|
-
me
|
|
400
|
-
url: string;
|
|
402
|
+
type ProfileRoute = RouteExtensionPointDefinition<"profile.route", {
|
|
403
|
+
me?: Me;
|
|
401
404
|
}>;
|
|
402
|
-
|
|
405
|
+
type ProfileSetting = RenderableExtensionPointDefinition<"profile.setting", {
|
|
403
406
|
me?: Me;
|
|
404
|
-
url: string;
|
|
405
407
|
links: Links;
|
|
406
408
|
}>;
|
|
407
|
-
|
|
408
|
-
repository
|
|
409
|
-
url: string;
|
|
409
|
+
type RepoConfigRoute = RouteExtensionPointDefinition<"repo-config.route", {
|
|
410
|
+
repository?: Repository;
|
|
410
411
|
}>;
|
|
411
|
-
|
|
412
|
-
repository
|
|
413
|
-
url: string;
|
|
412
|
+
type RepoConfigDetails = RenderableExtensionPointDefinition<"repo-config.details", {
|
|
413
|
+
repository?: Repository;
|
|
414
414
|
}>;
|
|
415
|
-
|
|
415
|
+
type ReposBranchDetailsInformation = RenderableExtensionPointDefinition<"repos.branch-details.information", {
|
|
416
416
|
repository: Repository;
|
|
417
417
|
branch: Branch;
|
|
418
418
|
}>;
|
|
@@ -421,12 +421,12 @@ declare type ReposBranchDetailsInformation = RenderableExtensionPointDefinition<
|
|
|
421
421
|
* - can be used to render additional meta data line
|
|
422
422
|
* - Props: file: string, repository: Repository, revision: string
|
|
423
423
|
*/
|
|
424
|
-
|
|
424
|
+
type ReposContentMetaData = RenderableExtensionPointDefinition<"repos.content.metadata", {
|
|
425
425
|
file: File;
|
|
426
426
|
repository: Repository;
|
|
427
427
|
revision: string;
|
|
428
428
|
}>;
|
|
429
|
-
|
|
429
|
+
type ReposCreateNamespace = RenderableExtensionPointDefinition<"repos.create.namespace", {
|
|
430
430
|
label: string;
|
|
431
431
|
helpText: string;
|
|
432
432
|
value: string;
|
|
@@ -434,42 +434,39 @@ declare type ReposCreateNamespace = RenderableExtensionPointDefinition<"repos.cr
|
|
|
434
434
|
errorMessage: string;
|
|
435
435
|
validationError?: boolean;
|
|
436
436
|
}>;
|
|
437
|
-
|
|
437
|
+
type ReposSourcesContentActionBar = RenderableExtensionPointDefinition<"repos.sources.content.actionbar", {
|
|
438
438
|
repository: Repository;
|
|
439
439
|
file: File;
|
|
440
440
|
revision: string;
|
|
441
441
|
handleExtensionError: React__default.Dispatch<React__default.SetStateAction<Error | undefined>>;
|
|
442
442
|
}>;
|
|
443
|
-
|
|
443
|
+
type RepositoryCodeOverviewContent = RenderableExtensionPointDefinition<"repository.code.overview.content", {
|
|
444
444
|
sources: File;
|
|
445
445
|
repository: Repository;
|
|
446
446
|
}>;
|
|
447
|
-
|
|
447
|
+
type RepositoryNavigation = RenderableExtensionPointDefinition<"repository.navigation", {
|
|
448
448
|
repository: Repository;
|
|
449
|
-
url: string;
|
|
450
449
|
indexLinks: Links;
|
|
451
450
|
}>;
|
|
452
|
-
|
|
451
|
+
type RepositoryNavigationTopLevel = RenderableExtensionPointDefinition<"repository.navigation.topLevel", {
|
|
453
452
|
repository: Repository;
|
|
454
|
-
url: string;
|
|
455
453
|
indexLinks: Links;
|
|
456
454
|
}>;
|
|
457
|
-
|
|
455
|
+
type RepositoryRoleDetailsInformation = RenderableExtensionPointDefinition<"repositoryRole.role-details.information", {
|
|
458
456
|
role: RepositoryRole;
|
|
459
457
|
}>;
|
|
460
|
-
|
|
458
|
+
type RepositorySetting = RenderableExtensionPointDefinition<"repository.setting", {
|
|
461
459
|
repository: Repository;
|
|
462
|
-
url: string;
|
|
463
460
|
indexLinks: Links;
|
|
464
461
|
}>;
|
|
465
|
-
|
|
462
|
+
type RepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar", {
|
|
466
463
|
repository: Repository;
|
|
467
464
|
}>;
|
|
468
465
|
/**
|
|
469
466
|
* - Location: At each repository in repository overview
|
|
470
467
|
* - can be used to add avatar for each repository (e.g., to mark repository type)
|
|
471
468
|
*/
|
|
472
|
-
|
|
469
|
+
type PrimaryRepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar.primary", {
|
|
473
470
|
repository: Repository;
|
|
474
471
|
size: number;
|
|
475
472
|
}>;
|
|
@@ -477,40 +474,37 @@ declare type PrimaryRepositoryAvatar = RenderableExtensionPointDefinition<"repos
|
|
|
477
474
|
* - Location: At bottom of a single repository view
|
|
478
475
|
* - can be used to show detailed information about the repository (how to clone, e.g.)
|
|
479
476
|
*/
|
|
480
|
-
|
|
477
|
+
type RepositoryDetailsInformation = RenderableExtensionPointDefinition<"repos.repository-details.information", {
|
|
481
478
|
repository: Repository;
|
|
482
479
|
}>;
|
|
483
480
|
/**
|
|
484
481
|
* - Location: At sources viewer
|
|
485
482
|
* - can be used to render a special source that is not an image or a source code
|
|
486
483
|
*/
|
|
487
|
-
|
|
484
|
+
type RepositorySourcesView = RenderableExtensionPointDefinition<"repos.sources.view", {
|
|
488
485
|
file: File;
|
|
489
486
|
contentType: string;
|
|
490
487
|
revision: string;
|
|
491
488
|
basePath: string;
|
|
492
489
|
}>;
|
|
493
|
-
|
|
494
|
-
role
|
|
490
|
+
type RolesRoute = RouteExtensionPointDefinition<"roles.route", {
|
|
491
|
+
role?: HalRepresentation & RepositoryRoleBase & {
|
|
495
492
|
creationDate?: string;
|
|
496
493
|
lastModified?: string;
|
|
497
494
|
};
|
|
498
|
-
url: string;
|
|
499
495
|
}>;
|
|
500
|
-
|
|
501
|
-
user
|
|
502
|
-
url: string;
|
|
496
|
+
type UserRoute = RouteExtensionPointDefinition<"user.route", {
|
|
497
|
+
user?: User;
|
|
503
498
|
}>;
|
|
504
|
-
|
|
505
|
-
user
|
|
506
|
-
url: string;
|
|
499
|
+
type UserSetting = RenderableExtensionPointDefinition<"user.setting", {
|
|
500
|
+
user?: User;
|
|
507
501
|
}>;
|
|
508
502
|
/**
|
|
509
503
|
* - Dynamic extension point for custom language-specific renderers
|
|
510
504
|
* - Overrides the default Syntax Highlighter for the given language
|
|
511
505
|
* - Used by the Markdown Plantuml Plugin
|
|
512
506
|
*/
|
|
513
|
-
|
|
507
|
+
type MarkdownCodeRenderer<Language extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"markdown-renderer.code.", Language, {
|
|
514
508
|
language?: Language extends string ? Language : string;
|
|
515
509
|
value: string;
|
|
516
510
|
indexLinks: Links;
|
|
@@ -527,7 +521,7 @@ declare type MarkdownCodeRenderer<Language extends string | undefined = undefine
|
|
|
527
521
|
* binder.bind<extensionPoints.MarkdownLinkProtocolRenderer<"myprotocol">>("markdown-renderer.link.protocol", { protocol: "myprotocol", renderer: MyProtocolRenderer })
|
|
528
522
|
* ```
|
|
529
523
|
*/
|
|
530
|
-
|
|
524
|
+
type MarkdownLinkProtocolRenderer<Protocol extends string | undefined = undefined> = ExtensionPointDefinition<"markdown-renderer.link.protocol", {
|
|
531
525
|
protocol: Protocol extends string ? Protocol : string;
|
|
532
526
|
renderer: React__default.ComponentType<{
|
|
533
527
|
protocol: Protocol extends string ? Protocol : string;
|
|
@@ -539,15 +533,15 @@ declare type MarkdownLinkProtocolRenderer<Protocol extends string | undefined =
|
|
|
539
533
|
*
|
|
540
534
|
* @see https://github.com/scm-manager/scm-gravatar-plugin
|
|
541
535
|
*/
|
|
542
|
-
|
|
536
|
+
type AvatarFactory = ExtensionPointDefinition<"avatar.factory", (person: Person) => string | undefined>;
|
|
543
537
|
/**
|
|
544
538
|
* - Location: At every changeset (detailed view as well as changeset overview)
|
|
545
539
|
* - can be used to add avatar (such as gravatar) for each changeset
|
|
546
540
|
*
|
|
547
541
|
* @deprecated Has no effect, use {@link AvatarFactory} instead
|
|
548
542
|
*/
|
|
549
|
-
|
|
550
|
-
|
|
543
|
+
type ChangesetAvatarFactory = ExtensionPointDefinition<"changeset.avatar-factory", (changeset: Changeset) => void>;
|
|
544
|
+
type MainRedirectProps = {
|
|
551
545
|
me: Me;
|
|
552
546
|
authenticated?: boolean;
|
|
553
547
|
};
|
|
@@ -555,18 +549,18 @@ declare type MainRedirectProps = {
|
|
|
555
549
|
* - Extension Point for a link factory that provide the Redirect Link
|
|
556
550
|
* - Actually used from the activity plugin: binder.bind("main.redirect", () => "/activity");
|
|
557
551
|
*/
|
|
558
|
-
|
|
552
|
+
type MainRedirect = ExtensionPointDefinition<"main.redirect", (props: MainRedirectProps) => string, MainRedirectProps>;
|
|
559
553
|
/**
|
|
560
554
|
* - A Factory function to create markdown [renderer](https://github.com/rexxars/react-markdown#node-types)
|
|
561
555
|
* - The factory function will be called with a renderContext parameter of type Object. this parameter is given as a prop for the {@link MarkdownView} component.
|
|
562
556
|
*
|
|
563
557
|
* @deprecated Use {@link MarkdownCodeRenderer} or {@link MarkdownLinkProtocolRenderer} instead
|
|
564
558
|
*/
|
|
565
|
-
|
|
566
|
-
|
|
559
|
+
type MarkdownRendererFactory = ExtensionPointDefinition<"markdown-renderer-factory", (renderContext: unknown) => Record<string, React__default.ComponentType<any>>>;
|
|
560
|
+
type RepositoryCardBeforeTitle = RenderableExtensionPointDefinition<"repository.card.beforeTitle", {
|
|
567
561
|
repository: Repository;
|
|
568
562
|
}>;
|
|
569
|
-
|
|
563
|
+
type RepositoryCreationInitialization = RenderableExtensionPointDefinition<"repos.create.initialize", {
|
|
570
564
|
repository: Repository;
|
|
571
565
|
setCreationContextEntry: (key: string, value: any) => void;
|
|
572
566
|
indexResources: Partial<HalRepresentation> & {
|
|
@@ -575,35 +569,32 @@ declare type RepositoryCreationInitialization = RenderableExtensionPointDefiniti
|
|
|
575
569
|
initialization?: string;
|
|
576
570
|
};
|
|
577
571
|
}>;
|
|
578
|
-
|
|
572
|
+
type NamespaceTopLevelNavigation = RenderableExtensionPointDefinition<"namespace.navigation.topLevel", {
|
|
579
573
|
namespace: Namespace;
|
|
580
|
-
url: string;
|
|
581
574
|
}>;
|
|
582
|
-
|
|
583
|
-
namespace
|
|
584
|
-
url: string;
|
|
575
|
+
type NamespaceRoute = RouteExtensionPointDefinition<"namespace.route", {
|
|
576
|
+
namespace?: Namespace;
|
|
585
577
|
}>;
|
|
586
|
-
|
|
587
|
-
namespace
|
|
588
|
-
url: string;
|
|
578
|
+
type NamespaceSetting = RenderableExtensionPointDefinition<"namespace.setting", {
|
|
579
|
+
namespace?: Namespace;
|
|
589
580
|
}>;
|
|
590
|
-
|
|
581
|
+
type RepositoryTagDetailsInformation = RenderableExtensionPointDefinition<"repos.tag-details.information", {
|
|
591
582
|
repository: Repository;
|
|
592
583
|
tag: Tag;
|
|
593
584
|
}>;
|
|
594
|
-
|
|
585
|
+
type SearchHitRenderer<Type extends string | undefined = undefined> = RenderableExtensionPointDefinition<Type extends string ? `search.hit.${Type}.renderer` : `search.hit.${string}.renderer`, {
|
|
595
586
|
hit: Hit;
|
|
596
587
|
}>;
|
|
597
|
-
|
|
588
|
+
type RepositorySourcesContentDownloadButton = RenderableExtensionPointDefinition<"repos.sources.content.downloadButton", {
|
|
598
589
|
repository: Repository;
|
|
599
590
|
file: File;
|
|
600
591
|
}>;
|
|
601
|
-
|
|
602
|
-
repository
|
|
603
|
-
url: string;
|
|
592
|
+
type RepositoryRoute = RouteExtensionPointDefinition<"repository.route", {
|
|
593
|
+
repository?: Repository;
|
|
604
594
|
indexLinks: Links;
|
|
595
|
+
urlForLinks: string;
|
|
605
596
|
}>;
|
|
606
|
-
|
|
597
|
+
type RepositoryRedirectProps = {
|
|
607
598
|
namespace: string;
|
|
608
599
|
name: string;
|
|
609
600
|
repository: Repository;
|
|
@@ -618,14 +609,13 @@ declare type RepositoryRedirectProps = {
|
|
|
618
609
|
};
|
|
619
610
|
isExact: boolean;
|
|
620
611
|
path: string;
|
|
621
|
-
url: string;
|
|
622
612
|
};
|
|
623
613
|
};
|
|
624
|
-
|
|
625
|
-
|
|
614
|
+
type RepositoryRedirect = ExtensionPointDefinition<"repository.redirect", (props: RepositoryRedirectProps) => string, RepositoryRedirectProps>;
|
|
615
|
+
type InitializationStep<Step extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"initialization.step.", Step, {
|
|
626
616
|
data: HalRepresentation;
|
|
627
617
|
}>;
|
|
628
|
-
|
|
618
|
+
type ContentActionExtensionProps = {
|
|
629
619
|
repository: Repository;
|
|
630
620
|
file: File;
|
|
631
621
|
revision: string;
|
|
@@ -633,45 +623,44 @@ declare type ContentActionExtensionProps = {
|
|
|
633
623
|
contentType?: ContentType;
|
|
634
624
|
setLoading?: (isLoading: boolean) => void;
|
|
635
625
|
};
|
|
636
|
-
|
|
626
|
+
type BaseActionBarOverflowMenuProps = {
|
|
637
627
|
category: string;
|
|
638
628
|
label: string;
|
|
639
629
|
icon: string;
|
|
640
630
|
props?: Record<string | number | symbol, unknown>;
|
|
641
631
|
};
|
|
642
|
-
|
|
632
|
+
type ActionMenuProps = BaseActionBarOverflowMenuProps & {
|
|
643
633
|
action: (props: ContentActionExtensionProps) => void;
|
|
644
634
|
};
|
|
645
|
-
|
|
635
|
+
type ModalMenuProps = BaseActionBarOverflowMenuProps & {
|
|
646
636
|
modalElement: ComponentType<ContentActionExtensionProps & {
|
|
647
637
|
close: () => void;
|
|
648
638
|
}>;
|
|
649
639
|
};
|
|
650
|
-
|
|
640
|
+
type LinkMenuProps = BaseActionBarOverflowMenuProps & {
|
|
651
641
|
link: (props: ContentActionExtensionProps) => string;
|
|
652
642
|
};
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
643
|
+
type FileViewActionBarOverflowMenu = ExtensionPointDefinition<"repos.sources.content.actionbar.menu", ActionMenuProps | ModalMenuProps | LinkMenuProps, ContentActionExtensionProps>;
|
|
644
|
+
type LoginForm = RenderableExtensionPointDefinition<"login.form">;
|
|
645
|
+
type RepositoryDeleteButton = RenderableExtensionPointDefinition<"repository.deleteButton", {
|
|
656
646
|
repository: Repository;
|
|
657
647
|
}>;
|
|
658
|
-
|
|
648
|
+
type RepositoryDangerZone = RenderableExtensionPointDefinition<"repository.dangerZone", {
|
|
659
649
|
repository: Repository;
|
|
660
650
|
}>;
|
|
661
|
-
|
|
651
|
+
type RepositoryInformationTableBottom = RenderableExtensionPointDefinition<"repository.information.table.bottom", {
|
|
662
652
|
repository: Repository;
|
|
663
653
|
}>;
|
|
664
|
-
|
|
654
|
+
type RepositoryBanner = RenderableExtensionPointDefinition<"repository.banner", {
|
|
665
655
|
repository: Repository;
|
|
666
|
-
url: string;
|
|
667
656
|
}>;
|
|
668
|
-
|
|
657
|
+
type UserInformationTableBottom = RenderableExtensionPointDefinition<"user.information.table.bottom", {
|
|
669
658
|
user: User;
|
|
670
659
|
}>;
|
|
671
|
-
|
|
660
|
+
type GroupInformationTableBottom = RenderableExtensionPointDefinition<"group.information.table.bottom", {
|
|
672
661
|
group: Group;
|
|
673
662
|
}>;
|
|
674
|
-
|
|
663
|
+
type BranchMenuDetailProps = {
|
|
675
664
|
repository: Repository;
|
|
676
665
|
branch: Branch;
|
|
677
666
|
};
|
|
@@ -692,8 +681,8 @@ declare type BranchMenuDetailProps = {
|
|
|
692
681
|
* )
|
|
693
682
|
* ```
|
|
694
683
|
*/
|
|
695
|
-
|
|
696
|
-
|
|
684
|
+
type BranchListMenu = RenderableExtensionPointDefinition<"branches.list.menu", BranchMenuDetailProps>;
|
|
685
|
+
type BranchListDetailProps = {
|
|
697
686
|
repository: Repository;
|
|
698
687
|
branch: Branch;
|
|
699
688
|
branchDetails?: BranchDetails;
|
|
@@ -715,7 +704,7 @@ declare type BranchListDetailProps = {
|
|
|
715
704
|
* )
|
|
716
705
|
* ```
|
|
717
706
|
*/
|
|
718
|
-
|
|
707
|
+
type BranchListDetail = RenderableExtensionPointDefinition<"branches.list.detail", BranchListDetailProps>;
|
|
719
708
|
|
|
720
709
|
type extensionPoints_RepositoryCreatorComponentProps = RepositoryCreatorComponentProps;
|
|
721
710
|
type extensionPoints_RepositoryCreatorExtension = RepositoryCreatorExtension;
|
|
@@ -928,4 +917,4 @@ declare namespace extensionPoints {
|
|
|
928
917
|
};
|
|
929
918
|
}
|
|
930
919
|
|
|
931
|
-
export { Binder, BinderContext, ExtensionPoint, ExtensionPointDefinition, ExtractProps, RenderableExtensionPointDefinition, SimpleRenderableDynamicExtensionPointDefinition, binder, extensionPoints, useBinder };
|
|
920
|
+
export { Binder, BinderContext, ExtensionPoint, ExtensionPointDefinition, ExtractProps, RenderableExtensionPointDefinition, SimpleRenderableDynamicExtensionPointDefinition, binder, extensionPoints, useBinder, useRouteExtensions };
|
package/build/index.js
CHANGED
|
@@ -31,7 +31,8 @@ __export(src_exports, {
|
|
|
31
31
|
ExtensionPoint: () => ExtensionPoint,
|
|
32
32
|
binder: () => binder_default,
|
|
33
33
|
extensionPoints: () => extensionPoints_exports,
|
|
34
|
-
useBinder: () => useBinder
|
|
34
|
+
useBinder: () => useBinder,
|
|
35
|
+
useRouteExtensions: () => useRouteExtensions
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(src_exports);
|
|
37
38
|
|
|
@@ -138,8 +139,7 @@ function createInstance(Component, props, key) {
|
|
|
138
139
|
});
|
|
139
140
|
}
|
|
140
141
|
return /* @__PURE__ */ import_react2.default.createElement(Component, {
|
|
141
|
-
...props
|
|
142
|
-
key
|
|
142
|
+
...props
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
var renderAllExtensions = (binder2, name, props) => {
|
|
@@ -198,6 +198,28 @@ function ExtensionPoint({ name, propTransformer, props, renderAll, wrapper, chil
|
|
|
198
198
|
return renderSingleExtension(binder2, name, renderProps);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
+
// src/RouteExtensionPoint.tsx
|
|
202
|
+
var import_react3 = __toESM(require("react"));
|
|
203
|
+
var import_react_router_dom = require("react-router-dom");
|
|
204
|
+
function useRouteExtensions({
|
|
205
|
+
name,
|
|
206
|
+
props
|
|
207
|
+
}) {
|
|
208
|
+
const binder2 = useBinder_default();
|
|
209
|
+
if (!binder2.hasExtension(name, props)) {
|
|
210
|
+
return [];
|
|
211
|
+
}
|
|
212
|
+
const extensionFunctions = binder2.getExtensions(name, props);
|
|
213
|
+
return extensionFunctions.flatMap((createRouteFn, index) => {
|
|
214
|
+
const elementOrElements = createRouteFn(props);
|
|
215
|
+
if (!elementOrElements) {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements];
|
|
219
|
+
return elements.filter((element) => import_react3.default.isValidElement(element) && element.type === import_react_router_dom.Route).map((routeElement, subIndex) => import_react3.default.cloneElement(routeElement, { key: `${name}-${index}-${subIndex}` }));
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
201
223
|
// src/extensionPoints.tsx
|
|
202
224
|
var extensionPoints_exports = {};
|
|
203
225
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -207,5 +229,6 @@ var extensionPoints_exports = {};
|
|
|
207
229
|
ExtensionPoint,
|
|
208
230
|
binder,
|
|
209
231
|
extensionPoints,
|
|
210
|
-
useBinder
|
|
232
|
+
useBinder,
|
|
233
|
+
useRouteExtensions
|
|
211
234
|
});
|
package/build/index.mjs
CHANGED
|
@@ -101,8 +101,7 @@ function createInstance(Component, props, key) {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
return /* @__PURE__ */ React.createElement(Component, {
|
|
104
|
-
...props
|
|
105
|
-
key
|
|
104
|
+
...props
|
|
106
105
|
});
|
|
107
106
|
}
|
|
108
107
|
var renderAllExtensions = (binder2, name, props) => {
|
|
@@ -161,6 +160,28 @@ function ExtensionPoint({ name, propTransformer, props, renderAll, wrapper, chil
|
|
|
161
160
|
return renderSingleExtension(binder2, name, renderProps);
|
|
162
161
|
}
|
|
163
162
|
|
|
163
|
+
// src/RouteExtensionPoint.tsx
|
|
164
|
+
import React2 from "react";
|
|
165
|
+
import { Route } from "react-router-dom";
|
|
166
|
+
function useRouteExtensions({
|
|
167
|
+
name,
|
|
168
|
+
props
|
|
169
|
+
}) {
|
|
170
|
+
const binder2 = useBinder_default();
|
|
171
|
+
if (!binder2.hasExtension(name, props)) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
const extensionFunctions = binder2.getExtensions(name, props);
|
|
175
|
+
return extensionFunctions.flatMap((createRouteFn, index) => {
|
|
176
|
+
const elementOrElements = createRouteFn(props);
|
|
177
|
+
if (!elementOrElements) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements];
|
|
181
|
+
return elements.filter((element) => React2.isValidElement(element) && element.type === Route).map((routeElement, subIndex) => React2.cloneElement(routeElement, { key: `${name}-${index}-${subIndex}` }));
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
164
185
|
// src/extensionPoints.tsx
|
|
165
186
|
var extensionPoints_exports = {};
|
|
166
187
|
export {
|
|
@@ -169,5 +190,6 @@ export {
|
|
|
169
190
|
ExtensionPoint,
|
|
170
191
|
binder_default as binder,
|
|
171
192
|
extensionPoints_exports as extensionPoints,
|
|
172
|
-
useBinder
|
|
193
|
+
useBinder,
|
|
194
|
+
useRouteExtensions
|
|
173
195
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scm-manager/ui-extensions",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-REACT19",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Sebastian Sdorra <sebastian.sdorra@cloudogu.com>",
|
|
@@ -17,21 +17,23 @@
|
|
|
17
17
|
"test": "jest",
|
|
18
18
|
"depcheck": "depcheck"
|
|
19
19
|
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"react-router-dom": "^7.9.1"
|
|
22
|
+
},
|
|
20
23
|
"peerDependencies": {
|
|
21
|
-
"react": "^
|
|
24
|
+
"react": "^19.1.1"
|
|
22
25
|
},
|
|
23
26
|
"devDependencies": {
|
|
24
|
-
"@scm-manager/ui-types": "4.0.0-REACT18-20250701-125025",
|
|
25
|
-
"@scm-manager/ui-tests": "4.0.0-REACT18-20250701-125025",
|
|
26
27
|
"@scm-manager/babel-preset": "^2.13.1",
|
|
27
28
|
"@scm-manager/eslint-config": "^2.17.0",
|
|
28
|
-
"@scm-manager/jest-preset": "^2.
|
|
29
|
+
"@scm-manager/jest-preset": "^2.15.0-alpha1",
|
|
29
30
|
"@scm-manager/prettier-config": "^2.12.0",
|
|
30
31
|
"@scm-manager/tsconfig": "^2.13.0",
|
|
31
|
-
"@types
|
|
32
|
-
"@
|
|
33
|
-
"
|
|
34
|
-
"
|
|
32
|
+
"@scm-manager/ui-types": "4.0.0-REACT19",
|
|
33
|
+
"@testing-library/react": "16.3.0",
|
|
34
|
+
"@types/react": "^19.1.1",
|
|
35
|
+
"minimatch": "^10.0.3",
|
|
36
|
+
"tsup": "^5.12.6"
|
|
35
37
|
},
|
|
36
38
|
"babel": {
|
|
37
39
|
"presets": [
|
|
@@ -48,4 +50,4 @@
|
|
|
48
50
|
"publishConfig": {
|
|
49
51
|
"access": "public"
|
|
50
52
|
}
|
|
51
|
-
}
|
|
53
|
+
}
|