dsh-diff-approval 0.23.1 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +563 -268
- package/lib/types/client/discussion.d.ts +62 -8
- package/lib/types/client/locales.d.ts +8 -2
- package/lib/types/client/panel-memory.d.ts +14 -0
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -21,7 +21,7 @@ window.__ModuleLoader__.load({
|
|
|
21
21
|
let react_dom = require("react-dom");
|
|
22
22
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
23
23
|
//#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
|
|
24
|
-
const css = ".F1KBNa_panelFailure{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12px;line-height:16px;display:flex}.F1KBNa_panelFailureText{min-width:0}.F1KBNa_panelFailureRetry{border:1px solid var(--dsw-alias-border-l2);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:6px;flex:none;margin-left:auto;padding:2px 8px}.F1KBNa_panelFailureRetry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_headerEntry{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:28px;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex;position:relative}.F1KBNa_headerEntry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_headerEntry[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.F1KBNa_headerEntry:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_headerEntryCount{box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);min-width:14px;height:14px;color:var(--dsw-alias-label-primary-foreground);text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:7px;padding:0 3px;font-size:10px;line-height:14px;position:absolute;top:-1px;right:-1px}.F1KBNa_headerEntry svg{display:block}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badge:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_coverBackdrop{z-index:29;background:var(--dsw-specific-sidebar-fill);position:fixed;inset:0}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_panelDocked{width:100%;max-width:none;height:100%;box-shadow:none;border:none;border-radius:0;position:static;inset:auto}.F1KBNa_dockHost{flex-direction:column;min-height:0;display:flex;position:absolute;inset:0}.F1KBNa_header{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:10px 12px;display:flex}.F1KBNa_headerActions{align-items:center;gap:2px;display:flex}.F1KBNa_settingsPage{padding:8px 12px}.F1KBNa_settingsGroup{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupHeader{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsGroupText{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.F1KBNa_settingsGroupTitle{font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsGroupDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsGroupChevron{margin-left:auto;transition:transform .15s}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupChevron{transform:rotate(180deg)}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupHeader{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupBody{flex-direction:column;display:flex}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow{padding-left:16px}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow:last-child,.F1KBNa_settingsPage>.F1KBNa_settingsRow:last-child{border-bottom:none}.F1KBNa_settingsRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.F1KBNa_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsSelector{background:var(--dsw-alias-bg-module-platform);min-width:72px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelector[data-recording]{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-secondary)}.F1KBNa_settingsReset{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;margin-left:6px;padding:0;display:inline-flex}.F1KBNa_settingsReset:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_settingsReset:disabled{opacity:.4;cursor:default}.F1KBNa_colorPicker{position:relative}.F1KBNa_colorPickerTrigger{background:var(--dsw-alias-bg-module-platform);width:120px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_colorPickerTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_colorSwatch{border:1px solid var(--dsw-alias-border-l2);border-radius:50%;flex:none;width:24px;height:24px}.F1KBNa_colorValue{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden}.F1KBNa_colorPickerChevron{flex:none}.F1KBNa_colorBackdrop{z-index:40;position:fixed;inset:0}.F1KBNa_colorPickerPopover{z-index:41;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:10px;padding:10px;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_colorPickerPanel{flex-direction:column;gap:8px;display:flex}.F1KBNa_colorPickerInputRow{align-items:center;gap:8px;display:flex}.F1KBNa_colorPickerPreview{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex:none;width:22px;height:22px}.F1KBNa_colorPickerInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-module-platform);min-width:0;height:30px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:0 8px;font-size:12px;line-height:28px}.F1KBNa_colorPickerInput:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.F1KBNa_colorSv{border:1px solid var(--dsw-alias-border-l1);cursor:crosshair;touch-action:none;border-radius:8px;height:140px;position:relative}.F1KBNa_colorSvCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_colorHue{border:1px solid var(--dsw-alias-border-l1);cursor:pointer;touch-action:none;border-radius:7px;height:14px;position:relative}.F1KBNa_colorHueCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_diffPreview{z-index:2;border:1px solid var(--dsw-alias-border-l1);font:var(--dsw-font-markdown-code-block);background:var(--dsw-alias-markdown-code-block);border-radius:8px;margin:16px 0 8px;padding:8px;position:sticky;top:0;overflow:hidden}.F1KBNa_diffPreviewTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:6px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_diffPreviewScroll{height:132px;overflow-y:auto}.F1KBNa_mdPreviewWrap{isolation:isolate;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_mdPreviewBody{min-width:0;min-height:0;color:var(--dsw-alias-label-primary);flex:1;padding:12px 16px;position:relative;overflow:auto}.F1KBNa_mdPreviewContent{width:100%;min-width:0;margin:0 auto}.F1KBNa_mdPreviewSingle{display:block}.F1KBNa_mdPreviewDouble{display:flex}.F1KBNa_mdPreviewBody .mdBlock{border-radius:4px;margin-bottom:12px;padding:2px 6px}.F1KBNa_mdPreviewBody .mdAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_mdPreviewBody .mdDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_mdPreviewBody .mdWordDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdWordAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdDouble{flex-direction:column;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleRow{align-items:flex-start;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleCol{flex:1;min-width:0}.F1KBNa_mdPreviewBody .mdDoubleRule{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:0 12px}.F1KBNa_mdPreviewFallback{font-family:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 16px;font-size:12px;line-height:18px}.F1KBNa_mdPreviewBody{word-break:break-word;font-size:13px;line-height:20px}.F1KBNa_mdPreviewBody>:first-child{margin-top:0}.F1KBNa_mdPreviewBody>:last-child{margin-bottom:0}.F1KBNa_mdPreviewBody h1,.F1KBNa_mdPreviewBody h2,.F1KBNa_mdPreviewBody h3,.F1KBNa_mdPreviewBody h4,.F1KBNa_mdPreviewBody h5,.F1KBNa_mdPreviewBody h6{margin:16px 0 8px;font-weight:600;line-height:1.3}.F1KBNa_mdPreviewBody h1{font-size:22px}.F1KBNa_mdPreviewBody h2{font-size:19px}.F1KBNa_mdPreviewBody h3{font-size:16px}.F1KBNa_mdPreviewBody h4{font-size:15px}.F1KBNa_mdPreviewBody h5{font-size:14px}.F1KBNa_mdPreviewBody h6{font-size:13px}.F1KBNa_mdPreviewBody p{margin:8px 0}.F1KBNa_mdPreviewBody ul,.F1KBNa_mdPreviewBody ol{margin:8px 0;padding-left:22px}.F1KBNa_mdPreviewBody li{margin:2px 0}.F1KBNa_mdPreviewBody a{color:var(--dsw-alias-state-business-primary);text-decoration:none}.F1KBNa_mdPreviewBody a:hover{text-decoration:underline}.F1KBNa_mdPreviewBody code{font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:4px;padding:1px 5px;font-size:12.5px}.F1KBNa_mdPreviewBody pre{border:1px solid var(--dsw-alias-border-l1);font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:8px;margin:8px 0;padding:10px 12px;font-size:12.5px;line-height:18px;overflow:auto}.F1KBNa_mdPreviewBody pre code{background:0 0;padding:0}.F1KBNa_mdPreviewBody blockquote{border-left:3px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);margin:8px 0;padding:0 12px}.F1KBNa_mdPreviewBody hr{background:var(--dsw-alias-border-l1);border:none;height:1px;margin:16px 0}.F1KBNa_mdPreviewBody table{border-collapse:collapse;margin:8px 0}.F1KBNa_mdPreviewBody th,.F1KBNa_mdPreviewBody td{border:1px solid var(--dsw-alias-border-l1);padding:4px 10px}.F1KBNa_mdPreviewBody img{max-width:100%}.F1KBNa_mdPreviewBody .mdImageFallback{border:1px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-markdown-code-block) 45%, transparent);width:100%;min-height:120px;color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-markdown-code-block);text-align:center;white-space:pre-wrap;word-break:break-all;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;padding:8px 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_toggle{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:18px;flex:none;width:60px;height:36px;padding:0;position:relative}.F1KBNa_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_toggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.F1KBNa_toggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleOn:hover{background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleThumb{background:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;transition:left .12s;position:absolute;top:3px;left:3px}.F1KBNa_toggleOn .F1KBNa_toggleThumb{background:#fff;left:27px}.F1KBNa_stepper{align-items:center;gap:6px;display:inline-flex}.F1KBNa_stepperButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;padding:0;position:relative}.F1KBNa_stepperButton:before,.F1KBNa_stepperButton:after{content:\"\";background:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_stepperButton:before{width:10px;height:1px}.F1KBNa_stepperButton:after{width:1px;height:10px;display:none}.F1KBNa_stepperButtonUp:after{display:block}.F1KBNa_stepperButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_stepperButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_stepperValue{text-align:center;min-width:2ch;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:14px;line-height:22px}.F1KBNa_states{flex-direction:column;flex:1;min-height:0;padding:4px 12px 12px;display:flex;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex;position:relative}.F1KBNa_fileListKnob{z-index:39;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;box-shadow:var(--dsw-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 8px 10px;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:240px;min-height:0;padding:4px 8px 12px;display:flex}.F1KBNa_listScroll{flex:1;min-height:0;overflow-y:scroll}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;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_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.F1KBNa_pickerCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:420px;max-width:100%;height:70%;max-height:100%;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.F1KBNa_pickerTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_pickerClose{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:10px;right:10px}.F1KBNa_pickerClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_pickerForm{flex:none;gap:8px;display:flex}.F1KBNa_pickerInput{border:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;flex:auto;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_pickerInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_tree{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,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_noteCentered{text-align:center;margin:auto}.F1KBNa_emptyState{flex-direction:column;align-items:center;gap:10px;margin:auto;display:flex}.F1KBNa_importButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:5px 14px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_importButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_importButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_importNote{color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_groupHead{align-items:center;gap:4px;margin:8px 0 4px;padding-right:8px;display:flex}.F1KBNa_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_groupHead>.F1KBNa_group{margin:0}.F1KBNa_emptyActions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:4px;font-size:12px;line-height:18px;position:relative;top:1px;overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_panelDocked .F1KBNa_diffHeader{background:var(--dsw-alias-bg-base)}.F1KBNa_diffPath{white-space:nowrap;scrollbar-width:none;min-width:0;color:var(--dsw-alias-label-primary);-webkit-user-select:text;user-select:text;flex:1;margin-left:4px;font-size:12px;line-height:18px;position:relative;top:1px;overflow:auto hidden}.F1KBNa_diffPath::-webkit-scrollbar{display:none}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_divider{background:var(--dsw-alias-border-l1);align-self:stretch;width:1px;margin:2px 0}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_actionQuietDisabled:disabled{cursor:pointer;color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l1);background:0 0}.F1KBNa_actionPrimary.F1KBNa_actionQuietDisabled:disabled{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:1}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{isolation:isolate;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_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:1;box-sizing:border-box;border:2px solid var(--dsw-alias-state-business-primary);pointer-events:none;border-radius:4px;animation:1s ease-out forwards F1KBNa_diffFlashFade;position:absolute;left:0;right:0}.F1KBNa_blockFlashShake{animation:.7s ease-out forwards F1KBNa_diffFlashShake}.F1KBNa_discussionRow{display:table-row}.F1KBNa_discussionCell{display:table-cell}.F1KBNa_discussionPin{width:0;height:0;position:sticky;left:0}.F1KBNa_discussion{z-index:2;box-sizing:border-box;background:var(--dsw-alias-bg-base);border-left:3px solid var(--dsw-alias-label-secondary);flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden}.F1KBNa_discussionHead,.F1KBNa_discussionBody{font:var(--dsw-font-markdown-code-block)}.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-state-warn-primary,var(--dsw-alias-label-tertiary))}.F1KBNa_discussion[data-lost] .F1KBNa_discussionAnswer{color:var(--dsw-alias-label-secondary)}.F1KBNa_discussionAnswer{color:var(--dsw-alias-label-primary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0}.F1KBNa_discussionUser{padding:calc(var(--dsh-diff-line-height,22px) * .2) calc(var(--dsh-diff-line-height,22px) * .5);margin:calc(var(--dsh-diff-line-height,22px) * .3) 0 calc(var(--dsh-diff-line-height,22px) * .3) auto;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);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px}.F1KBNa_discussionNote{color:var(--dsw-alias-label-secondary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0}.F1KBNa_discussionNote[data-diff-discussion-hidden]{color:var(--dsw-alias-label-tertiary)}.F1KBNa_discussionHead{box-sizing:border-box;height:var(--dsh-diff-line-height,22px);flex:none;align-items:center;gap:8px;padding:0 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_discussionCompose{box-sizing:border-box;height:calc(var(--dsh-diff-line-height,22px) * 2);flex:none;align-items:center;gap:8px;margin:0 -6px;padding:0;display:flex}.F1KBNa_discussionInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;color:var(--dsw-alias-label-primary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));border-radius:6px;flex:auto;padding:3px 8px;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{font:var(--dsw-font-markdown-code-block);flex:none}.F1KBNa_discussionRange{color:var(--dsw-alias-label-tertiary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1))}.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;padding-left:9px;padding-right:9px;display:inline-flex}.F1KBNa_rowDiscussed{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent))}@keyframes F1KBNa_diffFlashFade{0%{opacity:1}to{opacity:0}}@keyframes F1KBNa_diffFlashShake{0%{opacity:1;transform:translateY(0)}10%{transform:translateY(1px)}20%{transform:translateY(-1px)}30%{transform:translateY(1px)}40%{transform:translateY(-1px)}50%{transform:translateY(1px)}60%{transform:translateY(-1px)}70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}.F1KBNa_overviewRuler{pointer-events:none;opacity:.5;width:4px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_overviewMarker{border-radius:2px;width:100%;min-height:2px;position:absolute;right:0}.F1KBNa_markerDel{background-color:var(--dsw-alias-state-error-primary)}.F1KBNa_markerAdd{background-color:var(--dsw-alias-state-success-primary)}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;font-size:calc(1em * var(--dsh-diff-font-scale,1));display:table}.F1KBNa_line{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);-webkit-user-select:none;user-select:none;display:table-row}.F1KBNa_vSpacer{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;-webkit-user-select:text;user-select:text;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.F1KBNa_presentationSelect{cursor:pointer;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_presentationSelect:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_chip{justify-content:flex-end;align-items:center;gap:5px;min-width:0;padding-right:14px;display:inline-flex}.F1KBNa_chipLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_coverHost{align-items:center;display:inline-flex;position:relative}.F1KBNa_coverCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;align-items:center;gap:4px;padding:6px;display:flex}.F1KBNa_coverPopover{z-index:50;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_coverNotice{z-index:80;pointer-events:none;animation:1.25s ease-out forwards F1KBNa_coverNoticeFade;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_coverNoticeCard{gap:4px;padding:6px 8px}@keyframes F1KBNa_coverNoticeFade{0%,78%{opacity:1}to{opacity:0}}.F1KBNa_coverNoticeGlyph{width:44px;height:44px;color:var(--dsw-alias-label-tertiary);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_coverNoticeGlyph[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_coverNoticeGlyph[data-changed]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_coverNoticeText{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.F1KBNa_coverButton{width:32px;height:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_coverButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_coverButton[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_presentationHost{align-items:center;display:inline-flex}.F1KBNa_chipPresentation{min-width:36px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:20px;flex:none;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_chipPresentation:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_mirrored{transform:scaleX(-1)}.F1KBNa_notice{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:360px;box-shadow:var(--dsw-shadow-lv3);border-radius:10px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex;position:fixed;bottom:24px;right:24px}.F1KBNa_noticeText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);flex:1;margin:0;line-height:1.45}.F1KBNa_noticeButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font:var(--dsw-font-caption);cursor:pointer;border-radius:6px;flex:none;padding:4px 10px}.F1KBNa_noticeButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_wrap .F1KBNa_line{height:auto;min-height:var(--dsh-diff-line-height,22px)}.F1KBNa_subline{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);white-space:pre;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{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;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{min-width:0;height:var(--dsh-scrollbar-width,8px);flex:1 1 0;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:var(--dsh-scrollbar-width,8px)}.F1KBNa_splitHScroll::-webkit-scrollbar-track{cursor:default}.F1KBNa_splitHScroll::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_splitHScrollFill{height:1px}.F1KBNa_splitLdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 26%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 24%, transparent)}";
|
|
24
|
+
const css = ".F1KBNa_panelFailure{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-primary);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12px;line-height:16px;display:flex}.F1KBNa_panelFailureText{min-width:0}.F1KBNa_panelFailureRetry{border:1px solid var(--dsw-alias-border-l2);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:6px;flex:none;margin-left:auto;padding:2px 8px}.F1KBNa_panelFailureRetry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_headerEntry{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:28px;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex;position:relative}.F1KBNa_headerEntry:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_headerEntry[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.F1KBNa_headerEntry:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_headerEntryCount{box-sizing:border-box;background:var(--dsw-alias-button-primary-fill);min-width:14px;height:14px;color:var(--dsw-alias-label-primary-foreground);text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:7px;padding:0 3px;font-size:10px;line-height:14px;position:absolute;top:-1px;right:-1px}.F1KBNa_headerEntry svg{display:block}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badge:disabled{color:var(--dsw-alias-label-tertiary);cursor:default;background:0 0}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_coverBackdrop{z-index:29;background:var(--dsw-specific-sidebar-fill);position:fixed;inset:0}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);-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_discussionUser,.F1KBNa_panel .F1KBNa_discussionAnswer,.F1KBNa_panel .F1KBNa_quoteText,.F1KBNa_panel .F1KBNa_diffPath,.F1KBNa_panel .F1KBNa_rowPath,.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{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsGroupText{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.F1KBNa_settingsGroupTitle{font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsGroupDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsGroupChevron{margin-left:auto;transition:transform .15s}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupChevron{transform:rotate(180deg)}.F1KBNa_settingsGroup[data-open] .F1KBNa_settingsGroupHeader{border-bottom:1px solid var(--dsw-alias-border-l2)}.F1KBNa_settingsGroupBody{flex-direction:column;display:flex}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow{padding-left:16px}.F1KBNa_settingsGroupBody .F1KBNa_settingsRow:last-child,.F1KBNa_settingsPage>.F1KBNa_settingsRow:last-child{border-bottom:none}.F1KBNa_settingsRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.F1KBNa_settingsRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.F1KBNa_settingsRowTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.F1KBNa_settingsRowDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.F1KBNa_settingsSelector{background:var(--dsw-alias-bg-module-platform);min-width:72px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelector[data-recording]{box-shadow:inset 0 0 0 1px var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-secondary)}.F1KBNa_settingsReset{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;margin-left:6px;padding:0;display:inline-flex}.F1KBNa_settingsReset:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_settingsReset:disabled{opacity:.4;cursor:default}.F1KBNa_colorPicker{position:relative}.F1KBNa_colorPickerTrigger{background:var(--dsw-alias-bg-module-platform);width:120px;height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_colorPickerTrigger:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_colorSwatch{border:1px solid var(--dsw-alias-border-l2);border-radius:50%;flex:none;width:24px;height:24px}.F1KBNa_colorValue{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden}.F1KBNa_colorPickerChevron{flex:none}.F1KBNa_colorBackdrop{z-index:40;position:fixed;inset:0}.F1KBNa_colorPickerPopover{z-index:41;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:10px;padding:10px;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_colorPickerPanel{flex-direction:column;gap:8px;display:flex}.F1KBNa_colorPickerInputRow{align-items:center;gap:8px;display:flex}.F1KBNa_colorPickerPreview{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;flex:none;width:22px;height:22px}.F1KBNa_colorPickerInput{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-module-platform);min-width:0;height:30px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;flex:1;padding:0 8px;font-size:12px;line-height:28px}.F1KBNa_colorPickerInput:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.F1KBNa_colorSv{border:1px solid var(--dsw-alias-border-l1);cursor:crosshair;touch-action:none;border-radius:8px;height:140px;position:relative}.F1KBNa_colorSvCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_colorHue{border:1px solid var(--dsw-alias-border-l1);cursor:pointer;touch-action:none;border-radius:7px;height:14px;position:relative}.F1KBNa_colorHueCursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080}.F1KBNa_diffPreview{z-index:2;border:1px solid var(--dsw-alias-border-l1);font:var(--dsw-font-markdown-code-block);background:var(--dsw-alias-markdown-code-block);border-radius:8px;margin:16px 0 8px;padding:8px;position:sticky;top:0;overflow:hidden}.F1KBNa_diffPreviewTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:6px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_diffPreviewScroll{height:132px;overflow-y:auto}.F1KBNa_mdPreviewWrap{isolation:isolate;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_mdPreviewBody{min-width:0;min-height:0;color:var(--dsw-alias-label-primary);flex:1;padding:12px 16px;position:relative;overflow:auto}.F1KBNa_mdPreviewContent{width:100%;min-width:0;margin:0 auto}.F1KBNa_mdPreviewSingle{display:block}.F1KBNa_mdPreviewDouble{display:flex}.F1KBNa_mdPreviewBody .mdBlock{border-radius:4px;margin-bottom:12px;padding:2px 6px}.F1KBNa_mdPreviewBody .mdAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_mdPreviewBody .mdDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_mdPreviewBody .mdWordDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdWordAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 34%, transparent);border-radius:2px;padding:0 1px}.F1KBNa_mdPreviewBody .mdDouble{flex-direction:column;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleRow{align-items:flex-start;width:100%;min-width:0;display:flex}.F1KBNa_mdPreviewBody .mdDoubleCol{flex:1;min-width:0}.F1KBNa_mdPreviewBody .mdDoubleRule{background:var(--dsw-alias-border-l2);flex:none;align-self:stretch;width:1px;margin:0 12px}.F1KBNa_mdPreviewFallback{font-family:var(--dsw-font-markdown-code-block);color:var(--dsw-alias-label-tertiary);padding:12px 16px;font-size:12px;line-height:18px}.F1KBNa_mdPreviewBody{word-break:break-word;font-size:13px;line-height:20px}.F1KBNa_mdPreviewBody>:first-child{margin-top:0}.F1KBNa_mdPreviewBody>:last-child{margin-bottom:0}.F1KBNa_mdPreviewBody h1,.F1KBNa_mdPreviewBody h2,.F1KBNa_mdPreviewBody h3,.F1KBNa_mdPreviewBody h4,.F1KBNa_mdPreviewBody h5,.F1KBNa_mdPreviewBody h6{margin:16px 0 8px;font-weight:600;line-height:1.3}.F1KBNa_mdPreviewBody h1{font-size:22px}.F1KBNa_mdPreviewBody h2{font-size:19px}.F1KBNa_mdPreviewBody h3{font-size:16px}.F1KBNa_mdPreviewBody h4{font-size:15px}.F1KBNa_mdPreviewBody h5{font-size:14px}.F1KBNa_mdPreviewBody h6{font-size:13px}.F1KBNa_mdPreviewBody p{margin:8px 0}.F1KBNa_mdPreviewBody ul,.F1KBNa_mdPreviewBody ol{margin:8px 0;padding-left:22px}.F1KBNa_mdPreviewBody li{margin:2px 0}.F1KBNa_mdPreviewBody a{color:var(--dsw-alias-state-business-primary);text-decoration:none}.F1KBNa_mdPreviewBody a:hover{text-decoration:underline}.F1KBNa_mdPreviewBody code{font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:4px;padding:1px 5px;font-size:12.5px}.F1KBNa_mdPreviewBody pre{border:1px solid var(--dsw-alias-border-l1);font-family:var(--dsw-font-markdown-code-block);background:#9e9e9e40;border-radius:8px;margin:8px 0;padding:10px 12px;font-size:12.5px;line-height:18px;overflow:auto}.F1KBNa_mdPreviewBody pre code{background:0 0;padding:0}.F1KBNa_mdPreviewBody blockquote{border-left:3px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);margin:8px 0;padding:0 12px}.F1KBNa_mdPreviewBody hr{background:var(--dsw-alias-border-l1);border:none;height:1px;margin:16px 0}.F1KBNa_mdPreviewBody table{border-collapse:collapse;margin:8px 0}.F1KBNa_mdPreviewBody th,.F1KBNa_mdPreviewBody td{border:1px solid var(--dsw-alias-border-l1);padding:4px 10px}.F1KBNa_mdPreviewBody img{max-width:100%}.F1KBNa_mdPreviewBody .mdImageFallback{border:1px dashed var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-markdown-code-block) 45%, transparent);width:100%;min-height:120px;color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-markdown-code-block);text-align:center;white-space:pre-wrap;word-break:break-all;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;padding:8px 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_toggle{border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:18px;flex:none;width:60px;height:36px;padding:0;position:relative}.F1KBNa_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_toggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.F1KBNa_toggleOn{border-color:var(--dsw-alias-state-business-primary);background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleOn:hover{background:var(--dsw-alias-state-business-primary)}.F1KBNa_toggleThumb{background:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;transition:left .12s;position:absolute;top:3px;left:3px}.F1KBNa_toggleOn .F1KBNa_toggleThumb{background:#fff;left:27px}.F1KBNa_stepper{align-items:center;gap:6px;display:inline-flex}.F1KBNa_stepperButton{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:8px;padding:0;position:relative}.F1KBNa_stepperButton:before,.F1KBNa_stepperButton:after{content:\"\";background:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_stepperButton:before{width:10px;height:1px}.F1KBNa_stepperButton:after{width:1px;height:10px;display:none}.F1KBNa_stepperButtonUp:after{display:block}.F1KBNa_stepperButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_stepperButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_stepperValue{text-align:center;min-width:2ch;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:14px;line-height:22px}.F1KBNa_states{flex-direction:column;flex:1;min-height:0;padding:4px 12px 12px;display:flex;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex;position:relative}.F1KBNa_fileListKnob{z-index:39;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;box-shadow:var(--dsw-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:240px;min-height:0;padding:4px 8px 12px;display:flex}.F1KBNa_listScroll{flex:1;min-height:0;overflow-y:scroll}.F1KBNa_bulkActions{flex:none;gap:6px;padding:8px 8px 0 0;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;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_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.F1KBNa_pickerCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:420px;max-width:100%;height:70%;max-height:100%;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.F1KBNa_pickerTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.F1KBNa_pickerClose{width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:10px;right:10px}.F1KBNa_pickerClose:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_pickerForm{flex:none;gap:8px;display:flex}.F1KBNa_pickerInput{border:1px solid var(--dsw-alias-border-l1);min-width:0;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;flex:auto;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_pickerInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_tree{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,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_noteCentered{text-align:center;margin:auto}.F1KBNa_emptyState{flex-direction:column;align-items:center;gap:10px;margin:auto;display:flex}.F1KBNa_importButton{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:5px 14px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_importButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_importButton:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_importNote{color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_groupHead{align-items:center;gap:4px;margin:8px 0 4px;padding-right:8px;display:flex}.F1KBNa_action.F1KBNa_addButton{box-sizing:border-box;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;min-height:0;padding:0;display:inline-flex}.F1KBNa_groupHead>.F1KBNa_group{margin:0}.F1KBNa_emptyActions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:4px;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_panelDocked .F1KBNa_diffHeader{background:var(--dsw-alias-bg-base)}.F1KBNa_diffPath{white-space:nowrap;scrollbar-width:none;min-width:0;color:var(--dsw-alias-label-primary);flex:1;margin-left:4px;font-size:12px;line-height:18px;position:relative;top:1px;overflow:auto hidden}.F1KBNa_diffPath::-webkit-scrollbar{display:none}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_divider{background:var(--dsw-alias-border-l1);align-self:stretch;width:1px;margin:2px 0}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_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_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{isolation:isolate;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_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:1;box-sizing:border-box;border:2px solid var(--dsw-alias-state-business-primary);pointer-events:none;border-radius:4px;animation:1s ease-out forwards F1KBNa_diffFlashFade;position:absolute;left:0;right:0}.F1KBNa_blockFlashShake{animation:.7s ease-out forwards F1KBNa_diffFlashShake}.F1KBNa_discussionRow{background:var(--dsw-alias-bg-base);display:table-row}.F1KBNa_discussionCell{display:table-cell}.F1KBNa_discussionPin{width:0;height:0;position:sticky;left:0}.F1KBNa_discussion{z-index:2;box-sizing:border-box;border-left:3px solid var(--dsw-alias-label-secondary);cursor:default;background:0 0;flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden}.F1KBNa_discussionHead,.F1KBNa_discussionBody{font:var(--dsw-font-markdown-code-block)}.F1KBNa_discussionBody{flex-direction:column;flex:auto;min-height:0;padding:0 12px;display:flex;overflow:hidden}.F1KBNa_discussionAnswer{color:var(--dsw-alias-label-primary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0}.F1KBNa_discussionUser{padding:calc(var(--dsh-diff-line-height,22px) * .2) calc(var(--dsh-diff-line-height,22px) * .5);margin:calc(var(--dsh-diff-line-height,22px) * .3) 0 calc(var(--dsh-diff-line-height,22px) * .3) auto;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);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px 0 8px 8px}.F1KBNa_discussionNote{color:var(--dsw-alias-label-secondary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0}.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-size:calc(1em * var(--dsh-diff-font-scale,1));line-height:var(--dsh-diff-line-height,22px);margin:0 -12px 0 -15px;display:table}.F1KBNa_quoteLine{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_discussionOutdated{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:16px}.F1KBNa_discussionHead{box-sizing:border-box;height:var(--dsh-diff-line-height,22px);flex:none;align-items:center;gap:8px;padding:0 12px;font-size:12px;line-height:16px;display:flex}.F1KBNa_discussionCompose{box-sizing:border-box;height:calc(var(--dsh-diff-line-height,22px) * 2);flex:none;align-items:center;gap:8px;margin:0 -6px;padding:0;display:flex}.F1KBNa_discussionInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);min-width:0;color:var(--dsw-alias-label-primary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1));cursor:text;border-radius:6px;flex:auto;padding:3px 8px;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{font:var(--dsw-font-markdown-code-block);flex:none}.F1KBNa_discussionRange{color:var(--dsw-alias-label-tertiary);font-family:inherit;font-size:calc(1em * var(--dsh-diff-font-scale,1))}.F1KBNa_discussionInput:focus{border-color:var(--dsw-alias-state-business-primary);outline:none}.F1KBNa_discussionInput:disabled{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-tertiary);cursor:default}.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;padding-left:9px;padding-right:9px;display:inline-flex}.F1KBNa_rowDiscussed{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent))}@keyframes F1KBNa_diffFlashFade{0%{opacity:1}to{opacity:0}}@keyframes F1KBNa_diffFlashShake{0%{opacity:1;transform:translateY(0)}10%{transform:translateY(1px)}20%{transform:translateY(-1px)}30%{transform:translateY(1px)}40%{transform:translateY(-1px)}50%{transform:translateY(1px)}60%{transform:translateY(-1px)}70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}.F1KBNa_overviewRuler{pointer-events:none;opacity:.5;width:4px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_overviewMarker{border-radius:2px;width:100%;min-height:2px;position:absolute;right:0}.F1KBNa_markerDel{background-color:var(--dsw-alias-state-error-primary)}.F1KBNa_markerAdd{background-color:var(--dsw-alias-state-success-primary)}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;font-size:calc(1em * var(--dsh-diff-font-scale,1));display:table}.F1KBNa_line{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);-webkit-user-select:none;user-select:none;display:table-row}.F1KBNa_vSpacer{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;-webkit-user-select:text;user-select:text;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.F1KBNa_presentationSelect{cursor:pointer;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_presentationSelect:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_chip{justify-content:flex-end;align-items:center;gap:5px;min-width:0;padding-right:14px;display:inline-flex}.F1KBNa_chipLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.F1KBNa_coverHost{align-items:center;display:inline-flex;position:relative}.F1KBNa_coverCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;align-items:center;gap:4px;padding:6px;display:flex}.F1KBNa_coverPopover{z-index:50;position:absolute;top:calc(100% + 6px);right:0}.F1KBNa_coverNotice{z-index:80;pointer-events:none;animation:1.25s ease-out forwards F1KBNa_coverNoticeFade;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.F1KBNa_coverNoticeCard{gap:4px;padding:6px 8px}@keyframes F1KBNa_coverNoticeFade{0%,78%{opacity:1}to{opacity:0}}.F1KBNa_coverNoticeGlyph{width:44px;height:44px;color:var(--dsw-alias-label-tertiary);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.F1KBNa_coverNoticeGlyph[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_coverNoticeGlyph[data-changed]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_coverNoticeText{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.F1KBNa_coverButton{width:32px;height:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_coverButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_coverButton[data-on]{color:var(--dsw-alias-label-primary)}.F1KBNa_presentationHost{align-items:center;display:inline-flex}.F1KBNa_chipPresentation{min-width:36px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:20px;flex:none;justify-content:center;align-items:center;gap:2px;padding:0 6px;display:inline-flex}.F1KBNa_chipPresentation:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_mirrored{transform:scaleX(-1)}.F1KBNa_notice{z-index:60;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:360px;box-shadow:var(--dsw-shadow-lv3);border-radius:10px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex;position:fixed;bottom:24px;right:24px}.F1KBNa_noticeText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);flex:1;margin:0;line-height:1.45}.F1KBNa_noticeButton{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);font:var(--dsw-font-caption);cursor:pointer;border-radius:6px;flex:none;padding:4px 10px}.F1KBNa_noticeButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_wrap .F1KBNa_line{height:auto;min-height:var(--dsh-diff-line-height,22px)}.F1KBNa_subline{height:var(--dsh-diff-line-height,22px);line-height:var(--dsh-diff-line-height,22px);white-space:pre;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{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;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{min-width:0;height:var(--dsh-scrollbar-width,8px);flex:1 1 0;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:var(--dsh-scrollbar-width,8px)}.F1KBNa_splitHScroll::-webkit-scrollbar-track{cursor:default}.F1KBNa_splitHScroll::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_splitHScrollFill{height:1px}.F1KBNa_splitLdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 10%, transparent)}.F1KBNa_intraDel{background-color:color-mix(in srgb, var(--dsh-diff-del-color,var(--dsw-alias-state-error-primary)) 26%, transparent);text-decoration:line-through}.F1KBNa_intraAdd{background-color:color-mix(in srgb, var(--dsh-diff-add-color,var(--dsw-alias-state-success-primary)) 24%, transparent)}";
|
|
25
25
|
const tagId = "dsh-diff-approval/PendingPanel.module.css";
|
|
26
26
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
27
27
|
const tag = document.createElement("style");
|
|
@@ -31,223 +31,232 @@ window.__ModuleLoader__.load({
|
|
|
31
31
|
document.head.appendChild(tag);
|
|
32
32
|
}
|
|
33
33
|
var PendingPanel_module_css_default = {
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"headerActions": "F1KBNa_headerActions",
|
|
37
|
-
"pickerIcon": "F1KBNa_pickerIcon",
|
|
38
|
-
"searchToggle": "F1KBNa_searchToggle",
|
|
39
|
-
"settingsGroup": "F1KBNa_settingsGroup",
|
|
40
|
-
"mdPreviewBody": "F1KBNa_mdPreviewBody",
|
|
41
|
-
"mirrored": "F1KBNa_mirrored",
|
|
42
|
-
"wrapActive": "F1KBNa_wrapActive",
|
|
43
|
-
"settingsGroupDesc": "F1KBNa_settingsGroupDesc",
|
|
44
|
-
"pickerForm": "F1KBNa_pickerForm",
|
|
45
|
-
"importButton": "F1KBNa_importButton",
|
|
46
|
-
"splitRadd": "F1KBNa_splitRadd",
|
|
47
|
-
"colorHueCursor": "F1KBNa_colorHueCursor",
|
|
48
|
-
"groupHead": "F1KBNa_groupHead",
|
|
49
|
-
"fileListKnobIn": "F1KBNa_fileListKnobIn",
|
|
50
|
-
"diffFlashFade": "F1KBNa_diffFlashFade",
|
|
51
|
-
"coverHost": "F1KBNa_coverHost",
|
|
52
|
-
"pickerName": "F1KBNa_pickerName",
|
|
53
|
-
"colorPickerPanel": "F1KBNa_colorPickerPanel",
|
|
54
|
-
"stepperValue": "F1KBNa_stepperValue",
|
|
55
|
-
"stepperButton": "F1KBNa_stepperButton",
|
|
56
|
-
"discussionCell": "F1KBNa_discussionCell",
|
|
57
|
-
"layer": "F1KBNa_layer",
|
|
58
|
-
"line": "F1KBNa_line",
|
|
59
|
-
"chipLabel": "F1KBNa_chipLabel",
|
|
60
|
-
"footerButtons": "F1KBNa_footerButtons",
|
|
61
|
-
"searchInput": "F1KBNa_searchInput",
|
|
62
|
-
"searchCount": "F1KBNa_searchCount",
|
|
63
|
-
"discussionCompose": "F1KBNa_discussionCompose",
|
|
34
|
+
"settingsSelector": "F1KBNa_settingsSelector",
|
|
35
|
+
"notice": "F1KBNa_notice",
|
|
64
36
|
"toggle": "F1KBNa_toggle",
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"colorValue": "F1KBNa_colorValue",
|
|
74
|
-
"addButton": "F1KBNa_addButton",
|
|
75
|
-
"settingsGroupTitle": "F1KBNa_settingsGroupTitle",
|
|
76
|
-
"colorSwatch": "F1KBNa_colorSwatch",
|
|
37
|
+
"quoteCode": "F1KBNa_quoteCode",
|
|
38
|
+
"noticeText": "F1KBNa_noticeText",
|
|
39
|
+
"readError": "F1KBNa_readError",
|
|
40
|
+
"intraAdd": "F1KBNa_intraAdd",
|
|
41
|
+
"pickerTitle": "F1KBNa_pickerTitle",
|
|
42
|
+
"colorSv": "F1KBNa_colorSv",
|
|
43
|
+
"splitCol": "F1KBNa_splitCol",
|
|
44
|
+
"settingsGroupChevron": "F1KBNa_settingsGroupChevron",
|
|
77
45
|
"searchMatch": "F1KBNa_searchMatch",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"splitLadd": "F1KBNa_splitLadd",
|
|
87
|
-
"addCount": "F1KBNa_addCount",
|
|
88
|
-
"settingsGroupBody": "F1KBNa_settingsGroupBody",
|
|
89
|
-
"mdPreviewSingle": "F1KBNa_mdPreviewSingle",
|
|
90
|
-
"diffBodyWrap": "F1KBNa_diffBodyWrap",
|
|
91
|
-
"diffPreview": "F1KBNa_diffPreview",
|
|
92
|
-
"action": "F1KBNa_action",
|
|
93
|
-
"discussionRow": "F1KBNa_discussionRow",
|
|
46
|
+
"rowDiscussed": "F1KBNa_rowDiscussed",
|
|
47
|
+
"colorPickerPopover": "F1KBNa_colorPickerPopover",
|
|
48
|
+
"discussionCompose": "F1KBNa_discussionCompose",
|
|
49
|
+
"toggleOn": "F1KBNa_toggleOn",
|
|
50
|
+
"fileList": "F1KBNa_fileList",
|
|
51
|
+
"diffBodySplit": "F1KBNa_diffBodySplit",
|
|
52
|
+
"mdPreviewBody": "F1KBNa_mdPreviewBody",
|
|
53
|
+
"overviewRuler": "F1KBNa_overviewRuler",
|
|
94
54
|
"confirmBackdrop": "F1KBNa_confirmBackdrop",
|
|
55
|
+
"stepperButtonUp": "F1KBNa_stepperButtonUp",
|
|
56
|
+
"confirmCard": "F1KBNa_confirmCard",
|
|
57
|
+
"colorPicker": "F1KBNa_colorPicker",
|
|
58
|
+
"diffActions": "F1KBNa_diffActions",
|
|
59
|
+
"actionQuietDisabled": "F1KBNa_actionQuietDisabled",
|
|
60
|
+
"headerEntry": "F1KBNa_headerEntry",
|
|
61
|
+
"layer": "F1KBNa_layer",
|
|
62
|
+
"split": "F1KBNa_split",
|
|
63
|
+
"code": "F1KBNa_code",
|
|
95
64
|
"treeRow": "F1KBNa_treeRow",
|
|
65
|
+
"colorValue": "F1KBNa_colorValue",
|
|
66
|
+
"actionError": "F1KBNa_actionError",
|
|
67
|
+
"statusAction": "F1KBNa_statusAction",
|
|
68
|
+
"headerActions": "F1KBNa_headerActions",
|
|
69
|
+
"searchToggleOn": "F1KBNa_searchToggleOn",
|
|
70
|
+
"presentationSelect": "F1KBNa_presentationSelect",
|
|
71
|
+
"splitHScrollRow": "F1KBNa_splitHScrollRow",
|
|
72
|
+
"mdPreviewContent": "F1KBNa_mdPreviewContent",
|
|
73
|
+
"dockHost": "F1KBNa_dockHost",
|
|
74
|
+
"diffPath": "F1KBNa_diffPath",
|
|
75
|
+
"coverNotice": "F1KBNa_coverNotice",
|
|
76
|
+
"settingsGroupHeader": "F1KBNa_settingsGroupHeader",
|
|
77
|
+
"noteCentered": "F1KBNa_noteCentered",
|
|
78
|
+
"diff": "F1KBNa_diff",
|
|
79
|
+
"discussionAnswer": "F1KBNa_discussionAnswer",
|
|
80
|
+
"pickerForm": "F1KBNa_pickerForm",
|
|
81
|
+
"detailEmpty": "F1KBNa_detailEmpty",
|
|
82
|
+
"pickerCheck": "F1KBNa_pickerCheck",
|
|
83
|
+
"diffBody": "F1KBNa_diffBody",
|
|
84
|
+
"searchBar": "F1KBNa_searchBar",
|
|
85
|
+
"langLabel": "F1KBNa_langLabel",
|
|
96
86
|
"discussionToggle": "F1KBNa_discussionToggle",
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"settingsGroupText": "F1KBNa_settingsGroupText",
|
|
100
|
-
"colorSv": "F1KBNa_colorSv",
|
|
101
|
-
"divergedHint": "F1KBNa_divergedHint",
|
|
102
|
-
"mdPreviewWrap": "F1KBNa_mdPreviewWrap",
|
|
87
|
+
"fileListKnob": "F1KBNa_fileListKnob",
|
|
88
|
+
"diffPreviewTitle": "F1KBNa_diffPreviewTitle",
|
|
103
89
|
"del": "F1KBNa_del",
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"fileList": "F1KBNa_fileList",
|
|
108
|
-
"pickerNote": "F1KBNa_pickerNote",
|
|
109
|
-
"colorPickerInput": "F1KBNa_colorPickerInput",
|
|
110
|
-
"chipPresentation": "F1KBNa_chipPresentation",
|
|
111
|
-
"split": "F1KBNa_split",
|
|
90
|
+
"fileListFloat": "F1KBNa_fileListFloat",
|
|
91
|
+
"settingsGroup": "F1KBNa_settingsGroup",
|
|
92
|
+
"discussionDot": "F1KBNa_discussionDot",
|
|
112
93
|
"tree": "F1KBNa_tree",
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
94
|
+
"colorPickerInput": "F1KBNa_colorPickerInput",
|
|
95
|
+
"settingsGroupTitle": "F1KBNa_settingsGroupTitle",
|
|
96
|
+
"discussionBody": "F1KBNa_discussionBody",
|
|
97
|
+
"discussionNote": "F1KBNa_discussionNote",
|
|
98
|
+
"blockActions": "F1KBNa_blockActions",
|
|
99
|
+
"badgeCount": "F1KBNa_badgeCount",
|
|
100
|
+
"row": "F1KBNa_row",
|
|
101
|
+
"discussionSend": "F1KBNa_discussionSend",
|
|
102
|
+
"wrap": "F1KBNa_wrap",
|
|
103
|
+
"panelFailureRetry": "F1KBNa_panelFailureRetry",
|
|
104
|
+
"pickerIcon": "F1KBNa_pickerIcon",
|
|
105
|
+
"discussionInput": "F1KBNa_discussionInput",
|
|
106
|
+
"subline": "F1KBNa_subline",
|
|
107
|
+
"group": "F1KBNa_group",
|
|
108
|
+
"stepperButton": "F1KBNa_stepperButton",
|
|
109
|
+
"title": "F1KBNa_title",
|
|
110
|
+
"coverCard": "F1KBNa_coverCard",
|
|
124
111
|
"panel": "F1KBNa_panel",
|
|
125
|
-
"
|
|
112
|
+
"presentationHost": "F1KBNa_presentationHost",
|
|
113
|
+
"blockFlash": "F1KBNa_blockFlash",
|
|
114
|
+
"settingsRowText": "F1KBNa_settingsRowText",
|
|
115
|
+
"colorPickerTrigger": "F1KBNa_colorPickerTrigger",
|
|
116
|
+
"missingHint": "F1KBNa_missingHint",
|
|
126
117
|
"detail": "F1KBNa_detail",
|
|
127
|
-
"
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
118
|
+
"splitCols": "F1KBNa_splitCols",
|
|
119
|
+
"splitRadd": "F1KBNa_splitRadd",
|
|
120
|
+
"fileListShrink": "F1KBNa_fileListShrink",
|
|
121
|
+
"discussionUser": "F1KBNa_discussionUser",
|
|
122
|
+
"discussion": "F1KBNa_discussion",
|
|
123
|
+
"addButton": "F1KBNa_addButton",
|
|
124
|
+
"footerButtons": "F1KBNa_footerButtons",
|
|
125
|
+
"settingsGroupText": "F1KBNa_settingsGroupText",
|
|
126
|
+
"wrapActive": "F1KBNa_wrapActive",
|
|
135
127
|
"blockActionsDivider": "F1KBNa_blockActionsDivider",
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"noticeText": "F1KBNa_noticeText",
|
|
139
|
-
"group": "F1KBNa_group",
|
|
128
|
+
"coverPopover": "F1KBNa_coverPopover",
|
|
129
|
+
"diffPreviewScroll": "F1KBNa_diffPreviewScroll",
|
|
140
130
|
"coverNoticeGlyph": "F1KBNa_coverNoticeGlyph",
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
"
|
|
149
|
-
"
|
|
150
|
-
"resizeHandle": "F1KBNa_resizeHandle",
|
|
151
|
-
"panelFailureText": "F1KBNa_panelFailureText",
|
|
131
|
+
"quoteNoWrap": "F1KBNa_quoteNoWrap",
|
|
132
|
+
"addCount": "F1KBNa_addCount",
|
|
133
|
+
"searchInput": "F1KBNa_searchInput",
|
|
134
|
+
"importNote": "F1KBNa_importNote",
|
|
135
|
+
"splitHScroll": "F1KBNa_splitHScroll",
|
|
136
|
+
"pickerClose": "F1KBNa_pickerClose",
|
|
137
|
+
"chipPresentation": "F1KBNa_chipPresentation",
|
|
138
|
+
"rail": "F1KBNa_rail",
|
|
139
|
+
"rowFailed": "F1KBNa_rowFailed",
|
|
152
140
|
"diffStats": "F1KBNa_diffStats",
|
|
153
|
-
"hint": "F1KBNa_hint",
|
|
154
|
-
"mdPreviewContent": "F1KBNa_mdPreviewContent",
|
|
155
|
-
"badgeLabel": "F1KBNa_badgeLabel",
|
|
156
|
-
"bulkActions": "F1KBNa_bulkActions",
|
|
157
|
-
"settingsGroupHeader": "F1KBNa_settingsGroupHeader",
|
|
158
|
-
"detailEmpty": "F1KBNa_detailEmpty",
|
|
159
141
|
"expandExpanded": "F1KBNa_expandExpanded",
|
|
160
|
-
"
|
|
161
|
-
"
|
|
162
|
-
"coverPopover": "F1KBNa_coverPopover",
|
|
163
|
-
"add": "F1KBNa_add",
|
|
164
|
-
"coverButton": "F1KBNa_coverButton",
|
|
165
|
-
"pickerInput": "F1KBNa_pickerInput",
|
|
166
|
-
"note": "F1KBNa_note",
|
|
167
|
-
"rowHead": "F1KBNa_rowHead",
|
|
168
|
-
"toggleThumb": "F1KBNa_toggleThumb",
|
|
169
|
-
"discussionSend": "F1KBNa_discussionSend",
|
|
142
|
+
"diffHeader": "F1KBNa_diffHeader",
|
|
143
|
+
"colorHue": "F1KBNa_colorHue",
|
|
170
144
|
"treeCaret": "F1KBNa_treeCaret",
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
"panelFailureRetry": "F1KBNa_panelFailureRetry",
|
|
145
|
+
"quoteLine": "F1KBNa_quoteLine",
|
|
146
|
+
"discussionRangeWrap": "F1KBNa_discussionRangeWrap",
|
|
147
|
+
"splitLadd": "F1KBNa_splitLadd",
|
|
175
148
|
"colorPickerInputRow": "F1KBNa_colorPickerInputRow",
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
149
|
+
"mdPreviewFallback": "F1KBNa_mdPreviewFallback",
|
|
150
|
+
"colorPickerChevron": "F1KBNa_colorPickerChevron",
|
|
151
|
+
"colorBackdrop": "F1KBNa_colorBackdrop",
|
|
152
|
+
"colorPickerPreview": "F1KBNa_colorPickerPreview",
|
|
153
|
+
"fileListFloatClosing": "F1KBNa_fileListFloatClosing",
|
|
154
|
+
"settingsRow": "F1KBNa_settingsRow",
|
|
155
|
+
"importButton": "F1KBNa_importButton",
|
|
156
|
+
"markerAdd": "F1KBNa_markerAdd",
|
|
157
|
+
"toggleThumb": "F1KBNa_toggleThumb",
|
|
158
|
+
"settingsPage": "F1KBNa_settingsPage",
|
|
159
|
+
"colorHueCursor": "F1KBNa_colorHueCursor",
|
|
160
|
+
"headerEntryCount": "F1KBNa_headerEntryCount",
|
|
161
|
+
"mdPreviewWrap": "F1KBNa_mdPreviewWrap",
|
|
162
|
+
"pickerInput": "F1KBNa_pickerInput",
|
|
163
|
+
"settingsRowDesc": "F1KBNa_settingsRowDesc",
|
|
164
|
+
"overviewMarker": "F1KBNa_overviewMarker",
|
|
165
|
+
"actionPrimary": "F1KBNa_actionPrimary",
|
|
166
|
+
"chipLabel": "F1KBNa_chipLabel",
|
|
167
|
+
"rows": "F1KBNa_rows",
|
|
168
|
+
"panelDocked": "F1KBNa_panelDocked",
|
|
169
|
+
"coverButton": "F1KBNa_coverButton",
|
|
170
|
+
"lines": "F1KBNa_lines",
|
|
171
|
+
"kindTag": "F1KBNa_kindTag",
|
|
172
|
+
"badgeLabel": "F1KBNa_badgeLabel",
|
|
173
|
+
"states": "F1KBNa_states",
|
|
179
174
|
"iconAction": "F1KBNa_iconAction",
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
175
|
+
"splitHScrollFill": "F1KBNa_splitHScrollFill",
|
|
176
|
+
"rowPath": "F1KBNa_rowPath",
|
|
177
|
+
"coverNoticeFade": "F1KBNa_coverNoticeFade",
|
|
178
|
+
"discussionPin": "F1KBNa_discussionPin",
|
|
179
|
+
"pickerNote": "F1KBNa_pickerNote",
|
|
180
|
+
"emptyState": "F1KBNa_emptyState",
|
|
181
|
+
"gutter": "F1KBNa_gutter",
|
|
182
|
+
"panelFailureText": "F1KBNa_panelFailureText",
|
|
183
|
+
"confirmText": "F1KBNa_confirmText",
|
|
184
|
+
"header": "F1KBNa_header",
|
|
185
|
+
"close": "F1KBNa_close",
|
|
186
|
+
"discussionDots": "F1KBNa_discussionDots",
|
|
187
|
+
"quoteText": "F1KBNa_quoteText",
|
|
188
|
+
"confirmActions": "F1KBNa_confirmActions",
|
|
189
|
+
"action": "F1KBNa_action",
|
|
190
|
+
"discussionCell": "F1KBNa_discussionCell",
|
|
191
|
+
"splitLdel": "F1KBNa_splitLdel",
|
|
192
|
+
"vSpacer": "F1KBNa_vSpacer",
|
|
193
|
+
"intraDel": "F1KBNa_intraDel",
|
|
194
|
+
"note": "F1KBNa_note",
|
|
195
|
+
"searchCount": "F1KBNa_searchCount",
|
|
196
|
+
"statusBar": "F1KBNa_statusBar",
|
|
197
|
+
"coverNoticeCard": "F1KBNa_coverNoticeCard",
|
|
198
|
+
"fileListKnobIn": "F1KBNa_fileListKnobIn",
|
|
199
|
+
"bulkActions": "F1KBNa_bulkActions",
|
|
200
|
+
"flexSpacer": "F1KBNa_flexSpacer",
|
|
201
|
+
"settingsGroupBody": "F1KBNa_settingsGroupBody",
|
|
202
|
+
"colorSvCursor": "F1KBNa_colorSvCursor",
|
|
203
|
+
"settingsRowTitle": "F1KBNa_settingsRowTitle",
|
|
204
|
+
"rowHead": "F1KBNa_rowHead",
|
|
205
|
+
"colorPickerPanel": "F1KBNa_colorPickerPanel",
|
|
206
|
+
"mdPreviewDouble": "F1KBNa_mdPreviewDouble",
|
|
207
|
+
"stepperValue": "F1KBNa_stepperValue",
|
|
183
208
|
"missing": "F1KBNa_missing",
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
209
|
+
"discussionOutdated": "F1KBNa_discussionOutdated",
|
|
210
|
+
"markerDel": "F1KBNa_markerDel",
|
|
211
|
+
"hint": "F1KBNa_hint",
|
|
212
|
+
"settingsGroupDesc": "F1KBNa_settingsGroupDesc",
|
|
213
|
+
"blockFlashShake": "F1KBNa_blockFlashShake",
|
|
214
|
+
"searchMatchCurrent": "F1KBNa_searchMatchCurrent",
|
|
215
|
+
"emptyActions": "F1KBNa_emptyActions",
|
|
216
|
+
"coverHost": "F1KBNa_coverHost",
|
|
217
|
+
"langSelect": "F1KBNa_langSelect",
|
|
218
|
+
"diffFlashFade": "F1KBNa_diffFlashFade",
|
|
219
|
+
"splitRoot": "F1KBNa_splitRoot",
|
|
220
|
+
"splitRdel": "F1KBNa_splitRdel",
|
|
221
|
+
"diffBodyWrap": "F1KBNa_diffBodyWrap",
|
|
222
|
+
"discussionRow": "F1KBNa_discussionRow",
|
|
223
|
+
"discussionRange": "F1KBNa_discussionRange",
|
|
224
|
+
"expand": "F1KBNa_expand",
|
|
225
|
+
"pickerCard": "F1KBNa_pickerCard",
|
|
226
|
+
"add": "F1KBNa_add",
|
|
187
227
|
"kindHint": "F1KBNa_kindHint",
|
|
188
|
-
"
|
|
189
|
-
"rail": "F1KBNa_rail",
|
|
228
|
+
"stepper": "F1KBNa_stepper",
|
|
190
229
|
"splitDivider": "F1KBNa_splitDivider",
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"discussionNote": "F1KBNa_discussionNote",
|
|
194
|
-
"pickerCard": "F1KBNa_pickerCard",
|
|
195
|
-
"diffActions": "F1KBNa_diffActions",
|
|
196
|
-
"notice": "F1KBNa_notice",
|
|
197
|
-
"settingsGroupChevron": "F1KBNa_settingsGroupChevron",
|
|
198
|
-
"fileListKnob": "F1KBNa_fileListKnob",
|
|
199
|
-
"discussionUser": "F1KBNa_discussionUser",
|
|
200
|
-
"confirmText": "F1KBNa_confirmText",
|
|
201
|
-
"states": "F1KBNa_states",
|
|
202
|
-
"noticeButton": "F1KBNa_noticeButton",
|
|
203
|
-
"overviewRuler": "F1KBNa_overviewRuler",
|
|
204
|
-
"rowFailed": "F1KBNa_rowFailed",
|
|
205
|
-
"settingsRow": "F1KBNa_settingsRow",
|
|
206
|
-
"diffPreviewScroll": "F1KBNa_diffPreviewScroll",
|
|
207
|
-
"discussionBody": "F1KBNa_discussionBody",
|
|
208
|
-
"code": "F1KBNa_code",
|
|
209
|
-
"subline": "F1KBNa_subline",
|
|
210
|
-
"splitRoot": "F1KBNa_splitRoot",
|
|
211
|
-
"readError": "F1KBNa_readError",
|
|
212
|
-
"mdPreviewFallback": "F1KBNa_mdPreviewFallback",
|
|
213
|
-
"splitCols": "F1KBNa_splitCols",
|
|
230
|
+
"diffPreview": "F1KBNa_diffPreview",
|
|
231
|
+
"blockPosition": "F1KBNa_blockPosition",
|
|
214
232
|
"discussionHead": "F1KBNa_discussionHead",
|
|
215
|
-
"
|
|
216
|
-
"settingsRowText": "F1KBNa_settingsRowText",
|
|
217
|
-
"blockFlash": "F1KBNa_blockFlash",
|
|
218
|
-
"langSelect": "F1KBNa_langSelect",
|
|
233
|
+
"chip": "F1KBNa_chip",
|
|
219
234
|
"treeNote": "F1KBNa_treeNote",
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
"
|
|
226
|
-
"
|
|
227
|
-
"colorBackdrop": "F1KBNa_colorBackdrop",
|
|
228
|
-
"coverBackdrop": "F1KBNa_coverBackdrop",
|
|
229
|
-
"colorPicker": "F1KBNa_colorPicker",
|
|
230
|
-
"splitHScroll": "F1KBNa_splitHScroll",
|
|
231
|
-
"colorSvCursor": "F1KBNa_colorSvCursor",
|
|
232
|
-
"diffHeader": "F1KBNa_diffHeader",
|
|
233
|
-
"expand": "F1KBNa_expand",
|
|
234
|
-
"colorPickerPopover": "F1KBNa_colorPickerPopover",
|
|
235
|
-
"discussion": "F1KBNa_discussion",
|
|
236
|
-
"markerAdd": "F1KBNa_markerAdd",
|
|
237
|
-
"settingsRowDesc": "F1KBNa_settingsRowDesc",
|
|
238
|
-
"actionQuietDisabled": "F1KBNa_actionQuietDisabled",
|
|
239
|
-
"diffBodySplit": "F1KBNa_diffBodySplit",
|
|
240
|
-
"mdPreviewDouble": "F1KBNa_mdPreviewDouble",
|
|
241
|
-
"stepperButtonUp": "F1KBNa_stepperButtonUp",
|
|
235
|
+
"coverNoticeText": "F1KBNa_coverNoticeText",
|
|
236
|
+
"diffFlashShake": "F1KBNa_diffFlashShake",
|
|
237
|
+
"resizeHandle": "F1KBNa_resizeHandle",
|
|
238
|
+
"noticeButton": "F1KBNa_noticeButton",
|
|
239
|
+
"actionChord": "F1KBNa_actionChord",
|
|
240
|
+
"badge": "F1KBNa_badge",
|
|
241
|
+
"colorSwatch": "F1KBNa_colorSwatch",
|
|
242
242
|
"settingsReset": "F1KBNa_settingsReset",
|
|
243
|
+
"mdPreviewSingle": "F1KBNa_mdPreviewSingle",
|
|
244
|
+
"delCount": "F1KBNa_delCount",
|
|
245
|
+
"context": "F1KBNa_context",
|
|
246
|
+
"pickerName": "F1KBNa_pickerName",
|
|
243
247
|
"floatResizeHandle": "F1KBNa_floatResizeHandle",
|
|
244
|
-
"
|
|
245
|
-
"
|
|
248
|
+
"listScroll": "F1KBNa_listScroll",
|
|
249
|
+
"groupHead": "F1KBNa_groupHead",
|
|
250
|
+
"mirrored": "F1KBNa_mirrored",
|
|
251
|
+
"divider": "F1KBNa_divider",
|
|
252
|
+
"line": "F1KBNa_line",
|
|
253
|
+
"divergedHint": "F1KBNa_divergedHint",
|
|
254
|
+
"panelFailure": "F1KBNa_panelFailure",
|
|
255
|
+
"searchToggle": "F1KBNa_searchToggle",
|
|
256
|
+
"coverBackdrop": "F1KBNa_coverBackdrop",
|
|
246
257
|
"treeName": "F1KBNa_treeName",
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"badge": "F1KBNa_badge",
|
|
250
|
-
"langLabel": "F1KBNa_langLabel"
|
|
258
|
+
"quoteLines": "F1KBNa_quoteLines",
|
|
259
|
+
"rowMeta": "F1KBNa_rowMeta"
|
|
251
260
|
};
|
|
252
261
|
//#endregion
|
|
253
262
|
//#region lib/types/client/PathPicker.js
|
|
@@ -2808,47 +2817,143 @@ window.__ModuleLoader__.load({
|
|
|
2808
2817
|
* annotation at most, so a selection that touches an existing block offers no
|
|
2809
2818
|
* second one - otherwise two blocks would describe the same line.
|
|
2810
2819
|
*
|
|
2820
|
+
* An outdated thread owns no rows: the code under its numbers is no longer what the
|
|
2821
|
+
* comment was written about, so it cannot hold the range against a new annotation of the
|
|
2822
|
+
* code that is there now. Nothing marks those rows for it either (see the panel's band),
|
|
2823
|
+
* which is the same rule seen from the other side: a thread that no longer matches is
|
|
2824
|
+
* kept for its quote and its turns, not for its position.
|
|
2825
|
+
*
|
|
2811
2826
|
* @param discussions - the blocks currently attached to this file.
|
|
2812
2827
|
* @param anchor - the candidate range.
|
|
2813
2828
|
* @returns the overlapping discussion, or `undefined`.
|
|
2814
2829
|
*/
|
|
2815
2830
|
function discussionOverlapping(discussions, anchor) {
|
|
2816
|
-
return discussions.find((entry) => entry.anchor.start <= anchor.end && anchor.start <= entry.anchor.end);
|
|
2831
|
+
return discussions.find((entry) => entry.lost !== true && entry.anchor.start <= anchor.end && anchor.start <= entry.anchor.end);
|
|
2817
2832
|
}
|
|
2818
2833
|
/**
|
|
2819
|
-
*
|
|
2820
|
-
*
|
|
2821
|
-
*
|
|
2822
|
-
*
|
|
2834
|
+
* The same thread, marked as no longer sitting on the code it was written about.
|
|
2835
|
+
*
|
|
2836
|
+
* Overdue for nothing but the mark: the anchor, the quote and the turns all stay, so the
|
|
2837
|
+
* reader can still see what the comment meant. What goes is the writing row and the ownership
|
|
2838
|
+
* of the rows — there is no current code for an answer to be about.
|
|
2839
|
+
*
|
|
2840
|
+
* @param discussion - the block to mark.
|
|
2841
|
+
* @returns the marked block (the same object when it already carried the mark).
|
|
2842
|
+
*/
|
|
2843
|
+
function markOutdated(discussion) {
|
|
2844
|
+
return discussion.lost === true ? discussion : {
|
|
2845
|
+
...discussion,
|
|
2846
|
+
lost: true
|
|
2847
|
+
};
|
|
2848
|
+
}
|
|
2849
|
+
/**
|
|
2850
|
+
* The same thread with the outdated mark cleared, once the code it names holds its quote
|
|
2851
|
+
* again (a revert followed by a keep brings the lines back).
|
|
2852
|
+
*
|
|
2853
|
+
* @param discussion - the block to clear.
|
|
2854
|
+
* @returns the cleared block (the same object when it carried no mark).
|
|
2855
|
+
*/
|
|
2856
|
+
function clearOutdated(discussion) {
|
|
2857
|
+
if (discussion.lost !== true) return discussion;
|
|
2858
|
+
const next = { ...discussion };
|
|
2859
|
+
delete next.lost;
|
|
2860
|
+
return next;
|
|
2861
|
+
}
|
|
2862
|
+
/**
|
|
2863
|
+
* Re-anchor one discussion against the current rows.
|
|
2864
|
+
*
|
|
2865
|
+
* The anchor's new-file line numbers are what a rebuild moves; the quote the thread carries
|
|
2866
|
+
* is what says whether they still hold the code the comment was written about. When they do
|
|
2867
|
+
* not — the lines were edited under it, or the hunk moved — the quote is looked for elsewhere
|
|
2868
|
+
* in the model and the thread follows it, nearest occurrence first when the same code shows up
|
|
2869
|
+
* more than once. When nothing matches, the block keeps the rows it last matched and is marked
|
|
2870
|
+
* outdated: it says so and keeps its quote for the reader, rather than being silently moved
|
|
2871
|
+
* onto whatever took those lines. Only when the whole range is gone from the model does the
|
|
2872
|
+
* block move, and then by line number, back to where the range used to be (see `gone`). The mark
|
|
2873
|
+
* is derived, not sticky — the lines coming back with their quote clears it (GitHub recomputes
|
|
2874
|
+
* `isOutdated` the same way).
|
|
2823
2875
|
*
|
|
2824
2876
|
* @param discussion - the block to re-anchor.
|
|
2825
2877
|
* @param lineOf - the new-file line number of a row, or `undefined` for a row that has none.
|
|
2878
|
+
* @param textOf - the text of a row, for the quote comparison.
|
|
2826
2879
|
* @param rowCount - how many rows the current model has.
|
|
2827
2880
|
* @returns the re-anchored discussion (the same object when nothing moved).
|
|
2828
2881
|
*/
|
|
2829
|
-
function remapDiscussion(discussion, lineOf, rowCount) {
|
|
2830
|
-
|
|
2882
|
+
function remapDiscussion(discussion, lineOf, textOf, rowCount) {
|
|
2883
|
+
const { startLine, endLine } = discussion.anchor;
|
|
2831
2884
|
let start = -1;
|
|
2832
2885
|
let end = -1;
|
|
2886
|
+
let before = -1;
|
|
2833
2887
|
for (let row = 0; row < rowCount; row++) {
|
|
2834
2888
|
const line = lineOf(row);
|
|
2835
|
-
if (line === void 0
|
|
2889
|
+
if (line === void 0) continue;
|
|
2890
|
+
if (line < startLine) {
|
|
2891
|
+
before = row;
|
|
2892
|
+
continue;
|
|
2893
|
+
}
|
|
2894
|
+
if (line > endLine) continue;
|
|
2836
2895
|
if (start === -1) start = row;
|
|
2837
2896
|
end = row;
|
|
2838
2897
|
}
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2898
|
+
const quote = discussion.quote;
|
|
2899
|
+
const span = Math.max(0, endLine - startLine);
|
|
2900
|
+
const textAt = (row) => {
|
|
2901
|
+
const parts = [];
|
|
2902
|
+
for (let index = row; index <= row + span; index++) parts.push(index < rowCount ? textOf(index) : "");
|
|
2903
|
+
return parts.join("\n");
|
|
2842
2904
|
};
|
|
2843
|
-
|
|
2844
|
-
|
|
2905
|
+
/**
|
|
2906
|
+
* The block with no row of its range left in the model: marked outdated, and hung where the
|
|
2907
|
+
* range used to be — just below the last row that still reads before its first line.
|
|
2908
|
+
*
|
|
2909
|
+
* The row index it last matched is not used for that: it is a row index, so every edit above
|
|
2910
|
+
* the block shifts what it points at, and the panel clamps it to the file's last row once the
|
|
2911
|
+
* file is shorter than it — which is how a comment ends up at the bottom of the file with
|
|
2912
|
+
* nothing to do with where it was written. The line numbers stay exactly as they were: they are
|
|
2913
|
+
* the original position, and the header keeps showing them.
|
|
2914
|
+
*
|
|
2915
|
+
* @returns the block, marked and re-hung (the same object when it was already there).
|
|
2916
|
+
*/
|
|
2917
|
+
const gone = () => {
|
|
2918
|
+
const row = Math.max(0, before);
|
|
2919
|
+
if (discussion.lost === true && discussion.anchor.start === row && discussion.anchor.end === row) return discussion;
|
|
2920
|
+
return markOutdated({
|
|
2921
|
+
...discussion,
|
|
2922
|
+
anchor: {
|
|
2923
|
+
...discussion.anchor,
|
|
2924
|
+
start: row,
|
|
2925
|
+
end: row
|
|
2926
|
+
}
|
|
2927
|
+
});
|
|
2928
|
+
};
|
|
2929
|
+
if (quote === void 0 || quote === "" || start !== -1 && textAt(start) === quote) {
|
|
2930
|
+
if (start === -1) return gone();
|
|
2931
|
+
if (start === discussion.anchor.start && end === discussion.anchor.end) return clearOutdated(discussion);
|
|
2932
|
+
return clearOutdated({
|
|
2933
|
+
...discussion,
|
|
2934
|
+
anchor: {
|
|
2935
|
+
...discussion.anchor,
|
|
2936
|
+
start,
|
|
2937
|
+
end
|
|
2938
|
+
}
|
|
2939
|
+
});
|
|
2940
|
+
}
|
|
2941
|
+
let found = -1;
|
|
2942
|
+
for (let row = 0; row + span < rowCount; row++) {
|
|
2943
|
+
if (textAt(row) !== quote) continue;
|
|
2944
|
+
if (found === -1 || Math.abs(row - start) < Math.abs(found - start)) found = row;
|
|
2945
|
+
}
|
|
2946
|
+
if (found === -1) return start === -1 ? gone() : markOutdated(discussion);
|
|
2947
|
+
return clearOutdated({
|
|
2845
2948
|
...discussion,
|
|
2846
2949
|
anchor: {
|
|
2847
2950
|
...discussion.anchor,
|
|
2848
|
-
start,
|
|
2849
|
-
end
|
|
2951
|
+
start: found,
|
|
2952
|
+
end: found + span,
|
|
2953
|
+
startLine: lineOf(found) ?? startLine,
|
|
2954
|
+
endLine: lineOf(found + span) ?? endLine
|
|
2850
2955
|
}
|
|
2851
|
-
};
|
|
2956
|
+
});
|
|
2852
2957
|
}
|
|
2853
2958
|
/**
|
|
2854
2959
|
* Decide the selection frame's contents.
|
|
@@ -19198,6 +19303,34 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
19198
19303
|
* @module dsh-diff-approval/client/panel-memory
|
|
19199
19304
|
*/
|
|
19200
19305
|
const views = /* @__PURE__ */ new Map();
|
|
19306
|
+
/**
|
|
19307
|
+
* One session's comment threads, by pending entry id.
|
|
19308
|
+
*
|
|
19309
|
+
* A thread is not a preference and not the host's to keep: it is what this visit put on the
|
|
19310
|
+
* diff, and the panel unmounts whenever it is closed or its presentation changes (the
|
|
19311
|
+
* floating overlay and the docked tab are two mounts). Module state gives them one memory,
|
|
19312
|
+
* so the threads are still there when the panel comes back, and a page reload starts clean -
|
|
19313
|
+
* which is the lifetime the comments are supposed to have.
|
|
19314
|
+
*/
|
|
19315
|
+
const threads = /* @__PURE__ */ new Map();
|
|
19316
|
+
/**
|
|
19317
|
+
* The comment threads a session's panel is holding.
|
|
19318
|
+
* @param sessionId - the session, if any.
|
|
19319
|
+
* @returns the threads by pending entry id; empty when there are none.
|
|
19320
|
+
*/
|
|
19321
|
+
function rememberedDiscussions(sessionId) {
|
|
19322
|
+
return sessionId === void 0 ? {} : threads.get(sessionId) ?? {};
|
|
19323
|
+
}
|
|
19324
|
+
/**
|
|
19325
|
+
* Remember the comment threads a session's panel holds. Called on every change, so a mount
|
|
19326
|
+
* that appears later (another presentation, or the panel reopened) starts from them.
|
|
19327
|
+
* @param sessionId - the session the panel is reviewing; nothing is recorded without one.
|
|
19328
|
+
* @param byFile - the threads, by pending entry id.
|
|
19329
|
+
*/
|
|
19330
|
+
function rememberDiscussions(sessionId, byFile) {
|
|
19331
|
+
if (sessionId === void 0) return;
|
|
19332
|
+
threads.set(sessionId, byFile);
|
|
19333
|
+
}
|
|
19201
19334
|
/** This session's record, created on first use. */
|
|
19202
19335
|
function viewOf(sessionId) {
|
|
19203
19336
|
let view = views.get(sessionId);
|
|
@@ -19904,6 +20037,73 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
19904
20037
|
}
|
|
19905
20038
|
return nodes.length === 0 ? "\xA0" : nodes;
|
|
19906
20039
|
}
|
|
20040
|
+
/**
|
|
20041
|
+
* The code an outdated thread was written about.
|
|
20042
|
+
*
|
|
20043
|
+
* Laid out as the file's own rows are: the same two 44px gutters — with the numbers the lines
|
|
20044
|
+
* had — then the code column, so the quote sits on the file's columns rather than in a box of
|
|
20045
|
+
* its own. Highlighted with the same highlighter the rows use, on the language the file is read
|
|
20046
|
+
* in: a quote of code that renders as grey prose three rows under coloured code reads as a
|
|
20047
|
+
* different kind of thing. No search hits either — those belong to the file, and the quote is
|
|
20048
|
+
* not in it. The tokenize is memoised per quote and language, and the window is exactly the
|
|
20049
|
+
* quote, so a long one is one bounded job; an unknown language comes back plain.
|
|
20050
|
+
*
|
|
20051
|
+
* @param props.quote - the code, one line per `\n`.
|
|
20052
|
+
* @param props.lines - each line's gutter pair, in the same order.
|
|
20053
|
+
* @param props.lang - the grammar id the file is read in, or `undefined` for plain text.
|
|
20054
|
+
* @param props.wrap - the code view's wrap setting: off, the quote is one line per quoted line,
|
|
20055
|
+
* as the file renders it.
|
|
20056
|
+
*/
|
|
20057
|
+
function DiscussionQuote({ quote, lines, lang, wrap }) {
|
|
20058
|
+
const rows = (0, react.useMemo)(() => {
|
|
20059
|
+
const texts = quote.split("\n");
|
|
20060
|
+
const runs = highlightWindow(texts, lang, 0, texts.length)?.runs;
|
|
20061
|
+
return texts.map((text, index) => {
|
|
20062
|
+
const lineRuns = runs?.[index];
|
|
20063
|
+
const content = [];
|
|
20064
|
+
if (lineRuns === void 0) content.push(text);
|
|
20065
|
+
else for (const run of lineRuns) content.push((0, react_jsx_runtime.jsx)("span", {
|
|
20066
|
+
style: run.style,
|
|
20067
|
+
children: run.text
|
|
20068
|
+
}, content.length));
|
|
20069
|
+
return {
|
|
20070
|
+
content,
|
|
20071
|
+
gutter: lines?.[index]
|
|
20072
|
+
};
|
|
20073
|
+
});
|
|
20074
|
+
}, [
|
|
20075
|
+
quote,
|
|
20076
|
+
lines,
|
|
20077
|
+
lang
|
|
20078
|
+
]);
|
|
20079
|
+
return (0, react_jsx_runtime.jsx)("div", {
|
|
20080
|
+
className: `${PendingPanel_module_css_default.quoteLines}${wrap ? "" : " " + PendingPanel_module_css_default.quoteNoWrap}`,
|
|
20081
|
+
"data-diff-discussion-quote": true,
|
|
20082
|
+
children: rows.map((row, index) => (0, react_jsx_runtime.jsxs)("div", {
|
|
20083
|
+
className: PendingPanel_module_css_default.quoteLine,
|
|
20084
|
+
children: [
|
|
20085
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
20086
|
+
className: PendingPanel_module_css_default.gutter,
|
|
20087
|
+
"data-diff-quote-gutter": true,
|
|
20088
|
+
children: row.gutter?.old ?? ""
|
|
20089
|
+
}),
|
|
20090
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
20091
|
+
className: PendingPanel_module_css_default.gutter,
|
|
20092
|
+
"data-diff-quote-gutter": true,
|
|
20093
|
+
children: row.gutter?.new ?? ""
|
|
20094
|
+
}),
|
|
20095
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
20096
|
+
className: PendingPanel_module_css_default.quoteCode,
|
|
20097
|
+
children: (0, react_jsx_runtime.jsx)("span", {
|
|
20098
|
+
className: PendingPanel_module_css_default.quoteText,
|
|
20099
|
+
"data-diff-quote-text": true,
|
|
20100
|
+
children: row.content
|
|
20101
|
+
})
|
|
20102
|
+
})
|
|
20103
|
+
]
|
|
20104
|
+
}, index))
|
|
20105
|
+
});
|
|
20106
|
+
}
|
|
19907
20107
|
/** Chip styling for each intra-line run: removed chars and added chars stand out. */
|
|
19908
20108
|
const INTRA_CLASS = {
|
|
19909
20109
|
same: void 0,
|
|
@@ -21366,7 +21566,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21366
21566
|
const [hoveredBlock, setHoveredBlock] = (0, react.useState)(void 0);
|
|
21367
21567
|
const [selection, setSelection] = (0, react.useState)(void 0);
|
|
21368
21568
|
const [commentMode, setCommentMode] = (0, react.useState)(commentModeEnabled);
|
|
21369
|
-
const [discussionsByFile, setDiscussionsByFile] = (0, react.useState)(
|
|
21569
|
+
const [discussionsByFile, setDiscussionsByFile] = (0, react.useState)(() => rememberedDiscussions(file.sessionId));
|
|
21370
21570
|
const discussions = discussionsByFile[file.id] ?? EMPTY_DISCUSSIONS;
|
|
21371
21571
|
const setDiscussions = (update) => {
|
|
21372
21572
|
setDiscussionsByFile((all) => ({
|
|
@@ -21378,7 +21578,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21378
21578
|
const [discussionMenuFor, setDiscussionMenuFor] = (0, react.useState)(void 0);
|
|
21379
21579
|
const discussionMenuItems = (0, react.useMemo)(() => [{
|
|
21380
21580
|
id: "delete",
|
|
21381
|
-
label: t("action.
|
|
21581
|
+
label: t("action.discussionEnd")
|
|
21382
21582
|
}], [t]);
|
|
21383
21583
|
/** The session's chat, watched so a discussion can show the answer it asked for. */
|
|
21384
21584
|
const [chat, setChat] = (0, react.useState)({
|
|
@@ -21957,16 +22157,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21957
22157
|
*
|
|
21958
22158
|
* @param text - the message text.
|
|
21959
22159
|
* @param role - who said it: the two sides wrap at different widths.
|
|
22160
|
+
* @param widthPx - the exact width the text wraps in, when the caller lays it out somewhere
|
|
22161
|
+
* other than the thread's own column (the quote's code cell, which sits behind the file's two
|
|
22162
|
+
* gutters). Omitted, the turn's own column is used — and a bubble ignores it, since a bubble
|
|
22163
|
+
* wraps at its own percentage regardless.
|
|
21960
22164
|
* @returns the occupied row count (whole: a bubble's chrome is a whole row).
|
|
21961
22165
|
*/
|
|
21962
|
-
const messageRowsOf = (0, react.useCallback)((text, role) => {
|
|
22166
|
+
const messageRowsOf = (0, react.useCallback)((text, role, widthPx) => {
|
|
21963
22167
|
const lines = text.split("\n");
|
|
21964
22168
|
const bubble = role === "user";
|
|
21965
22169
|
const chrome = bubble ? 1 : 0;
|
|
21966
22170
|
const measure = makeMeasurer(codeFontOf());
|
|
21967
22171
|
if (measure === void 0 || bodyWidth === 0) return lines.length + chrome;
|
|
21968
22172
|
const body = Math.max(0, bodyWidth - discussionRightInsetPx - 3 - 24);
|
|
21969
|
-
const wrapping = (bubble ? body * DISCUSSION_BUBBLE_MAX_WIDTH - 2 * DISCUSSION_BUBBLE_SIDE_PADDING_ROWS * ROW_HEIGHT_PX : body) - measure("0");
|
|
22173
|
+
const wrapping = (widthPx ?? (bubble ? body * DISCUSSION_BUBBLE_MAX_WIDTH - 2 * DISCUSSION_BUBBLE_SIDE_PADDING_ROWS * ROW_HEIGHT_PX : body)) - measure("0");
|
|
21970
22174
|
if (wrapping <= 0) return lines.length + chrome;
|
|
21971
22175
|
const tabPx = tabWidthSpaces * measure(" ");
|
|
21972
22176
|
return chrome + lines.reduce((rows, line) => rows + Math.max(1, wrapInto(line, wrapping, measure, tabPx).length), 0);
|
|
@@ -21976,6 +22180,25 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21976
22180
|
discussionRightInsetPx
|
|
21977
22181
|
]);
|
|
21978
22182
|
/**
|
|
22183
|
+
* How many rows the quote of an outdated thread occupies: the code as it wraps in its own
|
|
22184
|
+
* code cell, which is the block's full width less the two gutters the quote lays out in. It
|
|
22185
|
+
* carries no chrome of its own — no box, no padding — so the count is the wrapped lines.
|
|
22186
|
+
*
|
|
22187
|
+
* @param quote - the code the thread was written about.
|
|
22188
|
+
* @param wrap - the code view's wrap setting: off, no line wraps, so the quote is exactly one
|
|
22189
|
+
* row per quoted line whatever the width.
|
|
22190
|
+
* @returns the occupied row count (whole).
|
|
22191
|
+
*/
|
|
22192
|
+
const quoteRowsOf = (0, react.useCallback)((quote, wrap) => {
|
|
22193
|
+
if (!wrap) return quote.split("\n").length;
|
|
22194
|
+
const width = Math.max(0, bodyWidth - discussionRightInsetPx) - WRAP_GUTTERS_PX;
|
|
22195
|
+
return messageRowsOf(quote, "assistant", width);
|
|
22196
|
+
}, [
|
|
22197
|
+
bodyWidth,
|
|
22198
|
+
discussionRightInsetPx,
|
|
22199
|
+
messageRowsOf
|
|
22200
|
+
]);
|
|
22201
|
+
/**
|
|
21979
22202
|
* The size one rendered message needs in code rows: its wrapped lines plus its own
|
|
21980
22203
|
* padding — which for a bubble is exactly one row (half a row above, half below).
|
|
21981
22204
|
* Every turn is therefore a whole number of rows and the thread stays on the code's
|
|
@@ -21990,7 +22213,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21990
22213
|
/**
|
|
21991
22214
|
* The thread as the block will render it, plus the body height that follows from
|
|
21992
22215
|
* it: the newest turns that fit the cap, an optional "older" note, the answer in
|
|
21993
|
-
* flight (or the failure note), and the compose row the user writes in.
|
|
22216
|
+
* flight (or the failure note), and the compose row the user writes in. An outdated
|
|
22217
|
+
* block's note and quote count as part of the trailing piece, above the turns.
|
|
21994
22218
|
*
|
|
21995
22219
|
* @param discussion - the block to lay out.
|
|
21996
22220
|
* @returns the messages to render, the hidden count, and the body height.
|
|
@@ -21998,18 +22222,22 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
21998
22222
|
const layoutDiscussion = (0, react.useCallback)((discussion) => {
|
|
21999
22223
|
const answer = discussion.reply === void 0 ? void 0 : stripBlankLines(discussion.reply);
|
|
22000
22224
|
const stoppedNote = discussion.stopped === true && (answer === void 0 || answer === "") && discussion.failed !== true;
|
|
22001
|
-
const trailing = discussion.lost === true ? 1 : answer !== void 0 && answer !== "" ? messageSizeOf({
|
|
22225
|
+
const trailing = (discussion.lost === true && discussion.quote !== void 0 && discussion.quote !== "" ? 1 + quoteRowsOf(discussion.quote, langWrap) : 0) + (answer !== void 0 && answer !== "" ? messageSizeOf({
|
|
22002
22226
|
role: "assistant",
|
|
22003
22227
|
text: answer
|
|
22004
|
-
}) : discussion.failed === true || discussion.asking === true ? 1 : 2 + (stoppedNote ? 1 : 0);
|
|
22005
|
-
const tailCap = 12 - trailing
|
|
22228
|
+
}) : discussion.failed === true || discussion.asking === true ? 1 : 2 + (stoppedNote ? 1 : 0));
|
|
22229
|
+
const tailCap = 12 - trailing;
|
|
22006
22230
|
const tail = discussionTail(discussion.messages, messageSizeOf, Math.max(1, tailCap));
|
|
22007
22231
|
return {
|
|
22008
22232
|
messages: tail.messages,
|
|
22009
22233
|
hidden: tail.hidden,
|
|
22010
22234
|
rows: Math.ceil(tail.rows + trailing)
|
|
22011
22235
|
};
|
|
22012
|
-
}, [
|
|
22236
|
+
}, [
|
|
22237
|
+
langWrap,
|
|
22238
|
+
quoteRowsOf,
|
|
22239
|
+
messageSizeOf
|
|
22240
|
+
]);
|
|
22013
22241
|
/**
|
|
22014
22242
|
* The discussions as the render will draw them: the body height the measurement
|
|
22015
22243
|
* above arrived at, the turns it kept, and the text those turns actually show.
|
|
@@ -22044,11 +22272,18 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22044
22272
|
/**
|
|
22045
22273
|
* The rows a discussion annotates. They carry their own wash, so the mark scrolls with
|
|
22046
22274
|
* the code in both axes with no positioning at all — the overlay this replaces had to
|
|
22047
|
-
* be counter-translated on every horizontal scroll and trailed the text.
|
|
22275
|
+
* be counter-translated on every horizontal scroll and trailed the text. An outdated
|
|
22276
|
+
* block washes nothing: the rows under its numbers are no longer the code the comment
|
|
22277
|
+
* was written about, so a band there would claim them as annotated (GitHub drops the
|
|
22278
|
+
* position of an outdated thread the same way). It says it is outdated and shows the
|
|
22279
|
+
* code it was about instead.
|
|
22048
22280
|
*/
|
|
22049
22281
|
const discussedRows = (0, react.useMemo)(() => {
|
|
22050
22282
|
const set = /* @__PURE__ */ new Set();
|
|
22051
|
-
for (const discussion of laidDiscussions)
|
|
22283
|
+
for (const discussion of laidDiscussions) {
|
|
22284
|
+
if (discussion.lost === true) continue;
|
|
22285
|
+
for (let row = Math.max(0, discussion.anchor.start); row <= Math.min(discussion.anchor.end, rowCount - 1); row++) set.add(row);
|
|
22286
|
+
}
|
|
22052
22287
|
return set;
|
|
22053
22288
|
}, [laidDiscussions, rowCount]);
|
|
22054
22289
|
const rowHeights = (0, react.useMemo)(() => {
|
|
@@ -22101,6 +22336,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22101
22336
|
body.scrollTop += shift;
|
|
22102
22337
|
setScrollTop(body.scrollTop);
|
|
22103
22338
|
}, [discussions]);
|
|
22339
|
+
(0, react.useEffect)(() => {
|
|
22340
|
+
rememberDiscussions(file.sessionId, discussionsByFile);
|
|
22341
|
+
}, [file.sessionId, discussionsByFile]);
|
|
22104
22342
|
/** Patch one discussion in place, without touching the others or the file key. */
|
|
22105
22343
|
const updateDiscussion = (0, react.useCallback)((id, patch) => {
|
|
22106
22344
|
setDiscussionsByFile((all) => {
|
|
@@ -22114,6 +22352,21 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22114
22352
|
};
|
|
22115
22353
|
});
|
|
22116
22354
|
}, [file.id]);
|
|
22355
|
+
(0, react.useEffect)(() => {
|
|
22356
|
+
if (pendingAskRef.current !== void 0) return;
|
|
22357
|
+
const waiting = discussions.filter((entry) => entry.asking === true).at(-1);
|
|
22358
|
+
if (waiting === void 0) return;
|
|
22359
|
+
const baseline = waiting.baseline;
|
|
22360
|
+
if (baseline === void 0) return;
|
|
22361
|
+
const question = [...waiting.messages].reverse().find((message) => message.role === "user");
|
|
22362
|
+
if (question === void 0) return;
|
|
22363
|
+
const marker = `${t("discussion.marker")} (${discussionLineRange(waiting.anchor)})`;
|
|
22364
|
+
pendingAskRef.current = {
|
|
22365
|
+
id: waiting.id,
|
|
22366
|
+
baseline,
|
|
22367
|
+
needle: `${marker}\n${question.text.split("\n")[0] ?? ""}`
|
|
22368
|
+
};
|
|
22369
|
+
}, []);
|
|
22117
22370
|
const watchChatRef = (0, react.useRef)(watchChat);
|
|
22118
22371
|
watchChatRef.current = watchChat;
|
|
22119
22372
|
(0, react.useEffect)(() => {
|
|
@@ -22204,7 +22457,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22204
22457
|
if (!ours) {
|
|
22205
22458
|
updateDiscussion(pending.id, {
|
|
22206
22459
|
asking: true,
|
|
22207
|
-
queued:
|
|
22460
|
+
queued: held !== false,
|
|
22208
22461
|
failed: false,
|
|
22209
22462
|
reply: ""
|
|
22210
22463
|
});
|
|
@@ -22212,7 +22465,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22212
22465
|
}
|
|
22213
22466
|
clearRelease();
|
|
22214
22467
|
const streaming = chat.partial !== "" ? chat.partial : settled;
|
|
22215
|
-
|
|
22468
|
+
updateDiscussion(pending.id, {
|
|
22216
22469
|
asking: true,
|
|
22217
22470
|
queued: false,
|
|
22218
22471
|
failed: false,
|
|
@@ -22267,9 +22520,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22267
22520
|
]);
|
|
22268
22521
|
/**
|
|
22269
22522
|
* Re-anchor every block whenever the rows are rebuilt (a keep/revert or an edit
|
|
22270
|
-
* rewrites them). The anchor's new-file lines are what survive
|
|
22271
|
-
*
|
|
22272
|
-
*
|
|
22523
|
+
* rewrites them). The anchor's new-file lines are what survive, and the block's quote
|
|
22524
|
+
* is what says whether they still hold the code it was written about: when they do
|
|
22525
|
+
* not, the thread follows the quote instead, and when even that finds nothing it is
|
|
22526
|
+
* marked outdated — it stays where the user last saw it, says so, and keeps the quote.
|
|
22273
22527
|
*/
|
|
22274
22528
|
(0, react.useEffect)(() => {
|
|
22275
22529
|
setDiscussionsByFile((all) => {
|
|
@@ -22277,7 +22531,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22277
22531
|
const next = list.map((discussion) => remapDiscussion(discussion, (row) => {
|
|
22278
22532
|
const entry = model.diff.rows[row];
|
|
22279
22533
|
return entry?.newLine ?? entry?.oldLine;
|
|
22280
|
-
}, model.diff.rows.length));
|
|
22534
|
+
}, (row) => model.diff.rows[row]?.text ?? "", model.diff.rows.length));
|
|
22281
22535
|
return next.some((discussion, index) => discussion !== list[index]) ? {
|
|
22282
22536
|
...all,
|
|
22283
22537
|
[file.id]: next
|
|
@@ -22341,6 +22595,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22341
22595
|
const body = bodyRef.current;
|
|
22342
22596
|
if (body !== null && offsetOf(selection.start) - body.scrollTop < 0) pendingScrollShiftRef.current += 3 * ROW_HEIGHT_PX;
|
|
22343
22597
|
const id = `discussion-${Date.now().toString(36)}-${discussions.length}`;
|
|
22598
|
+
const quoted = model.diff.rows.slice(selection.start, selection.end + 1);
|
|
22599
|
+
const quote = quoted.map((row) => row.text).join("\n");
|
|
22600
|
+
const quoteLines = quoted.map((row) => ({
|
|
22601
|
+
old: row.oldLine,
|
|
22602
|
+
new: row.newLine
|
|
22603
|
+
}));
|
|
22344
22604
|
setDiscussions((current) => [...current, {
|
|
22345
22605
|
id,
|
|
22346
22606
|
anchor: {
|
|
@@ -22349,6 +22609,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22349
22609
|
startLine,
|
|
22350
22610
|
endLine
|
|
22351
22611
|
},
|
|
22612
|
+
quote,
|
|
22613
|
+
quoteLines,
|
|
22352
22614
|
messages: [],
|
|
22353
22615
|
draft: "",
|
|
22354
22616
|
collapsed: false
|
|
@@ -22431,7 +22693,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22431
22693
|
queued: false,
|
|
22432
22694
|
failed: false,
|
|
22433
22695
|
reply: "",
|
|
22434
|
-
collapsed: false
|
|
22696
|
+
collapsed: false,
|
|
22697
|
+
baseline: chat.nodes.length
|
|
22435
22698
|
} : entry));
|
|
22436
22699
|
};
|
|
22437
22700
|
/** Discard one block, keeping the code the user is reading in place. */
|
|
@@ -22814,6 +23077,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
22814
23077
|
}) : void 0;
|
|
22815
23078
|
const selectionCommentOffered = commentMode && frameForSelection?.comment === true;
|
|
22816
23079
|
const selectionFrameVisible = frameForSelection !== void 0 && (frameForSelection.keepRevert || selectionCommentOffered);
|
|
23080
|
+
const commentChord = chordLabel$1("addComment");
|
|
22817
23081
|
(0, react.useEffect)(() => {
|
|
22818
23082
|
if (!selectionCommentOffered) return;
|
|
22819
23083
|
const onKeyDown = (event) => {
|
|
@@ -23521,13 +23785,17 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23521
23785
|
},
|
|
23522
23786
|
children: discussion.collapsed ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, { size: 12 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronUpOutline14, { size: 12 })
|
|
23523
23787
|
}),
|
|
23524
|
-
(0, react_jsx_runtime.
|
|
23788
|
+
(0, react_jsx_runtime.jsxs)("span", {
|
|
23525
23789
|
className: PendingPanel_module_css_default.discussionRangeWrap,
|
|
23526
|
-
children: (0, react_jsx_runtime.jsx)("span", {
|
|
23790
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
23527
23791
|
className: PendingPanel_module_css_default.discussionRange,
|
|
23528
23792
|
"data-diff-discussion-range": true,
|
|
23529
23793
|
children: discussionLineRange(discussion.anchor)
|
|
23530
|
-
})
|
|
23794
|
+
}), discussion.lost === true && (0, react_jsx_runtime.jsx)("span", {
|
|
23795
|
+
className: PendingPanel_module_css_default.discussionOutdated,
|
|
23796
|
+
"data-diff-discussion-outdated": true,
|
|
23797
|
+
children: t("discussion.outdated")
|
|
23798
|
+
})]
|
|
23531
23799
|
}),
|
|
23532
23800
|
(0, react_jsx_runtime.jsx)("span", { className: PendingPanel_module_css_default.flexSpacer }),
|
|
23533
23801
|
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
@@ -23558,11 +23826,16 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23558
23826
|
}), !discussion.collapsed && (0, react_jsx_runtime.jsxs)("div", {
|
|
23559
23827
|
className: PendingPanel_module_css_default.discussionBody,
|
|
23560
23828
|
children: [
|
|
23561
|
-
discussion.lost === true && (0, react_jsx_runtime.jsx)("p", {
|
|
23829
|
+
discussion.lost === true && discussion.quote !== void 0 && discussion.quote !== "" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("p", {
|
|
23562
23830
|
className: PendingPanel_module_css_default.discussionNote,
|
|
23563
|
-
"data-diff-discussion-
|
|
23564
|
-
children: t("discussion.
|
|
23565
|
-
}),
|
|
23831
|
+
"data-diff-discussion-quote-label": true,
|
|
23832
|
+
children: t("discussion.quote")
|
|
23833
|
+
}), (0, react_jsx_runtime.jsx)(DiscussionQuote, {
|
|
23834
|
+
quote: discussion.quote,
|
|
23835
|
+
lines: discussion.quoteLines,
|
|
23836
|
+
lang,
|
|
23837
|
+
wrap: langWrap
|
|
23838
|
+
})] }),
|
|
23566
23839
|
discussion.hidden !== void 0 && discussion.hidden > 0 && (0, react_jsx_runtime.jsx)("p", {
|
|
23567
23840
|
className: PendingPanel_module_css_default.discussionNote,
|
|
23568
23841
|
"data-diff-discussion-hidden": true,
|
|
@@ -23586,25 +23859,35 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23586
23859
|
className: PendingPanel_module_css_default.discussionAnswer,
|
|
23587
23860
|
"data-diff-discussion-reply": true,
|
|
23588
23861
|
children: discussion.reply
|
|
23589
|
-
}) : discussion.
|
|
23862
|
+
}) : discussion.failed === true ? (0, react_jsx_runtime.jsx)("p", {
|
|
23590
23863
|
className: PendingPanel_module_css_default.discussionNote,
|
|
23591
23864
|
"data-diff-discussion-failed": true,
|
|
23592
23865
|
children: t("discussion.failed")
|
|
23593
|
-
}) : discussion.asking === true ? (0, react_jsx_runtime.
|
|
23866
|
+
}) : discussion.asking === true ? (0, react_jsx_runtime.jsxs)("p", {
|
|
23594
23867
|
className: PendingPanel_module_css_default.discussionNote,
|
|
23595
23868
|
"data-diff-discussion-asking": true,
|
|
23596
|
-
children: discussion.queued === true ? t("discussion.queued") : t("discussion.thinking")
|
|
23869
|
+
children: [discussion.queued === true ? t("discussion.queued") : t("discussion.thinking"), (0, react_jsx_runtime.jsxs)("span", {
|
|
23870
|
+
className: PendingPanel_module_css_default.discussionDots,
|
|
23871
|
+
"data-diff-discussion-dots": true,
|
|
23872
|
+
"aria-hidden": "true",
|
|
23873
|
+
children: [
|
|
23874
|
+
(0, react_jsx_runtime.jsx)("span", { children: "." }),
|
|
23875
|
+
(0, react_jsx_runtime.jsx)("span", { children: "." }),
|
|
23876
|
+
(0, react_jsx_runtime.jsx)("span", { children: "." })
|
|
23877
|
+
]
|
|
23878
|
+
})]
|
|
23597
23879
|
}) : (0, react_jsx_runtime.jsxs)("div", {
|
|
23598
23880
|
className: PendingPanel_module_css_default.discussionCompose,
|
|
23599
23881
|
children: [(0, react_jsx_runtime.jsx)("input", {
|
|
23600
23882
|
className: PendingPanel_module_css_default.discussionInput,
|
|
23601
23883
|
"data-diff-discussion-input": true,
|
|
23884
|
+
disabled: discussion.lost === true,
|
|
23602
23885
|
ref: (element) => {
|
|
23603
23886
|
if (element === null) discussionInputEls.current.delete(discussion.id);
|
|
23604
23887
|
else discussionInputEls.current.set(discussion.id, element);
|
|
23605
23888
|
},
|
|
23606
23889
|
value: discussion.draft,
|
|
23607
|
-
placeholder: t("discussion.placeholder"),
|
|
23890
|
+
placeholder: t(discussion.lost === true ? "discussion.placeholderOutdated" : "discussion.placeholder"),
|
|
23608
23891
|
onChange: (event) => {
|
|
23609
23892
|
const value = event.target.value;
|
|
23610
23893
|
setDiscussions((current) => current.map((entry) => entry.id === discussion.id ? {
|
|
@@ -23622,6 +23905,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23622
23905
|
type: "button",
|
|
23623
23906
|
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.actionPrimary} ${PendingPanel_module_css_default.discussionSend}`,
|
|
23624
23907
|
"data-diff-discussion-send": true,
|
|
23908
|
+
disabled: discussion.lost === true,
|
|
23625
23909
|
onClick: () => {
|
|
23626
23910
|
sendDiscussion(discussion.id);
|
|
23627
23911
|
},
|
|
@@ -23678,17 +23962,16 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
23678
23962
|
"data-diff-selection-divider": true,
|
|
23679
23963
|
"aria-hidden": "true"
|
|
23680
23964
|
}),
|
|
23681
|
-
selectionCommentOffered && (0, react_jsx_runtime.
|
|
23682
|
-
|
|
23683
|
-
|
|
23684
|
-
|
|
23685
|
-
|
|
23686
|
-
|
|
23687
|
-
className: PendingPanel_module_css_default.
|
|
23688
|
-
"data-diff-selection-comment": true,
|
|
23689
|
-
|
|
23690
|
-
|
|
23691
|
-
})
|
|
23965
|
+
selectionCommentOffered && (0, react_jsx_runtime.jsxs)("button", {
|
|
23966
|
+
type: "button",
|
|
23967
|
+
className: PendingPanel_module_css_default.action,
|
|
23968
|
+
"data-diff-selection-comment": true,
|
|
23969
|
+
onClick: addDiscussion,
|
|
23970
|
+
children: [t("action.comment"), commentChord !== "" && (0, react_jsx_runtime.jsx)("span", {
|
|
23971
|
+
className: PendingPanel_module_css_default.actionChord,
|
|
23972
|
+
"data-diff-selection-comment-chord": true,
|
|
23973
|
+
children: commentChord
|
|
23974
|
+
})]
|
|
23692
23975
|
})
|
|
23693
23976
|
]
|
|
23694
23977
|
}) : hoveredBlock !== void 0 && model.blocks[hoveredBlock] !== void 0 ? (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -24101,16 +24384,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
24101
24384
|
const toggleForceFloat = () => {
|
|
24102
24385
|
startListOpenRef.current = false;
|
|
24103
24386
|
const next = !forceFloat;
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
if (next) setFloatOpen(false);
|
|
24108
|
-
};
|
|
24109
|
-
if (next && floatOpen) {
|
|
24110
|
-
foldCardAway(apply);
|
|
24111
|
-
return;
|
|
24112
|
-
}
|
|
24113
|
-
apply();
|
|
24387
|
+
setForceFloat(next);
|
|
24388
|
+
setFileListFloat(next);
|
|
24389
|
+
if (next) setFloatOpen(true);
|
|
24114
24390
|
};
|
|
24115
24391
|
(0, react.useEffect)(() => {
|
|
24116
24392
|
const onResize = () => {
|
|
@@ -24800,6 +25076,19 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
24800
25076
|
closeDock,
|
|
24801
25077
|
collapseSidebar
|
|
24802
25078
|
]);
|
|
25079
|
+
(0, react.useEffect)(() => {
|
|
25080
|
+
const onMouseUp = (event) => {
|
|
25081
|
+
const target = event.target;
|
|
25082
|
+
const panel = panelRef.current;
|
|
25083
|
+
if (panel === null || !(target instanceof Node) || !panel.contains(target)) return;
|
|
25084
|
+
if (target instanceof Element && target.closest("input, textarea, [contenteditable]") !== null) return;
|
|
25085
|
+
event.preventDefault();
|
|
25086
|
+
};
|
|
25087
|
+
window.addEventListener("mouseup", onMouseUp, true);
|
|
25088
|
+
return () => {
|
|
25089
|
+
window.removeEventListener("mouseup", onMouseUp, true);
|
|
25090
|
+
};
|
|
25091
|
+
}, []);
|
|
24803
25092
|
(0, react.useEffect)(() => {
|
|
24804
25093
|
if (!open || docked) return;
|
|
24805
25094
|
const onKeyDown = (event) => {
|
|
@@ -25848,7 +26137,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
25848
26137
|
const [delColor, setDelColorState] = (0, react.useState)(() => diffDelColor() ?? currentDiffDelColor());
|
|
25849
26138
|
const addDefault = currentDiffAddColor();
|
|
25850
26139
|
const delDefault = currentDiffDelColor();
|
|
25851
|
-
const [diffOpen, setDiffOpen] = (0, react.useState)(
|
|
26140
|
+
const [diffOpen, setDiffOpen] = (0, react.useState)(false);
|
|
25852
26141
|
const [cover, setCoverState] = (0, react.useState)(panelCover);
|
|
25853
26142
|
const [coverOpen, setCoverOpen] = (0, react.useState)(false);
|
|
25854
26143
|
(0, react.useEffect)(() => {
|
|
@@ -27241,17 +27530,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27241
27530
|
"action.discussionExpand": "展开",
|
|
27242
27531
|
"action.discussionCollapse": "收起",
|
|
27243
27532
|
"discussion.placeholder": "写下你的评论…",
|
|
27533
|
+
"discussion.placeholderOutdated": "代码已过期,无法继续评论",
|
|
27244
27534
|
"discussion.marker": "[评论]",
|
|
27245
27535
|
"discussion.promptRule": "(回答只针对这几行,不超过 3 行;行与行之间不要留空行;用纯文本,不要 Markdown 装饰;要求详细时不受长度限制。细则见 dsh-diff-approval-comment skill。)",
|
|
27246
27536
|
"discussion.promptRuleSkill": "(这是一条代码批注:先加载 {skill} skill,按它的规则回答。)",
|
|
27247
|
-
"discussion.thinking": "
|
|
27248
|
-
"discussion.queued": "
|
|
27249
|
-
"discussion.
|
|
27537
|
+
"discussion.thinking": "思考中",
|
|
27538
|
+
"discussion.queued": "排队等待中",
|
|
27539
|
+
"discussion.outdated": "(已过期)",
|
|
27540
|
+
"discussion.quote": "评论代码:",
|
|
27250
27541
|
"discussion.hidden": "更早的 {count} 条已省略",
|
|
27251
27542
|
"discussion.failed": "这次提问失败了,可以再试一次。",
|
|
27252
27543
|
"discussion.stopped": "这次回答被停掉了,可以再问一次。",
|
|
27253
27544
|
"action.revert": "回退",
|
|
27254
27545
|
"action.delete": "删除",
|
|
27546
|
+
"action.discussionEnd": "结束评论",
|
|
27255
27547
|
"action.keepAll": "全部保留",
|
|
27256
27548
|
"action.revertAll": "全部回退",
|
|
27257
27549
|
"action.openFile": "打开文件",
|
|
@@ -27323,7 +27615,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27323
27615
|
"panel.fileKeptAsk": "「{file}」的改动已全部保留,是否从列表移除?",
|
|
27324
27616
|
"panel.fileRevertedAsk": "「{file}」的改动已全部回退,是否从列表移除?",
|
|
27325
27617
|
"panel.confirmFileRemove": "处理整文件后询问是否移出列表",
|
|
27326
|
-
"panel.confirmFileRemoveDesc": "
|
|
27618
|
+
"panel.confirmFileRemoveDesc": "对单个文件执行整文件保留 / 回退后,弹窗询问是否把该文件移出列表。关闭后直接移出(不影响全部保留 / 全部回退)。",
|
|
27327
27619
|
"action.refreshVcs": "刷新差异",
|
|
27328
27620
|
"action.matchCase": "区分大小写",
|
|
27329
27621
|
"action.matchWholeWord": "全字匹配",
|
|
@@ -27442,17 +27734,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
27442
27734
|
"action.discussionExpand": "Expand",
|
|
27443
27735
|
"action.discussionCollapse": "Collapse",
|
|
27444
27736
|
"discussion.placeholder": "Write your comment…",
|
|
27737
|
+
"discussion.placeholderOutdated": "This code is outdated; commenting is off",
|
|
27445
27738
|
"discussion.marker": "[Review]",
|
|
27446
27739
|
"discussion.promptRule": "(Answer only about these lines, in at most 3 lines, with no blank line between them, as plain text without Markdown decoration; ignore the length limit if my annotation asks for detail. Full rules: the dsh-diff-approval-comment skill.)",
|
|
27447
27740
|
"discussion.promptRuleSkill": "(This is a comment on a few diff lines: load the {skill} skill first and answer by its rules.)",
|
|
27448
|
-
"discussion.thinking": "Thinking
|
|
27449
|
-
"discussion.queued": "Queued
|
|
27450
|
-
"discussion.
|
|
27741
|
+
"discussion.thinking": "Thinking",
|
|
27742
|
+
"discussion.queued": "Queued",
|
|
27743
|
+
"discussion.outdated": " (Outdated)",
|
|
27744
|
+
"discussion.quote": "Commented code:",
|
|
27451
27745
|
"discussion.hidden": "{count} earlier turns omitted",
|
|
27452
27746
|
"discussion.failed": "That question failed; you can try again.",
|
|
27453
27747
|
"discussion.stopped": "That answer was stopped; you can ask again.",
|
|
27454
27748
|
"action.revert": "Revert",
|
|
27455
27749
|
"action.delete": "Delete",
|
|
27750
|
+
"action.discussionEnd": "End comment",
|
|
27456
27751
|
"action.keepAll": "Keep all",
|
|
27457
27752
|
"action.revertAll": "Revert all",
|
|
27458
27753
|
"action.openFile": "Open file",
|