openvsx-webui-test 0.17.1
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/LICENSE +277 -0
- package/lib/components/banner.d.ts +21 -0
- package/lib/components/banner.d.ts.map +1 -0
- package/lib/components/banner.js +41 -0
- package/lib/components/banner.js.map +1 -0
- package/lib/components/button-with-progress.d.ts +21 -0
- package/lib/components/button-with-progress.d.ts.map +1 -0
- package/lib/components/button-with-progress.js +26 -0
- package/lib/components/button-with-progress.js.map +1 -0
- package/lib/components/copy-to-clipboard.d.ts +21 -0
- package/lib/components/copy-to-clipboard.d.ts.map +1 -0
- package/lib/components/copy-to-clipboard.js +25 -0
- package/lib/components/copy-to-clipboard.js.map +1 -0
- package/lib/components/delayed-load-indicator.d.ts +17 -0
- package/lib/components/delayed-load-indicator.d.ts.map +1 -0
- package/lib/components/delayed-load-indicator.js +40 -0
- package/lib/components/delayed-load-indicator.js.map +1 -0
- package/lib/components/error-dialog.d.ts +18 -0
- package/lib/components/error-dialog.d.ts.map +1 -0
- package/lib/components/error-dialog.js +65 -0
- package/lib/components/error-dialog.js.map +1 -0
- package/lib/components/hover-popover.d.ts +17 -0
- package/lib/components/hover-popover.d.ts.map +1 -0
- package/lib/components/hover-popover.js +24 -0
- package/lib/components/hover-popover.js.map +1 -0
- package/lib/components/info-dialog.d.ts +17 -0
- package/lib/components/info-dialog.d.ts.map +1 -0
- package/lib/components/info-dialog.js +29 -0
- package/lib/components/info-dialog.js.map +1 -0
- package/lib/components/link-icon.d.ts +16 -0
- package/lib/components/link-icon.d.ts.map +1 -0
- package/lib/components/link-icon.js +13 -0
- package/lib/components/link-icon.js.map +1 -0
- package/lib/components/sanitized-markdown.d.ts +17 -0
- package/lib/components/sanitized-markdown.d.ts.map +1 -0
- package/lib/components/sanitized-markdown.js +106 -0
- package/lib/components/sanitized-markdown.js.map +1 -0
- package/lib/components/sidepanel/navigation-item.d.ts +19 -0
- package/lib/components/sidepanel/navigation-item.d.ts.map +1 -0
- package/lib/components/sidepanel/navigation-item.js +36 -0
- package/lib/components/sidepanel/navigation-item.js.map +1 -0
- package/lib/components/sidepanel/sidepanel.d.ts +12 -0
- package/lib/components/sidepanel/sidepanel.d.ts.map +1 -0
- package/lib/components/sidepanel/sidepanel.js +27 -0
- package/lib/components/sidepanel/sidepanel.js.map +1 -0
- package/lib/components/text-divider.d.ts +16 -0
- package/lib/components/text-divider.d.ts.map +1 -0
- package/lib/components/text-divider.js +20 -0
- package/lib/components/text-divider.js.map +1 -0
- package/lib/components/timestamp.d.ts +17 -0
- package/lib/components/timestamp.d.ts.map +1 -0
- package/lib/components/timestamp.js +19 -0
- package/lib/components/timestamp.js.map +1 -0
- package/lib/context.d.ts +24 -0
- package/lib/context.d.ts.map +1 -0
- package/lib/context.js +13 -0
- package/lib/context.js.map +1 -0
- package/lib/default/about.d.ts +13 -0
- package/lib/default/about.d.ts.map +1 -0
- package/lib/default/about.js +30 -0
- package/lib/default/about.js.map +1 -0
- package/lib/default/default-app.d.ts +11 -0
- package/lib/default/default-app.d.ts.map +1 -0
- package/lib/default/default-app.js +71 -0
- package/lib/default/default-app.js.map +1 -0
- package/lib/default/login.d.ts +16 -0
- package/lib/default/login.d.ts.map +1 -0
- package/lib/default/login.js +28 -0
- package/lib/default/login.js.map +1 -0
- package/lib/default/menu-content.d.ts +43 -0
- package/lib/default/menu-content.d.ts.map +1 -0
- package/lib/default/menu-content.js +156 -0
- package/lib/default/menu-content.js.map +1 -0
- package/lib/default/openvsx-registry-logo.d.ts +18 -0
- package/lib/default/openvsx-registry-logo.d.ts.map +1 -0
- package/lib/default/openvsx-registry-logo.js +18 -0
- package/lib/default/openvsx-registry-logo.js.map +1 -0
- package/lib/default/page-settings.d.ts +12 -0
- package/lib/default/page-settings.d.ts.map +1 -0
- package/lib/default/page-settings.js +110 -0
- package/lib/default/page-settings.js.map +1 -0
- package/lib/default/server.d.ts +11 -0
- package/lib/default/server.d.ts.map +1 -0
- package/lib/default/server.js +50 -0
- package/lib/default/server.js.map +1 -0
- package/lib/default/theme.d.ts +29 -0
- package/lib/default/theme.d.ts.map +1 -0
- package/lib/default/theme.js +40 -0
- package/lib/default/theme.js.map +1 -0
- package/lib/extension-registry-service.d.ts +115 -0
- package/lib/extension-registry-service.d.ts.map +1 -0
- package/lib/extension-registry-service.js +571 -0
- package/lib/extension-registry-service.js.map +1 -0
- package/lib/extension-registry-types.d.ts +215 -0
- package/lib/extension-registry-types.d.ts.map +1 -0
- package/lib/extension-registry-types.js +20 -0
- package/lib/extension-registry-types.js.map +1 -0
- package/lib/header-menu.d.ts +16 -0
- package/lib/header-menu.d.ts.map +1 -0
- package/lib/header-menu.js +48 -0
- package/lib/header-menu.js.map +1 -0
- package/lib/index.d.ts +18 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -0
- package/lib/main.d.ts +20 -0
- package/lib/main.d.ts.map +1 -0
- package/lib/main.js +112 -0
- package/lib/main.js.map +1 -0
- package/lib/not-found.d.ts +3 -0
- package/lib/not-found.d.ts.map +1 -0
- package/lib/not-found.js +10 -0
- package/lib/not-found.js.map +1 -0
- package/lib/other-pages.d.ts +8 -0
- package/lib/other-pages.d.ts.map +1 -0
- package/lib/other-pages.js +94 -0
- package/lib/other-pages.js.map +1 -0
- package/lib/page-settings.d.ts +71 -0
- package/lib/page-settings.d.ts.map +1 -0
- package/lib/page-settings.js +11 -0
- package/lib/page-settings.js.map +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts +22 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.js +75 -0
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -0
- package/lib/pages/admin-dashboard/extension-admin.d.ts +12 -0
- package/lib/pages/admin-dashboard/extension-admin.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/extension-admin.js +98 -0
- package/lib/pages/admin-dashboard/extension-admin.js.map +1 -0
- package/lib/pages/admin-dashboard/extension-remove-dialog.d.ts +18 -0
- package/lib/pages/admin-dashboard/extension-remove-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/extension-remove-dialog.js +73 -0
- package/lib/pages/admin-dashboard/extension-remove-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/extension-version-container.d.ts +17 -0
- package/lib/pages/admin-dashboard/extension-version-container.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/extension-version-container.js +136 -0
- package/lib/pages/admin-dashboard/extension-version-container.js.map +1 -0
- package/lib/pages/admin-dashboard/namespace-admin.d.ts +12 -0
- package/lib/pages/admin-dashboard/namespace-admin.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/namespace-admin.js +103 -0
- package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -0
- package/lib/pages/admin-dashboard/namespace-change-dialog.d.ts +19 -0
- package/lib/pages/admin-dashboard/namespace-change-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/namespace-change-dialog.js +99 -0
- package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/namespace-input.d.ts +21 -0
- package/lib/pages/admin-dashboard/namespace-input.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/namespace-input.js +53 -0
- package/lib/pages/admin-dashboard/namespace-input.js.map +1 -0
- package/lib/pages/admin-dashboard/publisher-admin.d.ts +15 -0
- package/lib/pages/admin-dashboard/publisher-admin.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/publisher-admin.js +84 -0
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -0
- package/lib/pages/admin-dashboard/publisher-details.d.ts +17 -0
- package/lib/pages/admin-dashboard/publisher-details.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/publisher-details.js +36 -0
- package/lib/pages/admin-dashboard/publisher-details.js.map +1 -0
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts +16 -0
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +105 -0
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.d.ts +16 -0
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js +55 -0
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js.map +1 -0
- package/lib/pages/admin-dashboard/search-list-container.d.ts +17 -0
- package/lib/pages/admin-dashboard/search-list-container.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/search-list-container.js +24 -0
- package/lib/pages/admin-dashboard/search-list-container.js.map +1 -0
- package/lib/pages/admin-dashboard/welcome.d.ts +12 -0
- package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/welcome.js +42 -0
- package/lib/pages/admin-dashboard/welcome.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail-changes.d.ts +16 -0
- package/lib/pages/extension-detail/extension-detail-changes.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail-changes.js +91 -0
- package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail-downloads-menu.d.ts +18 -0
- package/lib/pages/extension-detail/extension-detail-downloads-menu.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail-downloads-menu.js +30 -0
- package/lib/pages/extension-detail/extension-detail-downloads-menu.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail-overview.d.ts +17 -0
- package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail-overview.js +296 -0
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail-reviews.d.ts +17 -0
- package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail-reviews.js +136 -0
- package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail.d.ts +31 -0
- package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail.js +378 -0
- package/lib/pages/extension-detail/extension-detail.js.map +1 -0
- package/lib/pages/extension-detail/extension-rating-star-setter.d.ts +15 -0
- package/lib/pages/extension-detail/extension-rating-star-setter.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-rating-star-setter.js +32 -0
- package/lib/pages/extension-detail/extension-rating-star-setter.js.map +1 -0
- package/lib/pages/extension-detail/extension-rating-stars.d.ts +16 -0
- package/lib/pages/extension-detail/extension-rating-stars.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-rating-stars.js +31 -0
- package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -0
- package/lib/pages/extension-detail/extension-review-dialog.d.ts +18 -0
- package/lib/pages/extension-detail/extension-review-dialog.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-review-dialog.js +100 -0
- package/lib/pages/extension-detail/extension-review-dialog.js.map +1 -0
- package/lib/pages/extension-list/extension-list-container.d.ts +15 -0
- package/lib/pages/extension-list/extension-list-container.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list-container.js +79 -0
- package/lib/pages/extension-list/extension-list-container.js.map +1 -0
- package/lib/pages/extension-list/extension-list-header.d.ts +25 -0
- package/lib/pages/extension-list/extension-list-header.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list-header.js +148 -0
- package/lib/pages/extension-list/extension-list-header.js.map +1 -0
- package/lib/pages/extension-list/extension-list-item.d.ts +18 -0
- package/lib/pages/extension-list/extension-list-item.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list-item.js +89 -0
- package/lib/pages/extension-list/extension-list-item.js.map +1 -0
- package/lib/pages/extension-list/extension-list-searchfield.d.ts +22 -0
- package/lib/pages/extension-list/extension-list-searchfield.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list-searchfield.js +54 -0
- package/lib/pages/extension-list/extension-list-searchfield.js.map +1 -0
- package/lib/pages/extension-list/extension-list.d.ts +18 -0
- package/lib/pages/extension-list/extension-list.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list.js +141 -0
- package/lib/pages/extension-list/extension-list.js.map +1 -0
- package/lib/pages/namespace-detail/namespace-detail.d.ts +19 -0
- package/lib/pages/namespace-detail/namespace-detail.d.ts.map +1 -0
- package/lib/pages/namespace-detail/namespace-detail.js +175 -0
- package/lib/pages/namespace-detail/namespace-detail.js.map +1 -0
- package/lib/pages/user/add-namespace-member-dialog.d.ts +22 -0
- package/lib/pages/user/add-namespace-member-dialog.d.ts.map +1 -0
- package/lib/pages/user/add-namespace-member-dialog.js +114 -0
- package/lib/pages/user/add-namespace-member-dialog.js.map +1 -0
- package/lib/pages/user/avatar.d.ts +12 -0
- package/lib/pages/user/avatar.d.ts.map +1 -0
- package/lib/pages/user/avatar.js +59 -0
- package/lib/pages/user/avatar.js.map +1 -0
- package/lib/pages/user/create-namespace-dialog.d.ts +15 -0
- package/lib/pages/user/create-namespace-dialog.d.ts.map +1 -0
- package/lib/pages/user/create-namespace-dialog.js +90 -0
- package/lib/pages/user/create-namespace-dialog.js.map +1 -0
- package/lib/pages/user/generate-token-dialog.d.ts +15 -0
- package/lib/pages/user/generate-token-dialog.d.ts.map +1 -0
- package/lib/pages/user/generate-token-dialog.js +101 -0
- package/lib/pages/user/generate-token-dialog.js.map +1 -0
- package/lib/pages/user/logout.d.ts +12 -0
- package/lib/pages/user/logout.d.ts.map +1 -0
- package/lib/pages/user/logout.js +55 -0
- package/lib/pages/user/logout.js.map +1 -0
- package/lib/pages/user/publish-extension-dialog.d.ts +15 -0
- package/lib/pages/user/publish-extension-dialog.d.ts.map +1 -0
- package/lib/pages/user/publish-extension-dialog.js +202 -0
- package/lib/pages/user/publish-extension-dialog.js.map +1 -0
- package/lib/pages/user/user-extension-list.d.ts +19 -0
- package/lib/pages/user/user-extension-list.d.ts.map +1 -0
- package/lib/pages/user/user-extension-list.js +26 -0
- package/lib/pages/user/user-extension-list.js.map +1 -0
- package/lib/pages/user/user-namespace-details.d.ts +16 -0
- package/lib/pages/user/user-namespace-details.d.ts.map +1 -0
- package/lib/pages/user/user-namespace-details.js +473 -0
- package/lib/pages/user/user-namespace-details.js.map +1 -0
- package/lib/pages/user/user-namespace-extension-list-item.d.ts +17 -0
- package/lib/pages/user/user-namespace-extension-list-item.d.ts.map +1 -0
- package/lib/pages/user/user-namespace-extension-list-item.js +100 -0
- package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -0
- package/lib/pages/user/user-namespace-extension-list.d.ts +16 -0
- package/lib/pages/user/user-namespace-extension-list.d.ts.map +1 -0
- package/lib/pages/user/user-namespace-extension-list.js +65 -0
- package/lib/pages/user/user-namespace-extension-list.js.map +1 -0
- package/lib/pages/user/user-namespace-member-component.d.ts +20 -0
- package/lib/pages/user/user-namespace-member-component.d.ts.map +1 -0
- package/lib/pages/user/user-namespace-member-component.js +54 -0
- package/lib/pages/user/user-namespace-member-component.js.map +1 -0
- package/lib/pages/user/user-namespace-member-list.d.ts +19 -0
- package/lib/pages/user/user-namespace-member-list.d.ts.map +1 -0
- package/lib/pages/user/user-namespace-member-list.js +89 -0
- package/lib/pages/user/user-namespace-member-list.js.map +1 -0
- package/lib/pages/user/user-publisher-agreement.d.ts +16 -0
- package/lib/pages/user/user-publisher-agreement.d.ts.map +1 -0
- package/lib/pages/user/user-publisher-agreement.js +129 -0
- package/lib/pages/user/user-publisher-agreement.js.map +1 -0
- package/lib/pages/user/user-setting-tabs.d.ts +12 -0
- package/lib/pages/user/user-setting-tabs.d.ts.map +1 -0
- package/lib/pages/user/user-setting-tabs.js +33 -0
- package/lib/pages/user/user-setting-tabs.js.map +1 -0
- package/lib/pages/user/user-settings-delete-extension.d.ts +16 -0
- package/lib/pages/user/user-settings-delete-extension.d.ts.map +1 -0
- package/lib/pages/user/user-settings-delete-extension.js +75 -0
- package/lib/pages/user/user-settings-delete-extension.js.map +1 -0
- package/lib/pages/user/user-settings-extensions.d.ts +12 -0
- package/lib/pages/user/user-settings-extensions.d.ts.map +1 -0
- package/lib/pages/user/user-settings-extensions.js +81 -0
- package/lib/pages/user/user-settings-extensions.js.map +1 -0
- package/lib/pages/user/user-settings-namespace-detail.d.ts +25 -0
- package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -0
- package/lib/pages/user/user-settings-namespace-detail.js +105 -0
- package/lib/pages/user/user-settings-namespace-detail.js.map +1 -0
- package/lib/pages/user/user-settings-namespaces.d.ts +12 -0
- package/lib/pages/user/user-settings-namespaces.d.ts.map +1 -0
- package/lib/pages/user/user-settings-namespaces.js +112 -0
- package/lib/pages/user/user-settings-namespaces.js.map +1 -0
- package/lib/pages/user/user-settings-profile.d.ts +17 -0
- package/lib/pages/user/user-settings-profile.d.ts.map +1 -0
- package/lib/pages/user/user-settings-profile.js +79 -0
- package/lib/pages/user/user-settings-profile.js.map +1 -0
- package/lib/pages/user/user-settings-tokens.d.ts +19 -0
- package/lib/pages/user/user-settings-tokens.d.ts.map +1 -0
- package/lib/pages/user/user-settings-tokens.js +153 -0
- package/lib/pages/user/user-settings-tokens.js.map +1 -0
- package/lib/pages/user/user-settings.d.ts +24 -0
- package/lib/pages/user/user-settings.d.ts.map +1 -0
- package/lib/pages/user/user-settings.js +90 -0
- package/lib/pages/user/user-settings.js.map +1 -0
- package/lib/server-request.d.ts +19 -0
- package/lib/server-request.d.ts.map +1 -0
- package/lib/server-request.js +88 -0
- package/lib/server-request.js.map +1 -0
- package/lib/utils.d.ts +44 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +203 -0
- package/lib/utils.js.map +1 -0
- package/package.json +122 -0
- package/src/components/banner.tsx +69 -0
- package/src/components/button-with-progress.tsx +51 -0
- package/src/components/copy-to-clipboard.tsx +49 -0
- package/src/components/delayed-load-indicator.tsx +50 -0
- package/src/components/error-dialog.tsx +96 -0
- package/src/components/hover-popover.tsx +50 -0
- package/src/components/info-dialog.tsx +48 -0
- package/src/components/link-icon.ts +13 -0
- package/src/components/sanitized-markdown.tsx +119 -0
- package/src/components/sidepanel/navigation-item.tsx +54 -0
- package/src/components/sidepanel/sidepanel.tsx +38 -0
- package/src/components/text-divider.tsx +29 -0
- package/src/components/timestamp.tsx +30 -0
- package/src/context.ts +27 -0
- package/src/default/about.tsx +36 -0
- package/src/default/default-app.tsx +75 -0
- package/src/default/login.tsx +43 -0
- package/src/default/menu-content.tsx +252 -0
- package/src/default/openvsx-registry-logo.tsx +29 -0
- package/src/default/page-settings.tsx +135 -0
- package/src/default/server.ts +56 -0
- package/src/default/theme.tsx +58 -0
- package/src/extension-registry-service.ts +605 -0
- package/src/extension-registry-types.ts +260 -0
- package/src/header-menu.tsx +69 -0
- package/src/index.ts +18 -0
- package/src/main.css +26 -0
- package/src/main.tsx +135 -0
- package/src/not-found.tsx +12 -0
- package/src/other-pages.tsx +134 -0
- package/src/page-settings.ts +55 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +91 -0
- package/src/pages/admin-dashboard/extension-admin.tsx +117 -0
- package/src/pages/admin-dashboard/extension-remove-dialog.tsx +96 -0
- package/src/pages/admin-dashboard/extension-version-container.tsx +187 -0
- package/src/pages/admin-dashboard/namespace-admin.tsx +112 -0
- package/src/pages/admin-dashboard/namespace-change-dialog.tsx +132 -0
- package/src/pages/admin-dashboard/namespace-input.tsx +82 -0
- package/src/pages/admin-dashboard/publisher-admin.tsx +86 -0
- package/src/pages/admin-dashboard/publisher-details.tsx +46 -0
- package/src/pages/admin-dashboard/publisher-revoke-dialog.tsx +130 -0
- package/src/pages/admin-dashboard/publisher-revoke-tokens-button.tsx +58 -0
- package/src/pages/admin-dashboard/search-list-container.tsx +39 -0
- package/src/pages/admin-dashboard/welcome.tsx +57 -0
- package/src/pages/extension-detail/extension-detail-changes.tsx +102 -0
- package/src/pages/extension-detail/extension-detail-downloads-menu.tsx +62 -0
- package/src/pages/extension-detail/extension-detail-overview.tsx +395 -0
- package/src/pages/extension-detail/extension-detail-reviews.tsx +176 -0
- package/src/pages/extension-detail/extension-detail.tsx +496 -0
- package/src/pages/extension-detail/extension-rating-star-setter.tsx +44 -0
- package/src/pages/extension-detail/extension-rating-stars.tsx +38 -0
- package/src/pages/extension-detail/extension-review-dialog.tsx +130 -0
- package/src/pages/extension-list/extension-list-container.tsx +106 -0
- package/src/pages/extension-list/extension-list-header.tsx +209 -0
- package/src/pages/extension-list/extension-list-item.tsx +109 -0
- package/src/pages/extension-list/extension-list-searchfield.tsx +91 -0
- package/src/pages/extension-list/extension-list.tsx +166 -0
- package/src/pages/namespace-detail/namespace-detail.tsx +232 -0
- package/src/pages/user/add-namespace-member-dialog.tsx +163 -0
- package/src/pages/user/avatar.tsx +102 -0
- package/src/pages/user/create-namespace-dialog.tsx +117 -0
- package/src/pages/user/generate-token-dialog.tsx +157 -0
- package/src/pages/user/logout.tsx +53 -0
- package/src/pages/user/publish-extension-dialog.tsx +241 -0
- package/src/pages/user/user-extension-list.tsx +45 -0
- package/src/pages/user/user-namespace-details.tsx +631 -0
- package/src/pages/user/user-namespace-extension-list-item.tsx +135 -0
- package/src/pages/user/user-namespace-extension-list.tsx +72 -0
- package/src/pages/user/user-namespace-member-component.tsx +91 -0
- package/src/pages/user/user-namespace-member-list.tsx +113 -0
- package/src/pages/user/user-publisher-agreement.tsx +164 -0
- package/src/pages/user/user-setting-tabs.tsx +47 -0
- package/src/pages/user/user-settings-delete-extension.tsx +81 -0
- package/src/pages/user/user-settings-extensions.tsx +91 -0
- package/src/pages/user/user-settings-namespace-detail.tsx +148 -0
- package/src/pages/user/user-settings-namespaces.tsx +157 -0
- package/src/pages/user/user-settings-profile.tsx +92 -0
- package/src/pages/user/user-settings-tokens.tsx +217 -0
- package/src/pages/user/user-settings.tsx +116 -0
- package/src/server-request.ts +95 -0
- package/src/svg.d.ts +14 -0
- package/src/utils.ts +219 -0
package/lib/utils.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2019 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
export function addQuery(url, queries) {
|
|
11
|
+
const nonEmpty = queries.filter(q => q.value !== undefined);
|
|
12
|
+
if (nonEmpty.length === 0) {
|
|
13
|
+
return url;
|
|
14
|
+
}
|
|
15
|
+
return url + '?' + nonEmpty.map(q => q.key + '=' + encodeURIComponent(q.value)).join('&');
|
|
16
|
+
}
|
|
17
|
+
export function createAbsoluteURL(arr, queries) {
|
|
18
|
+
const url = arr.length === 0 ? '' : arr.reduce((prev, curr) => prev + '/' + curr);
|
|
19
|
+
if (queries && queries.length > 0) {
|
|
20
|
+
return addQuery(url, queries);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return url;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function createRoute(arr, queries) {
|
|
27
|
+
const url = createAbsoluteURL(arr, queries);
|
|
28
|
+
return url.startsWith('/') ? url : '/' + url;
|
|
29
|
+
}
|
|
30
|
+
export function debounce(task, token, delay = 150) {
|
|
31
|
+
clearTimeout(token.timeout);
|
|
32
|
+
token.timeout = window.setTimeout(task, delay);
|
|
33
|
+
}
|
|
34
|
+
export function toLocalTime(timestamp) {
|
|
35
|
+
if (!timestamp) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const date = new Date(timestamp);
|
|
39
|
+
const options = {
|
|
40
|
+
year: 'numeric',
|
|
41
|
+
month: 'numeric',
|
|
42
|
+
day: 'numeric',
|
|
43
|
+
hour: 'numeric',
|
|
44
|
+
minute: 'numeric'
|
|
45
|
+
};
|
|
46
|
+
return new Intl.DateTimeFormat(undefined, options).format(date);
|
|
47
|
+
}
|
|
48
|
+
const msPerMinute = 60 * 1000;
|
|
49
|
+
const msPerHour = msPerMinute * 60;
|
|
50
|
+
const msPerDay = msPerHour * 24;
|
|
51
|
+
const msPerMonth = msPerDay * 30.4;
|
|
52
|
+
const msPerYear = msPerDay * 365;
|
|
53
|
+
export function toRelativeTime(timestamp) {
|
|
54
|
+
if (!timestamp) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const date = new Date(timestamp);
|
|
58
|
+
const elapsed = Date.now() - date.getTime();
|
|
59
|
+
if (elapsed < msPerMinute) {
|
|
60
|
+
return 'now';
|
|
61
|
+
}
|
|
62
|
+
else if (elapsed < msPerHour) {
|
|
63
|
+
const value = Math.round(elapsed / msPerMinute);
|
|
64
|
+
return `${value} minute${value !== 1 ? 's' : ''} ago`;
|
|
65
|
+
}
|
|
66
|
+
else if (elapsed < msPerDay) {
|
|
67
|
+
const value = Math.round(elapsed / msPerHour);
|
|
68
|
+
return `${value} hour${value !== 1 ? 's' : ''} ago`;
|
|
69
|
+
}
|
|
70
|
+
else if (elapsed < msPerMonth) {
|
|
71
|
+
const value = Math.round(elapsed / msPerDay);
|
|
72
|
+
return `${value} day${value !== 1 ? 's' : ''} ago`;
|
|
73
|
+
}
|
|
74
|
+
else if (elapsed < msPerYear) {
|
|
75
|
+
const value = Math.round(elapsed / msPerMonth);
|
|
76
|
+
return `${value} month${value !== 1 ? 's' : ''} ago`;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const value = Math.round(elapsed / msPerYear);
|
|
80
|
+
return `${value} year${value !== 1 ? 's' : ''} ago`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function handleError(err) {
|
|
84
|
+
if (err) {
|
|
85
|
+
console.error(err);
|
|
86
|
+
if (err instanceof Error) {
|
|
87
|
+
if (err.message === 'Failed to fetch'
|
|
88
|
+
|| err.message === 'Unexpected token < in JSON at position 0') {
|
|
89
|
+
return 'Something went wrong while fetching data. Please contact the site administrators.';
|
|
90
|
+
}
|
|
91
|
+
return `An unexpected error occurred: ${err.message}`;
|
|
92
|
+
}
|
|
93
|
+
else if (err.error && err.message) {
|
|
94
|
+
return `${err.error} (${err.message})`;
|
|
95
|
+
}
|
|
96
|
+
else if (err.error) {
|
|
97
|
+
return err.error;
|
|
98
|
+
}
|
|
99
|
+
else if (err.message) {
|
|
100
|
+
return err.message;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return 'An unexpected error occurred.';
|
|
104
|
+
}
|
|
105
|
+
export function setCookie(cookie) {
|
|
106
|
+
let cookieString = `${cookie.key}=${encodeURIComponent(cookie.value)}`;
|
|
107
|
+
if (cookie.path) {
|
|
108
|
+
cookieString += `; path=${cookie.path}`;
|
|
109
|
+
}
|
|
110
|
+
if (cookie.domain) {
|
|
111
|
+
cookieString += `; domain=${cookie.domain}`;
|
|
112
|
+
}
|
|
113
|
+
if (cookie.maxAge) {
|
|
114
|
+
cookieString += `; max-age=${cookie.maxAge}`;
|
|
115
|
+
}
|
|
116
|
+
if (cookie.expires) {
|
|
117
|
+
cookieString += `; expires=${cookie.expires}`;
|
|
118
|
+
}
|
|
119
|
+
if (cookie.secure) {
|
|
120
|
+
cookieString += '; secure';
|
|
121
|
+
}
|
|
122
|
+
if (cookie.samesite) {
|
|
123
|
+
cookieString += `; samesite=${cookie.samesite}`;
|
|
124
|
+
}
|
|
125
|
+
document.cookie = cookieString;
|
|
126
|
+
}
|
|
127
|
+
export function getCookieValueByKey(key) {
|
|
128
|
+
const value = `; ${document.cookie}`;
|
|
129
|
+
const parts = value.split(`; ${key}=`);
|
|
130
|
+
if (parts.length === 2) {
|
|
131
|
+
const value = parts[1].split(';')[0];
|
|
132
|
+
return decodeURIComponent(value);
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
var TargetPlatform;
|
|
137
|
+
(function (TargetPlatform) {
|
|
138
|
+
TargetPlatform.WIN32_IA32 = 'win32-ia32';
|
|
139
|
+
TargetPlatform.WIN32_X64 = 'win32-x64';
|
|
140
|
+
TargetPlatform.WIN32_ARM64 = 'win32-arm64';
|
|
141
|
+
TargetPlatform.LINUX_X64 = 'linux-x64';
|
|
142
|
+
TargetPlatform.LINUX_ARM64 = 'linux-arm64';
|
|
143
|
+
TargetPlatform.LINUX_ARMHF = 'linux-armhf';
|
|
144
|
+
TargetPlatform.ALPINE_X64 = 'alpine-x64';
|
|
145
|
+
TargetPlatform.ALPINE_ARM64 = 'alpine-arm64';
|
|
146
|
+
TargetPlatform.DARWIN_X64 = 'darwin-x64';
|
|
147
|
+
TargetPlatform.DARWIN_ARM64 = 'darwin-arm64';
|
|
148
|
+
TargetPlatform.WEB = 'web';
|
|
149
|
+
TargetPlatform.UNIVERSAL = 'universal';
|
|
150
|
+
})(TargetPlatform || (TargetPlatform = {}));
|
|
151
|
+
export function getTargetPlatforms() {
|
|
152
|
+
return [
|
|
153
|
+
TargetPlatform.WIN32_IA32,
|
|
154
|
+
TargetPlatform.WIN32_X64,
|
|
155
|
+
TargetPlatform.WIN32_ARM64,
|
|
156
|
+
TargetPlatform.LINUX_X64,
|
|
157
|
+
TargetPlatform.LINUX_ARM64,
|
|
158
|
+
TargetPlatform.LINUX_ARMHF,
|
|
159
|
+
TargetPlatform.ALPINE_X64,
|
|
160
|
+
TargetPlatform.ALPINE_ARM64,
|
|
161
|
+
TargetPlatform.DARWIN_X64,
|
|
162
|
+
TargetPlatform.DARWIN_ARM64,
|
|
163
|
+
TargetPlatform.WEB,
|
|
164
|
+
TargetPlatform.UNIVERSAL
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
export function getTargetPlatformDisplayName(targetPlatform) {
|
|
168
|
+
var _a;
|
|
169
|
+
const targetPlatformDisplayNames = new Map([
|
|
170
|
+
[TargetPlatform.UNIVERSAL, 'Universal'],
|
|
171
|
+
[TargetPlatform.WIN32_IA32, 'Windows x86'],
|
|
172
|
+
[TargetPlatform.WIN32_X64, 'Windows x64'],
|
|
173
|
+
[TargetPlatform.WIN32_ARM64, 'Windows ARM'],
|
|
174
|
+
[TargetPlatform.LINUX_X64, 'Linux x64'],
|
|
175
|
+
[TargetPlatform.LINUX_ARM64, 'Linux ARM64'],
|
|
176
|
+
[TargetPlatform.LINUX_ARMHF, 'Linux ARMhf'],
|
|
177
|
+
[TargetPlatform.ALPINE_X64, 'Alpine Linux 64 bit'],
|
|
178
|
+
[TargetPlatform.ALPINE_ARM64, 'Alpine Linux ARM64'],
|
|
179
|
+
[TargetPlatform.DARWIN_X64, 'macOS Intel'],
|
|
180
|
+
[TargetPlatform.DARWIN_ARM64, 'macOS Apple Silicon'],
|
|
181
|
+
[TargetPlatform.WEB, 'Web']
|
|
182
|
+
]);
|
|
183
|
+
return (_a = targetPlatformDisplayNames.get(targetPlatform)) !== null && _a !== void 0 ? _a : '';
|
|
184
|
+
}
|
|
185
|
+
export function getEngineDisplayName(engine) {
|
|
186
|
+
var _a;
|
|
187
|
+
const engineDisplayNames = new Map([
|
|
188
|
+
['vscode', 'VS Code'],
|
|
189
|
+
['node', 'Node.js'],
|
|
190
|
+
['npm', 'npm'],
|
|
191
|
+
['pnpm', 'pnpm'],
|
|
192
|
+
['yarn', 'Yarn'],
|
|
193
|
+
['vsce', 'vsce'],
|
|
194
|
+
['sqlops', 'SQL Operation Studio'],
|
|
195
|
+
['azdata', 'Azure Data Studio'],
|
|
196
|
+
['theiaPlugin', 'Theia Plugin'],
|
|
197
|
+
['opensumi', 'OpenSumi'],
|
|
198
|
+
['nadako.vshaxe', 'nadako.vshaxe'],
|
|
199
|
+
['hbenl.vscode-test-explorer', 'hbenl.vscode-test-explorer'],
|
|
200
|
+
]);
|
|
201
|
+
return (_a = engineDisplayNames.get(engine)) !== null && _a !== void 0 ? _a : '';
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "openvsx-webui-test",
|
|
3
|
+
"version": "0.17.1",
|
|
4
|
+
"description": "User interface for Eclipse Open VSX",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"frontend",
|
|
8
|
+
"vscode",
|
|
9
|
+
"extensions",
|
|
10
|
+
"search"
|
|
11
|
+
],
|
|
12
|
+
"license": "EPL-2.0",
|
|
13
|
+
"homepage": "https://open-vsx.org",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/netomi/openvsx.git",
|
|
17
|
+
"directory": "webui"
|
|
18
|
+
},
|
|
19
|
+
"bugs": "https://github.com/netomi/openvsx/issues",
|
|
20
|
+
"contributors": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Jan Bicker",
|
|
23
|
+
"email": "jan.bicker@typefox.io",
|
|
24
|
+
"url": "https://www.typefox.io"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "Miro Spönemann",
|
|
28
|
+
"email": "miro.spoenemann@typefox.io",
|
|
29
|
+
"url": "https://www.typefox.io"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"files": [
|
|
33
|
+
"lib",
|
|
34
|
+
"src"
|
|
35
|
+
],
|
|
36
|
+
"main": "lib/index",
|
|
37
|
+
"types": "lib/index",
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@emotion/react": "^11.11.1",
|
|
40
|
+
"@emotion/styled": "^11.11.0",
|
|
41
|
+
"@mui/base": "^5.0.0-beta.9",
|
|
42
|
+
"@mui/icons-material": "^5.13.7",
|
|
43
|
+
"@mui/material": "^5.13.7",
|
|
44
|
+
"clipboard-copy": "^4.0.1",
|
|
45
|
+
"clsx": "^1.2.1",
|
|
46
|
+
"dompurify": "^3.0.4",
|
|
47
|
+
"fetch-retry": "^5.0.6",
|
|
48
|
+
"lodash": "^4.17.21",
|
|
49
|
+
"markdown-it": "^13.0.1",
|
|
50
|
+
"markdown-it-anchor": "^8.6.7",
|
|
51
|
+
"prop-types": "^15.8.1",
|
|
52
|
+
"punycode": "^2.3.0",
|
|
53
|
+
"react": "^18.2.0",
|
|
54
|
+
"react-avatar-editor": "^13.0.0",
|
|
55
|
+
"react-dom": "^18.2.0",
|
|
56
|
+
"react-dropzone": "^14.2.3",
|
|
57
|
+
"react-helmet-async": "^1.3.0",
|
|
58
|
+
"react-infinite-scroller": "^1.2.6",
|
|
59
|
+
"react-router": "^6.14.2",
|
|
60
|
+
"react-router-dom": "^6.14.1"
|
|
61
|
+
},
|
|
62
|
+
"resolutions": {
|
|
63
|
+
"@types/react": "^18.2.14",
|
|
64
|
+
"qs": "^6.14.1"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@babel/core": "^7.25.2",
|
|
68
|
+
"@eslint/eslintrc": "^3.2.0",
|
|
69
|
+
"@eslint/js": "^9.15.0",
|
|
70
|
+
"@playwright/test": "^1.55.1",
|
|
71
|
+
"@stylistic/eslint-plugin": "^2.11.0",
|
|
72
|
+
"@types/babel__core": "^7",
|
|
73
|
+
"@types/chai": "^4.3.5",
|
|
74
|
+
"@types/dompurify": "^3.0.2",
|
|
75
|
+
"@types/express": "^4.17.21",
|
|
76
|
+
"@types/lodash": "^4.14.195",
|
|
77
|
+
"@types/markdown-it": "^13.0.1",
|
|
78
|
+
"@types/mocha": "^10.0.9",
|
|
79
|
+
"@types/node": "^20.4.0",
|
|
80
|
+
"@types/prop-types": "^15.7.5",
|
|
81
|
+
"@types/punycode": "^2.1.0",
|
|
82
|
+
"@types/react": "^18.2.14",
|
|
83
|
+
"@types/react-avatar-editor": "^13.0.0",
|
|
84
|
+
"@types/react-dom": "^18.2.6",
|
|
85
|
+
"@types/react-infinite-scroller": "^1.2.3",
|
|
86
|
+
"@types/react-router-dom": "^5.3.3",
|
|
87
|
+
"@types/react-transition-group": "^4.4.6",
|
|
88
|
+
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
89
|
+
"@typescript-eslint/parser": "^8.15.0",
|
|
90
|
+
"chai": "^4.3.7",
|
|
91
|
+
"css-loader": "^6.8.1",
|
|
92
|
+
"eslint": "^9.15.0",
|
|
93
|
+
"eslint-plugin-react": "^7.37.2",
|
|
94
|
+
"express": "^4.21.2",
|
|
95
|
+
"express-rate-limit": "^7.4.0",
|
|
96
|
+
"mocha": "^11.7.5",
|
|
97
|
+
"rimraf": "^6.1.2",
|
|
98
|
+
"source-map-loader": "^4.0.1",
|
|
99
|
+
"style-loader": "^3.3.3",
|
|
100
|
+
"ts-mocha": "^11.1.0",
|
|
101
|
+
"ts-node": "^10.9.2",
|
|
102
|
+
"typescript": "~5.1.6",
|
|
103
|
+
"webpack": "^5.88.1",
|
|
104
|
+
"webpack-cli": "^5.1.4"
|
|
105
|
+
},
|
|
106
|
+
"scripts": {
|
|
107
|
+
"clean": "rimraf lib",
|
|
108
|
+
"build": "tsc -p ./tsconfig.json && tsc -p ./configs/server.tsconfig.json && yarn run lint",
|
|
109
|
+
"test": "ts-mocha --project ./configs/test.tsconfig.json --config ./configs/mocharc.json",
|
|
110
|
+
"smoke-tests": "playwright install && playwright test --config=./configs/playwright.config.ts",
|
|
111
|
+
"lint": "eslint -c ./configs/eslintrc.mjs src",
|
|
112
|
+
"watch": "tsc -w -p ./tsconfig.json --preserveWatchOutput",
|
|
113
|
+
"prepare": "yarn run clean && yarn run build",
|
|
114
|
+
"build:default": "webpack --config ./configs/webpack.config.js --mode production",
|
|
115
|
+
"watch:default": "webpack --config ./configs/webpack.config.js --mode development --watch --progress --color",
|
|
116
|
+
"start:default": "node lib/default/server",
|
|
117
|
+
"copy2server": "cp -rfv static ../server/src/dev/resources/",
|
|
118
|
+
"publish:next": "yarn npm publish --tag next",
|
|
119
|
+
"publish:latest": "yarn npm publish --tag latest"
|
|
120
|
+
},
|
|
121
|
+
"packageManager": "yarn@4.9.1"
|
|
122
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
|
|
11
|
+
import React, { FunctionComponent, PropsWithChildren } from 'react';
|
|
12
|
+
import { Paper, Grid, Button, Collapse } from '@mui/material';
|
|
13
|
+
|
|
14
|
+
export const Banner: FunctionComponent<PropsWithChildren<BannerProps>> = props => {
|
|
15
|
+
const cardColor = props.theme === 'dark' ? '#fff' : '#000';
|
|
16
|
+
const cardBackground = `${props.color}.${props.theme}`;
|
|
17
|
+
return <Collapse in={props.open}>
|
|
18
|
+
<Paper
|
|
19
|
+
elevation={0}
|
|
20
|
+
sx={{
|
|
21
|
+
display: 'block',
|
|
22
|
+
width: '100%',
|
|
23
|
+
mx: 'auto',
|
|
24
|
+
pb: 2, pr: 2, pl: 2, pt: 2,
|
|
25
|
+
color: cardColor,
|
|
26
|
+
bgcolor: cardBackground,
|
|
27
|
+
'& a': {
|
|
28
|
+
color: cardColor,
|
|
29
|
+
fontWeight: 'bold'
|
|
30
|
+
}
|
|
31
|
+
}}
|
|
32
|
+
>
|
|
33
|
+
<Grid
|
|
34
|
+
container
|
|
35
|
+
spacing={2}
|
|
36
|
+
>
|
|
37
|
+
<Grid item xs={12} sm sx={{ alignSelf: 'center' }}>
|
|
38
|
+
{props.children}
|
|
39
|
+
</Grid>
|
|
40
|
+
{
|
|
41
|
+
props.showDismissButton &&
|
|
42
|
+
<Grid item xs={12} sm='auto' sx={{
|
|
43
|
+
whiteSpace: 'nowrap',
|
|
44
|
+
alignSelf: 'center',
|
|
45
|
+
display: 'flex',
|
|
46
|
+
justifyContent: 'center',
|
|
47
|
+
flexBasis: '100%'
|
|
48
|
+
}}>
|
|
49
|
+
<Button
|
|
50
|
+
variant='outlined'
|
|
51
|
+
onClick={props.dismissButtonOnClick}
|
|
52
|
+
>
|
|
53
|
+
{props.dismissButtonLabel ?? 'Close'}
|
|
54
|
+
</Button>
|
|
55
|
+
</Grid>
|
|
56
|
+
}
|
|
57
|
+
</Grid>
|
|
58
|
+
</Paper>
|
|
59
|
+
</Collapse>;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
interface BannerProps {
|
|
63
|
+
open: boolean;
|
|
64
|
+
showDismissButton?: boolean;
|
|
65
|
+
dismissButtonLabel?: string;
|
|
66
|
+
dismissButtonOnClick?: () => void;
|
|
67
|
+
color?: 'info' | 'warning';
|
|
68
|
+
theme?: 'light' | 'dark';
|
|
69
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
|
|
11
|
+
import React, { FunctionComponent, MouseEventHandler, PropsWithChildren } from 'react';
|
|
12
|
+
import { Box, Button, CircularProgress, SxProps, Theme } from '@mui/material';
|
|
13
|
+
|
|
14
|
+
export const ButtonWithProgress: FunctionComponent<PropsWithChildren<ButtonWithProgressProps>> = props => {
|
|
15
|
+
return <Box component='div' sx={[{ position: 'relative' }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}>
|
|
16
|
+
<Button
|
|
17
|
+
variant='contained'
|
|
18
|
+
color='secondary'
|
|
19
|
+
disabled={props.working || props.error}
|
|
20
|
+
autoFocus={props.autoFocus}
|
|
21
|
+
onClick={props.onClick}
|
|
22
|
+
title={props.title}
|
|
23
|
+
disableTouchRipple={true}
|
|
24
|
+
>
|
|
25
|
+
{props.children}
|
|
26
|
+
</Button>
|
|
27
|
+
{ props.working ?
|
|
28
|
+
<CircularProgress
|
|
29
|
+
size={24}
|
|
30
|
+
sx={{
|
|
31
|
+
color: 'secondary.main',
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
top: '50%',
|
|
34
|
+
left: '50%',
|
|
35
|
+
mt: '-12px',
|
|
36
|
+
ml: '-12px'
|
|
37
|
+
}}
|
|
38
|
+
/>
|
|
39
|
+
: null
|
|
40
|
+
}
|
|
41
|
+
</Box>;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export interface ButtonWithProgressProps {
|
|
45
|
+
working: boolean;
|
|
46
|
+
error?: boolean;
|
|
47
|
+
autoFocus?: boolean;
|
|
48
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
49
|
+
title?: string;
|
|
50
|
+
sx?: SxProps<Theme>;
|
|
51
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
import React, { FunctionComponent, ReactElement, useState } from 'react';
|
|
11
|
+
import copy from 'clipboard-copy';
|
|
12
|
+
import { Tooltip, TooltipProps } from '@mui/material';
|
|
13
|
+
|
|
14
|
+
export const CopyToClipboard: FunctionComponent<CopyToClipboardProps> = props => {
|
|
15
|
+
const [showTooltip, setTooltip] = useState<boolean>(false);
|
|
16
|
+
|
|
17
|
+
const handleOnTooltipClose = () => {
|
|
18
|
+
setTooltip(false);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const onCopy = (content: any) => {
|
|
22
|
+
copy(content);
|
|
23
|
+
setTooltip(true);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<Tooltip
|
|
28
|
+
open={showTooltip}
|
|
29
|
+
title={'Copied to clipboard!'}
|
|
30
|
+
leaveDelay={1500}
|
|
31
|
+
onClose={handleOnTooltipClose}
|
|
32
|
+
disableHoverListener
|
|
33
|
+
{...props.tooltipProps ?? {}}
|
|
34
|
+
>
|
|
35
|
+
{
|
|
36
|
+
props.children({ copy: onCopy }) as ReactElement<any>
|
|
37
|
+
}
|
|
38
|
+
</Tooltip>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
interface ChildProps {
|
|
43
|
+
copy: (content: any) => void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface CopyToClipboardProps {
|
|
47
|
+
tooltipProps?: Partial<TooltipProps>;
|
|
48
|
+
children: (props: ChildProps) => ReactElement<any>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
|
|
11
|
+
import React, { FunctionComponent, useState, useRef, useEffect } from 'react';
|
|
12
|
+
import { LinearProgress } from "@mui/material";
|
|
13
|
+
|
|
14
|
+
export const DelayedLoadIndicator: FunctionComponent<DelayedLoadIndicatorProps> = props => {
|
|
15
|
+
const [waiting, setWaiting] = useState<boolean>(false);
|
|
16
|
+
const timeout = useRef<number>();
|
|
17
|
+
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
setDelay();
|
|
20
|
+
return tryClearTimeout;
|
|
21
|
+
}, []);
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setDelay();
|
|
25
|
+
}, [props.loading]);
|
|
26
|
+
|
|
27
|
+
const tryClearTimeout = () => {
|
|
28
|
+
if (timeout.current) {
|
|
29
|
+
clearTimeout(timeout.current);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const setDelay = () => {
|
|
34
|
+
tryClearTimeout();
|
|
35
|
+
if (props.loading) {
|
|
36
|
+
setWaiting(true);
|
|
37
|
+
timeout.current = setTimeout(() => setWaiting(false), props.delay ?? 200);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return props.loading && !waiting
|
|
42
|
+
? <LinearProgress color={props.color ?? 'secondary'}/>
|
|
43
|
+
: null;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export interface DelayedLoadIndicatorProps {
|
|
47
|
+
loading: boolean;
|
|
48
|
+
delay?: number;
|
|
49
|
+
color?: 'primary' | 'secondary';
|
|
50
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
|
|
11
|
+
import React, { FunctionComponent, ReactNode, useContext, useEffect } from 'react';
|
|
12
|
+
import { Dialog, DialogTitle, DialogContent, Button, DialogContentText, DialogActions, Box, Link } from '@mui/material';
|
|
13
|
+
import { MainContext } from '../context';
|
|
14
|
+
import { styled, Theme } from '@mui/material/styles';
|
|
15
|
+
|
|
16
|
+
const ErrorLink = styled(Link)(({ theme }: { theme: Theme }) => ({
|
|
17
|
+
textDecoration: 'underline',
|
|
18
|
+
color: theme.palette.primary.contrastText
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
export const ErrorDialog: FunctionComponent<ErrorDialogProps> = props => {
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
document.addEventListener('keydown', handleEnter);
|
|
25
|
+
return () => document.removeEventListener('keydown', handleEnter);
|
|
26
|
+
}, []);
|
|
27
|
+
|
|
28
|
+
const handleEnter = (event: KeyboardEvent): void => {
|
|
29
|
+
if (event.code === 'Enter') {
|
|
30
|
+
props.handleCloseDialog();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const getContentForCode = (): ReactNode => {
|
|
35
|
+
if (!props.errorCode) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
switch (props.errorCode) {
|
|
40
|
+
case 'eclipse-missing-github-id':
|
|
41
|
+
return <>
|
|
42
|
+
Please fill in the “GitHub Username” field
|
|
43
|
+
in <ErrorLink href='https://accounts.eclipse.org/user/edit' target='_blank'>
|
|
44
|
+
your Eclipse account
|
|
45
|
+
</ErrorLink> and try again.
|
|
46
|
+
</>;
|
|
47
|
+
case 'eclipse-mismatch-github-id':
|
|
48
|
+
return <>
|
|
49
|
+
Please edit the “GitHub Username” field
|
|
50
|
+
in <ErrorLink href='https://accounts.eclipse.org/user/edit' target='_blank'>
|
|
51
|
+
your Eclipse account
|
|
52
|
+
</ErrorLink> or log in with a different GitHub account.
|
|
53
|
+
</>;
|
|
54
|
+
case 'publisher-agreement-problem':
|
|
55
|
+
return <>
|
|
56
|
+
Please contact <ErrorLink href='mailto:webmaster@eclipse.org?subject=Problem%20With%20open-vsx.org%20Publisher%20Agreement' >
|
|
57
|
+
webmaster@eclipse.org
|
|
58
|
+
</ErrorLink> if this problem persists.
|
|
59
|
+
</>;
|
|
60
|
+
default:
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const context = useContext(MainContext);
|
|
66
|
+
const codeContent = getContentForCode();
|
|
67
|
+
return <Dialog
|
|
68
|
+
open={props.isErrorDialogOpen}
|
|
69
|
+
onClose={props.handleCloseDialog} >
|
|
70
|
+
<DialogTitle>Error</DialogTitle>
|
|
71
|
+
<DialogContent>
|
|
72
|
+
<DialogContentText sx={{ color: context.pageSettings.themeType === 'dark' ? '#ff849e' : '#c54a64' }}>
|
|
73
|
+
{props.errorMessage}
|
|
74
|
+
{
|
|
75
|
+
codeContent ?
|
|
76
|
+
<Box mt={2}>
|
|
77
|
+
{codeContent}
|
|
78
|
+
</Box>
|
|
79
|
+
: null
|
|
80
|
+
}
|
|
81
|
+
</DialogContentText>
|
|
82
|
+
</DialogContent>
|
|
83
|
+
<DialogActions>
|
|
84
|
+
<Button onClick={props.handleCloseDialog}>
|
|
85
|
+
Close
|
|
86
|
+
</Button>
|
|
87
|
+
</DialogActions>
|
|
88
|
+
</Dialog>;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export interface ErrorDialogProps {
|
|
92
|
+
errorMessage: string;
|
|
93
|
+
errorCode?: number | string;
|
|
94
|
+
isErrorDialogOpen: boolean;
|
|
95
|
+
handleCloseDialog: () => void;
|
|
96
|
+
}
|