dsh-diff-approval 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -23
- package/README.zh.md +6 -21
- package/lib/client.js +375 -44
- package/lib/index.js +83 -4
- package/lib/types/client/PendingPanel.d.ts +4 -0
- package/lib/types/client/discussion.d.ts +3 -3
- package/lib/types/client/locales.d.ts +10 -0
- package/lib/types/client/whole-file-diff.d.ts +42 -0
- package/lib/types/types.d.ts +6 -0
- package/lib/types/vcs.d.ts +33 -0
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -330,7 +330,7 @@ window.__ModuleLoader__.load({
|
|
|
330
330
|
});
|
|
331
331
|
//#endregion
|
|
332
332
|
//#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
|
|
333
|
-
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,.F1KBNa_diffPreview{--diff-gutter-surface:var(--dsw-alias-bg-base)}.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);-webkit-user-select:none;user-select:none;border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_panel .F1KBNa_code,.F1KBNa_panel .F1KBNa_mdPreviewBody,.F1KBNa_panel .F1KBNa_diffPath,.F1KBNa_panel input,.F1KBNa_panel textarea,.F1KBNa_panel [contenteditable]{-webkit-user-select:text;user-select:text}.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{z-index:3;background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;border:none;align-items:center;gap:8px;padding:16px 0;display:flex;position:sticky;top:0}.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_settingsRowLink{color:inherit;cursor:pointer;text-decoration:none}.F1KBNa_settingsRowLink:hover{color:var(--dsw-alias-label-secondary);text-underline-offset:2px;text-decoration:underline}.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_settingsSelectorChevron{flex:none}.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{top:var(--settings-header-h,76px);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;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{isolation:isolate;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_mdPreviewBody{overscroll-behavior:none;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{overscroll-behavior-x:none;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-elevation-prominent);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.F1KBNa_fileListKnob[data-open]{box-shadow:none;opacity:0}.F1KBNa_fileListKnob:not([data-open]){animation:.32s ease-in-out .5s both F1KBNa_fileListKnobIn}@keyframes F1KBNa_fileListKnobIn{0%{opacity:0}to{opacity:1}}.F1KBNa_fileListKnob:hover,.F1KBNa_fileListKnob:focus-visible{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(var(--dsw-alias-interactive-bg-hover), 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:none;transform-origin:0 0;border-radius:12px;flex-direction:column;padding:6px 0 10px 8px;display:flex;position:absolute;overflow:hidden}.F1KBNa_fileListFloatClosing{pointer-events:none;animation:.14s ease-in forwards F1KBNa_fileListShrink}@keyframes F1KBNa_fileListShrink{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;flex:none;width:260px;min-height:0;padding:4px 0 12px 8px;display:flex}.F1KBNa_listScroll{scrollbar-gutter:stable;flex:1;min-height:0;padding-right:2px;overflow-y:scroll}.F1KBNa_fileListFloat .F1KBNa_listScroll{margin-right:2px}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:auto}.F1KBNa_bulkActions .F1KBNa_action:disabled{opacity:.4;cursor:default}.F1KBNa_addPath{justify-content:center;align-items:center;gap:4px;display:inline-flex}.F1KBNa_resizeHandle{cursor:col-resize;touch-action:none;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;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border-radius:4px;position:absolute}.F1KBNa_floatResizeHandle:hover{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(var(--dsw-alias-border-l2), 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:55;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_confirmBackdropFixed{z-index:60;position:fixed}.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_confirmTitle{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:none;margin:0;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmBlock{flex-direction:column;gap:6px;min-width:0;display:flex}.F1KBNa_confirmList{overscroll-behavior:contain;scrollbar-gutter:stable;background:var(--dsw-alias-bg-module-platform);max-height:104px;font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:6px;margin:0;padding:0 6px;font-size:11px;line-height:16px;list-style:none;overflow-y:auto}.F1KBNa_confirmActions{flex-wrap:wrap;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 scroll}.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{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_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_listHead{flex:none;align-items:center;gap:4px;margin:8px 1px 2px;padding-right:8px;display:flex}.F1KBNa_action.F1KBNa_addButton.F1KBNa_listFold{width:26px;height:26px}.F1KBNa_listTitle{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_listTabs{background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;flex:auto;gap:2px;min-width:0;padding:2px;display:flex}.F1KBNa_listTab{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:3px 8px;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_tabCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.F1KBNa_listTab[aria-selected=true]{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary)}.F1KBNa_commentGroup{margin:0 0 6px}.F1KBNa_commentGroup:last-child{margin-bottom:0}.F1KBNa_commentGroupName{color:var(--dsw-alias-label-tertiary);margin:0;padding:4px 13px 2px;font-size:11px;font-weight:500;line-height:16px}.F1KBNa_commentRow{box-sizing:border-box;width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;padding:6px 8px;display:block;position:relative}.F1KBNa_commentRow:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_commentRow[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_commentHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.F1KBNa_commentLabel{white-space:nowrap;text-align:right;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:12px;line-height:18px}.F1KBNa_commentTitle{-webkit-line-clamp:3;text-overflow:ellipsis;overflow-wrap:anywhere;text-align:left;min-width:0;color:var(--dsw-alias-label-primary);-webkit-box-orient:vertical;flex:1;margin-left:4px;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.F1KBNa_commentTitleEmpty{color:var(--dsw-alias-label-tertiary)}.F1KBNa_listEmpty{color:var(--dsw-alias-label-tertiary);margin:8px 12px;font-size:12px;line-height:18px}.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_rowMenuAnchor{display:none}.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:center;gap:8px;padding:6px 8px;display:flex;position:relative}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected],.F1KBNa_rowHead[data-picked]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:4px;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_unseenDot{flex:none;align-self:center;position:absolute;top:50%;left:5px;overflow:visible;transform:translateY(-50%)}.F1KBNa_categoryDot{pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:50%;width:3px;height:3px;position:absolute;top:13.5px;left:5px}.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_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_panelDocked .F1KBNa_diffHeader{background:var(--dsw-alias-bg-base)}.F1KBNa_diffPath{appearance:none;min-width:0;font:inherit;text-overflow:ellipsis;color:var(--dsw-alias-label-primary);background:0 0;border:0;flex:1;margin-left:4px;padding:0;font-size:12px;line-height:18px;position:relative;top:1px}.F1KBNa_diffPath:focus{outline:none}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffActionInfo{flex:auto;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.F1KBNa_diffActionDecisions{flex:none;align-items:center;gap:8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_gotoLayer{z-index:30;place-items:center;display:grid;position:absolute;inset:0}.F1KBNa_gotoLayerRight{left:50%;right:var(--dsh-scrollbar-width,8px);bottom:calc(var(--dsh-scrollbar-width,8px) + 1px)}.F1KBNa_gotoBackdrop{z-index:29;position:fixed;inset:0}.F1KBNa_gotoBox{z-index:1;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;flex-direction:column;align-items:stretch;gap:4px;padding:4px;display:flex;position:relative}.F1KBNa_gotoRow{align-items:center;gap:4px;display:flex}.F1KBNa_gotoInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:9em;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;flex:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_gotoInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_gotoAction{white-space:nowrap;flex:none}.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;white-space:nowrap;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;text-decoration:none}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionChord{color:var(--dsw-alias-label-tertiary);margin-left:6px;font-size:11px}.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_diffBodyWrap{isolation:isolate;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBody{overscroll-behavior:none;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_blockActionsDivider{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:2px 0}.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:3;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}.F1KBNa_discussionRow{background:var(--dsw-alias-bg-base);display:table-row}.F1KBNa_discussionCell{display:table-cell}.F1KBNa_discussionPin{z-index:2;width:0;height:0;position:sticky;left:0}.F1KBNa_discussion{z-index:2;box-sizing:border-box;border-left:3px solid var(--dsw-alias-state-business-primary);box-shadow:inset 0 1px 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent), inset 0 -1px 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent), inset -1px 0 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent);cursor:default;background:0 0;flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden}.F1KBNa_discussionHead{font:var(--dsw-font-markdown-code-block)}.F1KBNa_discussionHead .F1KBNa_unseenDot{vertical-align:middle;flex:none;align-self:center;margin-right:6px;display:inline-block;position:static;transform:none}.F1KBNa_discussionBody,.F1KBNa_threadFontProbe{font:var(--dsw-font-markdown-base);font-size:calc(var(--dsh-content-font-size,14px) - 2px)}.F1KBNa_threadFontProbe{visibility:hidden;pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.F1KBNa_discussionBody{flex-direction:column;flex:auto;min-height:0;padding:0 12px;display:flex;overflow:hidden}.F1KBNa_discussion[data-lost]{border-left-color:var(--dsw-alias-label-secondary);background:repeating-linear-gradient(135deg, var(--dsw-alias-interactive-bg-hover) 0 4px, transparent 4px 8px);background-origin:border-box}.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend,.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend:hover:not(:disabled),.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend:disabled{background:var(--dsw-alias-label-secondary);border-color:var(--dsw-alias-label-secondary);color:var(--dsw-alias-label-primary-foreground)}.F1KBNa_discussion[data-lost] .F1KBNa_discussionUser{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.F1KBNa_discussionAnswer{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0;font-family:inherit;line-height:22px}.F1KBNa_discussionUser{box-sizing:border-box;background:var(--dsw-specific-bubble,var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover)));width:fit-content;max-width:82%;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px 0 8px 8px;margin:6.6px 0 6.6px auto;padding:4.4px 11px;font-family:inherit;line-height:22px}.F1KBNa_discussionCode{box-sizing:border-box;font:var(--dsw-font-markdown-code);font-family:var(--ds-font-family-code);background:color-mix(in srgb, var(--dsw-alias-markdown-inline-code,var(--dsw-alias-interactive-bg-hover-solid)) 90%, var(--dsw-alias-label-secondary));border:.5px solid var(--dsw-alias-border-l1);border-radius:6px;align-items:center;padding:0 5px;font-size:.875em;line-height:16px;display:inline-flex}.F1KBNa_discussionBody strong{font-weight:700}.F1KBNa_discussionNote{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0;font-family:inherit;line-height:22px}.F1KBNa_discussionNote[data-diff-discussion-hidden]{color:var(--dsw-alias-label-tertiary)}.F1KBNa_discussionDots{margin-left:1px}.F1KBNa_discussionDots>span{animation:1.2s ease-in-out infinite F1KBNa_discussionDot}.F1KBNa_discussionDots>span:nth-child(2){animation-delay:.15s}.F1KBNa_discussionDots>span:nth-child(3){animation-delay:.3s}@keyframes F1KBNa_discussionDot{0%,60%,to{opacity:.25}30%{opacity:1}}.F1KBNa_quoteLines{table-layout:fixed;border-spacing:0;width:calc(100% + 27px);min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);line-height:var(--dsh-diff-line-height,22px);background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 55%, transparent);margin:0 -12px 0 -15px;display:table}.F1KBNa_quoteAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 12%, transparent)}.F1KBNa_quoteDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 13%, transparent)}.F1KBNa_quoteLine{font-size:calc(1em * var(--dsh-diff-font-scale,1));height:var(--dsh-diff-line-height,22px);display:table-row}.F1KBNa_quoteCode{display:table-cell}.F1KBNa_quoteText{white-space:pre-wrap;overflow-wrap:anywhere;display:block}.F1KBNa_quoteNoWrap .F1KBNa_quoteText{white-space:pre;overflow-wrap:normal;overflow:hidden}.F1KBNa_quoteNoWrap .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-diff-quote-width,0px) + 100%);display:inline-block}.F1KBNa_quoteSplit{align-self:stretch;align-items:flex-start;margin:0 -12px;display:flex}.F1KBNa_quoteSplitSide{flex:1 1 0;min-width:0}.F1KBNa_quoteSplitSide+.F1KBNa_quoteSplitSide{border-left:1px solid var(--dsw-alias-border-l2)}.F1KBNa_quoteSplitTable{table-layout:fixed;border-spacing:0;width:100%;display:table}.F1KBNa_quoteNoWrap .F1KBNa_quoteSplit [data-diff-quote-side=left] .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-quote-width-left,0px) + 100%);display:inline-block}.F1KBNa_quoteNoWrap .F1KBNa_quoteSplit [data-diff-quote-side=right] .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-quote-width-right,0px) + 100%);display:inline-block}.F1KBNa_discussionHead{box-sizing:border-box;flex:none;align-items:center;gap:8px;height:22px;padding:0 6px;font-size:12px;line-height:16px;display:flex}.F1KBNa_discussionCompose{box-sizing:border-box;flex:none;align-items:flex-end;gap:8px;height:44px;margin:0 -6px;padding:0 0 6.6px;display:flex}.F1KBNa_discussionSlack{flex:1 1 0;min-height:0;max-height:22px}.F1KBNa_discussionInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;height:26px;color:var(--dsw-alias-label-primary);cursor:text;border-radius:6px;flex:auto;padding:3px 8px;font-family:inherit;line-height:18px}.F1KBNa_discussionToggle{width:18px;height:18px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_discussionToggle:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_discussionRangeWrap{min-width:0;font:var(--dsw-font-markdown-code-block);flex:0 auto;overflow:hidden}.F1KBNa_discussionHead>:not(.F1KBNa_discussionRangeWrap){flex:none}.F1KBNa_discussionHead>.F1KBNa_flexSpacer{flex:1}.F1KBNa_discussionRange{white-space:nowrap;text-overflow:ellipsis;text-align:left;color:var(--dsw-alias-label-tertiary);direction:rtl;font-family:inherit;display:block;overflow:hidden}.F1KBNa_discussionInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_discussionInput::placeholder{font-family:inherit;font-size:inherit;color:var(--dsw-alias-label-tertiary)}.F1KBNa_discussionSend{box-sizing:border-box;white-space:nowrap;flex:none;justify-content:center;align-items:center;gap:6px;height:26px;padding-left:9px;padding-right:9px;display:inline-flex}.F1KBNa_rowDiscussed{--diff-row-wash:color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent);background-image:linear-gradient(var(--diff-row-wash), var(--diff-row-wash))}@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_overviewRulerSplit{width:var(--dsh-scrollbar-width,8px);bottom:calc(var(--dsh-scrollbar-width,8px) + 1px)}.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_markerSplitDel{width:50%;left:0;right:auto}.F1KBNa_markerSplitAdd{width:50%;left:auto;right:0}.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_line>.F1KBNa_gutter{z-index:1;background-color:var(--diff-gutter-surface);background-image:linear-gradient(var(--diff-row-tint,transparent), var(--diff-row-tint,transparent)), linear-gradient(var(--diff-row-wash,transparent), var(--diff-row-wash,transparent));position:sticky;left:0}.F1KBNa_line>.F1KBNa_gutter+.F1KBNa_gutter{left:44px}.F1KBNa_gutter[data-diff-quote-gutter]{background-color:var(--diff-gutter-surface)}.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{--diff-row-tint:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 20%, transparent);background-color:var(--diff-row-tint)}.F1KBNa_add{--diff-row-tint:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 18%, transparent);background-color:var(--diff-row-tint)}.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{isolation:isolate;flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;min-height:100%;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_splitDiscussions{z-index:3;pointer-events:none;width:100%;height:0;position:absolute;top:0;left:0}.F1KBNa_splitDiscussion{box-sizing:border-box;pointer-events:auto;background:var(--dsw-alias-bg-base);position:absolute;left:0}.F1KBNa_splitSealed,.F1KBNa_splitSealed *{-webkit-user-select:none!important;user-select:none!important}.F1KBNa_splitSealedLeft [data-diff-split-side=left],.F1KBNa_splitSealedLeft [data-diff-split-side=left] *,.F1KBNa_splitSealedRight [data-diff-split-side=right],.F1KBNa_splitSealedRight [data-diff-split-side=right] *{-webkit-user-select:text!important;user-select:text!important}.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{overscroll-behavior-x:none;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)) 20%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 18%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 32%, transparent)}";
|
|
333
|
+
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,.F1KBNa_diffPreview{--diff-gutter-surface:var(--dsw-alias-bg-base)}.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);-webkit-user-select:none;user-select:none;border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_panel .F1KBNa_code,.F1KBNa_panel .F1KBNa_mdPreviewBody,.F1KBNa_panel .F1KBNa_diffPath,.F1KBNa_panel input,.F1KBNa_panel textarea,.F1KBNa_panel [contenteditable]{-webkit-user-select:text;user-select:text}.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{z-index:3;background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;border:none;align-items:center;gap:8px;padding:16px 0;display:flex;position:sticky;top:0}.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_settingsRowLink{color:inherit;cursor:pointer;text-decoration:none}.F1KBNa_settingsRowLink:hover{color:var(--dsw-alias-label-secondary);text-underline-offset:2px;text-decoration:underline}.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_settingsSelectorChevron{flex:none}.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{top:var(--settings-header-h,76px);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;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{isolation:isolate;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_mdPreviewBody{overscroll-behavior:none;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{overscroll-behavior-x:none;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-elevation-prominent);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.F1KBNa_fileListKnob[data-open]{box-shadow:none;opacity:0}.F1KBNa_fileListKnob:not([data-open]){animation:.32s ease-in-out .5s both F1KBNa_fileListKnobIn}@keyframes F1KBNa_fileListKnobIn{0%{opacity:0}to{opacity:1}}.F1KBNa_fileListKnob:hover,.F1KBNa_fileListKnob:focus-visible{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(var(--dsw-alias-interactive-bg-hover), 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:none;transform-origin:0 0;border-radius:12px;flex-direction:column;padding:6px 0 10px 8px;display:flex;position:absolute;overflow:hidden}.F1KBNa_fileListFloatClosing{pointer-events:none;animation:.14s ease-in forwards F1KBNa_fileListShrink}@keyframes F1KBNa_fileListShrink{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;flex:none;width:260px;min-height:0;padding:4px 0 12px 8px;display:flex}.F1KBNa_listScroll{scrollbar-gutter:stable;flex:1;min-height:0;padding-right:2px;overflow-y:scroll}.F1KBNa_fileListFloat .F1KBNa_listScroll{margin-right:2px}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:auto}.F1KBNa_bulkActions .F1KBNa_action:disabled{opacity:.4;cursor:default}.F1KBNa_addPath{justify-content:center;align-items:center;gap:4px;display:inline-flex}.F1KBNa_resizeHandle{cursor:col-resize;touch-action:none;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;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border-radius:4px;position:absolute}.F1KBNa_floatResizeHandle:hover{background-color:var(--dsw-alias-bg-base);background-image:linear-gradient(var(--dsw-alias-border-l2), 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:55;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_confirmBackdropFixed{z-index:60;position:fixed}.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_confirmTitle{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:none;margin:0;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmBlock{flex-direction:column;gap:6px;min-width:0;display:flex}.F1KBNa_confirmList{overscroll-behavior:contain;scrollbar-gutter:stable;background:var(--dsw-alias-bg-module-platform);max-height:104px;font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;border-radius:6px;margin:0;padding:0 6px;font-size:11px;line-height:16px;list-style:none;overflow-y:auto}.F1KBNa_confirmActions{flex-wrap:wrap;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 scroll}.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{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_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_listHead{flex:none;align-items:center;gap:4px;margin:8px 1px 2px;padding-right:8px;display:flex}.F1KBNa_action.F1KBNa_addButton.F1KBNa_listFold{width:26px;height:26px}.F1KBNa_listTitle{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_listTabs{background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;flex:auto;gap:2px;min-width:0;padding:2px;display:flex}.F1KBNa_listTab{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:3px 8px;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_tabCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.F1KBNa_listTab[aria-selected=true]{background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary)}.F1KBNa_commentGroup{margin:0 0 6px}.F1KBNa_commentGroup:last-child{margin-bottom:0}.F1KBNa_commentGroupName{color:var(--dsw-alias-label-tertiary);margin:0;padding:4px 13px 2px;font-size:11px;font-weight:500;line-height:16px}.F1KBNa_commentRow{box-sizing:border-box;width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;padding:6px 8px;display:block;position:relative}.F1KBNa_commentRow:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_commentRow[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_commentHead{align-items:flex-start;gap:8px;min-width:0;display:flex}.F1KBNa_commentLabel{white-space:nowrap;text-align:right;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:12px;line-height:18px}.F1KBNa_commentTitle{-webkit-line-clamp:3;text-overflow:ellipsis;overflow-wrap:anywhere;text-align:left;min-width:0;color:var(--dsw-alias-label-primary);-webkit-box-orient:vertical;flex:1;margin-left:4px;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.F1KBNa_commentTitleEmpty{color:var(--dsw-alias-label-tertiary)}.F1KBNa_listEmpty{color:var(--dsw-alias-label-tertiary);margin:8px 12px;font-size:12px;line-height:18px}.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_rowMenuAnchor{display:none}.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:center;gap:8px;padding:6px 8px;display:flex;position:relative}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected],.F1KBNa_rowHead[data-picked]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:4px;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_unseenDot{flex:none;align-self:center;position:absolute;top:50%;left:5px;overflow:visible;transform:translateY(-50%)}.F1KBNa_categoryDot{pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:50%;width:3px;height:3px;position:absolute;top:13.5px;left:5px}.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_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_panelDocked .F1KBNa_diffHeader{background:var(--dsw-alias-bg-base)}.F1KBNa_diffPath{appearance:none;min-width:0;font:inherit;text-overflow:ellipsis;color:var(--dsw-alias-label-primary);background:0 0;border:0;flex:1;margin-left:4px;padding:0;font-size:12px;line-height:18px;position:relative;top:1px}.F1KBNa_diffPath:focus{outline:none}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffActionInfo{flex:auto;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.F1KBNa_diffActionDecisions{flex:none;align-items:center;gap:8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_gotoLayer{z-index:30;place-items:center;display:grid;position:absolute;inset:0}.F1KBNa_gotoLayerRight{left:50%;right:var(--dsh-scrollbar-width,8px);bottom:calc(var(--dsh-scrollbar-width,8px) + 1px)}.F1KBNa_gotoBackdrop{z-index:29;position:fixed;inset:0}.F1KBNa_gotoBox{z-index:1;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;flex-direction:column;align-items:stretch;gap:4px;padding:4px;display:flex;position:relative}.F1KBNa_gotoRow{align-items:center;gap:4px;display:flex}.F1KBNa_gotoInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:9em;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;flex:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_gotoInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_gotoAction{white-space:nowrap;flex:none}.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;white-space:nowrap;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;text-decoration:none}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionChord{color:var(--dsw-alias-label-tertiary);margin-left:6px;font-size:11px}.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_diffBodyWrap{isolation:isolate;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBody{overscroll-behavior:none;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_blockActions[data-diff-selection-actions]{pointer-events:none}.F1KBNa_blockActions[data-diff-selection-actions] button{pointer-events:auto}.F1KBNa_blockActions[data-diff-frame-drag],.F1KBNa_blockActions[data-diff-frame-drag] button{pointer-events:none}.F1KBNa_blockActionsDivider{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:2px 0}.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:3;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}.F1KBNa_discussionRow{background:var(--dsw-alias-bg-base);display:table-row}.F1KBNa_discussionCell{display:table-cell}.F1KBNa_discussionPin{z-index:2;width:0;height:0;position:sticky;left:0}.F1KBNa_discussion{z-index:2;box-sizing:border-box;border-left:3px solid var(--dsw-alias-state-business-primary);box-shadow:inset 0 1px 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent), inset 0 -1px 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent), inset -1px 0 0 0 color-mix(in srgb, var(--dsw-alias-label-secondary) 55%, transparent);cursor:default;background:0 0;flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden}.F1KBNa_discussionHead{font:var(--dsw-font-markdown-code-block)}.F1KBNa_discussionHead .F1KBNa_unseenDot{vertical-align:middle;flex:none;align-self:center;margin-right:6px;display:inline-block;position:static;transform:none}.F1KBNa_discussionBody,.F1KBNa_threadFontProbe{font:var(--dsw-font-markdown-base);font-size:calc(var(--dsh-content-font-size,14px) - 2px)}.F1KBNa_threadFontProbe{visibility:hidden;pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.F1KBNa_discussionBody{flex-direction:column;flex:auto;min-height:0;padding:0 12px;display:flex;overflow:hidden}.F1KBNa_discussion[data-lost]{border-left-color:var(--dsw-alias-label-secondary);background:repeating-linear-gradient(135deg, var(--dsw-alias-interactive-bg-hover) 0 4px, transparent 4px 8px);background-origin:border-box}.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend,.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend:hover:not(:disabled),.F1KBNa_discussion[data-lost] .F1KBNa_discussionSend:disabled{background:var(--dsw-alias-label-secondary);border-color:var(--dsw-alias-label-secondary);color:var(--dsw-alias-label-primary-foreground)}.F1KBNa_discussion[data-lost] .F1KBNa_discussionUser{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 30%, transparent)}.F1KBNa_discussionAnswer{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0;font-family:inherit;line-height:22px}.F1KBNa_discussionUser{box-sizing:border-box;background:var(--dsw-specific-bubble,var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover)));width:fit-content;max-width:82%;color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px 0 8px 8px;margin:6.6px 0 6.6px auto;padding:4.4px 11px;font-family:inherit;line-height:22px}.F1KBNa_discussionCode{box-sizing:border-box;font:var(--dsw-font-markdown-code);font-family:var(--ds-font-family-code);background:color-mix(in srgb, var(--dsw-alias-markdown-inline-code,var(--dsw-alias-interactive-bg-hover-solid)) 90%, var(--dsw-alias-label-secondary));border:.5px solid var(--dsw-alias-border-l1);border-radius:6px;align-items:center;padding:0 5px;font-size:.875em;line-height:16px;display:inline-flex}.F1KBNa_discussionBody strong{font-weight:700}.F1KBNa_discussionNote{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0;font-family:inherit;line-height:22px}.F1KBNa_discussionNote[data-diff-discussion-hidden]{color:var(--dsw-alias-label-tertiary)}.F1KBNa_discussionDots{margin-left:1px}.F1KBNa_discussionDots>span{animation:1.2s ease-in-out infinite F1KBNa_discussionDot}.F1KBNa_discussionDots>span:nth-child(2){animation-delay:.15s}.F1KBNa_discussionDots>span:nth-child(3){animation-delay:.3s}@keyframes F1KBNa_discussionDot{0%,60%,to{opacity:.25}30%{opacity:1}}.F1KBNa_quoteLines{table-layout:fixed;border-spacing:0;width:calc(100% + 27px);min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);line-height:var(--dsh-diff-line-height,22px);background:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 55%, transparent);margin:0 -12px 0 -15px;display:table}.F1KBNa_quoteAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 12%, transparent)}.F1KBNa_quoteDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 13%, transparent)}.F1KBNa_quoteLine{font-size:calc(1em * var(--dsh-diff-font-scale,1));height:var(--dsh-diff-line-height,22px);display:table-row}.F1KBNa_quoteCode{display:table-cell}.F1KBNa_quoteText{white-space:pre-wrap;overflow-wrap:anywhere;display:block}.F1KBNa_quoteNoWrap .F1KBNa_quoteText{white-space:pre;overflow-wrap:normal;overflow:hidden}.F1KBNa_quoteNoWrap .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-diff-quote-width,0px) + 100%);display:inline-block}.F1KBNa_quoteSplit{align-self:stretch;align-items:flex-start;margin:0 -12px;display:flex}.F1KBNa_quoteSplitSide{flex:1 1 0;min-width:0}.F1KBNa_quoteSplitSide+.F1KBNa_quoteSplitSide{border-left:1px solid var(--dsw-alias-border-l2)}.F1KBNa_quoteSplitTable{table-layout:fixed;border-spacing:0;width:100%;display:table}.F1KBNa_quoteNoWrap .F1KBNa_quoteSplit [data-diff-quote-side=left] .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-quote-width-left,0px) + 100%);display:inline-block}.F1KBNa_quoteNoWrap .F1KBNa_quoteSplit [data-diff-quote-side=right] .F1KBNa_quoteText:after{content:\"\";width:calc(var(--dsh-quote-width-right,0px) + 100%);display:inline-block}.F1KBNa_discussionHead{box-sizing:border-box;flex:none;align-items:center;gap:8px;height:22px;padding:0 6px;font-size:12px;line-height:16px;display:flex}.F1KBNa_discussionCompose{box-sizing:border-box;flex:none;align-items:flex-end;gap:8px;height:44px;margin:0 -6px;padding:0 0 6.6px;display:flex}.F1KBNa_discussionSlack{flex:1 1 0;min-height:0;max-height:22px}.F1KBNa_discussionInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;height:26px;color:var(--dsw-alias-label-primary);cursor:text;border-radius:6px;flex:auto;padding:3px 8px;font-family:inherit;line-height:18px}.F1KBNa_discussionToggle{width:18px;height:18px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_discussionToggle:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_discussionRangeWrap{min-width:0;font:var(--dsw-font-markdown-code-block);flex:0 auto;overflow:hidden}.F1KBNa_discussionHead>:not(.F1KBNa_discussionRangeWrap){flex:none}.F1KBNa_discussionHead>.F1KBNa_flexSpacer{flex:1}.F1KBNa_discussionRange{white-space:nowrap;text-overflow:ellipsis;text-align:left;color:var(--dsw-alias-label-tertiary);direction:rtl;font-family:inherit;display:block;overflow:hidden}.F1KBNa_discussionInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_discussionInput::placeholder{font-family:inherit;font-size:inherit;color:var(--dsw-alias-label-tertiary)}.F1KBNa_discussionSend{box-sizing:border-box;white-space:nowrap;flex:none;justify-content:center;align-items:center;gap:6px;height:26px;padding-left:9px;padding-right:9px;display:inline-flex}.F1KBNa_rowDiscussed{--diff-row-wash:color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent);background-image:linear-gradient(var(--diff-row-wash), var(--diff-row-wash))}@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_overviewRulerSplit{width:var(--dsh-scrollbar-width,8px);bottom:calc(var(--dsh-scrollbar-width,8px) + 1px)}.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_markerSplitDel{width:50%;left:0;right:auto}.F1KBNa_markerSplitAdd{width:50%;left:auto;right:0}.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_line>.F1KBNa_gutter{z-index:1;background-color:var(--diff-gutter-surface);background-image:linear-gradient(var(--diff-row-tint,transparent), var(--diff-row-tint,transparent)), linear-gradient(var(--diff-row-wash,transparent), var(--diff-row-wash,transparent));position:sticky;left:0}.F1KBNa_line>.F1KBNa_gutter+.F1KBNa_gutter{left:44px}.F1KBNa_gutter[data-diff-quote-gutter]{background-color:var(--diff-gutter-surface)}.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{--diff-row-tint:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 20%, transparent);background-color:var(--diff-row-tint)}.F1KBNa_add{--diff-row-tint:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 18%, transparent);background-color:var(--diff-row-tint)}.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{isolation:isolate;flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;min-height:100%;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_splitDiscussions{z-index:3;pointer-events:none;width:100%;height:0;position:absolute;top:0;left:0}.F1KBNa_splitDiscussion{box-sizing:border-box;pointer-events:auto;background:var(--dsw-alias-bg-base);position:absolute;left:0}.F1KBNa_splitSealed,.F1KBNa_splitSealed *{-webkit-user-select:none!important;user-select:none!important}.F1KBNa_splitSealedLeft [data-diff-split-side=left],.F1KBNa_splitSealedLeft [data-diff-split-side=left] *,.F1KBNa_splitSealedRight [data-diff-split-side=right],.F1KBNa_splitSealedRight [data-diff-split-side=right] *{-webkit-user-select:text!important;user-select:text!important}.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{overscroll-behavior-x:none;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)) 20%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 18%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 32%, transparent)}";
|
|
334
334
|
const tagId = "dsh-diff-approval/PendingPanel.module.css";
|
|
335
335
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
336
336
|
const tag = document.createElement("style");
|
|
@@ -2700,6 +2700,60 @@ window.__ModuleLoader__.load({
|
|
|
2700
2700
|
});
|
|
2701
2701
|
return blocks;
|
|
2702
2702
|
}
|
|
2703
|
+
/** The maximal run of non-context rows around `index` — the change region it belongs to. */
|
|
2704
|
+
function changeRunOf(rows, index) {
|
|
2705
|
+
let start = index;
|
|
2706
|
+
while (start > 0 && rows[start - 1] !== void 0 && rows[start - 1].kind !== "context") start--;
|
|
2707
|
+
let end = index;
|
|
2708
|
+
while (end + 1 < rows.length && rows[end + 1] !== void 0 && rows[end + 1].kind !== "context") end++;
|
|
2709
|
+
return {
|
|
2710
|
+
start,
|
|
2711
|
+
end
|
|
2712
|
+
};
|
|
2713
|
+
}
|
|
2714
|
+
/**
|
|
2715
|
+
* The change region a row range sits in, widened to whole runs: from the first row of the run `start`
|
|
2716
|
+
* belongs to, to the last row of the run `end` belongs to. A row range that names one side of a change —
|
|
2717
|
+
* one line of a replacement, or the additions alone — grows to cover that change's removals as well, which
|
|
2718
|
+
* is what a reader pointing at it means. Rows that are context stand alone (a run is a maximal non-context
|
|
2719
|
+
* run), so a range that touches no change is returned as it is.
|
|
2720
|
+
* @param rows - the whole-file diff rows.
|
|
2721
|
+
* @param start - the range's first row.
|
|
2722
|
+
* @param end - the range's last row.
|
|
2723
|
+
* @returns the widened row range.
|
|
2724
|
+
*/
|
|
2725
|
+
function changeRunSpanOf(rows, start, end) {
|
|
2726
|
+
return {
|
|
2727
|
+
start: changeRunOf(rows, start).start,
|
|
2728
|
+
end: changeRunOf(rows, Math.max(start, end)).end
|
|
2729
|
+
};
|
|
2730
|
+
}
|
|
2731
|
+
/**
|
|
2732
|
+
* The line a side's missing lines would be inserted before. A change run lists all its removals before any
|
|
2733
|
+
* addition, so the row next to a mid-run removal has no new-file line at all: reading one row back would
|
|
2734
|
+
* put the insertion point at the top of the file. The line that side ends at inside the whole run is the
|
|
2735
|
+
* position the pairing implies (a lone removal belongs after the lines that replaced its neighbours), and
|
|
2736
|
+
* a run with no line on that side at all — a pure deletion asking where the new side is — falls back to
|
|
2737
|
+
* the line above the run.
|
|
2738
|
+
* @param rows - the whole-file diff rows.
|
|
2739
|
+
* @param index - a row of the range whose side has no lines.
|
|
2740
|
+
* @param side - which side is missing its lines.
|
|
2741
|
+
* @returns the 1-based line the missing lines go before.
|
|
2742
|
+
*/
|
|
2743
|
+
function insertionPointOf(rows, index, side) {
|
|
2744
|
+
const { start, end } = changeRunOf(rows, index);
|
|
2745
|
+
let last;
|
|
2746
|
+
for (let at = start; at <= end; at++) {
|
|
2747
|
+
const line = side === "old" ? rows[at]?.oldLine : rows[at]?.newLine;
|
|
2748
|
+
if (line !== void 0) last = last === void 0 ? line : Math.max(last, line);
|
|
2749
|
+
}
|
|
2750
|
+
if (last !== void 0) return last + 1;
|
|
2751
|
+
for (let at = start - 1; at >= 0; at--) {
|
|
2752
|
+
const line = side === "old" ? rows[at]?.oldLine : rows[at]?.newLine;
|
|
2753
|
+
if (line !== void 0) return line + 1;
|
|
2754
|
+
}
|
|
2755
|
+
return 1;
|
|
2756
|
+
}
|
|
2703
2757
|
/**
|
|
2704
2758
|
* One diff block's old/new line ranges, 1-based inclusive, for block-level
|
|
2705
2759
|
* keep/revert. A side with no lines (a pure addition or deletion) is empty; its
|
|
@@ -2729,13 +2783,12 @@ window.__ModuleLoader__.load({
|
|
|
2729
2783
|
newEnd = Math.max(newEnd, row.newLine);
|
|
2730
2784
|
}
|
|
2731
2785
|
}
|
|
2732
|
-
const before = rows[block.start - 1];
|
|
2733
2786
|
if (oldStart === Infinity) {
|
|
2734
|
-
oldStart = (
|
|
2787
|
+
oldStart = insertionPointOf(rows, block.start, "old");
|
|
2735
2788
|
oldEnd = oldStart - 1;
|
|
2736
2789
|
}
|
|
2737
2790
|
if (newStart === Infinity) {
|
|
2738
|
-
newStart = (
|
|
2791
|
+
newStart = insertionPointOf(rows, block.start, "new");
|
|
2739
2792
|
newEnd = newStart - 1;
|
|
2740
2793
|
}
|
|
2741
2794
|
return {
|
|
@@ -2745,6 +2798,76 @@ window.__ModuleLoader__.load({
|
|
|
2745
2798
|
newEnd
|
|
2746
2799
|
};
|
|
2747
2800
|
}
|
|
2801
|
+
/** The row indices one pair holds, old side first. */
|
|
2802
|
+
function pairRowsOf(pair) {
|
|
2803
|
+
const list = [];
|
|
2804
|
+
if (pair.old !== void 0) list.push(pair.old);
|
|
2805
|
+
if (pair.new !== void 0) list.push(pair.new);
|
|
2806
|
+
return list;
|
|
2807
|
+
}
|
|
2808
|
+
/** Whether any row the pair holds is a change; a pair of context rows is not one. */
|
|
2809
|
+
function pairIsChanged(rows, pair) {
|
|
2810
|
+
return pairRowsOf(pair).some((index) => rows[index] !== void 0 && rows[index].kind !== "context");
|
|
2811
|
+
}
|
|
2812
|
+
/**
|
|
2813
|
+
* One side-by-side pair's old/new line ranges, 1-based inclusive, for pair-level keep/revert. A pair is
|
|
2814
|
+
* one old line against one new line, so each side contributes a single line; a side the pair does not
|
|
2815
|
+
* have (an unpaired insertion or removal) is the empty range at that side's insertion point, read off the
|
|
2816
|
+
* row before the pair — the same rule `blockRangesOf` applies to a side with no lines at all.
|
|
2817
|
+
* @param rows - the whole-file diff rows.
|
|
2818
|
+
* @param pair - the rows the pair holds.
|
|
2819
|
+
* @returns the old and new line ranges, or undefined for a pair that holds no row.
|
|
2820
|
+
*/
|
|
2821
|
+
function pairRangeOf(rows, pair) {
|
|
2822
|
+
const oldRow = pair.old === void 0 ? void 0 : rows[pair.old];
|
|
2823
|
+
const newRow = pair.new === void 0 ? void 0 : rows[pair.new];
|
|
2824
|
+
if (oldRow === void 0 && newRow === void 0) return void 0;
|
|
2825
|
+
const first = Math.min(pair.old ?? Number.POSITIVE_INFINITY, pair.new ?? Number.POSITIVE_INFINITY);
|
|
2826
|
+
const oldStart = oldRow?.oldLine ?? insertionPointOf(rows, first, "old");
|
|
2827
|
+
const newStart = newRow?.newLine ?? insertionPointOf(rows, first, "new");
|
|
2828
|
+
return {
|
|
2829
|
+
oldStart,
|
|
2830
|
+
oldEnd: oldRow?.oldLine ?? oldStart - 1,
|
|
2831
|
+
newStart,
|
|
2832
|
+
newEnd: newRow?.newLine ?? newStart - 1
|
|
2833
|
+
};
|
|
2834
|
+
}
|
|
2835
|
+
/**
|
|
2836
|
+
* The old/new ranges keep/revert act on for the pairs a side-by-side selection names, in the order they
|
|
2837
|
+
* must be sent. Pairs of context rows are dropped (nothing to act on). When the changed pairs occupy one
|
|
2838
|
+
* contiguous span of the row list with no other changed row inside it, ONE range covers them all: one
|
|
2839
|
+
* host call, one undo step, and the same range a whole-block action would send. Otherwise each pair gets
|
|
2840
|
+
* its own range, ordered from the BOTTOM of the file up, so a splice never moves the line numbers of a
|
|
2841
|
+
* pair still to be applied.
|
|
2842
|
+
* @param rows - the whole-file diff rows.
|
|
2843
|
+
* @param pairs - the pairs the selection names, in row order.
|
|
2844
|
+
* @returns one range, several, or none when the selection carries no change.
|
|
2845
|
+
*/
|
|
2846
|
+
function pairsRangeOf(rows, pairs) {
|
|
2847
|
+
const changed = pairs.filter((pair) => pairIsChanged(rows, pair));
|
|
2848
|
+
if (changed.length === 0) return [];
|
|
2849
|
+
if (changed.length === 1) {
|
|
2850
|
+
const single = pairRangeOf(rows, changed[0]);
|
|
2851
|
+
return single === void 0 ? [] : [single];
|
|
2852
|
+
}
|
|
2853
|
+
const selected = /* @__PURE__ */ new Set();
|
|
2854
|
+
for (const pair of changed) for (const index of pairRowsOf(pair)) selected.add(index);
|
|
2855
|
+
const start = Math.min(...selected);
|
|
2856
|
+
const end = Math.max(...selected);
|
|
2857
|
+
let oneSpan = true;
|
|
2858
|
+
for (let index = start; index <= end; index++) {
|
|
2859
|
+
const row = rows[index];
|
|
2860
|
+
if (row !== void 0 && row.kind !== "context" && !selected.has(index)) {
|
|
2861
|
+
oneSpan = false;
|
|
2862
|
+
break;
|
|
2863
|
+
}
|
|
2864
|
+
}
|
|
2865
|
+
if (oneSpan) return [blockRangesOf(rows, {
|
|
2866
|
+
start,
|
|
2867
|
+
end
|
|
2868
|
+
})];
|
|
2869
|
+
return [...changed].sort((left, right) => Math.max(...pairRowsOf(right)) - Math.max(...pairRowsOf(left))).map((pair) => pairRangeOf(rows, pair)).filter((range) => range !== void 0);
|
|
2870
|
+
}
|
|
2748
2871
|
/**
|
|
2749
2872
|
* Compute the whole-file view between two contents. The context budget is the
|
|
2750
2873
|
* side lengths, so every hunk covers the file and unchanged lines survive as
|
|
@@ -3735,11 +3858,11 @@ window.__ModuleLoader__.load({
|
|
|
3735
3858
|
/**
|
|
3736
3859
|
* Decide the selection frame's contents.
|
|
3737
3860
|
*
|
|
3738
|
-
* Keep/revert needs
|
|
3861
|
+
* Keep/revert needs the selection to touch a change; commenting needs a range that has no
|
|
3739
3862
|
* discussion yet. A frame with neither would be an empty floating box, so it is
|
|
3740
3863
|
* not rendered at all.
|
|
3741
3864
|
*
|
|
3742
|
-
* @param options - whether
|
|
3865
|
+
* @param options - whether the selection touches a change, and whether this range already has a discussion.
|
|
3743
3866
|
* @returns the three flags the caller branches on.
|
|
3744
3867
|
*/
|
|
3745
3868
|
function selectionFrame(options) {
|
|
@@ -22567,7 +22690,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22567
22690
|
});
|
|
22568
22691
|
}
|
|
22569
22692
|
/** The two-column (side-by-side) whole-file diff view. */
|
|
22570
|
-
const SplitDiff = (0, react.forwardRef)(function SplitDiff({ file, sessionId, model, runs, langWrap, tabWidthSpaces, busy, t, selection, leadRows, onBlockKeep, onBlockRevert, onWrapToast, onVisibleLines, discussions, renderDiscussion, selectionComment, rulerRuns, gotoDialog }, ref) {
|
|
22693
|
+
const SplitDiff = (0, react.forwardRef)(function SplitDiff({ file, sessionId, model, runs, langWrap, tabWidthSpaces, busy, t, selection, leadRows, onBlockKeep, onBlockRevert, onWrapToast, onVisibleLines, discussions, renderDiscussion, selectionKeepRevert, selectionComment, selectionDragging, rulerRuns, gotoDialog }, ref) {
|
|
22571
22694
|
const hintCase = actionTooltip(t("action.matchCase"), "matchCase");
|
|
22572
22695
|
const hintWords = actionTooltip(t("action.matchWholeWord"), "matchWholeWord");
|
|
22573
22696
|
const hintPrev = actionTooltip(t("action.prevDiff"), "searchPrev");
|
|
@@ -23307,6 +23430,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23307
23430
|
stop();
|
|
23308
23431
|
};
|
|
23309
23432
|
}, []);
|
|
23433
|
+
const selectionFrameUp = (selectionKeepRevert !== void 0 || selectionComment !== void 0) && selection !== void 0;
|
|
23310
23434
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
23311
23435
|
className: PendingPanel_module_css_default.splitRoot,
|
|
23312
23436
|
ref: splitRootRef,
|
|
@@ -23459,11 +23583,21 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23459
23583
|
}, index))
|
|
23460
23584
|
}),
|
|
23461
23585
|
gotoDialog,
|
|
23462
|
-
|
|
23586
|
+
selectionFrameUp && (0, react_jsx_runtime.jsxs)("div", {
|
|
23463
23587
|
className: PendingPanel_module_css_default.blockActions,
|
|
23464
23588
|
"data-diff-selection-actions": true,
|
|
23589
|
+
"data-diff-selection-pair": selection.end,
|
|
23590
|
+
"data-diff-frame-drag": selectionDragging ? "" : void 0,
|
|
23465
23591
|
style: { top: Math.max(0, Math.min(off(selection.end + 1) - scrollTop, Math.max(0, viewportH - 32))) },
|
|
23466
|
-
children:
|
|
23592
|
+
children: [
|
|
23593
|
+
selectionKeepRevert,
|
|
23594
|
+
selectionKeepRevert !== void 0 && selectionComment !== void 0 && (0, react_jsx_runtime.jsx)("span", {
|
|
23595
|
+
className: PendingPanel_module_css_default.blockActionsDivider,
|
|
23596
|
+
"data-diff-selection-divider": true,
|
|
23597
|
+
"aria-hidden": "true"
|
|
23598
|
+
}),
|
|
23599
|
+
selectionComment
|
|
23600
|
+
]
|
|
23467
23601
|
}),
|
|
23468
23602
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
23469
23603
|
className: PendingPanel_module_css_default.splitHScrollRow,
|
|
@@ -23640,7 +23774,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23640
23774
|
height: flashHeight
|
|
23641
23775
|
}
|
|
23642
23776
|
}, flashKey),
|
|
23643
|
-
hoveredBlock !== void 0 && blockOfPair[hoveredBlock] !== void 0 && (0, react_jsx_runtime.jsxs)("div", {
|
|
23777
|
+
!selectionFrameUp && hoveredBlock !== void 0 && blockOfPair[hoveredBlock] !== void 0 && (0, react_jsx_runtime.jsxs)("div", {
|
|
23644
23778
|
className: PendingPanel_module_css_default.blockActions,
|
|
23645
23779
|
"data-diff-block-actions": true,
|
|
23646
23780
|
style: { top: blockActionsTop },
|
|
@@ -24181,13 +24315,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
24181
24315
|
return map;
|
|
24182
24316
|
}, [splitModel, model]);
|
|
24183
24317
|
/**
|
|
24184
|
-
* The rows a selection names, whichever view made it: the pair range of a side-by-side selection
|
|
24185
|
-
*
|
|
24318
|
+
* The rows a selection names, whichever view made it: the pair range of a side-by-side selection mapped
|
|
24319
|
+
* to the rows of the column it began in, and a single-column range left as it is.
|
|
24186
24320
|
*
|
|
24187
|
-
*
|
|
24188
|
-
* the
|
|
24189
|
-
*
|
|
24190
|
-
* the
|
|
24321
|
+
* Both columns are read. A right-column selection names the NEW file's rows and a left-column one the OLD
|
|
24322
|
+
* file's — which is what the reader pointed at, and what a removal the alignment left unpaired can only
|
|
24323
|
+
* be reached by (it is drawn in the old column alone). A thread stays anchored to a new-file line wherever
|
|
24324
|
+
* the range has one; where it does not, the label falls back to the old-file number exactly as it does for
|
|
24325
|
+
* a removals-only selection in the single-column view (see `addDiscussion` and `frameNamesNoCurrentLine`).
|
|
24191
24326
|
*
|
|
24192
24327
|
* @param range - the selection to read.
|
|
24193
24328
|
* @returns the same lines as a row range, or undefined when the view named none.
|
|
@@ -24195,10 +24330,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
24195
24330
|
const selectionRows = (range) => {
|
|
24196
24331
|
if (range === void 0) return void 0;
|
|
24197
24332
|
if (!splitView || range.side === void 0 || splitModel === null) return range;
|
|
24198
|
-
|
|
24333
|
+
const side = range.side;
|
|
24199
24334
|
const rows = [];
|
|
24200
24335
|
for (let index = range.start; index <= range.end; index++) {
|
|
24201
|
-
const row = pairRows.get(index)?.
|
|
24336
|
+
const row = pairRows.get(index)?.[side];
|
|
24202
24337
|
if (row !== void 0) rows.push(row);
|
|
24203
24338
|
}
|
|
24204
24339
|
return rows.length === 0 ? void 0 : {
|
|
@@ -25359,7 +25494,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25359
25494
|
if (!commentMode) return;
|
|
25360
25495
|
const range = selectionRows(selection);
|
|
25361
25496
|
if (range === void 0) return;
|
|
25362
|
-
|
|
25497
|
+
const quoteRange = splitView && !previewActive ? changeRunSpanOf(model.diff.rows, range.start, range.end) : range;
|
|
25498
|
+
if (discussionOverlapping(discussions, quoteRange) !== void 0) return;
|
|
25363
25499
|
const newLines = newLinesInRows(model.diff.rows, range);
|
|
25364
25500
|
const first = model.diff.rows[range.start];
|
|
25365
25501
|
const last = model.diff.rows[range.end] ?? first;
|
|
@@ -25369,14 +25505,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25369
25505
|
const body = bodyRef.current;
|
|
25370
25506
|
if (body !== null && offsetOf(range.start) - body.scrollTop < 0) pendingScrollShiftRef.current += 66;
|
|
25371
25507
|
const id = `draft-${Date.now().toString(36)}-${draftThreads.length}`;
|
|
25372
|
-
const quoted = model.diff.rows.slice(
|
|
25508
|
+
const quoted = model.diff.rows.slice(quoteRange.start, quoteRange.end + 1);
|
|
25373
25509
|
const quote = quoted.map((row) => row.text).join("\n");
|
|
25374
25510
|
const quoteLines = quoted.map((row) => ({
|
|
25375
25511
|
old: row.oldLine,
|
|
25376
25512
|
new: row.newLine,
|
|
25377
25513
|
kind: row.kind
|
|
25378
25514
|
}));
|
|
25379
|
-
const quoteContext = model.diff.rows.slice(Math.max(0,
|
|
25515
|
+
const quoteContext = model.diff.rows.slice(Math.max(0, quoteRange.start - 1), Math.min(model.diff.rows.length, quoteRange.end + 2)).map((row) => row.text).join("\n");
|
|
25380
25516
|
setDraftThreads((current) => [...current, {
|
|
25381
25517
|
id,
|
|
25382
25518
|
fileId: file.id,
|
|
@@ -26140,10 +26276,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
26140
26276
|
await runBlockAction(action, range, operated);
|
|
26141
26277
|
};
|
|
26142
26278
|
const handleSelectionAction = async (action) => {
|
|
26143
|
-
if (busy ||
|
|
26144
|
-
const
|
|
26145
|
-
if (firstCovered === void 0) return;
|
|
26146
|
-
await runBlockAction(action, selectionRange, firstCovered);
|
|
26279
|
+
if (busy || selectionTargetRanges.length === 0) return;
|
|
26280
|
+
for (const range of selectionTargetRanges) await (action === "keep" ? onBlockKeep(sessionId, file.id, range) : onBlockRevert(sessionId, file.id, range));
|
|
26147
26281
|
setSelection(void 0);
|
|
26148
26282
|
setPreviewCovered([]);
|
|
26149
26283
|
window.getSelection()?.removeAllRanges?.();
|
|
@@ -26373,12 +26507,64 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
26373
26507
|
* annotation at most).
|
|
26374
26508
|
*/
|
|
26375
26509
|
const selectionHasDiscussion = selectionRowRange !== void 0 && discussionOverlapping(discussions, selectionRowRange) !== void 0;
|
|
26510
|
+
/**
|
|
26511
|
+
* The change blocks the selected rows touch, in order. A selection that stops inside a block still
|
|
26512
|
+
* touches it, so this — rather than the blocks it fully covers — is what says whether keep/revert
|
|
26513
|
+
* have anything to act on at all (an all-context range touches none, and offers the comment alone).
|
|
26514
|
+
*/
|
|
26515
|
+
const selectionBlocks = [];
|
|
26516
|
+
if (selectionRowRange !== void 0) for (let index = 0; index < model.blocks.length; index++) {
|
|
26517
|
+
const block = model.blocks[index];
|
|
26518
|
+
if (selectionRowRange.start <= block.end && block.start <= selectionRowRange.end) selectionBlocks.push(index);
|
|
26519
|
+
}
|
|
26520
|
+
/**
|
|
26521
|
+
* The side-by-side pairs the selection names, in row order. That view selects PAIRS (see
|
|
26522
|
+
* `splitRowRangeOf`), and a pair is one old line against one new line. The list is the same whichever
|
|
26523
|
+
* column the selection came from — a pair holds both its sides, and a removal the alignment left unpaired
|
|
26524
|
+
* holds only its old one, which is exactly the pair a left-column selection is about.
|
|
26525
|
+
*/
|
|
26526
|
+
const splitSelectionPairs = [];
|
|
26527
|
+
if (splitView && !previewActive && selection !== void 0 && selection.side !== void 0) for (let index = selection.start; index <= selection.end; index++) {
|
|
26528
|
+
const pair = pairRows.get(index);
|
|
26529
|
+
if (pair !== void 0) splitSelectionPairs.push(pair);
|
|
26530
|
+
}
|
|
26531
|
+
/**
|
|
26532
|
+
* The old/new ranges the frame's keep/revert send, in the order they must be sent. Taking part of a
|
|
26533
|
+
* change is the point: keep folds only those lines into the baseline and only those leave it, and the
|
|
26534
|
+
* context lines a selection spans ride along unchanged. The code view sends the one range the SELECTED
|
|
26535
|
+
* ROWS name; the side-by-side view sends the range(s) of the PAIRS it names (`pairsRangeOf`), which
|
|
26536
|
+
* covers both sides of every pair the reader touched. The Markdown preview keeps its own block-derived
|
|
26537
|
+
* range (`selectionRange`): its selection names rendered elements, not rows.
|
|
26538
|
+
*/
|
|
26539
|
+
const selectionTargetRanges = previewActive ? selectionRange === void 0 ? [] : [selectionRange] : splitView ? pairsRangeOf(model.diff.rows, splitSelectionPairs) : selectionRowRange === void 0 ? [] : [blockRangesOf(model.diff.rows, selectionRowRange)];
|
|
26376
26540
|
const frameForSelection = selectionRowRange !== void 0 ? selectionFrame({
|
|
26377
|
-
coversBlocks:
|
|
26541
|
+
coversBlocks: selectionTargetRanges.length > 0 && selectionBlocks.length > 0,
|
|
26378
26542
|
hasDiscussion: selectionHasDiscussion
|
|
26379
26543
|
}) : void 0;
|
|
26380
26544
|
const selectionCommentOffered = commentMode && frameForSelection?.comment === true;
|
|
26545
|
+
/** Whether the frame carries keep/revert (they stay in the DOM, `hidden`, when it does not). */
|
|
26546
|
+
const selectionKeepRevert = frameForSelection?.keepRevert === true;
|
|
26381
26547
|
const selectionFrameVisible = frameForSelection !== void 0 && (frameForSelection.keepRevert || selectionCommentOffered);
|
|
26548
|
+
const [pressInCode, setPressInCode] = (0, react.useState)(false);
|
|
26549
|
+
(0, react.useEffect)(() => {
|
|
26550
|
+
const down = (event) => {
|
|
26551
|
+
const target = event.target;
|
|
26552
|
+
setPressInCode(target instanceof Element && target.closest("[data-diff-selection-actions]") === null);
|
|
26553
|
+
};
|
|
26554
|
+
const up = () => {
|
|
26555
|
+
setPressInCode(false);
|
|
26556
|
+
};
|
|
26557
|
+
document.addEventListener("pointerdown", down, true);
|
|
26558
|
+
document.addEventListener("pointerup", up, true);
|
|
26559
|
+
document.addEventListener("pointercancel", up, true);
|
|
26560
|
+
window.addEventListener("blur", up);
|
|
26561
|
+
return () => {
|
|
26562
|
+
document.removeEventListener("pointerdown", down, true);
|
|
26563
|
+
document.removeEventListener("pointerup", up, true);
|
|
26564
|
+
document.removeEventListener("pointercancel", up, true);
|
|
26565
|
+
window.removeEventListener("blur", up);
|
|
26566
|
+
};
|
|
26567
|
+
}, []);
|
|
26382
26568
|
const commentChord = chordLabel$1("addComment");
|
|
26383
26569
|
(0, react.useEffect)(() => {
|
|
26384
26570
|
if (!selectionCommentOffered) return;
|
|
@@ -27046,6 +27232,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27046
27232
|
ref: previewSelectionFrameRef,
|
|
27047
27233
|
className: PendingPanel_module_css_default.blockActions,
|
|
27048
27234
|
"data-diff-selection-actions": true,
|
|
27235
|
+
"data-diff-frame-drag": pressInCode ? "" : void 0,
|
|
27049
27236
|
style: {
|
|
27050
27237
|
top: previewFrameTop(previewSelectionFrame, previewScrollTopRef.current) ?? 0,
|
|
27051
27238
|
right: previewSelectionFrame.right
|
|
@@ -27165,6 +27352,25 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27165
27352
|
renderDiscussion,
|
|
27166
27353
|
rulerRuns: rulerMarkers,
|
|
27167
27354
|
gotoDialog,
|
|
27355
|
+
selectionKeepRevert: splitView && selectionKeepRevert ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("button", {
|
|
27356
|
+
type: "button",
|
|
27357
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.actionPrimary}`,
|
|
27358
|
+
"data-diff-selection-keep": true,
|
|
27359
|
+
disabled: busy,
|
|
27360
|
+
onClick: () => {
|
|
27361
|
+
handleSelectionAction("keep");
|
|
27362
|
+
},
|
|
27363
|
+
children: t("action.keep")
|
|
27364
|
+
}), (0, react_jsx_runtime.jsx)("button", {
|
|
27365
|
+
type: "button",
|
|
27366
|
+
className: PendingPanel_module_css_default.action,
|
|
27367
|
+
"data-diff-selection-revert": true,
|
|
27368
|
+
disabled: busy,
|
|
27369
|
+
onClick: () => {
|
|
27370
|
+
handleSelectionAction("revert");
|
|
27371
|
+
},
|
|
27372
|
+
children: t("action.revert")
|
|
27373
|
+
})] }) : void 0,
|
|
27168
27374
|
selectionComment: splitView && selectionCommentOffered ? (0, react_jsx_runtime.jsxs)("button", {
|
|
27169
27375
|
type: "button",
|
|
27170
27376
|
className: PendingPanel_module_css_default.action,
|
|
@@ -27175,7 +27381,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27175
27381
|
"data-diff-selection-comment-chord": true,
|
|
27176
27382
|
children: commentChord
|
|
27177
27383
|
})]
|
|
27178
|
-
}) : void 0
|
|
27384
|
+
}) : void 0,
|
|
27385
|
+
selectionDragging: pressInCode
|
|
27179
27386
|
}) : (0, react_jsx_runtime.jsxs)("div", {
|
|
27180
27387
|
className: PendingPanel_module_css_default.diffBodyWrap,
|
|
27181
27388
|
ref: bodyWrapRef,
|
|
@@ -27259,13 +27466,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27259
27466
|
ref: frameRef,
|
|
27260
27467
|
className: PendingPanel_module_css_default.blockActions,
|
|
27261
27468
|
"data-diff-selection-actions": true,
|
|
27469
|
+
"data-diff-frame-drag": pressInCode ? "" : void 0,
|
|
27262
27470
|
style: { top: frameTop },
|
|
27263
27471
|
children: [
|
|
27264
27472
|
(0, react_jsx_runtime.jsx)("button", {
|
|
27265
27473
|
type: "button",
|
|
27266
27474
|
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.actionPrimary}`,
|
|
27267
27475
|
"data-diff-selection-keep": true,
|
|
27268
|
-
hidden:
|
|
27476
|
+
hidden: !selectionKeepRevert,
|
|
27269
27477
|
disabled: busy,
|
|
27270
27478
|
onClick: () => {
|
|
27271
27479
|
handleSelectionAction("keep");
|
|
@@ -27276,14 +27484,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27276
27484
|
type: "button",
|
|
27277
27485
|
className: PendingPanel_module_css_default.action,
|
|
27278
27486
|
"data-diff-selection-revert": true,
|
|
27279
|
-
hidden:
|
|
27487
|
+
hidden: !selectionKeepRevert,
|
|
27280
27488
|
disabled: busy,
|
|
27281
27489
|
onClick: () => {
|
|
27282
27490
|
handleSelectionAction("revert");
|
|
27283
27491
|
},
|
|
27284
27492
|
children: t("action.revert")
|
|
27285
27493
|
}),
|
|
27286
|
-
|
|
27494
|
+
selectionKeepRevert && selectionCommentOffered && (0, react_jsx_runtime.jsx)("span", {
|
|
27287
27495
|
className: PendingPanel_module_css_default.blockActionsDivider,
|
|
27288
27496
|
"data-diff-selection-divider": true,
|
|
27289
27497
|
"aria-hidden": "true"
|
|
@@ -27848,6 +28056,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27848
28056
|
doomed
|
|
27849
28057
|
}) : t("panel.batchRevertAllAsk", { count: prompt.ids.length });
|
|
27850
28058
|
}
|
|
28059
|
+
if (kind === "refresh-picked") return t("panel.batchRefreshVcsAsk", { count: prompt.ids.length });
|
|
27851
28060
|
return t(kind === "keep-picked" ? "panel.batchKeepAsk" : kind === "keep-remove-picked" ? "panel.batchKeepRemoveAsk" : kind === "revert-picked" ? "panel.batchRevertAsk" : kind === "revert-remove-picked" ? "panel.batchRevertRemoveAsk" : kind === "keep-all" ? "panel.batchKeepAllAsk" : "panel.batchCloseAsk", { count: prompt.ids.length });
|
|
27852
28061
|
};
|
|
27853
28062
|
/**
|
|
@@ -27888,7 +28097,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27888
28097
|
if (prompt.kind === "keep-picked") onKeepMany(prompt.sessionId, ids, true);
|
|
27889
28098
|
else if (prompt.kind === "keep-remove-picked") onKeepMany(prompt.sessionId, ids, void 0);
|
|
27890
28099
|
else if (prompt.kind === "revert-picked") onRevertMany(prompt.sessionId, ids, true);
|
|
27891
|
-
else onRevertMany(prompt.sessionId, ids, void 0);
|
|
28100
|
+
else if (prompt.kind === "revert-remove-picked") onRevertMany(prompt.sessionId, ids, void 0);
|
|
28101
|
+
else runRefreshPicked(ids);
|
|
27892
28102
|
};
|
|
27893
28103
|
/**
|
|
27894
28104
|
* The comments the reader has picked in the list (Ctrl/Cmd-click), by id.
|
|
@@ -28649,20 +28859,45 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28649
28859
|
}
|
|
28650
28860
|
};
|
|
28651
28861
|
/**
|
|
28862
|
+
* Reset ONE file's diff to what the VCS scan reports, up to the point where the result is said out loud.
|
|
28863
|
+
*
|
|
28864
|
+
* Both presses come through here: the open file's toolbar button reports one result per file, and the row
|
|
28865
|
+
* menu's reset over a pick reports one summary for the whole selection (see `runRefreshVcs` and
|
|
28866
|
+
* `runRefreshPicked`). A `committed` outcome — the file already holds its baseline — is settled by the
|
|
28867
|
+
* whole-file KEEP, through the same wrapper the Keep button runs, so the "ask after a whole-file keep"
|
|
28868
|
+
* preference and the comments a drop would take with it are honoured identically whichever press found it.
|
|
28869
|
+
*
|
|
28870
|
+
* @param entry - the entry to reset.
|
|
28871
|
+
* @param sessionId - the session to ask about it in.
|
|
28872
|
+
* @returns the outcome, or the error the call raised (the callers word those differently).
|
|
28873
|
+
*/
|
|
28874
|
+
const refreshVcsOnce = async (entry, sessionId) => {
|
|
28875
|
+
let outcome;
|
|
28876
|
+
try {
|
|
28877
|
+
outcome = (await onRefreshVcs(sessionId, entry.id, includeUntrackedEnabled())).outcome;
|
|
28878
|
+
} catch (error) {
|
|
28879
|
+
return { error };
|
|
28880
|
+
}
|
|
28881
|
+
if (outcome === "committed") await keepWithPrompt(entry.sessionId, entry.id);
|
|
28882
|
+
return { outcome };
|
|
28883
|
+
};
|
|
28884
|
+
/**
|
|
28652
28885
|
* Replace one file's diff with its current local VCS change, then report what
|
|
28653
28886
|
* the scan found. A scan that sees no change leaves the entry alone, so the
|
|
28654
28887
|
* message names the file rather than silently blanking a review in progress.
|
|
28888
|
+
*
|
|
28889
|
+
* This is the open file's own toolbar press, reached from a single row's menu too: one file in, one
|
|
28890
|
+
* message out, and no confirmation (the button has none either).
|
|
28655
28891
|
*/
|
|
28656
28892
|
const runRefreshVcs = async (entry) => {
|
|
28657
28893
|
if (current === void 0) return;
|
|
28658
|
-
const
|
|
28659
|
-
|
|
28660
|
-
|
|
28661
|
-
outcome = (await onRefreshVcs(current, entry.id, includeUntracked)).outcome;
|
|
28662
|
-
} catch (error) {
|
|
28894
|
+
const result = await refreshVcsOnce(entry, current);
|
|
28895
|
+
if ("error" in result) {
|
|
28896
|
+
const { error } = result;
|
|
28663
28897
|
showCopyToast(t("panel.refreshFailed", { message: error instanceof Error ? error.message : String(error) }));
|
|
28664
28898
|
return;
|
|
28665
28899
|
}
|
|
28900
|
+
const outcome = result.outcome;
|
|
28666
28901
|
if (outcome === "refreshed") {
|
|
28667
28902
|
showCopyToast(t("panel.refreshDone"));
|
|
28668
28903
|
return;
|
|
@@ -28672,10 +28907,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28672
28907
|
return;
|
|
28673
28908
|
}
|
|
28674
28909
|
if (outcome === "no-change") {
|
|
28675
|
-
const hint =
|
|
28910
|
+
const hint = includeUntrackedEnabled() ? "" : ` ${t("panel.refreshUntrackedHint")}`;
|
|
28676
28911
|
showCopyToast(`${t("panel.refreshNone")}${hint}`);
|
|
28677
28912
|
return;
|
|
28678
28913
|
}
|
|
28914
|
+
if (outcome === "committed") {
|
|
28915
|
+
showCopyToast(t("panel.refreshCommitted"));
|
|
28916
|
+
return;
|
|
28917
|
+
}
|
|
28679
28918
|
if (outcome === "no-vcs") {
|
|
28680
28919
|
showCopyToast(t("panel.importNoVcs"));
|
|
28681
28920
|
return;
|
|
@@ -28683,6 +28922,46 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28683
28922
|
showCopyToast(t("panel.fileNotPending"));
|
|
28684
28923
|
};
|
|
28685
28924
|
/**
|
|
28925
|
+
* The row menu's reset over a pick: the SAME single-entry path, one file at a time, and ONE summary when
|
|
28926
|
+
* it is done.
|
|
28927
|
+
*
|
|
28928
|
+
* Per-file messages are deliberately not raised — the reader answered ONE question (the confirm dialog,
|
|
28929
|
+
* which counted the files) and gets one answer — and a `committed` entry is still settled through the
|
|
28930
|
+
* keep `refreshVcsOnce` runs, because it is the same call that found it. The reset itself is never
|
|
28931
|
+
* confirmed a second time: the batch dialog is that confirmation, and the single-file press has none at
|
|
28932
|
+
* all. (A committed entry's KEEP keeps its own remove-or-keep question, the one the Keep button asks,
|
|
28933
|
+
* because that question is about the row leaving the list rather than about the reset.)
|
|
28934
|
+
*
|
|
28935
|
+
* @param ids - the picked entries, in the list's own order.
|
|
28936
|
+
*/
|
|
28937
|
+
const runRefreshPicked = async (ids) => {
|
|
28938
|
+
if (current === void 0) return;
|
|
28939
|
+
let done = 0;
|
|
28940
|
+
let none = 0;
|
|
28941
|
+
let failed = 0;
|
|
28942
|
+
for (const id of ids) {
|
|
28943
|
+
const entry = files.find((file) => file.id === id);
|
|
28944
|
+
if (entry === void 0) {
|
|
28945
|
+
none += 1;
|
|
28946
|
+
continue;
|
|
28947
|
+
}
|
|
28948
|
+
const result = await refreshVcsOnce(entry, current);
|
|
28949
|
+
if ("error" in result) failed += 1;
|
|
28950
|
+
else if (result.outcome === "refreshed" || result.outcome === "committed") done += 1;
|
|
28951
|
+
else none += 1;
|
|
28952
|
+
}
|
|
28953
|
+
if (failed > 0) showCopyToast(t("panel.refreshManyFailed", {
|
|
28954
|
+
done,
|
|
28955
|
+
none,
|
|
28956
|
+
failed
|
|
28957
|
+
}));
|
|
28958
|
+
else if (none > 0) showCopyToast(t("panel.refreshManyMixed", {
|
|
28959
|
+
done,
|
|
28960
|
+
none
|
|
28961
|
+
}));
|
|
28962
|
+
else showCopyToast(t("panel.refreshManyDone", { count: done }));
|
|
28963
|
+
};
|
|
28964
|
+
/**
|
|
28686
28965
|
* Open a path typed into the detail header's field: add it to the list when it is not there
|
|
28687
28966
|
* yet, then select the file the host says it landed as.
|
|
28688
28967
|
*
|
|
@@ -28821,7 +29100,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28821
29100
|
}
|
|
28822
29101
|
}
|
|
28823
29102
|
}, entry.id);
|
|
28824
|
-
/** The row menu's rows: the pair the file's own toolbar offers, or its single 移出. */
|
|
29103
|
+
/** The row menu's rows: the pair the file's own toolbar offers plus that toolbar's own reset, or its single 移出. */
|
|
28825
29104
|
const rowMenuItems = (0, react.useMemo)(() => {
|
|
28826
29105
|
if (rowMenu === null) return [];
|
|
28827
29106
|
if (rowMenu.picked) return [
|
|
@@ -28840,6 +29119,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28840
29119
|
{
|
|
28841
29120
|
id: "revert-remove-picked",
|
|
28842
29121
|
label: t("row.revertRemove")
|
|
29122
|
+
},
|
|
29123
|
+
{
|
|
29124
|
+
type: "separator",
|
|
29125
|
+
id: "refresh-picked-separator"
|
|
29126
|
+
},
|
|
29127
|
+
{
|
|
29128
|
+
id: "refresh-picked",
|
|
29129
|
+
label: t("action.refreshVcs")
|
|
28843
29130
|
}
|
|
28844
29131
|
];
|
|
28845
29132
|
const openRows = [
|
|
@@ -28856,10 +29143,21 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28856
29143
|
label: t("action.revealFile")
|
|
28857
29144
|
}
|
|
28858
29145
|
];
|
|
28859
|
-
if (fileHasNoDiff(rowMenu.file)) return [
|
|
28860
|
-
|
|
28861
|
-
|
|
28862
|
-
|
|
29146
|
+
if (fileHasNoDiff(rowMenu.file)) return [
|
|
29147
|
+
{
|
|
29148
|
+
id: "remove",
|
|
29149
|
+
label: t("row.dismiss")
|
|
29150
|
+
},
|
|
29151
|
+
{
|
|
29152
|
+
type: "separator",
|
|
29153
|
+
id: "refresh-vcs-separator"
|
|
29154
|
+
},
|
|
29155
|
+
{
|
|
29156
|
+
id: "refresh-vcs",
|
|
29157
|
+
label: t("action.refreshVcs")
|
|
29158
|
+
},
|
|
29159
|
+
...openRows
|
|
29160
|
+
];
|
|
28863
29161
|
const revertLabel = rowMenu.file.earlierVersion === "none" ? t("action.delete") : t("action.revert");
|
|
28864
29162
|
return [
|
|
28865
29163
|
{
|
|
@@ -28878,6 +29176,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28878
29176
|
id: "revert-remove",
|
|
28879
29177
|
label: rowMenu.file.earlierVersion === "none" ? t("row.deleteRemove") : t("row.revertRemove")
|
|
28880
29178
|
},
|
|
29179
|
+
{
|
|
29180
|
+
type: "separator",
|
|
29181
|
+
id: "refresh-vcs-separator"
|
|
29182
|
+
},
|
|
29183
|
+
{
|
|
29184
|
+
id: "refresh-vcs",
|
|
29185
|
+
label: t("action.refreshVcs")
|
|
29186
|
+
},
|
|
28881
29187
|
...openRows
|
|
28882
29188
|
];
|
|
28883
29189
|
}, [
|
|
@@ -28902,6 +29208,15 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28902
29208
|
clearPickedFiles();
|
|
28903
29209
|
return;
|
|
28904
29210
|
}
|
|
29211
|
+
if (id === "refresh-picked") {
|
|
29212
|
+
setBatchPrompt({
|
|
29213
|
+
sessionId: current,
|
|
29214
|
+
kind: "refresh-picked",
|
|
29215
|
+
ids,
|
|
29216
|
+
doomed: []
|
|
29217
|
+
});
|
|
29218
|
+
return;
|
|
29219
|
+
}
|
|
28905
29220
|
if (id !== "keep-picked" && id !== "keep-remove-picked" && id !== "revert-picked" && id !== "revert-remove-picked") return;
|
|
28906
29221
|
const doomed = id.startsWith("revert") ? picked.filter((file) => file.earlierVersion === "none").map((file) => file.id) : [];
|
|
28907
29222
|
setBatchPrompt({
|
|
@@ -28925,6 +29240,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
28925
29240
|
else if (id === "keep-remove" || id === "remove") onKeep(current, target.file.id);
|
|
28926
29241
|
else if (id === "revert") onRevert(current, target.file.id, true);
|
|
28927
29242
|
else if (id === "revert-remove") onRevert(current, target.file.id);
|
|
29243
|
+
else if (id === "refresh-vcs") runRefreshVcs(target.file);
|
|
28928
29244
|
else if (id === "open-file") onOpen(target.file.sessionId, target.file.id, "open");
|
|
28929
29245
|
else if (id === "open-folder") onOpen(target.file.sessionId, target.file.id, "reveal");
|
|
28930
29246
|
};
|
|
@@ -31825,8 +32141,13 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
31825
32141
|
const value = result.value;
|
|
31826
32142
|
if (typeof value !== "object" || value === null) throw new Error("the refresh returned a malformed value");
|
|
31827
32143
|
const outcome = value.outcome;
|
|
31828
|
-
if (outcome !== "refreshed" && outcome !== "unchanged" && outcome !== "no-change" && outcome !== "missing" && outcome !== "no-vcs") throw new Error("the refresh returned a malformed outcome");
|
|
31829
|
-
|
|
32144
|
+
if (outcome !== "refreshed" && outcome !== "unchanged" && outcome !== "no-change" && outcome !== "committed" && outcome !== "missing" && outcome !== "no-vcs") throw new Error("the refresh returned a malformed outcome");
|
|
32145
|
+
const resolved = value.resolved;
|
|
32146
|
+
if (resolved !== void 0 && typeof resolved !== "boolean") throw new Error("the refresh returned a malformed value");
|
|
32147
|
+
return resolved === void 0 ? { outcome } : {
|
|
32148
|
+
outcome,
|
|
32149
|
+
resolved
|
|
32150
|
+
};
|
|
31830
32151
|
}
|
|
31831
32152
|
/** Narrow the list-path endpoint's value; a malformed wire value is a browse failure. */
|
|
31832
32153
|
function browseValueOf(result) {
|
|
@@ -33206,8 +33527,13 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
33206
33527
|
"panel.refreshDone": "已重置成版本控制的差异",
|
|
33207
33528
|
"panel.refreshUnchanged": "条目已经是版本控制的差异,未变",
|
|
33208
33529
|
"panel.refreshNone": "版本控制报告该文件没有未提交的改动",
|
|
33530
|
+
"panel.refreshCommitted": "改动已经提交,条目已保留",
|
|
33209
33531
|
"panel.refreshUntrackedHint": "(未跟踪的新文件需要在设置里开启「包含版本控制未跟踪文件」)",
|
|
33210
33532
|
"panel.refreshFailed": "版本控制重置失败:{message}",
|
|
33533
|
+
"panel.batchRefreshVcsAsk": "把 {count} 个文件重置成版本控制的差异?",
|
|
33534
|
+
"panel.refreshManyDone": "已把 {count} 个文件重置成版本控制的差异",
|
|
33535
|
+
"panel.refreshManyMixed": "已把 {done} 个文件重置成版本控制的差异,{none} 个没有可重置的改动",
|
|
33536
|
+
"panel.refreshManyFailed": "已把 {done} 个文件重置成版本控制的差异,{none} 个没有可重置的改动,{failed} 个失败",
|
|
33211
33537
|
"action.addPath": "按文件或目录添加",
|
|
33212
33538
|
"panel.addTitle": "添加到列表",
|
|
33213
33539
|
"panel.addPathPlaceholder": "输入或粘贴绝对路径",
|
|
@@ -33459,8 +33785,13 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
33459
33785
|
"panel.refreshDone": "Reset this entry to the version-control diff",
|
|
33460
33786
|
"panel.refreshUnchanged": "Already the version-control diff; the entry is unchanged",
|
|
33461
33787
|
"panel.refreshNone": "Version control reports no uncommitted change for this file",
|
|
33788
|
+
"panel.refreshCommitted": "The change is already committed; the entry was kept",
|
|
33462
33789
|
"panel.refreshUntrackedHint": "(a new, untracked file needs \"Include files version control has not seen\" in Settings)",
|
|
33463
33790
|
"panel.refreshFailed": "Version-control reset failed: {message}",
|
|
33791
|
+
"panel.batchRefreshVcsAsk": "Reset {count} file(s) to the version-control diff?",
|
|
33792
|
+
"panel.refreshManyDone": "Reset {count} file(s) to the version-control diff",
|
|
33793
|
+
"panel.refreshManyMixed": "Reset {done} file(s) to the version-control diff; {none} had nothing to reset",
|
|
33794
|
+
"panel.refreshManyFailed": "Reset {done} file(s) to the version-control diff; {none} had nothing to reset; {failed} failed",
|
|
33464
33795
|
"action.addPath": "Add by file or by directory",
|
|
33465
33796
|
"panel.addTitle": "Add to list",
|
|
33466
33797
|
"panel.addPathPlaceholder": "Type or paste an absolute path",
|