vue-devui 1.6.25 → 1.6.27

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-devui",
3
- "version": "1.6.25",
3
+ "version": "1.6.27",
4
4
  "license": "MIT",
5
5
  "description": "DevUI components based on Vite and Vue3",
6
6
  "keywords": [
@@ -1,5 +1,8 @@
1
1
  import type { Ref } from 'vue';
2
2
  import type { CodeReviewProps } from '../code-review-types';
3
- export declare function useCodeReviewLineSelection(reviewContentRef: Ref<HTMLElement>, props: CodeReviewProps, mouseMoveCb: (moveDirection: 'up' | 'down') => void, mouseupCb: () => void): {
3
+ export declare function useCodeReviewLineSelection(reviewContentRef: Ref<HTMLElement>, props: CodeReviewProps, afterMouseup: (lineNumbers: {
4
+ lefts: number[];
5
+ rights: number[];
6
+ }) => void): {
4
7
  onMousedown: (e: MouseEvent) => void;
5
8
  };
@@ -19,3 +19,7 @@ export declare function addCommentToPageForDoubleColumn(lineHost: HTMLElement, c
19
19
  export declare function findReferenceDomForSingleColumn(parentNode: HTMLElement, lineNumber: number, lineSide: LineSide): HTMLTableRowElement | undefined;
20
20
  export declare function findReferenceDomForDoubleColumn(parentNode: HTMLElement, lineNumber: number, lineSide: LineSide): HTMLTableRowElement | undefined;
21
21
  export declare function findParentTrNode(node: HTMLElement | null): any;
22
+ export declare function getLineNumbers(trNodes: HTMLElement[], outputFormat: OutputFormat, side: LineSide): {
23
+ lefts: number[];
24
+ rights: number[];
25
+ };
package/vue-devui.es.js CHANGED
@@ -17523,6 +17523,36 @@ function findParentTrNode(node) {
17523
17523
  }
17524
17524
  return findParentTrNode(node.parentElement);
17525
17525
  }
17526
+ function getFullNumberList(min, max) {
17527
+ return Array.from({ length: max - min + 1 }, (_, i) => i + min);
17528
+ }
17529
+ function getLineNumbers(trNodes, outputFormat, side) {
17530
+ var _a, _b;
17531
+ const leftNumbers = [];
17532
+ const rightNumbers = [];
17533
+ for (let i = 0; i < trNodes.length; i++) {
17534
+ const itemTrNode = trNodes[i];
17535
+ if (outputFormat === "line-by-line") {
17536
+ const lineNumberTdNode = Array.from(itemTrNode.children)[0];
17537
+ const leftLineNumber = parseInt((_a = lineNumberTdNode.children[0]) == null ? void 0 : _a.innerText);
17538
+ const rightLineNumber = parseInt((_b = lineNumberTdNode.children[1]) == null ? void 0 : _b.innerText);
17539
+ leftLineNumber && leftNumbers.push(leftLineNumber);
17540
+ rightLineNumber && rightNumbers.push(rightLineNumber);
17541
+ } else {
17542
+ const tdNodes = Array.from(itemTrNode.children);
17543
+ const lineNumberTdNode = tdNodes[side === "left" ? 0 : 2];
17544
+ if (lineNumberTdNode && notEmptyNode(lineNumberTdNode)) {
17545
+ const lineNumber = parseInt(lineNumberTdNode.innerText);
17546
+ if (lineNumber) {
17547
+ side === "left" ? leftNumbers.push(lineNumber) : rightNumbers.push(lineNumber);
17548
+ }
17549
+ }
17550
+ }
17551
+ }
17552
+ const lefts = leftNumbers.length ? getFullNumberList(leftNumbers[0], leftNumbers[leftNumbers.length - 1]) : leftNumbers;
17553
+ const rights = rightNumbers.length ? getFullNumberList(rightNumbers[0], rightNumbers[rightNumbers.length - 1]) : rightNumbers;
17554
+ return { lefts, rights };
17555
+ }
17526
17556
  function useCodeReviewExpand(reviewContentRef, props) {
17527
17557
  const { outputFormat, expandThreshold, expandLoader } = toRefs(props);
17528
17558
  const processSideBySide = () => {
@@ -17750,7 +17780,7 @@ function useCodeReviewFold(props, ctx2) {
17750
17780
  });
17751
17781
  return { isFold, toggleFold };
17752
17782
  }
17753
- function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseupCb) {
17783
+ function useCodeReviewLineSelection(reviewContentRef, props, afterMouseup) {
17754
17784
  const ns2 = useNamespace$1("code-review");
17755
17785
  let dragging = false;
17756
17786
  let startTrNode;
@@ -17758,7 +17788,7 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17758
17788
  let isClickedLeft;
17759
17789
  let shouldClear;
17760
17790
  let isMouseMoved;
17761
- let startClientY;
17791
+ let checkedTrNodes = [];
17762
17792
  const onMousedown2 = (e) => {
17763
17793
  if (e.button === 0) {
17764
17794
  const composedPath = e.composedPath();
@@ -17791,7 +17821,6 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17791
17821
  dragging = true;
17792
17822
  shouldClear = true;
17793
17823
  isMouseMoved = false;
17794
- startClientY = e.clientY;
17795
17824
  e.preventDefault();
17796
17825
  e.stopPropagation();
17797
17826
  document.addEventListener("mousemove", onMousemove);
@@ -17824,7 +17853,6 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17824
17853
  if (endIndex === -1) {
17825
17854
  return;
17826
17855
  }
17827
- mouseMoveCb(e.clientY > startClientY ? "down" : "up");
17828
17856
  if (startIndex > endIndex) {
17829
17857
  [startIndex, endIndex] = [endIndex, startIndex];
17830
17858
  }
@@ -17836,9 +17864,11 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17836
17864
  } else {
17837
17865
  position = "right";
17838
17866
  }
17867
+ checkedTrNodes = [];
17839
17868
  for (let i = 0; i < trNodes.length; i++) {
17840
17869
  if (i >= startIndex && i <= endIndex) {
17841
17870
  toggleCommentCheckedClass(trNodes[i], true, position);
17871
+ checkedTrNodes.push(trNodes[i]);
17842
17872
  } else {
17843
17873
  toggleCommentCheckedClass(trNodes[i], false, position);
17844
17874
  }
@@ -17847,7 +17877,7 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17847
17877
  function onMouseup() {
17848
17878
  dragging = false;
17849
17879
  if (isMouseMoved) {
17850
- mouseupCb();
17880
+ afterMouseup(getLineNumbers(checkedTrNodes, props.outputFormat, isClickedLeft ? "left" : "right"));
17851
17881
  }
17852
17882
  document.removeEventListener("mouseup", onMouseup);
17853
17883
  document.removeEventListener("mousemove", onMousemove);
@@ -17886,7 +17916,7 @@ function useCodeReviewLineSelection(reviewContentRef, props, mouseMoveCb, mouseu
17886
17916
  function useCodeReviewComment(reviewContentRef, props, ctx2) {
17887
17917
  const { outputFormat, allowComment, allowChecked } = toRefs(props);
17888
17918
  const ns2 = useNamespace$1("code-review");
17889
- const { onMousedown: onMousedown2 } = useCodeReviewLineSelection(reviewContentRef, props, updateLineNumbers, afterCheckLines);
17919
+ const { onMousedown: onMousedown2 } = useCodeReviewLineSelection(reviewContentRef, props, afterMouseup);
17890
17920
  const commentLeft = ref(-100);
17891
17921
  const commentTop = ref(-100);
17892
17922
  let currentLeftLineNumber = -1;
@@ -17989,24 +18019,6 @@ function useCodeReviewComment(reviewContentRef, props, ctx2) {
17989
18019
  resetLeftTop();
17990
18020
  }
17991
18021
  };
17992
- const getLineNumbers = (currentNumber, currentNumbers, moveDirection) => {
17993
- if (currentNumber === -1) {
17994
- return currentNumbers;
17995
- }
17996
- if (currentNumbers.length === 0) {
17997
- return [currentNumber];
17998
- }
17999
- const numbers = [...currentNumbers];
18000
- let max = Math.max(...numbers);
18001
- let min = Math.min(...numbers);
18002
- if (moveDirection === "down") {
18003
- max = currentNumber;
18004
- }
18005
- if (moveDirection === "up") {
18006
- min = currentNumber;
18007
- }
18008
- return Array.from({ length: max - min + 1 }, (_, i) => i + min);
18009
- };
18010
18022
  const getCommonClassAndJudge = () => {
18011
18023
  const checkedLine = [currentLeftLineNumbers, currentRightLineNumbers];
18012
18024
  return {
@@ -18073,9 +18085,9 @@ function useCodeReviewComment(reviewContentRef, props, ctx2) {
18073
18085
  }
18074
18086
  getDoubleCheckedLineCode(shouldRenderClass);
18075
18087
  }
18076
- function updateLineNumbers(moveDirection) {
18077
- currentLeftLineNumbers = currentLeftLineNumber === -1 ? currentLeftLineNumbers : getLineNumbers(currentLeftLineNumber, currentLeftLineNumbers, moveDirection);
18078
- currentRightLineNumbers = currentRightLineNumber === -1 ? currentRightLineNumbers : getLineNumbers(currentRightLineNumber, currentRightLineNumbers, moveDirection);
18088
+ function updateLineNumbers({ lefts, rights }) {
18089
+ currentLeftLineNumbers = lefts;
18090
+ currentRightLineNumbers = rights;
18079
18091
  getCheckedLineCode(false);
18080
18092
  afterCheckLinesEmitData = {
18081
18093
  left: currentLeftLineNumber,
@@ -18088,6 +18100,8 @@ function useCodeReviewComment(reviewContentRef, props, ctx2) {
18088
18100
  };
18089
18101
  }
18090
18102
  const updateCheckedLineClass = () => {
18103
+ const lineClassName = props.outputFormat === "line-by-line" ? ".d2h-code-linenumber" : ".d2h-code-side-linenumber";
18104
+ allTrNodes = reviewContentRef.value.querySelectorAll(lineClassName);
18091
18105
  getCheckedLineCode(true);
18092
18106
  };
18093
18107
  const resetCommentClass = () => {
@@ -18124,6 +18138,10 @@ function useCodeReviewComment(reviewContentRef, props, ctx2) {
18124
18138
  function afterCheckLines() {
18125
18139
  ctx2.emit("afterCheckLines", afterCheckLinesEmitData);
18126
18140
  }
18141
+ function afterMouseup(lineNumbers) {
18142
+ updateLineNumbers(lineNumbers);
18143
+ afterCheckLines();
18144
+ }
18127
18145
  const onCommentIconClick = (e) => {
18128
18146
  if (e) {
18129
18147
  const composedPath = e.composedPath();
@@ -54287,7 +54305,7 @@ const installs = [
54287
54305
  VirtualListInstall
54288
54306
  ];
54289
54307
  var vueDevui = {
54290
- version: "1.6.25",
54308
+ version: "1.6.27",
54291
54309
  install(app) {
54292
54310
  installs.forEach((p) => app.use(p));
54293
54311
  }