@lapis-notes/history 0.1.4 → 0.2.2

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 (329) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +1 -1
  3. package/dist/repository/NOTICE.md +11 -0
  4. package/dist/repository/components/RepositoryAuthorAvatar.svelte +77 -0
  5. package/dist/repository/components/RepositoryAuthorAvatar.svelte.d.ts +11 -0
  6. package/dist/repository/components/RepositoryBackupStatus.svelte +236 -0
  7. package/dist/repository/components/RepositoryBackupStatus.svelte.d.ts +11 -0
  8. package/dist/repository/components/RepositoryChangedFiles.svelte +104 -0
  9. package/dist/repository/components/RepositoryChangedFiles.svelte.d.ts +13 -0
  10. package/dist/repository/components/RepositoryCommitMessage.svelte +93 -0
  11. package/dist/repository/components/RepositoryCommitMessage.svelte.d.ts +6 -0
  12. package/dist/repository/components/RepositoryCommitPicker.svelte +205 -0
  13. package/dist/repository/components/RepositoryCommitPicker.svelte.d.ts +17 -0
  14. package/dist/repository/components/RepositoryComparisonBar.svelte +71 -0
  15. package/dist/repository/components/RepositoryComparisonBar.svelte.d.ts +9 -0
  16. package/dist/repository/components/RepositoryComparisonTime.svelte +32 -0
  17. package/dist/repository/components/RepositoryComparisonTime.svelte.d.ts +6 -0
  18. package/dist/repository/components/RepositoryDiff.svelte +56 -0
  19. package/dist/repository/components/RepositoryDiff.svelte.d.ts +11 -0
  20. package/dist/repository/components/RepositoryDiffColumn.svelte +78 -0
  21. package/dist/repository/components/RepositoryDiffColumn.svelte.d.ts +14 -0
  22. package/dist/repository/components/RepositoryDiffControls.svelte +117 -0
  23. package/dist/repository/components/RepositoryDiffControls.svelte.d.ts +8 -0
  24. package/dist/repository/components/RepositoryFileHistory.svelte +170 -0
  25. package/dist/repository/components/RepositoryFileHistory.svelte.d.ts +10 -0
  26. package/dist/repository/components/RepositoryFileTitle.svelte +30 -0
  27. package/dist/repository/components/RepositoryFileTitle.svelte.d.ts +6 -0
  28. package/dist/repository/components/RepositoryGraph.svelte +216 -0
  29. package/dist/repository/components/RepositoryGraph.svelte.d.ts +19 -0
  30. package/dist/repository/components/RepositoryGraphSvg.svelte +110 -0
  31. package/dist/repository/components/RepositoryGraphSvg.svelte.d.ts +11 -0
  32. package/dist/repository/components/RepositoryIdentifiers.svelte +221 -0
  33. package/dist/repository/components/RepositoryIdentifiers.svelte.d.ts +15 -0
  34. package/dist/repository/components/RepositoryLogHeader.svelte +90 -0
  35. package/dist/repository/components/RepositoryLogHeader.svelte.d.ts +23 -0
  36. package/dist/repository/components/RepositoryOperationArguments.svelte +52 -0
  37. package/dist/repository/components/RepositoryOperationArguments.svelte.d.ts +6 -0
  38. package/dist/repository/components/RepositoryOperationColumn.svelte +163 -0
  39. package/dist/repository/components/RepositoryOperationColumn.svelte.d.ts +11 -0
  40. package/dist/repository/components/RepositoryOperationFiles.svelte +245 -0
  41. package/dist/repository/components/RepositoryOperationFiles.svelte.d.ts +14 -0
  42. package/dist/repository/components/RepositoryOperationMessage.svelte +169 -0
  43. package/dist/repository/components/RepositoryOperationMessage.svelte.d.ts +10 -0
  44. package/dist/repository/components/RepositoryOperationOption.svelte +183 -0
  45. package/dist/repository/components/RepositoryOperationOption.svelte.d.ts +10 -0
  46. package/dist/repository/components/RepositoryOperationParentPicker.svelte +188 -0
  47. package/dist/repository/components/RepositoryOperationParentPicker.svelte.d.ts +14 -0
  48. package/dist/repository/components/RepositoryOperationPinPicker.svelte +170 -0
  49. package/dist/repository/components/RepositoryOperationPinPicker.svelte.d.ts +13 -0
  50. package/dist/repository/components/RepositoryOperationRail.svelte +136 -0
  51. package/dist/repository/components/RepositoryOperationRail.svelte.d.ts +9 -0
  52. package/dist/repository/components/RepositoryOperationTarget.svelte +99 -0
  53. package/dist/repository/components/RepositoryOperationTarget.svelte.d.ts +8 -0
  54. package/dist/repository/components/RepositoryOperations.svelte +199 -0
  55. package/dist/repository/components/RepositoryOperations.svelte.d.ts +12 -0
  56. package/dist/repository/components/RepositoryPanel.svelte +207 -0
  57. package/dist/repository/components/RepositoryPanel.svelte.d.ts +15 -0
  58. package/dist/repository/components/RepositoryParentSummary.svelte +52 -0
  59. package/dist/repository/components/RepositoryParentSummary.svelte.d.ts +10 -0
  60. package/dist/repository/components/RepositoryPickerSearch.svelte +51 -0
  61. package/dist/repository/components/RepositoryPickerSearch.svelte.d.ts +11 -0
  62. package/dist/repository/components/RepositoryRestoreDialog.svelte +81 -0
  63. package/dist/repository/components/RepositoryRestoreDialog.svelte.d.ts +7 -0
  64. package/dist/repository/components/RepositoryRevisionActions.svelte +53 -0
  65. package/dist/repository/components/RepositoryRevisionActions.svelte.d.ts +9 -0
  66. package/dist/repository/components/RepositoryRevisionFiles.svelte +110 -0
  67. package/dist/repository/components/RepositoryRevisionFiles.svelte.d.ts +14 -0
  68. package/dist/repository/components/RepositoryRevisionOption.svelte +60 -0
  69. package/dist/repository/components/RepositoryRevisionOption.svelte.d.ts +9 -0
  70. package/dist/repository/components/RepositoryRevisionPicker.svelte +165 -0
  71. package/dist/repository/components/RepositoryRevisionPicker.svelte.d.ts +14 -0
  72. package/dist/repository/components/RepositoryRevisions.svelte +115 -0
  73. package/dist/repository/components/RepositoryRevisions.svelte.d.ts +20 -0
  74. package/dist/repository/components/RepositoryShell.svelte +44 -0
  75. package/dist/repository/components/RepositoryShell.svelte.d.ts +11 -0
  76. package/dist/repository/components/RepositorySkeleton.svelte +138 -0
  77. package/dist/repository/components/RepositorySkeleton.svelte.d.ts +7 -0
  78. package/dist/repository/components/RepositorySourcePicker.svelte +114 -0
  79. package/dist/repository/components/RepositorySourcePicker.svelte.d.ts +7 -0
  80. package/dist/repository/components/RepositoryUpstreamActions.svelte +125 -0
  81. package/dist/repository/components/RepositoryUpstreamActions.svelte.d.ts +8 -0
  82. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte +290 -0
  83. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte.d.ts +11 -0
  84. package/dist/repository/components/RepositoryWorkspacePicker.svelte +158 -0
  85. package/dist/repository/components/RepositoryWorkspacePicker.svelte.d.ts +11 -0
  86. package/dist/repository/components/backup/AdoptionSettings.svelte +95 -0
  87. package/dist/repository/components/backup/AdoptionSettings.svelte.d.ts +7 -0
  88. package/dist/repository/components/backup/BackupCard.svelte +79 -0
  89. package/dist/repository/components/backup/BackupCard.svelte.d.ts +14 -0
  90. package/dist/repository/components/backup/BackupField.svelte +45 -0
  91. package/dist/repository/components/backup/BackupField.svelte.d.ts +10 -0
  92. package/dist/repository/components/backup/BackupSelect.svelte +71 -0
  93. package/dist/repository/components/backup/BackupSelect.svelte.d.ts +35 -0
  94. package/dist/repository/components/backup/BackupSettings.svelte +122 -0
  95. package/dist/repository/components/backup/BackupSettings.svelte.d.ts +18 -0
  96. package/dist/repository/components/backup/BackupSettingsField.svelte +13 -0
  97. package/dist/repository/components/backup/BackupSettingsField.svelte.d.ts +4 -0
  98. package/dist/repository/components/backup/ForgeAccounts.svelte +231 -0
  99. package/dist/repository/components/backup/ForgeAccounts.svelte.d.ts +9 -0
  100. package/dist/repository/components/backup/ForgeAuthorization.svelte +267 -0
  101. package/dist/repository/components/backup/ForgeAuthorization.svelte.d.ts +9 -0
  102. package/dist/repository/components/backup/ForgeIcon.svelte +21 -0
  103. package/dist/repository/components/backup/ForgeIcon.svelte.d.ts +7 -0
  104. package/dist/repository/components/backup/PublicationRecovery.svelte +129 -0
  105. package/dist/repository/components/backup/PublicationRecovery.svelte.d.ts +11 -0
  106. package/dist/repository/components/backup/RemoteSettings.svelte +288 -0
  107. package/dist/repository/components/backup/RemoteSettings.svelte.d.ts +11 -0
  108. package/dist/repository/components/backup/RepositorySettingsPage.svelte +51 -0
  109. package/dist/repository/components/backup/RepositorySettingsPage.svelte.d.ts +4 -0
  110. package/dist/repository/components/backup/StorageSettings.svelte +158 -0
  111. package/dist/repository/components/backup/StorageSettings.svelte.d.ts +7 -0
  112. package/dist/repository/components/backup/SyncConflictEditor.svelte +158 -0
  113. package/dist/repository/components/backup/SyncConflictEditor.svelte.d.ts +9 -0
  114. package/dist/repository/components/backup/SyncSettings.svelte +97 -0
  115. package/dist/repository/components/backup/SyncSettings.svelte.d.ts +9 -0
  116. package/dist/repository/components/backup/adoption-settings.d.ts +7 -0
  117. package/dist/repository/components/backup/adoption-settings.js +42 -0
  118. package/dist/repository/components/backup/backup-settings.d.ts +35 -0
  119. package/dist/repository/components/backup/backup-settings.js +96 -0
  120. package/dist/repository/components/backup/forge-icons.d.ts +10 -0
  121. package/dist/repository/components/backup/forge-icons.js +11 -0
  122. package/dist/repository/components/backup/remote-restore.d.ts +3 -0
  123. package/dist/repository/components/backup/remote-restore.js +17 -0
  124. package/dist/repository/components/backup/storage-settings.d.ts +8 -0
  125. package/dist/repository/components/backup/storage-settings.js +23 -0
  126. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte +212 -0
  127. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte.d.ts +14 -0
  128. package/dist/repository/components/blame/RepositoryBlameGroup.svelte +189 -0
  129. package/dist/repository/components/blame/RepositoryBlameGroup.svelte.d.ts +20 -0
  130. package/dist/repository/components/blame/RepositoryBlamePanel.svelte +148 -0
  131. package/dist/repository/components/blame/RepositoryBlamePanel.svelte.d.ts +13 -0
  132. package/dist/repository/components/blame/RepositoryBlameRows.svelte +137 -0
  133. package/dist/repository/components/blame/RepositoryBlameRows.svelte.d.ts +32 -0
  134. package/dist/repository/components/blame/RepositoryBlameView.svelte +121 -0
  135. package/dist/repository/components/blame/RepositoryBlameView.svelte.d.ts +16 -0
  136. package/dist/repository/components/blame/blame-view.d.ts +16 -0
  137. package/dist/repository/components/blame/blame-view.js +73 -0
  138. package/dist/repository/components/blame/editor-actions.d.ts +3 -0
  139. package/dist/repository/components/blame/editor-actions.js +53 -0
  140. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte +83 -0
  141. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte.d.ts +13 -0
  142. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte +93 -0
  143. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte.d.ts +16 -0
  144. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte +84 -0
  145. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte.d.ts +21 -0
  146. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte +35 -0
  147. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte.d.ts +9 -0
  148. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte +133 -0
  149. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte.d.ts +12 -0
  150. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte +105 -0
  151. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte.d.ts +23 -0
  152. package/dist/repository/components/conflicts/RepositoryConflictText.svelte +104 -0
  153. package/dist/repository/components/conflicts/RepositoryConflictText.svelte.d.ts +26 -0
  154. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte +52 -0
  155. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte.d.ts +7 -0
  156. package/dist/repository/components/conflicts/repository-conflict-file-tree.css +73 -0
  157. package/dist/repository/components/conflicts/repository-conflicts.css +125 -0
  158. package/dist/repository/components/file-history-view.d.ts +15 -0
  159. package/dist/repository/components/file-history-view.js +110 -0
  160. package/dist/repository/components/operation-view.d.ts +16 -0
  161. package/dist/repository/components/operation-view.js +95 -0
  162. package/dist/repository/components/repository-backup.d.ts +22 -0
  163. package/dist/repository/components/repository-backup.js +75 -0
  164. package/dist/repository/components/repository-column-chrome.css +35 -0
  165. package/dist/repository/components/repository-commit-picker.css +55 -0
  166. package/dist/repository/components/repository-feedback.d.ts +7 -0
  167. package/dist/repository/components/repository-feedback.js +40 -0
  168. package/dist/repository/components/repository-identifiers.css +199 -0
  169. package/dist/repository/components/repository-navigation.d.ts +4 -0
  170. package/dist/repository/components/repository-navigation.js +16 -0
  171. package/dist/repository/components/repository-operation-column.css +112 -0
  172. package/dist/repository/components/repository-picker-options.css +11 -0
  173. package/dist/repository/components/repository-plugin.d.ts +33 -0
  174. package/dist/repository/components/repository-plugin.js +191 -0
  175. package/dist/repository/components/repository-review-identifiers.css +50 -0
  176. package/dist/repository/components/repository-status.d.ts +13 -0
  177. package/dist/repository/components/repository-status.js +227 -0
  178. package/dist/repository/components/repository-sync.d.ts +13 -0
  179. package/dist/repository/components/repository-sync.js +93 -0
  180. package/dist/repository/components/repository-tools.d.ts +3 -0
  181. package/dist/repository/components/repository-tools.js +13 -0
  182. package/dist/repository/components/repository-view.d.ts +16 -0
  183. package/dist/repository/components/repository-view.js +140 -0
  184. package/dist/repository/components/restore-controller.d.ts +9 -0
  185. package/dist/repository/components/restore-controller.js +44 -0
  186. package/dist/repository/components/search/search-provider.d.ts +3 -0
  187. package/dist/repository/components/search/search-provider.js +185 -0
  188. package/dist/repository/controllers/adoption-controller.d.ts +29 -0
  189. package/dist/repository/controllers/adoption-controller.js +145 -0
  190. package/dist/repository/controllers/adoption.d.ts +30 -0
  191. package/dist/repository/controllers/adoption.js +21 -0
  192. package/dist/repository/controllers/ai-history.d.ts +57 -0
  193. package/dist/repository/controllers/ai-history.js +51 -0
  194. package/dist/repository/controllers/author.d.ts +2 -0
  195. package/dist/repository/controllers/author.js +11 -0
  196. package/dist/repository/controllers/background-work.d.ts +14 -0
  197. package/dist/repository/controllers/background-work.js +57 -0
  198. package/dist/repository/controllers/backup-follow.d.ts +5 -0
  199. package/dist/repository/controllers/backup-follow.js +29 -0
  200. package/dist/repository/controllers/backup.d.ts +39 -0
  201. package/dist/repository/controllers/backup.js +129 -0
  202. package/dist/repository/controllers/blame-chunks.d.ts +13 -0
  203. package/dist/repository/controllers/blame-chunks.js +51 -0
  204. package/dist/repository/controllers/blame-controller.d.ts +17 -0
  205. package/dist/repository/controllers/blame-controller.js +148 -0
  206. package/dist/repository/controllers/blame-model.d.ts +25 -0
  207. package/dist/repository/controllers/blame-model.js +31 -0
  208. package/dist/repository/controllers/blame-preferences.d.ts +3 -0
  209. package/dist/repository/controllers/blame-preferences.js +18 -0
  210. package/dist/repository/controllers/commit-cards.d.ts +4 -0
  211. package/dist/repository/controllers/commit-cards.js +38 -0
  212. package/dist/repository/controllers/conflict-menu.d.ts +2 -0
  213. package/dist/repository/controllers/conflict-menu.js +1 -0
  214. package/dist/repository/controllers/file-history-controller.d.ts +29 -0
  215. package/dist/repository/controllers/file-history-controller.js +182 -0
  216. package/dist/repository/controllers/forge-accounts.d.ts +48 -0
  217. package/dist/repository/controllers/forge-accounts.js +1 -0
  218. package/dist/repository/controllers/forge-controller.d.ts +24 -0
  219. package/dist/repository/controllers/forge-controller.js +168 -0
  220. package/dist/repository/controllers/graph/model.d.ts +20 -0
  221. package/dist/repository/controllers/graph/model.js +33 -0
  222. package/dist/repository/controllers/graph/repository-log-graph.d.ts +44 -0
  223. package/dist/repository/controllers/graph/repository-log-graph.js +182 -0
  224. package/dist/repository/controllers/graph/repository-log-lanes.d.ts +7 -0
  225. package/dist/repository/controllers/graph/repository-log-lanes.js +19 -0
  226. package/dist/repository/controllers/graph/revision-id.d.ts +3 -0
  227. package/dist/repository/controllers/graph/revision-id.js +10 -0
  228. package/dist/repository/controllers/history-canvas.d.ts +2 -0
  229. package/dist/repository/controllers/history-canvas.js +45 -0
  230. package/dist/repository/controllers/history-controller.d.ts +31 -0
  231. package/dist/repository/controllers/history-controller.js +238 -0
  232. package/dist/repository/controllers/history-files.d.ts +7 -0
  233. package/dist/repository/controllers/history-files.js +18 -0
  234. package/dist/repository/controllers/history-graph.d.ts +20 -0
  235. package/dist/repository/controllers/history-graph.js +89 -0
  236. package/dist/repository/controllers/history-index-controller.d.ts +22 -0
  237. package/dist/repository/controllers/history-index-controller.js +77 -0
  238. package/dist/repository/controllers/history-lifetime.d.ts +13 -0
  239. package/dist/repository/controllers/history-lifetime.js +40 -0
  240. package/dist/repository/controllers/history-reader.d.ts +22 -0
  241. package/dist/repository/controllers/history-reader.js +1 -0
  242. package/dist/repository/controllers/history-search-expression.d.ts +9 -0
  243. package/dist/repository/controllers/history-search-expression.js +86 -0
  244. package/dist/repository/controllers/history-selection.d.ts +5 -0
  245. package/dist/repository/controllers/history-selection.js +32 -0
  246. package/dist/repository/controllers/history-source.d.ts +10 -0
  247. package/dist/repository/controllers/history-source.js +7 -0
  248. package/dist/repository/controllers/history-state.d.ts +34 -0
  249. package/dist/repository/controllers/history-state.js +55 -0
  250. package/dist/repository/controllers/indexed-search-validation.d.ts +4 -0
  251. package/dist/repository/controllers/indexed-search-validation.js +64 -0
  252. package/dist/repository/controllers/indexed-search.d.ts +11 -0
  253. package/dist/repository/controllers/indexed-search.js +1 -0
  254. package/dist/repository/controllers/log-canvas.d.ts +2 -0
  255. package/dist/repository/controllers/log-canvas.js +25 -0
  256. package/dist/repository/controllers/native-indexed-search.d.ts +4 -0
  257. package/dist/repository/controllers/native-indexed-search.js +10 -0
  258. package/dist/repository/controllers/open-history-revision.d.ts +3 -0
  259. package/dist/repository/controllers/open-history-revision.js +8 -0
  260. package/dist/repository/controllers/operation-command.d.ts +2 -0
  261. package/dist/repository/controllers/operation-command.js +55 -0
  262. package/dist/repository/controllers/operation-controller.d.ts +33 -0
  263. package/dist/repository/controllers/operation-controller.js +267 -0
  264. package/dist/repository/controllers/operation-files.d.ts +33 -0
  265. package/dist/repository/controllers/operation-files.js +182 -0
  266. package/dist/repository/controllers/operation-graph.d.ts +17 -0
  267. package/dist/repository/controllers/operation-graph.js +50 -0
  268. package/dist/repository/controllers/operation-message.d.ts +5 -0
  269. package/dist/repository/controllers/operation-message.js +18 -0
  270. package/dist/repository/controllers/operation-metadata.d.ts +5 -0
  271. package/dist/repository/controllers/operation-metadata.js +26 -0
  272. package/dist/repository/controllers/operation-parent.d.ts +5 -0
  273. package/dist/repository/controllers/operation-parent.js +46 -0
  274. package/dist/repository/controllers/operation-state.d.ts +28 -0
  275. package/dist/repository/controllers/operation-state.js +26 -0
  276. package/dist/repository/controllers/parent-candidates.d.ts +4 -0
  277. package/dist/repository/controllers/parent-candidates.js +27 -0
  278. package/dist/repository/controllers/plugin-data.d.ts +9 -0
  279. package/dist/repository/controllers/plugin-data.js +33 -0
  280. package/dist/repository/controllers/preparation-queue.d.ts +9 -0
  281. package/dist/repository/controllers/preparation-queue.js +55 -0
  282. package/dist/repository/controllers/remote-controller.d.ts +23 -0
  283. package/dist/repository/controllers/remote-controller.js +98 -0
  284. package/dist/repository/controllers/remote.d.ts +48 -0
  285. package/dist/repository/controllers/remote.js +13 -0
  286. package/dist/repository/controllers/restore-recovery.d.ts +3 -0
  287. package/dist/repository/controllers/restore-recovery.js +32 -0
  288. package/dist/repository/controllers/restore.d.ts +66 -0
  289. package/dist/repository/controllers/restore.js +201 -0
  290. package/dist/repository/controllers/revision-comparison.d.ts +20 -0
  291. package/dist/repository/controllers/revision-comparison.js +89 -0
  292. package/dist/repository/controllers/search-controller.d.ts +19 -0
  293. package/dist/repository/controllers/search-controller.js +105 -0
  294. package/dist/repository/controllers/search-page.d.ts +2 -0
  295. package/dist/repository/controllers/search-page.js +39 -0
  296. package/dist/repository/controllers/search.d.ts +51 -0
  297. package/dist/repository/controllers/search.js +8 -0
  298. package/dist/repository/controllers/services.d.ts +7 -0
  299. package/dist/repository/controllers/services.js +24 -0
  300. package/dist/repository/controllers/storage-controller.d.ts +30 -0
  301. package/dist/repository/controllers/storage-controller.js +130 -0
  302. package/dist/repository/controllers/storage.d.ts +26 -0
  303. package/dist/repository/controllers/storage.js +1 -0
  304. package/dist/repository/controllers/sync-application.d.ts +17 -0
  305. package/dist/repository/controllers/sync-application.js +45 -0
  306. package/dist/repository/controllers/sync-controller.d.ts +31 -0
  307. package/dist/repository/controllers/sync-controller.js +300 -0
  308. package/dist/repository/controllers/sync-publication.d.ts +7 -0
  309. package/dist/repository/controllers/sync-publication.js +29 -0
  310. package/dist/repository/controllers/sync-recovery.d.ts +7 -0
  311. package/dist/repository/controllers/sync-recovery.js +27 -0
  312. package/dist/repository/controllers/sync.d.ts +62 -0
  313. package/dist/repository/controllers/sync.js +38 -0
  314. package/dist/repository/controllers/tags.d.ts +7 -0
  315. package/dist/repository/controllers/tags.js +71 -0
  316. package/dist/repository/controllers/transcript-paths.d.ts +2 -0
  317. package/dist/repository/controllers/transcript-paths.js +17 -0
  318. package/dist/repository/controllers/transcript-writers.d.ts +9 -0
  319. package/dist/repository/controllers/transcript-writers.js +37 -0
  320. package/dist/repository/controllers/working-copy-controller.d.ts +22 -0
  321. package/dist/repository/controllers/working-copy-controller.js +58 -0
  322. package/dist/repository/controllers/working-copy-status.d.ts +16 -0
  323. package/dist/repository/controllers/working-copy-status.js +57 -0
  324. package/dist/repository/controllers/workspaces.d.ts +7 -0
  325. package/dist/repository/controllers/workspaces.js +4 -0
  326. package/dist/repository/index.d.ts +9 -0
  327. package/dist/repository/index.js +6 -0
  328. package/manifest.json +2 -2
  329. package/package.json +41 -9
@@ -0,0 +1,11 @@
1
+ import type { SyncController } from "../controllers/sync-controller.js";
2
+ import type { WorkingCopyController } from "../controllers/working-copy-controller.js";
3
+ type $$ComponentProps = {
4
+ controller: WorkingCopyController;
5
+ openRevision(operation: string, revision: string): Promise<void>;
6
+ copyText(value: string): Promise<void>;
7
+ upstream?: SyncController;
8
+ };
9
+ declare const RepositoryWorkingCopyStatus: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryWorkingCopyStatus = ReturnType<typeof RepositoryWorkingCopyStatus>;
11
+ export default RepositoryWorkingCopyStatus;
@@ -0,0 +1,158 @@
1
+ <script lang="ts">
2
+ import { Button } from "@lapismd/design-core/shadcn/button";
3
+ import * as CommandView from "@lapismd/design-core/shadcn/command-view";
4
+ import * as Popover from "@lapismd/design-core/shadcn/popover";
5
+ import CircleCheckIcon from "@lucide/svelte/icons/circle-check";
6
+ import ChevronDownIcon from "@lucide/svelte/icons/chevron-down";
7
+ import FolderGit2Icon from "@lucide/svelte/icons/folder-git-2";
8
+ import RepositoryPickerSearch from "./RepositoryPickerSearch.svelte";
9
+ import { encodeJjChangeId } from "../controllers/graph/repository-log-graph.js";
10
+ import type { RepositoryWorkspace } from "../controllers/workspaces.js";
11
+ let {
12
+ workspaces,
13
+ selected,
14
+ disabled = false,
15
+ onOpen,
16
+ onSelect,
17
+ }: {
18
+ workspaces: readonly RepositoryWorkspace[];
19
+ selected: string | null;
20
+ disabled?: boolean;
21
+ onOpen?(): void;
22
+ onSelect(workspace: string | null): void;
23
+ } = $props();
24
+ let open = $state(false),
25
+ query = $state(""),
26
+ highlighted = $state("");
27
+ let input = $state<HTMLInputElement | null>(null);
28
+ const options = $derived([
29
+ {
30
+ value: "overview",
31
+ name: "Repository overview",
32
+ description: "Browse without workspace context",
33
+ workspace: null,
34
+ },
35
+ ...workspaces.map(({ name, commit }) => ({
36
+ value: `workspace:${name}`,
37
+ name,
38
+ description: `${encodeJjChangeId(commit.change_id).slice(0, 12)} · ${commit.description.split("\n")[0] || "No description"}`,
39
+ workspace: name,
40
+ })),
41
+ ]);
42
+ const visible = $derived(
43
+ options.filter((option) =>
44
+ `${option.name} ${option.description}`
45
+ .toLocaleLowerCase()
46
+ .includes(query.trim().toLocaleLowerCase()),
47
+ ),
48
+ );
49
+ </script>
50
+
51
+ <Popover.Root
52
+ {open}
53
+ onOpenChange={(next) => {
54
+ open = next;
55
+ if (next) {
56
+ onOpen?.();
57
+ query = "";
58
+ highlighted = selected ? `workspace:${selected}` : "overview";
59
+ }
60
+ }}
61
+ >
62
+ <Popover.Trigger
63
+ >{#snippet child({ props })}
64
+ <Button
65
+ {...props}
66
+ variant="outline"
67
+ size="sm"
68
+ class="repository-review-workspace-trigger"
69
+ role="combobox"
70
+ aria-label="Repository workspace"
71
+ title="Select workspace"
72
+ {disabled}
73
+ >
74
+ <FolderGit2Icon aria-hidden="true" /><span
75
+ >{selected ?? "Repository overview"}</span
76
+ >
77
+ <ChevronDownIcon aria-hidden="true" />
78
+ </Button>
79
+ {/snippet}</Popover.Trigger
80
+ >
81
+ <Popover.Content
82
+ align="end"
83
+ role="dialog"
84
+ aria-label="Select workspace"
85
+ style="--ui-popover-width:min(28rem,calc(100vw - 2rem));--ui-popover-padding:0;--ui-popover-gap:0"
86
+ onOpenAutoFocus={(event) => {
87
+ event.preventDefault();
88
+ input?.focus();
89
+ }}
90
+ >
91
+ <CommandView.Root
92
+ bind:value={highlighted}
93
+ label="Select workspace"
94
+ shouldFilter={false}
95
+ loop
96
+ >
97
+ <RepositoryPickerSearch
98
+ grid={false}
99
+ bind:inputRef={input}
100
+ bind:query
101
+ label="Search workspaces"
102
+ placeholder="Search loaded workspaces"
103
+ closeLabel="Close workspace selector"
104
+ />
105
+ <CommandView.List aria-label="Repository workspaces">
106
+ {#if !visible.length}<CommandView.Empty
107
+ >No matching workspaces.</CommandView.Empty
108
+ >
109
+ {:else}<CommandView.Group>
110
+ {#each visible as option (option.value)}
111
+ <CommandView.Item
112
+ value={option.value}
113
+ aria-label={option.name}
114
+ data-current={option.workspace === selected || undefined}
115
+ onSelect={() => {
116
+ open = false;
117
+ onSelect(option.workspace);
118
+ }}
119
+ >
120
+ <CommandView.ItemIcon
121
+ >{#if option.workspace === selected}<CircleCheckIcon
122
+ fill="var(--foreground)"
123
+ stroke="var(--background)"
124
+ aria-hidden="true"
125
+ />
126
+ {:else}<FolderGit2Icon
127
+ aria-hidden="true"
128
+ />{/if}</CommandView.ItemIcon
129
+ >
130
+ <CommandView.ItemLabel>{option.name}</CommandView.ItemLabel>
131
+ <CommandView.ItemDescription
132
+ >{option.description}</CommandView.ItemDescription
133
+ >
134
+ </CommandView.Item>
135
+ {/each}
136
+ </CommandView.Group>{/if}
137
+ </CommandView.List>
138
+ </CommandView.Root>
139
+ </Popover.Content>
140
+ </Popover.Root>
141
+
142
+ <style>
143
+ :global(.repository-review-workspace-trigger[data-ui-component="button"]) {
144
+ min-width: 0;
145
+ max-width: 10.5rem;
146
+ flex: 0 1 auto;
147
+ height: 1.75rem;
148
+ padding-inline: 0.45rem;
149
+ font-size: 0.75rem;
150
+ --ui-button-radius: var(--radius);
151
+ }
152
+ :global(.repository-review-workspace-trigger > span) {
153
+ min-width: 0;
154
+ overflow: hidden;
155
+ text-overflow: ellipsis;
156
+ white-space: nowrap;
157
+ }
158
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { RepositoryWorkspace } from "../controllers/workspaces.js";
2
+ type $$ComponentProps = {
3
+ workspaces: readonly RepositoryWorkspace[];
4
+ selected: string | null;
5
+ disabled?: boolean;
6
+ onOpen?(): void;
7
+ onSelect(workspace: string | null): void;
8
+ };
9
+ declare const RepositoryWorkspacePicker: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryWorkspacePicker = ReturnType<typeof RepositoryWorkspacePicker>;
11
+ export default RepositoryWorkspacePicker;
@@ -0,0 +1,95 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import BackupCard from "./BackupCard.svelte";
4
+ import { Button } from "@lapismd/design-core/shadcn/button";
5
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
6
+ import GitMerge from "@lucide/svelte/icons/git-merge";
7
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
8
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
9
+ import type { AdoptionState } from "../../controllers/adoption.js";
10
+ let { controller }: { controller: AdoptionController } = $props();
11
+ let snapshot = $state<AdoptionState>({ busy: true, phase: "loading" });
12
+ onMount(() => {
13
+ const stop = controller.subscribe((value) => (snapshot = value));
14
+ void controller.refresh();
15
+ return stop;
16
+ });
17
+ </script>
18
+
19
+ <section aria-label="Original repository history" aria-busy={snapshot.busy}>
20
+ <BackupCard
21
+ title="Original repository history"
22
+ Icon={GitMerge}
23
+ description="Keep the vault’s existing JJ repository independent, or import its recorded Git ancestry into automatic history."
24
+ >
25
+ {#snippet actions()}<Button
26
+ variant="ghost"
27
+ size="icon-sm"
28
+ disabled={snapshot.busy}
29
+ aria-label="Refresh original history"
30
+ onclick={() => controller.refresh()}><RefreshCw /></Button
31
+ >{/snippet}
32
+ {#if !snapshot.data && snapshot.busy}<div
33
+ class="loading"
34
+ role="status"
35
+ aria-label="Loading original history"
36
+ >
37
+ <Skeleton style="height:2rem;width:70%" /><Skeleton
38
+ style="height:1rem;width:90%"
39
+ />
40
+ </div>
41
+ {:else if snapshot.request}<p>
42
+ An original import needs reconciliation. Resume that request or stop
43
+ tracking it. Stopping does not remove ancestry already imported.
44
+ </p>
45
+ <div class="actions">
46
+ <Button disabled={snapshot.busy} onclick={() => controller.resume()}
47
+ >Resume original import</Button
48
+ ><Button
49
+ variant="outline"
50
+ disabled={snapshot.busy}
51
+ onclick={() => controller.stop()}>Stop tracking import</Button
52
+ >
53
+ </div>
54
+ {:else if snapshot.data?.source_unavailable}<p>
55
+ Original history is unavailable. Refresh after the original repository
56
+ is accessible again.
57
+ </p>
58
+ {:else if snapshot.data?.source}<p>
59
+ Current vault files stay in place. The original repository’s operations
60
+ and evolution history remain available through the history source
61
+ selector.
62
+ </p>
63
+ <div class="actions">
64
+ <Button disabled={snapshot.busy} onclick={() => controller.adopt()}
65
+ ><GitMerge data-icon="inline-start" />Import recorded history</Button
66
+ >
67
+ </div>
68
+ {:else if snapshot.data}<p>
69
+ No separate original JJ repository was found in this vault.
70
+ </p>
71
+ {:else}<p>Refresh to discover recorded repository history.</p>{/if}
72
+ {#snippet footer()}<p>
73
+ This action requires automatic local history to be enabled. It does not
74
+ change remote synchronization settings.
75
+ </p>{/snippet}
76
+ </BackupCard>
77
+ </section>
78
+
79
+ <style>
80
+ .actions {
81
+ display: flex;
82
+ flex-wrap: wrap;
83
+ gap: 0.75rem;
84
+ margin-top: 0.75rem;
85
+ }
86
+ .loading {
87
+ display: grid;
88
+ gap: 0.75rem;
89
+ }
90
+ p {
91
+ margin: 0;
92
+ font-size: 0.8rem;
93
+ color: var(--muted-foreground);
94
+ }
95
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
2
+ type $$ComponentProps = {
3
+ controller: AdoptionController;
4
+ };
5
+ declare const AdoptionSettings: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type AdoptionSettings = ReturnType<typeof AdoptionSettings>;
7
+ export default AdoptionSettings;
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreSettingsCard/Heading/Footer (Apache-2.0).
3
+ import type { Component, Snippet } from "svelte";
4
+ import * as Card from "@lapismd/design-core/shadcn/card";
5
+ let {
6
+ title,
7
+ description,
8
+ Icon,
9
+ icon,
10
+ actions,
11
+ footer,
12
+ children,
13
+ padded = true,
14
+ }: {
15
+ title: string;
16
+ description?: string;
17
+ Icon?: Component;
18
+ icon?: Snippet;
19
+ actions?: Snippet;
20
+ footer?: Snippet;
21
+ children: Snippet;
22
+ padded?: boolean;
23
+ } = $props();
24
+ </script>
25
+
26
+ <Card.Root
27
+ size="sm"
28
+ style="gap:0;padding:0;overflow:hidden;background:var(--background)"
29
+ >
30
+ <div class="backup-card-header">
31
+ <Card.Header style="padding:0;display:flex;align-items:center;gap:.75rem">
32
+ {#if Icon || icon}<span class="backup-card-icon" aria-hidden="true">
33
+ {#if Icon}<Icon />{:else}{@render icon?.()}{/if}
34
+ </span>{/if}
35
+ <div class="backup-card-heading">
36
+ <Card.Title>{title}</Card.Title>
37
+ {#if description}<Card.Description>{description}</Card.Description>{/if}
38
+ </div>
39
+ {@render actions?.()}
40
+ </Card.Header>
41
+ </div>
42
+ <Card.Content
43
+ style={`padding:${padded ? ".85rem 1rem" : "0"};min-width:0;background:var(--background)`}
44
+ >{@render children()}</Card.Content
45
+ >
46
+ {#if footer}<Card.Footer
47
+ style="padding:.85rem 1rem;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;background:var(--background)"
48
+ >
49
+ {@render footer()}
50
+ </Card.Footer>{/if}
51
+ </Card.Root>
52
+
53
+ <style>
54
+ .backup-card-header {
55
+ padding: 0.85rem 1rem;
56
+ background: color-mix(in srgb, var(--muted) 35%, var(--card));
57
+ border-bottom: 1px solid var(--border);
58
+ }
59
+ .backup-card-heading {
60
+ flex: 1;
61
+ min-width: 0;
62
+ display: grid;
63
+ gap: 0.25rem;
64
+ }
65
+ .backup-card-icon {
66
+ display: inline-flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ flex: none;
70
+ width: 2.25rem;
71
+ height: 2.25rem;
72
+ border-radius: 50%;
73
+ background: color-mix(in srgb, var(--muted) 60%, transparent);
74
+ }
75
+ .backup-card-icon :global(svg) {
76
+ width: 1.2rem;
77
+ height: 1.2rem;
78
+ }
79
+ </style>
@@ -0,0 +1,14 @@
1
+ import type { Component, Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ title: string;
4
+ description?: string;
5
+ Icon?: Component;
6
+ icon?: Snippet;
7
+ actions?: Snippet;
8
+ footer?: Snippet;
9
+ children: Snippet;
10
+ padded?: boolean;
11
+ };
12
+ declare const BackupCard: Component<$$ComponentProps, {}, "">;
13
+ type BackupCard = ReturnType<typeof BackupCard>;
14
+ export default BackupCard;
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreWorkField.svelte (Apache-2.0).
3
+ import * as Field from "@lapismd/design-core/shadcn/field";
4
+ import type { Snippet } from "svelte";
5
+ let {
6
+ id,
7
+ label,
8
+ description,
9
+ children,
10
+ }: { id: string; label: string; description?: string; children: Snippet } =
11
+ $props();
12
+ </script>
13
+
14
+ <Field.Field class="backup-field">
15
+ <div class="backup-field-copy">
16
+ <Field.Label for={id}>{label}</Field.Label>
17
+ {#if description}<Field.Description>{description}</Field.Description>{/if}
18
+ </div>
19
+ <div class="backup-field-control">{@render children()}</div>
20
+ </Field.Field>
21
+
22
+ <style>
23
+ :global(.backup-field) {
24
+ display: grid;
25
+ grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
26
+ gap: 1rem;
27
+ align-items: start;
28
+ padding: 0.75rem 1rem;
29
+ border-bottom: 1px solid var(--border);
30
+ }
31
+ .backup-field-copy {
32
+ display: grid;
33
+ gap: 0.35rem;
34
+ min-width: 0;
35
+ }
36
+ .backup-field-control {
37
+ min-width: 0;
38
+ }
39
+ @media (max-width: 40rem) {
40
+ :global(.backup-field) {
41
+ grid-template-columns: minmax(0, 1fr);
42
+ gap: 0.65rem;
43
+ }
44
+ }
45
+ </style>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ id: string;
4
+ label: string;
5
+ description?: string;
6
+ children: Snippet;
7
+ };
8
+ declare const BackupField: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type BackupField = ReturnType<typeof BackupField>;
10
+ export default BackupField;
@@ -0,0 +1,71 @@
1
+ <script lang="ts" generics="T extends string | null">
2
+ // Adapted from jj-store StoreSettingsSelect.svelte (Apache-2.0).
3
+ import * as Select from "@lapismd/design-core/shadcn/select";
4
+ let {
5
+ id,
6
+ value = $bindable(),
7
+ options,
8
+ disabled = false,
9
+ "aria-label": ariaLabel,
10
+ onValueChange,
11
+ }: {
12
+ id?: string;
13
+ value: T;
14
+ options: readonly { value: T; label: string; disabled?: boolean }[];
15
+ disabled?: boolean;
16
+ "aria-label"?: string;
17
+ onValueChange?: (value: T) => void;
18
+ } = $props();
19
+ // Encode null/default choices without reserving a domain value.
20
+ const selected = $derived(
21
+ options.findIndex((option) => option.value === value),
22
+ );
23
+ const display = $derived(
24
+ options[selected]?.label ?? value ?? "Choose an option",
25
+ );
26
+ </script>
27
+
28
+ <Select.Root
29
+ type="single"
30
+ value={selected < 0 ? "" : String(selected)}
31
+ {disabled}
32
+ onValueChange={(next) => {
33
+ const option = next === "" ? undefined : options[Number(next)];
34
+ if (!option || option.disabled) return;
35
+ value = option.value;
36
+ onValueChange?.(value);
37
+ }}
38
+ >
39
+ <Select.Trigger
40
+ {id}
41
+ aria-label={ariaLabel ? `${ariaLabel}: ${display}` : undefined}
42
+ style="width:100%"
43
+ >
44
+ <span class="selected-label">{display}</span>
45
+ </Select.Trigger>
46
+ <Select.Content
47
+ aria-label={ariaLabel}
48
+ aria-labelledby={ariaLabel ? undefined : id ? `${id}-label` : undefined}
49
+ >
50
+ <Select.Group>
51
+ {#each options as option, index (option.value)}
52
+ <Select.Item
53
+ value={String(index)}
54
+ label={option.label}
55
+ disabled={option.disabled}
56
+ >
57
+ {option.label}
58
+ </Select.Item>
59
+ {/each}
60
+ </Select.Group>
61
+ </Select.Content>
62
+ </Select.Root>
63
+
64
+ <style>
65
+ .selected-label {
66
+ min-width: 0;
67
+ overflow: hidden;
68
+ text-overflow: ellipsis;
69
+ white-space: nowrap;
70
+ }
71
+ </style>
@@ -0,0 +1,35 @@
1
+ declare function $$render<T extends string | null>(): {
2
+ props: {
3
+ id?: string;
4
+ value: T;
5
+ options: readonly {
6
+ value: T;
7
+ label: string;
8
+ disabled?: boolean;
9
+ }[];
10
+ disabled?: boolean;
11
+ "aria-label"?: string;
12
+ onValueChange?: (value: T) => void;
13
+ };
14
+ exports: {};
15
+ bindings: "value";
16
+ slots: {};
17
+ events: {};
18
+ };
19
+ declare class __sveltets_Render<T extends string | null> {
20
+ props(): ReturnType<typeof $$render<T>>['props'];
21
+ events(): ReturnType<typeof $$render<T>>['events'];
22
+ slots(): ReturnType<typeof $$render<T>>['slots'];
23
+ bindings(): "value";
24
+ exports(): {};
25
+ }
26
+ interface $$IsomorphicComponent {
27
+ new <T extends string | null>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
28
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
29
+ } & ReturnType<__sveltets_Render<T>['exports']>;
30
+ <T extends string | null>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
31
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
32
+ }
33
+ declare const BackupSelect: $$IsomorphicComponent;
34
+ type BackupSelect<T extends string | null> = InstanceType<typeof BackupSelect<T>>;
35
+ export default BackupSelect;
@@ -0,0 +1,122 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import RepositoryShell from "../RepositoryShell.svelte";
4
+ import * as Dialog from "@lapismd/design-core/shadcn/dialog";
5
+ import type { SyncController } from "../../controllers/sync-controller.js";
6
+ import SyncConflictEditor from "./SyncConflictEditor.svelte";
7
+ import SyncSettings from "./SyncSettings.svelte";
8
+ import ForgeAccounts from "./ForgeAccounts.svelte";
9
+ import RemoteSettings from "./RemoteSettings.svelte";
10
+ import AdoptionSettings from "./AdoptionSettings.svelte";
11
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
12
+ import StorageSettings from "./StorageSettings.svelte";
13
+ import type { StorageController } from "../../controllers/storage-controller.js";
14
+ import RepositoryRestoreDialog from "../RepositoryRestoreDialog.svelte";
15
+ import type { ForgeController } from "../../controllers/forge-controller.js";
16
+ import type { RemoteController } from "../../controllers/remote-controller.js";
17
+ import type { RestoreController } from "../../controllers/restore.js";
18
+ let {
19
+ controller,
20
+ remote,
21
+ restore,
22
+ sync,
23
+ setSyncEnabled,
24
+ storage,
25
+ adoption,
26
+ }: {
27
+ controller: ForgeController;
28
+ remote?: RemoteController;
29
+ restore?: RestoreController;
30
+ sync?: SyncController;
31
+ setSyncEnabled?: (enabled: boolean) => Promise<void>;
32
+ storage?: StorageController;
33
+ adoption?: AdoptionController;
34
+ } = $props();
35
+ let conflictsOpen = $state(false);
36
+ let syncBusy = $state(false);
37
+ onMount(() => {
38
+ let active = false;
39
+ return sync?.subscribe((snapshot) => {
40
+ syncBusy = snapshot.busy;
41
+ if (active && !snapshot.busy) void remote?.refresh();
42
+ active = snapshot.busy;
43
+ });
44
+ });
45
+ </script>
46
+
47
+ <div class="backup-settings-content">
48
+ <ForgeAccounts {controller}>
49
+ {#snippet remoteSettings()}
50
+ {#if storage}<StorageSettings controller={storage} />{/if}
51
+ {#if adoption}<AdoptionSettings controller={adoption} />{/if}
52
+ {#if sync && setSyncEnabled}<SyncSettings
53
+ controller={sync}
54
+ setEnabled={setSyncEnabled}
55
+ onReview={() => (conflictsOpen = true)}
56
+ />{/if}
57
+ {#if remote}<RemoteSettings
58
+ controller={remote}
59
+ accounts={controller}
60
+ {restore}
61
+ />{/if}
62
+ {/snippet}
63
+ </ForgeAccounts>
64
+ {#if restore}<RepositoryRestoreDialog controller={restore} />{/if}
65
+ </div>
66
+ {#if sync && conflictsOpen}
67
+ <Dialog.Root
68
+ open={conflictsOpen}
69
+ onOpenChange={(value) => {
70
+ if (value || !syncBusy) conflictsOpen = value;
71
+ }}
72
+ >
73
+ <Dialog.Content
74
+ class="backup-conflicts-dialog"
75
+ showCloseButton={false}
76
+ onEscapeKeydown={(event) => {
77
+ if (syncBusy) event.preventDefault();
78
+ }}
79
+ >
80
+ <Dialog.Title class="visually-hidden"
81
+ >Resolve backup synchronization conflicts</Dialog.Title
82
+ >
83
+ <Dialog.Description class="visually-hidden"
84
+ >Review and resolve retained local and remote changes.</Dialog.Description
85
+ >
86
+ <RepositoryShell>
87
+ {#snippet surface()}<SyncConflictEditor
88
+ controller={sync}
89
+ open={conflictsOpen}
90
+ onClose={() => (conflictsOpen = false)}
91
+ />{/snippet}
92
+ <div></div>
93
+ </RepositoryShell>
94
+ </Dialog.Content>
95
+ </Dialog.Root>
96
+ {/if}
97
+
98
+ <style>
99
+ .backup-settings-content {
100
+ display: grid;
101
+ gap: 1rem;
102
+ min-width: 0;
103
+ width: 100%;
104
+ }
105
+ :global(.backup-conflicts-dialog) {
106
+ width: 100dvw;
107
+ max-width: 100dvw;
108
+ height: 100dvh;
109
+ max-height: 100dvh;
110
+ padding: 0;
111
+ gap: 0;
112
+ border: 0;
113
+ border-radius: 0;
114
+ }
115
+ :global(.backup-conflicts-dialog .visually-hidden) {
116
+ position: absolute;
117
+ width: 1px;
118
+ height: 1px;
119
+ overflow: hidden;
120
+ clip-path: inset(50%);
121
+ }
122
+ </style>
@@ -0,0 +1,18 @@
1
+ import type { SyncController } from "../../controllers/sync-controller.js";
2
+ import type { AdoptionController } from "../../controllers/adoption-controller.js";
3
+ import type { StorageController } from "../../controllers/storage-controller.js";
4
+ import type { ForgeController } from "../../controllers/forge-controller.js";
5
+ import type { RemoteController } from "../../controllers/remote-controller.js";
6
+ import type { RestoreController } from "../../controllers/restore.js";
7
+ type $$ComponentProps = {
8
+ controller: ForgeController;
9
+ remote?: RemoteController;
10
+ restore?: RestoreController;
11
+ sync?: SyncController;
12
+ setSyncEnabled?: (enabled: boolean) => Promise<void>;
13
+ storage?: StorageController;
14
+ adoption?: AdoptionController;
15
+ };
16
+ declare const BackupSettings: import("svelte").Component<$$ComponentProps, {}, "">;
17
+ type BackupSettings = ReturnType<typeof BackupSettings>;
18
+ export default BackupSettings;