@peers-app/peers-ui 0.14.0 → 0.15.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/.github/workflows/publish.yml +8 -5
- package/babel.config.js +4 -4
- package/biome.json +191 -0
- package/dist/command-palette/command-palette-ui.d.ts +1 -2
- package/dist/command-palette/command-palette-ui.js +175 -244
- package/dist/command-palette/command-palette.js +65 -64
- package/dist/components/chat-overlay.d.ts +2 -2
- package/dist/components/chat-overlay.js +160 -217
- package/dist/components/checkbox.d.ts +5 -4
- package/dist/components/checkbox.js +4 -7
- package/dist/components/group-switcher.d.ts +1 -2
- package/dist/components/group-switcher.js +119 -159
- package/dist/components/input-date.d.ts +3 -3
- package/dist/components/input-date.js +6 -6
- package/dist/components/input-number.d.ts +7 -6
- package/dist/components/input-number.js +25 -20
- package/dist/components/input.d.ts +5 -4
- package/dist/components/input.js +4 -7
- package/dist/components/inverse-lazy-list.d.ts +3 -3
- package/dist/components/inverse-lazy-list.js +13 -47
- package/dist/components/io-schema-values.d.ts +5 -6
- package/dist/components/io-schema-values.js +28 -65
- package/dist/components/io-schema.d.ts +4 -5
- package/dist/components/io-schema.js +42 -79
- package/dist/components/lazy-list.d.ts +3 -3
- package/dist/components/lazy-list.js +38 -58
- package/dist/components/list-screen.d.ts +3 -8
- package/dist/components/list-screen.js +28 -23
- package/dist/components/loading-indicator.d.ts +1 -2
- package/dist/components/loading-indicator.js +2 -6
- package/dist/components/markdown-editor/autolink-plugin.js +5 -8
- package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
- package/dist/components/markdown-editor/editor-inline.js +2 -6
- package/dist/components/markdown-editor/editor.d.ts +6 -6
- package/dist/components/markdown-editor/editor.js +9 -19
- package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
- package/dist/components/markdown-editor/markdown-plugin.js +20 -21
- package/dist/components/markdown-editor/mention-node.d.ts +2 -2
- package/dist/components/markdown-editor/mention-node.js +24 -24
- package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
- package/dist/components/markdown-editor/mentions-plugin.js +61 -62
- package/dist/components/markdown-editor/theme.js +28 -28
- package/dist/components/markdown-editor/toolbar.d.ts +2 -3
- package/dist/components/markdown-editor/toolbar.js +32 -49
- package/dist/components/markdown-with-mentions.d.ts +1 -1
- package/dist/components/markdown-with-mentions.js +43 -43
- package/dist/components/message-logs/message-logs.d.ts +1 -2
- package/dist/components/message-logs/message-logs.js +91 -116
- package/dist/components/messages/avatar.d.ts +3 -4
- package/dist/components/messages/avatar.js +37 -46
- package/dist/components/messages/channel-message-list.d.ts +5 -6
- package/dist/components/messages/channel-message-list.js +34 -34
- package/dist/components/messages/channel-view.d.ts +1 -2
- package/dist/components/messages/channel-view.js +23 -57
- package/dist/components/messages/message-compose.d.ts +3 -4
- package/dist/components/messages/message-compose.js +27 -38
- package/dist/components/messages/message-display.d.ts +2 -3
- package/dist/components/messages/message-display.js +42 -95
- package/dist/components/messages/thread-message-list.d.ts +4 -5
- package/dist/components/messages/thread-message-list.js +29 -29
- package/dist/components/router.d.ts +1 -2
- package/dist/components/router.js +58 -66
- package/dist/components/save-button.d.ts +3 -3
- package/dist/components/save-button.js +23 -33
- package/dist/components/sortable-list.d.ts +11 -12
- package/dist/components/sortable-list.js +42 -22
- package/dist/components/tabs.d.ts +3 -3
- package/dist/components/tabs.js +16 -47
- package/dist/components/tooltip.d.ts +4 -4
- package/dist/components/tooltip.js +4 -9
- package/dist/components/trust-level-badge.d.ts +2 -3
- package/dist/components/trust-level-badge.js +16 -16
- package/dist/components/trust-level-dropdown.d.ts +3 -4
- package/dist/components/trust-level-dropdown.js +32 -55
- package/dist/components/typeahead.d.ts +3 -3
- package/dist/components/typeahead.js +48 -89
- package/dist/components/voice-indicator.d.ts +2 -2
- package/dist/components/voice-indicator.js +93 -106
- package/dist/components/voice-subscribe-events.d.ts +32 -0
- package/dist/components/voice-subscribe-events.js +2 -0
- package/dist/globals.d.ts +3 -5
- package/dist/globals.js +22 -33
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.js +22 -12
- package/dist/hooks.test.js +129 -145
- package/dist/index.d.ts +9 -8
- package/dist/index.js +13 -12
- package/dist/mention-configs.d.ts +2 -2
- package/dist/mention-configs.js +55 -42
- package/dist/screens/assistants/assistant-config.d.ts +2 -3
- package/dist/screens/assistants/assistant-config.js +9 -22
- package/dist/screens/assistants/assistant-details.d.ts +1 -2
- package/dist/screens/assistants/assistant-details.js +13 -28
- package/dist/screens/assistants/assistant-info.d.ts +2 -3
- package/dist/screens/assistants/assistant-info.js +3 -17
- package/dist/screens/assistants/assistant-list.d.ts +1 -2
- package/dist/screens/assistants/assistant-list.js +15 -56
- package/dist/screens/assistants/assistant-tools.d.ts +2 -3
- package/dist/screens/assistants/assistant-tools.js +10 -24
- package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
- package/dist/screens/console-logs/console-logs-list.js +130 -134
- package/dist/screens/console-logs/log-display.d.ts +2 -3
- package/dist/screens/console-logs/log-display.js +40 -42
- package/dist/screens/console-logs/log-filters.d.ts +1 -2
- package/dist/screens/console-logs/log-filters.js +2 -24
- package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
- package/dist/screens/console-logs/mobile-log-card.js +64 -67
- package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
- package/dist/screens/console-logs/resizable-table-header.js +31 -67
- package/dist/screens/contacts/contact-details.d.ts +1 -2
- package/dist/screens/contacts/contact-details.js +16 -46
- package/dist/screens/contacts/contact-list.d.ts +1 -2
- package/dist/screens/contacts/contact-list.js +44 -103
- package/dist/screens/contacts/index.d.ts +4 -4
- package/dist/screens/contacts/index.js +1 -1
- package/dist/screens/contacts/user-connect.d.ts +1 -2
- package/dist/screens/contacts/user-connect.js +85 -186
- package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
- package/dist/screens/data-explorer/data-explorer.js +61 -181
- package/dist/screens/data-explorer/index.d.ts +2 -2
- package/dist/screens/data-explorer/query-executor.d.ts +1 -2
- package/dist/screens/data-explorer/query-executor.js +56 -166
- package/dist/screens/groups/group-details.d.ts +1 -2
- package/dist/screens/groups/group-details.js +27 -122
- package/dist/screens/groups/group-invite-listener.d.ts +2 -3
- package/dist/screens/groups/group-invite-listener.js +8 -104
- package/dist/screens/groups/group-list.d.ts +1 -2
- package/dist/screens/groups/group-list.js +56 -133
- package/dist/screens/groups/group-members.d.ts +2 -3
- package/dist/screens/groups/group-members.js +62 -132
- package/dist/screens/groups/index.d.ts +4 -4
- package/dist/screens/groups/index.js +1 -1
- package/dist/screens/join-group/index.d.ts +2 -2
- package/dist/screens/join-group/join-group.d.ts +1 -2
- package/dist/screens/join-group/join-group.js +9 -109
- package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
- package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
- package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
- package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
- package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
- package/dist/screens/network-viewer/device-details-modal.js +25 -177
- package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
- package/dist/screens/network-viewer/group-details-modal.js +31 -142
- package/dist/screens/network-viewer/index.d.ts +4 -4
- package/dist/screens/network-viewer/index.js +3 -3
- package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
- package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
- package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
- package/dist/screens/network-viewer/network-viewer.js +91 -296
- package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
- package/dist/screens/network-viewer/usage-graph.js +78 -110
- package/dist/screens/packages/package-details.d.ts +1 -2
- package/dist/screens/packages/package-details.js +35 -41
- package/dist/screens/packages/package-info.d.ts +2 -2
- package/dist/screens/packages/package-info.js +33 -86
- package/dist/screens/packages/package-list.d.ts +1 -2
- package/dist/screens/packages/package-list.js +42 -106
- package/dist/screens/packages/package-new-local.d.ts +1 -2
- package/dist/screens/packages/package-new-local.js +13 -19
- package/dist/screens/packages/package-versions.d.ts +2 -3
- package/dist/screens/packages/package-versions.js +29 -96
- package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
- package/dist/screens/peer-types/peer-type-details.js +26 -78
- package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
- package/dist/screens/peer-types/peer-type-list.js +13 -24
- package/dist/screens/search/global-search.d.ts +1 -2
- package/dist/screens/search/global-search.js +104 -182
- package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
- package/dist/screens/settings/color-mode-dropdown.js +18 -37
- package/dist/screens/settings/settings-page.d.ts +1 -1
- package/dist/screens/settings/settings-page.js +86 -213
- package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
- package/dist/screens/settings/voice-settings-agent.js +7 -44
- package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
- package/dist/screens/settings/voice-settings-api-keys.js +2 -29
- package/dist/screens/settings/voice-settings-output.d.ts +2 -2
- package/dist/screens/settings/voice-settings-output.js +2 -40
- package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
- package/dist/screens/settings/voice-settings-providers.js +2 -19
- package/dist/screens/settings/voice-settings-types.d.ts +4 -4
- package/dist/screens/settings/voice-settings-types.js +31 -31
- package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
- package/dist/screens/settings/voice-settings-wake-word.js +2 -33
- package/dist/screens/settings/voice-settings.d.ts +1 -1
- package/dist/screens/settings/voice-settings.js +35 -112
- package/dist/screens/setup-user.d.ts +1 -2
- package/dist/screens/setup-user.js +38 -116
- package/dist/screens/tools/tool-code.d.ts +2 -3
- package/dist/screens/tools/tool-code.js +9 -13
- package/dist/screens/tools/tool-details.d.ts +1 -2
- package/dist/screens/tools/tool-details.js +26 -39
- package/dist/screens/tools/tool-info.d.ts +2 -3
- package/dist/screens/tools/tool-info.js +9 -48
- package/dist/screens/tools/tool-list.d.ts +1 -2
- package/dist/screens/tools/tool-list.js +33 -65
- package/dist/screens/tools/tool-schema.d.ts +2 -3
- package/dist/screens/tools/tool-schema.js +2 -13
- package/dist/screens/tools/tool-test-details.d.ts +1 -2
- package/dist/screens/tools/tool-test-details.js +12 -28
- package/dist/screens/tools/tool-test-list.d.ts +1 -2
- package/dist/screens/tools/tool-test-list.js +17 -56
- package/dist/screens/variables/variable-details.d.ts +1 -2
- package/dist/screens/variables/variable-details.js +19 -86
- package/dist/screens/variables/variable-list.d.ts +1 -2
- package/dist/screens/variables/variable-list.js +16 -27
- package/dist/screens/welcome-modal.d.ts +1 -2
- package/dist/screens/welcome-modal.js +44 -111
- package/dist/screens/workflows/workflow-details.d.ts +1 -2
- package/dist/screens/workflows/workflow-details.js +17 -31
- package/dist/screens/workflows/workflow-info.d.ts +2 -3
- package/dist/screens/workflows/workflow-info.js +2 -9
- package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
- package/dist/screens/workflows/workflow-instructions.js +23 -55
- package/dist/screens/workflows/workflow-list.d.ts +1 -2
- package/dist/screens/workflows/workflow-list.js +23 -62
- package/dist/setupTests.d.ts +1 -1
- package/dist/setupTests.js +10 -11
- package/dist/system-apps/assistants.app.d.ts +1 -1
- package/dist/system-apps/assistants.app.js +3 -3
- package/dist/system-apps/console-logs.app.d.ts +1 -1
- package/dist/system-apps/console-logs.app.js +3 -3
- package/dist/system-apps/contacts.app.d.ts +1 -1
- package/dist/system-apps/contacts.app.js +4 -4
- package/dist/system-apps/data-explorer.app.d.ts +1 -1
- package/dist/system-apps/data-explorer.app.js +4 -4
- package/dist/system-apps/groups.app.d.ts +1 -1
- package/dist/system-apps/groups.app.js +4 -4
- package/dist/system-apps/index.d.ts +17 -17
- package/dist/system-apps/index.js +52 -52
- package/dist/system-apps/join-group.app.d.ts +1 -1
- package/dist/system-apps/join-group.app.js +4 -4
- package/dist/system-apps/mobile-settings.app.d.ts +1 -1
- package/dist/system-apps/mobile-settings.app.js +3 -3
- package/dist/system-apps/network-viewer.app.d.ts +1 -1
- package/dist/system-apps/network-viewer.app.js +4 -4
- package/dist/system-apps/packages.app.d.ts +1 -1
- package/dist/system-apps/packages.app.js +3 -3
- package/dist/system-apps/search.app.d.ts +1 -1
- package/dist/system-apps/search.app.js +4 -4
- package/dist/system-apps/settings.app.d.ts +1 -1
- package/dist/system-apps/settings.app.js +3 -3
- package/dist/system-apps/threads.app.d.ts +1 -1
- package/dist/system-apps/threads.app.js +3 -3
- package/dist/system-apps/tools.app.d.ts +1 -1
- package/dist/system-apps/tools.app.js +3 -3
- package/dist/system-apps/types.app.d.ts +1 -1
- package/dist/system-apps/types.app.js +3 -3
- package/dist/system-apps/variables.app.d.ts +1 -1
- package/dist/system-apps/variables.app.js +3 -3
- package/dist/system-apps/workflows.app.d.ts +1 -1
- package/dist/system-apps/workflows.app.js +3 -3
- package/dist/tabs-layout/tabs-layout.d.ts +2 -3
- package/dist/tabs-layout/tabs-layout.js +215 -246
- package/dist/tabs-layout/tabs-state.d.ts +2 -2
- package/dist/tabs-layout/tabs-state.js +73 -61
- package/dist/ui-defaults/index.d.ts +2 -2
- package/dist/ui-defaults/list-screen.d.ts +2 -3
- package/dist/ui-defaults/list-screen.js +33 -37
- package/dist/ui-defaults/markdown-field.js +24 -56
- package/dist/ui-router/routes-loader.d.ts +1 -1
- package/dist/ui-router/routes-loader.js +17 -13
- package/dist/ui-router/ui-loader.d.ts +6 -6
- package/dist/ui-router/ui-loader.js +172 -268
- package/dist/utils.js +49 -39
- package/jest.config.js +16 -16
- package/package.json +16 -14
- package/src/command-palette/command-palette-ui.tsx +261 -237
- package/src/command-palette/command-palette.ts +81 -78
- package/src/components/chat-overlay.tsx +366 -261
- package/src/components/checkbox.tsx +15 -12
- package/src/components/group-switcher.tsx +150 -105
- package/src/components/input-date.tsx +17 -16
- package/src/components/input-number.tsx +47 -31
- package/src/components/input.tsx +15 -12
- package/src/components/inverse-lazy-list.tsx +14 -13
- package/src/components/io-schema-values.tsx +51 -69
- package/src/components/io-schema.tsx +94 -69
- package/src/components/lazy-list.tsx +51 -34
- package/src/components/list-screen.tsx +51 -35
- package/src/components/loading-indicator.tsx +2 -4
- package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
- package/src/components/markdown-editor/editor-inline.tsx +3 -4
- package/src/components/markdown-editor/editor.tsx +53 -51
- package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
- package/src/components/markdown-editor/mention-node.ts +39 -38
- package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
- package/src/components/markdown-editor/theme.ts +28 -29
- package/src/components/markdown-editor/toolbar.tsx +53 -47
- package/src/components/markdown-with-mentions.tsx +56 -46
- package/src/components/message-logs/message-logs.tsx +225 -165
- package/src/components/messages/avatar.tsx +70 -52
- package/src/components/messages/channel-message-list.tsx +80 -68
- package/src/components/messages/channel-view.tsx +34 -33
- package/src/components/messages/message-compose.tsx +84 -67
- package/src/components/messages/message-display.tsx +103 -89
- package/src/components/messages/thread-message-list.tsx +53 -44
- package/src/components/router.tsx +42 -43
- package/src/components/save-button.tsx +43 -39
- package/src/components/sortable-list.tsx +77 -49
- package/src/components/tabs.tsx +31 -31
- package/src/components/tooltip.tsx +21 -28
- package/src/components/trust-level-badge.tsx +15 -11
- package/src/components/trust-level-dropdown.tsx +49 -19
- package/src/components/typeahead.tsx +57 -59
- package/src/components/voice-indicator.tsx +158 -141
- package/src/components/voice-subscribe-events.ts +20 -0
- package/src/globals.tsx +42 -40
- package/src/hooks.test.tsx +141 -134
- package/src/hooks.ts +80 -48
- package/src/index.tsx +17 -10
- package/src/mention-configs.ts +122 -68
- package/src/screens/assistants/assistant-config.tsx +28 -18
- package/src/screens/assistants/assistant-details.tsx +35 -36
- package/src/screens/assistants/assistant-info.tsx +16 -11
- package/src/screens/assistants/assistant-list.tsx +37 -34
- package/src/screens/assistants/assistant-tools.tsx +41 -20
- package/src/screens/console-logs/console-logs-list.tsx +173 -140
- package/src/screens/console-logs/log-display.tsx +65 -38
- package/src/screens/console-logs/log-filters.tsx +4 -3
- package/src/screens/console-logs/mobile-log-card.tsx +78 -71
- package/src/screens/console-logs/resizable-table-header.tsx +29 -21
- package/src/screens/contacts/contact-details.tsx +29 -30
- package/src/screens/contacts/contact-list.tsx +71 -60
- package/src/screens/contacts/index.ts +5 -5
- package/src/screens/contacts/user-connect.tsx +177 -171
- package/src/screens/data-explorer/data-explorer.tsx +134 -98
- package/src/screens/data-explorer/index.ts +2 -3
- package/src/screens/data-explorer/query-executor.tsx +90 -80
- package/src/screens/groups/group-details.tsx +120 -101
- package/src/screens/groups/group-invite-listener.tsx +34 -37
- package/src/screens/groups/group-list.tsx +119 -103
- package/src/screens/groups/group-members.tsx +225 -164
- package/src/screens/groups/index.ts +5 -6
- package/src/screens/join-group/index.ts +2 -2
- package/src/screens/join-group/join-group.tsx +41 -39
- package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
- package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
- package/src/screens/network-viewer/device-details-modal.tsx +46 -59
- package/src/screens/network-viewer/group-details-modal.tsx +68 -49
- package/src/screens/network-viewer/index.ts +4 -5
- package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
- package/src/screens/network-viewer/network-viewer.tsx +261 -236
- package/src/screens/network-viewer/usage-graph.tsx +57 -49
- package/src/screens/packages/package-details.tsx +43 -35
- package/src/screens/packages/package-info.tsx +107 -66
- package/src/screens/packages/package-list.tsx +175 -98
- package/src/screens/packages/package-new-local.tsx +28 -26
- package/src/screens/packages/package-versions.tsx +102 -77
- package/src/screens/peer-types/peer-type-details.tsx +60 -50
- package/src/screens/peer-types/peer-type-list.tsx +20 -30
- package/src/screens/search/global-search.tsx +153 -137
- package/src/screens/settings/color-mode-dropdown.tsx +52 -35
- package/src/screens/settings/settings-page.tsx +215 -141
- package/src/screens/settings/voice-settings-agent.tsx +13 -12
- package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
- package/src/screens/settings/voice-settings-output.tsx +12 -11
- package/src/screens/settings/voice-settings-providers.tsx +7 -3
- package/src/screens/settings/voice-settings-types.ts +52 -49
- package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
- package/src/screens/settings/voice-settings.tsx +66 -43
- package/src/screens/setup-user.tsx +88 -41
- package/src/screens/tools/tool-code.tsx +12 -17
- package/src/screens/tools/tool-details.tsx +28 -28
- package/src/screens/tools/tool-info.tsx +14 -19
- package/src/screens/tools/tool-list.tsx +58 -40
- package/src/screens/tools/tool-schema.tsx +16 -9
- package/src/screens/tools/tool-test-details.tsx +11 -22
- package/src/screens/tools/tool-test-list.tsx +29 -30
- package/src/screens/variables/variable-details.tsx +63 -51
- package/src/screens/variables/variable-list.tsx +29 -30
- package/src/screens/welcome-modal.tsx +68 -48
- package/src/screens/workflows/workflow-details.tsx +40 -30
- package/src/screens/workflows/workflow-info.tsx +4 -11
- package/src/screens/workflows/workflow-instructions.tsx +35 -28
- package/src/screens/workflows/workflow-list.tsx +50 -40
- package/src/setupTests.ts +14 -13
- package/src/system-apps/assistants.app.ts +5 -5
- package/src/system-apps/console-logs.app.ts +4 -4
- package/src/system-apps/contacts.app.ts +6 -6
- package/src/system-apps/data-explorer.app.ts +5 -5
- package/src/system-apps/groups.app.ts +6 -6
- package/src/system-apps/index.ts +49 -49
- package/src/system-apps/join-group.app.ts +5 -5
- package/src/system-apps/mobile-settings.app.ts +4 -5
- package/src/system-apps/network-viewer.app.ts +5 -5
- package/src/system-apps/packages.app.ts +5 -5
- package/src/system-apps/search.app.ts +6 -6
- package/src/system-apps/settings.app.ts +5 -5
- package/src/system-apps/threads.app.ts +5 -5
- package/src/system-apps/tools.app.ts +5 -5
- package/src/system-apps/types.app.ts +5 -5
- package/src/system-apps/variables.app.ts +5 -5
- package/src/system-apps/workflows.app.ts +5 -5
- package/src/tabs-layout/tabs-layout.tsx +345 -254
- package/src/tabs-layout/tabs-state.ts +100 -81
- package/src/ui-defaults/index.ts +2 -3
- package/src/ui-defaults/list-screen.tsx +45 -40
- package/src/ui-defaults/markdown-field.tsx +22 -26
- package/src/ui-router/routes-loader.ts +40 -24
- package/src/ui-router/ui-loader.tsx +312 -214
- package/src/utils.ts +68 -81
- package/tsconfig.json +5 -10
- package/dist/components/input-datetime.d.ts +0 -7
- package/dist/components/input-datetime.js +0 -35
- package/dist/components/lazy-sortable-list.d.ts +0 -29
- package/dist/components/lazy-sortable-list.js +0 -12
- package/dist/components/left-bar.d.ts +0 -5
- package/dist/components/left-bar.js +0 -207
- package/dist/components/main-content-container.d.ts +0 -2
- package/dist/components/main-content-container.js +0 -92
- package/dist/components/messages/thread-view.d.ts +0 -6
- package/dist/components/messages/thread-view.js +0 -174
- package/dist/components/off-canvas.d.ts +0 -13
- package/dist/components/off-canvas.js +0 -89
- package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
- package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
- package/dist/components/top-bar.d.ts +0 -2
- package/dist/components/top-bar.js +0 -51
- package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
- package/dist/components/typeahead/mentions-plugin.js +0 -203
- package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
- package/dist/components/typeahead/typeahead-editor.js +0 -134
- package/dist/components/typeahead/typeahead.d.ts +0 -12
- package/dist/components/typeahead/typeahead.js +0 -94
- package/dist/screens/profile.d.ts +0 -2
- package/dist/screens/profile.js +0 -76
- package/src/components/input-datetime.tsx +0 -41
- package/src/components/lazy-sortable-list.tsx +0 -51
- package/src/components/left-bar.tsx +0 -322
- package/src/components/main-content-container.tsx +0 -79
- package/src/components/messages/thread-view.tsx +0 -214
- package/src/components/off-canvas.tsx +0 -83
- package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
- package/src/components/top-bar.tsx +0 -119
- package/src/components/typeahead/mentions-plugin.tsx +0 -265
- package/src/components/typeahead/typeahead-editor.tsx +0 -140
- package/src/components/typeahead/typeahead.tsx +0 -77
- package/src/screens/profile.tsx +0 -75
|
@@ -1,41 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.UsageGraph = UsageGraph;
|
|
37
|
-
const
|
|
38
|
-
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5000, minHeight = 80, color = "rgba(13, 110, 253, 1)", overlayTextColor = "rgba(255, 255, 255, 0.7)", minValue = 0, maxValue = 100, formatOverlayText, colorZones, }) {
|
|
39
7
|
const [dataPoints, setDataPoints] = (0, react_1.useState)([]);
|
|
40
8
|
const [currentValue, setCurrentValue] = (0, react_1.useState)(0);
|
|
41
9
|
const [width, setWidth] = (0, react_1.useState)(400);
|
|
@@ -72,11 +40,11 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
|
|
|
72
40
|
setDataPoints((prev) => {
|
|
73
41
|
const newPoint = {
|
|
74
42
|
timestamp: Date.now(),
|
|
75
|
-
value: value
|
|
43
|
+
value: value,
|
|
76
44
|
};
|
|
77
45
|
const updated = [...prev, newPoint];
|
|
78
46
|
const oldestAllowedTime = Date.now() - durationMinutes * 60 * 1000;
|
|
79
|
-
const filtered = updated.filter(point => point.timestamp >= oldestAllowedTime);
|
|
47
|
+
const filtered = updated.filter((point) => point.timestamp >= oldestAllowedTime);
|
|
80
48
|
return filtered;
|
|
81
49
|
});
|
|
82
50
|
}
|
|
@@ -93,7 +61,7 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
|
|
|
93
61
|
clearInterval(intervalRef.current);
|
|
94
62
|
}
|
|
95
63
|
};
|
|
96
|
-
}, [fetchUsage, updateInterval, label]);
|
|
64
|
+
}, [fetchUsage, updateInterval, label, durationMinutes]);
|
|
97
65
|
// Get color for a value based on color zones
|
|
98
66
|
const getColorForValue = (value) => {
|
|
99
67
|
if (!colorZones || colorZones.length === 0) {
|
|
@@ -133,12 +101,14 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
|
|
|
133
101
|
});
|
|
134
102
|
// If no color zones, return single segment
|
|
135
103
|
if (!colorZones || colorZones.length === 0) {
|
|
136
|
-
const pathData = points
|
|
104
|
+
const pathData = points
|
|
105
|
+
.map((point, idx) => {
|
|
137
106
|
if (idx === 0) {
|
|
138
107
|
return `M ${point.x} ${point.y}`;
|
|
139
108
|
}
|
|
140
109
|
return `L ${point.x} ${point.y}`;
|
|
141
|
-
})
|
|
110
|
+
})
|
|
111
|
+
.join(" ");
|
|
142
112
|
return [{ path: pathData, color }];
|
|
143
113
|
}
|
|
144
114
|
// Create segments based on color zones
|
|
@@ -167,7 +137,7 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
|
|
|
167
137
|
// Calculate SVG path (for gradient fill)
|
|
168
138
|
const getLinePath = () => {
|
|
169
139
|
if (dataPoints.length < 2)
|
|
170
|
-
return
|
|
140
|
+
return "";
|
|
171
141
|
const paddingLeft = 25;
|
|
172
142
|
const paddingRight = 10;
|
|
173
143
|
const paddingTop = 10;
|
|
@@ -188,97 +158,95 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
|
|
|
188
158
|
return { x, y };
|
|
189
159
|
});
|
|
190
160
|
// Create SVG path
|
|
191
|
-
const pathData = points
|
|
161
|
+
const pathData = points
|
|
162
|
+
.map((point, idx) => {
|
|
192
163
|
if (idx === 0) {
|
|
193
164
|
return `M ${point.x} ${point.y}`;
|
|
194
165
|
}
|
|
195
166
|
return `L ${point.x} ${point.y}`;
|
|
196
|
-
})
|
|
167
|
+
})
|
|
168
|
+
.join(" ");
|
|
197
169
|
return pathData;
|
|
198
170
|
};
|
|
199
171
|
// Get gradient path for fill
|
|
200
172
|
const getGradientPath = () => {
|
|
201
173
|
const linePath = getLinePath();
|
|
202
174
|
if (!linePath)
|
|
203
|
-
return
|
|
175
|
+
return "";
|
|
204
176
|
const paddingLeft = 25;
|
|
205
177
|
const paddingRight = 10;
|
|
206
178
|
const paddingBottom = 10;
|
|
207
179
|
// Close the path at the bottom
|
|
208
180
|
return `${linePath} L ${width - paddingRight} ${height - paddingBottom} L ${paddingLeft} ${height - paddingBottom} Z`;
|
|
209
181
|
};
|
|
210
|
-
const
|
|
182
|
+
const _linePath = getLinePath();
|
|
211
183
|
const gradientPath = getGradientPath();
|
|
212
184
|
const lineSegments = getLineSegments();
|
|
213
185
|
// Parse color for gradient
|
|
214
186
|
const rgbaMatch = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);
|
|
215
187
|
const gradientColor = rgbaMatch
|
|
216
188
|
? `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0.3)`
|
|
217
|
-
:
|
|
189
|
+
: "rgba(13, 110, 253, 0.3)";
|
|
218
190
|
const gradientColorLight = rgbaMatch
|
|
219
191
|
? `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0.05)`
|
|
220
|
-
:
|
|
221
|
-
return (
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
whiteSpace: 'nowrap',
|
|
281
|
-
maxWidth: '95%',
|
|
282
|
-
overflowWrap: 'break-word'
|
|
283
|
-
} }, formatOverlayText ? formatOverlayText(currentValue, label) : `${label} ${Math.round(currentValue)}%`)));
|
|
192
|
+
: "rgba(13, 110, 253, 0.05)";
|
|
193
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef, className: "usage-graph", style: {
|
|
194
|
+
margin: 0,
|
|
195
|
+
padding: 0,
|
|
196
|
+
position: "relative",
|
|
197
|
+
width: "100%",
|
|
198
|
+
height: "100%",
|
|
199
|
+
minHeight: `${minHeight}px`,
|
|
200
|
+
}, children: [(0, jsx_runtime_1.jsxs)("svg", { width: width, height: height, style: {
|
|
201
|
+
border: "1px solid rgba(128, 128, 128, 0.2)",
|
|
202
|
+
borderRadius: "4px",
|
|
203
|
+
backgroundColor: "rgba(0, 0, 0, 0.02)",
|
|
204
|
+
display: "block",
|
|
205
|
+
}, children: [(0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: `${label}Gradient`, x1: "0%", y1: "0%", x2: "0%", y2: "100%", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0%", stopColor: gradientColor }), (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: gradientColorLight })] }) }), [0, 0.25, 0.5, 0.75, 1].map((fraction) => {
|
|
206
|
+
const paddingLeft = 25;
|
|
207
|
+
const paddingRight = 10;
|
|
208
|
+
const paddingTop = 10;
|
|
209
|
+
const paddingBottom = 10;
|
|
210
|
+
const chartHeight = height - paddingTop - paddingBottom;
|
|
211
|
+
const value = minValue + fraction * (maxValue - minValue);
|
|
212
|
+
const y = paddingTop + chartHeight - fraction * chartHeight;
|
|
213
|
+
return ((0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("line", { x1: paddingLeft, y1: y, x2: width - paddingRight, y2: y, stroke: "rgba(128, 128, 128, 0.1)", strokeWidth: "1" }), (0, jsx_runtime_1.jsx)("text", { x: paddingLeft - 5, y: y + 4, fontSize: "10", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "end", children: Math.round(value) })] }, fraction));
|
|
214
|
+
}), gradientPath && (0, jsx_runtime_1.jsx)("path", { d: gradientPath, fill: `url(#${label}Gradient)` }), lineSegments.map((segment, idx) => ((0, jsx_runtime_1.jsx)("path", { d: segment.path, stroke: segment.color, strokeWidth: "2", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" }, idx))), dataPoints.map((point, idx) => {
|
|
215
|
+
const paddingLeft = 25;
|
|
216
|
+
const paddingRight = 10;
|
|
217
|
+
const paddingTop = 10;
|
|
218
|
+
const paddingBottom = 10;
|
|
219
|
+
const chartWidth = width - paddingLeft - paddingRight;
|
|
220
|
+
const chartHeight = height - paddingTop - paddingBottom;
|
|
221
|
+
// Use full time range, but adjust minTime to start at oldest data point
|
|
222
|
+
const now = Date.now();
|
|
223
|
+
const timeRange = durationMinutes * 60 * 1000;
|
|
224
|
+
const minTime = Math.min(dataPoints[0].timestamp, now - timeRange);
|
|
225
|
+
const x = paddingLeft + ((point.timestamp - minTime) / timeRange) * chartWidth;
|
|
226
|
+
const valueRange = maxValue - minValue;
|
|
227
|
+
const normalizedValue = (point.value - minValue) / valueRange;
|
|
228
|
+
const y = paddingTop + chartHeight - normalizedValue * chartHeight;
|
|
229
|
+
// Only show the last point as a visible dot
|
|
230
|
+
if (idx !== dataPoints.length - 1)
|
|
231
|
+
return null;
|
|
232
|
+
const pointColor = getColorForValue(point.value);
|
|
233
|
+
return ((0, jsx_runtime_1.jsx)("circle", { cx: x, cy: y, r: "3", fill: pointColor, stroke: "white", strokeWidth: "1.5" }, idx));
|
|
234
|
+
}), dataPoints.length === 0 && ((0, jsx_runtime_1.jsx)("text", { x: width / 2, y: height / 2, fontSize: "12", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "middle", children: "Collecting data..." }))] }), (0, jsx_runtime_1.jsx)("div", { style: {
|
|
235
|
+
position: "absolute",
|
|
236
|
+
top: "50%",
|
|
237
|
+
left: "50%",
|
|
238
|
+
transform: "translate(-50%, -50%)",
|
|
239
|
+
fontSize: "2rem",
|
|
240
|
+
fontWeight: "bold",
|
|
241
|
+
color: overlayTextColor,
|
|
242
|
+
pointerEvents: "none",
|
|
243
|
+
userSelect: "none",
|
|
244
|
+
textAlign: "center",
|
|
245
|
+
lineHeight: "1.2",
|
|
246
|
+
whiteSpace: "nowrap",
|
|
247
|
+
maxWidth: "95%",
|
|
248
|
+
overflowWrap: "break-word",
|
|
249
|
+
}, children: formatOverlayText
|
|
250
|
+
? formatOverlayText(currentValue, label)
|
|
251
|
+
: `${label} ${Math.round(currentValue)}%` })] }));
|
|
284
252
|
}
|
|
@@ -4,87 +4,81 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.PackageDetails = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
8
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
8
9
|
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const input_1 = require("../../components/input");
|
|
9
11
|
const loading_indicator_1 = require("../../components/loading-indicator");
|
|
10
12
|
const save_button_1 = require("../../components/save-button");
|
|
11
13
|
const tabs_1 = require("../../components/tabs");
|
|
12
|
-
const package_info_1 = require("./package-info");
|
|
13
|
-
const package_versions_1 = require("./package-versions");
|
|
14
14
|
const hooks_1 = require("../../hooks");
|
|
15
|
-
const input_1 = require("../../components/input");
|
|
16
15
|
const tabs_state_1 = require("../../tabs-layout/tabs-state");
|
|
16
|
+
const package_info_1 = require("./package-info");
|
|
17
|
+
const package_versions_1 = require("./package-versions");
|
|
17
18
|
const PackageDetails = (props) => {
|
|
18
19
|
const refresh = (0, hooks_1.useObservableState)(Date.now());
|
|
19
20
|
const saveDeviceTagRef = react_1.default.useRef(null);
|
|
20
21
|
const pkg = (0, hooks_1.usePromise)(async () => {
|
|
21
22
|
const pkg = await (0, peers_sdk_1.Packages)().get(props.packageId);
|
|
22
23
|
if (!pkg) {
|
|
23
|
-
throw new Error(
|
|
24
|
+
throw new Error("Workflow not found");
|
|
24
25
|
}
|
|
25
26
|
(0, tabs_state_1.updateActiveTabTitle)(pkg.name || "Package");
|
|
26
27
|
return (0, peers_sdk_1.Packages)().initDoc(pkg);
|
|
27
28
|
}, undefined, [props.packageId, refresh()]);
|
|
28
29
|
if (!pkg) {
|
|
29
|
-
return
|
|
30
|
+
return (0, jsx_runtime_1.jsx)(loading_indicator_1.LoadingIndicator, {});
|
|
30
31
|
}
|
|
31
32
|
const addActions = [
|
|
32
33
|
{
|
|
33
|
-
label:
|
|
34
|
+
label: "Reload Package",
|
|
34
35
|
onClick: async () => {
|
|
35
36
|
await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, { update: true });
|
|
36
37
|
await pkg.load();
|
|
37
38
|
window.location.reload();
|
|
38
|
-
}
|
|
39
|
+
},
|
|
39
40
|
},
|
|
40
41
|
];
|
|
41
42
|
if (!pkg.remoteRepo) {
|
|
42
43
|
addActions.push({
|
|
43
|
-
label:
|
|
44
|
+
label: "Make Remote ",
|
|
44
45
|
// className: 'text-bg-warning',
|
|
45
46
|
onClick: async () => {
|
|
46
47
|
if (confirm(`Create a remote repository from this local one: ${pkg.name}`)) {
|
|
47
48
|
try {
|
|
48
|
-
await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, {
|
|
49
|
+
await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, {
|
|
50
|
+
linkRemote: true,
|
|
51
|
+
update: true,
|
|
52
|
+
});
|
|
49
53
|
refresh(Date.now());
|
|
50
54
|
}
|
|
51
55
|
catch (err) {
|
|
52
56
|
alert(`Error linking remote repo: ${err}`);
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
|
-
}
|
|
59
|
+
},
|
|
56
60
|
});
|
|
57
61
|
}
|
|
58
|
-
return (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
name: 'Versions', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
|
|
80
|
-
react_1.default.createElement(package_versions_1.PackageVersionsList, { pkg: pkg }))
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
name: 'Components', content: react_1.default.createElement(tabs_1.ScreenTabBody, null, "TODO - show all of the different components in the package")
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
name: 'Dependencies', content: react_1.default.createElement(tabs_1.ScreenTabBody, null, "TODO - show all of the dependencies of the package")
|
|
87
|
-
},
|
|
88
|
-
] })));
|
|
62
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "container-fluid p-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "d-flex", children: [(0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)("i", { className: "bi bi-box-fill me-2" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-grow-1", children: (0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)(input_1.Input, { className: "border border-0", style: { width: "100%", outline: "none", backgroundColor: "transparent" }, value: pkg.qs.name }, pkg.packageId) }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(save_button_1.SaveButton, { doc: pkg, onClick: async () => {
|
|
63
|
+
await pkg.save();
|
|
64
|
+
await saveDeviceTagRef.current?.();
|
|
65
|
+
}, addActions: [...addActions] }, pkg.packageId) })] }), (0, jsx_runtime_1.jsx)(tabs_1.Tabs, { tabs: [
|
|
66
|
+
{
|
|
67
|
+
name: "Info",
|
|
68
|
+
content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: (0, jsx_runtime_1.jsx)(package_info_1.PackageInfo, { pkg: pkg, saveDeviceTagRef: saveDeviceTagRef }) })),
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "Versions",
|
|
72
|
+
content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: (0, jsx_runtime_1.jsx)(package_versions_1.PackageVersionsList, { pkg: pkg }) })),
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Components",
|
|
76
|
+
content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: "TODO - show all of the different components in the package" })),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Dependencies",
|
|
80
|
+
content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: "TODO - show all of the dependencies of the package" })),
|
|
81
|
+
},
|
|
82
|
+
] }, pkg.packageId)] }));
|
|
89
83
|
};
|
|
90
84
|
exports.PackageDetails = PackageDetails;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { type IDoc, type IPackage } from "@peers-app/peers-sdk";
|
|
1
2
|
import React from "react";
|
|
2
|
-
import { IDoc, IPackage } from "@peers-app/peers-sdk";
|
|
3
3
|
export declare const PackageInfo: (props: {
|
|
4
4
|
pkg: IDoc<IPackage>;
|
|
5
5
|
saveDeviceTagRef?: React.MutableRefObject<(() => Promise<void>) | null>;
|
|
6
|
-
}) =>
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.PackageInfo = void 0;
|
|
7
|
-
const
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const input_1 = require("../../components/input");
|
|
9
11
|
const markdown_with_mentions_1 = require("../../components/markdown-with-mentions");
|
|
10
12
|
const tooltip_1 = require("../../components/tooltip");
|
|
11
|
-
const input_1 = require("../../components/input");
|
|
12
13
|
const hooks_1 = require("../../hooks");
|
|
13
|
-
const deviceVersionTagVar = (0, peers_sdk_1.groupDeviceVar)(
|
|
14
|
+
const deviceVersionTagVar = (0, peers_sdk_1.groupDeviceVar)("deviceVersionTag");
|
|
14
15
|
const PackageInfo = (props) => {
|
|
15
16
|
const { pkg } = props;
|
|
16
17
|
const [activeVersionId] = (0, hooks_1.useObservable)(pkg.qs.activePackageVersionId);
|
|
@@ -21,14 +22,14 @@ const PackageInfo = (props) => {
|
|
|
21
22
|
defaultValue: `${peers_sdk_1.packagesRootDir}/${pkg.name}`,
|
|
22
23
|
});
|
|
23
24
|
const [localPath, setLocalPath] = (0, hooks_1.useObservable)(localPathVar);
|
|
24
|
-
const [deviceTagDraft, setDeviceTagDraft] = react_1.default.useState(deviceTag ||
|
|
25
|
+
const [deviceTagDraft, setDeviceTagDraft] = react_1.default.useState(deviceTag || "");
|
|
25
26
|
const savingRef = react_1.default.useRef(false);
|
|
26
27
|
react_1.default.useEffect(() => {
|
|
27
28
|
if (!savingRef.current) {
|
|
28
|
-
setDeviceTagDraft(deviceTag ||
|
|
29
|
+
setDeviceTagDraft(deviceTag || "");
|
|
29
30
|
}
|
|
30
31
|
}, [deviceTag]);
|
|
31
|
-
const deviceTagDirty = deviceTagDraft.trim() !== (deviceTag ||
|
|
32
|
+
const deviceTagDirty = deviceTagDraft.trim() !== (deviceTag || "");
|
|
32
33
|
const prevDirtyRef = react_1.default.useRef(false);
|
|
33
34
|
react_1.default.useEffect(() => {
|
|
34
35
|
if (deviceTagDirty && !prevDirtyRef.current) {
|
|
@@ -38,11 +39,11 @@ const PackageInfo = (props) => {
|
|
|
38
39
|
pkg.q(Math.max(0, (pkg.q() || 0) - 1));
|
|
39
40
|
}
|
|
40
41
|
prevDirtyRef.current = deviceTagDirty;
|
|
41
|
-
}, [deviceTagDirty]);
|
|
42
|
+
}, [deviceTagDirty, pkg.q]);
|
|
42
43
|
if (props.saveDeviceTagRef) {
|
|
43
44
|
props.saveDeviceTagRef.current = async () => {
|
|
44
45
|
const val = deviceTagDraft.trim();
|
|
45
|
-
if (val !== (deviceTag ||
|
|
46
|
+
if (val !== (deviceTag || "")) {
|
|
46
47
|
savingRef.current = true;
|
|
47
48
|
try {
|
|
48
49
|
if (val) {
|
|
@@ -65,12 +66,12 @@ const PackageInfo = (props) => {
|
|
|
65
66
|
}, undefined, [activeVersionId]);
|
|
66
67
|
const newerLevel = (0, hooks_1.usePromise)(async () => {
|
|
67
68
|
if (!activeVersionId)
|
|
68
|
-
return
|
|
69
|
+
return "uptodate";
|
|
69
70
|
const all = await (0, peers_sdk_1.PackageVersions)().list({ packageId: pkg.packageId });
|
|
70
|
-
const active = all.find(v => v.packageVersionId === activeVersionId);
|
|
71
|
+
const active = all.find((v) => v.packageVersionId === activeVersionId);
|
|
71
72
|
if (!active?.version)
|
|
72
|
-
return
|
|
73
|
-
const parse = (v) => v.split(
|
|
73
|
+
return "uptodate";
|
|
74
|
+
const parse = (v) => v.split(".").map(Number);
|
|
74
75
|
const [aMaj, aMin, aPat] = parse(active.version);
|
|
75
76
|
let highest = null;
|
|
76
77
|
for (const v of all) {
|
|
@@ -80,88 +81,34 @@ const PackageInfo = (props) => {
|
|
|
80
81
|
continue;
|
|
81
82
|
const [maj, min, pat] = parse(v.version);
|
|
82
83
|
if (maj > aMaj)
|
|
83
|
-
return
|
|
84
|
+
return "major";
|
|
84
85
|
if (maj === aMaj && min > aMin) {
|
|
85
|
-
highest =
|
|
86
|
+
highest = "minor";
|
|
86
87
|
continue;
|
|
87
88
|
}
|
|
88
89
|
if (maj === aMaj && min === aMin && pat > aPat && !highest) {
|
|
89
|
-
highest =
|
|
90
|
+
highest = "patch";
|
|
90
91
|
continue;
|
|
91
92
|
}
|
|
92
|
-
if (maj === aMaj &&
|
|
93
|
-
|
|
93
|
+
if (maj === aMaj &&
|
|
94
|
+
min === aMin &&
|
|
95
|
+
pat === aPat &&
|
|
96
|
+
(v.createdAt || "") > (active.createdAt || "") &&
|
|
97
|
+
!highest) {
|
|
98
|
+
highest = "patch";
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
|
-
return highest ||
|
|
101
|
+
return highest || "uptodate";
|
|
97
102
|
}, undefined, [activeVersionId, pkg.packageId, followVersionTags, deviceTag]);
|
|
98
|
-
const isPinned = versionFollowRange ===
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
peers_sdk_1.rpcServerCalls.openPackage(localPath || peers_sdk_1.packagesRootDir);
|
|
109
|
-
} }, "Open Local"))),
|
|
110
|
-
react_1.default.createElement("input", { type: "text", className: "form-control mb-3 p-0 ps-2", placeholder: "~/peers/packages/my-package", value: localPath || '', onChange: e => setLocalPath(e.target.value) })),
|
|
111
|
-
pkg.remoteRepo && (react_1.default.createElement("div", { className: "mt-2" },
|
|
112
|
-
react_1.default.createElement("small", null,
|
|
113
|
-
"Source URL:",
|
|
114
|
-
react_1.default.createElement("small", null,
|
|
115
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `The remote source of this package. Often a github repository URL or a link to the Peers page for the package.` }),
|
|
116
|
-
react_1.default.createElement("button", { className: "btn btn-sm btn-link", onClick: () => {
|
|
117
|
-
peers_sdk_1.rpcServerCalls.openLinkInBrowser(pkg.remoteRepo);
|
|
118
|
-
} }, "Open Remote"))),
|
|
119
|
-
react_1.default.createElement(input_1.Input, { value: pkg.qs.remoteRepo, className: "form-control mb-3 p-0 ps-2", disabled: true }))),
|
|
120
|
-
react_1.default.createElement("div", { className: "mt-2" },
|
|
121
|
-
react_1.default.createElement("hr", null),
|
|
122
|
-
react_1.default.createElement("small", null,
|
|
123
|
-
"Version:",
|
|
124
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "The currently active version of this package. Manage versions in the Versions tab." })),
|
|
125
|
-
activeVersion ? (react_1.default.createElement("div", { className: "d-flex align-items-center mt-1 mb-3" },
|
|
126
|
-
react_1.default.createElement("strong", { className: "me-2" },
|
|
127
|
-
"v",
|
|
128
|
-
activeVersion.version),
|
|
129
|
-
activeVersion.versionTag && (react_1.default.createElement("span", { className: `badge ${activeVersion.versionTag.startsWith('beta') ? 'text-bg-warning' : 'text-bg-info'} me-2` }, activeVersion.versionTag)),
|
|
130
|
-
react_1.default.createElement("code", { className: "text-muted small me-2" }, activeVersion.packageVersionHash?.substring(0, 8)),
|
|
131
|
-
newerLevel === 'uptodate' ? (react_1.default.createElement("span", { className: "badge text-bg-success" }, "Up to date")) : newerLevel ? (react_1.default.createElement("span", { className: `badge text-bg-${newerLevel === 'major' ? 'danger' : newerLevel === 'minor' ? 'warning' : 'info'}` },
|
|
132
|
-
"Newer ",
|
|
133
|
-
newerLevel,
|
|
134
|
-
" version available")) : null)) : (react_1.default.createElement("div", { className: "text-muted small mt-1 mb-3" }, "No active version")),
|
|
135
|
-
react_1.default.createElement("div", { className: "mb-3" },
|
|
136
|
-
react_1.default.createElement("small", null,
|
|
137
|
-
"Auto-Update Range:",
|
|
138
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Controls which new versions are auto-activated. **Pinned** = never auto-update. **Patch** = same major.minor (e.g. 1.2.x). **Minor** = same major (e.g. 1.x.x). **Latest** = always auto-update to newest." })),
|
|
139
|
-
react_1.default.createElement("select", { className: "form-select form-select-sm", value: versionFollowRange || 'latest', onChange: (e) => {
|
|
140
|
-
const val = e.target.value;
|
|
141
|
-
pkg.versionFollowRange = val === 'latest' ? undefined : val;
|
|
142
|
-
} },
|
|
143
|
-
react_1.default.createElement("option", { value: "latest" }, "Latest (auto-update to newest)"),
|
|
144
|
-
react_1.default.createElement("option", { value: "minor" }, "Minor (same major version)"),
|
|
145
|
-
react_1.default.createElement("option", { value: "patch" }, "Patch (same major.minor version)"),
|
|
146
|
-
react_1.default.createElement("option", { value: "pinned" }, "Pinned (no auto-updates)"))),
|
|
147
|
-
react_1.default.createElement("div", { className: `mb-3 ${isPinned ? 'opacity-50' : ''}` },
|
|
148
|
-
react_1.default.createElement("small", null,
|
|
149
|
-
"Follow Version Tags:",
|
|
150
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Which version tags to auto-activate. Leave empty for **current** (follows the active version's tag). Use `*` for any tag, or a comma-separated list like `stable,prod`." })),
|
|
151
|
-
react_1.default.createElement(input_1.Input, { value: pkg.qs.followVersionTags, className: "form-control form-control-sm p-0 ps-2", placeholder: `Following "${activeVersion?.versionTag || 'stable'}"`, disabled: isPinned })),
|
|
152
|
-
react_1.default.createElement("div", { className: "mb-2" },
|
|
153
|
-
react_1.default.createElement("small", null,
|
|
154
|
-
"Device-Specific Version Tag:",
|
|
155
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Override the tag policy for this device only. For example, set to `beta` to test pre-release versions on this device without affecting other devices or group members. This is not synced." })),
|
|
156
|
-
react_1.default.createElement("div", { className: "d-flex align-items-center gap-2" },
|
|
157
|
-
react_1.default.createElement("input", { type: "text", className: "form-control form-control-sm p-0 ps-2", placeholder: "e.g. beta", value: deviceTagDraft, onChange: (e) => setDeviceTagDraft(e.target.value) }),
|
|
158
|
-
deviceTagDraft && (react_1.default.createElement("button", { className: "btn btn-sm btn-outline-secondary", title: "Clear device tag override", onClick: () => setDeviceTagDraft('') },
|
|
159
|
-
react_1.default.createElement("i", { className: "bi bi-x-lg" })))))),
|
|
160
|
-
react_1.default.createElement("div", { className: "mt-2" },
|
|
161
|
-
react_1.default.createElement("hr", null),
|
|
162
|
-
react_1.default.createElement("small", null,
|
|
163
|
-
"Description:",
|
|
164
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `This should be edited in the package's README.md. It will automatically update when you restart Peers or reload the package.` })),
|
|
165
|
-
react_1.default.createElement(markdown_with_mentions_1.MarkdownWithMentions, { content: pkg.description || '' }))));
|
|
103
|
+
const isPinned = versionFollowRange === "pinned";
|
|
104
|
+
const remoteRepoUrl = pkg.remoteRepo;
|
|
105
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("small", { children: "Name:" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.name, className: "form-control mb-3 p-0 ps-2", placeholder: "Package name", title: "Package name", disabled: true }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Local Path:", (0, jsx_runtime_1.jsxs)("small", { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `The local path to the directory containing the package. This will open in VS Code if it's installed otherwise this will open in your native file system` }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link", onClick: () => {
|
|
106
|
+
peers_sdk_1.rpcServerCalls.openPackage(localPath || peers_sdk_1.packagesRootDir);
|
|
107
|
+
}, children: "Open Local" })] })] }), (0, jsx_runtime_1.jsx)("input", { type: "text", className: "form-control mb-3 p-0 ps-2", placeholder: "~/peers/packages/my-package", value: localPath || "", onChange: (e) => setLocalPath(e.target.value) })] }), remoteRepoUrl ? ((0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Source URL:", (0, jsx_runtime_1.jsxs)("small", { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `The remote source of this package. Often a github repository URL or a link to the Peers page for the package.` }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link", onClick: () => {
|
|
108
|
+
peers_sdk_1.rpcServerCalls.openLinkInBrowser(remoteRepoUrl);
|
|
109
|
+
}, children: "Open Remote" })] })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.remoteRepo, className: "form-control mb-3 p-0 ps-2", disabled: true })] })) : null, (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsx)("hr", {}), (0, jsx_runtime_1.jsxs)("small", { children: ["Version:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "The currently active version of this package. Manage versions in the Versions tab." })] }), activeVersion ? ((0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center mt-1 mb-3", children: [(0, jsx_runtime_1.jsxs)("strong", { className: "me-2", children: ["v", activeVersion.version] }), activeVersion.versionTag && ((0, jsx_runtime_1.jsx)("span", { className: `badge ${activeVersion.versionTag.startsWith("beta") ? "text-bg-warning" : "text-bg-info"} me-2`, children: activeVersion.versionTag })), (0, jsx_runtime_1.jsx)("code", { className: "text-muted small me-2", children: activeVersion.packageVersionHash?.substring(0, 8) }), newerLevel === "uptodate" ? ((0, jsx_runtime_1.jsx)("span", { className: "badge text-bg-success", children: "Up to date" })) : newerLevel ? ((0, jsx_runtime_1.jsxs)("span", { className: `badge text-bg-${newerLevel === "major" ? "danger" : newerLevel === "minor" ? "warning" : "info"}`, children: ["Newer ", newerLevel, " version available"] })) : null] })) : ((0, jsx_runtime_1.jsx)("div", { className: "text-muted small mt-1 mb-3", children: "No active version" })), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Auto-Update Range:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Controls which new versions are auto-activated. **Pinned** = never auto-update. **Patch** = same major.minor (e.g. 1.2.x). **Minor** = same major (e.g. 1.x.x). **Latest** = always auto-update to newest." })] }), (0, jsx_runtime_1.jsxs)("select", { className: "form-select form-select-sm", value: versionFollowRange || "latest", onChange: (e) => {
|
|
110
|
+
const val = e.target.value;
|
|
111
|
+
pkg.versionFollowRange = val === "latest" ? undefined : val;
|
|
112
|
+
}, children: [(0, jsx_runtime_1.jsx)("option", { value: "latest", children: "Latest (auto-update to newest)" }), (0, jsx_runtime_1.jsx)("option", { value: "minor", children: "Minor (same major version)" }), (0, jsx_runtime_1.jsx)("option", { value: "patch", children: "Patch (same major.minor version)" }), (0, jsx_runtime_1.jsx)("option", { value: "pinned", children: "Pinned (no auto-updates)" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: `mb-3 ${isPinned ? "opacity-50" : ""}`, children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Follow Version Tags:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Which version tags to auto-activate. Leave empty for **current** (follows the active version's tag). Use `*` for any tag, or a comma-separated list like `stable,prod`." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.followVersionTags, className: "form-control form-control-sm p-0 ps-2", placeholder: `Following "${activeVersion?.versionTag || "stable"}"`, disabled: isPinned })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Device-Specific Version Tag:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Override the tag policy for this device only. For example, set to `beta` to test pre-release versions on this device without affecting other devices or group members. This is not synced." })] }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center gap-2", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", className: "form-control form-control-sm p-0 ps-2", placeholder: "e.g. beta", value: deviceTagDraft, onChange: (e) => setDeviceTagDraft(e.target.value) }), deviceTagDraft && ((0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-outline-secondary", title: "Clear device tag override", onClick: () => setDeviceTagDraft(""), children: (0, jsx_runtime_1.jsx)("i", { className: "bi bi-x-lg" }) }))] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsx)("hr", {}), (0, jsx_runtime_1.jsxs)("small", { children: ["Description:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `This should be edited in the package's README.md. It will automatically update when you restart Peers or reload the package.` })] }), (0, jsx_runtime_1.jsx)(markdown_with_mentions_1.MarkdownWithMentions, { content: pkg.description || "" })] })] }));
|
|
166
113
|
};
|
|
167
114
|
exports.PackageInfo = PackageInfo;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const PackageList: () => React.JSX.Element;
|
|
1
|
+
export declare const PackageList: () => import("react/jsx-runtime").JSX.Element;
|