openvsx-webui-test 0.17.1 → 0.18.0-dev.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/lib/components/button-with-progress.d.ts +1 -0
- package/lib/components/button-with-progress.d.ts.map +1 -1
- package/lib/components/button-with-progress.js +1 -1
- package/lib/components/button-with-progress.js.map +1 -1
- package/lib/components/sanitized-markdown.d.ts.map +1 -1
- package/lib/components/sanitized-markdown.js +79 -1
- package/lib/components/sanitized-markdown.js.map +1 -1
- package/lib/components/scan-admin/common/auto-refresh.d.ts +21 -0
- package/lib/components/scan-admin/common/auto-refresh.d.ts.map +1 -0
- package/lib/components/scan-admin/common/auto-refresh.js +45 -0
- package/lib/components/scan-admin/common/auto-refresh.js.map +1 -0
- package/lib/components/scan-admin/common/conditional-tooltip.d.ts +24 -0
- package/lib/components/scan-admin/common/conditional-tooltip.d.ts.map +1 -0
- package/lib/components/scan-admin/common/conditional-tooltip.js +63 -0
- package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -0
- package/lib/components/scan-admin/common/file-table.d.ts +23 -0
- package/lib/components/scan-admin/common/file-table.d.ts.map +1 -0
- package/lib/components/scan-admin/common/file-table.js +350 -0
- package/lib/components/scan-admin/common/file-table.js.map +1 -0
- package/lib/components/scan-admin/common/index.d.ts +18 -0
- package/lib/components/scan-admin/common/index.d.ts.map +1 -0
- package/lib/components/scan-admin/common/index.js +18 -0
- package/lib/components/scan-admin/common/index.js.map +1 -0
- package/lib/components/scan-admin/common/tab-panel.d.ts +25 -0
- package/lib/components/scan-admin/common/tab-panel.d.ts.map +1 -0
- package/lib/components/scan-admin/common/tab-panel.js +22 -0
- package/lib/components/scan-admin/common/tab-panel.js.map +1 -0
- package/lib/components/scan-admin/common/utils.d.ts +15 -0
- package/lib/components/scan-admin/common/utils.d.ts.map +1 -0
- package/lib/components/scan-admin/common/utils.js +46 -0
- package/lib/components/scan-admin/common/utils.js.map +1 -0
- package/lib/components/scan-admin/dialogs/file-dialog.d.ts +19 -0
- package/lib/components/scan-admin/dialogs/file-dialog.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/file-dialog.js +85 -0
- package/lib/components/scan-admin/dialogs/file-dialog.js.map +1 -0
- package/lib/components/scan-admin/dialogs/index.d.ts +15 -0
- package/lib/components/scan-admin/dialogs/index.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/index.js +15 -0
- package/lib/components/scan-admin/dialogs/index.js.map +1 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts +23 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.d.ts.map +1 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js +192 -0
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -0
- package/lib/components/scan-admin/index.d.ts +20 -0
- package/lib/components/scan-admin/index.d.ts.map +1 -0
- package/lib/components/scan-admin/index.js +25 -0
- package/lib/components/scan-admin/index.js.map +1 -0
- package/lib/components/scan-admin/scan-card/index.d.ts +20 -0
- package/lib/components/scan-admin/scan-card/index.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/index.js +20 -0
- package/lib/components/scan-admin/scan-card/index.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.d.ts +30 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.js +232 -0
- package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +121 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts +27 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js +66 -0
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +151 -0
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.d.ts +26 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.js +101 -0
- package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card.d.ts +34 -0
- package/lib/components/scan-admin/scan-card/scan-card.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-card.js +90 -0
- package/lib/components/scan-admin/scan-card/scan-card.js.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts +38 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.js +72 -0
- package/lib/components/scan-admin/scan-card/scan-detail-card.js.map +1 -0
- package/lib/components/scan-admin/scan-card/utils.d.ts +48 -0
- package/lib/components/scan-admin/scan-card/utils.d.ts.map +1 -0
- package/lib/components/scan-admin/scan-card/utils.js +166 -0
- package/lib/components/scan-admin/scan-card/utils.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js +55 -0
- package/lib/components/scan-admin/tab-contents/allow-list-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js +43 -0
- package/lib/components/scan-admin/tab-contents/auto-rejected-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.js +55 -0
- package/lib/components/scan-admin/tab-contents/block-list-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/index.d.ts +18 -0
- package/lib/components/scan-admin/tab-contents/index.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/index.js +18 -0
- package/lib/components/scan-admin/tab-contents/index.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +78 -0
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts +19 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.d.ts.map +1 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.js +52 -0
- package/lib/components/scan-admin/tab-contents/scans-tab-content.js.map +1 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts +35 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.js +132 -0
- package/lib/components/scan-admin/toolbars/counts-toolbar.js.map +1 -0
- package/lib/components/scan-admin/toolbars/index.d.ts +16 -0
- package/lib/components/scan-admin/toolbars/index.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/index.js +16 -0
- package/lib/components/scan-admin/toolbars/index.js.map +1 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.d.ts +43 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.js +106 -0
- package/lib/components/scan-admin/toolbars/search-toolbar.js.map +1 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts +25 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.d.ts.map +1 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.js +33 -0
- package/lib/components/scan-admin/toolbars/tab-toolbar.js.map +1 -0
- package/lib/context/scan-admin/index.d.ts +21 -0
- package/lib/context/scan-admin/index.d.ts.map +1 -0
- package/lib/context/scan-admin/index.js +27 -0
- package/lib/context/scan-admin/index.js.map +1 -0
- package/lib/context/scan-admin/scan-actions.d.ts +19 -0
- package/lib/context/scan-admin/scan-actions.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-actions.js +64 -0
- package/lib/context/scan-admin/scan-actions.js.map +1 -0
- package/lib/context/scan-admin/scan-api-actions.d.ts +26 -0
- package/lib/context/scan-admin/scan-api-actions.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-api-actions.js +118 -0
- package/lib/context/scan-admin/scan-api-actions.js.map +1 -0
- package/lib/context/scan-admin/scan-api-effects.d.ts +40 -0
- package/lib/context/scan-admin/scan-api-effects.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-api-effects.js +446 -0
- package/lib/context/scan-admin/scan-api-effects.js.map +1 -0
- package/lib/context/scan-admin/scan-context-types.d.ts +69 -0
- package/lib/context/scan-admin/scan-context-types.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-context-types.js +14 -0
- package/lib/context/scan-admin/scan-context-types.js.map +1 -0
- package/lib/context/scan-admin/scan-context.d.ts +17 -0
- package/lib/context/scan-admin/scan-context.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-context.js +90 -0
- package/lib/context/scan-admin/scan-context.js.map +1 -0
- package/lib/context/scan-admin/scan-helpers.d.ts +28 -0
- package/lib/context/scan-admin/scan-helpers.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-helpers.js +56 -0
- package/lib/context/scan-admin/scan-helpers.js.map +1 -0
- package/lib/context/scan-admin/scan-reducer.d.ts +18 -0
- package/lib/context/scan-admin/scan-reducer.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-reducer.js +194 -0
- package/lib/context/scan-admin/scan-reducer.js.map +1 -0
- package/lib/context/scan-admin/scan-types.d.ts +292 -0
- package/lib/context/scan-admin/scan-types.d.ts.map +1 -0
- package/lib/context/scan-admin/scan-types.js +67 -0
- package/lib/context/scan-admin/scan-types.js.map +1 -0
- package/lib/default/page-settings.d.ts.map +1 -1
- package/lib/default/page-settings.js +3 -0
- package/lib/default/page-settings.js.map +1 -1
- package/lib/default/theme.d.ts +50 -12
- package/lib/default/theme.d.ts.map +1 -1
- package/lib/default/theme.js +42 -0
- package/lib/default/theme.js.map +1 -1
- package/lib/extension-registry-service.d.ts +85 -1
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +197 -0
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/extension-registry-types.d.ts +140 -0
- package/lib/extension-registry-types.d.ts.map +1 -1
- package/lib/extension-registry-types.js.map +1 -1
- package/lib/hooks/scan-admin/index.d.ts +34 -0
- package/lib/hooks/scan-admin/index.d.ts.map +1 -0
- package/lib/hooks/scan-admin/index.js +28 -0
- package/lib/hooks/scan-admin/index.js.map +1 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts +76 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js +79 -0
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-dialogs.d.ts +43 -0
- package/lib/hooks/scan-admin/use-dialogs.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-dialogs.js +55 -0
- package/lib/hooks/scan-admin/use-dialogs.js.map +1 -0
- package/lib/hooks/scan-admin/use-file-list-tab.d.ts +208 -0
- package/lib/hooks/scan-admin/use-file-list-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-file-list-tab.js +125 -0
- package/lib/hooks/scan-admin/use-file-list-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-pagination.d.ts +36 -0
- package/lib/hooks/scan-admin/use-pagination.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-pagination.js +79 -0
- package/lib/hooks/scan-admin/use-pagination.js.map +1 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.d.ts +92 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.js +125 -0
- package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-scan-card-state.d.ts +29 -0
- package/lib/hooks/scan-admin/use-scan-card-state.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scan-card-state.js +50 -0
- package/lib/hooks/scan-admin/use-scan-card-state.js.map +1 -0
- package/lib/hooks/scan-admin/use-scan-filters.d.ts +53 -0
- package/lib/hooks/scan-admin/use-scan-filters.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scan-filters.js +75 -0
- package/lib/hooks/scan-admin/use-scan-filters.js.map +1 -0
- package/lib/hooks/scan-admin/use-scans-tab.d.ts +85 -0
- package/lib/hooks/scan-admin/use-scans-tab.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-scans-tab.js +87 -0
- package/lib/hooks/scan-admin/use-scans-tab.js.map +1 -0
- package/lib/hooks/scan-admin/use-search.d.ts +32 -0
- package/lib/hooks/scan-admin/use-search.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-search.js +48 -0
- package/lib/hooks/scan-admin/use-search.js.map +1 -0
- package/lib/hooks/scan-admin/use-tab-navigation.d.ts +96 -0
- package/lib/hooks/scan-admin/use-tab-navigation.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-tab-navigation.js +70 -0
- package/lib/hooks/scan-admin/use-tab-navigation.js.map +1 -0
- package/lib/hooks/scan-admin/use-url-sync.d.ts +22 -0
- package/lib/hooks/scan-admin/use-url-sync.d.ts.map +1 -0
- package/lib/hooks/scan-admin/use-url-sync.js +252 -0
- package/lib/hooks/scan-admin/use-url-sync.js.map +1 -0
- package/lib/page-settings.d.ts +4 -0
- package/lib/page-settings.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +23 -3
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/scan-admin.d.ts +20 -0
- package/lib/pages/admin-dashboard/scan-admin.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/scan-admin.js +66 -0
- package/lib/pages/admin-dashboard/scan-admin.js.map +1 -0
- package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +2 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.js +9 -1
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.js +67 -18
- package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail.js +2 -2
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.d.ts +2 -2
- package/lib/pages/extension-detail/extension-rating-stars.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.js +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
- package/lib/pages/extension-list/extension-list-item.js +2 -2
- package/lib/pages/extension-list/extension-list-item.js.map +1 -1
- package/lib/pages/user/user-namespace-extension-list-item.d.ts.map +1 -1
- package/lib/pages/user/user-namespace-extension-list-item.js +23 -9
- package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
- package/lib/pages/user/user-publisher-agreement.d.ts.map +1 -1
- package/lib/pages/user/user-publisher-agreement.js +34 -13
- package/lib/pages/user/user-publisher-agreement.js.map +1 -1
- package/lib/pages/user/user-settings-profile.d.ts.map +1 -1
- package/lib/pages/user/user-settings-profile.js +10 -5
- package/lib/pages/user/user-settings-profile.js.map +1 -1
- package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
- package/lib/pages/user/user-settings-tokens.js +13 -5
- package/lib/pages/user/user-settings-tokens.js.map +1 -1
- package/package.json +10 -9
- package/src/components/button-with-progress.tsx +2 -1
- package/src/components/sanitized-markdown.tsx +81 -1
- package/src/components/scan-admin/common/auto-refresh.tsx +79 -0
- package/src/components/scan-admin/common/conditional-tooltip.tsx +74 -0
- package/src/components/scan-admin/common/file-table.tsx +508 -0
- package/src/components/scan-admin/common/index.ts +18 -0
- package/src/components/scan-admin/common/tab-panel.tsx +42 -0
- package/src/components/scan-admin/common/utils.ts +48 -0
- package/src/components/scan-admin/dialogs/file-dialog.tsx +137 -0
- package/src/components/scan-admin/dialogs/index.ts +15 -0
- package/src/components/scan-admin/dialogs/quarantine-dialog.tsx +270 -0
- package/src/components/scan-admin/index.ts +52 -0
- package/src/components/scan-admin/scan-card/index.ts +20 -0
- package/src/components/scan-admin/scan-card/scan-card-content.tsx +457 -0
- package/src/components/scan-admin/scan-card/scan-card-expand-strip-badges.tsx +186 -0
- package/src/components/scan-admin/scan-card/scan-card-expand-strip.tsx +104 -0
- package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +262 -0
- package/src/components/scan-admin/scan-card/scan-card-header.tsx +176 -0
- package/src/components/scan-admin/scan-card/scan-card.tsx +152 -0
- package/src/components/scan-admin/scan-card/scan-detail-card.tsx +144 -0
- package/src/components/scan-admin/scan-card/utils.ts +199 -0
- package/src/components/scan-admin/tab-contents/allow-list-tab-content.tsx +119 -0
- package/src/components/scan-admin/tab-contents/auto-rejected-tab-content.tsx +106 -0
- package/src/components/scan-admin/tab-contents/block-list-tab-content.tsx +119 -0
- package/src/components/scan-admin/tab-contents/index.ts +18 -0
- package/src/components/scan-admin/tab-contents/quarantined-tab-content.tsx +158 -0
- package/src/components/scan-admin/tab-contents/scans-tab-content.tsx +113 -0
- package/src/components/scan-admin/toolbars/counts-toolbar.tsx +262 -0
- package/src/components/scan-admin/toolbars/index.ts +16 -0
- package/src/components/scan-admin/toolbars/search-toolbar.tsx +255 -0
- package/src/components/scan-admin/toolbars/tab-toolbar.tsx +56 -0
- package/src/context/scan-admin/index.ts +43 -0
- package/src/context/scan-admin/scan-actions.ts +87 -0
- package/src/context/scan-admin/scan-api-actions.ts +137 -0
- package/src/context/scan-admin/scan-api-effects.ts +491 -0
- package/src/context/scan-admin/scan-context-types.ts +102 -0
- package/src/context/scan-admin/scan-context.tsx +123 -0
- package/src/context/scan-admin/scan-helpers.ts +63 -0
- package/src/context/scan-admin/scan-reducer.ts +321 -0
- package/src/context/scan-admin/scan-types.ts +337 -0
- package/src/default/page-settings.tsx +3 -0
- package/src/default/theme.tsx +102 -13
- package/src/extension-registry-service.ts +216 -1
- package/src/extension-registry-types.ts +157 -0
- package/src/hooks/scan-admin/index.ts +48 -0
- package/src/hooks/scan-admin/use-auto-rejected-tab.ts +85 -0
- package/src/hooks/scan-admin/use-dialogs.ts +83 -0
- package/src/hooks/scan-admin/use-file-list-tab.ts +149 -0
- package/src/hooks/scan-admin/use-pagination.ts +90 -0
- package/src/hooks/scan-admin/use-quarantined-tab.ts +138 -0
- package/src/hooks/scan-admin/use-scan-card-state.ts +73 -0
- package/src/hooks/scan-admin/use-scan-filters.ts +83 -0
- package/src/hooks/scan-admin/use-scans-tab.ts +92 -0
- package/src/hooks/scan-admin/use-search.ts +54 -0
- package/src/hooks/scan-admin/use-tab-navigation.ts +82 -0
- package/src/hooks/scan-admin/use-url-sync.ts +293 -0
- package/src/page-settings.ts +4 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +26 -2
- package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
- package/src/pages/admin-dashboard/publisher-revoke-dialog.tsx +2 -1
- package/src/pages/admin-dashboard/scan-admin.tsx +109 -0
- package/src/pages/admin-dashboard/welcome.tsx +1 -0
- package/src/pages/extension-detail/extension-detail-overview.tsx +16 -2
- package/src/pages/extension-detail/extension-detail-reviews.tsx +116 -30
- package/src/pages/extension-detail/extension-detail.tsx +2 -2
- package/src/pages/extension-detail/extension-rating-stars.tsx +2 -2
- package/src/pages/extension-list/extension-list-item.tsx +2 -2
- package/src/pages/user/user-namespace-extension-list-item.tsx +38 -13
- package/src/pages/user/user-publisher-agreement.tsx +30 -11
- package/src/pages/user/user-settings-profile.tsx +10 -6
- package/src/pages/user/user-settings-tokens.tsx +15 -6
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
-
import React from 'react';
|
|
10
|
+
import React, { useContext } from 'react';
|
|
11
11
|
import { Grid, Typography, Avatar } from '@mui/material';
|
|
12
12
|
import { toLocalTime } from '../../utils';
|
|
13
13
|
import { UserPublisherAgreement } from './user-publisher-agreement';
|
|
14
14
|
import styled from '@mui/material/styles/styled';
|
|
15
|
+
import { MainContext } from "../../context";
|
|
15
16
|
const ProfileGrid = styled(Grid)(({ theme }) => ({
|
|
16
17
|
[theme.breakpoints.up('lg')]: {
|
|
17
18
|
justifyContent: 'space-between'
|
|
@@ -33,11 +34,12 @@ const ProfileGrid = styled(Grid)(({ theme }) => ({
|
|
|
33
34
|
},
|
|
34
35
|
marginBottom: theme.spacing(2)
|
|
35
36
|
}));
|
|
36
|
-
export const UserSettingsProfile =
|
|
37
|
-
|
|
37
|
+
export const UserSettingsProfile = ({ user, isAdmin }) => {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const { pageSettings } = useContext(MainContext);
|
|
38
40
|
let publisherAgreementPanel = null;
|
|
39
41
|
if (user.publisherAgreement) {
|
|
40
|
-
if (
|
|
42
|
+
if (isAdmin) {
|
|
41
43
|
let statusText = 'has not signed';
|
|
42
44
|
if (user.publisherAgreement.status === 'signed') {
|
|
43
45
|
statusText = 'has signed';
|
|
@@ -45,11 +47,14 @@ export const UserSettingsProfile = props => {
|
|
|
45
47
|
else if (user.publisherAgreement.status === 'outdated') {
|
|
46
48
|
statusText = 'has signed an outdated version of';
|
|
47
49
|
}
|
|
50
|
+
const publisherAgreementName = (_b = (_a = pageSettings === null || pageSettings === void 0 ? void 0 : pageSettings.publisherAgreement) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
|
|
48
51
|
publisherAgreementPanel = React.createElement(Typography, { variant: 'body1', title: toLocalTime(user.publisherAgreement.timestamp) },
|
|
49
52
|
user.loginName,
|
|
50
53
|
" ",
|
|
51
54
|
statusText,
|
|
52
|
-
" the
|
|
55
|
+
" the ",
|
|
56
|
+
publisherAgreementName,
|
|
57
|
+
" Publisher Agreement.");
|
|
53
58
|
}
|
|
54
59
|
else {
|
|
55
60
|
publisherAgreementPanel = React.createElement(Grid, { container: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-profile.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-profile.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,
|
|
1
|
+
{"version":3,"file":"user-settings-profile.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-profile.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-tokens.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-tokens.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAc,EAAE,iBAAiB,EAAsD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"user-settings-tokens.d.ts","sourceRoot":"","sources":["../../../src/pages/user/user-settings-tokens.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAc,EAAE,iBAAiB,EAAsD,MAAM,OAAO,CAAC;AAOrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA4BrE,eAAO,MAAM,kBAAkB,EAAE,iBA6KhC,CAAC;AAEF,yBAAiB,kBAAkB,CAAC;IAChC,UAAiB,KAAK;QAClB,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,CAAC;KACpB;CACJ"}
|
|
@@ -44,7 +44,8 @@ const DeleteButton = styled(Button)(({ theme }) => ({
|
|
|
44
44
|
height: 36
|
|
45
45
|
}));
|
|
46
46
|
export const UserSettingsTokens = () => {
|
|
47
|
-
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
const { service, user, handleError, pageSettings } = useContext(MainContext);
|
|
48
49
|
const [tokens, setTokens] = useState(new Array());
|
|
49
50
|
const [loading, setLoading] = useState(true);
|
|
50
51
|
const [showDeleteAll, setShowDeleteAll] = useState(false);
|
|
@@ -111,13 +112,20 @@ export const UserSettingsTokens = () => {
|
|
|
111
112
|
};
|
|
112
113
|
const agreement = user === null || user === void 0 ? void 0 : user.publisherAgreement;
|
|
113
114
|
if (agreement && (agreement.status === 'none' || agreement.status === 'outdated')) {
|
|
115
|
+
const publisherAgreementName = (_b = (_a = pageSettings === null || pageSettings === void 0 ? void 0 : pageSettings.publisherAgreement) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
|
|
116
|
+
const publisherAgreementContact = (_c = pageSettings === null || pageSettings === void 0 ? void 0 : pageSettings.publisherAgreement) === null || _c === void 0 ? void 0 : _c.email;
|
|
114
117
|
return React.createElement(Box, null,
|
|
115
118
|
React.createElement(EmptyTypography, { variant: 'body1' },
|
|
116
|
-
"Access tokens cannot be created as you currently do not have an
|
|
119
|
+
"Access tokens cannot be created as you currently do not have an ",
|
|
120
|
+
publisherAgreementName,
|
|
121
|
+
" Publisher Agreement signed. Please return to your ",
|
|
117
122
|
React.createElement(StyledRouteLink, { to: UserSettingsRoutes.PROFILE }, "Profile"),
|
|
118
|
-
" page to sign the Publisher Agreement.
|
|
119
|
-
|
|
120
|
-
|
|
123
|
+
" page to sign the Publisher Agreement.",
|
|
124
|
+
publisherAgreementContact !== undefined &&
|
|
125
|
+
React.createElement(React.Fragment, null,
|
|
126
|
+
" Should you believe this is in error, please contact ",
|
|
127
|
+
React.createElement(StyledLink, { href: 'mailto:{publisherAgreementContact}' }, publisherAgreementContact),
|
|
128
|
+
".")));
|
|
121
129
|
}
|
|
122
130
|
return React.createElement(React.Fragment, null,
|
|
123
131
|
React.createElement(Box, { sx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-settings-tokens.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-tokens.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;;;;;;;;;;AAElF,OAAO,KAAK,EAAE,EAAgC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrG,OAAO,
|
|
1
|
+
{"version":3,"file":"user-settings-tokens.js","sourceRoot":"","sources":["../../../src/pages/user/user-settings-tokens.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openvsx-webui-test",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0-dev.0",
|
|
4
4
|
"description": "User interface for Eclipse Open VSX",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"homepage": "https://open-vsx.org",
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "git+https://github.com/
|
|
16
|
+
"url": "git+https://github.com/eclipse/openvsx.git",
|
|
17
17
|
"directory": "webui"
|
|
18
18
|
},
|
|
19
|
-
"bugs": "https://github.com/
|
|
19
|
+
"bugs": "https://github.com/eclipse/openvsx/issues",
|
|
20
20
|
"contributors": [
|
|
21
21
|
{
|
|
22
22
|
"name": "Jan Bicker",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@emotion/react": "^11.11.1",
|
|
40
40
|
"@emotion/styled": "^11.11.0",
|
|
41
|
+
"@mdit/plugin-alert": "^0.22.3",
|
|
41
42
|
"@mui/base": "^5.0.0-beta.9",
|
|
42
43
|
"@mui/icons-material": "^5.13.7",
|
|
43
44
|
"@mui/material": "^5.13.7",
|
|
@@ -46,8 +47,8 @@
|
|
|
46
47
|
"dompurify": "^3.0.4",
|
|
47
48
|
"fetch-retry": "^5.0.6",
|
|
48
49
|
"lodash": "^4.17.21",
|
|
49
|
-
"markdown-it": "^
|
|
50
|
-
"markdown-it-anchor": "^
|
|
50
|
+
"markdown-it": "^14.1.0",
|
|
51
|
+
"markdown-it-anchor": "^9.2.0",
|
|
51
52
|
"prop-types": "^15.8.1",
|
|
52
53
|
"punycode": "^2.3.0",
|
|
53
54
|
"react": "^18.2.0",
|
|
@@ -56,8 +57,8 @@
|
|
|
56
57
|
"react-dropzone": "^14.2.3",
|
|
57
58
|
"react-helmet-async": "^1.3.0",
|
|
58
59
|
"react-infinite-scroller": "^1.2.6",
|
|
59
|
-
"react-router": "^6.
|
|
60
|
-
"react-router-dom": "^6.
|
|
60
|
+
"react-router": "^6.30.3",
|
|
61
|
+
"react-router-dom": "^6.30.3"
|
|
61
62
|
},
|
|
62
63
|
"resolutions": {
|
|
63
64
|
"@types/react": "^18.2.14",
|
|
@@ -67,14 +68,14 @@
|
|
|
67
68
|
"@babel/core": "^7.25.2",
|
|
68
69
|
"@eslint/eslintrc": "^3.2.0",
|
|
69
70
|
"@eslint/js": "^9.15.0",
|
|
70
|
-
"@playwright/test": "^1.
|
|
71
|
+
"@playwright/test": "^1.58.0",
|
|
71
72
|
"@stylistic/eslint-plugin": "^2.11.0",
|
|
72
73
|
"@types/babel__core": "^7",
|
|
73
74
|
"@types/chai": "^4.3.5",
|
|
74
75
|
"@types/dompurify": "^3.0.2",
|
|
75
76
|
"@types/express": "^4.17.21",
|
|
76
77
|
"@types/lodash": "^4.14.195",
|
|
77
|
-
"@types/markdown-it": "^
|
|
78
|
+
"@types/markdown-it": "^14",
|
|
78
79
|
"@types/mocha": "^10.0.9",
|
|
79
80
|
"@types/node": "^20.4.0",
|
|
80
81
|
"@types/prop-types": "^15.7.5",
|
|
@@ -15,7 +15,7 @@ export const ButtonWithProgress: FunctionComponent<PropsWithChildren<ButtonWithP
|
|
|
15
15
|
return <Box component='div' sx={[{ position: 'relative' }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}>
|
|
16
16
|
<Button
|
|
17
17
|
variant='contained'
|
|
18
|
-
color='secondary'
|
|
18
|
+
color={props.color || 'secondary'}
|
|
19
19
|
disabled={props.working || props.error}
|
|
20
20
|
autoFocus={props.autoFocus}
|
|
21
21
|
onClick={props.onClick}
|
|
@@ -43,6 +43,7 @@ export const ButtonWithProgress: FunctionComponent<PropsWithChildren<ButtonWithP
|
|
|
43
43
|
|
|
44
44
|
export interface ButtonWithProgressProps {
|
|
45
45
|
working: boolean;
|
|
46
|
+
color?: 'primary' | 'secondary' | 'success' | 'error' | 'info' | 'warning' | undefined;
|
|
46
47
|
error?: boolean;
|
|
47
48
|
autoFocus?: boolean;
|
|
48
49
|
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
11
|
import React, { FunctionComponent, useEffect } from 'react';
|
|
12
|
-
import
|
|
12
|
+
import MarkdownIt from 'markdown-it';
|
|
13
13
|
import * as MarkdownItAnchor from 'markdown-it-anchor';
|
|
14
|
+
import { alert } from '@mdit/plugin-alert';
|
|
14
15
|
import DOMPurify from 'dompurify';
|
|
15
16
|
import { Theme, styled } from '@mui/material/styles';
|
|
16
17
|
import linkIcon from './link-icon';
|
|
@@ -75,6 +76,82 @@ const Markdown = styled('div')(({ theme }: { theme: Theme }) => ({
|
|
|
75
76
|
textAlign: 'start',
|
|
76
77
|
background: theme.palette.neutral.dark
|
|
77
78
|
}
|
|
79
|
+
},
|
|
80
|
+
'& .markdown-alert': {
|
|
81
|
+
padding: '8px 16px',
|
|
82
|
+
marginBottom: 16,
|
|
83
|
+
borderLeft: '4px solid',
|
|
84
|
+
borderRadius: 4,
|
|
85
|
+
'& .markdown-alert-title': {
|
|
86
|
+
display: 'flex',
|
|
87
|
+
alignItems: 'center',
|
|
88
|
+
fontWeight: 600,
|
|
89
|
+
marginBottom: 4,
|
|
90
|
+
'& svg': {
|
|
91
|
+
marginRight: 8,
|
|
92
|
+
width: 16,
|
|
93
|
+
height: 16
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
'& .markdown-alert-title:before': {
|
|
97
|
+
content: '" "',
|
|
98
|
+
width: '16px',
|
|
99
|
+
height: '16px',
|
|
100
|
+
marginRight: '8px',
|
|
101
|
+
},
|
|
102
|
+
'& p': {
|
|
103
|
+
margin: 0
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
'& .markdown-alert-note': {
|
|
107
|
+
borderColor: '#2f81f7',
|
|
108
|
+
backgroundColor: 'rgba(47, 129, 247, 0.1)',
|
|
109
|
+
'& .markdown-alert-title': {
|
|
110
|
+
color: '#2f81f7'
|
|
111
|
+
},
|
|
112
|
+
'& .markdown-alert-title::before': {
|
|
113
|
+
content: `url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%232f81f7' d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E")`
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
'& .markdown-alert-tip': {
|
|
117
|
+
borderColor: '#3fb950',
|
|
118
|
+
backgroundColor: 'rgba(63, 185, 80, 0.1)',
|
|
119
|
+
'& .markdown-alert-title': {
|
|
120
|
+
color: '#3fb950'
|
|
121
|
+
},
|
|
122
|
+
'& .markdown-alert-title::before': {
|
|
123
|
+
content: `url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%233fb950' d='M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z'/%3E%3C/svg%3E")`
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
'& .markdown-alert-important': {
|
|
127
|
+
borderColor: '#a371f7',
|
|
128
|
+
backgroundColor: 'rgba(163, 113, 247, 0.1)',
|
|
129
|
+
'& .markdown-alert-title': {
|
|
130
|
+
color: '#a371f7'
|
|
131
|
+
},
|
|
132
|
+
'& .markdown-alert-title::before': {
|
|
133
|
+
content: `url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23a371f7' d='M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'/%3E%3C/svg%3E ")`
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
'& .markdown-alert-warning': {
|
|
137
|
+
borderColor: '#d29922',
|
|
138
|
+
backgroundColor: 'rgba(210, 153, 34, 0.1)',
|
|
139
|
+
'& .markdown-alert-title': {
|
|
140
|
+
color: '#d29922'
|
|
141
|
+
},
|
|
142
|
+
'& .markdown-alert-title::before': {
|
|
143
|
+
content: `url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23d29922' d='M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'/%3E%3C/svg%3E")`
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
'& .markdown-alert-caution': {
|
|
147
|
+
borderColor: '#f85149',
|
|
148
|
+
backgroundColor: 'rgba(248, 81, 73, 0.1)',
|
|
149
|
+
'& .markdown-alert-title': {
|
|
150
|
+
color: '#f85149'
|
|
151
|
+
},
|
|
152
|
+
'& .markdown-alert-title::before': {
|
|
153
|
+
content: `url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23f85149' d='M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z'/%3E%3C/svg%3E")`
|
|
154
|
+
}
|
|
78
155
|
}
|
|
79
156
|
}));
|
|
80
157
|
|
|
@@ -85,6 +162,9 @@ export const SanitizedMarkdown: FunctionComponent<SanitizedMarkdownProps> = ({ c
|
|
|
85
162
|
linkify: true,
|
|
86
163
|
typographer: true
|
|
87
164
|
});
|
|
165
|
+
|
|
166
|
+
markdownIt.use(alert);
|
|
167
|
+
|
|
88
168
|
if (linkify === undefined || linkify) {
|
|
89
169
|
const anchor = MarkdownItAnchor.default;
|
|
90
170
|
markdownIt.use(anchor, {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
|
|
14
|
+
import React, { FunctionComponent } from 'react';
|
|
15
|
+
import { Box, Typography, Switch } from '@mui/material';
|
|
16
|
+
import { formatDateTime } from './utils';
|
|
17
|
+
|
|
18
|
+
interface AutoRefreshProps {
|
|
19
|
+
lastRefreshed: Date | null;
|
|
20
|
+
autoRefresh?: boolean;
|
|
21
|
+
onAutoRefreshChange?: (enabled: boolean) => void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const AutoRefresh: FunctionComponent<AutoRefreshProps> = ({
|
|
25
|
+
lastRefreshed,
|
|
26
|
+
autoRefresh = false,
|
|
27
|
+
onAutoRefreshChange,
|
|
28
|
+
}) => {
|
|
29
|
+
if (!lastRefreshed) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Box
|
|
35
|
+
sx={{
|
|
36
|
+
display: 'flex',
|
|
37
|
+
justifyContent: 'flex-end',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
gap: 1,
|
|
40
|
+
}}
|
|
41
|
+
>
|
|
42
|
+
{onAutoRefreshChange && (
|
|
43
|
+
<Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>
|
|
44
|
+
<Typography
|
|
45
|
+
variant='body2'
|
|
46
|
+
sx={{
|
|
47
|
+
color: 'text.secondary',
|
|
48
|
+
fontSize: '0.75rem',
|
|
49
|
+
whiteSpace: 'nowrap',
|
|
50
|
+
}}
|
|
51
|
+
>
|
|
52
|
+
30s auto-refresh
|
|
53
|
+
</Typography>
|
|
54
|
+
<Switch
|
|
55
|
+
size='small'
|
|
56
|
+
checked={autoRefresh}
|
|
57
|
+
onChange={(e) => onAutoRefreshChange(e.target.checked)}
|
|
58
|
+
color='secondary'
|
|
59
|
+
sx={{
|
|
60
|
+
transform: 'scale(0.7)',
|
|
61
|
+
marginRight: -0.5,
|
|
62
|
+
}}
|
|
63
|
+
/>
|
|
64
|
+
</Box>
|
|
65
|
+
)}
|
|
66
|
+
<Typography
|
|
67
|
+
variant='body2'
|
|
68
|
+
sx={{
|
|
69
|
+
color: 'text.secondary',
|
|
70
|
+
fontSize: '0.75rem',
|
|
71
|
+
whiteSpace: 'nowrap',
|
|
72
|
+
pl: 1,
|
|
73
|
+
}}
|
|
74
|
+
>
|
|
75
|
+
Last Refreshed: {formatDateTime(lastRefreshed.toISOString())}
|
|
76
|
+
</Typography>
|
|
77
|
+
</Box>
|
|
78
|
+
);
|
|
79
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
|
|
14
|
+
import React, { FunctionComponent, useRef, useState, useEffect } from 'react';
|
|
15
|
+
import { Tooltip, TooltipProps } from '@mui/material';
|
|
16
|
+
|
|
17
|
+
interface ConditionalTooltipProps extends Omit<TooltipProps, 'title'> {
|
|
18
|
+
title: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A Tooltip component that only shows when the child content is truncated with ellipsis.
|
|
23
|
+
* Uses ref to check if the content overflows its container.
|
|
24
|
+
*/
|
|
25
|
+
export const ConditionalTooltip: FunctionComponent<ConditionalTooltipProps> = ({
|
|
26
|
+
title,
|
|
27
|
+
children,
|
|
28
|
+
...tooltipProps
|
|
29
|
+
}) => {
|
|
30
|
+
const textRef = useRef<HTMLElement>(null);
|
|
31
|
+
const [isTruncated, setIsTruncated] = useState(false);
|
|
32
|
+
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const checkTruncation = () => {
|
|
35
|
+
if (textRef.current) {
|
|
36
|
+
setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
checkTruncation();
|
|
41
|
+
|
|
42
|
+
// Recheck on window resize
|
|
43
|
+
window.addEventListener('resize', checkTruncation);
|
|
44
|
+
return () => window.removeEventListener('resize', checkTruncation);
|
|
45
|
+
}, [title, children]);
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<Tooltip
|
|
49
|
+
title={isTruncated ? title : ''}
|
|
50
|
+
disableHoverListener={!isTruncated}
|
|
51
|
+
disableInteractive
|
|
52
|
+
PopperProps={{
|
|
53
|
+
disablePortal: true,
|
|
54
|
+
modifiers: [
|
|
55
|
+
{
|
|
56
|
+
name: 'preventOverflow',
|
|
57
|
+
enabled: true,
|
|
58
|
+
options: {
|
|
59
|
+
boundary: 'clippingParents',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
sx: {
|
|
64
|
+
pointerEvents: 'none',
|
|
65
|
+
},
|
|
66
|
+
}}
|
|
67
|
+
{...tooltipProps}
|
|
68
|
+
>
|
|
69
|
+
{React.cloneElement(children as React.ReactElement, {
|
|
70
|
+
ref: textRef,
|
|
71
|
+
})}
|
|
72
|
+
</Tooltip>
|
|
73
|
+
);
|
|
74
|
+
};
|