@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
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
1
2
|
import type { Navigation } from "#browser/navigation/schema.ts";
|
|
2
3
|
import { InboxCount } from "./Header.tsx";
|
|
3
|
-
import type { MainLocation } from "./
|
|
4
|
+
import type { MainLocation } from "./mainLocation.ts";
|
|
4
5
|
import { NavigationTree } from "./NavigationTree.tsx";
|
|
5
6
|
import { shellIds } from "./shellIds.ts";
|
|
7
|
+
import type { SidebarControls } from "./useSidebar.ts";
|
|
6
8
|
|
|
7
9
|
const views = [
|
|
8
10
|
["overview", "Overview"],
|
|
@@ -10,9 +12,60 @@ const views = [
|
|
|
10
12
|
["changes", "Changes"],
|
|
11
13
|
["diagnostics", "Diagnostics"],
|
|
12
14
|
] as const;
|
|
13
|
-
export function Sidebar({
|
|
15
|
+
export function Sidebar({
|
|
16
|
+
data,
|
|
17
|
+
main,
|
|
18
|
+
home,
|
|
19
|
+
controls,
|
|
20
|
+
openLibrary,
|
|
21
|
+
}: {
|
|
22
|
+
readonly data: Navigation | undefined;
|
|
23
|
+
readonly main: MainLocation;
|
|
24
|
+
readonly home: boolean;
|
|
25
|
+
readonly controls: SidebarControls;
|
|
26
|
+
readonly openLibrary: () => void;
|
|
27
|
+
}) {
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!controls.open) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const frame = requestAnimationFrame(() => {
|
|
33
|
+
const selected = main.file;
|
|
34
|
+
const tree = document.getElementById("files");
|
|
35
|
+
const active = tree?.querySelector('a[aria-current="page"]');
|
|
36
|
+
if (!(data && selected && tree && active)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (active.closest("details:not([open])")) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const bounds = tree.getBoundingClientRect();
|
|
43
|
+
const row = active.getBoundingClientRect();
|
|
44
|
+
if (row.top < bounds.top) {
|
|
45
|
+
tree.scrollTop += row.top - bounds.top;
|
|
46
|
+
} else if (row.bottom > bounds.bottom) {
|
|
47
|
+
tree.scrollTop += row.bottom - bounds.bottom;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return () => cancelAnimationFrame(frame);
|
|
51
|
+
}, [data, main.file, controls.open]);
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const sidebar = document.getElementById("sidebar");
|
|
55
|
+
if (controls.narrow && controls.open) {
|
|
56
|
+
sidebar?.setAttribute("aria-modal", "true");
|
|
57
|
+
} else {
|
|
58
|
+
sidebar?.removeAttribute("aria-modal");
|
|
59
|
+
}
|
|
60
|
+
}, [controls.narrow, controls.open]);
|
|
14
61
|
return (
|
|
15
|
-
<aside
|
|
62
|
+
<aside
|
|
63
|
+
aria-label="Workspace navigation"
|
|
64
|
+
className="sidebar"
|
|
65
|
+
hidden={!controls.open}
|
|
66
|
+
id={shellIds.sidebar}
|
|
67
|
+
role={controls.narrow && controls.open ? "dialog" : undefined}
|
|
68
|
+
>
|
|
16
69
|
<a className="brand" href="/">
|
|
17
70
|
work board<span>Local workspace</span>
|
|
18
71
|
</a>
|
|
@@ -34,7 +87,7 @@ export function Sidebar({ data, main, home }: { readonly data: Navigation | unde
|
|
|
34
87
|
</a>
|
|
35
88
|
))}
|
|
36
89
|
</nav>
|
|
37
|
-
<button aria-controls="library-dialog" aria-haspopup="dialog"
|
|
90
|
+
<button aria-controls="library-dialog" aria-haspopup="dialog" id={shellIds.libraryOpen} onClick={() => openLibrary()} type="button">
|
|
38
91
|
Recent documents
|
|
39
92
|
</button>
|
|
40
93
|
<a className="start-open" href="/_board/start" id={shellIds.startOpen}>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { StartProjection } from "#browser/views/remaining.ts";
|
|
2
|
+
export function StartPage({ data }: { readonly data: StartProjection }) {
|
|
3
|
+
return (
|
|
4
|
+
<article className="doc onboarding">
|
|
5
|
+
<h1>{data.empty ? "Start your local workspace" : "Project and report templates"}</h1>
|
|
6
|
+
<p>
|
|
7
|
+
Work Board reads Markdown files from your workspace folder. Use your editor or existing agent tools to create and update them; this viewer
|
|
8
|
+
does not write project files.
|
|
9
|
+
</p>
|
|
10
|
+
<ol>
|
|
11
|
+
<li>Choose a template below. Focus its text area, select all, and copy the Markdown.</li>
|
|
12
|
+
<li>Save it in the served folder with the suggested filename, or adjust its links to your chosen filenames.</li>
|
|
13
|
+
<li>
|
|
14
|
+
Replace the example IDs with unique stable IDs and update every matching relationship and criterion reference. Frontmatter is optional;
|
|
15
|
+
ordinary Markdown and existing heading boards also work.
|
|
16
|
+
</li>
|
|
17
|
+
<li>
|
|
18
|
+
Fill in real context and observations. Work Board discovers saved files automatically. Start with the project, then follow the investigation
|
|
19
|
+
and result links.
|
|
20
|
+
</li>
|
|
21
|
+
</ol>
|
|
22
|
+
<p>
|
|
23
|
+
Unknown checks stay unknown. Add criterion evidence only after a real observation; a finished agent run is not verified acceptance. No project
|
|
24
|
+
content is created or marked seen by opening these templates.
|
|
25
|
+
</p>
|
|
26
|
+
{data.templates.map((template) => (
|
|
27
|
+
<section className="start-template" key={template.file}>
|
|
28
|
+
<h2>{template.label}</h2>
|
|
29
|
+
<p>
|
|
30
|
+
Suggested file: <code>{template.file}</code>
|
|
31
|
+
</p>
|
|
32
|
+
<details data-key={`template:${template.file}`}>
|
|
33
|
+
<summary>Read and copy {template.label.toLowerCase()} Markdown</summary>
|
|
34
|
+
<label htmlFor={`template-${template.file}`}>{template.label} template Markdown</label>
|
|
35
|
+
<textarea defaultValue={template.source} id={`template-${template.file}`} readOnly rows={16} spellCheck={false} />
|
|
36
|
+
</details>
|
|
37
|
+
</section>
|
|
38
|
+
))}
|
|
39
|
+
</article>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useAtomSet, useAtomValue } from "@effect/atom-react";
|
|
2
|
+
import type { BrowserClient } from "#client/client.ts";
|
|
3
|
+
import { shellIds } from "./shellIds.ts";
|
|
4
|
+
|
|
5
|
+
export function UpdatesToggle({ client }: { readonly client: BrowserClient }) {
|
|
6
|
+
const paused = useAtomValue(client.updates.paused);
|
|
7
|
+
const setPaused = useAtomSet(client.updates.paused);
|
|
8
|
+
return (
|
|
9
|
+
<button aria-pressed={paused} id={shellIds.updatesToggle} onClick={() => setPaused((value) => !value)} type="button">
|
|
10
|
+
{paused ? "Resume updates" : "Pause updates"}
|
|
11
|
+
</button>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { shellIds } from "./shellIds.ts";
|
|
2
|
+
|
|
3
|
+
interface ControlsProps {
|
|
4
|
+
readonly baseWidth: number;
|
|
5
|
+
readonly count: number;
|
|
6
|
+
readonly filename: string;
|
|
7
|
+
readonly href: string | undefined;
|
|
8
|
+
readonly image: boolean;
|
|
9
|
+
readonly onActual: () => void;
|
|
10
|
+
readonly onFit: () => void;
|
|
11
|
+
readonly onFullscreen: () => void;
|
|
12
|
+
readonly onMove: (offset: number) => void;
|
|
13
|
+
readonly onZoom: (scale: number) => void;
|
|
14
|
+
readonly scale: number;
|
|
15
|
+
readonly selected: number;
|
|
16
|
+
}
|
|
17
|
+
export function VisualControls({
|
|
18
|
+
selected,
|
|
19
|
+
count,
|
|
20
|
+
image,
|
|
21
|
+
scale,
|
|
22
|
+
baseWidth,
|
|
23
|
+
href,
|
|
24
|
+
filename,
|
|
25
|
+
onMove,
|
|
26
|
+
onZoom,
|
|
27
|
+
onFit,
|
|
28
|
+
onActual,
|
|
29
|
+
onFullscreen,
|
|
30
|
+
}: ControlsProps) {
|
|
31
|
+
return (
|
|
32
|
+
<fieldset aria-label="Visual controls" className="visual-bar">
|
|
33
|
+
<button disabled={selected <= 0} hidden={!image} id={shellIds.visualPrevious} onClick={() => onMove(-1)} type="button">
|
|
34
|
+
Previous image
|
|
35
|
+
</button>
|
|
36
|
+
<button disabled={selected >= count - 1} hidden={!image} id={shellIds.visualNext} onClick={() => onMove(1)} type="button">
|
|
37
|
+
Next image
|
|
38
|
+
</button>
|
|
39
|
+
<button aria-label="Zoom out" id={shellIds.visualOut} onClick={() => onZoom(Math.max(25, scale / 1.5))} type="button">
|
|
40
|
+
−
|
|
41
|
+
</button>
|
|
42
|
+
<button id={shellIds.visualFit} onClick={onFit} type="button">
|
|
43
|
+
{scale === 100 && !baseWidth ? "Fit" : `${Math.round(scale)}% · Fit`}
|
|
44
|
+
</button>
|
|
45
|
+
<button aria-pressed={Boolean(baseWidth)} id={shellIds.visualActual} onClick={onActual} type="button">
|
|
46
|
+
Actual size
|
|
47
|
+
</button>
|
|
48
|
+
<button aria-label="Zoom in" id={shellIds.visualIn} onClick={() => onZoom(Math.min(800, scale * 1.5))} type="button">
|
|
49
|
+
+
|
|
50
|
+
</button>
|
|
51
|
+
<button id={shellIds.visualFullscreen} onClick={onFullscreen} type="button">
|
|
52
|
+
Fullscreen
|
|
53
|
+
</button>
|
|
54
|
+
<a aria-disabled={!href} download={filename} href={href} id={shellIds.visualDownload}>
|
|
55
|
+
Save locally
|
|
56
|
+
</a>
|
|
57
|
+
</fieldset>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { Modal } from "./Modal.tsx";
|
|
3
|
+
import { shellIds } from "./shellIds.ts";
|
|
4
|
+
import { VisualViewer } from "./VisualViewer.tsx";
|
|
5
|
+
import { useVisualSources, type VisualSelection } from "./visualSources.ts";
|
|
6
|
+
|
|
7
|
+
export function VisualInspection() {
|
|
8
|
+
const [selection, setSelection] = useState<VisualSelection>();
|
|
9
|
+
const originRef = useRef<HTMLElement | undefined>(undefined);
|
|
10
|
+
const inspect = useCallback((next: VisualSelection) => {
|
|
11
|
+
originRef.current = next.origin;
|
|
12
|
+
setSelection(next);
|
|
13
|
+
}, []);
|
|
14
|
+
useVisualSources(inspect);
|
|
15
|
+
const close = useCallback(() => {
|
|
16
|
+
setSelection(undefined);
|
|
17
|
+
const origin = originRef.current;
|
|
18
|
+
(origin?.isConnected ? origin : document.getElementById("doc"))?.focus();
|
|
19
|
+
}, []);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
window.addEventListener("pagehide", close);
|
|
22
|
+
return () => window.removeEventListener("pagehide", close);
|
|
23
|
+
}, [close]);
|
|
24
|
+
return (
|
|
25
|
+
<Modal
|
|
26
|
+
close={close}
|
|
27
|
+
id={shellIds.visualDialog}
|
|
28
|
+
open={selection !== undefined}
|
|
29
|
+
returnFocus={originRef.current?.isConnected ? originRef.current : (document.getElementById("doc") ?? undefined)}
|
|
30
|
+
title="visual-title"
|
|
31
|
+
>
|
|
32
|
+
{selection ? <VisualViewer close={close} key={selection.origin.dataset.localImage ?? "drawing"} selection={selection} /> : null}
|
|
33
|
+
</Modal>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { shellIds } from "./shellIds.ts";
|
|
3
|
+
import { VisualControls } from "./VisualControls.tsx";
|
|
4
|
+
import { graphicWidth, visualFilename } from "./visualDimensions.ts";
|
|
5
|
+
import type { VisualSelection } from "./visualSources.ts";
|
|
6
|
+
|
|
7
|
+
export function VisualViewer({ selection, close }: { readonly selection: VisualSelection; readonly close: () => void }) {
|
|
8
|
+
const [selected, setSelected] = useState(selection.selected);
|
|
9
|
+
const [scale, setScale] = useState(100);
|
|
10
|
+
const [baseWidth, setBaseWidth] = useState(0);
|
|
11
|
+
const [status, setStatus] = useState("");
|
|
12
|
+
const [stale, setStale] = useState(false);
|
|
13
|
+
const [objectUrl, setObjectUrl] = useState<string>();
|
|
14
|
+
const stageRef = useRef<HTMLDivElement>(null);
|
|
15
|
+
const contentRef = useRef<HTMLDivElement>(null);
|
|
16
|
+
const viewportRef = useRef<HTMLDivElement>(null);
|
|
17
|
+
const image = selection.images[selected];
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!selection.drawing) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const copy = selection.drawing.cloneNode(true);
|
|
23
|
+
contentRef.current?.replaceChildren(copy);
|
|
24
|
+
const url = URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(selection.drawing)], { type: "image/svg+xml" }));
|
|
25
|
+
setObjectUrl(url);
|
|
26
|
+
return () => URL.revokeObjectURL(url);
|
|
27
|
+
}, [selection.drawing]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
function changed() {
|
|
30
|
+
setStale(true);
|
|
31
|
+
setStatus("Source updated. This preview is the drawing/image opened earlier; close and reopen to inspect or save the latest source.");
|
|
32
|
+
}
|
|
33
|
+
document.addEventListener("board-page", changed);
|
|
34
|
+
return () => document.removeEventListener("board-page", changed);
|
|
35
|
+
}, []);
|
|
36
|
+
function handleFitVisual() {
|
|
37
|
+
setBaseWidth(0);
|
|
38
|
+
setScale(100);
|
|
39
|
+
if (viewportRef.current) {
|
|
40
|
+
viewportRef.current.scrollTop = 0;
|
|
41
|
+
viewportRef.current.scrollLeft = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function handleMove(offset: number) {
|
|
45
|
+
setSelected((current) => Math.max(0, Math.min(selection.images.length - 1, current + offset)));
|
|
46
|
+
handleFitVisual();
|
|
47
|
+
setStatus("");
|
|
48
|
+
}
|
|
49
|
+
function handleActual() {
|
|
50
|
+
const graphic = contentRef.current?.firstElementChild;
|
|
51
|
+
const width = graphicWidth(graphic);
|
|
52
|
+
if (!width) {
|
|
53
|
+
setStatus("Original dimensions unavailable; Fit and zoom remain available.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setBaseWidth(width);
|
|
57
|
+
setScale(100);
|
|
58
|
+
}
|
|
59
|
+
async function handleFullscreen() {
|
|
60
|
+
try {
|
|
61
|
+
if (document.fullscreenElement) {
|
|
62
|
+
await document.exitFullscreen();
|
|
63
|
+
} else {
|
|
64
|
+
await stageRef.current?.requestFullscreen();
|
|
65
|
+
}
|
|
66
|
+
} catch {
|
|
67
|
+
setStatus("Fullscreen is unavailable here; the scrollable viewer remains available.");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
const stage = stageRef.current;
|
|
72
|
+
const graphic = contentRef.current?.querySelector("img");
|
|
73
|
+
if (viewportRef.current) {
|
|
74
|
+
viewportRef.current.tabIndex = 0;
|
|
75
|
+
}
|
|
76
|
+
function failed() {
|
|
77
|
+
setStatus("Image unavailable. Check the local path, supported type, workspace boundary and 16 MiB limit.");
|
|
78
|
+
}
|
|
79
|
+
function key(event: KeyboardEvent) {
|
|
80
|
+
if (selected < 0 || !["ArrowLeft", "ArrowRight"].includes(event.key)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
setSelected((current) => Math.max(0, Math.min(selection.images.length - 1, current + (event.key === "ArrowLeft" ? -1 : 1))));
|
|
85
|
+
setBaseWidth(0);
|
|
86
|
+
setScale(100);
|
|
87
|
+
setStatus("");
|
|
88
|
+
}
|
|
89
|
+
stage?.addEventListener("keydown", key);
|
|
90
|
+
graphic?.addEventListener("error", failed);
|
|
91
|
+
return () => {
|
|
92
|
+
stage?.removeEventListener("keydown", key);
|
|
93
|
+
graphic?.removeEventListener("error", failed);
|
|
94
|
+
};
|
|
95
|
+
}, [selected, selection.images.length]);
|
|
96
|
+
useEffect(
|
|
97
|
+
() => () => {
|
|
98
|
+
if (stageRef.current?.contains(document.fullscreenElement)) {
|
|
99
|
+
void document.exitFullscreen().catch(() => undefined);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
[],
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
const href = stale || status.startsWith("Image unavailable") ? undefined : (image?.local ?? objectUrl);
|
|
106
|
+
const filename = visualFilename(image?.local);
|
|
107
|
+
return (
|
|
108
|
+
<div id={shellIds.visualStage} ref={stageRef}>
|
|
109
|
+
<div className="visual-bar">
|
|
110
|
+
<h2 id={shellIds.visualTitle}>Visual evidence</h2>
|
|
111
|
+
<button id={shellIds.visualClose} onClick={() => close()} type="button">
|
|
112
|
+
Close
|
|
113
|
+
</button>
|
|
114
|
+
</div>
|
|
115
|
+
<p id={shellIds.visualContext}>
|
|
116
|
+
{image ? `${image.alt || "Local image"} · ${selected + 1} of ${selection.images.length} · ${image.local}` : "Mermaid diagram"} ·{" "}
|
|
117
|
+
{document.getElementById("doc")?.dataset.file}
|
|
118
|
+
{image ? "" : " · Current drawing"}
|
|
119
|
+
</p>
|
|
120
|
+
<VisualControls
|
|
121
|
+
baseWidth={baseWidth}
|
|
122
|
+
count={selection.images.length}
|
|
123
|
+
filename={filename}
|
|
124
|
+
href={href}
|
|
125
|
+
image={image !== undefined}
|
|
126
|
+
onActual={handleActual}
|
|
127
|
+
onFit={handleFitVisual}
|
|
128
|
+
onFullscreen={handleFullscreen}
|
|
129
|
+
onMove={handleMove}
|
|
130
|
+
onZoom={setScale}
|
|
131
|
+
scale={scale}
|
|
132
|
+
selected={selected}
|
|
133
|
+
/>
|
|
134
|
+
<p id={shellIds.visualStatus} role="status">
|
|
135
|
+
{status}
|
|
136
|
+
</p>
|
|
137
|
+
<section aria-label="Scrollable visual" id={shellIds.visualViewport} ref={viewportRef}>
|
|
138
|
+
<div id={shellIds.visualContent} ref={contentRef} style={{ width: baseWidth ? `${(baseWidth * scale) / 100}px` : `${scale}%` }}>
|
|
139
|
+
{image ? <img alt={image.alt} src={image.src} /> : null}
|
|
140
|
+
</div>
|
|
141
|
+
</section>
|
|
142
|
+
<p className="visual-help">
|
|
143
|
+
Arrow keys choose images · Zoom and scroll to inspect · Escape returns to the source. Recorded evidence does not verify acceptance.
|
|
144
|
+
</p>
|
|
145
|
+
</div>
|
|
146
|
+
);
|
|
147
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import type { State } from "#browser/views/state.ts";
|
|
3
|
+
import { WorkItemTitle } from "./WorkItemTitle.tsx";
|
|
4
|
+
export function WorkCards({ data }: { readonly data: WorkProjection }) {
|
|
5
|
+
const columns = [...Map.groupBy(data.rows, (item) => item.metadata.status)].map(([status, items]) => (
|
|
6
|
+
<Column items={items} key={status ?? ""} state={data.state} status={status} />
|
|
7
|
+
));
|
|
8
|
+
return <div className="work-columns">{columns}</div>;
|
|
9
|
+
}
|
|
10
|
+
function Column({ items, state, status }: { readonly items: WorkProjection["rows"]; readonly state: State; readonly status: string | undefined }) {
|
|
11
|
+
return (
|
|
12
|
+
<section aria-label={status ?? "Status not recorded"} className="work-column">
|
|
13
|
+
<h2>
|
|
14
|
+
{status ?? "Status not recorded"} <span className="work-count">{items.length}</span>
|
|
15
|
+
</h2>
|
|
16
|
+
{items.map((item) => (
|
|
17
|
+
<Card item={item} key={item.id} state={state} />
|
|
18
|
+
))}
|
|
19
|
+
</section>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
function Card({ item, state }: { readonly item: WorkProjection["rows"][number]; readonly state: State }) {
|
|
23
|
+
return (
|
|
24
|
+
<article className="work-card" data-item={item.id} data-selected={item.id === state.item ? "true" : undefined}>
|
|
25
|
+
{Boolean(item.waiting) && (
|
|
26
|
+
<span className="waiting-badge" title={item.waiting}>
|
|
27
|
+
Waiting on you
|
|
28
|
+
</span>
|
|
29
|
+
)}
|
|
30
|
+
<p className="work-kind">{item.metadata.kind ?? "Kind not recorded"}</p>
|
|
31
|
+
<h3>
|
|
32
|
+
<WorkItemTitle item={item} state={state} />
|
|
33
|
+
</h3>
|
|
34
|
+
<p className="work-id">{item.id}</p>
|
|
35
|
+
<p className="work-owner">Owner: {item.metadata.owner ?? "Not recorded"}</p>
|
|
36
|
+
{Boolean(item.metadata.nextAction) && <p className="work-next">Next: {item.metadata.nextAction}</p>}
|
|
37
|
+
</article>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { fieldFilter, viewUrl } from "#browser/views/state.ts";
|
|
3
|
+
import { shellIds } from "./shellIds.ts";
|
|
4
|
+
export function WorkControls({ data }: { readonly data: WorkProjection }) {
|
|
5
|
+
const { state } = data;
|
|
6
|
+
function fields(field: "owner" | "status") {
|
|
7
|
+
const values = new Map(
|
|
8
|
+
data.items.map((item) => [fieldFilter(item.metadata[field]), item.metadata[field] ?? `${field === "owner" ? "Owner" : "Status"} not recorded`]),
|
|
9
|
+
);
|
|
10
|
+
const current = state[field];
|
|
11
|
+
if (current && !values.has(current)) {
|
|
12
|
+
values.set(current, `${current.startsWith("value:") ? current.slice(6) : current} (no current matches)`);
|
|
13
|
+
}
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
<option value="">All {field === "owner" ? "owners" : "statuses"}</option>
|
|
17
|
+
{[...values]
|
|
18
|
+
.sort((a, b) => a[1].localeCompare(b[1], "en"))
|
|
19
|
+
.map(([value, label]) => (
|
|
20
|
+
<option key={value} value={value}>
|
|
21
|
+
{label}
|
|
22
|
+
</option>
|
|
23
|
+
))}
|
|
24
|
+
</>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
return (
|
|
28
|
+
<form action="/_board/work#work-results" className="work-filters" id={shellIds.workFilters} method="get">
|
|
29
|
+
<input name="view" type="hidden" value={state.view} />
|
|
30
|
+
<input name="item" type="hidden" value={state.item} />
|
|
31
|
+
<label>
|
|
32
|
+
<span>Board</span>
|
|
33
|
+
<select defaultValue={state.board} id={shellIds.workBoard} name="board">
|
|
34
|
+
<option value="">All work</option>
|
|
35
|
+
{data.boards.map((board) => (
|
|
36
|
+
<option key={board.id} value={board.id}>
|
|
37
|
+
{board.title}
|
|
38
|
+
</option>
|
|
39
|
+
))}
|
|
40
|
+
{state.board && !data.validBoard && <option value={state.board}>{state.board} (unavailable)</option>}
|
|
41
|
+
</select>
|
|
42
|
+
</label>
|
|
43
|
+
<label>
|
|
44
|
+
<span>Status</span>
|
|
45
|
+
<select defaultValue={state.status} id={shellIds.workStatus} name="status">
|
|
46
|
+
{fields("status")}
|
|
47
|
+
</select>
|
|
48
|
+
</label>
|
|
49
|
+
<label>
|
|
50
|
+
<span>Owner</span>
|
|
51
|
+
<select defaultValue={state.owner} id={shellIds.workOwner} name="owner">
|
|
52
|
+
{fields("owner")}
|
|
53
|
+
</select>
|
|
54
|
+
</label>
|
|
55
|
+
<label>
|
|
56
|
+
<span>Find work</span>
|
|
57
|
+
<input defaultValue={state.query} id={shellIds.workQuery} maxLength={200} name="q" type="search" />
|
|
58
|
+
</label>
|
|
59
|
+
<label>
|
|
60
|
+
<span>Sort by</span>
|
|
61
|
+
<select defaultValue={state.sort} id={shellIds.workSort} name="sort">
|
|
62
|
+
{["title", "owner", "status"].map((sort) => (
|
|
63
|
+
<option key={sort} value={sort}>
|
|
64
|
+
{sort.charAt(0).toUpperCase() + sort.slice(1)}
|
|
65
|
+
</option>
|
|
66
|
+
))}
|
|
67
|
+
</select>
|
|
68
|
+
</label>
|
|
69
|
+
<button type="submit">Apply</button>
|
|
70
|
+
<a href={viewUrl(state, { owner: "", query: "", status: "" }, "work-results")}>Clear filters</a>
|
|
71
|
+
</form>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { viewUrl } from "#browser/views/state.ts";
|
|
3
|
+
import { DocumentPage } from "./DocumentPage.tsx";
|
|
4
|
+
import { shellIds } from "./shellIds.ts";
|
|
5
|
+
export function WorkDetail({ data }: { readonly data: WorkProjection }) {
|
|
6
|
+
const { state, selected } = data;
|
|
7
|
+
if (!state.item) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return (
|
|
11
|
+
<aside aria-label="Selected work" className="work-detail" id={shellIds.workDetail} tabIndex={-1}>
|
|
12
|
+
<header>
|
|
13
|
+
<a className="detail-close" href={viewUrl(state, { item: "" }, "work-results")}>
|
|
14
|
+
Close detail
|
|
15
|
+
</a>
|
|
16
|
+
<a href={`/_board/item/${encodeURIComponent(state.item)}/`}>{selected === undefined ? "Inspect item identity" : "Open document"}</a>
|
|
17
|
+
</header>
|
|
18
|
+
{Boolean(data.selectedOutside) && (
|
|
19
|
+
<p className="detail-notice" role="status">
|
|
20
|
+
This selected item is outside the current board or filters.
|
|
21
|
+
</p>
|
|
22
|
+
)}
|
|
23
|
+
{selected === undefined ? (
|
|
24
|
+
<>
|
|
25
|
+
<h2>Item unavailable</h2>
|
|
26
|
+
<p>
|
|
27
|
+
{state.item} {data.selectionProblem}. No source was selected.
|
|
28
|
+
</p>
|
|
29
|
+
</>
|
|
30
|
+
) : (
|
|
31
|
+
<DocumentPage document={selected} key={selected.identity ?? selected.file} />
|
|
32
|
+
)}
|
|
33
|
+
</aside>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { type State, viewUrl } from "#browser/views/state.ts";
|
|
3
|
+
export function WorkItemTitle({ item, state }: { readonly item: WorkProjection["rows"][number]; readonly state: State }) {
|
|
4
|
+
return (
|
|
5
|
+
<a aria-current={item.id === state.item ? "true" : undefined} href={viewUrl(state, { item: item.id }, "work-detail")}>
|
|
6
|
+
{item.title}
|
|
7
|
+
</a>
|
|
8
|
+
);
|
|
9
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { viewUrl } from "#browser/views/state.ts";
|
|
3
|
+
import { shellIds } from "./shellIds.ts";
|
|
4
|
+
import { WorkControls } from "./WorkControls.tsx";
|
|
5
|
+
import { WorkDetail } from "./WorkDetail.tsx";
|
|
6
|
+
import { WorkResults } from "./WorkResults.tsx";
|
|
7
|
+
import { WorkTools } from "./WorkTools.tsx";
|
|
8
|
+
export function WorkPage({ data }: { readonly data: WorkProjection }) {
|
|
9
|
+
const { state } = data;
|
|
10
|
+
const source = `/_board/item/${encodeURIComponent(state.board)}/`;
|
|
11
|
+
return (
|
|
12
|
+
<>
|
|
13
|
+
<header className="work-head">
|
|
14
|
+
<p className="work-eyebrow">WORK · {state.view.toUpperCase()} VIEW</p>
|
|
15
|
+
<h1>{data.validBoard ? data.title : "Board unavailable"}</h1>
|
|
16
|
+
<p>Views use recorded fields. A section heading does not set an item's status.</p>
|
|
17
|
+
{Boolean(state.board) && data.validBoard && <a href={source}>Board source</a>}
|
|
18
|
+
</header>
|
|
19
|
+
<WorkTools state={state} />
|
|
20
|
+
<WorkControls data={data} key={viewUrl(state)} />
|
|
21
|
+
{data.validBoard ? (
|
|
22
|
+
<WorkContent data={data} />
|
|
23
|
+
) : (
|
|
24
|
+
<p className="empty">
|
|
25
|
+
{state.board} is missing, has a duplicate ID, or is not a declared board. Choose another board or open its{" "}
|
|
26
|
+
<a href={source}>source identity</a>.
|
|
27
|
+
</p>
|
|
28
|
+
)}
|
|
29
|
+
</>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
function WorkContent({ data }: { readonly data: WorkProjection }) {
|
|
33
|
+
const issues = data.issues.map((issue) => <li key={issue}>{issue}</li>);
|
|
34
|
+
return (
|
|
35
|
+
<>
|
|
36
|
+
{issues.length > 0 && (
|
|
37
|
+
<details className="view-issues">
|
|
38
|
+
<summary>Source issues ({issues.length})</summary>
|
|
39
|
+
<ul>{issues}</ul>
|
|
40
|
+
</details>
|
|
41
|
+
)}
|
|
42
|
+
<p className="work-total" role="status">
|
|
43
|
+
{data.rows.length} shown · {data.items.length} items in this view
|
|
44
|
+
</p>
|
|
45
|
+
<div className={data.state.item ? "work-layout has-detail" : "work-layout"}>
|
|
46
|
+
<section aria-label="Work items" id={shellIds.workResults} tabIndex={-1}>
|
|
47
|
+
{data.items.length === 0 && (
|
|
48
|
+
<p className="empty">
|
|
49
|
+
No identified work is declared here. Keep reading ordinary files, or add item IDs and explicit board membership in their Markdown
|
|
50
|
+
sources.
|
|
51
|
+
</p>
|
|
52
|
+
)}
|
|
53
|
+
<WorkResults data={data} />
|
|
54
|
+
</section>
|
|
55
|
+
<WorkDetail data={data} />
|
|
56
|
+
</div>
|
|
57
|
+
</>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import { WorkCards } from "./WorkCards.tsx";
|
|
3
|
+
import { WorkTable } from "./WorkTable.tsx";
|
|
4
|
+
export function WorkResults({ data }: { readonly data: WorkProjection }) {
|
|
5
|
+
if (data.rows.length === 0) {
|
|
6
|
+
return <p className="empty">No work matches these filters.</p>;
|
|
7
|
+
}
|
|
8
|
+
return data.state.view === "table" ? <WorkTable data={data} /> : <WorkCards data={data} />;
|
|
9
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WorkProjection } from "#browser/views/schema.ts";
|
|
2
|
+
import type { State } from "#browser/views/state.ts";
|
|
3
|
+
import { WorkItemTitle } from "./WorkItemTitle.tsx";
|
|
4
|
+
export function WorkTable({ data }: { readonly data: WorkProjection }) {
|
|
5
|
+
const headings = ["Work", "Kind", "Status", "Owner", "Next action"].map((label) => (
|
|
6
|
+
<th key={label} scope="col">
|
|
7
|
+
{label}
|
|
8
|
+
</th>
|
|
9
|
+
));
|
|
10
|
+
return (
|
|
11
|
+
<div className="work-table-wrap">
|
|
12
|
+
<table className="work-table">
|
|
13
|
+
<caption className="sr-only">Identified work, sorted by {data.state.sort}</caption>
|
|
14
|
+
<thead>
|
|
15
|
+
<tr>{headings}</tr>
|
|
16
|
+
</thead>
|
|
17
|
+
<tbody>
|
|
18
|
+
{data.rows.map((item) => (
|
|
19
|
+
<Row item={item} key={item.id} state={data.state} />
|
|
20
|
+
))}
|
|
21
|
+
</tbody>
|
|
22
|
+
</table>
|
|
23
|
+
</div>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
function Row({ item, state }: { readonly item: WorkProjection["rows"][number]; readonly state: State }) {
|
|
27
|
+
return (
|
|
28
|
+
<tr data-item={item.id} data-selected={item.id === state.item ? "true" : undefined}>
|
|
29
|
+
<th scope="row">
|
|
30
|
+
<WorkItemTitle item={item} state={state} />
|
|
31
|
+
<span className="work-id">{item.id}</span>
|
|
32
|
+
</th>
|
|
33
|
+
<td>{item.metadata.kind ?? "Not recorded"}</td>
|
|
34
|
+
<td>{item.waiting ? `Waiting on you · ${item.metadata.status ?? "Status not recorded"}` : (item.metadata.status ?? "Not recorded")}</td>
|
|
35
|
+
<td>{item.metadata.owner ?? "Not recorded"}</td>
|
|
36
|
+
<td>{item.metadata.nextAction ?? "Not recorded"}</td>
|
|
37
|
+
</tr>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { State } from "#browser/views/state.ts";
|
|
2
|
+
import { viewUrl } from "#browser/views/state.ts";
|
|
3
|
+
import { SavedViews } from "./SavedViews.tsx";
|
|
4
|
+
export function WorkTools({ state }: { readonly state: State }) {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<nav aria-label="Work layout" className="view-layouts">
|
|
8
|
+
{(["board", "table"] as const).map((view) => (
|
|
9
|
+
<a aria-current={state.view === view ? "page" : undefined} href={viewUrl(state, { view }, "work-results")} key={view}>
|
|
10
|
+
{view === "board" ? "Board" : "Table"}
|
|
11
|
+
</a>
|
|
12
|
+
))}
|
|
13
|
+
</nav>
|
|
14
|
+
<SavedViews url={viewUrl(state, { item: "" })} />
|
|
15
|
+
</>
|
|
16
|
+
);
|
|
17
|
+
}
|