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 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
- "actionQuietDisabled": "F1KBNa_actionQuietDisabled",
35
- "vSpacer": "F1KBNa_vSpacer",
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
- "settingsRowText": "F1KBNa_settingsRowText",
41
- "fileList": "F1KBNa_fileList",
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
- "toggleThumb": "F1KBNa_toggleThumb",
49
- "rowFailed": "F1KBNa_rowFailed",
50
- "searchCount": "F1KBNa_searchCount",
51
- "searchMatch": "F1KBNa_searchMatch",
52
- "diffPath": "F1KBNa_diffPath",
53
- "blockFlashShake": "F1KBNa_blockFlashShake",
54
- "coverNoticeFade": "F1KBNa_coverNoticeFade",
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
- "pickerIcon": "F1KBNa_pickerIcon",
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
- "statusBar": "F1KBNa_statusBar",
67
- "colorPickerPanel": "F1KBNa_colorPickerPanel",
68
- "colorHue": "F1KBNa_colorHue",
69
- "mdPreviewContent": "F1KBNa_mdPreviewContent",
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
- "splitLadd": "F1KBNa_splitLadd",
88
- "noteCentered": "F1KBNa_noteCentered",
89
- "header": "F1KBNa_header",
90
- "close": "F1KBNa_close",
91
- "pickerNote": "F1KBNa_pickerNote",
92
- "coverCard": "F1KBNa_coverCard",
93
- "add": "F1KBNa_add",
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
- "diffHeader": "F1KBNa_diffHeader",
109
- "blockFlash": "F1KBNa_blockFlash",
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
- "markerAdd": "F1KBNa_markerAdd",
112
- "chip": "F1KBNa_chip",
113
- "actionError": "F1KBNa_actionError",
114
- "addCount": "F1KBNa_addCount",
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
- "settingsGroup": "F1KBNa_settingsGroup",
126
- "settingsGroupText": "F1KBNa_settingsGroupText",
101
+ "importButton": "F1KBNa_importButton",
102
+ "rowHead": "F1KBNa_rowHead",
127
103
  "layer": "F1KBNa_layer",
128
- "lines": "F1KBNa_lines",
129
- "line": "F1KBNa_line",
130
- "stepper": "F1KBNa_stepper",
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
- "groupHead": "F1KBNa_groupHead",
136
- "divergedHint": "F1KBNa_divergedHint",
137
- "rowMeta": "F1KBNa_rowMeta",
138
- "expandExpanded": "F1KBNa_expandExpanded",
108
+ "colorSv": "F1KBNa_colorSv",
109
+ "colorPickerPreview": "F1KBNa_colorPickerPreview",
110
+ "actionError": "F1KBNa_actionError",
111
+ "noteCentered": "F1KBNa_noteCentered",
139
112
  "diffPreview": "F1KBNa_diffPreview",
140
- "stepperButtonUp": "F1KBNa_stepperButtonUp",
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
- "searchMatchCurrent": "F1KBNa_searchMatchCurrent",
175
- "headerEntry": "F1KBNa_headerEntry",
176
- "colorPickerInput": "F1KBNa_colorPickerInput",
177
- "colorSvCursor": "F1KBNa_colorSvCursor",
178
- "treeRow": "F1KBNa_treeRow",
179
- "mdPreviewDouble": "F1KBNa_mdPreviewDouble",
180
- "pickerTitle": "F1KBNa_pickerTitle",
181
- "overviewRuler": "F1KBNa_overviewRuler",
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
- "detailEmpty": "F1KBNa_detailEmpty",
185
- "gutter": "F1KBNa_gutter",
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
- "searchBar": "F1KBNa_searchBar",
200
- "settingsGroupBody": "F1KBNa_settingsGroupBody",
128
+ "splitRadd": "F1KBNa_splitRadd",
129
+ "coverHost": "F1KBNa_coverHost",
201
130
  "stepperButton": "F1KBNa_stepperButton",
202
- "coverNoticeGlyph": "F1KBNa_coverNoticeGlyph",
203
- "context": "F1KBNa_context",
204
- "splitRoot": "F1KBNa_splitRoot",
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
- "diffFlashShake": "F1KBNa_diffFlashShake",
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
- "overviewMarker": "F1KBNa_overviewMarker",
209
- "splitRadd": "F1KBNa_splitRadd",
210
- "colorPickerPopover": "F1KBNa_colorPickerPopover",
211
- "floatResizeHandle": "F1KBNa_floatResizeHandle",
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
- "colorPickerTrigger": "F1KBNa_colorPickerTrigger",
217
- "confirmCard": "F1KBNa_confirmCard",
218
- "diffFlashFade": "F1KBNa_diffFlashFade",
219
- "coverPopover": "F1KBNa_coverPopover",
220
- "colorSv": "F1KBNa_colorSv",
221
- "divider": "F1KBNa_divider",
222
- "pickerClose": "F1KBNa_pickerClose",
223
- "states": "F1KBNa_states",
224
- "rail": "F1KBNa_rail",
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 unmounting the app's tree and with it
18702
- * the footer entry that opened this tab. */
18703
- var DockBoundary = class extends react.Component {
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)(DockBoundary, { children: (0, react_jsx_runtime.jsx)(PendingPanel, {
18727
- ...panelProps,
18776
+ }), host !== null && (0, react_jsx_runtime.jsx)(PanelBoundary, {
18728
18777
  t,
18729
- docked: true,
18730
- dockHost: host
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
- setFocus(0);
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
- }, [file.id]);
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
- setSelected(entry.id);
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
- if (!open) return;
22853
- if (selected !== "" && files.some((file) => file.id === selected)) return;
22854
- const next = files[0];
22855
- if (next !== void 0 && next.id !== selected) setSelected(next.id);
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. A remembered dock
22884
- * in a build without a right sidebar falls back to the floating panel instead
22885
- * of doing nothing.
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) try {
22889
- onOpenDock();
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
- } catch {}
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 setSelected(id);
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 setSelected(id);
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 setSelected(id);
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) setSelected(next.id);
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.inject("sidebar.footer.action", () => ctx.slots.register({
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
- }, PendingPanel));
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
- }, DiffApprovalHeaderEntry));
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.inject("settings.section", () => ctx.slots.register({
26248
+ seat(ctx.slots, "settings.section", () => ctx.slots.register({
25921
26249
  name: "settings.section",
25922
26250
  id: "diff-approval",
25923
26251
  order: 100,