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 +161 -119
- package/lib/index.js +355 -441
- package/lib/types/client/reference.d.ts +9 -4
- package/lib/types/client/whole-file-diff.d.ts +9 -0
- package/lib/types/pending.d.ts +43 -43
- package/lib/types/persist.d.ts +32 -39
- package/lib/types/types.d.ts +13 -10
- package/package.json +1 -1
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
|
-
|
|
657
|
-
|
|
658
|
-
if (
|
|
659
|
-
rows: contentLines(
|
|
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(
|
|
669
|
-
const newLines = contentLines(
|
|
670
|
-
const
|
|
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
|
|
11758
|
-
*
|
|
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
|
-
|
|
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
|
|
11787
|
-
* removed becomes
|
|
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
|
-
"
|
|
11927
|
-
"
|
|
11928
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
11935
|
-
"
|
|
11936
|
-
"
|
|
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
|
-
"
|
|
11947
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
11956
|
-
"
|
|
11957
|
-
"
|
|
11958
|
-
"
|
|
11959
|
-
"
|
|
11960
|
-
"
|
|
11961
|
-
"
|
|
11962
|
-
"
|
|
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
|
-
"
|
|
11965
|
-
"
|
|
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
|
-
"
|
|
11969
|
-
"
|
|
11970
|
-
"
|
|
11971
|
-
"
|
|
11972
|
-
"
|
|
11973
|
-
"
|
|
11974
|
-
"
|
|
11975
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
11999
|
-
"detail": "F1KBNa_detail",
|
|
12000
|
-
"splitRadd": "F1KBNa_splitRadd",
|
|
12047
|
+
"context": "F1KBNa_context",
|
|
12001
12048
|
"footerButtons": "F1KBNa_footerButtons",
|
|
12002
|
-
"
|
|
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
|
-
"
|
|
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
|
-
/**
|
|
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
|
|
12979
|
-
if (code === null || code
|
|
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 (
|
|
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.
|
|
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
|
|
15366
|
-
if (
|
|
15367
|
-
|
|
15368
|
-
|
|
15369
|
-
|
|
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 (!
|
|
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();
|