dsh-diff-approval 0.13.1 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -11765,8 +11765,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11765
11765
  /**
11766
11766
  * Map one referenced line range from `oldContent` coordinates to `newContent`
11767
11767
  * coordinates. Lines that survive (unchanged context) map to their new line
11768
- * numbers, and the surviving lines' min/max span is returned. When every line
11769
- * in the range was removed, returns `undefined` (the reference is expired).
11768
+ * numbers, and a line whose content changed in place (a delete replaced by an
11769
+ * add at the same logical position) maps to that position's new line — its text
11770
+ * changed, but the line is not gone. Only a line that is genuinely removed
11771
+ * (a delete with no replacement) is omitted. The surviving lines' min/max span
11772
+ * is returned; when every line in the range is gone, returns `undefined` (the
11773
+ * reference is expired).
11770
11774
  * @param oldContent - the file content the reference was made against.
11771
11775
  * @param newContent - the file content now.
11772
11776
  * @param start - first referenced line (1-based, inclusive).
@@ -11776,7 +11780,16 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11776
11780
  function remapReferenceRange(oldContent, newContent, start, end) {
11777
11781
  const diff = computeWholeFileDiff(oldContent, newContent);
11778
11782
  const oldToNew = /* @__PURE__ */ new Map();
11779
- for (const row of diff.rows) if (row.oldLine !== void 0 && row.newLine !== void 0) oldToNew.set(row.oldLine, row.newLine);
11783
+ let pendingDeletes = [];
11784
+ for (const row of diff.rows) if (row.kind === "context") {
11785
+ if (row.oldLine !== void 0 && row.newLine !== void 0) oldToNew.set(row.oldLine, row.newLine);
11786
+ pendingDeletes = [];
11787
+ } else if (row.kind === "del" && row.oldLine !== void 0) pendingDeletes.push(row.oldLine);
11788
+ else if (row.kind === "add" && row.newLine !== void 0) {
11789
+ const replaced = pendingDeletes.shift();
11790
+ if (replaced !== void 0) oldToNew.set(replaced, row.newLine);
11791
+ pendingDeletes = [];
11792
+ }
11780
11793
  let min = Infinity;
11781
11794
  let max = -Infinity;
11782
11795
  for (let line = start; line <= end; line++) {
@@ -11794,8 +11807,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11794
11807
  /**
11795
11808
  * Rewrite every `(referencePath:line)` / `(referencePath:start-end)` occurrence
11796
11809
  * in `text`, remapping each range from `oldContent` to `newContent`. A range
11797
- * whose lines all survived becomes the new range; one whose lines were all
11798
- * removed becomes `(referencePath:LINE_MISSING)`.
11810
+ * whose lines all survived (unchanged context or an in-place edit) becomes the
11811
+ * new range; one whose lines were all genuinely removed becomes
11812
+ * `(referencePath:LINE_MISSING)`.
11799
11813
  * @param text - the free text (composer draft, queued message) to rewrite.
11800
11814
  * @param referencePath - the file's reference path (workspace-relative or absolute).
11801
11815
  * @param oldContent - the file content the references were made against.
@@ -11922,7 +11936,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11922
11936
  }
11923
11937
  //#endregion
11924
11938
  //#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
11925
- const css = ".F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_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_fullscreenBackdrop{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_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_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);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelectorChevron{flex:none}.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_fileListFloat{z-index:40;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;flex-direction:column;padding:6px 8px 10px;display:flex;position:absolute;overflow:hidden}.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:auto}.F1KBNa_bulkActions{flex:none;gap:6px;padding-top:8px;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_confirmBackdrop{z-index:5;background:color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent);justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.F1KBNa_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{justify-content:flex-end;gap:8px;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_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);flex:1;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_actionQuietDisabled:disabled{cursor:pointer;color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l1);background:0 0}.F1KBNa_actionPrimary.F1KBNa_actionQuietDisabled:disabled{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:1}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_blockPosition{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:1px;margin-left:7px;font-size:12px;line-height:16px}.F1KBNa_searchBar{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:8px;right:8px}.F1KBNa_searchInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:150px;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_searchInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchCount{text-align:center;min-width:34px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_diffBody [data-diff-search=hit]{background-image:linear-gradient(#facc1529,#facc1529)}.F1KBNa_diffBody [data-diff-search=current]{background-image:linear-gradient(#facc1552,#facc1552)}.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_diffFlash;position:absolute;left:0;right:0}@keyframes F1KBNa_diffFlash{0%{opacity:1}to{opacity: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%;display:table}.F1KBNa_line{height:22px;line-height:22px;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;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, 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_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:22px}.F1KBNa_subline{white-space:pre;height:22px;line-height:22px;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{flex:1 1 0;min-width:0;height:15px;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:15px}.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(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}";
11939
+ const css = ".F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 4px);height:42px;margin:4px -2px;display:flex;position:relative}.F1KBNa_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_fullscreenBackdrop{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_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_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);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.F1KBNa_settingsSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_settingsSelectorChevron{flex:none}.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_fileListFloat{z-index:40;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);box-shadow:var(--dsw-shadow-lv2);border-radius:12px;flex-direction:column;padding:6px 8px 10px;display:flex;position:absolute;overflow:hidden}.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:auto}.F1KBNa_bulkActions{flex:none;gap:6px;padding-top:8px;display:flex}.F1KBNa_bulkActions .F1KBNa_action{text-align:center;flex:1}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_confirmBackdrop{z-index:5;background:color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent);justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.F1KBNa_confirmCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-width:340px;box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:12px;padding:16px;display:flex}.F1KBNa_confirmText{font:var(--dsw-font-caption);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;line-height:1.5}.F1KBNa_confirmActions{justify-content:flex-end;gap:8px;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_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_rowFailed{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_actionError{border-bottom:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);flex:1;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_actionQuietDisabled:disabled{cursor:pointer;color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l1);background:0 0}.F1KBNa_actionPrimary.F1KBNa_actionQuietDisabled:disabled{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:1}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);-webkit-text-size-adjust:100%;text-size-adjust:100%;cursor:text;outline:none;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:9px;padding:5px;display:flex;position:absolute;right:8px}.F1KBNa_blockPosition{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:1px;margin-left:7px;font-size:12px;line-height:16px}.F1KBNa_searchBar{z-index:3;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;top:8px;right:8px}.F1KBNa_searchInput{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);width:150px;color:var(--dsw-alias-label-primary);border-radius:6px;outline:none;padding:3px 8px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_searchInput:focus{border-color:var(--dsw-alias-state-business-primary)}.F1KBNa_searchCount{text-align:center;min-width:34px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:16px}.F1KBNa_diffBody [data-diff-search=hit]{background-image:linear-gradient(#facc1529,#facc1529)}.F1KBNa_diffBody [data-diff-search=current]{background-image:linear-gradient(#facc1552,#facc1552)}.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_diffFlash;position:absolute;left:0;right:0}@keyframes F1KBNa_diffFlash{0%{opacity:1}to{opacity: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%;display:table}.F1KBNa_line{-webkit-user-select:none;user-select:none;height:22px;line-height:22px;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(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, 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_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:22px}.F1KBNa_subline{white-space:pre;height:22px;line-height:22px;display:block;overflow:hidden}.F1KBNa_wrapActive{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_wrapActive:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_splitRoot{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBodySplit{flex:1;min-height:0;overflow-x:hidden}.F1KBNa_splitCols{width:100%;min-width:0;display:flex}.F1KBNa_splitCol{box-sizing:border-box;flex:1 1 0;min-width:0;overflow:hidden}.F1KBNa_splitDivider{background:var(--dsw-alias-border-l2);flex:0 0 1px}.F1KBNa_splitCol .F1KBNa_gutter,.F1KBNa_splitCol .F1KBNa_code{vertical-align:top}.F1KBNa_splitHScrollRow{border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;width:100%;min-width:0;display:flex}.F1KBNa_splitHScroll{flex:1 1 0;min-width:0;height:15px;overflow:auto hidden}.F1KBNa_splitHScroll::-webkit-scrollbar{height:15px}.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(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_splitLadd{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}.F1KBNa_splitRdel{background-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_splitRadd{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}";
11926
11940
  const tagId = "dsh-diff-approval/PendingPanel.module.css";
11927
11941
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
11928
11942
  const tag = document.createElement("style");
@@ -11932,115 +11946,115 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11932
11946
  document.head.appendChild(tag);
11933
11947
  }
11934
11948
  var PendingPanel_module_css_default = {
11935
- "title": "F1KBNa_title",
11936
- "diffBodyWrap": "F1KBNa_diffBodyWrap",
11937
- "settingsSelector": "F1KBNa_settingsSelector",
11938
11949
  "confirmBackdrop": "F1KBNa_confirmBackdrop",
11939
- "noteCentered": "F1KBNa_noteCentered",
11940
- "actionError": "F1KBNa_actionError",
11941
- "rows": "F1KBNa_rows",
11942
- "diffActions": "F1KBNa_diffActions",
11950
+ "kindHint": "F1KBNa_kindHint",
11951
+ "splitRdel": "F1KBNa_splitRdel",
11952
+ "missingHint": "F1KBNa_missingHint",
11953
+ "expandExpanded": "F1KBNa_expandExpanded",
11954
+ "readError": "F1KBNa_readError",
11943
11955
  "diffBody": "F1KBNa_diffBody",
11944
- "note": "F1KBNa_note",
11945
- "diffFlash": "F1KBNa_diffFlash",
11946
- "overviewRuler": "F1KBNa_overviewRuler",
11947
- "iconAction": "F1KBNa_iconAction",
11948
- "context": "F1KBNa_context",
11949
- "panel": "F1KBNa_panel",
11950
- "langSelect": "F1KBNa_langSelect",
11951
- "actionQuietDisabled": "F1KBNa_actionQuietDisabled",
11952
- "wrapActive": "F1KBNa_wrapActive",
11953
- "settingsRowDesc": "F1KBNa_settingsRowDesc",
11954
- "confirmActions": "F1KBNa_confirmActions",
11955
- "actionPrimary": "F1KBNa_actionPrimary",
11956
- "rowFailed": "F1KBNa_rowFailed",
11957
- "expand": "F1KBNa_expand",
11958
- "blockPosition": "F1KBNa_blockPosition",
11959
- "vSpacer": "F1KBNa_vSpacer",
11956
+ "lines": "F1KBNa_lines",
11957
+ "langLabel": "F1KBNa_langLabel",
11958
+ "splitCol": "F1KBNa_splitCol",
11959
+ "splitRadd": "F1KBNa_splitRadd",
11960
+ "diffPath": "F1KBNa_diffPath",
11961
+ "diffActions": "F1KBNa_diffActions",
11960
11962
  "rowPath": "F1KBNa_rowPath",
11961
- "wrap": "F1KBNa_wrap",
11962
- "markerAdd": "F1KBNa_markerAdd",
11963
- "splitHScroll": "F1KBNa_splitHScroll",
11964
- "delCount": "F1KBNa_delCount",
11965
- "subline": "F1KBNa_subline",
11966
- "detail": "F1KBNa_detail",
11963
+ "listScroll": "F1KBNa_listScroll",
11964
+ "actionPrimary": "F1KBNa_actionPrimary",
11965
+ "importButton": "F1KBNa_importButton",
11966
+ "rows": "F1KBNa_rows",
11967
+ "searchCount": "F1KBNa_searchCount",
11968
+ "statusBar": "F1KBNa_statusBar",
11967
11969
  "footerButtons": "F1KBNa_footerButtons",
11968
- "splitRoot": "F1KBNa_splitRoot",
11969
- "splitCol": "F1KBNa_splitCol",
11970
- "splitHScrollFill": "F1KBNa_splitHScrollFill",
11971
- "splitLadd": "F1KBNa_splitLadd",
11970
+ "layer": "F1KBNa_layer",
11971
+ "badgeLabel": "F1KBNa_badgeLabel",
11972
+ "divergedHint": "F1KBNa_divergedHint",
11973
+ "actionError": "F1KBNa_actionError",
11972
11974
  "code": "F1KBNa_code",
11973
- "splitRadd": "F1KBNa_splitRadd",
11975
+ "splitDivider": "F1KBNa_splitDivider",
11976
+ "confirmCard": "F1KBNa_confirmCard",
11977
+ "title": "F1KBNa_title",
11978
+ "wrap": "F1KBNa_wrap",
11979
+ "statusAction": "F1KBNa_statusAction",
11980
+ "noticeButton": "F1KBNa_noticeButton",
11981
+ "flexSpacer": "F1KBNa_flexSpacer",
11982
+ "confirmActions": "F1KBNa_confirmActions",
11983
+ "searchInput": "F1KBNa_searchInput",
11974
11984
  "settingsRowText": "F1KBNa_settingsRowText",
11975
- "split": "F1KBNa_split",
11976
- "action": "F1KBNa_action",
11977
- "kindHint": "F1KBNa_kindHint",
11978
- "layer": "F1KBNa_layer",
11979
- "badgeCount": "F1KBNa_badgeCount",
11980
- "diffHeader": "F1KBNa_diffHeader",
11985
+ "header": "F1KBNa_header",
11981
11986
  "diffStats": "F1KBNa_diffStats",
11982
- "addCount": "F1KBNa_addCount",
11983
- "confirmText": "F1KBNa_confirmText",
11984
- "settingsPage": "F1KBNa_settingsPage",
11987
+ "settingsRowTitle": "F1KBNa_settingsRowTitle",
11988
+ "blockFlash": "F1KBNa_blockFlash",
11989
+ "row": "F1KBNa_row",
11990
+ "fullscreenBackdrop": "F1KBNa_fullscreenBackdrop",
11991
+ "missing": "F1KBNa_missing",
11992
+ "actionQuietDisabled": "F1KBNa_actionQuietDisabled",
11985
11993
  "searchBar": "F1KBNa_searchBar",
11986
- "del": "F1KBNa_del",
11987
- "statusAction": "F1KBNa_statusAction",
11994
+ "overviewRuler": "F1KBNa_overviewRuler",
11995
+ "notice": "F1KBNa_notice",
11996
+ "splitCols": "F1KBNa_splitCols",
11997
+ "markerAdd": "F1KBNa_markerAdd",
11998
+ "splitRoot": "F1KBNa_splitRoot",
11999
+ "blockPosition": "F1KBNa_blockPosition",
12000
+ "overviewMarker": "F1KBNa_overviewMarker",
12001
+ "noticeText": "F1KBNa_noticeText",
12002
+ "iconAction": "F1KBNa_iconAction",
11988
12003
  "splitHScrollRow": "F1KBNa_splitHScrollRow",
12004
+ "delCount": "F1KBNa_delCount",
12005
+ "splitLadd": "F1KBNa_splitLadd",
12006
+ "hint": "F1KBNa_hint",
12007
+ "splitHScroll": "F1KBNa_splitHScroll",
12008
+ "note": "F1KBNa_note",
12009
+ "settingsPage": "F1KBNa_settingsPage",
11989
12010
  "splitLdel": "F1KBNa_splitLdel",
11990
- "flexSpacer": "F1KBNa_flexSpacer",
12011
+ "rail": "F1KBNa_rail",
12012
+ "del": "F1KBNa_del",
12013
+ "noteCentered": "F1KBNa_noteCentered",
12014
+ "line": "F1KBNa_line",
12015
+ "action": "F1KBNa_action",
11991
12016
  "fileList": "F1KBNa_fileList",
11992
- "notice": "F1KBNa_notice",
11993
- "bulkActions": "F1KBNa_bulkActions",
11994
- "missingHint": "F1KBNa_missingHint",
11995
- "group": "F1KBNa_group",
11996
- "markerDel": "F1KBNa_markerDel",
11997
- "readError": "F1KBNa_readError",
11998
- "diffPath": "F1KBNa_diffPath",
11999
- "settingsSelectorChevron": "F1KBNa_settingsSelectorChevron",
12000
- "overviewMarker": "F1KBNa_overviewMarker",
12017
+ "rowMeta": "F1KBNa_rowMeta",
12018
+ "diffFlash": "F1KBNa_diffFlash",
12001
12019
  "add": "F1KBNa_add",
12002
- "statusBar": "F1KBNa_statusBar",
12020
+ "settingsSelector": "F1KBNa_settingsSelector",
12021
+ "detailEmpty": "F1KBNa_detailEmpty",
12022
+ "langSelect": "F1KBNa_langSelect",
12023
+ "fileListFloat": "F1KBNa_fileListFloat",
12003
12024
  "emptyState": "F1KBNa_emptyState",
12004
- "hint": "F1KBNa_hint",
12005
- "expandExpanded": "F1KBNa_expandExpanded",
12025
+ "kindTag": "F1KBNa_kindTag",
12026
+ "rowFailed": "F1KBNa_rowFailed",
12027
+ "addCount": "F1KBNa_addCount",
12028
+ "wrapActive": "F1KBNa_wrapActive",
12006
12029
  "close": "F1KBNa_close",
12007
- "searchInput": "F1KBNa_searchInput",
12008
- "lines": "F1KBNa_lines",
12009
- "badgeLabel": "F1KBNa_badgeLabel",
12010
- "noticeText": "F1KBNa_noticeText",
12011
- "resizeHandle": "F1KBNa_resizeHandle",
12012
- "blockActions": "F1KBNa_blockActions",
12013
- "langLabel": "F1KBNa_langLabel",
12014
- "noticeButton": "F1KBNa_noticeButton",
12015
- "confirmCard": "F1KBNa_confirmCard",
12016
- "headerActions": "F1KBNa_headerActions",
12017
- "settingsRow": "F1KBNa_settingsRow",
12018
- "importButton": "F1KBNa_importButton",
12030
+ "diffHeader": "F1KBNa_diffHeader",
12031
+ "badge": "F1KBNa_badge",
12032
+ "bulkActions": "F1KBNa_bulkActions",
12033
+ "expand": "F1KBNa_expand",
12034
+ "group": "F1KBNa_group",
12019
12035
  "rowHead": "F1KBNa_rowHead",
12020
- "searchCount": "F1KBNa_searchCount",
12036
+ "settingsSelectorChevron": "F1KBNa_settingsSelectorChevron",
12037
+ "settingsRow": "F1KBNa_settingsRow",
12038
+ "panel": "F1KBNa_panel",
12039
+ "detail": "F1KBNa_detail",
12040
+ "split": "F1KBNa_split",
12041
+ "importNote": "F1KBNa_importNote",
12042
+ "resizeHandle": "F1KBNa_resizeHandle",
12021
12043
  "diff": "F1KBNa_diff",
12022
- "row": "F1KBNa_row",
12023
- "line": "F1KBNa_line",
12044
+ "blockActions": "F1KBNa_blockActions",
12045
+ "confirmText": "F1KBNa_confirmText",
12046
+ "vSpacer": "F1KBNa_vSpacer",
12024
12047
  "gutter": "F1KBNa_gutter",
12025
- "splitCols": "F1KBNa_splitCols",
12026
- "importNote": "F1KBNa_importNote",
12027
- "splitDivider": "F1KBNa_splitDivider",
12028
- "listScroll": "F1KBNa_listScroll",
12029
- "rail": "F1KBNa_rail",
12030
- "missing": "F1KBNa_missing",
12031
- "rowMeta": "F1KBNa_rowMeta",
12032
- "fileListFloat": "F1KBNa_fileListFloat",
12033
- "badge": "F1KBNa_badge",
12034
- "divergedHint": "F1KBNa_divergedHint",
12035
- "diffBodySplit": "F1KBNa_diffBodySplit",
12036
- "fullscreenBackdrop": "F1KBNa_fullscreenBackdrop",
12037
- "header": "F1KBNa_header",
12038
- "kindTag": "F1KBNa_kindTag",
12039
- "settingsRowTitle": "F1KBNa_settingsRowTitle",
12040
- "blockFlash": "F1KBNa_blockFlash",
12041
- "detailEmpty": "F1KBNa_detailEmpty",
12042
12048
  "states": "F1KBNa_states",
12043
- "splitRdel": "F1KBNa_splitRdel"
12049
+ "markerDel": "F1KBNa_markerDel",
12050
+ "context": "F1KBNa_context",
12051
+ "diffBodySplit": "F1KBNa_diffBodySplit",
12052
+ "diffBodyWrap": "F1KBNa_diffBodyWrap",
12053
+ "subline": "F1KBNa_subline",
12054
+ "splitHScrollFill": "F1KBNa_splitHScrollFill",
12055
+ "settingsRowDesc": "F1KBNa_settingsRowDesc",
12056
+ "headerActions": "F1KBNa_headerActions",
12057
+ "badgeCount": "F1KBNa_badgeCount"
12044
12058
  };
12045
12059
  //#endregion
12046
12060
  //#region lib/types/client/PendingPanel.js
@@ -12066,7 +12080,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12066
12080
  /** Interactive composer/approval cards; clicking these keeps the panel open.
12067
12081
  Deliberately the cards themselves, not the seat: the approval frame's wide
12068
12082
  side gutters are blank space, so a click there must still close. */
12069
- const KEEP_OPEN_SELECTOR = "[data-composer-card],[data-question-key] > *,[data-plan-review-key] > *";
12083
+ const KEEP_OPEN_SELECTOR = "[data-composer-card],[data-question-key] > *,[data-plan-review-key] > *,[data-approval-key] > *";
12070
12084
  /** Seat counts as docked when its bottom is this close to the window bottom. */
12071
12085
  const DOCKED_TOLERANCE_PX = 48;
12072
12086
  /** File-list pane width bounds for the manual split drag, in px. */
@@ -12459,7 +12473,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12459
12473
  });
12460
12474
  }
12461
12475
  /** The two-column (side-by-side) whole-file diff view. */
12462
- const SplitDiff = (0, react.forwardRef)(function SplitDiff({ file, model, runs, langWrap, tabWidthSpaces, busy, t, onBlockKeep, onBlockRevert }, ref) {
12476
+ const SplitDiff = (0, react.forwardRef)(function SplitDiff({ file, model, runs, langWrap, tabWidthSpaces, busy, t, selection, onBlockKeep, onBlockRevert }, ref) {
12463
12477
  const { pairs, pairOfRow } = (0, react.useMemo)(() => computeSideBySideDiff(model.diff.rows), [model]);
12464
12478
  const pairCount = pairs.length;
12465
12479
  const bodyRef = (0, react.useRef)(null);
@@ -12647,8 +12661,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12647
12661
  return lo;
12648
12662
  };
12649
12663
  const viewport = viewportH > 0 ? viewportH : totalHeight;
12650
- const start = Math.max(0, pairAtY(scrollTop) - OVERSCAN_ROWS);
12651
- const end = Math.min(pairCount, pairAtY(scrollTop + viewport) + OVERSCAN_ROWS);
12664
+ let start = Math.max(0, pairAtY(scrollTop) - OVERSCAN_ROWS);
12665
+ let end = Math.min(pairCount, pairAtY(scrollTop + viewport) + OVERSCAN_ROWS);
12666
+ if (selection !== void 0) {
12667
+ start = Math.min(start, selection.start);
12668
+ end = Math.max(end, selection.end + 1);
12669
+ }
12652
12670
  const visiblePairs = pairs.slice(start, end);
12653
12671
  const jump = (direction) => {
12654
12672
  if (blockOfPair.length === 0) return;
@@ -12984,10 +13002,19 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12984
13002
  side: startInfo.side
12985
13003
  };
12986
13004
  }
12987
- /** Character offset of a selection boundary within its line's code text. */
13005
+ /** The code cell in `node`'s visual row, a sibling of its gutter cells. A
13006
+ * line-number boundary must measure against the line's own selectable text even
13007
+ * though the gutter text is not inside the code cell; this resolves the cell
13008
+ * for both the unified row and a split column row. */
13009
+ function codeCellAt(node) {
13010
+ return ((node instanceof Element ? node : node.parentElement)?.closest("[data-diff-row], [data-diff-split-row]"))?.querySelector("[data-diff-code]") ?? null;
13011
+ }
13012
+ /** Character offset of a selection boundary within its line's code text. A
13013
+ * boundary outside the code cell (the line-number gutter) sits at the line's
13014
+ * start — offset 0, never the line's end — so it never skips the line. */
12988
13015
  function lineOffsetAt(node, offset) {
12989
- const code = (node instanceof Element ? node : node.parentElement)?.closest("[data-diff-code]");
12990
- if (code === null || code === void 0) return 0;
13016
+ const code = codeCellAt(node);
13017
+ if (code === null || !code.contains(node)) return 0;
12991
13018
  let before = 0;
12992
13019
  const walker = document.createTreeWalker(code, NodeFilter.SHOW_TEXT);
12993
13020
  let current = walker.nextNode();
@@ -13010,9 +13037,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
13010
13037
  }
13011
13038
  return before;
13012
13039
  }
13013
- /** Length of the code text on the line holding a node. */
13040
+ /** Length of the code text on the line holding a node (the line's selectable
13041
+ * text, even when `node` is in a gutter cell of the same row). */
13014
13042
  function lineLengthAt(node) {
13015
- return ((node instanceof Element ? node : node.parentElement)?.closest("[data-diff-code]"))?.textContent?.length ?? 0;
13043
+ return codeCellAt(node)?.textContent?.length ?? 0;
13016
13044
  }
13017
13045
  /**
13018
13046
  * Derive the selected diff-row range from a native text selection. A
@@ -13336,8 +13364,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
13336
13364
  return lo;
13337
13365
  };
13338
13366
  const viewport = viewportHeight > 0 ? viewportHeight : totalHeight;
13339
- const start = Math.max(0, rowAtY(scrollTop) - OVERSCAN_ROWS);
13340
- const end = Math.min(rowCount, rowAtY(scrollTop + viewport) + OVERSCAN_ROWS);
13367
+ let start = Math.max(0, rowAtY(scrollTop) - OVERSCAN_ROWS);
13368
+ let end = Math.min(rowCount, rowAtY(scrollTop + viewport) + OVERSCAN_ROWS);
13369
+ if (selection !== void 0) {
13370
+ start = Math.min(start, selection.start);
13371
+ end = Math.max(end, selection.end + 1);
13372
+ }
13341
13373
  const visibleRows = rows.slice(start, end);
13342
13374
  const blockEnd = hoveredBlock === void 0 ? void 0 : model.blocks[hoveredBlock]?.end;
13343
13375
  const blockActionsTop = blockEnd === void 0 ? 0 : Math.min(offsetOf(blockEnd + 1), Math.max(0, totalHeight - BLOCK_ACTIONS_FRAME_PX));
@@ -13719,6 +13751,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
13719
13751
  tabWidthSpaces,
13720
13752
  busy,
13721
13753
  t,
13754
+ selection,
13722
13755
  onBlockKeep,
13723
13756
  onBlockRevert
13724
13757
  }) : (0, react_jsx_runtime.jsxs)("div", {
@@ -14177,7 +14210,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
14177
14210
  document.removeEventListener("pointerdown", onPointerDown, true);
14178
14211
  };
14179
14212
  }, [open]);
14180
- const files = snapshot.files.filter((file) => file.sessionId === current).sort((left, right) => compareFileNames(left.path, right.path));
14213
+ const files = snapshot.files.filter((file) => current !== void 0 && (file.sessionIds ?? [file.sessionId]).includes(current)).sort((left, right) => compareFileNames(left.path, right.path));
14181
14214
  /** Per-file keep/revert failures, surfaced inline on the row and detail. */
14182
14215
  const failed = snapshot.failed ?? EMPTY_FAILED_MAP;
14183
14216
  const failedInitialized = (0, react.useRef)(false);
@@ -15004,13 +15037,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
15004
15037
  /** Narrow one pending entry from the wire; malformed rows are skipped. */
15005
15038
  function pendingFileOf(value) {
15006
15039
  if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
15007
- const { id, sessionId, path, kind, oldText, newText, updatedAt, missing, diverged } = value;
15040
+ const { id, sessionId, sessionIds, path, kind, oldText, newText, updatedAt, missing, diverged } = value;
15008
15041
  if (typeof id !== "string" || id.length === 0) return void 0;
15009
15042
  if (typeof sessionId !== "string" || sessionId.length === 0) return void 0;
15010
15043
  if (typeof path !== "string" || path.length === 0) return void 0;
15011
15044
  if (kind !== "edit" && kind !== "create") return void 0;
15012
15045
  if (typeof oldText !== "string" || typeof newText !== "string") return void 0;
15013
15046
  if (typeof updatedAt !== "number") return void 0;
15047
+ const touched = Array.isArray(sessionIds) ? sessionIds.filter((value) => typeof value === "string" && value.length > 0) : [];
15014
15048
  return {
15015
15049
  id,
15016
15050
  sessionId,
@@ -15019,6 +15053,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
15019
15053
  oldText,
15020
15054
  newText,
15021
15055
  updatedAt,
15056
+ sessionIds: touched.length > 0 ? touched : [sessionId],
15022
15057
  missing: missing === true,
15023
15058
  diverged: diverged === true
15024
15059
  };
@@ -15372,12 +15407,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
15372
15407
  };
15373
15408
  const observe = () => {
15374
15409
  const snapshot = store.getSnapshot();
15410
+ const newestByPath = /* @__PURE__ */ new Map();
15375
15411
  for (const file of snapshot.files) {
15376
- const previous = lastContent.get(file.path);
15377
- if (previous !== void 0 && contentKey(previous) !== contentKey(file.newText)) remap(file.path, previous, file.newText, snapshot.workspacePath);
15378
- lastContent.set(file.path, file.newText);
15412
+ const current = newestByPath.get(file.path);
15413
+ if (current === void 0 || file.updatedAt >= current.updatedAt) newestByPath.set(file.path, {
15414
+ newText: file.newText,
15415
+ updatedAt: file.updatedAt
15416
+ });
15417
+ }
15418
+ for (const [path, { newText }] of newestByPath) {
15419
+ const previous = lastContent.get(path);
15420
+ if (previous !== void 0 && contentKey(previous) !== contentKey(newText)) remap(path, previous, newText, snapshot.workspacePath);
15421
+ lastContent.set(path, newText);
15379
15422
  }
15380
- for (const path of [...lastContent.keys()]) if (!snapshot.files.some((file) => file.path === path)) lastContent.delete(path);
15423
+ for (const path of [...lastContent.keys()]) if (!newestByPath.has(path)) lastContent.delete(path);
15381
15424
  };
15382
15425
  const unsubscribe = store.subscribe(observe);
15383
15426
  observe();