@yadsh/dsh-qa-surface 0.12.0 → 0.14.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/README.md +148 -22
- package/compatibility.json +7 -3
- package/lib/access/capability-catalog.js +22 -6
- package/lib/access/capability-catalog.js.map +1 -1
- package/lib/access/model.js +36 -2
- package/lib/access/model.js.map +1 -1
- package/lib/access/service.js +19 -4
- package/lib/access/service.js.map +1 -1
- package/lib/account-remotes.js +4 -0
- package/lib/account-remotes.js.map +1 -1
- package/lib/accounts/database.js +49 -9
- package/lib/accounts/database.js.map +1 -1
- package/lib/accounts/errors.js.map +1 -1
- package/lib/accounts/file.js.map +1 -1
- package/lib/accounts/store.js +53 -8
- package/lib/accounts/store.js.map +1 -1
- package/lib/admin/permissions.js +6 -0
- package/lib/admin/permissions.js.map +1 -1
- package/lib/admin/quality-store.js +95 -19
- package/lib/admin/quality-store.js.map +1 -1
- package/lib/admin/service.js +432 -52
- package/lib/admin/service.js.map +1 -1
- package/lib/cli.js +24 -4
- package/lib/cli.js.map +1 -1
- package/lib/client/QaAccountsController.js +70 -5
- package/lib/client/QaAccountsController.js.map +1 -1
- package/lib/client/QaConfigController.js.map +1 -1
- package/lib/client/QaSessionController.js +626 -63
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +279 -43
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaSurfaceGuard.js +2 -2
- package/lib/client/QaSurfaceGuard.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +4 -2
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/admin/QaAdmin.js +59 -34
- package/lib/client/admin/QaAdmin.js.map +1 -1
- package/lib/client/admin/pages/Conversations.js +21 -14
- package/lib/client/admin/pages/Conversations.js.map +1 -1
- package/lib/client/admin/pages/ExpertMemory.js +210 -0
- package/lib/client/admin/pages/ExpertMemory.js.map +1 -0
- package/lib/client/admin/pages/Overview.js +5 -5
- package/lib/client/admin/pages/Overview.js.map +1 -1
- package/lib/client/admin/pages/Quality.js +6 -6
- package/lib/client/admin/pages/Quality.js.map +1 -1
- package/lib/client/admin/pages/Review.js +13 -9
- package/lib/client/admin/pages/Review.js.map +1 -1
- package/lib/client/admin/pages/SkillFiles.js +3 -3
- package/lib/client/admin/pages/SkillFiles.js.map +1 -1
- package/lib/client/admin/pages/Users.js +12 -12
- package/lib/client/admin/pages/Users.js.map +1 -1
- package/lib/client/admin/routes.js +4 -0
- package/lib/client/admin/routes.js.map +1 -1
- package/lib/client/admin/shared.js +57 -10
- package/lib/client/admin/shared.js.map +1 -1
- package/lib/client/admin/styles.js +3 -0
- package/lib/client/admin/styles.js.map +1 -1
- package/lib/client/attestation.js +11 -2
- package/lib/client/attestation.js.map +1 -1
- package/lib/client/audit/QaAuditDialog.js +2 -2
- package/lib/client/audit/QaAuditDialog.js.map +1 -1
- package/lib/client/audit/QaAuditRowBadge.js +1 -1
- package/lib/client/audit/QaAuditRowBadge.js.map +1 -1
- package/lib/client/components/Markdown.js +7 -2
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaAgentsDrawer.js +7 -5
- package/lib/client/components/QaAgentsDrawer.js.map +1 -1
- package/lib/client/components/QaApproval.js +2 -2
- package/lib/client/components/QaApproval.js.map +1 -1
- package/lib/client/components/QaAuthGate.js +6 -6
- package/lib/client/components/QaAuthGate.js.map +1 -1
- package/lib/client/components/QaChangelog.js +87 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaComposer.js +9 -6
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaFileAttachment.js +1 -1
- package/lib/client/components/QaFileAttachment.js.map +1 -1
- package/lib/client/components/QaFilesPanel.js +7 -7
- package/lib/client/components/QaFilesPanel.js.map +1 -1
- package/lib/client/components/QaHeader.js +4 -4
- package/lib/client/components/QaHeader.js.map +1 -1
- package/lib/client/components/QaMessage.js +12 -12
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaModal.js +11 -2
- package/lib/client/components/QaModal.js.map +1 -1
- package/lib/client/components/QaQuestions.js +4 -4
- package/lib/client/components/QaQuestions.js.map +1 -1
- package/lib/client/components/QaQueueDock.js +137 -0
- package/lib/client/components/QaQueueDock.js.map +1 -0
- package/lib/client/components/QaRequestQueue.js +22 -0
- package/lib/client/components/QaRequestQueue.js.map +1 -0
- package/lib/client/components/QaRightRail.js +2 -2
- package/lib/client/components/QaRightRail.js.map +1 -1
- package/lib/client/components/QaSidebar.js +66 -6
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/QaSourcesPanel.js +10 -8
- package/lib/client/components/QaSourcesPanel.js.map +1 -1
- package/lib/client/components/QaThemeSwitcher.js +19 -0
- package/lib/client/components/QaThemeSwitcher.js.map +1 -0
- package/lib/client/components/QaTurnNotice.js +40 -0
- package/lib/client/components/QaTurnNotice.js.map +1 -0
- package/lib/client/components/QaTurnRail.js +3 -3
- package/lib/client/components/QaTurnRail.js.map +1 -1
- package/lib/client/components/QaWelcomeNotice.js +2 -6
- package/lib/client/components/QaWelcomeNotice.js.map +1 -1
- package/lib/client/components/QaWidthHandle.js +2 -2
- package/lib/client/components/QaWidthHandle.js.map +1 -1
- package/lib/client/components/QaWorkGroup.js +5 -5
- package/lib/client/components/QaWorkGroup.js.map +1 -1
- package/lib/client/components/QaWorkspaceBrowser.js +10 -10
- package/lib/client/components/QaWorkspaceBrowser.js.map +1 -1
- package/lib/client/components/VariantSwitcher.js +1 -1
- package/lib/client/components/VariantSwitcher.js.map +1 -1
- package/lib/client/failure-copy.js +26 -8
- package/lib/client/failure-copy.js.map +1 -1
- package/lib/client/focus-ring.js +193 -0
- package/lib/client/focus-ring.js.map +1 -0
- package/lib/client/index.js +58 -24
- package/lib/client/index.js.map +1 -1
- package/lib/client/lineage.js +3 -16
- package/lib/client/lineage.js.map +1 -1
- package/lib/client/markdown/CodeBlock.js +2 -2
- package/lib/client/markdown/CodeBlock.js.map +1 -1
- package/lib/client/markdown/blocks.js +118 -31
- package/lib/client/markdown/blocks.js.map +1 -1
- package/lib/client/markdown/math.js +1 -1
- package/lib/client/markdown/math.js.map +1 -1
- package/lib/client/markdown/render.js +32 -12
- package/lib/client/markdown/render.js.map +1 -1
- package/lib/client/markdown/source-chip.js +3 -3
- package/lib/client/markdown/source-chip.js.map +1 -1
- package/lib/client/notifications/notification-dispatcher.js +90 -0
- package/lib/client/notifications/notification-dispatcher.js.map +1 -0
- package/lib/client/notifications/preferences.js +61 -0
- package/lib/client/notifications/preferences.js.map +1 -0
- package/lib/client/notifications/turn-completion-source.js +82 -0
- package/lib/client/notifications/turn-completion-source.js.map +1 -0
- package/lib/client/notifications/use-turn-notifications.js +108 -0
- package/lib/client/notifications/use-turn-notifications.js.map +1 -0
- package/lib/client/panels/PanelHost.js +5 -5
- package/lib/client/panels/PanelHost.js.map +1 -1
- package/lib/client/panels/PanelLauncher.js +2 -2
- package/lib/client/panels/PanelLauncher.js.map +1 -1
- package/lib/client/project-session-state.js +156 -4
- package/lib/client/project-session-state.js.map +1 -1
- package/lib/client/rating-harvest.js +138 -0
- package/lib/client/rating-harvest.js.map +1 -0
- package/lib/client/role/RoleSelector.js +9 -4
- package/lib/client/role/RoleSelector.js.map +1 -1
- package/lib/client/settings/card.js +58 -17
- package/lib/client/settings/card.js.map +1 -1
- package/lib/client/settings/fields.js +11 -10
- package/lib/client/settings/fields.js.map +1 -1
- package/lib/client/settings/format.js +0 -9
- package/lib/client/settings/format.js.map +1 -1
- package/lib/client/settings/sections/access.js +5 -5
- package/lib/client/settings/sections/access.js.map +1 -1
- package/lib/client/settings/sections/accounts.js +10 -10
- package/lib/client/settings/sections/accounts.js.map +1 -1
- package/lib/client/settings/sections/attachments.js +6 -6
- package/lib/client/settings/sections/attachments.js.map +1 -1
- package/lib/client/settings/sections/branding.js +7 -7
- package/lib/client/settings/sections/branding.js.map +1 -1
- package/lib/client/settings/sections/common.js +4 -2
- package/lib/client/settings/sections/common.js.map +1 -1
- package/lib/client/settings/sections/docs.js +4 -3
- package/lib/client/settings/sections/docs.js.map +1 -1
- package/lib/client/settings/sections/embedding.js +2 -2
- package/lib/client/settings/sections/embedding.js.map +1 -1
- package/lib/client/settings/sections/interface.js +12 -12
- package/lib/client/settings/sections/interface.js.map +1 -1
- package/lib/client/settings/sections/lockdown.js +9 -9
- package/lib/client/settings/sections/lockdown.js.map +1 -1
- package/lib/client/settings/sections/notes.js +12 -12
- package/lib/client/settings/sections/notes.js.map +1 -1
- package/lib/client/settings/sections/session.js +15 -12
- package/lib/client/settings/sections/session.js.map +1 -1
- package/lib/client/settings/sections/slash.js +9 -9
- package/lib/client/settings/sections/slash.js.map +1 -1
- package/lib/client/settings/sections/sources.js +26 -26
- package/lib/client/settings/sections/sources.js.map +1 -1
- package/lib/client/settings/sections/status.js +2 -2
- package/lib/client/settings/sections/status.js.map +1 -1
- package/lib/client/settings/styles.js +15 -9
- package/lib/client/settings/styles.js.map +1 -1
- package/lib/client/slash/SlashPalette.js +4 -4
- package/lib/client/slash/SlashPalette.js.map +1 -1
- package/lib/client/styles.js +139 -66
- package/lib/client/styles.js.map +1 -1
- package/lib/client/theme-preference.js +162 -0
- package/lib/client/theme-preference.js.map +1 -0
- package/lib/client/types.js +8 -0
- package/lib/client/types.js.map +1 -1
- package/lib/client/use-session-ui-state.js +7 -5
- package/lib/client/use-session-ui-state.js.map +1 -1
- package/lib/client/user-settings/GeneralSettingsPage.js +6 -6
- package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -1
- package/lib/client/user-settings/IntegrationTokensPage.js +6 -6
- package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -1
- package/lib/client/user-settings/NotificationSettingsPage.js +107 -0
- package/lib/client/user-settings/NotificationSettingsPage.js.map +1 -0
- package/lib/client/user-settings/PasswordSettingsPage.js +1 -1
- package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -1
- package/lib/client/user-settings/ProfileSettingsPage.js +2 -2
- package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -1
- package/lib/client/user-settings/SkillCatalog.js +3 -3
- package/lib/client/user-settings/SkillCatalog.js.map +1 -1
- package/lib/client/user-settings/SkillEditor.js +26 -8
- package/lib/client/user-settings/SkillEditor.js.map +1 -1
- package/lib/client/user-settings/SkillToolPicker.js +3 -3
- package/lib/client/user-settings/SkillToolPicker.js.map +1 -1
- package/lib/client/user-settings/SkillsSettingsPage.js +1 -1
- package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -1
- package/lib/client/user-settings/StartersSettingsPage.js +6 -6
- package/lib/client/user-settings/StartersSettingsPage.js.map +1 -1
- package/lib/client/user-settings/UserSettingsDialog.js +7 -2
- package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
- package/lib/client/user-settings/copy.js +2 -0
- package/lib/client/user-settings/copy.js.map +1 -1
- package/lib/client/user-settings/draft.js +4 -1
- package/lib/client/user-settings/draft.js.map +1 -1
- package/lib/client/user-settings/fields.js +5 -5
- package/lib/client/user-settings/fields.js.map +1 -1
- package/lib/client.js +7483 -2075
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/defaults.js +7 -0
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/lockdown.js +7 -0
- package/lib/config-resolvers/lockdown.js.map +1 -1
- package/lib/config-resolvers/notifications.js +15 -0
- package/lib/config-resolvers/notifications.js.map +1 -0
- package/lib/config-resolvers/session.js +11 -1
- package/lib/config-resolvers/session.js.map +1 -1
- package/lib/config.js +67 -18
- package/lib/config.js.map +1 -1
- package/lib/enforcement/tool-grants.js +6 -6
- package/lib/enforcement/tool-grants.js.map +1 -1
- package/lib/index.js +171 -39
- package/lib/index.js.map +1 -1
- package/lib/integration/answer.js +74 -8
- package/lib/integration/answer.js.map +1 -1
- package/lib/integration/expert-memory.js +39 -0
- package/lib/integration/expert-memory.js.map +1 -0
- package/lib/integration/host-runner.js +26 -14
- package/lib/integration/host-runner.js.map +1 -1
- package/lib/notifications.js +66 -0
- package/lib/notifications.js.map +1 -0
- package/lib/personal-skills/errors.js.map +1 -1
- package/lib/personal-skills/service.js +81 -7
- package/lib/personal-skills/service.js.map +1 -1
- package/lib/prompt-notes.js +2 -10
- package/lib/prompt-notes.js.map +1 -1
- package/lib/provenance/extractors.js +1 -1
- package/lib/provenance/extractors.js.map +1 -1
- package/lib/provenance/host-store.js +5 -1
- package/lib/provenance/host-store.js.map +1 -1
- package/lib/qa-tools/docs-tools.js +64 -11
- package/lib/qa-tools/docs-tools.js.map +1 -1
- package/lib/qa-tools/lifecycle.js +6 -3
- package/lib/qa-tools/lifecycle.js.map +1 -1
- package/lib/request-queue.js +32 -0
- package/lib/request-queue.js.map +1 -0
- package/lib/resolve-config.js +2 -0
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +7 -2
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/settings.js +19 -2
- package/lib/shared/settings.js.map +1 -1
- package/lib/turn-failure-log.js +67 -0
- package/lib/turn-failure-log.js.map +1 -0
- package/lib/typert.host.js +1459 -647
- package/lib/typert.remote-client.d.ts +25 -9
- package/lib/typert.remote-client.js +1356 -636
- package/lib/types/access/capability-catalog.d.ts +20 -4
- package/lib/types/access/model.d.ts +23 -0
- package/lib/types/access/service.d.ts +2 -3
- package/lib/types/account-remotes.d.ts +8 -1
- package/lib/types/accounts/database.d.ts +13 -3
- package/lib/types/accounts/errors.d.ts +9 -1
- package/lib/types/accounts/file.d.ts +12 -0
- package/lib/types/accounts/store.d.ts +30 -2
- package/lib/types/admin/quality-store.d.ts +33 -0
- package/lib/types/admin/service.d.ts +119 -9
- package/lib/types/client/QaAccountsController.d.ts +37 -3
- package/lib/types/client/QaConfigController.d.ts +2 -2
- package/lib/types/client/QaSessionController.d.ts +199 -6
- package/lib/types/client/QaSurface.d.ts +6 -1
- package/lib/types/client/admin/pages/ExpertMemory.d.ts +19 -0
- package/lib/types/client/admin/routes.d.ts +3 -1
- package/lib/types/client/admin/shared.d.ts +20 -1
- package/lib/types/client/components/Markdown.d.ts +8 -1
- package/lib/types/client/components/QaHeader.d.ts +3 -1
- package/lib/types/client/components/QaModal.d.ts +7 -0
- package/lib/types/client/components/QaQueueDock.d.ts +27 -0
- package/lib/types/client/components/QaRequestQueue.d.ts +20 -0
- package/lib/types/client/components/QaThemeSwitcher.d.ts +14 -0
- package/lib/types/client/components/QaTurnNotice.d.ts +55 -0
- package/lib/types/client/focus-ring.d.ts +65 -0
- package/lib/types/client/lineage.d.ts +3 -13
- package/lib/types/client/markdown/blocks.d.ts +30 -2
- package/lib/types/client/markdown/render.d.ts +4 -1
- package/lib/types/client/notifications/notification-dispatcher.d.ts +68 -0
- package/lib/types/client/notifications/preferences.d.ts +44 -0
- package/lib/types/client/notifications/turn-completion-source.d.ts +114 -0
- package/lib/types/client/notifications/use-turn-notifications.d.ts +51 -0
- package/lib/types/client/project-session-state.d.ts +35 -1
- package/lib/types/client/rating-harvest.d.ts +49 -0
- package/lib/types/client/role/RoleSelector.d.ts +7 -1
- package/lib/types/client/settings/card.d.ts +36 -5
- package/lib/types/client/settings/fields.d.ts +24 -0
- package/lib/types/client/settings/format.d.ts +0 -5
- package/lib/types/client/settings/sections/common.d.ts +3 -1
- package/lib/types/client/settings/sections/session.d.ts +2 -1
- package/lib/types/client/settings/styles.d.ts +9 -4
- package/lib/types/client/settings-extensions/user-session.d.ts +1 -1
- package/lib/types/client/theme-preference.d.ts +69 -0
- package/lib/types/client/types.d.ts +36 -5
- package/lib/types/client/use-session-ui-state.d.ts +6 -4
- package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +5 -5
- package/lib/types/client/user-settings/NotificationSettingsPage.d.ts +40 -0
- package/lib/types/client/user-settings/UserSettingsDialog.d.ts +12 -2
- package/lib/types/client/user-settings/draft.d.ts +4 -1
- package/lib/types/client/user-settings/fields.d.ts +7 -0
- package/lib/types/config-resolvers/notifications.d.ts +10 -0
- package/lib/types/config-resolvers/session.d.ts +6 -0
- package/lib/types/config.d.ts +20 -1
- package/lib/types/index.d.ts +70 -10
- package/lib/types/integration/answer.d.ts +27 -0
- package/lib/types/integration/expert-memory.d.ts +49 -0
- package/lib/types/notifications.d.ts +32 -0
- package/lib/types/personal-skills/errors.d.ts +1 -1
- package/lib/types/personal-skills/service.d.ts +6 -0
- package/lib/types/prompt-notes.d.ts +17 -4
- package/lib/types/qa-tools/docs-tools.d.ts +2 -2
- package/lib/types/request-queue.d.ts +32 -0
- package/lib/types/shared/settings.d.ts +19 -2
- package/lib/types/turn-failure-log.d.ts +18 -0
- package/lib/types/types.d.ts +200 -4
- package/package.json +64 -62
- package/scripts/attach-workspace-sessions.mjs +24 -5
- package/scripts/repair-session-events.mjs +25 -5
package/lib/client/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState, useSyncExternalStore } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The palette the surface paints with. The Host owns the same three
|
|
4
|
+
* preferences and applies the one it stores; its settings surface is not
|
|
5
|
+
* reachable from `/qa` — the overlay suppresses the native shell, and the
|
|
6
|
+
* kiosk never mounts it — so the QA page carries its own choice.
|
|
7
|
+
*
|
|
8
|
+
* The choice is browser-local on purpose: it is written to this deployment's
|
|
9
|
+
* localStorage namespace, never to the Host user-settings document, because a
|
|
10
|
+
* stand is shared by everyone who opens it and one visitor's eyes are not a
|
|
11
|
+
* deployment setting.
|
|
12
|
+
*/
|
|
13
|
+
/** The preferences the control offers — the same vocabulary the Host uses. */
|
|
14
|
+
export const QA_THEME_PREFERENCES = ["light", "dark", "system"];
|
|
15
|
+
/** Body attribute that selects the dark palette in the Host token sheet. */
|
|
16
|
+
export const QA_DARK_THEME_ATTRIBUTE = "data-ds-dark-theme";
|
|
17
|
+
function isQaThemePreference(value) {
|
|
18
|
+
return QA_THEME_PREFERENCES.some((preference) => preference === value);
|
|
19
|
+
}
|
|
20
|
+
/** `light`/`dark` are themselves; `system` is whatever the OS asks for. */
|
|
21
|
+
export function resolveQaThemeScheme(preference, systemDark) {
|
|
22
|
+
if (preference === "system")
|
|
23
|
+
return systemDark ? "dark" : "light";
|
|
24
|
+
return preference;
|
|
25
|
+
}
|
|
26
|
+
/** The stored choice, or null when this browser never picked one. */
|
|
27
|
+
export function readQaThemePreference(storage, key) {
|
|
28
|
+
try {
|
|
29
|
+
const raw = storage.getItem(key);
|
|
30
|
+
return isQaThemePreference(raw) ? raw : null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function writeQaThemePreference(storage, key, preference) {
|
|
37
|
+
try {
|
|
38
|
+
storage.setItem(key, preference);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Denied durable storage only costs persistence across reloads.
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* What the control shows while this browser has no choice of its own: the
|
|
46
|
+
* palette the document is already painted with, read through the Host's own
|
|
47
|
+
* contract. The Host publishes its *preference* nowhere in the DOM — only the
|
|
48
|
+
* resolved palette — so an untouched stand is reported as the palette it
|
|
49
|
+
* shows, never as a preference this browser did not pick.
|
|
50
|
+
*/
|
|
51
|
+
export function readQaThemeScheme(target) {
|
|
52
|
+
return target.body.hasAttribute(QA_DARK_THEME_ATTRIBUTE) ? "dark" : "light";
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Project one preference onto the document, writing exactly the two fields the
|
|
56
|
+
* Host's own presenter owns for the same choice: the native-chrome scheme on
|
|
57
|
+
* the root and the palette attribute on the body. Nothing else — the font-size
|
|
58
|
+
* axis and the theme token overrides stay the Host's.
|
|
59
|
+
*/
|
|
60
|
+
export function applyQaThemePreference(target, preference, systemDark) {
|
|
61
|
+
const scheme = resolveQaThemeScheme(preference, systemDark);
|
|
62
|
+
target.documentElement.style.colorScheme = scheme;
|
|
63
|
+
if (scheme === "dark")
|
|
64
|
+
target.body.setAttribute(QA_DARK_THEME_ATTRIBUTE, "");
|
|
65
|
+
else
|
|
66
|
+
target.body.removeAttribute(QA_DARK_THEME_ATTRIBUTE);
|
|
67
|
+
}
|
|
68
|
+
function readSystemDarkScheme() {
|
|
69
|
+
if (typeof matchMedia !== "function")
|
|
70
|
+
return false;
|
|
71
|
+
return matchMedia("(prefers-color-scheme: dark)").matches;
|
|
72
|
+
}
|
|
73
|
+
function readQaThemePaintState(target) {
|
|
74
|
+
return {
|
|
75
|
+
scheme: target.documentElement.style.colorScheme,
|
|
76
|
+
dark: target.body.hasAttribute(QA_DARK_THEME_ATTRIBUTE),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Put one of these back verbatim. Unlike `applyQaThemePreference` it carries the
|
|
81
|
+
* empty `color-scheme` a browser that never chose leaves behind, so restoring is
|
|
82
|
+
* not the same as painting `light`.
|
|
83
|
+
*/
|
|
84
|
+
function writeQaThemePaintState(target, state) {
|
|
85
|
+
target.documentElement.style.colorScheme = state.scheme;
|
|
86
|
+
if (state.dark)
|
|
87
|
+
target.body.setAttribute(QA_DARK_THEME_ATTRIBUTE, "");
|
|
88
|
+
else
|
|
89
|
+
target.body.removeAttribute(QA_DARK_THEME_ATTRIBUTE);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The painted palette as an external store. Reading it during the render would
|
|
93
|
+
* report the palette the document wore the last time React rendered this
|
|
94
|
+
* component, and nothing re-renders it when the Host repaints underneath; the
|
|
95
|
+
* control would then name a theme the visitor is not looking at.
|
|
96
|
+
*/
|
|
97
|
+
function subscribeQaThemeScheme(onChange) {
|
|
98
|
+
const observer = new MutationObserver(onChange);
|
|
99
|
+
observer.observe(document.body, {
|
|
100
|
+
attributes: true,
|
|
101
|
+
attributeFilter: [QA_DARK_THEME_ATTRIBUTE],
|
|
102
|
+
});
|
|
103
|
+
return () => {
|
|
104
|
+
observer.disconnect();
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function getQaThemeSchemeSnapshot() {
|
|
108
|
+
return readQaThemeScheme(document);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Own the palette for as long as the surface is what the visitor sees, and only
|
|
112
|
+
* for as long as this browser actually asked for one: an explicit choice is
|
|
113
|
+
* written to storage and projected onto the document, `system` keeps answering
|
|
114
|
+
* the OS, and a visitor who never touches the control leaves the Host's own
|
|
115
|
+
* palette in force — the surface writes nothing at all in that case.
|
|
116
|
+
*/
|
|
117
|
+
export function useQaThemePreference({ active, storage, storageKey, }) {
|
|
118
|
+
const [stored, setStored] = useState(() => readQaThemePreference(storage, storageKey));
|
|
119
|
+
const [systemDark, setSystemDark] = useState(readSystemDarkScheme);
|
|
120
|
+
useEffect(() => {
|
|
121
|
+
if (typeof matchMedia !== "function")
|
|
122
|
+
return;
|
|
123
|
+
const query = matchMedia("(prefers-color-scheme: dark)");
|
|
124
|
+
const onChange = () => {
|
|
125
|
+
setSystemDark(query.matches);
|
|
126
|
+
};
|
|
127
|
+
onChange();
|
|
128
|
+
query.addEventListener("change", onChange);
|
|
129
|
+
return () => {
|
|
130
|
+
query.removeEventListener("change", onChange);
|
|
131
|
+
};
|
|
132
|
+
}, []);
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
if (!active || stored === null)
|
|
135
|
+
return;
|
|
136
|
+
// The surface borrows the document rather than owning it: the palette it
|
|
137
|
+
// finds here is the one the Host put on the page, and leaving `/qa` — the
|
|
138
|
+
// route going inactive, or the overlay unmounting altogether — has to hand
|
|
139
|
+
// it back, because off its own route this control is not even on screen to
|
|
140
|
+
// take the choice back off. `QaSurfaceGuard` keeps the same contract for the
|
|
141
|
+
// body mask and the host's own icons. The snapshot is retaken on every run,
|
|
142
|
+
// so a Host repaint between two of them is a repaint the restore returns to,
|
|
143
|
+
// not one it overwrites.
|
|
144
|
+
const worn = readQaThemePaintState(document);
|
|
145
|
+
applyQaThemePreference(document, stored, systemDark);
|
|
146
|
+
return () => {
|
|
147
|
+
writeQaThemePaintState(document, worn);
|
|
148
|
+
};
|
|
149
|
+
}, [active, stored, systemDark]);
|
|
150
|
+
const select = useCallback((next) => {
|
|
151
|
+
writeQaThemePreference(storage, storageKey, next);
|
|
152
|
+
setStored(next);
|
|
153
|
+
}, [storage, storageKey]);
|
|
154
|
+
const painted = useSyncExternalStore(subscribeQaThemeScheme, getQaThemeSchemeSnapshot);
|
|
155
|
+
return {
|
|
156
|
+
// With no choice of its own, this browser reports what the document is
|
|
157
|
+
// already painted with rather than claiming a preference nobody picked.
|
|
158
|
+
preference: stored ?? painted,
|
|
159
|
+
select,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=theme-preference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-preference.js","sourceRoot":"","sources":["../../src/client/theme-preference.ts"],"names":[],"mappings":"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"}
|
package/lib/client/types.js
CHANGED
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
export const QA_SESSION_IDLE_STATE = Object.freeze({
|
|
3
3
|
phase: "idle",
|
|
4
4
|
sessionId: null,
|
|
5
|
+
// Reserved for "no chat": the controller's chat identities come from a
|
|
6
|
+
// sequence that starts at 1, so this snapshot never collides with one.
|
|
7
|
+
chatKey: 0,
|
|
5
8
|
messages: Object.freeze([]),
|
|
6
9
|
pendingMessage: null,
|
|
7
10
|
error: null,
|
|
8
11
|
compatibilityReadOnly: false,
|
|
9
12
|
canSend: false,
|
|
10
13
|
canStop: false,
|
|
14
|
+
queue: Object.freeze([]),
|
|
15
|
+
canEditQueue: false,
|
|
11
16
|
chatsRevision: 0,
|
|
12
17
|
sources: Object.freeze([]),
|
|
13
18
|
sourcesComplete: true,
|
|
@@ -15,6 +20,9 @@ export const QA_SESSION_IDLE_STATE = Object.freeze({
|
|
|
15
20
|
viewingSubagent: null,
|
|
16
21
|
approvals: Object.freeze([]),
|
|
17
22
|
questions: Object.freeze([]),
|
|
23
|
+
// No send was held back: the ceiling only speaks when a question reaches for
|
|
24
|
+
// a place that is already taken.
|
|
25
|
+
requestQueue: null,
|
|
18
26
|
// Idle means no chat, so there is nothing for a slash line to act on; the
|
|
19
27
|
// controller fills this in once a session binds.
|
|
20
28
|
slash: Object.freeze({
|
package/lib/client/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAisBA,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAmB,MAAM,CAAC,MAAM,CAAC;IACjE,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,IAAI;IACf,uEAAuE;IACvE,uEAAuE;IACvE,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3B,cAAc,EAAE,IAAI;IACpB,KAAK,EAAE,IAAI;IACX,qBAAqB,EAAE,KAAK;IAC5B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACxB,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,eAAe,EAAE,IAAI;IACrB,uBAAuB,EAAE,SAAS;IAClC,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5B,6EAA6E;IAC7E,iCAAiC;IACjC,YAAY,EAAE,IAAI;IAClB,0EAA0E;IAC1E,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,cAAc,EAAE,aAAa;QAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC;KACV,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -2,11 +2,13 @@ import { useCallback, useEffect, useRef, useState, } from "react";
|
|
|
2
2
|
import { revokeObjectUrlIfBlob } from "./session-assets.js";
|
|
3
3
|
/**
|
|
4
4
|
* Per-chat UI state: composer attachments, variant offsets, the rail mark and
|
|
5
|
-
* the drawers. Everything here describes the chat it was made in, so a
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* the drawers. Everything here describes the chat it was made in, so a chat
|
|
6
|
+
* change clears it instead of leaking a draft, an attachment or a drawer from
|
|
7
|
+
* one conversation into the next. The key is the surface's chat identity, not
|
|
8
|
+
* the session id: a new chat only creates its session on the first prompt, and
|
|
9
|
+
* the attachments of that prompt must survive the hand-off.
|
|
8
10
|
*/
|
|
9
|
-
export function useSessionUiState(
|
|
11
|
+
export function useSessionUiState(chatKey) {
|
|
10
12
|
/** Per group: how many answers back from the newest is shown (0 = newest). */
|
|
11
13
|
const [variantOffsets, setVariantOffsets] = useState({});
|
|
12
14
|
const [activeTurn, setActiveTurn] = useState(null);
|
|
@@ -43,7 +45,7 @@ export function useSessionUiState(sessionId) {
|
|
|
43
45
|
setDrawerCompleteness(null);
|
|
44
46
|
setDrawerDetail(null);
|
|
45
47
|
setPendingAttachments([]);
|
|
46
|
-
}, [
|
|
48
|
+
}, [chatKey, setPendingAttachments]);
|
|
47
49
|
// Whatever is still attached dies with the surface, and its URLs with it.
|
|
48
50
|
useEffect(() => () => {
|
|
49
51
|
for (const draft of pendingAttachmentsRef.current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-session-ui-state.js","sourceRoot":"","sources":["../../src/client/use-session-ui-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAwC5D
|
|
1
|
+
{"version":3,"file":"use-session-ui-state.js","sourceRoot":"","sources":["../../src/client/use-session-ui-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { QaSettingsSection } from "./fields.js";
|
|
3
3
|
/**
|
|
4
4
|
* Placeholder with a purpose: the section exists so the dialog has a home for
|
|
5
|
-
* the user-scoped preferences that follow (
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* the user-scoped preferences that follow (privacy), and so the thing it must
|
|
6
|
+
* not become is written down — deployment and chat policy live in the Host
|
|
7
|
+
* settings, not here. It shows the account facts a user can act on today and
|
|
8
|
+
* nothing invented, and it names only what is still missing: a preference that
|
|
9
|
+
* already has its own tab does not belong on this list.
|
|
10
10
|
*/
|
|
11
11
|
export function QaGeneralSettingsPage(props) {
|
|
12
|
-
return (_jsxs("div", { className: "dsh-qa-settings__page", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", children: "\u041E\u0431\u0449\u0438\u0435" }), _jsx("p", { className: "dsh-qa-settings__lead", children: "\u0412\u0430\u0448\u0438 \u043B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438. \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0430\u043C\u043E\u0433\u043E \u0441\u0442\u0435\u043D\u0434\u0430 \u2014 \u0441\u043E\u0441\u0442\u0430\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432, \u043C\u043E\u0434\u0435\u043B\u044C \u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u2014 \u0437\u0430\u0434\u0430\u0451\u0442 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440." }), _jsx(QaSettingsSection, { title: "\u0410\u043A\u043A\u0430\u0443\u043D\u0442", children: _jsxs("dl", { className: "dsh-qa-settings__facts", children: [_jsxs("div", { className: "dsh-qa-settings__fact", children: [_jsx("dt", { children: "Email" }), _jsx("dd", { children: props.email })] }), _jsxs("div", { className: "dsh-qa-settings__fact", children: [_jsx("dt", { children: "\u0420\u043E\u043B\u044C" }), _jsx("dd", { children: props.role })] }), _jsxs("div", { className: "dsh-qa-settings__fact", children: [_jsx("dt", { children: "\u0412\u0430\u0448\u0438 \u0447\u0430\u0442\u044B" }), _jsx("dd", { children: props.chatCount })] })] }) }), _jsx(QaSettingsSection, { title: "\u0421\u043A\u043E\u0440\u043E \u0437\u0434\u0435\u0441\u044C", children:
|
|
12
|
+
return (_jsxs("div", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-general", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-general-title", children: "\u041E\u0431\u0449\u0438\u0435" }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-general-lead", children: "\u0412\u0430\u0448\u0438 \u043B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438. \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0430\u043C\u043E\u0433\u043E \u0441\u0442\u0435\u043D\u0434\u0430 \u2014 \u0441\u043E\u0441\u0442\u0430\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432, \u043C\u043E\u0434\u0435\u043B\u044C \u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u2014 \u0437\u0430\u0434\u0430\u0451\u0442 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440." }), _jsx(QaSettingsSection, { testId: "qa-settings-general-account", title: "\u0410\u043A\u043A\u0430\u0443\u043D\u0442", children: _jsxs("dl", { className: "dsh-qa-settings__facts", "data-testid": "qa-settings-general-facts", children: [_jsxs("div", { className: "dsh-qa-settings__fact", "data-testid": "qa-settings-general-fact-email", children: [_jsx("dt", { children: "Email" }), _jsx("dd", { children: props.email })] }), _jsxs("div", { className: "dsh-qa-settings__fact", "data-testid": "qa-settings-general-fact-role", children: [_jsx("dt", { children: "\u0420\u043E\u043B\u044C" }), _jsx("dd", { children: props.role })] }), _jsxs("div", { className: "dsh-qa-settings__fact", "data-testid": "qa-settings-general-fact-chats", children: [_jsx("dt", { children: "\u0412\u0430\u0448\u0438 \u0447\u0430\u0442\u044B" }), _jsx("dd", { children: props.chatCount })] })] }) }), _jsx(QaSettingsSection, { testId: "qa-settings-general-upcoming", title: "\u0421\u043A\u043E\u0440\u043E \u0437\u0434\u0435\u0441\u044C", children: _jsx("ul", { className: "dsh-qa-settings__list", "data-testid": "qa-settings-general-upcoming-list", children: _jsx("li", { children: "\u041F\u0440\u0438\u0432\u0430\u0442\u043D\u043E\u0441\u0442\u044C \u0438 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0445" }) }) })] }));
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=GeneralSettingsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneralSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/GeneralSettingsPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"GeneralSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/GeneralSettingsPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,iBAAa,qBAAqB,aACtE,aACE,SAAS,EAAC,6BAA6B,iBAC3B,2BAA2B,+CAGpC,EACL,YACE,SAAS,EAAC,uBAAuB,iBACrB,0BAA0B,2nBAIpC,EACJ,KAAC,iBAAiB,IAAC,MAAM,EAAC,6BAA6B,EAAC,KAAK,EAAC,4CAAS,YACrE,cACE,SAAS,EAAC,wBAAwB,iBACtB,2BAA2B,aAEvC,eACE,SAAS,EAAC,uBAAuB,iBACrB,gCAAgC,aAE5C,iCAAc,EACd,uBAAK,KAAK,CAAC,KAAK,GAAM,IAClB,EACN,eACE,SAAS,EAAC,uBAAuB,iBACrB,+BAA+B,aAE3C,oDAAa,EACb,uBAAK,KAAK,CAAC,IAAI,GAAM,IACjB,EACN,eACE,SAAS,EAAC,uBAAuB,iBACrB,gCAAgC,aAE5C,6EAAkB,EAClB,uBAAK,KAAK,CAAC,SAAS,GAAM,IACtB,IACH,GACa,EACpB,KAAC,iBAAiB,IAChB,MAAM,EAAC,8BAA8B,EACrC,KAAK,EAAC,+DAAa,YAEnB,aACE,SAAS,EAAC,uBAAuB,iBACrB,mCAAmC,YAE/C,2LAAsC,GACnC,GACa,IAChB,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -130,21 +130,21 @@ export function QaIntegrationTokensPage(props) {
|
|
|
130
130
|
void clipboard.writeText(secret).then(() => setCopied(true), () => undefined);
|
|
131
131
|
};
|
|
132
132
|
const now = Date.now();
|
|
133
|
-
return (_jsxs("div", { className: "dsh-qa-settings__page", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B" }), _jsx("p", { className: "dsh-qa-settings__lead", children: "\u0422\u043E\u043A\u0435\u043D \u2014 \u044D\u0442\u043E \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B: \u043E\u043D\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0412\u044B\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u0442\u043E\u043A\u0435\u043D \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043E\u0442\u0437\u044B\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0430 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430. \u0422\u043E\u043A\u0435\u043D \u043F\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043C\u0435\u043D\u0443 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0430\u0440\u043E\u043B\u044F, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u0442\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E." }), issued === null ? null : (_jsxs(QaSettingsSection, { title: "\u0422\u043E\u043A\u0435\u043D \u0441\u043E\u0437\u0434\u0430\u043D", children: [_jsx(QaSettingsNotice, { tone: "warn", children: "\u0421\u043A\u043E\u043F\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0435\u0433\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435\u043B\u044C\u0437\u044F: \u043D\u0430 \u0441\u0442\u0435\u043D\u0434\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442\u043F\u0435\u0447\u0430\u0442\u043E\u043A." }), _jsx(QaSettingsField, { label: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0442\u043E\u043A\u0435\u043D\u0430", hint: "\u041F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u043A\u0430\u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A Authorization: Bearer \u2026", children: _jsx("input", { className: "dsh-qa-settings__code", value: issued.token, readOnly: true, onFocus: (event) => event.currentTarget.select() }) }), _jsxs(QaSettingsActions, { children: [_jsx(QaSettingsButton, { label: copied ? "Скопировано" : "Скопировать", onClick: () => copySecret(issued.token) }), _jsx(QaSettingsButton, { tone: "primary", label: "\u042F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043B \u0442\u043E\u043A\u0435\u043D", onClick: () => {
|
|
133
|
+
return (_jsxs("div", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-tokens-title", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B" }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-tokens-lead", children: "\u0422\u043E\u043A\u0435\u043D \u2014 \u044D\u0442\u043E \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B: \u043E\u043D\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0412\u044B\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u0442\u043E\u043A\u0435\u043D \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043E\u0442\u0437\u044B\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0430 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430. \u0422\u043E\u043A\u0435\u043D \u043F\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043C\u0435\u043D\u0443 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0430\u0440\u043E\u043B\u044F, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u0442\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E." }), issued === null ? null : (_jsxs(QaSettingsSection, { testId: "qa-settings-tokens-issued", title: "\u0422\u043E\u043A\u0435\u043D \u0441\u043E\u0437\u0434\u0430\u043D", children: [_jsx(QaSettingsNotice, { tone: "warn", testId: "qa-settings-tokens-issued-notice", children: "\u0421\u043A\u043E\u043F\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0435\u0433\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435\u043B\u044C\u0437\u044F: \u043D\u0430 \u0441\u0442\u0435\u043D\u0434\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442\u043F\u0435\u0447\u0430\u0442\u043E\u043A." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-secret", label: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0442\u043E\u043A\u0435\u043D\u0430", hint: "\u041F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u043A\u0430\u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A Authorization: Bearer \u2026", children: _jsx("input", { className: "dsh-qa-settings__code", value: issued.token, readOnly: true, onFocus: (event) => event.currentTarget.select() }) }), _jsxs(QaSettingsActions, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-copy", label: copied ? "Скопировано" : "Скопировать", onClick: () => copySecret(issued.token) }), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-ack", tone: "primary", label: "\u042F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043B \u0442\u043E\u043A\u0435\u043D", onClick: () => {
|
|
134
134
|
setIssued(null);
|
|
135
135
|
setCopied(false);
|
|
136
|
-
} })] })] })), _jsx(QaSettingsSection, { title: "\u041D\u043E\u0432\u044B\u0439 \u0442\u043E\u043A\u0435\u043D", children: props.api.canCreate ? (_jsxs("form", { className: "dsh-qa-settings__page", onSubmit: submit, children: [_jsx(QaSettingsField, { label: "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", hint: "\u041F\u043E \u043D\u0435\u043C\u0443 \u0432\u044B \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u0432 \u0441\u043F\u0438\u0441\u043A\u0435: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u00AB\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A\u00BB.", children: _jsx("input", { value: label, maxLength: QA_SERVICE_TOKEN_LABEL_MAX, placeholder: "\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A", onChange: (event) => setLabel(event.currentTarget.value) }) }), QA_SERVICE_TOKEN_SCOPES.map((scope) => (_jsx("div", { className: "dsh-qa-settings__toggle-row", children: _jsxs("label", { className: "dsh-qa-settings__toggle", children: [_jsx("input", { type: "checkbox", checked: scopes.includes(scope), onChange: (event) => toggleScope(scope, event.currentTarget.checked) }), _jsx("span", { className: "dsh-qa-settings__toggle-label", children: SCOPE_LABELS[scope] })] }) }, scope))), _jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u041F\u0440\u0430\u0432\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0442 \u0442\u043E\u043A\u0435\u043D, \u043D\u043E \u043D\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u044E\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438: \u0442\u043E\u043A\u0435\u043D \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B." }), _jsx(QaSettingsField, { label: "\u0421\u0440\u043E\u043A, \u0434\u043D\u0435\u0439", hint: `От ${String(QA_SERVICE_TOKEN_TTL_DAYS_MIN)} до ${String(QA_SERVICE_TOKEN_TTL_DAYS_MAX)}; по умолчанию — срок вашей сессии.`, children: _jsx("select", { value: days, onChange: (event) => setDays(Number(event.currentTarget.value)), children: TTL_CHOICES.map((choice) => (_jsx("option", { value: choice, children: choice }, choice))) }) }), _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { type: "submit", tone: "primary", disabled: busy, label: busy ? "Создание…" : "Создать токен" }) })] })) : (_jsx(QaSettingsNotice, { tone: "info", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 API \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u043E\u043A\u0430 \u043D\u0435 \u0434\u043B\u044F \u0447\u0435\u0433\u043E. \u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u043D\u0435\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043D\u0438\u0436\u0435 \u2014 \u0438\u0445 \u043C\u043E\u0436\u043D\u043E \u043E\u0442\u043E\u0437\u0432\u0430\u0442\u044C." })) }), _jsxs(QaSettingsSection, { title: "\u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B", children: [error === null ? null : (_jsx(QaSettingsNotice, { tone: "error", children: error })), loading ? (_jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026" })) : tokens.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u0423 \u0432\u0430\u0441 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432." })) : (_jsx("ul", { className: "dsh-qa-settings__rows", children: tokens.map((token) => {
|
|
136
|
+
} })] })] })), _jsx(QaSettingsSection, { testId: "qa-settings-tokens-new", title: "\u041D\u043E\u0432\u044B\u0439 \u0442\u043E\u043A\u0435\u043D", children: props.api.canCreate ? (_jsxs("form", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens-create-form", onSubmit: submit, children: [_jsx(QaSettingsField, { testId: "qa-settings-tokens-label", label: "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", hint: "\u041F\u043E \u043D\u0435\u043C\u0443 \u0432\u044B \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u0432 \u0441\u043F\u0438\u0441\u043A\u0435: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u00AB\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A\u00BB.", children: _jsx("input", { value: label, maxLength: QA_SERVICE_TOKEN_LABEL_MAX, placeholder: "\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A", onChange: (event) => setLabel(event.currentTarget.value) }) }), QA_SERVICE_TOKEN_SCOPES.map((scope) => (_jsx("div", { className: "dsh-qa-settings__toggle-row", "data-testid": "qa-settings-tokens-scope", children: _jsxs("label", { className: "dsh-qa-settings__toggle", children: [_jsx("input", { type: "checkbox", "data-testid": "qa-settings-tokens-scope-input", checked: scopes.includes(scope), onChange: (event) => toggleScope(scope, event.currentTarget.checked) }), _jsx("span", { className: "dsh-qa-settings__toggle-label", "data-testid": "qa-settings-tokens-scope-label", children: SCOPE_LABELS[scope] })] }) }, scope))), _jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-scopes-hint", children: "\u041F\u0440\u0430\u0432\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0442 \u0442\u043E\u043A\u0435\u043D, \u043D\u043E \u043D\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u044E\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438: \u0442\u043E\u043A\u0435\u043D \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-ttl", label: "\u0421\u0440\u043E\u043A, \u0434\u043D\u0435\u0439", hint: `От ${String(QA_SERVICE_TOKEN_TTL_DAYS_MIN)} до ${String(QA_SERVICE_TOKEN_TTL_DAYS_MAX)}; по умолчанию — срок вашей сессии.`, children: _jsx("select", { value: days, onChange: (event) => setDays(Number(event.currentTarget.value)), children: TTL_CHOICES.map((choice) => (_jsx("option", { value: choice, children: choice }, choice))) }) }), _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { testId: "qa-settings-tokens-create", type: "submit", tone: "primary", disabled: busy, label: busy ? "Создание…" : "Создать токен" }) })] })) : (_jsx(QaSettingsNotice, { tone: "info", testId: "qa-settings-tokens-api-off", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 API \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u043E\u043A\u0430 \u043D\u0435 \u0434\u043B\u044F \u0447\u0435\u0433\u043E. \u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u043D\u0435\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043D\u0438\u0436\u0435 \u2014 \u0438\u0445 \u043C\u043E\u0436\u043D\u043E \u043E\u0442\u043E\u0437\u0432\u0430\u0442\u044C." })) }), _jsxs(QaSettingsSection, { testId: "qa-settings-tokens-list", title: "\u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B", children: [error === null ? null : (_jsx(QaSettingsNotice, { tone: "error", testId: "qa-settings-tokens-error", children: error })), loading ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-loading", children: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026" })) : tokens.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-empty", children: "\u0423 \u0432\u0430\u0441 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432." })) : (_jsx("ul", { className: "dsh-qa-settings__rows", "data-testid": "qa-settings-tokens-rows", children: tokens.map((token) => {
|
|
137
137
|
const state = tokenState(token, now);
|
|
138
138
|
const confirming = pendingRevoke === token.id;
|
|
139
|
-
return (_jsx("li", { className: "dsh-qa-settings__row", children: _jsxs("div", { className: "dsh-qa-settings__row-button", children: [_jsx("span", { className: "dsh-qa-settings__row-title", children: token.label }), _jsx("span", { className: "dsh-qa-settings__row-description", children: scopeLabels(token.scopes) }), _jsxs("span", { className: "dsh-qa-settings__row-meta", children: ["\u0441\u043E\u0437\u0434\u0430\u043D ", day(token.createdAt), " \u00B7 \u0434\u043E ", day(token.expiresAt), " ", "\u00B7 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0439: ", token.useCount, token.lastUsedAt === null
|
|
139
|
+
return (_jsx("li", { className: "dsh-qa-settings__row", "data-testid": "qa-settings-tokens-row", children: _jsxs("div", { className: "dsh-qa-settings__row-button", "data-testid": "qa-settings-tokens-row-body", children: [_jsx("span", { className: "dsh-qa-settings__row-title", "data-testid": "qa-settings-tokens-row-title", children: token.label }), _jsx("span", { className: "dsh-qa-settings__row-description", "data-testid": "qa-settings-tokens-row-scopes", children: scopeLabels(token.scopes) }), _jsxs("span", { className: "dsh-qa-settings__row-meta", "data-testid": "qa-settings-tokens-row-meta", children: ["\u0441\u043E\u0437\u0434\u0430\u043D ", day(token.createdAt), " \u00B7 \u0434\u043E ", day(token.expiresAt), " ", "\u00B7 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0439: ", token.useCount, token.lastUsedAt === null
|
|
140
140
|
? ""
|
|
141
141
|
: ` · последний раз ${day(token.lastUsedAt)}`] }), state === "active" ? null : (_jsx("span", { className: state === "revoked"
|
|
142
142
|
? "dsh-qa-settings__row-meta"
|
|
143
|
-
: "dsh-qa-settings__row-warning", children: state === "revoked"
|
|
143
|
+
: "dsh-qa-settings__row-warning", "data-testid": "qa-settings-tokens-row-state", children: state === "revoked"
|
|
144
144
|
? "отозван"
|
|
145
|
-
: "истёк — интеграция больше не может им пользоваться" })), state === "active" ? (_jsx(QaSettingsActions, { children: confirming ? (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { label: "\u041E\u0442\u043C\u0435\u043D\u0430", onClick: () => setPendingRevoke(null) }), _jsx(QaSettingsButton, { tone: "danger", disabled: revoking === token.id, label: revoking === token.id
|
|
145
|
+
: "истёк — интеграция больше не может им пользоваться" })), state === "active" ? (_jsx(QaSettingsActions, { children: confirming ? (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-cancel", label: "\u041E\u0442\u043C\u0435\u043D\u0430", onClick: () => setPendingRevoke(null) }), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-confirm", tone: "danger", disabled: revoking === token.id, label: revoking === token.id
|
|
146
146
|
? "Отзываем…"
|
|
147
|
-
: "Отозвать окончательно", onClick: () => revoke(token.id) })] })) : (_jsx(QaSettingsButton, { tone: "danger", label: "\u041E\u0442\u043E\u0437\u0432\u0430\u0442\u044C", title: `Отозвать токен «${token.label}»`, onClick: () => setPendingRevoke(token.id) })) })) : null] }) }, token.id));
|
|
147
|
+
: "Отозвать окончательно", onClick: () => revoke(token.id) })] })) : (_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke", tone: "danger", label: "\u041E\u0442\u043E\u0437\u0432\u0430\u0442\u044C", title: `Отозвать токен «${token.label}»`, onClick: () => setPendingRevoke(token.id) })) })) : null] }) }, token.id));
|
|
148
148
|
}) }))] })] }));
|
|
149
149
|
}
|
|
150
150
|
//# sourceMappingURL=IntegrationTokensPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationTokensPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/IntegrationTokensPage.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IntegrationTokensPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/IntegrationTokensPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { readNotificationPermission, requestNotificationPermission, } from "../notifications/notification-dispatcher.js";
|
|
4
|
+
import { QaSettingsActions, QaSettingsButton, QaSettingsNotice, QaSettingsToggle, } from "./fields.js";
|
|
5
|
+
const FORM_ID = "dsh-qa-settings-notifications-form";
|
|
6
|
+
export const QA_NOTIFICATION_SETTINGS_COPY = Object.freeze({
|
|
7
|
+
title: "Уведомления",
|
|
8
|
+
lead: "Напоминание о завершённом ходе доходит до вас, даже когда вы читаете другой чат.",
|
|
9
|
+
inApp: "Строка «Ход завершён» на странице",
|
|
10
|
+
inAppHint: "Появляется, когда ход закончился в чате, который вы сейчас не читаете; клик открывает его.",
|
|
11
|
+
desktop: "Системные уведомления",
|
|
12
|
+
desktopHint: "Приходят, когда эта вкладка свёрнута или закрыта другим окном. В самом чате, который открыт перед вами, ничего не появляется.",
|
|
13
|
+
offOnStand: "Уведомления о завершённых ходах выключены на этом стенде администратором.",
|
|
14
|
+
desktopOffOnStand: "Системные уведомления выключены на этом стенде: строка на странице остаётся.",
|
|
15
|
+
unsupported: "Браузер этого устройства не умеет системные уведомления: напоминание останется на странице.",
|
|
16
|
+
denied: "Браузер запретил уведомления для этого адреса. Разрешите их в его собственных настройках — до этого напоминание останется только на странице.",
|
|
17
|
+
askAction: "Разрешить в браузере",
|
|
18
|
+
askHint: "Браузер спросит разрешение один раз, по этому нажатию; больше вопрос не вернётся.",
|
|
19
|
+
granted: "Браузер разрешил уведомления для этого адреса.",
|
|
20
|
+
saved: "Настройки уведомлений сохранены.",
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* The signed-in reader's own answer about the channels a finished turn may use.
|
|
24
|
+
*
|
|
25
|
+
* Two switches, because that is how many the feature has: the line inside the
|
|
26
|
+
* page and the notice the page hands to the operating system. What the stand
|
|
27
|
+
* allows is a third voice over each of them and is shown rather than hidden —
|
|
28
|
+
* a control that silently does nothing reads as a bug, and the reader is the
|
|
29
|
+
* one person who should not have to guess whose decision it was.
|
|
30
|
+
*
|
|
31
|
+
* Same full-replace contract as the starters form: the pair is seeded from the
|
|
32
|
+
* stored record whenever that record changes, so a write from another tab never
|
|
33
|
+
* leaves a stale edit on screen.
|
|
34
|
+
*/
|
|
35
|
+
export function QaNotificationSettingsPage(props) {
|
|
36
|
+
const { switches } = props;
|
|
37
|
+
const [choices, setChoices] = useState(() => ({
|
|
38
|
+
inApp: props.notifications.inApp,
|
|
39
|
+
desktop: props.notifications.desktop,
|
|
40
|
+
}));
|
|
41
|
+
const [busy, setBusy] = useState(false);
|
|
42
|
+
const [error, setError] = useState(null);
|
|
43
|
+
const [saved, setSaved] = useState(false);
|
|
44
|
+
// The browser's own answer, re-read every render of the dialog: granting a
|
|
45
|
+
// permission happens outside this page, and the hint has to tell the truth
|
|
46
|
+
// about it the moment the reader comes back.
|
|
47
|
+
const [permission, setPermission] = useState(() => readNotificationPermission());
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setChoices({
|
|
50
|
+
inApp: props.notifications.inApp,
|
|
51
|
+
desktop: props.notifications.desktop,
|
|
52
|
+
});
|
|
53
|
+
setBusy(false);
|
|
54
|
+
setError(null);
|
|
55
|
+
setSaved(false);
|
|
56
|
+
}, [props.notifications]);
|
|
57
|
+
const desktopAllowed = switches.enabled && switches.allowOs;
|
|
58
|
+
const submit = (event) => {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
if (busy)
|
|
61
|
+
return;
|
|
62
|
+
setBusy(true);
|
|
63
|
+
setError(null);
|
|
64
|
+
setSaved(false);
|
|
65
|
+
void props.onSave(choices).then((refusal) => {
|
|
66
|
+
setBusy(false);
|
|
67
|
+
if (refusal !== null) {
|
|
68
|
+
setError(refusal);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
setSaved(true);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
// With the master switch off, one notice says everything both controls need:
|
|
75
|
+
// a per-control hint would repeat it and could only contradict itself.
|
|
76
|
+
const desktopHint = !switches.enabled
|
|
77
|
+
? undefined
|
|
78
|
+
: !switches.allowOs
|
|
79
|
+
? QA_NOTIFICATION_SETTINGS_COPY.desktopOffOnStand
|
|
80
|
+
: permission === "unsupported"
|
|
81
|
+
? QA_NOTIFICATION_SETTINGS_COPY.unsupported
|
|
82
|
+
: permission === "denied"
|
|
83
|
+
? QA_NOTIFICATION_SETTINGS_COPY.denied
|
|
84
|
+
: permission === "granted"
|
|
85
|
+
? QA_NOTIFICATION_SETTINGS_COPY.granted
|
|
86
|
+
: QA_NOTIFICATION_SETTINGS_COPY.askHint;
|
|
87
|
+
// A denied permission is not locked: it is the reader's own answer about a
|
|
88
|
+
// channel this browser happens to refuse today, and the same account may be
|
|
89
|
+
// signed in on a browser that will honor it tomorrow.
|
|
90
|
+
const desktopLocked = !switches.enabled || !switches.allowOs || permission === "unsupported";
|
|
91
|
+
return (_jsxs("form", { id: FORM_ID, className: "dsh-qa-settings__page", "data-testid": "qa-settings-notifications", onSubmit: submit, children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-notifications-title", children: QA_NOTIFICATION_SETTINGS_COPY.title }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-notifications-lead", children: QA_NOTIFICATION_SETTINGS_COPY.lead }), _jsx(QaSettingsToggle, { testId: "qa-settings-notifications-in-app", checked: choices.inApp, disabled: !switches.enabled, label: QA_NOTIFICATION_SETTINGS_COPY.inApp, hint: QA_NOTIFICATION_SETTINGS_COPY.inAppHint, onChange: (inApp) => {
|
|
92
|
+
setChoices((current) => ({ ...current, inApp }));
|
|
93
|
+
setSaved(false);
|
|
94
|
+
} }), _jsx(QaSettingsToggle, { testId: "qa-settings-notifications-desktop", checked: choices.desktop, disabled: desktopLocked, label: QA_NOTIFICATION_SETTINGS_COPY.desktop, hint: desktopHint, onChange: (desktop) => {
|
|
95
|
+
setChoices((current) => ({ ...current, desktop }));
|
|
96
|
+
setSaved(false);
|
|
97
|
+
} }), desktopAllowed && permission === "default" ? (_jsx("div", { children: _jsx(QaSettingsButton, { testId: "qa-settings-notifications-ask", label: QA_NOTIFICATION_SETTINGS_COPY.askAction, onClick: () => {
|
|
98
|
+
void requestNotificationPermission().then((answer) => {
|
|
99
|
+
setPermission(answer);
|
|
100
|
+
if (answer === "granted") {
|
|
101
|
+
setChoices((current) => ({ ...current, desktop: true }));
|
|
102
|
+
setSaved(false);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
} }) })) : null, !switches.enabled ? (_jsx(QaSettingsNotice, { testId: "qa-settings-notifications-off-on-stand", tone: "warn", children: QA_NOTIFICATION_SETTINGS_COPY.offOnStand })) : null, error === null ? null : (_jsx(QaSettingsNotice, { testId: "qa-settings-notifications-error", tone: "error", children: error })), saved && error === null ? (_jsx(QaSettingsNotice, { testId: "qa-settings-notifications-saved", tone: "info", children: QA_NOTIFICATION_SETTINGS_COPY.saved })) : null, _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { testId: "qa-settings-notifications-save", type: "submit", tone: "primary", disabled: busy || !switches.enabled, label: busy ? "Сохранение…" : "Сохранить" }) })] }));
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=NotificationSettingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/NotificationSettingsPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAM5D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAE9B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,GAAG,oCAAoC,CAAC;AAarD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,kFAAkF;IACxF,KAAK,EAAE,mCAAmC;IAC1C,SAAS,EACP,4FAA4F;IAC9F,OAAO,EAAE,uBAAuB;IAChC,WAAW,EACT,+HAA+H;IACjI,UAAU,EACR,2EAA2E;IAC7E,iBAAiB,EACf,8EAA8E;IAChF,WAAW,EACT,6FAA6F;IAC/F,MAAM,EACJ,+IAA+I;IACjJ,SAAS,EAAE,sBAAsB;IACjC,OAAO,EACL,mFAAmF;IACrF,OAAO,EAAE,gDAAgD;IACzD,KAAK,EAAE,kCAAkC;CAC1C,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAsC;IAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA8B,GAAG,EAAE,CAAC,CAAC;QACzE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK;QAChC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;KACrC,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,2EAA2E;IAC3E,2EAA2E;IAC3E,6CAA6C;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA2B,GAAG,EAAE,CAC1E,0BAA0B,EAAE,CAC7B,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK;YAChC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;SACrC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,KAAiC,EAAE,EAAE;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI;YAAE,OAAO;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,6EAA6E;IAC7E,uEAAuE;IACvE,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,OAAO;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO;YACjB,CAAC,CAAC,6BAA6B,CAAC,iBAAiB;YACjD,CAAC,CAAC,UAAU,KAAK,aAAa;gBAC5B,CAAC,CAAC,6BAA6B,CAAC,WAAW;gBAC3C,CAAC,CAAC,UAAU,KAAK,QAAQ;oBACvB,CAAC,CAAC,6BAA6B,CAAC,MAAM;oBACtC,CAAC,CAAC,UAAU,KAAK,SAAS;wBACxB,CAAC,CAAC,6BAA6B,CAAC,OAAO;wBACvC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC;IAClD,2EAA2E;IAC3E,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,aAAa,GACjB,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,UAAU,KAAK,aAAa,CAAC;IAEzE,OAAO,CACL,gBACE,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,uBAAuB,iBACrB,2BAA2B,EACvC,QAAQ,EAAE,MAAM,aAEhB,aACE,SAAS,EAAC,6BAA6B,iBAC3B,iCAAiC,YAE5C,6BAA6B,CAAC,KAAK,GACjC,EACL,YACE,SAAS,EAAC,uBAAuB,iBACrB,gCAAgC,YAE3C,6BAA6B,CAAC,IAAI,GACjC,EACJ,KAAC,gBAAgB,IACf,MAAM,EAAC,kCAAkC,EACzC,OAAO,EAAE,OAAO,CAAC,KAAK,EACtB,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,EAC3B,KAAK,EAAE,6BAA6B,CAAC,KAAK,EAC1C,IAAI,EAAE,6BAA6B,CAAC,SAAS,EAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oBACjD,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,GACD,EACF,KAAC,gBAAgB,IACf,MAAM,EAAC,mCAAmC,EAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,6BAA6B,CAAC,OAAO,EAC5C,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;oBACpB,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oBACnD,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,GACD,EACD,cAAc,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAI5C,wBACE,KAAC,gBAAgB,IACf,MAAM,EAAC,+BAA+B,EACtC,KAAK,EAAE,6BAA6B,CAAC,SAAS,EAC9C,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,6BAA6B,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;4BACnD,aAAa,CAAC,MAAM,CAAC,CAAC;4BACtB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gCACzB,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gCACzD,QAAQ,CAAC,KAAK,CAAC,CAAC;4BAClB,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC,GACD,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CACnB,KAAC,gBAAgB,IACf,MAAM,EAAC,wCAAwC,EAC/C,IAAI,EAAC,MAAM,YAEV,6BAA6B,CAAC,UAAU,GACxB,CACpB,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,KAAC,gBAAgB,IAAC,MAAM,EAAC,iCAAiC,EAAC,IAAI,EAAC,OAAO,YACpE,KAAK,GACW,CACpB,EACA,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,KAAC,gBAAgB,IAAC,MAAM,EAAC,iCAAiC,EAAC,IAAI,EAAC,MAAM,YACnE,6BAA6B,CAAC,KAAK,GACnB,CACpB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,iBAAiB,cAChB,KAAC,gBAAgB,IACf,MAAM,EAAC,gCAAgC,EACvC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,SAAS,EACd,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EACnC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,GACzC,GACgB,IACf,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -43,6 +43,6 @@ export function QaPasswordSettingsPage(props) {
|
|
|
43
43
|
setSaved(true);
|
|
44
44
|
});
|
|
45
45
|
};
|
|
46
|
-
return (_jsxs("form", { className: "dsh-qa-settings__page", onSubmit: submit, children: [_jsx("h3", { className: "dsh-qa-settings__page-title", children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("p", { className: "dsh-qa-settings__lead", children: "\u0421\u043C\u0435\u043D\u0430 \u043F\u0430\u0440\u043E\u043B\u044F \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u2014 \u0442\u0430\u043C \u043F\u0440\u0438\u0434\u0451\u0442\u0441\u044F \u0432\u043E\u0439\u0442\u0438 \u0437\u0430\u043D\u043E\u0432\u043E. \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0435\u0441\u0441\u0438\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F." }), _jsx(QaSettingsField, { label: "\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0430\u0440\u043E\u043B\u044C", children: _jsx("input", { type: "password", name: "current-password", autoComplete: "current-password", required: true, disabled: busy, value: current, onChange: (event) => setCurrent(event.currentTarget.value) }) }), _jsx(QaSettingsField, { label: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C", children: _jsx("input", { type: "password", name: "new-password", autoComplete: "new-password", required: true, minLength: MIN_PASSWORD_LENGTH, disabled: busy, value: next, onChange: (event) => setNext(event.currentTarget.value) }) }), _jsx(QaSettingsField, { label: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C \u0435\u0449\u0451 \u0440\u0430\u0437", children: _jsx("input", { type: "password", name: "repeat-password", autoComplete: "new-password", required: true, minLength: MIN_PASSWORD_LENGTH, disabled: busy, value: repeat, onChange: (event) => setRepeat(event.currentTarget.value) }) }), tooShort ? (_jsxs("p", { className: "dsh-qa-settings__field-hint", children: ["\u041F\u0430\u0440\u043E\u043B\u044C \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435 \u043A\u043E\u0440\u043E\u0447\u0435 ", MIN_PASSWORD_LENGTH, " \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432."] })) : null, mismatch ? (_jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u041F\u0430\u0440\u043E\u043B\u0438 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442." })) : null, error === null ? null : (_jsx(QaSettingsNotice, { tone: "error", children: error })), saved && error === null ? (_jsx(QaSettingsNotice, { tone: "info", children: "\u041F\u0430\u0440\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0451\u043D. \u0414\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044B." })) : null, _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { type: "submit", tone: "primary", disabled: busy || incomplete || mismatch || tooShort, label: busy ? "Сохранение…" : "Сменить пароль" }) })] }));
|
|
46
|
+
return (_jsxs("form", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-password", onSubmit: submit, children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-password-title", children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-password-lead", children: "\u0421\u043C\u0435\u043D\u0430 \u043F\u0430\u0440\u043E\u043B\u044F \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u2014 \u0442\u0430\u043C \u043F\u0440\u0438\u0434\u0451\u0442\u0441\u044F \u0432\u043E\u0439\u0442\u0438 \u0437\u0430\u043D\u043E\u0432\u043E. \u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0435\u0441\u0441\u0438\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F." }), _jsx(QaSettingsField, { testId: "qa-settings-password-current", label: "\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0430\u0440\u043E\u043B\u044C", children: _jsx("input", { type: "password", name: "current-password", autoComplete: "current-password", required: true, disabled: busy, value: current, onChange: (event) => setCurrent(event.currentTarget.value) }) }), _jsx(QaSettingsField, { testId: "qa-settings-password-new", label: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C", children: _jsx("input", { type: "password", name: "new-password", autoComplete: "new-password", required: true, minLength: MIN_PASSWORD_LENGTH, disabled: busy, value: next, onChange: (event) => setNext(event.currentTarget.value) }) }), _jsx(QaSettingsField, { testId: "qa-settings-password-repeat", label: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C \u0435\u0449\u0451 \u0440\u0430\u0437", children: _jsx("input", { type: "password", name: "repeat-password", autoComplete: "new-password", required: true, minLength: MIN_PASSWORD_LENGTH, disabled: busy, value: repeat, onChange: (event) => setRepeat(event.currentTarget.value) }) }), tooShort ? (_jsxs("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-password-too-short", children: ["\u041F\u0430\u0440\u043E\u043B\u044C \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043D\u0435 \u043A\u043E\u0440\u043E\u0447\u0435 ", MIN_PASSWORD_LENGTH, " \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432."] })) : null, mismatch ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-password-mismatch", children: "\u041F\u0430\u0440\u043E\u043B\u0438 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442." })) : null, error === null ? null : (_jsx(QaSettingsNotice, { testId: "qa-settings-password-error", tone: "error", children: error })), saved && error === null ? (_jsx(QaSettingsNotice, { testId: "qa-settings-password-saved", tone: "info", children: "\u041F\u0430\u0440\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0451\u043D. \u0414\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044B." })) : null, _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { testId: "qa-settings-password-change", type: "submit", tone: "primary", disabled: busy || incomplete || mismatch || tooShort, label: busy ? "Сохранение…" : "Сменить пароль" }) })] }));
|
|
47
47
|
}
|
|
48
48
|
//# sourceMappingURL=PasswordSettingsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/PasswordSettingsPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAc9B;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,IAAI,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,KAAiC,EAAE,EAAE;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ;YAAE,OAAO;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"PasswordSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/PasswordSettingsPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAc9B;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,IAAI,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,KAAiC,EAAE,EAAE;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ;YAAE,OAAO;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,gBACE,SAAS,EAAC,uBAAuB,iBACrB,sBAAsB,EAClC,QAAQ,EAAE,MAAM,aAEhB,aACE,SAAS,EAAC,6BAA6B,iBAC3B,4BAA4B,qDAGrC,EACL,YACE,SAAS,EAAC,uBAAuB,iBACrB,2BAA2B,0kBAIrC,EACJ,KAAC,eAAe,IACd,MAAM,EAAC,8BAA8B,EACrC,KAAK,EAAC,iFAAgB,YAEtB,gBACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,kBAAkB,EACvB,YAAY,EAAC,kBAAkB,EAC/B,QAAQ,QACR,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAC1D,GACc,EAClB,KAAC,eAAe,IAAC,MAAM,EAAC,0BAA0B,EAAC,KAAK,EAAC,qEAAc,YACrE,gBACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,cAAc,EACnB,YAAY,EAAC,cAAc,EAC3B,QAAQ,QACR,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GACvD,GACc,EAClB,KAAC,eAAe,IACd,MAAM,EAAC,6BAA6B,EACpC,KAAK,EAAC,2GAAsB,YAE5B,gBACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,iBAAiB,EACtB,YAAY,EAAC,cAAc,EAC3B,QAAQ,QACR,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GACzD,GACc,EACjB,QAAQ,CAAC,CAAC,CAAC,CACV,aACE,SAAS,EAAC,6BAA6B,iBAC3B,gCAAgC,sKAEd,mBAAmB,0DAC/C,CACL,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,YACE,SAAS,EAAC,6BAA6B,iBAC3B,+BAA+B,0HAGzC,CACL,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,KAAC,gBAAgB,IAAC,MAAM,EAAC,4BAA4B,EAAC,IAAI,EAAC,OAAO,YAC/D,KAAK,GACW,CACpB,EACA,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,KAAC,gBAAgB,IAAC,MAAM,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,uNAE9C,CACpB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,iBAAiB,cAChB,KAAC,gBAAgB,IACf,MAAM,EAAC,6BAA6B,EACpC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,SAAS,EACd,QAAQ,EAAE,IAAI,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ,EACpD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,GAC9C,GACgB,IACf,CACR,CAAC;AACJ,CAAC"}
|