@gitkraken/gitkraken-components 13.0.0-vnext.3 → 13.0.0-vnext.30

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 (64) hide show
  1. package/README.md +6 -0
  2. package/dist/components/dnd/DndComponent.d.ts +1 -1
  3. package/dist/components/dnd/DndContainer.d.ts +1 -1
  4. package/dist/components/graph/GraphColumn.d.ts +7 -2
  5. package/dist/components/graph/GraphContainer.d.ts +285 -31
  6. package/dist/components/graph/GraphHeaderRow.d.ts +5 -1
  7. package/dist/components/graph/GraphScrollMarker.d.ts +26 -5
  8. package/dist/components/graph/commitzone/CommitNode.d.ts +1 -1
  9. package/dist/components/graph/commitzone/CommitZone.d.ts +3 -2
  10. package/dist/components/graph/commitzone/GraphAvatar.d.ts +1 -1
  11. package/dist/components/graph/commitzone/edges/Arc.d.ts +2 -2
  12. package/dist/components/graph/commitzone/edges/Edges.d.ts +1 -1
  13. package/dist/components/graph/commitzone/edges/EndingEdge.d.ts +2 -2
  14. package/dist/components/graph/commitzone/edges/PassThroughEdge.d.ts +2 -2
  15. package/dist/components/graph/commitzone/edges/StartingEdge.d.ts +2 -2
  16. package/dist/components/graph/common/DraggableGraphHeader.d.ts +1 -1
  17. package/dist/components/graph/common/GenericGraphZone.d.ts +4 -2
  18. package/dist/components/graph/common/ScrollbarContainer.d.ts +1 -1
  19. package/dist/components/graph/common/StickyTimeline.d.ts +10 -0
  20. package/dist/components/graph/common/TimelineMessage.d.ts +6 -0
  21. package/dist/components/graph/messagezone/WorkDirMessageInput.d.ts +1 -1
  22. package/dist/components/graph/refzone/CreateRefNode.d.ts +1 -1
  23. package/dist/components/graph/refzone/RefNode.d.ts +11 -7
  24. package/dist/components/graph/refzone/RefNodeAnnotationTarget.d.ts +10 -0
  25. package/dist/components/graph/refzone/RefNodes.d.ts +4 -2
  26. package/dist/components/graph/refzone/RefZone.d.ts +8 -3
  27. package/dist/components/graph/rowAdornment/RowAdornmentLayer.d.ts +52 -0
  28. package/dist/components/graph/rowAdornment/RowAdornmentOverlay.d.ts +19 -0
  29. package/dist/components/graph/rowRenderers/CommitMessageZoneRow.d.ts +2 -1
  30. package/dist/components/graph/rowRenderers/CommitZoneRow.d.ts +2 -0
  31. package/dist/components/graph/rowRenderers/CommitsInfoRow.d.ts +1 -1
  32. package/dist/components/graph/rowRenderers/RefZoneRow.d.ts +2 -0
  33. package/dist/components/graph/shared/Avatar.d.ts +1 -1
  34. package/dist/components/graph/shared/FileDiffTypeIcon.d.ts +2 -1
  35. package/dist/components/graph/shared/WipStatsPill.d.ts +11 -0
  36. package/dist/components/resizable/Resizable.d.ts +2 -7
  37. package/dist/domain/commit/CommitHelpers.d.ts +2 -2
  38. package/dist/domain/commit/CommitTypes.d.ts +1 -0
  39. package/dist/domain/edge/EdgeHelpers.d.ts +4 -4
  40. package/dist/domain/generic/GenericTypes.d.ts +6 -0
  41. package/dist/domain/graph/GraphConstants.d.ts +18 -2
  42. package/dist/domain/graph/GraphEdgeHelpers.d.ts +34 -0
  43. package/dist/domain/graph/GraphHelpers.d.ts +29 -5
  44. package/dist/domain/graph/GraphTypes.d.ts +101 -10
  45. package/dist/domain/graph/PinnedBranchHelpers.d.ts +21 -0
  46. package/dist/domain/graph/ScopedGraphHelpers.d.ts +15 -0
  47. package/dist/domain/graph/row/ProcessedGraphRowObj.d.ts +6 -5
  48. package/dist/domain/graph/rowAdornment/RowAdornmentHelpers.d.ts +14 -0
  49. package/dist/domain/graph/rowAdornment/RowAdornmentTypes.d.ts +97 -0
  50. package/dist/domain/hostingservice/HostingServiceTypes.d.ts +2 -1
  51. package/dist/domain/reactvirtualized/ReactVirtualizedHelpers.d.ts +1 -1
  52. package/dist/domain/ref/RefConstants.d.ts +4 -1
  53. package/dist/domain/ref/RefTypes.d.ts +1 -1
  54. package/dist/domain/workdir/WorkDirHelpers.d.ts +50 -0
  55. package/dist/domain/workdir/WorkDirTypes.d.ts +51 -0
  56. package/dist/index.d.ts +16 -1
  57. package/dist/index.js +21 -2
  58. package/dist/styles.css +2 -2
  59. package/dist/types.d.ts +1 -0
  60. package/dist/utils/ObjectUtils.d.ts +29 -0
  61. package/package.json +100 -93
  62. package/CHANGELOG.md +0 -15
  63. package/ThirdPartyNotices.txt +0 -227
  64. package/dist/types.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { CssVariables, Style } from '../../../domain/generic/GenericTypes';
4
4
  import type { GraphItemContext } from '../../../domain/graph/GraphTypes';
5
5
  import type { ComponentTooltip } from '../../../domain/ui/UiTypes';
@@ -1,4 +1,4 @@
1
- import type { CommitType } from '../../../../domain/commit/CommitTypes';
1
+ import type { EdgeCommitType } from '../../../../domain/commit/CommitTypes';
2
2
  import type { ArcEndpointAngle, ColumnColor, SvgElement } from '../../../../domain/graph/GraphTypes';
3
- declare function getArc(color: ColumnColor, endAngle: ArcEndpointAngle, startAngle: ArcEndpointAngle, type: CommitType, x: number, y: number, strokeWidth: number, isCompact?: boolean): SvgElement;
3
+ declare function getArc(color: ColumnColor, endAngle: ArcEndpointAngle, startAngle: ArcEndpointAngle, type: EdgeCommitType, x: number, y: number, strokeWidth: number, isCompact?: boolean): SvgElement;
4
4
  export default getArc;
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { ColumnColorByColumn, GraphZoneModeConstants, RowEdges } from '../../../../domain/graph/GraphTypes';
4
4
  type EdgeProps = {
5
5
  columnColorByColumn: ColumnColorByColumn;
@@ -1,4 +1,4 @@
1
- import type { CommitType } from '../../../../domain/commit/CommitTypes';
1
+ import type { EdgeCommitType } from '../../../../domain/commit/CommitTypes';
2
2
  import type { ColumnColorByColumn, SvgElement } from '../../../../domain/graph/GraphTypes';
3
3
  export declare function clearEndingEdgeCacheCache(): void;
4
- export declare function getEndingEdge(edgeColumn: number, nodeColumn: number, type: CommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
4
+ export declare function getEndingEdge(edgeColumn: number, nodeColumn: number, type: EdgeCommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
@@ -1,4 +1,4 @@
1
- import type { CommitType } from '../../../../domain/commit/CommitTypes';
1
+ import type { EdgeCommitType } from '../../../../domain/commit/CommitTypes';
2
2
  import type { ColumnColorByColumn, SvgElement } from '../../../../domain/graph/GraphTypes';
3
3
  export declare function clearPassThroughEdgeCache(): void;
4
- export declare function getPassThroughEdge(column: number, type: CommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
4
+ export declare function getPassThroughEdge(column: number, type: EdgeCommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
@@ -1,4 +1,4 @@
1
- import type { CommitType } from '../../../../domain/commit/CommitTypes';
1
+ import type { EdgeCommitType } from '../../../../domain/commit/CommitTypes';
2
2
  import type { ColumnColorByColumn, SvgElement } from '../../../../domain/graph/GraphTypes';
3
3
  export declare function clearStartingEdgeCache(): void;
4
- export declare function getStartingEdge(edgeColumn: number, nodeColumn: number, type: CommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
4
+ export declare function getStartingEdge(edgeColumn: number, nodeColumn: number, type: EdgeCommitType, columnColorByColumn: ColumnColorByColumn, columnWidth: number, gutterWidth: number, strokeWidth: number, isCompact?: boolean): SvgElement;
@@ -1,5 +1,5 @@
1
1
  import type { MouseEventHandler, ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { GraphZone, GraphZoneType } from '../../../domain/graph/GraphConstants';
4
4
  import type { ExcludeRefsById, GetExternalIcon, GraphColumnSetting, GraphItemContext, GraphRefOptData, IncludeOnlyRefsById, OnFilterColumnClick, OnGraphZoneResize, OnGraphZoneResizeEnd, OnGraphZoneResizeFromPropChange, OnGraphZoneResizeStart, OnSettingsClick, OnToggleRefNodesShown } from '../../../domain/graph/GraphTypes';
5
5
  import type { TranslationFn } from '../../../domain/language/LanguageTypes';
@@ -1,9 +1,9 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { CommitType, Sha } from '../../../domain/commit/CommitTypes';
4
4
  import type { Style } from '../../../domain/generic/GenericTypes';
5
5
  import type { GraphZoneType } from '../../../domain/graph/GraphConstants';
6
- import type { GetExternalIcon, GraphItemContext, OnClearCurrentlyHoveredGraphCommit, OnClickCommit, OnCommitContextMenu, OnCurrentlyHoveredGraphCommit, OnDoubleClickCommit } from '../../../domain/graph/GraphTypes';
6
+ import type { GetExternalIcon, GraphItemContext, OnClearCurrentlyHoveredGraphCommit, OnClickCommit, OnCommitContextMenu, OnCurrentlyHoveredGraphCommit, OnDoubleClickCommit, ScopeBoundaryKind } from '../../../domain/graph/GraphTypes';
7
7
  import type { ChildrenElements } from '../../../domain/ui/UiTypes';
8
8
  type Props = {
9
9
  clearCurrentlyHoveredGraphCommit: OnClearCurrentlyHoveredGraphCommit;
@@ -15,6 +15,7 @@ type Props = {
15
15
  dimRowsOfSelectedCommit?: boolean;
16
16
  getExternalIcon: GetExternalIcon;
17
17
  graphZoneType: GraphZoneType;
18
+ hasActive?: boolean;
18
19
  hasAvatars?: boolean;
19
20
  highlightRowsOnRefHover: boolean;
20
21
  isDimmedMergeCommitRow: boolean;
@@ -29,6 +30,7 @@ type Props = {
29
30
  onClickCommit: OnClickCommit;
30
31
  onDoubleClickCommit: OnDoubleClickCommit;
31
32
  rowContext?: GraphItemContext | null;
33
+ scopeBoundaryKind?: ScopeBoundaryKind;
32
34
  setAsCurrentlyHoveredGraphCommit: OnCurrentlyHoveredGraphCommit;
33
35
  sha: Sha;
34
36
  showColorStrip?: boolean;
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement, ReactNode } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  export type ScrollParams = {
4
4
  clientHeight: number;
5
5
  clientWidth: number;
@@ -0,0 +1,10 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ProcessedGraphRow } from '../../../domain/graph/GraphTypes';
3
+ import type { TranslationFn } from '../../../domain/language/LanguageTypes';
4
+ interface StickyTimelineProps {
5
+ processedRows: ProcessedGraphRow[];
6
+ scrollTop: number;
7
+ translate: TranslationFn;
8
+ }
9
+ export declare function StickyTimeline({ processedRows, scrollTop, translate }: StickyTimelineProps): ReactElement | null;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { ReactElement } from 'react';
2
+ interface TimelineMessageProps {
3
+ message: string;
4
+ }
5
+ export declare function TimelineMessage({ message }: TimelineMessageProps): ReactElement;
6
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { Sha } from '../../../domain/commit/CommitTypes';
4
4
  import type { Style } from '../../../domain/generic/GenericTypes';
5
5
  import type { GraphZoneType } from '../../../domain/graph/GraphConstants';
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { Style } from '../../../domain/generic/GenericTypes';
4
4
  import type { FormatRefShorthand, IsRefShorthandValid, OnRefCreate, OnRefCreateCancel, OnRefCreateContextMenu, OnRefShorthandChange } from '../../../domain/graph/GraphTypes';
5
5
  import type { TranslationFn } from '../../../domain/language/LanguageTypes';
@@ -1,11 +1,12 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { CommitType, Sha } from '../../../domain/commit/CommitTypes';
4
4
  import type { GetExternalIcon, GetMissingRefMetadata, GraphItemContext, GraphRef, GraphRefGroup, OnClickRef, OnClickRefMetadata, OnDoubleClickRef, OnDoubleClickRefMetadata, OnHideRefClick, OnRefBeginDrag, OnRefCanDrag, OnRefCanDrop, OnRefDragEnter, OnRefDragLeave, OnRefDrop, OnRefEndDrag, OnRefNodeHovered, OnRefZoneContextMenu, RefMetadataById, RefMetadataItem, RefMetadataType } from '../../../domain/graph/GraphTypes';
5
5
  import type { TranslationFn } from '../../../domain/language/LanguageTypes';
6
6
  import type { RefIconsPosition } from '../../../domain/ref/RefTypes';
7
7
  import type { OnClick, OnContextMenu, OnDoubleClick } from '../../../domain/ui/UiTypes';
8
8
  export type RefNodeProps = {
9
+ className?: string;
9
10
  enableShowHideRefsOptions: boolean;
10
11
  getExternalIcon: GetExternalIcon;
11
12
  groupIsHovered: boolean;
@@ -13,7 +14,9 @@ export type RefNodeProps = {
13
14
  hasRefs: boolean;
14
15
  isActive: boolean;
15
16
  isGhostRef: boolean;
17
+ isHidden?: boolean;
16
18
  isInUnsupportedRebase: boolean;
19
+ isPinned: boolean;
17
20
  isRefGroupIncluded: boolean;
18
21
  key?: string;
19
22
  onClick: OnClickRef;
@@ -30,9 +33,10 @@ export type RefNodeProps = {
30
33
  onMissingRefMetadata: GetMissingRefMetadata;
31
34
  onHideRefClick: OnHideRefClick;
32
35
  refGroup: GraphRefGroup;
33
- refGroupContext: GraphItemContext | null;
36
+ refGroupContext: GraphItemContext | null | undefined;
34
37
  refIconsPosition: RefIconsPosition;
35
- refMetadata: RefMetadataById | null;
38
+ refMetadata: RefMetadataById | null | undefined;
39
+ fallbackRefMetadata?: RefMetadataById | null;
36
40
  sha: Sha;
37
41
  showRemoteNamesOnRefs: boolean;
38
42
  enabledRefMetadataTypes: RefMetadataType[];
@@ -42,11 +46,11 @@ export type RefNodeProps = {
42
46
  };
43
47
  export declare function getRefIconAndTooltipForRef(getExternalIcon: GetExternalIcon, ref: GraphRef, translate: TranslationFn, index?: number): ReactElement<any>;
44
48
  export default class RefNode extends React.PureComponent<RefNodeProps> {
45
- getContextForRefGroupIfExists(refGroup: GraphRefGroup, groupContext: GraphItemContext | null, useGroupContext?: boolean): GraphItemContext | undefined;
49
+ getContextForRefGroupIfExists(refGroup: GraphRefGroup, groupContext: GraphItemContext | null | undefined, useGroupContext?: boolean): GraphItemContext | null | undefined;
46
50
  getDecoratedRefIcon(key: string, icon: ReactElement<any>, metadataItem: RefMetadataItem, context?: GraphItemContext, className?: string): ReactElement<any>;
47
- getPullRequestIconsAndTooltipsForRef(refMetadata: RefMetadataById | null, ref: GraphRef, existingPullRequestIds: Set<number>): ReactElement<any>[] | null;
48
- getUpstreamIndicatorIconsAndTooltipsForRef(refMetadata: RefMetadataById | null, ref: GraphRef): ReactElement<any> | null;
49
- getIssueIconsAndTooltipsForRef(refMetadata: RefMetadataById | null, ref: GraphRef, existingIssuesIds: Set<string>): ReactElement<any>[] | null;
51
+ getPullRequestIconsAndTooltipsForRef(refMetadata: RefMetadataById | null | undefined, ref: GraphRef, existingPullRequestIds: Set<number>): ReactElement<any>[] | null;
52
+ getUpstreamIndicatorIconsAndTooltipsForRef(refMetadata: RefMetadataById | null | undefined, ref: GraphRef): ReactElement<any> | null;
53
+ getIssueIconsAndTooltipsForRef(refMetadata: RefMetadataById | null | undefined, ref: GraphRef, existingIssuesIds: Set<string>): ReactElement<any>[] | null;
50
54
  onContextMenu: OnContextMenu;
51
55
  onClick: OnClick;
52
56
  onClickMetadata: OnClickRefMetadata;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ type Props = React.ComponentProps<'div'> & {
3
+ className?: string;
4
+ isRefGhost: boolean;
5
+ isRefHidden: boolean;
6
+ isRefActive: boolean;
7
+ isRefPinned: boolean;
8
+ };
9
+ declare const RefNodeAnnotationTarget: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ export default RefNodeAnnotationTarget;
@@ -22,10 +22,12 @@ type RefNodesProps = {
22
22
  numGraphColumns: number;
23
23
  onClickRef: OnClickRef;
24
24
  onMissingRefMetadata: GetMissingRefMetadata;
25
+ pinnedBranchFullName?: string | null;
25
26
  refGroupContexts: RefGroupContexts | null;
26
27
  refGroupsByName: RefGroup[];
27
28
  refIconsPosition: RefIconsPosition;
28
- refMetadata: RefMetadataById | null;
29
+ refMetadata: RefMetadataById | null | undefined;
30
+ fallbackRefMetadata?: RefMetadataById | null;
29
31
  refNodeHovered: OnRefNodeHovered;
30
32
  onToggleRefNodesShown: OnToggleRefNodesShown;
31
33
  onRefBeginDrag: OnRefBeginDrag;
@@ -42,5 +44,5 @@ type RefNodesProps = {
42
44
  type: CommitType;
43
45
  useColumnHeaderIcons: boolean;
44
46
  };
45
- declare function RefNodes({ enabledRefMetadataTypes, column, columnForColoring, context, enableShowHideRefsOptions, targetRef, hasActive, hasRefs, getExternalIcon, includeOnlyRefsById, includeOnlyRemotesByName, isGhostRef, isHovered, isInUnsupportedRebase, numGraphColumns, onMissingRefMetadata, refGroupContexts, refGroupsByName, refIconsPosition, refMetadata, refNodeHovered, sha, showRemoteNamesOnRefs, showContextMenuForGroupedRef, onClickRef, onDoubleClickRef, onToggleRefNodesShown, onRefBeginDrag, onRefCanDrag, onRefCanDrop, onRefDragEnter, onRefDragLeave, onRefDrop, onRefEndDrag, translate, type, useColumnHeaderIcons, }: RefNodesProps): ReactElement<'span' | 'div'>;
47
+ declare function RefNodes({ enabledRefMetadataTypes, column, columnForColoring, context, enableShowHideRefsOptions, targetRef, hasActive, hasRefs, getExternalIcon, includeOnlyRefsById, includeOnlyRemotesByName, isGhostRef, isHovered, isInUnsupportedRebase, numGraphColumns, onMissingRefMetadata, pinnedBranchFullName, refGroupContexts, refGroupsByName, refIconsPosition, refMetadata, fallbackRefMetadata, refNodeHovered, sha, showRemoteNamesOnRefs, showContextMenuForGroupedRef, onClickRef, onDoubleClickRef, onToggleRefNodesShown, onRefBeginDrag, onRefCanDrag, onRefCanDrop, onRefDragEnter, onRefDragLeave, onRefDrop, onRefEndDrag, translate, type, useColumnHeaderIcons, }: RefNodesProps): ReactElement<'span' | 'div'>;
46
48
  export default RefNodes;
@@ -2,7 +2,7 @@ import type { ReactElement } from 'react';
2
2
  import React from 'react';
3
3
  import type { CommitType, Sha } from '../../../domain/commit/CommitTypes';
4
4
  import type { Style } from '../../../domain/generic/GenericTypes';
5
- import type { GetExternalIcon, GetMissingRefMetadata, GraphItemContext, GraphRefGroup, IncludeOnlyRefsById, IncludeOnlyRemotesByName, OnClickRef, OnDoubleClickRef, OnRefBeginDrag, OnRefCanDrag, OnRefCanDrop, OnRefDragEnter, OnRefDragLeave, OnRefDrop, OnRefEndDrag, OnRefNodeHovered, OnRefNodeUnhovered, OnRefZoneContextMenu, OnRefZoneHovered, OnRefZoneUnhovered, OnToggleRefNodesShown, RefGroupContexts, RefMetadataById, RefMetadataType } from '../../../domain/graph/GraphTypes';
5
+ import type { GetExternalIcon, GetMissingRefMetadata, GraphItemContext, GraphRefGroup, IncludeOnlyRefsById, IncludeOnlyRemotesByName, OnClearCurrentlyHoveredGraphCommit, OnClickRef, OnDoubleClickRef, OnRefBeginDrag, OnRefCanDrag, OnRefCanDrop, OnRefDragEnter, OnRefDragLeave, OnRefDrop, OnRefEndDrag, OnRefNodeHovered, OnRefNodeUnhovered, OnRefZoneContextMenu, OnRefZoneHovered, OnRefZoneUnhovered, OnToggleRefNodesShown, RefGroupContexts, RefMetadataById, RefMetadataType, ScopeBoundaryKind } from '../../../domain/graph/GraphTypes';
6
6
  import type { TranslationFn } from '../../../domain/language/LanguageTypes';
7
7
  import type { RefIconsPosition } from '../../../domain/ref/RefTypes';
8
8
  type RefZoneDefaultProps = {
@@ -12,6 +12,7 @@ type RefZoneProps = {
12
12
  column: number;
13
13
  columnForColoring?: number;
14
14
  context: GraphItemContext | null;
15
+ scopeBoundaryKind?: ScopeBoundaryKind;
15
16
  enableShowHideRefsOptions: boolean;
16
17
  showGhostRefsOnRowHover: boolean;
17
18
  getExternalIcon: GetExternalIcon;
@@ -36,10 +37,12 @@ type RefZoneProps = {
36
37
  onRefDragLeave: OnRefDragLeave;
37
38
  onRefDrop: OnRefDrop;
38
39
  onRefEndDrag: OnRefEndDrag;
40
+ pinnedBranchFullName?: string | null;
39
41
  refGroupContexts: RefGroupContexts | null;
40
42
  refGroupsByName: GraphRefGroup[];
41
43
  refIconsPosition: RefIconsPosition;
42
- refMetadata: RefMetadataById | null;
44
+ refMetadata: RefMetadataById | null | undefined;
45
+ fallbackRefMetadata?: RefMetadataById | null;
43
46
  refNodeHovered: OnRefNodeHovered;
44
47
  refNodeUnhovered: OnRefNodeUnhovered;
45
48
  refZoneHovered: OnRefZoneHovered;
@@ -55,9 +58,11 @@ type RefZoneProps = {
55
58
  type: CommitType;
56
59
  useColumnHeaderIcons: boolean;
57
60
  width: number;
61
+ clearCurrentlyHoveredGraphCommit: OnClearCurrentlyHoveredGraphCommit;
62
+ currentlyHoveredCommitSha: Sha | null;
58
63
  };
59
64
  export default class RefZone extends React.PureComponent<RefZoneProps> {
60
- popoverTargetRef: React.RefObject<HTMLDivElement>;
65
+ popoverTargetRef: React.RefObject<HTMLDivElement | null>;
61
66
  static defaultProps: RefZoneDefaultProps;
62
67
  componentDidUpdate(nextProps: RefZoneProps): void;
63
68
  onCustomToggleRefNodesShown: OnToggleRefNodesShown;
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import type { Sha } from '../../../domain/commit/CommitTypes';
3
+ import type { ProcessedGraphRow } from '../../../domain/graph/GraphTypes';
4
+ import type { RowAdornmentProvider } from '../../../domain/graph/rowAdornment/RowAdornmentTypes';
5
+ interface RowAdornmentLayerProps {
6
+ /** The row adornment provider */
7
+ provider: RowAdornmentProvider;
8
+ /** Lazily get currently visible rows - only called when needed */
9
+ getVisibleRows: () => ProcessedGraphRow[];
10
+ /** All processed rows for index lookups */
11
+ allRows: ProcessedGraphRow[];
12
+ /** Set of selected SHAs */
13
+ selectedShas: Set<Sha>;
14
+ /** Currently hovered commit SHA */
15
+ hoveredSha?: Sha;
16
+ /** Currently focused commit SHA */
17
+ focusedSha?: Sha;
18
+ /** Whether vertical scrollbar is visible (to offset adornments) */
19
+ hasVerticalScrollbar?: boolean;
20
+ }
21
+ interface RowAdornmentLayerState {
22
+ /** Trigger re-render when cache changes */
23
+ cacheVersion: number;
24
+ }
25
+ /**
26
+ * Manages row adornment state and rendering.
27
+ * Encapsulates all adornment caching, provide/resolve flows, and overlay rendering.
28
+ */
29
+ declare class RowAdornmentLayer extends React.Component<RowAdornmentLayerProps, RowAdornmentLayerState> {
30
+ /** Cached adornment info per SHA */
31
+ private adornments;
32
+ /** Tracks pending async resolve calls to cancel stale ones */
33
+ private pendingResolves;
34
+ /** Abort controller for canceling in-flight provide calls */
35
+ private provideAbortController?;
36
+ /** Counter for generating unique resolve IDs */
37
+ private resolveIdCounter;
38
+ state: RowAdornmentLayerState;
39
+ componentDidMount(): void;
40
+ componentDidUpdate(prevProps: RowAdornmentLayerProps): void;
41
+ componentWillUnmount(): void;
42
+ private setupProvider;
43
+ private teardownProvider;
44
+ private onInvalidate;
45
+ private provideForVisibleRows;
46
+ private applyProvideResults;
47
+ private evictDistantAdornments;
48
+ private shouldShowAdornment;
49
+ private getOrResolveContent;
50
+ render(): React.ReactNode;
51
+ }
52
+ export default RowAdornmentLayer;
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ import * as React from 'react';
3
+ import type { Sha } from '../../../domain/commit/CommitTypes';
4
+ interface RowAdornmentOverlayProps {
5
+ /** The SHA of the row this adornment is for */
6
+ sha: Sha;
7
+ /** The content to render */
8
+ content: ReactNode;
9
+ /** Whether the row is hovered */
10
+ isHovered?: boolean;
11
+ /** Whether the row is selected */
12
+ isSelected?: boolean;
13
+ }
14
+ /**
15
+ * Renders a row adornment overlay positioned at the right edge of a row.
16
+ * Uses CSS anchor positioning to attach to the row element.
17
+ */
18
+ declare function RowAdornmentOverlay({ sha, content, isHovered, isSelected, }: RowAdornmentOverlayProps): React.ReactElement | null;
19
+ export default RowAdornmentOverlay;
@@ -2,12 +2,13 @@ import type { GridCellRenderer } from 'react-virtualized';
2
2
  import type { GraphCommitDescDisplayMode } from '../../../domain/graph/GraphConstants';
3
3
  import type { CommonGraphRowDispatchProps, CommonGraphRowProps, OnCommitMessageChange, OnWipMessageBlur, OnWipMessageFocus } from '../../../domain/graph/GraphTypes';
4
4
  import type { GetRealKeyForCellFunc } from '../../../domain/reactvirtualized/ReactVirtualizedHelpers';
5
- import type { WorkDirStats } from '../../../domain/workdir/WorkDirTypes';
5
+ import type { WipNodeMetadataBySha, WorkDirStats } from '../../../domain/workdir/WorkDirTypes';
6
6
  interface StateProps {
7
7
  graphCommitDescDisplayMode: GraphCommitDescDisplayMode;
8
8
  isCommitting: boolean;
9
9
  pendingCommitMessageSummary: string;
10
10
  workDirStats?: WorkDirStats;
11
+ wipNodeMetadataBySha?: WipNodeMetadataBySha;
11
12
  wipMessageEditable: boolean;
12
13
  }
13
14
  interface DispatchProps {
@@ -1,9 +1,11 @@
1
1
  import type { GridCellRenderer } from 'react-virtualized';
2
2
  import type { AvatarUrlByEmail, ColumnColorByColumn, CommonGraphRowDispatchProps, CommonGraphRowProps, GetMissingAvatar, GraphZoneModeConstants, NodeOffsetByColumn, NodeOpacityByColumn } from '../../../domain/graph/GraphTypes';
3
3
  import type { GetRealKeyForCellFunc } from '../../../domain/reactvirtualized/ReactVirtualizedHelpers';
4
+ import type { WipNodeMetadataBySha } from '../../../domain/workdir/WorkDirTypes';
4
5
  interface OwnProps {
5
6
  avatarUrlByEmail: AvatarUrlByEmail;
6
7
  graphZoneModeConstants: GraphZoneModeConstants;
8
+ wipNodeMetadataBySha?: WipNodeMetadataBySha;
7
9
  height: number;
8
10
  onMissingAvatar: GetMissingAvatar;
9
11
  columnColorByColumn: ColumnColorByColumn;
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { Style } from '../../../domain/generic/GenericTypes';
4
4
  import type { GraphZoneType } from '../../../domain/graph/GraphConstants';
5
5
  import type { GetExternalIcon } from '../../../domain/graph/GraphTypes';
@@ -15,8 +15,10 @@ interface StateProps {
15
15
  isInUnsupportedRebase: boolean;
16
16
  isRefShorthandValid: IsRefShorthandValid;
17
17
  hoveredRefZoneSha?: Sha;
18
+ pinnedBranchFullName?: string | null;
18
19
  refIconsPosition: RefIconsPosition;
19
20
  refMetadataById?: RefMetadataById | null;
21
+ fallbackRefMetadataById?: RefMetadataById | null;
20
22
  shouldShowRefLine: boolean;
21
23
  }
22
24
  interface DispatchProps {
@@ -1,5 +1,5 @@
1
1
  import type { CSSProperties, ReactElement, ReactNode } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { GraphItemContext } from '../../../domain/graph/GraphTypes';
4
4
  type DataURLBase64 = string;
5
5
  type Props = {
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import type { Style } from '../../../domain/generic/GenericTypes';
4
4
  import type { GetExternalIcon } from '../../../domain/graph/GraphTypes';
5
5
  import type { TranslationFn } from '../../../domain/language/LanguageTypes';
@@ -8,6 +8,7 @@ type Props = {
8
8
  fileDiffType: string;
9
9
  getExternalIcon: GetExternalIcon;
10
10
  translate: TranslationFn;
11
+ noMargin?: boolean;
11
12
  };
12
13
  declare class FileDiffTypeIcon extends React.Component<Props> {
13
14
  render(): ReactElement<'span'> | null;
@@ -0,0 +1,11 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { GetExternalIcon } from '../../../domain/graph/GraphTypes';
3
+ import type { TranslationFn } from '../../../domain/language/LanguageTypes';
4
+ import type { WorkDirStats } from '../../../domain/workdir/WorkDirTypes';
5
+ type Props = {
6
+ workDirStats: WorkDirStats;
7
+ getExternalIcon: GetExternalIcon;
8
+ translate: TranslationFn;
9
+ };
10
+ declare function WipStatsPill({ workDirStats, getExternalIcon, translate }: Props): ReactElement<'span'> | null;
11
+ export default WipStatsPill;
@@ -1,10 +1,9 @@
1
- /// <reference types="node" />
2
1
  import type { HandleStyles, ResizeCallback, ResizeStartCallback } from 're-resizable';
3
2
  import type { ReactElement, ReactNode } from 'react';
4
- import React from 'react';
3
+ import * as React from 'react';
5
4
  import type { Style } from '../../domain/generic/GenericTypes';
6
5
  import type { TranslationFn } from '../../domain/language/LanguageTypes';
7
- import type { OnResize, OnResizeEnd, OnResizeFromPropChange, OnResizeStart, OnWheel } from '../../domain/ui/UiTypes';
6
+ import type { OnResize, OnResizeEnd, OnResizeFromPropChange, OnResizeStart } from '../../domain/ui/UiTypes';
8
7
  declare const resizableEdges: {
9
8
  bottom: string;
10
9
  left: string;
@@ -61,19 +60,15 @@ interface State extends Dimensions {
61
60
  initialWidth: number;
62
61
  resizing: boolean;
63
62
  vertical: boolean;
64
- isMouseWheeling: boolean;
65
63
  }
66
64
  export default class Resizable extends React.PureComponent<Props, State> {
67
65
  static defaultProps: DefaultProps;
68
- onWheelTimeOut?: NodeJS.Timeout;
69
- isMouseWheeling: boolean;
70
66
  constructor(props: Props);
71
67
  static getDerivedStateFromProps(props: Props, state: State): State;
72
68
  componentDidUpdate(nextProps: Props): void;
73
69
  _onResize: ResizeCallback;
74
70
  _onResizeStart: ResizeStartCallback;
75
71
  _onResizeEnd: ResizeCallback;
76
- _onWheel: OnWheel;
77
72
  render(): ReactElement<'div'>;
78
73
  }
79
74
  export {};
@@ -1,5 +1,5 @@
1
- import type { Author, CommitType, Sha, ShortSha } from './CommitTypes';
2
- export declare const hasPendingChanges: (type: CommitType) => boolean;
1
+ import type { Author, EdgeCommitType, Sha, ShortSha } from './CommitTypes';
2
+ export declare const hasPendingChanges: (type: EdgeCommitType) => boolean;
3
3
  export declare const getShortSha: (sha?: Sha | null, shaLength?: number) => ShortSha;
4
4
  export declare function getCommitMessageDescription(commitMessage: string, lineEnding?: string): string;
5
5
  export declare function getCommitMessageCoauthors(commitMessageDescription: string): Author[];
@@ -3,6 +3,7 @@ export type Sha = string;
3
3
  export type ShortSha = string;
4
4
  export type WorkDirType = typeof mergeConflictNodeType | typeof unsupportedRebaseWarningNodeType | typeof workDirType;
5
5
  export type CommitType = typeof commitNodeType | typeof mergeNodeType | typeof stashNodeType | WorkDirType;
6
+ export type EdgeCommitType = CommitType | 'synthetic-edge';
6
7
  export type Author = {
7
8
  name: string;
8
9
  email: string;
@@ -1,10 +1,10 @@
1
- import type { CommitType } from '../commit/CommitTypes';
1
+ import type { EdgeCommitType } from '../commit/CommitTypes';
2
2
  import type { ColumnColor, LineSvgProps, RowEdges, SvgElement, SvgElementName, SvgProps, SvgStyles } from '../graph/GraphTypes';
3
3
  export declare function getXValueAtColumn(column: number, columnWidth: number, gutterWidth: number, isCompact?: boolean): number;
4
4
  export declare function clearXValueAtColumnCache(): void;
5
5
  export declare function getSvgElement(element: SvgElementName, props: SvgProps): SvgElement;
6
6
  export declare function getLineElement(props: LineSvgProps): SvgElement;
7
- export declare function getSvgStyles(type: CommitType, color: ColumnColor, strokeWidth: number, isCompact?: boolean): SvgStyles;
8
- export declare function buildStartingOrEndingEdgeHash(edgeColumn: number, nodeColumn: number, type: CommitType | undefined, isCompact?: boolean): string;
9
- export declare function buildPassThroughEdgeHash(column: number, type: CommitType | undefined, isCompact?: boolean): string;
7
+ export declare function getSvgStyles(type: EdgeCommitType, color: ColumnColor, strokeWidth: number, isCompact?: boolean): SvgStyles;
8
+ export declare function buildStartingOrEndingEdgeHash(edgeColumn: number, nodeColumn: number, type: EdgeCommitType | undefined, isCompact?: boolean): string;
9
+ export declare function buildPassThroughEdgeHash(column: number, type: EdgeCommitType | undefined, isCompact?: boolean): string;
10
10
  export declare function buildEdgeHash(edges: RowEdges, edgeColumnMax: number, nodeColumn: number, isCompact?: boolean): string;
@@ -15,9 +15,15 @@ export type GitRemoteUrl = GitHttpsUrl | GitSshUrl;
15
15
  export type Platform = 'darwin' | 'linux' | 'win32';
16
16
  export declare enum NamedKeys {
17
17
  arrowDownKey = "ArrowDown",
18
+ arrowLeftKey = "ArrowLeft",
19
+ arrowRightKey = "ArrowRight",
18
20
  arrowUpKey = "ArrowUp",
19
21
  controlKey = "Control",
22
+ endKey = "End",
23
+ homeKey = "Home",
20
24
  metaKey = "Meta",
25
+ pageDownKey = "PageDown",
26
+ pageUpKey = "PageUp",
21
27
  shiftKey = "Shift"
22
28
  }
23
29
  export type MapWithCacheQueue<T, U> = {
@@ -31,6 +31,8 @@ export declare const REF_ZONE_MARGIN_LEFT = 2;
31
31
  export declare const REF_ZONE_MARGIN_RIGHT = 6;
32
32
  export declare const REF_NODE_ICON_WIDTH = 14;
33
33
  export declare const REF_NODE_ICON_MARGIN = 5;
34
+ export declare const REF_NODE_ACTIVE_ANNOTATION_ID = "gk-graph-ref-active";
35
+ export declare const REF_NODE_PINNED_ANNOTATION_ID = "gk-graph-ref-pinned";
34
36
  export declare const REF_NODE_ICON_SPACING: number;
35
37
  export declare const REF_NODE_OUTER_SPACING = 10;
36
38
  export declare const REF_ZONE_SHOW_ICON_WIDTH = 55;
@@ -70,12 +72,26 @@ export declare const commitAuthorZone: CommitAuthorZoneType;
70
72
  export declare const commitDateTimeZone: CommitDateTimeZoneType;
71
73
  export declare const commitShaZone: CommitShaZoneType;
72
74
  export declare const changesZone: ChangesZoneType;
75
+ /**
76
+ * A sentinel key used as a key in objects to indicate "empty set" state
77
+ * This distinguishes between:
78
+ * - `{}` (empty object) - no filtering applied or null/undefined
79
+ * - `{ [emptySetMarker]: true }` - filtering applied but yielded no results
80
+ *
81
+ * Example usage:
82
+ * ```typescript
83
+ * const highlightedShas = searchResults.count === 0
84
+ * ? { [emptySetMarker]: true } // No results found
85
+ * : searchResults.ids; // Results found
86
+ * ```
87
+ */
88
+ export declare const emptySetMarker = "gk.empty-set-marker";
73
89
  export declare enum GraphColumnMode {
74
90
  Compact = "compact",
75
91
  Rich = "rich",
76
92
  Text = "text"
77
93
  }
78
- export type GraphMarkerType = 'head' | 'highlights' | 'localBranches' | 'pullRequests' | 'remoteBranches' | 'selection' | 'stashes' | 'tags' | 'upstream';
94
+ export type GraphMarkerType = 'head' | 'highlights' | 'localBranches' | 'pullRequests' | 'remoteBranches' | 'selection' | 'stashes' | 'tags' | 'upstream' | 'wip';
79
95
  export declare enum GraphMarkerShape {
80
96
  Block = "block",
81
97
  FullLine = "fullLine",
@@ -154,5 +170,5 @@ export declare enum graphCommitDescDisplayModes {
154
170
  NEVER = "NEVER"
155
171
  }
156
172
  export type GraphCommitDescDisplayMode = graphCommitDescDisplayModes.ALWAYS | graphCommitDescDisplayModes.ON_HOVER | graphCommitDescDisplayModes.NEVER;
157
- export type ShiftSelectMode = 'simple';
173
+ export type ShiftSelectMode = 'simple' | 'topological';
158
174
  export type GraphSearchMode = 'normal' | 'filter';
@@ -0,0 +1,34 @@
1
+ import type { Sha } from '../commit/CommitTypes';
2
+ import type { EdgeByColumn, ProcessedGraphRow, RowEdges } from './GraphTypes';
3
+ /**
4
+ * Derives the ending/passThrough edges that the current row inherits from the previous row's
5
+ * edge state. For each column the previous row occupied, the inherited edge is either:
6
+ * - an ending, if its parentSha matches the current row's sha
7
+ * - a passThrough, otherwise
8
+ *
9
+ * Between a concurrent passThrough and starting in the same column (which can happen when a
10
+ * chain above passes through a row that also starts a new edge in the same lane), we prefer
11
+ * the non-pending (real commit/merge) edge so that a WIP/synthetic edge doesn't shadow a
12
+ * real commit chain mid-flight. The bare fallback still carries pending edges forward when
13
+ * that's the only thing available.
14
+ */
15
+ export declare function getEndingAndPassThroughEdgesByColumnFromPrevRow(currentSha: Sha, prevRowEdges: RowEdges): RowEdges;
16
+ /**
17
+ * Builds the set of starting edges for a row — one per parent it points to. Edges for rows
18
+ * in `syntheticEdgeChildShas` are tagged `synthetic-edge` so the renderer draws them wavy.
19
+ *
20
+ * `columnBySha` maps already-processed shas to their assigned column. This is used for the
21
+ * non-first parents of a row (which reserve lanes beside the row's own column). The first
22
+ * parent lives on the current row's own column.
23
+ */
24
+ export declare function getStartingEdgesByColumn(currentRow: ProcessedGraphRow, columnBySha: (sha: Sha) => number | undefined, syntheticEdgeChildShas: Set<Sha>): EdgeByColumn;
25
+ /**
26
+ * Composes the full edge state for a row: inherited ending/passThrough edges from the prev
27
+ * row merged with this row's own starting edges.
28
+ */
29
+ export declare function getFinalEdgeStateForGraphAndRow(currentRow: ProcessedGraphRow, prevRowEdges: RowEdges, columnBySha: (sha: Sha) => number | undefined, syntheticEdgeChildShas: Set<Sha>): RowEdges;
30
+ /**
31
+ * Returns the highest column index present in an edges map. Edges render from column 0 up
32
+ * to (inclusive) this value, so the caller uses it as a loop bound when emitting SVG.
33
+ */
34
+ export declare function getEdgeColumnMax(edges: RowEdges | undefined | null): number;