dsh-diff-approval 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -652,11 +652,23 @@ window.__ModuleLoader__.load({
652
652
  * @param newText - the file content after the pending change.
653
653
  * @returns the complete row list with totals.
654
654
  */
655
+ /**
656
+ * Normalize content for equality: line endings → `\n`, and a single trailing
657
+ * newline is a terminator rather than a line. The result is the line bodies
658
+ * joined by `\n` with no trailing newline, so representation-only differences
659
+ * (EOL style, trailing-newline presence) compare equal.
660
+ * @param text - the content to normalize.
661
+ * @returns the normalized line bodies.
662
+ */
663
+ function contentKey(text) {
664
+ const normalized = text.replace(/\r\n?/g, "\n");
665
+ return normalized.endsWith("\n") ? normalized.slice(0, -1) : normalized;
666
+ }
655
667
  function computeWholeFileDiff(oldText, newText) {
656
- oldText = oldText.replace(/\r\n?/g, "\n");
657
- newText = newText.replace(/\r\n?/g, "\n");
658
- if (oldText === newText) return {
659
- rows: contentLines(oldText).map((text, index) => ({
668
+ const oldNorm = oldText.replace(/\r\n?/g, "\n");
669
+ const newNorm = newText.replace(/\r\n?/g, "\n");
670
+ if (contentKey(oldNorm) === contentKey(newNorm)) return {
671
+ rows: contentLines(oldNorm).map((text, index) => ({
660
672
  kind: "context",
661
673
  text,
662
674
  oldLine: index + 1,
@@ -665,10 +677,9 @@ window.__ModuleLoader__.load({
665
677
  removed: 0,
666
678
  added: 0
667
679
  };
668
- const oldLines = contentLines(oldText);
669
- const newLines = contentLines(newText);
670
- const context = Math.max(1, oldLines.length, newLines.length);
671
- const patch = structuredPatch("", "", oldText, newText, void 0, void 0, { context });
680
+ const oldLines = contentLines(oldNorm);
681
+ const newLines = contentLines(newNorm);
682
+ const patch = structuredPatch("", "", oldNorm, newNorm, void 0, void 0, { context: Math.max(1, oldLines.length, newLines.length) });
672
683
  const rows = [];
673
684
  let removed = 0;
674
685
  let added = 0;
@@ -11754,8 +11765,12 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11754
11765
  /**
11755
11766
  * Map one referenced line range from `oldContent` coordinates to `newContent`
11756
11767
  * coordinates. Lines that survive (unchanged context) map to their new line
11757
- * numbers, and the surviving lines' min/max span is returned. When every line
11758
- * 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).
11759
11774
  * @param oldContent - the file content the reference was made against.
11760
11775
  * @param newContent - the file content now.
11761
11776
  * @param start - first referenced line (1-based, inclusive).
@@ -11765,7 +11780,16 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11765
11780
  function remapReferenceRange(oldContent, newContent, start, end) {
11766
11781
  const diff = computeWholeFileDiff(oldContent, newContent);
11767
11782
  const oldToNew = /* @__PURE__ */ new Map();
11768
- 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
+ }
11769
11793
  let min = Infinity;
11770
11794
  let max = -Infinity;
11771
11795
  for (let line = start; line <= end; line++) {
@@ -11783,8 +11807,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11783
11807
  /**
11784
11808
  * Rewrite every `(referencePath:line)` / `(referencePath:start-end)` occurrence
11785
11809
  * in `text`, remapping each range from `oldContent` to `newContent`. A range
11786
- * whose lines all survived becomes the new range; one whose lines were all
11787
- * 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)`.
11788
11813
  * @param text - the free text (composer draft, queued message) to rewrite.
11789
11814
  * @param referencePath - the file's reference path (workspace-relative or absolute).
11790
11815
  * @param oldContent - the file content the references were made against.
@@ -11911,7 +11936,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11911
11936
  }
11912
11937
  //#endregion
11913
11938
  //#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
11914
- 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)}";
11915
11940
  const tagId = "dsh-diff-approval/PendingPanel.module.css";
11916
11941
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
11917
11942
  const tag = document.createElement("style");
@@ -11921,114 +11946,114 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
11921
11946
  document.head.appendChild(tag);
11922
11947
  }
11923
11948
  var PendingPanel_module_css_default = {
11924
- "kindHint": "F1KBNa_kindHint",
11925
11949
  "searchBar": "F1KBNa_searchBar",
11926
- "diffPath": "F1KBNa_diffPath",
11927
- "flexSpacer": "F1KBNa_flexSpacer",
11928
- "splitRdel": "F1KBNa_splitRdel",
11950
+ "delCount": "F1KBNa_delCount",
11951
+ "gutter": "F1KBNa_gutter",
11952
+ "subline": "F1KBNa_subline",
11953
+ "noteCentered": "F1KBNa_noteCentered",
11954
+ "splitDivider": "F1KBNa_splitDivider",
11955
+ "splitHScrollFill": "F1KBNa_splitHScrollFill",
11956
+ "action": "F1KBNa_action",
11957
+ "noticeText": "F1KBNa_noticeText",
11958
+ "header": "F1KBNa_header",
11929
11959
  "settingsRowTitle": "F1KBNa_settingsRowTitle",
11930
- "settingsSelectorChevron": "F1KBNa_settingsSelectorChevron",
11960
+ "confirmCard": "F1KBNa_confirmCard",
11961
+ "markerDel": "F1KBNa_markerDel",
11962
+ "wrapActive": "F1KBNa_wrapActive",
11963
+ "listScroll": "F1KBNa_listScroll",
11964
+ "hint": "F1KBNa_hint",
11965
+ "diffPath": "F1KBNa_diffPath",
11966
+ "splitLadd": "F1KBNa_splitLadd",
11967
+ "blockActions": "F1KBNa_blockActions",
11968
+ "missingHint": "F1KBNa_missingHint",
11969
+ "split": "F1KBNa_split",
11970
+ "rowHead": "F1KBNa_rowHead",
11971
+ "langLabel": "F1KBNa_langLabel",
11972
+ "note": "F1KBNa_note",
11973
+ "splitRadd": "F1KBNa_splitRadd",
11974
+ "confirmText": "F1KBNa_confirmText",
11975
+ "expandExpanded": "F1KBNa_expandExpanded",
11976
+ "divergedHint": "F1KBNa_divergedHint",
11977
+ "diffBody": "F1KBNa_diffBody",
11978
+ "missing": "F1KBNa_missing",
11979
+ "markerAdd": "F1KBNa_markerAdd",
11980
+ "del": "F1KBNa_del",
11981
+ "add": "F1KBNa_add",
11982
+ "detailEmpty": "F1KBNa_detailEmpty",
11983
+ "badge": "F1KBNa_badge",
11984
+ "title": "F1KBNa_title",
11985
+ "blockPosition": "F1KBNa_blockPosition",
11986
+ "badgeLabel": "F1KBNa_badgeLabel",
11987
+ "headerActions": "F1KBNa_headerActions",
11988
+ "panel": "F1KBNa_panel",
11931
11989
  "group": "F1KBNa_group",
11932
- "iconAction": "F1KBNa_iconAction",
11933
11990
  "blockFlash": "F1KBNa_blockFlash",
11934
- "overviewRuler": "F1KBNa_overviewRuler",
11935
- "row": "F1KBNa_row",
11936
- "close": "F1KBNa_close",
11937
- "settingsRowDesc": "F1KBNa_settingsRowDesc",
11938
- "states": "F1KBNa_states",
11939
- "code": "F1KBNa_code",
11940
- "kindTag": "F1KBNa_kindTag",
11941
- "badgeCount": "F1KBNa_badgeCount",
11942
- "badge": "F1KBNa_badge",
11943
- "emptyState": "F1KBNa_emptyState",
11944
- "rowPath": "F1KBNa_rowPath",
11991
+ "settingsRow": "F1KBNa_settingsRow",
11992
+ "importNote": "F1KBNa_importNote",
11993
+ "diffFlash": "F1KBNa_diffFlash",
11945
11994
  "notice": "F1KBNa_notice",
11946
- "diffBodyWrap": "F1KBNa_diffBodyWrap",
11947
- "missingHint": "F1KBNa_missingHint",
11948
- "resizeHandle": "F1KBNa_resizeHandle",
11949
- "splitRoot": "F1KBNa_splitRoot",
11950
- "expandExpanded": "F1KBNa_expandExpanded",
11951
- "splitLadd": "F1KBNa_splitLadd",
11995
+ "rowPath": "F1KBNa_rowPath",
11996
+ "readError": "F1KBNa_readError",
11952
11997
  "settingsPage": "F1KBNa_settingsPage",
11953
- "fullscreenBackdrop": "F1KBNa_fullscreenBackdrop",
11998
+ "settingsRowText": "F1KBNa_settingsRowText",
11999
+ "fileListFloat": "F1KBNa_fileListFloat",
12000
+ "bulkActions": "F1KBNa_bulkActions",
12001
+ "kindTag": "F1KBNa_kindTag",
12002
+ "rowFailed": "F1KBNa_rowFailed",
11954
12003
  "layer": "F1KBNa_layer",
11955
- "settingsSelector": "F1KBNa_settingsSelector",
11956
- "readError": "F1KBNa_readError",
11957
- "importButton": "F1KBNa_importButton",
11958
- "addCount": "F1KBNa_addCount",
11959
- "context": "F1KBNa_context",
11960
- "header": "F1KBNa_header",
11961
- "gutter": "F1KBNa_gutter",
11962
- "confirmActions": "F1KBNa_confirmActions",
12004
+ "states": "F1KBNa_states",
12005
+ "diffBodyWrap": "F1KBNa_diffBodyWrap",
12006
+ "emptyState": "F1KBNa_emptyState",
12007
+ "flexSpacer": "F1KBNa_flexSpacer",
12008
+ "splitLdel": "F1KBNa_splitLdel",
12009
+ "diffActions": "F1KBNa_diffActions",
12010
+ "settingsSelectorChevron": "F1KBNa_settingsSelectorChevron",
12011
+ "detail": "F1KBNa_detail",
12012
+ "actionError": "F1KBNa_actionError",
12013
+ "actionQuietDisabled": "F1KBNa_actionQuietDisabled",
11963
12014
  "searchInput": "F1KBNa_searchInput",
11964
- "importNote": "F1KBNa_importNote",
11965
- "noticeText": "F1KBNa_noticeText",
12015
+ "searchCount": "F1KBNa_searchCount",
12016
+ "vSpacer": "F1KBNa_vSpacer",
12017
+ "code": "F1KBNa_code",
12018
+ "iconAction": "F1KBNa_iconAction",
12019
+ "kindHint": "F1KBNa_kindHint",
12020
+ "splitHScroll": "F1KBNa_splitHScroll",
12021
+ "overviewMarker": "F1KBNa_overviewMarker",
12022
+ "rail": "F1KBNa_rail",
11966
12023
  "wrap": "F1KBNa_wrap",
12024
+ "splitRdel": "F1KBNa_splitRdel",
12025
+ "close": "F1KBNa_close",
12026
+ "rows": "F1KBNa_rows",
12027
+ "resizeHandle": "F1KBNa_resizeHandle",
12028
+ "importButton": "F1KBNa_importButton",
12029
+ "fileList": "F1KBNa_fileList",
12030
+ "expand": "F1KBNa_expand",
12031
+ "langSelect": "F1KBNa_langSelect",
12032
+ "addCount": "F1KBNa_addCount",
11967
12033
  "splitHScrollRow": "F1KBNa_splitHScrollRow",
11968
- "blockActions": "F1KBNa_blockActions",
11969
- "splitHScroll": "F1KBNa_splitHScroll",
11970
- "splitHScrollFill": "F1KBNa_splitHScrollFill",
11971
- "fileListFloat": "F1KBNa_fileListFloat",
11972
- "noteCentered": "F1KBNa_noteCentered",
11973
- "diffActions": "F1KBNa_diffActions",
11974
- "searchCount": "F1KBNa_searchCount",
11975
- "add": "F1KBNa_add",
12034
+ "fullscreenBackdrop": "F1KBNa_fullscreenBackdrop",
12035
+ "splitCol": "F1KBNa_splitCol",
12036
+ "overviewRuler": "F1KBNa_overviewRuler",
12037
+ "settingsSelector": "F1KBNa_settingsSelector",
12038
+ "badgeCount": "F1KBNa_badgeCount",
12039
+ "confirmActions": "F1KBNa_confirmActions",
12040
+ "row": "F1KBNa_row",
12041
+ "rowMeta": "F1KBNa_rowMeta",
12042
+ "settingsRowDesc": "F1KBNa_settingsRowDesc",
11976
12043
  "diffStats": "F1KBNa_diffStats",
11977
- "langLabel": "F1KBNa_langLabel",
11978
- "detailEmpty": "F1KBNa_detailEmpty",
12044
+ "splitRoot": "F1KBNa_splitRoot",
11979
12045
  "actionPrimary": "F1KBNa_actionPrimary",
11980
- "diffBody": "F1KBNa_diffBody",
11981
- "rowMeta": "F1KBNa_rowMeta",
11982
- "diffHeader": "F1KBNa_diffHeader",
11983
- "blockPosition": "F1KBNa_blockPosition",
11984
- "subline": "F1KBNa_subline",
11985
- "splitCol": "F1KBNa_splitCol",
11986
- "missing": "F1KBNa_missing",
11987
- "splitDivider": "F1KBNa_splitDivider",
11988
- "rowFailed": "F1KBNa_rowFailed",
11989
- "listScroll": "F1KBNa_listScroll",
11990
- "actionError": "F1KBNa_actionError",
11991
- "headerActions": "F1KBNa_headerActions",
11992
- "confirmCard": "F1KBNa_confirmCard",
11993
- "actionQuietDisabled": "F1KBNa_actionQuietDisabled",
11994
- "markerDel": "F1KBNa_markerDel",
11995
- "bulkActions": "F1KBNa_bulkActions",
11996
- "divergedHint": "F1KBNa_divergedHint",
11997
12046
  "lines": "F1KBNa_lines",
11998
- "badgeLabel": "F1KBNa_badgeLabel",
11999
- "detail": "F1KBNa_detail",
12000
- "splitRadd": "F1KBNa_splitRadd",
12047
+ "context": "F1KBNa_context",
12001
12048
  "footerButtons": "F1KBNa_footerButtons",
12002
- "expand": "F1KBNa_expand",
12003
- "overviewMarker": "F1KBNa_overviewMarker",
12004
- "markerAdd": "F1KBNa_markerAdd",
12005
- "hint": "F1KBNa_hint",
12006
- "line": "F1KBNa_line",
12007
- "wrapActive": "F1KBNa_wrapActive",
12049
+ "confirmBackdrop": "F1KBNa_confirmBackdrop",
12008
12050
  "diffBodySplit": "F1KBNa_diffBodySplit",
12009
- "delCount": "F1KBNa_delCount",
12010
- "confirmText": "F1KBNa_confirmText",
12011
- "note": "F1KBNa_note",
12012
- "rows": "F1KBNa_rows",
12013
- "settingsRow": "F1KBNa_settingsRow",
12014
- "diffFlash": "F1KBNa_diffFlash",
12015
- "del": "F1KBNa_del",
12016
- "title": "F1KBNa_title",
12017
- "statusAction": "F1KBNa_statusAction",
12018
- "panel": "F1KBNa_panel",
12019
- "fileList": "F1KBNa_fileList",
12020
- "splitCols": "F1KBNa_splitCols",
12021
- "settingsRowText": "F1KBNa_settingsRowText",
12022
12051
  "diff": "F1KBNa_diff",
12023
- "confirmBackdrop": "F1KBNa_confirmBackdrop",
12052
+ "diffHeader": "F1KBNa_diffHeader",
12053
+ "splitCols": "F1KBNa_splitCols",
12054
+ "line": "F1KBNa_line",
12055
+ "statusAction": "F1KBNa_statusAction",
12024
12056
  "statusBar": "F1KBNa_statusBar",
12025
- "splitLdel": "F1KBNa_splitLdel",
12026
- "split": "F1KBNa_split",
12027
- "langSelect": "F1KBNa_langSelect",
12028
- "rail": "F1KBNa_rail",
12029
- "rowHead": "F1KBNa_rowHead",
12030
- "action": "F1KBNa_action",
12031
- "vSpacer": "F1KBNa_vSpacer",
12032
12057
  "noticeButton": "F1KBNa_noticeButton"
12033
12058
  };
12034
12059
  //#endregion
@@ -12973,10 +12998,19 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12973
12998
  side: startInfo.side
12974
12999
  };
12975
13000
  }
12976
- /** Character offset of a selection boundary within its line's code text. */
13001
+ /** The code cell in `node`'s visual row, a sibling of its gutter cells. A
13002
+ * line-number boundary must measure against the line's own selectable text even
13003
+ * though the gutter text is not inside the code cell; this resolves the cell
13004
+ * for both the unified row and a split column row. */
13005
+ function codeCellAt(node) {
13006
+ return ((node instanceof Element ? node : node.parentElement)?.closest("[data-diff-row], [data-diff-split-row]"))?.querySelector("[data-diff-code]") ?? null;
13007
+ }
13008
+ /** Character offset of a selection boundary within its line's code text. A
13009
+ * boundary outside the code cell (the line-number gutter) sits at the line's
13010
+ * start — offset 0, never the line's end — so it never skips the line. */
12977
13011
  function lineOffsetAt(node, offset) {
12978
- const code = (node instanceof Element ? node : node.parentElement)?.closest("[data-diff-code]");
12979
- if (code === null || code === void 0) return 0;
13012
+ const code = codeCellAt(node);
13013
+ if (code === null || !code.contains(node)) return 0;
12980
13014
  let before = 0;
12981
13015
  const walker = document.createTreeWalker(code, NodeFilter.SHOW_TEXT);
12982
13016
  let current = walker.nextNode();
@@ -12999,9 +13033,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
12999
13033
  }
13000
13034
  return before;
13001
13035
  }
13002
- /** Length of the code text on the line holding a node. */
13036
+ /** Length of the code text on the line holding a node (the line's selectable
13037
+ * text, even when `node` is in a gutter cell of the same row). */
13003
13038
  function lineLengthAt(node) {
13004
- return ((node instanceof Element ? node : node.parentElement)?.closest("[data-diff-code]"))?.textContent?.length ?? 0;
13039
+ return codeCellAt(node)?.textContent?.length ?? 0;
13005
13040
  }
13006
13041
  /**
13007
13042
  * Derive the selected diff-row range from a native text selection. A
@@ -14166,7 +14201,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
14166
14201
  document.removeEventListener("pointerdown", onPointerDown, true);
14167
14202
  };
14168
14203
  }, [open]);
14169
- const files = snapshot.files.filter((file) => file.sessionId === current).sort((left, right) => compareFileNames(left.path, right.path));
14204
+ const files = snapshot.files.filter((file) => current !== void 0 && (file.sessionIds ?? [file.sessionId]).includes(current)).sort((left, right) => compareFileNames(left.path, right.path));
14170
14205
  /** Per-file keep/revert failures, surfaced inline on the row and detail. */
14171
14206
  const failed = snapshot.failed ?? EMPTY_FAILED_MAP;
14172
14207
  const failedInitialized = (0, react.useRef)(false);
@@ -14993,13 +15028,14 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
14993
15028
  /** Narrow one pending entry from the wire; malformed rows are skipped. */
14994
15029
  function pendingFileOf(value) {
14995
15030
  if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
14996
- const { id, sessionId, path, kind, oldText, newText, updatedAt, missing, diverged } = value;
15031
+ const { id, sessionId, sessionIds, path, kind, oldText, newText, updatedAt, missing, diverged } = value;
14997
15032
  if (typeof id !== "string" || id.length === 0) return void 0;
14998
15033
  if (typeof sessionId !== "string" || sessionId.length === 0) return void 0;
14999
15034
  if (typeof path !== "string" || path.length === 0) return void 0;
15000
15035
  if (kind !== "edit" && kind !== "create") return void 0;
15001
15036
  if (typeof oldText !== "string" || typeof newText !== "string") return void 0;
15002
15037
  if (typeof updatedAt !== "number") return void 0;
15038
+ const touched = Array.isArray(sessionIds) ? sessionIds.filter((value) => typeof value === "string" && value.length > 0) : [];
15003
15039
  return {
15004
15040
  id,
15005
15041
  sessionId,
@@ -15008,6 +15044,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
15008
15044
  oldText,
15009
15045
  newText,
15010
15046
  updatedAt,
15047
+ sessionIds: touched.length > 0 ? touched : [sessionId],
15011
15048
  missing: missing === true,
15012
15049
  diverged: diverged === true
15013
15050
  };
@@ -15361,15 +15398,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
15361
15398
  };
15362
15399
  const observe = () => {
15363
15400
  const snapshot = store.getSnapshot();
15401
+ const newestByPath = /* @__PURE__ */ new Map();
15364
15402
  for (const file of snapshot.files) {
15365
- const previous = lastContent.get(file.path);
15366
- if (previous === void 0) lastContent.set(file.path, file.newText);
15367
- else if (previous !== file.newText) {
15368
- remap(file.path, previous, file.newText, snapshot.workspacePath);
15369
- lastContent.set(file.path, file.newText);
15370
- }
15403
+ const current = newestByPath.get(file.path);
15404
+ if (current === void 0 || file.updatedAt >= current.updatedAt) newestByPath.set(file.path, {
15405
+ newText: file.newText,
15406
+ updatedAt: file.updatedAt
15407
+ });
15408
+ }
15409
+ for (const [path, { newText }] of newestByPath) {
15410
+ const previous = lastContent.get(path);
15411
+ if (previous !== void 0 && contentKey(previous) !== contentKey(newText)) remap(path, previous, newText, snapshot.workspacePath);
15412
+ lastContent.set(path, newText);
15371
15413
  }
15372
- for (const path of [...lastContent.keys()]) if (!snapshot.files.some((file) => file.path === path)) lastContent.delete(path);
15414
+ for (const path of [...lastContent.keys()]) if (!newestByPath.has(path)) lastContent.delete(path);
15373
15415
  };
15374
15416
  const unsubscribe = store.subscribe(observe);
15375
15417
  observe();