@assistant-ui/react-ink 0.0.6 → 0.0.8

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 (66) hide show
  1. package/README.md +1 -0
  2. package/dist/index.d.ts +3 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/primitives/composer/ComposerSend.js +1 -1
  7. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  8. package/dist/primitives/diff/DiffContent.d.ts +22 -0
  9. package/dist/primitives/diff/DiffContent.d.ts.map +1 -0
  10. package/dist/primitives/diff/DiffContent.js +40 -0
  11. package/dist/primitives/diff/DiffContent.js.map +1 -0
  12. package/dist/primitives/diff/DiffContext.d.ts +8 -0
  13. package/dist/primitives/diff/DiffContext.d.ts.map +1 -0
  14. package/dist/primitives/diff/DiffContext.js +11 -0
  15. package/dist/primitives/diff/DiffContext.js.map +1 -0
  16. package/dist/primitives/diff/DiffHeader.d.ts +10 -0
  17. package/dist/primitives/diff/DiffHeader.d.ts.map +1 -0
  18. package/dist/primitives/diff/DiffHeader.js +18 -0
  19. package/dist/primitives/diff/DiffHeader.js.map +1 -0
  20. package/dist/primitives/diff/DiffLine.d.ts +13 -0
  21. package/dist/primitives/diff/DiffLine.d.ts.map +1 -0
  22. package/dist/primitives/diff/DiffLine.js +20 -0
  23. package/dist/primitives/diff/DiffLine.js.map +1 -0
  24. package/dist/primitives/diff/DiffRoot.d.ts +12 -0
  25. package/dist/primitives/diff/DiffRoot.d.ts.map +1 -0
  26. package/dist/primitives/diff/DiffRoot.js +8 -0
  27. package/dist/primitives/diff/DiffRoot.js.map +1 -0
  28. package/dist/primitives/diff/DiffStats.d.ts +10 -0
  29. package/dist/primitives/diff/DiffStats.d.ts.map +1 -0
  30. package/dist/primitives/diff/DiffStats.js +12 -0
  31. package/dist/primitives/diff/DiffStats.js.map +1 -0
  32. package/dist/primitives/diff/DiffView.d.ts +13 -0
  33. package/dist/primitives/diff/DiffView.d.ts.map +1 -0
  34. package/dist/primitives/diff/DiffView.js +76 -0
  35. package/dist/primitives/diff/DiffView.js.map +1 -0
  36. package/dist/primitives/diff/diff-utils.d.ts +9 -0
  37. package/dist/primitives/diff/diff-utils.d.ts.map +1 -0
  38. package/dist/primitives/diff/diff-utils.js +125 -0
  39. package/dist/primitives/diff/diff-utils.js.map +1 -0
  40. package/dist/primitives/diff/index.d.ts +7 -0
  41. package/dist/primitives/diff/index.d.ts.map +1 -0
  42. package/dist/primitives/diff/index.js +6 -0
  43. package/dist/primitives/diff/index.js.map +1 -0
  44. package/dist/primitives/diff/types.d.ts +24 -0
  45. package/dist/primitives/diff/types.d.ts.map +1 -0
  46. package/dist/primitives/diff/types.js +2 -0
  47. package/dist/primitives/diff/types.js.map +1 -0
  48. package/dist/primitives/diff.d.ts +2 -0
  49. package/dist/primitives/diff.d.ts.map +1 -0
  50. package/dist/primitives/diff.js +2 -0
  51. package/dist/primitives/diff.js.map +1 -0
  52. package/package.json +10 -8
  53. package/src/index.ts +9 -0
  54. package/src/primitives/composer/ComposerSend.tsx +1 -1
  55. package/src/primitives/diff/DiffContent.tsx +77 -0
  56. package/src/primitives/diff/DiffContext.tsx +18 -0
  57. package/src/primitives/diff/DiffHeader.tsx +38 -0
  58. package/src/primitives/diff/DiffLine.tsx +42 -0
  59. package/src/primitives/diff/DiffRoot.tsx +25 -0
  60. package/src/primitives/diff/DiffStats.tsx +22 -0
  61. package/src/primitives/diff/DiffView.test.tsx +340 -0
  62. package/src/primitives/diff/DiffView.tsx +204 -0
  63. package/src/primitives/diff/diff-utils.ts +149 -0
  64. package/src/primitives/diff/index.ts +25 -0
  65. package/src/primitives/diff/types.ts +28 -0
  66. package/src/primitives/diff.ts +1 -0
package/README.md CHANGED
@@ -63,6 +63,7 @@ render(<App />);
63
63
  - Composable, unstyled primitives (Thread, Composer, Message, ActionBar, etc.)
64
64
  - Streaming responses with real-time updates
65
65
  - Tool call support with built-in ToolFallback component
66
+ - Diff rendering with DiffPrimitive components and DiffView for unified diffs and file comparisons in the terminal
66
67
  - Message branching and editing
67
68
  - Multi-thread support with thread list management
68
69
  - Markdown rendering via `@assistant-ui/react-ink-markdown`
package/dist/index.d.ts CHANGED
@@ -20,8 +20,10 @@ export * as ChainOfThoughtPrimitive from "./primitives/chainOfThought.js";
20
20
  export * as SuggestionPrimitive from "./primitives/suggestion.js";
21
21
  export * as ToolCallPrimitive from "./primitives/toolCall.js";
22
22
  export * as ErrorPrimitive from "./primitives/error/index.js";
23
+ export * as DiffPrimitive from "./primitives/diff.js";
24
+ export { DiffView, type DiffViewProps } from "./primitives/diff/DiffView.js";
23
25
  export { ThreadListItemByIndexProvider, ChainOfThoughtByIndicesProvider, MessageByIndexProvider, PartByIndexProvider, TextMessagePartProvider, ChainOfThoughtPartByIndexProvider, SuggestionByIndexProvider, } from "@assistant-ui/core/react";
24
- export { makeAssistantTool, type AssistantTool, makeAssistantToolUI, type AssistantToolUI, makeAssistantDataUI, type AssistantDataUI, useAssistantTool, type AssistantToolProps, useAssistantToolUI, type AssistantToolUIProps, useAssistantDataUI, type AssistantDataUIProps, useAssistantInstructions, useInlineRender, type Toolkit, type ToolDefinition, Tools, DataRenderers, } from "@assistant-ui/core/react";
26
+ export { makeAssistantTool, type AssistantTool, makeAssistantToolUI, type AssistantToolUI, makeAssistantDataUI, type AssistantDataUI, useAssistantTool, type AssistantToolProps, useAssistantToolUI, type AssistantToolUIProps, useAssistantDataUI, type AssistantDataUIProps, useAssistantInstructions, useInlineRender, type Toolkit, type ToolDefinition, Tools, DataRenderers, Interactables, useInteractable, type UseInteractableConfig, type UseInteractableMetadata, makeInteractable, type InteractableConfig, type AssistantInteractable, } from "@assistant-ui/core/react";
25
27
  export type { ModelContext, ModelContextProvider, LanguageModelConfig, LanguageModelV1CallSettings, } from "@assistant-ui/core";
26
28
  export { mergeModelContexts } from "@assistant-ui/core";
27
29
  export type { Tool } from "assistant-stream";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,10 +22,12 @@ export * as ChainOfThoughtPrimitive from "./primitives/chainOfThought.js";
22
22
  export * as SuggestionPrimitive from "./primitives/suggestion.js";
23
23
  export * as ToolCallPrimitive from "./primitives/toolCall.js";
24
24
  export * as ErrorPrimitive from "./primitives/error/index.js";
25
+ export * as DiffPrimitive from "./primitives/diff.js";
26
+ export { DiffView } from "./primitives/diff/DiffView.js";
25
27
  // Re-export shared providers from core/react
26
28
  export { ThreadListItemByIndexProvider, ChainOfThoughtByIndicesProvider, MessageByIndexProvider, PartByIndexProvider, TextMessagePartProvider, ChainOfThoughtPartByIndexProvider, SuggestionByIndexProvider, } from "@assistant-ui/core/react";
27
29
  // Model context, tools & clients
28
- export { makeAssistantTool, makeAssistantToolUI, makeAssistantDataUI, useAssistantTool, useAssistantToolUI, useAssistantDataUI, useAssistantInstructions, useInlineRender, Tools, DataRenderers, } from "@assistant-ui/core/react";
30
+ export { makeAssistantTool, makeAssistantToolUI, makeAssistantDataUI, useAssistantTool, useAssistantToolUI, useAssistantDataUI, useAssistantInstructions, useInlineRender, Tools, DataRenderers, Interactables, useInteractable, makeInteractable, } from "@assistant-ui/core/react";
29
31
  export { mergeModelContexts } from "@assistant-ui/core";
30
32
  export { tool } from "@assistant-ui/core";
31
33
  export { Suggestions } from "@assistant-ui/core/store";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AA0DlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qCAAqC;AACrC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAY5B,6BAA6B;AAC7B,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,GAQN,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AAEtE,UAAU;AACV,OAAO,EACL,eAAe,GAEhB,sCAAmC;AACpC,OAAO,EAAE,0BAA0B,EAAE,iDAA8C;AAEnF,aAAa;AACb,OAAO,KAAK,eAAe,+BAA4B;AACvD,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,gBAAgB,gCAA6B;AACzD,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,qBAAqB,qCAAkC;AACnE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,cAAc,oCAA2B;AAErD,6CAA6C;AAC7C,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EAEnB,mBAAmB,EAEnB,gBAAgB,EAEhB,kBAAkB,EAElB,kBAAkB,EAElB,wBAAwB,EACxB,eAAe,EAGf,KAAK,EACL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,iBAAiB;AACjB,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AA0DlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qCAAqC;AACrC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAY5B,6BAA6B;AAC7B,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,GAQN,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AAEtE,UAAU;AACV,OAAO,EACL,eAAe,GAEhB,sCAAmC;AACpC,OAAO,EAAE,0BAA0B,EAAE,iDAA8C;AAEnF,aAAa;AACb,OAAO,KAAK,eAAe,+BAA4B;AACvD,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,gBAAgB,gCAA6B;AACzD,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,qBAAqB,qCAAkC;AACnE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,cAAc,oCAA2B;AACrD,OAAO,KAAK,aAAa,6BAA0B;AACnD,OAAO,EAAE,QAAQ,EAAsB,sCAAmC;AAE1E,6CAA6C;AAC7C,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EAEnB,mBAAmB,EAEnB,gBAAgB,EAEhB,kBAAkB,EAElB,kBAAkB,EAElB,wBAAwB,EACxB,eAAe,EAGf,KAAK,EACL,aAAa,EACb,aAAa,EACb,eAAe,EAGf,gBAAgB,GAGjB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,iBAAiB;AACjB,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -3,6 +3,6 @@ import { useComposerSend } from "@assistant-ui/core/react";
3
3
  import { Pressable } from "../internal/Pressable.js";
4
4
  export const ComposerSend = ({ children, disabled, ...pressableProps }) => {
5
5
  const { send, disabled: hookDisabled } = useComposerSend();
6
- return (_jsx(Pressable, { onPress: send, disabled: disabled ?? hookDisabled, ...pressableProps, children: children }));
6
+ return (_jsx(Pressable, { onPress: () => send(), disabled: disabled ?? hookDisabled, ...pressableProps, children: children }));
7
7
  };
8
8
  //# sourceMappingURL=ComposerSend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerSend.js","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerSend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAuB,iCAA8B;AAMvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,GAAG,cAAc,EACC,EAAE,EAAE;IACtB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IAE3D,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,QAAQ,IAAI,YAAY,KAC9B,cAAc,YAEjB,QAAQ,GACC,CACb,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ComposerSend.js","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerSend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAuB,iCAA8B;AAMvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,GAAG,cAAc,EACC,EAAE,EAAE;IACtB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IAE3D,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EACrB,QAAQ,EAAE,QAAQ,IAAI,YAAY,KAC9B,cAAc,YAEjB,QAAQ,GACC,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type ComponentProps, type ReactNode } from "react";
2
+ import { Box } from "ink";
3
+ import type { ParsedLine, FoldedRegion } from "./types.js";
4
+ export type DiffContentProps = ComponentProps<typeof Box> & {
5
+ fileIndex?: number | undefined;
6
+ showLineNumbers?: boolean | undefined;
7
+ contextLines?: number | undefined;
8
+ maxLines?: number | undefined;
9
+ renderLine?: ((props: {
10
+ line: ParsedLine;
11
+ index: number;
12
+ }) => ReactNode) | undefined;
13
+ renderFold?: ((props: {
14
+ region: FoldedRegion;
15
+ index: number;
16
+ }) => ReactNode) | undefined;
17
+ };
18
+ export declare const DiffContent: {
19
+ ({ fileIndex, showLineNumbers, contextLines, maxLines, renderLine, renderFold, ...boxProps }: DiffContentProps): import("react/jsx-runtime").JSX.Element | null;
20
+ displayName: string;
21
+ };
22
+ //# sourceMappingURL=DiffContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffContent.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,GAAG,EAAQ,MAAM,KAAK,CAAC;AAKhC,OAAO,KAAK,EAAE,UAAU,EAAe,YAAY,EAAE,mBAAgB;AAErE,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IAC1D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EACP,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC,GAC3D,SAAS,CAAC;IACd,UAAU,CAAC,EACP,CAAC,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC,GAC/D,SAAS,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,WAAW;kGAQrB,gBAAgB;;CA6ClB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment } from "react";
3
+ import { Box, Text } from "ink";
4
+ import { useMemo } from "react";
5
+ import { useDiffContext } from "./DiffContext.js";
6
+ import { DiffLine } from "./DiffLine.js";
7
+ import { foldContext } from "./diff-utils.js";
8
+ export const DiffContent = ({ fileIndex = 0, showLineNumbers = true, contextLines, maxLines, renderLine, renderFold, ...boxProps }) => {
9
+ const { files } = useDiffContext();
10
+ const file = files[fileIndex];
11
+ const displayLines = useMemo(() => {
12
+ if (!file)
13
+ return [];
14
+ if (contextLines !== undefined) {
15
+ return foldContext(file.lines, contextLines);
16
+ }
17
+ return file.lines;
18
+ }, [file, contextLines]);
19
+ if (!file)
20
+ return null;
21
+ const truncated = maxLines !== undefined && displayLines.length > maxLines;
22
+ const visibleLines = truncated
23
+ ? displayLines.slice(0, maxLines)
24
+ : displayLines;
25
+ const remainingCount = truncated ? displayLines.length - maxLines : 0;
26
+ return (_jsxs(Box, { flexDirection: "column", ...boxProps, children: [visibleLines.map((line, i) => {
27
+ if (line.type === "fold") {
28
+ if (renderFold) {
29
+ return (_jsx(Fragment, { children: renderFold({ region: line, index: i }) }, i));
30
+ }
31
+ return (_jsx(Text, { children: ` --- ${line.hiddenCount} lines hidden ---` }, i));
32
+ }
33
+ if (renderLine) {
34
+ return _jsx(Fragment, { children: renderLine({ line, index: i }) }, i);
35
+ }
36
+ return (_jsx(DiffLine, { line: line, showLineNumbers: showLineNumbers }, i));
37
+ }), truncated && _jsx(Text, { children: `... (${remainingCount} more lines)` })] }));
38
+ };
39
+ DiffContent.displayName = "DiffPrimitive.Content";
40
+ //# sourceMappingURL=DiffContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffContent.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAuC,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,yBAAsB;AAC/C,OAAO,EAAE,QAAQ,EAAE,sBAAmB;AACtC,OAAO,EAAE,WAAW,EAAE,wBAAqB;AAgB3C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,SAAS,GAAG,CAAC,EACb,eAAe,GAAG,IAAI,EACtB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,GAAG,QAAQ,EACM,EAAE,EAAE;IACrB,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAkB,OAAO,CAAC,GAAG,EAAE;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC3E,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;QACjC,CAAC,CAAC,YAAY,CAAC;IACjB,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,QAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,KAAK,QAAQ,aACrC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACzB,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,CACL,KAAC,QAAQ,cACN,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAD1B,CAAC,CAEL,CACZ,CAAC;oBACJ,CAAC;oBACD,OAAO,CACL,KAAC,IAAI,cAAU,SAAS,IAAI,CAAC,WAAW,mBAAmB,IAAhD,CAAC,CAAuD,CACpE,CAAC;gBACJ,CAAC;gBACD,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,KAAC,QAAQ,cAAU,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAAlC,CAAC,CAA6C,CAAC;gBACvE,CAAC;gBACD,OAAO,CACL,KAAC,QAAQ,IAAS,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,IAA/C,CAAC,CAAkD,CACnE,CAAC;YACJ,CAAC,CAAC,EACD,SAAS,IAAI,KAAC,IAAI,cAAE,QAAQ,cAAc,cAAc,GAAQ,IAC7D,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ParsedFile } from "./types.js";
2
+ interface DiffContextValue {
3
+ files: ParsedFile[];
4
+ }
5
+ export declare const useDiffContext: () => DiffContextValue;
6
+ export declare const DiffContextProvider: import("react").Provider<DiffContextValue | null>;
7
+ export {};
8
+ //# sourceMappingURL=DiffContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffContext.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAgB;AAE1C,UAAU,gBAAgB;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAID,eAAO,MAAM,cAAc,QAAO,gBAMjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,mDAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { createContext, useContext } from "react";
2
+ const DiffContext = createContext(null);
3
+ export const useDiffContext = () => {
4
+ const ctx = useContext(DiffContext);
5
+ if (!ctx) {
6
+ throw new Error("useDiffContext must be used within a DiffRoot");
7
+ }
8
+ return ctx;
9
+ };
10
+ export const DiffContextProvider = DiffContext.Provider;
11
+ //# sourceMappingURL=DiffContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffContext.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAqB,EAAE;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ComponentProps } from "react";
2
+ import { Box } from "ink";
3
+ export type DiffHeaderProps = ComponentProps<typeof Box> & {
4
+ fileIndex?: number;
5
+ };
6
+ export declare const DiffHeader: {
7
+ ({ fileIndex, ...boxProps }: DiffHeaderProps): import("react/jsx-runtime").JSX.Element | null;
8
+ displayName: string;
9
+ };
10
+ //# sourceMappingURL=DiffHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffHeader.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAQ,MAAM,KAAK,CAAC;AAIhC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,UAAU;iCAAoC,eAAe;;CA0BzE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { useDiffContext } from "./DiffContext.js";
4
+ import { DiffStats } from "./DiffStats.js";
5
+ export const DiffHeader = ({ fileIndex = 0, ...boxProps }) => {
6
+ const { files } = useDiffContext();
7
+ const file = files[fileIndex];
8
+ if (!file)
9
+ return null;
10
+ const isDevNull = (n) => !n || n === "/dev/null";
11
+ const renamed = !isDevNull(file.oldName) &&
12
+ !isDevNull(file.newName) &&
13
+ file.oldName !== file.newName;
14
+ const displayName = isDevNull(file.newName) ? file.oldName : file.newName;
15
+ return (_jsxs(Box, { gap: 1, ...boxProps, children: [renamed ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: file.oldName }), _jsx(Text, { children: "->" }), _jsx(Text, { children: file.newName })] })) : (_jsx(Text, { children: displayName })), _jsx(DiffStats, { fileIndex: fileIndex })] }));
16
+ };
17
+ DiffHeader.displayName = "DiffPrimitive.Header";
18
+ //# sourceMappingURL=DiffHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffHeader.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,yBAAsB;AAC/C,OAAO,EAAE,SAAS,EAAE,uBAAoB;AAMxC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAmB,EAAE,EAAE;IAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,SAAS,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;IACrE,MAAM,OAAO,GACX,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;IAChC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAE1E,OAAO,CACL,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,KAAM,QAAQ,aACtB,OAAO,CAAC,CAAC,CAAC,CACT,8BACE,KAAC,IAAI,cAAE,IAAI,CAAC,OAAO,GAAQ,EAC3B,KAAC,IAAI,cAAE,IAAI,GAAQ,EACnB,KAAC,IAAI,cAAE,IAAI,CAAC,OAAO,GAAQ,IAC1B,CACJ,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,WAAW,GAAQ,CAC3B,EACD,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,IAC/B,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ComponentProps } from "react";
2
+ import { Box } from "ink";
3
+ import type { ParsedLine } from "./types.js";
4
+ export type DiffLineProps = ComponentProps<typeof Box> & {
5
+ line: ParsedLine;
6
+ showLineNumbers?: boolean;
7
+ lineNumberWidth?: number;
8
+ };
9
+ export declare const DiffLine: {
10
+ ({ line, showLineNumbers, lineNumberWidth, ...boxProps }: DiffLineProps): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ //# sourceMappingURL=DiffLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffLine.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAQ,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAgB;AAQ1C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IACvD,IAAI,EAAE,UAAU,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,QAAQ;8DAKlB,aAAa;;CAkBf,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ const INDICATOR = {
4
+ add: "+",
5
+ del: "-",
6
+ normal: " ",
7
+ };
8
+ export const DiffLine = ({ line, showLineNumbers = true, lineNumberWidth = 4, ...boxProps }) => {
9
+ const lineNum = line.type === "del"
10
+ ? line.oldLineNumber
11
+ : line.type === "add"
12
+ ? line.newLineNumber
13
+ : line.oldLineNumber;
14
+ const numStr = lineNum !== undefined ? String(lineNum) : "";
15
+ const padded = numStr.padStart(lineNumberWidth);
16
+ const content = `${INDICATOR[line.type]} ${line.content}`;
17
+ return (_jsxs(Box, { ...boxProps, children: [showLineNumbers && _jsxs(Text, { children: [padded, " "] }), _jsx(Text, { children: content })] }));
18
+ };
19
+ DiffLine.displayName = "DiffPrimitive.Line";
20
+ //# sourceMappingURL=DiffLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffLine.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffLine.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,SAAS,GAAuC;IACpD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,GAAG;CACZ,CAAC;AAQF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,IAAI,EACJ,eAAe,GAAG,IAAI,EACtB,eAAe,GAAG,CAAC,EACnB,GAAG,QAAQ,EACG,EAAE,EAAE;IAClB,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,KAAK;QACjB,CAAC,CAAC,IAAI,CAAC,aAAa;QACpB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YACnB,CAAC,CAAC,IAAI,CAAC,aAAa;YACpB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3B,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAE1D,OAAO,CACL,MAAC,GAAG,OAAK,QAAQ,aACd,eAAe,IAAI,MAAC,IAAI,eAAE,MAAM,SAAS,EAC1C,KAAC,IAAI,cAAE,OAAO,GAAQ,IAClB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ import { Box } from "ink";
3
+ import type { ParsedFile } from "./types.js";
4
+ export type DiffRootProps = ComponentProps<typeof Box> & {
5
+ files?: ParsedFile[] | undefined;
6
+ children: ReactNode;
7
+ };
8
+ export declare const DiffRoot: {
9
+ ({ files, children, ...boxProps }: DiffRootProps): import("react/jsx-runtime").JSX.Element;
10
+ displayName: string;
11
+ };
12
+ //# sourceMappingURL=DiffRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAgB;AAE1C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IACvD,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ;uCAIlB,aAAa;;CAQf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from "ink";
3
+ import { DiffContextProvider } from "./DiffContext.js";
4
+ export const DiffRoot = ({ files = [], children, ...boxProps }) => {
5
+ return (_jsx(DiffContextProvider, { value: { files }, children: _jsx(Box, { flexDirection: "column", ...boxProps, children: children }) }));
6
+ };
7
+ DiffRoot.displayName = "DiffPrimitive.Root";
8
+ //# sourceMappingURL=DiffRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffRoot.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffRoot.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,yBAAsB;AAQpD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,GAAG,QAAQ,EACG,EAAE,EAAE;IAClB,OAAO,CACL,KAAC,mBAAmB,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YACnC,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,KAAK,QAAQ,YACrC,QAAQ,GACL,GACc,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ComponentProps } from "react";
2
+ import { Box } from "ink";
3
+ export type DiffStatsProps = ComponentProps<typeof Box> & {
4
+ fileIndex?: number;
5
+ };
6
+ export declare const DiffStats: {
7
+ ({ fileIndex, ...boxProps }: DiffStatsProps): import("react/jsx-runtime").JSX.Element | null;
8
+ displayName: string;
9
+ };
10
+ //# sourceMappingURL=DiffStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffStats.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffStats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAQ,MAAM,KAAK,CAAC;AAGhC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS;iCAAoC,cAAc;;CAWvE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { useDiffContext } from "./DiffContext.js";
4
+ export const DiffStats = ({ fileIndex = 0, ...boxProps }) => {
5
+ const { files } = useDiffContext();
6
+ const file = files[fileIndex];
7
+ if (!file)
8
+ return null;
9
+ return (_jsxs(Box, { gap: 1, ...boxProps, children: [_jsxs(Text, { children: ["+", file.additions] }), _jsxs(Text, { children: ["-", file.deletions] })] }));
10
+ };
11
+ DiffStats.displayName = "DiffPrimitive.Stats";
12
+ //# sourceMappingURL=DiffStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffStats.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffStats.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,yBAAsB;AAM/C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAkB,EAAE,EAAE;IAC1E,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,CACL,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,KAAM,QAAQ,aACvB,MAAC,IAAI,oBAAG,IAAI,CAAC,SAAS,IAAQ,EAC9B,MAAC,IAAI,oBAAG,IAAI,CAAC,SAAS,IAAQ,IAC1B,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type ComponentProps } from "react";
2
+ import { Box } from "ink";
3
+ import type { DiffFileInput } from "./types.js";
4
+ export type DiffViewProps = Omit<ComponentProps<typeof Box>, "children"> & {
5
+ patch?: string | undefined;
6
+ oldFile?: DiffFileInput | undefined;
7
+ newFile?: DiffFileInput | undefined;
8
+ showLineNumbers?: boolean | undefined;
9
+ contextLines?: number | undefined;
10
+ maxLines?: number | undefined;
11
+ };
12
+ export declare const DiffView: ({ patch, oldFile, newFile, showLineNumbers, contextLines, maxLines, ...boxProps }: DiffViewProps) => import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=DiffView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/DiffView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAQ,MAAM,KAAK,CAAC;AAKhC,OAAO,KAAK,EACV,aAAa,EAId,mBAAgB;AAEjB,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAgJF,eAAO,MAAM,QAAQ,GAAI,mFAQtB,aAAa,4CA+Bf,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Box, Text } from "ink";
4
+ import { DiffContent } from "./DiffContent.js";
5
+ import { useDiffContext } from "./DiffContext.js";
6
+ import { DiffRoot } from "./DiffRoot.js";
7
+ import { computeDiff, parsePatch } from "./diff-utils.js";
8
+ const INDICATOR = {
9
+ add: "+",
10
+ del: "-",
11
+ normal: " ",
12
+ };
13
+ const isDevNull = (n) => !n || n === "/dev/null";
14
+ const StyledLine = ({ line, showLineNumbers, }) => {
15
+ const lineNum = line.type === "del"
16
+ ? line.oldLineNumber
17
+ : line.type === "add"
18
+ ? line.newLineNumber
19
+ : line.oldLineNumber;
20
+ const numStr = lineNum !== undefined ? String(lineNum) : "";
21
+ const padded = numStr.padStart(4);
22
+ const content = `${INDICATOR[line.type]} ${line.content}`;
23
+ return (_jsxs(Box, { children: [showLineNumbers && _jsxs(Text, { dimColor: true, children: [padded, " "] }), line.type === "add" ? (_jsx(Text, { color: "green", children: content })) : line.type === "del" ? (_jsx(Text, { color: "red", children: content })) : (_jsx(Text, { children: content }))] }));
24
+ };
25
+ const StyledFold = ({ region }) => (_jsx(Text, { dimColor: true, children: ` --- ${region.hiddenCount} lines hidden ---` }));
26
+ const DiffViewInner = ({ showLineNumbers, contextLines, maxLines, }) => {
27
+ const { files } = useDiffContext();
28
+ const shouldShowLineNumbers = showLineNumbers ?? true;
29
+ if (files.length === 0) {
30
+ return _jsx(Text, { dimColor: true, children: "No diff content" });
31
+ }
32
+ return (_jsx(_Fragment, { children: files.map((file, i) => {
33
+ const renamed = !isDevNull(file.oldName) &&
34
+ !isDevNull(file.newName) &&
35
+ file.oldName !== file.newName;
36
+ const displayName = isDevNull(file.newName)
37
+ ? file.oldName
38
+ : file.newName;
39
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { gap: 1, children: [renamed ? (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, dimColor: true, children: file.oldName }), _jsx(Text, { dimColor: true, children: "->" }), _jsx(Text, { bold: true, children: file.newName })] })) : (_jsx(Text, { bold: true, children: displayName })), _jsxs(Text, { color: "green", children: ["+", file.additions] }), _jsxs(Text, { color: "red", children: ["-", file.deletions] })] }), _jsx(DiffContent, { fileIndex: i, contextLines: contextLines, maxLines: maxLines, renderLine: ({ line }) => (_jsx(StyledLine, { line: line, showLineNumbers: shouldShowLineNumbers })), renderFold: ({ region }) => _jsx(StyledFold, { region: region }) }), i < files.length - 1 && _jsx(Text, { children: " " })] }, i));
40
+ }) }));
41
+ };
42
+ const getDiffViewFiles = ({ patch, oldFile, newFile, }) => {
43
+ if (patch) {
44
+ return parsePatch(patch);
45
+ }
46
+ if (!oldFile || !newFile) {
47
+ return [];
48
+ }
49
+ const { lines, additions, deletions } = computeDiff(oldFile.content, newFile.content);
50
+ return [
51
+ {
52
+ oldName: oldFile.name,
53
+ newName: newFile.name,
54
+ lines,
55
+ additions,
56
+ deletions,
57
+ },
58
+ ];
59
+ };
60
+ export const DiffView = ({ patch, oldFile, newFile, showLineNumbers, contextLines, maxLines, ...boxProps }) => {
61
+ const oldContent = oldFile?.content;
62
+ const oldName = oldFile?.name;
63
+ const newContent = newFile?.content;
64
+ const newName = newFile?.name;
65
+ const files = useMemo(() => getDiffViewFiles({
66
+ patch,
67
+ oldFile: oldContent !== undefined
68
+ ? { content: oldContent, name: oldName }
69
+ : undefined,
70
+ newFile: newContent !== undefined
71
+ ? { content: newContent, name: newName }
72
+ : undefined,
73
+ }), [patch, oldContent, oldName, newContent, newName]);
74
+ return (_jsx(DiffRoot, { files: files, ...boxProps, children: _jsx(DiffViewInner, { showLineNumbers: showLineNumbers, contextLines: contextLines, maxLines: maxLines }) }));
75
+ };
76
+ //# sourceMappingURL=DiffView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../../src/primitives/diff/DiffView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ParsedLine, ParsedFile, DisplayLine } from "./types.js";
2
+ export declare function parsePatch(patch: string): ParsedFile[];
3
+ export declare function computeDiff(oldContent: string, newContent: string): {
4
+ lines: ParsedLine[];
5
+ additions: number;
6
+ deletions: number;
7
+ };
8
+ export declare function foldContext(lines: ParsedLine[], contextLines: number): DisplayLine[];
9
+ //# sourceMappingURL=diff-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-utils.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/diff-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EAEZ,mBAAgB;AAsBjB,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAgDtD;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA4B/D;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EAAE,EACnB,YAAY,EAAE,MAAM,GACnB,WAAW,EAAE,CAiCf"}
@@ -0,0 +1,125 @@
1
+ import { diffLines } from "diff";
2
+ import parseDiff from "parse-diff";
3
+ const NO_NEWLINE_MARKER = "\";
4
+ const stripTrailingCarriageReturn = (content) => {
5
+ return content.endsWith("\r") ? content.slice(0, -1) : content;
6
+ };
7
+ const parseChangeContent = (content) => {
8
+ const normalized = stripTrailingCarriageReturn(content);
9
+ if (normalized === NO_NEWLINE_MARKER)
10
+ return null;
11
+ return stripTrailingCarriageReturn(normalized.slice(1));
12
+ };
13
+ const splitDiffLines = (value) => {
14
+ const normalized = value.endsWith("\n") ? value.slice(0, -1) : value;
15
+ if (normalized.length === 0) {
16
+ return value.length > 0 ? [""] : [];
17
+ }
18
+ return normalized.split("\n").map(stripTrailingCarriageReturn);
19
+ };
20
+ export function parsePatch(patch) {
21
+ const files = parseDiff(patch);
22
+ return files.map((file) => {
23
+ const lines = [];
24
+ let additions = 0;
25
+ let deletions = 0;
26
+ for (const chunk of file.chunks) {
27
+ let oldLine = chunk.oldStart;
28
+ let newLine = chunk.newStart;
29
+ for (const change of chunk.changes) {
30
+ const content = parseChangeContent(change.content);
31
+ if (content === null)
32
+ continue;
33
+ if (change.type === "add") {
34
+ additions++;
35
+ lines.push({
36
+ type: "add",
37
+ content,
38
+ newLineNumber: newLine++,
39
+ });
40
+ }
41
+ else if (change.type === "del") {
42
+ deletions++;
43
+ lines.push({
44
+ type: "del",
45
+ content,
46
+ oldLineNumber: oldLine++,
47
+ });
48
+ }
49
+ else {
50
+ lines.push({
51
+ type: "normal",
52
+ content,
53
+ oldLineNumber: oldLine++,
54
+ newLineNumber: newLine++,
55
+ });
56
+ }
57
+ }
58
+ }
59
+ return {
60
+ oldName: file.from,
61
+ newName: file.to,
62
+ lines,
63
+ additions,
64
+ deletions,
65
+ };
66
+ });
67
+ }
68
+ export function computeDiff(oldContent, newContent) {
69
+ const changes = diffLines(oldContent, newContent);
70
+ const lines = [];
71
+ let oldLine = 1;
72
+ let newLine = 1;
73
+ let additions = 0;
74
+ let deletions = 0;
75
+ for (const change of changes) {
76
+ for (const content of splitDiffLines(change.value)) {
77
+ if (change.added) {
78
+ additions++;
79
+ lines.push({ type: "add", content, newLineNumber: newLine++ });
80
+ }
81
+ else if (change.removed) {
82
+ deletions++;
83
+ lines.push({ type: "del", content, oldLineNumber: oldLine++ });
84
+ }
85
+ else {
86
+ lines.push({
87
+ type: "normal",
88
+ content,
89
+ oldLineNumber: oldLine++,
90
+ newLineNumber: newLine++,
91
+ });
92
+ }
93
+ }
94
+ }
95
+ return { lines, additions, deletions };
96
+ }
97
+ export function foldContext(lines, contextLines) {
98
+ const ctx = Math.max(0, contextLines);
99
+ const keep = new Set();
100
+ for (let i = 0; i < lines.length; i++) {
101
+ if (lines[i].type !== "normal") {
102
+ for (let j = Math.max(0, i - ctx); j <= Math.min(lines.length - 1, i + ctx); j++) {
103
+ keep.add(j);
104
+ }
105
+ }
106
+ }
107
+ const result = [];
108
+ let i = 0;
109
+ while (i < lines.length) {
110
+ if (keep.has(i)) {
111
+ result.push(lines[i]);
112
+ i++;
113
+ }
114
+ else {
115
+ let hiddenCount = 0;
116
+ while (i < lines.length && !keep.has(i)) {
117
+ hiddenCount++;
118
+ i++;
119
+ }
120
+ result.push({ type: "fold", hiddenCount });
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ //# sourceMappingURL=diff-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-utils.js","sourceRoot":"","sources":["../../../src/primitives/diff/diff-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { DiffRoot as Root, type DiffRootProps as RootProps } from "./DiffRoot.js";
2
+ export { DiffHeader as Header, type DiffHeaderProps as HeaderProps, } from "./DiffHeader.js";
3
+ export { DiffContent as Content, type DiffContentProps as ContentProps, } from "./DiffContent.js";
4
+ export { DiffLine as Line, type DiffLineProps as LineProps, } from "./DiffLine.js";
5
+ export { DiffStats as Stats, type DiffStatsProps as StatsProps, } from "./DiffStats.js";
6
+ export type { ParsedLine, ParsedFile, DiffFileInput, DiffLineType, DisplayLine, FoldedRegion, } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,aAAa,IAAI,SAAS,EAAE,sBAAmB;AAC/E,OAAO,EACL,UAAU,IAAI,MAAM,EACpB,KAAK,eAAe,IAAI,WAAW,GACpC,wBAAqB;AACtB,OAAO,EACL,WAAW,IAAI,OAAO,EACtB,KAAK,gBAAgB,IAAI,YAAY,GACtC,yBAAsB;AACvB,OAAO,EACL,QAAQ,IAAI,IAAI,EAChB,KAAK,aAAa,IAAI,SAAS,GAChC,sBAAmB;AACpB,OAAO,EACL,SAAS,IAAI,KAAK,EAClB,KAAK,cAAc,IAAI,UAAU,GAClC,uBAAoB;AACrB,YAAY,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,GACb,mBAAgB"}