Skip to content

Commit

Permalink
fix vue
Browse files Browse the repository at this point in the history
  • Loading branch information
MrWangJustToDo committed Sep 3, 2024
1 parent 7ea4a9c commit 7c7e99d
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 22 deletions.
6 changes: 3 additions & 3 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@
"dependencies": {
"@git-diff-view/lowlight": "^0.0.16",
"highlight.js": "^11.9.0",
"lowlight": "^3.1.0"
"lowlight": "^3.1.0",
"fast-diff": "^1.3.0"
},
"devDependencies": {
"@types/hast": "^3.0.0",
"fast-diff": "^1.3.0"
"@types/hast": "^3.0.0"
}
}
3 changes: 2 additions & 1 deletion packages/file/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"@git-diff-view/core": "^0.0.16",
"diff": "^5.2.0",
"highlight.js": "^11.9.0",
"lowlight": "^3.1.0"
"lowlight": "^3.1.0",
"fast-diff": "^1.3.0"
},
"devDependencies": {
"@types/diff": "^5.2.2",
Expand Down
1 change: 1 addition & 0 deletions packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
"@types/hast": "^3.0.0",
"highlight.js": "^11.9.0",
"lowlight": "^3.1.0",
"fast-diff": "^1.3.0",
"reactivity-store": "^0.3.5",
"use-sync-external-store": "^1.2.2"
},
Expand Down
3 changes: 2 additions & 1 deletion packages/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
"@git-diff-view/core": "^0.0.16",
"@types/hast": "^3.0.0",
"highlight.js": "^11.9.0",
"lowlight": "^3.1.0"
"lowlight": "^3.1.0",
"fast-diff": "^1.3.0"
},
"devDependencies": {
"@rollup/plugin-typescript": "^11.1.6",
Expand Down
16 changes: 13 additions & 3 deletions packages/vue/src/components/DiffSplitExtendLineNormal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ export const DiffSplitExtendLine = defineComponent(

const currentSide = computed(() => SplitSide[props.side]);

const lineSelector = computed(() => `tr[data-line="${props.lineNumber}-extend"]`);
const lineSelector = computed(() => `div[data-line="${props.lineNumber}-extend-content"]`);

const lineWrapperSelector = computed(() => `tr[data-line="${props.lineNumber}-extend"]`);

const wrapperSelector = computed(() =>
props.side === SplitSide.old ? ".old-diff-table-wrapper" : ".new-diff-table-wrapper"
Expand Down Expand Up @@ -68,6 +70,7 @@ export const DiffSplitExtendLine = defineComponent(

useSyncHeight({
selector: lineSelector,
wrapper: lineWrapperSelector,
side: currentSide,
enable: currentIsShow,
});
Expand All @@ -89,7 +92,12 @@ export const DiffSplitExtendLine = defineComponent(
>
{currentExtend.value ? (
<td class={`diff-line-extend-${SplitSide[props.side]}-content p-0`} colspan={2}>
<div class="diff-line-extend-wrapper sticky left-0" style={{ width: width.value + "px" }}>
<div
data-line={`${props.lineNumber}-extend-content`}
data-side={SplitSide[props.side]}
class="diff-line-extend-wrapper sticky left-0"
style={{ width: width.value + "px" }}
>
{width.value > 0 &&
slots.extend?.({
diffFile: props.diffFile,
Expand All @@ -106,7 +114,9 @@ export const DiffSplitExtendLine = defineComponent(
style={{ backgroundColor: `var(${emptyBGName})` }}
colspan={2}
>
<span>&ensp;</span>
<div data-line={`${props.lineNumber}-extend-content`} data-side={SplitSide[props.side]}>
&ensp;
</div>
</td>
)}
</tr>
Expand Down
2 changes: 2 additions & 0 deletions packages/vue/src/components/DiffSplitHunkLineNormal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ const DiffSplitHunkLineGitHub = defineComponent(

useSyncHeight({
selector: lineSelector,
wrapper: lineSelector,
side: currentSyncHeightSide,
enable: currentEnableSyncHeight,
});
Expand Down Expand Up @@ -211,6 +212,7 @@ const DiffSplitHunkLineGitLab = defineComponent(

useSyncHeight({
selector: lineSelector,
wrapper: lineSelector,
side: currentSyncHeightSide,
enable: currentEnableSyncHeight,
});
Expand Down
16 changes: 13 additions & 3 deletions packages/vue/src/components/DiffSplitWidgetLineNormal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ export const DiffSplitWidgetLine = defineComponent(

const currentLine = computed(() => (props.side === SplitSide.old ? oldLine.value : newLine.value));

const lineSelector = computed(() => `tr[data-line="${props.lineNumber}-widget"]`);
const lineSelector = computed(() => `div[data-line="${props.lineNumber}-widget-content"]`);

const lineWrapperSelector = computed(() => `tr[data-line="${props.lineNumber}-widget"]`);

const wrapperSelector = computed(() =>
props.side === SplitSide.old ? ".old-diff-table-wrapper" : ".new-diff-table-wrapper"
Expand All @@ -64,6 +66,7 @@ export const DiffSplitWidgetLine = defineComponent(

useSyncHeight({
selector: lineSelector,
wrapper: lineWrapperSelector,
side: observeSide,
enable: currentIsShow,
});
Expand All @@ -85,7 +88,12 @@ export const DiffSplitWidgetLine = defineComponent(
>
{currentWidget.value ? (
<td class={`diff-line-widget-${SplitSide[props.side]}-content p-0`} colspan={2}>
<div class="diff-line-widget-wrapper sticky left-0" style={{ width: width.value + "px" }}>
<div
data-line={`${props.lineNumber}-widget-content`}
data-side={SplitSide[props.side]}
class="diff-line-widget-wrapper sticky left-0"
style={{ width: width.value + "px" }}
>
{width.value > 0 &&
slots.widget?.({
diffFile: props.diffFile,
Expand All @@ -101,7 +109,9 @@ export const DiffSplitWidgetLine = defineComponent(
style={{ backgroundColor: `var(${emptyBGName})` }}
colspan={2}
>
<span>&ensp;</span>
<div data-line={`${props.lineNumber}-widget-content`} data-side={SplitSide[props.side]}>
&ensp;
</div>
</td>
)}
</tr>
Expand Down
21 changes: 14 additions & 7 deletions packages/vue/src/hooks/useSyncHeight.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import { useIsMounted } from "./useIsMounted";
// TODO
export const useSyncHeight = ({
selector,
wrapper,
side,
enable,
}: {
selector: Ref<string>;
wrapper: Ref<string>;
side: Ref<string>;
enable: Ref<boolean>;
}) => {
Expand All @@ -26,10 +28,15 @@ export const useSyncHeight = ({

const elements = Array.from(container?.querySelectorAll(selector.value));

if (elements.length === 2) {
const wrappers = Array.from(container?.querySelectorAll(wrapper?.value) || []);

if (elements.length === 2 && wrappers.length === 2) {
const ele1 = elements[0] as HTMLElement;
const ele2 = elements[1] as HTMLElement;

const wrapper1 = wrappers[0] as HTMLElement;
const wrapper2 = wrappers[1] as HTMLElement;

const target = ele1.getAttribute("data-side") === side.value ? ele1 : ele2;

const cb = () => {
Expand All @@ -39,13 +46,13 @@ export const useSyncHeight = ({
const rect2 = ele2.getBoundingClientRect();
if (rect1.height !== rect2.height) {
const maxHeight = Math.max(rect1.height, rect2.height);
ele1.style.height = maxHeight + "px";
ele2.style.height = maxHeight + "px";
ele1.setAttribute("data-sync-height", String(maxHeight));
ele2.setAttribute("data-sync-height", String(maxHeight));
wrapper1.style.height = maxHeight + "px";
wrapper2.style.height = maxHeight + "px";
wrapper1.setAttribute("data-sync-height", String(maxHeight));
wrapper2.setAttribute("data-sync-height", String(maxHeight));
} else {
ele1.removeAttribute("data-sync-height");
ele2.removeAttribute("data-sync-height");
wrapper1.removeAttribute("data-sync-height");
wrapper2.removeAttribute("data-sync-height");
}
};

Expand Down
16 changes: 12 additions & 4 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 7c7e99d

Please sign in to comment.