dsh-diff-approval 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +540 -212
- package/lib/types/client/boundary.d.ts +38 -0
- package/lib/types/client/dock.d.ts +21 -0
- package/lib/types/client/locales.d.ts +4 -0
- package/lib/types/client/panel-memory.d.ts +47 -0
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -16,12 +16,12 @@ window.__ModuleLoader__.load({
|
|
|
16
16
|
return target;
|
|
17
17
|
};
|
|
18
18
|
//#endregion
|
|
19
|
-
let react_jsx_runtime = require("react/jsx-runtime");
|
|
20
19
|
let react = require("react");
|
|
20
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
21
21
|
let react_dom = require("react-dom");
|
|
22
22
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
23
23
|
//#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
|
|
24
|
-
const css = ".F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_headerEntry{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:28px;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex;position:relative}.F1KBNa_headerEntry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_headerEntry[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.F1KBNa_headerEntry:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_headerEntryCount{box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);min-width:14px;height:14px;color:var(--dsw-alias-label-primary-foreground);text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:7px;padding:0 3px;font-size:10px;line-height:14px;position:absolute;top:-1px;right:-1px}.F1KBNa_headerEntry svg{display:block}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badge:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_coverBackdrop{z-index:29;background:var(--dsw-specific-sidebar-fill);position:fixed;inset:0}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_panelDocked{width:100%;max-width:none;height:100%;box-shadow:none;border:none;border-radius:0;position:static;inset:auto}.F1KBNa_dockHost{flex-direction:column;min-height:0;display:flex;position:absolute;inset:0}.F1KBNa_header{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:10px 12px;display:flex}.F1KBNa_headerActions{align-items:center;gap:2px;display:flex}.F1KBNa_settingsPage{padding:8px 12px}.F1KBNa_settingsGroup{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupHeader{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsGroupText{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.F1KBNa_settingsGroupTitle{font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsGroupDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsGroupChevron{margin-left:auto;transition:transform .15s}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupChevron{transform:rotate(180deg)}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupHeader{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupBody{flex-direction:column;display:flex}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow{padding-left:16px}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow:last-child,.F1KBNa_settingsPage>.F1KBNa_settingsRow:last-child{border-bottom:none}.F1KBNa_settingsRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.F1KBNa_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsSelector{background:var(--dsw-alias-bg-module-platform);min-width:72px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelector[data-recording]{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-secondary)}.F1KBNa_settingsReset{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;margin-left:6px;padding:0;display:inline-flex}.F1KBNa_settingsReset:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_settingsReset:disabled{opacity:.4;cursor:default}.F1KBNa_colorPicker{position:relative}.F1KBNa_colorPickerTrigger{background:var(--dsw-alias-bg-module-platform);width:120px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_colorPickerTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_colorSwatch{border:1px solid var(--dsw-alias-border-l2);border-radius:50%;flex:none;width:24px;height:24px}.F1KBNa_colorValue{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden}.F1KBNa_colorPickerChevron{flex:none}.F1KBNa_colorBackdrop{z-index:40;position:fixed;inset:0}.F1KBNa_colorPickerPopover{z-index:41;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:10px;padding:10px;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_colorPickerPanel{flex-direction:column;gap:8px;display:flex}.F1KBNa_colorPickerInputRow{align-items:center;gap:8px;display:flex}.F1KBNa_colorPickerPreview{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex:none;width:22px;height:22px}.F1KBNa_colorPickerInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-module-platform);min-width:0;height:30px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:0 8px;font-size:12px;line-height:28px}.F1KBNa_colorPickerInput:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.F1KBNa_colorSv{border:1px solid var(--dsw-alias-border-l1);cursor:crosshair;touch-action:none;border-radius:8px;height:140px;position:relative}.F1KBNa_colorSvCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_colorHue{border:1px solid var(--dsw-alias-border-l1);cursor:pointer;touch-action:none;border-radius:7px;height:14px;position:relative}.F1KBNa_colorHueCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_diffPreview{z-index:2;border:1px solid var(--dsw-alias-border-l1);font:var(--dsw-font-markdown-code-block);background:var(--dsw-alias-markdown-code-block);border-radius:8px;margin:16px 0 8px;padding:8px;position:sticky;top:0;overflow:hidden}.F1KBNa_diffPreviewTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:6px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_diffPreviewScroll{height:132px;overflow-y:auto}.F1KBNa_mdPreviewWrap{flex:1;min-width:0;min-height:0;display:flex;position:relative}.F1KBNa_mdPreviewBody{min-width:0;min-height:0;color:var(--dsw-alias-label-primary);flex:1;padding:12px 16px;position:relative;overflow:auto}.F1KBNa_mdPreviewContent{width:100%;min-width:0;margin:0 auto}.F1KBNa_mdPreviewSingle{display:block}.F1KBNa_mdPreviewDouble{display:flex}.F1KBNa_mdPreviewBody .mdBlock{border-radius:4px;margin-bottom:12px;padding:2px 6px}.F1KBNa_mdPreviewBody .mdAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_mdPreviewBody .mdDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_mdPreviewBody .mdWordDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdWordAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdDouble{flex-direction:column;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleRow{align-items:flex-start;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleCol{flex:1;min-width:0}.F1KBNa_mdPreviewBody .mdDoubleRule{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:0 12px}.F1KBNa_mdPreviewFallback{font-family:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 16px;font-size:12px;line-height:18px}.F1KBNa_mdPreviewBody{word-break:break-word;font-size:13px;line-height:20px}.F1KBNa_mdPreviewBody>:first-child{margin-top:0}.F1KBNa_mdPreviewBody>:last-child{margin-bottom:0}.F1KBNa_mdPreviewBody h1,.F1KBNa_mdPreviewBody h2,.F1KBNa_mdPreviewBody h3,.F1KBNa_mdPreviewBody h4,.F1KBNa_mdPreviewBody h5,.F1KBNa_mdPreviewBody h6{margin:16px 0 8px;font-weight:600;line-height:1.3}.F1KBNa_mdPreviewBody h1{font-size:22px}.F1KBNa_mdPreviewBody h2{font-size:19px}.F1KBNa_mdPreviewBody h3{font-size:16px}.F1KBNa_mdPreviewBody h4{font-size:15px}.F1KBNa_mdPreviewBody h5{font-size:14px}.F1KBNa_mdPreviewBody h6{font-size:13px}.F1KBNa_mdPreviewBody p{margin:8px 0}.F1KBNa_mdPreviewBody ul,.F1KBNa_mdPreviewBody ol{margin:8px 0;padding-left:22px}.F1KBNa_mdPreviewBody li{margin:2px 0}.F1KBNa_mdPreviewBody a{color:var(--dsw-alias-state-business-primary);text-decoration:none}.F1KBNa_mdPreviewBody a:hover{text-decoration:underline}.F1KBNa_mdPreviewBody code{font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:4px;padding:1px 5px;font-size:12.5px}.F1KBNa_mdPreviewBody pre{border:1px solid var(--dsw-alias-border-l1);font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:8px;margin:8px 0;padding:10px 12px;font-size:12.5px;line-height:18px;overflow:auto}.F1KBNa_mdPreviewBody pre code{background:0 0;padding:0}.F1KBNa_mdPreviewBody blockquote{border-left:3px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);margin:8px 0;padding:0 12px}.F1KBNa_mdPreviewBody hr{background:var(--dsw-alias-border-l1);border:none;height:1px;margin:16px 0}.F1KBNa_mdPreviewBody table{border-collapse:collapse;margin:8px 0}.F1KBNa_mdPreviewBody th,.F1KBNa_mdPreviewBody td{border:1px solid var(--dsw-alias-border-l1);padding:4px 10px}.F1KBNa_mdPreviewBody img{max-width:100%}.F1KBNa_mdPreviewBody .mdImageFallback{border:1px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-markdown-code-block) 45%, transparent);width:100%;min-height:120px;color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-markdown-code-block);text-align:center;white-space:pre-wrap;word-break:break-all;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;padding:8px 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_toggle{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:18px;flex:none;width:60px;height:36px;padding:0;position:relative}.F1KBNa_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_toggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.F1KBNa_toggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleOn:hover{background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleThumb{background:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;transition:left .12s;position:absolute;top:3px;left:3px}.F1KBNa_toggleOn .F1KBNa_toggleThumb{background:#fff;left:27px}.F1KBNa_stepper{align-items:center;gap:6px;display:inline-flex}.F1KBNa_stepperButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;padding:0;position:relative}.F1KBNa_stepperButton:before,.F1KBNa_stepperButton:after{content:\"\";background:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_stepperButton:before{width:10px;height:1px}.F1KBNa_stepperButton:after{width:1px;height:10px;display:none}.F1KBNa_stepperButtonUp:after{display:block}.F1KBNa_stepperButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_stepperButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_stepperValue{text-align:center;min-width:2ch;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:14px;line-height:22px}.F1KBNa_states{flex-direction:column;flex:1;min-height:0;padding:4px 12px 12px;display:flex;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex;position:relative}.F1KBNa_fileListKnob{z-index:39;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.F1KBNa_fileListKnob:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_fileListFloat{z-index:40;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);transform-origin:0 0;border-radius:12px;flex-direction:column;padding:6px 8px 10px;animation:.14s ease-out F1KBNa_fileListGrow;display:flex;position:absolute;overflow:hidden}@keyframes F1KBNa_fileListGrow{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.F1KBNa_fileListFloat{animation:none}}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;flex:none;width:240px;min-height:0;padding:4px 2px 12px 8px;display:flex}.F1KBNa_listScroll{scrollbar-gutter:stable;flex:1;min-height:0;overflow-y:auto}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_floatResizeHandle{z-index:41;cursor:col-resize;background:0 0;width:8px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_floatResizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_confirmBackdrop{z-index:5;background:color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent);justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.F1KBNa_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.F1KBNa_pickerCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:420px;max-width:100%;height:70%;max-height:100%;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.F1KBNa_pickerTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_pickerClose{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:10px;right:10px}.F1KBNa_pickerClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_pickerForm{flex:none;gap:8px;display:flex}.F1KBNa_pickerInput{border:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;flex:auto;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_pickerInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_tree{scrollbar-gutter:stable;border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex:auto;min-height:0;padding:4px 2px 4px 4px;overflow:auto}.F1KBNa_treeRow{border-radius:6px;align-items:center;gap:2px;padding-right:4px;display:flex}.F1KBNa_treeRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_treeRow[data-selected]{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 18%, transparent)}.F1KBNa_treeCaret{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_treeCaret:hover{color:var(--dsw-alias-label-primary)}.F1KBNa_treeName{min-width:0;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:auto;align-items:center;gap:6px;padding:2px 4px;font-family:inherit;font-size:12px;line-height:18px;display:flex}.F1KBNa_treeName:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_treeNote{color:var(--dsw-alias-label-tertiary);margin:2px 0;font-size:12px;line-height:18px}.F1KBNa_pickerIcon{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_pickerName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_pickerNote{color:var(--dsw-alias-label-tertiary);flex:none;margin:0;font-size:12px;line-height:18px}.F1KBNa_pickerCheck{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;margin-right:auto;font-size:12px;line-height:18px;display:flex}.F1KBNa_title{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.F1KBNa_note,.F1KBNa_readError,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_noteCentered{text-align:center;margin:auto}.F1KBNa_emptyState{flex-direction:column;align-items:center;gap:10px;margin:auto;display:flex}.F1KBNa_importButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:5px 14px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_importButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_importButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_importNote{color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_groupHead{align-items:center;gap:4px;margin:8px 0 4px;padding-right:4px;display:flex}.F1KBNa_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_groupHead>.F1KBNa_group{margin:0}.F1KBNa_emptyActions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);-webkit-user-select:text;user-select:text;flex:1;font-size:12px;line-height:18px;overflow:auto hidden}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_divider{background:var(--dsw-alias-border-l1);align-self:stretch;width:1px;margin:2px 0}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_actionQuietDisabled:disabled{cursor:pointer;color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l1);background:0 0}.F1KBNa_actionPrimary.F1KBNa_actionQuietDisabled:disabled{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:1}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_blockPosition{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:1px;margin-left:7px;font-size:12px;line-height:16px}.F1KBNa_searchBar{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:8px;right:8px}.F1KBNa_searchInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:150px;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_searchInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchCount{text-align:center;min-width:34px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_searchToggle{border:1px solid var(--dsw-alias-border-l1);min-height:25px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.F1KBNa_searchToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_searchToggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchMatch{color:inherit;background-color:#facc1542;border-radius:2px}.F1KBNa_searchMatchCurrent{color:inherit;background-color:#facc1599;border-radius:2px}.F1KBNa_blockFlash{z-index:1;box-sizing:border-box;border:2px solid var(--dsw-alias-state-business-primary);pointer-events:none;border-radius:4px;animation:1s ease-out forwards F1KBNa_diffFlashFade;position:absolute;left:0;right:0}.F1KBNa_blockFlashShake{animation:.7s ease-out forwards F1KBNa_diffFlashShake}@keyframes F1KBNa_diffFlashFade{0%{opacity:1}to{opacity:0}}@keyframes F1KBNa_diffFlashShake{0%{opacity:1;transform:translateY(0)}10%{transform:translateY(1px)}20%{transform:translateY(-1px)}30%{transform:translateY(1px)}40%{transform:translateY(-1px)}50%{transform:translateY(1px)}60%{transform:translateY(-1px)}70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}.F1KBNa_overviewRuler{pointer-events:none;opacity:.5;width:4px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_overviewMarker{border-radius:2px;width:100%;min-height:2px;position:absolute;right:0}.F1KBNa_markerDel{background-color:var(--dsw-alias-state-error-primary)}.F1KBNa_markerAdd{background-color:var(--dsw-alias-state-success-primary)}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;font-size:calc(1em * var(--dsh-diff-font-scale,1));display:table}.F1KBNa_line{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);-webkit-user-select:none;user-select:none;display:table-row}.F1KBNa_vSpacer{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;-webkit-user-select:text;user-select:text;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.F1KBNa_presentationSelect{cursor:pointer;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_presentationSelect:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_chip{justify-content:flex-end;align-items:center;gap:5px;min-width:0;padding-right:14px;display:inline-flex}.F1KBNa_chipLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_coverHost{align-items:center;display:inline-flex;position:relative}.F1KBNa_coverCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;align-items:center;gap:4px;padding:6px;display:flex}.F1KBNa_coverPopover{z-index:50;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_coverNotice{z-index:80;pointer-events:none;animation:1.25s ease-out forwards F1KBNa_coverNoticeFade;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_coverNoticeCard{gap:4px;padding:6px 8px}@keyframes F1KBNa_coverNoticeFade{0%,78%{opacity:1}to{opacity:0}}.F1KBNa_coverNoticeGlyph{width:44px;height:44px;color:var(--dsw-alias-label-tertiary);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_coverNoticeGlyph[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_coverNoticeGlyph[data-changed]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_coverNoticeText{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.F1KBNa_coverButton{width:32px;height:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_coverButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_coverButton[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_presentationHost{align-items:center;display:inline-flex}.F1KBNa_chipPresentation{min-width:36px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:20px;flex:none;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_chipPresentation:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_mirrored{transform:scaleX(-1)}.F1KBNa_notice{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:360px;box-shadow:var(--dsw-shadow-lv3);border-radius:10px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex;position:fixed;bottom:24px;right:24px}.F1KBNa_noticeText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);flex:1;margin:0;line-height:1.45}.F1KBNa_noticeButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font:var(--dsw-font-caption);cursor:pointer;border-radius:6px;flex:none;padding:4px 10px}.F1KBNa_noticeButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_wrap .F1KBNa_line{height:auto;min-height:var(--dsh-diff-line-height,22px)}.F1KBNa_subline{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);white-space:pre;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{min-width:0;height:var(--dsh-scrollbar-width,8px);flex:1 1 0;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:var(--dsh-scrollbar-width,8px)}.F1KBNa_splitHScroll::-webkit-scrollbar-track{cursor:default}.F1KBNa_splitHScroll::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_splitHScrollFill{height:1px}.F1KBNa_splitLdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 26%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 24%, transparent)}";
|
|
24
|
+
const css = ".F1KBNa_panelFailure{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12px;line-height:16px;display:flex}.F1KBNa_panelFailureText{min-width:0}.F1KBNa_panelFailureRetry{border:1px solid var(--dsw-alias-border-l2);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:6px;flex:none;margin-left:auto;padding:2px 8px}.F1KBNa_panelFailureRetry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_headerEntry{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:28px;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex;position:relative}.F1KBNa_headerEntry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_headerEntry[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.F1KBNa_headerEntry:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_headerEntryCount{box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);min-width:14px;height:14px;color:var(--dsw-alias-label-primary-foreground);text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:7px;padding:0 3px;font-size:10px;line-height:14px;position:absolute;top:-1px;right:-1px}.F1KBNa_headerEntry svg{display:block}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badge:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_coverBackdrop{z-index:29;background:var(--dsw-specific-sidebar-fill);position:fixed;inset:0}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_panelDocked{width:100%;max-width:none;height:100%;box-shadow:none;border:none;border-radius:0;position:static;inset:auto}.F1KBNa_dockHost{flex-direction:column;min-height:0;display:flex;position:absolute;inset:0}.F1KBNa_header{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:10px 12px;display:flex}.F1KBNa_headerActions{align-items:center;gap:2px;display:flex}.F1KBNa_settingsPage{padding:8px 12px}.F1KBNa_settingsGroup{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupHeader{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsGroupText{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.F1KBNa_settingsGroupTitle{font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsGroupDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsGroupChevron{margin-left:auto;transition:transform .15s}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupChevron{transform:rotate(180deg)}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupHeader{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupBody{flex-direction:column;display:flex}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow{padding-left:16px}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow:last-child,.F1KBNa_settingsPage>.F1KBNa_settingsRow:last-child{border-bottom:none}.F1KBNa_settingsRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.F1KBNa_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsSelector{background:var(--dsw-alias-bg-module-platform);min-width:72px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelector[data-recording]{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-secondary)}.F1KBNa_settingsReset{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;margin-left:6px;padding:0;display:inline-flex}.F1KBNa_settingsReset:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_settingsReset:disabled{opacity:.4;cursor:default}.F1KBNa_colorPicker{position:relative}.F1KBNa_colorPickerTrigger{background:var(--dsw-alias-bg-module-platform);width:120px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_colorPickerTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_colorSwatch{border:1px solid var(--dsw-alias-border-l2);border-radius:50%;flex:none;width:24px;height:24px}.F1KBNa_colorValue{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden}.F1KBNa_colorPickerChevron{flex:none}.F1KBNa_colorBackdrop{z-index:40;position:fixed;inset:0}.F1KBNa_colorPickerPopover{z-index:41;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:10px;padding:10px;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_colorPickerPanel{flex-direction:column;gap:8px;display:flex}.F1KBNa_colorPickerInputRow{align-items:center;gap:8px;display:flex}.F1KBNa_colorPickerPreview{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex:none;width:22px;height:22px}.F1KBNa_colorPickerInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-module-platform);min-width:0;height:30px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:0 8px;font-size:12px;line-height:28px}.F1KBNa_colorPickerInput:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.F1KBNa_colorSv{border:1px solid var(--dsw-alias-border-l1);cursor:crosshair;touch-action:none;border-radius:8px;height:140px;position:relative}.F1KBNa_colorSvCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_colorHue{border:1px solid var(--dsw-alias-border-l1);cursor:pointer;touch-action:none;border-radius:7px;height:14px;position:relative}.F1KBNa_colorHueCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_diffPreview{z-index:2;border:1px solid var(--dsw-alias-border-l1);font:var(--dsw-font-markdown-code-block);background:var(--dsw-alias-markdown-code-block);border-radius:8px;margin:16px 0 8px;padding:8px;position:sticky;top:0;overflow:hidden}.F1KBNa_diffPreviewTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:6px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_diffPreviewScroll{height:132px;overflow-y:auto}.F1KBNa_mdPreviewWrap{flex:1;min-width:0;min-height:0;display:flex;position:relative}.F1KBNa_mdPreviewBody{min-width:0;min-height:0;color:var(--dsw-alias-label-primary);flex:1;padding:12px 16px;position:relative;overflow:auto}.F1KBNa_mdPreviewContent{width:100%;min-width:0;margin:0 auto}.F1KBNa_mdPreviewSingle{display:block}.F1KBNa_mdPreviewDouble{display:flex}.F1KBNa_mdPreviewBody .mdBlock{border-radius:4px;margin-bottom:12px;padding:2px 6px}.F1KBNa_mdPreviewBody .mdAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_mdPreviewBody .mdDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_mdPreviewBody .mdWordDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdWordAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdDouble{flex-direction:column;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleRow{align-items:flex-start;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleCol{flex:1;min-width:0}.F1KBNa_mdPreviewBody .mdDoubleRule{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:0 12px}.F1KBNa_mdPreviewFallback{font-family:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 16px;font-size:12px;line-height:18px}.F1KBNa_mdPreviewBody{word-break:break-word;font-size:13px;line-height:20px}.F1KBNa_mdPreviewBody>:first-child{margin-top:0}.F1KBNa_mdPreviewBody>:last-child{margin-bottom:0}.F1KBNa_mdPreviewBody h1,.F1KBNa_mdPreviewBody h2,.F1KBNa_mdPreviewBody h3,.F1KBNa_mdPreviewBody h4,.F1KBNa_mdPreviewBody h5,.F1KBNa_mdPreviewBody h6{margin:16px 0 8px;font-weight:600;line-height:1.3}.F1KBNa_mdPreviewBody h1{font-size:22px}.F1KBNa_mdPreviewBody h2{font-size:19px}.F1KBNa_mdPreviewBody h3{font-size:16px}.F1KBNa_mdPreviewBody h4{font-size:15px}.F1KBNa_mdPreviewBody h5{font-size:14px}.F1KBNa_mdPreviewBody h6{font-size:13px}.F1KBNa_mdPreviewBody p{margin:8px 0}.F1KBNa_mdPreviewBody ul,.F1KBNa_mdPreviewBody ol{margin:8px 0;padding-left:22px}.F1KBNa_mdPreviewBody li{margin:2px 0}.F1KBNa_mdPreviewBody a{color:var(--dsw-alias-state-business-primary);text-decoration:none}.F1KBNa_mdPreviewBody a:hover{text-decoration:underline}.F1KBNa_mdPreviewBody code{font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:4px;padding:1px 5px;font-size:12.5px}.F1KBNa_mdPreviewBody pre{border:1px solid var(--dsw-alias-border-l1);font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:8px;margin:8px 0;padding:10px 12px;font-size:12.5px;line-height:18px;overflow:auto}.F1KBNa_mdPreviewBody pre code{background:0 0;padding:0}.F1KBNa_mdPreviewBody blockquote{border-left:3px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);margin:8px 0;padding:0 12px}.F1KBNa_mdPreviewBody hr{background:var(--dsw-alias-border-l1);border:none;height:1px;margin:16px 0}.F1KBNa_mdPreviewBody table{border-collapse:collapse;margin:8px 0}.F1KBNa_mdPreviewBody th,.F1KBNa_mdPreviewBody td{border:1px solid var(--dsw-alias-border-l1);padding:4px 10px}.F1KBNa_mdPreviewBody img{max-width:100%}.F1KBNa_mdPreviewBody .mdImageFallback{border:1px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-markdown-code-block) 45%, transparent);width:100%;min-height:120px;color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-markdown-code-block);text-align:center;white-space:pre-wrap;word-break:break-all;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;padding:8px 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_toggle{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:18px;flex:none;width:60px;height:36px;padding:0;position:relative}.F1KBNa_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_toggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.F1KBNa_toggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleOn:hover{background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleThumb{background:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;transition:left .12s;position:absolute;top:3px;left:3px}.F1KBNa_toggleOn .F1KBNa_toggleThumb{background:#fff;left:27px}.F1KBNa_stepper{align-items:center;gap:6px;display:inline-flex}.F1KBNa_stepperButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;padding:0;position:relative}.F1KBNa_stepperButton:before,.F1KBNa_stepperButton:after{content:\"\";background:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_stepperButton:before{width:10px;height:1px}.F1KBNa_stepperButton:after{width:1px;height:10px;display:none}.F1KBNa_stepperButtonUp:after{display:block}.F1KBNa_stepperButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_stepperButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_stepperValue{text-align:center;min-width:2ch;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:14px;line-height:22px}.F1KBNa_states{flex-direction:column;flex:1;min-height:0;padding:4px 12px 12px;display:flex;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex;position:relative}.F1KBNa_fileListKnob{z-index:39;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;box-shadow:var(--dsw-shadow-lv2);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.F1KBNa_fileListKnob:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_fileListFloat{z-index:40;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);transform-origin:0 0;border-radius:12px;flex-direction:column;padding:6px 8px 10px;animation:.14s ease-out F1KBNa_fileListGrow;display:flex;position:absolute;overflow:hidden}@keyframes F1KBNa_fileListGrow{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.F1KBNa_fileListFloat{animation:none}}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;flex:none;width:240px;min-height:0;padding:4px 2px 12px 8px;display:flex}.F1KBNa_listScroll{scrollbar-gutter:stable;flex:1;min-height:0;overflow-y:auto}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_floatResizeHandle{z-index:41;cursor:col-resize;background:0 0;width:8px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_floatResizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_confirmBackdrop{z-index:5;background:color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent);justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.F1KBNa_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.F1KBNa_pickerCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:420px;max-width:100%;height:70%;max-height:100%;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.F1KBNa_pickerTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_pickerClose{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:10px;right:10px}.F1KBNa_pickerClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_pickerForm{flex:none;gap:8px;display:flex}.F1KBNa_pickerInput{border:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;flex:auto;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_pickerInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_tree{scrollbar-gutter:stable;border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex:auto;min-height:0;padding:4px 2px 4px 4px;overflow:auto}.F1KBNa_treeRow{border-radius:6px;align-items:center;gap:2px;padding-right:4px;display:flex}.F1KBNa_treeRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_treeRow[data-selected]{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 18%, transparent)}.F1KBNa_treeCaret{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_treeCaret:hover{color:var(--dsw-alias-label-primary)}.F1KBNa_treeName{min-width:0;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:auto;align-items:center;gap:6px;padding:2px 4px;font-family:inherit;font-size:12px;line-height:18px;display:flex}.F1KBNa_treeName:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_treeNote{color:var(--dsw-alias-label-tertiary);margin:2px 0;font-size:12px;line-height:18px}.F1KBNa_pickerIcon{width:16px;height:16px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_pickerName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_pickerNote{color:var(--dsw-alias-label-tertiary);flex:none;margin:0;font-size:12px;line-height:18px}.F1KBNa_pickerCheck{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;margin-right:auto;font-size:12px;line-height:18px;display:flex}.F1KBNa_title{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.F1KBNa_note,.F1KBNa_readError,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_noteCentered{text-align:center;margin:auto}.F1KBNa_emptyState{flex-direction:column;align-items:center;gap:10px;margin:auto;display:flex}.F1KBNa_importButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:5px 14px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_importButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_importButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_importNote{color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_groupHead{align-items:center;gap:4px;margin:8px 0 4px;padding-right:4px;display:flex}.F1KBNa_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_groupHead>.F1KBNa_group{margin:0}.F1KBNa_emptyActions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{white-space:nowrap;scrollbar-width:none;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);-webkit-user-select:text;user-select:text;flex:1;font-size:12px;line-height:18px;overflow:auto hidden}.F1KBNa_diffPath::-webkit-scrollbar{display:none}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_divider{background:var(--dsw-alias-border-l1);align-self:stretch;width:1px;margin:2px 0}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_actionQuietDisabled:disabled{cursor:pointer;color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l1);background:0 0}.F1KBNa_actionPrimary.F1KBNa_actionQuietDisabled:disabled{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:1}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_blockPosition{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:1px;margin-left:7px;font-size:12px;line-height:16px}.F1KBNa_searchBar{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:8px;right:8px}.F1KBNa_searchInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:150px;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_searchInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchCount{text-align:center;min-width:34px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_searchToggle{border:1px solid var(--dsw-alias-border-l1);min-height:25px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.F1KBNa_searchToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_searchToggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchMatch{color:inherit;background-color:#facc1542;border-radius:2px}.F1KBNa_searchMatchCurrent{color:inherit;background-color:#facc1599;border-radius:2px}.F1KBNa_blockFlash{z-index:1;box-sizing:border-box;border:2px solid var(--dsw-alias-state-business-primary);pointer-events:none;border-radius:4px;animation:1s ease-out forwards F1KBNa_diffFlashFade;position:absolute;left:0;right:0}.F1KBNa_blockFlashShake{animation:.7s ease-out forwards F1KBNa_diffFlashShake}@keyframes F1KBNa_diffFlashFade{0%{opacity:1}to{opacity:0}}@keyframes F1KBNa_diffFlashShake{0%{opacity:1;transform:translateY(0)}10%{transform:translateY(1px)}20%{transform:translateY(-1px)}30%{transform:translateY(1px)}40%{transform:translateY(-1px)}50%{transform:translateY(1px)}60%{transform:translateY(-1px)}70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}.F1KBNa_overviewRuler{pointer-events:none;opacity:.5;width:4px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_overviewMarker{border-radius:2px;width:100%;min-height:2px;position:absolute;right:0}.F1KBNa_markerDel{background-color:var(--dsw-alias-state-error-primary)}.F1KBNa_markerAdd{background-color:var(--dsw-alias-state-success-primary)}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;font-size:calc(1em * var(--dsh-diff-font-scale,1));display:table}.F1KBNa_line{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);-webkit-user-select:none;user-select:none;display:table-row}.F1KBNa_vSpacer{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;-webkit-user-select:text;user-select:text;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.F1KBNa_presentationSelect{cursor:pointer;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_presentationSelect:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_chip{justify-content:flex-end;align-items:center;gap:5px;min-width:0;padding-right:14px;display:inline-flex}.F1KBNa_chipLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_coverHost{align-items:center;display:inline-flex;position:relative}.F1KBNa_coverCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;align-items:center;gap:4px;padding:6px;display:flex}.F1KBNa_coverPopover{z-index:50;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_coverNotice{z-index:80;pointer-events:none;animation:1.25s ease-out forwards F1KBNa_coverNoticeFade;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_coverNoticeCard{gap:4px;padding:6px 8px}@keyframes F1KBNa_coverNoticeFade{0%,78%{opacity:1}to{opacity:0}}.F1KBNa_coverNoticeGlyph{width:44px;height:44px;color:var(--dsw-alias-label-tertiary);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_coverNoticeGlyph[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_coverNoticeGlyph[data-changed]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_coverNoticeText{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.F1KBNa_coverButton{width:32px;height:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_coverButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_coverButton[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_presentationHost{align-items:center;display:inline-flex}.F1KBNa_chipPresentation{min-width:36px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:20px;flex:none;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_chipPresentation:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_mirrored{transform:scaleX(-1)}.F1KBNa_notice{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:360px;box-shadow:var(--dsw-shadow-lv3);border-radius:10px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex;position:fixed;bottom:24px;right:24px}.F1KBNa_noticeText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);flex:1;margin:0;line-height:1.45}.F1KBNa_noticeButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font:var(--dsw-font-caption);cursor:pointer;border-radius:6px;flex:none;padding:4px 10px}.F1KBNa_noticeButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_wrap .F1KBNa_line{height:auto;min-height:var(--dsh-diff-line-height,22px)}.F1KBNa_subline{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);white-space:pre;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{min-width:0;height:var(--dsh-scrollbar-width,8px);flex:1 1 0;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:var(--dsh-scrollbar-width,8px)}.F1KBNa_splitHScroll::-webkit-scrollbar-track{cursor:default}.F1KBNa_splitHScroll::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_splitHScrollFill{height:1px}.F1KBNa_splitLdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 26%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 24%, transparent)}";
|
|
25
25
|
const tagId = "dsh-diff-approval/PendingPanel.module.css";
|
|
26
26
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
27
27
|
const tag = document.createElement("style");
|
|
@@ -31,201 +31,204 @@ window.__ModuleLoader__.load({
|
|
|
31
31
|
document.head.appendChild(tag);
|
|
32
32
|
}
|
|
33
33
|
var PendingPanel_module_css_default = {
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"presentationHost": "F1KBNa_presentationHost",
|
|
37
|
-
"panel": "F1KBNa_panel",
|
|
38
|
-
"note": "F1KBNa_note",
|
|
34
|
+
"flexSpacer": "F1KBNa_flexSpacer",
|
|
35
|
+
"rowPath": "F1KBNa_rowPath",
|
|
39
36
|
"code": "F1KBNa_code",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"colorSwatch": "F1KBNa_colorSwatch",
|
|
43
|
-
"colorPicker": "F1KBNa_colorPicker",
|
|
44
|
-
"confirmActions": "F1KBNa_confirmActions",
|
|
45
|
-
"markerDel": "F1KBNa_markerDel",
|
|
46
|
-
"dockHost": "F1KBNa_dockHost",
|
|
37
|
+
"noticeButton": "F1KBNa_noticeButton",
|
|
38
|
+
"settingsGroupDesc": "F1KBNa_settingsGroupDesc",
|
|
47
39
|
"settingsRowTitle": "F1KBNa_settingsRowTitle",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
40
|
+
"actionPrimary": "F1KBNa_actionPrimary",
|
|
41
|
+
"emptyActions": "F1KBNa_emptyActions",
|
|
42
|
+
"actionQuietDisabled": "F1KBNa_actionQuietDisabled",
|
|
43
|
+
"header": "F1KBNa_header",
|
|
44
|
+
"settingsGroupChevron": "F1KBNa_settingsGroupChevron",
|
|
45
|
+
"confirmCard": "F1KBNa_confirmCard",
|
|
46
|
+
"group": "F1KBNa_group",
|
|
47
|
+
"settingsRowText": "F1KBNa_settingsRowText",
|
|
48
|
+
"wrapActive": "F1KBNa_wrapActive",
|
|
49
|
+
"splitLdel": "F1KBNa_splitLdel",
|
|
55
50
|
"langSelect": "F1KBNa_langSelect",
|
|
56
|
-
"
|
|
51
|
+
"mdPreviewWrap": "F1KBNa_mdPreviewWrap",
|
|
52
|
+
"pickerCard": "F1KBNa_pickerCard",
|
|
53
|
+
"splitHScroll": "F1KBNa_splitHScroll",
|
|
54
|
+
"intraDel": "F1KBNa_intraDel",
|
|
55
|
+
"panelDocked": "F1KBNa_panelDocked",
|
|
56
|
+
"importNote": "F1KBNa_importNote",
|
|
57
|
+
"mdPreviewBody": "F1KBNa_mdPreviewBody",
|
|
58
|
+
"chip": "F1KBNa_chip",
|
|
59
|
+
"diffStats": "F1KBNa_diffStats",
|
|
60
|
+
"colorPickerInputRow": "F1KBNa_colorPickerInputRow",
|
|
57
61
|
"noticeText": "F1KBNa_noticeText",
|
|
58
|
-
"mirrored": "F1KBNa_mirrored",
|
|
59
|
-
"row": "F1KBNa_row",
|
|
60
|
-
"treeName": "F1KBNa_treeName",
|
|
61
|
-
"actionPrimary": "F1KBNa_actionPrimary",
|
|
62
|
-
"wrap": "F1KBNa_wrap",
|
|
63
|
-
"settingsGroupHeader": "F1KBNa_settingsGroupHeader",
|
|
64
|
-
"emptyState": "F1KBNa_emptyState",
|
|
65
62
|
"addButton": "F1KBNa_addButton",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"resizeHandle": "F1KBNa_resizeHandle",
|
|
71
|
-
"settingsRow": "F1KBNa_settingsRow",
|
|
72
|
-
"pickerInput": "F1KBNa_pickerInput",
|
|
73
|
-
"del": "F1KBNa_del",
|
|
74
|
-
"splitCol": "F1KBNa_splitCol",
|
|
75
|
-
"splitHScrollRow": "F1KBNa_splitHScrollRow",
|
|
76
|
-
"pickerCard": "F1KBNa_pickerCard",
|
|
77
|
-
"readError": "F1KBNa_readError",
|
|
78
|
-
"splitRdel": "F1KBNa_splitRdel",
|
|
79
|
-
"title": "F1KBNa_title",
|
|
80
|
-
"splitHScrollFill": "F1KBNa_splitHScrollFill",
|
|
81
|
-
"group": "F1KBNa_group",
|
|
82
|
-
"coverBackdrop": "F1KBNa_coverBackdrop",
|
|
83
|
-
"colorHueCursor": "F1KBNa_colorHueCursor",
|
|
84
|
-
"stepperValue": "F1KBNa_stepperValue",
|
|
85
|
-
"diffBodySplit": "F1KBNa_diffBodySplit",
|
|
63
|
+
"toggleThumb": "F1KBNa_toggleThumb",
|
|
64
|
+
"pickerCheck": "F1KBNa_pickerCheck",
|
|
65
|
+
"blockActions": "F1KBNa_blockActions",
|
|
66
|
+
"colorSvCursor": "F1KBNa_colorSvCursor",
|
|
86
67
|
"tree": "F1KBNa_tree",
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"detail": "F1KBNa_detail",
|
|
95
|
-
"fileListFloat": "F1KBNa_fileListFloat",
|
|
96
|
-
"coverNoticeCard": "F1KBNa_coverNoticeCard",
|
|
97
|
-
"blockPosition": "F1KBNa_blockPosition",
|
|
98
|
-
"chipLabel": "F1KBNa_chipLabel",
|
|
99
|
-
"coverButton": "F1KBNa_coverButton",
|
|
100
|
-
"expand": "F1KBNa_expand",
|
|
101
|
-
"diffPreviewTitle": "F1KBNa_diffPreviewTitle",
|
|
102
|
-
"settingsPage": "F1KBNa_settingsPage",
|
|
103
|
-
"treeNote": "F1KBNa_treeNote",
|
|
104
|
-
"fileListKnob": "F1KBNa_fileListKnob",
|
|
105
|
-
"bulkActions": "F1KBNa_bulkActions",
|
|
68
|
+
"panelFailure": "F1KBNa_panelFailure",
|
|
69
|
+
"markerDel": "F1KBNa_markerDel",
|
|
70
|
+
"mirrored": "F1KBNa_mirrored",
|
|
71
|
+
"colorPickerChevron": "F1KBNa_colorPickerChevron",
|
|
72
|
+
"note": "F1KBNa_note",
|
|
73
|
+
"settingsGroupBody": "F1KBNa_settingsGroupBody",
|
|
74
|
+
"diffFlashShake": "F1KBNa_diffFlashShake",
|
|
106
75
|
"iconAction": "F1KBNa_iconAction",
|
|
76
|
+
"splitCol": "F1KBNa_splitCol",
|
|
77
|
+
"panel": "F1KBNa_panel",
|
|
78
|
+
"missing": "F1KBNa_missing",
|
|
79
|
+
"missingHint": "F1KBNa_missingHint",
|
|
80
|
+
"searchMatchCurrent": "F1KBNa_searchMatchCurrent",
|
|
81
|
+
"rows": "F1KBNa_rows",
|
|
82
|
+
"diff": "F1KBNa_diff",
|
|
83
|
+
"settingsGroupText": "F1KBNa_settingsGroupText",
|
|
84
|
+
"context": "F1KBNa_context",
|
|
85
|
+
"treeName": "F1KBNa_treeName",
|
|
86
|
+
"searchToggle": "F1KBNa_searchToggle",
|
|
107
87
|
"hint": "F1KBNa_hint",
|
|
108
|
-
"
|
|
109
|
-
"
|
|
88
|
+
"close": "F1KBNa_close",
|
|
89
|
+
"stepperButtonUp": "F1KBNa_stepperButtonUp",
|
|
90
|
+
"settingsPage": "F1KBNa_settingsPage",
|
|
91
|
+
"fileList": "F1KBNa_fileList",
|
|
92
|
+
"colorPickerTrigger": "F1KBNa_colorPickerTrigger",
|
|
93
|
+
"pickerInput": "F1KBNa_pickerInput",
|
|
94
|
+
"searchInput": "F1KBNa_searchInput",
|
|
110
95
|
"langLabel": "F1KBNa_langLabel",
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"searchToggleOn": "F1KBNa_searchToggleOn",
|
|
116
|
-
"statusAction": "F1KBNa_statusAction",
|
|
117
|
-
"notice": "F1KBNa_notice",
|
|
118
|
-
"coverNotice": "F1KBNa_coverNotice",
|
|
119
|
-
"colorPickerInputRow": "F1KBNa_colorPickerInputRow",
|
|
120
|
-
"importButton": "F1KBNa_importButton",
|
|
121
|
-
"searchToggle": "F1KBNa_searchToggle",
|
|
122
|
-
"pickerName": "F1KBNa_pickerName",
|
|
123
|
-
"badge": "F1KBNa_badge",
|
|
96
|
+
"resizeHandle": "F1KBNa_resizeHandle",
|
|
97
|
+
"row": "F1KBNa_row",
|
|
98
|
+
"splitRoot": "F1KBNa_splitRoot",
|
|
99
|
+
"treeRow": "F1KBNa_treeRow",
|
|
124
100
|
"diffBodyWrap": "F1KBNa_diffBodyWrap",
|
|
125
|
-
"
|
|
126
|
-
"
|
|
101
|
+
"importButton": "F1KBNa_importButton",
|
|
102
|
+
"rowHead": "F1KBNa_rowHead",
|
|
127
103
|
"layer": "F1KBNa_layer",
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"presentationSelect": "F1KBNa_presentationSelect",
|
|
132
|
-
"settingsGroupChevron": "F1KBNa_settingsGroupChevron",
|
|
133
|
-
"colorPickerPreview": "F1KBNa_colorPickerPreview",
|
|
104
|
+
"fileListKnob": "F1KBNa_fileListKnob",
|
|
105
|
+
"statusBar": "F1KBNa_statusBar",
|
|
106
|
+
"detailEmpty": "F1KBNa_detailEmpty",
|
|
134
107
|
"listScroll": "F1KBNa_listScroll",
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
108
|
+
"colorSv": "F1KBNa_colorSv",
|
|
109
|
+
"colorPickerPreview": "F1KBNa_colorPickerPreview",
|
|
110
|
+
"actionError": "F1KBNa_actionError",
|
|
111
|
+
"noteCentered": "F1KBNa_noteCentered",
|
|
139
112
|
"diffPreview": "F1KBNa_diffPreview",
|
|
140
|
-
"
|
|
141
|
-
"searchInput": "F1KBNa_searchInput",
|
|
142
|
-
"subline": "F1KBNa_subline",
|
|
143
|
-
"colorValue": "F1KBNa_colorValue",
|
|
144
|
-
"splitHScroll": "F1KBNa_splitHScroll",
|
|
145
|
-
"splitLdel": "F1KBNa_splitLdel",
|
|
146
|
-
"colorBackdrop": "F1KBNa_colorBackdrop",
|
|
147
|
-
"blockActions": "F1KBNa_blockActions",
|
|
148
|
-
"intraAdd": "F1KBNa_intraAdd",
|
|
149
|
-
"diffBody": "F1KBNa_diffBody",
|
|
150
|
-
"flexSpacer": "F1KBNa_flexSpacer",
|
|
151
|
-
"confirmText": "F1KBNa_confirmText",
|
|
152
|
-
"missing": "F1KBNa_missing",
|
|
153
|
-
"panelDocked": "F1KBNa_panelDocked",
|
|
154
|
-
"toggle": "F1KBNa_toggle",
|
|
155
|
-
"kindHint": "F1KBNa_kindHint",
|
|
156
|
-
"colorPickerChevron": "F1KBNa_colorPickerChevron",
|
|
157
|
-
"diff": "F1KBNa_diff",
|
|
158
|
-
"coverNoticeText": "F1KBNa_coverNoticeText",
|
|
159
|
-
"importNote": "F1KBNa_importNote",
|
|
160
|
-
"missingHint": "F1KBNa_missingHint",
|
|
161
|
-
"mdPreviewBody": "F1KBNa_mdPreviewBody",
|
|
162
|
-
"coverHost": "F1KBNa_coverHost",
|
|
163
|
-
"footerButtons": "F1KBNa_footerButtons",
|
|
164
|
-
"headerEntryCount": "F1KBNa_headerEntryCount",
|
|
165
|
-
"mdPreviewWrap": "F1KBNa_mdPreviewWrap",
|
|
166
|
-
"confirmBackdrop": "F1KBNa_confirmBackdrop",
|
|
167
|
-
"splitCols": "F1KBNa_splitCols",
|
|
168
|
-
"badgeLabel": "F1KBNa_badgeLabel",
|
|
169
|
-
"settingsRowDesc": "F1KBNa_settingsRowDesc",
|
|
170
|
-
"splitDivider": "F1KBNa_splitDivider",
|
|
171
|
-
"split": "F1KBNa_split",
|
|
172
|
-
"emptyActions": "F1KBNa_emptyActions",
|
|
113
|
+
"expandExpanded": "F1KBNa_expandExpanded",
|
|
173
114
|
"settingsGroupTitle": "F1KBNa_settingsGroupTitle",
|
|
174
|
-
"
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"toggleOn": "F1KBNa_toggleOn",
|
|
115
|
+
"readError": "F1KBNa_readError",
|
|
116
|
+
"dockHost": "F1KBNa_dockHost",
|
|
117
|
+
"coverNoticeGlyph": "F1KBNa_coverNoticeGlyph",
|
|
118
|
+
"diffHeader": "F1KBNa_diffHeader",
|
|
119
|
+
"panelFailureRetry": "F1KBNa_panelFailureRetry",
|
|
120
|
+
"confirmActions": "F1KBNa_confirmActions",
|
|
121
|
+
"blockPosition": "F1KBNa_blockPosition",
|
|
122
|
+
"kindTag": "F1KBNa_kindTag",
|
|
183
123
|
"mdPreviewFallback": "F1KBNa_mdPreviewFallback",
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"wrapActive": "F1KBNa_wrapActive",
|
|
187
|
-
"diffStats": "F1KBNa_diffStats",
|
|
188
|
-
"pickerCheck": "F1KBNa_pickerCheck",
|
|
189
|
-
"badgeCount": "F1KBNa_badgeCount",
|
|
124
|
+
"mdPreviewDouble": "F1KBNa_mdPreviewDouble",
|
|
125
|
+
"presentationHost": "F1KBNa_presentationHost",
|
|
190
126
|
"diffPreviewScroll": "F1KBNa_diffPreviewScroll",
|
|
191
|
-
"noticeButton": "F1KBNa_noticeButton",
|
|
192
|
-
"intraDel": "F1KBNa_intraDel",
|
|
193
|
-
"rows": "F1KBNa_rows",
|
|
194
|
-
"delCount": "F1KBNa_delCount",
|
|
195
|
-
"pickerForm": "F1KBNa_pickerForm",
|
|
196
|
-
"rowPath": "F1KBNa_rowPath",
|
|
197
|
-
"kindTag": "F1KBNa_kindTag",
|
|
198
127
|
"chipPresentation": "F1KBNa_chipPresentation",
|
|
199
|
-
"
|
|
200
|
-
"
|
|
128
|
+
"splitRadd": "F1KBNa_splitRadd",
|
|
129
|
+
"coverHost": "F1KBNa_coverHost",
|
|
201
130
|
"stepperButton": "F1KBNa_stepperButton",
|
|
202
|
-
"
|
|
203
|
-
"
|
|
204
|
-
"
|
|
131
|
+
"rail": "F1KBNa_rail",
|
|
132
|
+
"kindHint": "F1KBNa_kindHint",
|
|
133
|
+
"line": "F1KBNa_line",
|
|
134
|
+
"headerEntry": "F1KBNa_headerEntry",
|
|
135
|
+
"bulkActions": "F1KBNa_bulkActions",
|
|
136
|
+
"floatResizeHandle": "F1KBNa_floatResizeHandle",
|
|
137
|
+
"pickerNote": "F1KBNa_pickerNote",
|
|
138
|
+
"vSpacer": "F1KBNa_vSpacer",
|
|
139
|
+
"splitHScrollFill": "F1KBNa_splitHScrollFill",
|
|
140
|
+
"colorPicker": "F1KBNa_colorPicker",
|
|
141
|
+
"delCount": "F1KBNa_delCount",
|
|
142
|
+
"coverPopover": "F1KBNa_coverPopover",
|
|
143
|
+
"badgeCount": "F1KBNa_badgeCount",
|
|
144
|
+
"badgeLabel": "F1KBNa_badgeLabel",
|
|
145
|
+
"notice": "F1KBNa_notice",
|
|
146
|
+
"wrap": "F1KBNa_wrap",
|
|
147
|
+
"colorPickerPopover": "F1KBNa_colorPickerPopover",
|
|
148
|
+
"searchBar": "F1KBNa_searchBar",
|
|
149
|
+
"settingsGroupHeader": "F1KBNa_settingsGroupHeader",
|
|
150
|
+
"headerEntryCount": "F1KBNa_headerEntryCount",
|
|
151
|
+
"settingsRowDesc": "F1KBNa_settingsRowDesc",
|
|
152
|
+
"coverNotice": "F1KBNa_coverNotice",
|
|
153
|
+
"chipLabel": "F1KBNa_chipLabel",
|
|
154
|
+
"subline": "F1KBNa_subline",
|
|
155
|
+
"addCount": "F1KBNa_addCount",
|
|
156
|
+
"diffPath": "F1KBNa_diffPath",
|
|
157
|
+
"mdPreviewContent": "F1KBNa_mdPreviewContent",
|
|
158
|
+
"settingsRow": "F1KBNa_settingsRow",
|
|
159
|
+
"emptyState": "F1KBNa_emptyState",
|
|
160
|
+
"divergedHint": "F1KBNa_divergedHint",
|
|
205
161
|
"headerActions": "F1KBNa_headerActions",
|
|
206
|
-
"
|
|
162
|
+
"confirmBackdrop": "F1KBNa_confirmBackdrop",
|
|
163
|
+
"diffBody": "F1KBNa_diffBody",
|
|
164
|
+
"panelFailureText": "F1KBNa_panelFailureText",
|
|
165
|
+
"searchMatch": "F1KBNa_searchMatch",
|
|
166
|
+
"markerAdd": "F1KBNa_markerAdd",
|
|
167
|
+
"coverNoticeCard": "F1KBNa_coverNoticeCard",
|
|
168
|
+
"coverNoticeFade": "F1KBNa_coverNoticeFade",
|
|
169
|
+
"badge": "F1KBNa_badge",
|
|
170
|
+
"states": "F1KBNa_states",
|
|
171
|
+
"del": "F1KBNa_del",
|
|
172
|
+
"colorHue": "F1KBNa_colorHue",
|
|
173
|
+
"colorHueCursor": "F1KBNa_colorHueCursor",
|
|
174
|
+
"colorSwatch": "F1KBNa_colorSwatch",
|
|
207
175
|
"mdPreviewSingle": "F1KBNa_mdPreviewSingle",
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
176
|
+
"coverBackdrop": "F1KBNa_coverBackdrop",
|
|
177
|
+
"confirmText": "F1KBNa_confirmText",
|
|
178
|
+
"toggleOn": "F1KBNa_toggleOn",
|
|
179
|
+
"detail": "F1KBNa_detail",
|
|
180
|
+
"pickerClose": "F1KBNa_pickerClose",
|
|
181
|
+
"rowMeta": "F1KBNa_rowMeta",
|
|
212
182
|
"settingsReset": "F1KBNa_settingsReset",
|
|
183
|
+
"lines": "F1KBNa_lines",
|
|
184
|
+
"diffPreviewTitle": "F1KBNa_diffPreviewTitle",
|
|
185
|
+
"colorBackdrop": "F1KBNa_colorBackdrop",
|
|
213
186
|
"fileListGrow": "F1KBNa_fileListGrow",
|
|
187
|
+
"pickerTitle": "F1KBNa_pickerTitle",
|
|
188
|
+
"treeCaret": "F1KBNa_treeCaret",
|
|
189
|
+
"treeNote": "F1KBNa_treeNote",
|
|
190
|
+
"searchCount": "F1KBNa_searchCount",
|
|
191
|
+
"presentationSelect": "F1KBNa_presentationSelect",
|
|
192
|
+
"title": "F1KBNa_title",
|
|
193
|
+
"blockFlash": "F1KBNa_blockFlash",
|
|
194
|
+
"divider": "F1KBNa_divider",
|
|
195
|
+
"overviewRuler": "F1KBNa_overviewRuler",
|
|
196
|
+
"coverCard": "F1KBNa_coverCard",
|
|
197
|
+
"coverButton": "F1KBNa_coverButton",
|
|
198
|
+
"colorPickerInput": "F1KBNa_colorPickerInput",
|
|
199
|
+
"splitDivider": "F1KBNa_splitDivider",
|
|
200
|
+
"rowFailed": "F1KBNa_rowFailed",
|
|
201
|
+
"splitHScrollRow": "F1KBNa_splitHScrollRow",
|
|
202
|
+
"diffBodySplit": "F1KBNa_diffBodySplit",
|
|
203
|
+
"diffFlashFade": "F1KBNa_diffFlashFade",
|
|
204
|
+
"splitLadd": "F1KBNa_splitLadd",
|
|
205
|
+
"pickerName": "F1KBNa_pickerName",
|
|
214
206
|
"diffActions": "F1KBNa_diffActions",
|
|
207
|
+
"splitRdel": "F1KBNa_splitRdel",
|
|
208
|
+
"add": "F1KBNa_add",
|
|
209
|
+
"expand": "F1KBNa_expand",
|
|
210
|
+
"overviewMarker": "F1KBNa_overviewMarker",
|
|
211
|
+
"coverNoticeText": "F1KBNa_coverNoticeText",
|
|
212
|
+
"intraAdd": "F1KBNa_intraAdd",
|
|
213
|
+
"splitCols": "F1KBNa_splitCols",
|
|
214
|
+
"settingsSelector": "F1KBNa_settingsSelector",
|
|
215
|
+
"pickerIcon": "F1KBNa_pickerIcon",
|
|
216
|
+
"toggle": "F1KBNa_toggle",
|
|
217
|
+
"footerButtons": "F1KBNa_footerButtons",
|
|
218
|
+
"stepperValue": "F1KBNa_stepperValue",
|
|
219
|
+
"colorPickerPanel": "F1KBNa_colorPickerPanel",
|
|
220
|
+
"colorValue": "F1KBNa_colorValue",
|
|
221
|
+
"stepper": "F1KBNa_stepper",
|
|
215
222
|
"action": "F1KBNa_action",
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
"treeCaret": "F1KBNa_treeCaret",
|
|
226
|
-
"settingsGroupDesc": "F1KBNa_settingsGroupDesc",
|
|
227
|
-
"rowHead": "F1KBNa_rowHead",
|
|
228
|
-
"settingsSelector": "F1KBNa_settingsSelector"
|
|
223
|
+
"statusAction": "F1KBNa_statusAction",
|
|
224
|
+
"settingsGroup": "F1KBNa_settingsGroup",
|
|
225
|
+
"blockFlashShake": "F1KBNa_blockFlashShake",
|
|
226
|
+
"fileListFloat": "F1KBNa_fileListFloat",
|
|
227
|
+
"gutter": "F1KBNa_gutter",
|
|
228
|
+
"searchToggleOn": "F1KBNa_searchToggleOn",
|
|
229
|
+
"groupHead": "F1KBNa_groupHead",
|
|
230
|
+
"split": "F1KBNa_split",
|
|
231
|
+
"pickerForm": "F1KBNa_pickerForm"
|
|
229
232
|
};
|
|
230
233
|
//#endregion
|
|
231
234
|
//#region lib/types/client/PathPicker.js
|
|
@@ -18543,6 +18546,55 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
18543
18546
|
};
|
|
18544
18547
|
}
|
|
18545
18548
|
//#endregion
|
|
18549
|
+
//#region lib/types/client/boundary.js
|
|
18550
|
+
/**
|
|
18551
|
+
* A crash inside the panel must not take the review away for the rest of the page.
|
|
18552
|
+
*
|
|
18553
|
+
* The slot renderer wraps every seat in its own boundary, but a crash there
|
|
18554
|
+
* *abdicates* the entry: the footer row, the header button and the docked tab
|
|
18555
|
+
* disappear for the life of the page, with nothing on screen to say why and no way
|
|
18556
|
+
* back but a reload. This boundary keeps a failure inside our own tree instead —
|
|
18557
|
+
* the entry stays registered, it says what happened, and one press retries the
|
|
18558
|
+
* render — so a broken panel can never present as "the panel is gone" or as a
|
|
18559
|
+
* blank surface with no explanation.
|
|
18560
|
+
*
|
|
18561
|
+
* @module dsh-diff-approval/client/boundary
|
|
18562
|
+
*/
|
|
18563
|
+
/**
|
|
18564
|
+
* Keep one panel mount's crash inside its own slot entry, with a visible note and
|
|
18565
|
+
* a retry that re-renders it.
|
|
18566
|
+
*/
|
|
18567
|
+
var PanelBoundary = class extends react.Component {
|
|
18568
|
+
state = { failed: false };
|
|
18569
|
+
static getDerivedStateFromError() {
|
|
18570
|
+
return { failed: true };
|
|
18571
|
+
}
|
|
18572
|
+
componentDidCatch(error, info) {
|
|
18573
|
+
console.error("diff-approval panel crashed:", error, info.componentStack);
|
|
18574
|
+
}
|
|
18575
|
+
render() {
|
|
18576
|
+
if (!this.state.failed) return this.props.children;
|
|
18577
|
+
const { t } = this.props;
|
|
18578
|
+
return (0, react_jsx_runtime.jsxs)("div", {
|
|
18579
|
+
className: PendingPanel_module_css_default.panelFailure,
|
|
18580
|
+
role: "alert",
|
|
18581
|
+
"data-diff-approval-failed": true,
|
|
18582
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
18583
|
+
className: PendingPanel_module_css_default.panelFailureText,
|
|
18584
|
+
children: t("panel.crashed")
|
|
18585
|
+
}), (0, react_jsx_runtime.jsx)("button", {
|
|
18586
|
+
type: "button",
|
|
18587
|
+
className: PendingPanel_module_css_default.panelFailureRetry,
|
|
18588
|
+
"data-diff-approval-failed-retry": true,
|
|
18589
|
+
onClick: () => {
|
|
18590
|
+
this.setState({ failed: false });
|
|
18591
|
+
},
|
|
18592
|
+
children: t("action.retry")
|
|
18593
|
+
})]
|
|
18594
|
+
});
|
|
18595
|
+
}
|
|
18596
|
+
};
|
|
18597
|
+
//#endregion
|
|
18546
18598
|
//#region lib/types/client/dock.js
|
|
18547
18599
|
/**
|
|
18548
18600
|
* The app's right sidebar (the docking surface) as a host for the review panel.
|
|
@@ -18575,6 +18627,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
18575
18627
|
/** The floating panel's own visibility, published on every change so a second
|
|
18576
18628
|
* entry can light up while the panel is open (`detail.open`). */
|
|
18577
18629
|
const PANEL_STATE_EVENT = "diff-approval:panel-state";
|
|
18630
|
+
/** Name a file for the panel to show, from a mount that is not the panel itself
|
|
18631
|
+
* (the produced-file chip): every mounted panel instance switches to it and lands
|
|
18632
|
+
* on its first change — the ask is "show me this diff", not "put me back where I
|
|
18633
|
+
* was". The file is also recorded as the last one, so an instance that only
|
|
18634
|
+
* appears afterwards (the docked tab) opens the same file the same way. */
|
|
18635
|
+
const OPEN_PANEL_FILE_EVENT = "diff-approval:panel-file";
|
|
18578
18636
|
/** How often the optional sidebar services are looked up, and for how long. The
|
|
18579
18637
|
* sidebar's plugin may attach after this one; ~15s of patience covers a slow
|
|
18580
18638
|
* boot, and finding them stops the timer. */
|
|
@@ -18698,17 +18756,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
18698
18756
|
* @param props - the seat's runtime props, this plugin's face, and `useTabInfo`.
|
|
18699
18757
|
* @returns the host element and, once it exists, the docked panel inside it.
|
|
18700
18758
|
*/
|
|
18701
|
-
/** Keeps a failure inside the tab from
|
|
18702
|
-
* the
|
|
18703
|
-
|
|
18704
|
-
state = { failed: false };
|
|
18705
|
-
static getDerivedStateFromError() {
|
|
18706
|
-
return { failed: true };
|
|
18707
|
-
}
|
|
18708
|
-
render() {
|
|
18709
|
-
return this.state.failed ? null : this.props.children;
|
|
18710
|
-
}
|
|
18711
|
-
};
|
|
18759
|
+
/** Keeps a failure inside the tab from taking the app's tree down with it, and
|
|
18760
|
+
* from leaving the pane blank: {@link PanelBoundary} says what happened and can
|
|
18761
|
+
* re-render the panel without a reload. */
|
|
18712
18762
|
function DiffDockBody(props) {
|
|
18713
18763
|
const { t, useTabInfo, onDockShowing, ...panelProps } = props;
|
|
18714
18764
|
const [host, setHost] = (0, react.useState)(null);
|
|
@@ -18723,12 +18773,15 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
18723
18773
|
ref: setHost,
|
|
18724
18774
|
className: PendingPanel_module_css_default.dockHost,
|
|
18725
18775
|
"data-diff-approval-dock": true
|
|
18726
|
-
}), host !== null && (0, react_jsx_runtime.jsx)(
|
|
18727
|
-
...panelProps,
|
|
18776
|
+
}), host !== null && (0, react_jsx_runtime.jsx)(PanelBoundary, {
|
|
18728
18777
|
t,
|
|
18729
|
-
|
|
18730
|
-
|
|
18731
|
-
|
|
18778
|
+
children: (0, react_jsx_runtime.jsx)(PendingPanel, {
|
|
18779
|
+
...panelProps,
|
|
18780
|
+
t,
|
|
18781
|
+
docked: true,
|
|
18782
|
+
dockHost: host
|
|
18783
|
+
})
|
|
18784
|
+
})] });
|
|
18732
18785
|
}
|
|
18733
18786
|
/**
|
|
18734
18787
|
* The tab chip: the mode switch, then the panel's title with the pending count —
|
|
@@ -18880,6 +18933,67 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
18880
18933
|
timer = window.setTimeout(tick, DOCK_LOOKUP_INTERVAL_MS);
|
|
18881
18934
|
}
|
|
18882
18935
|
//#endregion
|
|
18936
|
+
//#region lib/types/client/panel-memory.js
|
|
18937
|
+
/**
|
|
18938
|
+
* Where the review panel was left, for this page's lifetime.
|
|
18939
|
+
*
|
|
18940
|
+
* Closing the panel is not "done reviewing": reopening it should put the reader
|
|
18941
|
+
* back on the file they were in, at the offset they were at. That is a fact about
|
|
18942
|
+
* this visit rather than a stored preference, so it lives in module state — which
|
|
18943
|
+
* also gives the two mounts that show the panel (the floating overlay and the
|
|
18944
|
+
* docked tab) one shared memory, so switching presentation does not lose the
|
|
18945
|
+
* place, and a reload starts clean.
|
|
18946
|
+
*
|
|
18947
|
+
* Keyed by session: two sessions have their own pending lists, and one session's
|
|
18948
|
+
* panel must not resume another's file.
|
|
18949
|
+
*
|
|
18950
|
+
* @module dsh-diff-approval/client/panel-memory
|
|
18951
|
+
*/
|
|
18952
|
+
const views = /* @__PURE__ */ new Map();
|
|
18953
|
+
/** This session's record, created on first use. */
|
|
18954
|
+
function viewOf(sessionId) {
|
|
18955
|
+
let view = views.get(sessionId);
|
|
18956
|
+
if (view === void 0) {
|
|
18957
|
+
view = { offsets: /* @__PURE__ */ new Map() };
|
|
18958
|
+
views.set(sessionId, view);
|
|
18959
|
+
}
|
|
18960
|
+
return view;
|
|
18961
|
+
}
|
|
18962
|
+
/**
|
|
18963
|
+
* Remember that a session's panel was left showing one file, and where in it.
|
|
18964
|
+
* @param sessionId - the session the panel was reviewing; nothing is recorded
|
|
18965
|
+
* without one.
|
|
18966
|
+
* @param view - the pending entry that was open, and the code view's scrollTop.
|
|
18967
|
+
* An absent offset *forgets* any remembered place for that file, which is what
|
|
18968
|
+
* a caller that is about to open it at its first change wants: a mount that only
|
|
18969
|
+
* appears afterwards then lands there too, instead of on a stale offset.
|
|
18970
|
+
*/
|
|
18971
|
+
function rememberPanelView(sessionId, view) {
|
|
18972
|
+
if (sessionId === void 0) return;
|
|
18973
|
+
const record = viewOf(sessionId);
|
|
18974
|
+
record.last = view.fileId;
|
|
18975
|
+
if (view.scrollTop === void 0) record.offsets.delete(view.fileId);
|
|
18976
|
+
else record.offsets.set(view.fileId, view.scrollTop);
|
|
18977
|
+
}
|
|
18978
|
+
/**
|
|
18979
|
+
* The file a session's panel was last showing.
|
|
18980
|
+
* @param sessionId - the session, if any.
|
|
18981
|
+
* @returns the pending entry id, or undefined when that session's panel has never
|
|
18982
|
+
* closed on a file.
|
|
18983
|
+
*/
|
|
18984
|
+
function lastPanelFile(sessionId) {
|
|
18985
|
+
return sessionId === void 0 ? void 0 : views.get(sessionId)?.last;
|
|
18986
|
+
}
|
|
18987
|
+
/**
|
|
18988
|
+
* How far down one file was left, when it has been left before.
|
|
18989
|
+
* @param sessionId - the session, if any.
|
|
18990
|
+
* @param fileId - the pending entry id.
|
|
18991
|
+
* @returns the remembered scrollTop, or undefined when there is none.
|
|
18992
|
+
*/
|
|
18993
|
+
function panelFileOffset(sessionId, fileId) {
|
|
18994
|
+
return sessionId === void 0 ? void 0 : views.get(sessionId)?.offsets.get(fileId);
|
|
18995
|
+
}
|
|
18996
|
+
//#endregion
|
|
18883
18997
|
//#region lib/types/client/PendingPanel.js
|
|
18884
18998
|
/** Sidebar-foot pending-edit review action and the split review panel it opens. */
|
|
18885
18999
|
/**
|
|
@@ -19069,6 +19183,11 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
19069
19183
|
/** Total width of the two line-number gutters, subtracted from the code width
|
|
19070
19184
|
* when measuring wrapped line heights. */
|
|
19071
19185
|
const WRAP_GUTTERS_PX = 88;
|
|
19186
|
+
/** How long a requested dock may take to actually show the panel before the
|
|
19187
|
+
* overlay steps in. The tab body mounts a frame or two after the ask, so the
|
|
19188
|
+
* wait is short — but a sidebar that accepts the ask and never brings the tab up
|
|
19189
|
+
* must not swallow the click. */
|
|
19190
|
+
const DOCK_REVEAL_GRACE_MS = 400;
|
|
19072
19191
|
/** A shared canvas for measuring wrapped line heights (CPU-only, no DOM reflow). */
|
|
19073
19192
|
let measureCanvas;
|
|
19074
19193
|
/**
|
|
@@ -20677,7 +20796,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
20677
20796
|
});
|
|
20678
20797
|
}
|
|
20679
20798
|
/** The selected file's diff, actions, jump controls, and copy toolbar. */
|
|
20680
|
-
function PendingDiff({ file, busy, workspacePath, jumpSignal, undoFlash, failedMessage, onPasteReference, onToast, t, onKeep, onRevert, onRefreshVcs, onBlockKeep, onBlockRevert, onOpen, onPreviewImage }) {
|
|
20799
|
+
function PendingDiff({ file, busy, workspacePath, jumpSignal, undoFlash, landingTop, landingTick, failedMessage, onPasteReference, onToast, t, onKeep, onRevert, onRefreshVcs, onBlockKeep, onBlockRevert, onOpen, onPreviewImage }) {
|
|
20681
20800
|
const [langOverride, setLangOverride] = (0, react.useState)(void 0);
|
|
20682
20801
|
const [langMenuOpen, setLangMenuOpen] = (0, react.useState)(false);
|
|
20683
20802
|
const langMenuItems = (0, react.useMemo)(() => [{
|
|
@@ -20842,6 +20961,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
20842
20961
|
const [previewFlash, setPreviewFlash] = (0, react.useState)(void 0);
|
|
20843
20962
|
const previewFlashRef = (0, react.useRef)(null);
|
|
20844
20963
|
const previewFlashPendingRef = (0, react.useRef)(false);
|
|
20964
|
+
/** The offset the file now showing was asked to open at, held until the landing
|
|
20965
|
+
* effect below spends it (that effect runs a render later than the switch). */
|
|
20966
|
+
const landingTopRef = (0, react.useRef)(void 0);
|
|
20845
20967
|
const selectionTextRef = (0, react.useRef)("");
|
|
20846
20968
|
const [copied, setCopied] = (0, react.useState)(false);
|
|
20847
20969
|
const [searchOpen, setSearchOpen] = (0, react.useState)(false);
|
|
@@ -20857,10 +20979,13 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
20857
20979
|
previewFlashPendingRef.current = true;
|
|
20858
20980
|
};
|
|
20859
20981
|
(0, react.useEffect)(() => {
|
|
20860
|
-
|
|
20982
|
+
landingTopRef.current = landingTop;
|
|
20983
|
+
if (landingTop === void 0) {
|
|
20984
|
+
setFocus(0);
|
|
20985
|
+
bumpFlash(false);
|
|
20986
|
+
} else setFocus(blockIndexAtOffset(landingTop));
|
|
20861
20987
|
setScrollTick((tick) => tick + 1);
|
|
20862
20988
|
bodyRef.current?.focus();
|
|
20863
|
-
bumpFlash(false);
|
|
20864
20989
|
setHoveredBlock(void 0);
|
|
20865
20990
|
setSelection(void 0);
|
|
20866
20991
|
setLangOverride(void 0);
|
|
@@ -20869,7 +20994,11 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
20869
20994
|
setSearchOpen(false);
|
|
20870
20995
|
setSearchQuery("");
|
|
20871
20996
|
setSearchIndex(0);
|
|
20872
|
-
}, [
|
|
20997
|
+
}, [
|
|
20998
|
+
file.id,
|
|
20999
|
+
landingTop,
|
|
21000
|
+
landingTick
|
|
21001
|
+
]);
|
|
20873
21002
|
(0, react.useEffect)(() => {
|
|
20874
21003
|
if (undoFlash === 0) return;
|
|
20875
21004
|
setFocus(0);
|
|
@@ -21470,6 +21599,19 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21470
21599
|
]);
|
|
21471
21600
|
(0, react.useLayoutEffect)(() => {
|
|
21472
21601
|
if (rowCount === 0) return;
|
|
21602
|
+
const resumed = landingTopRef.current;
|
|
21603
|
+
if (resumed !== void 0) {
|
|
21604
|
+
landingTopRef.current = void 0;
|
|
21605
|
+
if (!previewActive) {
|
|
21606
|
+
const resumeBody = bodyRef.current;
|
|
21607
|
+
if (resumeBody !== null) {
|
|
21608
|
+
const clamped = Math.max(0, Math.min(resumed, resumeBody.scrollHeight - resumeBody.clientHeight));
|
|
21609
|
+
if (resumeBody.scrollTop !== clamped) resumeBody.scrollTop = clamped;
|
|
21610
|
+
setScrollTop(clamped);
|
|
21611
|
+
}
|
|
21612
|
+
}
|
|
21613
|
+
return;
|
|
21614
|
+
}
|
|
21473
21615
|
const block = model.blocks[focus];
|
|
21474
21616
|
if (block === void 0) return;
|
|
21475
21617
|
if (previewActive) {
|
|
@@ -21571,6 +21713,23 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21571
21713
|
if (jumpSignal === 0) return;
|
|
21572
21714
|
jumpBlock(1, true, false);
|
|
21573
21715
|
}, [jumpSignal]);
|
|
21716
|
+
/**
|
|
21717
|
+
* The change block the view is in at one scroll offset: the last block at or
|
|
21718
|
+
* above the offset, i.e. the same anchor `onScroll` re-focuses from. Used when
|
|
21719
|
+
* a resumed view starts away from the first change, so prev/next walk from the
|
|
21720
|
+
* block the reader was actually in.
|
|
21721
|
+
* @param offset - a code view scrollTop.
|
|
21722
|
+
* @returns the block index; 0 when the offset is above every change.
|
|
21723
|
+
*/
|
|
21724
|
+
const blockIndexAtOffset = (offset) => {
|
|
21725
|
+
const anchor = offset + leadRows * ROW_HEIGHT_PX;
|
|
21726
|
+
let found = 0;
|
|
21727
|
+
for (let index = 0; index < model.blocks.length; index++) {
|
|
21728
|
+
const block = model.blocks[index];
|
|
21729
|
+
if (block !== void 0 && offsetOf(block.start) <= anchor + NAV_ANCHOR_TOLERANCE_PX) found = index;
|
|
21730
|
+
}
|
|
21731
|
+
return found;
|
|
21732
|
+
};
|
|
21574
21733
|
const onScroll = () => {
|
|
21575
21734
|
const body = bodyRef.current;
|
|
21576
21735
|
if (body === null) return;
|
|
@@ -22525,6 +22684,15 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22525
22684
|
const dockAvailable = useDock?.((state) => state.available) === true;
|
|
22526
22685
|
/** Why the dock is unavailable, when it is (shown once, if asked for). */
|
|
22527
22686
|
const dockReason = useDock?.((state) => state.reason);
|
|
22687
|
+
/** The dock's visibility as the latest render has it, for the reveal fallback's
|
|
22688
|
+
* timer (which runs outside this render's closure). */
|
|
22689
|
+
const dockShowingRef = (0, react.useRef)(false);
|
|
22690
|
+
dockShowingRef.current = dockShowing;
|
|
22691
|
+
/** The pending "did the dock actually come up" check, if any. */
|
|
22692
|
+
const revealTimerRef = (0, react.useRef)(void 0);
|
|
22693
|
+
(0, react.useEffect)(() => () => {
|
|
22694
|
+
if (revealTimerRef.current !== void 0) window.clearTimeout(revealTimerRef.current);
|
|
22695
|
+
}, []);
|
|
22528
22696
|
const revealRef = (0, react.useRef)(() => {});
|
|
22529
22697
|
/** The header entry's toggle, deferred to the latest render (see `toggleOpen`):
|
|
22530
22698
|
* this instance owns the overlay's open state, and the entry is a second mount
|
|
@@ -22551,6 +22719,29 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22551
22719
|
const snapshot = usePending((snapshot) => snapshot);
|
|
22552
22720
|
const [open, setOpen] = (0, react.useState)(false);
|
|
22553
22721
|
const [selected, setSelected] = (0, react.useState)("");
|
|
22722
|
+
/**
|
|
22723
|
+
* Where the diff should land for the file it is about to show, and a nonce so a
|
|
22724
|
+
* repeated request for the *same* file lands again. `top` carries the offset the
|
|
22725
|
+
* reader was left at when the panel resumes a view (see `panel-memory`); it is
|
|
22726
|
+
* absent when the request means "show me this diff" — a file picked from the
|
|
22727
|
+
* list, the advance a decision leaves behind, or the produced-file chip — and
|
|
22728
|
+
* that lands on the file's first change.
|
|
22729
|
+
*/
|
|
22730
|
+
const [landing, setLanding] = (0, react.useState)(void 0);
|
|
22731
|
+
/** Ask the diff to land on one file: its first change unless `top` says where.
|
|
22732
|
+
* The nonce makes the request an event rather than a value, so re-clicking the
|
|
22733
|
+
* chip for the file already open lands on its first change again. */
|
|
22734
|
+
const landOn = (fileId, top) => {
|
|
22735
|
+
setLanding((prev) => ({
|
|
22736
|
+
fileId,
|
|
22737
|
+
top,
|
|
22738
|
+
n: (prev?.n ?? 0) + 1
|
|
22739
|
+
}));
|
|
22740
|
+
};
|
|
22741
|
+
/** The selection as the latest render has it, for the closers that run from a
|
|
22742
|
+
* cleanup (the docked tab unmounting) rather than from a handler. */
|
|
22743
|
+
const selectedRef = (0, react.useRef)(selected);
|
|
22744
|
+
selectedRef.current = selected;
|
|
22554
22745
|
/** Bumped when the already-open file is clicked again, to jump to the next
|
|
22555
22746
|
* diff block in the open file's detail pane. */
|
|
22556
22747
|
const [jumpSignal, setJumpSignal] = (0, react.useState)(0);
|
|
@@ -22585,7 +22776,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22585
22776
|
return;
|
|
22586
22777
|
}
|
|
22587
22778
|
revealPanel();
|
|
22588
|
-
|
|
22779
|
+
rememberPanelView(current, { fileId: entry.id });
|
|
22780
|
+
window.dispatchEvent(new CustomEvent(OPEN_PANEL_FILE_EVENT, { detail: { fileId: entry.id } }));
|
|
22589
22781
|
};
|
|
22590
22782
|
(0, react.useEffect)(() => {
|
|
22591
22783
|
const onOpenFile = (event) => {
|
|
@@ -22598,6 +22790,18 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22598
22790
|
window.removeEventListener(OPEN_FILE_EVENT, onOpenFile);
|
|
22599
22791
|
};
|
|
22600
22792
|
}, []);
|
|
22793
|
+
(0, react.useEffect)(() => {
|
|
22794
|
+
const onPanelFile = (event) => {
|
|
22795
|
+
const detail = event.detail;
|
|
22796
|
+
if (detail === void 0 || typeof detail.fileId !== "string") return;
|
|
22797
|
+
setSelected(detail.fileId);
|
|
22798
|
+
landOn(detail.fileId);
|
|
22799
|
+
};
|
|
22800
|
+
window.addEventListener(OPEN_PANEL_FILE_EVENT, onPanelFile);
|
|
22801
|
+
return () => {
|
|
22802
|
+
window.removeEventListener(OPEN_PANEL_FILE_EVENT, onPanelFile);
|
|
22803
|
+
};
|
|
22804
|
+
}, []);
|
|
22601
22805
|
/** Whether the redo-cleared notice is showing (bottom-right, OK to dismiss). */
|
|
22602
22806
|
const [redoClearedNotice, setRedoClearedNotice] = (0, react.useState)(false);
|
|
22603
22807
|
/** A last-block keep/revert awaiting the user's remove-or-keep choice; the
|
|
@@ -22848,13 +23052,23 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22848
23052
|
if (fresh.length > 0) setActionToast(fresh[0][1]);
|
|
22849
23053
|
failedRef.current = current;
|
|
22850
23054
|
}, [snapshot.failed]);
|
|
23055
|
+
const wasShowingRef = (0, react.useRef)(false);
|
|
22851
23056
|
(0, react.useLayoutEffect)(() => {
|
|
22852
|
-
|
|
22853
|
-
|
|
22854
|
-
|
|
22855
|
-
if (
|
|
23057
|
+
const showing = open || docked;
|
|
23058
|
+
const started = showing && !wasShowingRef.current;
|
|
23059
|
+
wasShowingRef.current = showing;
|
|
23060
|
+
if (!showing) return;
|
|
23061
|
+
const pending = (id) => files.some((file) => file.id === id);
|
|
23062
|
+
const keep = selected !== "" && pending(selected) ? selected : void 0;
|
|
23063
|
+
const remembered = keep === void 0 && started ? lastPanelFile(current) : void 0;
|
|
23064
|
+
const resumed = remembered !== void 0 && pending(remembered) ? remembered : void 0;
|
|
23065
|
+
const pick = keep ?? resumed ?? files[0]?.id;
|
|
23066
|
+
if (pick === void 0) return;
|
|
23067
|
+
if (pick !== selected) setSelected(pick);
|
|
23068
|
+
if (started) landOn(pick, panelFileOffset(current, pick));
|
|
22856
23069
|
}, [
|
|
22857
23070
|
open,
|
|
23071
|
+
docked,
|
|
22858
23072
|
current,
|
|
22859
23073
|
files,
|
|
22860
23074
|
selected
|
|
@@ -22880,19 +23094,51 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22880
23094
|
/**
|
|
22881
23095
|
* Show the panel the way the user last had it. `dock` hands off to the app's
|
|
22882
23096
|
* right sidebar, where the panel lives in its own tab; `float` opens this
|
|
22883
|
-
* floating panel, covering whatever {@link panelCover} says.
|
|
22884
|
-
*
|
|
22885
|
-
*
|
|
23097
|
+
* floating panel, covering whatever {@link panelCover} says.
|
|
23098
|
+
*
|
|
23099
|
+
* A remembered dock is only taken when the dock can actually show the panel.
|
|
23100
|
+
* "dock" is remembered from a page where the right sidebar existed, and the ask
|
|
23101
|
+
* itself is not proof: `onOpenDock` is always wired, and a sidebar whose
|
|
23102
|
+
* services never came up (or a controller that has since gone stale) accepts the
|
|
23103
|
+
* call and shows nothing. That used to swallow the click whole — the badge, the
|
|
23104
|
+
* header entry, the chord and the produced-file chips all did nothing, and the
|
|
23105
|
+
* only switch back to floating lives *inside* the panel, so the page had to be
|
|
23106
|
+
* reloaded to reach the review again. Now the overlay steps in whenever the tab
|
|
23107
|
+
* does not come up.
|
|
22886
23108
|
*/
|
|
22887
23109
|
const revealPanel = () => {
|
|
22888
|
-
if (panelPresentation() === "dock" && onOpenDock !== void 0)
|
|
22889
|
-
|
|
23110
|
+
if (panelPresentation() === "dock" && onOpenDock !== void 0 && dockAvailable) {
|
|
23111
|
+
try {
|
|
23112
|
+
onOpenDock();
|
|
23113
|
+
} catch {
|
|
23114
|
+
collapseSidebar();
|
|
23115
|
+
setOpen(true);
|
|
23116
|
+
return;
|
|
23117
|
+
}
|
|
23118
|
+
if (revealTimerRef.current !== void 0) window.clearTimeout(revealTimerRef.current);
|
|
23119
|
+
revealTimerRef.current = window.setTimeout(() => {
|
|
23120
|
+
revealTimerRef.current = void 0;
|
|
23121
|
+
if (dockShowingRef.current) return;
|
|
23122
|
+
collapseSidebar();
|
|
23123
|
+
setOpen(true);
|
|
23124
|
+
}, DOCK_REVEAL_GRACE_MS);
|
|
22890
23125
|
return;
|
|
22891
|
-
}
|
|
23126
|
+
}
|
|
22892
23127
|
collapseSidebar();
|
|
22893
23128
|
setOpen(true);
|
|
22894
23129
|
};
|
|
22895
23130
|
revealRef.current = revealPanel;
|
|
23131
|
+
const wasDockShowingRef = (0, react.useRef)(false);
|
|
23132
|
+
(0, react.useEffect)(() => {
|
|
23133
|
+
const was = wasDockShowingRef.current;
|
|
23134
|
+
wasDockShowingRef.current = dockShowing;
|
|
23135
|
+
if (docked) return;
|
|
23136
|
+
if (!was && dockShowing && open) setOpen(false);
|
|
23137
|
+
}, [
|
|
23138
|
+
docked,
|
|
23139
|
+
dockShowing,
|
|
23140
|
+
open
|
|
23141
|
+
]);
|
|
22896
23142
|
/** Move the panel into the right sidebar's tab: the tab is opened and this
|
|
22897
23143
|
* overlay steps aside, with the presentation remembered for the entry. The
|
|
22898
23144
|
* sidebar's controller throws when it is mounted but cannot act on a session
|
|
@@ -22906,6 +23152,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22906
23152
|
return;
|
|
22907
23153
|
}
|
|
22908
23154
|
setPanelPresentation("dock");
|
|
23155
|
+
rememberView();
|
|
22909
23156
|
setOpen(false);
|
|
22910
23157
|
};
|
|
22911
23158
|
/** Where the panel is showing right now: the mode switch's checked row. */
|
|
@@ -22957,6 +23204,33 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22957
23204
|
};
|
|
22958
23205
|
}, []);
|
|
22959
23206
|
/**
|
|
23207
|
+
* Remember what this panel is showing, so the next open resumes it: the file
|
|
23208
|
+
* that is open and how far down it the code view is. Called on every way out —
|
|
23209
|
+
* the overlay's close, the hand-off to the dock, and the docked tab unmounting.
|
|
23210
|
+
* With no code view (the Markdown preview is showing) the file's offset is kept
|
|
23211
|
+
* as it was: the file is what the reader comes back to.
|
|
23212
|
+
*/
|
|
23213
|
+
const rememberView = () => {
|
|
23214
|
+
const id = selectedRef.current;
|
|
23215
|
+
if (id === "" || current === void 0) return;
|
|
23216
|
+
const body = panelRef.current?.querySelector("[data-diff-body]");
|
|
23217
|
+
const previous = panelFileOffset(current, id);
|
|
23218
|
+
rememberPanelView(current, {
|
|
23219
|
+
fileId: id,
|
|
23220
|
+
scrollTop: body?.scrollTop ?? previous ?? 0
|
|
23221
|
+
});
|
|
23222
|
+
};
|
|
23223
|
+
/** The latest `rememberView`, for the docked instance's unmount cleanup: that
|
|
23224
|
+
* closer runs outside this render's closure. */
|
|
23225
|
+
const rememberViewRef = (0, react.useRef)(rememberView);
|
|
23226
|
+
rememberViewRef.current = rememberView;
|
|
23227
|
+
(0, react.useLayoutEffect)(() => {
|
|
23228
|
+
if (!docked) return;
|
|
23229
|
+
return () => {
|
|
23230
|
+
rememberViewRef.current();
|
|
23231
|
+
};
|
|
23232
|
+
}, [docked]);
|
|
23233
|
+
/**
|
|
22960
23234
|
* Close the floating panel and hand the caret back to the chat composer:
|
|
22961
23235
|
* closing the review is a "done reviewing, back to typing" move. A close the
|
|
22962
23236
|
* user made by clicking somewhere else is the exception — that press is an
|
|
@@ -22964,6 +23238,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22964
23238
|
* closes without touching focus.
|
|
22965
23239
|
*/
|
|
22966
23240
|
const closePanel = () => {
|
|
23241
|
+
rememberView();
|
|
22967
23242
|
setOpen(false);
|
|
22968
23243
|
focusComposer();
|
|
22969
23244
|
};
|
|
@@ -23037,7 +23312,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23037
23312
|
t,
|
|
23038
23313
|
onSelect: (id) => {
|
|
23039
23314
|
if (id === selected) setJumpSignal((signal) => signal + 1);
|
|
23040
|
-
else
|
|
23315
|
+
else {
|
|
23316
|
+
setSelected(id);
|
|
23317
|
+
landOn(id);
|
|
23318
|
+
}
|
|
23041
23319
|
}
|
|
23042
23320
|
}, entry.id);
|
|
23043
23321
|
const selectedFile = files.find((file) => file.id === selected);
|
|
@@ -23121,13 +23399,19 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23121
23399
|
const id = await onUndo(sessionId);
|
|
23122
23400
|
if (id === void 0) return;
|
|
23123
23401
|
if (id === selected) setUndoFlash((signal) => signal + 1);
|
|
23124
|
-
else
|
|
23402
|
+
else {
|
|
23403
|
+
setSelected(id);
|
|
23404
|
+
landOn(id);
|
|
23405
|
+
}
|
|
23125
23406
|
};
|
|
23126
23407
|
const handleRedo = async (sessionId) => {
|
|
23127
23408
|
const id = await onRedo(sessionId);
|
|
23128
23409
|
if (id === void 0) return;
|
|
23129
23410
|
if (id === selected) setUndoFlash((signal) => signal + 1);
|
|
23130
|
-
else
|
|
23411
|
+
else {
|
|
23412
|
+
setSelected(id);
|
|
23413
|
+
landOn(id);
|
|
23414
|
+
}
|
|
23131
23415
|
};
|
|
23132
23416
|
(0, react.useEffect)(() => {
|
|
23133
23417
|
if (!open || current === void 0) return;
|
|
@@ -23195,7 +23479,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23195
23479
|
event.preventDefault();
|
|
23196
23480
|
const index = files.findIndex((file) => file.id === selected);
|
|
23197
23481
|
const next = files[(index + direction + files.length) % files.length];
|
|
23198
|
-
if (next !== void 0)
|
|
23482
|
+
if (next !== void 0) {
|
|
23483
|
+
setSelected(next.id);
|
|
23484
|
+
landOn(next.id);
|
|
23485
|
+
}
|
|
23199
23486
|
};
|
|
23200
23487
|
window.addEventListener("keydown", onKeyDown, true);
|
|
23201
23488
|
return () => {
|
|
@@ -23456,6 +23743,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23456
23743
|
workspacePath: snapshot.workspacePath,
|
|
23457
23744
|
jumpSignal,
|
|
23458
23745
|
undoFlash,
|
|
23746
|
+
landingTop: landing !== void 0 && landing.fileId === selectedFile.id ? landing.top : void 0,
|
|
23747
|
+
landingTick: landing !== void 0 && landing.fileId === selectedFile.id ? landing.n : 0,
|
|
23459
23748
|
failedMessage: failed.get(selectedFile.id),
|
|
23460
23749
|
onPasteReference,
|
|
23461
23750
|
onToast: showCopyToast,
|
|
@@ -25510,6 +25799,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25510
25799
|
"action.closeHint": "关闭(Esc / {chord})",
|
|
25511
25800
|
"action.closeHintEsc": "关闭(Esc)",
|
|
25512
25801
|
"action.summonHint": "待处理改动({chord})",
|
|
25802
|
+
"action.retry": "重试",
|
|
25803
|
+
"panel.crashed": "审阅面板出错了,详情见控制台",
|
|
25513
25804
|
"status.kept": "已保留",
|
|
25514
25805
|
"status.reverted": "已回退",
|
|
25515
25806
|
"status.missing": "该改动已不存在",
|
|
@@ -25692,6 +25983,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25692
25983
|
"action.closeHint": "Close (Esc / {chord})",
|
|
25693
25984
|
"action.closeHintEsc": "Close (Esc)",
|
|
25694
25985
|
"action.summonHint": "Pending changes ({chord})",
|
|
25986
|
+
"action.retry": "Retry",
|
|
25987
|
+
"panel.crashed": "The review panel hit an error; see the console for details",
|
|
25695
25988
|
"status.kept": "Kept",
|
|
25696
25989
|
"status.reverted": "Reverted",
|
|
25697
25990
|
"status.missing": "This change no longer exists",
|
|
@@ -25733,6 +26026,25 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25733
26026
|
//#endregion
|
|
25734
26027
|
//#region lib/types/client/index.js
|
|
25735
26028
|
/** Pending-edit review panel, browser half: footer action, pending list, and whole-file diff viewer. */
|
|
26029
|
+
/**
|
|
26030
|
+
* The footer seat's registrant: the panel inside its own error boundary, so a
|
|
26031
|
+
* crash there cannot retire the entry for the life of the page (see
|
|
26032
|
+
* {@link PanelBoundary}).
|
|
26033
|
+
* @param props - the seat's runtime props, this plugin's face, and the locale `t`.
|
|
26034
|
+
* @returns the boundary-wrapped panel.
|
|
26035
|
+
*/
|
|
26036
|
+
function PendingPanelEntry(props) {
|
|
26037
|
+
return (0, react.createElement)(PanelBoundary, { t: props.t }, (0, react.createElement)(PendingPanel, props));
|
|
26038
|
+
}
|
|
26039
|
+
/**
|
|
26040
|
+
* The header seat's registrant: the entry button inside the same boundary, so a
|
|
26041
|
+
* crash costs a visible note rather than the whole button for the page's life.
|
|
26042
|
+
* @param props - the seat's runtime props, the face's hooks, and the locale `t`.
|
|
26043
|
+
* @returns the boundary-wrapped entry.
|
|
26044
|
+
*/
|
|
26045
|
+
function HeaderEntry(props) {
|
|
26046
|
+
return (0, react.createElement)(PanelBoundary, { t: props.t }, (0, react.createElement)(DiffApprovalHeaderEntry, props));
|
|
26047
|
+
}
|
|
25736
26048
|
/** Required services: locale, slots, the wire channel, the current session, and
|
|
25737
26049
|
* the layout controller (this plugin collapses the sidebar before its modal opens). */
|
|
25738
26050
|
const inject = [
|
|
@@ -25743,6 +26055,22 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25743
26055
|
"layout"
|
|
25744
26056
|
];
|
|
25745
26057
|
/**
|
|
26058
|
+
* Fill one slot, with the failure contained: a registration runs inside the
|
|
26059
|
+
* client's boot (or, for a seat declared later, inside the slot machinery), so a
|
|
26060
|
+
* throw here would take down more than this panel. A refused seat costs that one
|
|
26061
|
+
* surface, and the reason goes to the console rather than being swallowed.
|
|
26062
|
+
* @param slots - the client slot service.
|
|
26063
|
+
* @param name - the SlotMap key to fill.
|
|
26064
|
+
* @param register - the registration, run when the seat's declaration is live.
|
|
26065
|
+
*/
|
|
26066
|
+
function seat(slots, name, register) {
|
|
26067
|
+
try {
|
|
26068
|
+
slots.inject(name, () => register());
|
|
26069
|
+
} catch (error) {
|
|
26070
|
+
console.error(`diff-approval could not fill ${name}:`, error);
|
|
26071
|
+
}
|
|
26072
|
+
}
|
|
26073
|
+
/**
|
|
25746
26074
|
* The dsh web-react renderer gives `div[data-slot="sidebar.footer.action"]` an
|
|
25747
26075
|
* inline `display: contents`, so every plugin's footer entry root participates
|
|
25748
26076
|
* directly in the `.footerActions` flex row — several plugins (e.g. this one
|
|
@@ -25877,12 +26205,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25877
26205
|
},
|
|
25878
26206
|
collapseSidebar
|
|
25879
26207
|
});
|
|
25880
|
-
ctx.slots
|
|
26208
|
+
seat(ctx.slots, "sidebar.footer.action", () => ctx.slots.register({
|
|
25881
26209
|
name: "sidebar.footer.action",
|
|
25882
26210
|
id: "diff-approval-panel",
|
|
25883
26211
|
locale: NS,
|
|
25884
26212
|
inject: buildFace
|
|
25885
|
-
},
|
|
26213
|
+
}, PendingPanelEntry));
|
|
25886
26214
|
const looseSlots = ctx.slots;
|
|
25887
26215
|
try {
|
|
25888
26216
|
looseSlots.inject("conversation.session.header.utilities", () => looseSlots.register({
|
|
@@ -25891,7 +26219,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25891
26219
|
order: -5,
|
|
25892
26220
|
locale: NS,
|
|
25893
26221
|
inject: () => ({ ...buildFace() })
|
|
25894
|
-
},
|
|
26222
|
+
}, HeaderEntry));
|
|
25895
26223
|
} catch {}
|
|
25896
26224
|
try {
|
|
25897
26225
|
looseSlots.inject("sidebar.right.pane.tab", () => looseSlots.register({
|
|
@@ -25917,7 +26245,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25917
26245
|
guideDescription: () => t("panel.dockGuide")
|
|
25918
26246
|
}, (sidebar, reason) => dock.attach(sidebar, reason));
|
|
25919
26247
|
} catch {}
|
|
25920
|
-
ctx.slots
|
|
26248
|
+
seat(ctx.slots, "settings.section", () => ctx.slots.register({
|
|
25921
26249
|
name: "settings.section",
|
|
25922
26250
|
id: "diff-approval",
|
|
25923
26251
|
order: 100,
|