@codingame/monaco-vscode-katex-common 29.1.1 → 30.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +14 -13
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +34 -34
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -20
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +14 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +208 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +22 -0
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +637 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +1 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +9 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +202 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +4 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +17 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +53 -5
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +296 -63
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +59 -23
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -42
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +110 -59
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +5 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +384 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +12 -7
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +220 -61
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +1 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +6 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +14 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +5 -4
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +5 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +14 -14
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +11 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -12
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +97 -54
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +5 -4
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +8 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +15 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +155 -22
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +3 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +36 -19
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +13 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.d.ts +17 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +68 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +16 -16
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +33 -25
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +12 -3
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -13
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +37 -113
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +10 -3
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +66 -39
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +13 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +103 -61
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +2 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +35 -23
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +6 -6
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +1 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +2 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -24
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +6 -5
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +44 -18
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +60 -10
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  114. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  115. package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +4 -0
  116. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  117. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -1
  119. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +5 -2
  120. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +6 -11
  121. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -39
  123. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  124. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  125. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  126. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.d.ts +26 -0
  127. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +746 -0
  128. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.d.ts +13 -0
  129. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +300 -0
  130. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.d.ts +8 -0
  131. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +55 -0
  132. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.d.ts +273 -0
  133. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1963 -0
  134. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.d.ts +50 -0
  135. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +314 -0
  136. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.d.ts +258 -0
  137. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +886 -0
  138. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.d.ts +41 -0
  139. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +118 -0
  140. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.d.ts +17 -0
  141. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.js +71 -0
  142. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.d.ts +27 -0
  143. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +40 -0
  144. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.d.ts +23 -0
  145. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.js +313 -0
  146. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.d.ts +51 -0
  147. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.js +265 -0
  148. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.d.ts +24 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.js +185 -0
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.d.ts +28 -0
  151. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.js +104 -0
  152. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.d.ts +10 -0
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.js +43 -0
  154. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.d.ts +21 -0
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.js +41 -0
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.d.ts +25 -0
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.js +69 -0
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css +469 -0
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.d.ts +149 -0
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +933 -0
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.d.ts +180 -0
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +32 -0
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.d.ts +102 -0
  164. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +643 -0
  165. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.d.ts +30 -0
  166. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +197 -0
  167. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.d.ts +75 -0
  168. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.js +539 -0
  169. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.d.ts +13 -0
  170. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.js +39 -0
  171. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.d.ts +19 -0
  172. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.js +90 -0
  173. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.d.ts +26 -0
  174. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.js +92 -0
  175. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  176. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -152
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -1317
  179. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +0 -47
  180. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +0 -95
@@ -0,0 +1,886 @@
1
+
2
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
3
+ import { hash } from '@codingame/monaco-vscode-api/vscode/vs/base/common/hash';
4
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { DiffEditorWidget } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/widget/diffEditor/diffEditorWidget';
6
+ import { getEditorPadding } from './diffCellEditorOptions.js';
7
+ import { DiffNestedCellViewModel } from './diffNestedCellViewModel.js';
8
+ import { NotebookDiffViewEventType } from './eventDispatcher.js';
9
+ import { DIFF_CELL_MARGIN, DiffSide } from './notebookDiffEditorBrowser.js';
10
+ import { CellLayoutState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser';
11
+ import { getFormattedMetadataJSON } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
12
+ import { CellUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
13
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
14
+ import { NotebookDocumentMetadataTextModel } from '../../common/model/notebookMetadataTextModel.js';
15
+
16
+ const PropertyHeaderHeight = 25;
17
+ const HeightOfHiddenLinesRegionInDiffEditor = 24;
18
+ const DefaultLineHeight = 17;
19
+ var PropertyFoldingState;
20
+ (function(PropertyFoldingState) {
21
+ PropertyFoldingState[PropertyFoldingState["Expanded"] = 0] = "Expanded";
22
+ PropertyFoldingState[PropertyFoldingState["Collapsed"] = 1] = "Collapsed";
23
+ })(PropertyFoldingState || (PropertyFoldingState = {}));
24
+ const OUTPUT_EDITOR_HEIGHT_MAGIC = 1440;
25
+ class DiffElementViewModelBase extends Disposable {
26
+ constructor(mainDocumentTextModel, editorEventDispatcher, initData) {
27
+ super();
28
+ this.mainDocumentTextModel = mainDocumentTextModel;
29
+ this.editorEventDispatcher = editorEventDispatcher;
30
+ this.initData = initData;
31
+ this._layoutInfoEmitter = this._register(( new Emitter()));
32
+ this.onDidLayoutChange = this._layoutInfoEmitter.event;
33
+ this._register(
34
+ this.editorEventDispatcher.onDidChangeLayout(e => this._layoutInfoEmitter.fire({
35
+ outerWidth: true
36
+ }))
37
+ );
38
+ }
39
+ }
40
+ class DiffElementPlaceholderViewModel extends DiffElementViewModelBase {
41
+ constructor(mainDocumentTextModel, editorEventDispatcher, initData) {
42
+ super(mainDocumentTextModel, editorEventDispatcher, initData);
43
+ this.type = "placeholder";
44
+ this.hiddenCells = [];
45
+ this._unfoldHiddenCells = this._register(( new Emitter()));
46
+ this.onUnfoldHiddenCells = this._unfoldHiddenCells.event;
47
+ this.renderOutput = false;
48
+ }
49
+ get totalHeight() {
50
+ return 24 + (2 * DIFF_CELL_MARGIN);
51
+ }
52
+ getHeight(_) {
53
+ return this.totalHeight;
54
+ }
55
+ layoutChange() {}
56
+ showHiddenCells() {
57
+ this._unfoldHiddenCells.fire();
58
+ }
59
+ }
60
+ class NotebookDocumentMetadataViewModel extends DiffElementViewModelBase {
61
+ set editorHeight(height) {
62
+ this._layout({
63
+ editorHeight: height
64
+ });
65
+ }
66
+ get editorHeight() {
67
+ throw ( new Error("Use Cell.layoutInfo.editorHeight"));
68
+ }
69
+ set editorMargin(margin) {
70
+ this._layout({
71
+ editorMargin: margin
72
+ });
73
+ }
74
+ get editorMargin() {
75
+ throw ( new Error("Use Cell.layoutInfo.editorMargin"));
76
+ }
77
+ get layoutInfo() {
78
+ return this._layoutInfo;
79
+ }
80
+ get totalHeight() {
81
+ return this.layoutInfo.totalHeight;
82
+ }
83
+ constructor(
84
+ originalDocumentTextModel,
85
+ modifiedDocumentTextModel,
86
+ type,
87
+ editorEventDispatcher,
88
+ initData,
89
+ notebookService,
90
+ editorHeightCalculator
91
+ ) {
92
+ super(originalDocumentTextModel, editorEventDispatcher, initData);
93
+ this.originalDocumentTextModel = originalDocumentTextModel;
94
+ this.modifiedDocumentTextModel = modifiedDocumentTextModel;
95
+ this.type = type;
96
+ this.editorHeightCalculator = editorHeightCalculator;
97
+ this.renderOutput = false;
98
+ this._sourceEditorViewState = null;
99
+ const cellStatusHeight = PropertyHeaderHeight;
100
+ this._layoutInfo = {
101
+ width: 0,
102
+ editorHeight: 0,
103
+ editorMargin: 0,
104
+ metadataHeight: 0,
105
+ cellStatusHeight,
106
+ metadataStatusHeight: 0,
107
+ rawOutputHeight: 0,
108
+ outputTotalHeight: 0,
109
+ outputStatusHeight: 0,
110
+ outputMetadataHeight: 0,
111
+ bodyMargin: 32,
112
+ totalHeight: 82 + cellStatusHeight + 0,
113
+ layoutState: CellLayoutState.Uninitialized
114
+ };
115
+ this.cellFoldingState = type === "modifiedMetadata" ? PropertyFoldingState.Expanded : PropertyFoldingState.Collapsed;
116
+ this.originalMetadata = this._register(( new NotebookDocumentMetadataTextModel(originalDocumentTextModel)));
117
+ this.modifiedMetadata = this._register(( new NotebookDocumentMetadataTextModel(modifiedDocumentTextModel)));
118
+ }
119
+ async computeHeights() {
120
+ if (this.type === "unchangedMetadata") {
121
+ this.editorHeight = this.editorHeightCalculator.computeHeightFromLines(this.originalMetadata.textBuffer.getLineCount());
122
+ } else {
123
+ const original = this.originalMetadata.uri;
124
+ const modified = this.modifiedMetadata.uri;
125
+ this.editorHeight = await this.editorHeightCalculator.diffAndComputeHeight(original, modified);
126
+ }
127
+ }
128
+ layoutChange() {
129
+ this._layout({
130
+ recomputeOutput: true
131
+ });
132
+ }
133
+ _layout(delta) {
134
+ const width = delta.width !== undefined ? delta.width : this._layoutInfo.width;
135
+ const editorHeight = delta.editorHeight !== undefined ? delta.editorHeight : this._layoutInfo.editorHeight;
136
+ const editorMargin = delta.editorMargin !== undefined ? delta.editorMargin : this._layoutInfo.editorMargin;
137
+ const cellStatusHeight = delta.cellStatusHeight !== undefined ? delta.cellStatusHeight : this._layoutInfo.cellStatusHeight;
138
+ const bodyMargin = delta.bodyMargin !== undefined ? delta.bodyMargin : this._layoutInfo.bodyMargin;
139
+ const totalHeight = editorHeight + editorMargin + cellStatusHeight + bodyMargin;
140
+ const newLayout = {
141
+ width: width,
142
+ editorHeight: editorHeight,
143
+ editorMargin: editorMargin,
144
+ metadataHeight: 0,
145
+ cellStatusHeight,
146
+ metadataStatusHeight: 0,
147
+ outputTotalHeight: 0,
148
+ outputStatusHeight: 0,
149
+ bodyMargin: bodyMargin,
150
+ rawOutputHeight: 0,
151
+ outputMetadataHeight: 0,
152
+ totalHeight: totalHeight,
153
+ layoutState: CellLayoutState.Measured
154
+ };
155
+ let somethingChanged = false;
156
+ const changeEvent = {};
157
+ if (newLayout.width !== this._layoutInfo.width) {
158
+ changeEvent.width = true;
159
+ somethingChanged = true;
160
+ }
161
+ if (newLayout.editorHeight !== this._layoutInfo.editorHeight) {
162
+ changeEvent.editorHeight = true;
163
+ somethingChanged = true;
164
+ }
165
+ if (newLayout.editorMargin !== this._layoutInfo.editorMargin) {
166
+ changeEvent.editorMargin = true;
167
+ somethingChanged = true;
168
+ }
169
+ if (newLayout.cellStatusHeight !== this._layoutInfo.cellStatusHeight) {
170
+ changeEvent.cellStatusHeight = true;
171
+ somethingChanged = true;
172
+ }
173
+ if (newLayout.bodyMargin !== this._layoutInfo.bodyMargin) {
174
+ changeEvent.bodyMargin = true;
175
+ somethingChanged = true;
176
+ }
177
+ if (newLayout.totalHeight !== this._layoutInfo.totalHeight) {
178
+ changeEvent.totalHeight = true;
179
+ somethingChanged = true;
180
+ }
181
+ if (somethingChanged) {
182
+ this._layoutInfo = newLayout;
183
+ this._fireLayoutChangeEvent(changeEvent);
184
+ }
185
+ }
186
+ getHeight(lineHeight) {
187
+ if (this._layoutInfo.layoutState === CellLayoutState.Uninitialized) {
188
+ const editorHeight = this.cellFoldingState === PropertyFoldingState.Collapsed ? 0 : this.computeInputEditorHeight(lineHeight);
189
+ return this._computeTotalHeight(editorHeight);
190
+ } else {
191
+ return this._layoutInfo.totalHeight;
192
+ }
193
+ }
194
+ _computeTotalHeight(editorHeight) {
195
+ const totalHeight = editorHeight + this._layoutInfo.editorMargin + this._layoutInfo.metadataHeight + this._layoutInfo.cellStatusHeight + this._layoutInfo.metadataStatusHeight + this._layoutInfo.outputTotalHeight + this._layoutInfo.outputStatusHeight + this._layoutInfo.outputMetadataHeight + this._layoutInfo.bodyMargin;
196
+ return totalHeight;
197
+ }
198
+ computeInputEditorHeight(_lineHeight) {
199
+ return this.editorHeightCalculator.computeHeightFromLines(Math.max(
200
+ this.originalMetadata.textBuffer.getLineCount(),
201
+ this.modifiedMetadata.textBuffer.getLineCount()
202
+ ));
203
+ }
204
+ _fireLayoutChangeEvent(state) {
205
+ this._layoutInfoEmitter.fire(state);
206
+ this.editorEventDispatcher.emit([{
207
+ type: NotebookDiffViewEventType.CellLayoutChanged,
208
+ source: this._layoutInfo
209
+ }]);
210
+ }
211
+ getComputedCellContainerWidth(layoutInfo, diffEditor, fullWidth) {
212
+ if (fullWidth) {
213
+ return layoutInfo.width - 2 * DIFF_CELL_MARGIN + (diffEditor ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0) - 2;
214
+ }
215
+ return (layoutInfo.width - 2 * DIFF_CELL_MARGIN + (diffEditor ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0)) / 2 - 18 - 2;
216
+ }
217
+ getSourceEditorViewState() {
218
+ return this._sourceEditorViewState;
219
+ }
220
+ saveSpirceEditorViewState(viewState) {
221
+ this._sourceEditorViewState = viewState;
222
+ }
223
+ }
224
+ class DiffElementCellViewModelBase extends DiffElementViewModelBase {
225
+ hideUnchangedCells() {
226
+ this._hideUnchangedCells.fire();
227
+ }
228
+ set rawOutputHeight(height) {
229
+ this._layout({
230
+ rawOutputHeight: Math.min(OUTPUT_EDITOR_HEIGHT_MAGIC, height)
231
+ });
232
+ }
233
+ get rawOutputHeight() {
234
+ throw ( new Error("Use Cell.layoutInfo.rawOutputHeight"));
235
+ }
236
+ set outputStatusHeight(height) {
237
+ this._layout({
238
+ outputStatusHeight: height
239
+ });
240
+ }
241
+ get outputStatusHeight() {
242
+ throw ( new Error("Use Cell.layoutInfo.outputStatusHeight"));
243
+ }
244
+ set outputMetadataHeight(height) {
245
+ this._layout({
246
+ outputMetadataHeight: height
247
+ });
248
+ }
249
+ get outputMetadataHeight() {
250
+ throw ( new Error("Use Cell.layoutInfo.outputStatusHeight"));
251
+ }
252
+ set editorHeight(height) {
253
+ this._layout({
254
+ editorHeight: height
255
+ });
256
+ }
257
+ get editorHeight() {
258
+ throw ( new Error("Use Cell.layoutInfo.editorHeight"));
259
+ }
260
+ set editorMargin(margin) {
261
+ this._layout({
262
+ editorMargin: margin
263
+ });
264
+ }
265
+ get editorMargin() {
266
+ throw ( new Error("Use Cell.layoutInfo.editorMargin"));
267
+ }
268
+ set metadataStatusHeight(height) {
269
+ this._layout({
270
+ metadataStatusHeight: height
271
+ });
272
+ }
273
+ get metadataStatusHeight() {
274
+ throw ( new Error("Use Cell.layoutInfo.outputStatusHeight"));
275
+ }
276
+ set metadataHeight(height) {
277
+ this._layout({
278
+ metadataHeight: height
279
+ });
280
+ }
281
+ get metadataHeight() {
282
+ throw ( new Error("Use Cell.layoutInfo.metadataHeight"));
283
+ }
284
+ set renderOutput(value) {
285
+ this._renderOutput = value;
286
+ this._layout({
287
+ recomputeOutput: true
288
+ });
289
+ this._stateChangeEmitter.fire({
290
+ renderOutput: this._renderOutput
291
+ });
292
+ }
293
+ get renderOutput() {
294
+ return this._renderOutput;
295
+ }
296
+ get layoutInfo() {
297
+ return this._layoutInfo;
298
+ }
299
+ get totalHeight() {
300
+ return this.layoutInfo.totalHeight;
301
+ }
302
+ get ignoreOutputs() {
303
+ return this.configurationService.getValue("notebook.diff.ignoreOutputs") || !!(this.mainDocumentTextModel?.transientOptions.transientOutputs);
304
+ }
305
+ get ignoreMetadata() {
306
+ return this.configurationService.getValue("notebook.diff.ignoreMetadata");
307
+ }
308
+ constructor(
309
+ mainDocumentTextModel,
310
+ original,
311
+ modified,
312
+ type,
313
+ editorEventDispatcher,
314
+ initData,
315
+ notebookService,
316
+ index,
317
+ configurationService,
318
+ diffEditorHeightCalculator
319
+ ) {
320
+ super(mainDocumentTextModel, editorEventDispatcher, initData);
321
+ this.type = type;
322
+ this.index = index;
323
+ this.configurationService = configurationService;
324
+ this.diffEditorHeightCalculator = diffEditorHeightCalculator;
325
+ this._stateChangeEmitter = this._register(( new Emitter()));
326
+ this.onDidStateChange = this._stateChangeEmitter.event;
327
+ this._hideUnchangedCells = this._register(( new Emitter()));
328
+ this.onHideUnchangedCells = this._hideUnchangedCells.event;
329
+ this._renderOutput = true;
330
+ this._sourceEditorViewState = null;
331
+ this._outputEditorViewState = null;
332
+ this._metadataEditorViewState = null;
333
+ this.original = original ? this._register(( new DiffNestedCellViewModel(original, notebookService))) : undefined;
334
+ this.modified = modified ? this._register(( new DiffNestedCellViewModel(modified, notebookService))) : undefined;
335
+ const editorHeight = this._estimateEditorHeight(initData.fontInfo);
336
+ const cellStatusHeight = PropertyHeaderHeight;
337
+ this._layoutInfo = {
338
+ width: 0,
339
+ editorHeight: editorHeight,
340
+ editorMargin: 0,
341
+ metadataHeight: 0,
342
+ cellStatusHeight,
343
+ metadataStatusHeight: this.ignoreMetadata ? 0 : PropertyHeaderHeight,
344
+ rawOutputHeight: 0,
345
+ outputTotalHeight: 0,
346
+ outputStatusHeight: this.ignoreOutputs ? 0 : PropertyHeaderHeight,
347
+ outputMetadataHeight: 0,
348
+ bodyMargin: 32,
349
+ totalHeight: 82 + cellStatusHeight + editorHeight,
350
+ layoutState: CellLayoutState.Uninitialized
351
+ };
352
+ this.cellFoldingState = modified?.getTextBufferHash() !== original?.getTextBufferHash() ? PropertyFoldingState.Expanded : PropertyFoldingState.Collapsed;
353
+ this.metadataFoldingState = PropertyFoldingState.Collapsed;
354
+ this.outputFoldingState = PropertyFoldingState.Collapsed;
355
+ }
356
+ layoutChange() {
357
+ this._layout({
358
+ recomputeOutput: true
359
+ });
360
+ }
361
+ _estimateEditorHeight(fontInfo) {
362
+ const lineHeight = fontInfo?.lineHeight ?? 17;
363
+ switch (this.type) {
364
+ case "unchanged":
365
+ case "insert":
366
+ {
367
+ const lineCount = this.modified.textModel.textBuffer.getLineCount();
368
+ const editorHeight = lineCount * lineHeight + getEditorPadding(lineCount).top + getEditorPadding(lineCount).bottom;
369
+ return editorHeight;
370
+ }
371
+ case "delete":
372
+ case "modified":
373
+ {
374
+ const lineCount = this.original.textModel.textBuffer.getLineCount();
375
+ const editorHeight = lineCount * lineHeight + getEditorPadding(lineCount).top + getEditorPadding(lineCount).bottom;
376
+ return editorHeight;
377
+ }
378
+ }
379
+ }
380
+ _layout(delta) {
381
+ const width = delta.width !== undefined ? delta.width : this._layoutInfo.width;
382
+ const editorHeight = delta.editorHeight !== undefined ? delta.editorHeight : this._layoutInfo.editorHeight;
383
+ const editorMargin = delta.editorMargin !== undefined ? delta.editorMargin : this._layoutInfo.editorMargin;
384
+ const metadataHeight = delta.metadataHeight !== undefined ? delta.metadataHeight : this._layoutInfo.metadataHeight;
385
+ const cellStatusHeight = delta.cellStatusHeight !== undefined ? delta.cellStatusHeight : this._layoutInfo.cellStatusHeight;
386
+ const metadataStatusHeight = delta.metadataStatusHeight !== undefined ? delta.metadataStatusHeight : this._layoutInfo.metadataStatusHeight;
387
+ const rawOutputHeight = delta.rawOutputHeight !== undefined ? delta.rawOutputHeight : this._layoutInfo.rawOutputHeight;
388
+ const outputStatusHeight = delta.outputStatusHeight !== undefined ? delta.outputStatusHeight : this._layoutInfo.outputStatusHeight;
389
+ const bodyMargin = delta.bodyMargin !== undefined ? delta.bodyMargin : this._layoutInfo.bodyMargin;
390
+ const outputMetadataHeight = delta.outputMetadataHeight !== undefined ? delta.outputMetadataHeight : this._layoutInfo.outputMetadataHeight;
391
+ const outputHeight = this.ignoreOutputs ? 0 : (delta.recomputeOutput || delta.rawOutputHeight !== undefined || delta.outputMetadataHeight !== undefined) ? this._getOutputTotalHeight(rawOutputHeight, outputMetadataHeight) : this._layoutInfo.outputTotalHeight;
392
+ const totalHeight = editorHeight + editorMargin + cellStatusHeight + metadataHeight + metadataStatusHeight + outputHeight + outputStatusHeight + bodyMargin;
393
+ const newLayout = {
394
+ width: width,
395
+ editorHeight: editorHeight,
396
+ editorMargin: editorMargin,
397
+ metadataHeight: metadataHeight,
398
+ cellStatusHeight,
399
+ metadataStatusHeight: metadataStatusHeight,
400
+ outputTotalHeight: outputHeight,
401
+ outputStatusHeight: outputStatusHeight,
402
+ bodyMargin: bodyMargin,
403
+ rawOutputHeight: rawOutputHeight,
404
+ outputMetadataHeight: outputMetadataHeight,
405
+ totalHeight: totalHeight,
406
+ layoutState: CellLayoutState.Measured
407
+ };
408
+ let somethingChanged = false;
409
+ const changeEvent = {};
410
+ if (newLayout.width !== this._layoutInfo.width) {
411
+ changeEvent.width = true;
412
+ somethingChanged = true;
413
+ }
414
+ if (newLayout.editorHeight !== this._layoutInfo.editorHeight) {
415
+ changeEvent.editorHeight = true;
416
+ somethingChanged = true;
417
+ }
418
+ if (newLayout.editorMargin !== this._layoutInfo.editorMargin) {
419
+ changeEvent.editorMargin = true;
420
+ somethingChanged = true;
421
+ }
422
+ if (newLayout.metadataHeight !== this._layoutInfo.metadataHeight) {
423
+ changeEvent.metadataHeight = true;
424
+ somethingChanged = true;
425
+ }
426
+ if (newLayout.cellStatusHeight !== this._layoutInfo.cellStatusHeight) {
427
+ changeEvent.cellStatusHeight = true;
428
+ somethingChanged = true;
429
+ }
430
+ if (newLayout.metadataStatusHeight !== this._layoutInfo.metadataStatusHeight) {
431
+ changeEvent.metadataStatusHeight = true;
432
+ somethingChanged = true;
433
+ }
434
+ if (newLayout.outputTotalHeight !== this._layoutInfo.outputTotalHeight) {
435
+ changeEvent.outputTotalHeight = true;
436
+ somethingChanged = true;
437
+ }
438
+ if (newLayout.outputStatusHeight !== this._layoutInfo.outputStatusHeight) {
439
+ changeEvent.outputStatusHeight = true;
440
+ somethingChanged = true;
441
+ }
442
+ if (newLayout.bodyMargin !== this._layoutInfo.bodyMargin) {
443
+ changeEvent.bodyMargin = true;
444
+ somethingChanged = true;
445
+ }
446
+ if (newLayout.outputMetadataHeight !== this._layoutInfo.outputMetadataHeight) {
447
+ changeEvent.outputMetadataHeight = true;
448
+ somethingChanged = true;
449
+ }
450
+ if (newLayout.totalHeight !== this._layoutInfo.totalHeight) {
451
+ changeEvent.totalHeight = true;
452
+ somethingChanged = true;
453
+ }
454
+ if (somethingChanged) {
455
+ this._layoutInfo = newLayout;
456
+ this._fireLayoutChangeEvent(changeEvent);
457
+ }
458
+ }
459
+ getHeight(lineHeight) {
460
+ if (this._layoutInfo.layoutState === CellLayoutState.Uninitialized) {
461
+ const editorHeight = this.cellFoldingState === PropertyFoldingState.Collapsed ? 0 : this.computeInputEditorHeight(lineHeight);
462
+ return this._computeTotalHeight(editorHeight);
463
+ } else {
464
+ return this._layoutInfo.totalHeight;
465
+ }
466
+ }
467
+ _computeTotalHeight(editorHeight) {
468
+ const totalHeight = editorHeight + this._layoutInfo.editorMargin + this._layoutInfo.metadataHeight + this._layoutInfo.cellStatusHeight + this._layoutInfo.metadataStatusHeight + this._layoutInfo.outputTotalHeight + this._layoutInfo.outputStatusHeight + this._layoutInfo.outputMetadataHeight + this._layoutInfo.bodyMargin;
469
+ return totalHeight;
470
+ }
471
+ computeInputEditorHeight(lineHeight) {
472
+ const lineCount = Math.max(
473
+ this.original?.textModel.textBuffer.getLineCount() ?? 1,
474
+ this.modified?.textModel.textBuffer.getLineCount() ?? 1
475
+ );
476
+ return this.diffEditorHeightCalculator.computeHeightFromLines(lineCount);
477
+ }
478
+ _getOutputTotalHeight(rawOutputHeight, metadataHeight) {
479
+ if (this.outputFoldingState === PropertyFoldingState.Collapsed) {
480
+ return 0;
481
+ }
482
+ if (this.renderOutput) {
483
+ if (this.isOutputEmpty()) {
484
+ return 24;
485
+ }
486
+ return this.getRichOutputTotalHeight() + metadataHeight;
487
+ } else {
488
+ return rawOutputHeight;
489
+ }
490
+ }
491
+ _fireLayoutChangeEvent(state) {
492
+ this._layoutInfoEmitter.fire(state);
493
+ this.editorEventDispatcher.emit([{
494
+ type: NotebookDiffViewEventType.CellLayoutChanged,
495
+ source: this._layoutInfo
496
+ }]);
497
+ }
498
+ getComputedCellContainerWidth(layoutInfo, diffEditor, fullWidth) {
499
+ if (fullWidth) {
500
+ return layoutInfo.width - 2 * DIFF_CELL_MARGIN + (diffEditor ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0) - 2;
501
+ }
502
+ return (layoutInfo.width - 2 * DIFF_CELL_MARGIN + (diffEditor ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0)) / 2 - 18 - 2;
503
+ }
504
+ getOutputEditorViewState() {
505
+ return this._outputEditorViewState;
506
+ }
507
+ saveOutputEditorViewState(viewState) {
508
+ this._outputEditorViewState = viewState;
509
+ }
510
+ getMetadataEditorViewState() {
511
+ return this._metadataEditorViewState;
512
+ }
513
+ saveMetadataEditorViewState(viewState) {
514
+ this._metadataEditorViewState = viewState;
515
+ }
516
+ getSourceEditorViewState() {
517
+ return this._sourceEditorViewState;
518
+ }
519
+ saveSpirceEditorViewState(viewState) {
520
+ this._sourceEditorViewState = viewState;
521
+ }
522
+ }
523
+ class SideBySideDiffElementViewModel extends DiffElementCellViewModelBase {
524
+ get originalDocument() {
525
+ return this.otherDocumentTextModel;
526
+ }
527
+ get modifiedDocument() {
528
+ return this.mainDocumentTextModel;
529
+ }
530
+ constructor(
531
+ mainDocumentTextModel,
532
+ otherDocumentTextModel,
533
+ original,
534
+ modified,
535
+ type,
536
+ editorEventDispatcher,
537
+ initData,
538
+ notebookService,
539
+ configurationService,
540
+ index,
541
+ diffEditorHeightCalculator
542
+ ) {
543
+ super(
544
+ mainDocumentTextModel,
545
+ original,
546
+ modified,
547
+ type,
548
+ editorEventDispatcher,
549
+ initData,
550
+ notebookService,
551
+ index,
552
+ configurationService,
553
+ diffEditorHeightCalculator
554
+ );
555
+ this.otherDocumentTextModel = otherDocumentTextModel;
556
+ this.type = type;
557
+ this.cellFoldingState = this.modified.textModel.getValue() !== this.original.textModel.getValue() ? PropertyFoldingState.Expanded : PropertyFoldingState.Collapsed;
558
+ this.metadataFoldingState = PropertyFoldingState.Collapsed;
559
+ this.outputFoldingState = PropertyFoldingState.Collapsed;
560
+ if (this.checkMetadataIfModified()) {
561
+ this.metadataFoldingState = PropertyFoldingState.Expanded;
562
+ }
563
+ if (this.checkIfOutputsModified()) {
564
+ this.outputFoldingState = PropertyFoldingState.Expanded;
565
+ }
566
+ this._register(this.original.onDidChangeOutputLayout(() => {
567
+ this._layout({
568
+ recomputeOutput: true
569
+ });
570
+ }));
571
+ this._register(this.modified.onDidChangeOutputLayout(() => {
572
+ this._layout({
573
+ recomputeOutput: true
574
+ });
575
+ }));
576
+ this._register(this.modified.textModel.onDidChangeContent(() => {
577
+ if (mainDocumentTextModel.transientOptions.cellContentMetadata) {
578
+ const cellMetadataKeys = [...( Object.keys(mainDocumentTextModel.transientOptions.cellContentMetadata))];
579
+ const modifiedMedataRaw = Object.assign({}, this.modified.metadata);
580
+ const originalCellMetadata = this.original.metadata;
581
+ for (const key of cellMetadataKeys) {
582
+ if (Object.hasOwn(originalCellMetadata, key)) {
583
+ modifiedMedataRaw[key] = originalCellMetadata[key];
584
+ }
585
+ }
586
+ this.modified.textModel.metadata = modifiedMedataRaw;
587
+ }
588
+ }));
589
+ }
590
+ checkIfInputModified() {
591
+ if (this.original.textModel.getTextBufferHash() === this.modified.textModel.getTextBufferHash()) {
592
+ return false;
593
+ }
594
+ return {
595
+ reason: "Cell content has changed"
596
+ };
597
+ }
598
+ checkIfOutputsModified() {
599
+ if (this.mainDocumentTextModel.transientOptions.transientOutputs || this.ignoreOutputs) {
600
+ return false;
601
+ }
602
+ const ret = outputsEqual(this.original?.outputs ?? [], this.modified?.outputs ?? []);
603
+ if (ret === OutputComparison.Unchanged) {
604
+ return false;
605
+ }
606
+ return {
607
+ reason: ret === OutputComparison.Metadata ? "Output metadata has changed" : undefined,
608
+ kind: ret
609
+ };
610
+ }
611
+ checkMetadataIfModified() {
612
+ if (this.ignoreMetadata) {
613
+ return false;
614
+ }
615
+ const modified = hash(getFormattedMetadataJSON(
616
+ this.mainDocumentTextModel.transientOptions.transientCellMetadata,
617
+ this.original?.metadata || {},
618
+ this.original?.language
619
+ )) !== hash(getFormattedMetadataJSON(
620
+ this.mainDocumentTextModel.transientOptions.transientCellMetadata,
621
+ this.modified?.metadata ?? {},
622
+ this.modified?.language
623
+ ));
624
+ if (modified) {
625
+ return {
626
+ reason: undefined
627
+ };
628
+ } else {
629
+ return false;
630
+ }
631
+ }
632
+ updateOutputHeight(diffSide, index, height) {
633
+ if (diffSide === DiffSide.Original) {
634
+ this.original.updateOutputHeight(index, height);
635
+ } else {
636
+ this.modified.updateOutputHeight(index, height);
637
+ }
638
+ }
639
+ getOutputOffsetInContainer(diffSide, index) {
640
+ if (diffSide === DiffSide.Original) {
641
+ return this.original.getOutputOffset(index);
642
+ } else {
643
+ return this.modified.getOutputOffset(index);
644
+ }
645
+ }
646
+ getOutputOffsetInCell(diffSide, index) {
647
+ const offsetInOutputsContainer = this.getOutputOffsetInContainer(diffSide, index);
648
+ return this._layoutInfo.editorHeight + this._layoutInfo.editorMargin + this._layoutInfo.metadataHeight + this._layoutInfo.cellStatusHeight + this._layoutInfo.metadataStatusHeight + this._layoutInfo.outputStatusHeight + this._layoutInfo.bodyMargin / 2 + offsetInOutputsContainer;
649
+ }
650
+ isOutputEmpty() {
651
+ if (this.mainDocumentTextModel.transientOptions.transientOutputs) {
652
+ return true;
653
+ }
654
+ if (this.checkIfOutputsModified()) {
655
+ return false;
656
+ }
657
+ return (this.original?.outputs || []).length === 0;
658
+ }
659
+ getRichOutputTotalHeight() {
660
+ return Math.max(this.original.getOutputTotalHeight(), this.modified.getOutputTotalHeight());
661
+ }
662
+ getNestedCellViewModel(diffSide) {
663
+ return diffSide === DiffSide.Original ? this.original : this.modified;
664
+ }
665
+ getCellByUri(cellUri) {
666
+ if (( cellUri.toString()) === ( this.original.uri.toString())) {
667
+ return this.original;
668
+ } else {
669
+ return this.modified;
670
+ }
671
+ }
672
+ computeInputEditorHeight(lineHeight) {
673
+ if (this.type === "modified" && typeof this.editorHeightWithUnchangedLinesCollapsed === "number" && this.checkIfInputModified()) {
674
+ return this.editorHeightWithUnchangedLinesCollapsed;
675
+ }
676
+ return super.computeInputEditorHeight(lineHeight);
677
+ }
678
+ async computeModifiedInputEditorHeight() {
679
+ if (this.checkIfInputModified()) {
680
+ this.editorHeightWithUnchangedLinesCollapsed = this._layoutInfo.editorHeight = await this.diffEditorHeightCalculator.diffAndComputeHeight(this.original.uri, this.modified.uri);
681
+ }
682
+ }
683
+ async computeModifiedMetadataEditorHeight() {
684
+ if (this.checkMetadataIfModified()) {
685
+ const originalMetadataUri = CellUri.generateCellPropertyUri(
686
+ this.originalDocument.uri,
687
+ this.original.handle,
688
+ Schemas.vscodeNotebookCellMetadata
689
+ );
690
+ const modifiedMetadataUri = CellUri.generateCellPropertyUri(
691
+ this.modifiedDocument.uri,
692
+ this.modified.handle,
693
+ Schemas.vscodeNotebookCellMetadata
694
+ );
695
+ this._layoutInfo.metadataHeight = await this.diffEditorHeightCalculator.diffAndComputeHeight(originalMetadataUri, modifiedMetadataUri);
696
+ }
697
+ }
698
+ async computeEditorHeights() {
699
+ if (this.type === "unchanged") {
700
+ return;
701
+ }
702
+ await Promise.all([
703
+ this.computeModifiedInputEditorHeight(),
704
+ this.computeModifiedMetadataEditorHeight()
705
+ ]);
706
+ }
707
+ }
708
+ class SingleSideDiffElementViewModel extends DiffElementCellViewModelBase {
709
+ get cellViewModel() {
710
+ return this.type === "insert" ? this.modified : this.original;
711
+ }
712
+ get originalDocument() {
713
+ if (this.type === "insert") {
714
+ return this.otherDocumentTextModel;
715
+ } else {
716
+ return this.mainDocumentTextModel;
717
+ }
718
+ }
719
+ get modifiedDocument() {
720
+ if (this.type === "insert") {
721
+ return this.mainDocumentTextModel;
722
+ } else {
723
+ return this.otherDocumentTextModel;
724
+ }
725
+ }
726
+ constructor(
727
+ mainDocumentTextModel,
728
+ otherDocumentTextModel,
729
+ original,
730
+ modified,
731
+ type,
732
+ editorEventDispatcher,
733
+ initData,
734
+ notebookService,
735
+ configurationService,
736
+ diffEditorHeightCalculator,
737
+ index
738
+ ) {
739
+ super(
740
+ mainDocumentTextModel,
741
+ original,
742
+ modified,
743
+ type,
744
+ editorEventDispatcher,
745
+ initData,
746
+ notebookService,
747
+ index,
748
+ configurationService,
749
+ diffEditorHeightCalculator
750
+ );
751
+ this.otherDocumentTextModel = otherDocumentTextModel;
752
+ this.type = type;
753
+ this._register(this.cellViewModel.onDidChangeOutputLayout(() => {
754
+ this._layout({
755
+ recomputeOutput: true
756
+ });
757
+ }));
758
+ }
759
+ checkIfInputModified() {
760
+ return {
761
+ reason: "Cell content has changed"
762
+ };
763
+ }
764
+ getNestedCellViewModel(diffSide) {
765
+ return this.type === "insert" ? this.modified : this.original;
766
+ }
767
+ checkIfOutputsModified() {
768
+ return false;
769
+ }
770
+ checkMetadataIfModified() {
771
+ return false;
772
+ }
773
+ updateOutputHeight(diffSide, index, height) {
774
+ this.cellViewModel?.updateOutputHeight(index, height);
775
+ }
776
+ getOutputOffsetInContainer(diffSide, index) {
777
+ return this.cellViewModel.getOutputOffset(index);
778
+ }
779
+ getOutputOffsetInCell(diffSide, index) {
780
+ const offsetInOutputsContainer = this.cellViewModel.getOutputOffset(index);
781
+ return this._layoutInfo.editorHeight + this._layoutInfo.editorMargin + this._layoutInfo.metadataHeight + this._layoutInfo.cellStatusHeight + this._layoutInfo.metadataStatusHeight + this._layoutInfo.outputStatusHeight + this._layoutInfo.bodyMargin / 2 + offsetInOutputsContainer;
782
+ }
783
+ isOutputEmpty() {
784
+ if (this.mainDocumentTextModel.transientOptions.transientOutputs) {
785
+ return true;
786
+ }
787
+ return (this.original?.outputs || this.modified?.outputs || []).length === 0;
788
+ }
789
+ getRichOutputTotalHeight() {
790
+ return this.cellViewModel?.getOutputTotalHeight() ?? 0;
791
+ }
792
+ getCellByUri(cellUri) {
793
+ return this.cellViewModel;
794
+ }
795
+ }
796
+ var OutputComparison;
797
+ (function(OutputComparison) {
798
+ OutputComparison[OutputComparison["Unchanged"] = 0] = "Unchanged";
799
+ OutputComparison[OutputComparison["Metadata"] = 1] = "Metadata";
800
+ OutputComparison[OutputComparison["Other"] = 2] = "Other";
801
+ })(OutputComparison || (OutputComparison = {}));
802
+ function outputEqual(a, b) {
803
+ if (hash(a.metadata) === hash(b.metadata)) {
804
+ return OutputComparison.Other;
805
+ }
806
+ for (let j = 0; j < a.outputs.length; j++) {
807
+ const aOutputItem = a.outputs[j];
808
+ const bOutputItem = b.outputs[j];
809
+ if (aOutputItem.mime !== bOutputItem.mime) {
810
+ return OutputComparison.Other;
811
+ }
812
+ if (aOutputItem.data.buffer.length !== bOutputItem.data.buffer.length) {
813
+ return OutputComparison.Other;
814
+ }
815
+ for (let k = 0; k < aOutputItem.data.buffer.length; k++) {
816
+ if (aOutputItem.data.buffer[k] !== bOutputItem.data.buffer[k]) {
817
+ return OutputComparison.Other;
818
+ }
819
+ }
820
+ }
821
+ return OutputComparison.Metadata;
822
+ }
823
+ function outputsEqual(original, modified) {
824
+ if (original.length !== modified.length) {
825
+ return OutputComparison.Other;
826
+ }
827
+ const len = original.length;
828
+ for (let i = 0; i < len; i++) {
829
+ const a = original[i];
830
+ const b = modified[i];
831
+ if (hash(a.metadata) !== hash(b.metadata)) {
832
+ return OutputComparison.Metadata;
833
+ }
834
+ if (a.outputs.length !== b.outputs.length) {
835
+ return OutputComparison.Other;
836
+ }
837
+ for (let j = 0; j < a.outputs.length; j++) {
838
+ const aOutputItem = a.outputs[j];
839
+ const bOutputItem = b.outputs[j];
840
+ if (aOutputItem.mime !== bOutputItem.mime) {
841
+ return OutputComparison.Other;
842
+ }
843
+ if (aOutputItem.data.buffer.length !== bOutputItem.data.buffer.length) {
844
+ return OutputComparison.Other;
845
+ }
846
+ for (let k = 0; k < aOutputItem.data.buffer.length; k++) {
847
+ if (aOutputItem.data.buffer[k] !== bOutputItem.data.buffer[k]) {
848
+ return OutputComparison.Other;
849
+ }
850
+ }
851
+ }
852
+ }
853
+ return OutputComparison.Unchanged;
854
+ }
855
+ function getStreamOutputData(outputs) {
856
+ if (!outputs.length) {
857
+ return null;
858
+ }
859
+ const first = outputs[0];
860
+ const mime = first.mime;
861
+ const sameStream = !outputs.find(op => op.mime !== mime);
862
+ if (sameStream) {
863
+ return ( outputs.map(opit => ( opit.data.toString()))).join("");
864
+ } else {
865
+ return null;
866
+ }
867
+ }
868
+ function getFormattedOutputJSON(outputs) {
869
+ if (outputs.length === 1) {
870
+ const streamOutputData = getStreamOutputData(outputs[0].outputs);
871
+ if (streamOutputData) {
872
+ return streamOutputData;
873
+ }
874
+ }
875
+ return JSON.stringify(( outputs.map(output => {
876
+ return ({
877
+ metadata: output.metadata,
878
+ outputItems: ( output.outputs.map(opit => ({
879
+ mimeType: opit.mime,
880
+ data: ( opit.data.toString())
881
+ })))
882
+ });
883
+ })), undefined, "\t");
884
+ }
885
+
886
+ export { DefaultLineHeight, DiffElementCellViewModelBase, DiffElementPlaceholderViewModel, DiffElementViewModelBase, HeightOfHiddenLinesRegionInDiffEditor, NotebookDocumentMetadataViewModel, OUTPUT_EDITOR_HEIGHT_MAGIC, OutputComparison, PropertyFoldingState, SideBySideDiffElementViewModel, SingleSideDiffElementViewModel, getFormattedOutputJSON, getStreamOutputData, outputEqual };