@opengeni/react 3.1.0 → 3.1.3-canary.38890816741001
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/README.md +769 -22
- package/dist/accounts.js +89 -11
- package/dist/accounts.js.map +1 -1
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +5 -3
- package/dist/artifacts-presentation.js +5 -3
- package/dist/artifacts-spreadsheet.d.ts +1 -1
- package/dist/artifacts-spreadsheet.js +5 -3
- package/dist/artifacts.d.ts +5 -1
- package/dist/artifacts.js +536 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-ZWR6MWJ7.js +19 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-BO2IWXVK.js +14 -0
- package/dist/chunk-2DDJ6YH6.js +41 -0
- package/dist/chunk-2DDJ6YH6.js.map +1 -0
- package/dist/chunk-2HVLQ26H.js +183 -0
- package/dist/chunk-2HVLQ26H.js.map +1 -0
- package/dist/{chunk-RGALCTWO.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-D3UIAJKY.js → chunk-2SFFYIH3.js} +1179 -166
- package/dist/chunk-2SFFYIH3.js.map +1 -0
- package/dist/chunk-3PVDYTTB.js +24 -0
- package/dist/chunk-3PVDYTTB.js.map +1 -0
- package/dist/chunk-3UZCWK46.js +298 -0
- package/dist/chunk-3UZCWK46.js.map +1 -0
- package/dist/chunk-47CKUXTW.js +293 -0
- package/dist/chunk-47CKUXTW.js.map +1 -0
- package/dist/chunk-4QYP6QUI.js +109 -0
- package/dist/chunk-4QYP6QUI.js.map +1 -0
- package/dist/chunk-5EY26VZ7.js +1053 -0
- package/dist/chunk-5EY26VZ7.js.map +1 -0
- package/dist/chunk-5I4VRWBB.js +56 -0
- package/dist/chunk-5I4VRWBB.js.map +1 -0
- package/dist/chunk-5WOR7UCL.js +191 -0
- package/dist/chunk-5WOR7UCL.js.map +1 -0
- package/dist/chunk-5YJLGOM5.js +51 -0
- package/dist/chunk-5YJLGOM5.js.map +1 -0
- package/dist/chunk-6JFN3OWG.js +386 -0
- package/dist/chunk-6JFN3OWG.js.map +1 -0
- package/dist/chunk-7QJT5O4S.js +35 -0
- package/dist/chunk-7QJT5O4S.js.map +1 -0
- package/dist/chunk-A55KV72M.js +402 -0
- package/dist/chunk-A55KV72M.js.map +1 -0
- package/dist/chunk-ADWCLI4G.js +2028 -0
- package/dist/chunk-ADWCLI4G.js.map +1 -0
- package/dist/chunk-B27E3V37.js +29 -0
- package/dist/chunk-B27E3V37.js.map +1 -0
- package/dist/chunk-B7TC2A33.js +83 -0
- package/dist/chunk-B7TC2A33.js.map +1 -0
- package/dist/chunk-BLL56F7R.js +385 -0
- package/dist/chunk-BLL56F7R.js.map +1 -0
- package/dist/chunk-BOFEQC6K.js +162 -0
- package/dist/chunk-BOFEQC6K.js.map +1 -0
- package/dist/chunk-CM7LVUKC.js +35 -0
- package/dist/chunk-CM7LVUKC.js.map +1 -0
- package/dist/chunk-CORUP6JB.js +122 -0
- package/dist/chunk-CORUP6JB.js.map +1 -0
- package/dist/chunk-CSX5FFKZ.js +35 -0
- package/dist/chunk-CSX5FFKZ.js.map +1 -0
- package/dist/chunk-EGVHJKGJ.js +3125 -0
- package/dist/chunk-EGVHJKGJ.js.map +1 -0
- package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
- package/dist/chunk-G76LSA76.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
- package/dist/chunk-GQMRL52F.js.map +1 -0
- package/dist/{chunk-ELIYWBZR.js → chunk-GUUXOISA.js} +1113 -457
- package/dist/chunk-GUUXOISA.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
- package/dist/chunk-I7X2P4FU.js.map +1 -0
- package/dist/chunk-IGFZFLI2.js +1390 -0
- package/dist/chunk-IGFZFLI2.js.map +1 -0
- package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
- package/dist/chunk-IMSUVYQB.js.map +1 -0
- package/dist/chunk-IOYHDEP3.js +38 -0
- package/dist/chunk-IOYHDEP3.js.map +1 -0
- package/dist/chunk-IZV5FTJC.js +55 -0
- package/dist/chunk-IZV5FTJC.js.map +1 -0
- package/dist/chunk-KF33GTWN.js +343 -0
- package/dist/chunk-KF33GTWN.js.map +1 -0
- package/dist/chunk-KSGQ5ODA.js +457 -0
- package/dist/chunk-KSGQ5ODA.js.map +1 -0
- package/dist/{chunk-OAM4WAAM.js → chunk-KZC6QRNR.js} +1513 -697
- package/dist/chunk-KZC6QRNR.js.map +1 -0
- package/dist/chunk-LJUMYUBO.js +218 -0
- package/dist/chunk-LJUMYUBO.js.map +1 -0
- package/dist/chunk-LSW2OJVV.js +380 -0
- package/dist/chunk-LSW2OJVV.js.map +1 -0
- package/dist/chunk-M357MHH3.js +2 -0
- package/dist/chunk-M357MHH3.js.map +1 -0
- package/dist/chunk-MK2TQO4Y.js +24 -0
- package/dist/chunk-MK2TQO4Y.js.map +1 -0
- package/dist/chunk-N7S72EXK.js +25 -0
- package/dist/chunk-N7S72EXK.js.map +1 -0
- package/dist/{chunk-XXWH2JLC.js → chunk-NKMYZFHA.js} +616 -621
- package/dist/chunk-NKMYZFHA.js.map +1 -0
- package/dist/chunk-NX4ADH73.js +14 -0
- package/dist/chunk-NX4ADH73.js.map +1 -0
- package/dist/chunk-O7F6UJO4.js +71 -0
- package/dist/chunk-O7F6UJO4.js.map +1 -0
- package/dist/chunk-OVB5WIG5.js +14064 -0
- package/dist/chunk-OVB5WIG5.js.map +1 -0
- package/dist/chunk-OYQQJL3J.js +16 -0
- package/dist/chunk-OYQQJL3J.js.map +1 -0
- package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
- package/dist/chunk-P4BNUO57.js.map +1 -0
- package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
- package/dist/chunk-PEHTX3V7.js.map +1 -0
- package/dist/chunk-PMV53IMM.js +26 -0
- package/dist/chunk-PMV53IMM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
- package/dist/chunk-PYEOPA4M.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
- package/dist/chunk-QHUE7E4N.js.map +1 -0
- package/dist/chunk-QV3DJVRZ.js +11 -0
- package/dist/chunk-QV3DJVRZ.js.map +1 -0
- package/dist/chunk-R5SBNG7S.js +810 -0
- package/dist/chunk-R5SBNG7S.js.map +1 -0
- package/dist/chunk-RI42H5IU.js +326 -0
- package/dist/chunk-RI42H5IU.js.map +1 -0
- package/dist/chunk-S2QH6EZ5.js +211 -0
- package/dist/chunk-S2QH6EZ5.js.map +1 -0
- package/dist/chunk-SHLZMAJN.js +304 -0
- package/dist/chunk-SHLZMAJN.js.map +1 -0
- package/dist/chunk-TGXK4BAZ.js +293 -0
- package/dist/chunk-TGXK4BAZ.js.map +1 -0
- package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
- package/dist/chunk-TNEZNMSN.js.map +1 -0
- package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
- package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
- package/dist/chunk-UNJPZGNK.js +63 -0
- package/dist/chunk-UNJPZGNK.js.map +1 -0
- package/dist/{chunk-MZ2G2XBA.js → chunk-V5ZUJT2T.js} +205 -45
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-VIUEOHXY.js +394 -0
- package/dist/chunk-VIUEOHXY.js.map +1 -0
- package/dist/chunk-WIUKB3LD.js +1911 -0
- package/dist/chunk-WIUKB3LD.js.map +1 -0
- package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
- package/dist/chunk-WNN7NO2N.js.map +1 -0
- package/dist/{chunk-YJFGAFBD.js → chunk-X5UVUIMF.js} +1892 -1223
- package/dist/chunk-X5UVUIMF.js.map +1 -0
- package/dist/chunk-XDA5QJE7.js +402 -0
- package/dist/chunk-XDA5QJE7.js.map +1 -0
- package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
- package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
- package/dist/chunk-XHF7OYAN.js +1150 -0
- package/dist/chunk-XHF7OYAN.js.map +1 -0
- package/dist/chunk-YSRBFJMQ.js +43 -0
- package/dist/chunk-YSRBFJMQ.js.map +1 -0
- package/dist/chunk-ZOZAPAUO.js +174 -0
- package/dist/chunk-ZOZAPAUO.js.map +1 -0
- package/dist/chunk-ZQV5W7YC.js +809 -0
- package/dist/chunk-ZQV5W7YC.js.map +1 -0
- package/dist/chunk-ZUWF4NF7.js +13 -0
- package/dist/chunk-ZUWF4NF7.js.map +1 -0
- package/dist/client.d.ts +16 -7
- package/dist/clipboard.js +3 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +19 -6
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
- package/dist/components/artifacts/artifact-surface.d.ts +4 -2
- package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
- package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
- package/dist/components/artifacts/document-editor.d.ts +4 -2
- package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
- package/dist/components/artifacts/editable-artifact-view.d.ts +48 -0
- package/dist/components/artifacts/editable-document.d.ts +1 -1
- package/dist/components/artifacts/editable-presentation.d.ts +2 -2
- package/dist/components/artifacts/editable-spreadsheet.d.ts +8 -3
- package/dist/components/artifacts/index.d.ts +9 -2
- package/dist/components/artifacts/inline-html-document.d.ts +2 -0
- package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
- package/dist/components/artifacts/presentation-editor.d.ts +6 -2
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +23 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +26 -0
- package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
- package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
- package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
- package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -0
- package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
- package/dist/components/browser-select-control.d.ts +16 -0
- package/dist/components/browser-viewer.d.ts +11 -2
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +9 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer-transcription-control.d.ts +7 -0
- package/dist/components/composer.d.ts +34 -67
- package/dist/components/computer-viewer.d.ts +1 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/fleet-tile.d.ts +2 -2
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +28 -32
- package/dist/components/human-input-surface.d.ts +7 -2
- package/dist/components/linkified-text.d.ts +18 -0
- package/dist/components/machine-input-display.d.ts +22 -1
- package/dist/components/machines/agent-status-icon.d.ts +6 -0
- package/dist/components/machines/machine-detail.d.ts +7 -1
- package/dist/components/machines/machine-status.d.ts +48 -0
- package/dist/components/markdown-table-layout.d.ts +18 -0
- package/dist/components/markdown.d.ts +37 -4
- package/dist/components/message-timeline.d.ts +86 -7
- package/dist/components/model-mark.d.ts +29 -0
- package/dist/components/model-policy-picker-menu.d.ts +9 -0
- package/dist/components/model-policy-picker.d.ts +41 -25
- package/dist/components/new-conversation.d.ts +32 -0
- package/dist/components/open-geni-chat.d.ts +73 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/opper-mark.d.ts +7 -0
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/provider-recovery-notice.d.ts +16 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/rehype-secret-refs.d.ts +23 -0
- package/dist/components/remark-soft-line-breaks.d.ts +38 -0
- package/dist/components/sandbox-files.d.ts +3 -1
- package/dist/components/sandbox-workspace.d.ts +18 -0
- package/dist/components/secret-question-field.d.ts +31 -0
- package/dist/components/secret-ref-chip.d.ts +35 -0
- package/dist/components/session-capability-frame.d.ts +37 -0
- package/dist/components/session-chrome.d.ts +57 -8
- package/dist/components/session-commands-panel.d.ts +6 -0
- package/dist/components/session-commands.d.ts +6 -0
- package/dist/components/session-connection-request.d.ts +8 -0
- package/dist/components/session-conversation.d.ts +157 -0
- package/dist/components/session-list.d.ts +39 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +35 -0
- package/dist/components/session-status.d.ts +4 -1
- package/dist/components/session-usage-limit-notice.d.ts +39 -0
- package/dist/components/timeline-anchor.d.ts +24 -0
- package/dist/components/timeline-annotation-chrome.d.ts +25 -0
- package/dist/components/timeline-annotation-layout.d.ts +42 -0
- package/dist/components/timeline-annotation-markers.d.ts +8 -0
- package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
- package/dist/components/timeline-annotation-shared.d.ts +31 -0
- package/dist/components/timeline-annotations-dialog.d.ts +3 -2
- package/dist/components/timeline-annotations.d.ts +13 -3
- package/dist/components/timeline-reading-progress.d.ts +11 -0
- package/dist/components/timeline-search.d.ts +34 -0
- package/dist/components/timeline-settlement.d.ts +16 -0
- package/dist/components/tip-follow.d.ts +16 -0
- package/dist/components/tool-action-review.d.ts +47 -0
- package/dist/components/tool-review-history.d.ts +25 -0
- package/dist/components/usage-limit-notice.d.ts +49 -0
- package/dist/components/usage-member-list.d.ts +91 -0
- package/dist/components/usage-meter.d.ts +73 -0
- package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
- package/dist/components/user-message-body.d.ts +10 -1
- package/dist/composer-messages.d.ts +74 -0
- package/dist/composer-messages.js +9 -0
- package/dist/composer-messages.js.map +1 -0
- package/dist/composer-voice-events.d.ts +8 -0
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +26 -13
- package/dist/computer-viewer-GMLDXPON.js +20 -0
- package/dist/computer-viewer-GMLDXPON.js.map +1 -0
- package/dist/connect-account-identity.d.ts +8 -0
- package/dist/connect-accounts.d.ts +15 -0
- package/dist/connect-chooser.d.ts +18 -0
- package/dist/connect-panel.d.ts +18 -0
- package/dist/connect-setup.d.ts +18 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2149 -0
- package/dist/connect.js.map +1 -0
- package/dist/connection-catalog.d.ts +38 -0
- package/dist/connection-discovery.d.ts +12 -0
- package/dist/connection-installed.d.ts +17 -0
- package/dist/connection-logo.d.ts +9 -0
- package/dist/connection-service-logo.d.ts +8 -0
- package/dist/connection-service-presentation.d.ts +13 -0
- package/dist/connection-skeleton.d.ts +5 -0
- package/dist/connection-type-picker.d.ts +6 -0
- package/dist/conversation-timeline.d.ts +5 -0
- package/dist/desktop.d.ts +7 -0
- package/dist/desktop.js +27 -0
- package/dist/desktop.js.map +1 -0
- package/dist/device-authorization.d.ts +23 -0
- package/dist/diffs.d.ts +8 -0
- package/dist/diffs.js +15 -0
- package/dist/diffs.js.map +1 -0
- package/dist/discovery-cache.d.ts +5 -0
- package/dist/editor.d.ts +7 -0
- package/dist/editor.js +22 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
- package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
- package/dist/embedded-voice-RPHPYVBT.js +18 -0
- package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
- package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +4 -0
- package/dist/hooks/shared-query.d.ts +113 -0
- package/dist/hooks/use-attached-browsers.d.ts +1 -1
- package/dist/hooks/use-auth-runs.d.ts +1 -4
- package/dist/hooks/use-available-models.d.ts +1 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
- package/dist/hooks/use-browser-session.d.ts +12 -1
- package/dist/hooks/use-client-config-flags.d.ts +49 -0
- package/dist/hooks/use-codex-accounts.d.ts +59 -10
- package/dist/hooks/use-composer.d.ts +24 -2
- package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
- package/dist/hooks/use-computer-input-posture.d.ts +13 -0
- package/dist/hooks/use-computer-session.d.ts +4 -0
- package/dist/hooks/use-connect.d.ts +23 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +12 -0
- package/dist/hooks/use-goal.d.ts +2 -1
- package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
- package/dist/hooks/use-new-conversation.d.ts +56 -0
- package/dist/hooks/use-new-session-draft.d.ts +74 -0
- package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
- package/dist/hooks/use-sandbox-files.d.ts +4 -1
- package/dist/hooks/use-session-conversation.d.ts +49 -0
- package/dist/hooks/use-session-events.d.ts +28 -7
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session-model-account.d.ts +48 -0
- package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
- package/dist/hooks/use-terminal-stream.d.ts +11 -5
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-vaults.d.ts +53 -0
- package/dist/hooks/use-voice-input.d.ts +8 -1
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +22 -5
- package/dist/human-input-model.d.ts +122 -0
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +82 -20
- package/dist/index.js +2350 -6605
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +14 -24
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-R77KWSUP.js +118 -0
- package/dist/latest-question-R77KWSUP.js.map +1 -0
- package/dist/lib/clipboard.d.ts +7 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +58 -4
- package/dist/lib/host-theme.d.ts +77 -0
- package/dist/lib/interaction-errors.d.ts +3 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/notify-observer.d.ts +2 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/provider-recovery.d.ts +55 -0
- package/dist/lib/scrollbars.d.ts +11 -0
- package/dist/lib/terminal-input-readiness.d.ts +11 -0
- package/dist/lib/transient-retry.d.ts +25 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.js +9 -5
- package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
- package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-mark-paths.d.ts +34 -0
- package/dist/model-mark-paths.js +16 -0
- package/dist/model-mark-paths.js.map +1 -0
- package/dist/model-picker-model.d.ts +111 -0
- package/dist/model-picker-model.js +25 -0
- package/dist/model-picker-model.js.map +1 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
- package/dist/model-policy.d.ts +30 -3
- package/dist/model-policy.js +14 -1
- package/dist/native-previews.d.ts +28 -0
- package/dist/native-previews.js +82 -0
- package/dist/native-previews.js.map +1 -0
- package/dist/new-session-draft.d.ts +7 -0
- package/dist/new-session-draft.js +639 -0
- package/dist/new-session-draft.js.map +1 -0
- package/dist/notification-text.d.ts +27 -0
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
- package/dist/older-history.d.ts +3 -2
- package/dist/organization-model.d.ts +32 -0
- package/dist/organization-model.js +65 -0
- package/dist/organization-model.js.map +1 -0
- package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
- package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/preview-loading-paint.d.ts +20 -0
- package/dist/provider.d.ts +25 -2
- package/dist/queue-presentation-model.d.ts +72 -0
- package/dist/queue-presentation-model.js +38 -0
- package/dist/queue-presentation-model.js.map +1 -0
- package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
- package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
- package/dist/realtime/embedded-new-voice.d.ts +1 -0
- package/dist/realtime/embedded-voice.d.ts +1 -0
- package/dist/realtime/realtime-control.d.ts +4 -65
- package/dist/realtime/session-realtime.d.ts +78 -0
- package/dist/realtime.js +25 -1294
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-O27IPOZW.js +21 -0
- package/dist/sandbox-files-O27IPOZW.js.map +1 -0
- package/dist/sandbox-label-model.d.ts +30 -0
- package/dist/sandbox-label-model.js +20 -0
- package/dist/sandbox-label-model.js.map +1 -0
- package/dist/scrollbars.d.ts +1 -0
- package/dist/scrollbars.js +10 -0
- package/dist/scrollbars.js.map +1 -0
- package/dist/secret-reference-label.d.ts +14 -0
- package/dist/secrets-ui.d.ts +57 -0
- package/dist/session-agents-model.d.ts +10 -0
- package/dist/session-agents-model.js +25 -0
- package/dist/session-agents-model.js.map +1 -0
- package/dist/session-attention-model.d.ts +8 -0
- package/dist/session-attention-model.js +47 -0
- package/dist/session-attention-model.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +31 -0
- package/dist/session-feedback-model.d.ts +20 -0
- package/dist/session-feedback-model.js +56 -0
- package/dist/session-feedback-model.js.map +1 -0
- package/dist/session-list-model.d.ts +138 -0
- package/dist/session-list-model.js +274 -0
- package/dist/session-list-model.js.map +1 -0
- package/dist/session-realtime-7DJOIHQW.js +21 -0
- package/dist/session-realtime-7DJOIHQW.js.map +1 -0
- package/dist/session-realtime.d.ts +7 -0
- package/dist/session-realtime.js +19 -0
- package/dist/session-realtime.js.map +1 -0
- package/dist/session-status-model.d.ts +36 -0
- package/dist/session-ui.d.ts +39 -1
- package/dist/session-ui.js +126 -12
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +35 -20
- package/dist/site-snapshot.d.ts +14 -0
- package/dist/sites-ui.d.ts +24 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +14 -0
- package/dist/sites.js.map +1 -0
- package/dist/skill-discovery.d.ts +47 -0
- package/dist/terminal.d.ts +8 -0
- package/dist/terminal.js +32 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing/session-scenarios.d.ts +10 -0
- package/dist/testing/session-scenarios.js +367 -0
- package/dist/testing/session-scenarios.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/agent-identity.d.ts +30 -0
- package/dist/timeline/agent-row.d.ts +31 -0
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +46 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/focus-sequence.d.ts +9 -0
- package/dist/timeline/genie-copy.d.ts +3 -0
- package/dist/timeline/genie-loading.d.ts +47 -0
- package/dist/timeline/index.d.ts +10 -5
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/message-sender.d.ts +19 -0
- package/dist/timeline/notice-presentation.d.ts +13 -0
- package/dist/timeline/parsers.d.ts +11 -0
- package/dist/timeline/patch-apply-command.d.ts +18 -0
- package/dist/timeline/platform-activity-presentation.d.ts +21 -0
- package/dist/timeline/platform-activity-row.d.ts +1 -2
- package/dist/timeline/presented-image.d.ts +11 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/provider-logo.d.ts +15 -0
- package/dist/timeline/question-nav-model.d.ts +23 -0
- package/dist/timeline/registry.d.ts +12 -1
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/retained-loaders.d.ts +27 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +23 -1
- package/dist/timeline/session-usage-limit-row.d.ts +11 -0
- package/dist/timeline/shared.d.ts +4 -1
- package/dist/timeline/startup-dispatch-details.d.ts +5 -0
- package/dist/timeline/startup-preference.d.ts +3 -0
- package/dist/timeline/startup-timings.d.ts +4 -0
- package/dist/timeline/tool-display-name.d.ts +5 -2
- package/dist/timeline/tool-presentation.d.ts +172 -0
- package/dist/timeline/turn-summary-model.d.ts +95 -0
- package/dist/timeline/turn-summary.d.ts +20 -54
- package/dist/timeline/types.d.ts +179 -7
- package/dist/timeline/work-presentation.d.ts +60 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
- package/dist/timeline-model.d.ts +29 -0
- package/dist/timeline-model.js +254 -0
- package/dist/timeline-model.js.map +1 -0
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/session-usage-limit.d.ts +88 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.js +1187 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice-recording-owner.d.ts +7 -0
- package/package.json +107 -7
- package/src/accounts.tsx +116 -14
- package/src/approvals.ts +8 -1
- package/src/artifacts-spreadsheet.ts +1 -0
- package/src/artifacts.ts +44 -0
- package/src/assets/README.md +8 -0
- package/src/assets/gmail.ico +0 -0
- package/src/assets/outlook.ico +0 -0
- package/src/capability-catalog-row.tsx +94 -0
- package/src/capability-logo-fallback.ts +22 -0
- package/src/client.ts +20 -31
- package/src/commands/registry.ts +18 -15
- package/src/commands/types.ts +2 -0
- package/src/components/anthropic-mark.tsx +10 -0
- package/src/components/approval-surface.tsx +401 -138
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +189 -0
- package/src/components/artifacts/artifact-surface.tsx +40 -20
- package/src/components/artifacts/chat-interactive-block.tsx +260 -0
- package/src/components/artifacts/deferred-chat-media.tsx +67 -0
- package/src/components/artifacts/document-editor.tsx +141 -16
- package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
- package/src/components/artifacts/editable-artifact-view.tsx +197 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
- package/src/components/artifacts/editable-document.tsx +37 -36
- package/src/components/artifacts/editable-presentation.tsx +36 -18
- package/src/components/artifacts/editable-spreadsheet.tsx +543 -103
- package/src/components/artifacts/index.ts +45 -0
- package/src/components/artifacts/inline-html-document.ts +24 -0
- package/src/components/artifacts/latest-task-runner.ts +49 -0
- package/src/components/artifacts/presentation-editor.tsx +323 -67
- package/src/components/artifacts/published-html-artifact-frame.tsx +122 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
- package/src/components/artifacts/site-view.tsx +121 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
- package/src/components/artifacts/spreadsheet-download.tsx +109 -0
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
- package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
- package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
- package/src/components/artifacts/visualization-assets/base.css +1015 -0
- package/src/components/artifacts/visualization-assets/helpers.html +349 -0
- package/src/components/artifacts/visualization-assets.gen.ts +3 -0
- package/src/components/browser-select-control.tsx +312 -0
- package/src/components/browser-viewer.tsx +778 -318
- package/src/components/chat-composer.tsx +47 -5
- package/src/components/child-session-link.tsx +36 -0
- package/src/components/claude-mark.tsx +11 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +128 -30
- package/src/components/composer.tsx +404 -195
- package/src/components/computer-viewer.tsx +880 -253
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +1 -1
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +10 -14
- package/src/components/fleet-tile.tsx +9 -18
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +34 -0
- package/src/components/human-input-form.tsx +590 -283
- package/src/components/human-input-surface.tsx +11 -0
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/linkified-text.tsx +79 -0
- package/src/components/machine-card.tsx +35 -78
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +197 -3
- package/src/components/machines/agent-status-icon.tsx +31 -0
- package/src/components/machines/machine-detail.tsx +200 -31
- package/src/components/machines/machine-operation-policy.tsx +1 -1
- package/src/components/machines/machine-status.ts +241 -0
- package/src/components/machines-dashboard.tsx +2 -17
- package/src/components/markdown-table-layout.ts +143 -0
- package/src/components/markdown.tsx +466 -129
- package/src/components/message-timeline.tsx +2567 -728
- package/src/components/model-mark.tsx +102 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +371 -0
- package/src/components/model-policy-picker.tsx +256 -412
- package/src/components/new-conversation.tsx +221 -0
- package/src/components/open-geni-chat.tsx +309 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/opper-mark.tsx +18 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +35 -10
- package/src/components/preview-loading.tsx +109 -0
- package/src/components/provider-recovery-notice.tsx +49 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +51 -356
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/rehype-secret-refs.ts +98 -0
- package/src/components/remark-soft-line-breaks.ts +166 -0
- package/src/components/sandbox-files.tsx +91 -15
- package/src/components/sandbox-terminal.tsx +84 -13
- package/src/components/sandbox-workspace.tsx +147 -51
- package/src/components/secret-question-field.tsx +324 -0
- package/src/components/secret-ref-chip.tsx +185 -0
- package/src/components/session-capability-frame.tsx +197 -0
- package/src/components/session-chrome.tsx +842 -251
- package/src/components/session-commands-panel.tsx +126 -0
- package/src/components/session-commands.tsx +18 -0
- package/src/components/session-connection-request.tsx +97 -0
- package/src/components/session-conversation.tsx +876 -0
- package/src/components/session-list.tsx +257 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +153 -0
- package/src/components/session-status.tsx +26 -17
- package/src/components/session-usage-limit-notice.tsx +174 -0
- package/src/components/timeline-anchor.tsx +119 -0
- package/src/components/timeline-annotation-chrome.tsx +196 -0
- package/src/components/timeline-annotation-layout.ts +268 -0
- package/src/components/timeline-annotation-markers.tsx +185 -0
- package/src/components/timeline-annotation-reveal-context.ts +9 -0
- package/src/components/timeline-annotation-selection.tsx +106 -54
- package/src/components/timeline-annotation-shared.ts +245 -0
- package/src/components/timeline-annotations-dialog.tsx +185 -128
- package/src/components/timeline-annotations.tsx +189 -45
- package/src/components/timeline-reading-progress.ts +80 -0
- package/src/components/timeline-search.tsx +168 -0
- package/src/components/timeline-settlement.ts +60 -0
- package/src/components/tip-follow.ts +52 -0
- package/src/components/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +27 -2
- package/src/components/workspace-dock.tsx +18 -1
- package/src/composer-messages.ts +150 -0
- package/src/composer-voice-events.ts +12 -0
- package/src/composer.ts +6 -1
- package/src/connect-account-identity.tsx +34 -0
- package/src/connect-accounts.tsx +233 -0
- package/src/connect-chooser.tsx +336 -0
- package/src/connect-panel.tsx +99 -0
- package/src/connect-setup.tsx +355 -0
- package/src/connect.ts +60 -0
- package/src/connection-assets.d.ts +4 -0
- package/src/connection-catalog.tsx +162 -0
- package/src/connection-discovery.tsx +238 -0
- package/src/connection-installed.tsx +51 -0
- package/src/connection-logo.tsx +37 -0
- package/src/connection-service-logo.tsx +55 -0
- package/src/connection-service-presentation.ts +46 -0
- package/src/connection-skeleton.tsx +16 -0
- package/src/connection-type-picker.tsx +36 -0
- package/src/conversation-timeline.ts +92 -0
- package/src/desktop.ts +24 -0
- package/src/device-authorization.tsx +98 -0
- package/src/diffs.ts +16 -0
- package/src/discovery-cache.ts +42 -0
- package/src/editor.ts +13 -0
- package/src/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +34 -1
- package/src/hooks/shared-query.ts +721 -0
- package/src/hooks/use-attached-browsers.ts +1 -1
- package/src/hooks/use-auth-runs.ts +0 -27
- package/src/hooks/use-available-models.ts +21 -15
- package/src/hooks/use-browser-frame-stream.ts +19 -2
- package/src/hooks/use-browser-session.ts +680 -205
- package/src/hooks/use-browser-sessions.ts +32 -1
- package/src/hooks/use-client-config-flags.ts +118 -0
- package/src/hooks/use-codex-accounts.ts +247 -47
- package/src/hooks/use-composer.ts +276 -47
- package/src/hooks/use-computer-frame-stream.ts +25 -7
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +409 -95
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +80 -4
- package/src/hooks/use-goal.ts +107 -13
- package/src/hooks/use-last-started-turn-policy.ts +46 -14
- package/src/hooks/use-machines.ts +4 -0
- package/src/hooks/use-new-conversation.ts +374 -0
- package/src/hooks/use-new-session-draft.ts +813 -0
- package/src/hooks/use-realtime-voice-models.ts +46 -0
- package/src/hooks/use-sandbox-files.ts +68 -20
- package/src/hooks/use-session-background-commands.ts +22 -11
- package/src/hooks/use-session-capabilities.ts +3 -2
- package/src/hooks/use-session-conversation.ts +150 -0
- package/src/hooks/use-session-events.ts +703 -382
- package/src/hooks/use-session-lineage.ts +20 -16
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session-model-account.ts +174 -0
- package/src/hooks/use-session.ts +53 -21
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-supergrok-accounts.ts +22 -8
- package/src/hooks/use-terminal-stream.ts +153 -27
- package/src/hooks/use-transcription.ts +6 -0
- package/src/hooks/use-turn-queue.ts +2 -1
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-vaults.ts +153 -0
- package/src/hooks/use-video-artifact-playback.ts +1 -1
- package/src/hooks/use-voice-input.ts +127 -19
- package/src/hooks/use-workspace-capture.ts +3 -2
- package/src/hooks/use-workspace-edit.ts +23 -5
- package/src/hooks/use-workspace-sessions.ts +97 -32
- package/src/human-input-model.ts +359 -0
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +262 -16
- package/src/interaction.ts +1 -0
- package/src/lib/clipboard.ts +29 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +213 -16
- package/src/lib/host-theme.ts +529 -0
- package/src/lib/interaction-errors.ts +15 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/notify-observer.ts +15 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/provider-recovery.ts +243 -0
- package/src/lib/scrollbars.ts +30 -0
- package/src/lib/terminal-input-readiness.ts +51 -0
- package/src/lib/transient-retry.ts +99 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-mark-paths.ts +53 -0
- package/src/model-picker-model.ts +330 -0
- package/src/model-policy.ts +299 -74
- package/src/native-previews.ts +100 -0
- package/src/new-session-draft.ts +22 -0
- package/src/notification-text.ts +81 -0
- package/src/older-history.ts +22 -4
- package/src/organization-model.ts +118 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/preview-loading-paint.ts +68 -0
- package/src/provider.tsx +74 -15
- package/src/queue-presentation-model.ts +464 -0
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/embedded-new-voice.tsx +1 -0
- package/src/realtime/embedded-voice.tsx +3 -0
- package/src/realtime/realtime-control.tsx +138 -501
- package/src/realtime/session-realtime.ts +566 -0
- package/src/sandbox-label-model.ts +53 -0
- package/src/scrollbars.ts +3 -0
- package/src/secret-reference-label.ts +43 -0
- package/src/secrets-ui.tsx +59 -0
- package/src/session-agents-model.ts +33 -0
- package/src/session-attention-model.ts +62 -0
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +196 -0
- package/src/session-context.ts +3 -4
- package/src/session-feedback-model.ts +95 -0
- package/src/session-list-model.ts +434 -0
- package/src/session-realtime.ts +18 -0
- package/src/session-status-model.ts +99 -0
- package/src/session-ui.ts +98 -1
- package/src/session.ts +17 -1
- package/src/site-snapshot.ts +74 -0
- package/src/sites-ui.tsx +348 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/testing/session-scenarios.ts +404 -0
- package/src/timeline/activity-rail.tsx +242 -101
- package/src/timeline/agent-identity.tsx +84 -0
- package/src/timeline/agent-row.tsx +231 -0
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +115 -0
- package/src/timeline/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/focus-sequence.ts +44 -0
- package/src/timeline/genie-copy.ts +19 -0
- package/src/timeline/genie-loading.tsx +143 -0
- package/src/timeline/index.ts +30 -2
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/message-sender.tsx +71 -0
- package/src/timeline/notice-presentation.ts +48 -0
- package/src/timeline/parsers.ts +42 -2
- package/src/timeline/patch-apply-command.tsx +135 -0
- package/src/timeline/platform-activity-presentation.ts +166 -0
- package/src/timeline/platform-activity-row.tsx +15 -90
- package/src/timeline/presented-image.ts +63 -0
- package/src/timeline/projection.ts +1746 -76
- package/src/timeline/provider-logo.tsx +53 -0
- package/src/timeline/question-nav-model.ts +28 -0
- package/src/timeline/registry.ts +26 -4
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/retained-loaders.ts +91 -0
- package/src/timeline/rolling-activity.tsx +80 -0
- package/src/timeline/screenshot-lightbox.tsx +228 -5
- package/src/timeline/session-usage-limit-row.tsx +42 -0
- package/src/timeline/shared.tsx +42 -15
- package/src/timeline/startup-dispatch-details.tsx +36 -0
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +19 -7
- package/src/timeline/tool-presentation.ts +1316 -0
- package/src/timeline/tool-renderers.tsx +835 -1138
- package/src/timeline/turn-summary-model.ts +343 -0
- package/src/timeline/turn-summary.tsx +272 -365
- package/src/timeline/types.ts +189 -6
- package/src/timeline/work-presentation.ts +189 -0
- package/src/timeline-model.ts +143 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/session-usage-limit.ts +266 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +70 -0
- package/src/voice-recording-owner.ts +22 -0
- package/styles/compiled.css +2319 -748
- package/styles/connect.css +290 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +309 -9
- package/styles/responsive.css +99 -7
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +134 -66
- package/dist/browser-viewer-AEFHUYZK.js +0 -14
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-D3UIAJKY.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HQVCKCLG.js +0 -9458
- package/dist/chunk-HQVCKCLG.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.js.map +0 -1
- package/dist/chunk-JVYQRRC4.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-MZ2G2XBA.js.map +0 -1
- package/dist/chunk-NEXLLTP4.js.map +0 -1
- package/dist/chunk-OAM4WAAM.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-RGALCTWO.js.map +0 -1
- package/dist/chunk-W6NFJXSA.js +0 -454
- package/dist/chunk-W6NFJXSA.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-X4A66EWZ.js +0 -223
- package/dist/chunk-X4A66EWZ.js.map +0 -1
- package/dist/chunk-XXWH2JLC.js.map +0 -1
- package/dist/chunk-YFKJ7VZH.js +0 -268
- package/dist/chunk-YFKJ7VZH.js.map +0 -1
- package/dist/chunk-YJFGAFBD.js.map +0 -1
- package/dist/computer-viewer-FWEZISW4.js +0 -16
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-environments.d.ts +0 -41
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
- package/dist/queue-surface-implementation-BSKUWHRI.js.map +0 -1
- package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
- package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
- package/src/hooks/use-environments.ts +0 -182
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{browser-viewer-AEFHUYZK.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-BO2IWXVK.js.map} +0 -0
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useLatestTaskRunner
|
|
4
|
+
} from "./chunk-2DDJ6YH6.js";
|
|
1
5
|
import {
|
|
2
6
|
ArtifactSurface,
|
|
3
7
|
EditableArtifactMessage,
|
|
@@ -6,10 +10,10 @@ import {
|
|
|
6
10
|
editableArtifactProjectionKey,
|
|
7
11
|
editableArtifactStatusLabel,
|
|
8
12
|
useEditableArtifactView
|
|
9
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PYEOPA4M.js";
|
|
10
14
|
import {
|
|
11
15
|
cn
|
|
12
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-TXS65BB2.js";
|
|
13
17
|
|
|
14
18
|
// src/components/artifacts/presentation-editor.tsx
|
|
15
19
|
import {
|
|
@@ -37,6 +41,9 @@ var MAX_ZOOM = 4;
|
|
|
37
41
|
var RAIL_ITEM_HEIGHT = 116;
|
|
38
42
|
var RAIL_OVERSCAN = 3;
|
|
39
43
|
var DEFAULT_RAIL_HEIGHT = 640;
|
|
44
|
+
var MOBILE_RAIL_ITEM_HEIGHT = 44;
|
|
45
|
+
var MOBILE_RAIL_OVERSCAN = 3;
|
|
46
|
+
var DEFAULT_MOBILE_LIST_HEIGHT = 264;
|
|
40
47
|
var DEFAULT_VIEWPORT = { width: 960, height: 640 };
|
|
41
48
|
var SPATIAL_TILE = 256;
|
|
42
49
|
var MAX_SPATIAL_BUCKETS_PER_OBJECT = 1024;
|
|
@@ -87,6 +94,14 @@ function PresentationProjectionEditor({
|
|
|
87
94
|
}
|
|
88
95
|
);
|
|
89
96
|
}
|
|
97
|
+
function nextSlideIndexFromKey(key, activeIndex, length) {
|
|
98
|
+
if (length === 0) return null;
|
|
99
|
+
if (key === "ArrowDown") return Math.min(length - 1, activeIndex + 1);
|
|
100
|
+
if (key === "ArrowUp") return Math.max(0, activeIndex - 1);
|
|
101
|
+
if (key === "Home") return 0;
|
|
102
|
+
if (key === "End") return length - 1;
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
90
105
|
function PresentationEditorCore({
|
|
91
106
|
presentation,
|
|
92
107
|
revision,
|
|
@@ -97,6 +112,7 @@ function PresentationEditorCore({
|
|
|
97
112
|
zoom: controlledZoom,
|
|
98
113
|
defaultZoom = 0.75,
|
|
99
114
|
readOnly = false,
|
|
115
|
+
authoringBlockedReason,
|
|
100
116
|
className,
|
|
101
117
|
onSlideChange,
|
|
102
118
|
onSelectionChange,
|
|
@@ -104,6 +120,8 @@ function PresentationEditorCore({
|
|
|
104
120
|
onCommandError,
|
|
105
121
|
onZoomChange
|
|
106
122
|
}) {
|
|
123
|
+
const mutationsBlocked = readOnly || authoringBlockedReason !== void 0;
|
|
124
|
+
const authoringStatus = readOnly ? null : authoringBlockedReason === "pending_conflict" ? "An earlier change needs attention" : authoringBlockedReason === "prior_writer" ? "Saving earlier changes\u2026" : null;
|
|
107
125
|
const slides = presentation.slides.items;
|
|
108
126
|
const firstSlideId = slides[0]?.id ?? null;
|
|
109
127
|
const [localSlideId, setLocalSlideId] = useState(
|
|
@@ -125,6 +143,11 @@ function PresentationEditorCore({
|
|
|
125
143
|
scrollTop: 0,
|
|
126
144
|
height: DEFAULT_RAIL_HEIGHT
|
|
127
145
|
});
|
|
146
|
+
const [mobileSelectorOpen, setMobileSelectorOpen] = useState(false);
|
|
147
|
+
const [mobileRail, setMobileRail] = useState({
|
|
148
|
+
scrollTop: 0,
|
|
149
|
+
height: DEFAULT_MOBILE_LIST_HEIGHT
|
|
150
|
+
});
|
|
128
151
|
const [viewport, setViewport] = useState({
|
|
129
152
|
scrollLeft: 0,
|
|
130
153
|
scrollTop: 0,
|
|
@@ -137,6 +160,9 @@ function PresentationEditorCore({
|
|
|
137
160
|
const [textDraft, setTextDraft] = useState("");
|
|
138
161
|
const [paintEpoch, setPaintEpoch] = useState(0);
|
|
139
162
|
const railRef = useRef(null);
|
|
163
|
+
const mobileSelectorTriggerRef = useRef(null);
|
|
164
|
+
const mobileSelectorPanelRef = useRef(null);
|
|
165
|
+
const mobileRailRef = useRef(null);
|
|
140
166
|
const viewportRef = useRef(null);
|
|
141
167
|
const stageRef = useRef(null);
|
|
142
168
|
const canvasRef = useRef(null);
|
|
@@ -150,6 +176,7 @@ function PresentationEditorCore({
|
|
|
150
176
|
const commandVersionsRef = useRef(/* @__PURE__ */ new Map());
|
|
151
177
|
const pendingSlideIdRef = useRef(null);
|
|
152
178
|
const pendingObjectIdRef = useRef(null);
|
|
179
|
+
const mobileRailScrollOnOpenRef = useRef(0);
|
|
153
180
|
const domId = useId().replaceAll(":", "");
|
|
154
181
|
const selectionProxyId = `${domId}-presentation-selection`;
|
|
155
182
|
const instructionsId = `${domId}-presentation-instructions`;
|
|
@@ -208,6 +235,44 @@ function PresentationEditorCore({
|
|
|
208
235
|
observer.observe(element);
|
|
209
236
|
return () => observer.disconnect();
|
|
210
237
|
}, []);
|
|
238
|
+
useLayoutEffect(() => {
|
|
239
|
+
if (!mobileSelectorOpen) return;
|
|
240
|
+
const element = mobileRailRef.current;
|
|
241
|
+
if (!element) return;
|
|
242
|
+
element.scrollTop = mobileRailScrollOnOpenRef.current;
|
|
243
|
+
element.focus();
|
|
244
|
+
const measure = () => setMobileRail((current) => ({
|
|
245
|
+
scrollTop: element.scrollTop,
|
|
246
|
+
height: element.clientHeight || current.height
|
|
247
|
+
}));
|
|
248
|
+
measure();
|
|
249
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
250
|
+
const observer = new ResizeObserver(measure);
|
|
251
|
+
observer.observe(element);
|
|
252
|
+
return () => observer.disconnect();
|
|
253
|
+
}, [mobileSelectorOpen]);
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
if (!mobileSelectorOpen) return;
|
|
256
|
+
const onPointerDown = (event) => {
|
|
257
|
+
const target = event.target;
|
|
258
|
+
if (!(target instanceof Node)) return;
|
|
259
|
+
if (mobileSelectorTriggerRef.current?.contains(target)) return;
|
|
260
|
+
if (mobileSelectorPanelRef.current?.contains(target)) return;
|
|
261
|
+
setMobileSelectorOpen(false);
|
|
262
|
+
};
|
|
263
|
+
const onKeyDown = (event) => {
|
|
264
|
+
if (event.key !== "Escape") return;
|
|
265
|
+
event.preventDefault();
|
|
266
|
+
setMobileSelectorOpen(false);
|
|
267
|
+
mobileSelectorTriggerRef.current?.focus();
|
|
268
|
+
};
|
|
269
|
+
document.addEventListener("pointerdown", onPointerDown);
|
|
270
|
+
document.addEventListener("keydown", onKeyDown);
|
|
271
|
+
return () => {
|
|
272
|
+
document.removeEventListener("pointerdown", onPointerDown);
|
|
273
|
+
document.removeEventListener("keydown", onKeyDown);
|
|
274
|
+
};
|
|
275
|
+
}, [mobileSelectorOpen]);
|
|
211
276
|
useLayoutEffect(() => {
|
|
212
277
|
const element = viewportRef.current;
|
|
213
278
|
if (!element) return;
|
|
@@ -419,7 +484,7 @@ function PresentationEditorCore({
|
|
|
419
484
|
]);
|
|
420
485
|
const runCommit = useCallback(
|
|
421
486
|
(key, command, rollback, retry) => {
|
|
422
|
-
if (!onCommit) return;
|
|
487
|
+
if (mutationsBlocked || !onCommit) return;
|
|
423
488
|
const version = (commandVersionsRef.current.get(key) ?? 0) + 1;
|
|
424
489
|
commandVersionsRef.current.set(key, version);
|
|
425
490
|
const scope = commandScopeRef.current;
|
|
@@ -455,11 +520,11 @@ function PresentationEditorCore({
|
|
|
455
520
|
}
|
|
456
521
|
);
|
|
457
522
|
},
|
|
458
|
-
[onCommandError, onCommit]
|
|
523
|
+
[mutationsBlocked, onCommandError, onCommit]
|
|
459
524
|
);
|
|
460
525
|
const commitPosition = useCallback(
|
|
461
526
|
(entry, kind, next) => {
|
|
462
|
-
if (!activeSlide ||
|
|
527
|
+
if (!activeSlide || mutationsBlocked || entry.readOnly) return;
|
|
463
528
|
const before = copyPosition(entry.object.position);
|
|
464
529
|
const after = normalizeEditorPosition(next);
|
|
465
530
|
if (samePosition(before, after)) return;
|
|
@@ -487,10 +552,10 @@ function PresentationEditorCore({
|
|
|
487
552
|
);
|
|
488
553
|
submit();
|
|
489
554
|
},
|
|
490
|
-
[activeSlide,
|
|
555
|
+
[activeSlide, mutationsBlocked, runCommit]
|
|
491
556
|
);
|
|
492
557
|
const insertSlide = useCallback(() => {
|
|
493
|
-
if (
|
|
558
|
+
if (mutationsBlocked) return;
|
|
494
559
|
const slideId = randomPresentationId();
|
|
495
560
|
const index = activeIndex < 0 ? slides.length : activeIndex + 1;
|
|
496
561
|
const command = { kind: "slide-insert", slideId, index };
|
|
@@ -506,9 +571,9 @@ function PresentationEditorCore({
|
|
|
506
571
|
);
|
|
507
572
|
};
|
|
508
573
|
submit();
|
|
509
|
-
}, [activeIndex,
|
|
574
|
+
}, [activeIndex, mutationsBlocked, runCommit, slides.length]);
|
|
510
575
|
const deleteSlide = useCallback(() => {
|
|
511
|
-
if (
|
|
576
|
+
if (mutationsBlocked || !activeSlide) return;
|
|
512
577
|
const command = {
|
|
513
578
|
kind: "slide-delete",
|
|
514
579
|
slideId: activeSlide.id,
|
|
@@ -516,9 +581,9 @@ function PresentationEditorCore({
|
|
|
516
581
|
};
|
|
517
582
|
const submit = () => runCommit(`slide-delete:${activeSlide.id}`, command, () => void 0, submit);
|
|
518
583
|
submit();
|
|
519
|
-
}, [activeIndex, activeSlide,
|
|
584
|
+
}, [activeIndex, activeSlide, mutationsBlocked, runCommit]);
|
|
520
585
|
const insertTextBox = useCallback(() => {
|
|
521
|
-
if (
|
|
586
|
+
if (mutationsBlocked || !activeSlide) return;
|
|
522
587
|
const objectId = randomPresentationId();
|
|
523
588
|
const position = nextTextBoxPosition(objects, presentation.slideSize);
|
|
524
589
|
const command = {
|
|
@@ -540,9 +605,9 @@ function PresentationEditorCore({
|
|
|
540
605
|
);
|
|
541
606
|
};
|
|
542
607
|
submit();
|
|
543
|
-
}, [activeSlide, objects, presentation.slideSize,
|
|
608
|
+
}, [activeSlide, objects, presentation.slideSize, mutationsBlocked, runCommit]);
|
|
544
609
|
const deleteObject = useCallback(() => {
|
|
545
|
-
if (
|
|
610
|
+
if (mutationsBlocked || !activeSlide || !selected || selected.readOnly) return;
|
|
546
611
|
const command = {
|
|
547
612
|
kind: "object-delete",
|
|
548
613
|
slideId: activeSlide.id,
|
|
@@ -550,10 +615,10 @@ function PresentationEditorCore({
|
|
|
550
615
|
};
|
|
551
616
|
const submit = () => runCommit(`object-delete:${activeSlide.id}:${selected.id}`, command, () => void 0, submit);
|
|
552
617
|
submit();
|
|
553
|
-
}, [activeSlide,
|
|
618
|
+
}, [activeSlide, mutationsBlocked, runCommit, selected]);
|
|
554
619
|
const startTextEdit = useCallback(
|
|
555
620
|
(entry) => {
|
|
556
|
-
if (
|
|
621
|
+
if (mutationsBlocked || !entry || entry.readOnly || entry.kind !== "shape") return;
|
|
557
622
|
const shape = entry.object;
|
|
558
623
|
if (shape.geometry === "line") return;
|
|
559
624
|
const before = shape.text.toString();
|
|
@@ -563,7 +628,7 @@ function PresentationEditorCore({
|
|
|
563
628
|
setTextEdit(edit);
|
|
564
629
|
setTextDraft(before);
|
|
565
630
|
},
|
|
566
|
-
[activeSlide,
|
|
631
|
+
[activeSlide, mutationsBlocked]
|
|
567
632
|
);
|
|
568
633
|
useEffect(() => {
|
|
569
634
|
if (!textEdit) return;
|
|
@@ -573,12 +638,12 @@ function PresentationEditorCore({
|
|
|
573
638
|
const finishTextEdit = useCallback(
|
|
574
639
|
(cancel = false) => {
|
|
575
640
|
const edit = textEditRef.current;
|
|
576
|
-
if (!edit) return;
|
|
641
|
+
if (!edit || !cancel && authoringBlockedReason !== void 0) return;
|
|
577
642
|
textEditRef.current = null;
|
|
578
643
|
setTextEdit(null);
|
|
579
644
|
const { shape, before, slideId } = edit;
|
|
580
645
|
if (!activeSlide || activeSlide.id !== slideId) return;
|
|
581
|
-
if (cancel ||
|
|
646
|
+
if (cancel || mutationsBlocked || before === textDraft) return;
|
|
582
647
|
shape.text.set(textDraft);
|
|
583
648
|
setModelEpoch((value) => value + 1);
|
|
584
649
|
const command = {
|
|
@@ -603,7 +668,7 @@ function PresentationEditorCore({
|
|
|
603
668
|
);
|
|
604
669
|
submit();
|
|
605
670
|
},
|
|
606
|
-
[activeSlide,
|
|
671
|
+
[activeSlide, authoringBlockedReason, mutationsBlocked, runCommit, textDraft]
|
|
607
672
|
);
|
|
608
673
|
const cycleObject = useCallback(
|
|
609
674
|
(direction) => {
|
|
@@ -623,6 +688,32 @@ function PresentationEditorCore({
|
|
|
623
688
|
},
|
|
624
689
|
[activeIndex, activeSlide, selectSlide, slides]
|
|
625
690
|
);
|
|
691
|
+
const toggleMobileSlideSelector = useCallback(() => {
|
|
692
|
+
setMobileSelectorOpen((open) => {
|
|
693
|
+
if (open) return false;
|
|
694
|
+
const index = Math.max(0, activeIndex);
|
|
695
|
+
const height = DEFAULT_MOBILE_LIST_HEIGHT;
|
|
696
|
+
const maxScroll = Math.max(0, slides.length * MOBILE_RAIL_ITEM_HEIGHT - height);
|
|
697
|
+
const scrollTop = Math.max(
|
|
698
|
+
0,
|
|
699
|
+
Math.min(
|
|
700
|
+
maxScroll,
|
|
701
|
+
index * MOBILE_RAIL_ITEM_HEIGHT - height / 2 + MOBILE_RAIL_ITEM_HEIGHT / 2
|
|
702
|
+
)
|
|
703
|
+
);
|
|
704
|
+
mobileRailScrollOnOpenRef.current = scrollTop;
|
|
705
|
+
setMobileRail({ scrollTop, height });
|
|
706
|
+
return true;
|
|
707
|
+
});
|
|
708
|
+
}, [activeIndex, slides.length]);
|
|
709
|
+
const chooseMobileSlide = useCallback(
|
|
710
|
+
(slide, index) => {
|
|
711
|
+
if (slide !== activeSlide) selectSlide(slide, index);
|
|
712
|
+
setMobileSelectorOpen(false);
|
|
713
|
+
mobileSelectorTriggerRef.current?.focus();
|
|
714
|
+
},
|
|
715
|
+
[activeSlide, selectSlide]
|
|
716
|
+
);
|
|
626
717
|
const handleCanvasKeyDown = useCallback(
|
|
627
718
|
(event) => {
|
|
628
719
|
if (event.metaKey || event.ctrlKey) {
|
|
@@ -672,7 +763,7 @@ function PresentationEditorCore({
|
|
|
672
763
|
}
|
|
673
764
|
if (!selected || !event.key.startsWith("Arrow")) return;
|
|
674
765
|
event.preventDefault();
|
|
675
|
-
if (
|
|
766
|
+
if (mutationsBlocked || selected.readOnly) return;
|
|
676
767
|
const amount = event.shiftKey ? 10 : 1;
|
|
677
768
|
const dx = event.key === "ArrowLeft" ? -amount : event.key === "ArrowRight" ? amount : 0;
|
|
678
769
|
const dy = event.key === "ArrowUp" ? -amount : event.key === "ArrowDown" ? amount : 0;
|
|
@@ -693,7 +784,7 @@ function PresentationEditorCore({
|
|
|
693
784
|
commitPosition,
|
|
694
785
|
cycleObject,
|
|
695
786
|
fitSlide,
|
|
696
|
-
|
|
787
|
+
mutationsBlocked,
|
|
697
788
|
selectObject,
|
|
698
789
|
selected,
|
|
699
790
|
startTextEdit,
|
|
@@ -717,7 +808,7 @@ function PresentationEditorCore({
|
|
|
717
808
|
event.preventDefault();
|
|
718
809
|
event.stopPropagation();
|
|
719
810
|
selectObject(entry);
|
|
720
|
-
if (
|
|
811
|
+
if (mutationsBlocked || entry.readOnly) return;
|
|
721
812
|
const start = pointFromPointer(event);
|
|
722
813
|
const before = copyPosition(entry.object.position);
|
|
723
814
|
dragRef.current = {
|
|
@@ -731,7 +822,7 @@ function PresentationEditorCore({
|
|
|
731
822
|
setDraftPosition({ objectId: entry.id, position: before });
|
|
732
823
|
overlayRef.current?.setPointerCapture?.(event.pointerId);
|
|
733
824
|
},
|
|
734
|
-
[pointFromPointer,
|
|
825
|
+
[pointFromPointer, mutationsBlocked, selectObject]
|
|
735
826
|
);
|
|
736
827
|
const handlePointerDown = useCallback(
|
|
737
828
|
(event) => {
|
|
@@ -749,16 +840,17 @@ function PresentationEditorCore({
|
|
|
749
840
|
const handlePointerMove = useCallback(
|
|
750
841
|
(event) => {
|
|
751
842
|
const drag = dragRef.current;
|
|
752
|
-
if (!drag || drag.pointerId !== event.pointerId) return;
|
|
843
|
+
if (!drag || drag.pointerId !== event.pointerId || mutationsBlocked) return;
|
|
753
844
|
const point = pointFromPointer(event);
|
|
754
845
|
setDraftPosition({ objectId: drag.object.id, position: positionFromDrag(drag, point) });
|
|
755
846
|
},
|
|
756
|
-
[pointFromPointer]
|
|
847
|
+
[mutationsBlocked, pointFromPointer]
|
|
757
848
|
);
|
|
758
849
|
const finishDrag = useCallback(
|
|
759
850
|
(event, cancel = false) => {
|
|
760
851
|
const drag = dragRef.current;
|
|
761
|
-
if (!drag || drag.pointerId !== event.pointerId)
|
|
852
|
+
if (!drag || drag.pointerId !== event.pointerId || !cancel && authoringBlockedReason !== void 0)
|
|
853
|
+
return;
|
|
762
854
|
dragRef.current = null;
|
|
763
855
|
const captureTarget = overlayRef.current;
|
|
764
856
|
if (captureTarget?.hasPointerCapture?.(event.pointerId)) {
|
|
@@ -771,19 +863,32 @@ function PresentationEditorCore({
|
|
|
771
863
|
const point = pointFromPointer(event);
|
|
772
864
|
commitPosition(entry, drag.mode, positionFromDrag(drag, point));
|
|
773
865
|
},
|
|
774
|
-
[commitPosition, objectById, pointFromPointer]
|
|
866
|
+
[authoringBlockedReason, commitPosition, objectById, pointFromPointer]
|
|
867
|
+
);
|
|
868
|
+
const handleLostPointerCapture = useCallback(
|
|
869
|
+
(event) => {
|
|
870
|
+
const drag = dragRef.current;
|
|
871
|
+
if (!drag || drag.pointerId !== event.pointerId || authoringBlockedReason !== void 0)
|
|
872
|
+
return;
|
|
873
|
+
dragRef.current = null;
|
|
874
|
+
setDraftPosition(null);
|
|
875
|
+
},
|
|
876
|
+
[authoringBlockedReason]
|
|
775
877
|
);
|
|
776
|
-
const handleLostPointerCapture = useCallback((event) => {
|
|
777
|
-
const drag = dragRef.current;
|
|
778
|
-
if (!drag || drag.pointerId !== event.pointerId) return;
|
|
779
|
-
dragRef.current = null;
|
|
780
|
-
setDraftPosition(null);
|
|
781
|
-
}, []);
|
|
782
878
|
const railStart = Math.max(0, Math.floor(rail.scrollTop / RAIL_ITEM_HEIGHT) - RAIL_OVERSCAN);
|
|
783
879
|
const railEnd = Math.min(
|
|
784
880
|
slides.length,
|
|
785
881
|
Math.ceil((rail.scrollTop + rail.height) / RAIL_ITEM_HEIGHT) + RAIL_OVERSCAN
|
|
786
882
|
);
|
|
883
|
+
const mobileRailStart = Math.max(
|
|
884
|
+
0,
|
|
885
|
+
Math.floor(mobileRail.scrollTop / MOBILE_RAIL_ITEM_HEIGHT) - MOBILE_RAIL_OVERSCAN
|
|
886
|
+
);
|
|
887
|
+
const mobileRailEnd = Math.min(
|
|
888
|
+
slides.length,
|
|
889
|
+
Math.ceil((mobileRail.scrollTop + mobileRail.height) / MOBILE_RAIL_ITEM_HEIGHT) + MOBILE_RAIL_OVERSCAN
|
|
890
|
+
);
|
|
891
|
+
const slideCountLabel = activeIndex >= 0 ? `${activeIndex + 1} / ${slides.length}` : `0 / ${slides.length}`;
|
|
787
892
|
const stageWidth = presentation.slideSize.width * zoom;
|
|
788
893
|
const stageHeight = presentation.slideSize.height * zoom;
|
|
789
894
|
return /* @__PURE__ */ jsxs(
|
|
@@ -793,8 +898,8 @@ function PresentationEditorCore({
|
|
|
793
898
|
style: { minHeight: "22rem" },
|
|
794
899
|
"data-og-presentation-editor": true,
|
|
795
900
|
"data-og-painted-object-count": visibleObjectIndexes.length,
|
|
796
|
-
"data-og-command-state": commandFailure ? "error" : pendingCommands > 0 ? "pending" : "idle",
|
|
797
|
-
"aria-busy": pendingCommands > 0 ? "true" : void 0,
|
|
901
|
+
"data-og-command-state": commandFailure || authoringBlockedReason === "pending_conflict" ? "error" : pendingCommands > 0 || authoringBlockedReason === "prior_writer" ? "pending" : "idle",
|
|
902
|
+
"aria-busy": pendingCommands > 0 || authoringBlockedReason === "prior_writer" ? "true" : void 0,
|
|
798
903
|
children: [
|
|
799
904
|
/* @__PURE__ */ jsxs(
|
|
800
905
|
"div",
|
|
@@ -815,7 +920,23 @@ function PresentationEditorCore({
|
|
|
815
920
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, {})
|
|
816
921
|
}
|
|
817
922
|
),
|
|
818
|
-
/* @__PURE__ */ jsx(
|
|
923
|
+
/* @__PURE__ */ jsx(
|
|
924
|
+
"button",
|
|
925
|
+
{
|
|
926
|
+
ref: mobileSelectorTriggerRef,
|
|
927
|
+
type: "button",
|
|
928
|
+
"aria-label": "Choose slide",
|
|
929
|
+
"aria-haspopup": "listbox",
|
|
930
|
+
"aria-expanded": mobileSelectorOpen,
|
|
931
|
+
"aria-controls": mobileSelectorOpen ? `${domId}-mobile-slides` : void 0,
|
|
932
|
+
disabled: slides.length === 0,
|
|
933
|
+
"data-og-mobile-slide-selector": true,
|
|
934
|
+
onClick: toggleMobileSlideSelector,
|
|
935
|
+
className: "inline-flex min-h-11 min-w-16 shrink-0 items-center justify-center rounded-og-sm px-2 text-og-xs tabular-nums text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 sm:hidden",
|
|
936
|
+
children: /* @__PURE__ */ jsx("span", { children: slideCountLabel })
|
|
937
|
+
}
|
|
938
|
+
),
|
|
939
|
+
/* @__PURE__ */ jsx("span", { className: "hidden min-w-16 shrink-0 text-center text-og-xs tabular-nums text-og-fg-muted sm:inline", children: slideCountLabel }),
|
|
819
940
|
/* @__PURE__ */ jsx(
|
|
820
941
|
"button",
|
|
821
942
|
{
|
|
@@ -832,7 +953,7 @@ function PresentationEditorCore({
|
|
|
832
953
|
{
|
|
833
954
|
type: "button",
|
|
834
955
|
"aria-label": "Add slide",
|
|
835
|
-
disabled:
|
|
956
|
+
disabled: mutationsBlocked,
|
|
836
957
|
onClick: insertSlide,
|
|
837
958
|
className: "ml-0.5 grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 [&>svg]:size-3.5",
|
|
838
959
|
children: /* @__PURE__ */ jsx(FilePlus2Icon, {})
|
|
@@ -843,7 +964,7 @@ function PresentationEditorCore({
|
|
|
843
964
|
{
|
|
844
965
|
type: "button",
|
|
845
966
|
"aria-label": "Delete slide",
|
|
846
|
-
disabled:
|
|
967
|
+
disabled: mutationsBlocked || !activeSlide,
|
|
847
968
|
onClick: deleteSlide,
|
|
848
969
|
className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-status-failed disabled:opacity-35 [&>svg]:size-3.5",
|
|
849
970
|
children: /* @__PURE__ */ jsx(Trash2Icon, {})
|
|
@@ -890,7 +1011,7 @@ function PresentationEditorCore({
|
|
|
890
1011
|
{
|
|
891
1012
|
type: "button",
|
|
892
1013
|
"aria-label": "Add text box",
|
|
893
|
-
disabled:
|
|
1014
|
+
disabled: mutationsBlocked || !activeSlide,
|
|
894
1015
|
onClick: insertTextBox,
|
|
895
1016
|
className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-fg disabled:opacity-35 [&>svg]:size-3.5",
|
|
896
1017
|
children: /* @__PURE__ */ jsx(TypeIcon, {})
|
|
@@ -901,7 +1022,7 @@ function PresentationEditorCore({
|
|
|
901
1022
|
{
|
|
902
1023
|
type: "button",
|
|
903
1024
|
"aria-label": "Delete selected object",
|
|
904
|
-
disabled:
|
|
1025
|
+
disabled: mutationsBlocked || !selected || selected.readOnly,
|
|
905
1026
|
onClick: deleteObject,
|
|
906
1027
|
className: "grid size-7 shrink-0 place-items-center rounded-og-sm text-og-fg-muted hover:bg-og-surface-3 hover:text-og-status-failed disabled:opacity-35 [&>svg]:size-3.5",
|
|
907
1028
|
children: /* @__PURE__ */ jsx(Trash2Icon, {})
|
|
@@ -912,15 +1033,15 @@ function PresentationEditorCore({
|
|
|
912
1033
|
"span",
|
|
913
1034
|
{
|
|
914
1035
|
className: "hidden max-w-44 shrink-0 truncate border-l border-og-border px-2 text-og-xs text-og-fg-subtle sm:block",
|
|
915
|
-
title: commandFailure ? "Change not saved" : pendingCommands > 0 ? "Saving\u2026" :
|
|
916
|
-
children: commandFailure ? "Change not saved" : pendingCommands > 0 ? "Saving\u2026" :
|
|
1036
|
+
title: commandFailure ? "Change not saved" : authoringStatus ? authoringStatus : pendingCommands > 0 ? "Saving\u2026" : mutationsBlocked ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit",
|
|
1037
|
+
children: commandFailure ? "Change not saved" : authoringStatus ? authoringStatus : pendingCommands > 0 ? "Saving\u2026" : mutationsBlocked ? "View only" : selected ? `${objectLabel(selected)}${selected.readOnly ? " \xB7 View only" : ""}` : "Select an object to edit"
|
|
917
1038
|
}
|
|
918
1039
|
)
|
|
919
1040
|
]
|
|
920
1041
|
}
|
|
921
1042
|
),
|
|
922
|
-
/* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: commandFailure?.message ?? (pendingCommands > 0 ? "Saving presentation changes" : "") }),
|
|
923
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-h-0 min-w-0 flex-1", children: [
|
|
1043
|
+
/* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: commandFailure?.message ?? authoringStatus ?? (pendingCommands > 0 ? "Saving presentation changes" : "") }),
|
|
1044
|
+
/* @__PURE__ */ jsxs("div", { className: "relative flex min-h-0 min-w-0 flex-1", children: [
|
|
924
1045
|
/* @__PURE__ */ jsx(
|
|
925
1046
|
"div",
|
|
926
1047
|
{
|
|
@@ -943,12 +1064,7 @@ function PresentationEditorCore({
|
|
|
943
1064
|
}));
|
|
944
1065
|
},
|
|
945
1066
|
onKeyDown: (event) => {
|
|
946
|
-
|
|
947
|
-
let nextIndex = null;
|
|
948
|
-
if (event.key === "ArrowDown") nextIndex = Math.min(slides.length - 1, activeIndex + 1);
|
|
949
|
-
else if (event.key === "ArrowUp") nextIndex = Math.max(0, activeIndex - 1);
|
|
950
|
-
else if (event.key === "Home") nextIndex = 0;
|
|
951
|
-
else if (event.key === "End") nextIndex = slides.length - 1;
|
|
1067
|
+
const nextIndex = nextSlideIndexFromKey(event.key, activeIndex, slides.length);
|
|
952
1068
|
if (nextIndex === null) return;
|
|
953
1069
|
event.preventDefault();
|
|
954
1070
|
const next = slides[nextIndex];
|
|
@@ -1001,6 +1117,96 @@ function PresentationEditorCore({
|
|
|
1001
1117
|
}) })
|
|
1002
1118
|
}
|
|
1003
1119
|
),
|
|
1120
|
+
mobileSelectorOpen ? /* @__PURE__ */ jsx(
|
|
1121
|
+
"div",
|
|
1122
|
+
{
|
|
1123
|
+
ref: mobileSelectorPanelRef,
|
|
1124
|
+
className: "absolute left-2 top-2 z-40 max-w-56 overflow-hidden rounded-og-md border border-og-border bg-og-surface-1 shadow-og-md sm:hidden",
|
|
1125
|
+
style: { width: "calc(100% - 1rem)" },
|
|
1126
|
+
children: /* @__PURE__ */ jsx(
|
|
1127
|
+
"div",
|
|
1128
|
+
{
|
|
1129
|
+
ref: mobileRailRef,
|
|
1130
|
+
id: `${domId}-mobile-slides`,
|
|
1131
|
+
role: "listbox",
|
|
1132
|
+
tabIndex: 0,
|
|
1133
|
+
"aria-label": "Slides",
|
|
1134
|
+
"aria-orientation": "vertical",
|
|
1135
|
+
"aria-activedescendant": activeSlide && activeIndex >= mobileRailStart && activeIndex < mobileRailEnd ? `${domId}-mobile-slide-${safeDomId(activeSlide.id)}` : void 0,
|
|
1136
|
+
className: "max-h-72 overflow-y-auto outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-og-accent",
|
|
1137
|
+
"data-og-mobile-slide-list": true,
|
|
1138
|
+
"data-og-window-start": mobileRailStart,
|
|
1139
|
+
"data-og-window-end": mobileRailEnd,
|
|
1140
|
+
onScroll: (event) => {
|
|
1141
|
+
const scrollTop = event.currentTarget.scrollTop;
|
|
1142
|
+
const height = event.currentTarget.clientHeight;
|
|
1143
|
+
setMobileRail((current) => ({
|
|
1144
|
+
scrollTop,
|
|
1145
|
+
height: height || current.height
|
|
1146
|
+
}));
|
|
1147
|
+
},
|
|
1148
|
+
onKeyDown: (event) => {
|
|
1149
|
+
if (event.key === "Escape") {
|
|
1150
|
+
event.preventDefault();
|
|
1151
|
+
setMobileSelectorOpen(false);
|
|
1152
|
+
mobileSelectorTriggerRef.current?.focus();
|
|
1153
|
+
return;
|
|
1154
|
+
}
|
|
1155
|
+
const nextIndex = nextSlideIndexFromKey(event.key, activeIndex, slides.length);
|
|
1156
|
+
if (nextIndex === null) return;
|
|
1157
|
+
event.preventDefault();
|
|
1158
|
+
const next = slides[nextIndex];
|
|
1159
|
+
if (!next) return;
|
|
1160
|
+
if (next !== activeSlide) selectSlide(next, nextIndex);
|
|
1161
|
+
const list = event.currentTarget;
|
|
1162
|
+
const top = nextIndex * MOBILE_RAIL_ITEM_HEIGHT;
|
|
1163
|
+
const bottom = top + MOBILE_RAIL_ITEM_HEIGHT;
|
|
1164
|
+
if (top < list.scrollTop) list.scrollTop = top;
|
|
1165
|
+
else if (bottom > list.scrollTop + list.clientHeight) {
|
|
1166
|
+
list.scrollTop = bottom - list.clientHeight;
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1169
|
+
children: /* @__PURE__ */ jsx(
|
|
1170
|
+
"div",
|
|
1171
|
+
{
|
|
1172
|
+
className: "relative w-full",
|
|
1173
|
+
style: { height: slides.length * MOBILE_RAIL_ITEM_HEIGHT },
|
|
1174
|
+
children: slides.slice(mobileRailStart, mobileRailEnd).map((slide, offset) => {
|
|
1175
|
+
const index = mobileRailStart + offset;
|
|
1176
|
+
const active = slide === activeSlide;
|
|
1177
|
+
return /* @__PURE__ */ jsxs(
|
|
1178
|
+
"button",
|
|
1179
|
+
{
|
|
1180
|
+
id: `${domId}-mobile-slide-${safeDomId(slide.id)}`,
|
|
1181
|
+
type: "button",
|
|
1182
|
+
role: "option",
|
|
1183
|
+
tabIndex: -1,
|
|
1184
|
+
"aria-selected": active,
|
|
1185
|
+
"aria-label": `Slide ${index + 1}${slide.title ? `: ${slide.title}` : ""}`,
|
|
1186
|
+
onClick: () => chooseMobileSlide(slide, index),
|
|
1187
|
+
className: cn(
|
|
1188
|
+
"absolute left-0 flex min-h-11 w-full items-center gap-2 px-2 text-left",
|
|
1189
|
+
active ? "bg-og-surface-3 text-og-fg" : "text-og-fg-muted hover:bg-og-surface-3/70"
|
|
1190
|
+
),
|
|
1191
|
+
style: {
|
|
1192
|
+
top: index * MOBILE_RAIL_ITEM_HEIGHT,
|
|
1193
|
+
height: MOBILE_RAIL_ITEM_HEIGHT
|
|
1194
|
+
},
|
|
1195
|
+
"data-og-mobile-slide-index": index,
|
|
1196
|
+
children: [
|
|
1197
|
+
/* @__PURE__ */ jsx("span", { className: "w-7 shrink-0 text-right text-og-xs tabular-nums text-og-fg-subtle", children: index + 1 }),
|
|
1198
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-og-sm", children: slide.title || `Slide ${index + 1}` })
|
|
1199
|
+
]
|
|
1200
|
+
},
|
|
1201
|
+
slide.id
|
|
1202
|
+
);
|
|
1203
|
+
})
|
|
1204
|
+
}
|
|
1205
|
+
)
|
|
1206
|
+
}
|
|
1207
|
+
)
|
|
1208
|
+
}
|
|
1209
|
+
) : null,
|
|
1004
1210
|
/* @__PURE__ */ jsxs(
|
|
1005
1211
|
"div",
|
|
1006
1212
|
{
|
|
@@ -1035,7 +1241,10 @@ function PresentationEditorCore({
|
|
|
1035
1241
|
"button",
|
|
1036
1242
|
{
|
|
1037
1243
|
type: "button",
|
|
1038
|
-
|
|
1244
|
+
disabled: mutationsBlocked,
|
|
1245
|
+
onClick: () => {
|
|
1246
|
+
if (!mutationsBlocked) commandFailure.retry();
|
|
1247
|
+
},
|
|
1039
1248
|
className: "shrink-0 rounded-og-xs px-1.5 py-0.5 font-medium outline-hidden hover:bg-og-surface-3 focus-visible:ring-2 focus-visible:ring-og-accent",
|
|
1040
1249
|
children: "Retry"
|
|
1041
1250
|
}
|
|
@@ -1050,6 +1259,7 @@ function PresentationEditorCore({
|
|
|
1050
1259
|
className: "relative mx-auto shrink-0 overflow-hidden shadow-og-lg",
|
|
1051
1260
|
style: { width: stageWidth, height: stageHeight, backgroundColor: "#fff" },
|
|
1052
1261
|
"data-og-presentation-stage": true,
|
|
1262
|
+
"data-og-theme": "light",
|
|
1053
1263
|
children: [
|
|
1054
1264
|
/* @__PURE__ */ jsx(
|
|
1055
1265
|
"canvas",
|
|
@@ -1068,7 +1278,7 @@ function PresentationEditorCore({
|
|
|
1068
1278
|
tabIndex: 0,
|
|
1069
1279
|
"aria-label": `Slide ${activeIndex + 1} editor`,
|
|
1070
1280
|
"aria-describedby": selected ? `${instructionsId} ${selectionProxyId}` : instructionsId,
|
|
1071
|
-
"aria-readonly":
|
|
1281
|
+
"aria-readonly": mutationsBlocked || selected?.readOnly || void 0,
|
|
1072
1282
|
viewBox: `0 0 ${presentation.slideSize.width} ${presentation.slideSize.height}`,
|
|
1073
1283
|
className: "absolute inset-0 size-full touch-none outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-og-accent",
|
|
1074
1284
|
onKeyDown: handleCanvasKeyDown,
|
|
@@ -1092,19 +1302,19 @@ function PresentationEditorCore({
|
|
|
1092
1302
|
width: effectiveSelectedPosition.width,
|
|
1093
1303
|
height: effectiveSelectedPosition.height,
|
|
1094
1304
|
fill: "transparent",
|
|
1095
|
-
stroke: "var(--og-accent
|
|
1305
|
+
stroke: "var(--og-color-accent-deep)",
|
|
1096
1306
|
strokeWidth: 2,
|
|
1097
1307
|
vectorEffect: "non-scaling-stroke",
|
|
1098
1308
|
pointerEvents: "none"
|
|
1099
1309
|
}
|
|
1100
1310
|
),
|
|
1101
|
-
!
|
|
1311
|
+
!mutationsBlocked && !selected.readOnly ? /* @__PURE__ */ jsx(
|
|
1102
1312
|
"circle",
|
|
1103
1313
|
{
|
|
1104
1314
|
cx: effectiveSelectedPosition.left + effectiveSelectedPosition.width,
|
|
1105
1315
|
cy: effectiveSelectedPosition.top + effectiveSelectedPosition.height,
|
|
1106
1316
|
r: 6 / zoom,
|
|
1107
|
-
fill: "var(--og-accent
|
|
1317
|
+
fill: "var(--og-color-accent-deep)",
|
|
1108
1318
|
stroke: "white",
|
|
1109
1319
|
strokeWidth: 1.5,
|
|
1110
1320
|
vectorEffect: "non-scaling-stroke",
|
|
@@ -1125,9 +1335,14 @@ function PresentationEditorCore({
|
|
|
1125
1335
|
ref: editorRef,
|
|
1126
1336
|
"aria-label": `Edit ${textEdit.shape.name}`,
|
|
1127
1337
|
value: textDraft,
|
|
1338
|
+
readOnly: mutationsBlocked,
|
|
1128
1339
|
maxLength: 1e6,
|
|
1129
|
-
onChange: (event) =>
|
|
1130
|
-
|
|
1340
|
+
onChange: (event) => {
|
|
1341
|
+
if (!mutationsBlocked) setTextDraft(event.currentTarget.value);
|
|
1342
|
+
},
|
|
1343
|
+
onInput: (event) => {
|
|
1344
|
+
if (!mutationsBlocked) setTextDraft(event.currentTarget.value);
|
|
1345
|
+
},
|
|
1131
1346
|
onBlur: () => finishTextEdit(),
|
|
1132
1347
|
onKeyDown: (event) => {
|
|
1133
1348
|
if (event.key === "Escape") {
|
|
@@ -1170,6 +1385,7 @@ function PresentationEditorCore({
|
|
|
1170
1385
|
function PresentationArtifactSurface({
|
|
1171
1386
|
presentation,
|
|
1172
1387
|
title = "Presentation",
|
|
1388
|
+
showHeader,
|
|
1173
1389
|
subtitle,
|
|
1174
1390
|
actions,
|
|
1175
1391
|
busy,
|
|
@@ -1182,6 +1398,7 @@ function PresentationArtifactSurface({
|
|
|
1182
1398
|
{
|
|
1183
1399
|
modality: "presentation",
|
|
1184
1400
|
title,
|
|
1401
|
+
showHeader,
|
|
1185
1402
|
subtitle: subtitle ?? `${count} slide${count === 1 ? "" : "s"}`,
|
|
1186
1403
|
actions,
|
|
1187
1404
|
busy,
|
|
@@ -1193,6 +1410,7 @@ function PresentationArtifactSurface({
|
|
|
1193
1410
|
function PresentationProjectionArtifactSurface({
|
|
1194
1411
|
projection,
|
|
1195
1412
|
title = "Presentation",
|
|
1413
|
+
showHeader,
|
|
1196
1414
|
subtitle,
|
|
1197
1415
|
actions,
|
|
1198
1416
|
busy,
|
|
@@ -1205,6 +1423,7 @@ function PresentationProjectionArtifactSurface({
|
|
|
1205
1423
|
{
|
|
1206
1424
|
modality: "presentation",
|
|
1207
1425
|
title,
|
|
1426
|
+
showHeader,
|
|
1208
1427
|
subtitle: subtitle ?? `${count} slide${count === 1 ? "" : "s"}`,
|
|
1209
1428
|
actions,
|
|
1210
1429
|
busy,
|
|
@@ -2464,6 +2683,7 @@ var DEFAULT_PRESENTATION_TEXT_STYLE = Object.freeze({
|
|
|
2464
2683
|
function EditablePresentationArtifactSurface({
|
|
2465
2684
|
session,
|
|
2466
2685
|
title = "Presentation",
|
|
2686
|
+
showHeader,
|
|
2467
2687
|
subtitle,
|
|
2468
2688
|
readOnly = false,
|
|
2469
2689
|
onCommit,
|
|
@@ -2479,30 +2699,34 @@ function EditablePresentationArtifactSurface({
|
|
|
2479
2699
|
error: null
|
|
2480
2700
|
});
|
|
2481
2701
|
const loadGeneration = useRef2(0);
|
|
2702
|
+
const scheduleLoad = useLatestTaskRunner(session);
|
|
2482
2703
|
const sceneNodes = useRef2(/* @__PURE__ */ new Map());
|
|
2483
2704
|
useEffect2(() => {
|
|
2484
2705
|
const generation = ++loadGeneration.current;
|
|
2485
2706
|
let cancelled = false;
|
|
2486
2707
|
setState((current) => ({ ...current, loading: true, error: null }));
|
|
2487
|
-
|
|
2488
|
-
(
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2708
|
+
scheduleLoad(async () => {
|
|
2709
|
+
if (cancelled || generation !== loadGeneration.current) return;
|
|
2710
|
+
await composePresentationEditorProjection(session).then(
|
|
2711
|
+
(composed) => {
|
|
2712
|
+
if (cancelled || generation !== loadGeneration.current) return;
|
|
2713
|
+
sceneNodes.current = new Map(composed.sceneNodes);
|
|
2714
|
+
setState({ composed, loading: false, error: null });
|
|
2715
|
+
},
|
|
2716
|
+
(cause) => {
|
|
2717
|
+
if (cancelled || generation !== loadGeneration.current) return;
|
|
2718
|
+
setState({
|
|
2719
|
+
composed: null,
|
|
2720
|
+
loading: false,
|
|
2721
|
+
error: asEditableArtifactError(cause, "Could not open this presentation")
|
|
2722
|
+
});
|
|
2723
|
+
}
|
|
2724
|
+
);
|
|
2725
|
+
});
|
|
2502
2726
|
return () => {
|
|
2503
2727
|
cancelled = true;
|
|
2504
2728
|
};
|
|
2505
|
-
}, [invalidator, retryEpoch, session]);
|
|
2729
|
+
}, [invalidator, retryEpoch, scheduleLoad, session]);
|
|
2506
2730
|
const refresh = useCallback2(() => setRetryEpoch((value) => value + 1), []);
|
|
2507
2731
|
const writable = !readOnly && view.writable;
|
|
2508
2732
|
const applyCommit = useCallback2(
|
|
@@ -2510,6 +2734,7 @@ function EditablePresentationArtifactSurface({
|
|
|
2510
2734
|
const composed = state.composed;
|
|
2511
2735
|
if (!composed) throw new Error("Presentation projection is not ready");
|
|
2512
2736
|
if (!writable) throw new Error("This presentation is read only");
|
|
2737
|
+
if (view.authoringBlockedReason) throw new Error("An earlier change must settle first");
|
|
2513
2738
|
if (commit.revision !== void 0 && String(commit.revision) !== String(composed.projection.revision)) {
|
|
2514
2739
|
throw new Error("The presentation changed; retry this edit on the latest version");
|
|
2515
2740
|
}
|
|
@@ -2619,7 +2844,15 @@ function EditablePresentationArtifactSurface({
|
|
|
2619
2844
|
notifyPresentationCommit(onCommit, onCommandError, commit);
|
|
2620
2845
|
refresh();
|
|
2621
2846
|
},
|
|
2622
|
-
[
|
|
2847
|
+
[
|
|
2848
|
+
onCommandError,
|
|
2849
|
+
onCommit,
|
|
2850
|
+
refresh,
|
|
2851
|
+
session,
|
|
2852
|
+
state.composed,
|
|
2853
|
+
view.authoringBlockedReason,
|
|
2854
|
+
writable
|
|
2855
|
+
]
|
|
2623
2856
|
);
|
|
2624
2857
|
const projection = state.composed?.projection ?? null;
|
|
2625
2858
|
const status = editableArtifactStatusLabel(view);
|
|
@@ -2629,10 +2862,12 @@ function EditablePresentationArtifactSurface({
|
|
|
2629
2862
|
{
|
|
2630
2863
|
...surfaceProps,
|
|
2631
2864
|
title,
|
|
2865
|
+
showHeader,
|
|
2632
2866
|
subtitle: subtitle ?? `${projection.slides.length} slide${projection.slides.length === 1 ? "" : "s"}${writable ? "" : " \xB7 Read only"}`,
|
|
2633
2867
|
projection,
|
|
2634
2868
|
commit: writable ? applyCommit : void 0,
|
|
2635
2869
|
readOnly: !writable,
|
|
2870
|
+
authoringBlockedReason: view.authoringBlockedReason,
|
|
2636
2871
|
busy: state.loading,
|
|
2637
2872
|
onCommandError
|
|
2638
2873
|
}
|
|
@@ -2641,6 +2876,7 @@ function EditablePresentationArtifactSurface({
|
|
|
2641
2876
|
{
|
|
2642
2877
|
modality: "presentation",
|
|
2643
2878
|
title,
|
|
2879
|
+
showHeader,
|
|
2644
2880
|
subtitle: subtitle ?? status,
|
|
2645
2881
|
actions: surfaceProps.actions,
|
|
2646
2882
|
busy: !accessRevoked && !state.error,
|
|
@@ -3231,4 +3467,4 @@ export {
|
|
|
3231
3467
|
PresentationProjectionArtifactSurface,
|
|
3232
3468
|
EditablePresentationArtifactSurface
|
|
3233
3469
|
};
|
|
3234
|
-
//# sourceMappingURL=chunk-
|
|
3470
|
+
//# sourceMappingURL=chunk-GQMRL52F.js.map
|