@shivaedev/work-board 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +11 -11
- package/assets/agent.js +27 -31
- package/assets/native.js +34 -69
- package/assets/react.css +1 -1
- package/assets/react.js +39 -34
- package/dist/browser/diagnostics/schema.d.ts +49 -0
- package/dist/browser/diagnostics/schema.d.ts.map +1 -0
- package/dist/browser/diagnostics/schema.js +11 -0
- package/dist/browser/diagnostics/schema.js.map +1 -0
- package/dist/browser/views/ResultProjection.d.ts +245 -0
- package/dist/browser/views/ResultProjection.d.ts.map +1 -0
- package/dist/browser/views/ResultProjection.js +32 -0
- package/dist/browser/views/ResultProjection.js.map +1 -0
- package/dist/browser/views/remaining.d.ts +345 -0
- package/dist/browser/views/remaining.d.ts.map +1 -0
- package/dist/browser/views/remaining.js +21 -0
- package/dist/browser/views/remaining.js.map +1 -0
- package/dist/browser/views/schema.d.ts +715 -0
- package/dist/browser/views/schema.d.ts.map +1 -0
- package/dist/browser/views/schema.js +60 -0
- package/dist/browser/views/schema.js.map +1 -0
- package/dist/browser/views/state.d.ts +15 -0
- package/dist/browser/views/state.d.ts.map +1 -0
- package/dist/browser/views/state.js +45 -0
- package/dist/browser/views/state.js.map +1 -0
- package/dist/client/client.d.ts +5 -5
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +4 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/document/Mermaid.d.ts.map +1 -1
- package/dist/client/document/Mermaid.js +39 -10
- package/dist/client/document/Mermaid.js.map +1 -1
- package/dist/client/document/View.d.ts +5 -1
- package/dist/client/document/View.d.ts.map +1 -1
- package/dist/client/document/View.js +13 -1
- package/dist/client/document/View.js.map +1 -1
- package/dist/client/document/boardLayout.d.ts +6 -0
- package/dist/client/document/boardLayout.d.ts.map +1 -0
- package/dist/client/document/boardLayout.js +69 -0
- package/dist/client/document/boardLayout.js.map +1 -0
- package/dist/client/entry.d.ts +0 -12
- package/dist/client/entry.d.ts.map +1 -1
- package/dist/client/entry.js +0 -18
- package/dist/client/entry.js.map +1 -1
- package/dist/client/formDraft.d.ts +3 -0
- package/dist/client/formDraft.d.ts.map +1 -0
- package/dist/client/formDraft.js +8 -0
- package/dist/client/formDraft.js.map +1 -0
- package/dist/client/formFocus.d.ts.map +1 -1
- package/dist/client/formFocus.js +5 -0
- package/dist/client/formFocus.js.map +1 -1
- package/dist/client/handoffs/failureStatus.d.ts +2 -0
- package/dist/client/handoffs/failureStatus.d.ts.map +1 -0
- package/dist/client/handoffs/failureStatus.js +7 -0
- package/dist/client/handoffs/failureStatus.js.map +1 -0
- package/dist/client/page/routeQuery.d.ts +2 -7
- package/dist/client/page/routeQuery.d.ts.map +1 -1
- package/dist/client/page/routeQuery.js +0 -3
- package/dist/client/page/routeQuery.js.map +1 -1
- package/dist/client/react/Age.d.ts +9 -0
- package/dist/client/react/Age.d.ts.map +1 -0
- package/dist/client/react/Age.js +32 -0
- package/dist/client/react/Age.js.map +1 -0
- package/dist/client/react/AnswerForm.d.ts +5 -3
- package/dist/client/react/AnswerForm.d.ts.map +1 -1
- package/dist/client/react/AnswerForm.js +21 -11
- package/dist/client/react/AnswerForm.js.map +1 -1
- package/dist/client/react/AnswerPrompts.d.ts +10 -2
- package/dist/client/react/AnswerPrompts.d.ts.map +1 -1
- package/dist/client/react/AnswerPrompts.js +28 -12
- package/dist/client/react/AnswerPrompts.js.map +1 -1
- package/dist/client/react/BoardMain.d.ts +10 -0
- package/dist/client/react/BoardMain.d.ts.map +1 -0
- package/dist/client/react/BoardMain.js +19 -0
- package/dist/client/react/BoardMain.js.map +1 -0
- package/dist/client/react/BoardShell.d.ts +6 -1
- package/dist/client/react/BoardShell.d.ts.map +1 -1
- package/dist/client/react/BoardShell.js +34 -12
- package/dist/client/react/BoardShell.js.map +1 -1
- package/dist/client/react/ChangesMain.d.ts +8 -0
- package/dist/client/react/ChangesMain.d.ts.map +1 -0
- package/dist/client/react/ChangesMain.js +24 -0
- package/dist/client/react/ChangesMain.js.map +1 -0
- package/dist/client/react/DiagnosticsFleet.d.ts +6 -0
- package/dist/client/react/DiagnosticsFleet.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsFleet.js +16 -0
- package/dist/client/react/DiagnosticsFleet.js.map +1 -0
- package/dist/client/react/DiagnosticsMain.d.ts +8 -0
- package/dist/client/react/DiagnosticsMain.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsMain.js +11 -0
- package/dist/client/react/DiagnosticsMain.js.map +1 -0
- package/dist/client/react/DiagnosticsPage.d.ts +5 -0
- package/dist/client/react/DiagnosticsPage.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsPage.js +23 -0
- package/dist/client/react/DiagnosticsPage.js.map +1 -0
- package/dist/client/react/DocumentContext.d.ts.map +1 -1
- package/dist/client/react/DocumentContext.js +23 -3
- package/dist/client/react/DocumentContext.js.map +1 -1
- package/dist/client/react/DocumentMain.d.ts +2 -3
- package/dist/client/react/DocumentMain.d.ts.map +1 -1
- package/dist/client/react/DocumentMain.js +8 -4
- package/dist/client/react/DocumentMain.js.map +1 -1
- package/dist/client/react/Favorite.d.ts +5 -0
- package/dist/client/react/Favorite.d.ts.map +1 -0
- package/dist/client/react/Favorite.js +10 -0
- package/dist/client/react/Favorite.js.map +1 -0
- package/dist/client/react/FormField.d.ts +13 -0
- package/dist/client/react/FormField.d.ts.map +1 -0
- package/dist/client/react/FormField.js +39 -0
- package/dist/client/react/FormField.js.map +1 -0
- package/dist/client/react/HandoffForm.d.ts +5 -0
- package/dist/client/react/HandoffForm.d.ts.map +1 -0
- package/dist/client/react/HandoffForm.js +27 -0
- package/dist/client/react/HandoffForm.js.map +1 -0
- package/dist/client/react/HandoffPage.d.ts +5 -0
- package/dist/client/react/HandoffPage.d.ts.map +1 -0
- package/dist/client/react/HandoffPage.js +15 -0
- package/dist/client/react/HandoffPage.js.map +1 -0
- package/dist/client/react/HandoffPrompt.d.ts +6 -0
- package/dist/client/react/HandoffPrompt.d.ts.map +1 -0
- package/dist/client/react/HandoffPrompt.js +21 -0
- package/dist/client/react/HandoffPrompt.js.map +1 -0
- package/dist/client/react/Header.d.ts +11 -2
- package/dist/client/react/Header.d.ts.map +1 -1
- package/dist/client/react/Header.js +2 -2
- package/dist/client/react/Header.js.map +1 -1
- package/dist/client/react/HistoryComparison.d.ts +5 -0
- package/dist/client/react/HistoryComparison.d.ts.map +1 -0
- package/dist/client/react/HistoryComparison.js +14 -0
- package/dist/client/react/HistoryComparison.js.map +1 -0
- package/dist/client/react/HistoryRetention.d.ts +5 -0
- package/dist/client/react/HistoryRetention.d.ts.map +1 -0
- package/dist/client/react/HistoryRetention.js +28 -0
- package/dist/client/react/HistoryRetention.js.map +1 -0
- package/dist/client/react/HomeBoard.d.ts +5 -0
- package/dist/client/react/HomeBoard.d.ts.map +1 -0
- package/dist/client/react/HomeBoard.js +8 -0
- package/dist/client/react/HomeBoard.js.map +1 -0
- package/dist/client/react/InboxPage.d.ts +5 -0
- package/dist/client/react/InboxPage.d.ts.map +1 -0
- package/dist/client/react/InboxPage.js +18 -0
- package/dist/client/react/InboxPage.js.map +1 -0
- package/dist/client/react/LiveControls.d.ts +8 -0
- package/dist/client/react/LiveControls.d.ts.map +1 -0
- package/dist/client/react/LiveControls.js +51 -0
- package/dist/client/react/LiveControls.js.map +1 -0
- package/dist/client/react/Modal.d.ts +12 -0
- package/dist/client/react/Modal.d.ts.map +1 -0
- package/dist/client/react/Modal.js +62 -0
- package/dist/client/react/Modal.js.map +1 -0
- package/dist/client/react/NavigationTree.d.ts.map +1 -1
- package/dist/client/react/NavigationTree.js +2 -1
- package/dist/client/react/NavigationTree.js.map +1 -1
- package/dist/client/react/OverviewGroups.d.ts +5 -0
- package/dist/client/react/OverviewGroups.d.ts.map +1 -0
- package/dist/client/react/OverviewGroups.js +18 -0
- package/dist/client/react/OverviewGroups.js.map +1 -0
- package/dist/client/react/OverviewPage.d.ts +5 -0
- package/dist/client/react/OverviewPage.d.ts.map +1 -0
- package/dist/client/react/OverviewPage.js +16 -0
- package/dist/client/react/OverviewPage.js.map +1 -0
- package/dist/client/react/ProjectionFrame.d.ts +19 -0
- package/dist/client/react/ProjectionFrame.d.ts.map +1 -0
- package/dist/client/react/ProjectionFrame.js +85 -0
- package/dist/client/react/ProjectionFrame.js.map +1 -0
- package/dist/client/react/ProjectionMain.d.ts +10 -0
- package/dist/client/react/ProjectionMain.d.ts.map +1 -0
- package/dist/client/react/ProjectionMain.js +22 -0
- package/dist/client/react/ProjectionMain.js.map +1 -0
- package/dist/client/react/PromptOption.d.ts +12 -0
- package/dist/client/react/PromptOption.d.ts.map +1 -0
- package/dist/client/react/PromptOption.js +9 -0
- package/dist/client/react/PromptOption.js.map +1 -0
- package/dist/client/react/ReadingLibrary.d.ts +9 -0
- package/dist/client/react/ReadingLibrary.d.ts.map +1 -0
- package/dist/client/react/ReadingLibrary.js +78 -0
- package/dist/client/react/ReadingLibrary.js.map +1 -0
- package/dist/client/react/RemainingMain.d.ts +10 -0
- package/dist/client/react/RemainingMain.d.ts.map +1 -0
- package/dist/client/react/RemainingMain.js +27 -0
- package/dist/client/react/RemainingMain.js.map +1 -0
- package/dist/client/react/RespondPage.d.ts +5 -0
- package/dist/client/react/RespondPage.d.ts.map +1 -0
- package/dist/client/react/RespondPage.js +16 -0
- package/dist/client/react/RespondPage.js.map +1 -0
- package/dist/client/react/ResponseMarkdown.d.ts.map +1 -1
- package/dist/client/react/ResponseMarkdown.js +16 -2
- package/dist/client/react/ResponseMarkdown.js.map +1 -1
- package/dist/client/react/ResultCriteria.d.ts +5 -0
- package/dist/client/react/ResultCriteria.d.ts.map +1 -0
- package/dist/client/react/ResultCriteria.js +33 -0
- package/dist/client/react/ResultCriteria.js.map +1 -0
- package/dist/client/react/ResultFeedback.d.ts +5 -0
- package/dist/client/react/ResultFeedback.d.ts.map +1 -0
- package/dist/client/react/ResultFeedback.js +12 -0
- package/dist/client/react/ResultFeedback.js.map +1 -0
- package/dist/client/react/ResultPage.d.ts +5 -0
- package/dist/client/react/ResultPage.d.ts.map +1 -0
- package/dist/client/react/ResultPage.js +15 -0
- package/dist/client/react/ResultPage.js.map +1 -0
- package/dist/client/react/SavedViews.d.ts +4 -0
- package/dist/client/react/SavedViews.d.ts.map +1 -0
- package/dist/client/react/SavedViews.js +16 -0
- package/dist/client/react/SavedViews.js.map +1 -0
- package/dist/client/react/SearchDialog.d.ts +11 -0
- package/dist/client/react/SearchDialog.d.ts.map +1 -0
- package/dist/client/react/SearchDialog.js +67 -0
- package/dist/client/react/SearchDialog.js.map +1 -0
- package/dist/client/react/SearchResults.d.ts +7 -0
- package/dist/client/react/SearchResults.d.ts.map +1 -0
- package/dist/client/react/SearchResults.js +19 -0
- package/dist/client/react/SearchResults.js.map +1 -0
- package/dist/client/react/ShellApi.d.ts +11 -1
- package/dist/client/react/ShellApi.d.ts.map +1 -1
- package/dist/client/react/Sidebar.d.ts +5 -2
- package/dist/client/react/Sidebar.d.ts.map +1 -1
- package/dist/client/react/Sidebar.js +37 -2
- package/dist/client/react/Sidebar.js.map +1 -1
- package/dist/client/react/StartPage.d.ts +5 -0
- package/dist/client/react/StartPage.d.ts.map +1 -0
- package/dist/client/react/StartPage.js +5 -0
- package/dist/client/react/StartPage.js.map +1 -0
- package/dist/client/react/UpdatesToggle.d.ts +5 -0
- package/dist/client/react/UpdatesToggle.d.ts.map +1 -0
- package/dist/client/react/UpdatesToggle.js +9 -0
- package/dist/client/react/UpdatesToggle.js.map +1 -0
- package/dist/client/react/VisualControls.d.ts +17 -0
- package/dist/client/react/VisualControls.d.ts.map +1 -0
- package/dist/client/react/VisualControls.js +6 -0
- package/dist/client/react/VisualControls.js.map +1 -0
- package/dist/client/react/VisualInspection.d.ts +2 -0
- package/dist/client/react/VisualInspection.d.ts.map +1 -0
- package/dist/client/react/VisualInspection.js +26 -0
- package/dist/client/react/VisualInspection.js.map +1 -0
- package/dist/client/react/VisualViewer.d.ts +6 -0
- package/dist/client/react/VisualViewer.d.ts.map +1 -0
- package/dist/client/react/VisualViewer.js +106 -0
- package/dist/client/react/VisualViewer.js.map +1 -0
- package/dist/client/react/WorkCards.d.ts +5 -0
- package/dist/client/react/WorkCards.d.ts.map +1 -0
- package/dist/client/react/WorkCards.js +13 -0
- package/dist/client/react/WorkCards.js.map +1 -0
- package/dist/client/react/WorkControls.d.ts +5 -0
- package/dist/client/react/WorkControls.d.ts.map +1 -0
- package/dist/client/react/WorkControls.js +18 -0
- package/dist/client/react/WorkControls.js.map +1 -0
- package/dist/client/react/WorkDetail.d.ts +5 -0
- package/dist/client/react/WorkDetail.d.ts.map +1 -0
- package/dist/client/react/WorkDetail.js +12 -0
- package/dist/client/react/WorkDetail.js.map +1 -0
- package/dist/client/react/WorkItemTitle.d.ts +7 -0
- package/dist/client/react/WorkItemTitle.d.ts.map +1 -0
- package/dist/client/react/WorkItemTitle.js +6 -0
- package/dist/client/react/WorkItemTitle.js.map +1 -0
- package/dist/client/react/WorkPage.d.ts +5 -0
- package/dist/client/react/WorkPage.d.ts.map +1 -0
- package/dist/client/react/WorkPage.js +17 -0
- package/dist/client/react/WorkPage.js.map +1 -0
- package/dist/client/react/WorkResults.d.ts +5 -0
- package/dist/client/react/WorkResults.d.ts.map +1 -0
- package/dist/client/react/WorkResults.js +10 -0
- package/dist/client/react/WorkResults.js.map +1 -0
- package/dist/client/react/WorkTable.d.ts +5 -0
- package/dist/client/react/WorkTable.d.ts.map +1 -0
- package/dist/client/react/WorkTable.js +10 -0
- package/dist/client/react/WorkTable.js.map +1 -0
- package/dist/client/react/WorkTools.d.ts +5 -0
- package/dist/client/react/WorkTools.d.ts.map +1 -0
- package/dist/client/react/WorkTools.js +7 -0
- package/dist/client/react/WorkTools.js.map +1 -0
- package/dist/client/react/activeRead.d.ts +7 -0
- package/dist/client/react/activeRead.d.ts.map +1 -0
- package/dist/client/react/activeRead.js +13 -0
- package/dist/client/react/activeRead.js.map +1 -0
- package/dist/client/react/createResponse.d.ts +26 -0
- package/dist/client/react/createResponse.d.ts.map +1 -0
- package/dist/client/react/createResponse.js +29 -0
- package/dist/client/react/createResponse.js.map +1 -0
- package/dist/client/react/diagnosticsValues.d.ts +13 -0
- package/dist/client/react/diagnosticsValues.d.ts.map +1 -0
- package/dist/client/react/diagnosticsValues.js +49 -0
- package/dist/client/react/diagnosticsValues.js.map +1 -0
- package/dist/client/react/entry.js +6 -18
- package/dist/client/react/entry.js.map +1 -1
- package/dist/client/react/historyStore.d.ts +7 -0
- package/dist/client/react/historyStore.d.ts.map +1 -0
- package/dist/client/react/historyStore.js +61 -0
- package/dist/client/react/historyStore.js.map +1 -0
- package/dist/client/react/liveStatus.d.ts +16 -0
- package/dist/client/react/liveStatus.d.ts.map +1 -0
- package/dist/client/react/liveStatus.js +43 -0
- package/dist/client/react/liveStatus.js.map +1 -0
- package/dist/client/react/loadBoardPage.d.ts +1 -1
- package/dist/client/react/loadBoardPage.d.ts.map +1 -1
- package/dist/client/react/loadBoardPage.js +14 -4
- package/dist/client/react/loadBoardPage.js.map +1 -1
- package/dist/client/react/loadProjection.d.ts +674 -0
- package/dist/client/react/loadProjection.d.ts.map +1 -0
- package/dist/client/react/loadProjection.js +15 -0
- package/dist/client/react/loadProjection.js.map +1 -0
- package/dist/client/react/loadRemaining.d.ts +577 -0
- package/dist/client/react/loadRemaining.d.ts.map +1 -0
- package/dist/client/react/loadRemaining.js +19 -0
- package/dist/client/react/loadRemaining.js.map +1 -0
- package/dist/client/react/mainLocation.d.ts +6 -0
- package/dist/client/react/mainLocation.d.ts.map +1 -0
- package/dist/client/react/mainLocation.js +9 -0
- package/dist/client/react/mainLocation.js.map +1 -0
- package/dist/client/react/navigationLocation.d.ts +33 -0
- package/dist/client/react/navigationLocation.d.ts.map +1 -0
- package/dist/client/react/navigationLocation.js +22 -0
- package/dist/client/react/navigationLocation.js.map +1 -0
- package/dist/client/react/pageQuery.d.ts +5 -0
- package/dist/client/react/pageQuery.d.ts.map +1 -0
- package/dist/client/react/pageQuery.js +35 -0
- package/dist/client/react/pageQuery.js.map +1 -0
- package/dist/client/react/projectionChanges.d.ts +6 -0
- package/dist/client/react/projectionChanges.d.ts.map +1 -0
- package/dist/client/react/projectionChanges.js +16 -0
- package/dist/client/react/projectionChanges.js.map +1 -0
- package/dist/client/react/projectionRoute.d.ts +4 -0
- package/dist/client/react/projectionRoute.d.ts.map +1 -0
- package/dist/client/react/projectionRoute.js +18 -0
- package/dist/client/react/projectionRoute.js.map +1 -0
- package/dist/client/react/readerLink.d.ts +2 -0
- package/dist/client/react/readerLink.d.ts.map +1 -0
- package/dist/client/react/readerLink.js +8 -0
- package/dist/client/react/readerLink.js.map +1 -0
- package/dist/client/react/readingHistory.d.ts +38 -0
- package/dist/client/react/readingHistory.d.ts.map +1 -0
- package/dist/client/react/readingHistory.js +33 -0
- package/dist/client/react/readingHistory.js.map +1 -0
- package/dist/client/react/readingLibrary.d.ts +24 -0
- package/dist/client/react/readingLibrary.d.ts.map +1 -0
- package/dist/client/react/readingLibrary.js +18 -0
- package/dist/client/react/readingLibrary.js.map +1 -0
- package/dist/client/react/readingState.d.ts +20 -0
- package/dist/client/react/readingState.d.ts.map +1 -0
- package/dist/client/react/readingState.js +133 -0
- package/dist/client/react/readingState.js.map +1 -0
- package/dist/client/react/remainingRoute.d.ts +3 -0
- package/dist/client/react/remainingRoute.d.ts.map +1 -0
- package/dist/client/react/remainingRoute.js +19 -0
- package/dist/client/react/remainingRoute.js.map +1 -0
- package/dist/client/react/savedViews.d.ts +14 -0
- package/dist/client/react/savedViews.d.ts.map +1 -0
- package/dist/client/react/savedViews.js +87 -0
- package/dist/client/react/savedViews.js.map +1 -0
- package/dist/client/react/scheduleReading.d.ts +3 -0
- package/dist/client/react/scheduleReading.d.ts.map +1 -0
- package/dist/client/react/scheduleReading.js +36 -0
- package/dist/client/react/scheduleReading.js.map +1 -0
- package/dist/client/react/searchCommands.d.ts +11 -0
- package/dist/client/react/searchCommands.d.ts.map +1 -0
- package/dist/client/react/searchCommands.js +7 -0
- package/dist/client/react/searchCommands.js.map +1 -0
- package/dist/client/react/searchStatus.d.ts +6 -0
- package/dist/client/react/searchStatus.d.ts.map +1 -0
- package/dist/client/react/searchStatus.js +20 -0
- package/dist/client/react/searchStatus.js.map +1 -0
- package/dist/client/react/shellIds.d.ts +59 -0
- package/dist/client/react/shellIds.d.ts.map +1 -1
- package/dist/client/react/shellIds.js +59 -0
- package/dist/client/react/shellIds.js.map +1 -1
- package/dist/client/react/useAppearance.d.ts +14 -0
- package/dist/client/react/useAppearance.d.ts.map +1 -0
- package/dist/client/react/useAppearance.js +55 -0
- package/dist/client/react/useAppearance.js.map +1 -0
- package/dist/client/react/useBoardNavigation.d.ts +3 -0
- package/dist/client/react/useBoardNavigation.d.ts.map +1 -0
- package/dist/client/react/useBoardNavigation.js +129 -0
- package/dist/client/react/useBoardNavigation.js.map +1 -0
- package/dist/client/react/useDiagnosticsPolling.d.ts +3 -0
- package/dist/client/react/useDiagnosticsPolling.d.ts.map +1 -0
- package/dist/client/react/useDiagnosticsPolling.js +23 -0
- package/dist/client/react/useDiagnosticsPolling.js.map +1 -0
- package/dist/client/react/useDocumentPage.d.ts +1 -1
- package/dist/client/react/useDocumentPage.d.ts.map +1 -1
- package/dist/client/react/useFormFocus.d.ts +5 -0
- package/dist/client/react/useFormFocus.d.ts.map +1 -0
- package/dist/client/react/useFormFocus.js +46 -0
- package/dist/client/react/useFormFocus.js.map +1 -0
- package/dist/client/react/useHandoffForm.d.ts +69 -0
- package/dist/client/react/useHandoffForm.d.ts.map +1 -0
- package/dist/client/react/useHandoffForm.js +102 -0
- package/dist/client/react/useHandoffForm.js.map +1 -0
- package/dist/client/react/useHistoryComparison.d.ts +33 -0
- package/dist/client/react/useHistoryComparison.d.ts.map +1 -0
- package/dist/client/react/useHistoryComparison.js +146 -0
- package/dist/client/react/useHistoryComparison.js.map +1 -0
- package/dist/client/react/useMedia.d.ts +2 -0
- package/dist/client/react/useMedia.d.ts.map +1 -0
- package/dist/client/react/useMedia.js +19 -0
- package/dist/client/react/useMedia.js.map +1 -0
- package/dist/client/react/useResponseForm.d.ts +107 -0
- package/dist/client/react/useResponseForm.d.ts.map +1 -0
- package/dist/client/react/useResponseForm.js +138 -0
- package/dist/client/react/useResponseForm.js.map +1 -0
- package/dist/client/react/useSearchDialog.d.ts +7 -0
- package/dist/client/react/useSearchDialog.d.ts.map +1 -0
- package/dist/client/react/useSearchDialog.js +26 -0
- package/dist/client/react/useSearchDialog.js.map +1 -0
- package/dist/client/react/useSidebar.d.ts +9 -0
- package/dist/client/react/useSidebar.d.ts.map +1 -0
- package/dist/client/react/useSidebar.js +77 -0
- package/dist/client/react/useSidebar.js.map +1 -0
- package/dist/client/react/visualDimensions.d.ts +3 -0
- package/dist/client/react/visualDimensions.d.ts.map +1 -0
- package/dist/client/react/visualDimensions.js +21 -0
- package/dist/client/react/visualDimensions.js.map +1 -0
- package/dist/client/react/visualSources.d.ts +13 -0
- package/dist/client/react/visualSources.d.ts.map +1 -0
- package/dist/client/react/visualSources.js +92 -0
- package/dist/client/react/visualSources.js.map +1 -0
- package/dist/client/reconcile/normalized.d.ts +3 -0
- package/dist/client/reconcile/normalized.d.ts.map +1 -0
- package/dist/client/reconcile/{signature.js → normalized.js} +1 -37
- package/dist/client/reconcile/normalized.js.map +1 -0
- package/dist/client/responses/answerRecovery.d.ts +14 -0
- package/dist/client/responses/answerRecovery.d.ts.map +1 -0
- package/dist/client/responses/answerRecovery.js +33 -0
- package/dist/client/responses/answerRecovery.js.map +1 -0
- package/dist/client/responses/authorLabel.d.ts +1 -1
- package/dist/client/responses/authorLabel.d.ts.map +1 -1
- package/dist/client/responses/authorLabel.js +2 -2
- package/dist/client/responses/authorLabel.js.map +1 -1
- package/dist/client/responses/failure.d.ts +5 -0
- package/dist/client/responses/failure.d.ts.map +1 -0
- package/dist/client/responses/failure.js +13 -0
- package/dist/client/responses/failure.js.map +1 -0
- package/dist/client/responses/formSchema.d.ts +9 -0
- package/dist/client/responses/formSchema.d.ts.map +1 -1
- package/dist/client/responses/formSchema.js +3 -0
- package/dist/client/responses/formSchema.js.map +1 -1
- package/dist/client/responses/preview.d.ts +2 -2
- package/dist/client/responses/preview.d.ts.map +1 -1
- package/dist/client/responses/preview.js.map +1 -1
- package/dist/client/responses/retainContext.d.ts +6 -0
- package/dist/client/responses/retainContext.d.ts.map +1 -0
- package/dist/client/responses/retainContext.js +12 -0
- package/dist/client/responses/retainContext.js.map +1 -0
- package/dist/client/responses/summary.d.ts +6 -0
- package/dist/client/responses/summary.d.ts.map +1 -0
- package/dist/client/responses/summary.js +21 -0
- package/dist/client/responses/summary.js.map +1 -0
- package/dist/client/sourceChanged.d.ts +2 -0
- package/dist/client/sourceChanged.d.ts.map +1 -0
- package/dist/client/sourceChanged.js +4 -0
- package/dist/client/sourceChanged.js.map +1 -0
- package/dist/diagnostics/daemonContract.d.ts +1 -1
- package/dist/diagnostics/daemonContract.js +1 -1
- package/dist/diagnostics/daemonContract.js.map +1 -1
- package/dist/diagnostics/source.d.ts +14 -24
- package/dist/diagnostics/source.d.ts.map +1 -1
- package/dist/diagnostics/source.js +2 -9
- package/dist/diagnostics/source.js.map +1 -1
- package/dist/history/schema.d.ts +33 -0
- package/dist/history/schema.d.ts.map +1 -1
- package/dist/history/schema.js +12 -0
- package/dist/history/schema.js.map +1 -1
- package/dist/rpc/contract.d.ts +4235 -298
- package/dist/rpc/contract.d.ts.map +1 -1
- package/dist/rpc/contract.js +57 -3
- package/dist/rpc/contract.js.map +1 -1
- package/dist/rpc/handoffContract.d.ts +3 -3
- package/dist/rpc/responseContract.d.ts +5 -5
- package/dist/server/board.d.ts +4 -4
- package/dist/server/board.d.ts.map +1 -1
- package/dist/server/board.js +18 -95
- package/dist/server/board.js.map +1 -1
- package/dist/server/boardRuntime.d.ts +12 -0
- package/dist/server/boardRuntime.d.ts.map +1 -0
- package/dist/server/boardRuntime.js +37 -0
- package/dist/server/boardRuntime.js.map +1 -0
- package/dist/server/diagnostics/daemon.js +3 -3
- package/dist/server/diagnostics/daemon.js.map +1 -1
- package/dist/server/history/html.d.ts +0 -1
- package/dist/server/history/html.d.ts.map +1 -1
- package/dist/server/history/html.js +0 -3
- package/dist/server/history/html.js.map +1 -1
- package/dist/server/history/response.d.ts.map +1 -1
- package/dist/server/history/response.js +14 -1
- package/dist/server/history/response.js.map +1 -1
- package/dist/server/http/assets.d.ts +4 -4
- package/dist/server/http/assets.d.ts.map +1 -1
- package/dist/server/http/assets.js +1 -35
- package/dist/server/http/assets.js.map +1 -1
- package/dist/server/http/attachment.d.ts +2 -2
- package/dist/server/http/attachment.d.ts.map +1 -1
- package/dist/server/http/boardRoutes.d.ts +6 -0
- package/dist/server/http/boardRoutes.d.ts.map +1 -0
- package/dist/server/http/boardRoutes.js +45 -0
- package/dist/server/http/boardRoutes.js.map +1 -0
- package/dist/server/http/identity.d.ts +2 -2
- package/dist/server/http/identity.d.ts.map +1 -1
- package/dist/server/http/inbox.d.ts +1 -1
- package/dist/server/http/inbox.d.ts.map +1 -1
- package/dist/server/http/overview.d.ts +1 -1
- package/dist/server/http/overview.d.ts.map +1 -1
- package/dist/server/http/page.d.ts +2 -2
- package/dist/server/http/page.d.ts.map +1 -1
- package/dist/server/http/page.js +1 -2
- package/dist/server/http/page.js.map +1 -1
- package/dist/server/http/respond.d.ts +1 -1
- package/dist/server/http/respond.d.ts.map +1 -1
- package/dist/server/http/respond.js +1 -1
- package/dist/server/http/respond.js.map +1 -1
- package/dist/server/http/rpcPolicy.d.ts +4 -0
- package/dist/server/http/rpcPolicy.d.ts.map +1 -0
- package/dist/server/http/rpcPolicy.js +11 -0
- package/dist/server/http/rpcPolicy.js.map +1 -0
- package/dist/server/http/work.d.ts +2 -2
- package/dist/server/http/work.d.ts.map +1 -1
- package/dist/server/integration/diagnostics.d.ts +1 -1
- package/dist/server/responses/agent.d.ts +1 -1
- package/dist/server/responses/agent.d.ts.map +1 -1
- package/dist/server/responses/agent.js +2 -2
- package/dist/server/responses/agent.js.map +1 -1
- package/dist/server/responses/composerHtml.js +1 -1
- package/dist/server/responses/composerHtml.js.map +1 -1
- package/dist/server/responses/waitFor.d.ts +1 -1
- package/dist/server/responses/waitFor.d.ts.map +1 -1
- package/dist/server/rpc/HandlerOptions.d.ts +12 -0
- package/dist/server/rpc/HandlerOptions.d.ts.map +1 -0
- package/dist/server/rpc/HandlerOptions.js +2 -0
- package/dist/server/rpc/HandlerOptions.js.map +1 -0
- package/dist/server/rpc/handlers.d.ts +2 -2
- package/dist/server/rpc/handlers.d.ts.map +1 -1
- package/dist/server/rpc/handlers.js +17 -10
- package/dist/server/rpc/handlers.js.map +1 -1
- package/dist/server/serve-cli.js +8 -8
- package/dist/server/serve-cli.js.map +1 -1
- package/dist/server/serve.d.ts +2 -3
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/server/serve.js +20 -9
- package/dist/server/serve.js.map +1 -1
- package/dist/server/views/projectionQueries.d.ts +681 -0
- package/dist/server/views/projectionQueries.d.ts.map +1 -0
- package/dist/server/views/projectionQueries.js +70 -0
- package/dist/server/views/projectionQueries.js.map +1 -0
- package/dist/server/views/remainingQueries.d.ts +679 -0
- package/dist/server/views/remainingQueries.d.ts.map +1 -0
- package/dist/server/views/remainingQueries.js +58 -0
- package/dist/server/views/remainingQueries.js.map +1 -0
- package/dist/server/views/resultProjection.d.ts +420 -0
- package/dist/server/views/resultProjection.d.ts.map +1 -0
- package/dist/server/views/resultProjection.js +35 -0
- package/dist/server/views/resultProjection.js.map +1 -0
- package/dist/server/views/resultTargets.d.ts +6 -0
- package/dist/server/views/resultTargets.d.ts.map +1 -0
- package/dist/server/views/resultTargets.js +31 -0
- package/dist/server/views/resultTargets.js.map +1 -0
- package/dist/server/views/state.d.ts +8 -9
- package/dist/server/views/state.d.ts.map +1 -1
- package/dist/server/views/state.js +5 -38
- package/dist/server/views/state.js.map +1 -1
- package/dist/server/views/workStyle.d.ts.map +1 -1
- package/dist/server/views/workStyle.js +1 -0
- package/dist/server/views/workStyle.js.map +1 -1
- package/docs/delivery/decision-write-examples.md +1 -1
- package/docs/delivery/handoff-examples.md +1 -1
- package/docs/delivery/response-write-examples.md +1 -1
- package/docs/delivery/result-review-examples.md +1 -1
- package/docs/roadmap.md +7 -7
- package/package.json +52 -139
- package/src/browser/diagnostics/schema.ts +18 -0
- package/src/browser/views/ResultProjection.ts +37 -0
- package/src/browser/views/remaining.ts +26 -0
- package/src/browser/views/schema.ts +68 -0
- package/src/browser/views/state.ts +47 -0
- package/src/client/client.ts +8 -8
- package/src/client/document/Mermaid.ts +49 -9
- package/src/client/document/View.ts +14 -1
- package/src/client/document/boardLayout.ts +80 -0
- package/src/client/entry.ts +0 -24
- package/src/client/formDraft.ts +9 -0
- package/src/client/formFocus.ts +5 -0
- package/src/client/handoffs/failureStatus.ts +6 -0
- package/src/client/page/routeQuery.ts +0 -5
- package/src/client/react/Age.tsx +35 -0
- package/src/client/react/AnswerForm.tsx +88 -82
- package/src/client/react/AnswerPrompts.tsx +67 -54
- package/src/client/react/BoardMain.tsx +30 -0
- package/src/client/react/BoardShell.tsx +89 -27
- package/src/client/react/ChangesMain.tsx +68 -0
- package/src/client/react/DiagnosticsFleet.tsx +64 -0
- package/src/client/react/DiagnosticsMain.tsx +29 -0
- package/src/client/react/DiagnosticsPage.tsx +77 -0
- package/src/client/react/DocumentContext.tsx +25 -9
- package/src/client/react/DocumentMain.tsx +8 -6
- package/src/client/react/Favorite.tsx +17 -0
- package/src/client/react/FormField.tsx +68 -0
- package/src/client/react/HandoffForm.tsx +78 -0
- package/src/client/react/HandoffPage.tsx +78 -0
- package/src/client/react/HandoffPrompt.tsx +33 -0
- package/src/client/react/Header.tsx +34 -13
- package/src/client/react/HistoryComparison.tsx +60 -0
- package/src/client/react/HistoryRetention.tsx +29 -0
- package/src/client/react/HomeBoard.tsx +15 -0
- package/src/client/react/InboxPage.tsx +51 -0
- package/src/client/react/LiveControls.tsx +78 -0
- package/src/client/react/Modal.tsx +92 -0
- package/src/client/react/NavigationTree.tsx +2 -1
- package/src/client/react/OverviewGroups.tsx +61 -0
- package/src/client/react/OverviewPage.tsx +68 -0
- package/src/client/react/ProjectionFrame.tsx +140 -0
- package/src/client/react/ProjectionMain.tsx +63 -0
- package/src/client/react/PromptOption.tsx +56 -0
- package/src/client/react/ReadingLibrary.tsx +147 -0
- package/src/client/react/RemainingMain.tsx +66 -0
- package/src/client/react/RespondPage.tsx +41 -0
- package/src/client/react/ResponseMarkdown.tsx +32 -2
- package/src/client/react/ResultCriteria.tsx +78 -0
- package/src/client/react/ResultFeedback.tsx +67 -0
- package/src/client/react/ResultPage.tsx +50 -0
- package/src/client/react/SavedViews.tsx +61 -0
- package/src/client/react/SearchDialog.tsx +136 -0
- package/src/client/react/SearchResults.tsx +48 -0
- package/src/client/react/ShellApi.ts +11 -1
- package/src/client/react/Sidebar.tsx +57 -4
- package/src/client/react/StartPage.tsx +41 -0
- package/src/client/react/UpdatesToggle.tsx +13 -0
- package/src/client/react/VisualControls.tsx +59 -0
- package/src/client/react/VisualInspection.tsx +35 -0
- package/src/client/react/VisualViewer.tsx +147 -0
- package/src/client/react/WorkCards.tsx +39 -0
- package/src/client/react/WorkControls.tsx +73 -0
- package/src/client/react/WorkDetail.tsx +35 -0
- package/src/client/react/WorkItemTitle.tsx +9 -0
- package/src/client/react/WorkPage.tsx +59 -0
- package/src/client/react/WorkResults.tsx +9 -0
- package/src/client/react/WorkTable.tsx +39 -0
- package/src/client/react/WorkTools.tsx +17 -0
- package/src/client/react/activeRead.ts +15 -0
- package/src/client/react/createResponse.ts +40 -0
- package/src/client/react/diagnosticsValues.tsx +103 -0
- package/src/client/react/entry.css +20 -0
- package/src/client/react/entry.tsx +6 -19
- package/src/client/react/historyStore.ts +56 -0
- package/src/client/react/liveStatus.ts +52 -0
- package/src/client/react/loadBoardPage.ts +15 -5
- package/src/client/react/loadProjection.ts +23 -0
- package/src/client/react/loadRemaining.ts +27 -0
- package/src/client/react/mainLocation.ts +12 -0
- package/src/client/react/navigationLocation.ts +27 -0
- package/src/client/react/pageQuery.ts +38 -0
- package/src/client/react/projectionChanges.ts +21 -0
- package/src/client/react/projectionRoute.ts +21 -0
- package/src/client/react/readerLink.ts +9 -0
- package/src/client/react/readingHistory.ts +31 -0
- package/src/client/react/readingLibrary.ts +22 -0
- package/src/client/react/readingState.ts +133 -0
- package/src/client/react/remainingRoute.ts +19 -0
- package/src/client/react/savedViews.ts +84 -0
- package/src/client/react/scheduleReading.ts +41 -0
- package/src/client/react/searchCommands.ts +15 -0
- package/src/client/react/searchStatus.ts +30 -0
- package/src/client/react/shellIds.ts +59 -0
- package/src/client/react/useAppearance.ts +54 -0
- package/src/client/react/useBoardNavigation.ts +139 -0
- package/src/client/react/useDiagnosticsPolling.ts +24 -0
- package/src/client/react/useDocumentPage.ts +1 -1
- package/src/client/react/useFormFocus.ts +46 -0
- package/src/client/react/useHandoffForm.ts +105 -0
- package/src/client/react/useHistoryComparison.ts +142 -0
- package/src/client/react/useMedia.ts +19 -0
- package/src/client/react/useResponseForm.ts +147 -0
- package/src/client/react/useSearchDialog.ts +25 -0
- package/src/client/react/useSidebar.ts +81 -0
- package/src/client/react/visualDimensions.ts +20 -0
- package/src/client/react/visualSources.ts +105 -0
- package/src/client/reconcile/{signature.ts → normalized.ts} +0 -37
- package/src/client/responses/answerRecovery.ts +37 -0
- package/src/client/responses/authorLabel.ts +3 -3
- package/src/client/responses/failure.ts +13 -0
- package/src/client/responses/formSchema.ts +4 -0
- package/src/client/responses/preview.ts +2 -2
- package/src/client/responses/retainContext.ts +15 -0
- package/src/client/responses/summary.ts +25 -0
- package/src/client/sourceChanged.ts +3 -0
- package/src/diagnostics/daemonContract.ts +1 -1
- package/src/diagnostics/source.ts +5 -14
- package/src/history/schema.ts +15 -0
- package/src/rpc/contract.ts +57 -3
- package/src/server/board.ts +24 -126
- package/src/server/boardRuntime.ts +54 -0
- package/src/server/diagnostics/daemon.ts +3 -3
- package/src/server/history/html.ts +0 -3
- package/src/server/history/response.ts +15 -1
- package/src/server/http/assets.ts +2 -36
- package/src/server/http/attachment.ts +1 -1
- package/src/server/http/boardRoutes.ts +62 -0
- package/src/server/http/identity.ts +1 -1
- package/src/server/http/page.ts +2 -3
- package/src/server/http/respond.ts +1 -1
- package/src/server/http/rpcPolicy.ts +16 -0
- package/src/server/http/work.ts +1 -1
- package/src/server/responses/agent.ts +2 -2
- package/src/server/responses/composerHtml.ts +1 -1
- package/src/server/responses/waitFor.ts +1 -1
- package/src/server/rpc/HandlerOptions.ts +12 -0
- package/src/server/rpc/handlers.ts +18 -15
- package/src/server/serve-cli.ts +8 -8
- package/src/server/serve.ts +23 -10
- package/src/server/views/projectionQueries.ts +78 -0
- package/src/server/views/remainingQueries.ts +74 -0
- package/src/server/views/resultProjection.ts +45 -0
- package/src/server/views/resultTargets.ts +34 -0
- package/src/server/views/state.ts +5 -40
- package/src/server/views/workStyle.ts +1 -0
- package/dist/client/diagnostics/script.d.ts +0 -2
- package/dist/client/diagnostics/script.d.ts.map +0 -1
- package/dist/client/diagnostics/script.js +0 -31
- package/dist/client/diagnostics/script.js.map +0 -1
- package/dist/client/fieldFeedback.d.ts +0 -17
- package/dist/client/fieldFeedback.d.ts.map +0 -1
- package/dist/client/fieldFeedback.js +0 -38
- package/dist/client/fieldFeedback.js.map +0 -1
- package/dist/client/handoffs/copy.d.ts +0 -3
- package/dist/client/handoffs/copy.d.ts.map +0 -1
- package/dist/client/handoffs/copy.js +0 -47
- package/dist/client/handoffs/copy.js.map +0 -1
- package/dist/client/handoffs/fields.d.ts +0 -9
- package/dist/client/handoffs/fields.d.ts.map +0 -1
- package/dist/client/handoffs/fields.js +0 -34
- package/dist/client/handoffs/fields.js.map +0 -1
- package/dist/client/handoffs/form.d.ts +0 -36
- package/dist/client/handoffs/form.d.ts.map +0 -1
- package/dist/client/handoffs/form.js +0 -33
- package/dist/client/handoffs/form.js.map +0 -1
- package/dist/client/handoffs/setup.d.ts +0 -2
- package/dist/client/handoffs/setup.d.ts.map +0 -1
- package/dist/client/handoffs/setup.js +0 -125
- package/dist/client/handoffs/setup.js.map +0 -1
- package/dist/client/history/script.d.ts +0 -2
- package/dist/client/history/script.d.ts.map +0 -1
- package/dist/client/history/script.js +0 -128
- package/dist/client/history/script.js.map +0 -1
- package/dist/client/legacyRuntime.d.ts +0 -9
- package/dist/client/legacyRuntime.d.ts.map +0 -1
- package/dist/client/legacyRuntime.js +0 -15
- package/dist/client/legacyRuntime.js.map +0 -1
- package/dist/client/page/ageScript.d.ts +0 -2
- package/dist/client/page/ageScript.d.ts.map +0 -1
- package/dist/client/page/ageScript.js +0 -23
- package/dist/client/page/ageScript.js.map +0 -1
- package/dist/client/page/formReadingScript.d.ts +0 -2
- package/dist/client/page/formReadingScript.d.ts.map +0 -1
- package/dist/client/page/formReadingScript.js +0 -26
- package/dist/client/page/formReadingScript.js.map +0 -1
- package/dist/client/page/itemContextScript.d.ts +0 -2
- package/dist/client/page/itemContextScript.d.ts.map +0 -1
- package/dist/client/page/itemContextScript.js +0 -21
- package/dist/client/page/itemContextScript.js.map +0 -1
- package/dist/client/page/libraryScript.d.ts +0 -2
- package/dist/client/page/libraryScript.d.ts.map +0 -1
- package/dist/client/page/libraryScript.js +0 -85
- package/dist/client/page/libraryScript.js.map +0 -1
- package/dist/client/page/navigationHistoryScript.d.ts +0 -2
- package/dist/client/page/navigationHistoryScript.d.ts.map +0 -1
- package/dist/client/page/navigationHistoryScript.js +0 -47
- package/dist/client/page/navigationHistoryScript.js.map +0 -1
- package/dist/client/page/navigationScript.d.ts +0 -2
- package/dist/client/page/navigationScript.d.ts.map +0 -1
- package/dist/client/page/navigationScript.js +0 -113
- package/dist/client/page/navigationScript.js.map +0 -1
- package/dist/client/page/preferencesScript.d.ts +0 -2
- package/dist/client/page/preferencesScript.d.ts.map +0 -1
- package/dist/client/page/preferencesScript.js +0 -46
- package/dist/client/page/preferencesScript.js.map +0 -1
- package/dist/client/page/reactNavigationScript.d.ts +0 -2
- package/dist/client/page/reactNavigationScript.d.ts.map +0 -1
- package/dist/client/page/reactNavigationScript.js +0 -31
- package/dist/client/page/reactNavigationScript.js.map +0 -1
- package/dist/client/page/readingStateScript.d.ts +0 -2
- package/dist/client/page/readingStateScript.d.ts.map +0 -1
- package/dist/client/page/readingStateScript.js +0 -65
- package/dist/client/page/readingStateScript.js.map +0 -1
- package/dist/client/page/runtime.d.ts +0 -3
- package/dist/client/page/runtime.d.ts.map +0 -1
- package/dist/client/page/runtime.js +0 -111
- package/dist/client/page/runtime.js.map +0 -1
- package/dist/client/page/scripts.d.ts +0 -3
- package/dist/client/page/scripts.d.ts.map +0 -1
- package/dist/client/page/scripts.js +0 -91
- package/dist/client/page/scripts.js.map +0 -1
- package/dist/client/page/searchResultsScript.d.ts +0 -2
- package/dist/client/page/searchResultsScript.d.ts.map +0 -1
- package/dist/client/page/searchResultsScript.js +0 -64
- package/dist/client/page/searchResultsScript.js.map +0 -1
- package/dist/client/page/searchScript.d.ts +0 -2
- package/dist/client/page/searchScript.d.ts.map +0 -1
- package/dist/client/page/searchScript.js +0 -75
- package/dist/client/page/searchScript.js.map +0 -1
- package/dist/client/page/sidebarScript.d.ts +0 -2
- package/dist/client/page/sidebarScript.d.ts.map +0 -1
- package/dist/client/page/sidebarScript.js +0 -87
- package/dist/client/page/sidebarScript.js.map +0 -1
- package/dist/client/page/stateScript.d.ts +0 -2
- package/dist/client/page/stateScript.d.ts.map +0 -1
- package/dist/client/page/stateScript.js +0 -95
- package/dist/client/page/stateScript.js.map +0 -1
- package/dist/client/page/visualScript.d.ts +0 -2
- package/dist/client/page/visualScript.d.ts.map +0 -1
- package/dist/client/page/visualScript.js +0 -42
- package/dist/client/page/visualScript.js.map +0 -1
- package/dist/client/page/visualViewport.d.ts +0 -2
- package/dist/client/page/visualViewport.d.ts.map +0 -1
- package/dist/client/page/visualViewport.js +0 -87
- package/dist/client/page/visualViewport.js.map +0 -1
- package/dist/client/react/AnswerFocus.d.ts +0 -6
- package/dist/client/react/AnswerFocus.d.ts.map +0 -1
- package/dist/client/react/AnswerFocus.js +0 -12
- package/dist/client/react/AnswerFocus.js.map +0 -1
- package/dist/client/react/LegacyMain.d.ts +0 -9
- package/dist/client/react/LegacyMain.d.ts.map +0 -1
- package/dist/client/react/LegacyMain.js +0 -32
- package/dist/client/react/LegacyMain.js.map +0 -1
- package/dist/client/react/legacyPage.d.ts +0 -7
- package/dist/client/react/legacyPage.d.ts.map +0 -1
- package/dist/client/react/legacyPage.js +0 -63
- package/dist/client/react/legacyPage.js.map +0 -1
- package/dist/client/reconcile/patch.d.ts +0 -2
- package/dist/client/reconcile/patch.d.ts.map +0 -1
- package/dist/client/reconcile/patch.js +0 -64
- package/dist/client/reconcile/patch.js.map +0 -1
- package/dist/client/reconcile/signature.d.ts +0 -8
- package/dist/client/reconcile/signature.d.ts.map +0 -1
- package/dist/client/reconcile/signature.js.map +0 -1
- package/dist/client/reconcile/swap.d.ts +0 -2
- package/dist/client/reconcile/swap.d.ts.map +0 -1
- package/dist/client/reconcile/swap.js +0 -36
- package/dist/client/reconcile/swap.js.map +0 -1
- package/dist/client/responses/attach.d.ts +0 -2
- package/dist/client/responses/attach.d.ts.map +0 -1
- package/dist/client/responses/attach.js +0 -133
- package/dist/client/responses/attach.js.map +0 -1
- package/dist/client/responses/binding.d.ts +0 -3
- package/dist/client/responses/binding.d.ts.map +0 -1
- package/dist/client/responses/binding.js +0 -16
- package/dist/client/responses/binding.js.map +0 -1
- package/dist/client/responses/draft.d.ts +0 -13
- package/dist/client/responses/draft.d.ts.map +0 -1
- package/dist/client/responses/draft.js +0 -15
- package/dist/client/responses/draft.js.map +0 -1
- package/dist/client/responses/draftSession.d.ts +0 -8
- package/dist/client/responses/draftSession.d.ts.map +0 -1
- package/dist/client/responses/draftSession.js +0 -105
- package/dist/client/responses/draftSession.js.map +0 -1
- package/dist/client/responses/drafts.d.ts +0 -21
- package/dist/client/responses/drafts.d.ts.map +0 -1
- package/dist/client/responses/drafts.js +0 -68
- package/dist/client/responses/drafts.js.map +0 -1
- package/dist/client/responses/feedback.d.ts +0 -6
- package/dist/client/responses/feedback.d.ts.map +0 -1
- package/dist/client/responses/feedback.js +0 -77
- package/dist/client/responses/feedback.js.map +0 -1
- package/dist/client/responses/fields.d.ts +0 -12
- package/dist/client/responses/fields.d.ts.map +0 -1
- package/dist/client/responses/fields.js +0 -23
- package/dist/client/responses/fields.js.map +0 -1
- package/dist/client/responses/form.d.ts +0 -37
- package/dist/client/responses/form.d.ts.map +0 -1
- package/dist/client/responses/form.js +0 -43
- package/dist/client/responses/form.js.map +0 -1
- package/dist/client/responses/questionnaireControls.d.ts +0 -9
- package/dist/client/responses/questionnaireControls.d.ts.map +0 -1
- package/dist/client/responses/questionnaireControls.js +0 -82
- package/dist/client/responses/questionnaireControls.js.map +0 -1
- package/dist/client/responses/setup.d.ts +0 -2
- package/dist/client/responses/setup.d.ts.map +0 -1
- package/dist/client/responses/setup.js +0 -7
- package/dist/client/responses/setup.js.map +0 -1
- package/dist/client/responses/submit.d.ts +0 -5
- package/dist/client/responses/submit.d.ts.map +0 -1
- package/dist/client/responses/submit.js +0 -33
- package/dist/client/responses/submit.js.map +0 -1
- package/dist/client/views/savedScript.d.ts +0 -2
- package/dist/client/views/savedScript.d.ts.map +0 -1
- package/dist/client/views/savedScript.js +0 -89
- package/dist/client/views/savedScript.js.map +0 -1
- package/dist/server/diagnostics/html.d.ts +0 -8
- package/dist/server/diagnostics/html.d.ts.map +0 -1
- package/dist/server/diagnostics/html.js +0 -79
- package/dist/server/diagnostics/html.js.map +0 -1
- package/dist/server/diagnostics/page.d.ts +0 -55
- package/dist/server/diagnostics/page.d.ts.map +0 -1
- package/dist/server/diagnostics/page.js +0 -11
- package/dist/server/diagnostics/page.js.map +0 -1
- package/dist/server/handoffs/html.d.ts +0 -36
- package/dist/server/handoffs/html.d.ts.map +0 -1
- package/dist/server/handoffs/html.js +0 -31
- package/dist/server/handoffs/html.js.map +0 -1
- package/dist/server/handoffs/page.d.ts +0 -6
- package/dist/server/handoffs/page.d.ts.map +0 -1
- package/dist/server/handoffs/page.js +0 -34
- package/dist/server/handoffs/page.js.map +0 -1
- package/dist/server/http/changesPage.d.ts +0 -5
- package/dist/server/http/changesPage.d.ts.map +0 -1
- package/dist/server/http/changesPage.js +0 -13
- package/dist/server/http/changesPage.js.map +0 -1
- package/dist/server/http/readPage.d.ts +0 -4
- package/dist/server/http/readPage.d.ts.map +0 -1
- package/dist/server/http/readPage.js +0 -9
- package/dist/server/http/readPage.js.map +0 -1
- package/dist/server/http/start.d.ts +0 -5
- package/dist/server/http/start.d.ts.map +0 -1
- package/dist/server/http/start.js +0 -13
- package/dist/server/http/start.js.map +0 -1
- package/dist/server/page/startHtml.d.ts +0 -2
- package/dist/server/page/startHtml.d.ts.map +0 -1
- package/dist/server/page/startHtml.js +0 -10
- package/dist/server/page/startHtml.js.map +0 -1
- package/dist/server/responses/page.d.ts +0 -6
- package/dist/server/responses/page.d.ts.map +0 -1
- package/dist/server/responses/page.js +0 -25
- package/dist/server/responses/page.js.map +0 -1
- package/dist/server/results/criteria.d.ts +0 -3
- package/dist/server/results/criteria.d.ts.map +0 -1
- package/dist/server/results/criteria.js +0 -34
- package/dist/server/results/criteria.js.map +0 -1
- package/dist/server/results/feedback.d.ts +0 -6
- package/dist/server/results/feedback.d.ts.map +0 -1
- package/dist/server/results/feedback.js +0 -32
- package/dist/server/results/feedback.js.map +0 -1
- package/dist/server/results/page.d.ts +0 -6
- package/dist/server/results/page.d.ts.map +0 -1
- package/dist/server/results/page.js +0 -41
- package/dist/server/results/page.js.map +0 -1
- package/dist/server/rpc/transport.d.ts +0 -14
- package/dist/server/rpc/transport.d.ts.map +0 -1
- package/dist/server/rpc/transport.js +0 -15
- package/dist/server/rpc/transport.js.map +0 -1
- package/src/client/diagnostics/script.ts +0 -31
- package/src/client/fieldFeedback.ts +0 -53
- package/src/client/handoffs/copy.ts +0 -45
- package/src/client/handoffs/fields.ts +0 -38
- package/src/client/handoffs/form.ts +0 -41
- package/src/client/handoffs/setup.ts +0 -142
- package/src/client/history/script.ts +0 -127
- package/src/client/legacyRuntime.ts +0 -11
- package/src/client/page/ageScript.ts +0 -22
- package/src/client/page/formReadingScript.ts +0 -25
- package/src/client/page/itemContextScript.ts +0 -20
- package/src/client/page/libraryScript.ts +0 -84
- package/src/client/page/navigationHistoryScript.ts +0 -46
- package/src/client/page/navigationScript.ts +0 -113
- package/src/client/page/preferencesScript.ts +0 -45
- package/src/client/page/reactNavigationScript.ts +0 -30
- package/src/client/page/readingStateScript.ts +0 -64
- package/src/client/page/runtime.ts +0 -111
- package/src/client/page/scripts.ts +0 -91
- package/src/client/page/searchResultsScript.ts +0 -63
- package/src/client/page/searchScript.ts +0 -74
- package/src/client/page/sidebarScript.ts +0 -86
- package/src/client/page/stateScript.ts +0 -95
- package/src/client/page/visualScript.ts +0 -41
- package/src/client/page/visualViewport.ts +0 -86
- package/src/client/react/AnswerFocus.tsx +0 -10
- package/src/client/react/LegacyMain.tsx +0 -46
- package/src/client/react/legacyPage.ts +0 -69
- package/src/client/reconcile/patch.ts +0 -71
- package/src/client/reconcile/swap.ts +0 -37
- package/src/client/responses/attach.ts +0 -150
- package/src/client/responses/binding.ts +0 -16
- package/src/client/responses/draft.ts +0 -20
- package/src/client/responses/draftSession.ts +0 -108
- package/src/client/responses/drafts.ts +0 -82
- package/src/client/responses/feedback.ts +0 -81
- package/src/client/responses/fields.ts +0 -26
- package/src/client/responses/form.ts +0 -58
- package/src/client/responses/questionnaireControls.ts +0 -94
- package/src/client/responses/setup.ts +0 -6
- package/src/client/responses/submit.ts +0 -44
- package/src/client/views/savedScript.ts +0 -88
- package/src/server/diagnostics/html.ts +0 -93
- package/src/server/diagnostics/page.ts +0 -31
- package/src/server/handoffs/html.ts +0 -42
- package/src/server/handoffs/page.ts +0 -51
- package/src/server/http/changesPage.ts +0 -15
- package/src/server/http/readPage.ts +0 -13
- package/src/server/http/start.ts +0 -27
- package/src/server/page/startHtml.ts +0 -10
- package/src/server/responses/page.ts +0 -37
- package/src/server/results/criteria.ts +0 -37
- package/src/server/results/feedback.ts +0 -44
- package/src/server/results/page.ts +0 -63
- package/src/server/rpc/transport.ts +0 -34
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type ReactNode, useEffect, useRef } from "react";
|
|
2
|
+
|
|
3
|
+
export function Modal({
|
|
4
|
+
id,
|
|
5
|
+
title,
|
|
6
|
+
open,
|
|
7
|
+
close,
|
|
8
|
+
children,
|
|
9
|
+
opener,
|
|
10
|
+
focus,
|
|
11
|
+
returnFocus,
|
|
12
|
+
}: {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly title: string;
|
|
15
|
+
readonly open: boolean;
|
|
16
|
+
readonly close: () => void;
|
|
17
|
+
readonly children: ReactNode;
|
|
18
|
+
readonly opener?: string;
|
|
19
|
+
readonly focus?: string;
|
|
20
|
+
readonly returnFocus?: HTMLElement | undefined;
|
|
21
|
+
}) {
|
|
22
|
+
const ref = useRef<HTMLDialogElement>(null);
|
|
23
|
+
const previousRef = useRef<Element | null>(null);
|
|
24
|
+
const selectionRef = useRef<ReturnType<typeof textSelection>>(undefined);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const dialog = ref.current;
|
|
27
|
+
if (!dialog) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (open && !dialog.open) {
|
|
31
|
+
const previous = returnFocus ?? (opener ? document.getElementById(opener) : document.activeElement);
|
|
32
|
+
previousRef.current = previous;
|
|
33
|
+
selectionRef.current = textSelection(previous);
|
|
34
|
+
dialog.returnValue = "";
|
|
35
|
+
dialog.showModal();
|
|
36
|
+
if (focus) {
|
|
37
|
+
document.getElementById(focus)?.focus();
|
|
38
|
+
}
|
|
39
|
+
} else if (!open && dialog.open) {
|
|
40
|
+
dialog.close();
|
|
41
|
+
}
|
|
42
|
+
}, [open, opener, focus, returnFocus]);
|
|
43
|
+
return (
|
|
44
|
+
<dialog
|
|
45
|
+
aria-labelledby={title}
|
|
46
|
+
id={id}
|
|
47
|
+
onCancel={() => close()}
|
|
48
|
+
onClick={(event) => {
|
|
49
|
+
if (event.target !== event.currentTarget) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const bounds = event.currentTarget.getBoundingClientRect();
|
|
53
|
+
if (event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom) {
|
|
54
|
+
close();
|
|
55
|
+
}
|
|
56
|
+
}}
|
|
57
|
+
onClose={() => {
|
|
58
|
+
close();
|
|
59
|
+
const target = returnFocus ?? previousRef.current;
|
|
60
|
+
if (ref.current?.returnValue !== "navigate" && target instanceof HTMLElement) {
|
|
61
|
+
target.focus({ preventScroll: true });
|
|
62
|
+
const selection = selectionRef.current;
|
|
63
|
+
const control = textControl(target);
|
|
64
|
+
if (selection && control) {
|
|
65
|
+
control.setSelectionRange(selection.start, selection.end, selection.direction);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}}
|
|
69
|
+
onKeyDown={(event) => {
|
|
70
|
+
if (event.key === "Escape") {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
close();
|
|
73
|
+
}
|
|
74
|
+
}}
|
|
75
|
+
ref={ref}
|
|
76
|
+
>
|
|
77
|
+
{children}
|
|
78
|
+
</dialog>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function textControl(element: Element | null) {
|
|
83
|
+
return element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement ? element : undefined;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function textSelection(element: Element | null) {
|
|
87
|
+
const control = textControl(element);
|
|
88
|
+
if (!control || control.selectionStart === null || control.selectionEnd === null) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
return { direction: control.selectionDirection ?? "none", end: control.selectionEnd, start: control.selectionStart };
|
|
92
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import type { Navigation, NavigationFile, NavigationFolder } from "#browser/navigation/schema.ts";
|
|
3
|
+
import { Age } from "./Age.tsx";
|
|
3
4
|
|
|
4
5
|
function Files({ files, current }: { readonly files: readonly NavigationFile[]; readonly current: string }) {
|
|
5
6
|
return files.map((file) => (
|
|
@@ -7,7 +8,7 @@ function Files({ files, current }: { readonly files: readonly NavigationFile[];
|
|
|
7
8
|
<a aria-current={file.path === current ? "page" : undefined} href={file.href}>
|
|
8
9
|
{file.name}
|
|
9
10
|
</a>
|
|
10
|
-
<
|
|
11
|
+
<Age modified={file.modified} short />
|
|
11
12
|
</li>
|
|
12
13
|
));
|
|
13
14
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { OverviewProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { fileUrl } from "#files/url.ts";
|
|
3
|
+
|
|
4
|
+
const groups = [
|
|
5
|
+
{ empty: "No open decision requests.", kind: "decision", title: "Decisions" },
|
|
6
|
+
{ empty: "No open review requests.", kind: "review", title: "Reviews" },
|
|
7
|
+
{ empty: "No open blocker requests.", kind: "blocker", title: "Blockers" },
|
|
8
|
+
];
|
|
9
|
+
export function OverviewGroups({ entries }: { readonly entries: OverviewProjection["entries"] }) {
|
|
10
|
+
return (
|
|
11
|
+
<div className="attention-groups">
|
|
12
|
+
{groups.map((group) => (
|
|
13
|
+
<Group entries={entries.filter((entry) => entry.kind === group.kind)} group={group} key={group.kind} />
|
|
14
|
+
))}
|
|
15
|
+
</div>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function Group({ entries, group }: { readonly entries: OverviewProjection["entries"]; readonly group: (typeof groups)[number] }) {
|
|
19
|
+
return (
|
|
20
|
+
<section aria-labelledby={`attention-${group.kind}`} className="attention-group">
|
|
21
|
+
<h2 id={`attention-${group.kind}`} tabIndex={-1}>
|
|
22
|
+
{group.title}
|
|
23
|
+
<span>{entries.length}</span>
|
|
24
|
+
</h2>
|
|
25
|
+
{entries.length === 0 ? (
|
|
26
|
+
<p className="empty">{group.empty}</p>
|
|
27
|
+
) : (
|
|
28
|
+
entries.map((entry) => <Card entry={entry} key={`${entry.itemId}:${entry.id}`} />)
|
|
29
|
+
)}
|
|
30
|
+
</section>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function Card({ entry }: { readonly entry: OverviewProjection["entries"][number] }) {
|
|
34
|
+
const links = entry.unblocks.map((link, index) => (
|
|
35
|
+
<span key={link.label}>
|
|
36
|
+
{index > 0 && ", "}
|
|
37
|
+
{link.href ? <a href={link.href}>{link.label}</a> : link.label}
|
|
38
|
+
</span>
|
|
39
|
+
));
|
|
40
|
+
return (
|
|
41
|
+
<article className="attention-card" data-attention-item={entry.itemId} data-request={entry.id}>
|
|
42
|
+
<p className="work-kind">{entry.kind} request</p>
|
|
43
|
+
<h3>
|
|
44
|
+
<a href={entry.href}>{entry.title}</a>
|
|
45
|
+
</h3>
|
|
46
|
+
<p className="work-id">
|
|
47
|
+
{entry.itemId} / {entry.id}
|
|
48
|
+
</p>
|
|
49
|
+
<p className="attention-reason">{entry.reason}</p>
|
|
50
|
+
<dl>
|
|
51
|
+
<dt>Response needed from</dt>
|
|
52
|
+
<dd>{entry.responseFrom.join(", ")}</dd>
|
|
53
|
+
<dt>Recorded to unblock</dt>
|
|
54
|
+
<dd>{links}</dd>
|
|
55
|
+
</dl>
|
|
56
|
+
<a className="attention-source" href={`${fileUrl(entry.file)}#attention-request-${encodeURIComponent(entry.id)}`}>
|
|
57
|
+
Source: {entry.file}:{entry.line}
|
|
58
|
+
</a>
|
|
59
|
+
</article>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { OverviewProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { fileUrl } from "#files/url.ts";
|
|
3
|
+
import { keyed } from "./keyed.ts";
|
|
4
|
+
import { OverviewGroups } from "./OverviewGroups.tsx";
|
|
5
|
+
|
|
6
|
+
export function OverviewPage({ data }: { readonly data: OverviewProjection }) {
|
|
7
|
+
let summary = data.inboxCount > 0 ? "No explicit open attention requests recorded." : "All quiet — no explicit open requests recorded.";
|
|
8
|
+
if (data.entries.length > 0) {
|
|
9
|
+
summary = `${data.entries.length} validated open request${data.entries.length === 1 ? "" : "s"}`;
|
|
10
|
+
} else if (data.issues.length > 0) {
|
|
11
|
+
summary = "No validated open requests. Check unresolved source issues before treating this workspace as quiet.";
|
|
12
|
+
}
|
|
13
|
+
const issues = data.issues.length > 0 && (
|
|
14
|
+
<details className="view-issues">
|
|
15
|
+
<summary>Unclassified requests and source issues ({data.issues.length})</summary>
|
|
16
|
+
<p>Ambiguous or invalid requests stay outside the queues. Read their original sources.</p>
|
|
17
|
+
<ul>
|
|
18
|
+
{keyed(data.issues, (issue) => `${issue.file}:${issue.line}:${issue.message}`).map(({ key, value: issue }) => (
|
|
19
|
+
<li key={key}>
|
|
20
|
+
<a href={fileUrl(issue.file)}>
|
|
21
|
+
{issue.file}:{issue.line}
|
|
22
|
+
</a>{" "}
|
|
23
|
+
— {issue.message}
|
|
24
|
+
</li>
|
|
25
|
+
))}
|
|
26
|
+
</ul>
|
|
27
|
+
</details>
|
|
28
|
+
);
|
|
29
|
+
return (
|
|
30
|
+
<>
|
|
31
|
+
<header className="work-head">
|
|
32
|
+
<p className="work-eyebrow">WORKSPACE · OVERVIEW</p>
|
|
33
|
+
<h1>What needs a response?</h1>
|
|
34
|
+
<p>Choose a recorded request to read its context, reasoning and evidence.</p>
|
|
35
|
+
<a href="/_board/work?view=board">Browse all work</a>
|
|
36
|
+
</header>
|
|
37
|
+
{data.complete ? (
|
|
38
|
+
<>
|
|
39
|
+
<section aria-label="Inbox summary">
|
|
40
|
+
<h2>Inbox</h2>
|
|
41
|
+
<p>
|
|
42
|
+
{data.inboxCount} waiting · <a href="/_board/inbox">Open Inbox</a>
|
|
43
|
+
</p>
|
|
44
|
+
</section>
|
|
45
|
+
<p className="attention-total" role="status">
|
|
46
|
+
{summary}
|
|
47
|
+
</p>
|
|
48
|
+
<p className="attention-order">
|
|
49
|
+
Decisions, reviews, then blockers. Within each group: source title, item ID, request ID. Recipients are recorded labels.
|
|
50
|
+
</p>
|
|
51
|
+
{issues}
|
|
52
|
+
<OverviewGroups entries={data.entries} />
|
|
53
|
+
<p className="attention-footnote">
|
|
54
|
+
These are authored requests. Closing one does not verify evidence or record an answer. The Inbox also shows human-owned next actions and
|
|
55
|
+
questions; file activity and finished runs do not create requests.
|
|
56
|
+
</p>
|
|
57
|
+
</>
|
|
58
|
+
) : (
|
|
59
|
+
<>
|
|
60
|
+
<p className="attention-incomplete" role="status">
|
|
61
|
+
Workspace incomplete. Could not read {data.unavailable.join(", ")}. Requests are not counted or classified until the index is complete.
|
|
62
|
+
</p>
|
|
63
|
+
{issues}
|
|
64
|
+
</>
|
|
65
|
+
)}
|
|
66
|
+
</>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Cause, Option } from "effect";
|
|
2
|
+
import type * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
3
|
+
import type * as Atom from "effect/reactivity/Atom";
|
|
4
|
+
import { type ReactNode, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
5
|
+
import { flushSync } from "react-dom";
|
|
6
|
+
import { useQuery } from "@shivaedev/effect-react/result-state.ts";
|
|
7
|
+
import { fileUrl } from "#files/url.ts";
|
|
8
|
+
import type { MainLocation } from "./mainLocation.ts";
|
|
9
|
+
import { projectionChanges, type RenderedProjection } from "./projectionChanges.ts";
|
|
10
|
+
import type { ProjectionRoute } from "./projectionRoute.ts";
|
|
11
|
+
import type { RemainingRoute } from "./remainingRoute.ts";
|
|
12
|
+
import { shellIds } from "./shellIds.ts";
|
|
13
|
+
|
|
14
|
+
export function ProjectionFrame<A, E>({
|
|
15
|
+
atom,
|
|
16
|
+
location,
|
|
17
|
+
onPage,
|
|
18
|
+
render,
|
|
19
|
+
source,
|
|
20
|
+
route,
|
|
21
|
+
url,
|
|
22
|
+
}: {
|
|
23
|
+
readonly atom: Atom.Atom<AsyncResult.AsyncResult<A, E>>;
|
|
24
|
+
readonly location: (data: A) => MainLocation & { readonly identity?: string | undefined; readonly status: number };
|
|
25
|
+
readonly onPage: (location: MainLocation) => void;
|
|
26
|
+
readonly render: (data: A) => ReactNode;
|
|
27
|
+
readonly source?: (data: A) => string | undefined;
|
|
28
|
+
readonly route: ProjectionRoute | RemainingRoute;
|
|
29
|
+
readonly url: string;
|
|
30
|
+
}) {
|
|
31
|
+
const query = useQuery(atom);
|
|
32
|
+
const fresh = Option.getOrUndefined(query.data);
|
|
33
|
+
const [retained, setRetained] = useState<{ readonly data: A; readonly url: string }>();
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (fresh !== undefined) {
|
|
36
|
+
setRetained({ data: fresh, url });
|
|
37
|
+
}
|
|
38
|
+
}, [fresh, url]);
|
|
39
|
+
const failure = Option.getOrUndefined(Option.flatMap(query.cause, Cause.findErrorOption));
|
|
40
|
+
const missing = typeof failure === "object" && failure !== null && "_tag" in failure && failure._tag === "NotFound";
|
|
41
|
+
const conflict = typeof failure === "object" && failure !== null && "_tag" in failure && failure._tag === "Conflict";
|
|
42
|
+
const data = missing || conflict ? undefined : (fresh ?? (retained?.url === url ? retained.data : undefined));
|
|
43
|
+
const main = data === undefined ? { file: "", status: failureStatus(missing, conflict), view: projectionView(route) } : location(data);
|
|
44
|
+
const expectedSource = data === undefined ? undefined : source?.(data);
|
|
45
|
+
const hostRef = useRef<HTMLElement>(null);
|
|
46
|
+
const renderedRef = useRef<RenderedProjection | undefined>(undefined);
|
|
47
|
+
const failed = Option.isSome(query.cause);
|
|
48
|
+
useLayoutEffect(() => {
|
|
49
|
+
const element = hostRef.current;
|
|
50
|
+
if (!element || query.pending || (data === undefined && !failed)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const mainElement = element;
|
|
54
|
+
let active = true;
|
|
55
|
+
function announce() {
|
|
56
|
+
queueMicrotask(() => {
|
|
57
|
+
if (
|
|
58
|
+
!active
|
|
59
|
+
|| (expectedSource !== undefined
|
|
60
|
+
&& mainElement.querySelector<HTMLElement>(".board[data-source], .document-layout > article.doc[data-source]")?.dataset.source
|
|
61
|
+
!== expectedSource)
|
|
62
|
+
) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
renderedRef.current = projectionChanges(mainElement, renderedRef.current, url);
|
|
66
|
+
mainElement.dataset.route = url;
|
|
67
|
+
flushSync(() => onPage({ file: main.file, view: main.view }));
|
|
68
|
+
document.dispatchEvent(new Event("board-page"));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const observer = new MutationObserver((records) => {
|
|
72
|
+
if (
|
|
73
|
+
records.some(
|
|
74
|
+
(record) =>
|
|
75
|
+
record.target instanceof Element
|
|
76
|
+
&& (record.target.matches(".document-layout") || record.target.closest("article.doc, .item-introduction"))
|
|
77
|
+
&& !record.target.closest(".age"),
|
|
78
|
+
)
|
|
79
|
+
) {
|
|
80
|
+
announce();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
observer.observe(element, { attributeFilter: ["data-source"], attributes: true, childList: true, subtree: true });
|
|
84
|
+
announce();
|
|
85
|
+
return () => {
|
|
86
|
+
active = false;
|
|
87
|
+
observer.disconnect();
|
|
88
|
+
};
|
|
89
|
+
}, [data, failed, query.pending, expectedSource, main.file, main.view, onPage, url]);
|
|
90
|
+
return (
|
|
91
|
+
<>
|
|
92
|
+
<main
|
|
93
|
+
className="board-view"
|
|
94
|
+
data-file={main.file}
|
|
95
|
+
data-identity={"identity" in main ? main.identity : undefined}
|
|
96
|
+
data-projection={route}
|
|
97
|
+
data-react-projection
|
|
98
|
+
data-status={main.status}
|
|
99
|
+
data-url={route === "board" ? fileUrl(main.file) : url}
|
|
100
|
+
data-view={main.view}
|
|
101
|
+
id={shellIds.doc}
|
|
102
|
+
ref={hostRef}
|
|
103
|
+
tabIndex={-1}
|
|
104
|
+
>
|
|
105
|
+
{data === undefined ? (
|
|
106
|
+
<p className="empty" role="status">
|
|
107
|
+
{loadingMessage(query.pending, missing, failure)}
|
|
108
|
+
</p>
|
|
109
|
+
) : (
|
|
110
|
+
render(data)
|
|
111
|
+
)}
|
|
112
|
+
</main>
|
|
113
|
+
{data !== undefined && Option.isSome(query.cause) && <p role="status">Refresh failed. Your displayed view is retained.</p>}
|
|
114
|
+
</>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function loadingMessage(pending: boolean, missing: boolean, failure: unknown) {
|
|
119
|
+
if (pending) {
|
|
120
|
+
return "Opening view…";
|
|
121
|
+
}
|
|
122
|
+
if (typeof failure === "object" && failure !== null && "message" in failure && typeof failure.message === "string") {
|
|
123
|
+
return failure.message;
|
|
124
|
+
}
|
|
125
|
+
return missing ? "The board source is missing." : "This view could not be opened. Retry the link or reload the page.";
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function projectionView(route: ProjectionRoute | RemainingRoute) {
|
|
129
|
+
if (route === "board") {
|
|
130
|
+
return "";
|
|
131
|
+
}
|
|
132
|
+
return route === "respond" ? "response" : route;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function failureStatus(missing: boolean, conflict: boolean) {
|
|
136
|
+
if (missing) {
|
|
137
|
+
return 404;
|
|
138
|
+
}
|
|
139
|
+
return conflict ? 409 : 503;
|
|
140
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { documentSourceId } from "#client/document/layout.ts";
|
|
2
|
+
import { routeQueryOptions } from "#client/page/routeQuery.ts";
|
|
3
|
+
import { HomeBoard } from "./HomeBoard.tsx";
|
|
4
|
+
import { InboxPage } from "./InboxPage.tsx";
|
|
5
|
+
import type { MainLocation } from "./mainLocation.ts";
|
|
6
|
+
import { OverviewPage } from "./OverviewPage.tsx";
|
|
7
|
+
import { ProjectionFrame } from "./ProjectionFrame.tsx";
|
|
8
|
+
import type { ProjectionRoute } from "./projectionRoute.ts";
|
|
9
|
+
import type { ShellApi } from "./ShellApi.ts";
|
|
10
|
+
import { WorkPage } from "./WorkPage.tsx";
|
|
11
|
+
export function ProjectionMain({
|
|
12
|
+
api,
|
|
13
|
+
route,
|
|
14
|
+
url,
|
|
15
|
+
onPage,
|
|
16
|
+
}: {
|
|
17
|
+
readonly api: ShellApi;
|
|
18
|
+
readonly route: ProjectionRoute;
|
|
19
|
+
readonly url: string;
|
|
20
|
+
readonly onPage: (location: MainLocation) => void;
|
|
21
|
+
}) {
|
|
22
|
+
const options = { onPage, route, url };
|
|
23
|
+
switch (route) {
|
|
24
|
+
case "board":
|
|
25
|
+
return (
|
|
26
|
+
<ProjectionFrame
|
|
27
|
+
{...options}
|
|
28
|
+
atom={api.board.query({ url }, routeQueryOptions)}
|
|
29
|
+
location={(data) => ({ file: data.document.file, identity: data.document.identity, status: 200, view: "" })}
|
|
30
|
+
render={(data) => <HomeBoard data={data} />}
|
|
31
|
+
source={(data) => documentSourceId(data.document)}
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
case "work":
|
|
35
|
+
return (
|
|
36
|
+
<ProjectionFrame
|
|
37
|
+
{...options}
|
|
38
|
+
atom={api.work.query({ url }, routeQueryOptions)}
|
|
39
|
+
location={(data) => ({ file: "Work", status: data.validBoard ? 200 : 404, view: "work" })}
|
|
40
|
+
render={(data) => <WorkPage data={data} />}
|
|
41
|
+
source={(data) => (data.selected ? documentSourceId(data.selected) : undefined)}
|
|
42
|
+
/>
|
|
43
|
+
);
|
|
44
|
+
case "overview":
|
|
45
|
+
return (
|
|
46
|
+
<ProjectionFrame
|
|
47
|
+
{...options}
|
|
48
|
+
atom={api.overview.query(undefined, routeQueryOptions)}
|
|
49
|
+
location={(data) => ({ file: "Overview", status: data.complete ? 200 : 503, view: "overview" })}
|
|
50
|
+
render={(data) => <OverviewPage data={data} />}
|
|
51
|
+
/>
|
|
52
|
+
);
|
|
53
|
+
case "inbox":
|
|
54
|
+
return (
|
|
55
|
+
<ProjectionFrame
|
|
56
|
+
{...options}
|
|
57
|
+
atom={api.inbox.query(undefined, routeQueryOptions)}
|
|
58
|
+
location={(data) => ({ file: "Inbox", status: data.complete ? 200 : 503, view: "inbox" })}
|
|
59
|
+
render={(data) => <InboxPage data={data} />}
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Document } from "#browser/document/schema.ts";
|
|
2
|
+
import type { Prompt } from "#browser/responses/Prompt.ts";
|
|
3
|
+
import { ResponseMarkdown } from "./ResponseMarkdown.tsx";
|
|
4
|
+
export function PromptOption({
|
|
5
|
+
document,
|
|
6
|
+
prompt,
|
|
7
|
+
option,
|
|
8
|
+
choice,
|
|
9
|
+
index,
|
|
10
|
+
checked,
|
|
11
|
+
choose,
|
|
12
|
+
}: {
|
|
13
|
+
readonly document: Document;
|
|
14
|
+
readonly prompt: Prompt;
|
|
15
|
+
readonly option: Prompt["options"][number];
|
|
16
|
+
readonly choice: number;
|
|
17
|
+
readonly index: number;
|
|
18
|
+
readonly checked: boolean;
|
|
19
|
+
readonly choose: (id: string, checked: boolean) => void;
|
|
20
|
+
}) {
|
|
21
|
+
const source = document.metadata.options?.[choice];
|
|
22
|
+
const id = `question-${index}-${choice}`;
|
|
23
|
+
const control = (
|
|
24
|
+
<input
|
|
25
|
+
checked={checked}
|
|
26
|
+
data-option-source={option.source}
|
|
27
|
+
hidden={Boolean(source)}
|
|
28
|
+
id={id}
|
|
29
|
+
name={`choice-${prompt.id}`}
|
|
30
|
+
onChange={(event) => choose(option.id, event.currentTarget.checked)}
|
|
31
|
+
onInput={(event) => choose(option.id, event.currentTarget.checked)}
|
|
32
|
+
type={prompt.mode === "one" ? "radio" : "checkbox"}
|
|
33
|
+
value={option.id}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
return source ? (
|
|
37
|
+
<div>
|
|
38
|
+
{control}
|
|
39
|
+
<button aria-pressed={checked} className="question-choice" data-choice={option.id} onClick={() => choose(option.id, true)} type="button">
|
|
40
|
+
<strong>
|
|
41
|
+
{source.label}
|
|
42
|
+
{source.label === document.metadata.recommended && " · Recommended"}
|
|
43
|
+
</strong>
|
|
44
|
+
<small>{source.description}</small>
|
|
45
|
+
</button>
|
|
46
|
+
</div>
|
|
47
|
+
) : (
|
|
48
|
+
<div className="question-option">
|
|
49
|
+
{control}
|
|
50
|
+
<div>
|
|
51
|
+
<label htmlFor={id}>Option {option.id}</label>
|
|
52
|
+
<ResponseMarkdown file={document.file} source={option.source} />
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { type ReactNode, useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import type { Navigation, NavigationFolder } from "#browser/navigation/schema.ts";
|
|
3
|
+
import { fileUrl } from "#files/url.ts";
|
|
4
|
+
import { Modal } from "./Modal.tsx";
|
|
5
|
+
import { type Item, LibraryContext, restoreLibrary } from "./readingLibrary.ts";
|
|
6
|
+
import { shellIds } from "./shellIds.ts";
|
|
7
|
+
|
|
8
|
+
function paths(folder: NavigationFolder): string[] {
|
|
9
|
+
return [...folder.files.map((file) => file.path), ...folder.folders.flatMap(paths)];
|
|
10
|
+
}
|
|
11
|
+
export function ReadingLibrary({
|
|
12
|
+
data,
|
|
13
|
+
open,
|
|
14
|
+
close,
|
|
15
|
+
children,
|
|
16
|
+
}: {
|
|
17
|
+
readonly data: Navigation | undefined;
|
|
18
|
+
readonly open: boolean;
|
|
19
|
+
readonly close: () => void;
|
|
20
|
+
readonly children: ReactNode;
|
|
21
|
+
}) {
|
|
22
|
+
const key = `work-board:library:${document.documentElement.dataset.workspace}`;
|
|
23
|
+
const [saved, setSaved] = useState(() => restoreLibrary(key));
|
|
24
|
+
const [current, setCurrent] = useState("");
|
|
25
|
+
const savedRef = useRef(saved);
|
|
26
|
+
const visitedRef = useRef("");
|
|
27
|
+
const save = useCallback(
|
|
28
|
+
(next: Pick<typeof saved, "favorites" | "recents">) => {
|
|
29
|
+
let notice = "";
|
|
30
|
+
try {
|
|
31
|
+
localStorage.setItem(key, JSON.stringify(next));
|
|
32
|
+
} catch {
|
|
33
|
+
notice = "Reading history applies to this page only.";
|
|
34
|
+
}
|
|
35
|
+
savedRef.current = { ...next, notice };
|
|
36
|
+
setSaved(savedRef.current);
|
|
37
|
+
},
|
|
38
|
+
[key],
|
|
39
|
+
);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
function sync() {
|
|
42
|
+
const doc = document.getElementById("doc");
|
|
43
|
+
if (!doc?.dataset.route) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const file = doc.dataset.file ?? "";
|
|
47
|
+
const title = doc.querySelector("h1")?.textContent?.trim() || file;
|
|
48
|
+
document.title = title ? `${title} · Work Board` : "Work Board";
|
|
49
|
+
const active = document.querySelector<HTMLAnchorElement>('#files a[aria-current="page"]');
|
|
50
|
+
if (active) {
|
|
51
|
+
active.title = title;
|
|
52
|
+
}
|
|
53
|
+
setCurrent(file);
|
|
54
|
+
if (file && doc.querySelector("#favorite-toggle") && visitedRef.current !== `${file}:${title}`) {
|
|
55
|
+
visitedRef.current = `${file}:${title}`;
|
|
56
|
+
save({
|
|
57
|
+
favorites: savedRef.current.favorites,
|
|
58
|
+
recents: [{ file, title }, ...savedRef.current.recents.filter((item) => item.file !== file)].slice(0, 10),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
sync();
|
|
63
|
+
document.addEventListener("board-page", sync);
|
|
64
|
+
document.addEventListener("board-index-change", sync);
|
|
65
|
+
return () => {
|
|
66
|
+
document.removeEventListener("board-page", sync);
|
|
67
|
+
document.removeEventListener("board-index-change", sync);
|
|
68
|
+
};
|
|
69
|
+
}, [save]);
|
|
70
|
+
const available = new Set(data ? [...paths(data.tree), ...data.records.files.map((file) => file.path)] : []);
|
|
71
|
+
return (
|
|
72
|
+
<LibraryContext.Provider
|
|
73
|
+
value={{
|
|
74
|
+
favorites: saved.favorites,
|
|
75
|
+
toggle: (file, title) =>
|
|
76
|
+
save({
|
|
77
|
+
favorites: savedRef.current.favorites.some((item) => item.file === file)
|
|
78
|
+
? savedRef.current.favorites.filter((item) => item.file !== file)
|
|
79
|
+
: [...savedRef.current.favorites, { file, title }],
|
|
80
|
+
recents: savedRef.current.recents,
|
|
81
|
+
}),
|
|
82
|
+
}}
|
|
83
|
+
>
|
|
84
|
+
{children}
|
|
85
|
+
<Modal close={close} id={shellIds.libraryDialog} open={open} opener="library-open" title="library-title">
|
|
86
|
+
<div className="search-header">
|
|
87
|
+
<h2 id={shellIds.libraryTitle}>Reading history</h2>
|
|
88
|
+
<button id={shellIds.libraryClose} onClick={() => close()} type="button">
|
|
89
|
+
Close
|
|
90
|
+
</button>
|
|
91
|
+
</div>
|
|
92
|
+
<div className="reading-library" id={shellIds.readingLibrary}>
|
|
93
|
+
<LibraryList available={available} close={close} current={current} items={saved.favorites} title="Favorites" />
|
|
94
|
+
<LibraryList available={available} close={close} current={current} items={saved.recents} title="Recent documents" />
|
|
95
|
+
{saved.notice !== "" && (
|
|
96
|
+
<p className="library-status" role="status">
|
|
97
|
+
{saved.notice}
|
|
98
|
+
</p>
|
|
99
|
+
)}
|
|
100
|
+
{saved.notice === "" && saved.favorites.length + saved.recents.length === 0 && "No recent documents yet."}
|
|
101
|
+
</div>
|
|
102
|
+
</Modal>
|
|
103
|
+
</LibraryContext.Provider>
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
function LibraryList({
|
|
107
|
+
title,
|
|
108
|
+
items,
|
|
109
|
+
available,
|
|
110
|
+
current,
|
|
111
|
+
close,
|
|
112
|
+
}: {
|
|
113
|
+
readonly title: string;
|
|
114
|
+
readonly items: readonly Item[];
|
|
115
|
+
readonly available: ReadonlySet<string>;
|
|
116
|
+
readonly current: string;
|
|
117
|
+
readonly close: () => void;
|
|
118
|
+
}) {
|
|
119
|
+
function handleCloseLink(event: React.MouseEvent<HTMLAnchorElement>) {
|
|
120
|
+
event.currentTarget.closest("dialog")?.close("navigate");
|
|
121
|
+
close();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (items.length === 0) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return (
|
|
128
|
+
<>
|
|
129
|
+
<h2 className="nav-heading">{title}</h2>
|
|
130
|
+
<ul>
|
|
131
|
+
{items.map((item) => (
|
|
132
|
+
<li key={item.file}>
|
|
133
|
+
<a
|
|
134
|
+
aria-current={item.file === current ? "page" : undefined}
|
|
135
|
+
className={available.has(item.file) ? undefined : "missing"}
|
|
136
|
+
href={fileUrl(item.file)}
|
|
137
|
+
onClick={handleCloseLink}
|
|
138
|
+
>
|
|
139
|
+
{item.title}
|
|
140
|
+
{available.has(item.file) ? "" : " (missing)"}
|
|
141
|
+
</a>
|
|
142
|
+
</li>
|
|
143
|
+
))}
|
|
144
|
+
</ul>
|
|
145
|
+
</>
|
|
146
|
+
);
|
|
147
|
+
}
|